Skip to content

Commit 08f1cac

Browse files
committed
docs: add tone of voice
1 parent fdabfe1 commit 08f1cac

File tree

1 file changed

+233
-0
lines changed

1 file changed

+233
-0
lines changed

TONE_OF_VOICE.md

Lines changed: 233 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,233 @@
1+
# Tone of Voice Guide
2+
3+
This document defines the writing style and communication patterns for Ark UI documentation, blog posts, and marketing
4+
content.
5+
6+
## Core Principles
7+
8+
### 1. Conversational but Credible
9+
10+
Write like a knowledgeable friend explaining something at a coffee shop, not a textbook or corporate manual. Be warm
11+
without being unprofessional.
12+
13+
**Do:** "Ark UI handles all the accessibility plumbing so you can focus on what matters—building great experiences."
14+
15+
**Don't:** "Ark UI is an enterprise-grade solution that facilitates accessibility compliance through automated ARIA
16+
attribute management."
17+
18+
### 2. Direct and Action-Oriented
19+
20+
Use active voice and direct imperatives. Get to the point. Respect the reader's time.
21+
22+
**Do:** "Install the package and import the component."
23+
24+
**Don't:** "The package should be installed first, after which the component can be imported into your project."
25+
26+
### 3. "You" Over "Users"
27+
28+
Address readers directly. They're people, not abstract entities.
29+
30+
**Do:** "You can customize the animation duration."
31+
32+
**Don't:** "Users are able to configure animation parameters."
33+
34+
### 4. "We" for Team, Not Corporate Shield
35+
36+
Use "we" to create partnership, not distance. It should feel like the team is building alongside the reader.
37+
38+
**Do:** "We designed the API to feel familiar if you've used other component libraries."
39+
40+
**Don't:** "The API has been designed to ensure familiarity with existing paradigms."
41+
42+
## Writing for Documentation
43+
44+
### Start with the Task
45+
46+
Lead with what the reader wants to accomplish, not abstract concepts.
47+
48+
**Do:**
49+
50+
```
51+
## Adding a Dialog
52+
53+
Create a modal dialog with built-in focus management and keyboard navigation.
54+
```
55+
56+
**Don't:**
57+
58+
```
59+
## Dialog Component
60+
61+
The Dialog component implements the WAI-ARIA dialog pattern with comprehensive
62+
focus trap functionality and escape key handling mechanisms.
63+
```
64+
65+
### Show, Then Explain
66+
67+
Code first, explanation second. Developers scan for examples.
68+
69+
**Do:**
70+
71+
```tsx
72+
<Dialog.Root>
73+
<Dialog.Trigger>Open</Dialog.Trigger>
74+
<Dialog.Backdrop />
75+
<Dialog.Positioner>
76+
<Dialog.Content>
77+
<Dialog.Title>Welcome</Dialog.Title>
78+
<Dialog.Description>This is a dialog.</Dialog.Description>
79+
</Dialog.Content>
80+
</Dialog.Positioner>
81+
</Dialog.Root>
82+
```
83+
84+
The trigger opens the dialog. The backdrop dims the page. Content renders inside the positioner for proper centering.
85+
86+
**Don't:** Long paragraphs explaining the component architecture before showing any code.
87+
88+
### Be Specific
89+
90+
Concrete numbers and examples beat vague claims.
91+
92+
**Do:** "Renders in under 16ms on mid-range devices."
93+
94+
**Don't:** "Highly performant rendering."
95+
96+
### Acknowledge Different Skill Levels
97+
98+
Write for someone who knows their framework but might be new to this specific tool.
99+
100+
**Do:** "If you haven't set up your project yet, check our [getting started guide](/docs/getting-started)."
101+
102+
**Don't:** Assume everyone knows everything, or assume no one knows anything.
103+
104+
## Writing for Blog Posts
105+
106+
### Lead with Excitement (Authentically)
107+
108+
Celebrate wins without manufactured enthusiasm. If something is genuinely cool, say so.
109+
110+
**Do:** "We've been working on this for months, and we're thrilled to finally share it with you."
111+
112+
**Don't:** "We are pleased to announce the general availability of..."
113+
114+
### Tell the Story
115+
116+
Share the journey—the problems you solved, the decisions you made, the tradeoffs you considered.
117+
118+
**Do:** "We initially tried X, but it didn't handle edge cases well. After exploring several approaches, we landed on Y
119+
because it gives you Z without sacrificing performance."
120+
121+
**Don't:** Just list features without context.
122+
123+
### Be Transparent
124+
125+
Acknowledge limitations, ongoing work, and areas for improvement.
126+
127+
**Do:** "This is our first pass at the API. We'd love your feedback on what feels awkward."
128+
129+
**Don't:** Pretend everything is perfect.
130+
131+
### Use Personality (Sparingly)
132+
133+
A little humor or informal language builds connection. Too much becomes distracting.
134+
135+
**Do:** "Yes, we know—another breaking change. But hear us out."
136+
137+
**Don't:** Forced jokes, excessive exclamation points, or trying too hard to be relatable.
138+
139+
## Voice Characteristics
140+
141+
| Trait | What It Means |
142+
| -------------- | ------------------------------------------------------------------------- |
143+
| **Helpful** | Anticipate questions. Provide context. Link to related resources. |
144+
| **Honest** | Acknowledge complexity. Don't oversell. Admit when something is hard. |
145+
| **Practical** | Focus on real-world use cases. Skip theoretical deep-dives unless needed. |
146+
| **Empowering** | Give readers confidence. They can do this. |
147+
| **Respectful** | Don't condescend. Trust reader intelligence while providing clarity. |
148+
| **Human** | Write like a person, not a corporation or a robot. |
149+
150+
## Language Patterns
151+
152+
### Headlines
153+
154+
Benefit-driven and specific.
155+
156+
**Do:**
157+
158+
- "Build accessible dialogs without the boilerplate"
159+
- "Style states with data attributes"
160+
- "Control animation timing with CSS variables"
161+
162+
**Don't:**
163+
164+
- "Dialog Component Documentation"
165+
- "Styling Guide"
166+
- "Advanced Configuration Options"
167+
168+
### Transitions
169+
170+
Keep them natural, not formulaic.
171+
172+
**Do:** "Now that your dialog is set up, let's add some polish."
173+
174+
**Don't:** "In the next section, we will discuss styling options."
175+
176+
### Error Prevention
177+
178+
Anticipate common mistakes. Guide readers away from pitfalls.
179+
180+
**Do:** "Make sure `Dialog.Backdrop` is inside `Dialog.Root`—placing it outside won't connect it to the dialog state."
181+
182+
**Don't:** Leave readers to discover issues on their own.
183+
184+
## Words to Use
185+
186+
- "Build" over "implement"
187+
- "Set up" over "configure"
188+
- "Works with" over "integrates with"
189+
- "You" over "the user" or "developers"
190+
- "Simple" when it genuinely is
191+
- "Let's" for guided tutorials
192+
193+
## Words to Avoid
194+
195+
- "Leverage" (just say "use")
196+
- "Utilize" (just say "use")
197+
- "Facilitate" (say what it actually does)
198+
- "Robust" (be specific about what makes it strong)
199+
- "Seamless" (describe the actual experience)
200+
- "Cutting-edge" (show, don't tell)
201+
- "Empower" in marketing speak (actions empower, not adjectives)
202+
- Excessive exclamation points!!!
203+
204+
## Framework-Specific Writing
205+
206+
When documenting for multiple frameworks, maintain consistent voice while respecting idioms.
207+
208+
**React example:**
209+
210+
```tsx
211+
const [open, setOpen] = useState(false)
212+
213+
return <Dialog.Root open={open} onOpenChange={(e) => setOpen(e.open)}>
214+
```
215+
216+
**Vue example:**
217+
218+
```vue
219+
<script setup>
220+
const open = ref(false)
221+
</script>
222+
223+
<template>
224+
<Dialog.Root v-model:open="open">
225+
</template>
226+
```
227+
228+
Same friendly explanation, framework-appropriate code.
229+
230+
## Summary
231+
232+
Write like you're helping a smart colleague get started quickly. Be clear, be direct, be human. Skip the jargon.
233+
Celebrate the work. Acknowledge the hard parts. Trust your readers, and they'll trust you.

0 commit comments

Comments
 (0)