@fangxinyan/lumina 0.1.6 → 0.2.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/dist/{Accordion-GSBY5T5U.css → Accordion-3TQPKNN3.css} +8 -1
- package/dist/Accordion.cjs +2 -2
- package/dist/Accordion.d.cts +12 -0
- package/dist/Accordion.d.ts +12 -0
- package/dist/Accordion.js +1 -1
- package/dist/{Alert-LSKBYDRI.css → Alert-JJ7GB3UU.css} +11 -0
- package/dist/Alert.cjs +2 -2
- package/dist/Alert.d.cts +4 -0
- package/dist/Alert.d.ts +4 -0
- package/dist/Alert.js +1 -1
- package/dist/{Avatar-OXDSG5Q6.css → Avatar-R5A4AFKZ.css} +4 -0
- package/dist/Avatar.cjs +2 -2
- package/dist/Avatar.d.cts +2 -0
- package/dist/Avatar.d.ts +2 -0
- package/dist/Avatar.js +1 -1
- package/dist/{Button-5UI7QXGU.css → Button-SDQD25AG.css} +2 -0
- package/dist/Button.cjs +3 -3
- package/dist/Button.d.cts +2 -0
- package/dist/Button.d.ts +2 -0
- package/dist/Button.js +1 -1
- package/dist/Calendar.cjs +2 -2
- package/dist/Calendar.d.cts +8 -0
- package/dist/Calendar.d.ts +8 -0
- package/dist/Calendar.js +1 -1
- package/dist/{Card-2CHHFD4Y.css → Card-RG7ECXL2.css} +11 -0
- package/dist/Card.cjs +3 -3
- package/dist/Card.d.cts +2 -0
- package/dist/Card.d.ts +2 -0
- package/dist/Card.js +1 -1
- package/dist/{Divider-Z37INS5E.css → Divider-OEE4Q2KS.css} +31 -0
- package/dist/Divider.cjs +2 -2
- package/dist/Divider.d.cts +7 -0
- package/dist/Divider.d.ts +7 -0
- package/dist/Divider.js +1 -1
- package/dist/{Empty-VM23UNLQ.css → Empty-NQ72W3D7.css} +22 -0
- package/dist/Empty.cjs +4 -4
- package/dist/Empty.d.cts +42 -2
- package/dist/Empty.d.ts +42 -2
- package/dist/Empty.js +1 -1
- package/dist/Input-33CAH4O6.css +134 -0
- package/dist/Input.cjs +3 -3
- package/dist/Input.d.cts +17 -1
- package/dist/Input.d.ts +17 -1
- package/dist/Input.js +1 -1
- package/dist/Modal.cjs +3 -3
- package/dist/Modal.js +2 -2
- package/dist/{Pagination-6FFOI4NM.css → Pagination-YIRYJUXP.css} +33 -0
- package/dist/Pagination.cjs +5 -2
- package/dist/Pagination.d.cts +14 -0
- package/dist/Pagination.d.ts +14 -0
- package/dist/Pagination.js +4 -1
- package/dist/Select.cjs +3 -3
- package/dist/Select.js +2 -2
- package/dist/{Slider-RE4HZQKF.css → Slider-X4PVA65R.css} +51 -2
- package/dist/Slider.cjs +2 -2
- package/dist/Slider.d.cts +20 -5
- package/dist/Slider.d.ts +20 -5
- package/dist/Slider.js +1 -1
- package/dist/Switch-36KJNDXM.css +92 -0
- package/dist/Switch.cjs +2 -2
- package/dist/Switch.d.cts +4 -0
- package/dist/Switch.d.ts +4 -0
- package/dist/Switch.js +1 -1
- package/dist/Table-ADVN6LXP.css +295 -0
- package/dist/Table.cjs +7 -3
- package/dist/Table.d.cts +103 -7
- package/dist/Table.d.ts +103 -7
- package/dist/Table.js +5 -1
- package/dist/{Tabs-A27TSZOP.css → Tabs-RHK6XAFF.css} +7 -0
- package/dist/Tabs.cjs +3 -3
- package/dist/Tabs.d.cts +2 -0
- package/dist/Tabs.d.ts +2 -0
- package/dist/Tabs.js +1 -1
- package/dist/{Tag-EYOY3UWG.css → Tag-FGDY3W7E.css} +2 -0
- package/dist/Tag.cjs +3 -3
- package/dist/Tag.d.cts +5 -0
- package/dist/Tag.d.ts +5 -0
- package/dist/Tag.js +1 -1
- package/dist/chunk-437LB2V4.js +111 -0
- package/dist/chunk-437LB2V4.js.map +1 -0
- package/dist/chunk-4MR4GVTD.js +73 -0
- package/dist/chunk-4MR4GVTD.js.map +1 -0
- package/dist/{chunk-OXYFB2ZI.js → chunk-4U4OY5RA.js} +11 -5
- package/dist/chunk-4U4OY5RA.js.map +1 -0
- package/dist/chunk-55NTFU7Y.js +476 -0
- package/dist/chunk-55NTFU7Y.js.map +1 -0
- package/dist/{chunk-5EYI27B6.js → chunk-77BVQNAQ.js} +5 -3
- package/dist/chunk-77BVQNAQ.js.map +1 -0
- package/dist/{chunk-3QWHDCHJ.js → chunk-AJZKESHB.js} +13 -4
- package/dist/chunk-AJZKESHB.js.map +1 -0
- package/dist/{chunk-NZPJ7BUB.cjs → chunk-AXMEZGEG.cjs} +13 -4
- package/dist/chunk-AXMEZGEG.cjs.map +1 -0
- package/dist/{chunk-HTP6UEVR.js → chunk-BBPNQ44M.js} +22 -6
- package/dist/chunk-BBPNQ44M.js.map +1 -0
- package/dist/{chunk-QQXIWOI3.cjs → chunk-CCBHZYE6.cjs} +5 -5
- package/dist/{chunk-QQXIWOI3.cjs.map → chunk-CCBHZYE6.cjs.map} +1 -1
- package/dist/{chunk-KGYLUZOU.cjs → chunk-EPFYIR63.cjs} +5 -5
- package/dist/{chunk-KGYLUZOU.cjs.map → chunk-EPFYIR63.cjs.map} +1 -1
- package/dist/chunk-F7HW2PYR.cjs +119 -0
- package/dist/chunk-F7HW2PYR.cjs.map +1 -0
- package/dist/chunk-GIVMKGZN.js +39 -0
- package/dist/chunk-GIVMKGZN.js.map +1 -0
- package/dist/{chunk-FMG3ZPGK.js → chunk-H6FCIJOP.js} +5 -3
- package/dist/chunk-H6FCIJOP.js.map +1 -0
- package/dist/{chunk-ALFDP5WX.cjs → chunk-IDM6JJLP.cjs} +22 -6
- package/dist/chunk-IDM6JJLP.cjs.map +1 -0
- package/dist/chunk-IFERLHCL.cjs +499 -0
- package/dist/chunk-IFERLHCL.cjs.map +1 -0
- package/dist/{chunk-I2ERCHFV.cjs → chunk-JKLQOB2F.cjs} +11 -5
- package/dist/chunk-JKLQOB2F.cjs.map +1 -0
- package/dist/{chunk-IGHLSNXT.cjs → chunk-K7PVJLW4.cjs} +51 -4
- package/dist/chunk-K7PVJLW4.cjs.map +1 -0
- package/dist/chunk-LDENBYRC.cjs +210 -0
- package/dist/chunk-LDENBYRC.cjs.map +1 -0
- package/dist/{chunk-OOBSH7EL.js → chunk-LSLYY5FN.js} +3 -3
- package/dist/{chunk-OOBSH7EL.js.map → chunk-LSLYY5FN.js.map} +1 -1
- package/dist/chunk-NSUD5B22.js +187 -0
- package/dist/chunk-NSUD5B22.js.map +1 -0
- package/dist/{chunk-AAMYURWQ.cjs → chunk-OPTTHURA.cjs} +5 -3
- package/dist/chunk-OPTTHURA.cjs.map +1 -0
- package/dist/{chunk-F3NHM4GX.js → chunk-OYGFMXAA.js} +13 -4
- package/dist/chunk-OYGFMXAA.js.map +1 -0
- package/dist/chunk-PBBHUUXU.cjs +133 -0
- package/dist/chunk-PBBHUUXU.cjs.map +1 -0
- package/dist/chunk-RDLPX7RK.cjs +95 -0
- package/dist/chunk-RDLPX7RK.cjs.map +1 -0
- package/dist/{chunk-XFRP2MBR.js → chunk-TYQ5CN2C.js} +51 -4
- package/dist/chunk-TYQ5CN2C.js.map +1 -0
- package/dist/{chunk-7CKHWCEA.cjs → chunk-TZSWDH5T.cjs} +5 -3
- package/dist/chunk-TZSWDH5T.cjs.map +1 -0
- package/dist/{chunk-VMHNKD3N.cjs → chunk-URF6RBW6.cjs} +13 -4
- package/dist/chunk-URF6RBW6.cjs.map +1 -0
- package/dist/{chunk-G3UWXSNQ.js → chunk-V34OPWKZ.js} +5 -4
- package/dist/chunk-V34OPWKZ.js.map +1 -0
- package/dist/{chunk-ITGCHU3Y.cjs → chunk-VICGQC6G.cjs} +5 -4
- package/dist/chunk-VICGQC6G.cjs.map +1 -0
- package/dist/chunk-YEOARJKR.cjs +40 -0
- package/dist/chunk-YEOARJKR.cjs.map +1 -0
- package/dist/chunk-Z5X5AMLA.cjs +41 -0
- package/dist/chunk-Z5X5AMLA.cjs.map +1 -0
- package/dist/chunk-Z7P6QGMT.js +115 -0
- package/dist/chunk-Z7P6QGMT.js.map +1 -0
- package/dist/{chunk-OYH6A7IQ.js → chunk-ZVCMXDTP.js} +3 -3
- package/dist/{chunk-OYH6A7IQ.js.map → chunk-ZVCMXDTP.js.map} +1 -1
- package/dist/chunk-ZWP4LSS3.js +38 -0
- package/dist/chunk-ZWP4LSS3.js.map +1 -0
- package/dist/index.cjs +43 -43
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +18 -18
- package/dist/index.js.map +1 -1
- package/dist/styles.css +455 -30
- package/package.json +1 -1
- package/dist/Input-Z526ARZP.css +0 -66
- package/dist/Switch-NP7KKJOX.css +0 -44
- package/dist/Table-ZDPGWLH3.css +0 -139
- package/dist/chunk-2VA2HSL4.cjs +0 -121
- package/dist/chunk-2VA2HSL4.cjs.map +0 -1
- package/dist/chunk-2W2AJUZW.js +0 -118
- package/dist/chunk-2W2AJUZW.js.map +0 -1
- package/dist/chunk-3QWHDCHJ.js.map +0 -1
- package/dist/chunk-4AA22BOG.js +0 -63
- package/dist/chunk-4AA22BOG.js.map +0 -1
- package/dist/chunk-5EYI27B6.js.map +0 -1
- package/dist/chunk-77NP67ML.cjs +0 -70
- package/dist/chunk-77NP67ML.cjs.map +0 -1
- package/dist/chunk-7CKHWCEA.cjs.map +0 -1
- package/dist/chunk-7NM5BRUX.js +0 -91
- package/dist/chunk-7NM5BRUX.js.map +0 -1
- package/dist/chunk-7UJI437T.js +0 -49
- package/dist/chunk-7UJI437T.js.map +0 -1
- package/dist/chunk-AAMYURWQ.cjs.map +0 -1
- package/dist/chunk-ALFDP5WX.cjs.map +0 -1
- package/dist/chunk-F3NHM4GX.js.map +0 -1
- package/dist/chunk-FMG3ZPGK.js.map +0 -1
- package/dist/chunk-G3UWXSNQ.js.map +0 -1
- package/dist/chunk-HTP6UEVR.js.map +0 -1
- package/dist/chunk-I2ERCHFV.cjs.map +0 -1
- package/dist/chunk-IBZAGURN.cjs +0 -71
- package/dist/chunk-IBZAGURN.cjs.map +0 -1
- package/dist/chunk-IGHLSNXT.cjs.map +0 -1
- package/dist/chunk-ITGCHU3Y.cjs.map +0 -1
- package/dist/chunk-JNFCTYJT.cjs +0 -31
- package/dist/chunk-JNFCTYJT.cjs.map +0 -1
- package/dist/chunk-JWFVSBVX.cjs +0 -30
- package/dist/chunk-JWFVSBVX.cjs.map +0 -1
- package/dist/chunk-K67KIKX4.cjs +0 -67
- package/dist/chunk-K67KIKX4.cjs.map +0 -1
- package/dist/chunk-M6OTFXZA.js +0 -48
- package/dist/chunk-M6OTFXZA.js.map +0 -1
- package/dist/chunk-NWJW5KLN.js +0 -29
- package/dist/chunk-NWJW5KLN.js.map +0 -1
- package/dist/chunk-NZPJ7BUB.cjs.map +0 -1
- package/dist/chunk-OXYFB2ZI.js.map +0 -1
- package/dist/chunk-QT7SJITQ.cjs +0 -114
- package/dist/chunk-QT7SJITQ.cjs.map +0 -1
- package/dist/chunk-VMHNKD3N.cjs.map +0 -1
- package/dist/chunk-VXITDXLW.js +0 -28
- package/dist/chunk-VXITDXLW.js.map +0 -1
- package/dist/chunk-XFRP2MBR.js.map +0 -1
package/dist/styles.css
CHANGED
|
@@ -277,6 +277,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
277
277
|
.btn.sm.icon { width: 30px; padding: 0; }
|
|
278
278
|
.btn.lg { height: 52px; padding: 0 24px; font-size: 15px; border-radius: var(--r-lg); }
|
|
279
279
|
.btn.lg.icon { width: 52px; padding: 0; }
|
|
280
|
+
.btn.block { width: 100%; flex-shrink: 1; }
|
|
280
281
|
.btn[disabled], .btn.disabled, .btn:disabled {
|
|
281
282
|
color: var(--fg-subtle);
|
|
282
283
|
cursor: not-allowed;
|
|
@@ -294,50 +295,113 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
294
295
|
display: inline-block;
|
|
295
296
|
}
|
|
296
297
|
/* ============ Input / Textarea ============ */
|
|
298
|
+
.input-shell {
|
|
299
|
+
display: inline-flex;
|
|
300
|
+
flex-direction: column;
|
|
301
|
+
gap: 4px;
|
|
302
|
+
width: 100%;
|
|
303
|
+
}
|
|
304
|
+
.input-count {
|
|
305
|
+
font-size: 11px;
|
|
306
|
+
color: var(--fg-subtle);
|
|
307
|
+
font-variant-numeric: tabular-nums;
|
|
308
|
+
text-align: right;
|
|
309
|
+
}
|
|
297
310
|
.input-wrap {
|
|
298
311
|
position: relative;
|
|
299
312
|
display: inline-flex;
|
|
300
313
|
align-items: center;
|
|
301
314
|
width: 100%;
|
|
315
|
+
height: var(--ctrl-h);
|
|
316
|
+
padding: 0 var(--ctrl-pad-x);
|
|
317
|
+
border-radius: var(--r-md);
|
|
318
|
+
background: var(--bg);
|
|
319
|
+
box-shadow: var(--neu-in-sm);
|
|
320
|
+
transition: box-shadow var(--dur) var(--ease);
|
|
321
|
+
gap: 8px;
|
|
302
322
|
}
|
|
323
|
+
.input-wrap.sm { height: 32px; padding: 0 12px; border-radius: var(--r-sm); gap: 6px; }
|
|
324
|
+
.input-wrap.lg { height: 48px; padding: 0 18px; border-radius: var(--r-lg); gap: 10px; }
|
|
325
|
+
.input-wrap:focus-within { box-shadow: var(--neu-in-sm), 0 0 0 2px var(--accent-glow); }
|
|
326
|
+
.input-wrap.invalid { box-shadow: var(--neu-in-sm), 0 0 0 2px color-mix(in oklch, var(--danger) 30%, transparent); }
|
|
327
|
+
.input-wrap.disabled { opacity: 0.6; cursor: not-allowed; }
|
|
303
328
|
.input-wrap .lead,
|
|
304
329
|
.input-wrap .trail {
|
|
305
|
-
position: absolute;
|
|
306
330
|
color: var(--fg-subtle);
|
|
307
|
-
|
|
331
|
+
flex-shrink: 0;
|
|
332
|
+
display: inline-flex;
|
|
308
333
|
}
|
|
309
|
-
.input-wrap .lead
|
|
310
|
-
.input-wrap .trail {
|
|
334
|
+
.input-wrap .lead.interactive,
|
|
335
|
+
.input-wrap .trail.interactive { cursor: pointer; pointer-events: auto; }
|
|
311
336
|
.input-wrap .trail:hover { color: var(--fg); }
|
|
312
|
-
.input,
|
|
313
|
-
.input-wrap
|
|
337
|
+
.input-wrap .lead:not(.interactive),
|
|
338
|
+
.input-wrap .trail:not(.interactive) { pointer-events: none; }
|
|
339
|
+
.input-wrap .input-affix {
|
|
340
|
+
display: inline-flex;
|
|
341
|
+
align-items: center;
|
|
342
|
+
color: var(--fg-muted);
|
|
343
|
+
font-size: 13px;
|
|
344
|
+
white-space: nowrap;
|
|
345
|
+
user-select: none;
|
|
346
|
+
flex-shrink: 0;
|
|
347
|
+
}
|
|
348
|
+
.input-wrap.sm .input-affix { font-size: 12px; }
|
|
349
|
+
.input-wrap.lg .input-affix { font-size: 14px; }
|
|
350
|
+
.input-wrap .input-clear {
|
|
351
|
+
display: inline-flex;
|
|
352
|
+
align-items: center;
|
|
353
|
+
justify-content: center;
|
|
354
|
+
width: 18px;
|
|
355
|
+
height: 18px;
|
|
356
|
+
border-radius: 999px;
|
|
357
|
+
color: var(--fg-subtle);
|
|
358
|
+
background: transparent;
|
|
359
|
+
cursor: pointer;
|
|
360
|
+
flex-shrink: 0;
|
|
361
|
+
transition: color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
|
|
362
|
+
}
|
|
363
|
+
.input-wrap .input-clear:hover {
|
|
364
|
+
color: var(--fg);
|
|
365
|
+
background: var(--bg-sunken);
|
|
366
|
+
}
|
|
367
|
+
.input-wrap > .input {
|
|
368
|
+
flex: 1;
|
|
369
|
+
min-width: 0;
|
|
314
370
|
width: 100%;
|
|
315
|
-
height:
|
|
316
|
-
padding: 0
|
|
371
|
+
height: 100%;
|
|
372
|
+
padding: 0;
|
|
317
373
|
border: none;
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
box-shadow: var(--neu-in-sm);
|
|
374
|
+
background: transparent;
|
|
375
|
+
box-shadow: none;
|
|
321
376
|
color: var(--fg);
|
|
322
377
|
font-size: 13px;
|
|
323
378
|
font-family: inherit;
|
|
324
379
|
outline: none;
|
|
325
|
-
transition: box-shadow var(--dur) var(--ease);
|
|
326
380
|
}
|
|
327
|
-
.input-wrap
|
|
328
|
-
.input-wrap.
|
|
329
|
-
.input-wrap:
|
|
330
|
-
.input-wrap.
|
|
331
|
-
.
|
|
332
|
-
.
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
381
|
+
.input-wrap.sm > .input { font-size: 12px; }
|
|
382
|
+
.input-wrap.lg > .input { font-size: 14px; }
|
|
383
|
+
.input-wrap > .input::placeholder { color: var(--fg-subtle); }
|
|
384
|
+
.input-wrap.disabled > .input { cursor: not-allowed; }
|
|
385
|
+
.textarea-wrap { position: relative; width: 100%; }
|
|
386
|
+
.textarea-wrap .textarea-clear {
|
|
387
|
+
position: absolute;
|
|
388
|
+
top: 10px;
|
|
389
|
+
right: 10px;
|
|
390
|
+
display: inline-flex;
|
|
391
|
+
align-items: center;
|
|
392
|
+
justify-content: center;
|
|
393
|
+
width: 18px;
|
|
394
|
+
height: 18px;
|
|
395
|
+
border-radius: 999px;
|
|
396
|
+
color: var(--fg-subtle);
|
|
397
|
+
background: transparent;
|
|
398
|
+
cursor: pointer;
|
|
399
|
+
transition: color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
|
|
400
|
+
}
|
|
401
|
+
.textarea-wrap .textarea-clear:hover {
|
|
402
|
+
color: var(--fg);
|
|
403
|
+
background: var(--bg-sunken);
|
|
404
|
+
}
|
|
341
405
|
.textarea {
|
|
342
406
|
width: 100%;
|
|
343
407
|
min-height: 96px;
|
|
@@ -385,6 +449,10 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
385
449
|
}
|
|
386
450
|
.switch.sm { --w: 36px; --h: 20px; }
|
|
387
451
|
.switch.lg { --w: 58px; --h: 32px; }
|
|
452
|
+
/* When checkedChildren / unCheckedChildren are present, widen the track to fit. */
|
|
453
|
+
.switch.with-children { --w: 60px; }
|
|
454
|
+
.switch.with-children.sm { --w: 46px; }
|
|
455
|
+
.switch.with-children.lg { --w: 74px; }
|
|
388
456
|
.switch-thumb {
|
|
389
457
|
position: absolute;
|
|
390
458
|
top: 3px;
|
|
@@ -395,12 +463,54 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
395
463
|
background: var(--bg-raised);
|
|
396
464
|
box-shadow: var(--neu-out-sm);
|
|
397
465
|
transition: all var(--dur) var(--ease);
|
|
466
|
+
z-index: 1;
|
|
398
467
|
}
|
|
399
468
|
.switch.on .switch-thumb {
|
|
400
469
|
transform: translateX(calc(var(--w) - var(--h)));
|
|
401
470
|
background: var(--accent);
|
|
402
471
|
box-shadow: 0 2px 8px var(--accent-glow), 0 0 0 1px color-mix(in oklch, var(--accent) 40%, transparent);
|
|
403
472
|
}
|
|
473
|
+
/* Inline content (checkedChildren / unCheckedChildren) */
|
|
474
|
+
.switch-inner {
|
|
475
|
+
position: absolute;
|
|
476
|
+
inset: 0;
|
|
477
|
+
display: flex;
|
|
478
|
+
align-items: center;
|
|
479
|
+
font-size: 11px;
|
|
480
|
+
font-weight: 500;
|
|
481
|
+
font-family: inherit;
|
|
482
|
+
line-height: 1;
|
|
483
|
+
pointer-events: none;
|
|
484
|
+
}
|
|
485
|
+
.switch.sm .switch-inner { font-size: 10px; }
|
|
486
|
+
.switch-inner-on,
|
|
487
|
+
.switch-inner-off {
|
|
488
|
+
position: absolute;
|
|
489
|
+
display: inline-flex;
|
|
490
|
+
align-items: center;
|
|
491
|
+
justify-content: center;
|
|
492
|
+
transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease);
|
|
493
|
+
}
|
|
494
|
+
/* Checked label sits on the left side of the track (thumb pushes right). */
|
|
495
|
+
.switch-inner-on {
|
|
496
|
+
left: 8px;
|
|
497
|
+
right: calc(var(--h) - 2px);
|
|
498
|
+
color: white;
|
|
499
|
+
opacity: 0;
|
|
500
|
+
transform: translateX(-4px);
|
|
501
|
+
}
|
|
502
|
+
/* Unchecked label sits on the right side (thumb is at left). */
|
|
503
|
+
.switch-inner-off {
|
|
504
|
+
right: 8px;
|
|
505
|
+
left: calc(var(--h) - 2px);
|
|
506
|
+
color: var(--fg-muted);
|
|
507
|
+
opacity: 1;
|
|
508
|
+
transform: translateX(0);
|
|
509
|
+
}
|
|
510
|
+
.switch.sm .switch-inner-on { left: 5px; right: calc(var(--h) - 2px); }
|
|
511
|
+
.switch.sm .switch-inner-off { right: 5px; left: calc(var(--h) - 2px); }
|
|
512
|
+
.switch.on .switch-inner-on { opacity: 1; transform: translateX(0); }
|
|
513
|
+
.switch.on .switch-inner-off { opacity: 0; transform: translateX(4px); }
|
|
404
514
|
/* ============ Checkbox & Radio ============ */
|
|
405
515
|
.checkbox, .radio {
|
|
406
516
|
display: inline-flex;
|
|
@@ -480,6 +590,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
480
590
|
align-items: center;
|
|
481
591
|
cursor: pointer;
|
|
482
592
|
}
|
|
593
|
+
.slider.has-marks { padding-bottom: 26px; }
|
|
483
594
|
.slider.disabled { opacity: 0.5; cursor: not-allowed; }
|
|
484
595
|
.slider-track {
|
|
485
596
|
position: relative;
|
|
@@ -492,11 +603,11 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
492
603
|
}
|
|
493
604
|
.slider-fill {
|
|
494
605
|
position: absolute;
|
|
495
|
-
top: 0;
|
|
606
|
+
top: 0; bottom: 0;
|
|
496
607
|
background: linear-gradient(90deg, color-mix(in oklch, var(--accent) 70%, white), var(--accent));
|
|
497
608
|
box-shadow: 0 0 12px var(--accent-glow);
|
|
498
609
|
border-radius: 999px;
|
|
499
|
-
transition:
|
|
610
|
+
transition: left var(--dur-fast) var(--ease), right var(--dur-fast) var(--ease);
|
|
500
611
|
}
|
|
501
612
|
.slider-thumb {
|
|
502
613
|
position: absolute;
|
|
@@ -508,7 +619,10 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
508
619
|
transform: translate(-50%, -50%);
|
|
509
620
|
transition: all var(--dur-fast) var(--ease);
|
|
510
621
|
display: grid; place-items: center;
|
|
622
|
+
pointer-events: none;
|
|
511
623
|
}
|
|
624
|
+
.slider.has-marks .slider-thumb { top: calc(50% - 13px); }
|
|
625
|
+
.slider.has-marks .slider-track { margin-top: -26px; }
|
|
512
626
|
.slider-thumb::after {
|
|
513
627
|
content: "";
|
|
514
628
|
width: 6px; height: 6px;
|
|
@@ -522,7 +636,13 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
522
636
|
width: 100%; height: 100%;
|
|
523
637
|
opacity: 0;
|
|
524
638
|
cursor: inherit;
|
|
639
|
+
margin: 0;
|
|
640
|
+
pointer-events: auto;
|
|
525
641
|
}
|
|
642
|
+
/* In range mode (two stacked inputs), split the hit zones by half so the user can drag either thumb */
|
|
643
|
+
.slider input[type="range"]:nth-of-type(1):not(:only-of-type) { right: 50%; }
|
|
644
|
+
.slider input[type="range"]:nth-of-type(2) { left: 50%; }
|
|
645
|
+
.slider.has-marks input[type="range"] { height: calc(100% - 26px); }
|
|
526
646
|
.slider-value { font-family: var(--font-mono); font-size: 12px; color: var(--accent-ink); margin-left: 10px; }
|
|
527
647
|
.slider.success .slider-fill { background: linear-gradient(90deg, color-mix(in oklch, var(--success) 70%, white), var(--success)); box-shadow: 0 0 10px color-mix(in oklch, var(--success) 35%, transparent); }
|
|
528
648
|
.slider.success .slider-thumb::after { background: var(--success); }
|
|
@@ -530,6 +650,44 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
530
650
|
.slider.warning .slider-thumb::after { background: var(--warning); }
|
|
531
651
|
.slider.danger .slider-fill { background: linear-gradient(90deg, color-mix(in oklch, var(--danger) 70%, white), var(--danger)); box-shadow: 0 0 10px color-mix(in oklch, var(--danger) 35%, transparent); }
|
|
532
652
|
.slider.danger .slider-thumb::after { background: var(--danger); }
|
|
653
|
+
/* Marks */
|
|
654
|
+
.slider-marks {
|
|
655
|
+
position: absolute;
|
|
656
|
+
left: 0; right: 0;
|
|
657
|
+
bottom: 0;
|
|
658
|
+
height: 22px;
|
|
659
|
+
pointer-events: none;
|
|
660
|
+
}
|
|
661
|
+
.slider-mark {
|
|
662
|
+
position: absolute;
|
|
663
|
+
transform: translateX(-50%);
|
|
664
|
+
display: inline-flex;
|
|
665
|
+
flex-direction: column;
|
|
666
|
+
align-items: center;
|
|
667
|
+
gap: 4px;
|
|
668
|
+
pointer-events: auto;
|
|
669
|
+
cursor: pointer;
|
|
670
|
+
color: var(--fg-subtle);
|
|
671
|
+
font-size: 11px;
|
|
672
|
+
user-select: none;
|
|
673
|
+
}
|
|
674
|
+
.slider-mark-dot {
|
|
675
|
+
width: 6px; height: 6px;
|
|
676
|
+
border-radius: 999px;
|
|
677
|
+
background: var(--bg);
|
|
678
|
+
box-shadow: var(--neu-in-sm);
|
|
679
|
+
margin-top: -18px;
|
|
680
|
+
position: relative;
|
|
681
|
+
z-index: 1;
|
|
682
|
+
}
|
|
683
|
+
.slider-mark.active .slider-mark-dot { background: var(--accent); box-shadow: 0 0 6px var(--accent-glow); }
|
|
684
|
+
.slider.success .slider-mark.active .slider-mark-dot { background: var(--success); box-shadow: 0 0 6px color-mix(in oklch, var(--success) 35%, transparent); }
|
|
685
|
+
.slider.warning .slider-mark.active .slider-mark-dot { background: var(--warning); box-shadow: 0 0 6px color-mix(in oklch, var(--warning) 35%, transparent); }
|
|
686
|
+
.slider.danger .slider-mark.active .slider-mark-dot { background: var(--danger); box-shadow: 0 0 6px color-mix(in oklch, var(--danger) 35%, transparent); }
|
|
687
|
+
.slider-mark-label { white-space: nowrap; }
|
|
688
|
+
.slider-mark.active .slider-mark-label { color: var(--accent-ink); font-weight: 500; }
|
|
689
|
+
.slider-mark:hover .slider-mark-label { color: var(--fg); }
|
|
690
|
+
.slider.disabled .slider-mark { pointer-events: none; }
|
|
533
691
|
/* ============ Progress ============ */
|
|
534
692
|
.progress {
|
|
535
693
|
width: 100%;
|
|
@@ -616,7 +774,9 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
616
774
|
.tag.solid.success { background: var(--success); color: white; box-shadow: 0 2px 6px color-mix(in oklch, var(--success) 35%, transparent); }
|
|
617
775
|
.tag.solid.warning { background: var(--warning); color: white; box-shadow: 0 2px 6px color-mix(in oklch, var(--warning) 35%, transparent); }
|
|
618
776
|
.tag.solid.danger { background: var(--danger); color: white; box-shadow: 0 2px 6px color-mix(in oklch, var(--danger) 35%, transparent); }
|
|
777
|
+
.tag.borderless { background: transparent; box-shadow: none; }
|
|
619
778
|
.tag .dot { width: 6px; height: 6px; border-radius: 999px; background: currentColor; }
|
|
779
|
+
.tag .tag-ico { color: currentColor; display: inline-flex; }
|
|
620
780
|
.tag .x { cursor: pointer; color: var(--fg-subtle); margin-left: 2px; display: inline-flex; }
|
|
621
781
|
.tag .x:hover { color: var(--fg); }
|
|
622
782
|
.badge {
|
|
@@ -658,6 +818,10 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
658
818
|
.avatar.sm { --size: 28px; }
|
|
659
819
|
.avatar.lg { --size: 56px; }
|
|
660
820
|
.avatar.xl { --size: 80px; }
|
|
821
|
+
.avatar.square { border-radius: var(--r-md); }
|
|
822
|
+
.avatar.square.sm { border-radius: var(--r-sm); }
|
|
823
|
+
.avatar.square.lg,
|
|
824
|
+
.avatar.square.xl { border-radius: var(--r-lg); }
|
|
661
825
|
.avatar img { width: 100%; height: 100%; object-fit: cover; }
|
|
662
826
|
.avatar-status {
|
|
663
827
|
position: absolute;
|
|
@@ -701,6 +865,28 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
701
865
|
.divider.sunken:has(.divider-label) { background: transparent; box-shadow: none; }
|
|
702
866
|
.divider.sunken:has(.divider-label)::before,
|
|
703
867
|
.divider.sunken:has(.divider-label)::after { height: 2px; background: transparent; box-shadow: var(--neu-in-sm); }
|
|
868
|
+
/* ---- Dashed variant ---- */
|
|
869
|
+
.divider.dashed {
|
|
870
|
+
background: transparent;
|
|
871
|
+
box-shadow: none;
|
|
872
|
+
border-top: 1px dashed var(--divider);
|
|
873
|
+
border-radius: 0;
|
|
874
|
+
height: 0;
|
|
875
|
+
}
|
|
876
|
+
.divider.dashed.vertical {
|
|
877
|
+
width: 0;
|
|
878
|
+
border-top: none;
|
|
879
|
+
border-left: 1px dashed var(--divider);
|
|
880
|
+
}
|
|
881
|
+
.divider.dashed:has(.divider-label) { border-top: none; }
|
|
882
|
+
.divider.dashed:has(.divider-label)::before,
|
|
883
|
+
.divider.dashed:has(.divider-label)::after {
|
|
884
|
+
background: transparent;
|
|
885
|
+
box-shadow: none;
|
|
886
|
+
border-top: 1px dashed var(--divider);
|
|
887
|
+
height: 0;
|
|
888
|
+
border-radius: 0;
|
|
889
|
+
}
|
|
704
890
|
.divider-label {
|
|
705
891
|
display: flex; align-items: center; gap: 12px;
|
|
706
892
|
height: auto; background: transparent; box-shadow: none;
|
|
@@ -724,6 +910,12 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
724
910
|
border-radius: 999px;
|
|
725
911
|
box-shadow: 0 1px 0 var(--shadow-light);
|
|
726
912
|
}
|
|
913
|
+
/* ---- Label orientation ---- */
|
|
914
|
+
.divider.orient-left::before { flex: 0 0 var(--gap-4); }
|
|
915
|
+
.divider.orient-left::after { flex: 1; }
|
|
916
|
+
.divider.orient-right::before { flex: 1; }
|
|
917
|
+
.divider.orient-right::after { flex: 0 0 var(--gap-4); }
|
|
918
|
+
/* center is default (both flex: 1) */
|
|
727
919
|
/* ============ Card & Panel ============ */
|
|
728
920
|
.card {
|
|
729
921
|
background: var(--bg);
|
|
@@ -736,6 +928,16 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
736
928
|
.card.pad-none { padding: 0; }
|
|
737
929
|
.card.pad-sm { padding: var(--gap-3); }
|
|
738
930
|
.card.pad-lg { padding: var(--gap-6); }
|
|
931
|
+
.card.hoverable {
|
|
932
|
+
cursor: pointer;
|
|
933
|
+
transition: box-shadow var(--dur) var(--ease), transform var(--dur) var(--ease);
|
|
934
|
+
}
|
|
935
|
+
.card.hoverable:hover {
|
|
936
|
+
transform: translateY(-3px);
|
|
937
|
+
box-shadow: var(--neu-out-lg);
|
|
938
|
+
}
|
|
939
|
+
.card.hoverable.flat:hover { box-shadow: var(--neu-out-sm); }
|
|
940
|
+
.card.hoverable.sunken:hover { box-shadow: var(--neu-out); }
|
|
739
941
|
.panel {
|
|
740
942
|
background: var(--bg);
|
|
741
943
|
border-radius: var(--r-lg);
|
|
@@ -809,6 +1011,12 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
809
1011
|
background: var(--accent); border-radius: 999px;
|
|
810
1012
|
box-shadow: 0 0 8px var(--accent-glow);
|
|
811
1013
|
}
|
|
1014
|
+
/* Centered nav — works for pill / segmented (self-align) and line (flex-center) */
|
|
1015
|
+
.tabs.centered .tabs-nav { align-self: center; }
|
|
1016
|
+
.tabs.centered.line .tabs-nav,
|
|
1017
|
+
.tabs.centered.underline .tabs-nav { align-self: stretch; justify-content: center; }
|
|
1018
|
+
.tabs.centered.line .tabs-nav .tab,
|
|
1019
|
+
.tabs.centered.underline .tabs-nav .tab { margin-right: 11px; margin-left: 11px; }
|
|
812
1020
|
.tabs-content { padding: var(--gap-2) 0; }
|
|
813
1021
|
/* Segmented (owned by Tabs.tsx — Segmented is co-exported) */
|
|
814
1022
|
.segmented {
|
|
@@ -851,6 +1059,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
851
1059
|
box-shadow: var(--neu-out-sm);
|
|
852
1060
|
overflow: hidden;
|
|
853
1061
|
}
|
|
1062
|
+
.accordion-item.disabled { opacity: 0.5; }
|
|
854
1063
|
.accordion-head {
|
|
855
1064
|
width: 100%;
|
|
856
1065
|
border: none;
|
|
@@ -866,6 +1075,8 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
866
1075
|
color: var(--fg);
|
|
867
1076
|
text-align: left;
|
|
868
1077
|
}
|
|
1078
|
+
.accordion-item.disabled .accordion-head { cursor: not-allowed; }
|
|
1079
|
+
.accordion-item.icon-only .accordion-head:not(:disabled) { cursor: default; }
|
|
869
1080
|
.accordion-body {
|
|
870
1081
|
max-height: 0;
|
|
871
1082
|
overflow: hidden;
|
|
@@ -876,10 +1087,14 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
876
1087
|
.accordion-item.open .accordion-body { max-height: 320px; }
|
|
877
1088
|
.accordion-body-inner { padding: 0 18px 16px; }
|
|
878
1089
|
.accordion-chev {
|
|
879
|
-
transition: transform var(--dur) var(--ease);
|
|
1090
|
+
transition: transform var(--dur) var(--ease), color var(--dur) var(--ease);
|
|
880
1091
|
color: var(--fg-subtle);
|
|
881
1092
|
display: inline-flex;
|
|
1093
|
+
border-radius: 6px;
|
|
1094
|
+
padding: 2px;
|
|
882
1095
|
}
|
|
1096
|
+
.accordion-chev.clickable { cursor: pointer; }
|
|
1097
|
+
.accordion-chev.clickable:hover { color: var(--fg); background: var(--bg); box-shadow: var(--neu-flat); }
|
|
883
1098
|
.accordion-item.open .accordion-chev { transform: rotate(180deg); color: var(--accent); }
|
|
884
1099
|
/* ============ Select ============ */
|
|
885
1100
|
.select {
|
|
@@ -1402,6 +1617,15 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
1402
1617
|
.alert-desc { font-size: 12px; color: var(--fg-muted); line-height: 1.55; }
|
|
1403
1618
|
.alert.no-title { align-items: center; }
|
|
1404
1619
|
.alert.no-title .alert-ico { margin-top: 0; }
|
|
1620
|
+
.alert.no-icon { gap: 0; }
|
|
1621
|
+
.alert-action {
|
|
1622
|
+
display: flex;
|
|
1623
|
+
align-items: center;
|
|
1624
|
+
gap: 6px;
|
|
1625
|
+
flex-shrink: 0;
|
|
1626
|
+
margin-left: 4px;
|
|
1627
|
+
}
|
|
1628
|
+
.alert:has(.alert-close) .alert-action { margin-right: 26px; }
|
|
1405
1629
|
.alert-close {
|
|
1406
1630
|
position: absolute; top: 10px; right: 10px;
|
|
1407
1631
|
width: 22px; height: 22px; border-radius: 7px;
|
|
@@ -1424,6 +1648,9 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
1424
1648
|
box-shadow: var(--neu-in-sm);
|
|
1425
1649
|
overflow: auto;
|
|
1426
1650
|
}
|
|
1651
|
+
/* When scroll=y is on, the wrap itself becomes the scroll region. */
|
|
1652
|
+
.table-wrap.scroll-y { overflow-y: auto; }
|
|
1653
|
+
.table-wrap.scroll-x { overflow-x: auto; }
|
|
1427
1654
|
.table {
|
|
1428
1655
|
width: 100%;
|
|
1429
1656
|
border-collapse: separate;
|
|
@@ -1443,8 +1670,13 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
1443
1670
|
position: sticky; top: 0;
|
|
1444
1671
|
z-index: 1;
|
|
1445
1672
|
}
|
|
1673
|
+
/* When the wrap is the scroll container (scroll.y), position:sticky on th needs
|
|
1674
|
+
top:0 relative to the wrap — browsers already handle that. Adding a stronger
|
|
1675
|
+
bg so content under the header doesn't bleed through. */
|
|
1676
|
+
.table.sticky-head th { background: var(--bg); }
|
|
1446
1677
|
.table th.sortable { cursor: pointer; user-select: none; }
|
|
1447
1678
|
.table th.sortable:hover { color: var(--fg); }
|
|
1679
|
+
.table th .th-label { vertical-align: middle; }
|
|
1448
1680
|
.table th .sort-ind {
|
|
1449
1681
|
display: inline-flex;
|
|
1450
1682
|
width: 16px; height: 16px;
|
|
@@ -1505,8 +1737,142 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
1505
1737
|
box-shadow: 0 4px 8px var(--shadow-dark), 0 -4px 8px var(--shadow-light);
|
|
1506
1738
|
}
|
|
1507
1739
|
.table.cards.hoverable tbody tr:hover td { background: var(--bg); transform: translateY(-1px); }
|
|
1508
|
-
.table .row-check { width:
|
|
1740
|
+
.table .row-check { width: 44px; }
|
|
1741
|
+
.table .row-check .checkbox { display: inline-flex; }
|
|
1742
|
+
.table .row-expand { width: 40px; text-align: center; }
|
|
1509
1743
|
.table-empty { padding: 60px 20px; text-align: center; color: var(--fg-muted); }
|
|
1744
|
+
/* Expand button */
|
|
1745
|
+
.expand-btn {
|
|
1746
|
+
width: 22px; height: 22px;
|
|
1747
|
+
border: none;
|
|
1748
|
+
border-radius: var(--r-sm);
|
|
1749
|
+
background: var(--bg);
|
|
1750
|
+
box-shadow: var(--neu-flat);
|
|
1751
|
+
color: var(--fg-subtle);
|
|
1752
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
1753
|
+
cursor: pointer;
|
|
1754
|
+
transition: transform var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
|
|
1755
|
+
}
|
|
1756
|
+
.expand-btn:hover { color: var(--accent-ink); box-shadow: var(--neu-out-sm); }
|
|
1757
|
+
.expand-btn.open { transform: rotate(90deg); color: var(--accent-ink); box-shadow: var(--neu-in-sm); }
|
|
1758
|
+
/* Expanded row panel */
|
|
1759
|
+
.table tbody tr.expanded-row td {
|
|
1760
|
+
padding: 0 18px 14px 18px;
|
|
1761
|
+
border-bottom: 1px solid var(--divider);
|
|
1762
|
+
background: color-mix(in oklch, var(--bg-sunken) 25%, transparent);
|
|
1763
|
+
}
|
|
1764
|
+
.expanded-panel {
|
|
1765
|
+
padding: 14px 16px;
|
|
1766
|
+
border-radius: var(--r-md);
|
|
1767
|
+
background: var(--bg);
|
|
1768
|
+
box-shadow: var(--neu-in-sm);
|
|
1769
|
+
color: var(--fg);
|
|
1770
|
+
font-size: 13px;
|
|
1771
|
+
}
|
|
1772
|
+
/* Radio-style row selector */
|
|
1773
|
+
.table .row-check .radio-dot {
|
|
1774
|
+
width: 16px; height: 16px;
|
|
1775
|
+
border-radius: 50%;
|
|
1776
|
+
border: none;
|
|
1777
|
+
padding: 0;
|
|
1778
|
+
background: var(--bg);
|
|
1779
|
+
box-shadow: var(--neu-in-sm);
|
|
1780
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
1781
|
+
cursor: pointer;
|
|
1782
|
+
transition: box-shadow var(--dur-fast) var(--ease);
|
|
1783
|
+
}
|
|
1784
|
+
.table .row-check .radio-dot:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
1785
|
+
.table .row-check .radio-dot.checked {
|
|
1786
|
+
box-shadow: var(--neu-out-sm);
|
|
1787
|
+
}
|
|
1788
|
+
.table .row-check .radio-dot.checked::after {
|
|
1789
|
+
content: "";
|
|
1790
|
+
width: 8px; height: 8px;
|
|
1791
|
+
border-radius: 50%;
|
|
1792
|
+
background: var(--accent);
|
|
1793
|
+
}
|
|
1794
|
+
/* Filter button on header */
|
|
1795
|
+
.table th.filterable .filter-ind {
|
|
1796
|
+
display: inline-flex;
|
|
1797
|
+
width: 18px; height: 18px;
|
|
1798
|
+
border-radius: 5px;
|
|
1799
|
+
background: var(--bg);
|
|
1800
|
+
box-shadow: var(--neu-flat);
|
|
1801
|
+
color: var(--fg-subtle);
|
|
1802
|
+
align-items: center; justify-content: center;
|
|
1803
|
+
margin-left: 6px;
|
|
1804
|
+
cursor: pointer;
|
|
1805
|
+
border: none;
|
|
1806
|
+
vertical-align: middle;
|
|
1807
|
+
padding: 0;
|
|
1808
|
+
transition: color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);
|
|
1809
|
+
}
|
|
1810
|
+
.table th.filterable .filter-ind:hover { color: var(--fg); }
|
|
1811
|
+
.table th.filterable .filter-ind.active {
|
|
1812
|
+
color: var(--accent-ink);
|
|
1813
|
+
box-shadow: var(--neu-in-sm);
|
|
1814
|
+
}
|
|
1815
|
+
/* Filter popover panel (portaled to body) */
|
|
1816
|
+
.table-filter-panel {
|
|
1817
|
+
z-index: 1001;
|
|
1818
|
+
min-width: 200px;
|
|
1819
|
+
max-width: 260px;
|
|
1820
|
+
background: var(--bg);
|
|
1821
|
+
border-radius: var(--r-md);
|
|
1822
|
+
box-shadow: var(--neu-out-lg);
|
|
1823
|
+
padding: 10px;
|
|
1824
|
+
animation: menuIn var(--dur) var(--ease);
|
|
1825
|
+
}
|
|
1826
|
+
.table-filter-options {
|
|
1827
|
+
display: flex;
|
|
1828
|
+
flex-direction: column;
|
|
1829
|
+
max-height: 220px;
|
|
1830
|
+
overflow-y: auto;
|
|
1831
|
+
gap: 4px;
|
|
1832
|
+
padding: 4px;
|
|
1833
|
+
}
|
|
1834
|
+
.table-filter-item {
|
|
1835
|
+
display: flex;
|
|
1836
|
+
align-items: center;
|
|
1837
|
+
gap: 8px;
|
|
1838
|
+
padding: 6px 8px;
|
|
1839
|
+
border-radius: var(--r-sm);
|
|
1840
|
+
font-size: 13px;
|
|
1841
|
+
color: var(--fg);
|
|
1842
|
+
cursor: pointer;
|
|
1843
|
+
transition: background var(--dur-fast) var(--ease);
|
|
1844
|
+
}
|
|
1845
|
+
.table-filter-item:hover {
|
|
1846
|
+
background: color-mix(in oklch, var(--accent-soft) 40%, transparent);
|
|
1847
|
+
}
|
|
1848
|
+
.table-filter-actions {
|
|
1849
|
+
display: flex;
|
|
1850
|
+
justify-content: flex-end;
|
|
1851
|
+
gap: 6px;
|
|
1852
|
+
margin-top: 6px;
|
|
1853
|
+
padding-top: 8px;
|
|
1854
|
+
border-top: 1px solid var(--divider);
|
|
1855
|
+
}
|
|
1856
|
+
.table-filter-actions .tf-btn {
|
|
1857
|
+
border: none;
|
|
1858
|
+
padding: 6px 12px;
|
|
1859
|
+
border-radius: var(--r-sm);
|
|
1860
|
+
background: var(--bg);
|
|
1861
|
+
box-shadow: var(--neu-out-sm);
|
|
1862
|
+
font-size: 12px;
|
|
1863
|
+
font-family: inherit;
|
|
1864
|
+
color: var(--fg);
|
|
1865
|
+
cursor: pointer;
|
|
1866
|
+
transition: box-shadow var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
|
|
1867
|
+
}
|
|
1868
|
+
.table-filter-actions .tf-btn:hover { box-shadow: var(--neu-in-sm); }
|
|
1869
|
+
.table-filter-actions .tf-btn.primary { color: var(--accent-ink); font-weight: 600; }
|
|
1870
|
+
.table-filter-actions .tf-btn.ghost { color: var(--fg-muted); box-shadow: var(--neu-flat); }
|
|
1871
|
+
.table-filter-actions .tf-btn.ghost:hover { box-shadow: var(--neu-in-sm); }
|
|
1872
|
+
/* Built-in pagination bar */
|
|
1873
|
+
.table-pagination {
|
|
1874
|
+
margin-top: 12px;
|
|
1875
|
+
}
|
|
1510
1876
|
/* Pro: card-wrap with toolbar + table + footer */
|
|
1511
1877
|
.table-card {
|
|
1512
1878
|
border-radius: var(--r-lg);
|
|
@@ -1516,6 +1882,13 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
1516
1882
|
}
|
|
1517
1883
|
.table-card .table-wrap { background: transparent; box-shadow: none; border-radius: 0; }
|
|
1518
1884
|
.table-card .table-wrap.joined { border-radius: 0; }
|
|
1885
|
+
/* When TablePro hosts the built-in pagination, seat it inside the card. */
|
|
1886
|
+
.table-card .table-pagination {
|
|
1887
|
+
margin-top: 0;
|
|
1888
|
+
padding: 6px 16px;
|
|
1889
|
+
border-top: 1px solid var(--divider);
|
|
1890
|
+
background: color-mix(in oklch, var(--bg-sunken) 30%, transparent);
|
|
1891
|
+
}
|
|
1519
1892
|
.table-toolbar {
|
|
1520
1893
|
display: flex;
|
|
1521
1894
|
align-items: center;
|
|
@@ -1581,6 +1954,37 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
1581
1954
|
}
|
|
1582
1955
|
.pagination .pg.disabled { color: var(--fg-subtle); cursor: not-allowed; box-shadow: var(--neu-flat); }
|
|
1583
1956
|
.pagination .ellipsis { padding: 0 4px; color: var(--fg-subtle); }
|
|
1957
|
+
/* size changer — compact Select inline with the page buttons */
|
|
1958
|
+
.pagination .pg-size-changer { margin-left: 8px; min-width: 108px; }
|
|
1959
|
+
/* quick jumper */
|
|
1960
|
+
.pagination .pg-jumper {
|
|
1961
|
+
display: inline-flex;
|
|
1962
|
+
align-items: center;
|
|
1963
|
+
gap: 6px;
|
|
1964
|
+
margin-left: 8px;
|
|
1965
|
+
color: var(--fg-muted);
|
|
1966
|
+
font-size: 12px;
|
|
1967
|
+
}
|
|
1968
|
+
.pagination .pg-jumper-label { color: var(--fg-muted); }
|
|
1969
|
+
.pagination .pg-jumper-input {
|
|
1970
|
+
width: 44px;
|
|
1971
|
+
height: 28px;
|
|
1972
|
+
padding: 0 8px;
|
|
1973
|
+
border: none;
|
|
1974
|
+
border-radius: var(--r-sm);
|
|
1975
|
+
background: var(--bg);
|
|
1976
|
+
box-shadow: var(--neu-in-sm);
|
|
1977
|
+
color: var(--fg);
|
|
1978
|
+
font-family: inherit;
|
|
1979
|
+
font-size: 12px;
|
|
1980
|
+
font-variant-numeric: tabular-nums;
|
|
1981
|
+
text-align: center;
|
|
1982
|
+
outline: none;
|
|
1983
|
+
transition: box-shadow var(--dur-fast) var(--ease);
|
|
1984
|
+
}
|
|
1985
|
+
.pagination .pg-jumper-input:focus-visible {
|
|
1986
|
+
box-shadow: var(--neu-in-sm), 0 0 0 2px var(--accent-glow);
|
|
1987
|
+
}
|
|
1584
1988
|
/* ============ List ============ */
|
|
1585
1989
|
.list {
|
|
1586
1990
|
display: flex;
|
|
@@ -1739,6 +2143,27 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
1739
2143
|
.skeleton.circle { border-radius: 999px; }
|
|
1740
2144
|
@keyframes skel-wave { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
|
|
1741
2145
|
@keyframes skel-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
|
|
2146
|
+
/* Composite skeleton — avatar + title + paragraph layout */
|
|
2147
|
+
.skeleton-box {
|
|
2148
|
+
display: flex;
|
|
2149
|
+
align-items: flex-start;
|
|
2150
|
+
gap: 16px;
|
|
2151
|
+
width: 100%;
|
|
2152
|
+
}
|
|
2153
|
+
.skeleton-content {
|
|
2154
|
+
flex: 1;
|
|
2155
|
+
min-width: 0;
|
|
2156
|
+
display: flex;
|
|
2157
|
+
flex-direction: column;
|
|
2158
|
+
gap: 12px;
|
|
2159
|
+
}
|
|
2160
|
+
.skeleton-box .skeleton-title {
|
|
2161
|
+
display: block;
|
|
2162
|
+
margin-bottom: 4px;
|
|
2163
|
+
}
|
|
2164
|
+
.skeleton-box .skeleton-row {
|
|
2165
|
+
display: block;
|
|
2166
|
+
}
|
|
1742
2167
|
/* ============ Calendar ============ */
|
|
1743
2168
|
.calendar {
|
|
1744
2169
|
background: var(--bg);
|