tempest-react-sdk 0.24.0 → 0.25.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 (106) hide show
  1. package/README.md +11 -3
  2. package/dist/charts/AreaChart.cjs +1 -1
  3. package/dist/charts/AreaChart.cjs.map +1 -1
  4. package/dist/charts/AreaChart.js +7 -7
  5. package/dist/charts/AreaChart.js.map +1 -1
  6. package/dist/charts/BarChart.cjs +1 -1
  7. package/dist/charts/BarChart.cjs.map +1 -1
  8. package/dist/charts/BarChart.js +7 -7
  9. package/dist/charts/BarChart.js.map +1 -1
  10. package/dist/charts/LineChart.cjs +1 -1
  11. package/dist/charts/LineChart.cjs.map +1 -1
  12. package/dist/charts/LineChart.js +6 -6
  13. package/dist/charts/LineChart.js.map +1 -1
  14. package/dist/charts/PieChart.cjs +1 -1
  15. package/dist/charts/PieChart.cjs.map +1 -1
  16. package/dist/charts/PieChart.js +6 -6
  17. package/dist/charts/PieChart.js.map +1 -1
  18. package/dist/charts/RadarChart.cjs +1 -1
  19. package/dist/charts/RadarChart.cjs.map +1 -1
  20. package/dist/charts/RadarChart.js +6 -6
  21. package/dist/charts/RadarChart.js.map +1 -1
  22. package/dist/charts/palette.cjs +1 -1
  23. package/dist/charts/palette.cjs.map +1 -1
  24. package/dist/charts/palette.js +19 -2
  25. package/dist/charts/palette.js.map +1 -1
  26. package/dist/charts/use-chart-colors.cjs +2 -0
  27. package/dist/charts/use-chart-colors.cjs.map +1 -0
  28. package/dist/charts/use-chart-colors.js +29 -0
  29. package/dist/charts/use-chart-colors.js.map +1 -0
  30. package/dist/charts.cjs +1 -1
  31. package/dist/charts.d.ts +59 -10
  32. package/dist/charts.js +8 -7
  33. package/dist/components/AvatarGroup/AvatarGroup.cjs +2 -0
  34. package/dist/components/AvatarGroup/AvatarGroup.cjs.map +1 -0
  35. package/dist/components/AvatarGroup/AvatarGroup.js +39 -0
  36. package/dist/components/AvatarGroup/AvatarGroup.js.map +1 -0
  37. package/dist/components/AvatarGroup/AvatarGroup.module.cjs +2 -0
  38. package/dist/components/AvatarGroup/AvatarGroup.module.cjs.map +1 -0
  39. package/dist/components/AvatarGroup/AvatarGroup.module.js +16 -0
  40. package/dist/components/AvatarGroup/AvatarGroup.module.js.map +1 -0
  41. package/dist/components/Lightbox/Lightbox.cjs +2 -0
  42. package/dist/components/Lightbox/Lightbox.cjs.map +1 -0
  43. package/dist/components/Lightbox/Lightbox.js +148 -0
  44. package/dist/components/Lightbox/Lightbox.js.map +1 -0
  45. package/dist/components/Lightbox/Lightbox.module.cjs +2 -0
  46. package/dist/components/Lightbox/Lightbox.module.cjs.map +1 -0
  47. package/dist/components/Lightbox/Lightbox.module.js +21 -0
  48. package/dist/components/Lightbox/Lightbox.module.js.map +1 -0
  49. package/dist/components/SignaturePad/SignaturePad.cjs +2 -0
  50. package/dist/components/SignaturePad/SignaturePad.cjs.map +1 -0
  51. package/dist/components/SignaturePad/SignaturePad.js +115 -0
  52. package/dist/components/SignaturePad/SignaturePad.js.map +1 -0
  53. package/dist/components/SignaturePad/SignaturePad.module.cjs +2 -0
  54. package/dist/components/SignaturePad/SignaturePad.module.cjs.map +1 -0
  55. package/dist/components/SignaturePad/SignaturePad.module.js +11 -0
  56. package/dist/components/SignaturePad/SignaturePad.module.js.map +1 -0
  57. package/dist/components/Stepper/Stepper.cjs +1 -1
  58. package/dist/components/Stepper/Stepper.cjs.map +1 -1
  59. package/dist/components/Stepper/Stepper.js +43 -19
  60. package/dist/components/Stepper/Stepper.js.map +1 -1
  61. package/dist/components/Stepper/Stepper.module.cjs +1 -1
  62. package/dist/components/Stepper/Stepper.module.cjs.map +1 -1
  63. package/dist/components/Stepper/Stepper.module.js +6 -3
  64. package/dist/components/Stepper/Stepper.module.js.map +1 -1
  65. package/dist/components/TreeView/TreeView.cjs +2 -0
  66. package/dist/components/TreeView/TreeView.cjs.map +1 -0
  67. package/dist/components/TreeView/TreeView.js +124 -0
  68. package/dist/components/TreeView/TreeView.js.map +1 -0
  69. package/dist/components/TreeView/TreeView.module.cjs +2 -0
  70. package/dist/components/TreeView/TreeView.module.cjs.map +1 -0
  71. package/dist/components/TreeView/TreeView.module.js +17 -0
  72. package/dist/components/TreeView/TreeView.module.js.map +1 -0
  73. package/dist/components/Wizard/Wizard.cjs +2 -0
  74. package/dist/components/Wizard/Wizard.cjs.map +1 -0
  75. package/dist/components/Wizard/Wizard.js +111 -0
  76. package/dist/components/Wizard/Wizard.js.map +1 -0
  77. package/dist/components/Wizard/Wizard.module.cjs +2 -0
  78. package/dist/components/Wizard/Wizard.module.cjs.map +1 -0
  79. package/dist/components/Wizard/Wizard.module.js +10 -0
  80. package/dist/components/Wizard/Wizard.module.js.map +1 -0
  81. package/dist/offline/create-offline-sync.cjs +1 -1
  82. package/dist/offline/create-offline-sync.cjs.map +1 -1
  83. package/dist/offline/create-offline-sync.js +8 -2
  84. package/dist/offline/create-offline-sync.js.map +1 -1
  85. package/dist/styles.css +1 -1
  86. package/dist/tempest-react-sdk.cjs +1 -1
  87. package/dist/tempest-react-sdk.d.ts +605 -2
  88. package/dist/tempest-react-sdk.js +255 -246
  89. package/dist/theme/apply-theme.cjs +2 -0
  90. package/dist/theme/apply-theme.cjs.map +1 -0
  91. package/dist/theme/apply-theme.js +24 -0
  92. package/dist/theme/apply-theme.js.map +1 -0
  93. package/dist/theme/color.cjs +2 -0
  94. package/dist/theme/color.cjs.map +1 -0
  95. package/dist/theme/color.js +130 -0
  96. package/dist/theme/color.js.map +1 -0
  97. package/dist/theme/create-theme.cjs +5 -0
  98. package/dist/theme/create-theme.cjs.map +1 -0
  99. package/dist/theme/create-theme.js +135 -0
  100. package/dist/theme/create-theme.js.map +1 -0
  101. package/dist/theme/theme-presets.cjs +2 -0
  102. package/dist/theme/theme-presets.cjs.map +1 -0
  103. package/dist/theme/theme-presets.js +82 -0
  104. package/dist/theme/theme-presets.js.map +1 -0
  105. package/dist/utilities.css +432 -0
  106. package/package.json +4 -3
@@ -0,0 +1,432 @@
1
+ /* ============================================================
2
+ * tempest-react-sdk/utilities.css — opt-in app-level layout layer
3
+ *
4
+ * NOT imported by `styles.css`. Import it explicitly when you want it:
5
+ *
6
+ * import "tempest-react-sdk/styles.css";
7
+ * import "tempest-react-sdk/utilities.css";
8
+ *
9
+ * Why it exists: the components are styled by CSS Modules, which means an app
10
+ * still had to hand-write CSS for the layer *around* them — a page shell, a
11
+ * two-column form, a row of actions, a card. This is that layer, expressed only
12
+ * in `--tempest-*` tokens, so it stays in step with the theme (including
13
+ * `createTheme` output and dark mode).
14
+ *
15
+ * Why it is opt-in: it ships ~50 global class names. An app that already has its
16
+ * own layout system should not pay for them, and global classes are not something
17
+ * to inject into someone's page uninvited.
18
+ *
19
+ * Scope rules:
20
+ * - Every class is prefixed `tempest-` (no collisions with app CSS).
21
+ * - Every value comes from a token — no literal colors, no magic numbers.
22
+ * - Tunable per instance through the local `--tempest-*` vars documented below.
23
+ * - Single class, no forced overrides, so your own CSS wins on a specificity
24
+ * tie instead of fighting the layer.
25
+ * ============================================================ */
26
+
27
+ /* ============================================================
28
+ * Layout — the primitives every screen repeats
29
+ * ============================================================ */
30
+
31
+ /**
32
+ * Page container: centered, max-width, gutters that respect the safe area.
33
+ * Tune with `--tempest-container-width` and `--tempest-container-gutter`.
34
+ */
35
+ .tempest-container {
36
+ width: 100%;
37
+ max-width: var(--tempest-container-width, 1200px);
38
+ margin-inline: auto;
39
+ padding-inline: max(
40
+ var(--tempest-container-gutter, var(--tempest-space-4)),
41
+ var(--tempest-safe-area-left)
42
+ );
43
+ }
44
+
45
+ /** Vertical flow with a single gap. Tune with `--tempest-stack-gap`. */
46
+ .tempest-stack {
47
+ display: flex;
48
+ flex-direction: column;
49
+ gap: var(--tempest-stack-gap, var(--tempest-space-4));
50
+ }
51
+
52
+ /** Horizontal group that wraps instead of overflowing. Tune with `--tempest-cluster-gap`. */
53
+ .tempest-cluster {
54
+ display: flex;
55
+ flex-wrap: wrap;
56
+ align-items: center;
57
+ gap: var(--tempest-cluster-gap, var(--tempest-space-3));
58
+ }
59
+
60
+ /** Horizontal group that does not wrap — toolbars, inline fields. */
61
+ .tempest-row {
62
+ display: flex;
63
+ flex-direction: row;
64
+ align-items: center;
65
+ gap: var(--tempest-row-gap, var(--tempest-space-3));
66
+ }
67
+
68
+ /** Center a child both ways. */
69
+ .tempest-center {
70
+ display: flex;
71
+ align-items: center;
72
+ justify-content: center;
73
+ }
74
+
75
+ /** Push the first and last child apart (title on the left, actions on the right). */
76
+ .tempest-spread {
77
+ display: flex;
78
+ align-items: center;
79
+ justify-content: space-between;
80
+ gap: var(--tempest-row-gap, var(--tempest-space-3));
81
+ }
82
+
83
+ /**
84
+ * Responsive card grid with no media query: columns fit as many as
85
+ * `--tempest-grid-min` allows.
86
+ */
87
+ .tempest-grid-auto {
88
+ display: grid;
89
+ gap: var(--tempest-grid-gap, var(--tempest-space-4));
90
+ grid-template-columns: repeat(
91
+ auto-fill,
92
+ minmax(min(var(--tempest-grid-min, 260px), 100%), 1fr)
93
+ );
94
+ }
95
+
96
+ /**
97
+ * Sidebar + content. Collapses to one column below `--tempest-bp-md` because a
98
+ * fixed sidebar is unusable on a phone.
99
+ */
100
+ .tempest-sidebar-layout {
101
+ display: grid;
102
+ gap: var(--tempest-sidebar-gap, var(--tempest-space-6));
103
+ grid-template-columns: 1fr;
104
+ }
105
+
106
+ @media (min-width: 768px) {
107
+ .tempest-sidebar-layout {
108
+ grid-template-columns: var(--tempest-sidebar-width, 260px) 1fr;
109
+ align-items: start;
110
+ }
111
+ }
112
+
113
+ /**
114
+ * Two-column form grid that collapses on small screens. A field spanning the
115
+ * full row takes `.tempest-form-span`.
116
+ */
117
+ .tempest-form-grid {
118
+ display: grid;
119
+ gap: var(--tempest-form-gap, var(--tempest-space-4));
120
+ grid-template-columns: 1fr;
121
+ }
122
+
123
+ @media (min-width: 640px) {
124
+ .tempest-form-grid {
125
+ grid-template-columns: repeat(var(--tempest-form-columns, 2), minmax(0, 1fr));
126
+ }
127
+ }
128
+
129
+ .tempest-form-span {
130
+ grid-column: 1 / -1;
131
+ }
132
+
133
+ /** Take the remaining space in a flex container. */
134
+ .tempest-fill {
135
+ flex: 1 1 auto;
136
+ min-width: 0;
137
+ }
138
+
139
+ /** Never shrink below content size (icon buttons next to a growing field). */
140
+ .tempest-fixed {
141
+ flex: 0 0 auto;
142
+ }
143
+
144
+ /* ============================================================
145
+ * Spacing — gap and padding on the token scale
146
+ * ============================================================ */
147
+
148
+ .tempest-gap-0 {
149
+ gap: var(--tempest-space-0);
150
+ }
151
+ .tempest-gap-1 {
152
+ gap: var(--tempest-space-1);
153
+ }
154
+ .tempest-gap-2 {
155
+ gap: var(--tempest-space-2);
156
+ }
157
+ .tempest-gap-3 {
158
+ gap: var(--tempest-space-3);
159
+ }
160
+ .tempest-gap-4 {
161
+ gap: var(--tempest-space-4);
162
+ }
163
+ .tempest-gap-5 {
164
+ gap: var(--tempest-space-5);
165
+ }
166
+ .tempest-gap-6 {
167
+ gap: var(--tempest-space-6);
168
+ }
169
+ .tempest-gap-8 {
170
+ gap: var(--tempest-space-8);
171
+ }
172
+ .tempest-gap-10 {
173
+ gap: var(--tempest-space-10);
174
+ }
175
+ .tempest-gap-12 {
176
+ gap: var(--tempest-space-12);
177
+ }
178
+
179
+ .tempest-pad-0 {
180
+ padding: var(--tempest-space-0);
181
+ }
182
+ .tempest-pad-2 {
183
+ padding: var(--tempest-space-2);
184
+ }
185
+ .tempest-pad-3 {
186
+ padding: var(--tempest-space-3);
187
+ }
188
+ .tempest-pad-4 {
189
+ padding: var(--tempest-space-4);
190
+ }
191
+ .tempest-pad-6 {
192
+ padding: var(--tempest-space-6);
193
+ }
194
+ .tempest-pad-8 {
195
+ padding: var(--tempest-space-8);
196
+ }
197
+
198
+ .tempest-pad-block {
199
+ padding-block: var(--tempest-pad-block, var(--tempest-space-6));
200
+ }
201
+
202
+ .tempest-pad-inline {
203
+ padding-inline: var(--tempest-pad-inline, var(--tempest-space-4));
204
+ }
205
+
206
+ /* ============================================================
207
+ * Text — the handful of treatments every screen needs
208
+ * ============================================================ */
209
+
210
+ /** One line, ellipsis. Needs a bounded width (pair with `.tempest-fill`). */
211
+ .tempest-truncate {
212
+ overflow: hidden;
213
+ text-overflow: ellipsis;
214
+ white-space: nowrap;
215
+ }
216
+
217
+ /** Clamp to N lines with an ellipsis. */
218
+ .tempest-clamp-2,
219
+ .tempest-clamp-3,
220
+ .tempest-clamp-4 {
221
+ display: -webkit-box;
222
+ -webkit-box-orient: vertical;
223
+ overflow: hidden;
224
+ }
225
+
226
+ .tempest-clamp-2 {
227
+ -webkit-line-clamp: 2;
228
+ line-clamp: 2;
229
+ }
230
+
231
+ .tempest-clamp-3 {
232
+ -webkit-line-clamp: 3;
233
+ line-clamp: 3;
234
+ }
235
+
236
+ .tempest-clamp-4 {
237
+ -webkit-line-clamp: 4;
238
+ line-clamp: 4;
239
+ }
240
+
241
+ .tempest-text-muted {
242
+ color: var(--tempest-text-muted);
243
+ }
244
+
245
+ .tempest-text-subtle {
246
+ color: var(--tempest-text-subtle);
247
+ }
248
+
249
+ .tempest-text-xs {
250
+ font-size: var(--tempest-text-xs);
251
+ }
252
+ .tempest-text-sm {
253
+ font-size: var(--tempest-text-sm);
254
+ }
255
+ .tempest-text-base {
256
+ font-size: var(--tempest-text-base);
257
+ }
258
+ .tempest-text-lg {
259
+ font-size: var(--tempest-text-lg);
260
+ }
261
+ .tempest-text-xl {
262
+ font-size: var(--tempest-text-xl);
263
+ }
264
+ .tempest-text-2xl {
265
+ font-size: var(--tempest-text-2xl);
266
+ }
267
+
268
+ .tempest-weight-medium {
269
+ font-weight: var(--tempest-weight-medium);
270
+ }
271
+ .tempest-weight-semibold {
272
+ font-weight: var(--tempest-weight-semibold);
273
+ }
274
+ .tempest-weight-bold {
275
+ font-weight: var(--tempest-weight-bold);
276
+ }
277
+
278
+ /** Tabular figures — keeps columns of numbers from dancing as values change. */
279
+ .tempest-numeric {
280
+ font-variant-numeric: tabular-nums;
281
+ font-feature-settings: "tnum";
282
+ }
283
+
284
+ /* ============================================================
285
+ * Surfaces — card, panel, divider
286
+ * ============================================================ */
287
+
288
+ /** Raised surface: background, border, radius, shadow. */
289
+ .tempest-card {
290
+ background: var(--tempest-bg);
291
+ border: 1px solid var(--tempest-border);
292
+ border-radius: var(--tempest-radius-lg);
293
+ box-shadow: var(--tempest-shadow-sm);
294
+ padding: var(--tempest-card-padding, var(--tempest-space-5));
295
+ }
296
+
297
+ /** Flat surface: same shape, no shadow — for a section inside a card. */
298
+ .tempest-panel {
299
+ background: var(--tempest-surface);
300
+ border: 1px solid var(--tempest-border);
301
+ border-radius: var(--tempest-radius-md);
302
+ padding: var(--tempest-panel-padding, var(--tempest-space-4));
303
+ }
304
+
305
+ /** Inset surface for code samples, empty states, previews. */
306
+ .tempest-inset {
307
+ background: var(--tempest-surface-2);
308
+ border-radius: var(--tempest-radius-md);
309
+ padding: var(--tempest-space-4);
310
+ }
311
+
312
+ .tempest-divider {
313
+ border: 0;
314
+ border-top: 1px solid var(--tempest-border);
315
+ margin-block: var(--tempest-space-4);
316
+ }
317
+
318
+ /* ============================================================
319
+ * Scrolling — bounded regions that do not blow up the page
320
+ * ============================================================ */
321
+
322
+ /**
323
+ * Horizontal scroll region. Wide content (a table, a chart) scrolls *here*
324
+ * instead of making the whole page scroll sideways.
325
+ */
326
+ .tempest-scroll-x {
327
+ overflow-x: auto;
328
+ overscroll-behavior-x: contain;
329
+ -webkit-overflow-scrolling: touch;
330
+ }
331
+
332
+ .tempest-scroll-y {
333
+ overflow-y: auto;
334
+ overscroll-behavior-y: contain;
335
+ -webkit-overflow-scrolling: touch;
336
+ }
337
+
338
+ /* ============================================================
339
+ * Page pattern — the shell every screen shares
340
+ * ============================================================ */
341
+
342
+ .tempest-page {
343
+ display: flex;
344
+ flex-direction: column;
345
+ gap: var(--tempest-page-gap, var(--tempest-space-6));
346
+ padding-block: var(--tempest-space-6);
347
+ }
348
+
349
+ /** Title on the left, actions on the right; stacks on narrow screens. */
350
+ .tempest-page-header {
351
+ display: flex;
352
+ flex-wrap: wrap;
353
+ align-items: flex-start;
354
+ justify-content: space-between;
355
+ gap: var(--tempest-space-3);
356
+ }
357
+
358
+ .tempest-page-title {
359
+ margin: 0;
360
+ font-size: var(--tempest-text-fluid-2xl);
361
+ font-weight: var(--tempest-weight-semibold);
362
+ line-height: var(--tempest-leading-tight);
363
+ color: var(--tempest-text);
364
+ }
365
+
366
+ .tempest-page-subtitle {
367
+ margin: 0;
368
+ font-size: var(--tempest-text-sm);
369
+ color: var(--tempest-text-muted);
370
+ }
371
+
372
+ /** Sticky filter/action bar above a list. */
373
+ .tempest-toolbar {
374
+ display: flex;
375
+ flex-wrap: wrap;
376
+ align-items: center;
377
+ gap: var(--tempest-space-3);
378
+ padding: var(--tempest-space-3);
379
+ background: var(--tempest-bg);
380
+ border: 1px solid var(--tempest-border);
381
+ border-radius: var(--tempest-radius-md);
382
+ }
383
+
384
+ .tempest-toolbar-sticky {
385
+ position: sticky;
386
+ top: var(--tempest-toolbar-top, 0);
387
+ z-index: var(--tempest-z-sticky);
388
+ }
389
+
390
+ /* ============================================================
391
+ * Media — fixed ratios without layout shift
392
+ * ============================================================ */
393
+
394
+ .tempest-aspect-video {
395
+ aspect-ratio: 16 / 9;
396
+ width: 100%;
397
+ object-fit: cover;
398
+ }
399
+
400
+ .tempest-aspect-square {
401
+ aspect-ratio: 1 / 1;
402
+ width: 100%;
403
+ object-fit: cover;
404
+ }
405
+
406
+ /* ============================================================
407
+ * Misc
408
+ * ============================================================ */
409
+
410
+ /** Visually hidden, still announced by screen readers. */
411
+ .tempest-visually-hidden {
412
+ position: absolute;
413
+ width: 1px;
414
+ height: 1px;
415
+ margin: -1px;
416
+ padding: 0;
417
+ overflow: hidden;
418
+ clip-path: inset(50%);
419
+ white-space: nowrap;
420
+ border: 0;
421
+ }
422
+
423
+ .tempest-no-select {
424
+ user-select: none;
425
+ }
426
+
427
+ /** Kill the pointer and dim — a region waiting on a request. */
428
+ .tempest-busy {
429
+ pointer-events: none;
430
+ opacity: 0.6;
431
+ transition: opacity var(--tempest-duration-fast) var(--tempest-ease-out);
432
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tempest-react-sdk",
3
- "version": "0.24.0",
3
+ "version": "0.25.0",
4
4
  "description": "SDK público da Tempest com componentes, hooks e integrações para projetos React.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -81,11 +81,12 @@
81
81
  "require": "./dist/br.cjs"
82
82
  },
83
83
  "./styles.css": "./dist/styles.css",
84
- "./package.json": "./package.json"
84
+ "./package.json": "./package.json",
85
+ "./utilities.css": "./dist/utilities.css"
85
86
  },
86
87
  "scripts": {
87
88
  "dev": "vite build --watch",
88
- "build": "tsc -b tsconfig.build.json && vite build",
89
+ "build": "tsc -b tsconfig.build.json && vite build && node scripts/copy-css-assets.mjs",
89
90
  "typecheck": "tsc -b tsconfig.json --noEmit",
90
91
  "lint": "eslint .",
91
92
  "format": "prettier --write .",