atlas-react-kit 0.12.0 → 1.0.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 (98) hide show
  1. package/COMPONENTS.md +201 -100
  2. package/DESIGN_RULES.md +44 -1
  3. package/README.md +10 -9
  4. package/dist/accordion.d.ts +1 -0
  5. package/dist/alert.d.ts +1 -1
  6. package/dist/avatar.d.ts +1 -0
  7. package/dist/badge.d.ts +4 -5
  8. package/dist/breadcrumb.d.ts +2 -3
  9. package/dist/button.d.ts +4 -5
  10. package/dist/calendar.d.ts +2 -0
  11. package/dist/card.d.ts +3 -0
  12. package/dist/chart.d.ts +152 -0
  13. package/dist/chart.js +177 -0
  14. package/dist/color-legend.d.ts +8 -0
  15. package/dist/combobox.d.ts +13 -4
  16. package/dist/combobox.js +1 -8
  17. package/dist/date-picker.d.ts +16 -6
  18. package/dist/date-picker.js +13 -20
  19. package/dist/date-time-picker.d.ts +5 -2
  20. package/dist/date-time-picker.js +6 -5
  21. package/dist/dialog.d.ts +1 -0
  22. package/dist/dialog.js +4 -2
  23. package/dist/dropdown-menu.d.ts +9 -8
  24. package/dist/empty-panel.d.ts +8 -2
  25. package/dist/empty-panel.js +2 -2
  26. package/dist/error-boundary.d.ts +7 -2
  27. package/dist/field.d.ts +4 -1
  28. package/dist/field.js +1 -1
  29. package/dist/form/checkbox-field.d.ts +45 -0
  30. package/dist/form/checkbox-field.js +39 -0
  31. package/dist/form/combobox-field.d.ts +13 -0
  32. package/dist/form/combobox-field.js +14 -0
  33. package/dist/form/control-field.d.ts +30 -0
  34. package/dist/form/control-field.js +22 -0
  35. package/dist/form/date-picker-field.d.ts +7 -21
  36. package/dist/form/date-picker-field.js +4 -4
  37. package/dist/form/date-time-picker-field.d.ts +7 -22
  38. package/dist/form/date-time-picker-field.js +3 -3
  39. package/dist/form/feedback-field.d.ts +2 -0
  40. package/dist/form/field-error.d.ts +49 -0
  41. package/dist/form/field-shell.d.ts +47 -8
  42. package/dist/form/field-shell.js +24 -7
  43. package/dist/form/markdown-field.d.ts +4 -16
  44. package/dist/form/markdown-field.js +2 -2
  45. package/dist/form/select-field.d.ts +7 -7
  46. package/dist/form/select-field.js +2 -2
  47. package/dist/form/text-field.d.ts +29 -12
  48. package/dist/form/text-field.js +10 -6
  49. package/dist/form/toggle-group-field.d.ts +30 -0
  50. package/dist/form/toggle-group-field.js +19 -0
  51. package/dist/info-tip.d.ts +10 -1
  52. package/dist/internal/as-child.d.ts +8 -0
  53. package/dist/internal/as-child.js +1 -0
  54. package/dist/internal/date-like.d.ts +23 -0
  55. package/dist/internal/form-control.d.ts +3 -2
  56. package/dist/internal/form-control.js +3 -2
  57. package/dist/internal/kanban-layout.d.ts +55 -0
  58. package/dist/internal/kanban-layout.js +80 -0
  59. package/dist/internal/kanban-plugins.d.ts +17 -0
  60. package/dist/internal/kanban-plugins.js +17 -0
  61. package/dist/internal/use-media-query.d.ts +4 -2
  62. package/dist/internal/use-media-query.js +11 -15
  63. package/dist/kanban.d.ts +84 -0
  64. package/dist/kanban.js +197 -0
  65. package/dist/markdown.d.ts +2 -0
  66. package/dist/meter.d.ts +7 -0
  67. package/dist/nav-link.d.ts +23 -0
  68. package/dist/nav-link.js +31 -0
  69. package/dist/next/nav-link.d.ts +11 -0
  70. package/dist/next/nav-link.js +14 -0
  71. package/dist/next/period-stepper.d.ts +11 -0
  72. package/dist/next/period-stepper.js +16 -0
  73. package/dist/page-header.d.ts +19 -0
  74. package/dist/page-header.js +11 -0
  75. package/dist/pagination.d.ts +2 -0
  76. package/dist/period-stepper.d.ts +32 -0
  77. package/dist/period-stepper.js +27 -0
  78. package/dist/picker-shell.d.ts +43 -6
  79. package/dist/picker-shell.js +2 -2
  80. package/dist/progress.d.ts +1 -0
  81. package/dist/search-picker.d.ts +12 -0
  82. package/dist/select.d.ts +1 -0
  83. package/dist/skip-link.d.ts +7 -0
  84. package/dist/skip-link.js +10 -0
  85. package/dist/slider.d.ts +11 -0
  86. package/dist/sortable-table-head.d.ts +2 -0
  87. package/dist/stat-tile.d.ts +5 -0
  88. package/dist/table-body-skeleton.d.ts +2 -0
  89. package/dist/table.d.ts +1 -0
  90. package/dist/tabs.d.ts +9 -5
  91. package/dist/tabs.js +1 -1
  92. package/dist/toast.d.ts +7 -1
  93. package/dist/toggle-group.d.ts +9 -2
  94. package/dist/toggle-group.js +2 -1
  95. package/dist/toggle.d.ts +1 -1
  96. package/package.json +85 -11
  97. package/skills/atlas-react-kit/SKILL.md +2 -0
  98. package/theme.css +11 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atlas-react-kit",
3
- "version": "0.12.0",
3
+ "version": "1.0.0",
4
4
  "description": "Shared React components and Tailwind theme for Atlas",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -52,6 +52,10 @@
52
52
  "types": "./dist/card.d.ts",
53
53
  "default": "./dist/card.js"
54
54
  },
55
+ "./chart": {
56
+ "types": "./dist/chart.d.ts",
57
+ "default": "./dist/chart.js"
58
+ },
55
59
  "./checkbox": {
56
60
  "types": "./dist/checkbox.d.ts",
57
61
  "default": "./dist/checkbox.js"
@@ -100,6 +104,10 @@
100
104
  "types": "./dist/input.d.ts",
101
105
  "default": "./dist/input.js"
102
106
  },
107
+ "./kanban": {
108
+ "types": "./dist/kanban.d.ts",
109
+ "default": "./dist/kanban.js"
110
+ },
103
111
  "./label": {
104
112
  "types": "./dist/label.d.ts",
105
113
  "default": "./dist/label.js"
@@ -112,10 +120,22 @@
112
120
  "types": "./dist/meter.d.ts",
113
121
  "default": "./dist/meter.js"
114
122
  },
123
+ "./nav-link": {
124
+ "types": "./dist/nav-link.d.ts",
125
+ "default": "./dist/nav-link.js"
126
+ },
127
+ "./page-header": {
128
+ "types": "./dist/page-header.d.ts",
129
+ "default": "./dist/page-header.js"
130
+ },
115
131
  "./pagination": {
116
132
  "types": "./dist/pagination.d.ts",
117
133
  "default": "./dist/pagination.js"
118
134
  },
135
+ "./period-stepper": {
136
+ "types": "./dist/period-stepper.d.ts",
137
+ "default": "./dist/period-stepper.js"
138
+ },
119
139
  "./popover": {
120
140
  "types": "./dist/popover.d.ts",
121
141
  "default": "./dist/popover.js"
@@ -144,6 +164,10 @@
144
164
  "types": "./dist/skeleton.d.ts",
145
165
  "default": "./dist/skeleton.js"
146
166
  },
167
+ "./skip-link": {
168
+ "types": "./dist/skip-link.d.ts",
169
+ "default": "./dist/skip-link.js"
170
+ },
147
171
  "./slider": {
148
172
  "types": "./dist/slider.d.ts",
149
173
  "default": "./dist/slider.js"
@@ -200,6 +224,18 @@
200
224
  "types": "./dist/tooltip.d.ts",
201
225
  "default": "./dist/tooltip.js"
202
226
  },
227
+ "./form/checkbox-field": {
228
+ "types": "./dist/form/checkbox-field.d.ts",
229
+ "default": "./dist/form/checkbox-field.js"
230
+ },
231
+ "./form/combobox-field": {
232
+ "types": "./dist/form/combobox-field.d.ts",
233
+ "default": "./dist/form/combobox-field.js"
234
+ },
235
+ "./form/control-field": {
236
+ "types": "./dist/form/control-field.d.ts",
237
+ "default": "./dist/form/control-field.js"
238
+ },
203
239
  "./form/date-picker-field": {
204
240
  "types": "./dist/form/date-picker-field.d.ts",
205
241
  "default": "./dist/form/date-picker-field.js"
@@ -208,14 +244,14 @@
208
244
  "types": "./dist/form/date-time-picker-field.d.ts",
209
245
  "default": "./dist/form/date-time-picker-field.js"
210
246
  },
211
- "./form/field-error": {
212
- "types": "./dist/form/field-error.d.ts",
213
- "default": "./dist/form/field-error.js"
214
- },
215
247
  "./form/feedback-field": {
216
248
  "types": "./dist/form/feedback-field.d.ts",
217
249
  "default": "./dist/form/feedback-field.js"
218
250
  },
251
+ "./form/field-error": {
252
+ "types": "./dist/form/field-error.d.ts",
253
+ "default": "./dist/form/field-error.js"
254
+ },
219
255
  "./form/markdown-field": {
220
256
  "types": "./dist/form/markdown-field.d.ts",
221
257
  "default": "./dist/form/markdown-field.js"
@@ -228,6 +264,18 @@
228
264
  "types": "./dist/form/text-field.d.ts",
229
265
  "default": "./dist/form/text-field.js"
230
266
  },
267
+ "./form/toggle-group-field": {
268
+ "types": "./dist/form/toggle-group-field.d.ts",
269
+ "default": "./dist/form/toggle-group-field.js"
270
+ },
271
+ "./next/nav-link": {
272
+ "types": "./dist/next/nav-link.d.ts",
273
+ "default": "./dist/next/nav-link.js"
274
+ },
275
+ "./next/period-stepper": {
276
+ "types": "./dist/next/period-stepper.d.ts",
277
+ "default": "./dist/next/period-stepper.js"
278
+ },
231
279
  "./next/tabs-nav-link": {
232
280
  "types": "./dist/next/tabs-nav-link.d.ts",
233
281
  "default": "./dist/next/tabs-nav-link.js"
@@ -245,9 +293,17 @@
245
293
  "build": "tsc",
246
294
  "check": "npm run build && npm run docs:check && prettier --check .",
247
295
  "docs:check": "node scripts/check-doc-links.mjs",
296
+ "lint": "oxlint --type-aware --deny-warnings",
297
+ "knip": "knip",
298
+ "sast": "node scripts/sast.mjs",
299
+ "secrets": "secretlint \"**/*\"",
300
+ "size": "size-limit",
301
+ "gate:static": "npm run lint && npm run knip && npm run sast && npm run secrets",
302
+ "gate": "npm run check && npm run gate:static && npm run size && vitest run",
248
303
  "test": "npm run build && vitest run",
249
304
  "test:coverage": "npm run build && vitest run --coverage",
250
- "prepack": "npm run build"
305
+ "prepack": "npm run build",
306
+ "prepare": "lefthook install"
251
307
  },
252
308
  "engines": {
253
309
  "node": ">=20.19.0"
@@ -256,6 +312,8 @@
256
312
  "access": "public"
257
313
  },
258
314
  "peerDependencies": {
315
+ "@dnd-kit/dom": "^0.4.0",
316
+ "@dnd-kit/react": "^0.4.0",
259
317
  "date-fns": "^4.4.0",
260
318
  "next": "^16.0.0",
261
319
  "next-themes": "^0.4.6",
@@ -264,11 +322,16 @@
264
322
  "react-dom": "^19.0.0",
265
323
  "react-markdown": "^10.1.0",
266
324
  "remark-gfm": "^4.0.1",
267
- "remark-parse": "^11.0.0",
268
325
  "sonner": "^2.0.7",
269
326
  "tailwindcss": "^4.0.0"
270
327
  },
271
328
  "peerDependenciesMeta": {
329
+ "@dnd-kit/dom": {
330
+ "optional": true
331
+ },
332
+ "@dnd-kit/react": {
333
+ "optional": true
334
+ },
272
335
  "date-fns": {
273
336
  "optional": true
274
337
  },
@@ -300,6 +363,10 @@
300
363
  "tw-animate-css": "^1.4.0"
301
364
  },
302
365
  "devDependencies": {
366
+ "@dnd-kit/dom": "^0.4.0",
367
+ "@dnd-kit/react": "^0.4.0",
368
+ "@secretlint/secretlint-rule-preset-recommend": "^13.0.7",
369
+ "@size-limit/file": "^14.2.0",
303
370
  "@testing-library/dom": "^10.4.2",
304
371
  "@testing-library/jest-dom": "^7.0.1",
305
372
  "@testing-library/react": "^16.3.3",
@@ -307,21 +374,28 @@
307
374
  "@types/node": "^25.5.0",
308
375
  "@types/react": "^19.2.14",
309
376
  "@types/react-dom": "^19.2.3",
310
- "@vitest/coverage-v8": "4.1.11",
377
+ "@vitest/coverage-v8": "5.0.5",
311
378
  "date-fns": "^4.4.0",
312
379
  "jsdom": "^29.1.1",
313
- "next": "16.2.6",
380
+ "knip": "^6.41.0",
381
+ "lefthook": "^2.2.2",
382
+ "next": "16.4.2",
314
383
  "next-themes": "^0.4.6",
384
+ "oxlint": "^1.88.0",
385
+ "oxlint-tsgolint": "^7.0.2004",
315
386
  "prettier": "^3.8.1",
316
387
  "react": "^19.2.4",
317
388
  "react-day-picker": "^10.0.1",
318
389
  "react-dom": "^19.2.4",
319
390
  "react-markdown": "^10.1.0",
320
391
  "remark-gfm": "^4.0.1",
392
+ "remark-parse": "^11.0.0",
393
+ "secretlint": "^13.0.7",
394
+ "size-limit": "^14.2.0",
321
395
  "sonner": "^2.0.7",
322
396
  "tailwindcss": "^4.2.1",
323
- "typescript": "^6.0.3",
397
+ "typescript": "^7.0.2",
324
398
  "unified": "^11.0.5",
325
- "vitest": "^4.1.9"
399
+ "vitest": "^5.0.5"
326
400
  }
327
401
  }
@@ -61,9 +61,11 @@ Import each component from its subpath, e.g.
61
61
  | One date, or a from/to range | `DatePickerButton` from `date-picker` (`mode="range"` for ranges) |
62
62
  | Date and time (not `datetime-local`) | `DateTimePickerButton` from `date-time-picker` |
63
63
  | Labelled field with error text | `FormTextField`, `FormSelectField`, `FormDatePickerField`, `FormDateTimePickerField`, `FormMarkdownField` from `form/*` |
64
+ | Labelled custom control (combobox) in a form | `FormControlField` from `form/control-field` |
64
65
  | Form-level error (save failed) | `FormFeedbackField` from `form/feedback-field` |
65
66
  | Content panels on one page | `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent` from `tabs` |
66
67
  | View switch that changes the URL | `TabsNav` with links: `TabsNavLink` from `next/tabs-nav-link` in Next, else `tabsTriggerVariants()` |
68
+ | App shell nav (Calendar, Tasks, Settings) | `NavLink` from `nav-link` (`asChild` for a router link); Next: `next/nav-link` |
67
69
  | Status chip (paid, pending, failed) | `Badge variant="soft"` with `tone="success"`, `"warning"`, `"destructive"`, or `"neutral"` |
68
70
  | Data table | `Table` family from `table`; `SortableTableHead`; `TableBodySkeleton` while loading |
69
71
  | Nothing to show yet | `EmptyPanel` from `empty-panel` |
package/theme.css CHANGED
@@ -197,6 +197,17 @@
197
197
  * Radix can unmount closing overlays. `!important` in this early layer
198
198
  * beats the utility classes that set the animations.
199
199
  */
200
+ /*
201
+ * Forced colors (Windows High Contrast) drop box-shadow, which is how the
202
+ * kit draws its focus ring, so keyboard focus would vanish. Draw it as a
203
+ * system-colored outline there instead (WCAG 2.4.7).
204
+ */
205
+ @media (forced-colors: active) {
206
+ :focus-visible {
207
+ outline: 2px solid Highlight !important;
208
+ outline-offset: 2px !important;
209
+ }
210
+ }
200
211
  @media (prefers-reduced-motion: reduce) {
201
212
  *,
202
213
  ::before,