@sixthshift/design-system 0.3.0 → 0.5.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 (518) hide show
  1. package/README.md +116 -12
  2. package/dist/components/Badge/Badge.d.ts +64 -9
  3. package/dist/components/Badge/Badge.d.ts.map +1 -1
  4. package/dist/components/Badge/Badge.js +54 -46
  5. package/dist/components/Badge/Badge.js.map +1 -1
  6. package/dist/components/Badge/index.d.ts +1 -1
  7. package/dist/components/Badge/index.d.ts.map +1 -1
  8. package/dist/components/Badge/index.js +1 -1
  9. package/dist/components/Badge/index.js.map +1 -1
  10. package/dist/components/BarChart/BarChart.d.ts +12 -0
  11. package/dist/components/BarChart/BarChart.d.ts.map +1 -1
  12. package/dist/components/BarChart/BarChart.js +12 -0
  13. package/dist/components/BarChart/BarChart.js.map +1 -1
  14. package/dist/components/Button/Button.d.ts +85 -6
  15. package/dist/components/Button/Button.d.ts.map +1 -1
  16. package/dist/components/Button/Button.js +97 -106
  17. package/dist/components/Button/Button.js.map +1 -1
  18. package/dist/components/Button/index.d.ts +1 -1
  19. package/dist/components/Button/index.d.ts.map +1 -1
  20. package/dist/components/Button/index.js +1 -1
  21. package/dist/components/Button/index.js.map +1 -1
  22. package/dist/components/Calendar/Calendar.d.ts +18 -4
  23. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  24. package/dist/components/Calendar/Calendar.js +19 -5
  25. package/dist/components/Calendar/Calendar.js.map +1 -1
  26. package/dist/components/Calendar/CalendarView.d.ts.map +1 -1
  27. package/dist/components/Calendar/CalendarView.js +10 -2
  28. package/dist/components/Calendar/CalendarView.js.map +1 -1
  29. package/dist/components/Calendar/calendar.types.d.ts +9 -0
  30. package/dist/components/Calendar/calendar.types.d.ts.map +1 -1
  31. package/dist/components/Card/Card.d.ts +61 -2
  32. package/dist/components/Card/Card.d.ts.map +1 -1
  33. package/dist/components/Card/Card.js +99 -3
  34. package/dist/components/Card/Card.js.map +1 -1
  35. package/dist/components/Card/index.d.ts +1 -1
  36. package/dist/components/Card/index.d.ts.map +1 -1
  37. package/dist/components/Card/index.js +1 -1
  38. package/dist/components/Card/index.js.map +1 -1
  39. package/dist/components/Checkbox/Checkbox.d.ts +21 -0
  40. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
  41. package/dist/components/Checkbox/Checkbox.js +22 -1
  42. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  43. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +22 -0
  44. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
  45. package/dist/components/CheckboxGroup/CheckboxGroup.js +22 -0
  46. package/dist/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
  47. package/dist/components/Code/Editor/Editor.js +2 -2
  48. package/dist/components/Code/Editor/Editor.js.map +1 -1
  49. package/dist/components/Code/Editor/themes.d.ts +2 -2
  50. package/dist/components/Code/Editor/themes.d.ts.map +1 -1
  51. package/dist/components/Code/Editor/themes.js +50 -32
  52. package/dist/components/Code/Editor/themes.js.map +1 -1
  53. package/dist/components/Code/ValidationStatus/ValidationStatus.d.ts.map +1 -1
  54. package/dist/components/Code/ValidationStatus/ValidationStatus.js.map +1 -1
  55. package/dist/components/DatePicker/DatePicker.d.ts +43 -0
  56. package/dist/components/DatePicker/DatePicker.d.ts.map +1 -1
  57. package/dist/components/DatePicker/DatePicker.js +166 -4
  58. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  59. package/dist/components/DatePicker/DateSegments.d.ts +60 -0
  60. package/dist/components/DatePicker/DateSegments.d.ts.map +1 -0
  61. package/dist/components/DatePicker/DateSegments.js +80 -0
  62. package/dist/components/DatePicker/DateSegments.js.map +1 -0
  63. package/dist/components/DatePicker/datepicker.types.d.ts +19 -1
  64. package/dist/components/DatePicker/datepicker.types.d.ts.map +1 -1
  65. package/dist/components/DatePicker/index.d.ts +1 -1
  66. package/dist/components/DatePicker/index.d.ts.map +1 -1
  67. package/dist/components/DateRangePicker/DateRangePicker.d.ts +20 -2
  68. package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  69. package/dist/components/DateRangePicker/DateRangePicker.js +22 -4
  70. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
  71. package/dist/components/DateRangePicker/daterangepicker.types.d.ts +6 -1
  72. package/dist/components/DateRangePicker/daterangepicker.types.d.ts.map +1 -1
  73. package/dist/components/DateTimePicker/DateTimePicker.d.ts +30 -2
  74. package/dist/components/DateTimePicker/DateTimePicker.d.ts.map +1 -1
  75. package/dist/components/DateTimePicker/DateTimePicker.js +105 -32
  76. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  77. package/dist/components/DateTimePicker/DateTimeSegments.d.ts +41 -0
  78. package/dist/components/DateTimePicker/DateTimeSegments.d.ts.map +1 -0
  79. package/dist/components/DateTimePicker/DateTimeSegments.js +67 -0
  80. package/dist/components/DateTimePicker/DateTimeSegments.js.map +1 -0
  81. package/dist/components/DateTimePicker/datetimepicker.types.d.ts +6 -1
  82. package/dist/components/DateTimePicker/datetimepicker.types.d.ts.map +1 -1
  83. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts +28 -2
  84. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
  85. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js +136 -58
  86. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js.map +1 -1
  87. package/dist/components/DateTimeRangePicker/datetimerangepicker.types.d.ts +6 -1
  88. package/dist/components/DateTimeRangePicker/datetimerangepicker.types.d.ts.map +1 -1
  89. package/dist/components/Field/Field.d.ts +15 -17
  90. package/dist/components/Field/Field.d.ts.map +1 -1
  91. package/dist/components/Field/Field.js +18 -3
  92. package/dist/components/Field/Field.js.map +1 -1
  93. package/dist/components/FormField/FormField.d.ts +15 -0
  94. package/dist/components/FormField/FormField.d.ts.map +1 -1
  95. package/dist/components/FormField/FormField.js +15 -0
  96. package/dist/components/FormField/FormField.js.map +1 -1
  97. package/dist/components/HoverCard/HoverCard.d.ts +6 -0
  98. package/dist/components/HoverCard/HoverCard.d.ts.map +1 -1
  99. package/dist/components/HoverCard/HoverCard.js +6 -0
  100. package/dist/components/HoverCard/HoverCard.js.map +1 -1
  101. package/dist/components/Input/Input.d.ts +15 -0
  102. package/dist/components/Input/Input.d.ts.map +1 -1
  103. package/dist/components/Input/Input.js +18 -3
  104. package/dist/components/Input/Input.js.map +1 -1
  105. package/dist/components/LineChart/LineChart.d.ts +17 -0
  106. package/dist/components/LineChart/LineChart.d.ts.map +1 -1
  107. package/dist/components/LineChart/LineChart.js +17 -0
  108. package/dist/components/LineChart/LineChart.js.map +1 -1
  109. package/dist/components/Markdown/Markdown.d.ts +17 -0
  110. package/dist/components/Markdown/Markdown.d.ts.map +1 -1
  111. package/dist/components/Markdown/Markdown.js +17 -0
  112. package/dist/components/Markdown/Markdown.js.map +1 -1
  113. package/dist/components/Message/Message.d.ts +49 -4
  114. package/dist/components/Message/Message.d.ts.map +1 -1
  115. package/dist/components/Message/Message.js +53 -17
  116. package/dist/components/Message/Message.js.map +1 -1
  117. package/dist/components/Message/index.d.ts +1 -1
  118. package/dist/components/Message/index.d.ts.map +1 -1
  119. package/dist/components/Modal/Modal.d.ts +36 -0
  120. package/dist/components/Modal/Modal.d.ts.map +1 -1
  121. package/dist/components/Modal/Modal.js +37 -1
  122. package/dist/components/Modal/Modal.js.map +1 -1
  123. package/dist/components/Modal/components/ModalHeader.js +1 -1
  124. package/dist/components/Modal/components/ModalHeader.js.map +1 -1
  125. package/dist/components/Popover/Popover.d.ts +29 -0
  126. package/dist/components/Popover/Popover.d.ts.map +1 -1
  127. package/dist/components/Popover/Popover.js +29 -0
  128. package/dist/components/Popover/Popover.js.map +1 -1
  129. package/dist/components/ProgressBar/ProgressBar.d.ts +14 -0
  130. package/dist/components/ProgressBar/ProgressBar.d.ts.map +1 -1
  131. package/dist/components/ProgressBar/ProgressBar.js +14 -0
  132. package/dist/components/ProgressBar/ProgressBar.js.map +1 -1
  133. package/dist/components/RadioButton/RadioButton.d.ts +26 -0
  134. package/dist/components/RadioButton/RadioButton.d.ts.map +1 -1
  135. package/dist/components/RadioButton/RadioButton.js +35 -1
  136. package/dist/components/RadioButton/RadioButton.js.map +1 -1
  137. package/dist/components/RadioButtonGroup/RadioButtonGroup.d.ts +26 -0
  138. package/dist/components/RadioButtonGroup/RadioButtonGroup.d.ts.map +1 -1
  139. package/dist/components/RadioButtonGroup/RadioButtonGroup.js +33 -0
  140. package/dist/components/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  141. package/dist/components/SearchInput/SearchInput.d.ts +10 -0
  142. package/dist/components/SearchInput/SearchInput.d.ts.map +1 -1
  143. package/dist/components/SearchInput/SearchInput.js +12 -1
  144. package/dist/components/SearchInput/SearchInput.js.map +1 -1
  145. package/dist/components/Select/Select.d.ts +4 -5
  146. package/dist/components/Select/Select.d.ts.map +1 -1
  147. package/dist/components/Select/Select.js +4 -5
  148. package/dist/components/Select/Select.js.map +1 -1
  149. package/dist/components/Select/SelectDropdown.d.ts.map +1 -1
  150. package/dist/components/Select/SelectDropdown.js +4 -3
  151. package/dist/components/Select/SelectDropdown.js.map +1 -1
  152. package/dist/components/Select/SelectTrigger.js +2 -2
  153. package/dist/components/Select/SelectTrigger.js.map +1 -1
  154. package/dist/components/Separator/Separator.d.ts +10 -0
  155. package/dist/components/Separator/Separator.d.ts.map +1 -1
  156. package/dist/components/Separator/Separator.js +10 -0
  157. package/dist/components/Separator/Separator.js.map +1 -1
  158. package/dist/components/Sheet/Sheet.d.ts +6 -0
  159. package/dist/components/Sheet/Sheet.d.ts.map +1 -1
  160. package/dist/components/Sheet/Sheet.js +7 -1
  161. package/dist/components/Sheet/Sheet.js.map +1 -1
  162. package/dist/components/Sheet/components/SheetFooter.js +1 -1
  163. package/dist/components/Sheet/components/SheetFooter.js.map +1 -1
  164. package/dist/components/Sheet/components/SheetHeader.js +1 -1
  165. package/dist/components/Sheet/components/SheetHeader.js.map +1 -1
  166. package/dist/components/Sparkline/Sparkline.d.ts +11 -0
  167. package/dist/components/Sparkline/Sparkline.d.ts.map +1 -1
  168. package/dist/components/Sparkline/Sparkline.js +11 -0
  169. package/dist/components/Sparkline/Sparkline.js.map +1 -1
  170. package/dist/components/Spinner/Spinner.d.ts +27 -2
  171. package/dist/components/Spinner/Spinner.d.ts.map +1 -1
  172. package/dist/components/Spinner/Spinner.js +28 -3
  173. package/dist/components/Spinner/Spinner.js.map +1 -1
  174. package/dist/components/Switch/Switch.d.ts +18 -0
  175. package/dist/components/Switch/Switch.d.ts.map +1 -1
  176. package/dist/components/Switch/Switch.js +19 -1
  177. package/dist/components/Switch/Switch.js.map +1 -1
  178. package/dist/components/Tabs/Tabs.d.ts +6 -0
  179. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  180. package/dist/components/Tabs/Tabs.js +6 -0
  181. package/dist/components/Tabs/Tabs.js.map +1 -1
  182. package/dist/components/Tabs/components/TabsTrigger.d.ts.map +1 -1
  183. package/dist/components/Tabs/components/TabsTrigger.js +22 -6
  184. package/dist/components/Tabs/components/TabsTrigger.js.map +1 -1
  185. package/dist/components/TagChip/TagChip.d.ts +14 -12
  186. package/dist/components/TagChip/TagChip.d.ts.map +1 -1
  187. package/dist/components/TagChip/TagChip.js +14 -1
  188. package/dist/components/TagChip/TagChip.js.map +1 -1
  189. package/dist/components/TagInput/TagInput.d.ts +11 -8
  190. package/dist/components/TagInput/TagInput.d.ts.map +1 -1
  191. package/dist/components/TagInput/TagInput.js +11 -0
  192. package/dist/components/TagInput/TagInput.js.map +1 -1
  193. package/dist/components/Text/Text.d.ts +9 -0
  194. package/dist/components/Text/Text.d.ts.map +1 -1
  195. package/dist/components/Text/Text.js +9 -0
  196. package/dist/components/Text/Text.js.map +1 -1
  197. package/dist/components/TextInline/TextInline.d.ts +15 -4
  198. package/dist/components/TextInline/TextInline.d.ts.map +1 -1
  199. package/dist/components/TextInline/TextInline.js +11 -0
  200. package/dist/components/TextInline/TextInline.js.map +1 -1
  201. package/dist/components/Textarea/Textarea.d.ts +12 -0
  202. package/dist/components/Textarea/Textarea.d.ts.map +1 -1
  203. package/dist/components/Textarea/Textarea.js +13 -1
  204. package/dist/components/Textarea/Textarea.js.map +1 -1
  205. package/dist/components/TimePicker/TimeColumn.d.ts +10 -1
  206. package/dist/components/TimePicker/TimeColumn.d.ts.map +1 -1
  207. package/dist/components/TimePicker/TimeColumn.js +8 -1
  208. package/dist/components/TimePicker/TimeColumn.js.map +1 -1
  209. package/dist/components/TimePicker/TimePicker.d.ts +32 -0
  210. package/dist/components/TimePicker/TimePicker.d.ts.map +1 -1
  211. package/dist/components/TimePicker/TimePicker.js +93 -6
  212. package/dist/components/TimePicker/TimePicker.js.map +1 -1
  213. package/dist/components/TimePicker/TimeSegments.d.ts +50 -0
  214. package/dist/components/TimePicker/TimeSegments.d.ts.map +1 -0
  215. package/dist/components/TimePicker/TimeSegments.js +93 -0
  216. package/dist/components/TimePicker/TimeSegments.js.map +1 -0
  217. package/dist/components/TimePicker/timepicker.hooks.d.ts +0 -4
  218. package/dist/components/TimePicker/timepicker.hooks.d.ts.map +1 -1
  219. package/dist/components/TimePicker/timepicker.hooks.js +1 -23
  220. package/dist/components/TimePicker/timepicker.hooks.js.map +1 -1
  221. package/dist/components/TimePicker/timepicker.types.d.ts +0 -2
  222. package/dist/components/TimePicker/timepicker.types.d.ts.map +1 -1
  223. package/dist/components/Toast/Toast.d.ts +27 -0
  224. package/dist/components/Toast/Toast.d.ts.map +1 -1
  225. package/dist/components/Toast/Toast.js +28 -1
  226. package/dist/components/Toast/Toast.js.map +1 -1
  227. package/dist/components/Toggle/Toggle.d.ts +31 -12
  228. package/dist/components/Toggle/Toggle.d.ts.map +1 -1
  229. package/dist/components/Toggle/Toggle.js +19 -31
  230. package/dist/components/Toggle/Toggle.js.map +1 -1
  231. package/dist/components/Toggle/index.d.ts +1 -1
  232. package/dist/components/Toggle/index.d.ts.map +1 -1
  233. package/dist/components/Toggle/index.js +1 -1
  234. package/dist/components/Toggle/index.js.map +1 -1
  235. package/dist/components/ToggleGroup/ToggleGroup.d.ts +17 -0
  236. package/dist/components/ToggleGroup/ToggleGroup.d.ts.map +1 -1
  237. package/dist/components/ToggleGroup/ToggleGroup.js +17 -0
  238. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  239. package/dist/components/ToggleGroup/ToggleGroupItem.d.ts +1 -1
  240. package/dist/components/ToggleGroup/ToggleGroupItem.d.ts.map +1 -1
  241. package/dist/components/ToggleGroup/ToggleGroupItem.js +7 -6
  242. package/dist/components/ToggleGroup/ToggleGroupItem.js.map +1 -1
  243. package/dist/components/ToggleGroup/ToggleGroupMultiple.d.ts +4 -3
  244. package/dist/components/ToggleGroup/ToggleGroupMultiple.d.ts.map +1 -1
  245. package/dist/components/ToggleGroup/ToggleGroupMultiple.js +2 -2
  246. package/dist/components/ToggleGroup/ToggleGroupMultiple.js.map +1 -1
  247. package/dist/components/ToggleGroup/ToggleGroupSingle.d.ts +4 -3
  248. package/dist/components/ToggleGroup/ToggleGroupSingle.d.ts.map +1 -1
  249. package/dist/components/ToggleGroup/ToggleGroupSingle.js +2 -2
  250. package/dist/components/ToggleGroup/ToggleGroupSingle.js.map +1 -1
  251. package/dist/components/ToggleGroup/toggleGroup.types.d.ts +12 -3
  252. package/dist/components/ToggleGroup/toggleGroup.types.d.ts.map +1 -1
  253. package/dist/components/Tooltip/Tooltip.d.ts +6 -0
  254. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  255. package/dist/components/Tooltip/Tooltip.js +6 -0
  256. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  257. package/dist/date-time/index.d.ts.map +1 -1
  258. package/dist/date-time/index.js +0 -1
  259. package/dist/date-time/index.js.map +1 -1
  260. package/dist/internal/PickerField.d.ts +45 -0
  261. package/dist/internal/PickerField.d.ts.map +1 -0
  262. package/dist/internal/PickerField.js +24 -0
  263. package/dist/internal/PickerField.js.map +1 -0
  264. package/dist/internal/SegmentedField.d.ts +98 -0
  265. package/dist/internal/SegmentedField.d.ts.map +1 -0
  266. package/dist/internal/SegmentedField.js +315 -0
  267. package/dist/internal/SegmentedField.js.map +1 -0
  268. package/dist/internal/index.d.ts +2 -0
  269. package/dist/internal/index.d.ts.map +1 -1
  270. package/dist/internal/index.js +2 -0
  271. package/dist/internal/index.js.map +1 -1
  272. package/dist/lib/contexts/OverlayContext/OverlayContext.d.ts +2 -2
  273. package/dist/lib/contexts/OverlayContext/OverlayContext.d.ts.map +1 -1
  274. package/dist/lib/contexts/OverlayContext/OverlayContext.js +17 -6
  275. package/dist/lib/contexts/OverlayContext/OverlayContext.js.map +1 -1
  276. package/dist/theme/index.d.ts +2 -2
  277. package/dist/theme/index.d.ts.map +1 -1
  278. package/dist/theme/index.js +1 -1
  279. package/dist/theme/index.js.map +1 -1
  280. package/dist/theme/schema.d.ts +0 -22
  281. package/dist/theme/schema.d.ts.map +1 -1
  282. package/dist/theme/schema.js +0 -9
  283. package/dist/theme/schema.js.map +1 -1
  284. package/package.json +7 -48
  285. package/src/components/Badge/Badge.tsx +85 -48
  286. package/src/components/Badge/index.ts +10 -1
  287. package/src/components/BarChart/BarChart.tsx +12 -0
  288. package/src/components/Button/Button.tsx +129 -106
  289. package/src/components/Button/index.ts +10 -1
  290. package/src/components/Calendar/Calendar.tsx +29 -16
  291. package/src/components/Calendar/CalendarView.tsx +10 -1
  292. package/src/components/Calendar/calendar.types.ts +10 -0
  293. package/src/components/Card/Card.tsx +114 -15
  294. package/src/components/Card/index.ts +1 -1
  295. package/src/components/Checkbox/Checkbox.tsx +22 -2
  296. package/src/components/CheckboxGroup/CheckboxGroup.tsx +22 -0
  297. package/src/components/Code/Editor/Editor.tsx +2 -2
  298. package/src/components/Code/Editor/themes.ts +50 -32
  299. package/src/components/Code/ValidationStatus/ValidationStatus.tsx +6 -3
  300. package/src/components/DatePicker/DatePicker.tsx +279 -28
  301. package/src/components/DatePicker/DateSegments.tsx +125 -0
  302. package/src/components/DatePicker/datepicker.types.ts +21 -1
  303. package/src/components/DatePicker/index.ts +8 -1
  304. package/src/components/DateRangePicker/DateRangePicker.tsx +22 -4
  305. package/src/components/DateRangePicker/daterangepicker.types.ts +7 -1
  306. package/src/components/DateTimePicker/DateTimePicker.tsx +143 -70
  307. package/src/components/DateTimePicker/DateTimeSegments.tsx +113 -0
  308. package/src/components/DateTimePicker/datetimepicker.types.ts +7 -1
  309. package/src/components/DateTimeRangePicker/DateTimeRangePicker.tsx +195 -104
  310. package/src/components/DateTimeRangePicker/datetimerangepicker.types.ts +7 -1
  311. package/src/components/Field/Field.tsx +20 -22
  312. package/src/components/FormField/FormField.tsx +15 -0
  313. package/src/components/HoverCard/HoverCard.tsx +6 -0
  314. package/src/components/Input/Input.tsx +19 -4
  315. package/src/components/LineChart/LineChart.tsx +17 -0
  316. package/src/components/Markdown/Markdown.tsx +17 -0
  317. package/src/components/Message/Message.tsx +73 -23
  318. package/src/components/Message/index.ts +1 -1
  319. package/src/components/Modal/Modal.tsx +42 -3
  320. package/src/components/Modal/components/ModalHeader.tsx +1 -1
  321. package/src/components/Popover/Popover.tsx +29 -0
  322. package/src/components/ProgressBar/ProgressBar.tsx +14 -0
  323. package/src/components/RadioButton/RadioButton.tsx +34 -3
  324. package/src/components/RadioButtonGroup/RadioButtonGroup.tsx +32 -0
  325. package/src/components/SearchInput/SearchInput.tsx +13 -2
  326. package/src/components/Select/Select.tsx +4 -5
  327. package/src/components/Select/SelectDropdown.tsx +13 -9
  328. package/src/components/Select/SelectTrigger.tsx +7 -7
  329. package/src/components/Separator/Separator.tsx +10 -0
  330. package/src/components/Sheet/Sheet.tsx +8 -2
  331. package/src/components/Sheet/components/SheetFooter.tsx +1 -1
  332. package/src/components/Sheet/components/SheetHeader.tsx +2 -2
  333. package/src/components/Sparkline/Sparkline.tsx +11 -0
  334. package/src/components/Spinner/Spinner.tsx +28 -3
  335. package/src/components/Switch/Switch.tsx +27 -4
  336. package/src/components/Tabs/Tabs.tsx +6 -0
  337. package/src/components/Tabs/components/TabsTrigger.tsx +22 -5
  338. package/src/components/TagChip/TagChip.tsx +18 -16
  339. package/src/components/TagInput/TagInput.tsx +11 -8
  340. package/src/components/Text/Text.tsx +9 -0
  341. package/src/components/TextInline/TextInline.tsx +11 -0
  342. package/src/components/Textarea/Textarea.tsx +13 -1
  343. package/src/components/TimePicker/TimeColumn.tsx +24 -1
  344. package/src/components/TimePicker/TimePicker.tsx +127 -39
  345. package/src/components/TimePicker/TimeSegments.tsx +131 -0
  346. package/src/components/TimePicker/timepicker.hooks.ts +1 -24
  347. package/src/components/TimePicker/timepicker.types.ts +0 -3
  348. package/src/components/Toast/Toast.tsx +28 -1
  349. package/src/components/Toggle/Toggle.tsx +34 -32
  350. package/src/components/Toggle/index.ts +1 -1
  351. package/src/components/ToggleGroup/ToggleGroup.tsx +17 -0
  352. package/src/components/ToggleGroup/ToggleGroupItem.tsx +13 -8
  353. package/src/components/ToggleGroup/ToggleGroupMultiple.tsx +3 -1
  354. package/src/components/ToggleGroup/ToggleGroupSingle.tsx +3 -1
  355. package/src/components/ToggleGroup/toggleGroup.types.ts +12 -3
  356. package/src/components/Tooltip/Tooltip.tsx +6 -0
  357. package/src/date-time/index.ts +0 -1
  358. package/src/internal/PickerField.tsx +90 -0
  359. package/src/internal/SegmentedField.tsx +445 -0
  360. package/src/internal/index.ts +2 -0
  361. package/src/lib/contexts/OverlayContext/OverlayContext.tsx +21 -10
  362. package/src/theme/index.ts +0 -6
  363. package/src/theme/recipes/badge.css +140 -0
  364. package/src/theme/recipes/button.css +167 -0
  365. package/src/theme/recipes/card.css +31 -0
  366. package/src/theme/recipes/checkbox.css +44 -0
  367. package/src/theme/recipes/field.css +14 -0
  368. package/src/theme/recipes/index.css +28 -0
  369. package/src/theme/recipes/input.css +29 -0
  370. package/src/theme/recipes/message.css +47 -0
  371. package/src/theme/recipes/modal.css +31 -0
  372. package/src/theme/recipes/radio-button.css +42 -0
  373. package/src/theme/recipes/search-input.css +16 -0
  374. package/src/theme/recipes/select.css +105 -0
  375. package/src/theme/recipes/sheet.css +34 -0
  376. package/src/theme/recipes/spinner.css +17 -0
  377. package/src/theme/recipes/switch.css +39 -0
  378. package/src/theme/recipes/tabs.css +41 -0
  379. package/src/theme/recipes/tag-chip.css +27 -0
  380. package/src/theme/recipes/textarea.css +20 -0
  381. package/src/theme/recipes/toggle.css +92 -0
  382. package/src/theme/schema.ts +0 -27
  383. package/src/theme/tokens.css +26 -9
  384. package/dist/components/Avatar/Avatar.d.ts +0 -6
  385. package/dist/components/Avatar/Avatar.d.ts.map +0 -1
  386. package/dist/components/Avatar/Avatar.js +0 -11
  387. package/dist/components/Avatar/Avatar.js.map +0 -1
  388. package/dist/components/Avatar/index.d.ts +0 -2
  389. package/dist/components/Avatar/index.d.ts.map +0 -1
  390. package/dist/components/Avatar/index.js +0 -2
  391. package/dist/components/Avatar/index.js.map +0 -1
  392. package/dist/components/Breadcrumb/Breadcrumb.d.ts +0 -12
  393. package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +0 -1
  394. package/dist/components/Breadcrumb/Breadcrumb.js +0 -19
  395. package/dist/components/Breadcrumb/Breadcrumb.js.map +0 -1
  396. package/dist/components/Breadcrumb/index.d.ts +0 -2
  397. package/dist/components/Breadcrumb/index.d.ts.map +0 -1
  398. package/dist/components/Breadcrumb/index.js +0 -2
  399. package/dist/components/Breadcrumb/index.js.map +0 -1
  400. package/dist/components/ColorDot/ColorDot.d.ts +0 -19
  401. package/dist/components/ColorDot/ColorDot.d.ts.map +0 -1
  402. package/dist/components/ColorDot/ColorDot.js +0 -36
  403. package/dist/components/ColorDot/ColorDot.js.map +0 -1
  404. package/dist/components/ColorDot/index.d.ts +0 -2
  405. package/dist/components/ColorDot/index.d.ts.map +0 -1
  406. package/dist/components/ColorDot/index.js +0 -2
  407. package/dist/components/ColorDot/index.js.map +0 -1
  408. package/dist/components/EmptyState/EmptyState.d.ts +0 -26
  409. package/dist/components/EmptyState/EmptyState.d.ts.map +0 -1
  410. package/dist/components/EmptyState/EmptyState.js +0 -9
  411. package/dist/components/EmptyState/EmptyState.js.map +0 -1
  412. package/dist/components/EmptyState/index.d.ts +0 -2
  413. package/dist/components/EmptyState/index.d.ts.map +0 -1
  414. package/dist/components/EmptyState/index.js +0 -2
  415. package/dist/components/EmptyState/index.js.map +0 -1
  416. package/dist/components/HeatMap/HeatMapCalendar.d.ts +0 -11
  417. package/dist/components/HeatMap/HeatMapCalendar.d.ts.map +0 -1
  418. package/dist/components/HeatMap/HeatMapCalendar.js +0 -68
  419. package/dist/components/HeatMap/HeatMapCalendar.js.map +0 -1
  420. package/dist/components/HeatMap/HeatMapMatrix.d.ts +0 -12
  421. package/dist/components/HeatMap/HeatMapMatrix.d.ts.map +0 -1
  422. package/dist/components/HeatMap/HeatMapMatrix.js +0 -35
  423. package/dist/components/HeatMap/HeatMapMatrix.js.map +0 -1
  424. package/dist/components/HeatMap/heat-map.utils.d.ts +0 -10
  425. package/dist/components/HeatMap/heat-map.utils.d.ts.map +0 -1
  426. package/dist/components/HeatMap/heat-map.utils.js +0 -10
  427. package/dist/components/HeatMap/heat-map.utils.js.map +0 -1
  428. package/dist/components/HeatMap/index.d.ts +0 -4
  429. package/dist/components/HeatMap/index.d.ts.map +0 -1
  430. package/dist/components/HeatMap/index.js +0 -3
  431. package/dist/components/HeatMap/index.js.map +0 -1
  432. package/dist/components/MetricList/MetricList.d.ts +0 -9
  433. package/dist/components/MetricList/MetricList.d.ts.map +0 -1
  434. package/dist/components/MetricList/MetricList.js +0 -8
  435. package/dist/components/MetricList/MetricList.js.map +0 -1
  436. package/dist/components/MetricList/MetricRow.d.ts +0 -13
  437. package/dist/components/MetricList/MetricRow.d.ts.map +0 -1
  438. package/dist/components/MetricList/MetricRow.js +0 -13
  439. package/dist/components/MetricList/MetricRow.js.map +0 -1
  440. package/dist/components/MetricList/index.d.ts +0 -3
  441. package/dist/components/MetricList/index.d.ts.map +0 -1
  442. package/dist/components/MetricList/index.js +0 -3
  443. package/dist/components/MetricList/index.js.map +0 -1
  444. package/dist/components/NavBottom/NavBottom.d.ts +0 -16
  445. package/dist/components/NavBottom/NavBottom.d.ts.map +0 -1
  446. package/dist/components/NavBottom/NavBottom.js +0 -21
  447. package/dist/components/NavBottom/NavBottom.js.map +0 -1
  448. package/dist/components/NavBottom/index.d.ts +0 -3
  449. package/dist/components/NavBottom/index.d.ts.map +0 -1
  450. package/dist/components/NavBottom/index.js +0 -2
  451. package/dist/components/NavBottom/index.js.map +0 -1
  452. package/dist/components/NavSide/NavItem.d.ts +0 -9
  453. package/dist/components/NavSide/NavItem.d.ts.map +0 -1
  454. package/dist/components/NavSide/NavItem.js +0 -13
  455. package/dist/components/NavSide/NavItem.js.map +0 -1
  456. package/dist/components/NavSide/NavSide.d.ts +0 -16
  457. package/dist/components/NavSide/NavSide.d.ts.map +0 -1
  458. package/dist/components/NavSide/NavSide.js +0 -12
  459. package/dist/components/NavSide/NavSide.js.map +0 -1
  460. package/dist/components/NavSide/index.d.ts +0 -3
  461. package/dist/components/NavSide/index.d.ts.map +0 -1
  462. package/dist/components/NavSide/index.js +0 -2
  463. package/dist/components/NavSide/index.js.map +0 -1
  464. package/dist/components/NavSide/types.d.ts +0 -38
  465. package/dist/components/NavSide/types.d.ts.map +0 -1
  466. package/dist/components/NavSide/types.js +0 -2
  467. package/dist/components/NavSide/types.js.map +0 -1
  468. package/dist/components/Pagination/Pagination.d.ts +0 -35
  469. package/dist/components/Pagination/Pagination.d.ts.map +0 -1
  470. package/dist/components/Pagination/Pagination.js +0 -26
  471. package/dist/components/Pagination/Pagination.js.map +0 -1
  472. package/dist/components/Pagination/index.d.ts +0 -3
  473. package/dist/components/Pagination/index.d.ts.map +0 -1
  474. package/dist/components/Pagination/index.js +0 -2
  475. package/dist/components/Pagination/index.js.map +0 -1
  476. package/dist/components/Skeleton/Skeleton.d.ts +0 -4
  477. package/dist/components/Skeleton/Skeleton.d.ts.map +0 -1
  478. package/dist/components/Skeleton/Skeleton.js +0 -9
  479. package/dist/components/Skeleton/Skeleton.js.map +0 -1
  480. package/dist/components/Skeleton/index.d.ts +0 -2
  481. package/dist/components/Skeleton/index.d.ts.map +0 -1
  482. package/dist/components/Skeleton/index.js +0 -2
  483. package/dist/components/Skeleton/index.js.map +0 -1
  484. package/dist/components/StatsCard/StatsCard.d.ts +0 -17
  485. package/dist/components/StatsCard/StatsCard.d.ts.map +0 -1
  486. package/dist/components/StatsCard/StatsCard.js +0 -15
  487. package/dist/components/StatsCard/StatsCard.js.map +0 -1
  488. package/dist/components/StatsCard/index.d.ts +0 -2
  489. package/dist/components/StatsCard/index.d.ts.map +0 -1
  490. package/dist/components/StatsCard/index.js +0 -2
  491. package/dist/components/StatsCard/index.js.map +0 -1
  492. package/src/components/Avatar/Avatar.tsx +0 -19
  493. package/src/components/Avatar/index.ts +0 -1
  494. package/src/components/Breadcrumb/Breadcrumb.tsx +0 -47
  495. package/src/components/Breadcrumb/index.ts +0 -5
  496. package/src/components/ColorDot/ColorDot.tsx +0 -52
  497. package/src/components/ColorDot/index.ts +0 -1
  498. package/src/components/EmptyState/EmptyState.tsx +0 -30
  499. package/src/components/EmptyState/index.ts +0 -1
  500. package/src/components/HeatMap/HeatMapCalendar.tsx +0 -127
  501. package/src/components/HeatMap/HeatMapMatrix.tsx +0 -75
  502. package/src/components/HeatMap/heat-map.utils.ts +0 -15
  503. package/src/components/HeatMap/index.ts +0 -3
  504. package/src/components/MetricList/MetricList.tsx +0 -18
  505. package/src/components/MetricList/MetricRow.tsx +0 -30
  506. package/src/components/MetricList/index.ts +0 -2
  507. package/src/components/NavBottom/NavBottom.tsx +0 -55
  508. package/src/components/NavBottom/index.ts +0 -3
  509. package/src/components/NavSide/NavItem.tsx +0 -39
  510. package/src/components/NavSide/NavSide.tsx +0 -42
  511. package/src/components/NavSide/index.ts +0 -2
  512. package/src/components/NavSide/types.ts +0 -36
  513. package/src/components/Pagination/Pagination.tsx +0 -86
  514. package/src/components/Pagination/index.ts +0 -2
  515. package/src/components/Skeleton/Skeleton.tsx +0 -9
  516. package/src/components/Skeleton/index.ts +0 -1
  517. package/src/components/StatsCard/StatsCard.tsx +0 -41
  518. package/src/components/StatsCard/index.ts +0 -1
@@ -124,6 +124,16 @@ type CalendarViewBaseProps = {
124
124
  /** First day of week (0 = Sunday, 1 = Monday) */
125
125
  weekStartsOn?: WeekStartsOn | undefined;
126
126
 
127
+ /**
128
+ * Move DOM focus into the day grid on mount.
129
+ *
130
+ * Off by default: a grid that grabs focus when it appears is wrong for a
131
+ * pointer user who clicked a trigger. `DatePicker` turns it on only when the
132
+ * popover was opened from the keyboard (`Alt+ArrowDown`), where the whole
133
+ * point of opening it was to navigate days.
134
+ */
135
+ autoFocusDay?: boolean | undefined;
136
+
127
137
  /** Show footer with Today/Cancel/Apply buttons */
128
138
  showFooter?: boolean | undefined;
129
139
  /** Show Today button (only if showFooter=true) */
@@ -1,14 +1,118 @@
1
1
  import { cn } from "@sixthshift/design-system/utils";
2
+ import { cva, type VariantProps } from "class-variance-authority";
2
3
  import * as React from "react";
3
4
 
4
- export type CardProps = Omit<React.HTMLAttributes<HTMLDivElement>, "title"> & {
5
- /** Optional header title - string or ReactNode */
6
- title?: React.ReactNode;
7
- /** Optional action element displayed on the right side of the header */
8
- headerAction?: React.ReactNode;
9
- };
5
+ /**
6
+ * Geometry only, plus the five `--card-*` component tokens.
7
+ *
8
+ * Every colour reads a `--card-*` token whose value is decided by
9
+ * src/theme/recipes/card.css. `size` stays here: it is pure geometry
10
+ * (padding, header gap, corner radius), not colour, so it has no reason to
11
+ * move — the same split Message.tsx documents.
12
+ *
13
+ * The ramp is a density axis, not a padding setting. `md` is the middle and
14
+ * the default at 16px, which is also where MUI's `CardContent` and
15
+ * Bootstrap's `.card-body` sit; two steps exist below it for surfaces that
16
+ * repeat dozens of times, and two above for surfaces that are the page.
17
+ *
18
+ * xs 8px dense data — table-row cards, compact tiles, many at once
19
+ * sm 12px list rows and secondary cards; a line or two of content
20
+ * md 16px a standalone content card. The one to reach for by default
21
+ * lg 24px primary or feature cards — a main panel, a form container
22
+ * xl 32px hero, empty-state and marketing surfaces
23
+ *
24
+ * Steps are 8 · 12 · 16 · 24 · 32, alternating x1.5 and x1.33; 20px is
25
+ * skipped deliberately as the value that breaks that rhythm.
26
+ *
27
+ * Radius scales with padding and never exceeds it — at `xs` a 12px corner
28
+ * against 8px of padding visibly crowds the content. The header gap flattens
29
+ * at both ends instead of tracking padding: it separates a title from an
30
+ * action control, so it has a usability floor and nothing to gain above 16px.
31
+ *
32
+ * Type is deliberately absent from the ramp. Message's `size` carries
33
+ * `text-xs` because Message knows what it holds; Card is a container for
34
+ * arbitrary children, `Heading` and `Body` included, so setting type here
35
+ * would fight the typography ramp at every call site. Containers set
36
+ * spacing; content components set type.
37
+ */
38
+ export const cardVariants = cva(
39
+ // One literal, deliberately: `useSortedClasses --unsafe` strips the trailing
40
+ // space before a `+`, silently welding the last class of one fragment to the
41
+ // first of the next. A single string means the sorter has nothing to break.
42
+ "card border-(color:--card-border) border bg-(--card-bg) text-(--card-fg) shadow",
43
+ {
44
+ variants: {
45
+ size: {
46
+ xs: "rounded-md p-2",
47
+ sm: "rounded-lg p-3",
48
+ md: "rounded-xl p-4",
49
+ lg: "rounded-xl p-6",
50
+ xl: "rounded-2xl p-8",
51
+ },
52
+ interactive: {
53
+ true: "hover:border-(color:--card-border-hovered) focus-visible:outline-(color:--card-ring) cursor-pointer transition-colors focus-visible:outline-2 focus-visible:outline-offset-2",
54
+ false: "",
55
+ },
56
+ },
57
+ defaultVariants: {
58
+ size: "md",
59
+ interactive: false,
60
+ },
61
+ }
62
+ );
10
63
 
11
- export const Card = React.forwardRef<HTMLDivElement, CardProps>(({ className, title, headerAction, children, onClick, onKeyDown, ...props }, ref) => {
64
+ /**
65
+ * Header geometry per size: the gap between title and action, and the space
66
+ * below it.
67
+ *
68
+ * A `<div>`, not a `<header>`. A `<header>` whose nearest sectioning ancestor
69
+ * is the body becomes a `banner` landmark, so two titled cards on one page
70
+ * produced two banners — axe's `landmark-no-duplicate-banner`. A card's header
71
+ * is not the page's banner, and the element bought nothing else here.
72
+ */
73
+ const headerVariants = cva("flex items-start justify-between", {
74
+ variants: {
75
+ size: {
76
+ xs: "mb-2 gap-2",
77
+ sm: "mb-3 gap-2",
78
+ md: "mb-4 gap-3",
79
+ lg: "mb-4 gap-4",
80
+ xl: "mb-6 gap-4",
81
+ },
82
+ },
83
+ defaultVariants: {
84
+ size: "md",
85
+ },
86
+ });
87
+
88
+ export type CardSize = NonNullable<VariantProps<typeof cardVariants>["size"]>;
89
+
90
+ export type CardProps = Omit<React.HTMLAttributes<HTMLDivElement>, "title"> &
91
+ Pick<VariantProps<typeof cardVariants>, "size"> & {
92
+ /** Optional header title - string or ReactNode */
93
+ title?: React.ReactNode;
94
+ /** Optional action element displayed on the right side of the header */
95
+ headerAction?: React.ReactNode;
96
+ };
97
+
98
+ /**
99
+ * Bordered, elevated container — the "this contains data" building block
100
+ * (see docs/visual-hierarchy.md's Elevated tier). Renders a `<div>`, with an
101
+ * optional header row when `title` and/or `headerAction` is passed.
102
+ *
103
+ * `size` is a density axis covering padding, header spacing and corner
104
+ * radius; `md` (16px) is the default. See `cardVariants` above for what each
105
+ * step is for and why type is not part of it.
106
+ *
107
+ * Passing `onClick` turns the whole card into a button: it gets
108
+ * `role="button"`, `tabIndex={0}`, and both Enter and Space activate it, not
109
+ * just a pointer click. Omit `onClick` for a purely presentational card.
110
+ *
111
+ * Colour reads `--card-*` component tokens (src/theme/recipes/card.css) —
112
+ * the same seam Button and Badge use — so a consumer can re-point them
113
+ * without a release.
114
+ */
115
+ export const Card = React.forwardRef<HTMLDivElement, CardProps>(({ className, size, title, headerAction, children, onClick, onKeyDown, ...props }, ref) => {
12
116
  const isInteractive = !!onClick;
13
117
 
14
118
  const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {
@@ -23,22 +127,17 @@ export const Card = React.forwardRef<HTMLDivElement, CardProps>(({ className, ti
23
127
  // biome-ignore lint/a11y/noStaticElementInteractions: role="button" + tabIndex are added dynamically when onClick is present
24
128
  <div
25
129
  ref={ref}
26
- className={cn(
27
- "rounded-xl border border-border-normal bg-bg-normal p-6 text-fg-normal shadow",
28
- isInteractive &&
29
- "cursor-pointer transition-colors hover:border-border-strong focus-visible:outline-2 focus-visible:outline-border-strong focus-visible:outline-offset-2",
30
- className
31
- )}
130
+ className={cn(cardVariants({ size, interactive: isInteractive }), className)}
32
131
  onClick={onClick}
33
132
  onKeyDown={handleKeyDown}
34
133
  {...(isInteractive && { role: "button", tabIndex: 0 })}
35
134
  {...props}
36
135
  >
37
136
  {(title || headerAction) && (
38
- <header className="mb-4 flex items-start justify-between gap-4">
137
+ <div className={headerVariants({ size })}>
39
138
  {title && <div className="font-semibold">{title}</div>}
40
139
  {headerAction && <div className="shrink-0">{headerAction}</div>}
41
- </header>
140
+ </div>
42
141
  )}
43
142
  {children}
44
143
  </div>
@@ -1 +1 @@
1
- export { Card, type CardProps } from "./Card";
1
+ export { Card, type CardProps, type CardSize, cardVariants } from "./Card";
@@ -51,6 +51,27 @@ const IndeterminateIcon = () => (
51
51
  </svg>
52
52
  );
53
53
 
54
+ /**
55
+ * A single boolean, or tri-state, toggle — a custom button with
56
+ * `role="checkbox"` rather than a native `<input type="checkbox">`, so it
57
+ * can be styled without fighting native checkbox rendering.
58
+ *
59
+ * Controlled or uncontrolled via the `checked`/`defaultChecked`/
60
+ * `onCheckedChange` triad (`useControllableState`). `checked` also accepts
61
+ * `"indeterminate"`, which sets `aria-checked="mixed"` and swaps in a dash
62
+ * icon instead of the check — for a "select all" checkbox whose children are
63
+ * only partially selected. Clicking an indeterminate checkbox always
64
+ * resolves it to `true`, never back to indeterminate.
65
+ *
66
+ * Only participates in native form submission when `name` is set: a hidden
67
+ * native `<input type="checkbox">` is rendered alongside the button and
68
+ * kept in sync, carrying `value` (default `"on"`). Without `name`, state
69
+ * lives only in React and nothing is submitted.
70
+ *
71
+ * Passing `label` wraps the button and a `<Label>` together and wires
72
+ * `htmlFor`/`id` between them; without it, you get just the button and must
73
+ * supply your own accessible name.
74
+ */
54
75
  const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(
55
76
  (
56
77
  {
@@ -93,8 +114,7 @@ const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(
93
114
  ref={ref}
94
115
  onClick={() => setChecked(!isChecked)}
95
116
  className={cn(
96
- "peer h-4 w-4 shrink-0 cursor-pointer rounded-xs border border-border-brand shadow focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
97
- (isChecked || isIndeterminate) && "bg-bg-brand text-fg-on-brand",
117
+ "checkbox peer border-(color:--checkbox-border) focus-visible:ring-(color:--checkbox-ring) h-4 w-4 shrink-0 cursor-pointer rounded-xs border bg-(--checkbox-bg) text-(--checkbox-fg) shadow focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
98
118
  className
99
119
  )}
100
120
  {...props}
@@ -36,6 +36,28 @@ export type CheckboxGroupProps = Omit<React.HTMLAttributes<HTMLDivElement>, "onC
36
36
  onBlur?: () => void;
37
37
  };
38
38
 
39
+ /**
40
+ * A set of related checkboxes sharing one controlled/uncontrolled `string[]`
41
+ * selection, via the `value`/`defaultValue`/`onValueChange` triad
42
+ * (`useControllableState`).
43
+ *
44
+ * `variant="default"` (the default) renders one `Checkbox` per option, each
45
+ * with its own visible label, laid out in a column or row per
46
+ * `orientation`. `variant="button"` is a separate rendering path — not a
47
+ * re-skinned `Checkbox` — a row/column of plain buttons with
48
+ * `role="checkbox"` and no separate label; contiguous buttons touch and
49
+ * share borders (`appearance="segmented"`, the default) or sit apart with
50
+ * their own rounded corners (`appearance="separate"`).
51
+ *
52
+ * Form submission only happens when `name` is set. In the default variant
53
+ * that means each underlying `Checkbox` gets `name`, so one hidden native
54
+ * checkbox input is rendered per option; in the button variant the group
55
+ * itself renders one hidden `<input type="checkbox">` per *currently
56
+ * selected* value.
57
+ *
58
+ * Renders `role="group"`; focus leaving the whole group — not just moving
59
+ * between options — fires `onBlur`.
60
+ */
39
61
  const CheckboxGroup = React.forwardRef<HTMLDivElement, CheckboxGroupProps>(
40
62
  (
41
63
  {
@@ -5,7 +5,7 @@ import { useCallback, useRef } from "react";
5
5
  import { useTheme } from "../../../hooks/useTheme";
6
6
  import type { ValidationError } from "../ValidationStatus";
7
7
  import { createSemanticTokensProvider, workerExtensionUrl } from "./semanticTokenProvider";
8
- import { defineThemes, PA_THEME_DARK, PA_THEME_LIGHT } from "./themes";
8
+ import { defineThemes, EDITOR_THEME_DARK, EDITOR_THEME_LIGHT } from "./themes";
9
9
 
10
10
  let semanticTokensRegistered = false;
11
11
  function registerSemanticTokenProviders(monaco: typeof import("monaco-editor")) {
@@ -51,7 +51,7 @@ export type EditorProps = Omit<HTMLAttributes<HTMLDivElement>, "onChange"> & {
51
51
  */
52
52
  export const Editor = ({ value, onChange, onValidate, readOnly = false, className, typeDefinitions, compilerOptions = {}, ...props }: EditorProps) => {
53
53
  const { resolvedTheme } = useTheme();
54
- const monacoTheme = resolvedTheme === "dark" ? PA_THEME_DARK : PA_THEME_LIGHT;
54
+ const monacoTheme = resolvedTheme === "dark" ? EDITOR_THEME_DARK : EDITOR_THEME_LIGHT;
55
55
  const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);
56
56
 
57
57
  const handleEditorDidMount = useCallback(
@@ -1,40 +1,58 @@
1
1
  import type { editor } from "monaco-editor";
2
2
 
3
- export const PA_THEME_LIGHT = "pa-light";
4
- export const PA_THEME_DARK = "pa-dark";
3
+ export const EDITOR_THEME_LIGHT = "ds-light";
4
+ export const EDITOR_THEME_DARK = "ds-dark";
5
5
 
6
+ /**
7
+ * The token palettes are One Light and One Dark, with every colour raised to
8
+ * 4.5:1 against the worst background it can land on — which is the active line's
9
+ * highlight, not the editor background, since that is the darker (light theme)
10
+ * or lighter (dark theme) of the two.
11
+ *
12
+ * Stock One Light fails that on 21 of its 25 token colours: syntax highlighting
13
+ * is text as far as axe is concerned, so it carries the full 4.5:1 obligation
14
+ * rather than the 3:1 that non-text contrast gets. Hue and saturation are kept;
15
+ * only lightness moves, and only as far as it has to. The most visible
16
+ * consequence is that comments recede less than in stock One Light — #a0a1a7
17
+ * managed 2.30.
18
+ *
19
+ * `scripts/check-contrast.ts` covers the design system's own tokens; these are
20
+ * Monaco's, so they are checked by the editor stories' a11y run instead. A story
21
+ * with a play function is what exercises it: without one, axe runs before Monaco
22
+ * has painted and sees nothing to measure.
23
+ */
6
24
  const lightTheme: editor.IStandaloneThemeData = {
7
25
  base: "vs",
8
26
  inherit: true,
9
27
  rules: [
10
28
  // Monarch tokenizer rules
11
- { token: "comment", foreground: "a0a1a7", fontStyle: "italic" },
29
+ { token: "comment", foreground: "6b6c73", fontStyle: "italic" },
12
30
  { token: "keyword", foreground: "a626a4" },
13
- { token: "string", foreground: "50a14f" },
14
- { token: "number", foreground: "986801" },
31
+ { token: "string", foreground: "3c7a3c" },
32
+ { token: "number", foreground: "906301" },
15
33
  { token: "delimiter", foreground: "383a42" },
16
34
  { token: "delimiter.bracket", foreground: "383a42" },
17
- { token: "tag", foreground: "e45649" },
18
- { token: "attribute.name", foreground: "986801" },
19
- { token: "attribute.value", foreground: "50a14f" },
20
- { token: "operator", foreground: "0184bc" },
21
- { token: "identifier", foreground: "e45649" },
35
+ { token: "tag", foreground: "cf2d1f" },
36
+ { token: "attribute.name", foreground: "906301" },
37
+ { token: "attribute.value", foreground: "3c7a3c" },
38
+ { token: "operator", foreground: "0174a5" },
39
+ { token: "identifier", foreground: "cf2d1f" },
22
40
 
23
41
  // Semantic token rules (TypeScript language service)
24
- { token: "variable", foreground: "e45649" },
25
- { token: "variable.readonly", foreground: "986801" },
42
+ { token: "variable", foreground: "cf2d1f" },
43
+ { token: "variable.readonly", foreground: "906301" },
26
44
  { token: "parameter", foreground: "383a42" },
27
- { token: "property", foreground: "e45649" },
28
- { token: "property.readonly", foreground: "986801" },
29
- { token: "function", foreground: "4078f2" },
30
- { token: "method", foreground: "4078f2" },
31
- { token: "type", foreground: "c18401" },
32
- { token: "type.identifier", foreground: "c18401" },
33
- { token: "class", foreground: "c18401" },
34
- { token: "interface", foreground: "c18401" },
35
- { token: "enum", foreground: "c18401" },
36
- { token: "enumMember", foreground: "986801" },
37
- { token: "namespace", foreground: "e45649" },
45
+ { token: "property", foreground: "cf2d1f" },
46
+ { token: "property.readonly", foreground: "906301" },
47
+ { token: "function", foreground: "2162f0" },
48
+ { token: "method", foreground: "2162f0" },
49
+ { token: "type", foreground: "916301" },
50
+ { token: "type.identifier", foreground: "916301" },
51
+ { token: "class", foreground: "916301" },
52
+ { token: "interface", foreground: "916301" },
53
+ { token: "enum", foreground: "916301" },
54
+ { token: "enumMember", foreground: "906301" },
55
+ { token: "namespace", foreground: "cf2d1f" },
38
56
  ],
39
57
  colors: {
40
58
  "editor.background": "#fafafa",
@@ -60,23 +78,23 @@ const darkTheme: editor.IStandaloneThemeData = {
60
78
  inherit: true,
61
79
  rules: [
62
80
  // Monarch tokenizer rules
63
- { token: "comment", foreground: "5c6370", fontStyle: "italic" },
64
- { token: "keyword", foreground: "c678dd" },
81
+ { token: "comment", foreground: "939aa6", fontStyle: "italic" },
82
+ { token: "keyword", foreground: "c97edf" },
65
83
  { token: "string", foreground: "98c379" },
66
84
  { token: "number", foreground: "d19a66" },
67
85
  { token: "delimiter", foreground: "abb2bf" },
68
86
  { token: "delimiter.bracket", foreground: "abb2bf" },
69
- { token: "tag", foreground: "e06c75" },
87
+ { token: "tag", foreground: "e37b83" },
70
88
  { token: "attribute.name", foreground: "d19a66" },
71
89
  { token: "attribute.value", foreground: "98c379" },
72
90
  { token: "operator", foreground: "56b6c2" },
73
- { token: "identifier", foreground: "e06c75" },
91
+ { token: "identifier", foreground: "e37b83" },
74
92
 
75
93
  // Semantic token rules (TypeScript language service)
76
- { token: "variable", foreground: "e06c75" },
94
+ { token: "variable", foreground: "e37b83" },
77
95
  { token: "variable.readonly", foreground: "d19a66" },
78
96
  { token: "parameter", foreground: "abb2bf" },
79
- { token: "property", foreground: "e06c75" },
97
+ { token: "property", foreground: "e37b83" },
80
98
  { token: "property.readonly", foreground: "d19a66" },
81
99
  { token: "function", foreground: "61afef" },
82
100
  { token: "method", foreground: "61afef" },
@@ -86,7 +104,7 @@ const darkTheme: editor.IStandaloneThemeData = {
86
104
  { token: "interface", foreground: "e5c07b" },
87
105
  { token: "enum", foreground: "e5c07b" },
88
106
  { token: "enumMember", foreground: "d19a66" },
89
- { token: "namespace", foreground: "e06c75" },
107
+ { token: "namespace", foreground: "e37b83" },
90
108
  ],
91
109
  colors: {
92
110
  "editor.background": "#282c34",
@@ -107,6 +125,6 @@ const darkTheme: editor.IStandaloneThemeData = {
107
125
  };
108
126
 
109
127
  export function defineThemes(monaco: typeof import("monaco-editor")) {
110
- monaco.editor.defineTheme(PA_THEME_LIGHT, lightTheme);
111
- monaco.editor.defineTheme(PA_THEME_DARK, darkTheme);
128
+ monaco.editor.defineTheme(EDITOR_THEME_LIGHT, lightTheme);
129
+ monaco.editor.defineTheme(EDITOR_THEME_DARK, darkTheme);
112
130
  }
@@ -1,7 +1,7 @@
1
- import { Message } from "@sixthshift/design-system/message";
1
+ import { Message, type MessageIntentName } from "@sixthshift/design-system/message";
2
2
  import { cn } from "@sixthshift/design-system/utils";
3
3
  import { AlertCircle, AlertTriangle, CheckCircle, Info } from "lucide-react";
4
- import type { ComponentProps, HTMLAttributes } from "react";
4
+ import type { HTMLAttributes } from "react";
5
5
 
6
6
  export type ValidationError = {
7
7
  line: number;
@@ -16,7 +16,10 @@ export type ValidationStatusProps = HTMLAttributes<HTMLDivElement> & {
16
16
  maxRows?: number;
17
17
  };
18
18
 
19
- type Intent = NonNullable<ComponentProps<typeof Message>["intent"]>;
19
+ // The closed union, not `ComponentProps<typeof Message>["intent"]`: that is now
20
+ // widened to admit any string so consumers can add intents in CSS, which would
21
+ // silently let a typo through this map.
22
+ type Intent = MessageIntentName;
20
23
 
21
24
  const SEVERITY_INTENT: Record<ValidationError["severity"], Intent> = {
22
25
  error: "danger",