@a-type/ui 1.8.18 → 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.
Files changed (84) hide show
  1. package/README.md +1 -58
  2. package/dist/cjs/colors.stories.d.ts +13 -0
  3. package/dist/cjs/colors.stories.js +29 -0
  4. package/dist/cjs/colors.stories.js.map +1 -0
  5. package/dist/cjs/components/button/classes.js +9 -9
  6. package/dist/cjs/components/button/classes.js.map +1 -1
  7. package/dist/cjs/components/card/Card.d.ts +2 -2
  8. package/dist/cjs/components/card/Card.js +4 -4
  9. package/dist/cjs/components/card/Card.js.map +1 -1
  10. package/dist/cjs/components/checkbox/Checkbox.js +1 -1
  11. package/dist/cjs/components/checkbox/Checkbox.js.map +1 -1
  12. package/dist/cjs/components/datePicker/DatePicker.js +3 -1
  13. package/dist/cjs/components/datePicker/DatePicker.js.map +1 -1
  14. package/dist/cjs/components/horizontalList/HorizontalList.js +1 -1
  15. package/dist/cjs/components/horizontalList/HorizontalList.js.map +1 -1
  16. package/dist/cjs/components/richEditor/index.js +1 -1
  17. package/dist/cjs/components/scrollArea/ScrollArea.js +1 -1
  18. package/dist/cjs/components/scrollArea/ScrollArea.js.map +1 -1
  19. package/dist/cjs/components/slider/Slider.js +1 -1
  20. package/dist/cjs/components/slider/Slider.js.map +1 -1
  21. package/dist/cjs/components/tabs/tabs.js +1 -1
  22. package/dist/cjs/components/tabs/tabs.js.map +1 -1
  23. package/dist/cjs/components/toggleGroup/toggleGroup.js +1 -1
  24. package/dist/cjs/components/toggleGroup/toggleGroup.js.map +1 -1
  25. package/dist/cjs/components/typography/typography.js +3 -3
  26. package/dist/cjs/themes.stories.d.ts +2 -0
  27. package/dist/cjs/themes.stories.js +67 -1
  28. package/dist/cjs/themes.stories.js.map +1 -1
  29. package/dist/cjs/uno/colors.d.ts +14 -0
  30. package/dist/cjs/uno/colors.js +59 -0
  31. package/dist/cjs/uno/colors.js.map +1 -0
  32. package/dist/cjs/uno.preset.d.ts +5 -4
  33. package/dist/cjs/uno.preset.js +85 -261
  34. package/dist/cjs/uno.preset.js.map +1 -1
  35. package/dist/css/main.css +846 -784
  36. package/dist/esm/colors.stories.d.ts +13 -0
  37. package/dist/esm/colors.stories.js +26 -0
  38. package/dist/esm/colors.stories.js.map +1 -0
  39. package/dist/esm/components/button/classes.js +9 -9
  40. package/dist/esm/components/button/classes.js.map +1 -1
  41. package/dist/esm/components/card/Card.d.ts +2 -2
  42. package/dist/esm/components/card/Card.js +4 -4
  43. package/dist/esm/components/card/Card.js.map +1 -1
  44. package/dist/esm/components/checkbox/Checkbox.js +1 -1
  45. package/dist/esm/components/checkbox/Checkbox.js.map +1 -1
  46. package/dist/esm/components/datePicker/DatePicker.js +3 -1
  47. package/dist/esm/components/datePicker/DatePicker.js.map +1 -1
  48. package/dist/esm/components/horizontalList/HorizontalList.js +1 -1
  49. package/dist/esm/components/horizontalList/HorizontalList.js.map +1 -1
  50. package/dist/esm/components/richEditor/index.js +1 -1
  51. package/dist/esm/components/scrollArea/ScrollArea.js +1 -1
  52. package/dist/esm/components/scrollArea/ScrollArea.js.map +1 -1
  53. package/dist/esm/components/slider/Slider.js +1 -1
  54. package/dist/esm/components/slider/Slider.js.map +1 -1
  55. package/dist/esm/components/tabs/tabs.js +1 -1
  56. package/dist/esm/components/tabs/tabs.js.map +1 -1
  57. package/dist/esm/components/toggleGroup/toggleGroup.js +1 -1
  58. package/dist/esm/components/toggleGroup/toggleGroup.js.map +1 -1
  59. package/dist/esm/components/typography/typography.js +3 -3
  60. package/dist/esm/themes.stories.d.ts +2 -0
  61. package/dist/esm/themes.stories.js +67 -1
  62. package/dist/esm/themes.stories.js.map +1 -1
  63. package/dist/esm/uno/colors.d.ts +14 -0
  64. package/dist/esm/uno/colors.js +54 -0
  65. package/dist/esm/uno/colors.js.map +1 -0
  66. package/dist/esm/uno.preset.d.ts +5 -4
  67. package/dist/esm/uno.preset.js +84 -260
  68. package/dist/esm/uno.preset.js.map +1 -1
  69. package/package.json +1 -1
  70. package/src/colors.stories.tsx +53 -0
  71. package/src/components/button/classes.tsx +12 -12
  72. package/src/components/card/Card.tsx +5 -5
  73. package/src/components/checkbox/Checkbox.tsx +1 -1
  74. package/src/components/datePicker/DatePicker.tsx +1 -0
  75. package/src/components/horizontalList/HorizontalList.tsx +1 -1
  76. package/src/components/richEditor/index.tsx +3 -3
  77. package/src/components/scrollArea/ScrollArea.tsx +1 -1
  78. package/src/components/slider/Slider.tsx +2 -2
  79. package/src/components/tabs/tabs.tsx +1 -1
  80. package/src/components/toggleGroup/toggleGroup.tsx +1 -1
  81. package/src/components/typography/typography.tsx +3 -3
  82. package/src/themes.stories.tsx +95 -1
  83. package/src/uno/colors.ts +68 -0
  84. package/src/uno.preset.ts +96 -322
package/src/uno.preset.ts CHANGED
@@ -2,6 +2,12 @@ import { DynamicRule, entriesToCss, toArray } from '@unocss/core';
2
2
  import { bgColors as bgColorsRules } from '@unocss/preset-mini/rules';
3
3
  import presetWind3 from '@unocss/preset-wind3';
4
4
  import { PreflightContext, Preset } from 'unocss';
5
+ import {
6
+ dynamicComputedVars,
7
+ dynamicTheme,
8
+ DynamicThemeColor,
9
+ dynamicThemeComputedColors,
10
+ } from './uno/colors.js';
5
11
 
6
12
  const baseBgRule = bgColorsRules[0] as unknown as DynamicRule;
7
13
 
@@ -16,14 +22,11 @@ const roundedScaling = {
16
22
  lg: 1.25,
17
23
  };
18
24
 
19
- export default function presetAglio({
25
+ export default function presetAtype({
20
26
  scale = 'md',
21
27
  interFontLocation = 'https://resources.biscuits.club/fonts/Inter-VariableFont_slnt,wght.ttf',
22
28
  domineFontLocation = 'https://resources.biscuits.club/fonts/Domine-VariableFont_wght.ttf',
23
- colorRanges = {
24
- light: [90, 20],
25
- dark: [0, 80],
26
- },
29
+ customTheme,
27
30
  borderScale = 1,
28
31
  roundedness = 1,
29
32
  cornerScale = roundedness,
@@ -33,10 +36,7 @@ export default function presetAglio({
33
36
  scale?: 'sm' | 'md' | 'lg';
34
37
  interFontLocation?: string;
35
38
  domineFontLocation?: string;
36
- colorRanges?: {
37
- light: [number, number];
38
- dark: [number, number];
39
- };
39
+ customTheme?: { primary: DynamicThemeColor; accent: DynamicThemeColor };
40
40
  borderScale?: number;
41
41
  /** @deprecated use cornerScale */
42
42
  roundedness?: number;
@@ -47,8 +47,6 @@ export default function presetAglio({
47
47
  const saturationScale = saturation / 100;
48
48
  const spacingIncrement = spacing[scale];
49
49
  cornerScale *= roundedScaling[scale];
50
- const lightColors = generateColors(...colorRanges.light);
51
- const darkColors = generateColors(...colorRanges.dark);
52
50
 
53
51
  const darkModeSaturationTweak = 1;
54
52
  const lightModeSaturationTweak = 3;
@@ -62,11 +60,6 @@ export default function presetAglio({
62
60
  black: 'var(--color-black)',
63
61
  white: 'var(--color-white)',
64
62
  wash: 'var(--color-wash)',
65
- attentionLight: 'var(--color-attention-light)',
66
- 'attention-light': 'var(--color-attention-light)',
67
- attentionDark: 'var(--color-attention-dark)',
68
- 'attention-dark': 'var(--color-attention-dark)',
69
- 'attention-wash': 'var(--color-attention-wash)',
70
63
  attention: {
71
64
  DEFAULT: 'var(--color-attention)',
72
65
  light: 'var(--color-attention-light)',
@@ -81,12 +74,6 @@ export default function presetAglio({
81
74
  wash: 'var(--color-accent-wash)',
82
75
  ink: 'var(--color-accent-ink)',
83
76
  },
84
- accentWash: 'var(--color-accent-wash)',
85
- 'accent-wash': 'var(--color-accent-wash)',
86
- accentLight: 'var(--color-accent-light)',
87
- 'accent-light': 'var(--color-accent-light)',
88
- accentDark: 'var(--color-accent-dark)',
89
- 'accent-dark': 'var(--color-accent-dark)',
90
77
  primary: {
91
78
  DEFAULT: 'var(--color-primary)',
92
79
  light: 'var(--color-primary-light)',
@@ -94,29 +81,21 @@ export default function presetAglio({
94
81
  wash: 'var(--color-primary-wash)',
95
82
  ink: 'var(--color-primary-ink)',
96
83
  },
97
- primaryLight: 'var(--color-primary-light)',
98
- 'primary-light': 'var(--color-primary-light)',
99
- primaryDark: 'var(--color-primary-dark)',
100
- 'primary-dark': 'var(--color-primary-dark)',
101
- primaryWash: 'var(--color-primary-wash)',
102
- 'primary-wash': 'var(--color-primary-wash)',
103
84
  gray: {
104
85
  DEFAULT: 'var(--color-gray)',
105
86
  wash: 'var(--color-gray-wash)',
106
87
  light: 'var(--color-gray-light)',
107
- dark: 'var(--color-gray-dark)',
108
88
  ink: 'var(--color-gray-ink)',
109
89
  blend: 'var(--color-gray-blend)',
90
+ dark: {
91
+ DEFAULT: 'var(--color-gray-dark)',
92
+ blend: 'var(--color-gray-dark-blend)',
93
+ },
110
94
  },
111
- grayBlend: 'var(--color-gray-blend)',
112
- 'gray-blend': 'var(--color-gray-blend)',
113
- grayDarkBlend: 'var(--color-gray-dark-blend)',
114
- 'gray-dark-blend': 'var(--color-gray-dark-blend)',
115
- darkBlend: 'var(--color-dark-blend)',
116
95
  'dark-blend': 'var(--color-dark-blend)',
117
- lightBlend: 'var(--color-light-blend)',
118
96
  'light-blend': 'var(--color-light-blend)',
119
97
  overlay: 'var(--color-overlay)',
98
+ 'dark-mode-contrast': 'var(--color-dark-mode-contrast)',
120
99
  },
121
100
  fontFamily: {
122
101
  default: 'var(--font-default, sans-serif)',
@@ -460,7 +439,7 @@ export default function presetAglio({
460
439
  }
461
440
  return {
462
441
  'background-color': 'var(--v-bg-altered,var(--v-bg))',
463
- ['--v-bg']: resolveThemeColor(match[1], theme),
442
+ ['--v-bg']: resolvedColor,
464
443
  };
465
444
  },
466
445
  {
@@ -527,7 +506,7 @@ export default function presetAglio({
527
506
  shortcuts: {
528
507
  'border-default': 'border border-solid border-color-black',
529
508
  'border-light':
530
- 'border border-solid border-color-gray border-color-darken-5',
509
+ 'border border-solid border-color-gray border-color-darken-3',
531
510
  'flex-1-0-0': 'flex-grow-1 flex-shrink-0 flex-basis-0',
532
511
  'flex-0-0-auto': 'flex-grow-0 flex-shrink-0 flex-basis-auto',
533
512
  row: 'layer-components:flex layer-components:flex-row layer-components:gap-2 layer-components:items-center',
@@ -566,10 +545,17 @@ export default function presetAglio({
566
545
  } as any,
567
546
  {
568
547
  getCSS: (ctx) => {
548
+ const attentionColors = `
549
+ --dyn-attention-source: 30;
550
+ --dyn-attention-hue-rotate: 0;
551
+ --dyn-attention-sat-mult: 1;
552
+ --dyn-attention-hue-rotate-mult: 1;
553
+ ${dynamicThemeComputedColors('attention')}`;
569
554
  const lightMode = `
570
555
  --wash-saturation-tweak: ${lightModeSaturationTweak};
571
556
  --mode-mult: 1;
572
- ${lightColors}
557
+ --dyn-mode-mult: 1;
558
+ --dyn-mode-sign: 1;
573
559
  --color-dark-blend: var(--palette-dark-blend);
574
560
  --color-light-blend: var(--palette-light-blend);
575
561
  --color-dark-blend-2: var(--palette-dark-blend-2);
@@ -591,17 +577,21 @@ export default function presetAglio({
591
577
  --color-shadow-1: var(--palette-shadow-2);
592
578
  --color-shadow-2: var(--palette-shadow-1);
593
579
  --color-overlay: var(--palette-white-overlay);
580
+ ${attentionColors}
594
581
  `;
595
582
  const darkMode = `
596
583
  --wash-saturation-tweak: ${darkModeSaturationTweak};
597
584
  --mode-mult: -1;
598
- ${darkColors}
585
+ --dyn-mode-mult: -1.6;
586
+ --dyn-mode-lighten-mult: -0.5;
587
+ --dyn-mode-sign: -1;
588
+ --dyn-source-mode-adjust: 1;
599
589
  --color-dark-blend: var(--palette-light-blend);
600
590
  --color-light-blend: var(--palette-dark-blend);
601
591
  --color-dark-blend-2: var(--palette-light-blend-2);
602
592
  --color-light-blend-2: var(--palette-dark-blend-2);
603
593
  --color-black: var(--palette-true-white);
604
- --color-white: var(--palette-black);
594
+ --color-white: var(--palette-white);
605
595
  --color-gray-1: var(--palette-gray-ex-2);
606
596
  --color-gray-2: var(--palette-gray-ex-1);
607
597
  --color-gray-3: var(--palette-gray-0);
@@ -617,138 +607,60 @@ export default function presetAglio({
617
607
  --color-shadow-1: var(--palette-shadow-4);
618
608
  --color-shadow-2: var(--palette-shadow-3);
619
609
  --color-overlay: var(--palette-black-overlay);
610
+ ${attentionColors}
620
611
  `;
621
612
 
622
- const lemon = themeVars({
623
- primary: 'yellow',
624
- accent: 'green',
625
- grayTweak: -10,
613
+ const dynThemes: Record<string, DynamicThemeColor> = {
614
+ lemon: { hue: 91.8, hueRotate: 3 },
615
+ leek: { hue: 160.88, hueRotate: -1 },
616
+ tomato: { hue: 10.51, hueRotate: -2 },
617
+ blueberry: { hue: 248.14, hueRotate: 4 },
618
+ eggplant: { hue: 280.21, hueRotate: -5 },
619
+ salt: {
620
+ hue: 0,
621
+ hueRotate: -50,
622
+ hueRotateMult: 0,
623
+ saturationMult: 0,
624
+ dim: '4%',
625
+ },
626
+ saltLight: {
627
+ hue: 0,
628
+ hueRotate: -50,
629
+ hueRotateMult: 0,
630
+ saturationMult: 0,
631
+ dim: '15%',
632
+ },
633
+ };
634
+
635
+ const dynLemon = dynamicTheme({
636
+ primary: dynThemes.lemon,
637
+ accent: dynThemes.leek,
626
638
  });
627
- const leek = themeVars({
628
- primary: 'green',
629
- accent: 'blue',
630
- grayTweak: 20,
631
- primaryWashSaturation: 0.95,
639
+ const dynLeek = dynamicTheme({
640
+ primary: dynThemes.leek,
641
+ accent: dynThemes.lemon,
632
642
  });
633
- const tomato = themeVars({
634
- primary: 'magenta',
635
- accent: 'green',
636
- grayTweak: -20,
643
+ const dynTomato = dynamicTheme({
644
+ primary: dynThemes.tomato,
645
+ accent: dynThemes.leek,
637
646
  });
638
- const blueberry = themeVars({
639
- primary: 'blue',
640
- accent: 'green',
641
- grayTweak: 20,
647
+ const dynBlueberry = dynamicTheme({
648
+ primary: dynThemes.blueberry,
649
+ accent: dynThemes.leek,
642
650
  });
643
- const eggplant = themeVars({
644
- primary: 'purple',
645
- accent: 'green',
646
- grayTweak: -20,
651
+ const dynEggplant = dynamicTheme({
652
+ primary: dynThemes.eggplant,
653
+ accent: dynThemes.leek,
647
654
  });
648
- const salt = themeVars({
649
- primary: 'true-gray',
650
- accent: {
651
- default: 'true-gray-light',
652
- wash: 'white',
653
- light: 'true-gray-wash',
654
- dark: 'true-gray',
655
- ink: 'true-gray-dark',
656
- },
657
- globalSaturation: 0,
655
+ const dynSalt = dynamicTheme({
656
+ primary: dynThemes.salt,
657
+ accent: dynThemes.saltLight,
658
658
  });
659
659
 
660
- const computedVars = `
661
- --palette-gray-wash: hsl(from var(--color-primary-wash) calc(h + var(--gray-hue-tweak, 0)) calc(s * var(--wash-saturation-tweak, 1) * var(--global-saturation, 1)) calc(l * pow(1.025, var(--mode-mult,1))));
662
- --palette-gray: hsl(from var(--color-primary) calc(h + var(--gray-hue-tweak, 0)) calc(s * var(--global-saturation, 1)) calc(l * 1.125));
663
- --palette-gray-dark: hsl(from var(--color-primary-dark) calc(h + var(--gray-hue-tweak, 0)) calc(s * 0.75 * var(--global-saturation, 1)) calc(l * pow(1.125, var(--mode-mult,1))));
664
- --palette-gray-light: hsl(from var(--color-primary-light) calc(h + var(--gray-hue-tweak, 0) * pow(2, var(--mode-mult, 1))) calc(s * 0.5 * var(--global-saturation, 1)) calc(l * pow(1.25, var(--mode-mult,1))));
665
- --color-wash: var(--color-gray-wash);
666
- --color-gray-wash: var(--palette-gray-wash);
667
- --color-gray: var(--palette-gray);
668
- --color-gray-dark: var(--palette-gray-dark);
669
- --color-gray-light: var(--palette-gray-light);
670
- --color-gray-ink: var(--color-black);
671
- --palette-gray-1: var(--color-gray-wash);
672
- --palette-gray-2: var(--color-gray-light);
673
- --palette-gray-3: var(--color-gray-light);
674
- --palette-gray-4: var(--color-gray);
675
- --palette-gray-5: var(--color-gray);
676
- --palette-gray-6: var(--color-gray);
677
- --palette-gray-7: var(--color-gray-dark);
678
- --palette-gray-8: var(--color-gray-dark);
679
- --palette-gray-9: var(--color-black);
680
- --palette-gray-0: var(--color-black);
681
- --palette-gray-ex-1: var(--color-black);
682
- --palette-gray-ex-2: var(--color-black);
683
- --palette-white: hsl(from var(--color-wash) calc(h + 0) calc(s * 0.3 * var(--global-saturation, 1)) calc(min(100, l + 1 / var(--global-saturation, 1))));
684
- --palette-black: hsl(from var(--color-gray-dark) calc(h + 0) calc(s * 0.1 * var(--global-saturation, 1)) calc(min(100, l / (var(--mode-mult,1) * -5 + pow(1 + var(--global-saturation, 1), 1.5)))));
685
- `;
686
-
687
660
  return `
688
661
  @layer preflightBase, preflightVariant, components, responsive, variants, utilities;
689
662
 
690
663
  :root {
691
- --palette-red-90:rgb(255, 244, 240);
692
- --palette-red-80: #ffdbcf;
693
- --palette-red-70: #ffbea6;
694
- --palette-red-60: #fdad8e;
695
- --palette-red-50: #ff8e61;
696
- --palette-red-40: #d56f46;
697
- --palette-red-30: #ae562d;
698
- --palette-red-20: #804020;
699
- --palette-red-10: #702604;
700
- --palette-red-00:rgb(37, 28, 25);
701
- /* TODO: define these */
702
- --palette-magenta-90: hsl(from rgb(255, 244, 240) calc(h - 20) s l);
703
- --palette-magenta-80: hsl(from #ffdbcf calc(h - 20) s l);
704
- --palette-magenta-70: hsl(from #ffbea6 calc(h - 20) s l);
705
- --palette-magenta-60: hsl(from #fdad8e calc(h - 20) s l);
706
- --palette-magenta-50: hsl(from #ff8e61 calc(h - 20) s l);
707
- --palette-magenta-40: hsl(from #d56f46 calc(h - 20) s l);
708
- --palette-magenta-30: hsl(from #ae562d calc(h - 20) s l);
709
- --palette-magenta-20: hsl(from #804020 calc(h - 20) s l);
710
- --palette-magenta-10: hsl(from #702604 calc(h - 20) s l);
711
- --palette-magenta-00: hsl(from rgb(37, 28, 25) calc(h - 20) s l);
712
- --palette-green-90:rgb(240, 255, 248);
713
- --palette-green-80: #c2ffe9;
714
- --palette-green-70: #92f2d1;
715
- --palette-green-60: #86efc8;
716
- --palette-green-50: #63cea5;
717
- --palette-green-40: #499d92;
718
- --palette-green-30: #1f837c;
719
- --palette-green-20: #246869;
720
- --palette-green-10: #274e50;
721
- --palette-green-00:rgb(32, 48, 44);
722
- --palette-yellow-90:rgb(255, 249, 238);
723
- --palette-yellow-80: #fff1c7;
724
- --palette-yellow-70: #ffdf7c;
725
- --palette-yellow-60: #ffdb57;
726
- --palette-yellow-50: #e1b83c;
727
- --palette-yellow-40:rgb(171, 134, 38);
728
- --palette-yellow-30:rgb(139, 98, 20);
729
- --palette-yellow-20:rgb(111, 83, 23);
730
- --palette-yellow-10:rgb(84, 62, 12);
731
- --palette-yellow-00:rgb(37, 33, 22);
732
- --palette-blue-90: rgb(238, 248, 255);
733
- --palette-blue-80: #c4e7ff;
734
- --palette-blue-70: #87d3fc;
735
- --palette-blue-60: #5fcefe;
736
- --palette-blue-50: #1ebcf5;
737
- --palette-blue-40: #0ca6df;
738
- --palette-blue-30: #077da7;
739
- --palette-blue-20: #005979;
740
- --palette-blue-10: #004c69;
741
- --palette-blue-00:rgb(25, 39, 44);
742
- --palette-purple-90:rgb(240, 238, 254);
743
- --palette-purple-80: #e0e0ff;
744
- --palette-purple-70:rgb(192, 197, 245);
745
- --palette-purple-60:rgb(151, 159, 250);
746
- --palette-purple-50:rgb(125, 137, 242);
747
- --palette-purple-40:rgb(99, 105, 173);
748
- --palette-purple-30:rgb(87, 91, 139);
749
- --palette-purple-20:rgb(76, 81, 122);
750
- --palette-purple-10:rgb(64, 67, 101);
751
- --palette-purple-00:rgb(27, 24, 44);
752
664
  --palette-light-blend: rgba(255, 255, 255, 0.8);
753
665
  --palette-light-blend-2: rgba(255, 255, 255, 0.6);
754
666
  --palette-dark-blend: rgba(0, 0, 0, 0.65);
@@ -786,8 +698,6 @@ export default function presetAglio({
786
698
  --font-title: "Inter", sans-serif;
787
699
  --font-default: var(--font-sans, sans-serif);
788
700
 
789
- ${computedVars}
790
-
791
701
  --z-nowPlaying: 40;
792
702
  --z-nav: 50;
793
703
  --z-menu: 100;
@@ -803,8 +713,8 @@ export default function presetAglio({
803
713
  html {
804
714
  ${lightMode}
805
715
 
806
- /* DEFAULT THEME (LEMON) */
807
- ${lemon}
716
+ /* DEFAULT THEME */
717
+ ${customTheme ? dynamicTheme(customTheme) : dynLemon}
808
718
  }
809
719
 
810
720
  /* INTRINSIC DARK THEME */
@@ -815,48 +725,31 @@ export default function presetAglio({
815
725
  }
816
726
 
817
727
  .theme-lemon {
818
- ${lemon}
819
- ${computedVars}
820
- }
821
-
822
- /* fix yellow hue in dark mode */
823
- @media(prefers-color-scheme: dark) {
824
- .theme-lemon {
825
- --gray-hue-tweak: 0;
826
- }
827
-
828
- html.override-light.theme-lemon, html.override-light .theme-lemon {
829
- --gray-hue-tweak: -20;
830
- }
831
- }
832
-
833
- html.override-dark.theme-lemon, html.override-dark .theme-lemon {
834
- --gray-hue-tweak: 0;
728
+ ${dynLemon}
835
729
  }
836
730
 
837
731
  .theme-blueberry {
838
- ${blueberry}
839
- ${computedVars}
732
+ ${dynBlueberry}
840
733
  }
841
734
 
842
735
  .theme-eggplant {
843
- ${eggplant}
844
- ${computedVars}
736
+ ${dynEggplant}
845
737
  }
846
738
 
847
739
  .theme-leek {
848
- ${leek}
849
- ${computedVars}
740
+ ${dynLeek}
850
741
  }
851
742
 
852
743
  .theme-tomato {
853
- ${tomato}
854
- ${computedVars}
744
+ ${dynTomato}
855
745
  }
856
746
 
857
747
  .theme-salt {
858
- ${salt}
859
- ${computedVars}
748
+ ${dynSalt}
749
+ }
750
+
751
+ .theme {
752
+ ${dynamicComputedVars}
860
753
  }
861
754
 
862
755
  html, body {
@@ -899,28 +792,22 @@ export default function presetAglio({
899
792
  }
900
793
 
901
794
  .theme-override-lemon {
902
- ${lemon}
903
- ${computedVars}
795
+ ${dynLemon}
904
796
  }
905
797
  .theme-override-blueberry {
906
- ${blueberry}
907
- ${computedVars}
798
+ ${dynBlueberry}
908
799
  }
909
800
  .theme-override-eggplant {
910
- ${eggplant}
911
- ${computedVars}
801
+ ${dynEggplant}
912
802
  }
913
803
  .theme-override-leek {
914
- ${leek}
915
- ${computedVars}
804
+ ${dynLeek}
916
805
  }
917
806
  .theme-override-tomato {
918
- ${tomato}
919
- ${computedVars}
807
+ ${dynTomato}
920
808
  }
921
809
  .theme-override-salt {
922
- ${salt}
923
- ${computedVars}
810
+ ${dynSalt}
924
811
  }
925
812
  }
926
813
 
@@ -978,50 +865,6 @@ export default function presetAglio({
978
865
  };
979
866
  }
980
867
 
981
- const themeColors = [
982
- 'red',
983
- 'magenta',
984
- 'green',
985
- 'yellow',
986
- 'blue',
987
- 'purple',
988
- 'true-gray',
989
- ];
990
- function roundTens(num: number) {
991
- return Math.round(num / 10) * 10;
992
- }
993
- function asPaletteValue(num: number) {
994
- return roundTens(num).toString().padStart(2, '0');
995
- }
996
- function generateColors(from: number, to: number) {
997
- const increment = (to - from) / 4;
998
- const map = themeColors.reduce(
999
- (acc, color) => {
1000
- acc[`--color-${color}-wash`] = `var(--palette-${color}-${asPaletteValue(
1001
- from,
1002
- )})`;
1003
- acc[`--color-${color}-light`] = `var(--palette-${color}-${asPaletteValue(
1004
- from + roundTens(increment),
1005
- )})`;
1006
- acc[`--color-${color}`] = `var(--palette-${color}-${asPaletteValue(
1007
- from + roundTens(increment * 2),
1008
- )})`;
1009
- acc[`--color-${color}-dark`] = `var(--palette-${color}-${asPaletteValue(
1010
- from + roundTens(increment * 3),
1011
- )})`;
1012
- acc[`--color-${color}-ink`] = `var(--palette-${color}-${asPaletteValue(
1013
- from + roundTens(increment * 4),
1014
- )})`;
1015
- return acc;
1016
- },
1017
- {} as Record<string, string>,
1018
- );
1019
- return Object.entries(map).reduce(
1020
- (str, [key, value]) => str + `${key}: ${value};\n`,
1021
- '',
1022
- );
1023
- }
1024
-
1025
868
  function makeSpacing(increment: number) {
1026
869
  return {
1027
870
  ...new Array(20)
@@ -1075,85 +918,16 @@ function resolveThemeColor(color: string, theme: any) {
1075
918
  }
1076
919
 
1077
920
  function lighten(base: string, level: string, saturate?: string) {
1078
- const levelNum = parseFloat(level) * 0.175;
921
+ const levelNum = parseFloat(level) * 0.1;
1079
922
  const saturateNum = saturate ? parseFloat(saturate) : levelNum / 100;
1080
- return `hsl(from ${base} h calc(s * pow(${
1081
- 1 + saturateNum
1082
- }, var(--mode-mult, 1))) calc(l * pow(${
1083
- 1 + levelNum
1084
- }, var(--mode-mult, 1))))`;
923
+ return `oklch(from ${base} calc(l + (${
924
+ 1 * levelNum
925
+ } * var(--dyn-mode-lighten-mult, 1))) calc(c + (${
926
+ 1 * saturateNum
927
+ } * var(--dyn-mode-lighten-mult, 1))) h)`;
1085
928
  }
1086
929
 
1087
930
  function darken(base: string, level: string) {
1088
931
  const levelNum = parseFloat(level);
1089
- return lighten(base, (levelNum / -15).toString());
1090
- }
1091
-
1092
- function themeVars({
1093
- primary,
1094
- accent,
1095
- grayTweak,
1096
- globalSaturation,
1097
- primaryWashSaturation,
1098
- }: {
1099
- primary: string | ExplicitColorRange;
1100
- accent: string | ExplicitColorRange;
1101
- grayTweak?: number;
1102
- globalSaturation?: number;
1103
- primaryWashSaturation?: number;
1104
- }) {
1105
- return `
1106
- ${themeVarRange({ name: 'attention', range: 'red' })}
1107
- ${themeVarRange({ name: 'accent', range: accent })}
1108
- ${themeVarRange({
1109
- name: 'primary',
1110
- range: primary,
1111
- washSaturation: primaryWashSaturation,
1112
- })}
1113
-
1114
- --gray-hue-tweak: ${grayTweak ?? 0};
1115
- ${
1116
- globalSaturation !== undefined
1117
- ? `--global-saturation: ${globalSaturation};`
1118
- : ''
1119
- }
1120
- `;
1121
- }
1122
-
1123
- type ExplicitColorRange = {
1124
- default: string;
1125
- wash: string;
1126
- light: string;
1127
- dark: string;
1128
- ink: string;
1129
- };
1130
- function themeVarRange({
1131
- name,
1132
- range,
1133
- washSaturation = 1,
1134
- }: {
1135
- name: string;
1136
- range: string | ExplicitColorRange;
1137
- washSaturation?: number;
1138
- }) {
1139
- const realRange =
1140
- typeof range === 'string'
1141
- ? {
1142
- default: range,
1143
- wash: `${range}-wash`,
1144
- light: `${range}-light`,
1145
- dark: `${range}-dark`,
1146
- ink: `${range}-ink`,
1147
- }
1148
- : range;
1149
-
1150
- return `--color-${name}: var(--color-${realRange.default});
1151
- --color-${name}-wash: ${
1152
- washSaturation !== 1
1153
- ? `hsl(from var(--color-${realRange.wash}) h calc(s * ${washSaturation}) l)`
1154
- : `var(--color-${realRange.wash})`
1155
- };
1156
- --color-${name}-light: var(--color-${realRange.light});
1157
- --color-${name}-dark: var(--color-${realRange.dark});
1158
- --color-${name}-ink: var(--color-${realRange.ink});`;
932
+ return lighten(base, (-levelNum / 8).toString());
1159
933
  }