alouette 13.5.1 → 13.6.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 (60) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/createAlouetteTamagui-browser.es.js +68 -40
  3. package/dist/createAlouetteTamagui-browser.es.js.map +1 -1
  4. package/dist/createAlouetteTamagui-node20.cjs +68 -40
  5. package/dist/createAlouetteTamagui-node20.cjs.map +1 -1
  6. package/dist/createAlouetteTamagui-node20.mjs +68 -40
  7. package/dist/createAlouetteTamagui-node20.mjs.map +1 -1
  8. package/dist/createAlouetteTamagui-react-native.cjs.js +68 -40
  9. package/dist/createAlouetteTamagui-react-native.cjs.js.map +1 -1
  10. package/dist/createAlouetteTamagui-react-native.es.js +68 -40
  11. package/dist/createAlouetteTamagui-react-native.es.js.map +1 -1
  12. package/dist/definitions/components/actions/Button.d.ts +1 -0
  13. package/dist/definitions/components/actions/Button.d.ts.map +1 -1
  14. package/dist/definitions/components/actions/IconButton.d.ts +1 -0
  15. package/dist/definitions/components/actions/IconButton.d.ts.map +1 -1
  16. package/dist/definitions/components/containers/Box.d.ts +1 -0
  17. package/dist/definitions/components/containers/Box.d.ts.map +1 -1
  18. package/dist/definitions/components/containers/Box.stories.d.ts +1 -0
  19. package/dist/definitions/components/containers/Box.stories.d.ts.map +1 -1
  20. package/dist/definitions/components/containers/PressableBox.d.ts +1 -0
  21. package/dist/definitions/components/containers/PressableBox.d.ts.map +1 -1
  22. package/dist/definitions/components/containers/PressableBox.stories.d.ts +1 -0
  23. package/dist/definitions/components/containers/PressableBox.stories.d.ts.map +1 -1
  24. package/dist/definitions/components/containers/variants.d.ts +118 -16
  25. package/dist/definitions/components/containers/variants.d.ts.map +1 -1
  26. package/dist/definitions/components/feedback/Message.d.ts +1 -0
  27. package/dist/definitions/components/feedback/Message.d.ts.map +1 -1
  28. package/dist/definitions/components/forms/InputText.d.ts +2 -0
  29. package/dist/definitions/components/forms/InputText.d.ts.map +1 -1
  30. package/dist/definitions/components/forms/InputText.stories.d.ts +1 -0
  31. package/dist/definitions/components/forms/InputText.stories.d.ts.map +1 -1
  32. package/dist/definitions/components/layout/GradientBackground.stories.d.ts +2 -0
  33. package/dist/definitions/components/layout/GradientBackground.stories.d.ts.map +1 -1
  34. package/dist/definitions/components/primitives/createVariants.d.ts +22 -8
  35. package/dist/definitions/components/primitives/createVariants.d.ts.map +1 -1
  36. package/dist/definitions/components/story-components/Story.d.ts.map +1 -1
  37. package/dist/definitions/components/story-components/StoryTitle.d.ts +1 -1
  38. package/dist/definitions/config/createAlouetteTokens.d.ts +14 -13
  39. package/dist/definitions/config/createAlouetteTokens.d.ts.map +1 -1
  40. package/dist/definitions/config/themes.d.ts +111 -55
  41. package/dist/definitions/config/themes.d.ts.map +1 -1
  42. package/dist/index-browser.es.js +40 -15
  43. package/dist/index-browser.es.js.map +1 -1
  44. package/dist/index-node20.cjs +39 -14
  45. package/dist/index-node20.cjs.map +1 -1
  46. package/dist/index-node20.mjs +40 -15
  47. package/dist/index-node20.mjs.map +1 -1
  48. package/dist/index-react-native.cjs.js +39 -14
  49. package/dist/index-react-native.cjs.js.map +1 -1
  50. package/dist/index-react-native.es.js +40 -15
  51. package/dist/index-react-native.es.js.map +1 -1
  52. package/package.json +1 -1
  53. package/src/components/containers/variants.ts +38 -4
  54. package/src/components/layout/GradientBackground.stories.tsx +59 -6
  55. package/src/components/primitives/createVariants.ts +12 -1
  56. package/src/components/story-components/Story.tsx +1 -6
  57. package/src/config/colorScales.ts +8 -8
  58. package/src/config/createAlouetteTokens.ts +4 -2
  59. package/src/config/defaultColorScales.ts +12 -12
  60. package/src/config/themes.ts +68 -27
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
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
+ ## [13.6.0](https://github.com/christophehurpeau/alouette/compare/alouette@13.5.1...alouette@13.6.0) (2025-09-13)
7
+
8
+ ### Features
9
+
10
+ * improve gradient background stories as well as colors to match ([8825eb3](https://github.com/christophehurpeau/alouette/commit/8825eb333c0430fb1cae3b41987d092b9638ec1b))
11
+
6
12
  ## [13.5.1](https://github.com/christophehurpeau/alouette/compare/alouette@13.5.0...alouette@13.5.1) (2025-09-11)
7
13
 
8
14
  ### Bug Fixes
@@ -115,10 +115,12 @@ const createAlouetteTokens = (colorScales, { spacing = 4 } = {}) => {
115
115
  color: {
116
116
  blackBackground: "#1f1e1e",
117
117
  whiteBackground: "#ffffff",
118
- blackBackgroundTranslucent: "#1f1e1ecc",
119
- whiteBackgroundTranslucent: "#ffffffdd",
118
+ // https://github.com/tamagui/tamagui/issues/3601 does not work at the moment
119
+ blackBackgroundTranslucent: "#1f1e1e77",
120
+ whiteBackgroundTranslucent: "#ffffff99",
120
121
  blackText: "#000000",
121
122
  whiteText: "#fdfdfd",
123
+ transparent: "transparent",
122
124
  ...transformColorScalesToTokens(colorScales)
123
125
  },
124
126
  radius: {
@@ -141,8 +143,8 @@ const createAlouetteTokens = (colorScales, { spacing = 4 } = {}) => {
141
143
 
142
144
  const mappingLightToDark = {
143
145
  1: 1,
144
- 2: 3,
145
- 3: 4,
146
+ 2: 4,
147
+ 3: 3,
146
148
  4: 2,
147
149
  5: 6,
148
150
  6: 5,
@@ -214,17 +216,26 @@ const createColorTheme = (tokens, intent, mode = "light", backgroundColor, textC
214
216
  return tokens.color[`${tint || intent}.${mode}.${mode === "dark" && adaptForDarkMode ? mappingLightToDark[scaleNumber] : scaleNumber}`];
215
217
  };
216
218
  const theme = {
217
- backgroundColor,
218
- backgroundColorTranslucent: mode === "dark" ? alouetteTokens.color.blackBackgroundTranslucent : alouetteTokens.color.whiteBackgroundTranslucent,
219
- "gradientColor:start": getColor(mode === "dark" ? 3 : 6, void 0, false),
220
- "gradientColor:middle": getColor(mode === "dark" ? 4 : 7, void 0, false),
221
- "gradientColor:end": getColor(mode === "dark" ? 2 : 5, void 0, false),
222
- textColor,
223
- pageBackgroundColor: getColor(1),
219
+ screenBackgroundColor: getColor(1),
220
+ "screenBackgroundColor.elevated": getColor(
221
+ mode === "dark" ? 2 : 1,
222
+ void 0,
223
+ false
224
+ ),
225
+ "screenBackgroundColor.translucent": mode === "dark" ? alouetteTokens.color.blackBackgroundTranslucent : alouetteTokens.color.whiteBackgroundTranslucent,
224
226
  nonInteractiveBackgroundColor: getColor(3),
227
+ "nonInteractiveBackgroundColor.elevated": getColor(
228
+ mode === "dark" ? 4 : 3,
229
+ void 0,
230
+ false
231
+ ),
232
+ "gradientColor:start": getColor(mode === "dark" ? 5 : 6, void 0, false),
233
+ "gradientColor:middle": getColor(mode === "dark" ? 6 : 7, void 0, false),
234
+ "gradientColor:end": getColor(mode === "dark" ? 4 : 5, void 0, false),
235
+ textColor,
225
236
  accentTextColor: getColor(9),
226
237
  borderColor: getColor(8),
227
- shadowColor: getColor(8),
238
+ shadowColor: mode === "dark" ? alouetteTokens.color.transparent : getColor(8, "grayscale", false),
228
239
  "textColor:disabled": getColor(mode === "dark" ? 8 : 7, "grayscale", false),
229
240
  "interactive.linkTextColor": getColor(9),
230
241
  "interactive.linkTextColor:hover": getColor(10),
@@ -232,26 +243,35 @@ const createColorTheme = (tokens, intent, mode = "light", backgroundColor, textC
232
243
  "interactive.linkTextColor:press": getColor(8),
233
244
  "interactive.linkTextColor:disabled": getColor(9, "grayscale"),
234
245
  "interactive.contained.backgroundColor": getColor(6),
235
- "interactive.elevated.backgroundColor": backgroundColor,
236
- "interactive.elevated.shadowColor": getColor(8),
237
- "interactive.elevated.borderColor": getColor(1),
246
+ "interactive.elevated.backgroundColor": mode === "dark" ? getColor(4, "grayscale", false) : backgroundColor,
247
+ "interactive.elevated.shadowColor": mode === "dark" ? alouetteTokens.color.transparent : getColor(8),
248
+ "interactive.elevated.borderColor": getColor(mode === "dark" ? 7 : 1),
238
249
  "interactive.outlined.backgroundColor": backgroundColor,
239
250
  "interactive.outlined.borderColor": getColor(7),
240
251
  "interactive.contained.backgroundColor:hover": getColor(5),
241
252
  "interactive.elevated.backgroundColor:hover": getColor(2),
242
- "interactive.elevated.borderColor:hover": getColor(1),
243
- "interactive.outlined.backgroundColor:hover": getColor(2),
244
- "interactive.outlined.borderColor:hover": getColor(6),
253
+ "interactive.elevated.borderColor:hover": getColor(mode === "dark" ? 8 : 1),
254
+ "interactive.outlined.backgroundColor:hover": backgroundColor,
255
+ "interactive.outlined.borderColor:hover": getColor(8),
245
256
  "interactive.contained.backgroundColor:focus": getColor(5),
246
257
  "interactive.elevated.backgroundColor:focus": getColor(2),
247
- "interactive.elevated.borderColor:focus": getColor(1),
248
- "interactive.outlined.backgroundColor:focus": getColor(2),
249
- "interactive.outlined.borderColor:focus": getColor(6),
258
+ "interactive.elevated.borderColor:focus": getColor(mode === "dark" ? 8 : 1),
259
+ "interactive.outlined.backgroundColor:focus": backgroundColor,
260
+ "interactive.outlined.borderColor:focus": getColor(8),
261
+ "interactive.contained.outlineColor:focus": getColor(
262
+ mode === "dark" ? 7 : 8
263
+ ),
264
+ "interactive.outlined.outlineColor:focus": getColor(
265
+ mode === "dark" ? 7 : 8
266
+ ),
267
+ "interactive.elevated.outlineColor:focus": getColor(
268
+ mode === "dark" ? 7 : 8
269
+ ),
250
270
  "interactive.contained.backgroundColor:press": getColor(3),
251
271
  "interactive.elevated.backgroundColor:press": getColor(4),
252
- "interactive.elevated.borderColor:press": getColor(1),
253
- "interactive.outlined.backgroundColor:press": getColor(4),
254
- "interactive.outlined.borderColor:press": getColor(6),
272
+ "interactive.elevated.borderColor:press": getColor(mode === "dark" ? 8 : 1),
273
+ "interactive.outlined.backgroundColor:press": backgroundColor,
274
+ "interactive.outlined.borderColor:press": getColor(8),
255
275
  "interactive.contained.backgroundColor:disabled": getColor(
256
276
  4,
257
277
  "grayscale",
@@ -261,7 +281,7 @@ const createColorTheme = (tokens, intent, mode = "light", backgroundColor, textC
261
281
  "interactive.elevated.shadowColor:disabled": getColor(8, "grayscale"),
262
282
  "interactive.elevated.borderColor:disabled": getColor(1, "grayscale"),
263
283
  "interactive.outlined.backgroundColor:disabled": backgroundColor,
264
- "interactive.outlined.borderColor:disabled": getColor(7, "grayscale"),
284
+ "interactive.outlined.borderColor:disabled": getColor(6, "grayscale"),
265
285
  "interactive.forms.textColor": textColor,
266
286
  "interactive.forms.placeholderTextColor": getColor(8, "grayscale"),
267
287
  // "interactive.forms.backgroundColor": undefined,
@@ -270,15 +290,23 @@ const createColorTheme = (tokens, intent, mode = "light", backgroundColor, textC
270
290
  "interactive.forms.backgroundColor:press": getColor(4),
271
291
  "interactive.forms.borderColor": getColor(7),
272
292
  "interactive.forms.borderColor:disabled": getColor(7, "grayscale"),
273
- "interactive.forms.borderColor:hover": getColor(6),
274
- "interactive.forms.borderColor:focus": getColor(6),
293
+ "interactive.forms.borderColor:hover": getColor(
294
+ mode === "dark" ? 8 : 6,
295
+ void 0,
296
+ false
297
+ ),
298
+ "interactive.forms.borderColor:focus": getColor(
299
+ mode === "dark" ? 8 : 6,
300
+ void 0,
301
+ false
302
+ ),
275
303
  "interactive.forms.borderColor:press": getColor(6)
276
304
  };
277
305
  if (process.env.NODE_ENV === "development") {
278
306
  warnOnContrastIssues(
279
307
  intent,
280
308
  theme.textColor.val,
281
- theme.backgroundColor.val
309
+ theme.screenBackgroundColor.val
282
310
  );
283
311
  }
284
312
  return theme;
@@ -303,7 +331,7 @@ const createAlouetteThemes = (tokens) => {
303
331
 
304
332
  const defaultColorScales = {
305
333
  "grayscale.light": createColorScale({
306
- 1: "#F5F5F5",
334
+ 1: "#FFFFFF",
307
335
  2: "#EBEBEB",
308
336
  3: "#DBDBDB",
309
337
  4: "#D1D1D1",
@@ -315,7 +343,7 @@ const defaultColorScales = {
315
343
  10: "#2E2E2E"
316
344
  }),
317
345
  "grayscale.dark": createColorScale({
318
- 1: "#1A1A1A",
346
+ 1: "#1F1F1F",
319
347
  2: "#1F1F1F",
320
348
  3: "#292929",
321
349
  4: "#333333",
@@ -333,7 +361,7 @@ const defaultColorScales = {
333
361
  4: "#ABE5F7",
334
362
  5: "#99DFF5",
335
363
  6: "#7DD7F2",
336
- 7: "#33C0EB",
364
+ 7: "#23C8FB",
337
365
  8: "#037496",
338
366
  9: "#025D78",
339
367
  10: "#012732"
@@ -345,7 +373,7 @@ const defaultColorScales = {
345
373
  4: "#0E4758",
346
374
  5: "#135C72",
347
375
  6: "#156A84",
348
- 7: "#17718C",
376
+ 7: "#0FB4E6",
349
377
  8: "#49CCF3",
350
378
  9: "#66D4F5",
351
379
  10: "#A9E7F9"
@@ -357,7 +385,7 @@ const defaultColorScales = {
357
385
  4: "#FBC7C5",
358
386
  5: "#FAB5B2",
359
387
  6: "#F89996",
360
- 7: "#F34F49",
388
+ 7: "#FB4741",
361
389
  8: "#C80B04",
362
390
  9: "#AA0903",
363
391
  10: "#640502"
@@ -369,7 +397,7 @@ const defaultColorScales = {
369
397
  4: "#721613",
370
398
  5: "#8C1B17",
371
399
  6: "#9E1E1A",
372
- 7: "#A7201B",
400
+ 7: "#F12922",
373
401
  8: "#F56A66",
374
402
  9: "#F78682",
375
403
  10: "#FBC7C5"
@@ -381,7 +409,7 @@ const defaultColorScales = {
381
409
  4: "#ABE4F7",
382
410
  5: "#99DEF5",
383
411
  6: "#7DD5F2",
384
- 7: "#33BDEB",
412
+ 7: "#23C5FB",
385
413
  8: "#037196",
386
414
  9: "#025B78",
387
415
  10: "#012632"
@@ -393,7 +421,7 @@ const defaultColorScales = {
393
421
  4: "#0E4558",
394
422
  5: "#135A72",
395
423
  6: "#156884",
396
- 7: "#176F8C",
424
+ 7: "#0FB0E6",
397
425
  8: "#49C9F3",
398
426
  9: "#66D1F5",
399
427
  10: "#A9E5F9"
@@ -405,7 +433,7 @@ const defaultColorScales = {
405
433
  4: "#ABF7AB",
406
434
  5: "#99F599",
407
435
  6: "#7DF27D",
408
- 7: "#33EB33",
436
+ 7: "#23FB23",
409
437
  8: "#038203",
410
438
  9: "#026402",
411
439
  10: "#011E01"
@@ -417,7 +445,7 @@ const defaultColorScales = {
417
445
  4: "#0E580E",
418
446
  5: "#137213",
419
447
  6: "#158415",
420
- 7: "#178C17",
448
+ 7: "#0FE60F",
421
449
  8: "#49F349",
422
450
  9: "#66F566",
423
451
  10: "#A9F9A9"
@@ -429,7 +457,7 @@ const defaultColorScales = {
429
457
  4: "#FAE6BD",
430
458
  5: "#F9DEAA",
431
459
  6: "#F6D38D",
432
- 7: "#F1B641",
460
+ 7: "#FBBA37",
433
461
  8: "#825803",
434
462
  9: "#644302",
435
463
  10: "#1E1401"
@@ -441,7 +469,7 @@ const defaultColorScales = {
441
469
  4: "#694C11",
442
470
  5: "#845F15",
443
471
  6: "#956C18",
444
- 7: "#9E721A",
472
+ 7: "#F0A919",
445
473
  8: "#F5C25C",
446
474
  9: "#F6CD79",
447
475
  10: "#FBE6BC"
@@ -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/colorScales.ts","../src/config/utils/colorContrast.ts","../src/config/themes.ts","../src/config/defaultColorScales.ts","../src/createAlouetteTamagui.ts"],"sourcesContent":["import { createAnimations } from \"@tamagui/animations-css\";\n\nexport const animations = createAnimations({\n fast: \"ease-in 150ms\",\n medium: \"ease-in 300ms\",\n slow: \"ease-in 450ms\",\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 blackBackground: \"#1f1e1e\",\n whiteBackground: \"#ffffff\",\n blackBackgroundTranslucent: \"#1f1e1ecc\",\n whiteBackgroundTranslucent: \"#ffffffdd\",\n blackText: \"#000000\",\n whiteText: \"#fdfdfd\",\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","import type { IntRange } from \"type-fest\";\n\n// scale inspired by https://www.radix-ui.com/colors/docs/palette-composition/understanding-the-scale\n\n// LIGHT SCALE\n// 1: colored page background color\n// 2: interactive outlined background hover/focus color\n// 3: interactive contained background press color / non interactive background color\n// 4: interactive outlined background press color / non interactive shadow color\n// 5: interactive contained background hover/focus color\n// 6: interactive contained background color / interactive border hover/focus color\n// 7: interactive border color\n// 8: interactive shadow color / text:press\n// 9: text color\n// 10: text:hover/focus\n\n// DARK SCALE\n// 1: colored page background color\n// 2: interactive outlined background press color / non interactive shadow color\n// 3: interactive outlined background hover/focus color\n// 4: interactive contained background press color / non interactive background color\n// 5: interactive contained background color / interactive border hover/focus color\n// 6: interactive contained background hover/focus color\n// 7: interactive border color\n// 8: interactive shadow color / text:press\n// 9: text color\n// 10: text:hover/focus\n\n// this mapping is used to keep focus/hover colors brighter\nexport const mappingLightToDark = {\n 1: 1,\n 2: 3,\n 3: 4,\n 4: 2,\n 5: 6,\n 6: 5,\n 7: 7,\n 8: 8,\n 9: 9,\n 10: 10,\n};\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 AlouetteColorIntent =\n | \"danger\"\n | \"grayscale\"\n | \"info\"\n | \"primary\"\n | \"success\"\n | \"warning\";\n\nexport type AlouetteColorScaleNames =\n | `${AlouetteColorIntent}.dark`\n | `${AlouetteColorIntent}.light`;\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 * 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 { mappingLightToDark } from \"./colorScales\";\nimport type {\n AlouetteColorIntent,\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 backgroundColorTranslucent: Variable<string>;\n pageBackgroundColor: Variable<string>;\n nonInteractiveBackgroundColor: Variable<string>;\n \"gradientColor:start\": Variable<string>;\n \"gradientColor:middle\": Variable<string>;\n \"gradientColor:end\": Variable<string>;\n textColor: Variable<string>;\n \"textColor:disabled\": Variable<string>;\n accentTextColor: Variable<string>;\n borderColor: 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\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\nexport const createColorTheme = <const ColorIntent extends AlouetteColorIntent>(\n tokens: ReturnType<typeof createAlouetteTokens<AlouetteColorScales>>,\n intent: ColorIntent,\n mode: \"dark\" | \"light\" = \"light\",\n // TODO replace by color in scale\n backgroundColor?: Variable<string>,\n textColor?: Variable<string>,\n) => {\n const alouetteTokens: ReturnType<\n typeof createAlouetteTokens<AlouetteColorScales>\n > = tokens;\n if (!backgroundColor) {\n backgroundColor =\n mode === \"dark\"\n ? alouetteTokens.color.blackBackground\n : alouetteTokens.color.whiteBackground;\n }\n if (!textColor) {\n textColor =\n mode === \"dark\"\n ? alouetteTokens.color.whiteText\n : alouetteTokens.color.blackText;\n }\n\n const getColor = (\n scaleNumber: AlouetteColorScaleNumber,\n tint?: \"grayscale\",\n adaptForDarkMode = true,\n ) => {\n return tokens.color[\n `${tint || intent}.${mode}.${mode === \"dark\" && adaptForDarkMode ? mappingLightToDark[scaleNumber] : scaleNumber}` as keyof typeof tokens.color\n ];\n };\n\n const theme = {\n backgroundColor,\n backgroundColorTranslucent:\n mode === \"dark\"\n ? alouetteTokens.color.blackBackgroundTranslucent\n : alouetteTokens.color.whiteBackgroundTranslucent,\n \"gradientColor:start\": getColor(mode === \"dark\" ? 3 : 6, undefined, false),\n \"gradientColor:middle\": getColor(mode === \"dark\" ? 4 : 7, undefined, false),\n \"gradientColor:end\": getColor(mode === \"dark\" ? 2 : 5, undefined, false),\n textColor,\n pageBackgroundColor: getColor(1),\n nonInteractiveBackgroundColor: getColor(3),\n accentTextColor: getColor(9),\n borderColor: getColor(8),\n shadowColor: getColor(8),\n \"textColor:disabled\": getColor(mode === \"dark\" ? 8 : 7, \"grayscale\", false),\n\n \"interactive.linkTextColor\": getColor(9),\n \"interactive.linkTextColor:hover\": getColor(10),\n \"interactive.linkTextColor:focus\": getColor(10),\n \"interactive.linkTextColor:press\": getColor(8),\n \"interactive.linkTextColor:disabled\": getColor(9, \"grayscale\"),\n\n \"interactive.contained.backgroundColor\": getColor(6),\n \"interactive.elevated.backgroundColor\": backgroundColor,\n \"interactive.elevated.shadowColor\": getColor(8),\n \"interactive.elevated.borderColor\": getColor(1),\n \"interactive.outlined.backgroundColor\": backgroundColor,\n \"interactive.outlined.borderColor\": getColor(7),\n\n \"interactive.contained.backgroundColor:hover\": getColor(5),\n \"interactive.elevated.backgroundColor:hover\": getColor(2),\n \"interactive.elevated.borderColor:hover\": getColor(1),\n \"interactive.outlined.backgroundColor:hover\": getColor(2),\n \"interactive.outlined.borderColor:hover\": getColor(6),\n\n \"interactive.contained.backgroundColor:focus\": getColor(5),\n \"interactive.elevated.backgroundColor:focus\": getColor(2),\n \"interactive.elevated.borderColor:focus\": getColor(1),\n \"interactive.outlined.backgroundColor:focus\": getColor(2),\n \"interactive.outlined.borderColor:focus\": getColor(6),\n\n \"interactive.contained.backgroundColor:press\": getColor(3),\n \"interactive.elevated.backgroundColor:press\": getColor(4),\n \"interactive.elevated.borderColor:press\": getColor(1),\n \"interactive.outlined.backgroundColor:press\": getColor(4),\n \"interactive.outlined.borderColor:press\": getColor(6),\n\n \"interactive.contained.backgroundColor:disabled\": getColor(\n 4,\n \"grayscale\",\n false,\n ),\n \"interactive.elevated.backgroundColor:disabled\": backgroundColor,\n \"interactive.elevated.shadowColor:disabled\": getColor(8, \"grayscale\"),\n \"interactive.elevated.borderColor:disabled\": getColor(1, \"grayscale\"),\n \"interactive.outlined.backgroundColor:disabled\": backgroundColor,\n \"interactive.outlined.borderColor:disabled\": getColor(7, \"grayscale\"),\n\n \"interactive.forms.textColor\": textColor,\n \"interactive.forms.placeholderTextColor\": getColor(8, \"grayscale\"),\n\n // \"interactive.forms.backgroundColor\": undefined,\n // \"interactive.forms.backgroundColor:hover\": undefined,\n \"interactive.forms.backgroundColor:focus\": getColor(2),\n \"interactive.forms.backgroundColor:press\": getColor(4),\n \"interactive.forms.borderColor\": getColor(7),\n \"interactive.forms.borderColor:disabled\": getColor(7, \"grayscale\"),\n \"interactive.forms.borderColor:hover\": getColor(6),\n \"interactive.forms.borderColor:focus\": getColor(6),\n \"interactive.forms.borderColor:press\": getColor(6),\n } satisfies FullTheme;\n\n if (process.env.NODE_ENV === \"development\") {\n // Check main text contrast\n warnOnContrastIssues(\n intent,\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 { createColorScale } from \"./colorScales\";\nimport type { AlouetteColorScales } from \"./colorScales\";\n\nexport const defaultColorScales: AlouetteColorScales = {\n \"grayscale.light\": createColorScale({\n 1: \"#F5F5F5\",\n 2: \"#EBEBEB\",\n 3: \"#DBDBDB\",\n 4: \"#D1D1D1\",\n 5: \"#C7C7C7\",\n 6: \"#B8B8B8\",\n 7: \"#8F8F8F\",\n 8: \"#616161\",\n 9: \"#525252\",\n 10: \"#2E2E2E\",\n }),\n \"grayscale.dark\": createColorScale({\n 1: \"#1A1A1A\",\n 2: \"#1F1F1F\",\n 3: \"#292929\",\n 4: \"#333333\",\n 5: \"#3D3D3D\",\n 6: \"#474747\",\n 7: \"#525252\",\n 8: \"#9E9E9E\",\n 9: \"#ADADAD\",\n 10: \"#D1D1D1\",\n }),\n \"primary.light\": createColorScale({\n 1: \"#EFF8FB\",\n 2: \"#DAF4FB\",\n 3: \"#BEEBF9\",\n 4: \"#ABE5F7\",\n 5: \"#99DFF5\",\n 6: \"#7DD7F2\",\n 7: \"#33C0EB\",\n 8: \"#037496\",\n 9: \"#025D78\",\n 10: \"#012732\",\n }),\n \"primary.dark\": createColorScale({\n 1: \"#02161C\",\n 2: \"#092A35\",\n 3: \"#0B3846\",\n 4: \"#0E4758\",\n 5: \"#135C72\",\n 6: \"#156A84\",\n 7: \"#17718C\",\n 8: \"#49CCF3\",\n 9: \"#66D4F5\",\n 10: \"#A9E7F9\",\n }),\n \"danger.light\": createColorScale({\n 1: \"#FBEFEF\",\n 2: \"#FEF6F5\",\n 3: \"#FDDAD9\",\n 4: \"#FBC7C5\",\n 5: \"#FAB5B2\",\n 6: \"#F89996\",\n 7: \"#F34F49\",\n 8: \"#C80B04\",\n 9: \"#AA0903\",\n 10: \"#640502\",\n }),\n \"danger.dark\": createColorScale({\n 1: \"#1C0302\",\n 2: \"#4F0F0D\",\n 3: \"#601210\",\n 4: \"#721613\",\n 5: \"#8C1B17\",\n 6: \"#9E1E1A\",\n 7: \"#A7201B\",\n 8: \"#F56A66\",\n 9: \"#F78682\",\n 10: \"#FBC7C5\",\n }),\n \"info.light\": createColorScale({\n 1: \"#EFF8FB\",\n 2: \"#DAF3FB\",\n 3: \"#BEEAF9\",\n 4: \"#ABE4F7\",\n 5: \"#99DEF5\",\n 6: \"#7DD5F2\",\n 7: \"#33BDEB\",\n 8: \"#037196\",\n 9: \"#025B78\",\n 10: \"#012632\",\n }),\n \"info.dark\": createColorScale({\n 1: \"#02161C\",\n 2: \"#092A35\",\n 3: \"#0B3746\",\n 4: \"#0E4558\",\n 5: \"#135A72\",\n 6: \"#156884\",\n 7: \"#176F8C\",\n 8: \"#49C9F3\",\n 9: \"#66D1F5\",\n 10: \"#A9E5F9\",\n }),\n \"success.light\": createColorScale({\n 1: \"#EFFBEF\",\n 2: \"#DAFBDA\",\n 3: \"#BEF9BE\",\n 4: \"#ABF7AB\",\n 5: \"#99F599\",\n 6: \"#7DF27D\",\n 7: \"#33EB33\",\n 8: \"#038203\",\n 9: \"#026402\",\n 10: \"#011E01\",\n }),\n \"success.dark\": createColorScale({\n 1: \"#021C02\",\n 2: \"#093509\",\n 3: \"#0B460B\",\n 4: \"#0E580E\",\n 5: \"#137213\",\n 6: \"#158415\",\n 7: \"#178C17\",\n 8: \"#49F349\",\n 9: \"#66F566\",\n 10: \"#A9F9A9\",\n }),\n \"warning.light\": createColorScale({\n 1: \"#FBF7EF\",\n 2: \"#FEF8EC\",\n 3: \"#FBEDD0\",\n 4: \"#FAE6BD\",\n 5: \"#F9DEAA\",\n 6: \"#F6D38D\",\n 7: \"#F1B641\",\n 8: \"#825803\",\n 9: \"#644302\",\n 10: \"#1E1401\",\n }),\n \"warning.dark\": createColorScale({\n 1: \"#1C1402\",\n 2: \"#46330B\",\n 3: \"#583F0E\",\n 4: \"#694C11\",\n 5: \"#845F15\",\n 6: \"#956C18\",\n 7: \"#9E721A\",\n 8: \"#F5C25C\",\n 9: \"#F6CD79\",\n 10: \"#FBE6BC\",\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 createColorScale,\n type AlouetteColorScales,\n type AlouetteColorScale,\n} from \"./config/colorScales\";\n\nexport { defaultColorScales } from \"./config/defaultColorScales\";\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/colorScales.ts","../src/config/utils/colorContrast.ts","../src/config/themes.ts","../src/config/defaultColorScales.ts","../src/createAlouetteTamagui.ts"],"sourcesContent":["import { createAnimations } from \"@tamagui/animations-css\";\n\nexport const animations = createAnimations({\n fast: \"ease-in 150ms\",\n medium: \"ease-in 300ms\",\n slow: \"ease-in 450ms\",\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 blackBackground: \"#1f1e1e\",\n whiteBackground: \"#ffffff\",\n // https://github.com/tamagui/tamagui/issues/3601 does not work at the moment\n blackBackgroundTranslucent: \"#1f1e1e77\",\n whiteBackgroundTranslucent: \"#ffffff99\",\n blackText: \"#000000\",\n whiteText: \"#fdfdfd\",\n transparent: \"transparent\",\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","import type { IntRange } from \"type-fest\";\n\n// scale inspired by https://www.radix-ui.com/colors/docs/palette-composition/understanding-the-scale\n\n// LIGHT SCALE\n// 1: colored page background color\n// 2: interactive outlined background hover/focus color\n// 3: interactive contained background press color / non interactive background color\n// 4: interactive outlined background press color / non interactive shadow color\n// 5: interactive contained background hover/focus color\n// 6: interactive contained background color\n// 7: interactive border color\n// 8: interactive shadow color / text:press / interactive border hover/focus color\n// 9: text color\n// 10: text:hover/focus\n\n// DARK SCALE\n// 1: colored page background color\n// 2: interactive outlined background press color / non interactive shadow color\n// 3: interactive contained background press color / non interactive background color\n// 4: interactive outlined background hover/focus color\n// 5: interactive contained background color\n// 6: interactive contained background hover/focus color\n// 7: interactive border color\n// 8: interactive shadow color / text:press / interactive border hover/focus color\n// 9: text color\n// 10: text:hover/focus\n\n// this mapping is used to keep focus/hover colors brighter\nexport const mappingLightToDark = {\n 1: 1,\n 2: 4,\n 3: 3,\n 4: 2,\n 5: 6,\n 6: 5,\n 7: 7,\n 8: 8,\n 9: 9,\n 10: 10,\n};\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 AlouetteColorIntent =\n | \"danger\"\n | \"grayscale\"\n | \"info\"\n | \"primary\"\n | \"success\"\n | \"warning\";\n\nexport type AlouetteColorScaleNames =\n | `${AlouetteColorIntent}.dark`\n | `${AlouetteColorIntent}.light`;\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 * 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 complexity */\n/* eslint-disable camelcase */\nimport type { Variable } from \"@tamagui/core\";\nimport { mappingLightToDark } from \"./colorScales\";\nimport type {\n AlouetteColorIntent,\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 screenBackgroundColor: Variable<string>;\n \"screenBackgroundColor.translucent\": Variable<string>;\n \"screenBackgroundColor.elevated\": Variable<string>;\n nonInteractiveBackgroundColor: Variable<string>;\n \"nonInteractiveBackgroundColor.elevated\": Variable<string>;\n\n \"gradientColor:start\": Variable<string>;\n \"gradientColor:middle\": Variable<string>;\n \"gradientColor:end\": Variable<string>;\n textColor: Variable<string>;\n \"textColor:disabled\": Variable<string>;\n accentTextColor: Variable<string>;\n borderColor: 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.outlineColor:focus\": Variable<string>;\n \"interactive.elevated.outlineColor:focus\": Variable<string>;\n \"interactive.outlined.outlineColor: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\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\nexport const createColorTheme = <const ColorIntent extends AlouetteColorIntent>(\n tokens: ReturnType<typeof createAlouetteTokens<AlouetteColorScales>>,\n intent: ColorIntent,\n mode: \"dark\" | \"light\" = \"light\",\n // TODO replace by color in scale\n backgroundColor?: Variable<string>,\n textColor?: Variable<string>,\n) => {\n const alouetteTokens: ReturnType<\n typeof createAlouetteTokens<AlouetteColorScales>\n > = tokens;\n if (!backgroundColor) {\n backgroundColor =\n mode === \"dark\"\n ? alouetteTokens.color.blackBackground\n : alouetteTokens.color.whiteBackground;\n }\n if (!textColor) {\n textColor =\n mode === \"dark\"\n ? alouetteTokens.color.whiteText\n : alouetteTokens.color.blackText;\n }\n\n const getColor = (\n scaleNumber: AlouetteColorScaleNumber,\n tint?: \"grayscale\",\n adaptForDarkMode = true,\n ) => {\n return tokens.color[\n `${tint || intent}.${mode}.${mode === \"dark\" && adaptForDarkMode ? mappingLightToDark[scaleNumber] : scaleNumber}` as keyof typeof tokens.color\n ];\n };\n\n const theme = {\n screenBackgroundColor: getColor(1),\n \"screenBackgroundColor.elevated\": getColor(\n mode === \"dark\" ? 2 : 1,\n undefined,\n false,\n ),\n \"screenBackgroundColor.translucent\":\n mode === \"dark\"\n ? alouetteTokens.color.blackBackgroundTranslucent\n : alouetteTokens.color.whiteBackgroundTranslucent,\n nonInteractiveBackgroundColor: getColor(3),\n \"nonInteractiveBackgroundColor.elevated\": getColor(\n mode === \"dark\" ? 4 : 3,\n undefined,\n false,\n ),\n\n \"gradientColor:start\": getColor(mode === \"dark\" ? 5 : 6, undefined, false),\n \"gradientColor:middle\": getColor(mode === \"dark\" ? 6 : 7, undefined, false),\n \"gradientColor:end\": getColor(mode === \"dark\" ? 4 : 5, undefined, false),\n\n textColor,\n accentTextColor: getColor(9),\n borderColor: getColor(8),\n shadowColor:\n mode === \"dark\"\n ? alouetteTokens.color.transparent\n : getColor(8, \"grayscale\", false),\n \"textColor:disabled\": getColor(mode === \"dark\" ? 8 : 7, \"grayscale\", false),\n\n \"interactive.linkTextColor\": getColor(9),\n \"interactive.linkTextColor:hover\": getColor(10),\n \"interactive.linkTextColor:focus\": getColor(10),\n \"interactive.linkTextColor:press\": getColor(8),\n \"interactive.linkTextColor:disabled\": getColor(9, \"grayscale\"),\n\n \"interactive.contained.backgroundColor\": getColor(6),\n \"interactive.elevated.backgroundColor\":\n mode === \"dark\" ? getColor(4, \"grayscale\", false) : backgroundColor,\n \"interactive.elevated.shadowColor\":\n mode === \"dark\" ? alouetteTokens.color.transparent : getColor(8),\n \"interactive.elevated.borderColor\": getColor(mode === \"dark\" ? 7 : 1),\n \"interactive.outlined.backgroundColor\": backgroundColor,\n \"interactive.outlined.borderColor\": getColor(7),\n\n \"interactive.contained.backgroundColor:hover\": getColor(5),\n \"interactive.elevated.backgroundColor:hover\": getColor(2),\n \"interactive.elevated.borderColor:hover\": getColor(mode === \"dark\" ? 8 : 1),\n \"interactive.outlined.backgroundColor:hover\": backgroundColor,\n \"interactive.outlined.borderColor:hover\": getColor(8),\n\n \"interactive.contained.backgroundColor:focus\": getColor(5),\n \"interactive.elevated.backgroundColor:focus\": getColor(2),\n \"interactive.elevated.borderColor:focus\": getColor(mode === \"dark\" ? 8 : 1),\n \"interactive.outlined.backgroundColor:focus\": backgroundColor,\n \"interactive.outlined.borderColor:focus\": getColor(8),\n\n \"interactive.contained.outlineColor:focus\": getColor(\n mode === \"dark\" ? 7 : 8,\n ),\n \"interactive.outlined.outlineColor:focus\": getColor(\n mode === \"dark\" ? 7 : 8,\n ),\n \"interactive.elevated.outlineColor:focus\": getColor(\n mode === \"dark\" ? 7 : 8,\n ),\n\n \"interactive.contained.backgroundColor:press\": getColor(3),\n \"interactive.elevated.backgroundColor:press\": getColor(4),\n \"interactive.elevated.borderColor:press\": getColor(mode === \"dark\" ? 8 : 1),\n \"interactive.outlined.backgroundColor:press\": backgroundColor,\n \"interactive.outlined.borderColor:press\": getColor(8),\n\n \"interactive.contained.backgroundColor:disabled\": getColor(\n 4,\n \"grayscale\",\n false,\n ),\n \"interactive.elevated.backgroundColor:disabled\": backgroundColor,\n \"interactive.elevated.shadowColor:disabled\": getColor(8, \"grayscale\"),\n \"interactive.elevated.borderColor:disabled\": getColor(1, \"grayscale\"),\n \"interactive.outlined.backgroundColor:disabled\": backgroundColor,\n \"interactive.outlined.borderColor:disabled\": getColor(6, \"grayscale\"),\n\n \"interactive.forms.textColor\": textColor,\n \"interactive.forms.placeholderTextColor\": getColor(8, \"grayscale\"),\n\n // \"interactive.forms.backgroundColor\": undefined,\n // \"interactive.forms.backgroundColor:hover\": undefined,\n \"interactive.forms.backgroundColor:focus\": getColor(2),\n \"interactive.forms.backgroundColor:press\": getColor(4),\n \"interactive.forms.borderColor\": getColor(7),\n \"interactive.forms.borderColor:disabled\": getColor(7, \"grayscale\"),\n \"interactive.forms.borderColor:hover\": getColor(\n mode === \"dark\" ? 8 : 6,\n undefined,\n false,\n ),\n \"interactive.forms.borderColor:focus\": getColor(\n mode === \"dark\" ? 8 : 6,\n undefined,\n false,\n ),\n \"interactive.forms.borderColor:press\": getColor(6),\n } satisfies FullTheme;\n\n if (process.env.NODE_ENV === \"development\") {\n // Check main text contrast\n warnOnContrastIssues(\n intent,\n theme.textColor.val,\n theme.screenBackgroundColor.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 { createColorScale } from \"./colorScales\";\nimport type { AlouetteColorScales } from \"./colorScales\";\n\nexport const defaultColorScales: AlouetteColorScales = {\n \"grayscale.light\": createColorScale({\n 1: \"#FFFFFF\",\n 2: \"#EBEBEB\",\n 3: \"#DBDBDB\",\n 4: \"#D1D1D1\",\n 5: \"#C7C7C7\",\n 6: \"#B8B8B8\",\n 7: \"#8F8F8F\",\n 8: \"#616161\",\n 9: \"#525252\",\n 10: \"#2E2E2E\",\n }),\n \"grayscale.dark\": createColorScale({\n 1: \"#1F1F1F\",\n 2: \"#1F1F1F\",\n 3: \"#292929\",\n 4: \"#333333\",\n 5: \"#3D3D3D\",\n 6: \"#474747\",\n 7: \"#525252\",\n 8: \"#9E9E9E\",\n 9: \"#ADADAD\",\n 10: \"#D1D1D1\",\n }),\n \"primary.light\": createColorScale({\n 1: \"#EFF8FB\",\n 2: \"#DAF4FB\",\n 3: \"#BEEBF9\",\n 4: \"#ABE5F7\",\n 5: \"#99DFF5\",\n 6: \"#7DD7F2\",\n 7: \"#23C8FB\",\n 8: \"#037496\",\n 9: \"#025D78\",\n 10: \"#012732\",\n }),\n \"primary.dark\": createColorScale({\n 1: \"#02161C\",\n 2: \"#092A35\",\n 3: \"#0B3846\",\n 4: \"#0E4758\",\n 5: \"#135C72\",\n 6: \"#156A84\",\n 7: \"#0FB4E6\",\n 8: \"#49CCF3\",\n 9: \"#66D4F5\",\n 10: \"#A9E7F9\",\n }),\n \"danger.light\": createColorScale({\n 1: \"#FBEFEF\",\n 2: \"#FEF6F5\",\n 3: \"#FDDAD9\",\n 4: \"#FBC7C5\",\n 5: \"#FAB5B2\",\n 6: \"#F89996\",\n 7: \"#FB4741\",\n 8: \"#C80B04\",\n 9: \"#AA0903\",\n 10: \"#640502\",\n }),\n \"danger.dark\": createColorScale({\n 1: \"#1C0302\",\n 2: \"#4F0F0D\",\n 3: \"#601210\",\n 4: \"#721613\",\n 5: \"#8C1B17\",\n 6: \"#9E1E1A\",\n 7: \"#F12922\",\n 8: \"#F56A66\",\n 9: \"#F78682\",\n 10: \"#FBC7C5\",\n }),\n \"info.light\": createColorScale({\n 1: \"#EFF8FB\",\n 2: \"#DAF3FB\",\n 3: \"#BEEAF9\",\n 4: \"#ABE4F7\",\n 5: \"#99DEF5\",\n 6: \"#7DD5F2\",\n 7: \"#23C5FB\",\n 8: \"#037196\",\n 9: \"#025B78\",\n 10: \"#012632\",\n }),\n \"info.dark\": createColorScale({\n 1: \"#02161C\",\n 2: \"#092A35\",\n 3: \"#0B3746\",\n 4: \"#0E4558\",\n 5: \"#135A72\",\n 6: \"#156884\",\n 7: \"#0FB0E6\",\n 8: \"#49C9F3\",\n 9: \"#66D1F5\",\n 10: \"#A9E5F9\",\n }),\n \"success.light\": createColorScale({\n 1: \"#EFFBEF\",\n 2: \"#DAFBDA\",\n 3: \"#BEF9BE\",\n 4: \"#ABF7AB\",\n 5: \"#99F599\",\n 6: \"#7DF27D\",\n 7: \"#23FB23\",\n 8: \"#038203\",\n 9: \"#026402\",\n 10: \"#011E01\",\n }),\n \"success.dark\": createColorScale({\n 1: \"#021C02\",\n 2: \"#093509\",\n 3: \"#0B460B\",\n 4: \"#0E580E\",\n 5: \"#137213\",\n 6: \"#158415\",\n 7: \"#0FE60F\",\n 8: \"#49F349\",\n 9: \"#66F566\",\n 10: \"#A9F9A9\",\n }),\n \"warning.light\": createColorScale({\n 1: \"#FBF7EF\",\n 2: \"#FEF8EC\",\n 3: \"#FBEDD0\",\n 4: \"#FAE6BD\",\n 5: \"#F9DEAA\",\n 6: \"#F6D38D\",\n 7: \"#FBBA37\",\n 8: \"#825803\",\n 9: \"#644302\",\n 10: \"#1E1401\",\n }),\n \"warning.dark\": createColorScale({\n 1: \"#1C1402\",\n 2: \"#46330B\",\n 3: \"#583F0E\",\n 4: \"#694C11\",\n 5: \"#845F15\",\n 6: \"#956C18\",\n 7: \"#F0A919\",\n 8: \"#F5C25C\",\n 9: \"#F6CD79\",\n 10: \"#FBE6BC\",\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 createColorScale,\n type AlouetteColorScales,\n type AlouetteColorScale,\n} from \"./config/colorScales\";\n\nexport { defaultColorScales } from \"./config/defaultColorScales\";\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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"}