alouette 10.3.0 → 11.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 (140) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/createAlouetteTamagui-browser.es.js +63 -5
  3. package/dist/createAlouetteTamagui-browser.es.js.map +1 -1
  4. package/dist/createAlouetteTamagui-node20.cjs +70 -7
  5. package/dist/createAlouetteTamagui-node20.cjs.map +1 -1
  6. package/dist/createAlouetteTamagui-node20.mjs +68 -7
  7. package/dist/createAlouetteTamagui-node20.mjs.map +1 -1
  8. package/dist/createAlouetteTamagui-react-native.cjs.js +70 -7
  9. package/dist/createAlouetteTamagui-react-native.cjs.js.map +1 -1
  10. package/dist/createAlouetteTamagui-react-native.es.js +68 -7
  11. package/dist/createAlouetteTamagui-react-native.es.js.map +1 -1
  12. package/dist/definitions/components/actions/Button.d.ts +3 -1
  13. package/dist/definitions/components/actions/Button.d.ts.map +1 -1
  14. package/dist/definitions/components/actions/Button.stories.d.ts +62 -2
  15. package/dist/definitions/components/actions/Button.stories.d.ts.map +1 -1
  16. package/dist/definitions/components/actions/IconButton.d.ts +0 -1
  17. package/dist/definitions/components/actions/IconButton.d.ts.map +1 -1
  18. package/dist/definitions/components/actions/IconButton.stories.d.ts +60 -2
  19. package/dist/definitions/components/actions/IconButton.stories.d.ts.map +1 -1
  20. package/dist/definitions/components/containers/Box.d.ts +0 -1
  21. package/dist/definitions/components/containers/Box.d.ts.map +1 -1
  22. package/dist/definitions/components/containers/Box.stories.d.ts +60 -3
  23. package/dist/definitions/components/containers/Box.stories.d.ts.map +1 -1
  24. package/dist/definitions/components/containers/PressableBox.d.ts +0 -1
  25. package/dist/definitions/components/containers/PressableBox.d.ts.map +1 -1
  26. package/dist/definitions/components/containers/PressableBox.stories.d.ts +11 -3
  27. package/dist/definitions/components/containers/PressableBox.stories.d.ts.map +1 -1
  28. package/dist/definitions/components/containers/variants.d.ts +0 -38
  29. package/dist/definitions/components/containers/variants.d.ts.map +1 -1
  30. package/dist/definitions/components/feedback/Message.d.ts +5 -4
  31. package/dist/definitions/components/feedback/Message.d.ts.map +1 -1
  32. package/dist/definitions/components/feedback/Message.stories.d.ts +40 -2
  33. package/dist/definitions/components/feedback/Message.stories.d.ts.map +1 -1
  34. package/dist/definitions/components/forms/InputText.d.ts +0 -2
  35. package/dist/definitions/components/forms/InputText.d.ts.map +1 -1
  36. package/dist/definitions/components/forms/InputText.stories.d.ts +41 -3
  37. package/dist/definitions/components/forms/InputText.stories.d.ts.map +1 -1
  38. package/dist/definitions/components/layout/Separator.stories.d.ts +11 -2
  39. package/dist/definitions/components/layout/Separator.stories.d.ts.map +1 -1
  40. package/dist/definitions/components/layout/list.stories.d.ts +13 -2
  41. package/dist/definitions/components/layout/list.stories.d.ts.map +1 -1
  42. package/dist/definitions/components/primitives/Icon.stories.d.ts +25 -2
  43. package/dist/definitions/components/primitives/Icon.stories.d.ts.map +1 -1
  44. package/dist/definitions/components/primitives/Link.d.ts +26 -0
  45. package/dist/definitions/components/primitives/Link.d.ts.map +1 -0
  46. package/dist/definitions/components/primitives/Link.stories.d.ts +49 -0
  47. package/dist/definitions/components/primitives/Link.stories.d.ts.map +1 -0
  48. package/dist/definitions/components/primitives/View.stories.d.ts +9 -1
  49. package/dist/definitions/components/primitives/View.stories.d.ts.map +1 -1
  50. package/dist/definitions/components/primitives/createVariants.d.ts +1 -19
  51. package/dist/definitions/components/primitives/createVariants.d.ts.map +1 -1
  52. package/dist/definitions/components/primitives/stacks.stories.d.ts +60 -6
  53. package/dist/definitions/components/primitives/stacks.stories.d.ts.map +1 -1
  54. package/dist/definitions/components/story-components/Story.d.ts +2 -2
  55. package/dist/definitions/components/story-components/Story.d.ts.map +1 -1
  56. package/dist/definitions/components/story-components/StoryDecorator.d.ts +1 -1
  57. package/dist/definitions/components/story-components/StoryDecorator.d.ts.map +1 -1
  58. package/dist/definitions/components/story-components/StoryTitle.d.ts +6 -4
  59. package/dist/definitions/components/story-components/StoryTitle.d.ts.map +1 -1
  60. package/dist/definitions/components/story-components/WithTamaguiConfig.d.ts +2 -2
  61. package/dist/definitions/components/story-components/WithTamaguiConfig.d.ts.map +1 -1
  62. package/dist/definitions/components/typography/Typography.d.ts +10 -28
  63. package/dist/definitions/components/typography/Typography.d.ts.map +1 -1
  64. package/dist/definitions/components/typography/Typography.stories.d.ts +14 -4
  65. package/dist/definitions/components/typography/Typography.stories.d.ts.map +1 -1
  66. package/dist/definitions/components/windowSize/SwitchBreakpoints.stories.d.ts +11 -2
  67. package/dist/definitions/components/windowSize/SwitchBreakpoints.stories.d.ts.map +1 -1
  68. package/dist/definitions/config/animations.d.ts.map +1 -1
  69. package/dist/definitions/config/colorScales.d.ts.map +1 -1
  70. package/dist/definitions/config/createAlouetteFonts.d.ts.map +1 -1
  71. package/dist/definitions/config/createAlouetteTokens.d.ts +10 -10
  72. package/dist/definitions/config/createAlouetteTokens.d.ts.map +1 -1
  73. package/dist/definitions/config/themes.d.ts +104 -34
  74. package/dist/definitions/config/themes.d.ts.map +1 -1
  75. package/dist/definitions/config/themes.stories.d.ts +12 -5
  76. package/dist/definitions/config/themes.stories.d.ts.map +1 -1
  77. package/dist/definitions/config/tokens.stories.d.ts +12 -5
  78. package/dist/definitions/config/tokens.stories.d.ts.map +1 -1
  79. package/dist/definitions/config/utils/colorContrast.d.ts +18 -0
  80. package/dist/definitions/config/utils/colorContrast.d.ts.map +1 -0
  81. package/dist/definitions/config/utils/colorContrast.test.d.ts +2 -0
  82. package/dist/definitions/config/utils/colorContrast.test.d.ts.map +1 -0
  83. package/dist/definitions/config/utils/groupTokens.d.ts.map +1 -1
  84. package/dist/definitions/core/AlouetteDecorator.d.ts +32 -1
  85. package/dist/definitions/core/AlouetteDecorator.d.ts.map +1 -1
  86. package/dist/definitions/core/AlouetteProvider.d.ts +2 -1
  87. package/dist/definitions/core/AlouetteProvider.d.ts.map +1 -1
  88. package/dist/definitions/core/reset.d.ts +2 -0
  89. package/dist/definitions/core/reset.d.ts.map +1 -0
  90. package/dist/definitions/core/reset.web.d.ts +2 -0
  91. package/dist/definitions/core/reset.web.d.ts.map +1 -0
  92. package/dist/definitions/createAlouetteTamagui.d.ts.map +1 -1
  93. package/dist/definitions/index.d.ts +2 -2
  94. package/dist/definitions/index.d.ts.map +1 -1
  95. package/dist/index-browser.es.js +135 -125
  96. package/dist/index-browser.es.js.map +1 -1
  97. package/dist/index-node20.cjs +135 -125
  98. package/dist/index-node20.cjs.map +1 -1
  99. package/dist/index-node20.mjs +134 -125
  100. package/dist/index-node20.mjs.map +1 -1
  101. package/dist/index-react-native.cjs.js +135 -125
  102. package/dist/index-react-native.cjs.js.map +1 -1
  103. package/dist/index-react-native.es.js +134 -125
  104. package/dist/index-react-native.es.js.map +1 -1
  105. package/package.json +17 -16
  106. package/src/components/actions/Button.stories.tsx +133 -14
  107. package/src/components/actions/Button.tsx +17 -3
  108. package/src/components/actions/IconButton.stories.tsx +91 -14
  109. package/src/components/containers/Box.stories.tsx +111 -61
  110. package/src/components/containers/PressableBox.stories.tsx +56 -11
  111. package/src/components/containers/variants.ts +0 -3
  112. package/src/components/feedback/Message.stories.tsx +76 -10
  113. package/src/components/feedback/Message.tsx +1 -1
  114. package/src/components/forms/InputText.stories.tsx +71 -11
  115. package/src/components/layout/Separator.stories.tsx +46 -5
  116. package/src/components/layout/list.stories.tsx +58 -9
  117. package/src/components/primitives/Icon.stories.tsx +57 -10
  118. package/src/components/primitives/Link.stories.tsx +108 -0
  119. package/src/components/primitives/Link.tsx +38 -0
  120. package/src/components/primitives/View.stories.tsx +47 -2
  121. package/src/components/primitives/createVariants.ts +1 -20
  122. package/src/components/primitives/stacks.stories.tsx +168 -40
  123. package/src/components/story-components/Story.tsx +14 -7
  124. package/src/components/story-components/StoryDecorator.tsx +1 -1
  125. package/src/components/story-components/StoryTitle.tsx +6 -6
  126. package/src/components/story-components/WithTamaguiConfig.tsx +10 -3
  127. package/src/components/typography/Typography.stories.tsx +49 -16
  128. package/src/components/typography/Typography.tsx +24 -45
  129. package/src/components/windowSize/SwitchBreakpoints.stories.tsx +57 -3
  130. package/src/config/animations.ts +3 -1
  131. package/src/config/themes.stories.tsx +30 -6
  132. package/src/config/themes.ts +25 -1
  133. package/src/config/tokens.stories.tsx +35 -7
  134. package/src/config/utils/colorContrast.test.ts +41 -0
  135. package/src/config/utils/colorContrast.ts +85 -0
  136. package/src/core/AlouetteDecorator.tsx +12 -3
  137. package/src/core/AlouetteProvider.tsx +2 -1
  138. package/src/core/reset.ts +0 -0
  139. package/src/core/reset.web.ts +1 -0
  140. package/src/index.ts +1 -3
package/CHANGELOG.md CHANGED
@@ -3,6 +3,39 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [11.1.0](https://github.com/christophehurpeau/alouette/compare/alouette@11.0.0...alouette@11.1.0) (2025-07-09)
7
+
8
+ ### Features
9
+
10
+ * add reset ([dbd881b](https://github.com/christophehurpeau/alouette/commit/dbd881b4dfe5090a1cba98d553361df7c9a6caf2))
11
+ * add reset and ExternalLinkButton ([aa9de4f](https://github.com/christophehurpeau/alouette/commit/aa9de4f9ebb85926805e8672cbc92dba243b8488))
12
+ * update babel ([2d1f630](https://github.com/christophehurpeau/alouette/commit/2d1f6301b7c716d32df7969bb14a8a61facc6d9d))
13
+ * update tamagui ([6fdce00](https://github.com/christophehurpeau/alouette/commit/6fdce005e99f83f260212343357ac36052c8dcd1))
14
+
15
+ Version bump for dependency: alouette-icons
16
+
17
+
18
+ ## [11.0.0](https://github.com/christophehurpeau/alouette/compare/alouette@10.3.0...alouette@11.0.0) (2025-06-29)
19
+
20
+ ### ⚠ BREAKING CHANGES
21
+
22
+ * update to react 19, typography changes and add native storybook
23
+
24
+ ### Features
25
+
26
+ * **deps:** update dependency type-fest to v4.35.0 ([#166](https://github.com/christophehurpeau/alouette/issues/166)) ([c0e667e](https://github.com/christophehurpeau/alouette/commit/c0e667e21a56da7a8d3d9d441781718a528bf117))
27
+ * update dependencies ([27d1465](https://github.com/christophehurpeau/alouette/commit/27d146549419358385e1a5d6bab79c426269e542))
28
+ * update tamagui ([9880238](https://github.com/christophehurpeau/alouette/commit/98802387b506755124bef6dc7c1ea660b20d8737))
29
+ * update to react 19, typography changes and add native storybook ([87cc3a9](https://github.com/christophehurpeau/alouette/commit/87cc3a99e295d7a47e90c04d68dfb2aecc79430f))
30
+
31
+ ### Bug Fixes
32
+
33
+ * animation import ([90dc596](https://github.com/christophehurpeau/alouette/commit/90dc596b36be08439ecf520856324f005a091059))
34
+ * **deps:** update tamagui to v1.125.23 ([#138](https://github.com/christophehurpeau/alouette/issues/138)) ([5f695d7](https://github.com/christophehurpeau/alouette/commit/5f695d7358bbab15052ca89dc3144e07499eb3b7))
35
+
36
+ Version bump for dependency: alouette-icons
37
+
38
+
6
39
  ## [10.3.0](https://github.com/christophehurpeau/alouette/compare/alouette@10.2.0...alouette@10.3.0) (2025-02-15)
7
40
 
8
41
  ### Features
@@ -61,10 +61,6 @@ const createAlouetteFonts = ({
61
61
  });
62
62
 
63
63
  const Breakpoints = {
64
- /**
65
- * min-width: 0
66
- */
67
- BASE: 0,
68
64
  /**
69
65
  * min-width: 480px
70
66
  */
@@ -137,6 +133,55 @@ const createAlouetteTokens = (colorScales, { spacing = 4 } = {}) => {
137
133
  });
138
134
  };
139
135
 
136
+ const getLuminance = (r, g, b) => {
137
+ const values = [r, g, b].map((c) => {
138
+ const s = c / 255;
139
+ return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;
140
+ });
141
+ return 0.2126 * values[0] + 0.7152 * values[1] + 0.0722 * values[2];
142
+ };
143
+ const hexToRgb = (hex) => {
144
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
145
+ if (!result?.[1] || !result[2] || !result[3]) return null;
146
+ return {
147
+ r: parseInt(result[1], 16),
148
+ g: parseInt(result[2], 16),
149
+ b: parseInt(result[3], 16)
150
+ };
151
+ };
152
+ const getContrastRatio = (color1, color2) => {
153
+ const rgb1 = hexToRgb(color1);
154
+ const rgb2 = hexToRgb(color2);
155
+ if (!rgb1 || !rgb2) return 0;
156
+ const l1 = getLuminance(rgb1.r, rgb1.g, rgb1.b);
157
+ const l2 = getLuminance(rgb2.r, rgb2.g, rgb2.b);
158
+ const lighter = Math.max(l1, l2);
159
+ const darker = Math.min(l1, l2);
160
+ return (lighter + 0.05) / (darker + 0.05);
161
+ };
162
+ const checkContrast = (foreground, background, level = "AA") => {
163
+ const ratio = getContrastRatio(foreground, background);
164
+ const minimumRatio = level === "AA" ? 4.5 : 7;
165
+ return {
166
+ ratio,
167
+ passes: ratio >= minimumRatio,
168
+ minimumRatio
169
+ };
170
+ };
171
+ const warnOnContrastIssues = (themeName, textColor, backgroundColor) => {
172
+ if (process.env.NODE_ENV !== "development") return;
173
+ const result = checkContrast(textColor, backgroundColor);
174
+ if (!result.passes) {
175
+ console.warn(
176
+ `[Alouette] Contrast warning in theme "${themeName}":
177
+ Text color ${textColor} on background ${backgroundColor}
178
+ has contrast ratio of ${result.ratio.toFixed(2)}.
179
+ Minimum required: ${result.minimumRatio}
180
+ This may cause accessibility issues.`
181
+ );
182
+ }
183
+ };
184
+
140
185
  const darkModeScaleNumbers = {
141
186
  1: 10,
142
187
  2: 9,
@@ -169,7 +214,7 @@ const createColorTheme = (tokens, colorScaleName, mode = "light", backgroundColo
169
214
  return tokens.color[`${forceScaleNumber}.${scaleNumber}`];
170
215
  };
171
216
  const contrastBorderColor = contrastTextColor;
172
- return {
217
+ const theme = {
173
218
  backgroundColor,
174
219
  textColor,
175
220
  mainColor: getColor(6),
@@ -180,6 +225,11 @@ const createColorTheme = (tokens, colorScaleName, mode = "light", backgroundColo
180
225
  shadowColor: getColor(9),
181
226
  "textColor:disabled": getColor(3, "grayscale"),
182
227
  "contrastTextColor:disabled": getColor(7, "grayscale"),
228
+ "interactive.linkTextColor": getColor(9),
229
+ "interactive.linkTextColor:hover": getColor(7),
230
+ "interactive.linkTextColor:focus": getColor(7),
231
+ "interactive.linkTextColor:press": getColor(7),
232
+ "interactive.linkTextColor:disabled": getColor(3, "grayscale"),
183
233
  "interactive.contained.backgroundColor": getColor(5),
184
234
  "interactive.elevated.backgroundColor": backgroundColor,
185
235
  "interactive.elevated.shadowColor": getColor(9),
@@ -220,6 +270,14 @@ const createColorTheme = (tokens, colorScaleName, mode = "light", backgroundColo
220
270
  "interactive.forms.borderColor:press": getColor(7),
221
271
  "interactive.forms.borderColor:disabled": getColor(3, "grayscale")
222
272
  };
273
+ if (process.env.NODE_ENV === "development") {
274
+ warnOnContrastIssues(
275
+ colorScaleName,
276
+ theme.textColor.val,
277
+ theme.backgroundColor.val
278
+ );
279
+ }
280
+ return theme;
223
281
  };
224
282
  const createAlouetteThemes = (tokens) => {
225
283
  const alouetteTokens = tokens;
@@ -1 +1 @@
1
- {"version":3,"file":"createAlouetteTamagui-browser.es.js","sources":["../src/config/animations.web.ts","../src/config/createAlouetteFonts.ts","../src/config/Breakpoints.ts","../src/config/media.ts","../src/config/createAlouetteTokens.ts","../src/config/themes.ts","../src/config/colorScales.ts","../src/createAlouetteTamagui.ts"],"sourcesContent":["import { createAnimations } from \"@tamagui/animations-css\";\n\nexport const animations = createAnimations({\n fast: \"ease-in 150ms\",\n formElement: \"ease-in 600ms\",\n});\nconsole.log(\"animations: web\");\n","import { createFont } from \"@tamagui/core\";\n\nconst defaultHeadingFontSizes = { xl: 48, lg: 40, md: 32, sm: 24, xs: 18 };\nconst defaultBodyFontSizes = { xl: 24, lg: 18, md: 16, sm: 14, xs: 12 };\n\nconst roundWith1Precision = (value: number): number =>\n Math.round(value * 10) / 10;\n\nexport interface AlouetteFontsOptions {\n headingFontFamily?: string;\n headingFontSizes?: typeof defaultHeadingFontSizes;\n bodyFontFamily?: string;\n bodyFontSizes?: typeof defaultBodyFontSizes;\n}\n\nexport const createAlouetteFonts = ({\n headingFontFamily = \"Inter\",\n headingFontSizes = defaultHeadingFontSizes,\n bodyFontFamily = \"Inter\",\n bodyFontSizes = defaultBodyFontSizes,\n}: AlouetteFontsOptions = {}) => ({\n heading: createFont({\n family: headingFontFamily,\n weight: {\n regular: \"400\",\n bold: \"700\",\n black: \"900\",\n },\n face: {\n 400: { normal: `${headingFontFamily}Regular` },\n 700: { normal: `${headingFontFamily}Bold` },\n 900: { normal: `${headingFontFamily}Black` },\n },\n size: headingFontSizes,\n lineHeight: {\n xl: roundWith1Precision(1.1 * headingFontSizes.xl),\n lg: roundWith1Precision(1.1 * headingFontSizes.lg),\n md: roundWith1Precision(1.2 * headingFontSizes.md),\n sm: roundWith1Precision(1.3 * headingFontSizes.sm),\n xs: roundWith1Precision(1.3 * headingFontSizes.xs),\n },\n }),\n body: createFont({\n family: bodyFontFamily,\n weight: {\n regular: \"400\",\n bold: \"700\",\n black: \"900\",\n },\n face: {\n 400: { normal: `${bodyFontFamily}Regular` },\n 700: { normal: `${bodyFontFamily}Bold` },\n 900: { normal: `${bodyFontFamily}Black` },\n },\n size: bodyFontSizes,\n lineHeight: {\n xl: roundWith1Precision(1.4 * bodyFontSizes.xl),\n lg: roundWith1Precision(1.4 * bodyFontSizes.lg),\n md: roundWith1Precision(1.4 * bodyFontSizes.md),\n sm: roundWith1Precision(1.4 * bodyFontSizes.sm),\n xs: roundWith1Precision(1.4 * bodyFontSizes.xs),\n },\n }),\n});\n","export const Breakpoints = {\n /**\n * min-width: 0\n */\n BASE: 0,\n /**\n * min-width: 480px\n */\n SMALL: 480,\n /**\n * min-width: 768px\n */\n MEDIUM: 768,\n /**\n * min-width: 1024px\n */\n LARGE: 1024,\n /**\n * min-width: 1280px\n */\n WIDE: 1280,\n} as const;\n\nexport type Breakpoint = (typeof Breakpoints)[keyof typeof Breakpoints];\nexport type BreakpointNames = \"base\" | \"large\" | \"medium\" | \"small\" | \"wide\";\n\nexport enum BreakpointNameEnum {\n BASE = \"base\",\n SMALL = \"small\",\n MEDIUM = \"medium\",\n LARGE = \"large\",\n WIDE = \"wide\",\n}\n","import { Breakpoints } from \"./Breakpoints\";\n\nexport const media = {\n small: { minWidth: Breakpoints.SMALL },\n medium: { minWidth: Breakpoints.MEDIUM },\n large: { minWidth: Breakpoints.LARGE },\n wide: { minWidth: Breakpoints.WIDE },\n} as const;\n","import { createTokens } from \"@tamagui/core\";\nimport type { IntRange } from \"type-fest\";\nimport type {\n AlouetteColorScaleNumber,\n AlouetteColorScales,\n} from \"./colorScales\";\n\ntype AlouetteSize = IntRange<0, 64>;\ntype NegativeAlouetteSize = `-${AlouetteSize}`;\ntype AlouetteSizeRecord = Record<AlouetteSize, number>;\ntype NegativeAlouetteSizeRecord = Record<NegativeAlouetteSize, number>;\n\nconst createAlouetteSizes = <const N extends boolean>(\n spacing: number,\n negative: N,\n): N extends true ? NegativeAlouetteSizeRecord : AlouetteSizeRecord => {\n const MAX_SIZE = 64;\n const sizes: Partial<\n N extends true ? NegativeAlouetteSizeRecord : AlouetteSizeRecord\n > = {};\n for (let size = 0; size <= MAX_SIZE; size++) {\n (sizes as any)[negative ? `-${size}` : `${size}`] = size * spacing;\n }\n return sizes as N extends true\n ? NegativeAlouetteSizeRecord\n : AlouetteSizeRecord;\n};\n\ntype ColorScaleTokens<ColorScales extends AlouetteColorScales> = {\n [K in string &\n keyof ColorScales as `${K}.${AlouetteColorScaleNumber}`]: string; //(typeof colorScales)[K][AlouetteColorScaleNumber];\n};\n\nconst transformColorScalesToTokens = <ColorScales extends AlouetteColorScales>(\n colorScales: ColorScales,\n): ColorScaleTokens<ColorScales> => {\n return Object.fromEntries(\n Object.entries(colorScales).flatMap(([colorName, colorScale]) => {\n return Object.entries(colorScale).map(([scaleNumber, colorValue]) => {\n return [`${colorName}.${scaleNumber}`, colorValue];\n });\n }),\n ) as ColorScaleTokens<ColorScales>;\n};\n\nexport interface AlouetteTokensOptions {\n spacing?: number;\n}\n\nexport const createAlouetteTokens = <\n const ColorScales extends AlouetteColorScales,\n>(\n colorScales: ColorScales,\n { spacing = 4 }: AlouetteTokensOptions = {},\n) => {\n const sizes: AlouetteSizeRecord = createAlouetteSizes(spacing, false);\n const negativeSizes: NegativeAlouetteSizeRecord = createAlouetteSizes(\n -spacing,\n true,\n );\n\n return createTokens({\n color: {\n black: \"#000000\",\n white: \"#ffffff\",\n ...transformColorScalesToTokens(colorScales),\n },\n radius: {\n ...sizes,\n xs: spacing * 2,\n sm: spacing * 4,\n md: spacing * 8,\n },\n space: {\n ...sizes,\n ...negativeSizes,\n xs: spacing * 2,\n sm: spacing * 4,\n md: spacing * 8,\n },\n size: { ...sizes },\n zIndex: {},\n } as const);\n};\n","/* eslint-disable camelcase */\nimport type { Variable } from \"@tamagui/core\";\nimport type {\n AlouetteColorScaleNumber,\n AlouetteColorScales,\n} from \"./colorScales\";\nimport type { createAlouetteTokens } from \"./createAlouetteTokens\";\n\n// export interface MinimalRootTheme {\n// backgroundColor: Variable<string>;\n// textColor: Variable<string>;\n// }\n\n// export interface RootTheme {\n// backgroundColor: Variable<string>;\n// textColor: Variable<string>;\n// }\n\nexport interface ColorTheme {\n backgroundColor: Variable<string>;\n textColor: Variable<string>;\n contrastTextColor: Variable<string>;\n \"textColor:disabled\": Variable<string>;\n \"contrastTextColor:disabled\": Variable<string>;\n mainColor: Variable<string>;\n mainTextColor: Variable<string>;\n borderColor: Variable<string>;\n contrastBorderColor: Variable<string>;\n shadowColor: Variable<string>;\n\n \"interactive.contained.backgroundColor\": Variable<string>;\n \"interactive.elevated.backgroundColor\": Variable<string>;\n \"interactive.elevated.shadowColor\": Variable<string>;\n \"interactive.elevated.borderColor\": Variable<string>;\n \"interactive.outlined.backgroundColor\": Variable<string>;\n \"interactive.outlined.borderColor\": Variable<string>;\n\n \"interactive.contained.backgroundColor:hover\": Variable<string>;\n \"interactive.elevated.backgroundColor:hover\": Variable<string>;\n \"interactive.elevated.borderColor:hover\": Variable<string>;\n \"interactive.outlined.backgroundColor:hover\": Variable<string>;\n \"interactive.outlined.borderColor:hover\": Variable<string>;\n\n \"interactive.contained.backgroundColor:focus\": Variable<string>;\n \"interactive.elevated.backgroundColor:focus\": Variable<string>;\n \"interactive.elevated.borderColor:focus\": Variable<string>;\n \"interactive.outlined.backgroundColor:focus\": Variable<string>;\n \"interactive.outlined.borderColor:focus\": Variable<string>;\n\n \"interactive.contained.backgroundColor:press\": Variable<string>;\n \"interactive.elevated.backgroundColor:press\": Variable<string>;\n \"interactive.elevated.borderColor:press\": Variable<string>;\n \"interactive.outlined.backgroundColor:press\": Variable<string>;\n \"interactive.outlined.borderColor:press\": Variable<string>;\n\n \"interactive.contained.backgroundColor:disabled\": Variable<string>;\n \"interactive.elevated.backgroundColor:disabled\": Variable<string>;\n \"interactive.elevated.shadowColor:disabled\": Variable<string>;\n \"interactive.elevated.borderColor:disabled\": Variable<string>;\n \"interactive.outlined.backgroundColor:disabled\": Variable<string>;\n \"interactive.outlined.borderColor:disabled\": Variable<string>;\n \"interactive.textColor:disabled\": Variable<string>;\n\n \"interactive.forms.textColor\": Variable<string>;\n \"interactive.forms.placeholderTextColor\": Variable<string>;\n // \"interactive.forms.backgroundColor\": Variable<string>,\n // \"interactive.forms.backgroundColor:hover\": Variable<string>,\n \"interactive.forms.backgroundColor:focus\": Variable<string>;\n \"interactive.forms.backgroundColor:press\": Variable<string>;\n \"interactive.forms.borderColor\": Variable<string>;\n \"interactive.forms.borderColor:hover\": Variable<string>;\n \"interactive.forms.borderColor:focus\": Variable<string>;\n \"interactive.forms.borderColor:press\": Variable<string>;\n \"interactive.forms.borderColor:disabled\": Variable<string>;\n}\n\n// export interface FullTheme extends ColorTheme, RootTheme {}\nexport type FullTheme = ColorTheme;\n\n// export const createRootTheme = <T extends MinimalRootTheme>(\n// theme: T,\n// ): FullTheme => {\n// return theme satisfies RootTheme as unknown as FullTheme;\n// };\n\nconst darkModeScaleNumbers: Record<\n AlouetteColorScaleNumber,\n AlouetteColorScaleNumber\n> = {\n 1: 10,\n 2: 9,\n 3: 8,\n 4: 7,\n 5: 6,\n 6: 5,\n 7: 4,\n 8: 3,\n 9: 2,\n 10: 1,\n};\n\nexport const createColorTheme = <const ColorScales extends AlouetteColorScales>(\n tokens: ReturnType<typeof createAlouetteTokens<ColorScales>>,\n colorScaleName: string & keyof ColorScales,\n mode: \"dark\" | \"light\" = \"light\",\n backgroundColor?: Variable<string>,\n textColor?: Variable<string>,\n contrastTextColor?: Variable<string>,\n) => {\n const alouetteTokens: ReturnType<\n typeof createAlouetteTokens<AlouetteColorScales>\n > = tokens;\n if (!backgroundColor) {\n backgroundColor =\n mode === \"dark\" ? alouetteTokens.color.black : alouetteTokens.color.white;\n }\n if (!textColor) {\n textColor =\n mode === \"dark\" ? alouetteTokens.color.white : alouetteTokens.color.black;\n }\n if (!contrastTextColor) {\n if (colorScaleName === \"grayscale\") {\n contrastTextColor =\n mode === \"dark\"\n ? alouetteTokens.color.white\n : alouetteTokens.color.black;\n } else {\n contrastTextColor =\n mode === \"dark\"\n ? alouetteTokens.color.black\n : alouetteTokens.color.white;\n }\n }\n\n const getColor = (\n lightScaleNumber: AlouetteColorScaleNumber,\n forceScaleNumber = colorScaleName,\n ) => {\n // Invert scale for dark mode\n const scaleNumber =\n mode === \"dark\"\n ? darkModeScaleNumbers[lightScaleNumber]\n : lightScaleNumber;\n\n return tokens.color[\n `${forceScaleNumber}.${scaleNumber}` as keyof typeof tokens.color\n ];\n };\n\n const contrastBorderColor = contrastTextColor;\n\n return {\n backgroundColor,\n textColor,\n mainColor: getColor(6),\n mainTextColor: getColor(9),\n contrastTextColor,\n borderColor: getColor(8),\n contrastBorderColor,\n shadowColor: getColor(9),\n \"textColor:disabled\": getColor(3, \"grayscale\"),\n \"contrastTextColor:disabled\": getColor(7, \"grayscale\"),\n\n \"interactive.contained.backgroundColor\": getColor(5),\n \"interactive.elevated.backgroundColor\": backgroundColor,\n \"interactive.elevated.shadowColor\": getColor(9),\n \"interactive.elevated.borderColor\": contrastBorderColor,\n \"interactive.outlined.backgroundColor\": backgroundColor,\n \"interactive.outlined.borderColor\": getColor(mode === \"dark\" ? 5 : 8),\n\n \"interactive.contained.backgroundColor:hover\": getColor(4),\n \"interactive.elevated.backgroundColor:hover\": getColor(1),\n \"interactive.elevated.borderColor:hover\": contrastBorderColor,\n \"interactive.outlined.backgroundColor:hover\": getColor(1),\n \"interactive.outlined.borderColor:hover\": getColor(mode === \"dark\" ? 5 : 7),\n\n \"interactive.contained.backgroundColor:focus\": getColor(4),\n \"interactive.elevated.backgroundColor:focus\": getColor(1),\n \"interactive.elevated.borderColor:focus\": contrastBorderColor,\n \"interactive.outlined.backgroundColor:focus\": getColor(1),\n \"interactive.outlined.borderColor:focus\": getColor(7),\n\n \"interactive.contained.backgroundColor:press\": getColor(2),\n \"interactive.elevated.backgroundColor:press\": getColor(3),\n \"interactive.elevated.borderColor:press\": contrastBorderColor,\n \"interactive.outlined.backgroundColor:press\": getColor(3),\n \"interactive.outlined.borderColor:press\": getColor(7),\n\n \"interactive.contained.backgroundColor:disabled\": getColor(3, \"grayscale\"),\n \"interactive.elevated.backgroundColor:disabled\": backgroundColor,\n \"interactive.elevated.shadowColor:disabled\": getColor(9, \"grayscale\"),\n \"interactive.elevated.borderColor:disabled\": getColor(3, \"grayscale\"),\n \"interactive.outlined.backgroundColor:disabled\": backgroundColor,\n \"interactive.outlined.borderColor:disabled\": getColor(3, \"grayscale\"),\n \"interactive.textColor:disabled\": getColor(7, \"grayscale\"),\n\n \"interactive.forms.textColor\": textColor,\n \"interactive.forms.placeholderTextColor\": getColor(3, \"grayscale\"),\n\n // \"interactive.forms.backgroundColor\": undefined,\n // \"interactive.forms.backgroundColor:hover\": undefined,\n \"interactive.forms.backgroundColor:focus\": getColor(1),\n \"interactive.forms.backgroundColor:press\": getColor(3),\n \"interactive.forms.borderColor\": getColor(10),\n \"interactive.forms.borderColor:hover\": getColor(7),\n \"interactive.forms.borderColor:focus\": getColor(7),\n \"interactive.forms.borderColor:press\": getColor(7),\n \"interactive.forms.borderColor:disabled\": getColor(3, \"grayscale\"),\n } satisfies FullTheme;\n};\n\nexport const createAlouetteThemes = <\n const ColorScales extends AlouetteColorScales,\n>(\n tokens: ReturnType<typeof createAlouetteTokens<ColorScales>>,\n) => {\n const alouetteTokens: ReturnType<\n typeof createAlouetteTokens<AlouetteColorScales>\n > = tokens;\n return {\n light: createColorTheme(alouetteTokens, \"grayscale\", \"light\"),\n light_info: createColorTheme(alouetteTokens, \"info\", \"light\"),\n light_success: createColorTheme(alouetteTokens, \"success\", \"light\"),\n light_warning: createColorTheme(alouetteTokens, \"warning\", \"light\"),\n light_danger: createColorTheme(alouetteTokens, \"danger\", \"light\"),\n light_primary: createColorTheme(alouetteTokens, \"primary\", \"light\"),\n\n dark: createColorTheme(alouetteTokens, \"grayscale\", \"dark\"),\n dark_info: createColorTheme(alouetteTokens, \"info\", \"dark\"),\n dark_success: createColorTheme(alouetteTokens, \"success\", \"dark\"),\n dark_warning: createColorTheme(alouetteTokens, \"warning\", \"dark\"),\n dark_danger: createColorTheme(alouetteTokens, \"danger\", \"dark\"),\n dark_primary: createColorTheme(alouetteTokens, \"primary\", \"dark\"),\n } as const;\n};\n","import type { IntRange } from \"type-fest\";\n\n// scale inspired by https://www.radix-ui.com/colors/docs/palette-composition/understanding-the-scale\n// 1: interactive outlined background hover/focus color\n// 2: interactive contained background press color\n// 3: interactive outlined background press color\n// 4: interactive contained background hover/focus color\n// 5: interactive contained background color\n// 6: main color\n// 7: border hover/focus color\n// 8: border color\n// 9: text color / shadow color\n// 10: form border color (default)\n\nexport type AlouetteColorScaleNumber = IntRange<1, 11>;\n\nexport type AlouetteColorScale = Record<AlouetteColorScaleNumber, string>;\n\nexport const createColorScale = <const T extends AlouetteColorScale>(\n colorScale: T,\n): T => colorScale;\n\nexport type AlouetteColorScaleNames =\n | \"danger\"\n | \"grayscale\"\n | \"info\"\n | \"primary\"\n | \"success\"\n | \"warning\";\n\nexport type ColorScaleTokens = {\n [K in AlouetteColorScaleNames as `${K}.${AlouetteColorScaleNumber}`]: string; //(typeof colorScales)[K][AlouetteColorScaleNumber];\n};\n\nexport type AlouetteColorScales = Record<\n AlouetteColorScaleNames,\n AlouetteColorScale\n>;\n\n// Tool: https://m2.material.io/inline-tools/color/\n\nexport const defaultColorScales: AlouetteColorScales = {\n grayscale: createColorScale({\n 1: \"#faf9f8\",\n 2: \"#f4f3ef\",\n 3: \"#ebe9e5\",\n 4: \"#dedad2\",\n 5: \"#d1cdc5\",\n 6: \"#bab8ae\",\n 7: \"#aeaba3\",\n 8: \"#9c9a92\",\n 9: \"#8e8c83\",\n 10: \"#74726a\",\n }),\n success: createColorScale({\n 1: \"#f0f9f3\",\n 2: \"#d4f0d4\",\n 3: \"#a8e6a8\",\n 4: \"#7edc7e\",\n 5: \"#54d254\",\n 6: \"#2ac82a\",\n 7: \"#00be00\",\n 8: \"#00b400\",\n 9: \"#00aa00\",\n 10: \"#009200\",\n }),\n info: createColorScale({\n 1: \"#f0f9ff\",\n 2: \"#d4f0ff\",\n 3: \"#a8e6ff\",\n 4: \"#7edcff\",\n 5: \"#54d2ff\",\n 6: \"#2ac8ff\",\n 7: \"#00beff\",\n 8: \"#00b4ff\",\n 9: \"#00aaff\",\n 10: \"#0092ff\",\n }),\n warning: createColorScale({\n 1: \"#fff9f0\",\n 2: \"#fff0d4\",\n 3: \"#ffe6a8\",\n 4: \"#ffdc7e\",\n 5: \"#ffd254\",\n 6: \"#ffc82a\",\n 7: \"#ffbe00\",\n 8: \"#ffb400\",\n 9: \"#ffaa00\",\n 10: \"#ff9200\",\n }),\n danger: createColorScale({\n 1: \"#fff0f0\",\n 2: \"#ffd4d4\",\n 3: \"#ffaaaa\",\n 4: \"#ff7e7e\",\n 5: \"#ff5454\",\n 6: \"#ff2a2a\",\n 7: \"#ff0000\",\n 8: \"#f40000\",\n 9: \"#ea0000\",\n 10: \"#d20000\",\n }),\n primary: createColorScale({\n 1: \"#e1f4f6\",\n 2: \"#b4e2e9\",\n 3: \"#86cfdc\",\n 4: \"#60bcd0\",\n 5: \"#46aeca\",\n 6: \"#31a1c4\",\n 7: \"#2994b7\",\n 8: \"#1e82a6\",\n 9: \"#1c7193\",\n 10: \"#125272\",\n }),\n} as const;\n","import { createTamagui } from \"@tamagui/core\";\nimport { animations } from \"./config/animations\";\nimport type { AlouetteColorScales } from \"./config/colorScales\";\nimport type { AlouetteFontsOptions } from \"./config/createAlouetteFonts\";\nimport { createAlouetteFonts } from \"./config/createAlouetteFonts\";\nimport type { createAlouetteTokens } from \"./config/createAlouetteTokens\";\nimport { media } from \"./config/media\";\nimport type { createAlouetteThemes } from \"./config/themes\";\n\nexport { createAlouetteTokens } from \"./config/createAlouetteTokens\";\n\nexport interface AlouetteTamaguiOptions {\n fonts?: AlouetteFontsOptions;\n}\n\nexport {\n createColorTheme,\n createAlouetteThemes,\n type FullTheme,\n} from \"./config/themes\";\n\nexport {\n defaultColorScales,\n createColorScale,\n type AlouetteColorScales,\n type AlouetteColorScale,\n} from \"./config/colorScales\";\n\nexport const createAlouetteTamagui = <\n const ColorScales extends AlouetteColorScales,\n const Tokens extends ReturnType<typeof createAlouetteTokens<ColorScales>>,\n const Themes extends ReturnType<typeof createAlouetteThemes<ColorScales>>,\n>(\n tokens: Tokens,\n themes: Themes,\n options: AlouetteTamaguiOptions = {},\n) => {\n return createTamagui({\n fonts: createAlouetteFonts(options.fonts),\n tokens,\n themes,\n media,\n animations,\n settings: {\n allowedStyleValues: \"somewhat-strict-web\",\n autocompleteSpecificTokens: \"except-special\",\n },\n components: [\"alouette\"],\n } as const);\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createAlouetteTamagui-browser.es.js","sources":["../src/config/animations.web.ts","../src/config/createAlouetteFonts.ts","../src/config/Breakpoints.ts","../src/config/media.ts","../src/config/createAlouetteTokens.ts","../src/config/utils/colorContrast.ts","../src/config/themes.ts","../src/config/colorScales.ts","../src/createAlouetteTamagui.ts"],"sourcesContent":["import { createAnimations } from \"@tamagui/animations-css\";\n\nexport const animations = createAnimations({\n fast: \"ease-in 150ms\",\n formElement: \"ease-in 600ms\",\n});\nconsole.log(\"animations: web\");\n","import { createFont } from \"@tamagui/core\";\n\nconst defaultHeadingFontSizes = { xl: 48, lg: 40, md: 32, sm: 24, xs: 18 };\nconst defaultBodyFontSizes = { xl: 24, lg: 18, md: 16, sm: 14, xs: 12 };\n\nconst roundWith1Precision = (value: number): number =>\n Math.round(value * 10) / 10;\n\nexport interface AlouetteFontsOptions {\n headingFontFamily?: string;\n headingFontSizes?: typeof defaultHeadingFontSizes;\n bodyFontFamily?: string;\n bodyFontSizes?: typeof defaultBodyFontSizes;\n}\n\nexport const createAlouetteFonts = ({\n headingFontFamily = \"Inter\",\n headingFontSizes = defaultHeadingFontSizes,\n bodyFontFamily = \"Inter\",\n bodyFontSizes = defaultBodyFontSizes,\n}: AlouetteFontsOptions = {}) => ({\n heading: createFont({\n family: headingFontFamily,\n weight: {\n regular: \"400\",\n bold: \"700\",\n black: \"900\",\n },\n face: {\n 400: { normal: `${headingFontFamily}Regular` },\n 700: { normal: `${headingFontFamily}Bold` },\n 900: { normal: `${headingFontFamily}Black` },\n },\n size: headingFontSizes,\n lineHeight: {\n xl: roundWith1Precision(1.1 * headingFontSizes.xl),\n lg: roundWith1Precision(1.1 * headingFontSizes.lg),\n md: roundWith1Precision(1.2 * headingFontSizes.md),\n sm: roundWith1Precision(1.3 * headingFontSizes.sm),\n xs: roundWith1Precision(1.3 * headingFontSizes.xs),\n },\n }),\n body: createFont({\n family: bodyFontFamily,\n weight: {\n regular: \"400\",\n bold: \"700\",\n black: \"900\",\n },\n face: {\n 400: { normal: `${bodyFontFamily}Regular` },\n 700: { normal: `${bodyFontFamily}Bold` },\n 900: { normal: `${bodyFontFamily}Black` },\n },\n size: bodyFontSizes,\n lineHeight: {\n xl: roundWith1Precision(1.4 * bodyFontSizes.xl),\n lg: roundWith1Precision(1.4 * bodyFontSizes.lg),\n md: roundWith1Precision(1.4 * bodyFontSizes.md),\n sm: roundWith1Precision(1.4 * bodyFontSizes.sm),\n xs: roundWith1Precision(1.4 * bodyFontSizes.xs),\n },\n }),\n});\n","export const Breakpoints = {\n /**\n * min-width: 0\n */\n BASE: 0,\n /**\n * min-width: 480px\n */\n SMALL: 480,\n /**\n * min-width: 768px\n */\n MEDIUM: 768,\n /**\n * min-width: 1024px\n */\n LARGE: 1024,\n /**\n * min-width: 1280px\n */\n WIDE: 1280,\n} as const;\n\nexport type Breakpoint = (typeof Breakpoints)[keyof typeof Breakpoints];\nexport type BreakpointNames = \"base\" | \"large\" | \"medium\" | \"small\" | \"wide\";\n\nexport enum BreakpointNameEnum {\n BASE = \"base\",\n SMALL = \"small\",\n MEDIUM = \"medium\",\n LARGE = \"large\",\n WIDE = \"wide\",\n}\n","import { Breakpoints } from \"./Breakpoints\";\n\nexport const media = {\n small: { minWidth: Breakpoints.SMALL },\n medium: { minWidth: Breakpoints.MEDIUM },\n large: { minWidth: Breakpoints.LARGE },\n wide: { minWidth: Breakpoints.WIDE },\n} as const;\n","import { createTokens } from \"@tamagui/core\";\nimport type { IntRange } from \"type-fest\";\nimport type {\n AlouetteColorScaleNumber,\n AlouetteColorScales,\n} from \"./colorScales\";\n\ntype AlouetteSize = IntRange<0, 64>;\ntype NegativeAlouetteSize = `-${AlouetteSize}`;\ntype AlouetteSizeRecord = Record<AlouetteSize, number>;\ntype NegativeAlouetteSizeRecord = Record<NegativeAlouetteSize, number>;\n\nconst createAlouetteSizes = <const N extends boolean>(\n spacing: number,\n negative: N,\n): N extends true ? NegativeAlouetteSizeRecord : AlouetteSizeRecord => {\n const MAX_SIZE = 64;\n const sizes: Partial<\n N extends true ? NegativeAlouetteSizeRecord : AlouetteSizeRecord\n > = {};\n for (let size = 0; size <= MAX_SIZE; size++) {\n (sizes as any)[negative ? `-${size}` : `${size}`] = size * spacing;\n }\n return sizes as N extends true\n ? NegativeAlouetteSizeRecord\n : AlouetteSizeRecord;\n};\n\ntype ColorScaleTokens<ColorScales extends AlouetteColorScales> = {\n [K in string &\n keyof ColorScales as `${K}.${AlouetteColorScaleNumber}`]: string; //(typeof colorScales)[K][AlouetteColorScaleNumber];\n};\n\nconst transformColorScalesToTokens = <ColorScales extends AlouetteColorScales>(\n colorScales: ColorScales,\n): ColorScaleTokens<ColorScales> => {\n return Object.fromEntries(\n Object.entries(colorScales).flatMap(([colorName, colorScale]) => {\n return Object.entries(colorScale).map(([scaleNumber, colorValue]) => {\n return [`${colorName}.${scaleNumber}`, colorValue];\n });\n }),\n ) as ColorScaleTokens<ColorScales>;\n};\n\nexport interface AlouetteTokensOptions {\n spacing?: number;\n}\n\nexport const createAlouetteTokens = <\n const ColorScales extends AlouetteColorScales,\n>(\n colorScales: ColorScales,\n { spacing = 4 }: AlouetteTokensOptions = {},\n) => {\n const sizes: AlouetteSizeRecord = createAlouetteSizes(spacing, false);\n const negativeSizes: NegativeAlouetteSizeRecord = createAlouetteSizes(\n -spacing,\n true,\n );\n\n return createTokens({\n color: {\n black: \"#000000\",\n white: \"#ffffff\",\n ...transformColorScalesToTokens(colorScales),\n },\n radius: {\n ...sizes,\n xs: spacing * 2,\n sm: spacing * 4,\n md: spacing * 8,\n },\n space: {\n ...sizes,\n ...negativeSizes,\n xs: spacing * 2,\n sm: spacing * 4,\n md: spacing * 8,\n },\n size: { ...sizes },\n zIndex: {},\n } as const);\n};\n","/**\n * Calculates relative luminance of a color\n * Based on WCAG 2.0 formula: https://www.w3.org/TR/WCAG20/#relativeluminancedef\n */\nconst getLuminance = (r: number, g: number, b: number) => {\n const values: [number, number, number] = [r, g, b].map((c) => {\n const s = c / 255;\n return s <= 0.039_28 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;\n }) as [number, number, number];\n\n return 0.2126 * values[0] + 0.7152 * values[1] + 0.0722 * values[2];\n};\n\n/**\n * Converts hex color to RGB values\n */\nconst hexToRgb = (hex: string) => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result?.[1] || !result[2] || !result[3]) return null;\n return {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n };\n};\n\n/**\n * Calculates contrast ratio between two colors\n * Returns ratio between 1 and 21\n */\nexport const getContrastRatio = (color1: string, color2: string) => {\n const rgb1 = hexToRgb(color1);\n const rgb2 = hexToRgb(color2);\n\n if (!rgb1 || !rgb2) return 0;\n\n const l1 = getLuminance(rgb1.r, rgb1.g, rgb1.b);\n const l2 = getLuminance(rgb2.r, rgb2.g, rgb2.b);\n\n const lighter = Math.max(l1, l2);\n const darker = Math.min(l1, l2);\n\n return (lighter + 0.05) / (darker + 0.05);\n};\n\n/**\n * Checks if contrast ratio meets WCAG requirements\n */\nexport const checkContrast = (\n foreground: string,\n background: string,\n level: \"AA\" | \"AAA\" = \"AA\",\n) => {\n const ratio = getContrastRatio(foreground, background);\n const minimumRatio = level === \"AA\" ? 4.5 : 7;\n\n return {\n ratio,\n passes: ratio >= minimumRatio,\n minimumRatio,\n };\n};\n\n/**\n * Development warning for contrast issues\n */\nexport const warnOnContrastIssues = (\n themeName: string,\n textColor: string,\n backgroundColor: string,\n) => {\n if (process.env.NODE_ENV !== \"development\") return;\n\n const result = checkContrast(textColor, backgroundColor);\n\n if (!result.passes) {\n console.warn(\n `[Alouette] Contrast warning in theme \"${themeName}\":\n Text color ${textColor} on background ${backgroundColor}\n has contrast ratio of ${result.ratio.toFixed(2)}.\n Minimum required: ${result.minimumRatio}\n This may cause accessibility issues.`,\n );\n }\n};\n","/* eslint-disable camelcase */\nimport type { Variable } from \"@tamagui/core\";\nimport type {\n AlouetteColorScaleNumber,\n AlouetteColorScales,\n} from \"./colorScales\";\nimport type { createAlouetteTokens } from \"./createAlouetteTokens\";\nimport { warnOnContrastIssues } from \"./utils/colorContrast\";\n\n// export interface MinimalRootTheme {\n// backgroundColor: Variable<string>;\n// textColor: Variable<string>;\n// }\n\n// export interface RootTheme {\n// backgroundColor: Variable<string>;\n// textColor: Variable<string>;\n// }\n\nexport interface ColorTheme {\n backgroundColor: Variable<string>;\n textColor: Variable<string>;\n contrastTextColor: Variable<string>;\n \"textColor:disabled\": Variable<string>;\n \"contrastTextColor:disabled\": Variable<string>;\n mainColor: Variable<string>;\n mainTextColor: Variable<string>;\n borderColor: Variable<string>;\n contrastBorderColor: Variable<string>;\n shadowColor: Variable<string>;\n\n \"interactive.linkTextColor\": Variable<string>;\n \"interactive.linkTextColor:hover\": Variable<string>;\n \"interactive.linkTextColor:focus\": Variable<string>;\n \"interactive.linkTextColor:press\": Variable<string>;\n \"interactive.linkTextColor:disabled\": Variable<string>;\n\n \"interactive.contained.backgroundColor\": Variable<string>;\n \"interactive.elevated.backgroundColor\": Variable<string>;\n \"interactive.elevated.shadowColor\": Variable<string>;\n \"interactive.elevated.borderColor\": Variable<string>;\n \"interactive.outlined.backgroundColor\": Variable<string>;\n \"interactive.outlined.borderColor\": Variable<string>;\n\n \"interactive.contained.backgroundColor:hover\": Variable<string>;\n \"interactive.elevated.backgroundColor:hover\": Variable<string>;\n \"interactive.elevated.borderColor:hover\": Variable<string>;\n \"interactive.outlined.backgroundColor:hover\": Variable<string>;\n \"interactive.outlined.borderColor:hover\": Variable<string>;\n\n \"interactive.contained.backgroundColor:focus\": Variable<string>;\n \"interactive.elevated.backgroundColor:focus\": Variable<string>;\n \"interactive.elevated.borderColor:focus\": Variable<string>;\n \"interactive.outlined.backgroundColor:focus\": Variable<string>;\n \"interactive.outlined.borderColor:focus\": Variable<string>;\n\n \"interactive.contained.backgroundColor:press\": Variable<string>;\n \"interactive.elevated.backgroundColor:press\": Variable<string>;\n \"interactive.elevated.borderColor:press\": Variable<string>;\n \"interactive.outlined.backgroundColor:press\": Variable<string>;\n \"interactive.outlined.borderColor:press\": Variable<string>;\n\n \"interactive.contained.backgroundColor:disabled\": Variable<string>;\n \"interactive.elevated.backgroundColor:disabled\": Variable<string>;\n \"interactive.elevated.shadowColor:disabled\": Variable<string>;\n \"interactive.elevated.borderColor:disabled\": Variable<string>;\n \"interactive.outlined.backgroundColor:disabled\": Variable<string>;\n \"interactive.outlined.borderColor:disabled\": Variable<string>;\n \"interactive.textColor:disabled\": Variable<string>;\n\n \"interactive.forms.textColor\": Variable<string>;\n \"interactive.forms.placeholderTextColor\": Variable<string>;\n // \"interactive.forms.backgroundColor\": Variable<string>,\n // \"interactive.forms.backgroundColor:hover\": Variable<string>,\n \"interactive.forms.backgroundColor:focus\": Variable<string>;\n \"interactive.forms.backgroundColor:press\": Variable<string>;\n \"interactive.forms.borderColor\": Variable<string>;\n \"interactive.forms.borderColor:hover\": Variable<string>;\n \"interactive.forms.borderColor:focus\": Variable<string>;\n \"interactive.forms.borderColor:press\": Variable<string>;\n \"interactive.forms.borderColor:disabled\": Variable<string>;\n}\n\n// export interface FullTheme extends ColorTheme, RootTheme {}\nexport type FullTheme = ColorTheme;\n\n// export const createRootTheme = <T extends MinimalRootTheme>(\n// theme: T,\n// ): FullTheme => {\n// return theme satisfies RootTheme as unknown as FullTheme;\n// };\n\nconst darkModeScaleNumbers: Record<\n AlouetteColorScaleNumber,\n AlouetteColorScaleNumber\n> = {\n 1: 10,\n 2: 9,\n 3: 8,\n 4: 7,\n 5: 6,\n 6: 5,\n 7: 4,\n 8: 3,\n 9: 2,\n 10: 1,\n};\n\nexport const createColorTheme = <const ColorScales extends AlouetteColorScales>(\n tokens: ReturnType<typeof createAlouetteTokens<ColorScales>>,\n colorScaleName: string & keyof ColorScales,\n mode: \"dark\" | \"light\" = \"light\",\n backgroundColor?: Variable<string>,\n textColor?: Variable<string>,\n contrastTextColor?: Variable<string>,\n) => {\n const alouetteTokens: ReturnType<\n typeof createAlouetteTokens<AlouetteColorScales>\n > = tokens;\n if (!backgroundColor) {\n backgroundColor =\n mode === \"dark\" ? alouetteTokens.color.black : alouetteTokens.color.white;\n }\n if (!textColor) {\n textColor =\n mode === \"dark\" ? alouetteTokens.color.white : alouetteTokens.color.black;\n }\n if (!contrastTextColor) {\n if (colorScaleName === \"grayscale\") {\n contrastTextColor =\n mode === \"dark\"\n ? alouetteTokens.color.white\n : alouetteTokens.color.black;\n } else {\n contrastTextColor =\n mode === \"dark\"\n ? alouetteTokens.color.black\n : alouetteTokens.color.white;\n }\n }\n\n const getColor = (\n lightScaleNumber: AlouetteColorScaleNumber,\n forceScaleNumber = colorScaleName,\n ) => {\n // Invert scale for dark mode\n const scaleNumber =\n mode === \"dark\"\n ? darkModeScaleNumbers[lightScaleNumber]\n : lightScaleNumber;\n\n return tokens.color[\n `${forceScaleNumber}.${scaleNumber}` as keyof typeof tokens.color\n ];\n };\n\n const contrastBorderColor = contrastTextColor;\n\n const theme = {\n backgroundColor,\n textColor,\n mainColor: getColor(6),\n mainTextColor: getColor(9),\n contrastTextColor,\n borderColor: getColor(8),\n contrastBorderColor,\n shadowColor: getColor(9),\n \"textColor:disabled\": getColor(3, \"grayscale\"),\n \"contrastTextColor:disabled\": getColor(7, \"grayscale\"),\n\n \"interactive.linkTextColor\": getColor(9),\n \"interactive.linkTextColor:hover\": getColor(7),\n \"interactive.linkTextColor:focus\": getColor(7),\n \"interactive.linkTextColor:press\": getColor(7),\n \"interactive.linkTextColor:disabled\": getColor(3, \"grayscale\"),\n\n \"interactive.contained.backgroundColor\": getColor(5),\n \"interactive.elevated.backgroundColor\": backgroundColor,\n \"interactive.elevated.shadowColor\": getColor(9),\n \"interactive.elevated.borderColor\": contrastBorderColor,\n \"interactive.outlined.backgroundColor\": backgroundColor,\n \"interactive.outlined.borderColor\": getColor(mode === \"dark\" ? 5 : 8),\n\n \"interactive.contained.backgroundColor:hover\": getColor(4),\n \"interactive.elevated.backgroundColor:hover\": getColor(1),\n \"interactive.elevated.borderColor:hover\": contrastBorderColor,\n \"interactive.outlined.backgroundColor:hover\": getColor(1),\n \"interactive.outlined.borderColor:hover\": getColor(mode === \"dark\" ? 5 : 7),\n\n \"interactive.contained.backgroundColor:focus\": getColor(4),\n \"interactive.elevated.backgroundColor:focus\": getColor(1),\n \"interactive.elevated.borderColor:focus\": contrastBorderColor,\n \"interactive.outlined.backgroundColor:focus\": getColor(1),\n \"interactive.outlined.borderColor:focus\": getColor(7),\n\n \"interactive.contained.backgroundColor:press\": getColor(2),\n \"interactive.elevated.backgroundColor:press\": getColor(3),\n \"interactive.elevated.borderColor:press\": contrastBorderColor,\n \"interactive.outlined.backgroundColor:press\": getColor(3),\n \"interactive.outlined.borderColor:press\": getColor(7),\n\n \"interactive.contained.backgroundColor:disabled\": getColor(3, \"grayscale\"),\n \"interactive.elevated.backgroundColor:disabled\": backgroundColor,\n \"interactive.elevated.shadowColor:disabled\": getColor(9, \"grayscale\"),\n \"interactive.elevated.borderColor:disabled\": getColor(3, \"grayscale\"),\n \"interactive.outlined.backgroundColor:disabled\": backgroundColor,\n \"interactive.outlined.borderColor:disabled\": getColor(3, \"grayscale\"),\n \"interactive.textColor:disabled\": getColor(7, \"grayscale\"),\n\n \"interactive.forms.textColor\": textColor,\n \"interactive.forms.placeholderTextColor\": getColor(3, \"grayscale\"),\n\n // \"interactive.forms.backgroundColor\": undefined,\n // \"interactive.forms.backgroundColor:hover\": undefined,\n \"interactive.forms.backgroundColor:focus\": getColor(1),\n \"interactive.forms.backgroundColor:press\": getColor(3),\n \"interactive.forms.borderColor\": getColor(10),\n \"interactive.forms.borderColor:hover\": getColor(7),\n \"interactive.forms.borderColor:focus\": getColor(7),\n \"interactive.forms.borderColor:press\": getColor(7),\n \"interactive.forms.borderColor:disabled\": getColor(3, \"grayscale\"),\n } satisfies FullTheme;\n\n if (process.env.NODE_ENV === \"development\") {\n // Check main text contrast\n warnOnContrastIssues(\n colorScaleName,\n theme.textColor.val,\n theme.backgroundColor.val,\n );\n }\n\n return theme;\n};\n\nexport const createAlouetteThemes = <\n const ColorScales extends AlouetteColorScales,\n>(\n tokens: ReturnType<typeof createAlouetteTokens<ColorScales>>,\n) => {\n const alouetteTokens: ReturnType<\n typeof createAlouetteTokens<AlouetteColorScales>\n > = tokens;\n return {\n light: createColorTheme(alouetteTokens, \"grayscale\", \"light\"),\n light_info: createColorTheme(alouetteTokens, \"info\", \"light\"),\n light_success: createColorTheme(alouetteTokens, \"success\", \"light\"),\n light_warning: createColorTheme(alouetteTokens, \"warning\", \"light\"),\n light_danger: createColorTheme(alouetteTokens, \"danger\", \"light\"),\n light_primary: createColorTheme(alouetteTokens, \"primary\", \"light\"),\n\n dark: createColorTheme(alouetteTokens, \"grayscale\", \"dark\"),\n dark_info: createColorTheme(alouetteTokens, \"info\", \"dark\"),\n dark_success: createColorTheme(alouetteTokens, \"success\", \"dark\"),\n dark_warning: createColorTheme(alouetteTokens, \"warning\", \"dark\"),\n dark_danger: createColorTheme(alouetteTokens, \"danger\", \"dark\"),\n dark_primary: createColorTheme(alouetteTokens, \"primary\", \"dark\"),\n } as const;\n};\n","import type { IntRange } from \"type-fest\";\n\n// scale inspired by https://www.radix-ui.com/colors/docs/palette-composition/understanding-the-scale\n// 1: interactive outlined background hover/focus color\n// 2: interactive contained background press color\n// 3: interactive outlined background press color\n// 4: interactive contained background hover/focus color\n// 5: interactive contained background color\n// 6: main color\n// 7: border hover/focus color\n// 8: border color\n// 9: text color / shadow color\n// 10: form border color (default)\n\nexport type AlouetteColorScaleNumber = IntRange<1, 11>;\n\nexport type AlouetteColorScale = Record<AlouetteColorScaleNumber, string>;\n\nexport const createColorScale = <const T extends AlouetteColorScale>(\n colorScale: T,\n): T => colorScale;\n\nexport type AlouetteColorScaleNames =\n | \"danger\"\n | \"grayscale\"\n | \"info\"\n | \"primary\"\n | \"success\"\n | \"warning\";\n\nexport type ColorScaleTokens = {\n [K in AlouetteColorScaleNames as `${K}.${AlouetteColorScaleNumber}`]: string; //(typeof colorScales)[K][AlouetteColorScaleNumber];\n};\n\nexport type AlouetteColorScales = Record<\n AlouetteColorScaleNames,\n AlouetteColorScale\n>;\n\n// Tool: https://m2.material.io/inline-tools/color/\n\nexport const defaultColorScales: AlouetteColorScales = {\n grayscale: createColorScale({\n 1: \"#faf9f8\",\n 2: \"#f4f3ef\",\n 3: \"#ebe9e5\",\n 4: \"#dedad2\",\n 5: \"#d1cdc5\",\n 6: \"#bab8ae\",\n 7: \"#aeaba3\",\n 8: \"#9c9a92\",\n 9: \"#8e8c83\",\n 10: \"#74726a\",\n }),\n success: createColorScale({\n 1: \"#f0f9f3\",\n 2: \"#d4f0d4\",\n 3: \"#a8e6a8\",\n 4: \"#7edc7e\",\n 5: \"#54d254\",\n 6: \"#2ac82a\",\n 7: \"#00be00\",\n 8: \"#00b400\",\n 9: \"#00aa00\",\n 10: \"#009200\",\n }),\n info: createColorScale({\n 1: \"#f0f9ff\",\n 2: \"#d4f0ff\",\n 3: \"#a8e6ff\",\n 4: \"#7edcff\",\n 5: \"#54d2ff\",\n 6: \"#2ac8ff\",\n 7: \"#00beff\",\n 8: \"#00b4ff\",\n 9: \"#00aaff\",\n 10: \"#0092ff\",\n }),\n warning: createColorScale({\n 1: \"#fff9f0\",\n 2: \"#fff0d4\",\n 3: \"#ffe6a8\",\n 4: \"#ffdc7e\",\n 5: \"#ffd254\",\n 6: \"#ffc82a\",\n 7: \"#ffbe00\",\n 8: \"#ffb400\",\n 9: \"#ffaa00\",\n 10: \"#ff9200\",\n }),\n danger: createColorScale({\n 1: \"#fff0f0\",\n 2: \"#ffd4d4\",\n 3: \"#ffaaaa\",\n 4: \"#ff7e7e\",\n 5: \"#ff5454\",\n 6: \"#ff2a2a\",\n 7: \"#ff0000\",\n 8: \"#f40000\",\n 9: \"#ea0000\",\n 10: \"#d20000\",\n }),\n primary: createColorScale({\n 1: \"#e1f4f6\",\n 2: \"#b4e2e9\",\n 3: \"#86cfdc\",\n 4: \"#60bcd0\",\n 5: \"#46aeca\",\n 6: \"#31a1c4\",\n 7: \"#2994b7\",\n 8: \"#1e82a6\",\n 9: \"#1c7193\",\n 10: \"#125272\",\n }),\n} as const;\n","import { createTamagui } from \"@tamagui/core\";\nimport { animations } from \"./config/animations\";\nimport type { AlouetteColorScales } from \"./config/colorScales\";\nimport type { AlouetteFontsOptions } from \"./config/createAlouetteFonts\";\nimport { createAlouetteFonts } from \"./config/createAlouetteFonts\";\nimport type { createAlouetteTokens } from \"./config/createAlouetteTokens\";\nimport { media } from \"./config/media\";\nimport type { createAlouetteThemes } from \"./config/themes\";\n\nexport { createAlouetteTokens } from \"./config/createAlouetteTokens\";\n\nexport interface AlouetteTamaguiOptions {\n fonts?: AlouetteFontsOptions;\n}\n\nexport {\n createColorTheme,\n createAlouetteThemes,\n type FullTheme,\n} from \"./config/themes\";\n\nexport {\n defaultColorScales,\n createColorScale,\n type AlouetteColorScales,\n type AlouetteColorScale,\n} from \"./config/colorScales\";\n\nexport const createAlouetteTamagui = <\n const ColorScales extends AlouetteColorScales,\n const Tokens extends ReturnType<typeof createAlouetteTokens<ColorScales>>,\n const Themes extends ReturnType<typeof createAlouetteThemes<ColorScales>>,\n>(\n tokens: Tokens,\n themes: Themes,\n options: AlouetteTamaguiOptions = {},\n) => {\n return createTamagui({\n fonts: createAlouetteFonts(options.fonts),\n tokens,\n themes,\n media,\n animations,\n settings: {\n allowedStyleValues: \"somewhat-strict-web\",\n autocompleteSpecificTokens: \"except-special\",\n },\n components: [\"alouette\"],\n } as const);\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
3
5
  const core = require('@tamagui/core');
4
6
  const animationsReactNative = require('@tamagui/animations-react-native');
5
7
 
@@ -19,9 +21,12 @@ const animations = animationsReactNative.createAnimations({
19
21
  });
20
22
  if ("navigator" in global) {
21
23
  const navigator = global.navigator;
22
- if (!navigator.userAgent?.startsWith("Node.js") && navigator.product !== "ReactNative") {
24
+ if (
25
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
26
+ !navigator.userAgent?.startsWith("Node.js") && navigator.product !== "ReactNative"
27
+ ) {
23
28
  throw new Error(
24
- `animations native is loaded in web: ${// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
29
+ `animations native is loaded in web: ${// eslint-disable-next-line @typescript-eslint/restrict-template-expressions, n/no-unsupported-features/node-builtins
25
30
  navigator.appName || navigator.product || navigator.userAgent}`
26
31
  );
27
32
  }
@@ -81,10 +86,6 @@ const createAlouetteFonts = ({
81
86
  });
82
87
 
83
88
  const Breakpoints = {
84
- /**
85
- * min-width: 0
86
- */
87
- BASE: 0,
88
89
  /**
89
90
  * min-width: 480px
90
91
  */
@@ -157,6 +158,55 @@ const createAlouetteTokens = (colorScales, { spacing = 4 } = {}) => {
157
158
  });
158
159
  };
159
160
 
161
+ const getLuminance = (r, g, b) => {
162
+ const values = [r, g, b].map((c) => {
163
+ const s = c / 255;
164
+ return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;
165
+ });
166
+ return 0.2126 * values[0] + 0.7152 * values[1] + 0.0722 * values[2];
167
+ };
168
+ const hexToRgb = (hex) => {
169
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
170
+ if (!result?.[1] || !result[2] || !result[3]) return null;
171
+ return {
172
+ r: parseInt(result[1], 16),
173
+ g: parseInt(result[2], 16),
174
+ b: parseInt(result[3], 16)
175
+ };
176
+ };
177
+ const getContrastRatio = (color1, color2) => {
178
+ const rgb1 = hexToRgb(color1);
179
+ const rgb2 = hexToRgb(color2);
180
+ if (!rgb1 || !rgb2) return 0;
181
+ const l1 = getLuminance(rgb1.r, rgb1.g, rgb1.b);
182
+ const l2 = getLuminance(rgb2.r, rgb2.g, rgb2.b);
183
+ const lighter = Math.max(l1, l2);
184
+ const darker = Math.min(l1, l2);
185
+ return (lighter + 0.05) / (darker + 0.05);
186
+ };
187
+ const checkContrast = (foreground, background, level = "AA") => {
188
+ const ratio = getContrastRatio(foreground, background);
189
+ const minimumRatio = level === "AA" ? 4.5 : 7;
190
+ return {
191
+ ratio,
192
+ passes: ratio >= minimumRatio,
193
+ minimumRatio
194
+ };
195
+ };
196
+ const warnOnContrastIssues = (themeName, textColor, backgroundColor) => {
197
+ if (process.env.NODE_ENV !== "development") return;
198
+ const result = checkContrast(textColor, backgroundColor);
199
+ if (!result.passes) {
200
+ console.warn(
201
+ `[Alouette] Contrast warning in theme "${themeName}":
202
+ Text color ${textColor} on background ${backgroundColor}
203
+ has contrast ratio of ${result.ratio.toFixed(2)}.
204
+ Minimum required: ${result.minimumRatio}
205
+ This may cause accessibility issues.`
206
+ );
207
+ }
208
+ };
209
+
160
210
  const darkModeScaleNumbers = {
161
211
  1: 10,
162
212
  2: 9,
@@ -189,7 +239,7 @@ const createColorTheme = (tokens, colorScaleName, mode = "light", backgroundColo
189
239
  return tokens.color[`${forceScaleNumber}.${scaleNumber}`];
190
240
  };
191
241
  const contrastBorderColor = contrastTextColor;
192
- return {
242
+ const theme = {
193
243
  backgroundColor,
194
244
  textColor,
195
245
  mainColor: getColor(6),
@@ -200,6 +250,11 @@ const createColorTheme = (tokens, colorScaleName, mode = "light", backgroundColo
200
250
  shadowColor: getColor(9),
201
251
  "textColor:disabled": getColor(3, "grayscale"),
202
252
  "contrastTextColor:disabled": getColor(7, "grayscale"),
253
+ "interactive.linkTextColor": getColor(9),
254
+ "interactive.linkTextColor:hover": getColor(7),
255
+ "interactive.linkTextColor:focus": getColor(7),
256
+ "interactive.linkTextColor:press": getColor(7),
257
+ "interactive.linkTextColor:disabled": getColor(3, "grayscale"),
203
258
  "interactive.contained.backgroundColor": getColor(5),
204
259
  "interactive.elevated.backgroundColor": backgroundColor,
205
260
  "interactive.elevated.shadowColor": getColor(9),
@@ -240,6 +295,14 @@ const createColorTheme = (tokens, colorScaleName, mode = "light", backgroundColo
240
295
  "interactive.forms.borderColor:press": getColor(7),
241
296
  "interactive.forms.borderColor:disabled": getColor(3, "grayscale")
242
297
  };
298
+ if (process.env.NODE_ENV === "development") {
299
+ warnOnContrastIssues(
300
+ colorScaleName,
301
+ theme.textColor.val,
302
+ theme.backgroundColor.val
303
+ );
304
+ }
305
+ return theme;
243
306
  };
244
307
  const createAlouetteThemes = (tokens) => {
245
308
  const alouetteTokens = tokens;
@@ -1 +1 @@
1
- {"version":3,"file":"createAlouetteTamagui-node20.cjs","sources":["../src/config/animations.ts","../src/config/createAlouetteFonts.ts","../src/config/Breakpoints.ts","../src/config/media.ts","../src/config/createAlouetteTokens.ts","../src/config/themes.ts","../src/config/colorScales.ts","../src/createAlouetteTamagui.ts"],"sourcesContent":["import { createAnimations } from \"@tamagui/animations-react-native\";\n\nexport const animations = createAnimations({\n fast: {\n type: \"timing\",\n duration: 100,\n damping: 20,\n stiffness: 250,\n },\n formElement: {\n type: \"timing\",\n duration: 600,\n damping: 20,\n stiffness: 250,\n },\n});\n\nif (\"navigator\" in global) {\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n const navigator = global.navigator as any;\n if (\n !navigator.userAgent?.startsWith(\"Node.js\") &&\n navigator.product !== \"ReactNative\"\n ) {\n throw new Error(\n `animations native is loaded in web: ${\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n navigator.appName || navigator.product || navigator.userAgent\n }`,\n );\n }\n}\n","import { createFont } from \"@tamagui/core\";\n\nconst defaultHeadingFontSizes = { xl: 48, lg: 40, md: 32, sm: 24, xs: 18 };\nconst defaultBodyFontSizes = { xl: 24, lg: 18, md: 16, sm: 14, xs: 12 };\n\nconst roundWith1Precision = (value: number): number =>\n Math.round(value * 10) / 10;\n\nexport interface AlouetteFontsOptions {\n headingFontFamily?: string;\n headingFontSizes?: typeof defaultHeadingFontSizes;\n bodyFontFamily?: string;\n bodyFontSizes?: typeof defaultBodyFontSizes;\n}\n\nexport const createAlouetteFonts = ({\n headingFontFamily = \"Inter\",\n headingFontSizes = defaultHeadingFontSizes,\n bodyFontFamily = \"Inter\",\n bodyFontSizes = defaultBodyFontSizes,\n}: AlouetteFontsOptions = {}) => ({\n heading: createFont({\n family: headingFontFamily,\n weight: {\n regular: \"400\",\n bold: \"700\",\n black: \"900\",\n },\n face: {\n 400: { normal: `${headingFontFamily}Regular` },\n 700: { normal: `${headingFontFamily}Bold` },\n 900: { normal: `${headingFontFamily}Black` },\n },\n size: headingFontSizes,\n lineHeight: {\n xl: roundWith1Precision(1.1 * headingFontSizes.xl),\n lg: roundWith1Precision(1.1 * headingFontSizes.lg),\n md: roundWith1Precision(1.2 * headingFontSizes.md),\n sm: roundWith1Precision(1.3 * headingFontSizes.sm),\n xs: roundWith1Precision(1.3 * headingFontSizes.xs),\n },\n }),\n body: createFont({\n family: bodyFontFamily,\n weight: {\n regular: \"400\",\n bold: \"700\",\n black: \"900\",\n },\n face: {\n 400: { normal: `${bodyFontFamily}Regular` },\n 700: { normal: `${bodyFontFamily}Bold` },\n 900: { normal: `${bodyFontFamily}Black` },\n },\n size: bodyFontSizes,\n lineHeight: {\n xl: roundWith1Precision(1.4 * bodyFontSizes.xl),\n lg: roundWith1Precision(1.4 * bodyFontSizes.lg),\n md: roundWith1Precision(1.4 * bodyFontSizes.md),\n sm: roundWith1Precision(1.4 * bodyFontSizes.sm),\n xs: roundWith1Precision(1.4 * bodyFontSizes.xs),\n },\n }),\n});\n","export const Breakpoints = {\n /**\n * min-width: 0\n */\n BASE: 0,\n /**\n * min-width: 480px\n */\n SMALL: 480,\n /**\n * min-width: 768px\n */\n MEDIUM: 768,\n /**\n * min-width: 1024px\n */\n LARGE: 1024,\n /**\n * min-width: 1280px\n */\n WIDE: 1280,\n} as const;\n\nexport type Breakpoint = (typeof Breakpoints)[keyof typeof Breakpoints];\nexport type BreakpointNames = \"base\" | \"large\" | \"medium\" | \"small\" | \"wide\";\n\nexport enum BreakpointNameEnum {\n BASE = \"base\",\n SMALL = \"small\",\n MEDIUM = \"medium\",\n LARGE = \"large\",\n WIDE = \"wide\",\n}\n","import { Breakpoints } from \"./Breakpoints\";\n\nexport const media = {\n small: { minWidth: Breakpoints.SMALL },\n medium: { minWidth: Breakpoints.MEDIUM },\n large: { minWidth: Breakpoints.LARGE },\n wide: { minWidth: Breakpoints.WIDE },\n} as const;\n","import { createTokens } from \"@tamagui/core\";\nimport type { IntRange } from \"type-fest\";\nimport type {\n AlouetteColorScaleNumber,\n AlouetteColorScales,\n} from \"./colorScales\";\n\ntype AlouetteSize = IntRange<0, 64>;\ntype NegativeAlouetteSize = `-${AlouetteSize}`;\ntype AlouetteSizeRecord = Record<AlouetteSize, number>;\ntype NegativeAlouetteSizeRecord = Record<NegativeAlouetteSize, number>;\n\nconst createAlouetteSizes = <const N extends boolean>(\n spacing: number,\n negative: N,\n): N extends true ? NegativeAlouetteSizeRecord : AlouetteSizeRecord => {\n const MAX_SIZE = 64;\n const sizes: Partial<\n N extends true ? NegativeAlouetteSizeRecord : AlouetteSizeRecord\n > = {};\n for (let size = 0; size <= MAX_SIZE; size++) {\n (sizes as any)[negative ? `-${size}` : `${size}`] = size * spacing;\n }\n return sizes as N extends true\n ? NegativeAlouetteSizeRecord\n : AlouetteSizeRecord;\n};\n\ntype ColorScaleTokens<ColorScales extends AlouetteColorScales> = {\n [K in string &\n keyof ColorScales as `${K}.${AlouetteColorScaleNumber}`]: string; //(typeof colorScales)[K][AlouetteColorScaleNumber];\n};\n\nconst transformColorScalesToTokens = <ColorScales extends AlouetteColorScales>(\n colorScales: ColorScales,\n): ColorScaleTokens<ColorScales> => {\n return Object.fromEntries(\n Object.entries(colorScales).flatMap(([colorName, colorScale]) => {\n return Object.entries(colorScale).map(([scaleNumber, colorValue]) => {\n return [`${colorName}.${scaleNumber}`, colorValue];\n });\n }),\n ) as ColorScaleTokens<ColorScales>;\n};\n\nexport interface AlouetteTokensOptions {\n spacing?: number;\n}\n\nexport const createAlouetteTokens = <\n const ColorScales extends AlouetteColorScales,\n>(\n colorScales: ColorScales,\n { spacing = 4 }: AlouetteTokensOptions = {},\n) => {\n const sizes: AlouetteSizeRecord = createAlouetteSizes(spacing, false);\n const negativeSizes: NegativeAlouetteSizeRecord = createAlouetteSizes(\n -spacing,\n true,\n );\n\n return createTokens({\n color: {\n black: \"#000000\",\n white: \"#ffffff\",\n ...transformColorScalesToTokens(colorScales),\n },\n radius: {\n ...sizes,\n xs: spacing * 2,\n sm: spacing * 4,\n md: spacing * 8,\n },\n space: {\n ...sizes,\n ...negativeSizes,\n xs: spacing * 2,\n sm: spacing * 4,\n md: spacing * 8,\n },\n size: { ...sizes },\n zIndex: {},\n } as const);\n};\n","/* eslint-disable camelcase */\nimport type { Variable } from \"@tamagui/core\";\nimport type {\n AlouetteColorScaleNumber,\n AlouetteColorScales,\n} from \"./colorScales\";\nimport type { createAlouetteTokens } from \"./createAlouetteTokens\";\n\n// export interface MinimalRootTheme {\n// backgroundColor: Variable<string>;\n// textColor: Variable<string>;\n// }\n\n// export interface RootTheme {\n// backgroundColor: Variable<string>;\n// textColor: Variable<string>;\n// }\n\nexport interface ColorTheme {\n backgroundColor: Variable<string>;\n textColor: Variable<string>;\n contrastTextColor: Variable<string>;\n \"textColor:disabled\": Variable<string>;\n \"contrastTextColor:disabled\": Variable<string>;\n mainColor: Variable<string>;\n mainTextColor: Variable<string>;\n borderColor: Variable<string>;\n contrastBorderColor: Variable<string>;\n shadowColor: Variable<string>;\n\n \"interactive.contained.backgroundColor\": Variable<string>;\n \"interactive.elevated.backgroundColor\": Variable<string>;\n \"interactive.elevated.shadowColor\": Variable<string>;\n \"interactive.elevated.borderColor\": Variable<string>;\n \"interactive.outlined.backgroundColor\": Variable<string>;\n \"interactive.outlined.borderColor\": Variable<string>;\n\n \"interactive.contained.backgroundColor:hover\": Variable<string>;\n \"interactive.elevated.backgroundColor:hover\": Variable<string>;\n \"interactive.elevated.borderColor:hover\": Variable<string>;\n \"interactive.outlined.backgroundColor:hover\": Variable<string>;\n \"interactive.outlined.borderColor:hover\": Variable<string>;\n\n \"interactive.contained.backgroundColor:focus\": Variable<string>;\n \"interactive.elevated.backgroundColor:focus\": Variable<string>;\n \"interactive.elevated.borderColor:focus\": Variable<string>;\n \"interactive.outlined.backgroundColor:focus\": Variable<string>;\n \"interactive.outlined.borderColor:focus\": Variable<string>;\n\n \"interactive.contained.backgroundColor:press\": Variable<string>;\n \"interactive.elevated.backgroundColor:press\": Variable<string>;\n \"interactive.elevated.borderColor:press\": Variable<string>;\n \"interactive.outlined.backgroundColor:press\": Variable<string>;\n \"interactive.outlined.borderColor:press\": Variable<string>;\n\n \"interactive.contained.backgroundColor:disabled\": Variable<string>;\n \"interactive.elevated.backgroundColor:disabled\": Variable<string>;\n \"interactive.elevated.shadowColor:disabled\": Variable<string>;\n \"interactive.elevated.borderColor:disabled\": Variable<string>;\n \"interactive.outlined.backgroundColor:disabled\": Variable<string>;\n \"interactive.outlined.borderColor:disabled\": Variable<string>;\n \"interactive.textColor:disabled\": Variable<string>;\n\n \"interactive.forms.textColor\": Variable<string>;\n \"interactive.forms.placeholderTextColor\": Variable<string>;\n // \"interactive.forms.backgroundColor\": Variable<string>,\n // \"interactive.forms.backgroundColor:hover\": Variable<string>,\n \"interactive.forms.backgroundColor:focus\": Variable<string>;\n \"interactive.forms.backgroundColor:press\": Variable<string>;\n \"interactive.forms.borderColor\": Variable<string>;\n \"interactive.forms.borderColor:hover\": Variable<string>;\n \"interactive.forms.borderColor:focus\": Variable<string>;\n \"interactive.forms.borderColor:press\": Variable<string>;\n \"interactive.forms.borderColor:disabled\": Variable<string>;\n}\n\n// export interface FullTheme extends ColorTheme, RootTheme {}\nexport type FullTheme = ColorTheme;\n\n// export const createRootTheme = <T extends MinimalRootTheme>(\n// theme: T,\n// ): FullTheme => {\n// return theme satisfies RootTheme as unknown as FullTheme;\n// };\n\nconst darkModeScaleNumbers: Record<\n AlouetteColorScaleNumber,\n AlouetteColorScaleNumber\n> = {\n 1: 10,\n 2: 9,\n 3: 8,\n 4: 7,\n 5: 6,\n 6: 5,\n 7: 4,\n 8: 3,\n 9: 2,\n 10: 1,\n};\n\nexport const createColorTheme = <const ColorScales extends AlouetteColorScales>(\n tokens: ReturnType<typeof createAlouetteTokens<ColorScales>>,\n colorScaleName: string & keyof ColorScales,\n mode: \"dark\" | \"light\" = \"light\",\n backgroundColor?: Variable<string>,\n textColor?: Variable<string>,\n contrastTextColor?: Variable<string>,\n) => {\n const alouetteTokens: ReturnType<\n typeof createAlouetteTokens<AlouetteColorScales>\n > = tokens;\n if (!backgroundColor) {\n backgroundColor =\n mode === \"dark\" ? alouetteTokens.color.black : alouetteTokens.color.white;\n }\n if (!textColor) {\n textColor =\n mode === \"dark\" ? alouetteTokens.color.white : alouetteTokens.color.black;\n }\n if (!contrastTextColor) {\n if (colorScaleName === \"grayscale\") {\n contrastTextColor =\n mode === \"dark\"\n ? alouetteTokens.color.white\n : alouetteTokens.color.black;\n } else {\n contrastTextColor =\n mode === \"dark\"\n ? alouetteTokens.color.black\n : alouetteTokens.color.white;\n }\n }\n\n const getColor = (\n lightScaleNumber: AlouetteColorScaleNumber,\n forceScaleNumber = colorScaleName,\n ) => {\n // Invert scale for dark mode\n const scaleNumber =\n mode === \"dark\"\n ? darkModeScaleNumbers[lightScaleNumber]\n : lightScaleNumber;\n\n return tokens.color[\n `${forceScaleNumber}.${scaleNumber}` as keyof typeof tokens.color\n ];\n };\n\n const contrastBorderColor = contrastTextColor;\n\n return {\n backgroundColor,\n textColor,\n mainColor: getColor(6),\n mainTextColor: getColor(9),\n contrastTextColor,\n borderColor: getColor(8),\n contrastBorderColor,\n shadowColor: getColor(9),\n \"textColor:disabled\": getColor(3, \"grayscale\"),\n \"contrastTextColor:disabled\": getColor(7, \"grayscale\"),\n\n \"interactive.contained.backgroundColor\": getColor(5),\n \"interactive.elevated.backgroundColor\": backgroundColor,\n \"interactive.elevated.shadowColor\": getColor(9),\n \"interactive.elevated.borderColor\": contrastBorderColor,\n \"interactive.outlined.backgroundColor\": backgroundColor,\n \"interactive.outlined.borderColor\": getColor(mode === \"dark\" ? 5 : 8),\n\n \"interactive.contained.backgroundColor:hover\": getColor(4),\n \"interactive.elevated.backgroundColor:hover\": getColor(1),\n \"interactive.elevated.borderColor:hover\": contrastBorderColor,\n \"interactive.outlined.backgroundColor:hover\": getColor(1),\n \"interactive.outlined.borderColor:hover\": getColor(mode === \"dark\" ? 5 : 7),\n\n \"interactive.contained.backgroundColor:focus\": getColor(4),\n \"interactive.elevated.backgroundColor:focus\": getColor(1),\n \"interactive.elevated.borderColor:focus\": contrastBorderColor,\n \"interactive.outlined.backgroundColor:focus\": getColor(1),\n \"interactive.outlined.borderColor:focus\": getColor(7),\n\n \"interactive.contained.backgroundColor:press\": getColor(2),\n \"interactive.elevated.backgroundColor:press\": getColor(3),\n \"interactive.elevated.borderColor:press\": contrastBorderColor,\n \"interactive.outlined.backgroundColor:press\": getColor(3),\n \"interactive.outlined.borderColor:press\": getColor(7),\n\n \"interactive.contained.backgroundColor:disabled\": getColor(3, \"grayscale\"),\n \"interactive.elevated.backgroundColor:disabled\": backgroundColor,\n \"interactive.elevated.shadowColor:disabled\": getColor(9, \"grayscale\"),\n \"interactive.elevated.borderColor:disabled\": getColor(3, \"grayscale\"),\n \"interactive.outlined.backgroundColor:disabled\": backgroundColor,\n \"interactive.outlined.borderColor:disabled\": getColor(3, \"grayscale\"),\n \"interactive.textColor:disabled\": getColor(7, \"grayscale\"),\n\n \"interactive.forms.textColor\": textColor,\n \"interactive.forms.placeholderTextColor\": getColor(3, \"grayscale\"),\n\n // \"interactive.forms.backgroundColor\": undefined,\n // \"interactive.forms.backgroundColor:hover\": undefined,\n \"interactive.forms.backgroundColor:focus\": getColor(1),\n \"interactive.forms.backgroundColor:press\": getColor(3),\n \"interactive.forms.borderColor\": getColor(10),\n \"interactive.forms.borderColor:hover\": getColor(7),\n \"interactive.forms.borderColor:focus\": getColor(7),\n \"interactive.forms.borderColor:press\": getColor(7),\n \"interactive.forms.borderColor:disabled\": getColor(3, \"grayscale\"),\n } satisfies FullTheme;\n};\n\nexport const createAlouetteThemes = <\n const ColorScales extends AlouetteColorScales,\n>(\n tokens: ReturnType<typeof createAlouetteTokens<ColorScales>>,\n) => {\n const alouetteTokens: ReturnType<\n typeof createAlouetteTokens<AlouetteColorScales>\n > = tokens;\n return {\n light: createColorTheme(alouetteTokens, \"grayscale\", \"light\"),\n light_info: createColorTheme(alouetteTokens, \"info\", \"light\"),\n light_success: createColorTheme(alouetteTokens, \"success\", \"light\"),\n light_warning: createColorTheme(alouetteTokens, \"warning\", \"light\"),\n light_danger: createColorTheme(alouetteTokens, \"danger\", \"light\"),\n light_primary: createColorTheme(alouetteTokens, \"primary\", \"light\"),\n\n dark: createColorTheme(alouetteTokens, \"grayscale\", \"dark\"),\n dark_info: createColorTheme(alouetteTokens, \"info\", \"dark\"),\n dark_success: createColorTheme(alouetteTokens, \"success\", \"dark\"),\n dark_warning: createColorTheme(alouetteTokens, \"warning\", \"dark\"),\n dark_danger: createColorTheme(alouetteTokens, \"danger\", \"dark\"),\n dark_primary: createColorTheme(alouetteTokens, \"primary\", \"dark\"),\n } as const;\n};\n","import type { IntRange } from \"type-fest\";\n\n// scale inspired by https://www.radix-ui.com/colors/docs/palette-composition/understanding-the-scale\n// 1: interactive outlined background hover/focus color\n// 2: interactive contained background press color\n// 3: interactive outlined background press color\n// 4: interactive contained background hover/focus color\n// 5: interactive contained background color\n// 6: main color\n// 7: border hover/focus color\n// 8: border color\n// 9: text color / shadow color\n// 10: form border color (default)\n\nexport type AlouetteColorScaleNumber = IntRange<1, 11>;\n\nexport type AlouetteColorScale = Record<AlouetteColorScaleNumber, string>;\n\nexport const createColorScale = <const T extends AlouetteColorScale>(\n colorScale: T,\n): T => colorScale;\n\nexport type AlouetteColorScaleNames =\n | \"danger\"\n | \"grayscale\"\n | \"info\"\n | \"primary\"\n | \"success\"\n | \"warning\";\n\nexport type ColorScaleTokens = {\n [K in AlouetteColorScaleNames as `${K}.${AlouetteColorScaleNumber}`]: string; //(typeof colorScales)[K][AlouetteColorScaleNumber];\n};\n\nexport type AlouetteColorScales = Record<\n AlouetteColorScaleNames,\n AlouetteColorScale\n>;\n\n// Tool: https://m2.material.io/inline-tools/color/\n\nexport const defaultColorScales: AlouetteColorScales = {\n grayscale: createColorScale({\n 1: \"#faf9f8\",\n 2: \"#f4f3ef\",\n 3: \"#ebe9e5\",\n 4: \"#dedad2\",\n 5: \"#d1cdc5\",\n 6: \"#bab8ae\",\n 7: \"#aeaba3\",\n 8: \"#9c9a92\",\n 9: \"#8e8c83\",\n 10: \"#74726a\",\n }),\n success: createColorScale({\n 1: \"#f0f9f3\",\n 2: \"#d4f0d4\",\n 3: \"#a8e6a8\",\n 4: \"#7edc7e\",\n 5: \"#54d254\",\n 6: \"#2ac82a\",\n 7: \"#00be00\",\n 8: \"#00b400\",\n 9: \"#00aa00\",\n 10: \"#009200\",\n }),\n info: createColorScale({\n 1: \"#f0f9ff\",\n 2: \"#d4f0ff\",\n 3: \"#a8e6ff\",\n 4: \"#7edcff\",\n 5: \"#54d2ff\",\n 6: \"#2ac8ff\",\n 7: \"#00beff\",\n 8: \"#00b4ff\",\n 9: \"#00aaff\",\n 10: \"#0092ff\",\n }),\n warning: createColorScale({\n 1: \"#fff9f0\",\n 2: \"#fff0d4\",\n 3: \"#ffe6a8\",\n 4: \"#ffdc7e\",\n 5: \"#ffd254\",\n 6: \"#ffc82a\",\n 7: \"#ffbe00\",\n 8: \"#ffb400\",\n 9: \"#ffaa00\",\n 10: \"#ff9200\",\n }),\n danger: createColorScale({\n 1: \"#fff0f0\",\n 2: \"#ffd4d4\",\n 3: \"#ffaaaa\",\n 4: \"#ff7e7e\",\n 5: \"#ff5454\",\n 6: \"#ff2a2a\",\n 7: \"#ff0000\",\n 8: \"#f40000\",\n 9: \"#ea0000\",\n 10: \"#d20000\",\n }),\n primary: createColorScale({\n 1: \"#e1f4f6\",\n 2: \"#b4e2e9\",\n 3: \"#86cfdc\",\n 4: \"#60bcd0\",\n 5: \"#46aeca\",\n 6: \"#31a1c4\",\n 7: \"#2994b7\",\n 8: \"#1e82a6\",\n 9: \"#1c7193\",\n 10: \"#125272\",\n }),\n} as const;\n","import { createTamagui } from \"@tamagui/core\";\nimport { animations } from \"./config/animations\";\nimport type { AlouetteColorScales } from \"./config/colorScales\";\nimport type { AlouetteFontsOptions } from \"./config/createAlouetteFonts\";\nimport { createAlouetteFonts } from \"./config/createAlouetteFonts\";\nimport type { createAlouetteTokens } from \"./config/createAlouetteTokens\";\nimport { media } from \"./config/media\";\nimport type { createAlouetteThemes } from \"./config/themes\";\n\nexport { createAlouetteTokens } from \"./config/createAlouetteTokens\";\n\nexport interface AlouetteTamaguiOptions {\n fonts?: AlouetteFontsOptions;\n}\n\nexport {\n createColorTheme,\n createAlouetteThemes,\n type FullTheme,\n} from \"./config/themes\";\n\nexport {\n defaultColorScales,\n createColorScale,\n type AlouetteColorScales,\n type AlouetteColorScale,\n} from \"./config/colorScales\";\n\nexport const createAlouetteTamagui = <\n const ColorScales extends AlouetteColorScales,\n const Tokens extends ReturnType<typeof createAlouetteTokens<ColorScales>>,\n const Themes extends ReturnType<typeof createAlouetteThemes<ColorScales>>,\n>(\n tokens: Tokens,\n themes: Themes,\n options: AlouetteTamaguiOptions = {},\n) => {\n return createTamagui({\n fonts: createAlouetteFonts(options.fonts),\n tokens,\n themes,\n media,\n animations,\n settings: {\n allowedStyleValues: \"somewhat-strict-web\",\n autocompleteSpecificTokens: \"except-special\",\n },\n components: [\"alouette\"],\n } as const);\n};\n"],"names":["createAnimations","createFont","createTokens","createTamagui"],"mappings":"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"}
1
+ {"version":3,"file":"createAlouetteTamagui-node20.cjs","sources":["../src/config/animations.ts","../src/config/createAlouetteFonts.ts","../src/config/Breakpoints.ts","../src/config/media.ts","../src/config/createAlouetteTokens.ts","../src/config/utils/colorContrast.ts","../src/config/themes.ts","../src/config/colorScales.ts","../src/createAlouetteTamagui.ts"],"sourcesContent":["/* eslint-disable unicorn/prefer-global-this */\nimport { createAnimations } from \"@tamagui/animations-react-native\";\n\nexport const animations = createAnimations({\n fast: {\n type: \"timing\",\n duration: 100,\n damping: 20,\n stiffness: 250,\n },\n formElement: {\n type: \"timing\",\n duration: 600,\n damping: 20,\n stiffness: 250,\n },\n});\n\nif (\"navigator\" in global) {\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n const navigator = global.navigator as any;\n if (\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n !navigator.userAgent?.startsWith(\"Node.js\") &&\n navigator.product !== \"ReactNative\"\n ) {\n throw new Error(\n `animations native is loaded in web: ${\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, n/no-unsupported-features/node-builtins\n navigator.appName || navigator.product || navigator.userAgent\n }`,\n );\n }\n}\n","import { createFont } from \"@tamagui/core\";\n\nconst defaultHeadingFontSizes = { xl: 48, lg: 40, md: 32, sm: 24, xs: 18 };\nconst defaultBodyFontSizes = { xl: 24, lg: 18, md: 16, sm: 14, xs: 12 };\n\nconst roundWith1Precision = (value: number): number =>\n Math.round(value * 10) / 10;\n\nexport interface AlouetteFontsOptions {\n headingFontFamily?: string;\n headingFontSizes?: typeof defaultHeadingFontSizes;\n bodyFontFamily?: string;\n bodyFontSizes?: typeof defaultBodyFontSizes;\n}\n\nexport const createAlouetteFonts = ({\n headingFontFamily = \"Inter\",\n headingFontSizes = defaultHeadingFontSizes,\n bodyFontFamily = \"Inter\",\n bodyFontSizes = defaultBodyFontSizes,\n}: AlouetteFontsOptions = {}) => ({\n heading: createFont({\n family: headingFontFamily,\n weight: {\n regular: \"400\",\n bold: \"700\",\n black: \"900\",\n },\n face: {\n 400: { normal: `${headingFontFamily}Regular` },\n 700: { normal: `${headingFontFamily}Bold` },\n 900: { normal: `${headingFontFamily}Black` },\n },\n size: headingFontSizes,\n lineHeight: {\n xl: roundWith1Precision(1.1 * headingFontSizes.xl),\n lg: roundWith1Precision(1.1 * headingFontSizes.lg),\n md: roundWith1Precision(1.2 * headingFontSizes.md),\n sm: roundWith1Precision(1.3 * headingFontSizes.sm),\n xs: roundWith1Precision(1.3 * headingFontSizes.xs),\n },\n }),\n body: createFont({\n family: bodyFontFamily,\n weight: {\n regular: \"400\",\n bold: \"700\",\n black: \"900\",\n },\n face: {\n 400: { normal: `${bodyFontFamily}Regular` },\n 700: { normal: `${bodyFontFamily}Bold` },\n 900: { normal: `${bodyFontFamily}Black` },\n },\n size: bodyFontSizes,\n lineHeight: {\n xl: roundWith1Precision(1.4 * bodyFontSizes.xl),\n lg: roundWith1Precision(1.4 * bodyFontSizes.lg),\n md: roundWith1Precision(1.4 * bodyFontSizes.md),\n sm: roundWith1Precision(1.4 * bodyFontSizes.sm),\n xs: roundWith1Precision(1.4 * bodyFontSizes.xs),\n },\n }),\n});\n","export const Breakpoints = {\n /**\n * min-width: 0\n */\n BASE: 0,\n /**\n * min-width: 480px\n */\n SMALL: 480,\n /**\n * min-width: 768px\n */\n MEDIUM: 768,\n /**\n * min-width: 1024px\n */\n LARGE: 1024,\n /**\n * min-width: 1280px\n */\n WIDE: 1280,\n} as const;\n\nexport type Breakpoint = (typeof Breakpoints)[keyof typeof Breakpoints];\nexport type BreakpointNames = \"base\" | \"large\" | \"medium\" | \"small\" | \"wide\";\n\nexport enum BreakpointNameEnum {\n BASE = \"base\",\n SMALL = \"small\",\n MEDIUM = \"medium\",\n LARGE = \"large\",\n WIDE = \"wide\",\n}\n","import { Breakpoints } from \"./Breakpoints\";\n\nexport const media = {\n small: { minWidth: Breakpoints.SMALL },\n medium: { minWidth: Breakpoints.MEDIUM },\n large: { minWidth: Breakpoints.LARGE },\n wide: { minWidth: Breakpoints.WIDE },\n} as const;\n","import { createTokens } from \"@tamagui/core\";\nimport type { IntRange } from \"type-fest\";\nimport type {\n AlouetteColorScaleNumber,\n AlouetteColorScales,\n} from \"./colorScales\";\n\ntype AlouetteSize = IntRange<0, 64>;\ntype NegativeAlouetteSize = `-${AlouetteSize}`;\ntype AlouetteSizeRecord = Record<AlouetteSize, number>;\ntype NegativeAlouetteSizeRecord = Record<NegativeAlouetteSize, number>;\n\nconst createAlouetteSizes = <const N extends boolean>(\n spacing: number,\n negative: N,\n): N extends true ? NegativeAlouetteSizeRecord : AlouetteSizeRecord => {\n const MAX_SIZE = 64;\n const sizes: Partial<\n N extends true ? NegativeAlouetteSizeRecord : AlouetteSizeRecord\n > = {};\n for (let size = 0; size <= MAX_SIZE; size++) {\n (sizes as any)[negative ? `-${size}` : `${size}`] = size * spacing;\n }\n return sizes as N extends true\n ? NegativeAlouetteSizeRecord\n : AlouetteSizeRecord;\n};\n\ntype ColorScaleTokens<ColorScales extends AlouetteColorScales> = {\n [K in string &\n keyof ColorScales as `${K}.${AlouetteColorScaleNumber}`]: string; //(typeof colorScales)[K][AlouetteColorScaleNumber];\n};\n\nconst transformColorScalesToTokens = <ColorScales extends AlouetteColorScales>(\n colorScales: ColorScales,\n): ColorScaleTokens<ColorScales> => {\n return Object.fromEntries(\n Object.entries(colorScales).flatMap(([colorName, colorScale]) => {\n return Object.entries(colorScale).map(([scaleNumber, colorValue]) => {\n return [`${colorName}.${scaleNumber}`, colorValue];\n });\n }),\n ) as ColorScaleTokens<ColorScales>;\n};\n\nexport interface AlouetteTokensOptions {\n spacing?: number;\n}\n\nexport const createAlouetteTokens = <\n const ColorScales extends AlouetteColorScales,\n>(\n colorScales: ColorScales,\n { spacing = 4 }: AlouetteTokensOptions = {},\n) => {\n const sizes: AlouetteSizeRecord = createAlouetteSizes(spacing, false);\n const negativeSizes: NegativeAlouetteSizeRecord = createAlouetteSizes(\n -spacing,\n true,\n );\n\n return createTokens({\n color: {\n black: \"#000000\",\n white: \"#ffffff\",\n ...transformColorScalesToTokens(colorScales),\n },\n radius: {\n ...sizes,\n xs: spacing * 2,\n sm: spacing * 4,\n md: spacing * 8,\n },\n space: {\n ...sizes,\n ...negativeSizes,\n xs: spacing * 2,\n sm: spacing * 4,\n md: spacing * 8,\n },\n size: { ...sizes },\n zIndex: {},\n } as const);\n};\n","/**\n * Calculates relative luminance of a color\n * Based on WCAG 2.0 formula: https://www.w3.org/TR/WCAG20/#relativeluminancedef\n */\nconst getLuminance = (r: number, g: number, b: number) => {\n const values: [number, number, number] = [r, g, b].map((c) => {\n const s = c / 255;\n return s <= 0.039_28 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;\n }) as [number, number, number];\n\n return 0.2126 * values[0] + 0.7152 * values[1] + 0.0722 * values[2];\n};\n\n/**\n * Converts hex color to RGB values\n */\nconst hexToRgb = (hex: string) => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result?.[1] || !result[2] || !result[3]) return null;\n return {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n };\n};\n\n/**\n * Calculates contrast ratio between two colors\n * Returns ratio between 1 and 21\n */\nexport const getContrastRatio = (color1: string, color2: string) => {\n const rgb1 = hexToRgb(color1);\n const rgb2 = hexToRgb(color2);\n\n if (!rgb1 || !rgb2) return 0;\n\n const l1 = getLuminance(rgb1.r, rgb1.g, rgb1.b);\n const l2 = getLuminance(rgb2.r, rgb2.g, rgb2.b);\n\n const lighter = Math.max(l1, l2);\n const darker = Math.min(l1, l2);\n\n return (lighter + 0.05) / (darker + 0.05);\n};\n\n/**\n * Checks if contrast ratio meets WCAG requirements\n */\nexport const checkContrast = (\n foreground: string,\n background: string,\n level: \"AA\" | \"AAA\" = \"AA\",\n) => {\n const ratio = getContrastRatio(foreground, background);\n const minimumRatio = level === \"AA\" ? 4.5 : 7;\n\n return {\n ratio,\n passes: ratio >= minimumRatio,\n minimumRatio,\n };\n};\n\n/**\n * Development warning for contrast issues\n */\nexport const warnOnContrastIssues = (\n themeName: string,\n textColor: string,\n backgroundColor: string,\n) => {\n if (process.env.NODE_ENV !== \"development\") return;\n\n const result = checkContrast(textColor, backgroundColor);\n\n if (!result.passes) {\n console.warn(\n `[Alouette] Contrast warning in theme \"${themeName}\":\n Text color ${textColor} on background ${backgroundColor}\n has contrast ratio of ${result.ratio.toFixed(2)}.\n Minimum required: ${result.minimumRatio}\n This may cause accessibility issues.`,\n );\n }\n};\n","/* eslint-disable camelcase */\nimport type { Variable } from \"@tamagui/core\";\nimport type {\n AlouetteColorScaleNumber,\n AlouetteColorScales,\n} from \"./colorScales\";\nimport type { createAlouetteTokens } from \"./createAlouetteTokens\";\nimport { warnOnContrastIssues } from \"./utils/colorContrast\";\n\n// export interface MinimalRootTheme {\n// backgroundColor: Variable<string>;\n// textColor: Variable<string>;\n// }\n\n// export interface RootTheme {\n// backgroundColor: Variable<string>;\n// textColor: Variable<string>;\n// }\n\nexport interface ColorTheme {\n backgroundColor: Variable<string>;\n textColor: Variable<string>;\n contrastTextColor: Variable<string>;\n \"textColor:disabled\": Variable<string>;\n \"contrastTextColor:disabled\": Variable<string>;\n mainColor: Variable<string>;\n mainTextColor: Variable<string>;\n borderColor: Variable<string>;\n contrastBorderColor: Variable<string>;\n shadowColor: Variable<string>;\n\n \"interactive.linkTextColor\": Variable<string>;\n \"interactive.linkTextColor:hover\": Variable<string>;\n \"interactive.linkTextColor:focus\": Variable<string>;\n \"interactive.linkTextColor:press\": Variable<string>;\n \"interactive.linkTextColor:disabled\": Variable<string>;\n\n \"interactive.contained.backgroundColor\": Variable<string>;\n \"interactive.elevated.backgroundColor\": Variable<string>;\n \"interactive.elevated.shadowColor\": Variable<string>;\n \"interactive.elevated.borderColor\": Variable<string>;\n \"interactive.outlined.backgroundColor\": Variable<string>;\n \"interactive.outlined.borderColor\": Variable<string>;\n\n \"interactive.contained.backgroundColor:hover\": Variable<string>;\n \"interactive.elevated.backgroundColor:hover\": Variable<string>;\n \"interactive.elevated.borderColor:hover\": Variable<string>;\n \"interactive.outlined.backgroundColor:hover\": Variable<string>;\n \"interactive.outlined.borderColor:hover\": Variable<string>;\n\n \"interactive.contained.backgroundColor:focus\": Variable<string>;\n \"interactive.elevated.backgroundColor:focus\": Variable<string>;\n \"interactive.elevated.borderColor:focus\": Variable<string>;\n \"interactive.outlined.backgroundColor:focus\": Variable<string>;\n \"interactive.outlined.borderColor:focus\": Variable<string>;\n\n \"interactive.contained.backgroundColor:press\": Variable<string>;\n \"interactive.elevated.backgroundColor:press\": Variable<string>;\n \"interactive.elevated.borderColor:press\": Variable<string>;\n \"interactive.outlined.backgroundColor:press\": Variable<string>;\n \"interactive.outlined.borderColor:press\": Variable<string>;\n\n \"interactive.contained.backgroundColor:disabled\": Variable<string>;\n \"interactive.elevated.backgroundColor:disabled\": Variable<string>;\n \"interactive.elevated.shadowColor:disabled\": Variable<string>;\n \"interactive.elevated.borderColor:disabled\": Variable<string>;\n \"interactive.outlined.backgroundColor:disabled\": Variable<string>;\n \"interactive.outlined.borderColor:disabled\": Variable<string>;\n \"interactive.textColor:disabled\": Variable<string>;\n\n \"interactive.forms.textColor\": Variable<string>;\n \"interactive.forms.placeholderTextColor\": Variable<string>;\n // \"interactive.forms.backgroundColor\": Variable<string>,\n // \"interactive.forms.backgroundColor:hover\": Variable<string>,\n \"interactive.forms.backgroundColor:focus\": Variable<string>;\n \"interactive.forms.backgroundColor:press\": Variable<string>;\n \"interactive.forms.borderColor\": Variable<string>;\n \"interactive.forms.borderColor:hover\": Variable<string>;\n \"interactive.forms.borderColor:focus\": Variable<string>;\n \"interactive.forms.borderColor:press\": Variable<string>;\n \"interactive.forms.borderColor:disabled\": Variable<string>;\n}\n\n// export interface FullTheme extends ColorTheme, RootTheme {}\nexport type FullTheme = ColorTheme;\n\n// export const createRootTheme = <T extends MinimalRootTheme>(\n// theme: T,\n// ): FullTheme => {\n// return theme satisfies RootTheme as unknown as FullTheme;\n// };\n\nconst darkModeScaleNumbers: Record<\n AlouetteColorScaleNumber,\n AlouetteColorScaleNumber\n> = {\n 1: 10,\n 2: 9,\n 3: 8,\n 4: 7,\n 5: 6,\n 6: 5,\n 7: 4,\n 8: 3,\n 9: 2,\n 10: 1,\n};\n\nexport const createColorTheme = <const ColorScales extends AlouetteColorScales>(\n tokens: ReturnType<typeof createAlouetteTokens<ColorScales>>,\n colorScaleName: string & keyof ColorScales,\n mode: \"dark\" | \"light\" = \"light\",\n backgroundColor?: Variable<string>,\n textColor?: Variable<string>,\n contrastTextColor?: Variable<string>,\n) => {\n const alouetteTokens: ReturnType<\n typeof createAlouetteTokens<AlouetteColorScales>\n > = tokens;\n if (!backgroundColor) {\n backgroundColor =\n mode === \"dark\" ? alouetteTokens.color.black : alouetteTokens.color.white;\n }\n if (!textColor) {\n textColor =\n mode === \"dark\" ? alouetteTokens.color.white : alouetteTokens.color.black;\n }\n if (!contrastTextColor) {\n if (colorScaleName === \"grayscale\") {\n contrastTextColor =\n mode === \"dark\"\n ? alouetteTokens.color.white\n : alouetteTokens.color.black;\n } else {\n contrastTextColor =\n mode === \"dark\"\n ? alouetteTokens.color.black\n : alouetteTokens.color.white;\n }\n }\n\n const getColor = (\n lightScaleNumber: AlouetteColorScaleNumber,\n forceScaleNumber = colorScaleName,\n ) => {\n // Invert scale for dark mode\n const scaleNumber =\n mode === \"dark\"\n ? darkModeScaleNumbers[lightScaleNumber]\n : lightScaleNumber;\n\n return tokens.color[\n `${forceScaleNumber}.${scaleNumber}` as keyof typeof tokens.color\n ];\n };\n\n const contrastBorderColor = contrastTextColor;\n\n const theme = {\n backgroundColor,\n textColor,\n mainColor: getColor(6),\n mainTextColor: getColor(9),\n contrastTextColor,\n borderColor: getColor(8),\n contrastBorderColor,\n shadowColor: getColor(9),\n \"textColor:disabled\": getColor(3, \"grayscale\"),\n \"contrastTextColor:disabled\": getColor(7, \"grayscale\"),\n\n \"interactive.linkTextColor\": getColor(9),\n \"interactive.linkTextColor:hover\": getColor(7),\n \"interactive.linkTextColor:focus\": getColor(7),\n \"interactive.linkTextColor:press\": getColor(7),\n \"interactive.linkTextColor:disabled\": getColor(3, \"grayscale\"),\n\n \"interactive.contained.backgroundColor\": getColor(5),\n \"interactive.elevated.backgroundColor\": backgroundColor,\n \"interactive.elevated.shadowColor\": getColor(9),\n \"interactive.elevated.borderColor\": contrastBorderColor,\n \"interactive.outlined.backgroundColor\": backgroundColor,\n \"interactive.outlined.borderColor\": getColor(mode === \"dark\" ? 5 : 8),\n\n \"interactive.contained.backgroundColor:hover\": getColor(4),\n \"interactive.elevated.backgroundColor:hover\": getColor(1),\n \"interactive.elevated.borderColor:hover\": contrastBorderColor,\n \"interactive.outlined.backgroundColor:hover\": getColor(1),\n \"interactive.outlined.borderColor:hover\": getColor(mode === \"dark\" ? 5 : 7),\n\n \"interactive.contained.backgroundColor:focus\": getColor(4),\n \"interactive.elevated.backgroundColor:focus\": getColor(1),\n \"interactive.elevated.borderColor:focus\": contrastBorderColor,\n \"interactive.outlined.backgroundColor:focus\": getColor(1),\n \"interactive.outlined.borderColor:focus\": getColor(7),\n\n \"interactive.contained.backgroundColor:press\": getColor(2),\n \"interactive.elevated.backgroundColor:press\": getColor(3),\n \"interactive.elevated.borderColor:press\": contrastBorderColor,\n \"interactive.outlined.backgroundColor:press\": getColor(3),\n \"interactive.outlined.borderColor:press\": getColor(7),\n\n \"interactive.contained.backgroundColor:disabled\": getColor(3, \"grayscale\"),\n \"interactive.elevated.backgroundColor:disabled\": backgroundColor,\n \"interactive.elevated.shadowColor:disabled\": getColor(9, \"grayscale\"),\n \"interactive.elevated.borderColor:disabled\": getColor(3, \"grayscale\"),\n \"interactive.outlined.backgroundColor:disabled\": backgroundColor,\n \"interactive.outlined.borderColor:disabled\": getColor(3, \"grayscale\"),\n \"interactive.textColor:disabled\": getColor(7, \"grayscale\"),\n\n \"interactive.forms.textColor\": textColor,\n \"interactive.forms.placeholderTextColor\": getColor(3, \"grayscale\"),\n\n // \"interactive.forms.backgroundColor\": undefined,\n // \"interactive.forms.backgroundColor:hover\": undefined,\n \"interactive.forms.backgroundColor:focus\": getColor(1),\n \"interactive.forms.backgroundColor:press\": getColor(3),\n \"interactive.forms.borderColor\": getColor(10),\n \"interactive.forms.borderColor:hover\": getColor(7),\n \"interactive.forms.borderColor:focus\": getColor(7),\n \"interactive.forms.borderColor:press\": getColor(7),\n \"interactive.forms.borderColor:disabled\": getColor(3, \"grayscale\"),\n } satisfies FullTheme;\n\n if (process.env.NODE_ENV === \"development\") {\n // Check main text contrast\n warnOnContrastIssues(\n colorScaleName,\n theme.textColor.val,\n theme.backgroundColor.val,\n );\n }\n\n return theme;\n};\n\nexport const createAlouetteThemes = <\n const ColorScales extends AlouetteColorScales,\n>(\n tokens: ReturnType<typeof createAlouetteTokens<ColorScales>>,\n) => {\n const alouetteTokens: ReturnType<\n typeof createAlouetteTokens<AlouetteColorScales>\n > = tokens;\n return {\n light: createColorTheme(alouetteTokens, \"grayscale\", \"light\"),\n light_info: createColorTheme(alouetteTokens, \"info\", \"light\"),\n light_success: createColorTheme(alouetteTokens, \"success\", \"light\"),\n light_warning: createColorTheme(alouetteTokens, \"warning\", \"light\"),\n light_danger: createColorTheme(alouetteTokens, \"danger\", \"light\"),\n light_primary: createColorTheme(alouetteTokens, \"primary\", \"light\"),\n\n dark: createColorTheme(alouetteTokens, \"grayscale\", \"dark\"),\n dark_info: createColorTheme(alouetteTokens, \"info\", \"dark\"),\n dark_success: createColorTheme(alouetteTokens, \"success\", \"dark\"),\n dark_warning: createColorTheme(alouetteTokens, \"warning\", \"dark\"),\n dark_danger: createColorTheme(alouetteTokens, \"danger\", \"dark\"),\n dark_primary: createColorTheme(alouetteTokens, \"primary\", \"dark\"),\n } as const;\n};\n","import type { IntRange } from \"type-fest\";\n\n// scale inspired by https://www.radix-ui.com/colors/docs/palette-composition/understanding-the-scale\n// 1: interactive outlined background hover/focus color\n// 2: interactive contained background press color\n// 3: interactive outlined background press color\n// 4: interactive contained background hover/focus color\n// 5: interactive contained background color\n// 6: main color\n// 7: border hover/focus color\n// 8: border color\n// 9: text color / shadow color\n// 10: form border color (default)\n\nexport type AlouetteColorScaleNumber = IntRange<1, 11>;\n\nexport type AlouetteColorScale = Record<AlouetteColorScaleNumber, string>;\n\nexport const createColorScale = <const T extends AlouetteColorScale>(\n colorScale: T,\n): T => colorScale;\n\nexport type AlouetteColorScaleNames =\n | \"danger\"\n | \"grayscale\"\n | \"info\"\n | \"primary\"\n | \"success\"\n | \"warning\";\n\nexport type ColorScaleTokens = {\n [K in AlouetteColorScaleNames as `${K}.${AlouetteColorScaleNumber}`]: string; //(typeof colorScales)[K][AlouetteColorScaleNumber];\n};\n\nexport type AlouetteColorScales = Record<\n AlouetteColorScaleNames,\n AlouetteColorScale\n>;\n\n// Tool: https://m2.material.io/inline-tools/color/\n\nexport const defaultColorScales: AlouetteColorScales = {\n grayscale: createColorScale({\n 1: \"#faf9f8\",\n 2: \"#f4f3ef\",\n 3: \"#ebe9e5\",\n 4: \"#dedad2\",\n 5: \"#d1cdc5\",\n 6: \"#bab8ae\",\n 7: \"#aeaba3\",\n 8: \"#9c9a92\",\n 9: \"#8e8c83\",\n 10: \"#74726a\",\n }),\n success: createColorScale({\n 1: \"#f0f9f3\",\n 2: \"#d4f0d4\",\n 3: \"#a8e6a8\",\n 4: \"#7edc7e\",\n 5: \"#54d254\",\n 6: \"#2ac82a\",\n 7: \"#00be00\",\n 8: \"#00b400\",\n 9: \"#00aa00\",\n 10: \"#009200\",\n }),\n info: createColorScale({\n 1: \"#f0f9ff\",\n 2: \"#d4f0ff\",\n 3: \"#a8e6ff\",\n 4: \"#7edcff\",\n 5: \"#54d2ff\",\n 6: \"#2ac8ff\",\n 7: \"#00beff\",\n 8: \"#00b4ff\",\n 9: \"#00aaff\",\n 10: \"#0092ff\",\n }),\n warning: createColorScale({\n 1: \"#fff9f0\",\n 2: \"#fff0d4\",\n 3: \"#ffe6a8\",\n 4: \"#ffdc7e\",\n 5: \"#ffd254\",\n 6: \"#ffc82a\",\n 7: \"#ffbe00\",\n 8: \"#ffb400\",\n 9: \"#ffaa00\",\n 10: \"#ff9200\",\n }),\n danger: createColorScale({\n 1: \"#fff0f0\",\n 2: \"#ffd4d4\",\n 3: \"#ffaaaa\",\n 4: \"#ff7e7e\",\n 5: \"#ff5454\",\n 6: \"#ff2a2a\",\n 7: \"#ff0000\",\n 8: \"#f40000\",\n 9: \"#ea0000\",\n 10: \"#d20000\",\n }),\n primary: createColorScale({\n 1: \"#e1f4f6\",\n 2: \"#b4e2e9\",\n 3: \"#86cfdc\",\n 4: \"#60bcd0\",\n 5: \"#46aeca\",\n 6: \"#31a1c4\",\n 7: \"#2994b7\",\n 8: \"#1e82a6\",\n 9: \"#1c7193\",\n 10: \"#125272\",\n }),\n} as const;\n","import { createTamagui } from \"@tamagui/core\";\nimport { animations } from \"./config/animations\";\nimport type { AlouetteColorScales } from \"./config/colorScales\";\nimport type { AlouetteFontsOptions } from \"./config/createAlouetteFonts\";\nimport { createAlouetteFonts } from \"./config/createAlouetteFonts\";\nimport type { createAlouetteTokens } from \"./config/createAlouetteTokens\";\nimport { media } from \"./config/media\";\nimport type { createAlouetteThemes } from \"./config/themes\";\n\nexport { createAlouetteTokens } from \"./config/createAlouetteTokens\";\n\nexport interface AlouetteTamaguiOptions {\n fonts?: AlouetteFontsOptions;\n}\n\nexport {\n createColorTheme,\n createAlouetteThemes,\n type FullTheme,\n} from \"./config/themes\";\n\nexport {\n defaultColorScales,\n createColorScale,\n type AlouetteColorScales,\n type AlouetteColorScale,\n} from \"./config/colorScales\";\n\nexport const createAlouetteTamagui = <\n const ColorScales extends AlouetteColorScales,\n const Tokens extends ReturnType<typeof createAlouetteTokens<ColorScales>>,\n const Themes extends ReturnType<typeof createAlouetteThemes<ColorScales>>,\n>(\n tokens: Tokens,\n themes: Themes,\n options: AlouetteTamaguiOptions = {},\n) => {\n return createTamagui({\n fonts: createAlouetteFonts(options.fonts),\n tokens,\n themes,\n media,\n animations,\n settings: {\n allowedStyleValues: \"somewhat-strict-web\",\n autocompleteSpecificTokens: \"except-special\",\n },\n components: [\"alouette\"],\n } as const);\n};\n"],"names":["createAnimations","createFont","createTokens","createTamagui"],"mappings":"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"}