@flowstack-ui/agent-tools 0.1.0-bootstrap.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/.codex-plugin/plugin.json +37 -0
- package/CHANGELOG.md +21 -0
- package/LICENSE +21 -0
- package/README.md +125 -0
- package/docs/architecture.md +77 -0
- package/docs/releasing.md +26 -0
- package/docs/testing.md +32 -0
- package/package.json +63 -0
- package/public/index.json +2073 -0
- package/public/llms.txt +19 -0
- package/public/packages/atom/0.24.0/components/accordion.txt +131 -0
- package/public/packages/atom/0.24.0/components/alert-dialog.txt +112 -0
- package/public/packages/atom/0.24.0/components/app-bar.txt +96 -0
- package/public/packages/atom/0.24.0/components/aspect-ratio.txt +111 -0
- package/public/packages/atom/0.24.0/components/avatar.txt +119 -0
- package/public/packages/atom/0.24.0/components/badge.txt +123 -0
- package/public/packages/atom/0.24.0/components/bottom-navigation.txt +96 -0
- package/public/packages/atom/0.24.0/components/breadcrumb.txt +96 -0
- package/public/packages/atom/0.24.0/components/button.txt +98 -0
- package/public/packages/atom/0.24.0/components/carousel.txt +128 -0
- package/public/packages/atom/0.24.0/components/checkbox-group.txt +118 -0
- package/public/packages/atom/0.24.0/components/checkbox.txt +100 -0
- package/public/packages/atom/0.24.0/components/clipboard.txt +112 -0
- package/public/packages/atom/0.24.0/components/collapsible.txt +112 -0
- package/public/packages/atom/0.24.0/components/color-picker.txt +117 -0
- package/public/packages/atom/0.24.0/components/combobox.txt +126 -0
- package/public/packages/atom/0.24.0/components/context-menu.txt +114 -0
- package/public/packages/atom/0.24.0/components/data-grid.txt +136 -0
- package/public/packages/atom/0.24.0/components/dialog.txt +116 -0
- package/public/packages/atom/0.24.0/components/direction.txt +132 -0
- package/public/packages/atom/0.24.0/components/divider.txt +94 -0
- package/public/packages/atom/0.24.0/components/drag-drop.txt +141 -0
- package/public/packages/atom/0.24.0/components/drawer.txt +96 -0
- package/public/packages/atom/0.24.0/components/dropdown-menu.txt +112 -0
- package/public/packages/atom/0.24.0/components/feed.txt +132 -0
- package/public/packages/atom/0.24.0/components/field.txt +108 -0
- package/public/packages/atom/0.24.0/components/fieldset.txt +96 -0
- package/public/packages/atom/0.24.0/components/file-upload.txt +120 -0
- package/public/packages/atom/0.24.0/components/form.txt +98 -0
- package/public/packages/atom/0.24.0/components/hover-card.txt +114 -0
- package/public/packages/atom/0.24.0/components/image.txt +94 -0
- package/public/packages/atom/0.24.0/components/input.txt +96 -0
- package/public/packages/atom/0.24.0/components/label.txt +121 -0
- package/public/packages/atom/0.24.0/components/link.txt +100 -0
- package/public/packages/atom/0.24.0/components/list.txt +131 -0
- package/public/packages/atom/0.24.0/components/listbox.txt +120 -0
- package/public/packages/atom/0.24.0/components/menu.txt +126 -0
- package/public/packages/atom/0.24.0/components/menubar.txt +120 -0
- package/public/packages/atom/0.24.0/components/modal.txt +118 -0
- package/public/packages/atom/0.24.0/components/multi-select.txt +120 -0
- package/public/packages/atom/0.24.0/components/nav-list.txt +104 -0
- package/public/packages/atom/0.24.0/components/navigation-menu.txt +104 -0
- package/public/packages/atom/0.24.0/components/number-input.txt +124 -0
- package/public/packages/atom/0.24.0/components/otp-field.txt +122 -0
- package/public/packages/atom/0.24.0/components/pagination.txt +111 -0
- package/public/packages/atom/0.24.0/components/password-toggle-field.txt +116 -0
- package/public/packages/atom/0.24.0/components/popover.txt +122 -0
- package/public/packages/atom/0.24.0/components/pressable.txt +94 -0
- package/public/packages/atom/0.24.0/components/progress.txt +130 -0
- package/public/packages/atom/0.24.0/components/radio-group.txt +118 -0
- package/public/packages/atom/0.24.0/components/rating.txt +122 -0
- package/public/packages/atom/0.24.0/components/reorder.txt +141 -0
- package/public/packages/atom/0.24.0/components/scroll-area.txt +96 -0
- package/public/packages/atom/0.24.0/components/select.txt +126 -0
- package/public/packages/atom/0.24.0/components/sidebar.txt +96 -0
- package/public/packages/atom/0.24.0/components/skip-link.txt +96 -0
- package/public/packages/atom/0.24.0/components/slider.txt +124 -0
- package/public/packages/atom/0.24.0/components/swipeable-item.txt +118 -0
- package/public/packages/atom/0.24.0/components/switch.txt +116 -0
- package/public/packages/atom/0.24.0/components/table.txt +128 -0
- package/public/packages/atom/0.24.0/components/tabs.txt +96 -0
- package/public/packages/atom/0.24.0/components/textarea.txt +96 -0
- package/public/packages/atom/0.24.0/components/toast.txt +124 -0
- package/public/packages/atom/0.24.0/components/toggle-group.txt +118 -0
- package/public/packages/atom/0.24.0/components/toggle.txt +110 -0
- package/public/packages/atom/0.24.0/components/toolbar.txt +98 -0
- package/public/packages/atom/0.24.0/components/tooltip.txt +112 -0
- package/public/packages/atom/0.24.0/components/tree-grid.txt +138 -0
- package/public/packages/atom/0.24.0/components/tree.txt +138 -0
- package/public/packages/atom/0.24.0/components/visually-hidden.txt +119 -0
- package/public/packages/atom/0.24.0/docs/guides/agent-knowledge.txt +55 -0
- package/public/packages/atom/0.24.0/docs/guides/getting-started.txt +65 -0
- package/public/packages/atom/0.24.0/docs/guides/imports.txt +26 -0
- package/public/packages/atom/0.24.0/docs/guides/public-api.txt +100 -0
- package/public/packages/atom/0.24.0/guides/behavior-composition.txt +277 -0
- package/public/packages/atom/0.24.0/guides/layer-selection.txt +807 -0
- package/public/packages/atom/0.24.0/index.txt +89 -0
- package/public/packages/brick/0.1.11/components/accordion.txt +158 -0
- package/public/packages/brick/0.1.11/components/alert-dialog.txt +175 -0
- package/public/packages/brick/0.1.11/components/app-bar.txt +134 -0
- package/public/packages/brick/0.1.11/components/appearance.txt +143 -0
- package/public/packages/brick/0.1.11/components/aspect-ratio.txt +136 -0
- package/public/packages/brick/0.1.11/components/avatar.txt +152 -0
- package/public/packages/brick/0.1.11/components/badge.txt +139 -0
- package/public/packages/brick/0.1.11/components/bleed.txt +104 -0
- package/public/packages/brick/0.1.11/components/bottom-navigation.txt +106 -0
- package/public/packages/brick/0.1.11/components/breadcrumb.txt +96 -0
- package/public/packages/brick/0.1.11/components/button.txt +103 -0
- package/public/packages/brick/0.1.11/components/card.txt +132 -0
- package/public/packages/brick/0.1.11/components/carousel.txt +206 -0
- package/public/packages/brick/0.1.11/components/checkbox-group.txt +175 -0
- package/public/packages/brick/0.1.11/components/checkbox.txt +103 -0
- package/public/packages/brick/0.1.11/components/chip.txt +128 -0
- package/public/packages/brick/0.1.11/components/code-block.txt +134 -0
- package/public/packages/brick/0.1.11/components/code.txt +120 -0
- package/public/packages/brick/0.1.11/components/collapsible.txt +179 -0
- package/public/packages/brick/0.1.11/components/color-picker.txt +135 -0
- package/public/packages/brick/0.1.11/components/color-swatch.txt +98 -0
- package/public/packages/brick/0.1.11/components/combobox.txt +157 -0
- package/public/packages/brick/0.1.11/components/container.txt +112 -0
- package/public/packages/brick/0.1.11/components/context-menu.txt +174 -0
- package/public/packages/brick/0.1.11/components/data-grid.txt +199 -0
- package/public/packages/brick/0.1.11/components/data-list.txt +115 -0
- package/public/packages/brick/0.1.11/components/dialog.txt +176 -0
- package/public/packages/brick/0.1.11/components/divider.txt +104 -0
- package/public/packages/brick/0.1.11/components/drawer.txt +146 -0
- package/public/packages/brick/0.1.11/components/dropdown-menu.txt +179 -0
- package/public/packages/brick/0.1.11/components/feed.txt +143 -0
- package/public/packages/brick/0.1.11/components/field.txt +115 -0
- package/public/packages/brick/0.1.11/components/fieldset.txt +103 -0
- package/public/packages/brick/0.1.11/components/file-upload.txt +154 -0
- package/public/packages/brick/0.1.11/components/form.txt +108 -0
- package/public/packages/brick/0.1.11/components/frame.txt +132 -0
- package/public/packages/brick/0.1.11/components/grid.txt +141 -0
- package/public/packages/brick/0.1.11/components/group.txt +136 -0
- package/public/packages/brick/0.1.11/components/hide.txt +121 -0
- package/public/packages/brick/0.1.11/components/hover-card.txt +156 -0
- package/public/packages/brick/0.1.11/components/icon-button.txt +119 -0
- package/public/packages/brick/0.1.11/components/icon.txt +160 -0
- package/public/packages/brick/0.1.11/components/image.txt +163 -0
- package/public/packages/brick/0.1.11/components/input.txt +101 -0
- package/public/packages/brick/0.1.11/components/link-box.txt +161 -0
- package/public/packages/brick/0.1.11/components/link.txt +133 -0
- package/public/packages/brick/0.1.11/components/list.txt +139 -0
- package/public/packages/brick/0.1.11/components/menubar.txt +174 -0
- package/public/packages/brick/0.1.11/components/multi-select.txt +153 -0
- package/public/packages/brick/0.1.11/components/nav-list.txt +130 -0
- package/public/packages/brick/0.1.11/components/navigation-menu.txt +150 -0
- package/public/packages/brick/0.1.11/components/notification-badge.txt +148 -0
- package/public/packages/brick/0.1.11/components/number-input.txt +150 -0
- package/public/packages/brick/0.1.11/components/otp-field.txt +146 -0
- package/public/packages/brick/0.1.11/components/pagination.txt +124 -0
- package/public/packages/brick/0.1.11/components/password-toggle-field.txt +146 -0
- package/public/packages/brick/0.1.11/components/popover.txt +181 -0
- package/public/packages/brick/0.1.11/components/progress-circle.txt +142 -0
- package/public/packages/brick/0.1.11/components/progress.txt +150 -0
- package/public/packages/brick/0.1.11/components/radio-group.txt +152 -0
- package/public/packages/brick/0.1.11/components/rating.txt +151 -0
- package/public/packages/brick/0.1.11/components/reorderable-list.txt +130 -0
- package/public/packages/brick/0.1.11/components/scroll-area.txt +110 -0
- package/public/packages/brick/0.1.11/components/section.txt +118 -0
- package/public/packages/brick/0.1.11/components/segment-group.txt +116 -0
- package/public/packages/brick/0.1.11/components/select.txt +157 -0
- package/public/packages/brick/0.1.11/components/show.txt +121 -0
- package/public/packages/brick/0.1.11/components/sidebar.txt +126 -0
- package/public/packages/brick/0.1.11/components/skeleton.txt +127 -0
- package/public/packages/brick/0.1.11/components/skip-link.txt +102 -0
- package/public/packages/brick/0.1.11/components/slider.txt +147 -0
- package/public/packages/brick/0.1.11/components/stack.txt +155 -0
- package/public/packages/brick/0.1.11/components/status.txt +110 -0
- package/public/packages/brick/0.1.11/components/surface.txt +194 -0
- package/public/packages/brick/0.1.11/components/swipeable-item.txt +154 -0
- package/public/packages/brick/0.1.11/components/switch.txt +152 -0
- package/public/packages/brick/0.1.11/components/table.txt +183 -0
- package/public/packages/brick/0.1.11/components/tabs.txt +136 -0
- package/public/packages/brick/0.1.11/components/text.txt +148 -0
- package/public/packages/brick/0.1.11/components/textarea.txt +101 -0
- package/public/packages/brick/0.1.11/components/toast.txt +150 -0
- package/public/packages/brick/0.1.11/components/toggle-group.txt +149 -0
- package/public/packages/brick/0.1.11/components/toggle.txt +140 -0
- package/public/packages/brick/0.1.11/components/toolbar.txt +118 -0
- package/public/packages/brick/0.1.11/components/tooltip.txt +156 -0
- package/public/packages/brick/0.1.11/components/tree-grid.txt +160 -0
- package/public/packages/brick/0.1.11/components/tree.txt +156 -0
- package/public/packages/brick/0.1.11/components/visually-hidden.txt +123 -0
- package/public/packages/brick/0.1.11/components/z-stack.txt +143 -0
- package/public/packages/brick/0.1.11/docs/guides/agent-knowledge.txt +67 -0
- package/public/packages/brick/0.1.11/docs/guides/appearance-and-tokens.txt +179 -0
- package/public/packages/brick/0.1.11/docs/guides/browser-support.txt +25 -0
- package/public/packages/brick/0.1.11/docs/guides/control-sizing.txt +59 -0
- package/public/packages/brick/0.1.11/docs/guides/installation.txt +79 -0
- package/public/packages/brick/0.1.11/docs/guides/theme-contract.txt +90 -0
- package/public/packages/brick/0.1.11/guides/interface-composition.txt +665 -0
- package/public/packages/brick/0.1.11/guides/layer-selection.txt +1437 -0
- package/public/packages/brick/0.1.11/index.txt +110 -0
- package/public/packages/colors/0.1.1/docs/agent-knowledge.txt +63 -0
- package/public/packages/colors/0.1.1/docs/architecture.txt +74 -0
- package/public/packages/colors/0.1.1/docs/color-foundations.txt +128 -0
- package/public/packages/colors/0.1.1/docs/compatibility.txt +75 -0
- package/public/packages/colors/0.1.1/docs/dependency-qualification.txt +117 -0
- package/public/packages/colors/0.1.1/docs/installation.txt +48 -0
- package/public/packages/colors/0.1.1/docs/palette-generation.txt +151 -0
- package/public/packages/colors/0.1.1/docs/releasing.txt +34 -0
- package/public/packages/colors/0.1.1/docs/testing.txt +51 -0
- package/public/packages/colors/0.1.1/guides/colors-system.txt +282 -0
- package/public/packages/colors/0.1.1/index.txt +29 -0
- package/public/packages/colors/0.1.1/operations/color-conversion.txt +14 -0
- package/public/packages/colors/0.1.1/operations/color-inspection.txt +23 -0
- package/public/packages/colors/0.1.1/operations/color-measurement.txt +18 -0
- package/public/packages/colors/0.1.1/operations/color-provenance.txt +14 -0
- package/public/packages/colors/0.1.1/operations/named-palette-reference.txt +15 -0
- package/public/packages/colors/0.1.1/operations/palette-candidate.txt +37 -0
- package/public/packages/theme/0.1.1/docs/agent-knowledge.txt +44 -0
- package/public/packages/theme/0.1.1/docs/appearances-and-portals.txt +41 -0
- package/public/packages/theme/0.1.1/docs/architecture.txt +121 -0
- package/public/packages/theme/0.1.1/docs/authoring.txt +141 -0
- package/public/packages/theme/0.1.1/docs/colors-interchange.txt +82 -0
- package/public/packages/theme/0.1.1/docs/fonts.txt +40 -0
- package/public/packages/theme/0.1.1/docs/installation.txt +45 -0
- package/public/packages/theme/0.1.1/docs/migration.txt +40 -0
- package/public/packages/theme/0.1.1/docs/testing.txt +64 -0
- package/public/packages/theme/0.1.1/docs/troubleshooting.txt +53 -0
- package/public/packages/theme/0.1.1/guides/theme-system.txt +340 -0
- package/public/packages/theme/0.1.1/index.txt +31 -0
- package/public/packages/theme/0.1.1/operations/brick-contract-compatibility.txt +35 -0
- package/public/packages/theme/0.1.1/operations/colors-interchange.txt +35 -0
- package/public/packages/theme/0.1.1/operations/theme-artifacts.txt +19 -0
- package/public/packages/theme/0.1.1/operations/theme-cli.txt +10 -0
- package/public/packages/theme/0.1.1/operations/theme-compilation.txt +23 -0
- package/public/packages/theme/0.1.1/operations/theme-definition.txt +36 -0
- package/public/packages/theme/0.1.1/operations/theme-validation.txt +19 -0
- package/public/tasks/data.txt +39 -0
- package/public/tasks/forms.txt +65 -0
- package/public/tasks/layout.txt +37 -0
- package/public/tasks/navigation.txt +51 -0
- package/public/tasks/overlays.txt +39 -0
- package/public/tasks/theming.txt +37 -0
- package/skills/flowstack-ui-builder/SKILL.md +35 -0
- package/skills/flowstack-ui-builder/agents/openai.yaml +4 -0
- package/skills/flowstack-ui-builder/scripts/resolve-agent-knowledge.mjs +399 -0
- package/skills/flowstack-ui-compose/SKILL.md +32 -0
- package/skills/flowstack-ui-compose/agents/openai.yaml +4 -0
- package/skills/flowstack-ui-compose/scripts/resolve-agent-knowledge.mjs +399 -0
- package/skills/flowstack-ui-maintainer/SKILL.md +40 -0
- package/skills/flowstack-ui-maintainer/agents/openai.yaml +4 -0
- package/skills/flowstack-ui-maintainer/scripts/resolve-agent-knowledge.mjs +399 -0
- package/skills/flowstack-ui-review/SKILL.md +29 -0
- package/skills/flowstack-ui-review/agents/openai.yaml +4 -0
- package/skills/flowstack-ui-review/scripts/resolve-agent-knowledge.mjs +399 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# @flowstack-ui/brick@0.1.11
|
|
2
|
+
|
|
3
|
+
Archive SHA-256: `2ef92c69dad840583a6b47a854650734e1f18b902cf4a712174a0d95dcab4f1f`
|
|
4
|
+
Coverage: 2594/2594 public surfaces; zero failures.
|
|
5
|
+
|
|
6
|
+
## component
|
|
7
|
+
|
|
8
|
+
- [Accordion](/packages/brick/0.1.11/components/accordion.txt)
|
|
9
|
+
- [AlertDialog](/packages/brick/0.1.11/components/alert-dialog.txt)
|
|
10
|
+
- [AppBar](/packages/brick/0.1.11/components/app-bar.txt)
|
|
11
|
+
- [Appearance](/packages/brick/0.1.11/components/appearance.txt)
|
|
12
|
+
- [AspectRatio](/packages/brick/0.1.11/components/aspect-ratio.txt)
|
|
13
|
+
- [Avatar](/packages/brick/0.1.11/components/avatar.txt)
|
|
14
|
+
- [Badge](/packages/brick/0.1.11/components/badge.txt)
|
|
15
|
+
- [Bleed](/packages/brick/0.1.11/components/bleed.txt)
|
|
16
|
+
- [BottomNavigation](/packages/brick/0.1.11/components/bottom-navigation.txt)
|
|
17
|
+
- [Breadcrumb](/packages/brick/0.1.11/components/breadcrumb.txt)
|
|
18
|
+
- [Button](/packages/brick/0.1.11/components/button.txt)
|
|
19
|
+
- [Card](/packages/brick/0.1.11/components/card.txt)
|
|
20
|
+
- [Carousel](/packages/brick/0.1.11/components/carousel.txt)
|
|
21
|
+
- [Checkbox](/packages/brick/0.1.11/components/checkbox.txt)
|
|
22
|
+
- [Checkbox Group](/packages/brick/0.1.11/components/checkbox-group.txt)
|
|
23
|
+
- [Chip](/packages/brick/0.1.11/components/chip.txt)
|
|
24
|
+
- [Code](/packages/brick/0.1.11/components/code.txt)
|
|
25
|
+
- [Code Block](/packages/brick/0.1.11/components/code-block.txt)
|
|
26
|
+
- [Collapsible](/packages/brick/0.1.11/components/collapsible.txt)
|
|
27
|
+
- [Color Picker](/packages/brick/0.1.11/components/color-picker.txt)
|
|
28
|
+
- [Color Swatch](/packages/brick/0.1.11/components/color-swatch.txt)
|
|
29
|
+
- [Combobox](/packages/brick/0.1.11/components/combobox.txt)
|
|
30
|
+
- [Container](/packages/brick/0.1.11/components/container.txt)
|
|
31
|
+
- [ContextMenu](/packages/brick/0.1.11/components/context-menu.txt)
|
|
32
|
+
- [Data Grid](/packages/brick/0.1.11/components/data-grid.txt)
|
|
33
|
+
- [Data List](/packages/brick/0.1.11/components/data-list.txt)
|
|
34
|
+
- [Dialog](/packages/brick/0.1.11/components/dialog.txt)
|
|
35
|
+
- [Divider](/packages/brick/0.1.11/components/divider.txt)
|
|
36
|
+
- [Drawer](/packages/brick/0.1.11/components/drawer.txt)
|
|
37
|
+
- [DropdownMenu](/packages/brick/0.1.11/components/dropdown-menu.txt)
|
|
38
|
+
- [Feed](/packages/brick/0.1.11/components/feed.txt)
|
|
39
|
+
- [Field](/packages/brick/0.1.11/components/field.txt)
|
|
40
|
+
- [Fieldset](/packages/brick/0.1.11/components/fieldset.txt)
|
|
41
|
+
- [FileUpload](/packages/brick/0.1.11/components/file-upload.txt)
|
|
42
|
+
- [Form](/packages/brick/0.1.11/components/form.txt)
|
|
43
|
+
- [Frame](/packages/brick/0.1.11/components/frame.txt)
|
|
44
|
+
- [Grid](/packages/brick/0.1.11/components/grid.txt)
|
|
45
|
+
- [Group](/packages/brick/0.1.11/components/group.txt)
|
|
46
|
+
- [Hide](/packages/brick/0.1.11/components/hide.txt)
|
|
47
|
+
- [HoverCard](/packages/brick/0.1.11/components/hover-card.txt)
|
|
48
|
+
- [Icon](/packages/brick/0.1.11/components/icon.txt)
|
|
49
|
+
- [IconButton](/packages/brick/0.1.11/components/icon-button.txt)
|
|
50
|
+
- [Image](/packages/brick/0.1.11/components/image.txt)
|
|
51
|
+
- [Input](/packages/brick/0.1.11/components/input.txt)
|
|
52
|
+
- [Link](/packages/brick/0.1.11/components/link.txt)
|
|
53
|
+
- [Link Box](/packages/brick/0.1.11/components/link-box.txt)
|
|
54
|
+
- [List](/packages/brick/0.1.11/components/list.txt)
|
|
55
|
+
- [Menubar](/packages/brick/0.1.11/components/menubar.txt)
|
|
56
|
+
- [MultiSelect](/packages/brick/0.1.11/components/multi-select.txt)
|
|
57
|
+
- [NavList](/packages/brick/0.1.11/components/nav-list.txt)
|
|
58
|
+
- [NavigationMenu](/packages/brick/0.1.11/components/navigation-menu.txt)
|
|
59
|
+
- [NotificationBadge](/packages/brick/0.1.11/components/notification-badge.txt)
|
|
60
|
+
- [NumberInput](/packages/brick/0.1.11/components/number-input.txt)
|
|
61
|
+
- [OTPField](/packages/brick/0.1.11/components/otp-field.txt)
|
|
62
|
+
- [Pagination](/packages/brick/0.1.11/components/pagination.txt)
|
|
63
|
+
- [PasswordToggleField](/packages/brick/0.1.11/components/password-toggle-field.txt)
|
|
64
|
+
- [Popover](/packages/brick/0.1.11/components/popover.txt)
|
|
65
|
+
- [Progress](/packages/brick/0.1.11/components/progress.txt)
|
|
66
|
+
- [ProgressCircle](/packages/brick/0.1.11/components/progress-circle.txt)
|
|
67
|
+
- [RadioGroup](/packages/brick/0.1.11/components/radio-group.txt)
|
|
68
|
+
- [Rating](/packages/brick/0.1.11/components/rating.txt)
|
|
69
|
+
- [Reorderable List](/packages/brick/0.1.11/components/reorderable-list.txt)
|
|
70
|
+
- [ScrollArea](/packages/brick/0.1.11/components/scroll-area.txt)
|
|
71
|
+
- [Section](/packages/brick/0.1.11/components/section.txt)
|
|
72
|
+
- [SegmentGroup](/packages/brick/0.1.11/components/segment-group.txt)
|
|
73
|
+
- [Select](/packages/brick/0.1.11/components/select.txt)
|
|
74
|
+
- [Show](/packages/brick/0.1.11/components/show.txt)
|
|
75
|
+
- [Sidebar](/packages/brick/0.1.11/components/sidebar.txt)
|
|
76
|
+
- [Skeleton](/packages/brick/0.1.11/components/skeleton.txt)
|
|
77
|
+
- [SkipLink](/packages/brick/0.1.11/components/skip-link.txt)
|
|
78
|
+
- [Slider](/packages/brick/0.1.11/components/slider.txt)
|
|
79
|
+
- [Stack](/packages/brick/0.1.11/components/stack.txt)
|
|
80
|
+
- [Status](/packages/brick/0.1.11/components/status.txt)
|
|
81
|
+
- [Surface](/packages/brick/0.1.11/components/surface.txt)
|
|
82
|
+
- [SwipeableItem](/packages/brick/0.1.11/components/swipeable-item.txt)
|
|
83
|
+
- [Switch](/packages/brick/0.1.11/components/switch.txt)
|
|
84
|
+
- [Table](/packages/brick/0.1.11/components/table.txt)
|
|
85
|
+
- [Tabs](/packages/brick/0.1.11/components/tabs.txt)
|
|
86
|
+
- [Text](/packages/brick/0.1.11/components/text.txt)
|
|
87
|
+
- [Textarea](/packages/brick/0.1.11/components/textarea.txt)
|
|
88
|
+
- [Toast](/packages/brick/0.1.11/components/toast.txt)
|
|
89
|
+
- [Toggle](/packages/brick/0.1.11/components/toggle.txt)
|
|
90
|
+
- [ToggleGroup](/packages/brick/0.1.11/components/toggle-group.txt)
|
|
91
|
+
- [Toolbar](/packages/brick/0.1.11/components/toolbar.txt)
|
|
92
|
+
- [Tooltip](/packages/brick/0.1.11/components/tooltip.txt)
|
|
93
|
+
- [Tree](/packages/brick/0.1.11/components/tree.txt)
|
|
94
|
+
- [TreeGrid](/packages/brick/0.1.11/components/tree-grid.txt)
|
|
95
|
+
- [VisuallyHidden](/packages/brick/0.1.11/components/visually-hidden.txt)
|
|
96
|
+
- [ZStack](/packages/brick/0.1.11/components/z-stack.txt)
|
|
97
|
+
|
|
98
|
+
## document
|
|
99
|
+
|
|
100
|
+
- [guides/agent-knowledge](/packages/brick/0.1.11/docs/guides/agent-knowledge.txt)
|
|
101
|
+
- [guides/appearance-and-tokens](/packages/brick/0.1.11/docs/guides/appearance-and-tokens.txt)
|
|
102
|
+
- [guides/browser-support](/packages/brick/0.1.11/docs/guides/browser-support.txt)
|
|
103
|
+
- [guides/control-sizing](/packages/brick/0.1.11/docs/guides/control-sizing.txt)
|
|
104
|
+
- [guides/installation](/packages/brick/0.1.11/docs/guides/installation.txt)
|
|
105
|
+
- [guides/theme-contract](/packages/brick/0.1.11/docs/guides/theme-contract.txt)
|
|
106
|
+
|
|
107
|
+
## guide
|
|
108
|
+
|
|
109
|
+
- [Brick interface composition](/packages/brick/0.1.11/guides/interface-composition.txt)
|
|
110
|
+
- [Brick layer selection](/packages/brick/0.1.11/guides/layer-selection.txt)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Public document: agent-knowledge
|
|
2
|
+
|
|
3
|
+
Source: @flowstack-ui/colors@0.1.1
|
|
4
|
+
|
|
5
|
+
# Colors Agent Knowledge
|
|
6
|
+
|
|
7
|
+
Colors publishes deterministic, versioned guidance for agents that need to
|
|
8
|
+
choose and use its color operations. The guidance describes operations, not UI
|
|
9
|
+
components: Colors has no component, DOM, Theme, or application ownership.
|
|
10
|
+
|
|
11
|
+
## Discovery
|
|
12
|
+
|
|
13
|
+
Start with these package exports:
|
|
14
|
+
|
|
15
|
+
- `@flowstack-ui/colors/agents/manifest.json` lists the package guide, all six
|
|
16
|
+
operation owners, and the coverage report.
|
|
17
|
+
- `@flowstack-ui/colors/agents/coverage.json` proves that all 76 named public
|
|
18
|
+
API surfaces are classified and all six operation owners are routed.
|
|
19
|
+
- `@flowstack-ui/colors/agents/colors-system.json` is the structured selection,
|
|
20
|
+
boundary, and validation guide.
|
|
21
|
+
- `@flowstack-ui/colors/agents/colors-system.md` is deterministic Markdown
|
|
22
|
+
generated from that same JSON guide.
|
|
23
|
+
|
|
24
|
+
The two direct `colors-system` subpaths remain stable compatibility routes.
|
|
25
|
+
Wildcard `agents/*.json` and `agents/*.md` exports let consumers follow future
|
|
26
|
+
manifest entries without adding a package export for every artifact.
|
|
27
|
+
|
|
28
|
+
## Operation owners
|
|
29
|
+
|
|
30
|
+
The manifest routes these six public operation families:
|
|
31
|
+
|
|
32
|
+
1. `color-inspection` parses, validates, and normalizes color input.
|
|
33
|
+
2. `color-conversion` converts color spaces and maps output gamut explicitly.
|
|
34
|
+
3. `color-measurement` calculates contrast and perceptual color difference.
|
|
35
|
+
4. `named-palette-reference` reads the shipped raw reference palettes.
|
|
36
|
+
5. `palette-candidate` generates and reviews deterministic palette candidates.
|
|
37
|
+
6. `color-provenance` records serializable engine and operation provenance.
|
|
38
|
+
|
|
39
|
+
The package catalog at `agents/catalog.json` is the source classification used
|
|
40
|
+
to build the published reports. It must exactly match `src/index.ts`: stale,
|
|
41
|
+
missing, duplicate, or extra classifications fail the repository gate.
|
|
42
|
+
|
|
43
|
+
## Boundaries
|
|
44
|
+
|
|
45
|
+
Agent guidance must preserve the same public boundary as the runtime:
|
|
46
|
+
|
|
47
|
+
- Colors produces deterministic color records, measurements, references, and
|
|
48
|
+
candidate data. It does not assign semantic Theme roles.
|
|
49
|
+
- A generated candidate is not an approved palette. Human review remains
|
|
50
|
+
explicit, and Theme mapping and application/brand approval happen later.
|
|
51
|
+
- Native CSS color handling is appropriate when no parsing, normalization,
|
|
52
|
+
conversion, measurement, provenance, or candidate artifact is required.
|
|
53
|
+
- Component selection, rendering, focus, interaction, and accessibility remain
|
|
54
|
+
outside this package.
|
|
55
|
+
|
|
56
|
+
## Verification
|
|
57
|
+
|
|
58
|
+
Run `npm run agents:check` after editing source guidance or routing. Run
|
|
59
|
+
`npm run agents:build` to regenerate Markdown and `dist/agents`, then run the
|
|
60
|
+
complete `npm run check:repository` gate. The release gate packs the package,
|
|
61
|
+
installs that exact archive in a clean consumer, resolves every manifest
|
|
62
|
+
artifact, compares the installed 76-surface report with the installed type and
|
|
63
|
+
runtime exports, and exercises all six operation families.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Public document: architecture
|
|
2
|
+
|
|
3
|
+
Source: @flowstack-ui/colors@0.1.1
|
|
4
|
+
|
|
5
|
+
# Colors Architecture
|
|
6
|
+
|
|
7
|
+
Status: **Batch 7.4 candidate interchange qualified**
|
|
8
|
+
|
|
9
|
+
Colors owns framework-independent color science and deterministic palette
|
|
10
|
+
candidate generation. Theme owns semantic mapping, exact editable theme
|
|
11
|
+
definitions, Brick contract validation, and final static artifacts.
|
|
12
|
+
|
|
13
|
+
## Dependency direction
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
Creative or human intent
|
|
17
|
+
-> @flowstack-ui/colors candidate
|
|
18
|
+
-> @flowstack-ui/theme definition
|
|
19
|
+
-> @flowstack-ui/brick semantic contract
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The arrows describe artifact flow, not runtime dependencies. Colors does not
|
|
23
|
+
import Theme or Brick. A deployed application does not require Colors merely
|
|
24
|
+
because its CSS originated from a candidate.
|
|
25
|
+
|
|
26
|
+
The qualified color engine is pinned exactly. Its version is part of every
|
|
27
|
+
provenance record, so a consumer install cannot silently change math while
|
|
28
|
+
claiming the same engine evidence.
|
|
29
|
+
|
|
30
|
+
## Candidate rules
|
|
31
|
+
|
|
32
|
+
- Inputs and outputs are serializable and deterministic.
|
|
33
|
+
- Multiple named seeds are first-class.
|
|
34
|
+
- A seed has an explicit interface, neutral, or decorative profile.
|
|
35
|
+
- Exact preservation is the default; adaptation requires an explicit bounded
|
|
36
|
+
policy and complete diagnostics.
|
|
37
|
+
- Light and dark are generated and validated independently.
|
|
38
|
+
- Every accessibility claim names and measures the exact pair.
|
|
39
|
+
- Existing named palettes and requested 12-step scales remain available as
|
|
40
|
+
raw/reference output without automatic Theme qualification.
|
|
41
|
+
|
|
42
|
+
`flowstack.colors-candidate.v1` is the finalized serialized interchange
|
|
43
|
+
boundary for the first release. Generation produces an `unreviewed` result;
|
|
44
|
+
`reviewPaletteCandidate()` records an explicit human `accepted`, `edited`, or
|
|
45
|
+
`rejected` decision without changing its measurements. An accepted family has
|
|
46
|
+
passed only its declared Colors measurements, carries no semantic Brick
|
|
47
|
+
mapping, and cannot be called a theme. See
|
|
48
|
+
`palette-generation.md` [source reference: palette-generation.md].
|
|
49
|
+
|
|
50
|
+
Batch 7.4 proved the boundary without coupling the packages: Theme reads the
|
|
51
|
+
candidate JSON, imports selected families as project palettes, expands explicit
|
|
52
|
+
semantic assignments against the installed Brick contract, and produces an
|
|
53
|
+
ordinary editable Theme. One seven-family candidate passed all 152 compiled
|
|
54
|
+
Brick contrast evaluations and the complete 80-route, four-profile rendered
|
|
55
|
+
catalog. That evidence validates the interchange; it does not preapprove future
|
|
56
|
+
candidates.
|
|
57
|
+
|
|
58
|
+
## Color record
|
|
59
|
+
|
|
60
|
+
`flowstack.color-record.v1` is the stable Batch 7.2 evidence envelope. It
|
|
61
|
+
preserves the exact source, a structured supported-space color, an sRGB
|
|
62
|
+
fallback with explicit gamut diagnostics, and deterministic provenance.
|
|
63
|
+
|
|
64
|
+
Conversions do not silently map gamut. Gamut mapping is a separate named
|
|
65
|
+
operation. Contrast maps to exact sRGB and rejects alpha without a backdrop.
|
|
66
|
+
See `color-foundations.md` [source reference: color-foundations.md] for the API contract.
|
|
67
|
+
|
|
68
|
+
## Reference palettes
|
|
69
|
+
|
|
70
|
+
Thirty-one standalone FLOWSTACK named families are available through
|
|
71
|
+
`getNamedPalette()`. They use FLOWSTACK seeds and the same deterministic
|
|
72
|
+
decorative generator exposed to consumers, with no external palette package.
|
|
73
|
+
Every result is marked `raw-reference`, preserving useful light/dark 12-step
|
|
74
|
+
output without claiming that its values satisfy Theme or Brick.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Public document: color-foundations
|
|
2
|
+
|
|
3
|
+
Source: @flowstack-ui/colors@0.1.1
|
|
4
|
+
|
|
5
|
+
# Color Foundations
|
|
6
|
+
|
|
7
|
+
Status: **Batch 7.2 implemented; achromatic qualification extended in Batch 7.3**
|
|
8
|
+
|
|
9
|
+
## Inputs
|
|
10
|
+
|
|
11
|
+
Every operation accepts either a CSS color string, a direct Design Tokens
|
|
12
|
+
color value, or a wrapped Design Tokens token:
|
|
13
|
+
|
|
14
|
+
```ts
|
|
15
|
+
"oklch(70% 0.2 45)"
|
|
16
|
+
|
|
17
|
+
{
|
|
18
|
+
colorSpace: "display-p3",
|
|
19
|
+
components: [1, 0.5, 0],
|
|
20
|
+
alpha: 1,
|
|
21
|
+
hex: "#ff7600",
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
{
|
|
25
|
+
$type: "color",
|
|
26
|
+
$value: {
|
|
27
|
+
colorSpace: "oklch",
|
|
28
|
+
components: [0.7, 0.2, 45],
|
|
29
|
+
},
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Supported structured spaces are sRGB, linear sRGB, Display P3, A98 RGB,
|
|
34
|
+
ProPhoto RGB, Rec. 2020, XYZ D50 and D65, Lab, LCH, Oklab, and OKLCH. Common
|
|
35
|
+
CSS formats such as named colors, hex, RGB, HSL, and HWB normalize into one of
|
|
36
|
+
those spaces.
|
|
37
|
+
|
|
38
|
+
When an achromatic color is converted to LCH or OKLCH, its physically
|
|
39
|
+
meaningless missing hue is serialized canonically as `0`. This keeps black,
|
|
40
|
+
white, and gray outputs finite and deterministic without changing the color.
|
|
41
|
+
|
|
42
|
+
The Design Tokens `none` component is rejected because it requires a separate
|
|
43
|
+
interpolation context. Non-finite components, invalid alpha, invalid optional
|
|
44
|
+
hex fallback, unsupported spaces, and malformed CSS produce stable diagnostic
|
|
45
|
+
codes.
|
|
46
|
+
|
|
47
|
+
## Operations
|
|
48
|
+
|
|
49
|
+
### Parse and validate
|
|
50
|
+
|
|
51
|
+
`parseColor(input)` returns a plain `StructuredColor` or throws a
|
|
52
|
+
`FlowstackColorError`. `validateColor(input)` accepts unknown input and returns
|
|
53
|
+
the same structured color or serializable diagnostics without throwing for
|
|
54
|
+
expected input errors.
|
|
55
|
+
|
|
56
|
+
### Normalize
|
|
57
|
+
|
|
58
|
+
`normalizeColor(input)` returns `flowstack.color-record.v1` with:
|
|
59
|
+
|
|
60
|
+
- a cloned exact source representation;
|
|
61
|
+
- the parsed color in its supported source space;
|
|
62
|
+
- a bounded sRGB color and six- or eight-digit lowercase hex fallback;
|
|
63
|
+
- whether gamut mapping occurred, its method, and deltaEOK change; and
|
|
64
|
+
- deterministic package, engine, operation, version, and parameter provenance.
|
|
65
|
+
|
|
66
|
+
The optional Design Tokens `hex` field is retained as source metadata. It is
|
|
67
|
+
not treated as authoritative over the structured color components, so the
|
|
68
|
+
record may produce a different qualified sRGB fallback.
|
|
69
|
+
|
|
70
|
+
### Convert
|
|
71
|
+
|
|
72
|
+
`convertColor(input, targetSpace)` converts coordinates without gamut mapping.
|
|
73
|
+
Out-of-gamut components remain out of range so the caller cannot confuse
|
|
74
|
+
conversion with adaptation. The result includes source, target, converted
|
|
75
|
+
color, and provenance.
|
|
76
|
+
|
|
77
|
+
### Map gamut
|
|
78
|
+
|
|
79
|
+
`mapColorToGamut(input, targetGamut)` supports sRGB, Display P3, and Rec. 2020.
|
|
80
|
+
It leaves in-gamut values unchanged and otherwise uses CSS Color 4 OKLCH local
|
|
81
|
+
MINDE mapping with a deltaEOK just-noticeable threshold of `0.02`. The result
|
|
82
|
+
states whether mapping occurred and how far the mapped color moved.
|
|
83
|
+
|
|
84
|
+
Floating-point noise up to `1 × 10⁻¹²` at a gamut boundary is clamped before
|
|
85
|
+
public components are returned. Larger out-of-range values remain visible.
|
|
86
|
+
|
|
87
|
+
### Contrast
|
|
88
|
+
|
|
89
|
+
`calculateContrast(foreground, background)` maps both colors to sRGB and
|
|
90
|
+
returns the unrounded WCAG 2 relative-luminance ratio plus named 4.5:1 and 3:1
|
|
91
|
+
pass gates. `contrastRatio()` returns only that exact ratio.
|
|
92
|
+
|
|
93
|
+
Contrast currently requires two opaque colors. A translucent foreground or
|
|
94
|
+
background fails with `alpha-requires-backdrop`; Colors will not invent a
|
|
95
|
+
background and publish a misleading accessibility result.
|
|
96
|
+
|
|
97
|
+
### Difference
|
|
98
|
+
|
|
99
|
+
`calculateColorDifference(first, second, method)` supports deltaEOK by default
|
|
100
|
+
and CIEDE2000 when explicitly requested. `colorDifference()` returns only the
|
|
101
|
+
number. DeltaEOK reports the current `0.02` just-noticeable threshold;
|
|
102
|
+
CIEDE2000 does not claim one package-wide threshold.
|
|
103
|
+
|
|
104
|
+
Difference currently requires opaque colors because alpha is not a color-space
|
|
105
|
+
coordinate and its visual effect depends on a backdrop.
|
|
106
|
+
|
|
107
|
+
## Provenance and determinism
|
|
108
|
+
|
|
109
|
+
Every report uses `flowstack.color-provenance.v1`. It records:
|
|
110
|
+
|
|
111
|
+
- `@flowstack-ui/colors` and its version;
|
|
112
|
+
- Culori and its qualified version;
|
|
113
|
+
- the named operation and operation-contract version; and
|
|
114
|
+
- sorted serializable parameters.
|
|
115
|
+
|
|
116
|
+
No timestamp, environment path, random value, mutable class instance, or
|
|
117
|
+
private workspace data enters a record. The same input and dependency version
|
|
118
|
+
therefore produce byte-stable JSON.
|
|
119
|
+
|
|
120
|
+
## What this does not prove
|
|
121
|
+
|
|
122
|
+
These functions prove color math and declared pair relationships. They do not
|
|
123
|
+
prove that a color has the right semantic meaning, that a palette is visually
|
|
124
|
+
coherent, or that a complete Brick theme passes. Batch 7.3 candidate generation
|
|
125
|
+
is documented in `palette-generation.md` [source reference: palette-generation.md]. Batch 7.4
|
|
126
|
+
qualified the serialized Colors-to-Theme boundary and one complete generated
|
|
127
|
+
fixture; every future candidate still needs its own semantic and rendered
|
|
128
|
+
qualification.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Public document: compatibility
|
|
2
|
+
|
|
3
|
+
Source: @flowstack-ui/colors@0.1.1
|
|
4
|
+
|
|
5
|
+
# Compatibility and upgrades
|
|
6
|
+
|
|
7
|
+
Colors has three separate compatibility boundaries. Keeping them separate
|
|
8
|
+
prevents a package upgrade from silently changing an accepted product theme.
|
|
9
|
+
|
|
10
|
+
## Package API
|
|
11
|
+
|
|
12
|
+
The npm package follows semantic versioning. Version `0.1.0` requires Node.js
|
|
13
|
+
22 or newer and exposes ESM JavaScript and TypeScript declarations from the
|
|
14
|
+
root package entry point.
|
|
15
|
+
|
|
16
|
+
Before `1.0.0`, a minor version may contain a breaking API or candidate-shape
|
|
17
|
+
change when the changelog and migration guidance identify it. Patch releases
|
|
18
|
+
must remain compatible with the documented 0.1 API unless they close a safety
|
|
19
|
+
or correctness defect that cannot be fixed compatibly.
|
|
20
|
+
|
|
21
|
+
## Serialized schemas
|
|
22
|
+
|
|
23
|
+
These identifiers version serialized meaning independently of npm:
|
|
24
|
+
|
|
25
|
+
- `flowstack.colors-request.v1`;
|
|
26
|
+
- `flowstack.colors-candidate.v1`;
|
|
27
|
+
- `flowstack.color-record.v1`; and
|
|
28
|
+
- `flowstack.color-provenance.v1`.
|
|
29
|
+
|
|
30
|
+
Additive optional evidence may remain within version 1. Removing required
|
|
31
|
+
fields, changing existing field meaning, or making a formerly valid document
|
|
32
|
+
invalid requires a new schema identifier or an explicit migration.
|
|
33
|
+
|
|
34
|
+
Theme consumes the candidate JSON shape, not Colors package code. A reviewed
|
|
35
|
+
0.1 candidate therefore remains editable and compilable without rerunning its
|
|
36
|
+
generator merely because Colors is upgraded.
|
|
37
|
+
|
|
38
|
+
## Algorithm and exact values
|
|
39
|
+
|
|
40
|
+
Candidate provenance records the Colors producer version, exact color-engine
|
|
41
|
+
version, operation contract, and `flowstack-palette-v1` algorithm. Version
|
|
42
|
+
0.1.0 pins the qualified engine to `4.0.2`; consumer installation cannot
|
|
43
|
+
silently substitute another engine while claiming that provenance.
|
|
44
|
+
|
|
45
|
+
Identical normalized input, package version, engine version, and algorithm
|
|
46
|
+
parameters produce byte-identical output. A future intentional generation
|
|
47
|
+
model receives a new algorithm identifier. A correctness fix may change exact
|
|
48
|
+
candidate values only with a package version change, changelog entry, golden
|
|
49
|
+
fixture update, Theme contract requalification, and rendered evidence when the
|
|
50
|
+
change affects UI output.
|
|
51
|
+
|
|
52
|
+
Do not automatically regenerate an accepted project theme during dependency
|
|
53
|
+
installation. Review the candidate diff, record a new human decision, scaffold
|
|
54
|
+
an ordinary Theme again, and repeat the relevant contract and product gates.
|
|
55
|
+
|
|
56
|
+
Version `0.1.1` adds `textHover` and `textPressed` to generated interface
|
|
57
|
+
appearances and adjusts the default generated text values. Existing reviewed
|
|
58
|
+
candidate files remain valid inputs because serialized consumers must accept
|
|
59
|
+
additive role evidence. Regenerating the same request intentionally produces
|
|
60
|
+
different exact interface text values under producer version `0.1.1`, so
|
|
61
|
+
review that candidate diff and repeat Theme qualification before adopting it.
|
|
62
|
+
|
|
63
|
+
## Moving from qualification builds
|
|
64
|
+
|
|
65
|
+
`0.1.0` is the first public release. Private `0.0.0` qualification checkouts
|
|
66
|
+
should replace Git or workspace references with the exact registry version:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npm install --save-dev @flowstack-ui/colors@0.1.0
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The finalized candidate uses `review`, plural `referenceBackgrounds`, and the
|
|
73
|
+
neutral `textInverse` role. Regenerate experimental pre-0.1 candidate files,
|
|
74
|
+
review them explicitly, and qualify their resulting Theme rather than editing
|
|
75
|
+
old experimental envelopes in place.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Public document: dependency-qualification
|
|
2
|
+
|
|
3
|
+
Source: @flowstack-ui/colors@0.1.1
|
|
4
|
+
|
|
5
|
+
# Color-Science Dependency Qualification
|
|
6
|
+
|
|
7
|
+
Status: **Culori adopted for implementation**
|
|
8
|
+
|
|
9
|
+
Date: August 12, 2026
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Use Culori as the focused color-science implementation dependency. Batch 7.2
|
|
14
|
+
now imports it from shipped color-foundation source, so it is a runtime package
|
|
15
|
+
dependency while its separate declarations remain development-only.
|
|
16
|
+
|
|
17
|
+
Color.js remains a high-quality reference implementation and comparison tool,
|
|
18
|
+
not a package dependency.
|
|
19
|
+
|
|
20
|
+
The package must not restore the archived handwritten sRGB, OKLab, OKLCH, and
|
|
21
|
+
gamut implementation. FLOWSTACK owns its contracts and tests; the qualified
|
|
22
|
+
library owns the underlying conversion machinery.
|
|
23
|
+
|
|
24
|
+
## Candidates
|
|
25
|
+
|
|
26
|
+
| Candidate | Version | License | Transitive runtime dependencies | Installed size in the proof |
|
|
27
|
+
| --- | ---: | --- | ---: | ---: |
|
|
28
|
+
| Culori | 4.0.2 | MIT | 0 | 1,584 KiB |
|
|
29
|
+
| Color.js | 0.7.1 | MIT | 0 | 16,628 KiB |
|
|
30
|
+
|
|
31
|
+
Culori does not bundle TypeScript declarations. `@types/culori` 4.0.1, also
|
|
32
|
+
MIT with no dependencies, adds 796 KiB during development. Colors exposes its
|
|
33
|
+
own public types and does not leak Culori types through its API. Its type
|
|
34
|
+
declarations require the otherwise optional `mode` argument to `toGamut`, so
|
|
35
|
+
the adapter supplies that argument explicitly and retains a compilation gate
|
|
36
|
+
for declaration drift.
|
|
37
|
+
|
|
38
|
+
## Method
|
|
39
|
+
|
|
40
|
+
The temporary comparison used Node.js 22.23.1 and npm 10.9.8. It evaluated:
|
|
41
|
+
|
|
42
|
+
- common CSS inputs: hex, modern RGB with alpha, HSL, OKLCH, Display P3, and
|
|
43
|
+
`transparent`;
|
|
44
|
+
- an 11 × 11 × 11 sRGB grid round-tripped through OKLCH;
|
|
45
|
+
- difficult high-chroma OKLCH colors and Display P3 primaries/mixtures;
|
|
46
|
+
- a 3,672-color OKLCH sweep with lightness `0.10–0.95`, chroma `0.05–0.45`,
|
|
47
|
+
and hue every 15 degrees;
|
|
48
|
+
- exact WCAG 2 relative-luminance contrast vectors used by Theme; and
|
|
49
|
+
- 10,000 deterministic OKLCH-to-sRGB gamut mappings as a directional timing
|
|
50
|
+
check.
|
|
51
|
+
|
|
52
|
+
Color.js's `css` method served as the independent JavaScript comparison for
|
|
53
|
+
gamut mapping. CSS Color 4 identifies Color.js as an experimental
|
|
54
|
+
implementation of binary-search local-MINDE mapping and specifies deltaEOK
|
|
55
|
+
`0.02` as one just-noticeable difference in OKLCH.
|
|
56
|
+
|
|
57
|
+
## Results
|
|
58
|
+
|
|
59
|
+
- Both candidates parsed every required input format.
|
|
60
|
+
- Culori's maximum sRGB → OKLCH → sRGB channel error was
|
|
61
|
+
`4.16 × 10⁻¹⁴`; Color.js measured `3.62 × 10⁻¹⁴`.
|
|
62
|
+
- The focused difficult-color corpus produced 10 identical 8-bit hex results
|
|
63
|
+
out of 11. Its maximum difference was deltaEOK `0.0000913`.
|
|
64
|
+
- Culori may return destination channels a few floating-point units outside
|
|
65
|
+
`[0, 1]` (for example `-2.8 × 10⁻¹⁴`) at an exact gamut boundary. Colors must
|
|
66
|
+
normalize this numerical epsilon before exposing exact sRGB components; its
|
|
67
|
+
qualified hex serializer already produces the expected bounded value.
|
|
68
|
+
- Across the 3,672-color sweep, 3,586 outputs (97.7%) serialized to the same
|
|
69
|
+
8-bit hex. The maximum deltaEOK was `0.000284`, about 70 times smaller than
|
|
70
|
+
the `0.02` just-noticeable threshold. The maximum individual sRGB channel
|
|
71
|
+
difference was `0.00270`; the two cases with the largest numeric differences
|
|
72
|
+
still serialized to the same hex.
|
|
73
|
+
- Culori exactly reproduced the tested WCAG values used by Theme, including
|
|
74
|
+
`21:1` for black/white, `4.478089453577214:1` for `#777777`/white, and
|
|
75
|
+
`3.9984767707539985:1` for red/white. Color.js showed small implementation
|
|
76
|
+
differences on saturated red and orange.
|
|
77
|
+
- In the non-authoritative 10,000-map timing run, Culori completed in about
|
|
78
|
+
110 ms and Color.js in about 246 ms on the same machine and process model.
|
|
79
|
+
Performance was not the deciding gate, but it did not expose a Culori cost.
|
|
80
|
+
|
|
81
|
+
## Why Culori
|
|
82
|
+
|
|
83
|
+
Culori meets the required parsing, conversion, round-trip, gamut, contrast,
|
|
84
|
+
determinism, and licensing boundary with materially less package weight. Its
|
|
85
|
+
plain-object functional API also fits a serializable build-time library better
|
|
86
|
+
than exposing mutable color class instances.
|
|
87
|
+
|
|
88
|
+
The small gamut differences are far below the current just-noticeable
|
|
89
|
+
threshold and are covered by permanent difficult-hue fixtures. Color.js would
|
|
90
|
+
be the fallback if later evidence exposes a Culori defect or if FLOWSTACK needs
|
|
91
|
+
an algorithm Culori cannot qualify.
|
|
92
|
+
|
|
93
|
+
## Permanent gates
|
|
94
|
+
|
|
95
|
+
The repository retains tests for:
|
|
96
|
+
|
|
97
|
+
- required parser formats;
|
|
98
|
+
- sRGB/OKLCH round-trip precision;
|
|
99
|
+
- difficult hue and Display P3 gamut mapping;
|
|
100
|
+
- deterministic repeated results;
|
|
101
|
+
- exact WCAG contrast values; and
|
|
102
|
+
- TypeScript declaration compatibility.
|
|
103
|
+
|
|
104
|
+
Requalify this decision before accepting:
|
|
105
|
+
|
|
106
|
+
- a Culori major version;
|
|
107
|
+
- a material CSS Color 4 gamut-algorithm change;
|
|
108
|
+
- a new output gamut or HDR color space;
|
|
109
|
+
- a change in the Theme contrast authority; or
|
|
110
|
+
- any fixture drift not explained by an explicitly adopted algorithm change.
|
|
111
|
+
|
|
112
|
+
## Sources
|
|
113
|
+
|
|
114
|
+
- [CSS Color Module Level 4](https://www.w3.org/TR/css-color-4/)
|
|
115
|
+
- [WCAG 2.2](https://www.w3.org/TR/WCAG22/)
|
|
116
|
+
- [Culori API](https://culorijs.org/api/)
|
|
117
|
+
- [Color.js gamut mapping](https://colorjs.io/docs/gamut-mapping)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Public document: installation
|
|
2
|
+
|
|
3
|
+
Source: @flowstack-ui/colors@0.1.1
|
|
4
|
+
|
|
5
|
+
# Installation
|
|
6
|
+
|
|
7
|
+
Colors is build-time tooling for generating and reviewing palette candidates.
|
|
8
|
+
Install it as a development dependency:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm install --save-dev @flowstack-ui/colors
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Version 0.1 requires Node.js 22 or newer and ships ESM JavaScript plus strict
|
|
15
|
+
TypeScript declarations.
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import {
|
|
19
|
+
COLOR_GENERATION_REQUEST_SCHEMA,
|
|
20
|
+
generatePaletteCandidate,
|
|
21
|
+
reviewPaletteCandidate,
|
|
22
|
+
} from "@flowstack-ui/colors";
|
|
23
|
+
|
|
24
|
+
const candidate = generatePaletteCandidate({
|
|
25
|
+
$schema: COLOR_GENERATION_REQUEST_SCHEMA,
|
|
26
|
+
seeds: [{ id: "brand", color: "#3157d5", profile: "interface" }],
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
const reviewed = reviewPaletteCandidate(candidate, {
|
|
30
|
+
status: "accepted",
|
|
31
|
+
notes: "Approved for Theme mapping.",
|
|
32
|
+
});
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Write the reviewed object as JSON when passing it to Theme. The candidate file
|
|
36
|
+
is the integration boundary; neither package depends on the other.
|
|
37
|
+
|
|
38
|
+
## Runtime boundary
|
|
39
|
+
|
|
40
|
+
Colors does not import React, access the DOM, inject CSS, load fonts, or depend
|
|
41
|
+
on Brick or Theme. Its only runtime dependency is the exactly qualified color
|
|
42
|
+
engine used by its functions.
|
|
43
|
+
|
|
44
|
+
Applications should generate candidates during development or a build step and
|
|
45
|
+
ship Theme's compiled CSS. Do not import Colors from application client code
|
|
46
|
+
unless the application deliberately intends to bundle a color editor or other
|
|
47
|
+
future runtime tool. Installing Colors does not itself add code to a browser
|
|
48
|
+
bundle.
|