anentrypoint-design 0.0.130 → 0.0.134
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/app-shell.css +120 -32
- package/colors_and_type.css +33 -1
- package/dist/247420.css +402 -33
- package/dist/247420.js +14 -14
- package/package.json +2 -1
- package/src/components/form-primitives.js +168 -0
- package/src/components/interaction-primitives.js +217 -0
- package/src/components/overlay-primitives.js +219 -0
- package/src/components.js +14 -0
- package/src/index.js +4 -1
- package/src/web-components/freddie-chat.js +38 -0
package/dist/247420.css
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
--paper-3: #DFDED9;
|
|
16
16
|
--ink: #131318;
|
|
17
17
|
--ink-2: #25252C;
|
|
18
|
-
--ink-3: #6A6A70
|
|
18
|
+
--ink-3: #54545A; /* WCAG AAA on --paper (~7.1:1); was #6A6A70 (AA only) */
|
|
19
19
|
|
|
20
20
|
/* Lore palette */
|
|
21
21
|
--green: #247420;
|
|
@@ -35,6 +35,8 @@
|
|
|
35
35
|
--flame: #FF5A1F;
|
|
36
36
|
--sky: #3A6EFF;
|
|
37
37
|
--warn: #E0241A;
|
|
38
|
+
--danger: oklch(0.55 0.18 25);
|
|
39
|
+
--success: var(--green-2);
|
|
38
40
|
--live: var(--green);
|
|
39
41
|
|
|
40
42
|
/* Semantic surfaces */
|
|
@@ -194,6 +196,7 @@
|
|
|
194
196
|
--accent: var(--accent-bright, var(--green-2));
|
|
195
197
|
--accent-fg: var(--ink);
|
|
196
198
|
--accent-bright: var(--green-2);
|
|
199
|
+
--danger: oklch(0.68 0.19 25);
|
|
197
200
|
}
|
|
198
201
|
|
|
199
202
|
@media (prefers-color-scheme: dark) {
|
|
@@ -266,6 +269,35 @@
|
|
|
266
269
|
background-size: 8px 8px;
|
|
267
270
|
}
|
|
268
271
|
|
|
272
|
+
/* Reduced-motion guard — neutralizes every transition/animation/transform
|
|
273
|
+
inside the design-system scope when the user requests reduced motion.
|
|
274
|
+
Components remain free to opt back in with
|
|
275
|
+
`@media (prefers-reduced-motion: no-preference) { ... }`. */
|
|
276
|
+
@media (prefers-reduced-motion: reduce) {
|
|
277
|
+
.ds-247420 *,
|
|
278
|
+
.ds-247420 *::before,
|
|
279
|
+
.ds-247420 *::after {
|
|
280
|
+
animation-duration: 0.001ms !important;
|
|
281
|
+
animation-iteration-count: 1 !important;
|
|
282
|
+
transition-duration: 0.001ms !important;
|
|
283
|
+
scroll-behavior: auto !important;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/* Elevation tokens consumed by overlays (Tooltip, Popover, Dropdown, Dialog). */
|
|
288
|
+
.ds-247420 {
|
|
289
|
+
--shadow-1: 0 1px 2px color-mix(in oklab, var(--fg) 8%, transparent);
|
|
290
|
+
--shadow-2: 0 4px 12px color-mix(in oklab, var(--fg) 10%, transparent),
|
|
291
|
+
0 2px 4px color-mix(in oklab, var(--fg) 6%, transparent);
|
|
292
|
+
--shadow-3: 0 12px 32px color-mix(in oklab, var(--fg) 14%, transparent),
|
|
293
|
+
0 4px 8px color-mix(in oklab, var(--fg) 8%, transparent);
|
|
294
|
+
--z-dropdown: 600;
|
|
295
|
+
--z-popover: 700;
|
|
296
|
+
--z-modal: 800;
|
|
297
|
+
--z-toast: 900;
|
|
298
|
+
--z-tooltip: 1000;
|
|
299
|
+
}
|
|
300
|
+
|
|
269
301
|
/* app-shell.css */
|
|
270
302
|
/* ============================================================
|
|
271
303
|
247420 design system — component sheet
|
|
@@ -426,11 +458,18 @@
|
|
|
426
458
|
padding-right: env(safe-area-inset-right);
|
|
427
459
|
}
|
|
428
460
|
|
|
461
|
+
.ds-247420 {
|
|
462
|
+
--app-status-h: 42px;
|
|
463
|
+
--app-topbar-h: 56px;
|
|
464
|
+
--app-crumb-h: 32px;
|
|
465
|
+
}
|
|
466
|
+
|
|
429
467
|
.ds-247420 .app-topbar {
|
|
430
468
|
position: sticky; top: 0; z-index: var(--z-header);
|
|
431
469
|
display: grid; grid-template-columns: auto 1fr auto;
|
|
432
470
|
align-items: center; gap: var(--space-4);
|
|
433
|
-
|
|
471
|
+
min-height: var(--app-topbar-h);
|
|
472
|
+
padding: 10px var(--pad-x);
|
|
434
473
|
background: color-mix(in oklab, var(--bg) 88%, transparent);
|
|
435
474
|
backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
|
|
436
475
|
}
|
|
@@ -481,7 +520,8 @@
|
|
|
481
520
|
}
|
|
482
521
|
|
|
483
522
|
.ds-247420 .app-crumb {
|
|
484
|
-
|
|
523
|
+
min-height: var(--app-crumb-h);
|
|
524
|
+
padding: 6px var(--pad-x);
|
|
485
525
|
display: flex; align-items: center; gap: 8px;
|
|
486
526
|
font-size: var(--fs-sm); color: var(--fg-3);
|
|
487
527
|
}
|
|
@@ -525,14 +565,23 @@
|
|
|
525
565
|
}
|
|
526
566
|
|
|
527
567
|
.ds-247420 .app-main {
|
|
528
|
-
padding: var(--space-
|
|
568
|
+
padding: var(--space-5) var(--pad-x) 0;
|
|
529
569
|
min-width: 0;
|
|
530
570
|
}
|
|
531
571
|
.ds-247420 .app-main.narrow { max-width: 760px; margin: 0 auto; }
|
|
532
572
|
|
|
573
|
+
@media (min-width: 1400px) {
|
|
574
|
+
.ds-247420 .app { max-width: 1400px; margin-left: auto; margin-right: auto; }
|
|
575
|
+
.ds-247420 .app-main .chat,
|
|
576
|
+
.ds-247420 .app-main > .chat-area,
|
|
577
|
+
.ds-247420 .app-main > .main-content { max-width: none; margin: 0; width: 100%; }
|
|
578
|
+
.ds-247420 .app-status { max-width: 1400px; margin-left: auto; margin-right: auto; left: 0; right: 0; }
|
|
579
|
+
}
|
|
580
|
+
|
|
533
581
|
.ds-247420 .app-status {
|
|
534
582
|
display: flex; align-items: center; gap: var(--space-3);
|
|
535
|
-
|
|
583
|
+
min-height: var(--app-status-h);
|
|
584
|
+
padding: 10px var(--pad-x);
|
|
536
585
|
font-family: var(--ff-mono); font-size: var(--fs-xs);
|
|
537
586
|
color: var(--fg-3);
|
|
538
587
|
}
|
|
@@ -838,24 +887,9 @@
|
|
|
838
887
|
Mobile Portrait Breakpoint (480px and below)
|
|
839
888
|
────────────────────────────────────────────────────────────────────── */
|
|
840
889
|
@media (max-width: 480px) {
|
|
841
|
-
/* App Layout */
|
|
890
|
+
/* App Layout — drawer handled in 900px block below */
|
|
842
891
|
.ds-247420 .app-body { grid-template-columns: 1fr !important; }
|
|
843
892
|
.ds-247420 .app-body.no-side { grid-template-columns: 1fr; }
|
|
844
|
-
.ds-247420 .app-side-shell { border-right: 0; border-bottom: 1px solid var(--rule); }
|
|
845
|
-
.ds-247420 .app-side {
|
|
846
|
-
padding: var(--space-3) var(--space-2);
|
|
847
|
-
font-size: var(--fs-xs);
|
|
848
|
-
flex-direction: row; flex-wrap: wrap; gap: var(--space-2);
|
|
849
|
-
}
|
|
850
|
-
.ds-247420 .app-side .group {
|
|
851
|
-
width: 100%; font-size: var(--fs-micro); margin-bottom: 4px;
|
|
852
|
-
}
|
|
853
|
-
.ds-247420 .app-side a {
|
|
854
|
-
flex: 1; min-width: 100px; padding: 12px 10px; gap: 6px;
|
|
855
|
-
grid-template-columns: 14px 1fr;
|
|
856
|
-
min-height: 44px;
|
|
857
|
-
}
|
|
858
|
-
.ds-247420 .app-side a .glyph { font-size: 12px; }
|
|
859
893
|
|
|
860
894
|
/* Topbar Navigation */
|
|
861
895
|
.ds-247420 .app-topbar {
|
|
@@ -983,13 +1017,7 @@
|
|
|
983
1017
|
Tablet Landscape Breakpoint (768px to 1024px)
|
|
984
1018
|
────────────────────────────────────────────────────────────────────── */
|
|
985
1019
|
@media (min-width: 481px) and (max-width: 1024px) {
|
|
986
|
-
/* App Layout */
|
|
987
|
-
.ds-247420 .app-body { grid-template-columns: 200px minmax(0, 1fr); }
|
|
988
|
-
.ds-247420 .app-side {
|
|
989
|
-
padding: var(--space-4) var(--space-2);
|
|
990
|
-
font-size: var(--fs-xs);
|
|
991
|
-
flex-direction: column; gap: var(--space-3);
|
|
992
|
-
}
|
|
1020
|
+
/* App Layout — side handled by 900px drawer block; restore for 901-1024 */
|
|
993
1021
|
.ds-247420 .app-side a {
|
|
994
1022
|
padding: 12px 12px; gap: 8px;
|
|
995
1023
|
grid-template-columns: 16px 1fr auto;
|
|
@@ -1183,14 +1211,15 @@
|
|
|
1183
1211
|
.ds-247420 .chat {
|
|
1184
1212
|
display: flex; flex-direction: column;
|
|
1185
1213
|
flex: 1; min-height: 0; gap: var(--space-3);
|
|
1214
|
+
padding-bottom: calc(var(--app-status-h, 42px) + var(--space-2));
|
|
1186
1215
|
}
|
|
1187
1216
|
.ds-247420 .chat-head {
|
|
1188
1217
|
display: flex; align-items: baseline; gap: 8px;
|
|
1189
|
-
padding:
|
|
1218
|
+
padding: var(--space-3) 0 var(--space-2);
|
|
1190
1219
|
font-family: var(--ff-mono); font-size: var(--fs-xs);
|
|
1191
1220
|
color: var(--fg-3); text-transform: lowercase; letter-spacing: 0.02em;
|
|
1192
1221
|
border-bottom: 1px solid color-mix(in oklab, var(--fg) 8%, transparent);
|
|
1193
|
-
margin-bottom: var(--space-
|
|
1222
|
+
margin-bottom: var(--space-2);
|
|
1194
1223
|
}
|
|
1195
1224
|
.ds-247420 .chat-head .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--accent); flex-shrink: 0; }
|
|
1196
1225
|
.ds-247420 .chat-head > span:nth-child(2) {
|
|
@@ -1222,7 +1251,7 @@
|
|
|
1222
1251
|
pointer-events: none;
|
|
1223
1252
|
}
|
|
1224
1253
|
|
|
1225
|
-
.ds-247420 .chat-msg { display: flex; gap: 12px; align-items: flex-start; padding: 2px 0; position: relative; }
|
|
1254
|
+
.ds-247420 .chat-msg { display: flex; gap: 12px; align-items: flex-start; padding: 2px 0; position: relative; min-width: 0; }
|
|
1226
1255
|
.ds-247420 .chat-msg.you { flex-direction: row-reverse; }
|
|
1227
1256
|
.ds-247420 .chat-msg.you .chat-stack { align-items: flex-end; }
|
|
1228
1257
|
.ds-247420 .chat-msg:hover { background: color-mix(in oklab, var(--fg) 1%, transparent); padding: 2px 0; margin: 0; border-radius: 8px; transition: background var(--dur-base) var(--ease); }
|
|
@@ -1249,6 +1278,7 @@
|
|
|
1249
1278
|
.ds-247420 .chat-stack {
|
|
1250
1279
|
display: flex; flex-direction: column; gap: 4px;
|
|
1251
1280
|
max-width: min(70%, 56ch); min-width: 0;
|
|
1281
|
+
flex: 0 1 auto; overflow: hidden;
|
|
1252
1282
|
}
|
|
1253
1283
|
|
|
1254
1284
|
.ds-247420 .chat-bubble {
|
|
@@ -1256,7 +1286,8 @@
|
|
|
1256
1286
|
border-radius: 14px; line-height: 1.55;
|
|
1257
1287
|
word-wrap: break-word; overflow-wrap: anywhere;
|
|
1258
1288
|
font-size: var(--fs-sm);
|
|
1259
|
-
max-width:
|
|
1289
|
+
max-width: 100%;
|
|
1290
|
+
min-width: 0;
|
|
1260
1291
|
transition: transform 0.12s ease, box-shadow 0.12s ease;
|
|
1261
1292
|
}
|
|
1262
1293
|
.ds-247420 .chat-msg:hover .chat-bubble { transform: translateY(-1px); box-shadow: 0 2px 8px color-mix(in oklab, var(--fg) 6%, transparent); transition: transform var(--dur-base) var(--ease), box-shadow var(--dur-base) var(--ease); }
|
|
@@ -1314,7 +1345,21 @@
|
|
|
1314
1345
|
padding: 0; background: var(--bg);
|
|
1315
1346
|
color: var(--fg);
|
|
1316
1347
|
border: 1px solid color-mix(in oklab, var(--fg) 12%, transparent);
|
|
1317
|
-
overflow: hidden; max-width: min
|
|
1348
|
+
overflow: hidden; max-width: 100%; min-width: 0;
|
|
1349
|
+
}
|
|
1350
|
+
.ds-247420 .chat-bubble.chat-code pre,
|
|
1351
|
+
.ds-247420 .chat-bubble pre,
|
|
1352
|
+
.ds-247420 .chat-msg pre {
|
|
1353
|
+
max-width: 100%;
|
|
1354
|
+
overflow-x: auto;
|
|
1355
|
+
scrollbar-width: thin;
|
|
1356
|
+
scrollbar-color: var(--bg-3) transparent;
|
|
1357
|
+
}
|
|
1358
|
+
.ds-247420 .chat-bubble pre code,
|
|
1359
|
+
.ds-247420 .chat-msg pre code {
|
|
1360
|
+
display: block;
|
|
1361
|
+
white-space: pre;
|
|
1362
|
+
min-width: 0;
|
|
1318
1363
|
}
|
|
1319
1364
|
.ds-247420 .chat-code-head {
|
|
1320
1365
|
display: flex; align-items: center; gap: 10px;
|
|
@@ -2141,6 +2186,81 @@
|
|
|
2141
2186
|
}
|
|
2142
2187
|
.ds-247420 .ds-alert-dismiss:hover { color: var(--fg); }
|
|
2143
2188
|
|
|
2189
|
+
/* ============================================================
|
|
2190
|
+
Responsive Perfection — Drawer rail, ultrawide cap, mobile compact
|
|
2191
|
+
============================================================ */
|
|
2192
|
+
|
|
2193
|
+
/* Tablet + Mobile: side rail becomes off-canvas drawer (≤900px) */
|
|
2194
|
+
@media (max-width: 900px) {
|
|
2195
|
+
.ds-247420 .app-body,
|
|
2196
|
+
.ds-247420 .app-body.no-side { grid-template-columns: 1fr !important; }
|
|
2197
|
+
.ds-247420 .app-side-shell {
|
|
2198
|
+
position: fixed;
|
|
2199
|
+
left: 0; top: var(--app-topbar-h);
|
|
2200
|
+
height: calc(100vh - var(--app-topbar-h) - var(--app-status-h));
|
|
2201
|
+
width: 280px; max-width: 80vw;
|
|
2202
|
+
transform: translateX(-100%);
|
|
2203
|
+
transition: transform var(--dur-base, 240ms) var(--ease, ease);
|
|
2204
|
+
z-index: 50;
|
|
2205
|
+
background: var(--bg);
|
|
2206
|
+
border-right: 1px solid color-mix(in oklab, var(--fg) 8%, transparent);
|
|
2207
|
+
overflow-y: auto;
|
|
2208
|
+
}
|
|
2209
|
+
.ds-247420 .app-side-shell.open,
|
|
2210
|
+
.ds-247420 .app-side.open,
|
|
2211
|
+
.ds-247420 .app-body.side-open .app-side-shell { transform: translateX(0); }
|
|
2212
|
+
.ds-247420 .app-side {
|
|
2213
|
+
flex-direction: column !important;
|
|
2214
|
+
flex-wrap: nowrap !important;
|
|
2215
|
+
gap: var(--space-2);
|
|
2216
|
+
padding: var(--space-3);
|
|
2217
|
+
font-size: var(--fs-sm);
|
|
2218
|
+
}
|
|
2219
|
+
.ds-247420 .app-side a {
|
|
2220
|
+
flex: 0 0 auto; min-width: 0;
|
|
2221
|
+
grid-template-columns: 18px 1fr auto;
|
|
2222
|
+
padding: 10px 12px;
|
|
2223
|
+
}
|
|
2224
|
+
.ds-247420 .app-side .group { width: 100%; }
|
|
2225
|
+
.ds-247420 .app-crumb { display: none; }
|
|
2226
|
+
.ds-247420 .chat-head { padding: var(--space-2) var(--space-3) var(--space-2); margin-bottom: var(--space-2); }
|
|
2227
|
+
.ds-247420 .app-main { padding-left: var(--space-3); padding-right: var(--space-3); }
|
|
2228
|
+
}
|
|
2229
|
+
|
|
2230
|
+
/* Drawer scrim */
|
|
2231
|
+
.ds-247420 .app-side-scrim {
|
|
2232
|
+
display: none;
|
|
2233
|
+
position: fixed; inset: 0;
|
|
2234
|
+
background: color-mix(in oklab, var(--bg) 60%, transparent);
|
|
2235
|
+
z-index: 49;
|
|
2236
|
+
}
|
|
2237
|
+
@media (max-width: 900px) {
|
|
2238
|
+
.ds-247420 .app-body.side-open ~ .app-side-scrim,
|
|
2239
|
+
.ds-247420 .app-side-shell.open ~ .app-side-scrim { display: block; }
|
|
2240
|
+
}
|
|
2241
|
+
|
|
2242
|
+
/* Mobile (≤480) status bar compact; hide tail item */
|
|
2243
|
+
@media (max-width: 480px) {
|
|
2244
|
+
.ds-247420 .app-status {
|
|
2245
|
+
font-size: var(--fs-micro);
|
|
2246
|
+
padding: 4px var(--space-2);
|
|
2247
|
+
gap: var(--space-2);
|
|
2248
|
+
}
|
|
2249
|
+
.ds-247420 .app-status > :last-child:not(:only-child) { display: none; }
|
|
2250
|
+
}
|
|
2251
|
+
|
|
2252
|
+
/* Tiny phone (≤360) topbar compact */
|
|
2253
|
+
@media (max-width: 360px) {
|
|
2254
|
+
.ds-247420 .app-topbar {
|
|
2255
|
+
padding: 8px var(--space-2);
|
|
2256
|
+
font-size: var(--fs-xs);
|
|
2257
|
+
gap: var(--space-2);
|
|
2258
|
+
}
|
|
2259
|
+
.ds-247420 .app-topbar nav,
|
|
2260
|
+
.ds-247420 .app-topbar > :last-child { display: none; }
|
|
2261
|
+
.ds-247420 .brand { font-size: var(--fs-tiny); }
|
|
2262
|
+
}
|
|
2263
|
+
|
|
2144
2264
|
/* community.css */
|
|
2145
2265
|
/* ============================================================
|
|
2146
2266
|
247420 design system — community surface (Discord-style chat)
|
|
@@ -3614,3 +3734,252 @@
|
|
|
3614
3734
|
outline-offset: 2px;
|
|
3615
3735
|
border-radius: var(--r-1);
|
|
3616
3736
|
}
|
|
3737
|
+
|
|
3738
|
+
/* ---------------------------------------------------------------
|
|
3739
|
+
Form primitives — Checkbox, Radio, RadioGroup, Toggle, Field
|
|
3740
|
+
--------------------------------------------------------------- */
|
|
3741
|
+
.ds-247420 .ds-check-row,
|
|
3742
|
+
.ds-247420 .ds-radio-row,
|
|
3743
|
+
.ds-247420 .ds-toggle-row {
|
|
3744
|
+
display: inline-flex; align-items: center; gap: var(--space-2, 8px);
|
|
3745
|
+
min-height: 44px;
|
|
3746
|
+
padding: var(--space-1, 4px) var(--space-2, 8px);
|
|
3747
|
+
cursor: pointer;
|
|
3748
|
+
color: var(--fg);
|
|
3749
|
+
font: inherit;
|
|
3750
|
+
}
|
|
3751
|
+
.ds-247420 .ds-check-row:has(input:disabled),
|
|
3752
|
+
.ds-247420 .ds-radio-row:has(input:disabled),
|
|
3753
|
+
.ds-247420 .ds-toggle-row:has(button:disabled) { opacity: 0.5; cursor: not-allowed; }
|
|
3754
|
+
|
|
3755
|
+
.ds-247420 .ds-check, .ds-247420 .ds-radio {
|
|
3756
|
+
width: 18px; height: 18px;
|
|
3757
|
+
accent-color: var(--accent, var(--fg));
|
|
3758
|
+
flex-shrink: 0;
|
|
3759
|
+
cursor: inherit;
|
|
3760
|
+
}
|
|
3761
|
+
.ds-247420 .ds-check:focus-visible, .ds-247420 .ds-radio:focus-visible {
|
|
3762
|
+
outline: 2px solid var(--accent);
|
|
3763
|
+
outline-offset: 2px;
|
|
3764
|
+
}
|
|
3765
|
+
|
|
3766
|
+
.ds-247420 .ds-check-label, .ds-247420 .ds-radio-label, .ds-247420 .ds-toggle-label {
|
|
3767
|
+
color: var(--fg);
|
|
3768
|
+
font-size: var(--fs-sm, 14px);
|
|
3769
|
+
}
|
|
3770
|
+
|
|
3771
|
+
.ds-247420 .ds-radio-group {
|
|
3772
|
+
border: 0; padding: 0; margin: 0;
|
|
3773
|
+
display: flex; flex-direction: column; gap: var(--space-1, 4px);
|
|
3774
|
+
}
|
|
3775
|
+
.ds-247420 .ds-radio-group.horiz { flex-direction: row; flex-wrap: wrap; gap: var(--space-3, 16px); }
|
|
3776
|
+
.ds-247420 .ds-radio-group > legend { padding: 0 0 var(--space-1, 4px); }
|
|
3777
|
+
|
|
3778
|
+
.ds-247420 .ds-toggle {
|
|
3779
|
+
appearance: none; border: 0;
|
|
3780
|
+
width: 44px; height: 24px;
|
|
3781
|
+
border-radius: var(--r-pill, 999px);
|
|
3782
|
+
background: var(--panel-2, var(--bg-2));
|
|
3783
|
+
border: 1px solid var(--rule);
|
|
3784
|
+
position: relative;
|
|
3785
|
+
cursor: pointer;
|
|
3786
|
+
padding: 0;
|
|
3787
|
+
flex-shrink: 0;
|
|
3788
|
+
}
|
|
3789
|
+
.ds-247420 .ds-toggle-knob {
|
|
3790
|
+
position: absolute;
|
|
3791
|
+
top: 1px; left: 1px;
|
|
3792
|
+
width: 20px; height: 20px;
|
|
3793
|
+
border-radius: 50%;
|
|
3794
|
+
background: var(--fg);
|
|
3795
|
+
transform: translateX(0);
|
|
3796
|
+
}
|
|
3797
|
+
.ds-247420 .ds-toggle[aria-checked="true"] {
|
|
3798
|
+
background: var(--accent);
|
|
3799
|
+
border-color: var(--accent);
|
|
3800
|
+
}
|
|
3801
|
+
.ds-247420 .ds-toggle[aria-checked="true"] .ds-toggle-knob {
|
|
3802
|
+
background: var(--accent-fg);
|
|
3803
|
+
transform: translateX(20px);
|
|
3804
|
+
}
|
|
3805
|
+
.ds-247420 .ds-toggle:focus-visible {
|
|
3806
|
+
outline: 2px solid var(--accent);
|
|
3807
|
+
outline-offset: 2px;
|
|
3808
|
+
}
|
|
3809
|
+
.ds-247420 .ds-toggle:disabled { cursor: not-allowed; }
|
|
3810
|
+
|
|
3811
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
3812
|
+
.ds-247420 .ds-toggle { transition: background var(--dur-base, 160ms) var(--ease), border-color var(--dur-base, 160ms) var(--ease); }
|
|
3813
|
+
.ds-247420 .ds-toggle-knob { transition: transform var(--dur-base, 160ms) var(--ease), background var(--dur-base, 160ms) var(--ease); }
|
|
3814
|
+
}
|
|
3815
|
+
|
|
3816
|
+
.ds-247420 .ds-field-wrap {
|
|
3817
|
+
display: flex; flex-direction: column; gap: var(--space-1, 4px);
|
|
3818
|
+
margin-bottom: var(--space-2, 8px);
|
|
3819
|
+
}
|
|
3820
|
+
.ds-247420 .ds-field-label {
|
|
3821
|
+
color: var(--fg-2, var(--fg));
|
|
3822
|
+
font-size: var(--fs-sm, 14px);
|
|
3823
|
+
font-weight: 500;
|
|
3824
|
+
}
|
|
3825
|
+
.ds-247420 .ds-field-required {
|
|
3826
|
+
color: var(--danger, oklch(0.55 0.18 25));
|
|
3827
|
+
font-weight: 700;
|
|
3828
|
+
margin-left: 2px;
|
|
3829
|
+
}
|
|
3830
|
+
.ds-247420 .ds-field-hint {
|
|
3831
|
+
color: var(--fg-3, var(--fg-2));
|
|
3832
|
+
font-size: var(--fs-tiny, 12px);
|
|
3833
|
+
}
|
|
3834
|
+
.ds-247420 .ds-field-error {
|
|
3835
|
+
color: var(--danger, oklch(0.55 0.18 25));
|
|
3836
|
+
font-size: var(--fs-tiny, 12px);
|
|
3837
|
+
font-weight: 500;
|
|
3838
|
+
}
|
|
3839
|
+
.ds-247420 .ds-field-wrap [aria-invalid="true"] {
|
|
3840
|
+
border-color: var(--danger, oklch(0.55 0.18 25)) !important;
|
|
3841
|
+
}
|
|
3842
|
+
|
|
3843
|
+
.ds-247420 .sr-only {
|
|
3844
|
+
position: absolute; width: 1px; height: 1px;
|
|
3845
|
+
padding: 0; margin: -1px; overflow: hidden;
|
|
3846
|
+
clip: rect(0,0,0,0); white-space: nowrap; border: 0;
|
|
3847
|
+
}
|
|
3848
|
+
|
|
3849
|
+
@media (prefers-reduced-motion: reduce) {
|
|
3850
|
+
.ds-247420 .ds-toggle, .ds-247420 .ds-toggle-knob { transition: none !important; }
|
|
3851
|
+
}
|
|
3852
|
+
|
|
3853
|
+
/* ---------------------------------------------------------------
|
|
3854
|
+
Tooltip
|
|
3855
|
+
--------------------------------------------------------------- */
|
|
3856
|
+
.ds-247420 .ds-tooltip {
|
|
3857
|
+
position: fixed;
|
|
3858
|
+
left: 0; top: 0;
|
|
3859
|
+
z-index: 9700;
|
|
3860
|
+
background: var(--panel-1, var(--panel-bg));
|
|
3861
|
+
color: var(--panel-text, var(--fg-text));
|
|
3862
|
+
border: 1px solid var(--rule);
|
|
3863
|
+
border-radius: var(--r-1, 6px);
|
|
3864
|
+
padding: 6px 10px;
|
|
3865
|
+
font-size: 12px;
|
|
3866
|
+
line-height: 1.4;
|
|
3867
|
+
max-width: 280px;
|
|
3868
|
+
box-shadow: 0 6px 18px rgba(0,0,0,0.22);
|
|
3869
|
+
pointer-events: none;
|
|
3870
|
+
}
|
|
3871
|
+
.ds-247420 .ds-tooltip.kind-danger { border-color: var(--danger, #c33); color: var(--danger, #c33); }
|
|
3872
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
3873
|
+
.ds-247420 .ds-tooltip { transition: opacity 120ms ease; }
|
|
3874
|
+
}
|
|
3875
|
+
|
|
3876
|
+
/* ---------------------------------------------------------------
|
|
3877
|
+
Popover (shared surface for Popover + Dropdown)
|
|
3878
|
+
--------------------------------------------------------------- */
|
|
3879
|
+
.ds-247420 .ds-popover {
|
|
3880
|
+
position: fixed;
|
|
3881
|
+
left: 0; top: 0;
|
|
3882
|
+
z-index: 9600;
|
|
3883
|
+
background: var(--panel-1, var(--panel-bg));
|
|
3884
|
+
color: var(--panel-text, var(--fg-text));
|
|
3885
|
+
border: 1px solid var(--rule);
|
|
3886
|
+
border-radius: var(--r-2, 8px);
|
|
3887
|
+
box-shadow: 0 8px 28px rgba(0,0,0,0.22);
|
|
3888
|
+
padding: 0;
|
|
3889
|
+
outline: none;
|
|
3890
|
+
min-width: 160px;
|
|
3891
|
+
}
|
|
3892
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
3893
|
+
.ds-247420 .ds-popover { transition: opacity 140ms ease, transform 140ms ease; }
|
|
3894
|
+
}
|
|
3895
|
+
|
|
3896
|
+
/* ---------------------------------------------------------------
|
|
3897
|
+
Dropdown
|
|
3898
|
+
--------------------------------------------------------------- */
|
|
3899
|
+
.ds-247420 .ds-dropdown-menu { padding: 4px; }
|
|
3900
|
+
.ds-247420 .ds-dropdown-list { display: flex; flex-direction: column; }
|
|
3901
|
+
.ds-247420 .ds-dropdown-item {
|
|
3902
|
+
display: flex; align-items: center; gap: 8px;
|
|
3903
|
+
min-height: 44px;
|
|
3904
|
+
padding: 8px 12px;
|
|
3905
|
+
background: transparent; border: 0;
|
|
3906
|
+
color: inherit; font: inherit; text-align: left;
|
|
3907
|
+
border-radius: var(--r-1, 4px);
|
|
3908
|
+
cursor: pointer;
|
|
3909
|
+
}
|
|
3910
|
+
.ds-247420 .ds-dropdown-item:hover,
|
|
3911
|
+
.ds-247420 .ds-dropdown-item:focus-visible {
|
|
3912
|
+
background: var(--panel-2, var(--rule));
|
|
3913
|
+
outline: none;
|
|
3914
|
+
}
|
|
3915
|
+
.ds-247420 .ds-dropdown-item:focus-visible {
|
|
3916
|
+
outline: 2px solid var(--accent);
|
|
3917
|
+
outline-offset: -2px;
|
|
3918
|
+
}
|
|
3919
|
+
.ds-247420 .ds-dropdown-item[aria-disabled="true"] {
|
|
3920
|
+
opacity: 0.5;
|
|
3921
|
+
pointer-events: none;
|
|
3922
|
+
cursor: not-allowed;
|
|
3923
|
+
}
|
|
3924
|
+
.ds-247420 .ds-dropdown-item.is-danger { color: var(--danger, #c33); }
|
|
3925
|
+
.ds-247420 .ds-dropdown-glyph { width: 16px; display: inline-flex; justify-content: center; flex-shrink: 0; }
|
|
3926
|
+
.ds-247420 .ds-dropdown-label { flex: 1; min-width: 0; }
|
|
3927
|
+
.ds-247420 .ds-dropdown-separator { height: 1px; background: var(--rule); margin: 4px 6px; }
|
|
3928
|
+
.ds-247420 .ds-dropdown-trigger {
|
|
3929
|
+
appearance: none;
|
|
3930
|
+
background: var(--panel-2, transparent);
|
|
3931
|
+
color: inherit; font: inherit;
|
|
3932
|
+
border: 1px solid var(--rule);
|
|
3933
|
+
border-radius: var(--r-1, 6px);
|
|
3934
|
+
padding: 6px 12px;
|
|
3935
|
+
cursor: pointer;
|
|
3936
|
+
min-height: 32px;
|
|
3937
|
+
}
|
|
3938
|
+
@media (pointer: coarse) {
|
|
3939
|
+
.ds-247420 .ds-dropdown-trigger { min-height: 44px; }
|
|
3940
|
+
}
|
|
3941
|
+
|
|
3942
|
+
/* Interaction primitives — drag/drop + keyboard shortcuts */
|
|
3943
|
+
.ds-247420 .ds-reorderable { display: flex; gap: var(--space-1, 4px); }
|
|
3944
|
+
.ds-247420 .ds-reorderable-vertical { flex-direction: column; }
|
|
3945
|
+
.ds-247420 .ds-reorderable-horizontal { flex-direction: row; }
|
|
3946
|
+
.ds-247420 .ds-reorder-item {
|
|
3947
|
+
display: flex; align-items: center; gap: var(--space-2, 8px);
|
|
3948
|
+
padding: var(--space-1, 4px); border-radius: var(--radius-sm, 4px);
|
|
3949
|
+
background: var(--panel-1); color: var(--panel-text);
|
|
3950
|
+
transition: transform var(--dur-snap, 120ms) var(--ease, ease), opacity var(--dur-snap, 120ms) var(--ease, ease);
|
|
3951
|
+
}
|
|
3952
|
+
.ds-247420 .ds-reorder-handle {
|
|
3953
|
+
min-width: 44px; min-height: 44px;
|
|
3954
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
3955
|
+
appearance: none; background: transparent; color: var(--panel-text-2, var(--panel-text));
|
|
3956
|
+
border: 0; border-radius: var(--radius-sm, 4px);
|
|
3957
|
+
cursor: grab; font: 14px/1 var(--ff-mono, monospace); letter-spacing: -2px;
|
|
3958
|
+
touch-action: none; user-select: none;
|
|
3959
|
+
}
|
|
3960
|
+
.ds-247420 .ds-reorder-handle:focus-visible { outline: 2px solid var(--focus-ring, var(--accent)); outline-offset: 2px; }
|
|
3961
|
+
.ds-247420 .ds-reorder-handle:active { cursor: grabbing; }
|
|
3962
|
+
.ds-247420[data-dragging="true"] { opacity: 0.6; cursor: grabbing; transform: scale(0.98); }
|
|
3963
|
+
.ds-247420[data-drop-target-active="true"] {
|
|
3964
|
+
outline: 2px dashed var(--focus-ring, var(--accent)); outline-offset: 2px;
|
|
3965
|
+
background: color-mix(in srgb, var(--accent) 8%, var(--panel-1));
|
|
3966
|
+
}
|
|
3967
|
+
.ds-247420 .ds-reorder-insertion-line {
|
|
3968
|
+
height: 2px; background: var(--focus-ring, var(--accent));
|
|
3969
|
+
border-radius: 1px; animation: ds-insertion-in var(--dur-snap, 120ms) var(--ease, ease);
|
|
3970
|
+
}
|
|
3971
|
+
@keyframes ds-insertion-in { from { transform: scaleX(0); opacity: 0; } to { transform: scaleX(1); opacity: 1; } }
|
|
3972
|
+
@media (prefers-reduced-motion: reduce) {
|
|
3973
|
+
.ds-247420 .ds-reorder-item, .ds-247420[data-dragging="true"] { transition: none; transform: none; }
|
|
3974
|
+
.ds-247420 .ds-reorder-insertion-line { animation: none; }
|
|
3975
|
+
}
|
|
3976
|
+
.ds-247420 .ds-kbd {
|
|
3977
|
+
display: inline-block; font: 0.85em/1 var(--ff-mono, monospace);
|
|
3978
|
+
padding: var(--space-1, 4px) calc(var(--space-1, 4px) * 1.5);
|
|
3979
|
+
border: 1px solid var(--rule, var(--panel-text-3));
|
|
3980
|
+
border-radius: var(--radius-sm, 4px);
|
|
3981
|
+
background: var(--panel-2, var(--panel-1)); color: var(--panel-text);
|
|
3982
|
+
}
|
|
3983
|
+
.ds-247420 .ds-kbd-group { margin: var(--space-3, 12px) 0; }
|
|
3984
|
+
.ds-247420 .ds-kbd-group h3 { font-size: 0.9em; opacity: 0.7; margin: 0 0 var(--space-1, 4px); }
|
|
3985
|
+
.ds-247420 .ds-kbd-group ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: var(--space-1, 4px); }
|