@datatechsolutions/ui 3.3.0 → 3.5.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/astrlabe/index.js +113 -113
- package/dist/astrlabe/index.mjs +6 -6
- package/dist/astrlabe/workflow-canvas.js +6 -6
- package/dist/astrlabe/workflow-canvas.mjs +5 -5
- package/dist/brand/index.js +0 -14
- package/dist/brand/index.js.map +1 -1
- package/dist/brand/index.mjs +0 -14
- package/dist/brand/index.mjs.map +1 -1
- package/dist/{chunk-2WXRRQM3.mjs → chunk-2MJAHST4.mjs} +554 -516
- package/dist/chunk-2MJAHST4.mjs.map +1 -0
- package/dist/{chunk-FAGDZEKM.js → chunk-2OZZH2IO.js} +2 -2
- package/dist/chunk-2OZZH2IO.js.map +1 -0
- package/dist/{chunk-SYNVNTLJ.mjs → chunk-3AY5HIQ6.mjs} +2 -2
- package/dist/chunk-3AY5HIQ6.mjs.map +1 -0
- package/dist/{chunk-O6M3KDGT.mjs → chunk-3OLYSMI5.mjs} +41 -7
- package/dist/chunk-3OLYSMI5.mjs.map +1 -0
- package/dist/{chunk-GIQXB3BG.mjs → chunk-4PFU6A2B.mjs} +3 -3
- package/dist/{chunk-GIQXB3BG.mjs.map → chunk-4PFU6A2B.mjs.map} +1 -1
- package/dist/{chunk-3ZUMJTDT.mjs → chunk-5BEVTOZV.mjs} +4 -5
- package/dist/{chunk-3JJWPOK6.js.map → chunk-5BEVTOZV.mjs.map} +1 -1
- package/dist/{chunk-3JJWPOK6.js → chunk-5I7F7KZ6.js} +10 -11
- package/dist/chunk-5I7F7KZ6.js.map +1 -0
- package/dist/{chunk-BR2GAZKG.mjs → chunk-6V3DUBOZ.mjs} +7 -7
- package/dist/{chunk-BR2GAZKG.mjs.map → chunk-6V3DUBOZ.mjs.map} +1 -1
- package/dist/{chunk-5GDKCFM5.mjs → chunk-6W7VTZG6.mjs} +3 -3
- package/dist/{chunk-5GDKCFM5.mjs.map → chunk-6W7VTZG6.mjs.map} +1 -1
- package/dist/{chunk-IJAKZHXX.js → chunk-74MHWEDC.js} +684 -645
- package/dist/chunk-74MHWEDC.js.map +1 -0
- package/dist/{chunk-IRPS5UCS.mjs → chunk-7CEZB3ZD.mjs} +3 -3
- package/dist/{chunk-IRPS5UCS.mjs.map → chunk-7CEZB3ZD.mjs.map} +1 -1
- package/dist/{chunk-UDDZTTLO.mjs → chunk-7UHV6A4C.mjs} +6 -7
- package/dist/chunk-7UHV6A4C.mjs.map +1 -0
- package/dist/{chunk-ZM5MVWIT.js → chunk-A7FI4K7Z.js} +5 -6
- package/dist/chunk-A7FI4K7Z.js.map +1 -0
- package/dist/{chunk-MWPTSBAI.js → chunk-AVM53A3Y.js} +63 -29
- package/dist/chunk-AVM53A3Y.js.map +1 -0
- package/dist/{chunk-I2NZGVBG.js → chunk-AWDH6WNA.js} +1214 -5396
- package/dist/chunk-AWDH6WNA.js.map +1 -0
- package/dist/{chunk-ZJPNP2YW.mjs → chunk-BUDZNAKL.mjs} +2 -2
- package/dist/chunk-BUDZNAKL.mjs.map +1 -0
- package/dist/{chunk-OCELRSLO.js → chunk-BVXATTTA.js} +4 -4
- package/dist/{chunk-OCELRSLO.js.map → chunk-BVXATTTA.js.map} +1 -1
- package/dist/{chunk-W5OEBO6E.js → chunk-C4NRF2G2.js} +13 -14
- package/dist/chunk-C4NRF2G2.js.map +1 -0
- package/dist/{chunk-JSNRCYSO.js → chunk-CY2MBKVG.js} +4 -4
- package/dist/{chunk-JSNRCYSO.js.map → chunk-CY2MBKVG.js.map} +1 -1
- package/dist/{chunk-ZL6C2ZAF.js → chunk-FK3WDELF.js} +67 -67
- package/dist/{chunk-ZL6C2ZAF.js.map → chunk-FK3WDELF.js.map} +1 -1
- package/dist/{chunk-MVBIAXVN.mjs → chunk-IOEQ2GET.mjs} +14 -11
- package/dist/chunk-IOEQ2GET.mjs.map +1 -0
- package/dist/{chunk-AOUUZ52N.js → chunk-NCDBNGIB.js} +85 -86
- package/dist/chunk-NCDBNGIB.js.map +1 -0
- package/dist/{chunk-B67DP7MI.mjs → chunk-NJ5RVWLA.mjs} +4 -4
- package/dist/{chunk-B67DP7MI.mjs.map → chunk-NJ5RVWLA.mjs.map} +1 -1
- package/dist/{chunk-HDCUWUNH.js → chunk-NKXQYFS7.js} +28 -27
- package/dist/chunk-NKXQYFS7.js.map +1 -0
- package/dist/{chunk-JN6IL6OH.mjs → chunk-NOHHZ6FM.mjs} +1171 -5316
- package/dist/chunk-NOHHZ6FM.mjs.map +1 -0
- package/dist/{chunk-PCYL4MII.mjs → chunk-OASC7NYV.mjs} +156 -314
- package/dist/chunk-OASC7NYV.mjs.map +1 -0
- package/dist/{chunk-RXZNACMI.js → chunk-P43PX75J.js} +33 -33
- package/dist/{chunk-RXZNACMI.js.map → chunk-P43PX75J.js.map} +1 -1
- package/dist/{chunk-OL73LBX5.mjs → chunk-QLFSJ6HK.mjs} +3 -4
- package/dist/chunk-QLFSJ6HK.mjs.map +1 -0
- package/dist/{chunk-LEKZUS6N.mjs → chunk-QPSHM2JQ.mjs} +4 -5
- package/dist/chunk-QPSHM2JQ.mjs.map +1 -0
- package/dist/{chunk-NJFRJ6YD.js → chunk-QSMPKL27.js} +225 -384
- package/dist/chunk-QSMPKL27.js.map +1 -0
- package/dist/{chunk-ZV5EZXXO.mjs → chunk-RHRJXK5R.mjs} +3 -3
- package/dist/{chunk-ZV5EZXXO.mjs.map → chunk-RHRJXK5R.mjs.map} +1 -1
- package/dist/{chunk-F54Q2YJY.js → chunk-SY4MUT5V.js} +7 -7
- package/dist/{chunk-F54Q2YJY.js.map → chunk-SY4MUT5V.js.map} +1 -1
- package/dist/{chunk-5RM6NGZ6.mjs → chunk-UHMAKUON.mjs} +3 -3
- package/dist/{chunk-5RM6NGZ6.mjs.map → chunk-UHMAKUON.mjs.map} +1 -1
- package/dist/{chunk-TIJJHW2Z.js → chunk-V5VBYOF5.js} +36 -36
- package/dist/{chunk-TIJJHW2Z.js.map → chunk-V5VBYOF5.js.map} +1 -1
- package/dist/{chunk-KR2X2WHJ.js → chunk-VMGNQFRO.js} +53 -53
- package/dist/{chunk-KR2X2WHJ.js.map → chunk-VMGNQFRO.js.map} +1 -1
- package/dist/{chunk-HZ4LOVHM.js → chunk-VY52Y5GC.js} +2 -2
- package/dist/chunk-VY52Y5GC.js.map +1 -0
- package/dist/{chunk-TVMLV675.js → chunk-Z7VY5M4T.js} +98 -95
- package/dist/chunk-Z7VY5M4T.js.map +1 -0
- package/dist/{chunk-R4TQWXNG.mjs → chunk-ZM2Q2SMC.mjs} +6 -5
- package/dist/chunk-ZM2Q2SMC.mjs.map +1 -0
- package/dist/index.js +744 -904
- package/dist/index.mjs +4 -4
- package/dist/platform/admin/index.js +13 -13
- package/dist/platform/admin/index.mjs +7 -7
- package/dist/platform/agents-workspace.js +9 -9
- package/dist/platform/agents-workspace.mjs +8 -8
- package/dist/platform/app-shell.js +6 -6
- package/dist/platform/app-shell.mjs +5 -5
- package/dist/platform/auth/index.js +30 -30
- package/dist/platform/auth/index.mjs +7 -7
- package/dist/platform/billing/index.js +6 -6
- package/dist/platform/billing/index.mjs +5 -5
- package/dist/platform/impersonation/index.js +6 -6
- package/dist/platform/impersonation/index.mjs +5 -5
- package/dist/platform/index.js +102 -4812
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/index.mjs +24 -4729
- package/dist/platform/index.mjs.map +1 -1
- package/dist/platform/pages/index.js +320 -204
- package/dist/platform/pages/index.js.map +1 -1
- package/dist/platform/pages/index.mjs +146 -30
- package/dist/platform/pages/index.mjs.map +1 -1
- package/dist/platform/rbac.js +2 -2
- package/dist/platform/rbac.mjs +1 -1
- package/dist/platform/settings/index.js +10 -10
- package/dist/platform/settings/index.mjs +9 -9
- package/dist/platform/utils/index.js +3 -3
- package/dist/platform/utils/index.js.map +1 -1
- package/dist/platform/utils/index.mjs +1 -1
- package/dist/platform/utils/index.mjs.map +1 -1
- package/dist/platform/workflow-api-client.js +62 -62
- package/dist/platform/workflow-api-client.mjs +2 -2
- package/dist/platform/workflow-canvas-shell.js +7 -7
- package/dist/platform/workflow-canvas-shell.mjs +6 -6
- package/package.json +15 -5
- package/src/styles/liquid-glass.css +283 -2
- package/dist/astrlabe/contracts.d.mts +0 -517
- package/dist/astrlabe/contracts.d.ts +0 -517
- package/dist/astrlabe/graph-node.d.mts +0 -28
- package/dist/astrlabe/graph-node.d.ts +0 -28
- package/dist/astrlabe/index.d.mts +0 -751
- package/dist/astrlabe/index.d.ts +0 -751
- package/dist/astrlabe/utils.d.mts +0 -60
- package/dist/astrlabe/utils.d.ts +0 -60
- package/dist/astrlabe/workflow-canvas.d.mts +0 -69
- package/dist/astrlabe/workflow-canvas.d.ts +0 -69
- package/dist/astrlabe/workflow-preview-canvas.d.mts +0 -10
- package/dist/astrlabe/workflow-preview-canvas.d.ts +0 -10
- package/dist/billing-panel-DsHhhJqG.d.mts +0 -18
- package/dist/billing-panel-DsHhhJqG.d.ts +0 -18
- package/dist/brand/index.d.mts +0 -85
- package/dist/brand/index.d.ts +0 -85
- package/dist/chunk-2WXRRQM3.mjs.map +0 -1
- package/dist/chunk-3ZUMJTDT.mjs.map +0 -1
- package/dist/chunk-AOUUZ52N.js.map +0 -1
- package/dist/chunk-FAGDZEKM.js.map +0 -1
- package/dist/chunk-HDCUWUNH.js.map +0 -1
- package/dist/chunk-HZ4LOVHM.js.map +0 -1
- package/dist/chunk-I2NZGVBG.js.map +0 -1
- package/dist/chunk-IJAKZHXX.js.map +0 -1
- package/dist/chunk-JN6IL6OH.mjs.map +0 -1
- package/dist/chunk-LEKZUS6N.mjs.map +0 -1
- package/dist/chunk-MVBIAXVN.mjs.map +0 -1
- package/dist/chunk-MWPTSBAI.js.map +0 -1
- package/dist/chunk-NJFRJ6YD.js.map +0 -1
- package/dist/chunk-O6M3KDGT.mjs.map +0 -1
- package/dist/chunk-OL73LBX5.mjs.map +0 -1
- package/dist/chunk-PCYL4MII.mjs.map +0 -1
- package/dist/chunk-R4TQWXNG.mjs.map +0 -1
- package/dist/chunk-SYNVNTLJ.mjs.map +0 -1
- package/dist/chunk-TVMLV675.js.map +0 -1
- package/dist/chunk-UDDZTTLO.mjs.map +0 -1
- package/dist/chunk-W5OEBO6E.js.map +0 -1
- package/dist/chunk-ZJPNP2YW.mjs.map +0 -1
- package/dist/chunk-ZM5MVWIT.js.map +0 -1
- package/dist/dynamic-island-confirm-BKsZkAEP.d.mts +0 -17
- package/dist/dynamic-island-confirm-BKsZkAEP.d.ts +0 -17
- package/dist/index-CoB18TbG.d.ts +0 -215
- package/dist/index-VI9gyJXl.d.mts +0 -215
- package/dist/index.d.mts +0 -5412
- package/dist/index.d.ts +0 -5412
- package/dist/layout-engine-YZcVr20M.d.mts +0 -19
- package/dist/layout-engine-YZcVr20M.d.ts +0 -19
- package/dist/lib/i18n-context.d.mts +0 -36
- package/dist/lib/i18n-context.d.ts +0 -36
- package/dist/lib/router-context.d.mts +0 -35
- package/dist/lib/router-context.d.ts +0 -35
- package/dist/navigation-BiWVffAN.d.mts +0 -49
- package/dist/navigation-BiWVffAN.d.ts +0 -49
- package/dist/platform/admin/index.d.mts +0 -17
- package/dist/platform/admin/index.d.ts +0 -17
- package/dist/platform/agents-workspace.d.mts +0 -19
- package/dist/platform/agents-workspace.d.ts +0 -19
- package/dist/platform/app-shell.d.mts +0 -58
- package/dist/platform/app-shell.d.ts +0 -58
- package/dist/platform/auth/index.d.mts +0 -73
- package/dist/platform/auth/index.d.ts +0 -73
- package/dist/platform/billing/index.d.mts +0 -29
- package/dist/platform/billing/index.d.ts +0 -29
- package/dist/platform/impersonation/index.d.mts +0 -19
- package/dist/platform/impersonation/index.d.ts +0 -19
- package/dist/platform/index.d.mts +0 -224
- package/dist/platform/index.d.ts +0 -224
- package/dist/platform/pages/index.d.mts +0 -432
- package/dist/platform/pages/index.d.ts +0 -432
- package/dist/platform/rbac.d.mts +0 -41
- package/dist/platform/rbac.d.ts +0 -41
- package/dist/platform/settings/index.d.mts +0 -31
- package/dist/platform/settings/index.d.ts +0 -31
- package/dist/platform/telemetry/index.d.mts +0 -51
- package/dist/platform/telemetry/index.d.ts +0 -51
- package/dist/platform/utils/index.d.mts +0 -32
- package/dist/platform/utils/index.d.ts +0 -32
- package/dist/platform/windsock-admin-client.d.mts +0 -57
- package/dist/platform/windsock-admin-client.d.ts +0 -57
- package/dist/platform/workflow-api-client.d.mts +0 -6
- package/dist/platform/workflow-api-client.d.ts +0 -6
- package/dist/platform/workflow-canvas-shell.d.mts +0 -18
- package/dist/platform/workflow-canvas-shell.d.ts +0 -18
- package/dist/rule-form-BYJzyork.d.mts +0 -128
- package/dist/rule-form-BYJzyork.d.ts +0 -128
- package/dist/workflow-api-client-BKD8OfP_.d.ts +0 -468
- package/dist/workflow-api-client-DoYj7nHz.d.mts +0 -468
- package/dist/workflow-store-o17I6L6A.d.ts +0 -79
- package/dist/workflow-store-ppVHdMZi.d.mts +0 -79
- package/src/brand/logos/kori-icon.svg +0 -45
- package/src/brand/logos/kori-logo-dark.svg +0 -40
- package/src/brand/logos/kori-logo.svg +0 -43
|
@@ -3,6 +3,110 @@
|
|
|
3
3
|
Translucent surfaces with backdrop-blur and inner highlights.
|
|
4
4
|
───────────────────────────────────────────────────── */
|
|
5
5
|
|
|
6
|
+
/* ── Design tokens ─────────────────────────────────────
|
|
7
|
+
Versioned tokens — radius, elevation, motion.
|
|
8
|
+
These are the only knobs that should appear in component
|
|
9
|
+
styles. If you find yourself reaching for a hard-coded
|
|
10
|
+
shadow / radius / duration, promote it here first.
|
|
11
|
+
See DESIGN_SYSTEM.md → "Tokens" for usage guidance.
|
|
12
|
+
───────────────────────────────────────────────────── */
|
|
13
|
+
|
|
14
|
+
:root {
|
|
15
|
+
/* Radius scale — applied via `rounded-[var(--radius-md)]` or via
|
|
16
|
+
the `.r-{step}` utilities below. */
|
|
17
|
+
--radius-sm: 0.5rem; /* 8px — chips, tight controls */
|
|
18
|
+
--radius-md: 0.75rem; /* 12px — inputs, small cards */
|
|
19
|
+
--radius-lg: 1rem; /* 16px — buttons, list items */
|
|
20
|
+
--radius-xl: 1.25rem; /* 20px — cards, panels */
|
|
21
|
+
--radius-2xl: 1.5rem; /* 24px — modals, hero surfaces */
|
|
22
|
+
--radius-pill: 9999px; /* full round */
|
|
23
|
+
|
|
24
|
+
/* Elevation scale — semantic box-shadow tokens. The names map to
|
|
25
|
+
the surface's *role*, not a numeric depth, so consumers don't
|
|
26
|
+
have to remember whether a modal is z-3 or z-4. */
|
|
27
|
+
--elevation-flat:
|
|
28
|
+
0 1px 2px 0 rgba(15, 23, 42, 0.04);
|
|
29
|
+
--elevation-raised:
|
|
30
|
+
0 4px 12px -2px rgba(15, 23, 42, 0.08),
|
|
31
|
+
0 2px 4px -2px rgba(15, 23, 42, 0.04);
|
|
32
|
+
--elevation-floating:
|
|
33
|
+
0 12px 24px -8px rgba(15, 23, 42, 0.12),
|
|
34
|
+
0 4px 8px -4px rgba(15, 23, 42, 0.06);
|
|
35
|
+
--elevation-modal:
|
|
36
|
+
0 40px 100px -30px rgba(0, 0, 0, 0.45),
|
|
37
|
+
0 16px 40px -12px rgba(0, 0, 0, 0.18);
|
|
38
|
+
--elevation-orbital:
|
|
39
|
+
0 60px 160px -40px rgba(99, 102, 241, 0.35),
|
|
40
|
+
0 20px 60px -20px rgba(168, 85, 247, 0.22);
|
|
41
|
+
|
|
42
|
+
/* Motion: duration scale (matches Tailwind `duration-*` arbitrary
|
|
43
|
+
values). Animations: any consumer should pick a duration token
|
|
44
|
+
instead of inventing a number.
|
|
45
|
+
|
|
46
|
+
- xs (90ms) — micro feedback (toggle thumb, hover tint)
|
|
47
|
+
- sm (150ms) — button press, popover open
|
|
48
|
+
- md (240ms) — card hover, drawer slide
|
|
49
|
+
- lg (360ms) — page transitions, modal enter */
|
|
50
|
+
--duration-xs: 90ms;
|
|
51
|
+
--duration-sm: 150ms;
|
|
52
|
+
--duration-md: 240ms;
|
|
53
|
+
--duration-lg: 360ms;
|
|
54
|
+
|
|
55
|
+
/* Motion: easing curves. `standard` is the default product curve;
|
|
56
|
+
`emphasized` is for entering elements; `decelerate` for arrivals;
|
|
57
|
+
`accelerate` for departures. */
|
|
58
|
+
--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
|
|
59
|
+
--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
|
|
60
|
+
--ease-decelerate: cubic-bezier(0, 0, 0.2, 1);
|
|
61
|
+
--ease-accelerate: cubic-bezier(0.4, 0, 1, 1);
|
|
62
|
+
--ease-ios: cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* Dark mode keeps the same radius/duration tokens; only elevation
|
|
66
|
+
bumps darker so glass surfaces still feel lifted on dark grounds. */
|
|
67
|
+
:is(.dark) {
|
|
68
|
+
--elevation-flat:
|
|
69
|
+
0 1px 2px 0 rgba(0, 0, 0, 0.4);
|
|
70
|
+
--elevation-raised:
|
|
71
|
+
0 4px 12px -2px rgba(0, 0, 0, 0.5),
|
|
72
|
+
0 2px 4px -2px rgba(0, 0, 0, 0.3);
|
|
73
|
+
--elevation-floating:
|
|
74
|
+
0 12px 24px -8px rgba(0, 0, 0, 0.6),
|
|
75
|
+
0 4px 8px -4px rgba(0, 0, 0, 0.4);
|
|
76
|
+
--elevation-modal:
|
|
77
|
+
0 40px 100px -30px rgba(0, 0, 0, 0.7),
|
|
78
|
+
0 16px 40px -12px rgba(0, 0, 0, 0.5);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* Honor `prefers-reduced-motion` at the token layer — any consumer
|
|
82
|
+
reading `var(--duration-md)` automatically gets 0ms when the user
|
|
83
|
+
opts out. WCAG 2.3.3. */
|
|
84
|
+
@media (prefers-reduced-motion: reduce) {
|
|
85
|
+
:root {
|
|
86
|
+
--duration-xs: 0ms;
|
|
87
|
+
--duration-sm: 0ms;
|
|
88
|
+
--duration-md: 0ms;
|
|
89
|
+
--duration-lg: 0ms;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* ── Token utility classes ─────────────────────────────
|
|
94
|
+
Tiny wrappers so consumers can write `.r-md` instead of
|
|
95
|
+
`[border-radius:var(--radius-md)]`. */
|
|
96
|
+
|
|
97
|
+
.r-sm { border-radius: var(--radius-sm); }
|
|
98
|
+
.r-md { border-radius: var(--radius-md); }
|
|
99
|
+
.r-lg { border-radius: var(--radius-lg); }
|
|
100
|
+
.r-xl { border-radius: var(--radius-xl); }
|
|
101
|
+
.r-2xl { border-radius: var(--radius-2xl); }
|
|
102
|
+
.r-pill { border-radius: var(--radius-pill); }
|
|
103
|
+
|
|
104
|
+
.elevation-flat { box-shadow: var(--elevation-flat); }
|
|
105
|
+
.elevation-raised { box-shadow: var(--elevation-raised); }
|
|
106
|
+
.elevation-floating { box-shadow: var(--elevation-floating); }
|
|
107
|
+
.elevation-modal { box-shadow: var(--elevation-modal); }
|
|
108
|
+
.elevation-orbital { box-shadow: var(--elevation-orbital); }
|
|
109
|
+
|
|
6
110
|
/* ── Surfaces ──────────────────────────────────────── */
|
|
7
111
|
|
|
8
112
|
.liquid-surface {
|
|
@@ -354,6 +458,169 @@
|
|
|
354
458
|
color: white;
|
|
355
459
|
}
|
|
356
460
|
|
|
461
|
+
/* ── Button — gradient (primary CTA, indigo→purple) ─
|
|
462
|
+
Same crystal-illuminated mechanic as the ios-glass-* variants:
|
|
463
|
+
neutral glass at rest, fills with translucent indigo→purple
|
|
464
|
+
gradient on hover + inner highlight + tinted drop shadow. The
|
|
465
|
+
gradient is ONLY visible on hover — at rest the button looks
|
|
466
|
+
identical to ios-glass-blue's neutral state. */
|
|
467
|
+
|
|
468
|
+
.liquid-button-gradient {
|
|
469
|
+
/* Rest: same neutral glass as .liquid-button (so all CTAs read as
|
|
470
|
+
the same family at rest — gradient is the hover signal). */
|
|
471
|
+
background: rgb(255 255 255 / 0.35);
|
|
472
|
+
border: 1px solid rgb(255 255 255 / 0.5);
|
|
473
|
+
color: rgb(15 23 42); /* slate-900 — visible on glass at rest */
|
|
474
|
+
box-shadow:
|
|
475
|
+
0 8px 32px -8px rgb(0 0 0 / 0.12),
|
|
476
|
+
inset 0 1px 2px 0 rgb(255 255 255 / 0.25);
|
|
477
|
+
backdrop-filter: blur(12px);
|
|
478
|
+
-webkit-backdrop-filter: blur(12px);
|
|
479
|
+
transition: background 0.3s ease, box-shadow 0.3s ease, color 0.3s ease, border-color 0.3s ease;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
.liquid-button-gradient:hover {
|
|
483
|
+
/* Hover: gradient fills + inner highlight + violet/indigo glow */
|
|
484
|
+
background: linear-gradient(
|
|
485
|
+
135deg,
|
|
486
|
+
rgba(99, 102, 241, 0.85) 0%, /* indigo-500 */
|
|
487
|
+
rgba(139, 92, 246, 0.85) 50%, /* violet-500 */
|
|
488
|
+
rgba(168, 85, 247, 0.85) 100% /* purple-500 */
|
|
489
|
+
);
|
|
490
|
+
border-color: rgba(255, 255, 255, 0.45);
|
|
491
|
+
color: #ffffff;
|
|
492
|
+
box-shadow:
|
|
493
|
+
inset 0 1px 2px rgba(255, 255, 255, 0.6),
|
|
494
|
+
inset 0 -1px 1px rgba(0, 0, 0, 0.12),
|
|
495
|
+
0 12px 32px -8px rgba(99, 102, 241, 0.55),
|
|
496
|
+
0 0 24px -4px rgba(168, 85, 247, 0.35);
|
|
497
|
+
backdrop-filter: blur(12px) saturate(1.6);
|
|
498
|
+
-webkit-backdrop-filter: blur(12px) saturate(1.6);
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
.dark .liquid-button-gradient {
|
|
502
|
+
background: linear-gradient(
|
|
503
|
+
140deg,
|
|
504
|
+
rgba(30, 41, 59, 0.5) 0%,
|
|
505
|
+
rgba(15, 23, 42, 0.4) 45%,
|
|
506
|
+
rgba(15, 23, 42, 0.3) 100%
|
|
507
|
+
);
|
|
508
|
+
border-color: rgba(255, 255, 255, 0.18);
|
|
509
|
+
color: #ffffff;
|
|
510
|
+
box-shadow:
|
|
511
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.18),
|
|
512
|
+
0 10px 22px -16px rgba(0, 0, 0, 0.75);
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
/* ── Avatar — crystal disc ───────────────────────────
|
|
516
|
+
Reusable shell that turns any avatar (image OR initials) into a
|
|
517
|
+
translucent crystal puck. Same family as .liquid-button-gradient
|
|
518
|
+
at rest — inner highlight on the top edge, tinted drop shadow,
|
|
519
|
+
saturate boost. Interactive avatars (AvatarButton) get a brighter
|
|
520
|
+
hover illuminate, matching the crystal-iluminado pattern. */
|
|
521
|
+
|
|
522
|
+
.liquid-avatar {
|
|
523
|
+
position: relative;
|
|
524
|
+
overflow: hidden;
|
|
525
|
+
/* Slightly saturated so initials/photo colors look vivid through
|
|
526
|
+
the glass, not muted. */
|
|
527
|
+
filter: saturate(1.1);
|
|
528
|
+
/* OUTER shadow only — the inner highlight lives in `::after` so it
|
|
529
|
+
renders ABOVE the image content (an inset shadow would be hidden
|
|
530
|
+
by an opaque <img>). */
|
|
531
|
+
box-shadow:
|
|
532
|
+
0 4px 14px -3px rgba(15, 23, 42, 0.22),
|
|
533
|
+
0 1px 3px rgba(15, 23, 42, 0.08);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
/* Specular highlight — soft white sheen across the top-left AND a
|
|
537
|
+
crisp 1px inner-edge highlight, both rendered on top of the
|
|
538
|
+
avatar content (image or initials) so the crystal effect survives
|
|
539
|
+
even when a photo fills the disc. */
|
|
540
|
+
.liquid-avatar::after {
|
|
541
|
+
content: '';
|
|
542
|
+
position: absolute;
|
|
543
|
+
inset: 0;
|
|
544
|
+
border-radius: inherit;
|
|
545
|
+
pointer-events: none;
|
|
546
|
+
z-index: 1;
|
|
547
|
+
background: radial-gradient(
|
|
548
|
+
120% 80% at 30% 0%,
|
|
549
|
+
rgba(255, 255, 255, 0.45) 0%,
|
|
550
|
+
rgba(255, 255, 255, 0.12) 30%,
|
|
551
|
+
transparent 60%
|
|
552
|
+
);
|
|
553
|
+
/* Inner edge highlight — drawn via inset box-shadow on the pseudo
|
|
554
|
+
element so it sits over the image content. */
|
|
555
|
+
box-shadow:
|
|
556
|
+
inset 0 1.5px 2px rgba(255, 255, 255, 0.7),
|
|
557
|
+
inset 0 -1px 1.5px rgba(0, 0, 0, 0.08);
|
|
558
|
+
mix-blend-mode: screen;
|
|
559
|
+
transition: opacity 0.25s ease, box-shadow 0.25s ease;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
.dark .liquid-avatar {
|
|
563
|
+
box-shadow:
|
|
564
|
+
0 6px 18px -4px rgba(0, 0, 0, 0.55),
|
|
565
|
+
0 1px 3px rgba(0, 0, 0, 0.3);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
.dark .liquid-avatar::after {
|
|
569
|
+
background: radial-gradient(
|
|
570
|
+
120% 80% at 30% 0%,
|
|
571
|
+
rgba(255, 255, 255, 0.25) 0%,
|
|
572
|
+
rgba(255, 255, 255, 0.06) 30%,
|
|
573
|
+
transparent 60%
|
|
574
|
+
);
|
|
575
|
+
box-shadow:
|
|
576
|
+
inset 0 1.5px 2px rgba(255, 255, 255, 0.28),
|
|
577
|
+
inset 0 -1px 1.5px rgba(0, 0, 0, 0.4);
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
/* Interactive variant — hover illuminates the sheen + adds a soft
|
|
581
|
+
indigo glow, same crystal-iluminado mechanic as the buttons. */
|
|
582
|
+
.liquid-avatar-interactive {
|
|
583
|
+
transition: transform 0.2s ease, box-shadow 0.3s ease;
|
|
584
|
+
cursor: pointer;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
.liquid-avatar-interactive:hover {
|
|
588
|
+
transform: translateY(-1px);
|
|
589
|
+
/* `--avatar-glow` defaults to indigo; tone-styled avatars override
|
|
590
|
+
it inline so each avatar's hover glow matches its own tint. */
|
|
591
|
+
box-shadow:
|
|
592
|
+
inset 0 2px 3px rgba(255, 255, 255, 0.7),
|
|
593
|
+
inset 0 -1px 1.5px rgba(0, 0, 0, 0.06),
|
|
594
|
+
0 8px 22px -4px var(--avatar-glow, rgba(99, 102, 241, 0.35)),
|
|
595
|
+
0 2px 6px rgba(15, 23, 42, 0.12);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
.liquid-avatar-interactive:hover::after {
|
|
599
|
+
opacity: 1.4;
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
.dark .liquid-avatar-interactive:hover {
|
|
603
|
+
box-shadow:
|
|
604
|
+
inset 0 2px 3px rgba(255, 255, 255, 0.32),
|
|
605
|
+
inset 0 -1px 1.5px rgba(0, 0, 0, 0.4),
|
|
606
|
+
0 10px 26px -6px rgba(129, 132, 251, 0.45),
|
|
607
|
+
0 2px 6px rgba(0, 0, 0, 0.4);
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
.dark .liquid-button-gradient:hover {
|
|
611
|
+
background: linear-gradient(
|
|
612
|
+
135deg,
|
|
613
|
+
rgba(129, 132, 251, 0.85) 0%,
|
|
614
|
+
rgba(167, 132, 246, 0.85) 50%,
|
|
615
|
+
rgba(196, 125, 247, 0.85) 100%
|
|
616
|
+
);
|
|
617
|
+
border-color: rgba(255, 255, 255, 0.35);
|
|
618
|
+
box-shadow:
|
|
619
|
+
inset 0 1px 2px rgba(255, 255, 255, 0.35),
|
|
620
|
+
0 14px 36px -10px rgba(129, 132, 251, 0.65),
|
|
621
|
+
0 0 28px -4px rgba(196, 125, 247, 0.45);
|
|
622
|
+
}
|
|
623
|
+
|
|
357
624
|
/* ── Filter pills — colored glassmorphism ──────────── */
|
|
358
625
|
|
|
359
626
|
.liquid-pill {
|
|
@@ -519,10 +786,24 @@
|
|
|
519
786
|
.liquid-pill:hover .liquid-pill-dismiss { opacity: 0.8; }
|
|
520
787
|
|
|
521
788
|
/* ── Focus ring utilities ────────────────────────────
|
|
522
|
-
|
|
523
|
-
|
|
789
|
+
Canonical focus indicator for the design system.
|
|
790
|
+
|
|
791
|
+
Use `.focus-ring` on any interactive element — it ships the
|
|
792
|
+
indigo 2px outline at /70 opacity with a 1px offset, matching
|
|
793
|
+
the WCAG 1.4.11 (≥ 3:1 non-text contrast) + 2.4.7 (visible
|
|
794
|
+
focus) floor documented in DESIGN_SYSTEM.md.
|
|
795
|
+
|
|
796
|
+
The legacy `.focus-ring-{color}` classes remain for cases where
|
|
797
|
+
a component owns its own accent color (e.g. emerald confirm
|
|
798
|
+
buttons), but new code should default to `.focus-ring`.
|
|
524
799
|
───────────────────────────────────────────────────── */
|
|
525
800
|
|
|
801
|
+
.focus-ring:focus { outline: none; }
|
|
802
|
+
.focus-ring:focus-visible {
|
|
803
|
+
outline: 2px solid color-mix(in oklab, var(--color-indigo-500) 70%, transparent);
|
|
804
|
+
outline-offset: 1px;
|
|
805
|
+
}
|
|
806
|
+
|
|
526
807
|
.focus-ring-blue:focus { outline: none; }
|
|
527
808
|
.focus-ring-blue:focus-visible {
|
|
528
809
|
outline: 2px solid var(--color-blue-500);
|