@xenosystem/elements-react 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/LICENSE +18 -18
  2. package/README.md +41 -41
  3. package/package.json +58 -58
  4. package/src/chrome-separated.css +132 -132
  5. package/src/chrome-unified.css +72 -72
  6. package/src/containers/Badges.css +116 -116
  7. package/src/containers/avatar.css +70 -70
  8. package/src/containers/card.css +75 -75
  9. package/src/containers/chip.css +103 -103
  10. package/src/containers/list-row.css +132 -132
  11. package/src/containers/message-bubble.css +112 -112
  12. package/src/containers/panel.css +120 -120
  13. package/src/containers/table.css +102 -102
  14. package/src/containers/tile.css +17 -17
  15. package/src/content/callout.css +77 -77
  16. package/src/content/caret.css +30 -30
  17. package/src/content/code-block.css +159 -159
  18. package/src/content/collapsible.css +80 -80
  19. package/src/content/inline-code.css +14 -14
  20. package/src/content/model-picker.css +219 -219
  21. package/src/content/source-card.css +99 -99
  22. package/src/content/sources-disclosure.css +118 -118
  23. package/src/controls.css +453 -453
  24. package/src/fonts.css +34 -34
  25. package/src/forms/Checkbox.css +114 -114
  26. package/src/forms/RadioGroup.css +115 -115
  27. package/src/goo.css +97 -97
  28. package/src/icon-motion.css +1909 -1909
  29. package/src/layout/ResizablePanel.css +79 -79
  30. package/src/nav/sidebar.css +296 -296
  31. package/src/overlays/date-time-picker.css +238 -238
  32. package/src/overlays/menu.css +195 -195
  33. package/src/overlays/modal.css +167 -167
  34. package/src/overlays/picker-field.css +81 -81
  35. package/src/overlays/pill-filter.css +129 -129
  36. package/src/overlays/reveal.css +56 -56
  37. package/src/overlays/segmented-control.css +185 -185
  38. package/src/overlays/tabs.css +143 -143
  39. package/src/overlays/tooltip.css +126 -126
  40. package/src/scrollbar.css +184 -184
  41. package/src/size.css +179 -179
  42. package/src/status/progress-bar.css +88 -88
  43. package/src/status/spinner.css +33 -33
  44. package/src/status/statusindicator.css +65 -65
  45. package/src/status/steptimeline.css +137 -137
  46. package/src/status/thinkingcube.css +75 -75
  47. package/src/xeno-element.css +60 -60
  48. package/src/xeno-elements.css +71 -71
  49. package/src/xeno-theme.css +99 -99
@@ -1,71 +1,71 @@
1
- /*
2
- * `@xenosystem/elements-react/xeno-elements.css` — the one-import stylesheet.
3
- *
4
- * Pulls in the theme tokens, the element renderer styles, the Tier-1 control styles, and every
5
- * Tier-2 element stylesheet. Import this once and scope your tree with a `.xeno` element:
6
- *
7
- * import '@xenosystem/elements-react/xeno-elements.css'
8
- *
9
- * Tokens must come first so every rule below can read the CSS custom properties.
10
- */
11
-
12
- /* Foundation: tokens, then the renderer + controls. */
13
- @import './xeno-theme.css';
14
- /* The chrome axis — one file per construction, one owner each. See either file's header. */
15
- @import './chrome-separated.css';
16
- @import './chrome-unified.css';
17
- @import './size.css';
18
- @import './xeno-element.css';
19
- @import './scrollbar.css';
20
- @import './icon-motion.css';
21
- @import './goo.css';
22
- @import './controls.css';
23
-
24
- /* Containers */
25
- @import './containers/card.css';
26
- @import './containers/panel.css';
27
- @import './containers/chip.css';
28
- @import './containers/tile.css';
29
- @import './containers/message-bubble.css';
30
- @import './containers/Badges.css';
31
- @import './containers/avatar.css';
32
- @import './containers/list-row.css';
33
- @import './containers/table.css';
34
-
35
- /* Overlays (Popover shares menu.css) */
36
- @import './overlays/menu.css';
37
- @import './overlays/modal.css';
38
- @import './overlays/tabs.css';
39
- @import './overlays/segmented-control.css';
40
- @import './overlays/pill-filter.css';
41
- @import './overlays/tooltip.css';
42
- @import './overlays/date-time-picker.css';
43
- @import './overlays/reveal.css';
44
- @import './overlays/picker-field.css';
45
-
46
- /* Forms */
47
- @import './forms/Checkbox.css';
48
- @import './forms/RadioGroup.css';
49
-
50
- /* Content */
51
- @import './content/code-block.css';
52
- @import './content/source-card.css';
53
- @import './content/sources-disclosure.css';
54
- @import './content/model-picker.css';
55
- @import './content/inline-code.css';
56
- @import './content/callout.css';
57
- @import './content/collapsible.css';
58
- @import './content/caret.css';
59
-
60
- /* Nav */
61
- @import './nav/sidebar.css';
62
-
63
- /* Layout */
64
- @import './layout/ResizablePanel.css';
65
-
66
- /* Status */
67
- @import './status/thinkingcube.css';
68
- @import './status/spinner.css';
69
- @import './status/progress-bar.css';
70
- @import './status/steptimeline.css';
71
- @import './status/statusindicator.css';
1
+ /*
2
+ * `@xenosystem/elements-react/xeno-elements.css` — the one-import stylesheet.
3
+ *
4
+ * Pulls in the theme tokens, the element renderer styles, the Tier-1 control styles, and every
5
+ * Tier-2 element stylesheet. Import this once and scope your tree with a `.xeno` element:
6
+ *
7
+ * import '@xenosystem/elements-react/xeno-elements.css'
8
+ *
9
+ * Tokens must come first so every rule below can read the CSS custom properties.
10
+ */
11
+
12
+ /* Foundation: tokens, then the renderer + controls. */
13
+ @import './xeno-theme.css';
14
+ /* The chrome axis — one file per construction, one owner each. See either file's header. */
15
+ @import './chrome-separated.css';
16
+ @import './chrome-unified.css';
17
+ @import './size.css';
18
+ @import './xeno-element.css';
19
+ @import './scrollbar.css';
20
+ @import './icon-motion.css';
21
+ @import './goo.css';
22
+ @import './controls.css';
23
+
24
+ /* Containers */
25
+ @import './containers/card.css';
26
+ @import './containers/panel.css';
27
+ @import './containers/chip.css';
28
+ @import './containers/tile.css';
29
+ @import './containers/message-bubble.css';
30
+ @import './containers/Badges.css';
31
+ @import './containers/avatar.css';
32
+ @import './containers/list-row.css';
33
+ @import './containers/table.css';
34
+
35
+ /* Overlays (Popover shares menu.css) */
36
+ @import './overlays/menu.css';
37
+ @import './overlays/modal.css';
38
+ @import './overlays/tabs.css';
39
+ @import './overlays/segmented-control.css';
40
+ @import './overlays/pill-filter.css';
41
+ @import './overlays/tooltip.css';
42
+ @import './overlays/date-time-picker.css';
43
+ @import './overlays/reveal.css';
44
+ @import './overlays/picker-field.css';
45
+
46
+ /* Forms */
47
+ @import './forms/Checkbox.css';
48
+ @import './forms/RadioGroup.css';
49
+
50
+ /* Content */
51
+ @import './content/code-block.css';
52
+ @import './content/source-card.css';
53
+ @import './content/sources-disclosure.css';
54
+ @import './content/model-picker.css';
55
+ @import './content/inline-code.css';
56
+ @import './content/callout.css';
57
+ @import './content/collapsible.css';
58
+ @import './content/caret.css';
59
+
60
+ /* Nav */
61
+ @import './nav/sidebar.css';
62
+
63
+ /* Layout */
64
+ @import './layout/ResizablePanel.css';
65
+
66
+ /* Status */
67
+ @import './status/thinkingcube.css';
68
+ @import './status/spinner.css';
69
+ @import './status/progress-bar.css';
70
+ @import './status/steptimeline.css';
71
+ @import './status/statusindicator.css';
@@ -1,99 +1,99 @@
1
- /*
2
- * XENO theme — the design tokens as CSS custom properties. Scope with a `.xeno` element (or copy the
3
- * vars onto :root). Monochrome SHELL: every role below is greyscale; only `--xeno-danger` carries hue.
4
- * Values mirror @xenosystem/elements/tokens (guarded by theme.test.ts). Dark is the default; light is a
5
- * PROPOSED companion (the design-system locks dark; the chat lab supplies the light ground). Dim: TODO.
6
- */
7
-
8
- .xeno {
9
- /* radius scale — rounded squares, never circles */
10
- --xeno-radius-hair: 1.5px;
11
- --xeno-radius-xs: 3px;
12
- --xeno-radius-sm: 5px;
13
- --xeno-radius-md: 6px;
14
- --xeno-radius-control: 8px;
15
- --xeno-radius-card: 12px;
16
-
17
- /* colour roles — dark (DESIGN_SYSTEM §2) */
18
- --xeno-canvas: #08080a;
19
- /* §2 Layer 1 "Canvas/viewport" — the body plate of any chrome stack.
20
- ⚠️ NAMING TRAP: `--xeno-canvas` above is `surface.page`, NOT `surface.canvas`. The token named
21
- `canvas` is THIS one. Renaming would touch every component, so it is recorded, not deepened. */
22
- --xeno-viewport: #111111;
23
- --xeno-surface: #161618;
24
- /* §2 Layer 3 "Panel header". The token (`surface.panelHeader`) already existed; this block simply
25
- had not exposed it, which is why the panel had no second surface to separate its heading onto. */
26
- --xeno-panel-header: #1a1a1a;
27
- --xeno-elevated: #111115;
28
- --xeno-control: #2b2b2b;
29
- --xeno-border: rgba(255, 255, 255, 0.1);
30
- /* Half-weight hairline. `Plate` frames its shell at white/[0.05]; `--xeno-border` (0.1) is twice
31
- that and reads as a drawn line rather than an edge. The playbook calls it `border-subtle`. */
32
- --xeno-border-subtle: rgba(255, 255, 255, 0.05);
33
- --xeno-hover: rgba(169, 169, 177, 0.08);
34
- --xeno-text: #d8d8de;
35
- --xeno-muted: #7f7f86;
36
- --xeno-active: #acacb4;
37
- --xeno-danger: #ef4444;
38
- --xeno-danger-hover: #dc2626;
39
- --xeno-on-accent: #08080a;
40
-
41
- /* scrollbar — its own alphas on purpose. A thumb sitting on any surface in the set has to be legible
42
- without being furniture, and neither `--xeno-border` (too faint to grab) nor `--xeno-muted` (too
43
- loud) is that value. Nothing is painted at rest; `-hover` is the bar in the region, `-active` is
44
- the bar under the pointer. The pads set the widths: 5px of border on a 12px gutter leaves a 2px
45
- rail, 3px leaves a 6px thumb, 2px leaves the 8px it grows to. */
46
- --xeno-scroll-size: 12px;
47
- --xeno-scroll-pad: 3px;
48
- --xeno-scroll-pad-hover: 2px;
49
- --xeno-scroll-rail-pad: 5px;
50
- --xeno-scroll-rail: rgba(255, 255, 255, 0.07);
51
- --xeno-scroll-thumb: rgba(255, 255, 255, 0.16);
52
- --xeno-scroll-thumb-hover: rgba(255, 255, 255, 0.28);
53
- --xeno-scroll-thumb-active: rgba(255, 255, 255, 0.42);
54
-
55
- /* motion — easing families (E1 base + E2–E5 from the chat lab) */
56
- --xeno-ease: cubic-bezier(0.22, 1, 0.36, 1);
57
- --xeno-ease-stagger: cubic-bezier(0.22, 0.7, 0.2, 1);
58
- --xeno-ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);
59
- --xeno-ease-expo: cubic-bezier(0.16, 1, 0.3, 1);
60
- --xeno-ease-overshoot: cubic-bezier(0.34, 1.4, 0.5, 1);
61
- /* duration ladder + per-item stagger */
62
- --xeno-dur: 140ms;
63
- --xeno-dur-fast: 120ms;
64
- --xeno-dur-entrance: 240ms;
65
- --xeno-dur-modal: 420ms;
66
- --xeno-stagger: 40ms;
67
-
68
- color: var(--xeno-text);
69
- }
70
-
71
-
72
- /* Light — PROPOSED (chat lab ground). Same monochrome roles, inverted values. */
73
- .xeno[data-theme='light'] {
74
- --xeno-canvas: #faf9f7;
75
- --xeno-surface: #ffffff;
76
- --xeno-elevated: #ffffff;
77
- --xeno-control: #f0efec;
78
- /* PROPOSED, like the rest of this block. Dark puts the heading one step LIGHTER than the body
79
- (#1a1a1a over #161618); light mirrors that by going one step darker than a white body. It reuses
80
- the existing control value rather than inventing a hue — but it must not equal `--xeno-canvas`,
81
- or the 4px gap stops reading against the page and the separated architecture disappears. A real
82
- light ramp is the design system's call, not this file's. */
83
- --xeno-panel-header: #f0efec;
84
- /* PROPOSED. Reuses this block's white rather than minting a fourth light value; the only
85
- requirement is that shell / plate / body stay mutually distinguishable, or the gaps stop reading
86
- and the separated construction collapses. */
87
- --xeno-viewport: #ffffff;
88
- --xeno-border: rgba(0, 0, 0, 0.12);
89
- --xeno-border-subtle: rgba(0, 0, 0, 0.06);
90
- --xeno-hover: rgba(0, 0, 0, 0.05);
91
- --xeno-text: #1a1815;
92
- --xeno-muted: #6f6b64;
93
- --xeno-active: #3a3833;
94
- --xeno-on-accent: #faf9f7;
95
- --xeno-scroll-rail: rgba(0, 0, 0, 0.08);
96
- --xeno-scroll-thumb: rgba(0, 0, 0, 0.18);
97
- --xeno-scroll-thumb-hover: rgba(0, 0, 0, 0.32);
98
- --xeno-scroll-thumb-active: rgba(0, 0, 0, 0.46);
99
- }
1
+ /*
2
+ * XENO theme — the design tokens as CSS custom properties. Scope with a `.xeno` element (or copy the
3
+ * vars onto :root). Monochrome SHELL: every role below is greyscale; only `--xeno-danger` carries hue.
4
+ * Values mirror @xenosystem/elements/tokens (guarded by theme.test.ts). Dark is the default; light is a
5
+ * PROPOSED companion (the design-system locks dark; the chat lab supplies the light ground). Dim: TODO.
6
+ */
7
+
8
+ .xeno {
9
+ /* radius scale — rounded squares, never circles */
10
+ --xeno-radius-hair: 1.5px;
11
+ --xeno-radius-xs: 3px;
12
+ --xeno-radius-sm: 5px;
13
+ --xeno-radius-md: 6px;
14
+ --xeno-radius-control: 8px;
15
+ --xeno-radius-card: 12px;
16
+
17
+ /* colour roles — dark (DESIGN_SYSTEM §2) */
18
+ --xeno-canvas: #08080a;
19
+ /* §2 Layer 1 "Canvas/viewport" — the body plate of any chrome stack.
20
+ ⚠️ NAMING TRAP: `--xeno-canvas` above is `surface.page`, NOT `surface.canvas`. The token named
21
+ `canvas` is THIS one. Renaming would touch every component, so it is recorded, not deepened. */
22
+ --xeno-viewport: #111111;
23
+ --xeno-surface: #161618;
24
+ /* §2 Layer 3 "Panel header". The token (`surface.panelHeader`) already existed; this block simply
25
+ had not exposed it, which is why the panel had no second surface to separate its heading onto. */
26
+ --xeno-panel-header: #1a1a1a;
27
+ --xeno-elevated: #111115;
28
+ --xeno-control: #2b2b2b;
29
+ --xeno-border: rgba(255, 255, 255, 0.1);
30
+ /* Half-weight hairline. `Plate` frames its shell at white/[0.05]; `--xeno-border` (0.1) is twice
31
+ that and reads as a drawn line rather than an edge. The playbook calls it `border-subtle`. */
32
+ --xeno-border-subtle: rgba(255, 255, 255, 0.05);
33
+ --xeno-hover: rgba(169, 169, 177, 0.08);
34
+ --xeno-text: #d8d8de;
35
+ --xeno-muted: #7f7f86;
36
+ --xeno-active: #acacb4;
37
+ --xeno-danger: #ef4444;
38
+ --xeno-danger-hover: #dc2626;
39
+ --xeno-on-accent: #08080a;
40
+
41
+ /* scrollbar — its own alphas on purpose. A thumb sitting on any surface in the set has to be legible
42
+ without being furniture, and neither `--xeno-border` (too faint to grab) nor `--xeno-muted` (too
43
+ loud) is that value. Nothing is painted at rest; `-hover` is the bar in the region, `-active` is
44
+ the bar under the pointer. The pads set the widths: 5px of border on a 12px gutter leaves a 2px
45
+ rail, 3px leaves a 6px thumb, 2px leaves the 8px it grows to. */
46
+ --xeno-scroll-size: 12px;
47
+ --xeno-scroll-pad: 3px;
48
+ --xeno-scroll-pad-hover: 2px;
49
+ --xeno-scroll-rail-pad: 5px;
50
+ --xeno-scroll-rail: rgba(255, 255, 255, 0.07);
51
+ --xeno-scroll-thumb: rgba(255, 255, 255, 0.16);
52
+ --xeno-scroll-thumb-hover: rgba(255, 255, 255, 0.28);
53
+ --xeno-scroll-thumb-active: rgba(255, 255, 255, 0.42);
54
+
55
+ /* motion — easing families (E1 base + E2–E5 from the chat lab) */
56
+ --xeno-ease: cubic-bezier(0.22, 1, 0.36, 1);
57
+ --xeno-ease-stagger: cubic-bezier(0.22, 0.7, 0.2, 1);
58
+ --xeno-ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);
59
+ --xeno-ease-expo: cubic-bezier(0.16, 1, 0.3, 1);
60
+ --xeno-ease-overshoot: cubic-bezier(0.34, 1.4, 0.5, 1);
61
+ /* duration ladder + per-item stagger */
62
+ --xeno-dur: 140ms;
63
+ --xeno-dur-fast: 120ms;
64
+ --xeno-dur-entrance: 240ms;
65
+ --xeno-dur-modal: 420ms;
66
+ --xeno-stagger: 40ms;
67
+
68
+ color: var(--xeno-text);
69
+ }
70
+
71
+
72
+ /* Light — PROPOSED (chat lab ground). Same monochrome roles, inverted values. */
73
+ .xeno[data-theme='light'] {
74
+ --xeno-canvas: #faf9f7;
75
+ --xeno-surface: #ffffff;
76
+ --xeno-elevated: #ffffff;
77
+ --xeno-control: #f0efec;
78
+ /* PROPOSED, like the rest of this block. Dark puts the heading one step LIGHTER than the body
79
+ (#1a1a1a over #161618); light mirrors that by going one step darker than a white body. It reuses
80
+ the existing control value rather than inventing a hue — but it must not equal `--xeno-canvas`,
81
+ or the 4px gap stops reading against the page and the separated architecture disappears. A real
82
+ light ramp is the design system's call, not this file's. */
83
+ --xeno-panel-header: #f0efec;
84
+ /* PROPOSED. Reuses this block's white rather than minting a fourth light value; the only
85
+ requirement is that shell / plate / body stay mutually distinguishable, or the gaps stop reading
86
+ and the separated construction collapses. */
87
+ --xeno-viewport: #ffffff;
88
+ --xeno-border: rgba(0, 0, 0, 0.12);
89
+ --xeno-border-subtle: rgba(0, 0, 0, 0.06);
90
+ --xeno-hover: rgba(0, 0, 0, 0.05);
91
+ --xeno-text: #1a1815;
92
+ --xeno-muted: #6f6b64;
93
+ --xeno-active: #3a3833;
94
+ --xeno-on-accent: #faf9f7;
95
+ --xeno-scroll-rail: rgba(0, 0, 0, 0.08);
96
+ --xeno-scroll-thumb: rgba(0, 0, 0, 0.18);
97
+ --xeno-scroll-thumb-hover: rgba(0, 0, 0, 0.32);
98
+ --xeno-scroll-thumb-active: rgba(0, 0, 0, 0.46);
99
+ }