division-ds 0.3.1 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -2
- package/package.json +1 -1
- package/public/docs/components/chart-panel.md +57 -42
- package/public/docs/components/code-block.md +106 -0
- package/public/docs/components/dropdown-menu.md +1 -0
- package/public/docs/components/kbd.md +24 -3
- package/public/docs/components/navbar.md +54 -3
- package/public/docs/components/panel.md +139 -0
- package/public/docs/components/progress.md +1 -1
- package/public/docs/components/terminal.md +405 -0
- package/public/manifest/components.json +581 -12
- package/public/manifest/tokens.json +178 -7
- package/scripts/lib/component-props.mjs +10 -1
- package/skills/division-ds/SKILL.md +1 -1
|
@@ -430,9 +430,12 @@
|
|
|
430
430
|
"layer": "semantic",
|
|
431
431
|
"value": {
|
|
432
432
|
"dark": "#0d1016",
|
|
433
|
-
"light": "#
|
|
433
|
+
"light": "#e3e8ef"
|
|
434
434
|
},
|
|
435
|
-
"use": "The opaque fill of a control you type or pick in (Input, Textarea, Select), and of small opaque surfaces: Kbd, Tag, Tooltip, menus, toasts. Not a card."
|
|
435
|
+
"use": "The opaque fill of a control you type or pick in (Input, Textarea, Select), and of small opaque surfaces: Kbd, Tag, Tooltip, menus, toasts. Not a card.",
|
|
436
|
+
"measured": {
|
|
437
|
+
"light": "neutral.50 mixed 31% of the way to neutral.100 in OKLab (#e3e8ef with the default preset), so the base-to-sunken step is OKLCH ΔL 0.038, the same step as the dark theme (#07080b to #0d1016, ΔL 0.038). neutral.100 alone sat ΔL 0.122 below base and made every field a heavy grey slab; the ramp has no stop in between. A mix of two ramp stops, not a literal, so a Theme Builder preset re-tints it."
|
|
438
|
+
}
|
|
436
439
|
},
|
|
437
440
|
{
|
|
438
441
|
"name": "--color-surface-raised",
|
|
@@ -488,7 +491,7 @@
|
|
|
488
491
|
"use": "The boundary of an interactive control at rest (Input, Select, secondary Button). The one border that has to be seen to find the control.",
|
|
489
492
|
"measured": {
|
|
490
493
|
"dark": "3.53:1 on surface.sunken (the control fill it is painted on) and 3.71:1 on surface.base — the INFORMATIONAL hairline, the one SC 1.4.11 governs. Opaque rather than alpha so the boundary holds whatever surface it lands on.",
|
|
491
|
-
"light": "
|
|
494
|
+
"light": "4.56:1 on surface.sunken (the control fill it is painted on) and 5.10:1 on surface.base — the INFORMATIONAL hairline, the one SC 1.4.11 governs. Opaque rather than alpha so the boundary holds whatever surface it lands on."
|
|
492
495
|
}
|
|
493
496
|
},
|
|
494
497
|
{
|
|
@@ -501,7 +504,7 @@
|
|
|
501
504
|
"use": "The boundary of the small selection controls at rest: Checkbox, Radio, Switch track.",
|
|
502
505
|
"measured": {
|
|
503
506
|
"dark": "The boundary of the small selection controls (Checkbox, Radio, Switch track) at rest. 6.12:1 on surface.sunken. Brighter than border.control (3.53:1) on purpose: a 20px box drawn with the same hairline as a 320px input carries a fraction of the edge length, and at 3.53:1 an unchecked checkbox all but vanished on the dark page. border.control stays the hairline for the large fields.",
|
|
504
|
-
"light": "The boundary of the small selection controls (Checkbox, Radio, Switch track) at rest. Same value as border.control in this theme (
|
|
507
|
+
"light": "The boundary of the small selection controls (Checkbox, Radio, Switch track) at rest. Same value as border.control in this theme (4.56:1 on surface.sunken), which reads clearly on a light page; the token exists in both themes because dark needed its own brighter step."
|
|
505
508
|
}
|
|
506
509
|
},
|
|
507
510
|
{
|
|
@@ -544,7 +547,7 @@
|
|
|
544
547
|
"use": "Placeholder text inside a control, on surface.sunken. Only there.",
|
|
545
548
|
"measured": {
|
|
546
549
|
"dark": "4.68:1 on surface.sunken, which is the control fill placeholder text is actually painted on. text.muted is gated against surface.base and passes there at 4.59:1, but reaches only 4.37:1 on the sunken fill — so placeholder needs its own step.",
|
|
547
|
-
"light": "
|
|
550
|
+
"light": "10.23:1 on surface.sunken, the control fill it is painted on. Light theme needs no separate step from text.muted — unlike dark, where muted reaches only 4.37:1 there — but the name exists in both themes so the component layer has one alias to point at."
|
|
548
551
|
}
|
|
549
552
|
},
|
|
550
553
|
{
|
|
@@ -775,7 +778,7 @@
|
|
|
775
778
|
"use": "Text or an icon that marks something as made by AI: the AiLabel mark, the AI glyph in a field an AI filled. Always beside a word, never colour alone.",
|
|
776
779
|
"measured": {
|
|
777
780
|
"dark": "Measured by the gate: 9.55:1 on surface.base, 9.08:1 on surface.sunken, 8.32:1 on surface.raised. One step lighter than accent.info.text (info.500) so AI marks and status text do not read as the same thing.",
|
|
778
|
-
"light": "Measured by the gate: 8.39:1 on surface.base,
|
|
781
|
+
"light": "Measured by the gate: 8.39:1 on surface.base, 7.50:1 on surface.sunken, 8.92:1 on surface.raised. info.700 reached only 3.49:1 on the earlier, darker surface.sunken (neutral.100), so the light theme takes info.800."
|
|
779
782
|
}
|
|
780
783
|
},
|
|
781
784
|
{
|
|
@@ -788,7 +791,7 @@
|
|
|
788
791
|
"use": "The boundary of a form field whose value an AI filled and the person has not changed. Input and Textarea paint it from aiValue; do not paint it by hand.",
|
|
789
792
|
"measured": {
|
|
790
793
|
"dark": "The edge of a field an AI filled. 7.91:1 on the AI-filled field (ai.wash over the control fill), far above the 3:1 SC 1.4.11 floor. Same stop as ai.text; a separate token because a boundary and text carry different floors.",
|
|
791
|
-
"light": "The edge of a field an AI filled.
|
|
794
|
+
"light": "The edge of a field an AI filled. 6.72:1 on the AI-filled field (ai.wash over surface.sunken). Same stop as ai.text; a separate token because a boundary and text carry different floors."
|
|
792
795
|
}
|
|
793
796
|
},
|
|
794
797
|
{
|
|
@@ -842,6 +845,174 @@
|
|
|
842
845
|
"light": "Second chart series. 5.09:1 on surface.base, 5.41:1 on surface.raised, 5.52:1 nested. Never text. There is no third: the other hues are status colours."
|
|
843
846
|
}
|
|
844
847
|
},
|
|
848
|
+
{
|
|
849
|
+
"name": "--color-terminal-black",
|
|
850
|
+
"layer": "semantic",
|
|
851
|
+
"value": {
|
|
852
|
+
"dark": "#7b8592",
|
|
853
|
+
"light": "#3a4049"
|
|
854
|
+
},
|
|
855
|
+
"use": "ANSI black in the Terminal component's output. Terminal applies it; never use it outside a terminal.",
|
|
856
|
+
"measured": {
|
|
857
|
+
"dark": "Not literal black: ANSI black must stay readable on this page, so it is a grey here.",
|
|
858
|
+
"light": "Not literal black: ANSI black must stay readable on this page, so it is a grey here."
|
|
859
|
+
}
|
|
860
|
+
},
|
|
861
|
+
{
|
|
862
|
+
"name": "--color-terminal-red",
|
|
863
|
+
"layer": "semantic",
|
|
864
|
+
"value": {
|
|
865
|
+
"dark": "#ff6b5e",
|
|
866
|
+
"light": "#b3261e"
|
|
867
|
+
},
|
|
868
|
+
"use": "ANSI red in the Terminal component's output. Terminal applies it; never use it outside a terminal."
|
|
869
|
+
},
|
|
870
|
+
{
|
|
871
|
+
"name": "--color-terminal-green",
|
|
872
|
+
"layer": "semantic",
|
|
873
|
+
"value": {
|
|
874
|
+
"dark": "#3ddc84",
|
|
875
|
+
"light": "#14713d"
|
|
876
|
+
},
|
|
877
|
+
"use": "ANSI green in the Terminal component's output. Terminal applies it; never use it outside a terminal."
|
|
878
|
+
},
|
|
879
|
+
{
|
|
880
|
+
"name": "--color-terminal-yellow",
|
|
881
|
+
"layer": "semantic",
|
|
882
|
+
"value": {
|
|
883
|
+
"dark": "#e8b931",
|
|
884
|
+
"light": "#7a5a00"
|
|
885
|
+
},
|
|
886
|
+
"use": "ANSI yellow in the Terminal component's output. Terminal applies it; never use it outside a terminal."
|
|
887
|
+
},
|
|
888
|
+
{
|
|
889
|
+
"name": "--color-terminal-blue",
|
|
890
|
+
"layer": "semantic",
|
|
891
|
+
"value": {
|
|
892
|
+
"dark": "#5aa7ff",
|
|
893
|
+
"light": "#0057c2"
|
|
894
|
+
},
|
|
895
|
+
"use": "ANSI blue in the Terminal component's output. Terminal applies it; never use it outside a terminal."
|
|
896
|
+
},
|
|
897
|
+
{
|
|
898
|
+
"name": "--color-terminal-magenta",
|
|
899
|
+
"layer": "semantic",
|
|
900
|
+
"value": {
|
|
901
|
+
"dark": "#d98cf0",
|
|
902
|
+
"light": "#8a2bb0"
|
|
903
|
+
},
|
|
904
|
+
"use": "ANSI magenta in the Terminal component's output. Terminal applies it; never use it outside a terminal."
|
|
905
|
+
},
|
|
906
|
+
{
|
|
907
|
+
"name": "--color-terminal-cyan",
|
|
908
|
+
"layer": "semantic",
|
|
909
|
+
"value": {
|
|
910
|
+
"dark": "#3fd0d8",
|
|
911
|
+
"light": "#00696f"
|
|
912
|
+
},
|
|
913
|
+
"use": "ANSI cyan in the Terminal component's output. Terminal applies it; never use it outside a terminal."
|
|
914
|
+
},
|
|
915
|
+
{
|
|
916
|
+
"name": "--color-terminal-white",
|
|
917
|
+
"layer": "semantic",
|
|
918
|
+
"value": {
|
|
919
|
+
"dark": "#c4ccd6",
|
|
920
|
+
"light": "#5c636d"
|
|
921
|
+
},
|
|
922
|
+
"use": "ANSI white in the Terminal component's output. Terminal applies it; never use it outside a terminal.",
|
|
923
|
+
"measured": {
|
|
924
|
+
"dark": "Not literal white: ANSI white must stay readable on this page, so it is a grey here.",
|
|
925
|
+
"light": "Not literal white: ANSI white must stay readable on this page, so it is a grey here."
|
|
926
|
+
}
|
|
927
|
+
},
|
|
928
|
+
{
|
|
929
|
+
"name": "--color-terminal-bright-black",
|
|
930
|
+
"layer": "semantic",
|
|
931
|
+
"value": {
|
|
932
|
+
"dark": "#98a2af",
|
|
933
|
+
"light": "#646b75"
|
|
934
|
+
},
|
|
935
|
+
"use": "ANSI bright black in the Terminal component's output. Terminal applies it; never use it outside a terminal."
|
|
936
|
+
},
|
|
937
|
+
{
|
|
938
|
+
"name": "--color-terminal-bright-red",
|
|
939
|
+
"layer": "semantic",
|
|
940
|
+
"value": {
|
|
941
|
+
"dark": "#ff9288",
|
|
942
|
+
"light": "#8f1c16"
|
|
943
|
+
},
|
|
944
|
+
"use": "ANSI bright red in the Terminal component's output. Terminal applies it; never use it outside a terminal."
|
|
945
|
+
},
|
|
946
|
+
{
|
|
947
|
+
"name": "--color-terminal-bright-green",
|
|
948
|
+
"layer": "semantic",
|
|
949
|
+
"value": {
|
|
950
|
+
"dark": "#7debaa",
|
|
951
|
+
"light": "#0e5a30"
|
|
952
|
+
},
|
|
953
|
+
"use": "ANSI bright green in the Terminal component's output. Terminal applies it; never use it outside a terminal."
|
|
954
|
+
},
|
|
955
|
+
{
|
|
956
|
+
"name": "--color-terminal-bright-yellow",
|
|
957
|
+
"layer": "semantic",
|
|
958
|
+
"value": {
|
|
959
|
+
"dark": "#f5d36a",
|
|
960
|
+
"light": "#5f4600"
|
|
961
|
+
},
|
|
962
|
+
"use": "ANSI bright yellow in the Terminal component's output. Terminal applies it; never use it outside a terminal."
|
|
963
|
+
},
|
|
964
|
+
{
|
|
965
|
+
"name": "--color-terminal-bright-blue",
|
|
966
|
+
"layer": "semantic",
|
|
967
|
+
"value": {
|
|
968
|
+
"dark": "#8cc2ff",
|
|
969
|
+
"light": "#00459c"
|
|
970
|
+
},
|
|
971
|
+
"use": "ANSI bright blue in the Terminal component's output. Terminal applies it; never use it outside a terminal."
|
|
972
|
+
},
|
|
973
|
+
{
|
|
974
|
+
"name": "--color-terminal-bright-magenta",
|
|
975
|
+
"layer": "semantic",
|
|
976
|
+
"value": {
|
|
977
|
+
"dark": "#e8b3f7",
|
|
978
|
+
"light": "#6e1f8e"
|
|
979
|
+
},
|
|
980
|
+
"use": "ANSI bright magenta in the Terminal component's output. Terminal applies it; never use it outside a terminal."
|
|
981
|
+
},
|
|
982
|
+
{
|
|
983
|
+
"name": "--color-terminal-bright-cyan",
|
|
984
|
+
"layer": "semantic",
|
|
985
|
+
"value": {
|
|
986
|
+
"dark": "#7fe4ea",
|
|
987
|
+
"light": "#005257"
|
|
988
|
+
},
|
|
989
|
+
"use": "ANSI bright cyan in the Terminal component's output. Terminal applies it; never use it outside a terminal."
|
|
990
|
+
},
|
|
991
|
+
{
|
|
992
|
+
"name": "--color-terminal-bright-white",
|
|
993
|
+
"layer": "semantic",
|
|
994
|
+
"value": {
|
|
995
|
+
"dark": "#f4f7fa",
|
|
996
|
+
"light": "#16191e"
|
|
997
|
+
},
|
|
998
|
+
"use": "ANSI bright white in the Terminal component's output. Terminal applies it; never use it outside a terminal.",
|
|
999
|
+
"measured": {
|
|
1000
|
+
"light": "Inverted on purpose in the light theme: the strongest ink, not a pale colour."
|
|
1001
|
+
}
|
|
1002
|
+
},
|
|
1003
|
+
{
|
|
1004
|
+
"name": "--color-terminal-selection",
|
|
1005
|
+
"layer": "semantic",
|
|
1006
|
+
"value": {
|
|
1007
|
+
"dark": "rgba(90, 167, 255, 0.58)",
|
|
1008
|
+
"light": "rgba(0, 99, 213, 0.72)"
|
|
1009
|
+
},
|
|
1010
|
+
"use": "The selected text wash in the Terminal component. Terminal applies it.",
|
|
1011
|
+
"measured": {
|
|
1012
|
+
"dark": "A wash over surface.base: at least 3:1 against the page and text.primary at 4.5:1 on it. Gated.",
|
|
1013
|
+
"light": "A wash over surface.base: at least 3:1 against the page and text.primary at 4.5:1 on it. Gated."
|
|
1014
|
+
}
|
|
1015
|
+
},
|
|
845
1016
|
{
|
|
846
1017
|
"name": "--component-control-height-sm",
|
|
847
1018
|
"layer": "component",
|
|
@@ -62,7 +62,16 @@ export function publicExports(root, tier) {
|
|
|
62
62
|
entry[isType ? 'types' : 'values'].push(element.name.text)
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
return bySlug
|
|
65
|
+
return { ...bySlug, ...OUTSIDE_BARREL[tier] }
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Components deliberately not re-exported by their tier's barrel, because a barrel import would
|
|
69
|
+
* put a heavy library in every screen that imports the barrel. They are still public: their docs
|
|
70
|
+
* page gives the direct import. */
|
|
71
|
+
const OUTSIDE_BARREL = {
|
|
72
|
+
organisms: {
|
|
73
|
+
terminal: { values: ['Terminal'], types: ['TerminalHandle', 'TerminalProps', 'TerminalStatus'], from: ['./terminal/Terminal'] },
|
|
74
|
+
},
|
|
66
75
|
}
|
|
67
76
|
|
|
68
77
|
/** What a folder's files export, read from the type checker:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: division-ds
|
|
3
|
-
description: Use when building or changing UI with Division DS (React 19, Tailwind 4, Radix;
|
|
3
|
+
description: Use when building or changing UI with Division DS (React 19, Tailwind 4, Radix; 75 components). Covers which component and token to use, the composition rules prop types cannot express (providers, FormField, button gaps, card borders), planning a screen's states, and how to check the result. Load it before writing any screen or component in a project that has Division DS components.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Division DS
|