alouette 10.2.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/createAlouetteTamagui-browser.es.js +85 -10
  3. package/dist/createAlouetteTamagui-browser.es.js.map +1 -1
  4. package/dist/createAlouetteTamagui-node20.cjs +92 -12
  5. package/dist/createAlouetteTamagui-node20.cjs.map +1 -1
  6. package/dist/createAlouetteTamagui-node20.mjs +90 -12
  7. package/dist/createAlouetteTamagui-node20.mjs.map +1 -1
  8. package/dist/createAlouetteTamagui-react-native.cjs.js +92 -12
  9. package/dist/createAlouetteTamagui-react-native.cjs.js.map +1 -1
  10. package/dist/createAlouetteTamagui-react-native.es.js +90 -12
  11. package/dist/createAlouetteTamagui-react-native.es.js.map +1 -1
  12. package/dist/definitions/components/actions/Button.d.ts +2 -2
  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 +3 -2
  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 +1 -1
  21. package/dist/definitions/components/containers/Box.stories.d.ts +61 -3
  22. package/dist/definitions/components/containers/Box.stories.d.ts.map +1 -1
  23. package/dist/definitions/components/containers/PressableBox.d.ts +1 -1
  24. package/dist/definitions/components/containers/PressableBox.stories.d.ts +12 -3
  25. package/dist/definitions/components/containers/PressableBox.stories.d.ts.map +1 -1
  26. package/dist/definitions/components/containers/variants.d.ts +82 -13
  27. package/dist/definitions/components/containers/variants.d.ts.map +1 -1
  28. package/dist/definitions/components/feedback/Message.d.ts +6 -4
  29. package/dist/definitions/components/feedback/Message.d.ts.map +1 -1
  30. package/dist/definitions/components/feedback/Message.stories.d.ts +40 -2
  31. package/dist/definitions/components/feedback/Message.stories.d.ts.map +1 -1
  32. package/dist/definitions/components/forms/InputText.d.ts +2 -2
  33. package/dist/definitions/components/forms/InputText.stories.d.ts +42 -3
  34. package/dist/definitions/components/forms/InputText.stories.d.ts.map +1 -1
  35. package/dist/definitions/components/layout/Separator.stories.d.ts +11 -2
  36. package/dist/definitions/components/layout/Separator.stories.d.ts.map +1 -1
  37. package/dist/definitions/components/layout/list.stories.d.ts +13 -2
  38. package/dist/definitions/components/layout/list.stories.d.ts.map +1 -1
  39. package/dist/definitions/components/primitives/Icon.stories.d.ts +25 -2
  40. package/dist/definitions/components/primitives/Icon.stories.d.ts.map +1 -1
  41. package/dist/definitions/components/primitives/Link.d.ts +26 -0
  42. package/dist/definitions/components/primitives/Link.d.ts.map +1 -0
  43. package/dist/definitions/components/primitives/Link.stories.d.ts +49 -0
  44. package/dist/definitions/components/primitives/Link.stories.d.ts.map +1 -0
  45. package/dist/definitions/components/primitives/View.stories.d.ts +9 -1
  46. package/dist/definitions/components/primitives/View.stories.d.ts.map +1 -1
  47. package/dist/definitions/components/primitives/createVariants.d.ts +14 -28
  48. package/dist/definitions/components/primitives/createVariants.d.ts.map +1 -1
  49. package/dist/definitions/components/primitives/stacks.stories.d.ts +60 -6
  50. package/dist/definitions/components/primitives/stacks.stories.d.ts.map +1 -1
  51. package/dist/definitions/components/story-components/Story.d.ts +2 -2
  52. package/dist/definitions/components/story-components/Story.d.ts.map +1 -1
  53. package/dist/definitions/components/story-components/StoryDecorator.d.ts +1 -1
  54. package/dist/definitions/components/story-components/StoryDecorator.d.ts.map +1 -1
  55. package/dist/definitions/components/story-components/StoryTitle.d.ts +6 -4
  56. package/dist/definitions/components/story-components/StoryTitle.d.ts.map +1 -1
  57. package/dist/definitions/components/typography/Typography.d.ts +10 -28
  58. package/dist/definitions/components/typography/Typography.d.ts.map +1 -1
  59. package/dist/definitions/components/typography/Typography.stories.d.ts +14 -4
  60. package/dist/definitions/components/typography/Typography.stories.d.ts.map +1 -1
  61. package/dist/definitions/components/windowSize/SwitchBreakpoints.stories.d.ts +11 -2
  62. package/dist/definitions/components/windowSize/SwitchBreakpoints.stories.d.ts.map +1 -1
  63. package/dist/definitions/config/animations.d.ts.map +1 -1
  64. package/dist/definitions/config/colorScales.d.ts.map +1 -1
  65. package/dist/definitions/config/createAlouetteFonts.d.ts.map +1 -1
  66. package/dist/definitions/config/createAlouetteTokens.d.ts +10 -10
  67. package/dist/definitions/config/createAlouetteTokens.d.ts.map +1 -1
  68. package/dist/definitions/config/themes.d.ts +386 -92
  69. package/dist/definitions/config/themes.d.ts.map +1 -1
  70. package/dist/definitions/config/themes.stories.d.ts +12 -5
  71. package/dist/definitions/config/themes.stories.d.ts.map +1 -1
  72. package/dist/definitions/config/tokens.stories.d.ts +12 -5
  73. package/dist/definitions/config/tokens.stories.d.ts.map +1 -1
  74. package/dist/definitions/config/utils/colorContrast.d.ts +18 -0
  75. package/dist/definitions/config/utils/colorContrast.d.ts.map +1 -0
  76. package/dist/definitions/config/utils/colorContrast.test.d.ts +2 -0
  77. package/dist/definitions/config/utils/colorContrast.test.d.ts.map +1 -0
  78. package/dist/definitions/config/utils/groupTokens.d.ts.map +1 -1
  79. package/dist/definitions/core/AlouetteDecorator.d.ts +1 -1
  80. package/dist/definitions/core/AlouetteDecorator.d.ts.map +1 -1
  81. package/dist/definitions/createAlouetteTamagui.d.ts.map +1 -1
  82. package/dist/definitions/index.d.ts +1 -1
  83. package/dist/definitions/index.d.ts.map +1 -1
  84. package/dist/index-browser.es.js +153 -162
  85. package/dist/index-browser.es.js.map +1 -1
  86. package/dist/index-node20.cjs +154 -163
  87. package/dist/index-node20.cjs.map +1 -1
  88. package/dist/index-node20.mjs +153 -162
  89. package/dist/index-node20.mjs.map +1 -1
  90. package/dist/index-react-native.cjs.js +154 -163
  91. package/dist/index-react-native.cjs.js.map +1 -1
  92. package/dist/index-react-native.es.js +153 -162
  93. package/dist/index-react-native.es.js.map +1 -1
  94. package/package.json +17 -16
  95. package/src/components/actions/Button.stories.tsx +170 -41
  96. package/src/components/actions/Button.tsx +32 -6
  97. package/src/components/actions/IconButton.stories.tsx +120 -20
  98. package/src/components/actions/IconButton.tsx +53 -6
  99. package/src/components/containers/Box.stories.tsx +111 -61
  100. package/src/components/containers/PressableBox.stories.tsx +56 -11
  101. package/src/components/containers/variants.ts +27 -19
  102. package/src/components/feedback/Message.stories.tsx +76 -10
  103. package/src/components/feedback/Message.tsx +6 -2
  104. package/src/components/forms/InputText.stories.tsx +71 -11
  105. package/src/components/layout/Separator.stories.tsx +46 -5
  106. package/src/components/layout/list.stories.tsx +58 -9
  107. package/src/components/primitives/Icon.stories.tsx +57 -10
  108. package/src/components/primitives/Link.stories.tsx +108 -0
  109. package/src/components/primitives/Link.tsx +38 -0
  110. package/src/components/primitives/View.stories.tsx +47 -2
  111. package/src/components/primitives/createVariants.ts +14 -86
  112. package/src/components/primitives/stacks.stories.tsx +168 -40
  113. package/src/components/story-components/Story.tsx +14 -7
  114. package/src/components/story-components/StoryDecorator.tsx +1 -1
  115. package/src/components/story-components/StoryTitle.tsx +6 -6
  116. package/src/components/typography/Typography.stories.tsx +49 -16
  117. package/src/components/typography/Typography.tsx +24 -45
  118. package/src/components/windowSize/SwitchBreakpoints.stories.tsx +57 -3
  119. package/src/config/animations.ts +3 -1
  120. package/src/config/colorScales.ts +1 -1
  121. package/src/config/themes.stories.tsx +30 -6
  122. package/src/config/themes.ts +69 -11
  123. package/src/config/tokens.stories.tsx +35 -7
  124. package/src/config/utils/colorContrast.test.ts +41 -0
  125. package/src/config/utils/colorContrast.ts +85 -0
  126. package/src/core/AlouetteDecorator.tsx +1 -1
  127. package/src/index.ts +0 -2
@@ -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\n \"interactive.contained.backgroundColor\": Variable<string>;\n \"interactive.borderColor\": Variable<string>;\n\n \"interactive.contained.backgroundColor:hover\": Variable<string>;\n \"interactive.outlined.backgroundColor:hover\": Variable<string>;\n \"interactive.borderColor:hover\": Variable<string>;\n\n \"interactive.contained.backgroundColor:focus\": Variable<string>;\n \"interactive.outlined.backgroundColor:focus\": Variable<string>;\n \"interactive.borderColor:focus\": Variable<string>;\n\n \"interactive.contained.backgroundColor:press\": Variable<string>;\n \"interactive.outlined.backgroundColor:press\": Variable<string>;\n \"interactive.borderColor:press\": Variable<string>;\n\n \"interactive.contained.backgroundColor:disabled\": Variable<string>;\n \"interactive.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 return {\n backgroundColor,\n textColor,\n mainColor: getColor(6),\n mainTextColor: getColor(9),\n contrastTextColor,\n borderColor: getColor(8),\n \"textColor:disabled\": getColor(3, \"grayscale\"),\n \"contrastTextColor:disabled\": getColor(7, \"grayscale\"),\n\n \"interactive.contained.backgroundColor\": getColor(5),\n \"interactive.borderColor\": getColor(mode === \"dark\" ? 5 : 8),\n\n \"interactive.contained.backgroundColor:hover\": getColor(4),\n \"interactive.outlined.backgroundColor:hover\": getColor(1),\n \"interactive.borderColor:hover\": getColor(mode === \"dark\" ? 5 : 7),\n\n \"interactive.contained.backgroundColor:focus\": getColor(4),\n \"interactive.outlined.backgroundColor:focus\": getColor(1),\n \"interactive.borderColor:focus\": getColor(7),\n\n \"interactive.contained.backgroundColor:press\": getColor(2),\n \"interactive.outlined.backgroundColor:press\": getColor(3),\n \"interactive.borderColor:press\": getColor(7),\n\n \"interactive.contained.backgroundColor:disabled\": getColor(3, \"grayscale\"),\n \"interactive.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\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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"}
@@ -17,9 +17,12 @@ const animations = createAnimations({
17
17
  });
18
18
  if ("navigator" in global) {
19
19
  const navigator = global.navigator;
20
- if (!navigator.userAgent?.startsWith("Node.js") && navigator.product !== "ReactNative") {
20
+ if (
21
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
22
+ !navigator.userAgent?.startsWith("Node.js") && navigator.product !== "ReactNative"
23
+ ) {
21
24
  throw new Error(
22
- `animations native is loaded in web: ${// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
25
+ `animations native is loaded in web: ${// eslint-disable-next-line @typescript-eslint/restrict-template-expressions, n/no-unsupported-features/node-builtins
23
26
  navigator.appName || navigator.product || navigator.userAgent}`
24
27
  );
25
28
  }
@@ -79,10 +82,6 @@ const createAlouetteFonts = ({
79
82
  });
80
83
 
81
84
  const Breakpoints = {
82
- /**
83
- * min-width: 0
84
- */
85
- BASE: 0,
86
85
  /**
87
86
  * min-width: 480px
88
87
  */
@@ -155,6 +154,55 @@ const createAlouetteTokens = (colorScales, { spacing = 4 } = {}) => {
155
154
  });
156
155
  };
157
156
 
157
+ const getLuminance = (r, g, b) => {
158
+ const values = [r, g, b].map((c) => {
159
+ const s = c / 255;
160
+ return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;
161
+ });
162
+ return 0.2126 * values[0] + 0.7152 * values[1] + 0.0722 * values[2];
163
+ };
164
+ const hexToRgb = (hex) => {
165
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
166
+ if (!result?.[1] || !result[2] || !result[3]) return null;
167
+ return {
168
+ r: parseInt(result[1], 16),
169
+ g: parseInt(result[2], 16),
170
+ b: parseInt(result[3], 16)
171
+ };
172
+ };
173
+ const getContrastRatio = (color1, color2) => {
174
+ const rgb1 = hexToRgb(color1);
175
+ const rgb2 = hexToRgb(color2);
176
+ if (!rgb1 || !rgb2) return 0;
177
+ const l1 = getLuminance(rgb1.r, rgb1.g, rgb1.b);
178
+ const l2 = getLuminance(rgb2.r, rgb2.g, rgb2.b);
179
+ const lighter = Math.max(l1, l2);
180
+ const darker = Math.min(l1, l2);
181
+ return (lighter + 0.05) / (darker + 0.05);
182
+ };
183
+ const checkContrast = (foreground, background, level = "AA") => {
184
+ const ratio = getContrastRatio(foreground, background);
185
+ const minimumRatio = level === "AA" ? 4.5 : 7;
186
+ return {
187
+ ratio,
188
+ passes: ratio >= minimumRatio,
189
+ minimumRatio
190
+ };
191
+ };
192
+ const warnOnContrastIssues = (themeName, textColor, backgroundColor) => {
193
+ if (process.env.NODE_ENV !== "development") return;
194
+ const result = checkContrast(textColor, backgroundColor);
195
+ if (!result.passes) {
196
+ console.warn(
197
+ `[Alouette] Contrast warning in theme "${themeName}":
198
+ Text color ${textColor} on background ${backgroundColor}
199
+ has contrast ratio of ${result.ratio.toFixed(2)}.
200
+ Minimum required: ${result.minimumRatio}
201
+ This may cause accessibility issues.`
202
+ );
203
+ }
204
+ };
205
+
158
206
  const darkModeScaleNumbers = {
159
207
  1: 10,
160
208
  2: 9,
@@ -186,28 +234,50 @@ const createColorTheme = (tokens, colorScaleName, mode = "light", backgroundColo
186
234
  const scaleNumber = mode === "dark" ? darkModeScaleNumbers[lightScaleNumber] : lightScaleNumber;
187
235
  return tokens.color[`${forceScaleNumber}.${scaleNumber}`];
188
236
  };
189
- return {
237
+ const contrastBorderColor = contrastTextColor;
238
+ const theme = {
190
239
  backgroundColor,
191
240
  textColor,
192
241
  mainColor: getColor(6),
193
242
  mainTextColor: getColor(9),
194
243
  contrastTextColor,
195
244
  borderColor: getColor(8),
245
+ contrastBorderColor,
246
+ shadowColor: getColor(9),
196
247
  "textColor:disabled": getColor(3, "grayscale"),
197
248
  "contrastTextColor:disabled": getColor(7, "grayscale"),
249
+ "interactive.linkTextColor": getColor(9),
250
+ "interactive.linkTextColor:hover": getColor(7),
251
+ "interactive.linkTextColor:focus": getColor(7),
252
+ "interactive.linkTextColor:press": getColor(7),
253
+ "interactive.linkTextColor:disabled": getColor(3, "grayscale"),
198
254
  "interactive.contained.backgroundColor": getColor(5),
199
- "interactive.borderColor": getColor(mode === "dark" ? 5 : 8),
255
+ "interactive.elevated.backgroundColor": backgroundColor,
256
+ "interactive.elevated.shadowColor": getColor(9),
257
+ "interactive.elevated.borderColor": contrastBorderColor,
258
+ "interactive.outlined.backgroundColor": backgroundColor,
259
+ "interactive.outlined.borderColor": getColor(mode === "dark" ? 5 : 8),
200
260
  "interactive.contained.backgroundColor:hover": getColor(4),
261
+ "interactive.elevated.backgroundColor:hover": getColor(1),
262
+ "interactive.elevated.borderColor:hover": contrastBorderColor,
201
263
  "interactive.outlined.backgroundColor:hover": getColor(1),
202
- "interactive.borderColor:hover": getColor(mode === "dark" ? 5 : 7),
264
+ "interactive.outlined.borderColor:hover": getColor(mode === "dark" ? 5 : 7),
203
265
  "interactive.contained.backgroundColor:focus": getColor(4),
266
+ "interactive.elevated.backgroundColor:focus": getColor(1),
267
+ "interactive.elevated.borderColor:focus": contrastBorderColor,
204
268
  "interactive.outlined.backgroundColor:focus": getColor(1),
205
- "interactive.borderColor:focus": getColor(7),
269
+ "interactive.outlined.borderColor:focus": getColor(7),
206
270
  "interactive.contained.backgroundColor:press": getColor(2),
271
+ "interactive.elevated.backgroundColor:press": getColor(3),
272
+ "interactive.elevated.borderColor:press": contrastBorderColor,
207
273
  "interactive.outlined.backgroundColor:press": getColor(3),
208
- "interactive.borderColor:press": getColor(7),
274
+ "interactive.outlined.borderColor:press": getColor(7),
209
275
  "interactive.contained.backgroundColor:disabled": getColor(3, "grayscale"),
210
- "interactive.borderColor:disabled": getColor(3, "grayscale"),
276
+ "interactive.elevated.backgroundColor:disabled": backgroundColor,
277
+ "interactive.elevated.shadowColor:disabled": getColor(9, "grayscale"),
278
+ "interactive.elevated.borderColor:disabled": getColor(3, "grayscale"),
279
+ "interactive.outlined.backgroundColor:disabled": backgroundColor,
280
+ "interactive.outlined.borderColor:disabled": getColor(3, "grayscale"),
211
281
  "interactive.textColor:disabled": getColor(7, "grayscale"),
212
282
  "interactive.forms.textColor": textColor,
213
283
  "interactive.forms.placeholderTextColor": getColor(3, "grayscale"),
@@ -221,6 +291,14 @@ const createColorTheme = (tokens, colorScaleName, mode = "light", backgroundColo
221
291
  "interactive.forms.borderColor:press": getColor(7),
222
292
  "interactive.forms.borderColor:disabled": getColor(3, "grayscale")
223
293
  };
294
+ if (process.env.NODE_ENV === "development") {
295
+ warnOnContrastIssues(
296
+ colorScaleName,
297
+ theme.textColor.val,
298
+ theme.backgroundColor.val
299
+ );
300
+ }
301
+ return theme;
224
302
  };
225
303
  const createAlouetteThemes = (tokens) => {
226
304
  const alouetteTokens = tokens;
@@ -1 +1 @@
1
- {"version":3,"file":"createAlouetteTamagui-node20.mjs","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\n \"interactive.contained.backgroundColor\": Variable<string>;\n \"interactive.borderColor\": Variable<string>;\n\n \"interactive.contained.backgroundColor:hover\": Variable<string>;\n \"interactive.outlined.backgroundColor:hover\": Variable<string>;\n \"interactive.borderColor:hover\": Variable<string>;\n\n \"interactive.contained.backgroundColor:focus\": Variable<string>;\n \"interactive.outlined.backgroundColor:focus\": Variable<string>;\n \"interactive.borderColor:focus\": Variable<string>;\n\n \"interactive.contained.backgroundColor:press\": Variable<string>;\n \"interactive.outlined.backgroundColor:press\": Variable<string>;\n \"interactive.borderColor:press\": Variable<string>;\n\n \"interactive.contained.backgroundColor:disabled\": Variable<string>;\n \"interactive.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 return {\n backgroundColor,\n textColor,\n mainColor: getColor(6),\n mainTextColor: getColor(9),\n contrastTextColor,\n borderColor: getColor(8),\n \"textColor:disabled\": getColor(3, \"grayscale\"),\n \"contrastTextColor:disabled\": getColor(7, \"grayscale\"),\n\n \"interactive.contained.backgroundColor\": getColor(5),\n \"interactive.borderColor\": getColor(mode === \"dark\" ? 5 : 8),\n\n \"interactive.contained.backgroundColor:hover\": getColor(4),\n \"interactive.outlined.backgroundColor:hover\": getColor(1),\n \"interactive.borderColor:hover\": getColor(mode === \"dark\" ? 5 : 7),\n\n \"interactive.contained.backgroundColor:focus\": getColor(4),\n \"interactive.outlined.backgroundColor:focus\": getColor(1),\n \"interactive.borderColor:focus\": getColor(7),\n\n \"interactive.contained.backgroundColor:press\": getColor(2),\n \"interactive.outlined.backgroundColor:press\": getColor(3),\n \"interactive.borderColor:press\": getColor(7),\n\n \"interactive.contained.backgroundColor:disabled\": getColor(3, \"grayscale\"),\n \"interactive.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\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-node20.mjs","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":[],"mappings":"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"}