@caqophony/ui 0.3.1 → 0.4.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caqophony/ui",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "Generic, optional React UI reuse library (Gossamer tokens). Centrally maintained by Caqophony.",
5
5
  "license": "MIT",
6
6
  "author": "Caqophony",
@@ -36,6 +36,22 @@
36
36
  "types": "./dist/markdown.d.mts",
37
37
  "import": "./dist/markdown.js"
38
38
  },
39
+ "./marketing": {
40
+ "types": "./dist/marketing.d.mts",
41
+ "import": "./dist/marketing.js"
42
+ },
43
+ "./material": {
44
+ "types": "./dist/material.d.mts",
45
+ "import": "./dist/material.js"
46
+ },
47
+ "./material-tones": {
48
+ "types": "./dist/material-tones.d.mts",
49
+ "import": "./dist/material-tones.js"
50
+ },
51
+ "./material-art": {
52
+ "types": "./dist/material-art.d.mts",
53
+ "import": "./dist/material-art.js"
54
+ },
39
55
  "./styles.css": "./styles.css",
40
56
  "./package.json": "./package.json"
41
57
  },
@@ -54,7 +70,8 @@
54
70
  "lucide-react": "^0.446.0",
55
71
  "react-markdown": "^9.0.1",
56
72
  "remark-gfm": "^4.0.0",
57
- "tailwind-merge": "^2.5.2"
73
+ "tailwind-merge": "^2.5.2",
74
+ "@tailwindcss/typography": "^0.5.15"
58
75
  },
59
76
  "peerDependencies": {
60
77
  "chart.js": "^4.5.1",
package/styles.css CHANGED
@@ -260,6 +260,35 @@
260
260
  transition-duration: var(--duration-drawer);
261
261
  }
262
262
 
263
+ @utility text-display-poster {
264
+ font-size: clamp(3rem, 1.05rem + 8vw, 7rem);
265
+ line-height: 0.98;
266
+ letter-spacing: -0.035em;
267
+ font-weight: 700;
268
+ text-wrap: balance;
269
+ overflow-wrap: break-word;
270
+ }
271
+ @utility text-display-headline {
272
+ font-size: clamp(2.25rem, 1.4rem + 3.6vw, 4rem);
273
+ line-height: 1.04;
274
+ letter-spacing: -0.03em;
275
+ font-weight: 700;
276
+ text-wrap: balance;
277
+ overflow-wrap: break-word;
278
+ }
279
+ @utility text-display-title {
280
+ font-size: clamp(1.5rem, 1.25rem + 1vw, 2rem);
281
+ line-height: 1.15;
282
+ letter-spacing: -0.02em;
283
+ font-weight: 700;
284
+ text-wrap: balance;
285
+ overflow-wrap: break-word;
286
+ }
287
+ @utility text-lede {
288
+ font-size: clamp(1.0625rem, 1rem + 0.4vw, 1.3125rem);
289
+ line-height: 1.5;
290
+ }
291
+
263
292
  [data-page-surface='marketing'] {
264
293
  --page-bg: var(--background);
265
294
  --section-band: color-mix(in srgb, hsl(var(--foreground)) 8%, hsl(var(--background)));
@@ -271,19 +300,21 @@
271
300
  [data-page-surface='marketing'] section:not([data-page-surface='marketing'] section section):is(.bg-page-bg, .bg-muted, .bg-background, .bg-card, :not([class*='bg-'])):nth-of-type(even) {
272
301
  background-color: var(--section-band);
273
302
  }
274
- [data-page-surface='marketing'] h1 {
303
+ [data-page-surface='marketing'] h1:not([class*='text-display-poster'], [class*='text-display-headline'], [class*='text-display-title'], [class*='text-lede']) {
275
304
  font-size: clamp(2.25rem, 1.35rem + 3.8vw, 3.25rem);
276
305
  line-height: 1.08;
277
306
  font-weight: 700;
278
307
  letter-spacing: -0.025em;
279
308
  text-wrap: balance;
280
309
  }
281
- [data-page-surface='marketing'] h1 + p {
310
+ [data-page-surface='marketing'] h1 + p:not([class*='text-display-poster'], [class*='text-display-headline'], [class*='text-display-title'], [class*='text-lede']) {
282
311
  font-size: clamp(1rem, 0.95rem + 0.4vw, 1.25rem);
283
312
  line-height: 1.6;
313
+ }
314
+ [data-page-surface='marketing'] h1 + p {
284
315
  margin-top: 0.75rem;
285
316
  }
286
- [data-page-surface='marketing'] h2 {
317
+ [data-page-surface='marketing'] h2:not([class*='text-display-poster'], [class*='text-display-headline'], [class*='text-display-title'], [class*='text-lede']) {
287
318
  font-size: clamp(1.75rem, 1.5rem + 1vw, 2.25rem);
288
319
  line-height: 1.15;
289
320
  font-weight: 700;
@@ -297,3 +328,327 @@
297
328
  display: inline-flex;
298
329
  margin-top: 2rem;
299
330
  }
331
+ @layer base {
332
+ [data-page-surface='marketing'] h1 {
333
+ font-size: clamp(2.25rem, 1.35rem + 3.8vw, 3.25rem);
334
+ line-height: 1.08;
335
+ font-weight: 700;
336
+ letter-spacing: -0.025em;
337
+ text-wrap: balance;
338
+ }
339
+ [data-page-surface='marketing'] h1 + p {
340
+ font-size: clamp(1rem, 0.95rem + 0.4vw, 1.25rem);
341
+ line-height: 1.6;
342
+ }
343
+ [data-page-surface='marketing'] h2 {
344
+ font-size: clamp(1.75rem, 1.5rem + 1vw, 2.25rem);
345
+ line-height: 1.15;
346
+ font-weight: 700;
347
+ letter-spacing: -0.02em;
348
+ text-wrap: balance;
349
+ }
350
+ }
351
+
352
+ @plugin '@tailwindcss/typography';
353
+
354
+ :root {
355
+ --brand-accent: 161 66% 36%;
356
+ --brand-accent-foreground: 240 10% 4%;
357
+ --night-0: 160 35% 13%;
358
+ --night-1: 160 48% 22%;
359
+ --night-2: 160 59% 30%;
360
+ --sky-0: 161 66% 36%;
361
+ --sky-1: 159 51% 44%;
362
+ --sky-2: 158 44% 50%;
363
+ --sky-3: 157 49% 56%;
364
+ --sky-4: 157 56% 61%;
365
+ --glow: 157 62% 65%;
366
+ --glow-soft: 153 60% 83%;
367
+ --glow-pale: 153 61% 93%;
368
+ --canvas: 150 33% 98%;
369
+ --mist-1: 153 33% 95%;
370
+ --mist-2: 152 31% 88%;
371
+ --mist-3: 153 32% 79%;
372
+ --night-foreground: 150 33% 96%;
373
+ --night-muted-foreground: 151 32% 83%;
374
+ --night-card: 159 44% 19%;
375
+ --night-muted: 157 27% 26%;
376
+ --night-border: 156 21% 40%;
377
+ --night-accent: 161 66% 41%;
378
+ --night-accent-foreground: 240 10% 4%;
379
+ --night-accent-text: 161 67% 51%;
380
+ --brand-fill: 158 36% 10%;
381
+ --brand-fill-foreground: 0 0% 100%;
382
+ --paper: 0 0% 100%;
383
+ --ink: 240 10% 4%;
384
+ }
385
+
386
+ :root, [class~='dark'], [data-theme-scope] {
387
+ --day-background: var(--background);
388
+ --day-foreground: var(--foreground);
389
+ --day-card: var(--card);
390
+ --day-card-foreground: var(--card-foreground);
391
+ --day-popover: var(--popover);
392
+ --day-popover-foreground: var(--popover-foreground);
393
+ --day-border: var(--border);
394
+ --day-input: var(--input);
395
+ --day-ring: var(--ring);
396
+ --day-muted: var(--muted);
397
+ --day-muted-foreground: var(--muted-foreground);
398
+ --day-secondary: var(--secondary);
399
+ --day-secondary-foreground: var(--secondary-foreground);
400
+ --day-accent: var(--accent);
401
+ --day-accent-foreground: var(--accent-foreground);
402
+ --day-destructive: var(--destructive);
403
+ --day-destructive-foreground: var(--destructive-foreground);
404
+ --day-primary: var(--primary);
405
+ --day-primary-foreground: var(--primary-foreground);
406
+ --day-intent-success: var(--intent-success);
407
+ --day-intent-success-fg: var(--intent-success-fg);
408
+ --day-intent-success-border: var(--intent-success-border);
409
+ --day-intent-warning: var(--intent-warning);
410
+ --day-intent-warning-fg: var(--intent-warning-fg);
411
+ --day-intent-warning-border: var(--intent-warning-border);
412
+ --day-intent-error: var(--intent-error);
413
+ --day-intent-error-fg: var(--intent-error-fg);
414
+ --day-intent-error-border: var(--intent-error-border);
415
+ --day-intent-info: var(--intent-info);
416
+ --day-intent-info-fg: var(--intent-info-fg);
417
+ --day-intent-info-border: var(--intent-info-border);
418
+ --day-status-action: var(--status-action);
419
+ --day-status-action-fg: var(--status-action-fg);
420
+ --day-status-waiting: var(--status-waiting);
421
+ --day-status-waiting-fg: var(--status-waiting-fg);
422
+ --day-status-critical: var(--status-critical);
423
+ --day-status-critical-fg: var(--status-critical-fg);
424
+ --day-status-info: var(--status-info);
425
+ --day-status-info-fg: var(--status-info-fg);
426
+ --day-primary-text: var(--primary-text);
427
+ --day-primary-solid: var(--primary-solid);
428
+ --day-intent-success-solid: var(--intent-success-solid);
429
+ --day-intent-success-solid-fg: var(--intent-success-solid-fg);
430
+ --day-intent-warning-solid: var(--intent-warning-solid);
431
+ --day-intent-warning-solid-fg: var(--intent-warning-solid-fg);
432
+ --day-intent-error-solid: var(--intent-error-solid);
433
+ --day-intent-error-solid-fg: var(--intent-error-solid-fg);
434
+ --day-intent-info-solid: var(--intent-info-solid);
435
+ --day-intent-info-solid-fg: var(--intent-info-solid-fg);
436
+ }
437
+
438
+ @media (prefers-color-scheme: dark) {
439
+ :root {
440
+ --brand-accent: 161 66% 36%;
441
+ --brand-accent-foreground: 240 10% 4%;
442
+ --night-0: 160 35% 13%;
443
+ --night-1: 160 48% 22%;
444
+ --night-2: 160 59% 30%;
445
+ --sky-0: 161 66% 36%;
446
+ --sky-1: 159 51% 44%;
447
+ --sky-2: 158 44% 50%;
448
+ --sky-3: 157 49% 56%;
449
+ --sky-4: 157 56% 61%;
450
+ --glow: 157 62% 65%;
451
+ --glow-soft: 153 60% 83%;
452
+ --glow-pale: 160 23% 15%;
453
+ --canvas: 180 12% 5%;
454
+ --mist-1: 170 18% 7%;
455
+ --mist-2: 163 27% 10%;
456
+ --mist-3: 159 39% 15%;
457
+ --night-foreground: 150 33% 96%;
458
+ --night-muted-foreground: 151 32% 83%;
459
+ --night-card: 159 44% 19%;
460
+ --night-muted: 157 27% 26%;
461
+ --night-border: 156 21% 40%;
462
+ --night-accent: 161 66% 41%;
463
+ --night-accent-foreground: 240 10% 4%;
464
+ --night-accent-text: 161 67% 51%;
465
+ --brand-fill: 158 36% 10%;
466
+ --brand-fill-foreground: 0 0% 100%;
467
+ --paper: 0 0% 100%;
468
+ --ink: 240 10% 4%;
469
+ }
470
+ }
471
+
472
+ @theme inline {
473
+ --color-brand-accent: hsl(var(--brand-accent));
474
+ --color-brand-accent-foreground: hsl(var(--brand-accent-foreground));
475
+ --color-night-0: hsl(var(--night-0));
476
+ --color-night-1: hsl(var(--night-1));
477
+ --color-night-2: hsl(var(--night-2));
478
+ --color-sky-0: hsl(var(--sky-0));
479
+ --color-sky-1: hsl(var(--sky-1));
480
+ --color-sky-2: hsl(var(--sky-2));
481
+ --color-sky-3: hsl(var(--sky-3));
482
+ --color-sky-4: hsl(var(--sky-4));
483
+ --color-glow: hsl(var(--glow));
484
+ --color-glow-soft: hsl(var(--glow-soft));
485
+ --color-glow-pale: hsl(var(--glow-pale));
486
+ --color-canvas: hsl(var(--canvas));
487
+ --color-mist-1: hsl(var(--mist-1));
488
+ --color-mist-2: hsl(var(--mist-2));
489
+ --color-mist-3: hsl(var(--mist-3));
490
+ --color-night-foreground: hsl(var(--night-foreground));
491
+ --color-night-muted-foreground: hsl(var(--night-muted-foreground));
492
+ --color-night-card: hsl(var(--night-card));
493
+ --color-night-muted: hsl(var(--night-muted));
494
+ --color-night-border: hsl(var(--night-border));
495
+ --color-night-accent: hsl(var(--night-accent));
496
+ --color-night-accent-foreground: hsl(var(--night-accent-foreground));
497
+ --color-night-accent-text: hsl(var(--night-accent-text));
498
+ --color-brand-fill: hsl(var(--brand-fill));
499
+ --color-brand-fill-foreground: hsl(var(--brand-fill-foreground));
500
+ --color-paper: hsl(var(--paper));
501
+ --color-ink: hsl(var(--ink));
502
+ }
503
+
504
+ [data-surface='night'] {
505
+ --background: var(--night-0);
506
+ --foreground: var(--night-foreground);
507
+ --card: var(--night-card);
508
+ --card-foreground: var(--night-foreground);
509
+ --popover: var(--night-card);
510
+ --popover-foreground: var(--night-foreground);
511
+ --border: var(--night-border);
512
+ --input: var(--night-border);
513
+ --ring: var(--night-accent);
514
+ --muted: var(--night-muted);
515
+ --muted-foreground: var(--night-muted-foreground);
516
+ --secondary: var(--night-muted);
517
+ --secondary-foreground: var(--night-foreground);
518
+ --accent: var(--night-muted);
519
+ --accent-foreground: var(--night-foreground);
520
+ --destructive: 0 63% 31%;
521
+ --destructive-foreground: 0 0% 100%;
522
+ --primary: var(--night-accent);
523
+ --primary-foreground: var(--night-accent-foreground);
524
+ --intent-success: 142 76% 36%;
525
+ --intent-success-fg: 142 69% 58%;
526
+ --intent-success-border: 142 71% 45%;
527
+ --intent-warning: 32 95% 44%;
528
+ --intent-warning-fg: 43 96% 56%;
529
+ --intent-warning-border: 38 92% 50%;
530
+ --intent-error: 0 72% 51%;
531
+ --intent-error-fg: 0 91% 71%;
532
+ --intent-error-border: 0 84% 60%;
533
+ --intent-info: 199 89% 48%;
534
+ --intent-info-fg: 198 93% 60%;
535
+ --intent-info-border: 199 89% 48%;
536
+ --status-action: 262 83% 58%;
537
+ --status-action-fg: 255 92% 76%;
538
+ --status-waiting: 32 95% 44%;
539
+ --status-waiting-fg: 43 96% 56%;
540
+ --status-critical: 0 72% 51%;
541
+ --status-critical-fg: 0 91% 71%;
542
+ --status-info: 199 89% 48%;
543
+ --status-info-fg: 198 93% 60%;
544
+ --primary-text: var(--night-accent-text);
545
+ --primary-solid: var(--night-accent);
546
+ --intent-success-solid: 142 77% 30%;
547
+ --intent-success-solid-fg: 0 0% 100%;
548
+ --intent-warning-solid: 32 95% 36%;
549
+ --intent-warning-solid-fg: 0 0% 100%;
550
+ --intent-error-solid: 0 72% 51%;
551
+ --intent-error-solid-fg: 0 0% 100%;
552
+ --intent-info-solid: 199 88% 37%;
553
+ --intent-info-solid-fg: 0 0% 100%;
554
+ color: hsl(var(--foreground));
555
+ }
556
+
557
+ [data-surface='day'] {
558
+ --background: var(--day-background);
559
+ --foreground: var(--day-foreground);
560
+ --card: var(--day-card);
561
+ --card-foreground: var(--day-card-foreground);
562
+ --popover: var(--day-popover);
563
+ --popover-foreground: var(--day-popover-foreground);
564
+ --border: var(--day-border);
565
+ --input: var(--day-input);
566
+ --ring: var(--day-ring);
567
+ --muted: var(--day-muted);
568
+ --muted-foreground: var(--day-muted-foreground);
569
+ --secondary: var(--day-secondary);
570
+ --secondary-foreground: var(--day-secondary-foreground);
571
+ --accent: var(--day-accent);
572
+ --accent-foreground: var(--day-accent-foreground);
573
+ --destructive: var(--day-destructive);
574
+ --destructive-foreground: var(--day-destructive-foreground);
575
+ --primary: var(--day-primary);
576
+ --primary-foreground: var(--day-primary-foreground);
577
+ --intent-success: var(--day-intent-success);
578
+ --intent-success-fg: var(--day-intent-success-fg);
579
+ --intent-success-border: var(--day-intent-success-border);
580
+ --intent-warning: var(--day-intent-warning);
581
+ --intent-warning-fg: var(--day-intent-warning-fg);
582
+ --intent-warning-border: var(--day-intent-warning-border);
583
+ --intent-error: var(--day-intent-error);
584
+ --intent-error-fg: var(--day-intent-error-fg);
585
+ --intent-error-border: var(--day-intent-error-border);
586
+ --intent-info: var(--day-intent-info);
587
+ --intent-info-fg: var(--day-intent-info-fg);
588
+ --intent-info-border: var(--day-intent-info-border);
589
+ --status-action: var(--day-status-action);
590
+ --status-action-fg: var(--day-status-action-fg);
591
+ --status-waiting: var(--day-status-waiting);
592
+ --status-waiting-fg: var(--day-status-waiting-fg);
593
+ --status-critical: var(--day-status-critical);
594
+ --status-critical-fg: var(--day-status-critical-fg);
595
+ --status-info: var(--day-status-info);
596
+ --status-info-fg: var(--day-status-info-fg);
597
+ --primary-text: var(--day-primary-text);
598
+ --primary-solid: var(--day-primary-solid);
599
+ --intent-success-solid: var(--day-intent-success-solid);
600
+ --intent-success-solid-fg: var(--day-intent-success-solid-fg);
601
+ --intent-warning-solid: var(--day-intent-warning-solid);
602
+ --intent-warning-solid-fg: var(--day-intent-warning-solid-fg);
603
+ --intent-error-solid: var(--day-intent-error-solid);
604
+ --intent-error-solid-fg: var(--day-intent-error-solid-fg);
605
+ --intent-info-solid: var(--day-intent-info-solid);
606
+ --intent-info-solid-fg: var(--day-intent-info-solid-fg);
607
+ color: hsl(var(--foreground));
608
+ }
609
+
610
+
611
+ @keyframes enter {
612
+ from {
613
+ opacity: var(--tw-enter-opacity, 1);
614
+ transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale(var(--tw-enter-scale, 1));
615
+ }
616
+ }
617
+ @keyframes exit {
618
+ to {
619
+ opacity: var(--tw-exit-opacity, 1);
620
+ transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale(var(--tw-exit-scale, 1));
621
+ }
622
+ }
623
+ @utility animate-in {
624
+ animation-name: enter;
625
+ animation-duration: 150ms;
626
+ }
627
+ @utility animate-out {
628
+ animation-name: exit;
629
+ animation-duration: 150ms;
630
+ }
631
+ @utility fade-in-0 {
632
+ --tw-enter-opacity: 0;
633
+ }
634
+ @utility fade-out-0 {
635
+ --tw-exit-opacity: 0;
636
+ }
637
+ @utility zoom-in-95 {
638
+ --tw-enter-scale: 0.95;
639
+ }
640
+ @utility zoom-out-95 {
641
+ --tw-exit-scale: 0.95;
642
+ }
643
+ @utility slide-in-from-top-2 {
644
+ --tw-enter-translate-y: -0.5rem;
645
+ }
646
+ @utility slide-in-from-bottom-2 {
647
+ --tw-enter-translate-y: 0.5rem;
648
+ }
649
+ @utility slide-in-from-left-2 {
650
+ --tw-enter-translate-x: -0.5rem;
651
+ }
652
+ @utility slide-in-from-right-2 {
653
+ --tw-enter-translate-x: 0.5rem;
654
+ }