@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.
- package/AGENTS.md +87 -0
- package/CLAUDE.md +1 -0
- package/README.md +50 -5
- package/bin/misoto22-design.mjs +59 -13
- package/dist/agent/Accordion.md +24 -1
- package/dist/agent/Alert.md +23 -1
- package/dist/agent/AppShell.md +30 -2
- package/dist/agent/ArchitectureFigure.md +25 -2
- package/dist/agent/AreaChart.md +27 -2
- package/dist/agent/Article.md +26 -3
- package/dist/agent/AspectRatio.md +57 -0
- package/dist/agent/Avatar.md +25 -5
- package/dist/agent/Badge.md +22 -1
- package/dist/agent/BarChart.md +29 -2
- package/dist/agent/BarList.md +27 -1
- package/dist/agent/BigNumber.md +26 -2
- package/dist/agent/BoxPlot.md +24 -1
- package/dist/agent/Breadcrumb.md +24 -2
- package/dist/agent/BulletChart.md +23 -1
- package/dist/agent/Button.md +25 -1
- package/dist/agent/Calendar.md +37 -3
- package/dist/agent/Card.md +24 -2
- package/dist/agent/Checkbox.md +23 -2
- package/dist/agent/Code.md +50 -0
- package/dist/agent/CodeBlock.md +74 -0
- package/dist/agent/Collapsible.md +22 -1
- package/dist/agent/Combobox.md +29 -3
- package/dist/agent/Command.md +25 -2
- package/dist/agent/ComposedChart.md +26 -2
- package/dist/agent/ContextMenu.md +37 -4
- package/dist/agent/DataflowFigure.md +22 -1
- package/dist/agent/DatePicker.md +34 -6
- package/dist/agent/DescriptionList.md +68 -0
- package/dist/agent/Diagram.md +27 -3
- package/dist/agent/DiagramCanvas.md +24 -1
- package/dist/agent/DiagramExportMenu.md +29 -3
- package/dist/agent/DiagramInspector.md +23 -1
- package/dist/agent/DiagramLegend.md +22 -1
- package/dist/agent/DiagramMinimap.md +24 -4
- package/dist/agent/DiagramToolbar.md +23 -1
- package/dist/agent/Dialog.md +26 -3
- package/dist/agent/DropdownMenu.md +45 -6
- package/dist/agent/EmptyState.md +26 -1
- package/dist/agent/ErrorState.md +27 -2
- package/dist/agent/Facet.md +25 -1
- package/dist/agent/Field.md +45 -4
- package/dist/agent/FigureBand.md +24 -1
- package/dist/agent/FloatingIconButton.md +23 -1
- package/dist/agent/FunnelChart.md +23 -1
- package/dist/agent/Heading.md +64 -0
- package/dist/agent/Heatmap.md +25 -1
- package/dist/agent/Histogram.md +26 -2
- package/dist/agent/Input.md +22 -1
- package/dist/agent/Kbd.md +19 -1
- package/dist/agent/LifecycleFigure.md +22 -1
- package/dist/agent/LineChart.md +26 -2
- package/dist/agent/LinkArrow.md +20 -1
- package/dist/agent/Markdown.md +68 -0
- package/dist/agent/NativeSelect.md +23 -2
- package/dist/agent/NavItem.md +21 -1
- package/dist/agent/Pagination.md +28 -2
- package/dist/agent/PieChart.md +26 -2
- package/dist/agent/Popover.md +23 -1
- package/dist/agent/Progress.md +27 -3
- package/dist/agent/RadarChart.md +26 -2
- package/dist/agent/RadialChart.md +26 -3
- package/dist/agent/RadioGroup.md +23 -2
- package/dist/agent/SankeyChart.md +25 -2
- package/dist/agent/ScatterChart.md +27 -2
- package/dist/agent/ScrollArea.md +24 -3
- package/dist/agent/SearchableMenu.md +23 -1
- package/dist/agent/Select.md +29 -3
- package/dist/agent/Separator.md +28 -4
- package/dist/agent/SequenceFigure.md +23 -1
- package/dist/agent/Sheet.md +25 -2
- package/dist/agent/Skeleton.md +24 -2
- package/dist/agent/Slider.md +27 -4
- package/dist/agent/Sparkline.md +23 -1
- package/dist/agent/Spinner.md +24 -2
- package/dist/agent/StatusDot.md +20 -1
- package/dist/agent/StatusPill.md +28 -2
- package/dist/agent/Steps.md +24 -1
- package/dist/agent/Switch.md +21 -1
- package/dist/agent/Table.md +26 -3
- package/dist/agent/Tabs.md +24 -2
- package/dist/agent/Tag.md +40 -9
- package/dist/agent/Text.md +65 -0
- package/dist/agent/Textarea.md +20 -1
- package/dist/agent/Timestamp.md +64 -0
- package/dist/agent/Toast.md +26 -2
- package/dist/agent/ToggleGroup.md +24 -2
- package/dist/agent/Toolbar.md +71 -0
- package/dist/agent/Tooltip.md +23 -1
- package/dist/agent/TreemapChart.md +24 -1
- package/dist/agent/WaterfallChart.md +24 -1
- package/dist/agent/WorkflowFigure.md +24 -2
- package/dist/agent/catalog.json +5602 -745
- package/dist/agent/index.md +13 -4
- package/dist/article.css +16 -4
- package/dist/charts/AreaChart/AreaChart.d.ts +9 -2
- package/dist/charts/AreaChart/AreaChart.js +12 -13
- package/dist/charts/AreaChart/AreaChart.js.map +1 -1
- package/dist/charts/BarChart/BarChart.d.ts +14 -3
- package/dist/charts/BarChart/BarChart.js +20 -12
- package/dist/charts/BarChart/BarChart.js.map +1 -1
- package/dist/charts/BarList/BarList.d.ts +9 -1
- package/dist/charts/BarList/BarList.js +9 -1
- package/dist/charts/BarList/BarList.js.map +1 -1
- package/dist/charts/BigNumber/BigNumber.d.ts +19 -3
- package/dist/charts/BigNumber/BigNumber.js +25 -5
- package/dist/charts/BigNumber/BigNumber.js.map +1 -1
- package/dist/charts/BoxPlot/BoxPlot.js +4 -2
- package/dist/charts/BoxPlot/BoxPlot.js.map +1 -1
- package/dist/charts/BulletChart/BulletChart.js +28 -7
- package/dist/charts/BulletChart/BulletChart.js.map +1 -1
- package/dist/charts/ComposedChart/ComposedChart.d.ts +9 -2
- package/dist/charts/ComposedChart/ComposedChart.js +10 -10
- package/dist/charts/ComposedChart/ComposedChart.js.map +1 -1
- package/dist/charts/FunnelChart/FunnelChart.d.ts +7 -2
- package/dist/charts/FunnelChart/FunnelChart.js +6 -16
- package/dist/charts/FunnelChart/FunnelChart.js.map +1 -1
- package/dist/charts/Heatmap/Heatmap.d.ts +17 -3
- package/dist/charts/Heatmap/Heatmap.js +20 -11
- package/dist/charts/Heatmap/Heatmap.js.map +1 -1
- package/dist/charts/Histogram/Histogram.d.ts +24 -1
- package/dist/charts/Histogram/Histogram.js +43 -11
- package/dist/charts/Histogram/Histogram.js.map +1 -1
- package/dist/charts/LineChart/LineChart.d.ts +9 -2
- package/dist/charts/LineChart/LineChart.js +11 -12
- package/dist/charts/LineChart/LineChart.js.map +1 -1
- package/dist/charts/PieChart/PieChart.d.ts +15 -3
- package/dist/charts/PieChart/PieChart.js +14 -6
- package/dist/charts/PieChart/PieChart.js.map +1 -1
- package/dist/charts/RadarChart/RadarChart.d.ts +15 -3
- package/dist/charts/RadarChart/RadarChart.js +11 -9
- package/dist/charts/RadarChart/RadarChart.js.map +1 -1
- package/dist/charts/RadialChart/RadialChart.d.ts +22 -4
- package/dist/charts/RadialChart/RadialChart.js +28 -6
- package/dist/charts/RadialChart/RadialChart.js.map +1 -1
- package/dist/charts/SankeyChart/SankeyChart.d.ts +16 -4
- package/dist/charts/SankeyChart/SankeyChart.js +14 -6
- package/dist/charts/SankeyChart/SankeyChart.js.map +1 -1
- package/dist/charts/ScatterChart/ScatterChart.d.ts +24 -3
- package/dist/charts/ScatterChart/ScatterChart.js +21 -15
- package/dist/charts/ScatterChart/ScatterChart.js.map +1 -1
- package/dist/charts/Sparkline/Sparkline.js +5 -3
- package/dist/charts/Sparkline/Sparkline.js.map +1 -1
- package/dist/charts/TreemapChart/TreemapChart.d.ts +7 -2
- package/dist/charts/TreemapChart/TreemapChart.js +20 -11
- package/dist/charts/TreemapChart/TreemapChart.js.map +1 -1
- package/dist/charts/WaterfallChart/WaterfallChart.js +4 -2
- package/dist/charts/WaterfallChart/WaterfallChart.js.map +1 -1
- package/dist/charts/lib/export.d.ts +1 -0
- package/dist/charts/lib/figure.d.ts +21 -1
- package/dist/charts/lib/figure.js +5 -2
- package/dist/charts/lib/figure.js.map +1 -1
- package/dist/charts/lib/scale.d.ts +23 -0
- package/dist/charts/lib/scale.js +13 -0
- package/dist/charts/lib/scale.js.map +1 -0
- package/dist/charts/lib/selection.d.ts +20 -0
- package/dist/charts/lib/selection.js +18 -0
- package/dist/charts/lib/selection.js.map +1 -0
- package/dist/charts/lib/toolbar.d.ts +1 -0
- package/dist/components/Accordion/Accordion.js +8 -1
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/AppShell/AppShell.d.ts +6 -0
- package/dist/components/AppShell/AppShell.js +34 -4
- package/dist/components/AppShell/AppShell.js.map +1 -1
- package/dist/components/Article/Article.d.ts +11 -4
- package/dist/components/Article/Article.js +13 -0
- package/dist/components/Article/Article.js.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.d.ts +46 -0
- package/dist/components/AspectRatio/AspectRatio.js +33 -0
- package/dist/components/AspectRatio/AspectRatio.js.map +1 -0
- package/dist/components/Avatar/Avatar.d.ts +12 -3
- package/dist/components/Avatar/Avatar.js +6 -1
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.d.ts +6 -0
- package/dist/components/Breadcrumb/Breadcrumb.js +15 -0
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/Button/Button.js +14 -0
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts +29 -3
- package/dist/components/Calendar/Calendar.js +60 -12
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/Card/Card.d.ts +6 -0
- package/dist/components/Card/Card.js +1 -1
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts +5 -2
- package/dist/components/Checkbox/Checkbox.js +12 -2
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Code/Code.d.ts +30 -0
- package/dist/components/Code/Code.js +21 -0
- package/dist/components/Code/Code.js.map +1 -0
- package/dist/components/CodeBlock/CodeBlock.d.ts +141 -0
- package/dist/components/CodeBlock/CodeBlock.js +123 -0
- package/dist/components/CodeBlock/CodeBlock.js.map +1 -0
- package/dist/components/Collapsible/Collapsible.js +10 -2
- package/dist/components/Collapsible/Collapsible.js.map +1 -1
- package/dist/components/Combobox/Combobox.d.ts +15 -1
- package/dist/components/Combobox/Combobox.js +25 -5
- package/dist/components/Combobox/Combobox.js.map +1 -1
- package/dist/components/Command/Command.d.ts +4 -2
- package/dist/components/Command/Command.js +13 -1
- package/dist/components/Command/Command.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.d.ts +30 -5
- package/dist/components/ContextMenu/ContextMenu.js +32 -2
- package/dist/components/ContextMenu/ContextMenu.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +36 -4
- package/dist/components/DatePicker/DatePicker.js +55 -12
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DescriptionList/DescriptionList.d.ts +73 -0
- package/dist/components/DescriptionList/DescriptionList.js +35 -0
- package/dist/components/DescriptionList/DescriptionList.js.map +1 -0
- package/dist/components/Diagram/Diagram.d.ts +8 -3
- package/dist/components/Diagram/Diagram.js +82 -10
- package/dist/components/Diagram/Diagram.js.map +1 -1
- package/dist/components/Dialog/Dialog.d.ts +18 -3
- package/dist/components/Dialog/Dialog.js +20 -2
- package/dist/components/Dialog/Dialog.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +49 -11
- package/dist/components/DropdownMenu/DropdownMenu.js +32 -2
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/dist/components/EmptyState/EmptyState.d.ts +25 -1
- package/dist/components/EmptyState/EmptyState.js +3 -1
- package/dist/components/EmptyState/EmptyState.js.map +1 -1
- package/dist/components/ErrorState/ErrorState.d.ts +22 -1
- package/dist/components/ErrorState/ErrorState.js +11 -2
- package/dist/components/ErrorState/ErrorState.js.map +1 -1
- package/dist/components/Field/Field.d.ts +70 -3
- package/dist/components/Field/Field.js +53 -12
- package/dist/components/Field/Field.js.map +1 -1
- package/dist/components/Field/field-control.d.ts +31 -0
- package/dist/components/Field/field-control.js +12 -0
- package/dist/components/Field/field-control.js.map +1 -0
- package/dist/components/FloatingIconButton/FloatingIconButton.js +2 -0
- package/dist/components/FloatingIconButton/FloatingIconButton.js.map +1 -1
- package/dist/components/Heading/Heading.d.ts +62 -0
- package/dist/components/Heading/Heading.js +44 -0
- package/dist/components/Heading/Heading.js.map +1 -0
- package/dist/components/Markdown/Markdown.d.ts +139 -0
- package/dist/components/Markdown/Markdown.js +135 -0
- package/dist/components/Markdown/Markdown.js.map +1 -0
- package/dist/components/Markdown/inline.d.ts +29 -0
- package/dist/components/Markdown/inline.js +74 -0
- package/dist/components/Markdown/inline.js.map +1 -0
- package/dist/components/Markdown/nodes.d.ts +65 -0
- package/dist/components/Markdown/nodes.js +1 -0
- package/dist/components/Markdown/nodes.js.map +1 -0
- package/dist/components/Markdown/parse.d.ts +24 -0
- package/dist/components/Markdown/parse.js +110 -0
- package/dist/components/Markdown/parse.js.map +1 -0
- package/dist/components/Markdown/slug.d.ts +15 -0
- package/dist/components/Markdown/slug.js +7 -0
- package/dist/components/Markdown/slug.js.map +1 -0
- package/dist/components/NativeSelect/NativeSelect.d.ts +6 -0
- package/dist/components/NativeSelect/NativeSelect.js +2 -3
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/Pagination/Pagination.d.ts +24 -1
- package/dist/components/Pagination/Pagination.js +6 -3
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Progress/Progress.d.ts +17 -5
- package/dist/components/Progress/Progress.js +18 -6
- package/dist/components/Progress/Progress.js.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.d.ts +6 -0
- package/dist/components/RadioGroup/RadioGroup.js +11 -1
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.d.ts +15 -0
- package/dist/components/ScrollArea/ScrollArea.js +2 -2
- package/dist/components/ScrollArea/ScrollArea.js.map +1 -1
- package/dist/components/SearchableMenu/SearchableMenu.d.ts +11 -2
- package/dist/components/SearchableMenu/SearchableMenu.js +24 -2
- package/dist/components/SearchableMenu/SearchableMenu.js.map +1 -1
- package/dist/components/Select/Select.d.ts +18 -2
- package/dist/components/Select/Select.js +20 -3
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Separator/Separator.d.ts +21 -3
- package/dist/components/Separator/Separator.js +9 -1
- package/dist/components/Separator/Separator.js.map +1 -1
- package/dist/components/Sheet/Sheet.d.ts +3 -0
- package/dist/components/Sheet/Sheet.js +11 -2
- package/dist/components/Sheet/Sheet.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.d.ts +8 -1
- package/dist/components/Skeleton/Skeleton.js +1 -1
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Slider/Slider.d.ts +21 -3
- package/dist/components/Slider/Slider.js +54 -27
- package/dist/components/Slider/Slider.js.map +1 -1
- package/dist/components/Spinner/Spinner.d.ts +8 -0
- package/dist/components/Spinner/Spinner.js +3 -2
- package/dist/components/Spinner/Spinner.js.map +1 -1
- package/dist/components/StatusPill/StatusPill.d.ts +5 -0
- package/dist/components/StatusPill/StatusPill.js +6 -0
- package/dist/components/StatusPill/StatusPill.js.map +1 -1
- package/dist/components/Table/Table.d.ts +6 -0
- package/dist/components/Table/Table.js +3 -1
- package/dist/components/Table/Table.js.map +1 -1
- package/dist/components/Tag/Tag.d.ts +68 -9
- package/dist/components/Tag/Tag.js +50 -10
- package/dist/components/Tag/Tag.js.map +1 -1
- package/dist/components/Text/Text.d.ts +62 -0
- package/dist/components/Text/Text.js +30 -0
- package/dist/components/Text/Text.js.map +1 -0
- package/dist/components/Timestamp/Timestamp.d.ts +59 -0
- package/dist/components/Timestamp/Timestamp.js +56 -0
- package/dist/components/Timestamp/Timestamp.js.map +1 -0
- package/dist/components/Toast/Toast.d.ts +9 -1
- package/dist/components/Toast/Toast.js +27 -4
- package/dist/components/Toast/Toast.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.d.ts +6 -1
- package/dist/components/ToggleGroup/ToggleGroup.js +11 -1
- package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
- package/dist/components/Toolbar/Toolbar.d.ts +55 -0
- package/dist/components/Toolbar/Toolbar.js +43 -0
- package/dist/components/Toolbar/Toolbar.js.map +1 -0
- package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.d.ts +6 -0
- package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.js +48 -8
- package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.js.map +1 -1
- package/dist/diagrams/DataflowFigure/DataflowFigure.js +21 -2
- package/dist/diagrams/DataflowFigure/DataflowFigure.js.map +1 -1
- package/dist/diagrams/DiagramCanvas/DiagramCanvas.d.ts +14 -0
- package/dist/diagrams/DiagramCanvas/DiagramCanvas.js +14 -7
- package/dist/diagrams/DiagramCanvas/DiagramCanvas.js.map +1 -1
- package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.d.ts +38 -4
- package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.js +14 -16
- package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.js.map +1 -1
- package/dist/diagrams/DiagramInspector/DiagramInspector.js +2 -2
- package/dist/diagrams/DiagramInspector/DiagramInspector.js.map +1 -1
- package/dist/diagrams/DiagramMinimap/DiagramMinimap.d.ts +23 -7
- package/dist/diagrams/DiagramMinimap/DiagramMinimap.js +45 -18
- package/dist/diagrams/DiagramMinimap/DiagramMinimap.js.map +1 -1
- package/dist/diagrams/LifecycleFigure/LifecycleFigure.js +44 -12
- package/dist/diagrams/LifecycleFigure/LifecycleFigure.js.map +1 -1
- package/dist/diagrams/SequenceFigure/SequenceFigure.js +35 -5
- package/dist/diagrams/SequenceFigure/SequenceFigure.js.map +1 -1
- package/dist/diagrams/WorkflowFigure/WorkflowFigure.d.ts +3 -1
- package/dist/diagrams/WorkflowFigure/WorkflowFigure.js +76 -28
- package/dist/diagrams/WorkflowFigure/WorkflowFigure.js.map +1 -1
- package/dist/diagrams/index.d.ts +1 -0
- package/dist/diagrams/index.js +10 -0
- package/dist/diagrams/index.js.map +1 -1
- package/dist/diagrams/lib/dev.d.ts +61 -0
- package/dist/diagrams/lib/dev.js +96 -0
- package/dist/diagrams/lib/dev.js.map +1 -0
- package/dist/diagrams/lib/frame.d.ts +48 -7
- package/dist/diagrams/lib/frame.js +17 -2
- package/dist/diagrams/lib/frame.js.map +1 -1
- package/dist/diagrams/lib/wires.js.map +1 -1
- package/dist/diagrams/spec.d.ts +64 -12
- package/dist/index.d.ts +16 -4
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/keyframes.css +57 -3
- package/dist/lib/overlay-container.d.ts +14 -4
- package/dist/lib/overlay-container.js.map +1 -1
- package/dist/lib/warn.d.ts +73 -0
- package/dist/lib/warn.js +38 -0
- package/dist/lib/warn.js.map +1 -0
- package/dist/semantic.css +17 -6
- package/dist/styles.css +1 -1
- package/dist/tokens.css +20 -2
- package/dist/tokens.d.ts +1 -1
- package/dist/tokens.js +39 -36
- package/dist/tokens.json +39 -36
- package/llms.txt +35 -0
- package/package.json +5 -2
- package/skills/misoto22-design/evals/evals.json +84 -0
- package/skills/misoto22-design/rules/a11y.md +55 -3
- package/skills/misoto22-design/rules/forms.md +5 -0
package/dist/diagrams/spec.d.ts
CHANGED
|
@@ -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
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* figure that
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
|
274
|
-
* the
|
|
321
|
+
* `fixed` gives every participant a 148-unit column; `spread` gives every
|
|
322
|
+
* participant the width the WIDEST label needs.
|
|
275
323
|
*
|
|
276
|
-
*
|
|
277
|
-
*
|
|
278
|
-
*
|
|
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 {
|
|
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":"
|
|
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":[]}
|
package/dist/keyframes.css
CHANGED
|
@@ -202,10 +202,64 @@
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
-
/*
|
|
206
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
|
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 };
|
package/dist/lib/warn.js
ADDED
|
@@ -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.
|
|
109
|
-
|
|
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
|
-
|
|
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 ───
|
|
130
|
-
|
|
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 ───────────────────────────────────────────────────────────
|