codexly-ui 0.1.21 → 0.1.22

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.
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,3 +1,84 @@
1
- /* Fonts are loaded dynamically by ClxThemeService via <link> injection.
2
- Roboto is the default — preloaded here so the app renders before JS executes. */
3
- @import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap');
1
+ /* ── Roboto 300 Light ──────────────────────────────────────────────────────── */
2
+ @font-face {
3
+ font-family: 'Roboto';
4
+ font-style: normal;
5
+ font-weight: 300;
6
+ font-display: swap;
7
+ src: url('../fonts/roboto-light.ttf') format('truetype');
8
+ }
9
+
10
+ @font-face {
11
+ font-family: 'Roboto';
12
+ font-style: italic;
13
+ font-weight: 300;
14
+ font-display: swap;
15
+ src: url('../fonts/roboto-light-italic.ttf') format('truetype');
16
+ }
17
+
18
+ /* ── Roboto 400 Regular ────────────────────────────────────────────────────── */
19
+ @font-face {
20
+ font-family: 'Roboto';
21
+ font-style: normal;
22
+ font-weight: 400;
23
+ font-display: swap;
24
+ src: url('../fonts/roboto-regular.ttf') format('truetype');
25
+ }
26
+
27
+ @font-face {
28
+ font-family: 'Roboto';
29
+ font-style: italic;
30
+ font-weight: 400;
31
+ font-display: swap;
32
+ src: url('../fonts/roboto-italic.ttf') format('truetype');
33
+ }
34
+
35
+ /* ── Roboto 500 Medium ─────────────────────────────────────────────────────── */
36
+ @font-face {
37
+ font-family: 'Roboto';
38
+ font-style: normal;
39
+ font-weight: 500;
40
+ font-display: swap;
41
+ src: url('../fonts/roboto-medium.ttf') format('truetype');
42
+ }
43
+
44
+ @font-face {
45
+ font-family: 'Roboto';
46
+ font-style: italic;
47
+ font-weight: 500;
48
+ font-display: swap;
49
+ src: url('../fonts/roboto-medium-italic.ttf') format('truetype');
50
+ }
51
+
52
+ /* ── Roboto 600 SemiBold ───────────────────────────────────────────────────── */
53
+ @font-face {
54
+ font-family: 'Roboto';
55
+ font-style: normal;
56
+ font-weight: 600;
57
+ font-display: swap;
58
+ src: url('../fonts/roboto-semibold.ttf') format('truetype');
59
+ }
60
+
61
+ @font-face {
62
+ font-family: 'Roboto';
63
+ font-style: italic;
64
+ font-weight: 600;
65
+ font-display: swap;
66
+ src: url('../fonts/roboto-semibold-italic.ttf') format('truetype');
67
+ }
68
+
69
+ /* ── Roboto 700 Bold ───────────────────────────────────────────────────────── */
70
+ @font-face {
71
+ font-family: 'Roboto';
72
+ font-style: normal;
73
+ font-weight: 700;
74
+ font-display: swap;
75
+ src: url('../fonts/roboto-bold.ttf') format('truetype');
76
+ }
77
+
78
+ @font-face {
79
+ font-family: 'Roboto';
80
+ font-style: italic;
81
+ font-weight: 700;
82
+ font-display: swap;
83
+ src: url('../fonts/roboto-bold-italic.ttf') format('truetype');
84
+ }
@@ -1,43 +1,34 @@
1
- /* ── Global font ─────────────────────────────────────────────────────────── */
2
- *, *::before, *::after { font-family: var(--clx-font-body); }
3
-
4
- /* ── Backdrop base ───────────────────────────────────────────────────────── */
5
- .clx-modal-backdrop,
6
- .clx-alert-backdrop {
7
- animation: clx-backdrop-in 220ms ease forwards;
8
- }
9
-
10
- @keyframes clx-backdrop-in {
11
- from { opacity: 0; }
12
- to { opacity: 1; }
13
- }
14
-
15
- /* ── Modal backdrop ─────────────────────────────────────────────────────── */
16
- .clx-modal-backdrop {
17
- background-color: rgba(15, 23, 42, 0.40);
18
- backdrop-filter: blur(4px);
19
- -webkit-backdrop-filter: blur(4px);
20
- }
21
-
22
- /* ── Alert backdrop ──────────────────────────────────────────────────────── */
23
- .clx-alert-backdrop {
24
- background-color: rgba(15, 23, 42, 0.45);
25
- backdrop-filter: blur(6px);
26
- -webkit-backdrop-filter: blur(6px);
27
- }
28
-
29
-
30
- /* ── Suppress transitions during window resize ───────────────────────────── */
31
- html.clx-resizing *, html.clx-resizing *::before, html.clx-resizing *::after {
32
- transition: none !important;
33
- animation: none !important;
34
- }
35
-
36
- /* ── Scrollbar ───────────────────────────────────────────────────────────── */
37
- ::-webkit-scrollbar { width: 0.5rem; height: 0.5rem; }
38
- ::-webkit-scrollbar-track { background-color: transparent; }
39
- ::-webkit-scrollbar-thumb {
40
- background-color: var(--clx-primary);
41
- border-radius: 0.5rem;
42
- }
43
- ::-webkit-scrollbar-thumb:hover { background-color: var(--clx-primary); }
1
+ /* ── Backdrop base ───────────────────────────────────────────────────────── */
2
+ .clx-modal-backdrop,
3
+ .clx-alert-backdrop {
4
+ animation: clx-backdrop-in 220ms ease forwards;
5
+ }
6
+
7
+ @keyframes clx-backdrop-in {
8
+ from { opacity: 0; }
9
+ to { opacity: 1; }
10
+ }
11
+
12
+ /* ── Modal backdrop ─────────────────────────────────────────────────────── */
13
+ .clx-modal-backdrop {
14
+ background-color: rgba(15, 23, 42, 0.40);
15
+ backdrop-filter: blur(4px);
16
+ -webkit-backdrop-filter: blur(4px);
17
+ }
18
+
19
+ /* ── Alert backdrop ──────────────────────────────────────────────────────── */
20
+ .clx-alert-backdrop {
21
+ background-color: rgba(15, 23, 42, 0.45);
22
+ backdrop-filter: blur(6px);
23
+ -webkit-backdrop-filter: blur(6px);
24
+ }
25
+
26
+
27
+ /* ── Scrollbar ───────────────────────────────────────────────────────────── */
28
+ ::-webkit-scrollbar { width: 0.5rem; height: 0.5rem; }
29
+ ::-webkit-scrollbar-track { background-color: transparent; }
30
+ ::-webkit-scrollbar-thumb {
31
+ background-color: var(--clx-primary-light);
32
+ border-radius: 0.5rem;
33
+ }
34
+ ::-webkit-scrollbar-thumb:hover { background-color: var(--clx-primary); }
@@ -1,7 +1,26 @@
1
- /* ── Safelist: all color shades for dynamic class binding ── */
1
+ /* ── Safelist: dynamic class binding for resolveColor()/parseColorInput() ──
2
+ These are the ONLY class shapes resolveColor() (lib/types/clx-color.types.ts)
3
+ ever emits. Keep this list in sync with that function — do not widen it
4
+ back to a full color x prefix x opacity cross product, that generated
5
+ ~16,000 classes (4.5MB+ of compiled CSS) and made resize/reflow style
6
+ recalculation extremely expensive. ── */
2
7
  @source inline("shadow-none shadow-sm shadow-md shadow-lg shadow-xl shadow-2xl");
3
- @source inline("{bg,hover:bg,ring,hover:ring,focus:ring,focus-within:ring,hover:border,border,focus:border,focus-within:border,text}-{red,orange,amber,yellow,lime,green,emerald,teal,cyan,sky,blue,indigo,violet,purple,fuchsia,pink,rose,slate,gray,zinc,neutral,stone}-{50,100,200,300,400,500,600,700,800,900,950}{/10,/20,/25,/50,/75,}");
8
+
9
+ /* plain (no opacity) tokens: bg, bgSubtle, text, textSubtle, border, borderLight,
10
+ hoverBg, hoverText*, hoverBorder*, focus:border, focus-within:border, focus-visible:ring */
11
+ @source inline("{bg,text,border,hover:bg,hover:text,hover:border,focus:border,focus-within:border,focus-visible:ring}-{red,orange,amber,yellow,lime,green,emerald,teal,cyan,sky,blue,indigo,violet,purple,fuchsia,pink,rose,slate,gray,zinc,neutral,stone}-{50,100,200,300,400,500,600,700,800,900,950}");
12
+
13
+ /* hoverBgMuted: hover:bg-{c}-{s}/10 */
14
+ @source inline("hover:bg-{red,orange,amber,yellow,lime,green,emerald,teal,cyan,sky,blue,indigo,violet,purple,fuchsia,pink,rose,slate,gray,zinc,neutral,stone}-{50,100,200,300,400,500,600,700,800,900,950}/10");
15
+
16
+ /* focus/focus-within ring: focus:ring-{c}-{s}/20, focus-within:ring-{c}-{s}/20 */
17
+ @source inline("{focus:ring,focus-within:ring}-{red,orange,amber,yellow,lime,green,emerald,teal,cyan,sky,blue,indigo,violet,purple,fuchsia,pink,rose,slate,gray,zinc,neutral,stone}-{50,100,200,300,400,500,600,700,800,900,950}/20");
18
+
19
+ /* ring (default): ring-{c}-{s}/30 */
20
+ @source inline("ring-{red,orange,amber,yellow,lime,green,emerald,teal,cyan,sky,blue,indigo,violet,purple,fuchsia,pink,rose,slate,gray,zinc,neutral,stone}-{50,100,200,300,400,500,600,700,800,900,950}/30");
21
+
22
+ /* 'white' special-case tokens (WHITE_TOKENS in clx-color.types.ts) */
4
23
  @source inline("{bg,hover:bg,focus:ring,focus-within:ring,border,focus:border,focus-within:border,hover:border,border-t}-{white,black,transparent}");
5
- @source inline("border-white/30 border-t-white");
24
+ @source inline("border-white/30 border-t-white bg-white/10 bg-white/30 bg-white/80 border-white/20 border-white/50 border-white/80 text-white/60 text-white/70 ring-white/30 ring-white/40 ring-white/20 hover:bg-gray-100 text-gray-900");
6
25
  @source inline("text-{black,white}");
7
26
  @source inline("focus:ring-2 focus-within:ring-2 ring-2");
@@ -1,96 +1,86 @@
1
- /* ── Font registrations ───────────────────────────────────────────────────── */
2
- @theme {
3
- --font-material-symbols-outlined: 'Material Symbols Outlined';
4
- }
5
-
6
- /* ── Font body variable (overridden dynamically by ClxThemeService) ───────── */
7
- :root {
8
- --clx-font-body: 'Roboto', ui-sans-serif, system-ui, sans-serif;
9
- }
10
-
11
- /* ── Light theme (default) ────────────────────────────────────────────────── */
12
- :root {
13
- color-scheme: light;
14
-
15
- /* ── App background ── */
16
- --clx-bg: #f8fafc; /* slate-50 */
17
-
18
- /* ── Surface (cards, modals, inputs, dropdowns) ── */
19
- --clx-surface: #ffffff;
20
- --clx-surface-2: #f8fafc; /* slate-50 card/modal header+footer, disabled bg */
21
- --clx-surface-3: #f1f5f9; /* slate-100hover rows, icon wraps */
22
-
23
- /* ── Text ── */
24
- --clx-text: #0f172a; /* slate-900body text */
25
- --clx-text-label: #475569; /* slate-600 — field labels */
26
- --clx-text-muted: #64748b; /* slate-500 secondary text, body in alerts */
27
- --clx-text-subtle: #94a3b8; /* slate-400hints, placeholders, idle nav */
28
- --clx-text-faint: #cbd5e1; /* slate-300out-of-range calendar days */
29
-
30
- /* ── Borders ── */
31
- --clx-border: #e2e8f0; /* slate-200 default input/card border */
32
- --clx-border-soft: #f1f5f9; /* slate-100 — card/modal header-footer divider */
33
-
34
- /* ── Backdrops ── */
35
- --clx-backdrop-modal: rgba(15, 23, 42, 0.40);
36
- --clx-backdrop-alert: rgba(15, 23, 42, 0.45);
37
-
38
- /* ── Scrollbar ── */
39
- --clx-scrollbar: #cbd5e1; /* slate-300 */
40
- --clx-scrollbar-hover: #94a3b8; /* slate-400 */
41
-
42
- /* ── Theme accents (overridden dynamically by ClxThemeService) ── */
43
- --clx-secondary: #64748b; /* slate-500 */
44
- --clx-secondary-light: #f1f5f9; /* slate-100 */
45
- }
46
-
47
- /* ── Dark theme ───────────────────────────────────────────────────────────── */
48
- [data-clx-theme="dark"] {
49
- color-scheme: dark;
50
-
51
- /* ── App background ── */
52
- --clx-bg: #020617; /* slate-950 */
53
-
54
- /* ── Surface ── */
55
- --clx-surface: #0f172a; /* slate-900 */
56
- --clx-surface-2: #1e293b; /* slate-800 — card/modal header+footer, disabled bg */
57
- --clx-surface-3: #334155; /* slate-700 — hover rows, icon wraps */
58
-
59
- /* ── Text ── */
60
- --clx-text: #f1f5f9; /* slate-100 */
61
- --clx-text-label: #cbd5e1; /* slate-300 */
62
- --clx-text-muted: #94a3b8; /* slate-400 */
63
- --clx-text-subtle: #64748b; /* slate-500 */
64
- --clx-text-faint: #475569; /* slate-600 */
65
-
66
- /* ── Borders ── */
67
- --clx-border: #334155; /* slate-700 */
68
- --clx-border-soft: #1e293b; /* slate-800 */
69
-
70
- /* ── Backdrops ── */
71
- --clx-backdrop-modal: rgba(2, 6, 23, 0.65);
72
- --clx-backdrop-alert: rgba(2, 6, 23, 0.70);
73
-
74
- /* ── Scrollbar ── */
75
- --clx-scrollbar: #334155; /* slate-700 */
76
- --clx-scrollbar-hover: #475569; /* slate-600 */
77
- }
78
-
79
- /* ── Tailwind v4: registrar vars como colores utilitarios ─────────────────── */
80
- @theme inline {
81
- --color-clx-bg: var(--clx-bg);
82
- --color-clx-surface: var(--clx-surface);
83
- --color-clx-surface-2: var(--clx-surface-2);
84
- --color-clx-surface-3: var(--clx-surface-3);
85
- --color-clx-text: var(--clx-text);
86
- --color-clx-text-label: var(--clx-text-label);
87
- --color-clx-text-muted: var(--clx-text-muted);
88
- --color-clx-text-subtle: var(--clx-text-subtle);
89
- --color-clx-text-faint: var(--clx-text-faint);
90
- --color-clx-border: var(--clx-border);
91
- --color-clx-border-soft: var(--clx-border-soft);
92
- --color-clx-primary: var(--clx-primary);
93
- --color-clx-primary-light: var(--clx-primary-light);
94
- --color-clx-secondary: var(--clx-secondary);
95
- --color-clx-secondary-light: var(--clx-secondary-light);
96
- }
1
+ /* ── Font registrations ───────────────────────────────────────────────────── */
2
+ @theme {
3
+ --font-roboto: 'Roboto', ui-sans-serif, system-ui, sans-serif;
4
+ --font-material-symbols-outlined: 'Material Symbols Outlined';
5
+ }
6
+
7
+ /* ── Light theme (default) ────────────────────────────────────────────────── */
8
+ :root {
9
+ color-scheme: light;
10
+
11
+ /* ── App background ── */
12
+ --clx-bg: #f8fafc; /* slate-50 */
13
+
14
+ /* ── Surface (cards, modals, inputs, dropdowns) ── */
15
+ --clx-surface: #ffffff;
16
+ --clx-surface-2: #f8fafc; /* slate-50 — card/modal header+footer, disabled bg */
17
+ --clx-surface-3: #f1f5f9; /* slate-100 — hover rows, icon wraps */
18
+
19
+ /* ── Text ── */
20
+ --clx-text: #0f172a; /* slate-900 body text */
21
+ --clx-text-label: #475569; /* slate-600field labels */
22
+ --clx-text-muted: #64748b; /* slate-500 — secondary text, body in alerts */
23
+ --clx-text-subtle: #94a3b8; /* slate-400 hints, placeholders, idle nav */
24
+ --clx-text-faint: #cbd5e1; /* slate-300out-of-range calendar days */
25
+
26
+ /* ── Borders ── */
27
+ --clx-border: #e2e8f0; /* slate-200default input/card border */
28
+ --clx-border-soft: #f1f5f9; /* slate-100card/modal header-footer divider */
29
+
30
+ /* ── Backdrops ── */
31
+ --clx-backdrop-modal: rgba(15, 23, 42, 0.40);
32
+ --clx-backdrop-alert: rgba(15, 23, 42, 0.45);
33
+
34
+ /* ── Scrollbar ── */
35
+ --clx-scrollbar: #cbd5e1; /* slate-300 */
36
+ --clx-scrollbar-hover: #94a3b8; /* slate-400 */
37
+ }
38
+
39
+ /* ── Dark theme ───────────────────────────────────────────────────────────── */
40
+ [data-clx-theme="dark"] {
41
+ color-scheme: dark;
42
+
43
+ /* ── App background ── */
44
+ --clx-bg: #020617; /* slate-950 */
45
+
46
+ /* ── Surface ── */
47
+ --clx-surface: #0f172a; /* slate-900 */
48
+ --clx-surface-2: #1e293b; /* slate-800 — card/modal header+footer, disabled bg */
49
+ --clx-surface-3: #334155; /* slate-700 — hover rows, icon wraps */
50
+
51
+ /* ── Text ── */
52
+ --clx-text: #f1f5f9; /* slate-100 */
53
+ --clx-text-label: #cbd5e1; /* slate-300 */
54
+ --clx-text-muted: #94a3b8; /* slate-400 */
55
+ --clx-text-subtle: #64748b; /* slate-500 */
56
+ --clx-text-faint: #475569; /* slate-600 */
57
+
58
+ /* ── Borders ── */
59
+ --clx-border: #334155; /* slate-700 */
60
+ --clx-border-soft: #1e293b; /* slate-800 */
61
+
62
+ /* ── Backdrops ── */
63
+ --clx-backdrop-modal: rgba(2, 6, 23, 0.65);
64
+ --clx-backdrop-alert: rgba(2, 6, 23, 0.70);
65
+
66
+ /* ── Scrollbar ── */
67
+ --clx-scrollbar: #334155; /* slate-700 */
68
+ --clx-scrollbar-hover: #475569; /* slate-600 */
69
+ }
70
+
71
+ /* ── Tailwind v4: registrar vars como colores utilitarios ─────────────────── */
72
+ @theme inline {
73
+ --color-clx-bg: var(--clx-bg);
74
+ --color-clx-surface: var(--clx-surface);
75
+ --color-clx-surface-2: var(--clx-surface-2);
76
+ --color-clx-surface-3: var(--clx-surface-3);
77
+ --color-clx-text: var(--clx-text);
78
+ --color-clx-text-label: var(--clx-text-label);
79
+ --color-clx-text-muted: var(--clx-text-muted);
80
+ --color-clx-text-subtle: var(--clx-text-subtle);
81
+ --color-clx-text-faint: var(--clx-text-faint);
82
+ --color-clx-border: var(--clx-border);
83
+ --color-clx-border-soft: var(--clx-border-soft);
84
+ --color-clx-primary: var(--clx-primary);
85
+ --color-clx-primary-light: var(--clx-primary-light);
86
+ }