division-ds 0.3.0 → 0.3.1

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 (78) hide show
  1. package/AGENTS.md +1 -1
  2. package/package.json +1 -1
  3. package/public/docs/components/accordion.md +1 -1
  4. package/public/docs/components/ai-label.md +1 -1
  5. package/public/docs/components/alert-dialog.md +1 -1
  6. package/public/docs/components/alert.md +1 -1
  7. package/public/docs/components/approval-request.md +1 -1
  8. package/public/docs/components/auth-form.md +1 -1
  9. package/public/docs/components/avatar-group.md +1 -1
  10. package/public/docs/components/avatar.md +1 -1
  11. package/public/docs/components/badge.md +1 -1
  12. package/public/docs/components/breadcrumbs.md +1 -1
  13. package/public/docs/components/button.md +1 -1
  14. package/public/docs/components/card.md +1 -1
  15. package/public/docs/components/carousel.md +1 -1
  16. package/public/docs/components/cart.md +1 -1
  17. package/public/docs/components/chart-panel.md +1 -1
  18. package/public/docs/components/chat-message.md +1 -1
  19. package/public/docs/components/chat-thread.md +1 -1
  20. package/public/docs/components/checkbox.md +1 -1
  21. package/public/docs/components/checkout-form.md +1 -1
  22. package/public/docs/components/command-palette.md +1 -1
  23. package/public/docs/components/data-table.md +1 -1
  24. package/public/docs/components/date-picker.md +3 -3
  25. package/public/docs/components/date-presets.md +1 -1
  26. package/public/docs/components/date-range-picker.md +3 -3
  27. package/public/docs/components/description-list.md +1 -1
  28. package/public/docs/components/dialog.md +1 -1
  29. package/public/docs/components/divider.md +1 -1
  30. package/public/docs/components/dropdown-menu.md +1 -1
  31. package/public/docs/components/empty-state.md +1 -1
  32. package/public/docs/components/footer.md +1 -1
  33. package/public/docs/components/form-field.md +2 -2
  34. package/public/docs/components/icon-button.md +1 -1
  35. package/public/docs/components/input.md +1 -1
  36. package/public/docs/components/kanban-board.md +1 -1
  37. package/public/docs/components/kbd.md +1 -1
  38. package/public/docs/components/link.md +1 -1
  39. package/public/docs/components/list-item.md +1 -1
  40. package/public/docs/components/loading-animation.md +1 -1
  41. package/public/docs/components/multi-select.md +5 -5
  42. package/public/docs/components/navbar.md +1 -1
  43. package/public/docs/components/newsletter-form.md +1 -1
  44. package/public/docs/components/page-header.md +1 -1
  45. package/public/docs/components/pagination.md +1 -1
  46. package/public/docs/components/product-card.md +1 -1
  47. package/public/docs/components/progress.md +1 -1
  48. package/public/docs/components/prompt-input.md +1 -1
  49. package/public/docs/components/quantity-stepper.md +2 -2
  50. package/public/docs/components/radio.md +1 -1
  51. package/public/docs/components/rating.md +1 -1
  52. package/public/docs/components/score-ring.md +1 -1
  53. package/public/docs/components/search.md +1 -1
  54. package/public/docs/components/section-heading.md +1 -1
  55. package/public/docs/components/segmented-control.md +1 -1
  56. package/public/docs/components/select.md +2 -2
  57. package/public/docs/components/sheet.md +1 -1
  58. package/public/docs/components/sidebar.md +1 -1
  59. package/public/docs/components/skeleton.md +1 -1
  60. package/public/docs/components/slider.md +1 -1
  61. package/public/docs/components/sparkline.md +1 -1
  62. package/public/docs/components/spinner.md +1 -1
  63. package/public/docs/components/stat.md +1 -1
  64. package/public/docs/components/status-tracker.md +1 -1
  65. package/public/docs/components/stepper.md +1 -1
  66. package/public/docs/components/switch.md +1 -1
  67. package/public/docs/components/tabs.md +1 -1
  68. package/public/docs/components/tag.md +1 -1
  69. package/public/docs/components/textarea.md +1 -1
  70. package/public/docs/components/time-field.md +5 -5
  71. package/public/docs/components/timeline.md +1 -1
  72. package/public/docs/components/toast.md +1 -1
  73. package/public/docs/components/tool-call.md +1 -1
  74. package/public/docs/components/tooltip.md +1 -1
  75. package/public/manifest/components.json +171 -80
  76. package/scripts/lib/agent-docs.mjs +1 -1
  77. package/scripts/lib/props-validator.mjs +36 -2
  78. package/division-ds-0.3.0.tgz +0 -0
package/AGENTS.md CHANGED
@@ -51,7 +51,7 @@ installs these rules into that project's `AGENTS.md`, `GEMINI.md` and Cursor rul
51
51
  `.claude/skills/` (Claude Code).
52
52
 
53
53
  An agent that supports MCP can have the docs and the same checks as tools instead:
54
- `claude mcp add division-ds -- npx -y division-ds@0.3.0 mcp` (`list_components`, `get_component`,
54
+ `claude mcp add division-ds -- npx -y division-ds@0.3.1 mcp` (`list_components`, `get_component`,
55
55
  `search`, `get_tokens`, `validate_code`, `check_contrast`, `get_add_command`,
56
56
  `get_review_checklist`).
57
57
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "division-ds",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Checks a project that uses Division DS components (raw colours, invented tokens, touching buttons, unknown props), and serves the docs and the same checks to agents over MCP.",
5
5
  "license": "MIT",
6
6
  "author": "Victor Ilioiu",
@@ -13,7 +13,7 @@
13
13
  import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from 'src/components/molecules/accordion/Accordion'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { AiLabel } from 'src/components/atoms/ai-label/AiLabel'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogFooter, AlertDialogTrigger } from 'src/components/organisms/alert-dialog/AlertDialog'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Alert } from 'src/components/molecules/alert/Alert'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { ApprovalRequest } from 'src/components/molecules/approval-request/ApprovalRequest'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Requires
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { AuthForm } from 'src/components/organisms/auth-form/AuthForm'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { AvatarGroup } from 'src/components/molecules/avatar-group/AvatarGroup'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Requires
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Avatar, avatarVariants, initialsFrom } from 'src/components/atoms/avatar/Avatar'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Badge, badgeVariants } from 'src/components/atoms/badge/Badge'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Breadcrumbs, collapseCrumbs } from 'src/components/molecules/breadcrumbs/Breadcrumbs'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Button, buttonVariants } from 'src/components/atoms/button/Button'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Card, CardActions, CardBody, CardDescription, CardFooter, CardHeader, CardMedia, CardTitle, cardLinkClass } from 'src/components/molecules/card/Card'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Carousel } from 'src/components/organisms/carousel/Carousel'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Cart } from 'src/components/organisms/cart/Cart'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { ChartPanel } from 'src/components/organisms/chart-panel/ChartPanel'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -15,7 +15,7 @@ import { ChatMessage } from 'src/components/molecules/chat-message/ChatMessage'
15
15
  import { ResponseFeedback } from 'src/components/molecules/chat-message/ResponseFeedback'
16
16
  ```
17
17
 
18
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
18
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
19
19
 
20
20
  ## Requires
21
21
 
@@ -13,7 +13,7 @@
13
13
  import { ChatThread } from 'src/components/organisms/chat-thread/ChatThread'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Requires
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Checkbox } from 'src/components/atoms/checkbox/Checkbox'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { CheckoutForm, DELIVERY_OPTIONS } from 'src/components/organisms/checkout-form/CheckoutForm'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { CommandPalette, filterCommands, groupCommands } from 'src/components/organisms/command-palette/CommandPalette'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { DataTable, sortRows } from 'src/components/organisms/data-table/DataTable'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -16,13 +16,13 @@ import { DateField } from 'src/components/molecules/date-picker/DateField'
16
16
  import { DatePicker } from 'src/components/molecules/date-picker/DatePicker'
17
17
  ```
18
18
 
19
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
19
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
20
20
 
21
21
  ## Props
22
22
 
23
23
  | Prop | Type | Default | Description |
24
24
  |---|---|---|---|
25
- | `label` | `string` | | Required. Names the field. Inside a FormField, FormField sets it from its own label. |
25
+ | `label` | `string` | | Names the field. Leave it out inside a FormField, which sets it from its own label. Outside one it is required, and `division-ds check` flags a missing one. |
26
26
  | `value` | `string ('YYYY-MM-DD' \| '')` | | Controlled value (your page holds it). |
27
27
  | `defaultValue` | `string` | `''` | Starting value when the picker holds the value itself. |
28
28
  | `onValueChange` | `(value: string) => void` | | Fires with a whole, real date, or '' when the field is emptied. A half-typed date does not fire. |
@@ -78,7 +78,7 @@ Each is compiled and rendered on the docs page. Imports are omitted; see above.
78
78
  ```tsx
79
79
  <div className="w-full max-w-xs">
80
80
  <FormField label="Trip date" help="Type it, or open the calendar.">
81
- <DatePicker label="Trip date" />
81
+ <DatePicker />
82
82
  </FormField>
83
83
  </div>
84
84
  ```
@@ -13,7 +13,7 @@
13
13
  import { DatePresets, defaultPresets } from 'src/components/molecules/date-presets/DatePresets'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,13 +13,13 @@
13
13
  import { DateRangePicker, EMPTY_RANGE, useDateRangePicker } from 'src/components/molecules/date-range-picker/DateRangePicker'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
20
20
  | Prop | Type | Default | Description |
21
21
  |---|---|---|---|
22
- | `label` | `string` | | Required. Names the field. Inside a FormField, FormField sets it. |
22
+ | `label` | `string` | | Names the field. Leave it out inside a FormField, which sets it from its own label. Outside one it is required, and `division-ds check` flags a missing one. |
23
23
  | `value` | `{ start: string; end: string }` | | Controlled range. Each end is 'YYYY-MM-DD' or ''. |
24
24
  | `defaultValue` | `{ start: string; end: string }` | `{ start: '', end: '' }` | Starting range when the picker holds it itself. |
25
25
  | `onValueChange` | `(range: DateRange) => void` | | Fires when either end changes. Days picked in the calendar always arrive in order. |
@@ -76,7 +76,7 @@ Each is compiled and rendered on the docs page. Imports are omitted; see above.
76
76
  ```tsx
77
77
  <div className="w-full max-w-sm">
78
78
  <FormField label="Report period" help="Pick a preset, or two days.">
79
- <DateRangePicker label="Report period" aside={<DatePresets />} />
79
+ <DateRangePicker aside={<DatePresets />} />
80
80
  </FormField>
81
81
  </div>
82
82
  ```
@@ -13,7 +13,7 @@
13
13
  import { DescriptionList } from 'src/components/molecules/description-list/DescriptionList'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Dialog, DialogClose, DialogContent, DialogFooter, DialogTrigger } from 'src/components/organisms/dialog/Dialog'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Divider } from 'src/components/atoms/divider/Divider'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from 'src/components/molecules/dropdown-menu/DropdownMenu'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { EmptyState } from 'src/components/molecules/empty-state/EmptyState'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Footer } from 'src/components/organisms/footer/Footer'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -15,7 +15,7 @@ import { FormField } from 'src/components/molecules/form-field/FormField'
15
15
  import { ErrorSummary } from 'src/components/molecules/form-field/ErrorSummary'
16
16
  ```
17
17
 
18
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
18
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
19
19
 
20
20
  ## Props
21
21
 
@@ -25,7 +25,7 @@ Paths are from the Division DS repository root. Installed with shadcn they start
25
25
  | `help` | `string` | | Instruction text, read out before any error. |
26
26
  | `error` | `string` | | Sets invalid on the control and adds the error line. |
27
27
  | `required` | `boolean` | `false` | Adds the asterisk (hidden from screen readers) and the built-in required attribute on the control. That attribute is what assistive technology actually announces. |
28
- | `children` | `ReactElement` | | Exactly one control: Input, Textarea, Select or QuantityStepper. A label set on a Select or QuantityStepper child is replaced by the FormField label. An id you give the control is kept (point an ErrorSummary entry at it); without one, FormField makes one up. |
28
+ | `children` | `ReactElement` | | Exactly one control: Input, Textarea, Select, MultiSelect, QuantityStepper, DatePicker, DateRangePicker or TimeField. The controls that name themselves (all but Input and Textarea) take the FormField label, so leave their own label out. An id you give the control is kept (point an ErrorSummary entry at it); without one, FormField makes one up. |
29
29
  | `className` | `string` | | Extra CSS classes, merged with the outer element's own. When two Tailwind classes clash, the later one wins. |
30
30
  | `ref` | `Ref<HTMLDivElement>` | | Passed through to the outer element. |
31
31
  | `errors (ErrorSummary)` | `{ fieldId: string; message: string }[]` | | What stopped the form from submitting, in the order of the fields. Each entry links to its field and moves focus there. An empty list shows nothing. |
@@ -13,7 +13,7 @@
13
13
  import { IconButton } from 'src/components/atoms/icon-button/IconButton'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Input, inputVariants } from 'src/components/atoms/input/Input'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Requires
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { KanbanBoard, applyKanbanMove, groupKanbanItems, kanbanDragOver, kanbanDrop, kanbanMessages, kanbanPosition } from 'src/components/organisms/kanban-board/KanbanBoard'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Requires
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Kbd } from 'src/components/atoms/kbd/Kbd'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Link, linkVariants } from 'src/components/atoms/link/Link'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -14,7 +14,7 @@
14
14
  import { List, ListItem } from 'src/components/molecules/list-item/ListItem'
15
15
  ```
16
16
 
17
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
17
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
18
18
 
19
19
  ## Requires
20
20
 
@@ -13,7 +13,7 @@
13
13
  import { LoadingAnimation } from 'src/components/atoms/loading-animation/LoadingAnimation'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { MultiSelect } from 'src/components/molecules/multi-select/MultiSelect'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Requires
19
19
 
@@ -23,7 +23,7 @@ Paths are from the Division DS repository root. Installed with shadcn they start
23
23
 
24
24
  | Prop | Type | Default | Description |
25
25
  |---|---|---|---|
26
- | `label` | `string` | | Required. The name screen readers give the text field and the list. FormField replaces it with its own label. |
26
+ | `label` | `string` | | The name screen readers give the text field and the list. Leave it out inside a FormField, which sets it from its own label. Outside one it is required, and `division-ds check` flags a missing one. |
27
27
  | `options` | `SelectOption[]` | | { value, label, disabled? }, the same rows Select takes. |
28
28
  | `value` | `string[]` | | The current selection when the page keeps track of it (controlled), as option values in the order they were chosen. |
29
29
  | `defaultValue` | `string[]` | | The starting selection when the component keeps track itself (uncontrolled). |
@@ -60,7 +60,7 @@ const LOADOUT = [
60
60
 
61
61
  <div className="w-full max-w-md">
62
62
  <FormField label="Loadout">
63
- <MultiSelect label="Loadout" options={LOADOUT} placeholder="Choose your kit…" />
63
+ <MultiSelect options={LOADOUT} placeholder="Choose your kit…" />
64
64
  </FormField>
65
65
  </div>
66
66
  ```
@@ -84,7 +84,7 @@ function ControlledExample() {
84
84
  return (
85
85
  <div className="flex flex-col gap-2 w-full max-w-md">
86
86
  <FormField label="Loadout" help="Remove a tag and watch the others close the gap.">
87
- <MultiSelect label="Loadout" options={LOADOUT} value={kit} onValueChange={setKit} />
87
+ <MultiSelect options={LOADOUT} value={kit} onValueChange={setKit} />
88
88
  </FormField>
89
89
  <span className="font-mono text-xs text-[var(--color-text-secondary)]">value: [{kit.join(', ')}]</span>
90
90
  </div>
@@ -110,7 +110,7 @@ const LOADOUT = [
110
110
 
111
111
  <div className="w-full max-w-md">
112
112
  <FormField label="Loadout" error="Pick eye protection.">
113
- <MultiSelect label="Loadout" options={LOADOUT} defaultValue={['mags']} />
113
+ <MultiSelect options={LOADOUT} defaultValue={['mags']} />
114
114
  </FormField>
115
115
  </div>
116
116
  ```
@@ -13,7 +13,7 @@
13
13
  import { Navbar } from 'src/components/organisms/navbar/Navbar'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { NewsletterForm } from 'src/components/organisms/newsletter-form/NewsletterForm'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { PageHeader } from 'src/components/molecules/page-header/PageHeader'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { Pagination, paginationRange } from 'src/components/molecules/pagination/Pagination'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -14,7 +14,7 @@
14
14
  import { ProductCard, ProductGrid } from 'src/components/organisms/product-card/ProductCard'
15
15
  ```
16
16
 
17
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
17
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
18
18
 
19
19
  ## Props
20
20
 
@@ -13,7 +13,7 @@
13
13
  import { Progress } from 'src/components/atoms/progress/Progress'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
@@ -13,7 +13,7 @@
13
13
  import { PromptInput } from 'src/components/molecules/prompt-input/PromptInput'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Requires
19
19
 
@@ -13,13 +13,13 @@
13
13
  import { QuantityStepper, clampQuantity, gridMax } from 'src/components/molecules/quantity-stepper/QuantityStepper'
14
14
  ```
15
15
 
16
- Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file.
16
+ Paths are from the Division DS repository root. Installed with shadcn they start `src/division-ds/` instead of `src/` (`src/division-ds/components/...`); import them relative to your file. An install has no index barrels: import each component from its own file, never from `components/molecules`.
17
17
 
18
18
  ## Props
19
19
 
20
20
  | Prop | Type | Default | Description |
21
21
  |---|---|---|---|
22
- | `label` | `string` | | Required. Names the field and both buttons ("Decrease Speed loader quantity"). |
22
+ | `label` | `string` | | Names the field and both buttons ("Decrease Speed loader quantity"). Leave it out inside a FormField, which sets it from its own label. Outside one it is required, and `division-ds check` flags a missing one. |
23
23
  | `value` | `number` | | Controlled value (your page holds it). |
24
24
  | `defaultValue` | `number` | `min` | Starting value when the component holds the value itself (uncontrolled). |
25
25
  | `onValueChange` | `(value: number) => void` | | Fires with the final value, pulled inside the limits: after a button click, an arrow key, Home/End, or when typing is finished by leaving the field or pressing Enter. |