juxscript 1.1.245 → 1.1.247

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.
Files changed (33) hide show
  1. package/dist/lib/components/include.d.ts +86 -0
  2. package/dist/lib/components/include.d.ts.map +1 -0
  3. package/{lib/components/include.ts → dist/lib/components/include.js} +57 -100
  4. package/dist/lib/components/tag.d.ts +27 -0
  5. package/dist/lib/components/tag.d.ts.map +1 -0
  6. package/{lib/components/tag.ts → dist/lib/components/tag.js} +14 -25
  7. package/dist/lib/index.d.ts +17 -0
  8. package/dist/lib/index.d.ts.map +1 -0
  9. package/{index.js → dist/lib/index.js} +4 -2
  10. package/dist/lib/utils/codeparser.d.ts +29 -0
  11. package/dist/lib/utils/codeparser.d.ts.map +1 -0
  12. package/{lib/utils/codeparser.ts → dist/lib/utils/codeparser.js} +64 -91
  13. package/dist/lib/utils/fetch.d.ts +176 -0
  14. package/dist/lib/utils/fetch.d.ts.map +1 -0
  15. package/{lib/utils/fetch.ts → dist/lib/utils/fetch.js} +80 -206
  16. package/dist/lib/utils/formatId.d.ts +16 -0
  17. package/dist/lib/utils/formatId.d.ts.map +1 -0
  18. package/{lib/utils/formatId.ts → dist/lib/utils/formatId.js} +7 -8
  19. package/dist/lib/utils/idgen.d.ts +2 -0
  20. package/dist/lib/utils/idgen.d.ts.map +1 -0
  21. package/{lib/utils/idgen.ts → dist/lib/utils/idgen.js} +2 -4
  22. package/package.json +6 -11
  23. package/lib/components/dataframe.ts +0 -0
  24. package/lib/styles/animations.css +0 -218
  25. package/lib/styles/foundation.css +0 -542
  26. package/lib/styles/gradients.css +0 -326
  27. package/lib/styles/link.css +0 -158
  28. package/lib/styles/modal.css +0 -402
  29. package/lib/styles/modifiers.css +0 -103
  30. package/lib/styles/nav.css +0 -322
  31. package/lib/styles/shadcn.css +0 -960
  32. package/lib/styles/stacks.css +0 -132
  33. package/lib/styles/themes.css +0 -486
@@ -1,542 +0,0 @@
1
- /* ══════════════════════════════════════════════════════════════════
2
- CSS CUSTOM PROPERTIES (DESIGN TOKENS)
3
- Generative Color System with Burn Calculations + Complete Foundation
4
-
5
- ⚙️ USER CONFIGURATION (Lines 13-80) - Override these to theme your app
6
- 🔧 SYSTEM CONFIGURATION (Lines 81+) - Auto-generated, don't touch
7
- ══════════════════════════════════════════════════════════════════ */
8
-
9
- :root {
10
- /* ═════════════════════════════════════════════════════════════════
11
- * 🎨 BRAND COLORS - Your Primary Customization Point
12
- * Change these to match your brand identity
13
- * ═════════════════════════════════════════════════════════════════ */
14
-
15
- /* Brand Primary (buttons, links, primary actions) */
16
- --jux-brand-from: #18181b;
17
- --jux-brand-to: #000000;
18
-
19
- /* Brand Accent (highlights, secondary actions, badges) */
20
- --jux-brand-accent-from: #3b82f6;
21
- --jux-brand-accent-to: #1e40af;
22
-
23
- /* Surfaces (backgrounds, cards, panels) */
24
- --jux-surface-from: #ffffff;
25
- --jux-surface-to: #09090b;
26
-
27
- /* Text (headings, paragraphs, labels) */
28
- --jux-text-from: #09090b;
29
- --jux-text-to: #ffffff;
30
-
31
- /* Borders (input outlines, dividers) */
32
- --jux-border-from: #e4e4e7;
33
- --jux-border-to: #71717a;
34
-
35
- /* ═════════════════════════════════════════════════════════════════
36
- * 🔥 BURN FACTORS - Interaction Intensities
37
- * ═════════════════════════════════════════════════════════════════ */
38
- --jux-burn-subtle: 0.03;
39
- --jux-burn-hover: 0.06;
40
- --jux-burn-active: 0.12;
41
- --jux-burn-muted: 0.25;
42
- --jux-burn-strong: 0.50;
43
-
44
- /* ═════════════════════════════════════════════════════════════════
45
- * 📏 SPACING SCALE (Base units for padding, gap, margins)
46
- * ✅ MORE GENEROUS - Premium feel
47
- * ═════════════════════════════════════════════════════════════════ */
48
- --jux-space-xs: 0.375rem; /* 6px */
49
- --jux-space-sm: 0.75rem; /* 12px */
50
- --jux-space-md: 1rem; /* 16px - ✅ Increased */
51
- --jux-space-lg: 1.5rem; /* 24px - ✅ Increased */
52
- --jux-space-xl: 2.5rem; /* 40px - ✅ Increased */
53
- --jux-space-2xl: 3.5rem; /* 56px - ✅ Increased */
54
- --jux-space-3xl: 5rem; /* 80px - ✅ Increased */
55
-
56
- /* ═════════════════════════════════════════════════════════════════
57
- * 🔤 TYPOGRAPHY SCALE
58
- * ═════════════════════════════════════════════════════════════════ */
59
-
60
- /* Font Families */
61
- --jux-font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
62
- --jux-font-serif: Georgia, Cambria, "Times New Roman", Times, serif;
63
- --jux-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
64
-
65
- /* Font Sizes */
66
- --jux-text-xs: 0.75rem;
67
- --jux-text-sm: 0.875rem;
68
- --jux-text-base: 1rem;
69
- --jux-text-lg: 1.125rem;
70
- --jux-text-xl: 1.25rem;
71
- --jux-text-2xl: 1.5rem;
72
- --jux-text-3xl: 1.875rem;
73
- --jux-text-4xl: 2.25rem;
74
- --jux-text-5xl: 3rem;
75
-
76
- /* Font Weights */
77
- --jux-weight-thin: 100;
78
- --jux-weight-light: 300;
79
- --jux-weight-normal: 400;
80
- --jux-weight-medium: 500;
81
- --jux-weight-semibold: 600;
82
- --jux-weight-bold: 700;
83
- --jux-weight-black: 900;
84
-
85
- /* Line Heights */
86
- --jux-leading-tight: 1.25;
87
- --jux-leading-snug: 1.375;
88
- --jux-leading-normal: 1.5;
89
- --jux-leading-relaxed: 1.625;
90
- --jux-leading-loose: 2;
91
-
92
- /* ═════════════════════════════════════════════════════════════════
93
- * 📐 SHAPE & SIZE SCALE
94
- * ═════════════════════════════════════════════════════════════════ */
95
-
96
- /* Border Radius */
97
- --jux-radius-sharp: 0;
98
- --jux-radius-sm: 0.25rem;
99
- --jux-radius-md: 0.375rem;
100
- --jux-radius-lg: 0.5rem;
101
- --jux-radius-xl: 0.75rem;
102
- --jux-radius-2xl: 1rem;
103
- --jux-radius-full: 9999px;
104
-
105
- /* Border Width */
106
- --jux-stroke-thin: 1px;
107
- --jux-stroke-base: 2px;
108
- --jux-stroke-thick: 4px;
109
-
110
- /* Size Multipliers */
111
- --jux-size-xs: 0.75;
112
- --jux-size-sm: 0.875;
113
- --jux-size-md: 1;
114
- --jux-size-lg: 1.25;
115
- --jux-size-xl: 1.5;
116
- }
117
-
118
- /* ══════════════════════════════════════════════════════════════════
119
- 🤖 SYSTEM CONFIGURATION - AUTO-GENERATED
120
- These are computed from your brand colors above
121
- ✅ MOVED TO html SCOPE - Re-computes on [data-swag] change
122
- ══════════════════════════════════════════════════════════════════ */
123
-
124
- html {
125
- /* Generated Brand Colors */
126
- --jux-brand-color: var(--jux-brand-from);
127
- --jux-brand-bg: var(--jux-brand-from);
128
- --jux-brand-color-hover: color-mix(in srgb,
129
- var(--jux-brand-from) calc(100% - var(--jux-burn-hover) * 100%),
130
- var(--jux-brand-to) calc(var(--jux-burn-hover) * 100%)
131
- );
132
- --jux-brand-color-active: color-mix(in srgb,
133
- var(--jux-brand-from) calc(100% - var(--jux-burn-active) * 100%),
134
- var(--jux-brand-to) calc(var(--jux-burn-active) * 100%)
135
- );
136
-
137
- /* Generated Brand Accent Colors */
138
- --jux-brand-accent-color: var(--jux-brand-accent-from);
139
- --jux-brand-accent-bg: var(--jux-brand-accent-from);
140
- --jux-brand-accent-color-hover: color-mix(in srgb,
141
- var(--jux-brand-accent-from) calc(100% - var(--jux-burn-hover) * 100%),
142
- var(--jux-brand-accent-to) calc(var(--jux-burn-hover) * 100%)
143
- );
144
- --jux-brand-accent-color-active: color-mix(in srgb,
145
- var(--jux-brand-accent-from) calc(100% - var(--jux-burn-active) * 100%),
146
- var(--jux-brand-accent-to) calc(var(--jux-burn-active) * 100%)
147
- );
148
-
149
- /* Generated Surface Colors */
150
- --jux-surface-bg: var(--jux-surface-from);
151
- --jux-surface-bg-alt: color-mix(in srgb,
152
- var(--jux-surface-from) calc(100% - var(--jux-burn-subtle) * 100%),
153
- var(--jux-surface-to) calc(var(--jux-burn-subtle) * 100%)
154
- );
155
- --jux-surface-bg-hover: color-mix(in srgb,
156
- var(--jux-surface-from) calc(100% - var(--jux-burn-hover) * 100%),
157
- var(--jux-surface-to) calc(var(--jux-burn-hover) * 100%)
158
- );
159
- --jux-surface-bg-active: color-mix(in srgb,
160
- var(--jux-surface-from) calc(100% - var(--jux-burn-active) * 100%),
161
- var(--jux-surface-to) calc(var(--jux-burn-active) * 100%)
162
- );
163
-
164
- /* Generated Text Colors */
165
- --jux-text-color: var(--jux-text-from);
166
- --jux-text-color-secondary: color-mix(in srgb,
167
- var(--jux-text-from) calc(100% - var(--jux-burn-muted) * 100%),
168
- var(--jux-text-to) calc(var(--jux-burn-muted) * 100%)
169
- );
170
- --jux-text-color-tertiary: color-mix(in srgb,
171
- var(--jux-text-from) calc(100% - var(--jux-burn-strong) * 100%),
172
- var(--jux-text-to) calc(var(--jux-burn-strong) * 100%)
173
- );
174
-
175
- /* Generated Border Colors */
176
- --jux-border-color: var(--jux-border-from);
177
- --jux-border-color-strong: color-mix(in srgb,
178
- var(--jux-border-from) calc(100% - var(--jux-burn-hover) * 100%),
179
- var(--jux-border-to) calc(var(--jux-burn-hover) * 100%)
180
- );
181
-
182
- /* Semantic Colors (Optional - Use for app-level alerts/feedback) */
183
- --jux-success-from: #10b981;
184
- --jux-success-to: #065f46;
185
- --jux-success-color: var(--jux-success-from);
186
- --jux-success-bg: var(--jux-success-from);
187
- --jux-success-bg-light: color-mix(in srgb, var(--jux-success-from) 20%, #ffffff 80%);
188
- --jux-success-bg-dark: var(--jux-success-to);
189
-
190
- --jux-warning-from: #f59e0b;
191
- --jux-warning-to: #92400e;
192
- --jux-warning-color: var(--jux-warning-from);
193
- --jux-warning-bg: var(--jux-warning-from);
194
- --jux-warning-bg-light: color-mix(in srgb, var(--jux-warning-from) 20%, #ffffff 80%);
195
- --jux-warning-bg-dark: var(--jux-warning-to);
196
-
197
- --jux-danger-from: #ef4444;
198
- --jux-danger-to: #991b1b;
199
- --jux-danger-color: var(--jux-danger-from);
200
- --jux-danger-bg: var(--jux-danger-from);
201
- --jux-danger-bg-light: color-mix(in srgb, var(--jux-danger-from) 20%, #ffffff 80%);
202
- --jux-danger-bg-dark: var(--jux-danger-to);
203
-
204
- --jux-info-from: #3b82f6;
205
- --jux-info-to: #1e40af;
206
- --jux-info-color: var(--jux-info-from);
207
- --jux-info-bg: var(--jux-info-from);
208
- --jux-info-bg-light: color-mix(in srgb, var(--jux-info-from) 20%, #ffffff 80%);
209
- --jux-info-bg-dark: var(--jux-info-to);
210
-
211
- /* Spatial Axis Engine (Ghost Logic Fallbacks) */
212
- --jux-gap: var(--jux-gap-override, var(--jux-gap-token, 0px));
213
- --jux-pad: var(--jux-pad-override, var(--jux-pad-token, 0px));
214
- --jux-align: flex-start;
215
-
216
- /* Default Radius & Stroke */
217
- --jux-radius: var(--jux-radius-override, var(--jux-radius-md));
218
- --jux-stroke: var(--jux-stroke-base);
219
-
220
- /* Default Typography */
221
- --jux-font-family: var(--jux-font-sans);
222
- --jux-font-weight: var(--jux-weight-normal);
223
- --jux-font-size: var(--jux-text-base);
224
- --jux-line-height: var(--jux-leading-normal);
225
- }
226
-
227
- /* ══════════════════════════════════════════════════════════════════
228
- GEOMETRIC DESCRIPTOR CLASSES (Mobile First)
229
- ══════════════════════════════════════════════════════════════════ */
230
-
231
- /* ─────────────────────────────────────────────────────────────────
232
- * PADDING DESCRIPTORS
233
- * ───────────────────────────────────────────────────────────────── */
234
- .pad-none { --jux-pad-token: 0; }
235
- .pad-xs { --jux-pad-token: var(--jux-space-xs); }
236
- .pad-sm { --jux-pad-token: var(--jux-space-sm); }
237
- .pad-md { --jux-pad-token: var(--jux-space-md); }
238
- .pad-lg { --jux-pad-token: var(--jux-space-lg); }
239
- .pad-xl { --jux-pad-token: var(--jux-space-xl); }
240
- .pad-2xl { --jux-pad-token: var(--jux-space-2xl); }
241
- .pad-3xl { --jux-pad-token: var(--jux-space-3xl); }
242
-
243
- /* ─────────────────────────────────────────────────────────────────
244
- * GAP DESCRIPTORS
245
- * ───────────────────────────────────────────────────────────────── */
246
- .gap-none { --jux-gap-token: 0; }
247
- .gap-xs { --jux-gap-token: var(--jux-space-xs); }
248
- .gap-sm { --jux-gap-token: var(--jux-space-sm); }
249
- .gap-md { --jux-gap-token: var(--jux-space-md); }
250
- .gap-lg { --jux-gap-token: var(--jux-space-lg); }
251
- .gap-xl { --jux-gap-token: var(--jux-space-xl); }
252
- .gap-2xl { --jux-gap-token: var(--jux-space-2xl); }
253
- .gap-3xl { --jux-gap-token: var(--jux-space-3xl); }
254
-
255
- /* ─────────────────────────────────────────────────────────────────
256
- * RADIUS DESCRIPTORS
257
- * ───────────────────────────────────────────────────────────────── */
258
- .radius-sharp { --jux-radius-override: var(--jux-radius-sharp); }
259
- .radius-sm { --jux-radius-override: var(--jux-radius-sm); }
260
- .radius-md { --jux-radius-override: var(--jux-radius-md); }
261
- .radius-lg { --jux-radius-override: var(--jux-radius-lg); }
262
- .radius-xl { --jux-radius-override: var(--jux-radius-xl); }
263
- .radius-2xl { --jux-radius-override: var(--jux-radius-2xl); }
264
- .radius-full { --jux-radius-override: var(--jux-radius-full); }
265
-
266
- /* ─────────────────────────────────────────────────────────────────
267
- * FONT WEIGHT DESCRIPTORS
268
- * ───────────────────────────────────────────────────────────────── */
269
- .weight-thin { font-weight: var(--jux-weight-thin); }
270
- .weight-light { font-weight: var(--jux-weight-light); }
271
- .weight-normal { font-weight: var(--jux-weight-normal); }
272
- .weight-medium { font-weight: var(--jux-weight-medium); }
273
- .weight-semibold { font-weight: var(--jux-weight-semibold); }
274
- .weight-bold { font-weight: var(--jux-weight-bold); }
275
- .weight-black { font-weight: var(--jux-weight-black); }
276
-
277
- /* ─────────────────────────────────────────────────────────────────
278
- * FONT SIZE DESCRIPTORS
279
- * ───────────────────────────────────────────────────────────────── */
280
- .text-xs { font-size: var(--jux-text-xs); }
281
- .text-sm { font-size: var(--jux-text-sm); }
282
- .text-base { font-size: var(--jux-text-base); }
283
- .text-lg { font-size: var(--jux-text-lg); }
284
- .text-xl { font-size: var(--jux-text-xl); }
285
- .text-2xl { font-size: var(--jux-text-2xl); }
286
- .text-3xl { font-size: var(--jux-text-3xl); }
287
- .text-4xl { font-size: var(--jux-text-4xl); }
288
- .text-5xl { font-size: var(--jux-text-5xl); }
289
-
290
- /* ─────────────────────────────────────────────────────────────────
291
- * FONT FAMILY DESCRIPTORS
292
- * ───────────────────────────────────────────────────────────────── */
293
- .font-sans { font-family: var(--jux-font-sans); }
294
- .font-serif { font-family: var(--jux-font-serif); }
295
- .font-mono { font-family: var(--jux-font-mono); }
296
-
297
- /* ──────────────────────────────────────────────────────────────────
298
- * DESKTOP SCALE-UP (@media: 1024px+)
299
- * ────────────────────────────────────────────────────────────────── */
300
- @media (min-width: 1024px) {
301
- .pad-xs { --jux-pad-token: calc(var(--jux-space-xs) * 1.25); }
302
- .pad-sm { --jux-pad-token: calc(var(--jux-space-sm) * 1.25); }
303
- .pad-md { --jux-pad-token: calc(var(--jux-space-md) * 1.25); }
304
- .pad-lg { --jux-pad-token: calc(var(--jux-space-lg) * 1.25); }
305
- .pad-xl { --jux-pad-token: calc(var(--jux-space-xl) * 1.25); }
306
- .pad-2xl { --jux-pad-token: calc(var(--jux-space-2xl) * 1.25); }
307
- .pad-3xl { --jux-pad-token: calc(var(--jux-space-3xl) * 1.25); }
308
-
309
- .gap-xs { --jux-gap-token: calc(var(--jux-space-xs) * 1.25); }
310
- .gap-sm { --jux-gap-token: calc(var(--jux-space-sm) * 1.25); }
311
- .gap-md { --jux-gap-token: calc(var(--jux-space-md) * 1.25); }
312
- .gap-lg { --jux-gap-token: calc(var(--jux-space-lg) * 1.25); }
313
- .gap-xl { --jux-gap-token: calc(var(--jux-space-xl) * 1.25); }
314
- .gap-2xl { --jux-gap-token: calc(var(--jux-space-2xl) * 1.25); }
315
- .gap-3xl { --jux-gap-token: calc(var(--jux-space-3xl) * 1.25); }
316
- }
317
-
318
- /* ══════════════════════════════════════════════════════════════════
319
- BUTTON (Ultra-Minimal - Pure Token Usage)
320
- ══════════════════════════════════════════════════════════════════ */
321
-
322
- .jux-button {
323
- /* Colors */
324
- background: var(--jux-brand-bg);
325
- color: var(--jux-surface-from);
326
- border: var(--jux-stroke) solid var(--jux-border-color);
327
-
328
- /* Shape */
329
- border-radius: var(--jux-radius);
330
-
331
- /* Size - ✅ MORE GENEROUS PADDING */
332
- padding: 0.75rem 1.5rem; /* ✅ 12px 24px - much better */
333
- font-size: var(--jux-font-size);
334
- font-weight: var(--jux-weight-semibold); /* ✅ Bolder */
335
- font-family: var(--jux-font-family);
336
- letter-spacing: 0.025em; /* ✅ Subtle spacing for premium feel */
337
-
338
- /* Layout */
339
- display: inline-flex;
340
- align-items: center;
341
- gap: var(--jux-space-sm);
342
-
343
- /* ✅ PREMIUM SHADOWS */
344
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08),
345
- 0 1px 2px rgba(0, 0, 0, 0.06);
346
-
347
- /* Interaction */
348
- cursor: pointer;
349
- user-select: none;
350
- transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); /* ✅ Smoother easing */
351
- line-height: 1;
352
- text-decoration: none;
353
- }
354
-
355
- /* States use burn calculations */
356
- .jux-button:hover:not(:disabled) {
357
- background: var(--jux-brand-color-hover);
358
- transform: translateY(-1px); /* ✅ Subtle lift */
359
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1),
360
- 0 2px 4px rgba(0, 0, 0, 0.06);
361
- }
362
-
363
- .jux-button:active:not(:disabled) {
364
- background: var(--jux-brand-color-active);
365
- transform: translateY(0); /* ✅ Press down */
366
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
367
- }
368
-
369
- .jux-button:focus {
370
- outline: none;
371
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--jux-brand-bg) 30%, transparent 70%),
372
- 0 1px 3px rgba(0, 0, 0, 0.08);
373
- }
374
-
375
- .jux-button:disabled {
376
- opacity: var(--jux-burn-strong);
377
- cursor: not-allowed;
378
- transform: none;
379
- box-shadow: none;
380
- }
381
-
382
- /* ══════════════════════════════════════════════════════════════════
383
- BUTTON VARIANTS
384
- ══════════════════════════════════════════════════════════════════ */
385
-
386
- .jux-button-primary {
387
- /* Default - uses --jux-brand-bg from above */
388
- }
389
-
390
- .jux-button-secondary {
391
- background: var(--jux-brand-accent-bg);
392
- }
393
-
394
- .jux-button-secondary:hover:not(:disabled) {
395
- background: var(--jux-brand-accent-color-hover);
396
- }
397
-
398
- .jux-button-secondary:active:not(:disabled) {
399
- background: var(--jux-brand-accent-color-active);
400
- }
401
-
402
- .jux-button-danger {
403
- background: var(--jux-danger-bg);
404
- }
405
-
406
- .jux-button-danger:hover:not(:disabled) {
407
- background: color-mix(in srgb,
408
- var(--jux-danger-from) calc(100% - var(--jux-burn-hover) * 100%),
409
- var(--jux-danger-to) calc(var(--jux-burn-hover) * 100%)
410
- );
411
- }
412
-
413
- .jux-button-success {
414
- background: var(--jux-success-bg);
415
- }
416
-
417
- .jux-button-success:hover:not(:disabled) {
418
- background: color-mix(in srgb,
419
- var(--jux-success-from) calc(100% - var(--jux-burn-hover) * 100%),
420
- var(--jux-success-to) calc(var(--jux-burn-hover) * 100%)
421
- );
422
- }
423
-
424
- .jux-button-warning {
425
- background: var(--jux-warning-bg);
426
- }
427
-
428
- .jux-button-warning:hover:not(:disabled) {
429
- background: color-mix(in srgb,
430
- var(--jux-warning-from) calc(100% - var(--jux-burn-hover) * 100%),
431
- var(--jux-warning-to) calc(var(--jux-burn-hover) * 100%)
432
- );
433
- }
434
-
435
- .jux-button-info {
436
- background: var(--jux-info-bg);
437
- }
438
-
439
- .jux-button-info:hover:not(:disabled) {
440
- background: color-mix(in srgb,
441
- var(--jux-info-from) calc(100% - var(--jux-burn-hover) * 100%),
442
- var(--jux-info-to) calc(var(--jux-burn-hover) * 100%)
443
- );
444
- }
445
-
446
- .jux-button-ghost {
447
- background: transparent;
448
- color: var(--jux-brand-color);
449
- border-color: var(--jux-brand-color);
450
- }
451
-
452
- .jux-button-ghost:hover:not(:disabled) {
453
- background: color-mix(in srgb, var(--jux-brand-color) 10%, transparent 90%);
454
- }
455
-
456
- .jux-button-link {
457
- background: transparent;
458
- color: var(--jux-brand-color);
459
- border: none;
460
- text-decoration: underline;
461
- }
462
-
463
- .jux-button-link:hover:not(:disabled) {
464
- background: transparent;
465
- opacity: 0.8;
466
- }
467
-
468
- /* ══════════════════════════════════════════════════════════════════
469
- BUTTON SIZES
470
- ══════════════════════════════════════════════════════════════════ */
471
-
472
- .jux-button-small {
473
- padding: 0.5rem 1rem; /* ✅ 8px 16px */
474
- font-size: calc(var(--jux-text-base) * var(--jux-size-sm));
475
- }
476
-
477
- .jux-button-medium {
478
- /* Default size from .jux-button */
479
- }
480
-
481
- .jux-button-large {
482
- padding: 1rem 2rem; /* ✅ 16px 32px */
483
- font-size: calc(var(--jux-text-base) * var(--jux-size-lg));
484
- }
485
-
486
- /* ══════════════════════════════════════════════════════════════════
487
- HEADING STYLES
488
- ══════════════════════════════════════════════════════════════════ */
489
-
490
- .jux-heading {
491
- margin: 0;
492
- font-family: var(--jux-font-family);
493
- font-weight: var(--jux-weight-bold);
494
- line-height: var(--jux-leading-tight);
495
- color: var(--jux-text-color);
496
- letter-spacing: -0.025em; /* ✅ Tighter for headings */
497
- }
498
-
499
- .jux-heading-1 {
500
- font-size: var(--jux-text-4xl);
501
- font-weight: var(--jux-weight-black);
502
- letter-spacing: -0.04em; /* ✅ Even tighter for h1 */
503
- }
504
-
505
- .jux-heading-2 {
506
- font-size: var(--jux-text-3xl);
507
- font-weight: var(--jux-weight-bold);
508
- }
509
-
510
- .jux-heading-3 {
511
- font-size: var(--jux-text-2xl);
512
- font-weight: var(--jux-weight-bold);
513
- }
514
-
515
- .jux-heading-4 {
516
- font-size: var(--jux-text-xl);
517
- font-weight: var(--jux-weight-semibold);
518
- }
519
-
520
- .jux-heading-5 {
521
- font-size: var(--jux-text-lg);
522
- font-weight: var(--jux-weight-semibold);
523
- }
524
-
525
- .jux-heading-6 {
526
- font-size: var(--jux-text-base);
527
- font-weight: var(--jux-weight-semibold);
528
- }
529
-
530
- /* ══════════════════════════════════════════════════════════════════
531
- PARAGRAPH STYLES
532
- ══════════════════════════════════════════════════════════════════ */
533
-
534
- .jux-paragraph {
535
- margin: 0;
536
- font-family: var(--jux-font-family);
537
- font-size: var(--jux-text-base);
538
- font-weight: var(--jux-weight-normal);
539
- line-height: var(--jux-leading-relaxed); /* ✅ More breathing room */
540
- color: var(--jux-text-color);
541
- max-width: 65ch; /* ✅ Better readability */
542
- }