@advui/theme 0.1.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 (63) hide show
  1. package/LICENSE +49 -0
  2. package/README.md +23 -0
  3. package/dist/animations.d.ts +18 -0
  4. package/dist/animations.d.ts.map +1 -0
  5. package/dist/animations.js +25 -0
  6. package/dist/animations.js.map +1 -0
  7. package/dist/animations.native.d.ts +75 -0
  8. package/dist/animations.native.d.ts.map +1 -0
  9. package/dist/animations.native.js +21 -0
  10. package/dist/animations.native.js.map +1 -0
  11. package/dist/config.d.ts +427 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +39 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/fonts.d.ts +80 -0
  16. package/dist/fonts.d.ts.map +1 -0
  17. package/dist/fonts.js +54 -0
  18. package/dist/fonts.js.map +1 -0
  19. package/dist/index.d.ts +11 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +11 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/media.d.ts +59 -0
  24. package/dist/media.d.ts.map +1 -0
  25. package/dist/media.js +48 -0
  26. package/dist/media.js.map +1 -0
  27. package/dist/palettes.d.ts +46 -0
  28. package/dist/palettes.d.ts.map +1 -0
  29. package/dist/palettes.js +64 -0
  30. package/dist/palettes.js.map +1 -0
  31. package/dist/presets.d.ts +91 -0
  32. package/dist/presets.d.ts.map +1 -0
  33. package/dist/presets.js +54 -0
  34. package/dist/presets.js.map +1 -0
  35. package/dist/shadows.d.ts +60 -0
  36. package/dist/shadows.d.ts.map +1 -0
  37. package/dist/shadows.js +44 -0
  38. package/dist/shadows.js.map +1 -0
  39. package/dist/shorthands.d.ts +37 -0
  40. package/dist/shorthands.d.ts.map +1 -0
  41. package/dist/shorthands.js +37 -0
  42. package/dist/shorthands.js.map +1 -0
  43. package/dist/themes.d.ts +129 -0
  44. package/dist/themes.d.ts.map +1 -0
  45. package/dist/themes.js +169 -0
  46. package/dist/themes.js.map +1 -0
  47. package/dist/tokens.d.ts +359 -0
  48. package/dist/tokens.d.ts.map +1 -0
  49. package/dist/tokens.js +109 -0
  50. package/dist/tokens.js.map +1 -0
  51. package/package.json +63 -0
  52. package/src/animations.native.ts +21 -0
  53. package/src/animations.ts +26 -0
  54. package/src/config.ts +55 -0
  55. package/src/fonts.ts +89 -0
  56. package/src/index.ts +37 -0
  57. package/src/media.ts +55 -0
  58. package/src/palettes.ts +123 -0
  59. package/src/presets.ts +64 -0
  60. package/src/shadows.ts +45 -0
  61. package/src/shorthands.ts +36 -0
  62. package/src/themes.ts +324 -0
  63. package/src/tokens.ts +123 -0
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Elevation presets. Spread them into `styled()` definitions:
3
+ * `styled(View, { ...shadows.md })`. Colors come from the theme
4
+ * (`$shadowColor`, `$shadowColorStrong`) so dark mode gets deeper shadows.
5
+ * `elevation` is the Android equivalent.
6
+ */
7
+ export declare const shadows: {
8
+ readonly none: {
9
+ readonly shadowColor: "transparent";
10
+ readonly shadowOffset: {
11
+ readonly width: 0;
12
+ readonly height: 0;
13
+ };
14
+ readonly shadowOpacity: 0;
15
+ readonly shadowRadius: 0;
16
+ readonly elevation: 0;
17
+ };
18
+ readonly xs: {
19
+ readonly shadowColor: "$shadowColor";
20
+ readonly shadowOffset: {
21
+ readonly width: 0;
22
+ readonly height: 1;
23
+ };
24
+ readonly shadowOpacity: 1;
25
+ readonly shadowRadius: 2;
26
+ readonly elevation: 1;
27
+ };
28
+ readonly sm: {
29
+ readonly shadowColor: "$shadowColor";
30
+ readonly shadowOffset: {
31
+ readonly width: 0;
32
+ readonly height: 2;
33
+ };
34
+ readonly shadowOpacity: 1;
35
+ readonly shadowRadius: 6;
36
+ readonly elevation: 2;
37
+ };
38
+ readonly md: {
39
+ readonly shadowColor: "$shadowColorStrong";
40
+ readonly shadowOffset: {
41
+ readonly width: 0;
42
+ readonly height: 6;
43
+ };
44
+ readonly shadowOpacity: 1;
45
+ readonly shadowRadius: 16;
46
+ readonly elevation: 6;
47
+ };
48
+ readonly lg: {
49
+ readonly shadowColor: "$shadowColorStrong";
50
+ readonly shadowOffset: {
51
+ readonly width: 0;
52
+ readonly height: 12;
53
+ };
54
+ readonly shadowOpacity: 1;
55
+ readonly shadowRadius: 32;
56
+ readonly elevation: 12;
57
+ };
58
+ };
59
+ export type ShadowName = keyof typeof shadows;
60
+ //# sourceMappingURL=shadows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadows.d.ts","sourceRoot":"","sources":["../src/shadows.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCV,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAA"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Elevation presets. Spread them into `styled()` definitions:
3
+ * `styled(View, { ...shadows.md })`. Colors come from the theme
4
+ * (`$shadowColor`, `$shadowColorStrong`) so dark mode gets deeper shadows.
5
+ * `elevation` is the Android equivalent.
6
+ */
7
+ export const shadows = {
8
+ none: {
9
+ shadowColor: 'transparent',
10
+ shadowOffset: { width: 0, height: 0 },
11
+ shadowOpacity: 0,
12
+ shadowRadius: 0,
13
+ elevation: 0,
14
+ },
15
+ xs: {
16
+ shadowColor: '$shadowColor',
17
+ shadowOffset: { width: 0, height: 1 },
18
+ shadowOpacity: 1,
19
+ shadowRadius: 2,
20
+ elevation: 1,
21
+ },
22
+ sm: {
23
+ shadowColor: '$shadowColor',
24
+ shadowOffset: { width: 0, height: 2 },
25
+ shadowOpacity: 1,
26
+ shadowRadius: 6,
27
+ elevation: 2,
28
+ },
29
+ md: {
30
+ shadowColor: '$shadowColorStrong',
31
+ shadowOffset: { width: 0, height: 6 },
32
+ shadowOpacity: 1,
33
+ shadowRadius: 16,
34
+ elevation: 6,
35
+ },
36
+ lg: {
37
+ shadowColor: '$shadowColorStrong',
38
+ shadowOffset: { width: 0, height: 12 },
39
+ shadowOpacity: 1,
40
+ shadowRadius: 32,
41
+ elevation: 12,
42
+ },
43
+ };
44
+ //# sourceMappingURL=shadows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadows.js","sourceRoot":"","sources":["../src/shadows.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE;QACJ,WAAW,EAAE,aAAa;QAC1B,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACrC,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,CAAC;QACf,SAAS,EAAE,CAAC;KACb;IACD,EAAE,EAAE;QACF,WAAW,EAAE,cAAc;QAC3B,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACrC,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,CAAC;QACf,SAAS,EAAE,CAAC;KACb;IACD,EAAE,EAAE;QACF,WAAW,EAAE,cAAc;QAC3B,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACrC,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,CAAC;QACf,SAAS,EAAE,CAAC;KACb;IACD,EAAE,EAAE;QACF,WAAW,EAAE,oBAAoB;QACjC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACrC,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,CAAC;KACb;IACD,EAAE,EAAE;QACF,WAAW,EAAE,oBAAoB;QACjC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtC,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,EAAE;KACd;CACO,CAAA"}
@@ -0,0 +1,37 @@
1
+ /** Opt-in shorthands (`px`, `bg`, `rounded`…). Library source uses longhand props for readability. */
2
+ export declare const shorthands: {
3
+ readonly text: "textAlign";
4
+ readonly b: "bottom";
5
+ readonly bg: "backgroundColor";
6
+ readonly content: "alignContent";
7
+ readonly grow: "flexGrow";
8
+ readonly items: "alignItems";
9
+ readonly justify: "justifyContent";
10
+ readonly l: "left";
11
+ readonly m: "margin";
12
+ readonly maxH: "maxHeight";
13
+ readonly maxW: "maxWidth";
14
+ readonly mb: "marginBottom";
15
+ readonly minH: "minHeight";
16
+ readonly minW: "minWidth";
17
+ readonly ml: "marginLeft";
18
+ readonly mr: "marginRight";
19
+ readonly mt: "marginTop";
20
+ readonly mx: "marginHorizontal";
21
+ readonly my: "marginVertical";
22
+ readonly p: "padding";
23
+ readonly pb: "paddingBottom";
24
+ readonly pl: "paddingLeft";
25
+ readonly pr: "paddingRight";
26
+ readonly pt: "paddingTop";
27
+ readonly px: "paddingHorizontal";
28
+ readonly py: "paddingVertical";
29
+ readonly r: "right";
30
+ readonly rounded: "borderRadius";
31
+ readonly select: "userSelect";
32
+ readonly self: "alignSelf";
33
+ readonly shrink: "flexShrink";
34
+ readonly t: "top";
35
+ readonly z: "zIndex";
36
+ };
37
+ //# sourceMappingURL=shorthands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shorthands.d.ts","sourceRoot":"","sources":["../src/shorthands.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCb,CAAA"}
@@ -0,0 +1,37 @@
1
+ /** Opt-in shorthands (`px`, `bg`, `rounded`…). Library source uses longhand props for readability. */
2
+ export const shorthands = {
3
+ text: 'textAlign',
4
+ b: 'bottom',
5
+ bg: 'backgroundColor',
6
+ content: 'alignContent',
7
+ grow: 'flexGrow',
8
+ items: 'alignItems',
9
+ justify: 'justifyContent',
10
+ l: 'left',
11
+ m: 'margin',
12
+ maxH: 'maxHeight',
13
+ maxW: 'maxWidth',
14
+ mb: 'marginBottom',
15
+ minH: 'minHeight',
16
+ minW: 'minWidth',
17
+ ml: 'marginLeft',
18
+ mr: 'marginRight',
19
+ mt: 'marginTop',
20
+ mx: 'marginHorizontal',
21
+ my: 'marginVertical',
22
+ p: 'padding',
23
+ pb: 'paddingBottom',
24
+ pl: 'paddingLeft',
25
+ pr: 'paddingRight',
26
+ pt: 'paddingTop',
27
+ px: 'paddingHorizontal',
28
+ py: 'paddingVertical',
29
+ r: 'right',
30
+ rounded: 'borderRadius',
31
+ select: 'userSelect',
32
+ self: 'alignSelf',
33
+ shrink: 'flexShrink',
34
+ t: 'top',
35
+ z: 'zIndex',
36
+ };
37
+ //# sourceMappingURL=shorthands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shorthands.js","sourceRoot":"","sources":["../src/shorthands.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,WAAW;IACjB,CAAC,EAAE,QAAQ;IACX,EAAE,EAAE,iBAAiB;IACrB,OAAO,EAAE,cAAc;IACvB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,gBAAgB;IACzB,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,QAAQ;IACX,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,UAAU;IAChB,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,UAAU;IAChB,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,aAAa;IACjB,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,gBAAgB;IACpB,CAAC,EAAE,SAAS;IACZ,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,aAAa;IACjB,EAAE,EAAE,cAAc;IAClB,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,iBAAiB;IACrB,CAAC,EAAE,OAAO;IACV,OAAO,EAAE,cAAc;IACvB,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,YAAY;IACpB,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,QAAQ;CACH,CAAA"}
@@ -0,0 +1,129 @@
1
+ import { type ColorScale, type ColorSource } from './palettes';
2
+ export type ColorMode = 'light' | 'dark';
3
+ /**
4
+ * Every value a Adv UI theme defines. The first block is Tamagui's
5
+ * standard theme contract (used by Tamagui primitives); the rest are the
6
+ * semantic tokens our components use (`$primary`, `$mutedForeground`, …).
7
+ */
8
+ export type ThemeValues = {
9
+ background: string;
10
+ backgroundHover: string;
11
+ backgroundPress: string;
12
+ backgroundFocus: string;
13
+ backgroundStrong: string;
14
+ backgroundTransparent: string;
15
+ color: string;
16
+ colorHover: string;
17
+ colorPress: string;
18
+ colorFocus: string;
19
+ colorTransparent: string;
20
+ borderColor: string;
21
+ borderColorHover: string;
22
+ borderColorPress: string;
23
+ borderColorFocus: string;
24
+ placeholderColor: string;
25
+ outlineColor: string;
26
+ shadowColor: string;
27
+ shadowColorStrong: string;
28
+ color1: string;
29
+ color2: string;
30
+ color3: string;
31
+ color4: string;
32
+ color5: string;
33
+ color6: string;
34
+ color7: string;
35
+ color8: string;
36
+ color9: string;
37
+ color10: string;
38
+ color11: string;
39
+ color12: string;
40
+ foreground: string;
41
+ muted: string;
42
+ mutedForeground: string;
43
+ card: string;
44
+ cardForeground: string;
45
+ popover: string;
46
+ popoverForeground: string;
47
+ overlay: string;
48
+ border: string;
49
+ borderStrong: string;
50
+ input: string;
51
+ ring: string;
52
+ primary: string;
53
+ primaryHover: string;
54
+ primaryPress: string;
55
+ primaryForeground: string;
56
+ /** Primary-colored text/links on the page background (≥4.5:1). `primary` is a fill color. */
57
+ primaryText: string;
58
+ primarySoft: string;
59
+ primarySoftHover: string;
60
+ primarySoftForeground: string;
61
+ secondary: string;
62
+ secondaryHover: string;
63
+ secondaryPress: string;
64
+ secondaryForeground: string;
65
+ accent: string;
66
+ accentHover: string;
67
+ accentForeground: string;
68
+ destructive: string;
69
+ destructiveHover: string;
70
+ destructivePress: string;
71
+ destructiveForeground: string;
72
+ destructiveSoft: string;
73
+ destructiveSoftForeground: string;
74
+ success: string;
75
+ successForeground: string;
76
+ successSoft: string;
77
+ successSoftForeground: string;
78
+ successBorder: string;
79
+ warning: string;
80
+ warningForeground: string;
81
+ warningSoft: string;
82
+ warningSoftForeground: string;
83
+ warningBorder: string;
84
+ error: string;
85
+ errorForeground: string;
86
+ errorSoft: string;
87
+ errorSoftForeground: string;
88
+ errorBorder: string;
89
+ info: string;
90
+ infoForeground: string;
91
+ infoSoft: string;
92
+ infoSoftForeground: string;
93
+ infoBorder: string;
94
+ };
95
+ export type ThemeKey = keyof ThemeValues;
96
+ export interface ThemeColorsInput {
97
+ /** Brand color used for primary actions, focus rings and selection. */
98
+ primary?: ColorSource;
99
+ /** Soft surface for secondary actions. Defaults to the neutral scale. */
100
+ secondary?: ColorSource;
101
+ /** Highlight surface for hovered menu items, ghost buttons, etc. Defaults to neutral. */
102
+ accent?: ColorSource;
103
+ /** Gray scale for backgrounds, borders and text. */
104
+ neutral?: ColorSource;
105
+ destructive?: ColorSource;
106
+ success?: ColorSource;
107
+ warning?: ColorSource;
108
+ error?: ColorSource;
109
+ info?: ColorSource;
110
+ /**
111
+ * `true` makes the primary color the neutral's high-contrast step
112
+ * (black in light mode, white in dark mode) — the "Slate"/"Neutral" look.
113
+ */
114
+ monochrome?: boolean;
115
+ /** Escape hatch: override any generated value per mode. */
116
+ overrides?: Partial<Record<ColorMode, Partial<ThemeValues>>>;
117
+ }
118
+ export type GeneratedThemes = {
119
+ light: ThemeValues;
120
+ dark: ThemeValues;
121
+ };
122
+ export declare const defaultThemeColors: Required<Omit<ThemeColorsInput, 'overrides'>>;
123
+ /**
124
+ * Generates the light and dark theme objects. Missing `secondary`/`accent`
125
+ * fall back to the neutral scale so a single `primary` is enough to brand an app.
126
+ */
127
+ export declare function createThemeColors(input?: ThemeColorsInput): GeneratedThemes;
128
+ export type { ColorScale };
129
+ //# sourceMappingURL=themes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../src/themes.ts"],"names":[],"mappings":"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"}
package/dist/themes.js ADDED
@@ -0,0 +1,169 @@
1
+ import { accessibleSolid, adjustLightness, ensureContrast, withAlpha } from '@advui/utils';
2
+ import { resolveScale } from './palettes';
3
+ const WHITE = '#ffffff';
4
+ function solid(background, darkText) {
5
+ const pair = accessibleSolid(background, { dark: darkText });
6
+ return {
7
+ base: pair.background,
8
+ hover: adjustLightness(pair.background, -0.05),
9
+ press: adjustLightness(pair.background, -0.09),
10
+ foreground: pair.foreground,
11
+ };
12
+ }
13
+ function status(scale, darkText) {
14
+ const s = solid(scale[8], darkText);
15
+ return {
16
+ solid: s.base,
17
+ foreground: s.foreground,
18
+ soft: scale[2],
19
+ // Radix step 11 targets APCA; nudge it until it also meets WCAG AA on step 3.
20
+ softForeground: ensureContrast(scale[10], scale[2]),
21
+ border: scale[5],
22
+ };
23
+ }
24
+ function buildMode(mode, input) {
25
+ const pick = (source) => resolveScale(source)[mode];
26
+ const n = pick(input.neutral);
27
+ const isDark = mode === 'dark';
28
+ const darkText = isDark ? n[0] : n[11];
29
+ const primary = input.monochrome
30
+ ? {
31
+ base: n[11],
32
+ hover: isDark ? n[10] : adjustLightness(n[11], 0.1),
33
+ press: isDark ? adjustLightness(n[10], -0.06) : adjustLightness(n[11], 0.16),
34
+ foreground: isDark ? n[0] : WHITE,
35
+ }
36
+ : solid(pick(input.primary)[8], darkText);
37
+ const primaryScale = input.monochrome ? n : pick(input.primary);
38
+ const secondary = pick(input.secondary);
39
+ const accent = pick(input.accent);
40
+ const destructive = solid(pick(input.destructive)[8], darkText);
41
+ const destructiveScale = pick(input.destructive);
42
+ const success = status(pick(input.success), darkText);
43
+ const warning = status(pick(input.warning), darkText);
44
+ const error = status(pick(input.error), darkText);
45
+ const info = status(pick(input.info), darkText);
46
+ const background = isDark ? n[0] : WHITE;
47
+ const surface = isDark ? n[1] : WHITE;
48
+ const values = {
49
+ background,
50
+ backgroundHover: isDark ? n[2] : n[1],
51
+ backgroundPress: isDark ? n[3] : n[2],
52
+ backgroundFocus: isDark ? n[2] : n[1],
53
+ backgroundStrong: isDark ? n[1] : n[1],
54
+ backgroundTransparent: withAlpha(background, 0),
55
+ color: n[11],
56
+ colorHover: n[11],
57
+ colorPress: n[10],
58
+ colorFocus: n[11],
59
+ colorTransparent: withAlpha(n[11], 0),
60
+ borderColor: n[5],
61
+ borderColorHover: n[7],
62
+ borderColorPress: n[7],
63
+ borderColorFocus: primary.base,
64
+ placeholderColor: n[9],
65
+ outlineColor: primary.base,
66
+ shadowColor: isDark ? 'rgba(0, 0, 0, 0.45)' : 'rgba(16, 24, 40, 0.08)',
67
+ shadowColorStrong: isDark ? 'rgba(0, 0, 0, 0.65)' : 'rgba(16, 24, 40, 0.18)',
68
+ color1: n[0],
69
+ color2: n[1],
70
+ color3: n[2],
71
+ color4: n[3],
72
+ color5: n[4],
73
+ color6: n[5],
74
+ color7: n[6],
75
+ color8: n[7],
76
+ color9: n[8],
77
+ color10: n[9],
78
+ color11: n[10],
79
+ color12: n[11],
80
+ foreground: n[11],
81
+ muted: isDark ? n[2] : n[1],
82
+ mutedForeground: ensureContrast(n[10], isDark ? n[1] : n[1]),
83
+ card: surface,
84
+ cardForeground: n[11],
85
+ popover: surface,
86
+ popoverForeground: n[11],
87
+ overlay: isDark ? 'rgba(0, 0, 0, 0.7)' : 'rgba(9, 9, 11, 0.5)',
88
+ border: n[5],
89
+ borderStrong: n[6],
90
+ input: n[6],
91
+ ring: primary.base,
92
+ primary: primary.base,
93
+ primaryHover: primary.hover,
94
+ primaryPress: primary.press,
95
+ primaryForeground: primary.foreground,
96
+ primaryText: input.monochrome ? n[11] : ensureContrast(primaryScale[10], background),
97
+ primarySoft: primaryScale[2],
98
+ primarySoftHover: primaryScale[3],
99
+ primarySoftForeground: ensureContrast(primaryScale[10], primaryScale[3]),
100
+ secondary: secondary[2],
101
+ secondaryHover: secondary[3],
102
+ secondaryPress: secondary[4],
103
+ secondaryForeground: ensureContrast(secondary[11], secondary[4]),
104
+ accent: accent[2],
105
+ accentHover: accent[3],
106
+ accentForeground: ensureContrast(accent[11], accent[3]),
107
+ destructive: destructive.base,
108
+ destructiveHover: destructive.hover,
109
+ destructivePress: destructive.press,
110
+ destructiveForeground: destructive.foreground,
111
+ destructiveSoft: destructiveScale[2],
112
+ destructiveSoftForeground: ensureContrast(destructiveScale[10], destructiveScale[3]),
113
+ success: success.solid,
114
+ successForeground: success.foreground,
115
+ successSoft: success.soft,
116
+ successSoftForeground: success.softForeground,
117
+ successBorder: success.border,
118
+ warning: warning.solid,
119
+ warningForeground: warning.foreground,
120
+ warningSoft: warning.soft,
121
+ warningSoftForeground: warning.softForeground,
122
+ warningBorder: warning.border,
123
+ error: error.solid,
124
+ errorForeground: error.foreground,
125
+ errorSoft: error.soft,
126
+ errorSoftForeground: error.softForeground,
127
+ errorBorder: error.border,
128
+ info: info.solid,
129
+ infoForeground: info.foreground,
130
+ infoSoft: info.soft,
131
+ infoSoftForeground: info.softForeground,
132
+ infoBorder: info.border,
133
+ };
134
+ return values;
135
+ }
136
+ export const defaultThemeColors = {
137
+ primary: 'indigo',
138
+ secondary: 'slate',
139
+ accent: 'slate',
140
+ neutral: 'slate',
141
+ destructive: 'red',
142
+ success: 'green',
143
+ warning: 'amber',
144
+ error: 'red',
145
+ info: 'blue',
146
+ monochrome: false,
147
+ };
148
+ /**
149
+ * Generates the light and dark theme objects. Missing `secondary`/`accent`
150
+ * fall back to the neutral scale so a single `primary` is enough to brand an app.
151
+ */
152
+ export function createThemeColors(input = {}) {
153
+ const neutral = input.neutral ?? defaultThemeColors.neutral;
154
+ const resolved = {
155
+ ...defaultThemeColors,
156
+ secondary: neutral,
157
+ accent: neutral,
158
+ ...stripUndefined(input),
159
+ neutral,
160
+ };
161
+ return {
162
+ light: { ...buildMode('light', resolved), ...input.overrides?.light },
163
+ dark: { ...buildMode('dark', resolved), ...input.overrides?.dark },
164
+ };
165
+ }
166
+ function stripUndefined(value) {
167
+ return Object.fromEntries(Object.entries(value).filter(([key, v]) => v !== undefined && key !== 'overrides'));
168
+ }
169
+ //# sourceMappingURL=themes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.js","sourceRoot":"","sources":["../src/themes.ts"],"names":[],"mappings":"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"}