@jobber/components 8.2.0 → 8.4.0

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.
Files changed (56) hide show
  1. package/ActivityIndicator.d.ts +1 -0
  2. package/ActivityIndicator.js +17 -0
  3. package/dist/ActivityIndicator/ActivityIndicator.d.ts +38 -0
  4. package/dist/ActivityIndicator/index.cjs +9 -0
  5. package/dist/ActivityIndicator/index.d.ts +2 -0
  6. package/dist/ActivityIndicator/index.mjs +3 -0
  7. package/dist/ActivityIndicator-cjs.js +27 -0
  8. package/dist/ActivityIndicator-es.js +25 -0
  9. package/dist/Autocomplete/Autocomplete.d.ts +2 -3
  10. package/dist/Autocomplete/Autocomplete.types.d.ts +4 -9
  11. package/dist/Autocomplete/index.cjs +7 -8
  12. package/dist/Autocomplete/index.d.ts +3 -4
  13. package/dist/Autocomplete/index.mjs +6 -7
  14. package/dist/DataList/components/DataListSearch/index.cjs +1 -2
  15. package/dist/DataList/components/DataListSearch/index.mjs +1 -2
  16. package/dist/DataList/index.cjs +1 -2
  17. package/dist/DataList/index.mjs +1 -2
  18. package/dist/DataListSearch-cjs.js +12 -6
  19. package/dist/DataListSearch-es.js +11 -5
  20. package/dist/InputDate/index.cjs +1 -2
  21. package/dist/InputDate/index.mjs +1 -2
  22. package/dist/InputDate-cjs.js +2 -2
  23. package/dist/InputDate-es.js +2 -2
  24. package/dist/InputText/InputText.d.ts +2 -70
  25. package/dist/InputText/InputText.types.d.ts +2 -30
  26. package/dist/InputText/index.cjs +12 -268
  27. package/dist/InputText/index.d.ts +2 -5
  28. package/dist/InputText/index.mjs +11 -271
  29. package/dist/InputText/useInputTextActions.d.ts +2 -2
  30. package/dist/InputText-cjs.js +199 -0
  31. package/dist/InputText-es.js +197 -0
  32. package/dist/Spinner/Spinner.d.ts +6 -0
  33. package/dist/Spinner-cjs.js +3 -0
  34. package/dist/Spinner-es.js +3 -0
  35. package/dist/docs/ActivityIndicator/ActivityIndicator.md +67 -0
  36. package/dist/docs/Autocomplete/AutocompleteV1.md +1 -2
  37. package/dist/docs/Autocomplete/AutocompleteV2.md +1 -1
  38. package/dist/docs/Banner/Banner.md +2 -2
  39. package/dist/docs/Box/Box.md +2 -2
  40. package/dist/docs/Glimmer/Glimmer.md +1 -1
  41. package/dist/docs/Icon/Icon.md +1 -1
  42. package/dist/docs/InputText/InputText.md +152 -106
  43. package/dist/docs/Menu/Menu.md +1 -1
  44. package/dist/docs/Modal/Modal.md +1 -1
  45. package/dist/docs/Spinner/Spinner.md +9 -1
  46. package/dist/docs/Stack/Stack.md +1 -1
  47. package/dist/docs/index.md +1 -0
  48. package/dist/docs/usage-guidelines/usage-guidelines.md +0 -2
  49. package/dist/index.cjs +5 -3
  50. package/dist/index.d.mts +1 -0
  51. package/dist/index.d.ts +1 -0
  52. package/dist/index.mjs +3 -2
  53. package/dist/styles.css +279 -0
  54. package/dist/utils/meta/meta.json +1 -0
  55. package/package.json +8 -3
  56. package/dist/InputText/InputText.rebuilt.d.ts +0 -3
package/dist/styles.css CHANGED
@@ -1,3 +1,282 @@
1
+ /*
2
+ * ActivityIndicator
3
+ *
4
+ * Indeterminate three-layer ring, following Material Web's canonical
5
+ * SVG-based pattern:
6
+ * 1. The <svg> rotates continuously at a constant linear speed (Layer 1).
7
+ * 2. The active <circle> rotates through 8 discrete phases per cycle
8
+ * (Layer 2).
9
+ * 3. The active <circle>'s stroke-dasharray expands and contracts so the
10
+ * visible arc length grows and shrinks (Layer 3); stroke-dashoffset
11
+ * slides the arc around the ring across the cycle.
12
+ */
13
+
14
+ .YST686vLR3c- {
15
+ position: relative;
16
+ width: 32px;
17
+ width: var(--space-larger);
18
+ height: 32px;
19
+ height: var(--space-larger);
20
+ }
21
+
22
+ /*
23
+ * Visually hide an element from sighted users while keeping it in the
24
+ * accessibility tree and the live-region text content. Used for the
25
+ * mount-time "Loading" announcement on role=\"status\". Mirrors the
26
+ * .screenReaderOnly pattern already used elsewhere in @jobber/components.
27
+ */
28
+
29
+ .MmNHh-oCyxc- {
30
+ position: absolute;
31
+ width: 1px;
32
+ height: 1px;
33
+ margin: -1px;
34
+ overflow: hidden;
35
+ clip: rect(0, 0, 0, 0);
36
+ white-space: nowrap;
37
+ }
38
+
39
+ ._888S5Y2IeZ8- {
40
+ width: 16px;
41
+ width: var(--space-base);
42
+ height: 16px;
43
+ height: var(--space-base);
44
+ }
45
+
46
+ /*
47
+ * Layer 1 — continuous linear rotation on the SVG.
48
+ *
49
+ * The three indicator durations (1568ms outer rotation, 5332ms inner
50
+ * 8-phase cycle, 1333ms arc expand/contract) are taken from Material
51
+ * Web's published progress-motion spec. They are tuned against each
52
+ * other to produce the canonical Material rhythm and are intentionally
53
+ * inlined as literals because no other component currently consumes
54
+ * them; promote them to design tokens once a second consumer (e.g. a
55
+ * future `ProgressIndicator`) needs the same values.
56
+ */
57
+
58
+ .Av9z-aLocss- {
59
+ display: block;
60
+ width: 100%;
61
+ height: 100%;
62
+ -webkit-animation: WvHFS--Nm80- 1568ms linear infinite;
63
+ animation: WvHFS--Nm80- 1568ms linear infinite;
64
+ will-change: transform;
65
+ }
66
+
67
+ /* Static background ring drawn beneath the moving arc. */
68
+
69
+ .VDTWabJptKI- {
70
+ fill: none;
71
+ stroke: hsl(0, 0%, 93%);
72
+ stroke: var(--color-disabled--secondary);
73
+ stroke-width: 4;
74
+ }
75
+
76
+ ._888S5Y2IeZ8- .VDTWabJptKI- {
77
+ stroke-width: 6;
78
+ }
79
+
80
+ /*
81
+ * Layer 2 + 3 — the active arc.
82
+ *
83
+ * The circle has circumference 2π·20 ≈ 125.66 (SVG units). The dasharray
84
+ * (visible, gap) interpolates so the visible portion grows from ~1 unit to
85
+ * ~95 units, while the dashoffset slides the arc around the ring. The
86
+ * combined cycle is the canonical Material rhythm.
87
+ *
88
+ * stroke-linecap: round produces the soft pill-shaped tips on the arc.
89
+ */
90
+
91
+ ._9XO0290QNCY- {
92
+ fill: none;
93
+ stroke: hsl(198, 35%, 21%);
94
+ stroke: var(--color-interactive--subtle);
95
+ stroke-width: 4;
96
+ stroke-linecap: round;
97
+ -webkit-transform-origin: center;
98
+ transform-origin: center;
99
+ -webkit-animation:
100
+ SHHICknKvqA- 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,
101
+ _0m0Nzc5awnA- 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
102
+ animation:
103
+ SHHICknKvqA- 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,
104
+ _0m0Nzc5awnA- 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
105
+ }
106
+
107
+ ._888S5Y2IeZ8- ._9XO0290QNCY- {
108
+ stroke-width: 6;
109
+ }
110
+
111
+ @-webkit-keyframes WvHFS--Nm80- {
112
+ to {
113
+ -webkit-transform: rotate(360deg);
114
+ transform: rotate(360deg);
115
+ }
116
+ }
117
+
118
+ @keyframes WvHFS--Nm80- {
119
+ to {
120
+ -webkit-transform: rotate(360deg);
121
+ transform: rotate(360deg);
122
+ }
123
+ }
124
+
125
+ /* Layer 2 — 8-phase 1080° rotation on the active arc. */
126
+
127
+ @-webkit-keyframes SHHICknKvqA- {
128
+ 12.5% {
129
+ -webkit-transform: rotate(135deg);
130
+ transform: rotate(135deg);
131
+ }
132
+ 25% {
133
+ -webkit-transform: rotate(270deg);
134
+ transform: rotate(270deg);
135
+ }
136
+ 37.5% {
137
+ -webkit-transform: rotate(405deg);
138
+ transform: rotate(405deg);
139
+ }
140
+ 50% {
141
+ -webkit-transform: rotate(540deg);
142
+ transform: rotate(540deg);
143
+ }
144
+ 62.5% {
145
+ -webkit-transform: rotate(675deg);
146
+ transform: rotate(675deg);
147
+ }
148
+ 75% {
149
+ -webkit-transform: rotate(810deg);
150
+ transform: rotate(810deg);
151
+ }
152
+ 87.5% {
153
+ -webkit-transform: rotate(945deg);
154
+ transform: rotate(945deg);
155
+ }
156
+ 100% {
157
+ -webkit-transform: rotate(1080deg);
158
+ transform: rotate(1080deg);
159
+ }
160
+ }
161
+
162
+ @keyframes SHHICknKvqA- {
163
+ 12.5% {
164
+ -webkit-transform: rotate(135deg);
165
+ transform: rotate(135deg);
166
+ }
167
+ 25% {
168
+ -webkit-transform: rotate(270deg);
169
+ transform: rotate(270deg);
170
+ }
171
+ 37.5% {
172
+ -webkit-transform: rotate(405deg);
173
+ transform: rotate(405deg);
174
+ }
175
+ 50% {
176
+ -webkit-transform: rotate(540deg);
177
+ transform: rotate(540deg);
178
+ }
179
+ 62.5% {
180
+ -webkit-transform: rotate(675deg);
181
+ transform: rotate(675deg);
182
+ }
183
+ 75% {
184
+ -webkit-transform: rotate(810deg);
185
+ transform: rotate(810deg);
186
+ }
187
+ 87.5% {
188
+ -webkit-transform: rotate(945deg);
189
+ transform: rotate(945deg);
190
+ }
191
+ 100% {
192
+ -webkit-transform: rotate(1080deg);
193
+ transform: rotate(1080deg);
194
+ }
195
+ }
196
+
197
+ /*
198
+ * Layer 3 — expand/contract the visible arc length via stroke-dasharray
199
+ * while shifting it around the ring via stroke-dashoffset. The "200" gap
200
+ * value exceeds the circle's circumference, ensuring only one stroke
201
+ * segment is visible at a time.
202
+ */
203
+
204
+ @-webkit-keyframes _0m0Nzc5awnA- {
205
+ 0% {
206
+ stroke-dasharray: 1, 200;
207
+ stroke-dashoffset: 0;
208
+ }
209
+ 50% {
210
+ stroke-dasharray: 90, 200;
211
+ stroke-dashoffset: -35;
212
+ }
213
+ 100% {
214
+ stroke-dasharray: 90, 200;
215
+ stroke-dashoffset: -125;
216
+ }
217
+ }
218
+
219
+ @keyframes _0m0Nzc5awnA- {
220
+ 0% {
221
+ stroke-dasharray: 1, 200;
222
+ stroke-dashoffset: 0;
223
+ }
224
+ 50% {
225
+ stroke-dasharray: 90, 200;
226
+ stroke-dashoffset: -35;
227
+ }
228
+ 100% {
229
+ stroke-dasharray: 90, 200;
230
+ stroke-dashoffset: -125;
231
+ }
232
+ }
233
+
234
+ @-webkit-keyframes _4dXQsbprq3s- {
235
+ from {
236
+ opacity: 1;
237
+ }
238
+ to {
239
+ opacity: 0.35;
240
+ }
241
+ }
242
+
243
+ @keyframes _4dXQsbprq3s- {
244
+ from {
245
+ opacity: 1;
246
+ }
247
+ to {
248
+ opacity: 0.35;
249
+ }
250
+ }
251
+
252
+ /*
253
+ * Reduced motion fallback. Hide the active arc entirely; repaint the static
254
+ * track in the icon foreground colour and pulse its opacity so the
255
+ * indicator still reads as "busy" without rotational motion.
256
+ *
257
+ * A naive `animation: none` would freeze a partial arc mid-cycle and lose
258
+ * the busy affordance.
259
+ */
260
+
261
+ @media (prefers-reduced-motion: reduce) {
262
+ .Av9z-aLocss-,
263
+ ._9XO0290QNCY- {
264
+ -webkit-animation: none;
265
+ animation: none;
266
+ }
267
+
268
+ ._9XO0290QNCY- {
269
+ display: none;
270
+ }
271
+
272
+ .VDTWabJptKI- {
273
+ stroke: hsl(198, 35%, 21%);
274
+ stroke: var(--color-interactive--subtle);
275
+ -webkit-animation: _4dXQsbprq3s- 2s ease-in-out infinite alternate;
276
+ animation: _4dXQsbprq3s- 2s ease-in-out infinite alternate;
277
+ }
278
+ }
279
+
1
280
  .P6HrDSaI0Ac- {
2
281
  display: contents;
3
282
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "exportedComponents": [
3
+ "ActivityIndicator",
3
4
  "AffixIcon",
4
5
  "AffixLabel",
5
6
  "AnimatedPresence",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components",
3
- "version": "8.2.0",
3
+ "version": "8.4.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -25,6 +25,11 @@
25
25
  "import": "./dist/unstyledPrimitives/index.mjs",
26
26
  "require": "./dist/unstyledPrimitives/index.cjs"
27
27
  },
28
+ "./ActivityIndicator": {
29
+ "types": "./dist/ActivityIndicator/index.d.ts",
30
+ "import": "./dist/ActivityIndicator/index.mjs",
31
+ "require": "./dist/ActivityIndicator/index.cjs"
32
+ },
28
33
  "./AnimatedPresence": {
29
34
  "types": "./dist/AnimatedPresence/index.d.ts",
30
35
  "import": "./dist/AnimatedPresence/index.mjs",
@@ -508,7 +513,7 @@
508
513
  "devDependencies": {
509
514
  "@apollo/client": "^3.7.10",
510
515
  "@csstools/postcss-global-data": "^1.0.3",
511
- "@jobber/design": "0.101.0",
516
+ "@jobber/design": "0.101.1",
512
517
  "@jobber/hooks": "2.20.1",
513
518
  "@rollup/plugin-alias": "^5.1.0",
514
519
  "@rollup/plugin-commonjs": "^25.0.7",
@@ -563,5 +568,5 @@
563
568
  "> 1%",
564
569
  "IE 10"
565
570
  ],
566
- "gitHead": "95eed3cf18c0348874ee50b17bd3d927f392242d"
571
+ "gitHead": "7b859533f0b0482ad30654fb0fde5d41c2d918ba"
567
572
  }
@@ -1,3 +0,0 @@
1
- import React from "react";
2
- import type { InputTextRebuiltProps } from "./InputText.types";
3
- export declare const InputTextSPAR: React.ForwardRefExoticComponent<InputTextRebuiltProps & React.RefAttributes<HTMLInputElement | HTMLTextAreaElement>>;