beez-ui 0.10.0 → 2.0.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/CHANGELOG.md +40 -1
- package/README.md +63 -16
- package/THIRD_PARTY_NOTICES.md +31 -0
- package/assets/fonts/ibmplexmono-LICENSE.txt +93 -93
- package/assets/fonts/{poppins-LICENSE.txt → inter-LICENSE.txt} +2 -2
- package/assets/fonts/inter-latin-variable.woff2 +0 -0
- package/dist/components/account-menu.d.ts +5 -2
- package/dist/components/account-menu.js +150 -145
- package/dist/components/alert-dialog.d.ts +4 -2
- package/dist/components/alert-dialog.js +78 -66
- package/dist/components/animated-collapse.js +106 -36
- package/dist/components/button-interaction.d.ts +23 -0
- package/dist/components/button-interaction.js +22 -0
- package/dist/components/button-label.d.ts +8 -0
- package/dist/components/button-label.js +322 -0
- package/dist/components/button.d.ts +23 -10
- package/dist/components/button.js +111 -64
- package/dist/components/calendar.d.ts +2 -2
- package/dist/components/calendar.js +4 -4
- package/dist/components/carousel.d.ts +3 -3
- package/dist/components/carousel.js +3 -3
- package/dist/components/control-button.d.ts +16 -0
- package/dist/components/control-button.js +215 -0
- package/dist/components/data-table.js +7 -7
- package/dist/components/dialog.js +3 -2
- package/dist/components/dropdown-menu.js +1 -1
- package/dist/components/file-upload.js +5 -5
- package/dist/components/filter-presets-bar.js +6 -6
- package/dist/components/filter-query-bar.js +2 -2
- package/dist/components/input-group.d.ts +2 -2
- package/dist/components/input-group.js +2 -2
- package/dist/components/pagination.d.ts +2 -2
- package/dist/components/pagination.js +2 -2
- package/dist/components/reaction-button.js +2 -2
- package/dist/components/rich-link-editor.js +7 -7
- package/dist/components/rich-text-content.js +1 -1
- package/dist/components/sheet.js +2 -2
- package/dist/components/sidebar-panel-context.d.ts +17 -0
- package/dist/components/sidebar-panel-context.js +14 -0
- package/dist/components/sidebar.d.ts +40 -3
- package/dist/components/sidebar.js +259 -103
- package/dist/components/typing-animation.js +1 -1
- package/dist/constants/button.d.ts +16 -0
- package/dist/constants/button.js +16 -0
- package/dist/hooks/use-sidebar-persistence.d.ts +1 -1
- package/dist/hooks/use-sidebar-persistence.js +2 -2
- package/dist/motion/arc-press.d.ts +6 -0
- package/dist/motion/arc-press.js +59 -0
- package/dist/motion/arc-tokens.d.ts +32 -0
- package/dist/motion/arc-tokens.js +42 -0
- package/dist/providers/beez-ui-provider.d.ts +1 -1
- package/dist/providers/beez-ui-provider.js +6 -1
- package/dist/styles.css +1 -1
- package/fonts.css +5 -5
- package/package.json +3 -2
- package/styles.css +4 -4
- package/theme.css +248 -87
- package/assets/fonts/poppins-latin-600.woff2 +0 -0
package/theme.css
CHANGED
|
@@ -1,87 +1,248 @@
|
|
|
1
|
-
/*
|
|
2
|
-
:
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
--
|
|
10
|
-
--
|
|
11
|
-
--
|
|
12
|
-
--
|
|
13
|
-
--
|
|
14
|
-
--
|
|
15
|
-
--
|
|
16
|
-
--
|
|
17
|
-
--
|
|
18
|
-
--
|
|
19
|
-
--
|
|
20
|
-
--
|
|
21
|
-
--
|
|
22
|
-
--
|
|
23
|
-
--
|
|
24
|
-
--
|
|
25
|
-
--
|
|
26
|
-
--
|
|
27
|
-
--
|
|
28
|
-
--
|
|
29
|
-
--
|
|
30
|
-
--
|
|
31
|
-
--
|
|
32
|
-
--
|
|
33
|
-
--
|
|
34
|
-
--
|
|
35
|
-
--
|
|
36
|
-
|
|
37
|
-
--
|
|
38
|
-
--
|
|
39
|
-
--
|
|
40
|
-
--
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
--
|
|
50
|
-
--
|
|
51
|
-
--
|
|
52
|
-
--
|
|
53
|
-
--
|
|
54
|
-
--
|
|
55
|
-
--
|
|
56
|
-
--
|
|
57
|
-
--
|
|
58
|
-
--
|
|
59
|
-
--
|
|
60
|
-
--
|
|
61
|
-
|
|
62
|
-
--
|
|
63
|
-
|
|
64
|
-
--
|
|
65
|
-
|
|
66
|
-
--
|
|
67
|
-
--
|
|
68
|
-
--
|
|
69
|
-
--
|
|
70
|
-
--
|
|
71
|
-
--
|
|
72
|
-
--
|
|
73
|
-
--
|
|
74
|
-
--
|
|
75
|
-
--
|
|
76
|
-
--
|
|
77
|
-
--
|
|
78
|
-
--
|
|
79
|
-
--
|
|
80
|
-
--
|
|
81
|
-
--
|
|
82
|
-
--
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
1
|
+
/*
|
|
2
|
+
* beez-ui theme: the Arc foundation (https://uiarc.dev, Copyright (c) 2026 Elia Kuratli, MIT License; see
|
|
3
|
+
* THIRD_PARTY_NOTICES.md) with the blue accent by default, followed by the shadcn/ui token names the components
|
|
4
|
+
* and consumers still read, mapped onto Arc roles.
|
|
5
|
+
* Dark mode: data-theme="dark" (Arc) or the dark class on <html>. Accent: data-accent on <html> overrides the default.
|
|
6
|
+
*/
|
|
7
|
+
:root {
|
|
8
|
+
color-scheme: light;
|
|
9
|
+
--neutral-0: oklch(100% 0 0);
|
|
10
|
+
--neutral-1: oklch(99% 0 0);
|
|
11
|
+
--neutral-2: oklch(97.8% 0 0);
|
|
12
|
+
--neutral-3: oklch(95.8% 0 0);
|
|
13
|
+
--neutral-4: oklch(91.5% 0 0);
|
|
14
|
+
--neutral-5: oklch(84% 0 0);
|
|
15
|
+
--neutral-6: oklch(72% 0 0);
|
|
16
|
+
--neutral-7: oklch(59% 0 0);
|
|
17
|
+
--neutral-8: oklch(46% 0 0);
|
|
18
|
+
--neutral-9: oklch(34% 0 0);
|
|
19
|
+
--neutral-10: oklch(23% 0 0);
|
|
20
|
+
--neutral-11: oklch(15% 0 0);
|
|
21
|
+
--background: var(--neutral-0);
|
|
22
|
+
--surface: var(--neutral-0);
|
|
23
|
+
--surface-raised: var(--neutral-0);
|
|
24
|
+
--surface-muted: var(--neutral-2);
|
|
25
|
+
--foreground: var(--neutral-11);
|
|
26
|
+
--text-secondary: var(--neutral-8);
|
|
27
|
+
--text-muted: var(--neutral-7);
|
|
28
|
+
--border: oklch(93.5% 0 0);
|
|
29
|
+
--border-subtle: oklch(96.5% 0 0);
|
|
30
|
+
--border-strong: oklch(82% 0 0);
|
|
31
|
+
--accent: oklch(33% 0 0);
|
|
32
|
+
--accent-strong: oklch(24% 0 0);
|
|
33
|
+
--accent-subtle: oklch(33% 0 0 / .1);
|
|
34
|
+
--accent-foreground: var(--background);
|
|
35
|
+
/* Selection controls (switch, checkbox, radio, slider). --control-on fills a chosen control; --control-glyph is the check or dot drawn on it;
|
|
36
|
+
thumbs stay white in both states so they always read against the track. Tuned per accent below so white thumbs hold on every hue. */
|
|
37
|
+
--control-on: oklch(23% 0 0);
|
|
38
|
+
--control-glyph: oklch(100% 0 0);
|
|
39
|
+
--control-track: oklch(89.5% 0 0);
|
|
40
|
+
--control-track-hover: oklch(86% 0 0);
|
|
41
|
+
--control-thumb: oklch(100% 0 0);
|
|
42
|
+
--control-thumb-on: oklch(100% 0 0);
|
|
43
|
+
--control-thumb-shadow: 0 0 0 .5px oklch(0% 0 0 / .07), 0 1px 2px oklch(0% 0 0 / .14), 0 2px 6px oklch(0% 0 0 / .06);
|
|
44
|
+
--control-on-subtle: color-mix(in oklab, var(--control-on) 10%, transparent);
|
|
45
|
+
/* Slider fills. Same as --control-on except neutral dark, where a mid grey keeps the white thumb distinct. */
|
|
46
|
+
--control-fill: var(--control-on);
|
|
47
|
+
/* Pointer focus draws no ring (product decision). --focus-ring is the halo a few fields drew for any input method, so it stays transparent.
|
|
48
|
+
Keyboard focus uses the outline at the end of this file; tune it with --focus-outline, --focus-outline-width and --focus-outline-offset. */
|
|
49
|
+
--focus-ring: transparent;
|
|
50
|
+
--success: oklch(49% .19 150);
|
|
51
|
+
--warning: oklch(58% .18 75);
|
|
52
|
+
--danger: oklch(54% .21 25);
|
|
53
|
+
--shadow-resting: 0 1px 2px oklch(0% 0 0 / .035);
|
|
54
|
+
--shadow-raised: 0 6px 18px oklch(0% 0 0 / .065), 0 1px 3px oklch(0% 0 0 / .035);
|
|
55
|
+
--shadow-floating: 0 20px 48px oklch(0% 0 0 / .105), 0 3px 10px oklch(0% 0 0 / .045);
|
|
56
|
+
/* Brand gradient: soft lavender to warm peach. Light enough for dark text (--arc-gradient-foreground, >12:1). */
|
|
57
|
+
--arc-gradient-from: oklch(90% .045 300);
|
|
58
|
+
--arc-gradient-to: oklch(92% .045 65);
|
|
59
|
+
--arc-gradient: linear-gradient(100deg, var(--arc-gradient-from), var(--arc-gradient-to));
|
|
60
|
+
--arc-gradient-foreground: oklch(22% .01 300);
|
|
61
|
+
/* Faint wash for backgrounds and tinted panels. */
|
|
62
|
+
--arc-gradient-soft: linear-gradient(135deg, oklch(97.5% .016 300), oklch(98% .016 65));
|
|
63
|
+
/* Hairline borders and rules. */
|
|
64
|
+
--arc-gradient-line: linear-gradient(100deg, oklch(83% .06 300), oklch(86% .06 65));
|
|
65
|
+
/* Text-safe stops for gradient text and small marks (>4.5:1 on the surface). */
|
|
66
|
+
--arc-gradient-ink: linear-gradient(100deg, oklch(47% .1 300), oklch(50% .09 55));
|
|
67
|
+
--space-1: .25rem; --space-2: .5rem; --space-3: .75rem; --space-4: 1rem;
|
|
68
|
+
--space-5: 1.25rem; --space-6: 1.5rem; --space-8: 2rem; --space-10: 2.5rem;
|
|
69
|
+
--space-12: 3rem; --space-16: 4rem; --space-20: 5rem; --space-24: 6rem;
|
|
70
|
+
--radius-control: 1.125rem; --radius-panel: 1.625rem; --radius-surface: 2.125rem; --radius-pill: 9999px;
|
|
71
|
+
--control-height-sm: 2.25rem; --control-height-md: 2.75rem; --control-height-lg: 3.125rem;
|
|
72
|
+
--font-display: var(--font-geist, "Beez Geist"), sans-serif;
|
|
73
|
+
--font-body: var(--font-inter, "Beez Inter"), sans-serif;
|
|
74
|
+
--text-xs: .75rem; --text-sm: .875rem; --text-base: 1rem; --text-lg: 1.125rem;
|
|
75
|
+
--text-xl: 1.375rem; --text-2xl: 1.75rem; --text-3xl: 2.25rem;
|
|
76
|
+
--text-4xl: 3.25rem; --text-5xl: 4.5rem;
|
|
77
|
+
--tracking-display: -.03em; --tracking-body: -.01em;
|
|
78
|
+
--leading-display: 1.1; --leading-body: 1.4;
|
|
79
|
+
--ease-enter: cubic-bezier(.16,1,.3,1);
|
|
80
|
+
--ease-standard: cubic-bezier(.22,1,.36,1);
|
|
81
|
+
--ease-exit: cubic-bezier(.7,0,.84,0);
|
|
82
|
+
--ease-in-out: cubic-bezier(.65,0,.35,1);
|
|
83
|
+
/* Spring with a gentle settle (bounce .15). Pair with --duration-spring for transform transitions. */
|
|
84
|
+
--ease-spring: linear(0, 0.0258, 0.09, 0.1763, 0.2732, 0.3724, 0.4683, 0.5573, 0.6376, 0.7082, 0.7689, 0.8202, 0.8628, 0.8976, 0.9256, 0.9476, 0.9648, 0.9778, 0.9875, 0.9945, 0.9994, 1.0026, 1.0047, 1.0058, 1.0062, 1.0062, 1.0059, 1.0055, 1.0049, 1.0043, 1.0036, 1.0031, 1.0025, 1.002, 1.0016, 1.0013, 1);
|
|
85
|
+
--duration-instant: 120ms; --duration-fast: 160ms; --duration-standard: 240ms; --duration-considered: 480ms; --duration-spring: 580ms;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
:root[data-theme="dark"],
|
|
89
|
+
|
|
90
|
+
:root.dark {
|
|
91
|
+
color-scheme: dark;
|
|
92
|
+
--background: oklch(19% 0 0);
|
|
93
|
+
--surface: oklch(21.5% 0 0);
|
|
94
|
+
--surface-raised: oklch(24% 0 0);
|
|
95
|
+
/* Keep muted surfaces and hover states distinct from the base surface in dark mode. */
|
|
96
|
+
--surface-muted: oklch(26% 0 0);
|
|
97
|
+
--foreground: oklch(96% 0 0);
|
|
98
|
+
--text-secondary: oklch(77% 0 0);
|
|
99
|
+
--text-muted: oklch(64% 0 0);
|
|
100
|
+
--border: oklch(29% 0 0);
|
|
101
|
+
--border-subtle: oklch(25% 0 0);
|
|
102
|
+
--border-strong: oklch(40% 0 0);
|
|
103
|
+
--focus-ring: transparent;
|
|
104
|
+
--accent: oklch(80% 0 0);
|
|
105
|
+
--accent-strong: oklch(91% 0 0);
|
|
106
|
+
--accent-subtle: oklch(80% 0 0 / .13);
|
|
107
|
+
/* Neutral dark inverts: a near-white track carries a dark thumb, so on and off never read alike. */
|
|
108
|
+
--control-on: oklch(93% 0 0);
|
|
109
|
+
--control-glyph: oklch(19% 0 0);
|
|
110
|
+
--control-track: oklch(33% 0 0);
|
|
111
|
+
--control-track-hover: oklch(37% 0 0);
|
|
112
|
+
--control-thumb: oklch(97% 0 0);
|
|
113
|
+
--control-thumb-on: oklch(19% 0 0);
|
|
114
|
+
--control-fill: oklch(62% 0 0);
|
|
115
|
+
--control-thumb-shadow: 0 0 0 .5px oklch(0% 0 0 / .3), 0 1px 2px oklch(0% 0 0 / .35), 0 2px 6px oklch(0% 0 0 / .2);
|
|
116
|
+
--success: oklch(78% .18 150);
|
|
117
|
+
--warning: oklch(83% .17 80);
|
|
118
|
+
--danger: oklch(76% .2 25);
|
|
119
|
+
--shadow-resting: 0 1px 2px oklch(0% 0 0 / .18);
|
|
120
|
+
--shadow-raised: 0 8px 22px oklch(0% 0 0 / .22);
|
|
121
|
+
--shadow-floating: 0 22px 55px oklch(0% 0 0 / .34);
|
|
122
|
+
--arc-gradient-from: oklch(38% .05 300);
|
|
123
|
+
--arc-gradient-to: oklch(40% .045 60);
|
|
124
|
+
--arc-gradient-foreground: oklch(96% .005 300);
|
|
125
|
+
--arc-gradient-soft: linear-gradient(135deg, oklch(23.5% .016 300), oklch(24% .014 65));
|
|
126
|
+
--arc-gradient-line: linear-gradient(100deg, oklch(48% .06 300), oklch(52% .055 65));
|
|
127
|
+
--arc-gradient-ink: linear-gradient(100deg, oklch(82% .07 300), oklch(86% .065 70));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
:root[data-accent="neutral"] { --accent: oklch(33% 0 0); --accent-strong: oklch(24% 0 0); --accent-subtle: oklch(33% 0 0 / .1); }
|
|
131
|
+
:root[data-accent="violet"] { --accent: #7747ff; --accent-strong: #5528ce; --accent-subtle: rgb(119 71 255 / .13); }
|
|
132
|
+
:root[data-accent="blue"] { --accent: #0562ef; --accent-strong: #074db7; --accent-subtle: rgb(5 98 239 / .12); }
|
|
133
|
+
:root[data-accent="green"] { --accent: #0db879; --accent-strong: #087c54; --accent-subtle: rgb(13 184 121 / .13); --accent-foreground: #102016; }
|
|
134
|
+
:root[data-accent="amber"] { --accent: #f3ad20; --accent-strong: #9c6300; --accent-subtle: rgb(243 173 32 / .16); --accent-foreground: #20190d; }
|
|
135
|
+
:root[data-accent="orange"] { --accent: #f48120; --accent-strong: #aa4700; --accent-subtle: rgb(244 129 32 / .13); --accent-foreground: #17130f; }
|
|
136
|
+
:root[data-accent="coral"] { --accent: #f15f55; --accent-strong: #b92c27; --accent-subtle: rgb(241 95 85 / .14); --accent-foreground: #21110f; }
|
|
137
|
+
:root[data-accent="rose"] { --accent: #ed4e9d; --accent-strong: #ae2570; --accent-subtle: rgb(237 78 157 / .14); --accent-foreground: #250f1b; }
|
|
138
|
+
:root[data-theme="dark"][data-accent="neutral"], :root.dark[data-accent="neutral"] { --accent: oklch(80% 0 0); --accent-strong: oklch(91% 0 0); --accent-subtle: oklch(80% 0 0 / .13); }
|
|
139
|
+
:root[data-theme="dark"][data-accent="violet"], :root.dark[data-accent="violet"] { --accent: #a78bff; --accent-strong: #c7b7ff; --accent-subtle: rgb(119 71 255 / .22); }
|
|
140
|
+
:root[data-theme="dark"][data-accent="blue"], :root.dark[data-accent="blue"] { --accent: #6ba3ff; --accent-strong: #a4c7ff; --accent-subtle: rgb(5 98 239 / .22); }
|
|
141
|
+
:root[data-theme="dark"][data-accent="green"], :root.dark[data-accent="green"] { --accent: #53dca6; --accent-strong: #93efd0; --accent-subtle: rgb(13 184 121 / .2); }
|
|
142
|
+
:root[data-theme="dark"][data-accent="amber"], :root.dark[data-accent="amber"] { --accent: #ffcb62; --accent-strong: #ffe0a1; --accent-subtle: rgb(243 173 32 / .2); }
|
|
143
|
+
:root[data-theme="dark"][data-accent="orange"], :root.dark[data-accent="orange"] { --accent: #ffad5e; --accent-strong: #ffd0a0; --accent-subtle: rgb(244 129 32 / .2); --accent-foreground: #17130f; }
|
|
144
|
+
:root[data-theme="dark"][data-accent="coral"], :root.dark[data-accent="coral"] { --accent: #ff9386; --accent-strong: #ffc1ba; --accent-subtle: rgb(241 95 85 / .2); }
|
|
145
|
+
:root[data-theme="dark"][data-accent="rose"], :root.dark[data-accent="rose"] { --accent: #ff8bc5; --accent-strong: #ffc0df; --accent-subtle: rgb(237 78 157 / .2); }
|
|
146
|
+
|
|
147
|
+
/* Selection control fills per accent. Light: the accent, deepened slightly where a white thumb needs it. Dark: a mid tone instead of the pastel
|
|
148
|
+
text accent, so white thumbs and checks keep contrast without a neon track. Amber keeps a dark glyph because white on yellow washes out. */
|
|
149
|
+
:root[data-accent="neutral"] { --control-on: oklch(23% 0 0); --control-thumb-on: oklch(100% 0 0); --control-glyph: oklch(100% 0 0); }
|
|
150
|
+
:root[data-accent="violet"] { --control-on: #7747ff; --control-thumb-on: #fff; --control-glyph: #fff; }
|
|
151
|
+
:root[data-accent="blue"] { --control-on: #0562ef; --control-thumb-on: #fff; --control-glyph: #fff; }
|
|
152
|
+
:root[data-accent="green"] { --control-on: #10a870; --control-thumb-on: #fff; --control-glyph: #fff; }
|
|
153
|
+
:root[data-accent="amber"] { --control-on: #eda11a; --control-thumb-on: #fff; --control-glyph: #2a1c03; }
|
|
154
|
+
:root[data-accent="orange"] { --control-on: #f07818; --control-thumb-on: #fff; --control-glyph: #fff; }
|
|
155
|
+
:root[data-accent="coral"] { --control-on: #ec564b; --control-thumb-on: #fff; --control-glyph: #fff; }
|
|
156
|
+
:root[data-accent="rose"] { --control-on: #e64494; --control-thumb-on: #fff; --control-glyph: #fff; }
|
|
157
|
+
:root[data-theme="dark"][data-accent="neutral"], :root.dark[data-accent="neutral"] { --control-on: oklch(93% 0 0); --control-thumb-on: oklch(19% 0 0); --control-glyph: oklch(19% 0 0); }
|
|
158
|
+
:root[data-theme="dark"][data-accent="violet"], :root.dark[data-accent="violet"] { --control-on: #8a66ff; --control-thumb-on: #fff; --control-glyph: #fff; --control-fill: #8a66ff; }
|
|
159
|
+
:root[data-theme="dark"][data-accent="blue"], :root.dark[data-accent="blue"] { --control-on: #3b82f6; --control-thumb-on: #fff; --control-glyph: #fff; --control-fill: #3b82f6; }
|
|
160
|
+
:root[data-theme="dark"][data-accent="green"], :root.dark[data-accent="green"] { --control-on: #1fae78; --control-thumb-on: #fff; --control-glyph: #fff; --control-fill: #1fae78; }
|
|
161
|
+
:root[data-theme="dark"][data-accent="amber"], :root.dark[data-accent="amber"] { --control-on: #e8a52a; --control-thumb-on: #fff; --control-glyph: #241803; --control-fill: #e8a52a; }
|
|
162
|
+
:root[data-theme="dark"][data-accent="orange"], :root.dark[data-accent="orange"] { --control-on: #ef873a; --control-thumb-on: #fff; --control-glyph: #fff; --control-fill: #ef873a; }
|
|
163
|
+
:root[data-theme="dark"][data-accent="coral"], :root.dark[data-accent="coral"] { --control-on: #ec6a60; --control-thumb-on: #fff; --control-glyph: #fff; --control-fill: #ec6a60; }
|
|
164
|
+
:root[data-theme="dark"][data-accent="rose"], :root.dark[data-accent="rose"] { --control-on: #e457a0; --control-thumb-on: #fff; --control-glyph: #fff; --control-fill: #e457a0; }
|
|
165
|
+
|
|
166
|
+
/* Chart series palette, shared by every chart. Series 1 is the accent itself; series 2 to 4 rotate its hue at lightness steps
|
|
167
|
+
around it, so they stay distinct for every accent. A neutral accent falls back to a blue. Validated with the dataviz script
|
|
168
|
+
across all eight accents in both themes: every pair (not only neighbours) clears CVD ΔE 9 and normal vision ΔE 17. Browsers
|
|
169
|
+
without relative color get the neutral set. Override --series-1 to --series-4 on any element to rebrand a chart. */
|
|
170
|
+
:root { --series-1: #1f7dcf; --series-2: #7128a5; --series-3: #e58f00; --series-4: #009e84; }
|
|
171
|
+
:root[data-theme="dark"],
|
|
172
|
+
:root.dark { --series-1: #55adff; --series-2: #9c37be; --series-3: #e66e00; --series-4: #00a861; }
|
|
173
|
+
@supports (color: oklch(from red clamp(.4, l * sign(max(c - .02, 0)) + .5, .8) c h)) {
|
|
174
|
+
:root {
|
|
175
|
+
--series-1: oklch(from var(--accent) calc(l * sign(max(c - .02, 0)) + .58 * (1 - sign(max(c - .02, 0)))) calc(c * sign(max(c - .02, 0)) + .15 * (1 - sign(max(c - .02, 0)))) calc(h * sign(max(c - .02, 0)) + 250 * (1 - sign(max(c - .02, 0)))));
|
|
176
|
+
--series-2: oklch(from var(--accent) clamp(.45, l * sign(max(c - .02, 0)) + .58 * (1 - sign(max(c - .02, 0))) - 0.25, .76) .19 calc(h * sign(max(c - .02, 0)) + 250 * (1 - sign(max(c - .02, 0))) + 57));
|
|
177
|
+
--series-3: oklch(from var(--accent) clamp(.45, l * sign(max(c - .02, 0)) + .58 * (1 - sign(max(c - .02, 0))) + 0.14, .76) .18 calc(h * sign(max(c - .02, 0)) + 250 * (1 - sign(max(c - .02, 0))) + 184));
|
|
178
|
+
--series-4: oklch(from var(--accent) clamp(.45, l * sign(max(c - .02, 0)) + .58 * (1 - sign(max(c - .02, 0))), .76) .21 calc(h * sign(max(c - .02, 0)) + 250 * (1 - sign(max(c - .02, 0))) + 292));
|
|
179
|
+
}
|
|
180
|
+
:root[data-theme="dark"],
|
|
181
|
+
:root.dark {
|
|
182
|
+
--series-1: oklch(from var(--accent) calc(l * sign(max(c - .02, 0)) + .73 * (1 - sign(max(c - .02, 0)))) calc(c * sign(max(c - .02, 0)) + .15 * (1 - sign(max(c - .02, 0)))) calc(h * sign(max(c - .02, 0)) + 250 * (1 - sign(max(c - .02, 0)))));
|
|
183
|
+
--series-2: oklch(from var(--accent) clamp(.485, l * sign(max(c - .02, 0)) + .73 * (1 - sign(max(c - .02, 0))) - 0.19, .665) .21 calc(h * sign(max(c - .02, 0)) + 250 * (1 - sign(max(c - .02, 0))) + 66));
|
|
184
|
+
--series-3: oklch(from var(--accent) clamp(.485, l * sign(max(c - .02, 0)) + .73 * (1 - sign(max(c - .02, 0))) + 0.02, .665) .21 calc(h * sign(max(c - .02, 0)) + 250 * (1 - sign(max(c - .02, 0))) + 175));
|
|
185
|
+
--series-4: oklch(from var(--accent) clamp(.485, l * sign(max(c - .02, 0)) + .73 * (1 - sign(max(c - .02, 0))) - 0.1, .665) .18 calc(h * sign(max(c - .02, 0)) + 250 * (1 - sign(max(c - .02, 0))) + 270));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/* Focus. Pointer focus never draws a ring (product decision). Keyboard focus (:focus-visible) draws a subtle accent outline, so keyboard users
|
|
190
|
+
can always see where they are (WCAG 2.4.7). Left out of the outline: text fields, which match :focus-visible on a mouse click too and show
|
|
191
|
+
focus with their border and caret; menu items and listbox options, whose highlight fill marks the keyboard position; and tabindex="-1"
|
|
192
|
+
targets (dialog panels, regions) that only receive focus from script.
|
|
193
|
+
Tune it on :root or any element, no !important needed:
|
|
194
|
+
--focus-outline color (default: the accent, softened); set transparent to hide it
|
|
195
|
+
--focus-outline-width default 2px
|
|
196
|
+
--focus-outline-offset default 2px; components inside clipped containers set a negative offset */
|
|
197
|
+
:focus:not(:focus-visible),
|
|
198
|
+
:is(input:not([type="button"], [type="checkbox"], [type="color"], [type="file"], [type="image"], [type="radio"], [type="range"], [type="reset"], [type="submit"]), textarea, [contenteditable]:not([contenteditable="false"]), [role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="option"], [tabindex="-1"]):focus { outline: none !important; }
|
|
199
|
+
:focus-visible:not(input:not([type="button"], [type="checkbox"], [type="color"], [type="file"], [type="image"], [type="radio"], [type="range"], [type="reset"], [type="submit"]), textarea, [contenteditable]:not([contenteditable="false"]), [role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="option"], [tabindex="-1"]) {
|
|
200
|
+
outline: var(--focus-outline-width, 2px) solid var(--focus-outline, color-mix(in oklab, var(--accent-strong) 72%, transparent)) !important;
|
|
201
|
+
outline-offset: var(--focus-outline-offset, 2px) !important;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* beez-ui default accent: Arc's blue, used until <html> sets data-accent. */
|
|
205
|
+
:root:not([data-accent]) { --accent: #0562ef; --accent-strong: #074db7; --accent-subtle: rgb(5 98 239 / .12); --control-on: #0562ef; --control-thumb-on: #fff; --control-glyph: #fff; }
|
|
206
|
+
:root[data-theme="dark"]:not([data-accent]), :root.dark:not([data-accent]) { --accent: #6ba3ff; --accent-strong: #a4c7ff; --accent-subtle: rgb(5 98 239 / .22); --control-on: #3b82f6; --control-thumb-on: #fff; --control-glyph: #fff; --control-fill: #3b82f6; }
|
|
207
|
+
|
|
208
|
+
/*
|
|
209
|
+
* shadcn/ui token names kept for components and consumer styles, as Arc roles. --background, --foreground, --border,
|
|
210
|
+
* --accent and --accent-foreground are Arc tokens: --accent is the brand accent, not shadcn's hover grey (the
|
|
211
|
+
* bg-accent utility maps to --surface-muted instead).
|
|
212
|
+
*/
|
|
213
|
+
:root {
|
|
214
|
+
--card: var(--surface);
|
|
215
|
+
--card-foreground: var(--foreground);
|
|
216
|
+
--popover: var(--surface-raised);
|
|
217
|
+
--popover-foreground: var(--foreground);
|
|
218
|
+
--primary: var(--accent);
|
|
219
|
+
--primary-foreground: var(--accent-foreground);
|
|
220
|
+
--secondary: var(--surface-muted);
|
|
221
|
+
--secondary-foreground: var(--foreground);
|
|
222
|
+
--muted: var(--surface-muted);
|
|
223
|
+
--muted-foreground: var(--text-secondary);
|
|
224
|
+
--destructive: var(--danger);
|
|
225
|
+
--input: var(--border-strong);
|
|
226
|
+
--ring: var(--border-strong);
|
|
227
|
+
--chart-1: var(--series-1);
|
|
228
|
+
--chart-2: var(--series-2);
|
|
229
|
+
--chart-3: var(--series-3);
|
|
230
|
+
--chart-4: var(--series-4);
|
|
231
|
+
--chart-5: var(--text-muted);
|
|
232
|
+
--free: var(--success);
|
|
233
|
+
--free-foreground: var(--success);
|
|
234
|
+
--free-strong: var(--success);
|
|
235
|
+
--coming-soon: var(--warning);
|
|
236
|
+
--coming-soon-foreground: var(--warning);
|
|
237
|
+
--radius: var(--radius-control);
|
|
238
|
+
--sidebar: var(--background);
|
|
239
|
+
--sidebar-foreground: var(--foreground);
|
|
240
|
+
--sidebar-primary: var(--accent);
|
|
241
|
+
--sidebar-primary-foreground: var(--accent-foreground);
|
|
242
|
+
--sidebar-accent: var(--surface-muted);
|
|
243
|
+
--sidebar-accent-foreground: var(--foreground);
|
|
244
|
+
--sidebar-border: var(--border);
|
|
245
|
+
--sidebar-ring: var(--border-strong);
|
|
246
|
+
/* Arc keeps page backgrounds plain; the token stays for consumers that still read it. */
|
|
247
|
+
--body-background-image: none;
|
|
248
|
+
}
|
|
Binary file
|