@xenosystem/elements-react 0.0.4 → 0.0.6
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/LICENSE +18 -18
- package/README.md +41 -41
- package/dist/containers/Chip.js +1 -1
- package/dist/containers/Panel.js +1 -1
- package/package.json +58 -58
- package/src/chrome-separated.css +132 -132
- package/src/chrome-unified.css +72 -72
- package/src/containers/Badges.css +116 -116
- package/src/containers/avatar.css +70 -70
- package/src/containers/card.css +75 -75
- package/src/containers/chip.css +103 -103
- package/src/containers/list-row.css +132 -132
- package/src/containers/message-bubble.css +112 -112
- package/src/containers/panel.css +125 -120
- package/src/containers/table.css +102 -102
- package/src/containers/tile.css +17 -17
- package/src/content/callout.css +77 -77
- package/src/content/caret.css +30 -30
- package/src/content/code-block.css +159 -159
- package/src/content/collapsible.css +80 -80
- package/src/content/inline-code.css +14 -14
- package/src/content/model-picker.css +219 -219
- package/src/content/source-card.css +99 -99
- package/src/content/sources-disclosure.css +118 -118
- package/src/controls.css +453 -453
- package/src/fonts.css +34 -34
- package/src/forms/Checkbox.css +114 -114
- package/src/forms/RadioGroup.css +115 -115
- package/src/goo.css +97 -97
- package/src/icon-motion.css +1909 -1909
- package/src/layout/ResizablePanel.css +79 -79
- package/src/nav/sidebar.css +296 -296
- package/src/overlays/date-time-picker.css +238 -238
- package/src/overlays/menu.css +195 -195
- package/src/overlays/modal.css +167 -167
- package/src/overlays/picker-field.css +81 -81
- package/src/overlays/pill-filter.css +129 -129
- package/src/overlays/reveal.css +56 -56
- package/src/overlays/segmented-control.css +185 -185
- package/src/overlays/tabs.css +143 -143
- package/src/overlays/tooltip.css +126 -126
- package/src/scrollbar.css +184 -184
- package/src/size.css +179 -179
- package/src/status/progress-bar.css +88 -88
- package/src/status/spinner.css +33 -33
- package/src/status/statusindicator.css +65 -65
- package/src/status/steptimeline.css +137 -137
- package/src/status/thinkingcube.css +75 -75
- package/src/xeno-element.css +60 -60
- package/src/xeno-elements.css +71 -71
- package/src/xeno-theme.css +112 -112
|
@@ -1,159 +1,159 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* CodeBlock — a monochrome code surface. Shell is greyscale (canvas card + hairline border); the code is
|
|
3
|
-
* the ink. State is CSS-first: `data-collapsed` on the root swaps body↔summary and rotates the chevron;
|
|
4
|
-
* `data-selection` on the copy button reflects the transient copied state. Tokens only — the sole hue is
|
|
5
|
-
* `--xeno-danger`, and only on an error output. Motion is transform/opacity, behind the reduce guard.
|
|
6
|
-
*/
|
|
7
|
-
.xeno-code {
|
|
8
|
-
display: flex;
|
|
9
|
-
flex-direction: column;
|
|
10
|
-
min-width: 0;
|
|
11
|
-
background: var(--xeno-canvas);
|
|
12
|
-
border: 1px solid var(--xeno-border);
|
|
13
|
-
border-radius: var(--xeno-radius-card);
|
|
14
|
-
color: var(--xeno-text);
|
|
15
|
-
overflow: hidden;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/* ── Header: language label + action row ─────────────────────────────────────────── */
|
|
19
|
-
.xeno-code-header {
|
|
20
|
-
display: flex;
|
|
21
|
-
align-items: center;
|
|
22
|
-
justify-content: space-between;
|
|
23
|
-
gap: 8px;
|
|
24
|
-
padding: 5px 6px 5px 12px;
|
|
25
|
-
background: var(--xeno-surface);
|
|
26
|
-
border-bottom: 1px solid var(--xeno-border);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.xeno-code-lang {
|
|
30
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
31
|
-
font-size: 11px;
|
|
32
|
-
font-weight: 600;
|
|
33
|
-
letter-spacing: 0.08em;
|
|
34
|
-
text-transform: uppercase;
|
|
35
|
-
color: var(--xeno-muted);
|
|
36
|
-
white-space: nowrap;
|
|
37
|
-
user-select: none;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.xeno-code-actions {
|
|
41
|
-
display: inline-flex;
|
|
42
|
-
align-items: center;
|
|
43
|
-
gap: 2px;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/* Copy button reflects the ~1.5s copied confirmation (icon swaps to Check; ink lifts to full text). */
|
|
47
|
-
.xeno-code-copy.is-copied {
|
|
48
|
-
color: var(--xeno-text);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/* Collapse chevron: points down when open, rotates to point right when collapsed. */
|
|
52
|
-
.xeno-code-collapse .xeno-element {
|
|
53
|
-
transition: transform var(--xeno-dur) var(--xeno-ease);
|
|
54
|
-
}
|
|
55
|
-
.xeno-code[data-collapsed='true'] .xeno-code-collapse .xeno-element {
|
|
56
|
-
transform: rotate(-90deg);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/* ── Body: <pre><code>, monospace, horizontally scrollable ───────────────────────── */
|
|
60
|
-
.xeno-code-body {
|
|
61
|
-
margin: 0;
|
|
62
|
-
padding: 12px 14px;
|
|
63
|
-
overflow-x: auto;
|
|
64
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
65
|
-
font-size: 13px;
|
|
66
|
-
line-height: 1.55;
|
|
67
|
-
color: var(--xeno-text);
|
|
68
|
-
tab-size: 2;
|
|
69
|
-
}
|
|
70
|
-
.xeno-code-body:focus-visible {
|
|
71
|
-
outline: none;
|
|
72
|
-
box-shadow: inset 0 0 0 2px var(--xeno-border);
|
|
73
|
-
}
|
|
74
|
-
.xeno-code-code {
|
|
75
|
-
display: block;
|
|
76
|
-
font: inherit;
|
|
77
|
-
color: inherit;
|
|
78
|
-
white-space: pre;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/* Collapsed ↔ expanded: swap body for the summary line. */
|
|
82
|
-
.xeno-code[data-collapsed='true'] .xeno-code-body {
|
|
83
|
-
display: none;
|
|
84
|
-
}
|
|
85
|
-
.xeno-code[data-collapsed='false'] .xeno-code-summary {
|
|
86
|
-
display: none;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
.xeno-code-summary {
|
|
90
|
-
display: flex;
|
|
91
|
-
align-items: center;
|
|
92
|
-
width: 100%;
|
|
93
|
-
padding: 10px 14px;
|
|
94
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
95
|
-
font-size: 12px;
|
|
96
|
-
color: var(--xeno-muted);
|
|
97
|
-
text-align: left;
|
|
98
|
-
background: transparent;
|
|
99
|
-
border: none;
|
|
100
|
-
cursor: pointer;
|
|
101
|
-
transition:
|
|
102
|
-
color var(--xeno-dur) ease,
|
|
103
|
-
background var(--xeno-dur) ease;
|
|
104
|
-
}
|
|
105
|
-
.xeno-code-summary:hover {
|
|
106
|
-
color: var(--xeno-text);
|
|
107
|
-
background: var(--xeno-hover);
|
|
108
|
-
}
|
|
109
|
-
.xeno-code-summary:focus-visible {
|
|
110
|
-
outline: none;
|
|
111
|
-
box-shadow: inset 0 0 0 2px var(--xeno-border);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/* ── Output panel: Running… / result / error ─────────────────────────────────────── */
|
|
115
|
-
.xeno-code-output {
|
|
116
|
-
padding: 10px 14px;
|
|
117
|
-
background: var(--xeno-elevated);
|
|
118
|
-
border-top: 1px solid var(--xeno-border);
|
|
119
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
120
|
-
font-size: 12.5px;
|
|
121
|
-
line-height: 1.5;
|
|
122
|
-
}
|
|
123
|
-
.xeno-code-output-running {
|
|
124
|
-
color: var(--xeno-muted);
|
|
125
|
-
}
|
|
126
|
-
.xeno-code-output-text {
|
|
127
|
-
margin: 0;
|
|
128
|
-
overflow-x: auto;
|
|
129
|
-
white-space: pre-wrap;
|
|
130
|
-
color: var(--xeno-text);
|
|
131
|
-
}
|
|
132
|
-
.xeno-code-output[data-status='error'] {
|
|
133
|
-
border-top-color: var(--xeno-danger);
|
|
134
|
-
}
|
|
135
|
-
.xeno-code-output[data-status='error'] .xeno-code-output-text {
|
|
136
|
-
color: var(--xeno-danger);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
@media (prefers-reduced-motion: no-preference) {
|
|
140
|
-
.xeno-code-output[data-status='running'] .xeno-code-output-running {
|
|
141
|
-
animation: xeno-code-pulse 1.2s var(--xeno-ease) infinite;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
@keyframes xeno-code-pulse {
|
|
145
|
-
0%,
|
|
146
|
-
100% {
|
|
147
|
-
opacity: 0.5;
|
|
148
|
-
}
|
|
149
|
-
50% {
|
|
150
|
-
opacity: 1;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
@media (prefers-reduced-motion: reduce) {
|
|
155
|
-
.xeno-code-collapse .xeno-element,
|
|
156
|
-
.xeno-code-summary {
|
|
157
|
-
transition: none;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* CodeBlock — a monochrome code surface. Shell is greyscale (canvas card + hairline border); the code is
|
|
3
|
+
* the ink. State is CSS-first: `data-collapsed` on the root swaps body↔summary and rotates the chevron;
|
|
4
|
+
* `data-selection` on the copy button reflects the transient copied state. Tokens only — the sole hue is
|
|
5
|
+
* `--xeno-danger`, and only on an error output. Motion is transform/opacity, behind the reduce guard.
|
|
6
|
+
*/
|
|
7
|
+
.xeno-code {
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
min-width: 0;
|
|
11
|
+
background: var(--xeno-canvas);
|
|
12
|
+
border: 1px solid var(--xeno-border);
|
|
13
|
+
border-radius: var(--xeno-radius-card);
|
|
14
|
+
color: var(--xeno-text);
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* ── Header: language label + action row ─────────────────────────────────────────── */
|
|
19
|
+
.xeno-code-header {
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: center;
|
|
22
|
+
justify-content: space-between;
|
|
23
|
+
gap: 8px;
|
|
24
|
+
padding: 5px 6px 5px 12px;
|
|
25
|
+
background: var(--xeno-surface);
|
|
26
|
+
border-bottom: 1px solid var(--xeno-border);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.xeno-code-lang {
|
|
30
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
31
|
+
font-size: 11px;
|
|
32
|
+
font-weight: 600;
|
|
33
|
+
letter-spacing: 0.08em;
|
|
34
|
+
text-transform: uppercase;
|
|
35
|
+
color: var(--xeno-muted);
|
|
36
|
+
white-space: nowrap;
|
|
37
|
+
user-select: none;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.xeno-code-actions {
|
|
41
|
+
display: inline-flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
gap: 2px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* Copy button reflects the ~1.5s copied confirmation (icon swaps to Check; ink lifts to full text). */
|
|
47
|
+
.xeno-code-copy.is-copied {
|
|
48
|
+
color: var(--xeno-text);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* Collapse chevron: points down when open, rotates to point right when collapsed. */
|
|
52
|
+
.xeno-code-collapse .xeno-element {
|
|
53
|
+
transition: transform var(--xeno-dur) var(--xeno-ease);
|
|
54
|
+
}
|
|
55
|
+
.xeno-code[data-collapsed='true'] .xeno-code-collapse .xeno-element {
|
|
56
|
+
transform: rotate(-90deg);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* ── Body: <pre><code>, monospace, horizontally scrollable ───────────────────────── */
|
|
60
|
+
.xeno-code-body {
|
|
61
|
+
margin: 0;
|
|
62
|
+
padding: 12px 14px;
|
|
63
|
+
overflow-x: auto;
|
|
64
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
65
|
+
font-size: 13px;
|
|
66
|
+
line-height: 1.55;
|
|
67
|
+
color: var(--xeno-text);
|
|
68
|
+
tab-size: 2;
|
|
69
|
+
}
|
|
70
|
+
.xeno-code-body:focus-visible {
|
|
71
|
+
outline: none;
|
|
72
|
+
box-shadow: inset 0 0 0 2px var(--xeno-border);
|
|
73
|
+
}
|
|
74
|
+
.xeno-code-code {
|
|
75
|
+
display: block;
|
|
76
|
+
font: inherit;
|
|
77
|
+
color: inherit;
|
|
78
|
+
white-space: pre;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* Collapsed ↔ expanded: swap body for the summary line. */
|
|
82
|
+
.xeno-code[data-collapsed='true'] .xeno-code-body {
|
|
83
|
+
display: none;
|
|
84
|
+
}
|
|
85
|
+
.xeno-code[data-collapsed='false'] .xeno-code-summary {
|
|
86
|
+
display: none;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.xeno-code-summary {
|
|
90
|
+
display: flex;
|
|
91
|
+
align-items: center;
|
|
92
|
+
width: 100%;
|
|
93
|
+
padding: 10px 14px;
|
|
94
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
95
|
+
font-size: 12px;
|
|
96
|
+
color: var(--xeno-muted);
|
|
97
|
+
text-align: left;
|
|
98
|
+
background: transparent;
|
|
99
|
+
border: none;
|
|
100
|
+
cursor: pointer;
|
|
101
|
+
transition:
|
|
102
|
+
color var(--xeno-dur) ease,
|
|
103
|
+
background var(--xeno-dur) ease;
|
|
104
|
+
}
|
|
105
|
+
.xeno-code-summary:hover {
|
|
106
|
+
color: var(--xeno-text);
|
|
107
|
+
background: var(--xeno-hover);
|
|
108
|
+
}
|
|
109
|
+
.xeno-code-summary:focus-visible {
|
|
110
|
+
outline: none;
|
|
111
|
+
box-shadow: inset 0 0 0 2px var(--xeno-border);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* ── Output panel: Running… / result / error ─────────────────────────────────────── */
|
|
115
|
+
.xeno-code-output {
|
|
116
|
+
padding: 10px 14px;
|
|
117
|
+
background: var(--xeno-elevated);
|
|
118
|
+
border-top: 1px solid var(--xeno-border);
|
|
119
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
120
|
+
font-size: 12.5px;
|
|
121
|
+
line-height: 1.5;
|
|
122
|
+
}
|
|
123
|
+
.xeno-code-output-running {
|
|
124
|
+
color: var(--xeno-muted);
|
|
125
|
+
}
|
|
126
|
+
.xeno-code-output-text {
|
|
127
|
+
margin: 0;
|
|
128
|
+
overflow-x: auto;
|
|
129
|
+
white-space: pre-wrap;
|
|
130
|
+
color: var(--xeno-text);
|
|
131
|
+
}
|
|
132
|
+
.xeno-code-output[data-status='error'] {
|
|
133
|
+
border-top-color: var(--xeno-danger);
|
|
134
|
+
}
|
|
135
|
+
.xeno-code-output[data-status='error'] .xeno-code-output-text {
|
|
136
|
+
color: var(--xeno-danger);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
140
|
+
.xeno-code-output[data-status='running'] .xeno-code-output-running {
|
|
141
|
+
animation: xeno-code-pulse 1.2s var(--xeno-ease) infinite;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
@keyframes xeno-code-pulse {
|
|
145
|
+
0%,
|
|
146
|
+
100% {
|
|
147
|
+
opacity: 0.5;
|
|
148
|
+
}
|
|
149
|
+
50% {
|
|
150
|
+
opacity: 1;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
@media (prefers-reduced-motion: reduce) {
|
|
155
|
+
.xeno-code-collapse .xeno-element,
|
|
156
|
+
.xeno-code-summary {
|
|
157
|
+
transition: none;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* <Collapsible> — a "Thoughts"-style disclosure. Borderless summary (lightbulb glyph + label + chevron)
|
|
3
|
-
* over a Callout-like body (2px `--xeno-border` left rule, 12px inset). CSS-first: `data-open` on the root
|
|
4
|
-
* rotates the chevron and lifts the label ink. Tokens only; motion is transform/opacity behind the guard.
|
|
5
|
-
*/
|
|
6
|
-
.xeno-collapsible {
|
|
7
|
-
display: flex;
|
|
8
|
-
flex-direction: column;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/* Summary — a borderless text button, left-aligned to its content. */
|
|
12
|
-
.xeno-collapsible-summary {
|
|
13
|
-
display: inline-flex;
|
|
14
|
-
align-items: center;
|
|
15
|
-
align-self: flex-start;
|
|
16
|
-
gap: 6px;
|
|
17
|
-
padding: 2px 4px 2px 0;
|
|
18
|
-
background: transparent;
|
|
19
|
-
border: none;
|
|
20
|
-
border-radius: var(--xeno-radius-sm);
|
|
21
|
-
color: var(--xeno-muted);
|
|
22
|
-
font: inherit;
|
|
23
|
-
font-size: 13px;
|
|
24
|
-
text-align: left;
|
|
25
|
-
cursor: pointer;
|
|
26
|
-
transition: color var(--xeno-dur) var(--xeno-ease);
|
|
27
|
-
}
|
|
28
|
-
.xeno-collapsible-summary:hover {
|
|
29
|
-
color: var(--xeno-text);
|
|
30
|
-
}
|
|
31
|
-
.xeno-collapsible-summary:focus-visible {
|
|
32
|
-
outline: none;
|
|
33
|
-
color: var(--xeno-text);
|
|
34
|
-
box-shadow:
|
|
35
|
-
0 0 0 2px var(--xeno-canvas),
|
|
36
|
-
0 0 0 4px var(--xeno-border);
|
|
37
|
-
}
|
|
38
|
-
.xeno-collapsible[data-open] .xeno-collapsible-summary {
|
|
39
|
-
color: var(--xeno-text);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.xeno-collapsible-icon {
|
|
43
|
-
display: inline-flex;
|
|
44
|
-
flex: none;
|
|
45
|
-
color: var(--xeno-muted);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.xeno-collapsible-label {
|
|
49
|
-
flex: none;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/* Chevron — points right when closed, down when open (root carries the seam). */
|
|
53
|
-
.xeno-collapsible-chevron {
|
|
54
|
-
display: inline-flex;
|
|
55
|
-
flex: none;
|
|
56
|
-
color: var(--xeno-muted);
|
|
57
|
-
transform: rotate(-90deg);
|
|
58
|
-
transition: transform var(--xeno-dur) var(--xeno-ease);
|
|
59
|
-
}
|
|
60
|
-
.xeno-collapsible[data-open] .xeno-collapsible-chevron {
|
|
61
|
-
transform: rotate(0deg);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/* Body — set apart like a Callout; hidden until open. */
|
|
65
|
-
.xeno-collapsible-body {
|
|
66
|
-
margin-top: 6px;
|
|
67
|
-
padding-left: 12px;
|
|
68
|
-
border-left: 2px solid var(--xeno-border);
|
|
69
|
-
color: var(--xeno-muted);
|
|
70
|
-
}
|
|
71
|
-
.xeno-collapsible-body[hidden] {
|
|
72
|
-
display: none;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
@media (prefers-reduced-motion: reduce) {
|
|
76
|
-
.xeno-collapsible-summary,
|
|
77
|
-
.xeno-collapsible-chevron {
|
|
78
|
-
transition: none;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* <Collapsible> — a "Thoughts"-style disclosure. Borderless summary (lightbulb glyph + label + chevron)
|
|
3
|
+
* over a Callout-like body (2px `--xeno-border` left rule, 12px inset). CSS-first: `data-open` on the root
|
|
4
|
+
* rotates the chevron and lifts the label ink. Tokens only; motion is transform/opacity behind the guard.
|
|
5
|
+
*/
|
|
6
|
+
.xeno-collapsible {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/* Summary — a borderless text button, left-aligned to its content. */
|
|
12
|
+
.xeno-collapsible-summary {
|
|
13
|
+
display: inline-flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
align-self: flex-start;
|
|
16
|
+
gap: 6px;
|
|
17
|
+
padding: 2px 4px 2px 0;
|
|
18
|
+
background: transparent;
|
|
19
|
+
border: none;
|
|
20
|
+
border-radius: var(--xeno-radius-sm);
|
|
21
|
+
color: var(--xeno-muted);
|
|
22
|
+
font: inherit;
|
|
23
|
+
font-size: 13px;
|
|
24
|
+
text-align: left;
|
|
25
|
+
cursor: pointer;
|
|
26
|
+
transition: color var(--xeno-dur) var(--xeno-ease);
|
|
27
|
+
}
|
|
28
|
+
.xeno-collapsible-summary:hover {
|
|
29
|
+
color: var(--xeno-text);
|
|
30
|
+
}
|
|
31
|
+
.xeno-collapsible-summary:focus-visible {
|
|
32
|
+
outline: none;
|
|
33
|
+
color: var(--xeno-text);
|
|
34
|
+
box-shadow:
|
|
35
|
+
0 0 0 2px var(--xeno-canvas),
|
|
36
|
+
0 0 0 4px var(--xeno-border);
|
|
37
|
+
}
|
|
38
|
+
.xeno-collapsible[data-open] .xeno-collapsible-summary {
|
|
39
|
+
color: var(--xeno-text);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.xeno-collapsible-icon {
|
|
43
|
+
display: inline-flex;
|
|
44
|
+
flex: none;
|
|
45
|
+
color: var(--xeno-muted);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.xeno-collapsible-label {
|
|
49
|
+
flex: none;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* Chevron — points right when closed, down when open (root carries the seam). */
|
|
53
|
+
.xeno-collapsible-chevron {
|
|
54
|
+
display: inline-flex;
|
|
55
|
+
flex: none;
|
|
56
|
+
color: var(--xeno-muted);
|
|
57
|
+
transform: rotate(-90deg);
|
|
58
|
+
transition: transform var(--xeno-dur) var(--xeno-ease);
|
|
59
|
+
}
|
|
60
|
+
.xeno-collapsible[data-open] .xeno-collapsible-chevron {
|
|
61
|
+
transform: rotate(0deg);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Body — set apart like a Callout; hidden until open. */
|
|
65
|
+
.xeno-collapsible-body {
|
|
66
|
+
margin-top: 6px;
|
|
67
|
+
padding-left: 12px;
|
|
68
|
+
border-left: 2px solid var(--xeno-border);
|
|
69
|
+
color: var(--xeno-muted);
|
|
70
|
+
}
|
|
71
|
+
.xeno-collapsible-body[hidden] {
|
|
72
|
+
display: none;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@media (prefers-reduced-motion: reduce) {
|
|
76
|
+
.xeno-collapsible-summary,
|
|
77
|
+
.xeno-collapsible-chevron {
|
|
78
|
+
transition: none;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* <InlineCode> — an inline monospace chip for prose. Monochrome shell: a `--xeno-surface` fill and
|
|
3
|
-
* `--xeno-text` ink (never the legacy peach), `radius-sm` corners, tight padding. Tokens only, no hue.
|
|
4
|
-
*/
|
|
5
|
-
.xeno-inline-code {
|
|
6
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
7
|
-
font-size: 0.875em;
|
|
8
|
-
padding: 2px 6px;
|
|
9
|
-
background: var(--xeno-surface);
|
|
10
|
-
border-radius: var(--xeno-radius-sm);
|
|
11
|
-
color: var(--xeno-text);
|
|
12
|
-
white-space: break-spaces;
|
|
13
|
-
overflow-wrap: anywhere;
|
|
14
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* <InlineCode> — an inline monospace chip for prose. Monochrome shell: a `--xeno-surface` fill and
|
|
3
|
+
* `--xeno-text` ink (never the legacy peach), `radius-sm` corners, tight padding. Tokens only, no hue.
|
|
4
|
+
*/
|
|
5
|
+
.xeno-inline-code {
|
|
6
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
7
|
+
font-size: 0.875em;
|
|
8
|
+
padding: 2px 6px;
|
|
9
|
+
background: var(--xeno-surface);
|
|
10
|
+
border-radius: var(--xeno-radius-sm);
|
|
11
|
+
color: var(--xeno-text);
|
|
12
|
+
white-space: break-spaces;
|
|
13
|
+
overflow-wrap: anywhere;
|
|
14
|
+
}
|