@misoto22/design 0.7.0 → 0.8.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 (369) hide show
  1. package/AGENTS.md +87 -0
  2. package/CLAUDE.md +1 -0
  3. package/README.md +50 -5
  4. package/bin/misoto22-design.mjs +59 -13
  5. package/dist/agent/Accordion.md +24 -1
  6. package/dist/agent/Alert.md +23 -1
  7. package/dist/agent/AppShell.md +30 -2
  8. package/dist/agent/ArchitectureFigure.md +25 -2
  9. package/dist/agent/AreaChart.md +27 -2
  10. package/dist/agent/Article.md +26 -3
  11. package/dist/agent/AspectRatio.md +57 -0
  12. package/dist/agent/Avatar.md +25 -5
  13. package/dist/agent/Badge.md +22 -1
  14. package/dist/agent/BarChart.md +29 -2
  15. package/dist/agent/BarList.md +27 -1
  16. package/dist/agent/BigNumber.md +26 -2
  17. package/dist/agent/BoxPlot.md +24 -1
  18. package/dist/agent/Breadcrumb.md +24 -2
  19. package/dist/agent/BulletChart.md +23 -1
  20. package/dist/agent/Button.md +25 -1
  21. package/dist/agent/Calendar.md +37 -3
  22. package/dist/agent/Card.md +24 -2
  23. package/dist/agent/Checkbox.md +23 -2
  24. package/dist/agent/Code.md +50 -0
  25. package/dist/agent/CodeBlock.md +74 -0
  26. package/dist/agent/Collapsible.md +22 -1
  27. package/dist/agent/Combobox.md +29 -3
  28. package/dist/agent/Command.md +25 -2
  29. package/dist/agent/ComposedChart.md +26 -2
  30. package/dist/agent/ContextMenu.md +37 -4
  31. package/dist/agent/DataflowFigure.md +22 -1
  32. package/dist/agent/DatePicker.md +34 -6
  33. package/dist/agent/DescriptionList.md +68 -0
  34. package/dist/agent/Diagram.md +27 -3
  35. package/dist/agent/DiagramCanvas.md +24 -1
  36. package/dist/agent/DiagramExportMenu.md +29 -3
  37. package/dist/agent/DiagramInspector.md +23 -1
  38. package/dist/agent/DiagramLegend.md +22 -1
  39. package/dist/agent/DiagramMinimap.md +24 -4
  40. package/dist/agent/DiagramToolbar.md +23 -1
  41. package/dist/agent/Dialog.md +26 -3
  42. package/dist/agent/DropdownMenu.md +45 -6
  43. package/dist/agent/EmptyState.md +26 -1
  44. package/dist/agent/ErrorState.md +27 -2
  45. package/dist/agent/Facet.md +25 -1
  46. package/dist/agent/Field.md +45 -4
  47. package/dist/agent/FigureBand.md +24 -1
  48. package/dist/agent/FloatingIconButton.md +23 -1
  49. package/dist/agent/FunnelChart.md +23 -1
  50. package/dist/agent/Heading.md +64 -0
  51. package/dist/agent/Heatmap.md +25 -1
  52. package/dist/agent/Histogram.md +26 -2
  53. package/dist/agent/Input.md +22 -1
  54. package/dist/agent/Kbd.md +19 -1
  55. package/dist/agent/LifecycleFigure.md +22 -1
  56. package/dist/agent/LineChart.md +26 -2
  57. package/dist/agent/LinkArrow.md +20 -1
  58. package/dist/agent/Markdown.md +68 -0
  59. package/dist/agent/NativeSelect.md +23 -2
  60. package/dist/agent/NavItem.md +21 -1
  61. package/dist/agent/Pagination.md +28 -2
  62. package/dist/agent/PieChart.md +26 -2
  63. package/dist/agent/Popover.md +23 -1
  64. package/dist/agent/Progress.md +27 -3
  65. package/dist/agent/RadarChart.md +26 -2
  66. package/dist/agent/RadialChart.md +26 -3
  67. package/dist/agent/RadioGroup.md +23 -2
  68. package/dist/agent/SankeyChart.md +25 -2
  69. package/dist/agent/ScatterChart.md +27 -2
  70. package/dist/agent/ScrollArea.md +24 -3
  71. package/dist/agent/SearchableMenu.md +23 -1
  72. package/dist/agent/Select.md +29 -3
  73. package/dist/agent/Separator.md +28 -4
  74. package/dist/agent/SequenceFigure.md +23 -1
  75. package/dist/agent/Sheet.md +25 -2
  76. package/dist/agent/Skeleton.md +24 -2
  77. package/dist/agent/Slider.md +27 -4
  78. package/dist/agent/Sparkline.md +23 -1
  79. package/dist/agent/Spinner.md +24 -2
  80. package/dist/agent/StatusDot.md +20 -1
  81. package/dist/agent/StatusPill.md +28 -2
  82. package/dist/agent/Steps.md +24 -1
  83. package/dist/agent/Switch.md +21 -1
  84. package/dist/agent/Table.md +26 -3
  85. package/dist/agent/Tabs.md +24 -2
  86. package/dist/agent/Tag.md +40 -9
  87. package/dist/agent/Text.md +65 -0
  88. package/dist/agent/Textarea.md +20 -1
  89. package/dist/agent/Timestamp.md +64 -0
  90. package/dist/agent/Toast.md +26 -2
  91. package/dist/agent/ToggleGroup.md +24 -2
  92. package/dist/agent/Toolbar.md +71 -0
  93. package/dist/agent/Tooltip.md +23 -1
  94. package/dist/agent/TreemapChart.md +24 -1
  95. package/dist/agent/WaterfallChart.md +24 -1
  96. package/dist/agent/WorkflowFigure.md +24 -2
  97. package/dist/agent/catalog.json +5602 -745
  98. package/dist/agent/index.md +13 -4
  99. package/dist/article.css +16 -4
  100. package/dist/charts/AreaChart/AreaChart.d.ts +9 -2
  101. package/dist/charts/AreaChart/AreaChart.js +12 -13
  102. package/dist/charts/AreaChart/AreaChart.js.map +1 -1
  103. package/dist/charts/BarChart/BarChart.d.ts +14 -3
  104. package/dist/charts/BarChart/BarChart.js +20 -12
  105. package/dist/charts/BarChart/BarChart.js.map +1 -1
  106. package/dist/charts/BarList/BarList.d.ts +9 -1
  107. package/dist/charts/BarList/BarList.js +9 -1
  108. package/dist/charts/BarList/BarList.js.map +1 -1
  109. package/dist/charts/BigNumber/BigNumber.d.ts +19 -3
  110. package/dist/charts/BigNumber/BigNumber.js +25 -5
  111. package/dist/charts/BigNumber/BigNumber.js.map +1 -1
  112. package/dist/charts/BoxPlot/BoxPlot.js +4 -2
  113. package/dist/charts/BoxPlot/BoxPlot.js.map +1 -1
  114. package/dist/charts/BulletChart/BulletChart.js +28 -7
  115. package/dist/charts/BulletChart/BulletChart.js.map +1 -1
  116. package/dist/charts/ComposedChart/ComposedChart.d.ts +9 -2
  117. package/dist/charts/ComposedChart/ComposedChart.js +10 -10
  118. package/dist/charts/ComposedChart/ComposedChart.js.map +1 -1
  119. package/dist/charts/FunnelChart/FunnelChart.d.ts +7 -2
  120. package/dist/charts/FunnelChart/FunnelChart.js +6 -16
  121. package/dist/charts/FunnelChart/FunnelChart.js.map +1 -1
  122. package/dist/charts/Heatmap/Heatmap.d.ts +17 -3
  123. package/dist/charts/Heatmap/Heatmap.js +20 -11
  124. package/dist/charts/Heatmap/Heatmap.js.map +1 -1
  125. package/dist/charts/Histogram/Histogram.d.ts +24 -1
  126. package/dist/charts/Histogram/Histogram.js +43 -11
  127. package/dist/charts/Histogram/Histogram.js.map +1 -1
  128. package/dist/charts/LineChart/LineChart.d.ts +9 -2
  129. package/dist/charts/LineChart/LineChart.js +11 -12
  130. package/dist/charts/LineChart/LineChart.js.map +1 -1
  131. package/dist/charts/PieChart/PieChart.d.ts +15 -3
  132. package/dist/charts/PieChart/PieChart.js +14 -6
  133. package/dist/charts/PieChart/PieChart.js.map +1 -1
  134. package/dist/charts/RadarChart/RadarChart.d.ts +15 -3
  135. package/dist/charts/RadarChart/RadarChart.js +11 -9
  136. package/dist/charts/RadarChart/RadarChart.js.map +1 -1
  137. package/dist/charts/RadialChart/RadialChart.d.ts +22 -4
  138. package/dist/charts/RadialChart/RadialChart.js +28 -6
  139. package/dist/charts/RadialChart/RadialChart.js.map +1 -1
  140. package/dist/charts/SankeyChart/SankeyChart.d.ts +16 -4
  141. package/dist/charts/SankeyChart/SankeyChart.js +14 -6
  142. package/dist/charts/SankeyChart/SankeyChart.js.map +1 -1
  143. package/dist/charts/ScatterChart/ScatterChart.d.ts +24 -3
  144. package/dist/charts/ScatterChart/ScatterChart.js +21 -15
  145. package/dist/charts/ScatterChart/ScatterChart.js.map +1 -1
  146. package/dist/charts/Sparkline/Sparkline.js +5 -3
  147. package/dist/charts/Sparkline/Sparkline.js.map +1 -1
  148. package/dist/charts/TreemapChart/TreemapChart.d.ts +7 -2
  149. package/dist/charts/TreemapChart/TreemapChart.js +20 -11
  150. package/dist/charts/TreemapChart/TreemapChart.js.map +1 -1
  151. package/dist/charts/WaterfallChart/WaterfallChart.js +4 -2
  152. package/dist/charts/WaterfallChart/WaterfallChart.js.map +1 -1
  153. package/dist/charts/lib/export.d.ts +1 -0
  154. package/dist/charts/lib/figure.d.ts +21 -1
  155. package/dist/charts/lib/figure.js +5 -2
  156. package/dist/charts/lib/figure.js.map +1 -1
  157. package/dist/charts/lib/scale.d.ts +23 -0
  158. package/dist/charts/lib/scale.js +13 -0
  159. package/dist/charts/lib/scale.js.map +1 -0
  160. package/dist/charts/lib/selection.d.ts +20 -0
  161. package/dist/charts/lib/selection.js +18 -0
  162. package/dist/charts/lib/selection.js.map +1 -0
  163. package/dist/charts/lib/toolbar.d.ts +1 -0
  164. package/dist/components/Accordion/Accordion.js +8 -1
  165. package/dist/components/Accordion/Accordion.js.map +1 -1
  166. package/dist/components/AppShell/AppShell.d.ts +6 -0
  167. package/dist/components/AppShell/AppShell.js +34 -4
  168. package/dist/components/AppShell/AppShell.js.map +1 -1
  169. package/dist/components/Article/Article.d.ts +11 -4
  170. package/dist/components/Article/Article.js +13 -0
  171. package/dist/components/Article/Article.js.map +1 -1
  172. package/dist/components/AspectRatio/AspectRatio.d.ts +46 -0
  173. package/dist/components/AspectRatio/AspectRatio.js +33 -0
  174. package/dist/components/AspectRatio/AspectRatio.js.map +1 -0
  175. package/dist/components/Avatar/Avatar.d.ts +12 -3
  176. package/dist/components/Avatar/Avatar.js +6 -1
  177. package/dist/components/Avatar/Avatar.js.map +1 -1
  178. package/dist/components/Breadcrumb/Breadcrumb.d.ts +6 -0
  179. package/dist/components/Breadcrumb/Breadcrumb.js +15 -0
  180. package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
  181. package/dist/components/Button/Button.js +14 -0
  182. package/dist/components/Button/Button.js.map +1 -1
  183. package/dist/components/Calendar/Calendar.d.ts +29 -3
  184. package/dist/components/Calendar/Calendar.js +60 -12
  185. package/dist/components/Calendar/Calendar.js.map +1 -1
  186. package/dist/components/Card/Card.d.ts +6 -0
  187. package/dist/components/Card/Card.js +1 -1
  188. package/dist/components/Card/Card.js.map +1 -1
  189. package/dist/components/Checkbox/Checkbox.d.ts +5 -2
  190. package/dist/components/Checkbox/Checkbox.js +12 -2
  191. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  192. package/dist/components/Code/Code.d.ts +30 -0
  193. package/dist/components/Code/Code.js +21 -0
  194. package/dist/components/Code/Code.js.map +1 -0
  195. package/dist/components/CodeBlock/CodeBlock.d.ts +141 -0
  196. package/dist/components/CodeBlock/CodeBlock.js +123 -0
  197. package/dist/components/CodeBlock/CodeBlock.js.map +1 -0
  198. package/dist/components/Collapsible/Collapsible.js +10 -2
  199. package/dist/components/Collapsible/Collapsible.js.map +1 -1
  200. package/dist/components/Combobox/Combobox.d.ts +15 -1
  201. package/dist/components/Combobox/Combobox.js +25 -5
  202. package/dist/components/Combobox/Combobox.js.map +1 -1
  203. package/dist/components/Command/Command.d.ts +4 -2
  204. package/dist/components/Command/Command.js +13 -1
  205. package/dist/components/Command/Command.js.map +1 -1
  206. package/dist/components/ContextMenu/ContextMenu.d.ts +30 -5
  207. package/dist/components/ContextMenu/ContextMenu.js +32 -2
  208. package/dist/components/ContextMenu/ContextMenu.js.map +1 -1
  209. package/dist/components/DatePicker/DatePicker.d.ts +36 -4
  210. package/dist/components/DatePicker/DatePicker.js +55 -12
  211. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  212. package/dist/components/DescriptionList/DescriptionList.d.ts +73 -0
  213. package/dist/components/DescriptionList/DescriptionList.js +35 -0
  214. package/dist/components/DescriptionList/DescriptionList.js.map +1 -0
  215. package/dist/components/Diagram/Diagram.d.ts +8 -3
  216. package/dist/components/Diagram/Diagram.js +82 -10
  217. package/dist/components/Diagram/Diagram.js.map +1 -1
  218. package/dist/components/Dialog/Dialog.d.ts +18 -3
  219. package/dist/components/Dialog/Dialog.js +20 -2
  220. package/dist/components/Dialog/Dialog.js.map +1 -1
  221. package/dist/components/DropdownMenu/DropdownMenu.d.ts +49 -11
  222. package/dist/components/DropdownMenu/DropdownMenu.js +32 -2
  223. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
  224. package/dist/components/EmptyState/EmptyState.d.ts +25 -1
  225. package/dist/components/EmptyState/EmptyState.js +3 -1
  226. package/dist/components/EmptyState/EmptyState.js.map +1 -1
  227. package/dist/components/ErrorState/ErrorState.d.ts +22 -1
  228. package/dist/components/ErrorState/ErrorState.js +11 -2
  229. package/dist/components/ErrorState/ErrorState.js.map +1 -1
  230. package/dist/components/Field/Field.d.ts +70 -3
  231. package/dist/components/Field/Field.js +53 -12
  232. package/dist/components/Field/Field.js.map +1 -1
  233. package/dist/components/Field/field-control.d.ts +31 -0
  234. package/dist/components/Field/field-control.js +12 -0
  235. package/dist/components/Field/field-control.js.map +1 -0
  236. package/dist/components/FloatingIconButton/FloatingIconButton.js +2 -0
  237. package/dist/components/FloatingIconButton/FloatingIconButton.js.map +1 -1
  238. package/dist/components/Heading/Heading.d.ts +62 -0
  239. package/dist/components/Heading/Heading.js +44 -0
  240. package/dist/components/Heading/Heading.js.map +1 -0
  241. package/dist/components/Markdown/Markdown.d.ts +139 -0
  242. package/dist/components/Markdown/Markdown.js +135 -0
  243. package/dist/components/Markdown/Markdown.js.map +1 -0
  244. package/dist/components/Markdown/inline.d.ts +29 -0
  245. package/dist/components/Markdown/inline.js +74 -0
  246. package/dist/components/Markdown/inline.js.map +1 -0
  247. package/dist/components/Markdown/nodes.d.ts +65 -0
  248. package/dist/components/Markdown/nodes.js +1 -0
  249. package/dist/components/Markdown/nodes.js.map +1 -0
  250. package/dist/components/Markdown/parse.d.ts +24 -0
  251. package/dist/components/Markdown/parse.js +110 -0
  252. package/dist/components/Markdown/parse.js.map +1 -0
  253. package/dist/components/Markdown/slug.d.ts +15 -0
  254. package/dist/components/Markdown/slug.js +7 -0
  255. package/dist/components/Markdown/slug.js.map +1 -0
  256. package/dist/components/NativeSelect/NativeSelect.d.ts +6 -0
  257. package/dist/components/NativeSelect/NativeSelect.js +2 -3
  258. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  259. package/dist/components/Pagination/Pagination.d.ts +24 -1
  260. package/dist/components/Pagination/Pagination.js +6 -3
  261. package/dist/components/Pagination/Pagination.js.map +1 -1
  262. package/dist/components/Progress/Progress.d.ts +17 -5
  263. package/dist/components/Progress/Progress.js +18 -6
  264. package/dist/components/Progress/Progress.js.map +1 -1
  265. package/dist/components/RadioGroup/RadioGroup.d.ts +6 -0
  266. package/dist/components/RadioGroup/RadioGroup.js +11 -1
  267. package/dist/components/RadioGroup/RadioGroup.js.map +1 -1
  268. package/dist/components/ScrollArea/ScrollArea.d.ts +15 -0
  269. package/dist/components/ScrollArea/ScrollArea.js +2 -2
  270. package/dist/components/ScrollArea/ScrollArea.js.map +1 -1
  271. package/dist/components/SearchableMenu/SearchableMenu.d.ts +11 -2
  272. package/dist/components/SearchableMenu/SearchableMenu.js +24 -2
  273. package/dist/components/SearchableMenu/SearchableMenu.js.map +1 -1
  274. package/dist/components/Select/Select.d.ts +18 -2
  275. package/dist/components/Select/Select.js +20 -3
  276. package/dist/components/Select/Select.js.map +1 -1
  277. package/dist/components/Separator/Separator.d.ts +21 -3
  278. package/dist/components/Separator/Separator.js +9 -1
  279. package/dist/components/Separator/Separator.js.map +1 -1
  280. package/dist/components/Sheet/Sheet.d.ts +3 -0
  281. package/dist/components/Sheet/Sheet.js +11 -2
  282. package/dist/components/Sheet/Sheet.js.map +1 -1
  283. package/dist/components/Skeleton/Skeleton.d.ts +8 -1
  284. package/dist/components/Skeleton/Skeleton.js +1 -1
  285. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  286. package/dist/components/Slider/Slider.d.ts +21 -3
  287. package/dist/components/Slider/Slider.js +54 -27
  288. package/dist/components/Slider/Slider.js.map +1 -1
  289. package/dist/components/Spinner/Spinner.d.ts +8 -0
  290. package/dist/components/Spinner/Spinner.js +3 -2
  291. package/dist/components/Spinner/Spinner.js.map +1 -1
  292. package/dist/components/StatusPill/StatusPill.d.ts +5 -0
  293. package/dist/components/StatusPill/StatusPill.js +6 -0
  294. package/dist/components/StatusPill/StatusPill.js.map +1 -1
  295. package/dist/components/Table/Table.d.ts +6 -0
  296. package/dist/components/Table/Table.js +3 -1
  297. package/dist/components/Table/Table.js.map +1 -1
  298. package/dist/components/Tag/Tag.d.ts +68 -9
  299. package/dist/components/Tag/Tag.js +50 -10
  300. package/dist/components/Tag/Tag.js.map +1 -1
  301. package/dist/components/Text/Text.d.ts +62 -0
  302. package/dist/components/Text/Text.js +30 -0
  303. package/dist/components/Text/Text.js.map +1 -0
  304. package/dist/components/Timestamp/Timestamp.d.ts +59 -0
  305. package/dist/components/Timestamp/Timestamp.js +56 -0
  306. package/dist/components/Timestamp/Timestamp.js.map +1 -0
  307. package/dist/components/Toast/Toast.d.ts +9 -1
  308. package/dist/components/Toast/Toast.js +27 -4
  309. package/dist/components/Toast/Toast.js.map +1 -1
  310. package/dist/components/ToggleGroup/ToggleGroup.d.ts +6 -1
  311. package/dist/components/ToggleGroup/ToggleGroup.js +11 -1
  312. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  313. package/dist/components/Toolbar/Toolbar.d.ts +55 -0
  314. package/dist/components/Toolbar/Toolbar.js +43 -0
  315. package/dist/components/Toolbar/Toolbar.js.map +1 -0
  316. package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.d.ts +6 -0
  317. package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.js +48 -8
  318. package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.js.map +1 -1
  319. package/dist/diagrams/DataflowFigure/DataflowFigure.js +21 -2
  320. package/dist/diagrams/DataflowFigure/DataflowFigure.js.map +1 -1
  321. package/dist/diagrams/DiagramCanvas/DiagramCanvas.d.ts +14 -0
  322. package/dist/diagrams/DiagramCanvas/DiagramCanvas.js +14 -7
  323. package/dist/diagrams/DiagramCanvas/DiagramCanvas.js.map +1 -1
  324. package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.d.ts +38 -4
  325. package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.js +14 -16
  326. package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.js.map +1 -1
  327. package/dist/diagrams/DiagramInspector/DiagramInspector.js +2 -2
  328. package/dist/diagrams/DiagramInspector/DiagramInspector.js.map +1 -1
  329. package/dist/diagrams/DiagramMinimap/DiagramMinimap.d.ts +23 -7
  330. package/dist/diagrams/DiagramMinimap/DiagramMinimap.js +45 -18
  331. package/dist/diagrams/DiagramMinimap/DiagramMinimap.js.map +1 -1
  332. package/dist/diagrams/LifecycleFigure/LifecycleFigure.js +44 -12
  333. package/dist/diagrams/LifecycleFigure/LifecycleFigure.js.map +1 -1
  334. package/dist/diagrams/SequenceFigure/SequenceFigure.js +35 -5
  335. package/dist/diagrams/SequenceFigure/SequenceFigure.js.map +1 -1
  336. package/dist/diagrams/WorkflowFigure/WorkflowFigure.d.ts +3 -1
  337. package/dist/diagrams/WorkflowFigure/WorkflowFigure.js +76 -28
  338. package/dist/diagrams/WorkflowFigure/WorkflowFigure.js.map +1 -1
  339. package/dist/diagrams/index.d.ts +1 -0
  340. package/dist/diagrams/index.js +10 -0
  341. package/dist/diagrams/index.js.map +1 -1
  342. package/dist/diagrams/lib/dev.d.ts +61 -0
  343. package/dist/diagrams/lib/dev.js +96 -0
  344. package/dist/diagrams/lib/dev.js.map +1 -0
  345. package/dist/diagrams/lib/frame.d.ts +48 -7
  346. package/dist/diagrams/lib/frame.js +17 -2
  347. package/dist/diagrams/lib/frame.js.map +1 -1
  348. package/dist/diagrams/lib/wires.js.map +1 -1
  349. package/dist/diagrams/spec.d.ts +64 -12
  350. package/dist/index.d.ts +16 -4
  351. package/dist/index.js +9 -0
  352. package/dist/index.js.map +1 -1
  353. package/dist/keyframes.css +57 -3
  354. package/dist/lib/overlay-container.d.ts +14 -4
  355. package/dist/lib/overlay-container.js.map +1 -1
  356. package/dist/lib/warn.d.ts +73 -0
  357. package/dist/lib/warn.js +38 -0
  358. package/dist/lib/warn.js.map +1 -0
  359. package/dist/semantic.css +17 -6
  360. package/dist/styles.css +1 -1
  361. package/dist/tokens.css +20 -2
  362. package/dist/tokens.d.ts +1 -1
  363. package/dist/tokens.js +39 -36
  364. package/dist/tokens.json +39 -36
  365. package/llms.txt +35 -0
  366. package/package.json +5 -2
  367. package/skills/misoto22-design/evals/evals.json +84 -0
  368. package/skills/misoto22-design/rules/a11y.md +55 -3
  369. package/skills/misoto22-design/rules/forms.md +5 -0
@@ -12,10 +12,11 @@
12
12
  * WHAT IS DELIBERATELY NOT HERE: archify's routing micro-controls. `via`,
13
13
  * `channelX`, `channelY`, `labelAt`, `labelSegment` and `bias` exist there to
14
14
  * let an author nudge a line after a validator complains about a collision.
15
- * They are accepted below and honoured where they are cheap, because dropping a
16
- * field silently turns a valid specification into a different diagram but
17
- * they are hints, not a contract, and a figure that needs many of them is a
18
- * figure that wants fewer edges.
15
+ * They are accepted below so a specification carrying them still typechecks,
16
+ * and each one says on its own field whether it is applied: `via` and the two
17
+ * channels are, but only between two nodes placed with `pos`; the three label
18
+ * nudges never are. They are hints, not a contract, and a figure that needs
19
+ * many of them is a figure that wants fewer edges.
19
20
  *
20
21
  * Every position in every type is EXPLICIT — a row and a column, a lane and a
21
22
  * step, a participant and a y. Nothing below is solved for. That is what makes
@@ -95,6 +96,22 @@ interface DiagramMeta {
95
96
  visible?: boolean;
96
97
  }>;
97
98
  };
99
+ /**
100
+ * A guided reading, and no renderer here reads it.
101
+ *
102
+ * Accepted for the same reason `viewBox` is — an archify document carrying
103
+ * chapters still typechecks — and not applied for a different one: chapters
104
+ * are a CONTROL, not a layout. Lighting one means changing what is lit while
105
+ * a reader walks through them, and a figure that owned that state would be a
106
+ * figure with a hidden step counter, a second source of truth about what is
107
+ * selected, and no way for the page's own next/previous buttons to agree
108
+ * with it.
109
+ *
110
+ * So the chapters stay the caller's: hold the index, hand the chapter's
111
+ * `focus` ids to `activeIds`, and the figure dims everything else and
112
+ * announces how many are lit. That is the whole of what a renderer could
113
+ * have done, in a place a page can also put a heading and a caption.
114
+ */
98
115
  views?: DiagramView[];
99
116
  }
100
117
  /** Where a node's facts came from, when the figure was built against real code. */
@@ -126,9 +143,25 @@ interface EdgeBase {
126
143
  fromSide?: Side;
127
144
  toSide?: Side;
128
145
  route?: RouteMode | string;
129
- /** Waypoints the line is dragged through, in order. */
146
+ /**
147
+ * Waypoints the line is dragged through, in order.
148
+ *
149
+ * Honoured only when BOTH endpoints were placed with `pos` — see
150
+ * `Wire.keepWaypoints`. A waypoint is a coordinate in the space the author's
151
+ * nodes were placed in, and on a lane-and-column grid that space is one this
152
+ * renderer chose, not one the author saw.
153
+ */
130
154
  via?: Point[];
131
- /** Pins the label rather than letting the router place it. */
155
+ /**
156
+ * Where the label goes, and where it is nudged to — accepted, never applied.
157
+ *
158
+ * These three are collision repairs authored against archify's router and
159
+ * measured in the positions THAT router produced. This one does not produce
160
+ * the same collisions, so honouring them moves labels off clear ground and
161
+ * onto the nodes they were nudged away from. Dropping the nudge and keeping
162
+ * the wording is the reading that preserves the meaning; the fields stay so
163
+ * a specification carrying them still typechecks.
164
+ */
132
165
  labelAt?: Point;
133
166
  labelDx?: number;
134
167
  labelDy?: number;
@@ -140,7 +173,13 @@ interface EdgeBase {
140
173
  }
141
174
  interface ArchitectureComponent extends NodeBase {
142
175
  type: NodeKind;
143
- /** Grid placement. Ignored when `pos` is given. */
176
+ /**
177
+ * Grid placement. Ignored when `pos` is given.
178
+ *
179
+ * Declaring NEITHER is also a placement: the component takes the next free
180
+ * cell in declaration order, wrapping at `layout.cols`. A missing one of the
181
+ * two still reads as 0, so `{ col: 2 }` is row 0, column 2.
182
+ */
144
183
  row?: number;
145
184
  col?: number;
146
185
  /** Absolute placement, in user units, overriding the grid. */
@@ -177,9 +216,11 @@ interface ArchitectureSpec {
177
216
  meta: DiagramMeta;
178
217
  layout?: {
179
218
  origin?: Point;
219
+ /** How many columns the flow wraps at, for components with no row or col. */
180
220
  cols?: number;
181
221
  gapX?: number;
182
222
  gapY?: number;
223
+ /** A cell's width, which is also the width of the plates drawn in it. */
183
224
  cellW?: number;
184
225
  cellH?: number;
185
226
  };
@@ -199,8 +240,10 @@ interface WorkflowLane {
199
240
  interface WorkflowPhase {
200
241
  id: string;
201
242
  label: string;
243
+ /** The columns this phase claims. The header rule is drawn across them. */
202
244
  fromCol: number;
203
245
  toCol: number;
246
+ /** `security` and `dashed` dash the phase's rule; `emphasis` thickens it. */
204
247
  variant?: Variant;
205
248
  }
206
249
  /** A frame around a run of columns inside ONE lane. */
@@ -221,6 +264,11 @@ interface WorkflowNode extends NodeBase {
221
264
  * `main` is the path the reader should be able to follow without thinking;
222
265
  * `branch` leaves it and comes back; `async` does not block; `return` goes
223
266
  * backwards; `error` leaves for the exception lane.
267
+ *
268
+ * Three of them reach the drawing on their own: `async` and `error` take the
269
+ * quiet dashed line, and `return` takes an open arrowhead. `main` and `branch`
270
+ * do not, because `mainPath` already draws that distinction as weight. An
271
+ * explicit `variant` overrides any of it.
224
272
  */
225
273
  type WorkflowEdgeRole = 'main' | 'branch' | 'async' | 'return' | 'error';
226
274
  interface WorkflowEdge extends EdgeBase {
@@ -270,12 +318,14 @@ interface SequenceSpec {
270
318
  diagram_type?: 'sequence';
271
319
  meta: DiagramMeta & {
272
320
  /**
273
- * `fixed` gives every participant the same column width; `spread` divides
274
- * the figure evenly instead.
321
+ * `fixed` gives every participant a 148-unit column; `spread` gives every
322
+ * participant the width the WIDEST label needs.
275
323
  *
276
- * Reach for `spread` when a fixed layout would leave a wide empty margin,
277
- * or when a meaningful participant label does not fit. Shortening the label
278
- * to make it fit is the wrong repair the label is the data.
324
+ * Both are uniform a sequence diagram with columns of different widths
325
+ * reads as a diagram where the wide participant matters more so `spread`
326
+ * widens the whole figure rather than dividing it. Reach for it when a
327
+ * meaningful participant label does not fit a fixed column. Shortening the
328
+ * label to make it fit is the wrong repair: the label is the data.
279
329
  */
280
330
  column_fit?: 'fixed' | 'spread';
281
331
  };
@@ -331,8 +381,10 @@ interface LifecycleState extends NodeBase {
331
381
  type: LifecycleStateKind;
332
382
  /** A step number printed in the corner — `01`, `02a`. */
333
383
  step?: string;
384
+ /** Which lane holds it. Defaults to the first, which is the main rail. */
334
385
  lane?: string;
335
386
  col: number;
387
+ /** Nudges this state off its lane's centre line, for a state that needs room. */
336
388
  yOffset?: number;
337
389
  }
338
390
  interface LifecycleTransition extends EdgeBase {
package/dist/index.d.ts CHANGED
@@ -5,6 +5,11 @@ export { CONTROL_BASE, CONTROL_BORDER, isInvalid } from './lib/control.js';
5
5
  export { IndicatorStyle, useSelectionIndicator } from './lib/useSelectionIndicator.js';
6
6
  export { Button, ButtonProps, ButtonSize, ButtonVariant } from './components/Button/Button.js';
7
7
  export { FloatingIconButton, FloatingIconButtonProps } from './components/FloatingIconButton/FloatingIconButton.js';
8
+ export { Text, TextElement, TextProps, TextSize, TextTone } from './components/Text/Text.js';
9
+ export { Heading, HeadingLevel, HeadingProps, HeadingSize } from './components/Heading/Heading.js';
10
+ export { Code, CodeProps } from './components/Code/Code.js';
11
+ export { CodeBlock, CodeBlockProps } from './components/CodeBlock/CodeBlock.js';
12
+ export { Markdown, MarkdownProps } from './components/Markdown/Markdown.js';
8
13
  export { Badge, BadgeProps, BadgeTone } from './components/Badge/Badge.js';
9
14
  export { Tag, TagProps } from './components/Tag/Tag.js';
10
15
  export { Kbd, KbdProps } from './components/Kbd/Kbd.js';
@@ -13,6 +18,7 @@ export { StatusDot, StatusDotProps, StatusTone } from './components/StatusDot/St
13
18
  export { StatusPill, StatusPillProps } from './components/StatusPill/StatusPill.js';
14
19
  export { EXTERNAL_LINK_ARROW, LinkArrow, LinkArrowProps } from './components/LinkArrow/LinkArrow.js';
15
20
  export { Separator, SeparatorProps } from './components/Separator/Separator.js';
21
+ export { Timestamp, TimestampFormat, TimestampProps } from './components/Timestamp/Timestamp.js';
16
22
  export { Figure, FigureBand, FigureBandProps } from './components/FigureBand/FigureBand.js';
17
23
  export { Spinner, SpinnerProps } from './components/Spinner/Spinner.js';
18
24
  export { Skeleton, SkeletonBlock, SkeletonCircle, SkeletonLine, SkeletonPage, SkeletonPageProps, SkeletonProps, SkeletonText, SkeletonTextProps } from './components/Skeleton/Skeleton.js';
@@ -21,7 +27,7 @@ export { Alert, AlertProps, AlertTone } from './components/Alert/Alert.js';
21
27
  export { EmptyState, EmptyStateProps } from './components/EmptyState/EmptyState.js';
22
28
  export { ERROR_ACTION_CLASS, ErrorState, ErrorStateProps } from './components/ErrorState/ErrorState.js';
23
29
  export { Toaster } from './components/Toast/Toast.js';
24
- export { Field, FieldProps } from './components/Field/Field.js';
30
+ export { Field, FieldLayout, FieldProps } from './components/Field/Field.js';
25
31
  export { Combobox, ComboboxOption, ComboboxProps } from './components/Combobox/Combobox.js';
26
32
  export { DATE_PRESETS, DatePicker, DatePickerProps, DatePreset, DateRangePicker, DateRangePickerProps, RANGE_PRESETS } from './components/DatePicker/DatePicker.js';
27
33
  export { Slider, SliderProps } from './components/Slider/Slider.js';
@@ -34,11 +40,11 @@ export { Checkbox, CheckboxProps } from './components/Checkbox/Checkbox.js';
34
40
  export { RadioGroup, RadioGroupItem, RadioGroupItemProps, RadioGroupProps } from './components/RadioGroup/RadioGroup.js';
35
41
  export { Switch, SwitchProps } from './components/Switch/Switch.js';
36
42
  export { Dialog, DialogClose, DialogContent, DialogContentProps, DialogTrigger } from './components/Dialog/Dialog.js';
37
- export { DropdownMenu, DropdownMenuContent, DropdownMenuContentProps, DropdownMenuItem, DropdownMenuItemProps, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from './components/DropdownMenu/DropdownMenu.js';
43
+ export { DropdownMenu, DropdownMenuContent, DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuGroupProps, DropdownMenuItem, DropdownMenuItemProps, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from './components/DropdownMenu/DropdownMenu.js';
38
44
  export { Tooltip, TooltipProps, TooltipProvider } from './components/Tooltip/Tooltip.js';
39
45
  export { Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverContentProps, PopoverTrigger } from './components/Popover/Popover.js';
40
46
  export { Sheet, SheetClose, SheetContent, SheetContentProps, SheetSide, SheetTrigger } from './components/Sheet/Sheet.js';
41
- export { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuItemProps, ContextMenuLabel, ContextMenuSeparator, ContextMenuTrigger } from './components/ContextMenu/ContextMenu.js';
47
+ export { ContextMenu, ContextMenuContent, ContextMenuGroup, ContextMenuGroupProps, ContextMenuItem, ContextMenuItemProps, ContextMenuLabel, ContextMenuSeparator, ContextMenuTrigger } from './components/ContextMenu/ContextMenu.js';
42
48
  export { Command, CommandDialog, CommandDialogProps, CommandEmpty, CommandFooter, CommandGroup, CommandHint, CommandHintProps, CommandInput, CommandItem, CommandItemProps, CommandList, CommandSeparator } from './components/Command/Command.js';
43
49
  export { MenuAction, SearchableMenu, SearchableMenuProps } from './components/SearchableMenu/SearchableMenu.js';
44
50
  export { Tabs, TabsContent, TabsList, TabsTrigger } from './components/Tabs/Tabs.js';
@@ -49,13 +55,19 @@ export { Pagination, PaginationProps, paginationRange } from './components/Pagin
49
55
  export { NavItem, NavItemProps } from './components/NavItem/NavItem.js';
50
56
  export { Card, CardBody, CardFooter, CardHeader, CardProps, CardTitle } from './components/Card/Card.js';
51
57
  export { SortDirection, TBody, TD, TDProps, TH, THProps, THead, TR, Table, TableAlign, TableBorders, TableProps } from './components/Table/Table.js';
52
- export { Calendar, CalendarProps } from './components/Calendar/Calendar.js';
58
+ export { DescriptionList, DescriptionListItem, DescriptionListLayout, DescriptionListProps } from './components/DescriptionList/DescriptionList.js';
59
+ export { Toolbar, ToolbarAlign, ToolbarPosition, ToolbarProps } from './components/Toolbar/Toolbar.js';
60
+ export { AspectRatio, AspectRatioProps } from './components/AspectRatio/AspectRatio.js';
61
+ export { Calendar, CalendarLabels, CalendarProps } from './components/Calendar/Calendar.js';
53
62
  export { ScrollArea, ScrollAreaProps } from './components/ScrollArea/ScrollArea.js';
54
63
  export { AppShell, AppShellProps } from './components/AppShell/AppShell.js';
55
64
  export { Article, ArticleProps } from './components/Article/Article.js';
56
65
  export { Diagram, DiagramEdge, DiagramNode, DiagramProps, DiagramSpec } from './components/Diagram/Diagram.js';
57
66
  export { Step, Steps, StepsProps } from './components/Steps/Steps.js';
58
67
  export { DateRange } from 'react-day-picker';
68
+ export { MarkdownHeadingLevel, MarkdownInline, MarkdownNode } from './components/Markdown/nodes.js';
69
+ export { parseMarkdown } from './components/Markdown/parse.js';
70
+ export { slugify } from './components/Markdown/slug.js';
59
71
  export { toast } from 'sonner';
60
72
  import 'react';
61
73
  import 'clsx';
package/dist/index.js CHANGED
@@ -5,6 +5,11 @@ import { CONTROL_BASE, CONTROL_BORDER, isInvalid } from "./lib/control.js";
5
5
  import { useSelectionIndicator } from "./lib/useSelectionIndicator.js";
6
6
  export * from "./components/Button/Button.js";
7
7
  export * from "./components/FloatingIconButton/FloatingIconButton.js";
8
+ export * from "./components/Text/Text.js";
9
+ export * from "./components/Heading/Heading.js";
10
+ export * from "./components/Code/Code.js";
11
+ export * from "./components/CodeBlock/CodeBlock.js";
12
+ export * from "./components/Markdown/Markdown.js";
8
13
  export * from "./components/Badge/Badge.js";
9
14
  export * from "./components/Tag/Tag.js";
10
15
  export * from "./components/Kbd/Kbd.js";
@@ -13,6 +18,7 @@ export * from "./components/StatusDot/StatusDot.js";
13
18
  export * from "./components/StatusPill/StatusPill.js";
14
19
  export * from "./components/LinkArrow/LinkArrow.js";
15
20
  export * from "./components/Separator/Separator.js";
21
+ export * from "./components/Timestamp/Timestamp.js";
16
22
  export * from "./components/FigureBand/FigureBand.js";
17
23
  export * from "./components/Spinner/Spinner.js";
18
24
  export * from "./components/Skeleton/Skeleton.js";
@@ -49,6 +55,9 @@ export * from "./components/Pagination/Pagination.js";
49
55
  export * from "./components/NavItem/NavItem.js";
50
56
  export * from "./components/Card/Card.js";
51
57
  export * from "./components/Table/Table.js";
58
+ export * from "./components/DescriptionList/DescriptionList.js";
59
+ export * from "./components/Toolbar/Toolbar.js";
60
+ export * from "./components/AspectRatio/AspectRatio.js";
52
61
  export * from "./components/Calendar/Calendar.js";
53
62
  export * from "./components/ScrollArea/ScrollArea.js";
54
63
  export * from "./components/AppShell/AppShell.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @misoto22/design — public entry.\n *\n * Components export from here; the look ships separately as CSS:\n *\n * import '@misoto22/design/styles.css' // compiled Tailwind + tokens + fonts\n *\n * or, for an app that already compiles Tailwind itself, the portable layers on\n * their own:\n *\n * import '@misoto22/design/tokens.css' // primitives\n * import '@misoto22/design/semantic.css' // roles\n * import '@misoto22/design/keyframes.css' // motion\n *\n * Everything below is a consumer contract. Adding an export is cheap; changing\n * or removing one is a breaking change (DESIGN-API-001).\n */\n\n// ─── Utilities ───\nexport * from './lib/overlay-container'\n\n// ─── Tokens ───\nexport { BRAND } from './tokens/brand'\nexport type { BrandColor } from './tokens/brand'\n\n// ─── Utilities ───\nexport { cn } from './lib/cn'\nexport { CONTROL_BASE, CONTROL_BORDER, isInvalid } from './lib/control'\nexport { useSelectionIndicator } from './lib/useSelectionIndicator'\nexport type { IndicatorStyle } from './lib/useSelectionIndicator'\n\n// ─── Actions ───\nexport * from './components/Button/Button'\nexport * from './components/FloatingIconButton/FloatingIconButton'\n\n// ─── Display ───\nexport * from './components/Badge/Badge'\nexport * from './components/Tag/Tag'\nexport * from './components/Kbd/Kbd'\nexport * from './components/Avatar/Avatar'\nexport * from './components/StatusDot/StatusDot'\nexport * from './components/StatusPill/StatusPill'\nexport * from './components/LinkArrow/LinkArrow'\nexport * from './components/Separator/Separator'\nexport * from './components/FigureBand/FigureBand'\n\n// ─── Feedback ───\nexport * from './components/Spinner/Spinner'\nexport * from './components/Skeleton/Skeleton'\nexport * from './components/Progress/Progress'\nexport * from './components/Alert/Alert'\nexport * from './components/EmptyState/EmptyState'\nexport * from './components/ErrorState/ErrorState'\nexport * from './components/Toast/Toast'\n\n// ─── Forms ───\nexport * from './components/Field/Field'\nexport * from './components/Combobox/Combobox'\nexport * from './components/DatePicker/DatePicker'\nexport * from './components/Slider/Slider'\nexport * from './components/ToggleGroup/ToggleGroup'\nexport * from './components/Input/Input'\nexport * from './components/Textarea/Textarea'\nexport * from './components/Select/Select'\nexport * from './components/NativeSelect/NativeSelect'\nexport * from './components/Checkbox/Checkbox'\nexport * from './components/RadioGroup/RadioGroup'\nexport * from './components/Switch/Switch'\n\n// ─── Overlays ───\nexport * from './components/Dialog/Dialog'\nexport * from './components/DropdownMenu/DropdownMenu'\nexport * from './components/Tooltip/Tooltip'\nexport * from './components/Popover/Popover'\nexport * from './components/Sheet/Sheet'\nexport * from './components/ContextMenu/ContextMenu'\nexport * from './components/Command/Command'\nexport * from './components/SearchableMenu/SearchableMenu'\n\n// ─── Navigation ───\nexport * from './components/Tabs/Tabs'\nexport * from './components/Accordion/Accordion'\nexport * from './components/Collapsible/Collapsible'\nexport * from './components/Breadcrumb/Breadcrumb'\nexport * from './components/Pagination/Pagination'\nexport * from './components/NavItem/NavItem'\n\n// ─── Surfaces / layout ───\nexport * from './components/Card/Card'\nexport * from './components/Table/Table'\nexport * from './components/Calendar/Calendar'\nexport * from './components/ScrollArea/ScrollArea'\nexport * from './components/AppShell/AppShell'\nexport * from './components/Article/Article'\nexport * from './components/Diagram/Diagram'\nexport * from './components/Steps/Steps'\n"],"mappings":"AAmBA,cAAc;AAGd,SAAS,aAAa;AAItB,SAAS,UAAU;AACnB,SAAS,cAAc,gBAAgB,iBAAiB;AACxD,SAAS,6BAA6B;AAItC,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @misoto22/design — public entry.\n *\n * Components export from here; the look ships separately as CSS:\n *\n * import '@misoto22/design/styles.css' // compiled Tailwind + tokens + fonts\n *\n * or, for an app that already compiles Tailwind itself, the portable layers on\n * their own:\n *\n * import '@misoto22/design/tokens.css' // primitives, plus data-mode and data-density\n * import '@misoto22/design/semantic.css' // roles\n * import '@misoto22/design/themes.css' // the other six theming axes\n * import '@misoto22/design/keyframes.css' // motion\n *\n * All four, or the theming attributes are attributes that do nothing: every\n * axis but `data-mode` and `data-density` is declared only in `themes.css`, and\n * an app that skips it writes `data-radius=\"sharp\"` and gets no error, no\n * warning and no corner.\n *\n * Everything below is a consumer contract. Adding an export is cheap; changing\n * or removing one is a breaking change (DESIGN-API-001).\n */\n\n// ─── Utilities ───\nexport * from './lib/overlay-container'\n\n// ─── Tokens ───\nexport { BRAND } from './tokens/brand'\nexport type { BrandColor } from './tokens/brand'\n\n// ─── Utilities ───\nexport { cn } from './lib/cn'\nexport { CONTROL_BASE, CONTROL_BORDER, isInvalid } from './lib/control'\nexport { useSelectionIndicator } from './lib/useSelectionIndicator'\nexport type { IndicatorStyle } from './lib/useSelectionIndicator'\n\n// ─── Actions ───\nexport * from './components/Button/Button'\nexport * from './components/FloatingIconButton/FloatingIconButton'\n\n// ─── Display ───\nexport * from './components/Text/Text'\nexport * from './components/Heading/Heading'\nexport * from './components/Code/Code'\nexport * from './components/CodeBlock/CodeBlock'\nexport * from './components/Markdown/Markdown'\nexport * from './components/Badge/Badge'\nexport * from './components/Tag/Tag'\nexport * from './components/Kbd/Kbd'\nexport * from './components/Avatar/Avatar'\nexport * from './components/StatusDot/StatusDot'\nexport * from './components/StatusPill/StatusPill'\nexport * from './components/LinkArrow/LinkArrow'\nexport * from './components/Separator/Separator'\nexport * from './components/Timestamp/Timestamp'\nexport * from './components/FigureBand/FigureBand'\n\n// ─── Feedback ───\nexport * from './components/Spinner/Spinner'\nexport * from './components/Skeleton/Skeleton'\nexport * from './components/Progress/Progress'\nexport * from './components/Alert/Alert'\nexport * from './components/EmptyState/EmptyState'\nexport * from './components/ErrorState/ErrorState'\nexport * from './components/Toast/Toast'\n\n// ─── Forms ───\nexport * from './components/Field/Field'\nexport * from './components/Combobox/Combobox'\nexport * from './components/DatePicker/DatePicker'\nexport * from './components/Slider/Slider'\nexport * from './components/ToggleGroup/ToggleGroup'\nexport * from './components/Input/Input'\nexport * from './components/Textarea/Textarea'\nexport * from './components/Select/Select'\nexport * from './components/NativeSelect/NativeSelect'\nexport * from './components/Checkbox/Checkbox'\nexport * from './components/RadioGroup/RadioGroup'\nexport * from './components/Switch/Switch'\n\n// ─── Overlays ───\nexport * from './components/Dialog/Dialog'\nexport * from './components/DropdownMenu/DropdownMenu'\nexport * from './components/Tooltip/Tooltip'\nexport * from './components/Popover/Popover'\nexport * from './components/Sheet/Sheet'\nexport * from './components/ContextMenu/ContextMenu'\nexport * from './components/Command/Command'\nexport * from './components/SearchableMenu/SearchableMenu'\n\n// ─── Navigation ───\nexport * from './components/Tabs/Tabs'\nexport * from './components/Accordion/Accordion'\nexport * from './components/Collapsible/Collapsible'\nexport * from './components/Breadcrumb/Breadcrumb'\nexport * from './components/Pagination/Pagination'\nexport * from './components/NavItem/NavItem'\n\n// ─── Surfaces / layout ───\nexport * from './components/Card/Card'\nexport * from './components/Table/Table'\nexport * from './components/DescriptionList/DescriptionList'\nexport * from './components/Toolbar/Toolbar'\nexport * from './components/AspectRatio/AspectRatio'\nexport * from './components/Calendar/Calendar'\nexport * from './components/ScrollArea/ScrollArea'\nexport * from './components/AppShell/AppShell'\nexport * from './components/Article/Article'\nexport * from './components/Diagram/Diagram'\nexport * from './components/Steps/Steps'\n"],"mappings":"AAyBA,cAAc;AAGd,SAAS,aAAa;AAItB,SAAS,UAAU;AACnB,SAAS,cAAc,gBAAgB,iBAAiB;AACxD,SAAS,6BAA6B;AAItC,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -202,10 +202,64 @@
202
202
  }
203
203
  }
204
204
 
205
- /* One place, not per-component. A user who has asked for less motion gets the
206
- end state immediately rather than a faster version of the same move. */
205
+ /* ─── Reduced motion ───
206
+ Two rules, and the argument behind them matters more than the CSS does.
207
+
208
+ This began as one opt-in rule: a surface that animated carried
209
+ `data-m22-animated`, and that attribute was what got cancelled. It was
210
+ forgotten four times — Accordion's panel, CollapsibleSection's panel,
211
+ SheetContent's slide, AppShell's drawer — by four authors across four
212
+ components. A mechanism four people independently fail to remember is not
213
+ being failed by its authors; it is failing them. The other half of the old
214
+ selector, `[class*='m22-anim']`, matched nothing whatsoever: Tailwind emits
215
+ `animate-[m22-collapsible-down_…]`, which contains no `m22-anim`, so half
216
+ the kill switch had never once fired and nothing anywhere said so.
217
+
218
+ So the GUARANTEE is now the universal rule below, deliberately the well-worn
219
+ one. It cannot be forgotten because there is nothing to remember: a new
220
+ component is covered before its author has heard of this file. It also
221
+ reaches `transition-duration`, which the old rule never did — and a panel
222
+ that slides is usually written as a transition, not a keyframe, which is how
223
+ two of the four escaped.
224
+
225
+ The cost, stated plainly: this is a `*` rule in a stylesheet consumers
226
+ import, so it reaches their components too. That is intended. It fires only
227
+ when the reader has asked their operating system for less motion, and this
228
+ package already asserts base styles on `*` (see index.css). A caller with
229
+ motion they consider essential can still keep it — `!important` on `*` is
230
+ the weakest `!important` there is, so any class-level
231
+ `animation-duration: … !important` outranks it. What changes is the default:
232
+ keeping motion under this preference becomes something you write down and
233
+ defend, instead of something you get by forgetting. That inversion is the
234
+ whole point of the change.
235
+
236
+ 0.01ms rather than `none`, because JavaScript listens. Radix unmounts a
237
+ closing panel on `animationend`; consumer code may await `transitionend`. A
238
+ near-zero duration still fires both, where `none` fires neither. It is the
239
+ reset's least obvious detail and the reason it is written this way wherever
240
+ it appears.
241
+
242
+ `[data-m22-animated]` stays, and is no longer load-bearing. It is a
243
+ component asserting that its motion is decorative, and it goes further than
244
+ the floor above by removing the animation outright rather than running an
245
+ instant frame of it. Read it as documentation with teeth. Do NOT read it as
246
+ the thing that makes reduced motion work — believing that was the mistake
247
+ this replaced. `src/__tests__/reduced-motion.test.tsx` holds both ends: it
248
+ fails if this block stops being universal, if it stops naming transitions,
249
+ if it grows another selector that matches nothing, or if a component reaches
250
+ for a keyframe here without making the assertion. */
207
251
  @media (prefers-reduced-motion: reduce) {
208
- [class*='m22-anim'],
252
+ *,
253
+ ::before,
254
+ ::after {
255
+ animation-delay: 0ms !important;
256
+ animation-duration: 0.01ms !important;
257
+ animation-iteration-count: 1 !important;
258
+ transition-delay: 0ms !important;
259
+ transition-duration: 0.01ms !important;
260
+ scroll-behavior: auto !important;
261
+ }
262
+
209
263
  [data-m22-animated] {
210
264
  animation: none !important;
211
265
  }
@@ -7,8 +7,8 @@ interface OverlayContainerProps {
7
7
  children: ReactNode;
8
8
  }
9
9
  /**
10
- * Redirects every overlay in the subtree — popover, select, menu, tooltip — into
11
- * a given element instead of `document.body`.
10
+ * Redirects every overlay in the subtree — popover, select, menu, tooltip,
11
+ * dialog, sheet — into a given element instead of `document.body`.
12
12
  *
13
13
  * Two problems, one cause. An overlay portalled to the body is positioned
14
14
  * against the VIEWPORT, so inside a bounded frame (a documentation example, a
@@ -20,7 +20,11 @@ interface OverlayContainerProps {
20
20
  * inherits what the frame declares, and collides with the frame's edges.
21
21
  *
22
22
  * The container must be positioned (`relative` is enough) for the panel to be
23
- * placed against it rather than against the nearest positioned ancestor.
23
+ * placed against it rather than against the nearest positioned ancestor. The
24
+ * modal surfaces need it for a second reason: they place themselves with
25
+ * `position: fixed`, which resolves against the VIEWPORT whatever element they
26
+ * are portalled into, so a named container switches them to `absolute` — and
27
+ * an unpositioned container would then hand them the wrong box.
24
28
  *
25
29
  * @example
26
30
  * const [frame, setFrame] = useState<HTMLElement | null>(null)
@@ -31,7 +35,13 @@ interface OverlayContainerProps {
31
35
  declare function OverlayContainer({ container, children }: OverlayContainerProps): react.JSX.Element;
32
36
  /**
33
37
  * The element overlays in this subtree should render into, or `null` for the
34
- * document body. Every portal in the library reads this.
38
+ * document body.
39
+ *
40
+ * Every portal in the library reads this. That sentence was false for a
41
+ * release: `Dialog` and `Sheet` rendered the Radix portal with no container and
42
+ * never called this hook, and their props derive from `Content`, which has no
43
+ * `container` — so a caller could not pass one either, and every modal example
44
+ * on the documentation site escaped the preview card it was drawn in.
35
45
  */
36
46
  declare function useOverlayContainer(): HTMLElement | null;
37
47
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/overlay-container.tsx"],"sourcesContent":["'use client'\n\nimport { createContext, useContext } from 'react'\nimport type { ReactNode } from 'react'\n\nconst OverlayContainerContext = createContext<HTMLElement | null>(null)\n\nexport interface OverlayContainerProps {\n /** The element overlays should render into. `null` restores the default. */\n container: HTMLElement | null\n children: ReactNode\n}\n\n/**\n * Redirects every overlay in the subtree — popover, select, menu, tooltip — into\n * a given element instead of `document.body`.\n *\n * Two problems, one cause. An overlay portalled to the body is positioned\n * against the VIEWPORT, so inside a bounded frame (a documentation example, a\n * device preview, a canvas) it flips and shifts against edges the reader cannot\n * see, and lands outside the box it belongs to. It also leaves the subtree, so\n * `dir=\"rtl\"` and `data-density` set on that frame stop reaching it.\n *\n * Naming the container fixes both: the panel renders inside the frame,\n * inherits what the frame declares, and collides with the frame's edges.\n *\n * The container must be positioned (`relative` is enough) for the panel to be\n * placed against it rather than against the nearest positioned ancestor.\n *\n * @example\n * const [frame, setFrame] = useState<HTMLElement | null>(null)\n * <div ref={setFrame} className=\"relative\" data-density=\"compact\">\n * <OverlayContainer container={frame}>{children}</OverlayContainer>\n * </div>\n */\nexport function OverlayContainer({ container, children }: OverlayContainerProps) {\n return <OverlayContainerContext value={container}>{children}</OverlayContainerContext>\n}\n\n/**\n * The element overlays in this subtree should render into, or `null` for the\n * document body. Every portal in the library reads this.\n */\nexport function useOverlayContainer(): HTMLElement | null {\n return useContext(OverlayContainerContext)\n}\n"],"mappings":";AAoCS;AAlCT,SAAS,eAAe,kBAAkB;AAG1C,MAAM,0BAA0B,cAAkC,IAAI;AA8B/D,SAAS,iBAAiB,EAAE,WAAW,SAAS,GAA0B;AAC/E,SAAO,oBAAC,2BAAwB,OAAO,WAAY,UAAS;AAC9D;AAMO,SAAS,sBAA0C;AACxD,SAAO,WAAW,uBAAuB;AAC3C;","names":[]}
1
+ {"version":3,"sources":["../../src/lib/overlay-container.tsx"],"sourcesContent":["'use client'\n\nimport { createContext, useContext } from 'react'\nimport type { ReactNode } from 'react'\n\nconst OverlayContainerContext = createContext<HTMLElement | null>(null)\n\nexport interface OverlayContainerProps {\n /** The element overlays should render into. `null` restores the default. */\n container: HTMLElement | null\n children: ReactNode\n}\n\n/**\n * Redirects every overlay in the subtree — popover, select, menu, tooltip,\n * dialog, sheet — into a given element instead of `document.body`.\n *\n * Two problems, one cause. An overlay portalled to the body is positioned\n * against the VIEWPORT, so inside a bounded frame (a documentation example, a\n * device preview, a canvas) it flips and shifts against edges the reader cannot\n * see, and lands outside the box it belongs to. It also leaves the subtree, so\n * `dir=\"rtl\"` and `data-density` set on that frame stop reaching it.\n *\n * Naming the container fixes both: the panel renders inside the frame,\n * inherits what the frame declares, and collides with the frame's edges.\n *\n * The container must be positioned (`relative` is enough) for the panel to be\n * placed against it rather than against the nearest positioned ancestor. The\n * modal surfaces need it for a second reason: they place themselves with\n * `position: fixed`, which resolves against the VIEWPORT whatever element they\n * are portalled into, so a named container switches them to `absolute` — and\n * an unpositioned container would then hand them the wrong box.\n *\n * @example\n * const [frame, setFrame] = useState<HTMLElement | null>(null)\n * <div ref={setFrame} className=\"relative\" data-density=\"compact\">\n * <OverlayContainer container={frame}>{children}</OverlayContainer>\n * </div>\n */\nexport function OverlayContainer({ container, children }: OverlayContainerProps) {\n return <OverlayContainerContext value={container}>{children}</OverlayContainerContext>\n}\n\n/**\n * The element overlays in this subtree should render into, or `null` for the\n * document body.\n *\n * Every portal in the library reads this. That sentence was false for a\n * release: `Dialog` and `Sheet` rendered the Radix portal with no container and\n * never called this hook, and their props derive from `Content`, which has no\n * `container` — so a caller could not pass one either, and every modal example\n * on the documentation site escaped the preview card it was drawn in.\n */\nexport function useOverlayContainer(): HTMLElement | null {\n return useContext(OverlayContainerContext)\n}\n"],"mappings":";AAwCS;AAtCT,SAAS,eAAe,kBAAkB;AAG1C,MAAM,0BAA0B,cAAkC,IAAI;AAkC/D,SAAS,iBAAiB,EAAE,WAAW,SAAS,GAA0B;AAC/E,SAAO,oBAAC,2BAAwB,OAAO,WAAY,UAAS;AAC9D;AAYO,SAAS,sBAA0C;AACxD,SAAO,WAAW,uBAAuB;AAC3C;","names":[]}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Development warnings, written for the reader most likely to hit them.
3
+ *
4
+ * The skill in this package documents a handful of ways to misuse a component
5
+ * that fail SILENTLY — a `Field` whose child is a wrapper wires no label, an
6
+ * icon-only `Button` with no accessible name renders perfectly and is invisible
7
+ * to a screen reader. Documentation is the wrong place for those on its own: it
8
+ * only helps a reader who went looking, and the whole problem is that nothing
9
+ * told them to look.
10
+ *
11
+ * So the component says it, at the moment it happens. The shape follows what an
12
+ * agent needs to repair its own call without asking anyone: a stable `code` it
13
+ * can branch on, the `field` that caused it, an imperative one-line `fix`, and
14
+ * where to get the rest. A message that only says "invalid props" makes an
15
+ * agent guess, and it guesses by trying things.
16
+ *
17
+ * Three constraints this has to keep:
18
+ *
19
+ * - **Dev only.** Every call site is behind `process.env.NODE_ENV`, which the
20
+ * consumer's bundler replaces and then drops. Nothing here reaches a
21
+ * production bundle.
22
+ * - **Once per problem.** React renders twice in StrictMode and again on every
23
+ * state change; a warning printed each time is noise that trains people to
24
+ * ignore it.
25
+ * - **Never throws.** A warning that breaks the render is worse than the bug it
26
+ * describes, and this runs during render.
27
+ */
28
+ /**
29
+ * True outside a production build, and false when nothing said either way.
30
+ *
31
+ * Every bundler replaces `process.env.NODE_ENV` with a literal, which folds
32
+ * this to `false` and lets the guarded calls below be dropped entirely. Off is
33
+ * the right default for the case where nothing replaced it: a warning that
34
+ * reaches a user's console is worse than one an author never sees.
35
+ */
36
+ declare const DEV: boolean;
37
+ interface Warning {
38
+ /** Stable identifier. Never reused for a different cause. */
39
+ code: string;
40
+ /** What went wrong, in one declarative sentence. */
41
+ problem: string;
42
+ /** The prop or child that caused it. */
43
+ field: string;
44
+ /** Imperative, and self-sufficient — assume nobody opens the docs. */
45
+ fix: string;
46
+ /** The component to ask about. */
47
+ component: string;
48
+ }
49
+ /**
50
+ * Print one warning, once.
51
+ *
52
+ * Guarded at the call site too, so a production bundle drops the whole
53
+ * expression rather than the branch inside it.
54
+ */
55
+ declare function warn({ code, problem, field, fix, component }: Warning): void;
56
+ /** Test seam: the dedupe is global state, and a suite needs it reset. */
57
+ declare function resetWarnings(): void;
58
+ /**
59
+ * Warn when a prop that is required for accessibility holds nothing usable.
60
+ *
61
+ * `Table.caption`, `Progress.label` and their siblings are required in the type
62
+ * precisely because forgetting them ships a control nobody can use without
63
+ * sight — and an empty string satisfies the type while satisfying nothing else.
64
+ * That is exactly the shape a model produces when it knows a prop is mandatory
65
+ * and has nothing to put in it.
66
+ *
67
+ * Not applied to `Avatar.alt`. An empty `alt` is the correct, deliberate markup
68
+ * for a decorative image, so warning on it would be a false positive on a
69
+ * pattern the platform endorses.
70
+ */
71
+ declare function warnBlankName(component: string, field: string, value: unknown, announces: string): void;
72
+
73
+ export { DEV, resetWarnings, warn, warnBlankName };
@@ -0,0 +1,38 @@
1
+ const DEV = typeof process !== "undefined" && process?.env?.NODE_ENV !== "production";
2
+ const seen = /* @__PURE__ */ new Set();
3
+ function warn({ code, problem, field, fix, component }) {
4
+ if (!DEV) return;
5
+ const key = `${code}:${field}`;
6
+ if (seen.has(key)) return;
7
+ seen.add(key);
8
+ console.warn(
9
+ [
10
+ `[@misoto22/design] ${code}`,
11
+ ` ${problem}`,
12
+ ` field: ${field}`,
13
+ ` fix: ${fix}`,
14
+ ` docs: npx misoto22-design docs ${component}`
15
+ ].join("\n")
16
+ );
17
+ }
18
+ function resetWarnings() {
19
+ seen.clear();
20
+ }
21
+ function warnBlankName(component, field, value, announces) {
22
+ if (!DEV) return;
23
+ if (typeof value !== "string" || value.trim() !== "") return;
24
+ warn({
25
+ code: "REQUIRED_NAME_BLANK",
26
+ problem: `${component}.${field} is an empty string, so ${announces}. The type is satisfied; nothing else is.`,
27
+ field: `${component}.${field}`,
28
+ fix: `Give ${field} the words a person would need to understand this without seeing it.`,
29
+ component
30
+ });
31
+ }
32
+ export {
33
+ DEV,
34
+ resetWarnings,
35
+ warn,
36
+ warnBlankName
37
+ };
38
+ //# sourceMappingURL=warn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/warn.ts"],"sourcesContent":["/**\n * Development warnings, written for the reader most likely to hit them.\n *\n * The skill in this package documents a handful of ways to misuse a component\n * that fail SILENTLY — a `Field` whose child is a wrapper wires no label, an\n * icon-only `Button` with no accessible name renders perfectly and is invisible\n * to a screen reader. Documentation is the wrong place for those on its own: it\n * only helps a reader who went looking, and the whole problem is that nothing\n * told them to look.\n *\n * So the component says it, at the moment it happens. The shape follows what an\n * agent needs to repair its own call without asking anyone: a stable `code` it\n * can branch on, the `field` that caused it, an imperative one-line `fix`, and\n * where to get the rest. A message that only says \"invalid props\" makes an\n * agent guess, and it guesses by trying things.\n *\n * Three constraints this has to keep:\n *\n * - **Dev only.** Every call site is behind `process.env.NODE_ENV`, which the\n * consumer's bundler replaces and then drops. Nothing here reaches a\n * production bundle.\n * - **Once per problem.** React renders twice in StrictMode and again on every\n * state change; a warning printed each time is noise that trains people to\n * ignore it.\n * - **Never throws.** A warning that breaks the render is worse than the bug it\n * describes, and this runs during render.\n */\n\n/**\n * `process.env.NODE_ENV`, without pulling Node's types into a browser library.\n *\n * Declared module-locally rather than in a `.d.ts`: an ambient `process` there\n * would travel into the emitted declarations and collide with a consumer's own\n * Node types. The `typeof` guard is what makes it safe in a bundle that never\n * defines it.\n */\ndeclare const process: { env?: { NODE_ENV?: string } } | undefined\n\n/**\n * True outside a production build, and false when nothing said either way.\n *\n * Every bundler replaces `process.env.NODE_ENV` with a literal, which folds\n * this to `false` and lets the guarded calls below be dropped entirely. Off is\n * the right default for the case where nothing replaced it: a warning that\n * reaches a user's console is worse than one an author never sees.\n */\nexport const DEV =\n typeof process !== 'undefined' && process?.env?.NODE_ENV !== 'production'\n\n/** Warnings already printed, keyed by code + detail, so a re-render is quiet. */\nconst seen = new Set<string>()\n\ninterface Warning {\n /** Stable identifier. Never reused for a different cause. */\n code: string\n /** What went wrong, in one declarative sentence. */\n problem: string\n /** The prop or child that caused it. */\n field: string\n /** Imperative, and self-sufficient — assume nobody opens the docs. */\n fix: string\n /** The component to ask about. */\n component: string\n}\n\n/**\n * Print one warning, once.\n *\n * Guarded at the call site too, so a production bundle drops the whole\n * expression rather than the branch inside it.\n */\nexport function warn({ code, problem, field, fix, component }: Warning): void {\n if (!DEV) return\n\n const key = `${code}:${field}`\n if (seen.has(key)) return\n seen.add(key)\n\n console.warn(\n [\n `[@misoto22/design] ${code}`,\n ` ${problem}`,\n ` field: ${field}`,\n ` fix: ${fix}`,\n ` docs: npx misoto22-design docs ${component}`,\n ].join('\\n'),\n )\n}\n\n/** Test seam: the dedupe is global state, and a suite needs it reset. */\nexport function resetWarnings(): void {\n seen.clear()\n}\n\n/**\n * Warn when a prop that is required for accessibility holds nothing usable.\n *\n * `Table.caption`, `Progress.label` and their siblings are required in the type\n * precisely because forgetting them ships a control nobody can use without\n * sight — and an empty string satisfies the type while satisfying nothing else.\n * That is exactly the shape a model produces when it knows a prop is mandatory\n * and has nothing to put in it.\n *\n * Not applied to `Avatar.alt`. An empty `alt` is the correct, deliberate markup\n * for a decorative image, so warning on it would be a false positive on a\n * pattern the platform endorses.\n */\nexport function warnBlankName(\n component: string,\n field: string,\n value: unknown,\n announces: string,\n): void {\n if (!DEV) return\n if (typeof value !== 'string' || value.trim() !== '') return\n\n warn({\n code: 'REQUIRED_NAME_BLANK',\n problem: `${component}.${field} is an empty string, so ${announces}. The type is satisfied; nothing else is.`,\n field: `${component}.${field}`,\n fix: `Give ${field} the words a person would need to understand this without seeing it.`,\n component,\n })\n}\n"],"mappings":"AA8CO,MAAM,MACX,OAAO,YAAY,eAAe,SAAS,KAAK,aAAa;AAG/D,MAAM,OAAO,oBAAI,IAAY;AAqBtB,SAAS,KAAK,EAAE,MAAM,SAAS,OAAO,KAAK,UAAU,GAAkB;AAC5E,MAAI,CAAC,IAAK;AAEV,QAAM,MAAM,GAAG,IAAI,IAAI,KAAK;AAC5B,MAAI,KAAK,IAAI,GAAG,EAAG;AACnB,OAAK,IAAI,GAAG;AAEZ,UAAQ;AAAA,IACN;AAAA,MACE,sBAAsB,IAAI;AAAA,MAC1B,KAAK,OAAO;AAAA,MACZ,YAAY,KAAK;AAAA,MACjB,YAAY,GAAG;AAAA,MACf,qCAAqC,SAAS;AAAA,IAChD,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAGO,SAAS,gBAAsB;AACpC,OAAK,MAAM;AACb;AAeO,SAAS,cACd,WACA,OACA,OACA,WACM;AACN,MAAI,CAAC,IAAK;AACV,MAAI,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,GAAI;AAEtD,OAAK;AAAA,IACH,MAAM;AAAA,IACN,SAAS,GAAG,SAAS,IAAI,KAAK,2BAA2B,SAAS;AAAA,IAClE,OAAO,GAAG,SAAS,IAAI,KAAK;AAAA,IAC5B,KAAK,QAAQ,KAAK;AAAA,IAClB;AAAA,EACF,CAAC;AACH;","names":[]}
package/dist/semantic.css CHANGED
@@ -105,14 +105,21 @@
105
105
  Law 2 — a box-shadow is never blurred. The system has no elevation ramp;
106
106
  depth is a hard offset in ink, applied per component. These three resolve
107
107
  to nothing on purpose, so a component ported from a shadowed system stays
108
- flat instead of drawing a blur the White Reset does not have. Reach for
109
- --lift instead, which is the offset idiom expressed once. */
108
+ flat instead of drawing a blur the White Reset does not have. --lift below
109
+ is the sanctioned offset idiom for anything that must read as raised. */
110
110
  --shadow-color: transparent;
111
111
  --shadow-sm: none;
112
112
  --shadow: none;
113
113
  --shadow-lg: none;
114
- /* The one depth cue the system does have: a hard 3px ink offset, no blur.
115
- Used by a plate that must read as sitting above the page. */
114
+ /* The one depth cue the system does have: a hard 3px ink offset, no blur,
115
+ in the accent rather than a grey because --shadow-offset points at --clay.
116
+
117
+ PUBLISHED, NOT CONSUMED. No component in this package sets either one —
118
+ there is not a single shadow-(--lift) in src/. What the library actually
119
+ separates with is a hairline, a change of ground, and the reversal that
120
+ Card variant="plate" reaches for. These two exist so a consumer building a
121
+ raised plate of their own has the system's answer instead of inventing a
122
+ blur; do not read them as describing what the library does. */
116
123
  --lift: 3px 3px 0 0 var(--shadow-offset);
117
124
  --lift-sm: 2px 2px 0 0 var(--shadow-offset);
118
125
 
@@ -126,8 +133,12 @@
126
133
  --overlay: var(--scrim);
127
134
  --disabled-opacity: 0.5;
128
135
 
129
- /* ─── Stacking ─── five component-facing names onto the seven ranks. ───── */
130
- --z-dropdown: var(--z-drawer);
136
+ /* ─── Stacking ─── two component-facing names onto the seven ranks. ──────
137
+ The other five ranks are read by their own names; only these two had a
138
+ component-facing spelling that outlived the rank it pointed at.
139
+ --z-dropdown pointed at --z-drawer, 100, which put every anchored panel
140
+ under the modal at 210 that opened it. */
141
+ --z-dropdown: var(--z-anchored);
131
142
  --z-overlay: var(--z-scrim);
132
143
 
133
144
  /* ─── Diagrams ───────────────────────────────────────────────────────────