@jobber/components-native 0.105.3 → 0.105.4-addeditor-cab44cf.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -34,7 +34,7 @@ saving the single input they are editing, but the entire object.
34
34
  ### Form errors
35
35
 
36
36
  All error messaging should follow our
37
- [Product Vocabulary.](/content/product-vocabulary)
37
+ [Product Vocabulary.](../product-vocabulary/product-vocabulary.md)
38
38
 
39
39
  ## Setup
40
40
 
@@ -151,7 +151,7 @@ but minimizes the need for it as the user should be set up for success by proper
151
151
  guidance pre-submission before any "bad" data gets to the server.
152
152
 
153
153
  Follow the
154
- [product vocabulary](/content/product-vocabulary#component-view-general-phrasing)
154
+ [product vocabulary](../product-vocabulary/product-vocabulary.md#component-view-general-phrasing)
155
155
  for guidance on writing helpful error messages.
156
156
 
157
157
  ```tsx
@@ -41,7 +41,7 @@ The Toast label should be clear and concise, and should not take up more than
41
41
  one line.
42
42
 
43
43
  Use the pattern "action + subject" to maintain
44
- [active voice](/content/voice-and-tone). The subject should be specific without
44
+ [active voice](../voice-and-tone/voice-and-tone.md). The subject should be specific without
45
45
  overloading too much detail for the user to parse at a quick glance.
46
46
 
47
47
  | ✅ Do | ❌ Don't |
@@ -54,7 +54,7 @@ overloading too much detail for the user to parse at a quick glance.
54
54
  * Examples of action labels: `Undo`, `View`, `Refresh`
55
55
  * Toast's label does not require a period
56
56
  * Use sentence case, and only capitalize
57
- ["branded"](/content/product-vocabulary) Jobber features
57
+ ["branded"](../product-vocabulary/product-vocabulary.md) Jobber features
58
58
 
59
59
  | ✅ Do | ❌ Don't |
60
60
  | ---------- | ----------------------- |
@@ -25,8 +25,8 @@ First and foremost: design to avoid the possibility of errors!
25
25
 
26
26
  #### Effective content
27
27
 
28
- Follow the guidance in our [product vocabulary](../content/product-vocabulary)
29
- and [voice & tone](../content/voice-and-tone) guides to help you craft effective
28
+ Follow the guidance in our [product vocabulary](../product-vocabulary/product-vocabulary.md)
29
+ and [voice & tone](../voice-and-tone/voice-and-tone.md) guides to help you craft effective
30
30
  error messages.
31
31
 
32
32
  #### Validation and form inputs
@@ -0,0 +1,245 @@
1
+ # GrammarThis page defines the grammar and punctuation rules for writing at Jobber. These
2
+ rules ensure our content is consistent, clear, and easy to scan across the
3
+ product.## CapitalizationUse sentence case for almost all product content, with the exception of
4
+ instances where all-caps is a stylistic decision (i.e. MON WED TUE as calendar
5
+ weekday headers). Additionally, as outlined in the Buttons section, button
6
+ labels are title cased.This means in general, capitalize only the first letter of the content unless
7
+ there is a proper noun (such as a person's name) involved. This applies to:- Headings and titles
8
+ - Body copy
9
+ - Card headers
10
+ - Menu options
11
+ - List itemsJobber features such as jobs, quotes and invoices don't count as proper nouns.
12
+ They shouldn't be capitalized.### NamesRespect user input for names and do not force capitalization. For example, names
13
+ like “LaGrange”, “DeAndre”, and “dos Santos” all carry meaning, and we should
14
+ not impose a standardized structure that omits these nuances.### ButtonsButton labels should be title-cased. This means in general, capitalize all words
15
+ with the exception of:- Articles (a, an, the)
16
+ - Coordinating conjunctions (but, for)
17
+ - Prepositions (at, by, to, etc.)| ✅ **Do** | ❌ **Don't** |
18
+ | -------------------- | -------------------- |
19
+ | Approve and Schedule | Approve and schedule |
20
+ | Create a Quote | Create A Quote |## ContractionsContractions help keep Jobber's tone conversational, and make our content easier
21
+ to scan for SPs. They should be used.| ✅ **Do** | ❌ **Don't** |
22
+ | ----------------------------- | ---------------------------------- |
23
+ | Can't, couldn't, you're, it's | Can not, could not, you are, it is |## HeadingsHeadings and subheadings are titles and subtitles that can refer to specific
24
+ sections.When writing a heading, try to keep it short. SPs are busy, and need to
25
+ understand the content of a page or section quickly. Don't try to communicate
26
+ technical details in the headline, leave that to the body copy.Start by addressing the general thought, then post-headline, move on to the
27
+ particulars.#### Start with the general ideaUse the heading to name the **section** or **task**. Save specifics for the body
28
+ copy. This improves scanning and makes screens easier to reuse.| ✅ **Do** | ❌ **Don't** |
29
+ | ---------------- | ------------------------------------ |
30
+ | Invoice details | Invoice for Anna Smith, May 14, $620 |
31
+ | Schedule options | Schedule the job for next Thursday |
32
+ | Payment history | Payments received this month |#### Be clearHeadings should be easy to understand at a glance. Avoid vague, overly friendly,
33
+ or conversational phrases — they slow people down.| ✅ **Do** | ❌ **Don't** |
34
+ | ---------------- | ---------------------- |
35
+ | Job history | Where you've been |
36
+ | Add a new client | Let’s get you set up! |
37
+ | Quote overview | Ready to win the work? |#### Keep it short and scannableHeadings should be easy to read on mobile and in motion. Avoid repeating screen
38
+ names, filler phrases, or full sentences.| ✅ **Do** | ❌ **Don't** |
39
+ | --------------------- | ------------------------------------------- |
40
+ | Create invoice | This screen lets you create an invoice |
41
+ | Upcoming appointments | Your upcoming appointments are listed below |
42
+ | Add line item | Add a line item to the quote |### SubheadingsSubheadings can be useful when a heading requires further context. They should
43
+ always offer real help, not filler. Just because a layout has a subheading, it
44
+ doesn't mean it should be used.Only use subheadings when they:- Clarify something that’s not obvious from the heading
45
+ - Add meaningful guidance to a task or section
46
+ - Help reduce the need for extra body copy**Example**:If you were introducing the concept of reviews for SPs, where Jobber can
47
+ automate asking SPs for a review upon a completion of a job, you wouldn't put
48
+ the technical aspect of automation in the heading, that would be saved for the
49
+ subheading. Heading: Ask your clients for reviews 
50
+ Subheading: Jobber can ask your clients for reviews on your behalf, at a time
51
+ of your choice For more guidance on how to structure headings and subheadings, you can view the
52
+ [structure of content video.](https://us02web.zoom.us/clips/share/ExCgjrtsR4GZje6y5di2rA)## ListsUse lists to make instructions or content easy to scan. SPs often work in
53
+ fast-moving situations, so these rules have been added with keeping lists clear
54
+ and readable in mind.The two main ways to organise lists in Jobber are with bullet points or numbers.
55
+ In some instances there are also sentenced based lists. Follow these rules to
56
+ achieve consistency when adding or editing a list.### Bullet point listUse a bullet point list when the list items don't require a specific order.
57
+ Bullet point lists should be introduced with a colon. Don't put periods at the
58
+ end of items if every item is one sentence.**Example** where periods are not required:All Connect features plus:- Advanced quote customization
59
+ - Track costs with job costing
60
+ - Automated quote follow-upsIf one or more of the items is more than one sentence long, all items should end
61
+ with a period.**Example** where periods are required:Here’s what a client sees after accepting a quote:- A confirmation message. It tells them you'll be in touch to schedule the job.
62
+ - A payment summary with any required deposit.
63
+ - A prompt to create a client account, if they haven't already.### Numbered listUse numbered lists when **order matters**, such as creating an invoice from a
64
+ completed job. Follow the same rules on colons and periods as bullet point list.**Example**:To create an invoice from the job page:1) Tap more actions and select create invoice
65
+ 2) Review the line items and costs
66
+ 3) Tap send to email it to the client### Sentence listOccasionally you may want to structure a list with a sentence. These are rarer
67
+ than bullet point and numbered lists, but they can be useful in describing a
68
+ sequence or laying out the impact of an action.Try to limit the amount of items in a sentence list, if it becomes hard to scan
69
+ consider a bullet point or numbered list.Use an oxford comma to help communicate that the last two items of the list are
70
+ seperate.| ✅ **Do** | ❌ **Don't** |
71
+ | ----------------------------------------------- | ---------------------------------------------- |
72
+ | Change images, tagline, and contact information | Change images, tagline and contact information |## PronounsDefault to addressing SPs with "you", we don;t usually speak on their behalf
73
+ with "I" or "my".| ✅ **Do** | ❌ **Don't** |
74
+ | ---------------------- | -------------------- |
75
+ | Your average job value | My average job value |Use "I" when SPs need to declare something, this is usually related to a legal
76
+ requirement.| ✅ **Do** | ❌ **Don't** |
77
+ | ----------------------------------- | ------------------------------------- |
78
+ | I agree to the terms and conditions | You agree to the terms and conditions |When referring to Jobber, feel free to use "we" and "we're". Avoid using
79
+ "Jobber" wherever possible, we should be happy to take ownership rather than
80
+ talking in the third person.| ✅ **Do** | ❌ **Don't** |
81
+ | ---------------------------------------------- | -------------------------------------- |
82
+ | We've made improvements to your scheduled view | Jobber has improved your schedule view |## PunctuationThese rules are in place so that punctuation can be applied consistently across
83
+ Jobber. Consistent use of punctuation will make the product feel more cohesive
84
+ for SPs.## AmpersandsDon't use ampersands in the product. They don't save much space, don't look
85
+ great, and they draw attention to the most irrelevant part of the sentence.| ✅ **Do** | ❌ **Don't** |
86
+ | -------------------- | ------------------ |
87
+ | Review and Send | Review & Send |
88
+ | Approve and Schedule | Approve & Schedule |## CommasAs stated with sentence lists, we use oxford commas at Jobber to help establish
89
+ that the last two items are separate. They should be used in lists of three
90
+ items or more, unless you're doing a bullet point list or a numbered list.## Exclamation marksAvoid exclamation marks in nearly all scenarios. There should be an extremely
91
+ high threshold for the use of exclamation marks to ensure the genuine moments of
92
+ excitement aren't diluted.Most of Jobber is not exclamation worthy. Even when a user completes something
93
+ important, like:- Sending a quote or invoice
94
+ - Scheduling a job
95
+ - Collecting a deposit
96
+ - Turning on Jobber Payments
97
+ - Signing up for Marketing SuiteThese are normal workflows, not celebrations. They should be acknowledged
98
+ professionally, not enthusiastically.| ✅ **Do** | ❌ **Don't** |
99
+ | ---------------- | ------------------- |
100
+ | Quote sent | You sent the quote! |
101
+ | Job scheduled | Your job is booked! |
102
+ | Payment received | You got paid! |There are more experimental areas such as trial where exclamation marks may be
103
+ used to try and generate excitement and enthusiasm for Jobber. Even in these
104
+ cases, they should be limited to one per page to focus the excitement on one
105
+ specific area.## Hyphens, en dashes, and em dashesUse dashes thoughtfully. Each has a specific role, and misusing them can make
106
+ content harder to scan or understand for SPs.| **Type** | **Use for** | **Example** |
107
+ | ----------- | ------------------------- | ------------------------------------------------ |
108
+ | Hyphen (-) | Compound modifiers | Full-service job |
109
+ | En dash (–) | Ranges and numeric spans | Jan 2–Jan 5 |
110
+ | Em dash (—) | Last-resort clarification | Payment failed — update your billing information |### HyphensUse hyphens to join words that act as a single modifier before a noun. They help
111
+ clarify meaning and reduce ambiguity.| ✅ **Do** | ❌ **Don't** |
112
+ | ------------------ | ------------------ |
113
+ | Full-service job | Full service job |
114
+ | One-time cleanup | One time cleanup |
115
+ | Real-time tracking | Real time tracking |Do not use hyphens when the compound comes **after** the noun.> ✅ This job is full service.\
116
+ > ❌ This job is full-service.### En dashes ( – )Use en dashes for **ranges** especially in time, date, and dollar amounts. No
117
+ spaces on either side.| ✅ **Do** | ❌ **Don't** |
118
+ | --------------- | --------------- |
119
+ | Jan 2–Jan 5 | Jan 2 - Jan 5 |
120
+ | 2:00 PM–4:00 PM | 2:00PM - 4:00PM |
121
+ | $200–$500 | $200 - $500 |En dashes are also used when **expressing a relationship** between values.> The visit window is 8:00 AM–12:00 PM.\
122
+ > The client–contractor agreement includes scope and payment terms.### Em dashes ( — )Use em dashes **only when absolutely necessary**, typically as a last resort to
123
+ break up a sentence for readability or emphasis. As AI (over)uses the Em dash,
124
+ it's important to ensure all content produced by AI has been reviewed. Otherwise
125
+ Jobber content will look and sound like it has been purely AI generated.They should **not** be your go-to for style or tone. Often, a clearer option is
126
+ to split the sentence.| ✅ **Do** | ❌ **Don't** |
127
+ | ----------------------------------------------------- | ------------------------------------------------------ |
128
+ | The quote was approved. You can now schedule the job. | The quote was approved — you can now schedule the job. |## MultiplicationUse the `×` symbol to indicate multiplication whenever possible, rather than an
129
+ `x`.| **✅ Do** | **❌ Don't** |
130
+ | ----------- | ----------- |
131
+ | 12 × $48.00 | 12 x $48.00 |## ParenthesesRestrict to when you need to communicate that some information or tasks are
132
+ optional, or if you want to highlight a particular action is recommended. In
133
+ these cases, just use the word, rather than overload SPs with information.| ✅ **Do** | ❌ **Don't** |
134
+ | ----------------------------- | ------------------------------------------------------- |
135
+ | Ask for reviews (recommended) | Ask for reviews (recommended for businesses like yours) |## PeriodsDon't use a period in microcopy such as error messages, list items, or form
136
+ instructions. Headings don't need a period as they should be restricted to one
137
+ sentence. In microcopy generally, don't use a period unless what you're writing
138
+ is more than one sentence long.| ✅ **Do** | ❌ **Don't** |
139
+ | ---------------- | ----------------- |
140
+ | Enter your email | Enter your email. |## Question marksQuestion marks should be avoided. They create uncertainty, take up space, and
141
+ increase decision-making effort for SPs, especially in fast-moving contexts like
142
+ job scheduling, invoicing, or follow-ups.#### Don’t use question marks in confirmation modalsConfirmation modals should state what’s about to happen, not ask for permission.
143
+ Framing the action as a question forces us into over long and confusing button
144
+ labels like “Yes, do the action”.| ✅ **Do** | ❌ **Don't** |
145
+ | ---------------- | ------------------------------------------ |
146
+ | Archive this job | Are you sure you want to archive this job? |
147
+ | Delete client | Delete this client? |#### Don’t use them in headlines or body copyHeadlines and hero copy should be clear and declarative, not speculative or
148
+ “salesy.” Avoid phrases like “Ready to…” or “Want to…”.| ✅ **Do** | ❌ **Don't** |
149
+ | ---------------------------- | ------------------------------------- |
150
+ | Cut down on admin work | Ready to cut down on your admin work? |
151
+ | Track time from anywhere | Want to track time from the field? |
152
+ | Book more jobs automatically | Need to book more jobs? |#### Say what’s happening rather than what might happenEven if you’re presenting a choice, **state the outcome**. This helps SPs make
153
+ quick, confident decisions, and keeps button text clear and specific.| ✅ **Modal heading** | ❌ **Modal heading** |
154
+ | -------------------------------- | -------------------------------- |
155
+ | Cancel this visit | Are you sure you want to cancel? |
156
+ | Remove team member from schedule | Remove this team member? |## Quotation marksQuotation marks can be helpful to clearly identify exact text that came from a
157
+ client, user, or file. This could include job notes, filenames, custom inputs,
158
+ or copied phrases.#### Where to use quotation marks in JobberUse quotation marks when you're referencing exact input, especially in:- File and attachment names
159
+ - Client-submitted phrases#### Use quotes for client input, filenames, or copied phrasesOnly use quotation marks when you’re showing exactly what the user or client
160
+ entered. Not to add emphasis.| ✅ **Do** | ❌ **Don't** |
161
+ | --------------------------------------------- | ------------------------------------------- |
162
+ | The client wrote: “Please use the back door.” | The client wrote: Please use the back door. |
163
+ | File uploaded: “invoice\_1023.pdf” | File uploaded: invoice\_1023.pdf |#### Use curly quotes, not straight quotesFor the sake of consistency, always use smart (typographic) quotation marks — “
164
+ and ” — in all content. Avoid straight quotes (" or ').| ✅ **Do** | ❌ **Don't** |
165
+ | --------------------------- | --------------------------- |
166
+ | “Approved by client” | "Approved by client" |
167
+ | “Please avoid the driveway” | 'Please avoid the driveway' |#### Punctuation goes inside the quotesIn most cases, place periods and commas **inside** the quotation marks. This
168
+ keeps the sentence flowing and avoids awkward phrasing.| ✅ **Do** | ❌ **Don't** |
169
+ | ----------------------------------------- | ----------------------------------------- |
170
+ | The client said: “We’ll be home after 5.” | The client said: “We’ll be home after 5”. |## SpellingWe use American spelling in Jobber as this is where most of our SPs are based.| ✅ **Do** | ❌ **Don't** |
171
+ | --------- | ----------- |
172
+ | Labor | Labour |
173
+ | Customize | Customise |
174
+ | Canceled | Cancelled |## NumbersUse numbers, don't spell them out.| ✅ **Do** | ❌ **Don't** |
175
+ | ------------------------------- | ---------------------------------- |
176
+ | 14 | Fourteen |
177
+ | You have 5 jobs scheduled today | You have five jobs scheduled today |#### Use commas| ✅ **Do** | ❌ **Don't** |
178
+ | -------- | ----------- |
179
+ | 140,000 | 140 k |#### Use the En dash ( – )As stated in the hyphens section, use an En dash when you want to show a
180
+ numerical range and don't use a space.| ✅ **Do** | ❌ **Don't** |
181
+ | ------------- | --------------- |
182
+ | Between 10-15 | Between 10 - 15 |#### AbbreviationDon't abbreviate numbers when there's a decimal place involved. It's unlikely
183
+ within Jobber, a platform that deals in quotes and invoices, that the numbers
184
+ after a decimal place are going to be irrelevant. There is no need to put a
185
+ decimal place if the post decimal place value is zero (.00).As stated, don't use shorteners such as "k", this makes Jobber seem less focused
186
+ on accuracy.| ✅ **Do** | ❌ **Don't** |
187
+ | --------- | ----------- |
188
+ | $3,345.34 | $3,345 |
189
+ | $32,000 | $32 k |#### HyphensUse a hyphen with phone numbers. Don't use spaces.| ✅ **Do** | ❌ **Don't** |
190
+ | ------------ | -------------- |
191
+ | 912-790-5542 | (912) 790-5542 |## TimeSPs can choose between 12 hour and 24 hour time formats in their settings, so
192
+ this guidance isn't based on which one Jobber prefers. Respect the user's
193
+ locale and product settings, and use existing localized time formatters when
194
+ available instead of building time strings by hand.Examples in this guide assume en-US. The localized formatter may produce
195
+ different output in other locales - trust it over hand-built strings.If you're implementing a new surface, first look for existing
196
+ internationalization or formatting helpers in that product.For both formats, use a colon (:) rather than a period when the localized
197
+ format uses numeric times. Example: `11:40`### 12 HourWhen the localized format uses 12 hour time, include AM or PM using the
198
+ formatter's localized output.- Include a space between the last number "Scheduled for 11:40 AM"
199
+ - Use the En dash for ranges, and make sure AM or PM is included in both times
200
+ "10:00 AM–11:40 AM"| ✅ **Do** | ❌ **Don't** |
201
+ | ----------------- | ------------------- |
202
+ | 2:00 PM | 2 pm |
203
+ | 11:40 AM | 11.40 AM |
204
+ | 11:40 AM–12:20 PM | 11.40 A.M–12.20 P.M |### 24 HourWhen the localized format uses 24 hour time, there is no need to add AM or PM.
205
+ Remember that times before 10:00 require a zero at the start "09:59"| ✅ **Do** | ❌ **Don't** |
206
+ | -------- | ----------- |
207
+ | 02:00 | 2:00 AM |
208
+ | 19:40 | 19:40 PM |### Time durationDisplay hours, minutes and seconds when a timer is actively running.| ✅ **Do** | ❌ **Don't** |
209
+ | -------- | ----------- |
210
+ | 0:04:31 | 0:04 |Display hours and minutes rounded up when referring to a record of time.| ✅ **Do** | ❌ **Don't** |
211
+ | ----------- | ----------- |
212
+ | 1 hr 21 min | 1:21:21 |### Time unit standardsUse these time unit abbreviations based on available space and context. Keep
213
+ styling consistent across a screen or component.| **Unit** | **Full** | **Abbreviated** | **Condensed** |
214
+ | -------- | -------- | --------------- | ------------- |
215
+ | Seconds | seconds | sec | s |
216
+ | Minutes | minutes | min | m |
217
+ | Hours | hours | hr | h |
218
+ | Days | days | days | d |#### General rules- Use **full words** when space allows
219
+
220
+ > 4 hours and 12 minutes.
221
+
222
+ - Use **abbreviated form** in dense UIs or mobile
223
+
224
+ > 4 hr 12 min
225
+
226
+ - Don’t mix styles within the same string
227
+ > ✅ 2 hr 10 min ❌ 2 h 10 min#### ✅ Time range formattingUse standard punctuation and spacing for time unit standards.| ✅ **Do** | ❌ **Don't** |
228
+ | ----------- | ------------------------------------ |
229
+ | 1 hr 15 min | 1hr 15minutes |
230
+ | 45 minutes | 45 min *(if space allows full word)* |## DatesDates and date-times should respect the user's locale and product settings. Do
231
+ not enforce a single punctuation style, month length, or date-part order across
232
+ all surfaces.Examples in this guide assume en-US. Localized formatters may produce different
233
+ punctuation, abbreviations, and ordering in other locales, so trust them over
234
+ hand-built strings.When a localized formatter is available, use it rather than building date
235
+ strings by hand. This applies to punctuation, month abbreviations, whether the
236
+ year is shown, and the order of date and time values.If you're implementing a new surface, first look for existing
237
+ internationalization or formatting helpers in that product.Avoid custom shorthand that overrides the localized format.| ✅ **Do** | ❌ **Don't** |
238
+ | --------------- | -------------- |
239
+ | December 5 2025 | December 5 '25 |
240
+ | Oct 15 | Oct 15th |When communicating a date range, preserve the localized date format on both
241
+ sides of the range and use the En dash ( – ) between the start and end values.
242
+ If the range overlaps a year, it needs to be indicated.| ✅ **Do** | ❌ **Don't** |
243
+ | ------------------------------------------ | ------------------------------------ |
244
+ | Dec 31 2022, 2:00 PM – Jan 1 2023, 3:00 PM | Dec 31, 2:00 PM, 2022 Jan 1, 3:00 PM |
245
+ | October 12 – November 17 | October 12-November 17 |
@@ -28,6 +28,7 @@
28
28
  [Flex](./Flex/Flex.md)
29
29
  [Form](./Form/Form.md)
30
30
  [FormatFile](./FormatFile/FormatFile.md)
31
+ [formatting](./formatting/formatting.md)
31
32
  [FormField](./FormField/FormField.md)
32
33
  [Glimmer](./Glimmer/Glimmer.md)
33
34
  [Heading](./Heading/Heading.md)
@@ -46,6 +47,7 @@
46
47
  [interaction](./interaction/interaction.md)
47
48
  [Opacity](./Opacity/Opacity.md)
48
49
  [page-layouts](./page-layouts/page-layouts.md)
50
+ [product-vocabulary](./product-vocabulary/product-vocabulary.md)
49
51
  [ProgressBar](./ProgressBar/ProgressBar.md)
50
52
  [Radii](./Radii/Radii.md)
51
53
  [ResponsiveBreakpoint](./ResponsiveBreakpoint/ResponsiveBreakpoint.md)
@@ -62,3 +64,4 @@
62
64
  [Typography](./Typography/Typography.md)
63
65
  [Typography](./Typography/Typography.md)
64
66
  [usage-guidelines](./usage-guidelines/usage-guidelines.md)
67
+ [voice-and-tone](./voice-and-tone/voice-and-tone.md)