alouette 19.2.0 → 19.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index-node22.mjs","sources":["../src/core/ThemeContext.ts","../src/themeVariables.ts","../src/ui/containers/ScopedTheme.tsx","../src/core/AlouetteProvider.tsx","../src/core/AlouetteDecorator.tsx","../src/core/useThemeToken.ts","../src/ui/primitives/View.tsx","../src/ui/containers/AccentScope.tsx","../src/ui/primitives/Text.tsx","../src/ui/primitives/ScrollView.tsx","../src/ui/primitives/FlatList.tsx","../src/ui/primitives/SectionList.tsx","../src/ui/stacks/stacks.tsx","../src/ui/stacks/Separator.tsx","../src/ui/containers/Box.tsx","../src/ui/containers/Surface.tsx","../src/ui/styled.tsx","../src/ui/story-components/StoryTitle.tsx","../src/ui/story-components/Story.tsx","../src/ui/story-components/StoryContainer.tsx","../src/ui/story-components/StoryDecorator.tsx","../src/ui/story-components/StoryGrid.tsx","../src/ui/containers/Presence.tsx","../src/animationDurationsMs.ts","../src/ui/primitives/Icon.tsx","../src/ui/data/PressableBox.tsx","../src/ui/actions/Button.tsx","../src/ui/actions/IconButton.tsx","../src/ui/inputs/InputText.tsx","../src/ui/inputs/TextArea.tsx","../src/ui/inputs/Switch.tsx","../src/ui/feedback/Badge.tsx","../src/ui/feedback/Message.tsx","../src/ui/data/PressableListItem.tsx","../src/ui/layout/GradientBackground.tsx","../src/ui/layout/GradientScrollView.tsx","../src/config/Breakpoints.ts","../src/windowSize/useCurrentBreakpointName.ts","../src/windowSize/SwitchBreakpoints.tsx","../src/expo/ExternalLink.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { AlouetteModeTheme, AlouetteTheme } from \"./AlouetteConfig\";\n\n/**\n * Tracks the currently applied theme name (e.g. \"dark_brand\") so JS reads\n * (`useThemeToken`) and accent composition (`AccentScope`) know which theme\n * is active. Set by `ScopedTheme` alongside NativeWind's variable context.\n *\n * Defaults to \"light\", matching the light defaults in the global `@theme` block.\n */\nexport const ThemeContext = createContext<AlouetteTheme>(\"light\");\n\nexport function useCurrentTheme(): AlouetteTheme {\n return useContext(ThemeContext);\n}\n\nexport function useCurrentMode(): AlouetteModeTheme {\n return useContext(ThemeContext).startsWith(\"dark\") ? \"dark\" : \"light\";\n}\n","/* Generated by scripts/build-css.ts. DO NOT EDIT. */\nimport type { AlouetteTheme } from \"./core/AlouetteConfig\";\n\n/**\n * Resolved CSS-variable maps for every theme, shared with global.css. Feeds\n * `ScopedTheme` (NativeWind's `VariableContextProvider`) and `useThemeToken`.\n */\nexport const themeVariables: Record<\n AlouetteTheme,\n Record<`--${string}`, string>\n> = {\n \"light\": {\n \"--color-translucent\": \"#ffffff66\",\n \"--color-disabled-sharp\": \"#616161\",\n \"--color-disabled-muted\": \"#8F8F8F\",\n \"--color-disabled-interactive\": \"#B8B8B8\",\n \"--color-disabled-interactive-muted\": \"#E0E0E0\",\n \"--color-muted\": \"#474747\",\n \"--color-form-border-disabled\": \"#B8B8B8\",\n \"--color-form-placeholder\": \"#616161\",\n \"--color-form-disabled-text\": \"#474747\",\n \"--color-interactive-contained-disabled\": \"#C7C7C7\",\n \"--color-interactive-outlined-disabled\": \"#B8B8B8\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#EBEBEB\",\n \"--color-interactive-accent-outlined-disabled\": \"#B8B8B8\",\n \"--color-screen\": \"#EBEBEB\",\n \"--color-surface\": \"#F5F5F5\",\n \"--color-highlight\": \"#FFFFFF\",\n \"--color-enabled\": \"#C7C7C7\",\n \"--color-highlight-accent\": \"#E0E0E0\",\n \"--color-lowered\": \"#E0E0E0\",\n \"--color-screen-gradient-start\": \"#E0E0E0\",\n \"--color-screen-gradient-middle\": \"#C7C7C7\",\n \"--color-screen-gradient-end\": \"#B8B8B8\",\n \"--color-border-muted\": \"#8F8F8F\",\n \"--color-border-sharp\": \"#616161\",\n \"--color-interactive-contained-pressable\": \"#FFFFFF\",\n \"--color-interactive-contained-hover\": \"#F5F5F5\",\n \"--color-interactive-contained-focus\": \"#F5F5F5\",\n \"--color-interactive-contained-active\": \"#EBEBEB\",\n \"--color-interactive-outlined-pressable\": \"#616161\",\n \"--color-interactive-outlined-hover\": \"#8F8F8F\",\n \"--color-interactive-outlined-focus\": \"#8F8F8F\",\n \"--color-interactive-outlined-active\": \"#8F8F8F\",\n \"--color-interactive-outlined-outline-focus\": \"#8F8F8F\",\n \"--color-interactive-active\": \"#616161\",\n \"--color-interactive-pressable\": \"#474747\",\n \"--color-interactive-hover\": \"#141414\",\n \"--color-sharp\": \"#141414\",\n \"--color-accent\": \"#141414\",\n \"--color-accent-muted\": \"#616161\",\n \"--color-on-accent\": \"#141414\",\n \"--color-on-accent-muted\": \"#616161\",\n \"--color-selection\": \"#47474740\",\n \"--color-interactive-accent-contained-bg\": \"#EBEBEB\",\n \"--color-interactive-accent-contained-bg-hover\": \"#F5F5F5\",\n \"--color-interactive-accent-contained-bg-focus\": \"#F5F5F5\",\n \"--color-interactive-accent-contained-bg-active\": \"#F5F5F5\"\n },\n \"dark\": {\n \"--color-translucent\": \"#1f1e1e55\",\n \"--color-disabled-sharp\": \"#A8A8A8\",\n \"--color-disabled-muted\": \"#A8A8A8\",\n \"--color-disabled-interactive\": \"#525252\",\n \"--color-disabled-interactive-muted\": \"#333333\",\n \"--color-muted\": \"#C2C2C2\",\n \"--color-form-border-disabled\": \"#525252\",\n \"--color-form-placeholder\": \"#A8A8A8\",\n \"--color-form-disabled-text\": \"#C2C2C2\",\n \"--color-interactive-contained-disabled\": \"#3D3D3D\",\n \"--color-interactive-outlined-disabled\": \"#474747\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#3D3D3D\",\n \"--color-interactive-accent-outlined-disabled\": \"#474747\",\n \"--color-screen\": \"#1F1F1F\",\n \"--color-surface\": \"#292929\",\n \"--color-highlight\": \"#333333\",\n \"--color-enabled\": \"#525252\",\n \"--color-highlight-accent\": \"#333333\",\n \"--color-lowered\": \"#0F0F0F\",\n \"--color-screen-gradient-start\": \"#292929\",\n \"--color-screen-gradient-middle\": \"#1F1F1F\",\n \"--color-screen-gradient-end\": \"#0F0F0F\",\n \"--color-border-muted\": \"#525252\",\n \"--color-border-sharp\": \"#A8A8A8\",\n \"--color-interactive-contained-pressable\": \"#474747\",\n \"--color-interactive-contained-hover\": \"#525252\",\n \"--color-interactive-contained-focus\": \"#525252\",\n \"--color-interactive-contained-active\": \"#525252\",\n \"--color-interactive-outlined-pressable\": \"#525252\",\n \"--color-interactive-outlined-hover\": \"#A8A8A8\",\n \"--color-interactive-outlined-focus\": \"#A8A8A8\",\n \"--color-interactive-outlined-active\": \"#A8A8A8\",\n \"--color-interactive-outlined-outline-focus\": \"#525252\",\n \"--color-interactive-active\": \"#A8A8A8\",\n \"--color-interactive-pressable\": \"#C2C2C2\",\n \"--color-interactive-hover\": \"#F5F5F5\",\n \"--color-sharp\": \"#F5F5F5\",\n \"--color-accent\": \"#F5F5F5\",\n \"--color-accent-muted\": \"#C2C2C2\",\n \"--color-on-accent\": \"#F5F5F5\",\n \"--color-on-accent-muted\": \"#C2C2C2\",\n \"--color-selection\": \"#C2C2C240\",\n \"--color-interactive-accent-contained-bg\": \"#474747\",\n \"--color-interactive-accent-contained-bg-hover\": \"#525252\",\n \"--color-interactive-accent-contained-bg-focus\": \"#525252\",\n \"--color-interactive-accent-contained-bg-active\": \"#525252\"\n },\n \"light_brand\": {\n \"--color-translucent\": \"#ffffff66\",\n \"--color-disabled-sharp\": \"#616161\",\n \"--color-disabled-muted\": \"#8F8F8F\",\n \"--color-disabled-interactive\": \"#B8B8B8\",\n \"--color-disabled-interactive-muted\": \"#E0E0E0\",\n \"--color-muted\": \"#474747\",\n \"--color-form-border-disabled\": \"#B8B8B8\",\n \"--color-form-placeholder\": \"#616161\",\n \"--color-form-disabled-text\": \"#474747\",\n \"--color-interactive-contained-disabled\": \"#C7C7C7\",\n \"--color-interactive-outlined-disabled\": \"#B8B8B8\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#EBEBEB\",\n \"--color-interactive-accent-outlined-disabled\": \"#B8B8B8\",\n \"--color-screen\": \"#DFF1F6\",\n \"--color-surface\": \"#EFF8FB\",\n \"--color-highlight\": \"#F7FBFD\",\n \"--color-enabled\": \"#99DFF5\",\n \"--color-highlight-accent\": \"#C7EEF9\",\n \"--color-lowered\": \"#C7EEF9\",\n \"--color-screen-gradient-start\": \"#C7EEF9\",\n \"--color-screen-gradient-middle\": \"#99DFF5\",\n \"--color-screen-gradient-end\": \"#7DD7F2\",\n \"--color-border-muted\": \"#23C8FB\",\n \"--color-border-sharp\": \"#037496\",\n \"--color-interactive-contained-pressable\": \"#037496\",\n \"--color-interactive-contained-hover\": \"#049AC8\",\n \"--color-interactive-contained-focus\": \"#049AC8\",\n \"--color-interactive-contained-active\": \"#23C8FB\",\n \"--color-interactive-outlined-pressable\": \"#037496\",\n \"--color-interactive-outlined-hover\": \"#23C8FB\",\n \"--color-interactive-outlined-focus\": \"#23C8FB\",\n \"--color-interactive-outlined-active\": \"#23C8FB\",\n \"--color-interactive-outlined-outline-focus\": \"#23C8FB\",\n \"--color-interactive-active\": \"#037496\",\n \"--color-interactive-pressable\": \"#024D64\",\n \"--color-interactive-hover\": \"#011F28\",\n \"--color-sharp\": \"#011F28\",\n \"--color-accent\": \"#024D64\",\n \"--color-accent-muted\": \"#037496\",\n \"--color-on-accent\": \"#FFFFFF\",\n \"--color-on-accent-muted\": \"#C7EEF9\",\n \"--color-selection\": \"#024D6440\",\n \"--color-interactive-accent-contained-bg\": \"#DFF1F6\",\n \"--color-interactive-accent-contained-bg-hover\": \"#EFF8FB\",\n \"--color-interactive-accent-contained-bg-focus\": \"#EFF8FB\",\n \"--color-interactive-accent-contained-bg-active\": \"#EFF8FB\"\n },\n \"light_info\": {\n \"--color-translucent\": \"#ffffff66\",\n \"--color-disabled-sharp\": \"#616161\",\n \"--color-disabled-muted\": \"#8F8F8F\",\n \"--color-disabled-interactive\": \"#B8B8B8\",\n \"--color-disabled-interactive-muted\": \"#E0E0E0\",\n \"--color-muted\": \"#474747\",\n \"--color-form-border-disabled\": \"#B8B8B8\",\n \"--color-form-placeholder\": \"#616161\",\n \"--color-form-disabled-text\": \"#474747\",\n \"--color-interactive-contained-disabled\": \"#C7C7C7\",\n \"--color-interactive-outlined-disabled\": \"#B8B8B8\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#EBEBEB\",\n \"--color-interactive-accent-outlined-disabled\": \"#B8B8B8\",\n \"--color-screen\": \"#DFF0F6\",\n \"--color-surface\": \"#EFF8FB\",\n \"--color-highlight\": \"#F7FBFD\",\n \"--color-enabled\": \"#99DEF5\",\n \"--color-highlight-accent\": \"#C7EDF9\",\n \"--color-lowered\": \"#C7EDF9\",\n \"--color-screen-gradient-start\": \"#C7EDF9\",\n \"--color-screen-gradient-middle\": \"#99DEF5\",\n \"--color-screen-gradient-end\": \"#7DD5F2\",\n \"--color-border-muted\": \"#23C5FB\",\n \"--color-border-sharp\": \"#037196\",\n \"--color-interactive-contained-pressable\": \"#037196\",\n \"--color-interactive-contained-hover\": \"#0497C8\",\n \"--color-interactive-contained-focus\": \"#0497C8\",\n \"--color-interactive-contained-active\": \"#23C5FB\",\n \"--color-interactive-outlined-pressable\": \"#037196\",\n \"--color-interactive-outlined-hover\": \"#23C5FB\",\n \"--color-interactive-outlined-focus\": \"#23C5FB\",\n \"--color-interactive-outlined-active\": \"#23C5FB\",\n \"--color-interactive-outlined-outline-focus\": \"#23C5FB\",\n \"--color-interactive-active\": \"#037196\",\n \"--color-interactive-pressable\": \"#024B64\",\n \"--color-interactive-hover\": \"#011E28\",\n \"--color-sharp\": \"#011E28\",\n \"--color-accent\": \"#024B64\",\n \"--color-accent-muted\": \"#037196\",\n \"--color-on-accent\": \"#FFFFFF\",\n \"--color-on-accent-muted\": \"#C7EDF9\",\n \"--color-selection\": \"#024B6440\",\n \"--color-interactive-accent-contained-bg\": \"#DFF0F6\",\n \"--color-interactive-accent-contained-bg-hover\": \"#EFF8FB\",\n \"--color-interactive-accent-contained-bg-focus\": \"#EFF8FB\",\n \"--color-interactive-accent-contained-bg-active\": \"#EFF8FB\"\n },\n \"light_success\": {\n \"--color-translucent\": \"#ffffff66\",\n \"--color-disabled-sharp\": \"#616161\",\n \"--color-disabled-muted\": \"#8F8F8F\",\n \"--color-disabled-interactive\": \"#B8B8B8\",\n \"--color-disabled-interactive-muted\": \"#E0E0E0\",\n \"--color-muted\": \"#474747\",\n \"--color-form-border-disabled\": \"#B8B8B8\",\n \"--color-form-placeholder\": \"#616161\",\n \"--color-form-disabled-text\": \"#474747\",\n \"--color-interactive-contained-disabled\": \"#C7C7C7\",\n \"--color-interactive-outlined-disabled\": \"#B8B8B8\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#EBEBEB\",\n \"--color-interactive-accent-outlined-disabled\": \"#B8B8B8\",\n \"--color-screen\": \"#DFF6DF\",\n \"--color-surface\": \"#EFFBEF\",\n \"--color-highlight\": \"#F7FDF7\",\n \"--color-enabled\": \"#91F391\",\n \"--color-highlight-accent\": \"#BFF8BF\",\n \"--color-lowered\": \"#BFF8BF\",\n \"--color-screen-gradient-start\": \"#BFF8BF\",\n \"--color-screen-gradient-middle\": \"#91F391\",\n \"--color-screen-gradient-end\": \"#75F075\",\n \"--color-border-muted\": \"#19FA19\",\n \"--color-border-sharp\": \"#027802\",\n \"--color-interactive-contained-pressable\": \"#027802\",\n \"--color-interactive-contained-hover\": \"#03AA03\",\n \"--color-interactive-contained-focus\": \"#03AA03\",\n \"--color-interactive-contained-active\": \"#19FA19\",\n \"--color-interactive-outlined-pressable\": \"#027802\",\n \"--color-interactive-outlined-hover\": \"#19FA19\",\n \"--color-interactive-outlined-focus\": \"#19FA19\",\n \"--color-interactive-outlined-active\": \"#19FA19\",\n \"--color-interactive-outlined-outline-focus\": \"#19FA19\",\n \"--color-interactive-active\": \"#027802\",\n \"--color-interactive-pressable\": \"#014601\",\n \"--color-interactive-hover\": \"#012801\",\n \"--color-sharp\": \"#012801\",\n \"--color-accent\": \"#014601\",\n \"--color-accent-muted\": \"#027802\",\n \"--color-on-accent\": \"#FFFFFF\",\n \"--color-on-accent-muted\": \"#BFF8BF\",\n \"--color-selection\": \"#01460140\",\n \"--color-interactive-accent-contained-bg\": \"#DFF6DF\",\n \"--color-interactive-accent-contained-bg-hover\": \"#EFFBEF\",\n \"--color-interactive-accent-contained-bg-focus\": \"#EFFBEF\",\n \"--color-interactive-accent-contained-bg-active\": \"#EFFBEF\"\n },\n \"light_warning\": {\n \"--color-translucent\": \"#ffffff66\",\n \"--color-disabled-sharp\": \"#616161\",\n \"--color-disabled-muted\": \"#8F8F8F\",\n \"--color-disabled-interactive\": \"#B8B8B8\",\n \"--color-disabled-interactive-muted\": \"#E0E0E0\",\n \"--color-muted\": \"#474747\",\n \"--color-form-border-disabled\": \"#B8B8B8\",\n \"--color-form-placeholder\": \"#616161\",\n \"--color-form-disabled-text\": \"#474747\",\n \"--color-interactive-contained-disabled\": \"#C7C7C7\",\n \"--color-interactive-outlined-disabled\": \"#B8B8B8\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#EBEBEB\",\n \"--color-interactive-accent-outlined-disabled\": \"#B8B8B8\",\n \"--color-screen\": \"#F6EEDF\",\n \"--color-surface\": \"#FBF7EF\",\n \"--color-highlight\": \"#FDFBF7\",\n \"--color-enabled\": \"#F3D291\",\n \"--color-highlight-accent\": \"#F8E5BF\",\n \"--color-lowered\": \"#F8E5BF\",\n \"--color-screen-gradient-start\": \"#F8E5BF\",\n \"--color-screen-gradient-middle\": \"#F3D291\",\n \"--color-screen-gradient-end\": \"#F0C775\",\n \"--color-border-muted\": \"#FAAF19\",\n \"--color-border-sharp\": \"#8C5E03\",\n \"--color-interactive-contained-pressable\": \"#8C5E03\",\n \"--color-interactive-contained-hover\": \"#BE8004\",\n \"--color-interactive-contained-focus\": \"#BE8004\",\n \"--color-interactive-contained-active\": \"#FAAF19\",\n \"--color-interactive-outlined-pressable\": \"#8C5E03\",\n \"--color-interactive-outlined-hover\": \"#FAAF19\",\n \"--color-interactive-outlined-focus\": \"#FAAF19\",\n \"--color-interactive-outlined-active\": \"#FAAF19\",\n \"--color-interactive-outlined-outline-focus\": \"#FAAF19\",\n \"--color-interactive-active\": \"#8C5E03\",\n \"--color-interactive-pressable\": \"#5A3D02\",\n \"--color-interactive-hover\": \"#281B01\",\n \"--color-sharp\": \"#281B01\",\n \"--color-accent\": \"#5A3D02\",\n \"--color-accent-muted\": \"#8C5E03\",\n \"--color-on-accent\": \"#FFFFFF\",\n \"--color-on-accent-muted\": \"#F8E5BF\",\n \"--color-selection\": \"#5A3D0240\",\n \"--color-interactive-accent-contained-bg\": \"#F6EEDF\",\n \"--color-interactive-accent-contained-bg-hover\": \"#FBF7EF\",\n \"--color-interactive-accent-contained-bg-focus\": \"#FBF7EF\",\n \"--color-interactive-accent-contained-bg-active\": \"#FBF7EF\"\n },\n \"light_danger\": {\n \"--color-translucent\": \"#ffffff66\",\n \"--color-disabled-sharp\": \"#616161\",\n \"--color-disabled-muted\": \"#8F8F8F\",\n \"--color-disabled-interactive\": \"#B8B8B8\",\n \"--color-disabled-interactive-muted\": \"#E0E0E0\",\n \"--color-muted\": \"#474747\",\n \"--color-form-border-disabled\": \"#B8B8B8\",\n \"--color-form-placeholder\": \"#616161\",\n \"--color-form-disabled-text\": \"#474747\",\n \"--color-interactive-contained-disabled\": \"#C7C7C7\",\n \"--color-interactive-outlined-disabled\": \"#B8B8B8\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#EBEBEB\",\n \"--color-interactive-accent-outlined-disabled\": \"#B8B8B8\",\n \"--color-screen\": \"#F6E0DF\",\n \"--color-surface\": \"#FBEFEF\",\n \"--color-highlight\": \"#FDF7F7\",\n \"--color-enabled\": \"#F7A4A1\",\n \"--color-highlight-accent\": \"#FBD2D0\",\n \"--color-lowered\": \"#FBD2D0\",\n \"--color-screen-gradient-start\": \"#FBD2D0\",\n \"--color-screen-gradient-middle\": \"#F7A4A1\",\n \"--color-screen-gradient-end\": \"#F48985\",\n \"--color-border-muted\": \"#FB342D\",\n \"--color-border-sharp\": \"#A00803\",\n \"--color-interactive-contained-pressable\": \"#A00803\",\n \"--color-interactive-contained-hover\": \"#D20B04\",\n \"--color-interactive-contained-focus\": \"#D20B04\",\n \"--color-interactive-contained-active\": \"#FB342D\",\n \"--color-interactive-outlined-pressable\": \"#A00803\",\n \"--color-interactive-outlined-hover\": \"#FB342D\",\n \"--color-interactive-outlined-focus\": \"#FB342D\",\n \"--color-interactive-outlined-active\": \"#FB342D\",\n \"--color-interactive-outlined-outline-focus\": \"#FB342D\",\n \"--color-interactive-active\": \"#A00803\",\n \"--color-interactive-pressable\": \"#6E0602\",\n \"--color-interactive-hover\": \"#280201\",\n \"--color-sharp\": \"#280201\",\n \"--color-accent\": \"#6E0602\",\n \"--color-accent-muted\": \"#A00803\",\n \"--color-on-accent\": \"#FFFFFF\",\n \"--color-on-accent-muted\": \"#FBD2D0\",\n \"--color-selection\": \"#6E060240\",\n \"--color-interactive-accent-contained-bg\": \"#F6E0DF\",\n \"--color-interactive-accent-contained-bg-hover\": \"#FBEFEF\",\n \"--color-interactive-accent-contained-bg-focus\": \"#FBEFEF\",\n \"--color-interactive-accent-contained-bg-active\": \"#FBEFEF\"\n },\n \"dark_brand\": {\n \"--color-translucent\": \"#1f1e1e55\",\n \"--color-disabled-sharp\": \"#A8A8A8\",\n \"--color-disabled-muted\": \"#A8A8A8\",\n \"--color-disabled-interactive\": \"#525252\",\n \"--color-disabled-interactive-muted\": \"#333333\",\n \"--color-muted\": \"#C2C2C2\",\n \"--color-form-border-disabled\": \"#525252\",\n \"--color-form-placeholder\": \"#A8A8A8\",\n \"--color-form-disabled-text\": \"#C2C2C2\",\n \"--color-interactive-contained-disabled\": \"#3D3D3D\",\n \"--color-interactive-outlined-disabled\": \"#474747\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#3D3D3D\",\n \"--color-interactive-accent-outlined-disabled\": \"#474747\",\n \"--color-screen\": \"#0D2830\",\n \"--color-surface\": \"#123540\",\n \"--color-highlight\": \"#104E60\",\n \"--color-enabled\": \"#1E94B8\",\n \"--color-highlight-accent\": \"#104E60\",\n \"--color-lowered\": \"#071418\",\n \"--color-screen-gradient-start\": \"#123540\",\n \"--color-screen-gradient-middle\": \"#0D2830\",\n \"--color-screen-gradient-end\": \"#071418\",\n \"--color-border-muted\": \"#1E94B8\",\n \"--color-border-sharp\": \"#5CD1F5\",\n \"--color-interactive-contained-pressable\": \"#156A84\",\n \"--color-interactive-contained-hover\": \"#1E94B8\",\n \"--color-interactive-contained-focus\": \"#1E94B8\",\n \"--color-interactive-contained-active\": \"#1E94B8\",\n \"--color-interactive-outlined-pressable\": \"#1E94B8\",\n \"--color-interactive-outlined-hover\": \"#5CD1F5\",\n \"--color-interactive-outlined-focus\": \"#5CD1F5\",\n \"--color-interactive-outlined-active\": \"#5CD1F5\",\n \"--color-interactive-outlined-outline-focus\": \"#1E94B8\",\n \"--color-interactive-active\": \"#5CD1F5\",\n \"--color-interactive-pressable\": \"#8CDFF8\",\n \"--color-interactive-hover\": \"#D9F4FD\",\n \"--color-sharp\": \"#D9F4FD\",\n \"--color-accent\": \"#8CDFF8\",\n \"--color-accent-muted\": \"#8CDFF8\",\n \"--color-on-accent\": \"#F5F5F5\",\n \"--color-on-accent-muted\": \"#8CDFF8\",\n \"--color-selection\": \"#8CDFF840\",\n \"--color-interactive-accent-contained-bg\": \"#156A84\",\n \"--color-interactive-accent-contained-bg-hover\": \"#1E94B8\",\n \"--color-interactive-accent-contained-bg-focus\": \"#1E94B8\",\n \"--color-interactive-accent-contained-bg-active\": \"#1E94B8\"\n },\n \"dark_info\": {\n \"--color-translucent\": \"#1f1e1e55\",\n \"--color-disabled-sharp\": \"#A8A8A8\",\n \"--color-disabled-muted\": \"#A8A8A8\",\n \"--color-disabled-interactive\": \"#525252\",\n \"--color-disabled-interactive-muted\": \"#333333\",\n \"--color-muted\": \"#C2C2C2\",\n \"--color-form-border-disabled\": \"#525252\",\n \"--color-form-placeholder\": \"#A8A8A8\",\n \"--color-form-disabled-text\": \"#C2C2C2\",\n \"--color-interactive-contained-disabled\": \"#3D3D3D\",\n \"--color-interactive-outlined-disabled\": \"#474747\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#3D3D3D\",\n \"--color-interactive-accent-outlined-disabled\": \"#474747\",\n \"--color-screen\": \"#0D2730\",\n \"--color-surface\": \"#123440\",\n \"--color-highlight\": \"#104C60\",\n \"--color-enabled\": \"#1E92B8\",\n \"--color-highlight-accent\": \"#104C60\",\n \"--color-lowered\": \"#071418\",\n \"--color-screen-gradient-start\": \"#123440\",\n \"--color-screen-gradient-middle\": \"#0D2730\",\n \"--color-screen-gradient-end\": \"#071418\",\n \"--color-border-muted\": \"#1E92B8\",\n \"--color-border-sharp\": \"#5CCEF5\",\n \"--color-interactive-contained-pressable\": \"#156884\",\n \"--color-interactive-contained-hover\": \"#1E92B8\",\n \"--color-interactive-contained-focus\": \"#1E92B8\",\n \"--color-interactive-contained-active\": \"#1E92B8\",\n \"--color-interactive-outlined-pressable\": \"#1E92B8\",\n \"--color-interactive-outlined-hover\": \"#5CCEF5\",\n \"--color-interactive-outlined-focus\": \"#5CCEF5\",\n \"--color-interactive-outlined-active\": \"#5CCEF5\",\n \"--color-interactive-outlined-outline-focus\": \"#1E92B8\",\n \"--color-interactive-active\": \"#5CCEF5\",\n \"--color-interactive-pressable\": \"#8CDDF8\",\n \"--color-interactive-hover\": \"#D9F4FD\",\n \"--color-sharp\": \"#D9F4FD\",\n \"--color-accent\": \"#8CDDF8\",\n \"--color-accent-muted\": \"#8CDDF8\",\n \"--color-on-accent\": \"#F5F5F5\",\n \"--color-on-accent-muted\": \"#8CDDF8\",\n \"--color-selection\": \"#8CDDF840\",\n \"--color-interactive-accent-contained-bg\": \"#156884\",\n \"--color-interactive-accent-contained-bg-hover\": \"#1E92B8\",\n \"--color-interactive-accent-contained-bg-focus\": \"#1E92B8\",\n \"--color-interactive-accent-contained-bg-active\": \"#1E92B8\"\n },\n \"dark_success\": {\n \"--color-translucent\": \"#1f1e1e55\",\n \"--color-disabled-sharp\": \"#A8A8A8\",\n \"--color-disabled-muted\": \"#A8A8A8\",\n \"--color-disabled-interactive\": \"#525252\",\n \"--color-disabled-interactive-muted\": \"#333333\",\n \"--color-muted\": \"#C2C2C2\",\n \"--color-form-border-disabled\": \"#525252\",\n \"--color-form-placeholder\": \"#A8A8A8\",\n \"--color-form-disabled-text\": \"#C2C2C2\",\n \"--color-interactive-contained-disabled\": \"#3D3D3D\",\n \"--color-interactive-outlined-disabled\": \"#474747\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#3D3D3D\",\n \"--color-interactive-accent-outlined-disabled\": \"#474747\",\n \"--color-screen\": \"#0D300D\",\n \"--color-surface\": \"#124012\",\n \"--color-highlight\": \"#0F570F\",\n \"--color-enabled\": \"#1FAD1F\",\n \"--color-highlight-accent\": \"#0F570F\",\n \"--color-lowered\": \"#071807\",\n \"--color-screen-gradient-start\": \"#124012\",\n \"--color-screen-gradient-middle\": \"#0D300D\",\n \"--color-screen-gradient-end\": \"#071807\",\n \"--color-border-muted\": \"#1FAD1F\",\n \"--color-border-sharp\": \"#52F452\",\n \"--color-interactive-contained-pressable\": \"#157915\",\n \"--color-interactive-contained-hover\": \"#1FAD1F\",\n \"--color-interactive-contained-focus\": \"#1FAD1F\",\n \"--color-interactive-contained-active\": \"#1FAD1F\",\n \"--color-interactive-outlined-pressable\": \"#1FAD1F\",\n \"--color-interactive-outlined-hover\": \"#52F452\",\n \"--color-interactive-outlined-focus\": \"#52F452\",\n \"--color-interactive-outlined-active\": \"#52F452\",\n \"--color-interactive-outlined-outline-focus\": \"#1FAD1F\",\n \"--color-interactive-active\": \"#52F452\",\n \"--color-interactive-pressable\": \"#82F782\",\n \"--color-interactive-hover\": \"#D9FDD9\",\n \"--color-sharp\": \"#D9FDD9\",\n \"--color-accent\": \"#82F782\",\n \"--color-accent-muted\": \"#82F782\",\n \"--color-on-accent\": \"#F5F5F5\",\n \"--color-on-accent-muted\": \"#82F782\",\n \"--color-selection\": \"#82F78240\",\n \"--color-interactive-accent-contained-bg\": \"#157915\",\n \"--color-interactive-accent-contained-bg-hover\": \"#1FAD1F\",\n \"--color-interactive-accent-contained-bg-focus\": \"#1FAD1F\",\n \"--color-interactive-accent-contained-bg-active\": \"#1FAD1F\"\n },\n \"dark_warning\": {\n \"--color-translucent\": \"#1f1e1e55\",\n \"--color-disabled-sharp\": \"#A8A8A8\",\n \"--color-disabled-muted\": \"#A8A8A8\",\n \"--color-disabled-interactive\": \"#525252\",\n \"--color-disabled-interactive-muted\": \"#333333\",\n \"--color-muted\": \"#C2C2C2\",\n \"--color-form-border-disabled\": \"#525252\",\n \"--color-form-placeholder\": \"#A8A8A8\",\n \"--color-form-disabled-text\": \"#C2C2C2\",\n \"--color-interactive-contained-disabled\": \"#3D3D3D\",\n \"--color-interactive-outlined-disabled\": \"#474747\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#3D3D3D\",\n \"--color-interactive-accent-outlined-disabled\": \"#474747\",\n \"--color-screen\": \"#30240D\",\n \"--color-surface\": \"#403012\",\n \"--color-highlight\": \"#583F0E\",\n \"--color-enabled\": \"#AF7E1D\",\n \"--color-highlight-accent\": \"#583F0E\",\n \"--color-lowered\": \"#181207\",\n \"--color-screen-gradient-start\": \"#403012\",\n \"--color-screen-gradient-middle\": \"#30240D\",\n \"--color-screen-gradient-end\": \"#181207\",\n \"--color-border-muted\": \"#AF7E1D\",\n \"--color-border-sharp\": \"#F4BE52\",\n \"--color-interactive-contained-pressable\": \"#7B5914\",\n \"--color-interactive-contained-hover\": \"#AF7E1D\",\n \"--color-interactive-contained-focus\": \"#AF7E1D\",\n \"--color-interactive-contained-active\": \"#AF7E1D\",\n \"--color-interactive-outlined-pressable\": \"#AF7E1D\",\n \"--color-interactive-outlined-hover\": \"#F4BE52\",\n \"--color-interactive-outlined-focus\": \"#F4BE52\",\n \"--color-interactive-outlined-active\": \"#F4BE52\",\n \"--color-interactive-outlined-outline-focus\": \"#AF7E1D\",\n \"--color-interactive-active\": \"#F4BE52\",\n \"--color-interactive-pressable\": \"#F7D082\",\n \"--color-interactive-hover\": \"#FDF1D9\",\n \"--color-sharp\": \"#FDF1D9\",\n \"--color-accent\": \"#F7D082\",\n \"--color-accent-muted\": \"#F7D082\",\n \"--color-on-accent\": \"#F5F5F5\",\n \"--color-on-accent-muted\": \"#F7D082\",\n \"--color-selection\": \"#F7D08240\",\n \"--color-interactive-accent-contained-bg\": \"#7B5914\",\n \"--color-interactive-accent-contained-bg-hover\": \"#AF7E1D\",\n \"--color-interactive-accent-contained-bg-focus\": \"#AF7E1D\",\n \"--color-interactive-accent-contained-bg-active\": \"#AF7E1D\"\n },\n \"dark_danger\": {\n \"--color-translucent\": \"#1f1e1e55\",\n \"--color-disabled-sharp\": \"#A8A8A8\",\n \"--color-disabled-muted\": \"#A8A8A8\",\n \"--color-disabled-interactive\": \"#525252\",\n \"--color-disabled-interactive-muted\": \"#333333\",\n \"--color-muted\": \"#C2C2C2\",\n \"--color-form-border-disabled\": \"#525252\",\n \"--color-form-placeholder\": \"#A8A8A8\",\n \"--color-form-disabled-text\": \"#C2C2C2\",\n \"--color-interactive-contained-disabled\": \"#3D3D3D\",\n \"--color-interactive-outlined-disabled\": \"#474747\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#3D3D3D\",\n \"--color-interactive-accent-outlined-disabled\": \"#474747\",\n \"--color-screen\": \"#300F0D\",\n \"--color-surface\": \"#401312\",\n \"--color-highlight\": \"#691411\",\n \"--color-enabled\": \"#C1251F\",\n \"--color-highlight-accent\": \"#691411\",\n \"--color-lowered\": \"#180707\",\n \"--color-screen-gradient-start\": \"#401312\",\n \"--color-screen-gradient-middle\": \"#300F0D\",\n \"--color-screen-gradient-end\": \"#180707\",\n \"--color-border-muted\": \"#C1251F\",\n \"--color-border-sharp\": \"#F56A66\",\n \"--color-interactive-contained-pressable\": \"#8C1B17\",\n \"--color-interactive-contained-hover\": \"#C1251F\",\n \"--color-interactive-contained-focus\": \"#C1251F\",\n \"--color-interactive-contained-active\": \"#C1251F\",\n \"--color-interactive-outlined-pressable\": \"#C1251F\",\n \"--color-interactive-outlined-hover\": \"#F56A66\",\n \"--color-interactive-outlined-focus\": \"#F56A66\",\n \"--color-interactive-outlined-active\": \"#F56A66\",\n \"--color-interactive-outlined-outline-focus\": \"#C1251F\",\n \"--color-interactive-active\": \"#F56A66\",\n \"--color-interactive-pressable\": \"#F89996\",\n \"--color-interactive-hover\": \"#FDDAD9\",\n \"--color-sharp\": \"#FDDAD9\",\n \"--color-accent\": \"#F89996\",\n \"--color-accent-muted\": \"#F89996\",\n \"--color-on-accent\": \"#F5F5F5\",\n \"--color-on-accent-muted\": \"#F89996\",\n \"--color-selection\": \"#F8999640\",\n \"--color-interactive-accent-contained-bg\": \"#8C1B17\",\n \"--color-interactive-accent-contained-bg-hover\": \"#C1251F\",\n \"--color-interactive-accent-contained-bg-focus\": \"#C1251F\",\n \"--color-interactive-accent-contained-bg-active\": \"#C1251F\"\n }\n};\n","import { VariableContextProvider } from \"nativewind\";\nimport type { ReactNode } from \"react\";\nimport type { AlouetteTheme } from \"../../core/AlouetteConfig\";\nimport { ThemeContext } from \"../../core/ThemeContext\";\nimport { themeVariables } from \"../../themeVariables\";\n\nexport interface ScopedThemeProps {\n /** Full theme name, e.g. \"light\", \"dark\", \"light_brand\", \"dark_danger\". */\n theme: AlouetteTheme;\n children?: ReactNode;\n}\n\n/**\n * Applies a theme to its subtree by pushing the theme's resolved CSS variables\n * through NativeWind's `VariableContextProvider` (layout-neutral on both web —\n * `display: contents` — and native — context only). It also records the active\n * theme name in `ThemeContext` so `useThemeToken` and `AccentScope` can read it.\n *\n * Replaces Uniwind's `ScopedTheme`.\n */\nexport function ScopedTheme({ theme, children }: ScopedThemeProps): ReactNode {\n return (\n <ThemeContext.Provider value={theme}>\n <VariableContextProvider value={themeVariables[theme]}>\n {children}\n </VariableContextProvider>\n </ThemeContext.Provider>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { useColorScheme } from \"react-native\";\nimport { ScopedTheme } from \"../ui/containers/ScopedTheme\";\n\nexport interface AlouetteProviderProps {\n children: ReactNode;\n}\n\nexport function AlouetteProvider({\n children,\n}: AlouetteProviderProps): ReactNode {\n // Apply the OS light/dark scheme as the root theme so base tokens resolve\n // correctly app-wide. Subtrees can override via ScopedTheme / AccentScope.\n const colorScheme = useColorScheme();\n return (\n <ScopedTheme theme={colorScheme === \"dark\" ? \"dark\" : \"light\"}>\n {children}\n </ScopedTheme>\n );\n}\n","/* eslint-disable react/destructuring-assignment */\nimport type { Decorator } from \"@storybook/react-vite\";\nimport { ScopedTheme } from \"../ui/containers/ScopedTheme\";\nimport { AlouetteProvider } from \"./AlouetteProvider\";\nimport { SafeAreaProvider } from \"./SafeAreaProvider\";\n\n// eslint-disable-next-line react/function-component-definition -- not a component\nexport const AlouetteDecorator: Decorator = (storyFn, context) => {\n const theme: \"dark\" | \"light\" =\n context.globals.backgrounds?.value === \"#000000\" ? \"dark\" : \"light\";\n\n return (\n <SafeAreaProvider>\n <AlouetteProvider>\n <ScopedTheme theme={theme}>{storyFn(context)}</ScopedTheme>\n </AlouetteProvider>\n </SafeAreaProvider>\n );\n};\n","import { useContext } from \"react\";\nimport { themeVariables } from \"../themeVariables\";\nimport { ThemeContext } from \"./ThemeContext\";\n\ntype TokenName = `--${string}`;\n\n/**\n * Reads theme token values in JS for the few props that can't take a className\n * (gradient stops, `placeholderTextColor`, native Switch track/thumb, the Expo\n * browser chrome, SVG icon tint). Values come from the generated `themeVariables`\n * map keyed by the active `ThemeContext`, so they stay in sync with `global.css`.\n *\n * Replaces Uniwind's `useCSSVariable`. Unlike NativeWind's\n * `useUnstableNativeVariable` this works on web and native alike and is stable.\n */\nexport function useThemeToken(token: TokenName): string | undefined;\nexport function useThemeToken<const T extends readonly TokenName[]>(\n tokens: T,\n): { [K in keyof T]: string | undefined };\nexport function useThemeToken(\n tokenOrTokens: TokenName | readonly TokenName[],\n): (string | undefined)[] | string | undefined {\n const theme = useContext(ThemeContext);\n const vars = themeVariables[theme];\n if (Array.isArray(tokenOrTokens)) {\n return tokenOrTokens.map((token) => vars[token]);\n }\n return vars[tokenOrTokens as TokenName];\n}\n","import { forwardRef } from \"react\";\nimport { View as RNView, type ViewProps as RNViewProps } from \"react-native\";\n\nexport type ViewProps = RNViewProps;\n\nexport const View = forwardRef<RNView, ViewProps>((props, ref) => {\n return <RNView ref={ref} {...props} />;\n});\n","import type { ReactNode } from \"react\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { useCurrentMode } from \"../../core/ThemeContext\";\nimport { ScopedTheme } from \"./ScopedTheme\";\n\nexport interface AccentScopeProps {\n mode?: \"dark\" | \"light\";\n accent?: Accent;\n children?: ReactNode;\n}\n\nexport function AccentScope({\n mode: forcedMode,\n accent,\n children,\n}: AccentScopeProps): ReactNode {\n const currentMode = useCurrentMode();\n if (!accent) {\n return children;\n }\n // ScopedTheme applies the accent theme's *resolved* variables (base mode + accent),\n // so a single scope works at any depth — no need to pre-apply the base mode.\n const mode = forcedMode ?? currentMode;\n return <ScopedTheme theme={`${mode}_${accent}`}>{children}</ScopedTheme>;\n}\n","import { forwardRef } from \"react\";\nimport { Text as RNText, type TextProps as RNTextProps } from \"react-native\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { AccentScope } from \"../containers/AccentScope\";\n\nconst twMerge = extendTailwindMerge({\n extend: {\n classGroups: {\n \"font-family\": [\n \"font-body\",\n \"font-body-bold\",\n \"font-body-extrabold\",\n \"font-heading\",\n \"font-heading-bold\",\n \"font-heading-extrabold\",\n \"font-mono\",\n \"font-mono-bold\",\n \"font-mono-extrabold\",\n ],\n },\n },\n});\n\nexport interface TextProps extends RNTextProps {\n accent?: Accent;\n}\n\nexport const Text = forwardRef<RNText, TextProps>(\n ({ className, accent, ...props }, ref) => {\n return (\n <AccentScope accent={accent}>\n <RNText\n ref={ref}\n className={twMerge(\"font-body text-sharp\", className)}\n {...props}\n />\n </AccentScope>\n );\n },\n);\n\nexport type ParagraphProps = TextProps;\n\nexport const Paragraph = forwardRef<RNText, ParagraphProps>(\n ({ className, ...props }, ref) => {\n return (\n <Text\n ref={ref}\n role=\"paragraph\"\n className={`select-auto ${className ?? \"\"}`}\n {...props}\n />\n );\n },\n);\n","import { styled } from \"nativewind\";\nimport type { ComponentType } from \"react\";\nimport {\n ScrollView as RNScrollView,\n type ScrollViewProps as RNScrollViewProps,\n} from \"react-native\";\n\nexport type ScrollViewProps = RNScrollViewProps;\n\nexport const ScrollView = styled(RNScrollView, {\n className: \"style\",\n contentContainerClassName: \"contentContainerStyle\",\n}) as ComponentType<ScrollViewProps>;\n","import { styled } from \"nativewind\";\nimport type { ReactNode } from \"react\";\nimport {\n FlatList as RNFlatList,\n type FlatListProps as RNFlatListProps,\n} from \"react-native\";\n\nexport type FlatListProps<ItemT> = RNFlatListProps<ItemT>;\n\nexport const FlatList = styled(RNFlatList, {\n className: \"style\",\n contentContainerClassName: \"contentContainerStyle\",\n columnWrapperClassName: \"columnWrapperStyle\",\n}) as <ItemT>(props: FlatListProps<ItemT>) => ReactNode;\n","import { styled } from \"nativewind\";\nimport type { ReactNode } from \"react\";\nimport {\n SectionList as RNSectionList,\n type SectionListProps as RNSectionListProps,\n} from \"react-native\";\n\ntype DefaultSectionT = Record<string, unknown>;\n\nexport type SectionListProps<\n ItemT,\n SectionT = DefaultSectionT,\n> = RNSectionListProps<ItemT, SectionT>;\n\nexport const SectionList = styled(RNSectionList, {\n className: \"style\",\n contentContainerClassName: \"contentContainerStyle\",\n}) as <ItemT, SectionT = DefaultSectionT>(\n props: SectionListProps<ItemT, SectionT>,\n) => ReactNode;\n","import { forwardRef } from \"react\";\nimport { View as RNView, type ViewProps as RNViewProps } from \"react-native\";\n\nexport type StackProps = RNViewProps;\n\nexport const Stack = forwardRef<RNView, StackProps>(\n ({ className, ...props }, ref) => {\n return (\n <RNView\n ref={ref}\n className={`flex-row flex-wrap ${className ?? \"\"}`}\n {...props}\n />\n );\n },\n);\n\nexport type HStackProps = RNViewProps;\n\nexport const HStack = forwardRef<RNView, HStackProps>(\n ({ className, ...props }, ref) => {\n return (\n <RNView ref={ref} className={`flex-row ${className ?? \"\"}`} {...props} />\n );\n },\n);\n\nexport type VStackProps = RNViewProps;\n\nexport const VStack = forwardRef<RNView, VStackProps>(\n ({ className, ...props }, ref) => {\n return (\n <RNView ref={ref} className={`flex-col ${className ?? \"\"}`} {...props} />\n );\n },\n);\n","import { forwardRef } from \"react\";\nimport { View as RNView, type ViewProps as RNViewProps } from \"react-native\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\n\nconst separatorVariants = tv({\n base: \"border-border-sharp\",\n variants: {\n vertical: {\n true: \"self-stretch border-r w-px\",\n false: \"self-stretch border-b h-px\",\n },\n },\n defaultVariants: {\n vertical: false,\n },\n});\n\ntype SeparatorVariantProps = VariantProps<typeof separatorVariants>;\n\nexport interface SeparatorProps extends RNViewProps, SeparatorVariantProps {}\n\nexport const Separator = forwardRef<RNView, SeparatorProps>(\n ({ className, vertical, ...props }, ref) => {\n return (\n <RNView\n ref={ref}\n className={separatorVariants({ vertical, className })}\n {...props}\n />\n );\n },\n);\n","import type { ReactElement } from \"react\";\nimport { Children, cloneElement, forwardRef } from \"react\";\nimport {\n Pressable,\n type PressableProps,\n View as RNView,\n type ViewProps as RNViewProps,\n} from \"react-native\";\nimport type { VariantProps } from \"tailwind-variants\";\nimport { tv } from \"tailwind-variants\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { useSafeAreaInsets } from \"../../core/useSafeAreaInsets\";\nimport { AccentScope } from \"./AccentScope\";\n// Allow Box to shrink when used inside HStack/VStack (matches the original\n// BoxFrame default). overflow is intentionally left off so multi-layer\n// box-shadows are not clipped.\nexport const boxBaseClasses = \"shrink\";\n\nexport interface BoxProps extends RNViewProps {\n accent?: Accent;\n}\n\nexport const Box = forwardRef<RNView, BoxProps>(\n ({ className, accent, ...props }, ref) => {\n return (\n <AccentScope accent={accent}>\n <RNView\n ref={ref}\n className={`${boxBaseClasses} ${className ?? \"\"}`}\n {...props}\n />\n </AccentScope>\n );\n },\n);\n\nexport const interactiveBoxVariants = tv({\n base: [\n boxBaseClasses,\n \"cursor-pointer\",\n \"transition-[transform,background-color,border-color] duration-200 ease-in\",\n \"disabled:cursor-not-allowed disabled:opacity-70 aria-disabled:cursor-not-allowed aria-disabled:opacity-70\",\n \"active:scale-[0.975]\",\n ].join(\" \"),\n variants: {\n withFocusVisibleOutline: {\n true: \"focus-visible:outline-2 focus-visible:outline-offset-2\",\n },\n },\n});\n\nexport interface InteractiveBoxProps\n extends VariantProps<typeof interactiveBoxVariants>, PressableProps {}\n\nexport const InteractiveBox = forwardRef<RNView, InteractiveBoxProps>(\n ({ withFocusVisibleOutline, className, ...rest }, ref) => (\n <Pressable\n ref={ref}\n // override default behavior of Pressable which sets pointerEvents to \"none\" on disabled state. However this prevents cursor to display as\n pointerEvents=\"auto\"\n {...rest}\n className={interactiveBoxVariants({ withFocusVisibleOutline, className })}\n />\n ),\n);\n\nexport const InteractiveBoxHitSlop = forwardRef<RNView, InteractiveBoxProps>(\n ({ withFocusVisibleOutline, children, className, ...rest }, ref) => {\n const child = Children.only(children) as ReactElement<RNViewProps>;\n return (\n <Pressable\n ref={ref}\n // override default behavior of Pressable which sets pointerEvents to \"none\" on disabled state. However this prevents cursor to display as\n pointerEvents=\"auto\"\n className={`flex-center ${className ?? \"\"}`}\n {...rest}\n >\n {cloneElement(child, {\n className: interactiveBoxVariants({\n withFocusVisibleOutline,\n className: child.props.className,\n }),\n })}\n </Pressable>\n );\n },\n);\n\nexport type SafeAreaBoxProps = Omit<BoxProps, \"style\">;\n\nexport const SafeAreaBox = forwardRef<RNView, SafeAreaBoxProps>(\n (props, ref) => {\n const insets = useSafeAreaInsets();\n return (\n <Box\n ref={ref}\n style={{\n paddingTop: insets.top,\n paddingBottom: insets.bottom,\n paddingLeft: insets.left,\n paddingRight: insets.right,\n }}\n {...props}\n />\n );\n },\n);\n","import { forwardRef } from \"react\";\nimport type { View as RNView } from \"react-native\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { AccentScope } from \"./AccentScope\";\nimport { Box, type BoxProps } from \"./Box\";\n\nconst surfaceVariants = tv(\n {\n // overflow-hidden so the multi-layer shadow respects the rounded corners.\n base: \"overflow-hidden\",\n variants: {\n size: {\n sm: \"p-m rounded-xs\",\n md: \"p-xl rounded-sm\",\n lg: \"p-xxl rounded-md\",\n },\n variant: {\n surface: \"bg-surface\",\n highlight: \"bg-highlight\",\n \"highlight-accent\": \"bg-highlight-accent\",\n lowered: \"bg-lowered\",\n translucent: \"bg-translucent\",\n },\n shadow: {\n none: \"shadow-none\",\n s: \"shadow-s\",\n m: \"shadow-m\",\n l: \"shadow-l\",\n lowered: \"shadow-lowered\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"surface\",\n },\n },\n { twMerge: false },\n);\n\ntype SurfaceVariantProps = VariantProps<typeof surfaceVariants>;\n\nexport interface SurfaceProps extends BoxProps, SurfaceVariantProps {\n accent?: Accent;\n}\n\nexport const Surface = forwardRef<RNView, SurfaceProps>(\n ({ className, size, variant, shadow, accent, ...props }, ref) => {\n // shadow defaults to \"s\", or \"lowered\" when variant=\"lowered\".\n const resolvedShadow = shadow ?? (variant === \"lowered\" ? \"lowered\" : \"s\");\n return (\n <AccentScope accent={accent}>\n <Box\n ref={ref}\n className={surfaceVariants({\n size,\n variant,\n shadow: resolvedShadow,\n className,\n })}\n {...props}\n />\n </AccentScope>\n );\n },\n);\n","import type { ComponentType } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function styled<P extends { className?: string }>(\n Component: ComponentType<P>,\n defaultClassName: string,\n): ComponentType<P> {\n function StyledComponent({ className, ...props }: P) {\n return (\n <Component\n className={twMerge(defaultClassName, className)}\n {...(props as P)}\n />\n );\n }\n StyledComponent.displayName = `Styled(${Component.displayName ?? Component.name ?? \"Component\"})`;\n StyledComponent.__isStyledComponent = true;\n return StyledComponent;\n}\n","import { forwardRef } from \"react\";\nimport type { Text as RNText } from \"react-native\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport { Text, type TextProps } from \"../primitives/Text\";\n\nconst storyTitleVariants = tv({\n base: \"font-heading-extrabold text-sharp\",\n variants: {\n level: {\n 1: \"text-4xl mb-xl\",\n 2: \"text-3xl mb-xl\",\n 3: \"text-2xl mb-m\",\n 4: \"text-xl mb-m\",\n },\n },\n defaultVariants: {\n level: 1,\n },\n});\n\ntype StoryTitleVariantProps = VariantProps<typeof storyTitleVariants>;\n\nexport interface StoryTitleProps extends TextProps, StoryTitleVariantProps {}\n\nexport const StoryTitle = forwardRef<RNText, StoryTitleProps>(\n ({ className, level, ...props }, ref) => {\n return (\n <Text\n ref={ref}\n className={storyTitleVariants({ level, className })}\n {...props}\n />\n );\n },\n);\n","import { Fragment, type ReactNode } from \"react\";\nimport { Platform } from \"react-native\";\nimport type { Accent, AlouetteModeTheme } from \"../../core/AlouetteConfig\";\nimport { AccentScope } from \"../containers/AccentScope\";\nimport { ScopedTheme } from \"../containers/ScopedTheme\";\nimport { Surface } from \"../containers/Surface\";\nimport { ScrollView } from \"../primitives/ScrollView\";\nimport { View } from \"../primitives/View\";\nimport { VStack } from \"../stacks/stacks\";\nimport { styled } from \"../styled\";\nimport { StoryTitle } from \"./StoryTitle\";\n\nexport interface StorySectionProps {\n title: ReactNode;\n children: ReactNode;\n level?: 1 | 2;\n modeTheme?: AlouetteModeTheme;\n accent?: Accent;\n withSurface?: boolean;\n}\n\nconst InternalStorySection = styled(View, \"-mx-l px-l\");\n\nfunction StorySection({\n title,\n children,\n level = 1,\n modeTheme,\n accent,\n withSurface = false,\n}: StorySectionProps): ReactNode {\n const content = (\n <InternalStorySection className=\"pb-xl bg-screen\">\n {withSurface ? (\n <Surface>\n <StoryTitle level={(level + 1) as 2 | 3}>{title}</StoryTitle>\n <VStack className=\"gap-m\">{children}</VStack>\n </Surface>\n ) : (\n <>\n <StoryTitle level={(level + 1) as 2 | 3}>{title}</StoryTitle>\n <VStack className=\"gap-m\">{children}</VStack>\n </>\n )}\n </InternalStorySection>\n );\n\n if (modeTheme) {\n return <ScopedTheme theme={modeTheme}>{content}</ScopedTheme>;\n }\n if (accent) {\n return <AccentScope accent={accent}>{content}</AccentScope>;\n }\n return content;\n}\n\nfunction StorySubSection({\n title,\n children,\n modeTheme,\n accent,\n withSurface = false,\n}: StorySectionProps): ReactNode {\n const content = (\n <InternalStorySection className=\"mb-m\">\n {withSurface ? (\n <Surface>\n <StoryTitle level={3}>{title}</StoryTitle>\n <VStack className=\"gap-m\">{children}</VStack>\n </Surface>\n ) : (\n <>\n <StoryTitle level={3}>{title}</StoryTitle>\n <VStack className=\"gap-m\">{children}</VStack>\n </>\n )}\n </InternalStorySection>\n );\n if (modeTheme) {\n return <ScopedTheme theme={modeTheme}>{content}</ScopedTheme>;\n }\n if (accent) {\n return <AccentScope accent={accent}>{content}</AccentScope>;\n }\n return content;\n}\n\n// const SimpleWebScrollView = styled(View, \"h-full overflow-auto\");\n\nconst ScrollWrapper = Platform.OS === \"web\" ? Fragment : ScrollView;\n\nexport interface StoryProps {\n documentation?: NonNullable<ReactNode>;\n children?: NonNullable<ReactNode>;\n noDarkMode?: boolean;\n}\n\nexport function Story({\n documentation,\n children,\n noDarkMode,\n}: StoryProps): ReactNode {\n return (\n <ScrollWrapper>\n {documentation && (\n <Surface accent=\"info\" className=\"mb-xxl\">\n {documentation}\n </Surface>\n )}\n {([\"light\", ...(noDarkMode ? [] : [\"dark\"])] as (\"dark\" | \"light\")[]).map(\n (mode) => (\n <ScopedTheme key={mode} theme={mode}>\n <View className=\"bg-screen p-l\">{children}</View>\n </ScopedTheme>\n ),\n )}\n </ScrollWrapper>\n );\n}\n\nStory.Section = StorySection;\nStory.SubSection = StorySubSection;\n\nexport const accents: Accent[] = [\n \"brand\",\n \"danger\",\n \"info\",\n \"success\",\n \"warning\",\n];\n","import type { ReactNode } from \"react\";\nimport { ScopedTheme } from \"../containers/ScopedTheme\";\nimport { ScrollView } from \"../primitives/ScrollView\";\nimport { StoryTitle } from \"./StoryTitle\";\n\nexport interface StoryContainerProps {\n title: ReactNode;\n children: NonNullable<ReactNode>;\n}\n\nexport function StoryContainer({\n title,\n children,\n}: StoryContainerProps): ReactNode {\n return (\n <ScopedTheme theme=\"light\">\n <ScrollView className=\"bg-white p-3xl\">\n <StoryTitle level={1}>{title}</StoryTitle>\n {children}\n </ScrollView>\n </ScopedTheme>\n );\n}\n","import type { Decorator } from \"@storybook/react-vite\";\nimport { StoryContainer } from \"./StoryContainer\";\n\n// eslint-disable-next-line react/function-component-definition -- not a component, it's a decorator for storybook.\nexport const StoryDecorator: Decorator = (storyFn, { name, parameters }) => {\n if (parameters?.container === false) return storyFn();\n return <StoryContainer title={name}>{storyFn()}</StoryContainer>;\n};\n","import { Children, type ReactNode } from \"react\";\nimport { Platform } from \"react-native\";\nimport { tv } from \"tailwind-variants\";\nimport { View } from \"../primitives/View\";\nimport { VStack } from \"../stacks/stacks\";\nimport { StoryTitle } from \"./StoryTitle\";\n\nconst rowVariants = tv(\n {\n base: \"flex-col\",\n variants: {\n breakpoint: {\n small: \"sm:flex-row sm:mb-xl\",\n medium: \"md:flex-row md:mb-xl\",\n },\n flexWrap: { true: \"\" },\n },\n compoundVariants: [\n { breakpoint: \"small\", flexWrap: true, class: \"sm:flex-wrap sm:gap-m\" },\n { breakpoint: \"medium\", flexWrap: true, class: \"md:flex-wrap md:gap-m\" },\n ],\n },\n { twMerge: false },\n);\n\nconst itemVariants = tv(\n {\n base: \"pt-m pb-xl\",\n variants: {\n breakpoint: {\n small: \"sm:pt-0 sm:pb-0 sm:my-xxs shrink\",\n medium: \"md:pt-0 md:pb-0 md:my-xxs shrink\",\n },\n flexWrap: {\n true: \"\",\n false: \"\",\n },\n loose: {\n true: \"\",\n false: \"grow\",\n },\n },\n compoundVariants: [\n { breakpoint: \"small\", flexWrap: false, class: \"sm:basis-0\" },\n { breakpoint: \"medium\", flexWrap: false, class: \"md:basis-0\" },\n ],\n defaultVariants: {\n flexWrap: false,\n },\n },\n { twMerge: false },\n);\n\nexport interface StoryGridRowProps {\n children: NonNullable<ReactNode>;\n breakpoint?: \"medium\" | \"small\";\n flexWrap?: boolean;\n loose?: boolean;\n}\n\nfunction StoryGridRow({\n children,\n breakpoint = \"small\",\n flexWrap,\n loose,\n}: StoryGridRowProps): ReactNode {\n return (\n <View className={rowVariants({ breakpoint, flexWrap })}>\n {Children.map(children, (child) => (\n <View className={itemVariants({ breakpoint, flexWrap, loose })}>\n {child}\n </View>\n ))}\n </View>\n );\n}\n\nexport interface StoryGridColProps {\n children: NonNullable<ReactNode>;\n title?: string;\n platform?: \"all\" | \"native\" | \"web\";\n}\n\nfunction StoryGridCol({\n title,\n children,\n platform = \"all\",\n}: StoryGridColProps): ReactNode {\n const isNative = Platform.OS === \"ios\" || Platform.OS === \"android\";\n\n if (Platform.OS === \"web\" && platform === \"native\") {\n return null;\n }\n if (isNative && platform === \"web\") {\n return null;\n }\n\n return title ? (\n <VStack>\n <StoryTitle level={4} numberOfLines={1}>\n {title}\n </StoryTitle>\n {children}\n </VStack>\n ) : (\n children\n );\n}\n\nexport const StoryGrid = {\n Row: StoryGridRow,\n Col: StoryGridCol,\n};\n","import {\n Children,\n type Key,\n type ReactElement,\n type ReactNode,\n cloneElement,\n isValidElement,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { View } from \"../primitives/View\";\n\nexport interface PresenceBaseProps {\n /**\n * Identity of the current child. When it changes, the previous child is kept\n * mounted (with `exitClassName`) for `exitDurationMs` so it can animate out\n * while the new child animates in — an AnimatePresence-style swap done with\n * pure CSS animations, no animation library.\n */\n activeKey: Key;\n /** How long to keep the exiting child mounted — match the exit animation. */\n exitDurationMs: number;\n /** Animation class applied to the entering (current) child. */\n enterClassName?: string;\n /** Animation class applied to the exiting (previous) child. */\n exitClassName?: string;\n /** Class applied to every item (e.g. `absolute inset-0` to overlap). */\n className?: string;\n}\n\ninterface Snapshot {\n key: Key;\n node: ReactNode;\n}\n\nfunction joinClasses(...classes: (string | undefined)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n\n/**\n * Shared keyed-swap logic. Keeps the previously rendered child as a snapshot\n * after `activeKey` changes so an exit animation can play, then removes it once\n * `exitDurationMs` has elapsed. The entering child is keyed by `activeKey`, so\n * it remounts on each change and replays its enter animation.\n *\n * Assumes one child whose content is derived from `activeKey` (the common\n * keyed-swap case). Updates to the active child between key changes are shown\n * live but not snapshotted for the next exit.\n */\nfunction usePresence(\n activeKey: Key,\n exitDurationMs: number,\n children: ReactNode,\n): Snapshot[] {\n const [exiting, setExiting] = useState<Snapshot[]>([]);\n const previousRef = useRef<Snapshot>({ key: activeKey, node: children });\n const childrenRef = useRef<ReactNode>(children);\n childrenRef.current = children;\n const timersRef = useRef<ReturnType<typeof setTimeout>[]>([]);\n\n useEffect(\n () => () => {\n timersRef.current.forEach(clearTimeout);\n },\n [],\n );\n\n useEffect(() => {\n const previous = previousRef.current;\n if (previous.key === activeKey) {\n return;\n }\n previousRef.current = { key: activeKey, node: childrenRef.current };\n setExiting((list) => [...list, previous]);\n const timer = setTimeout(() => {\n setExiting((list) => list.filter((item) => item !== previous));\n timersRef.current = timersRef.current.filter((t) => t !== timer);\n }, exitDurationMs);\n timersRef.current.push(timer);\n }, [activeKey, exitDurationMs]);\n\n return exiting;\n}\n\ninterface PresenceItem {\n key: Key;\n node: ReactNode;\n}\n\nfunction toItems(children: ReactNode): PresenceItem[] {\n return Children.toArray(children)\n .filter(isValidElement)\n .map((child) => ({ key: child.key as Key, node: child }));\n}\n\n/**\n * Order-preserving merge of the previously rendered key order with the current\n * live keys (the react-transition-group algorithm). Removed keys stay in their\n * old positions, so an exiting item animates out in place instead of jumping to\n * the end of the list.\n */\nfunction mergeKeys(previous: Key[], next: Key[]): Key[] {\n const nextSet = new Set(next);\n const pendingByNext = new Map<Key, Key[]>();\n let pending: Key[] = [];\n\n for (const key of previous) {\n if (nextSet.has(key)) {\n if (pending.length > 0) {\n pendingByNext.set(key, pending);\n pending = [];\n }\n } else {\n pending.push(key);\n }\n }\n\n const result: Key[] = [];\n for (const key of next) {\n const before = pendingByNext.get(key);\n if (before) {\n result.push(...before);\n }\n result.push(key);\n }\n result.push(...pending);\n return result;\n}\n\ninterface RenderedItem extends PresenceItem {\n exiting: boolean;\n}\n\n/**\n * Diffs a list of keyed children across renders. New keys are returned with\n * `exiting: false` (mounted fresh, so their enter animation plays); removed keys\n * are kept with `exiting: true` for `exitDurationMs` so they can animate out,\n * then dropped. Order is preserved via {@link mergeKeys}.\n */\nfunction usePresenceList(\n children: ReactNode,\n exitDurationMs: number,\n): RenderedItem[] {\n const items = toItems(children);\n const liveKeys = items.map((item) => item.key);\n const signature = liveKeys.join(\"\u0000\");\n\n const nodesRef = useRef<Map<Key, ReactNode>>(new Map());\n for (const item of items) {\n nodesRef.current.set(item.key, item.node);\n }\n const liveKeysRef = useRef(liveKeys);\n liveKeysRef.current = liveKeys;\n\n const [order, setOrder] = useState<Key[]>(liveKeys);\n const orderRef = useRef(order);\n orderRef.current = order;\n const timersRef = useRef<Map<Key, ReturnType<typeof setTimeout>>>(new Map());\n\n useEffect(\n () => () => {\n timersRef.current.forEach(clearTimeout);\n },\n [],\n );\n\n useEffect(() => {\n const live = new Set(liveKeysRef.current);\n const newOrder = mergeKeys(orderRef.current, liveKeysRef.current);\n\n // A key that came back before its timer fired cancels its pending exit.\n for (const key of liveKeysRef.current) {\n const timer = timersRef.current.get(key);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(key);\n }\n }\n // A key that's gone animates out, then is dropped once the timer fires.\n for (const key of newOrder) {\n if (!live.has(key) && !timersRef.current.has(key)) {\n const timer = setTimeout(() => {\n timersRef.current.delete(key);\n nodesRef.current.delete(key);\n setOrder((current) => current.filter((k) => k !== key));\n }, exitDurationMs);\n timersRef.current.set(key, timer);\n }\n }\n setOrder(newOrder);\n }, [signature, exitDurationMs]);\n\n const live = new Set(liveKeys);\n return order.map((key) => ({\n key,\n node: nodesRef.current.get(key),\n exiting: !live.has(key),\n }));\n}\n\nexport interface PresenceListProps {\n /** How long to keep a removed child mounted — match the exit animation. */\n exitDurationMs: number;\n /** Animation class applied to entering children. */\n enterClassName?: string;\n /** Animation class applied to exiting children. */\n exitClassName?: string;\n /** Class applied to every item's wrapper `<View>`. */\n className?: string;\n /**\n * A list of keyed elements — each child must have a stable `key`. Adding a key\n * animates that item in while the others stay put; removing a key animates only\n * that item out.\n */\n children: ReactNode;\n}\n\n/**\n * Keyed-list presence (AnimatePresence-style). Renders a list of keyed children,\n * each wrapped in its own `<View>`, and animates individual add/remove: added\n * keys mount with `enterClassName`, removed keys stay mounted with `exitClassName`\n * for `exitDurationMs` before unmounting. For swapping a single child, use\n * {@link PresenceOne}.\n */\nexport function PresenceList({\n exitDurationMs,\n enterClassName,\n exitClassName,\n className,\n children,\n}: PresenceListProps): ReactNode {\n const items = usePresenceList(children, exitDurationMs);\n\n return (\n <>\n {items.map((item) => (\n <View\n key={item.key}\n className={joinClasses(\n className,\n item.exiting ? exitClassName : enterClassName,\n )}\n >\n {item.node}\n </View>\n ))}\n </>\n );\n}\n\ntype StyledElement = ReactElement<{ className?: string }>;\n\nexport interface PresenceOneProps extends PresenceBaseProps {\n /**\n * A single element that accepts and forwards `className` to its root view.\n * The `className` + enter/exit animation classes are merged onto it directly,\n * so no extra wrapper `<View>` is added to the tree.\n */\n children: StyledElement;\n}\n\n/**\n * Keyed-swap presence that merges the animation classes onto the child element\n * itself via `cloneElement` — no wrapper `<View>`. Requires a single element\n * that forwards `className`; for anything else use {@link PresenceList}.\n */\nexport function PresenceOne({\n activeKey,\n exitDurationMs,\n enterClassName,\n exitClassName,\n className,\n children,\n}: PresenceOneProps): ReactNode {\n const exiting = usePresence(activeKey, exitDurationMs, children);\n\n return (\n <>\n {exiting.map((item) => {\n const node = item.node as StyledElement;\n return cloneElement(node, {\n key: item.key,\n className: joinClasses(\n node.props.className,\n className,\n exitClassName,\n ),\n });\n })}\n {cloneElement(children, {\n key: activeKey,\n className: joinClasses(\n children.props.className,\n className,\n enterClassName,\n ),\n })}\n </>\n );\n}\n","/* Generated by scripts/build-css.ts. DO NOT EDIT. */\n\n/**\n * Duration (in ms) of each generic motion, mirroring the `--animate-*` CSS\n * tokens. Pass the matching value as `exitDurationMs` to {@link PresenceOne} /\n * {@link PresenceList} so the exit timer matches the CSS animation.\n */\nexport const animationDurationsMs = {\n \"slide\": 600,\n \"collapse\": 800\n} as const;\n","import {\n type ReactElement,\n type ReactNode,\n type SVGProps,\n cloneElement,\n} from \"react\";\nimport { useThemeToken } from \"../../core/useThemeToken\";\n\nexport type SVGIconElement = ReactElement<SVGProps<SVGSVGElement>>;\n\nexport interface IconProps {\n icon: SVGIconElement;\n /** Square size in px. Defaults to 20. */\n size?: number;\n /**\n * Text-colour className driving the icon tint, e.g. `text-sharp`,\n * `text-muted`, `text-accent`, `text-on-accent`, `text-disabled-muted`.\n * Defaults to `text-sharp`.\n */\n className?:\n | string // keeping string to allow tailwind-variants usage\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n | \"text-accent\"\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n | \"text-disabled-muted\"\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n | \"text-disabled\"\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n | \"text-muted\"\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n | \"text-on-accent-muted\"\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n | \"text-on-accent\"\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n | \"text-sharp\";\n}\n\nexport function Icon({\n icon,\n size = 20,\n className = \"text-sharp\",\n}: IconProps): ReactNode {\n // RN SVG needs a concrete color, not a className. Resolve the text-* color\n // class to its --color-* token value via the active theme.\n const token = className\n .split(/\\s+/)\n .find((part) => part.startsWith(\"text-\"))\n ?.slice(\"text-\".length);\n const color = useThemeToken(`--color-${token ?? \"sharp\"}`);\n return cloneElement(icon, {\n color,\n width: size,\n height: size,\n });\n}\n","import { forwardRef } from \"react\";\nimport type {\n PressableProps as RNPressableProps,\n View as RNView,\n} from \"react-native\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { AccentScope } from \"../containers/AccentScope\";\nimport { InteractiveBox, interactiveBoxVariants } from \"../containers/Box\";\n\nconst pressableBoxVariants = tv(\n {\n extend: interactiveBoxVariants,\n base: \"overflow-hidden\",\n variants: {\n variant: {\n contained: [\n \"rounded-sm\",\n process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? \"\"\n : \"shadow-s bg-interactive-contained-pressable\",\n \"hover:bg-interactive-contained-hover\",\n \"focus:bg-interactive-contained-focus\",\n \"active:bg-interactive-contained-active\",\n \"disabled:bg-interactive-contained-disabled disabled:shadow-none\",\n \"focus-visible:outline-border-muted\",\n ].join(\" \"),\n outlined: [\n \"border bg-highlight\",\n process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? \"\"\n : \"border-interactive-outlined-pressable\",\n \"hover:border-interactive-outlined-hover\",\n \"focus:border-interactive-outlined-focus\",\n \"active:border-interactive-outlined-active\",\n \"disabled:border-interactive-outlined-disabled\",\n \"focus-visible:outline-interactive-outlined-outline-focus\",\n ].join(\" \"),\n ghost: [\n \"border border-transparent\",\n \"hover:border hover:border-interactive-outlined-hover\",\n \"focus:border focus:border-interactive-outlined-focus\",\n \"active:border active:border-interactive-outlined-active\",\n \"disabled:border-interactive-outlined-disabled\",\n \"focus-visible:outline-interactive-outlined-outline-focus\",\n ].join(\" \"),\n },\n forceStyle: {\n hover: \"\",\n focus: \"\",\n press: \"scale-[0.975]\",\n },\n },\n compoundVariants: process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? [\n /* contained */\n {\n variant: \"contained\",\n forceStyle: undefined,\n ghost: false,\n className: \"shadow-s bg-interactive-contained-pressable\",\n },\n {\n variant: \"contained\",\n forceStyle: \"hover\",\n className: \"shadow-s bg-interactive-contained-hover\",\n },\n {\n variant: \"contained\",\n forceStyle: \"focus\",\n className: \"shadow-s bg-interactive-contained-focus\",\n },\n {\n variant: \"contained\",\n forceStyle: \"press\",\n className: \"shadow-s bg-interactive-contained-active\",\n },\n /* outlined */\n {\n variant: \"outlined\",\n forceStyle: undefined,\n ghost: false,\n className: \"border-interactive-outlined-pressable\",\n },\n {\n variant: \"outlined\",\n forceStyle: \"hover\",\n className: \"border-interactive-outlined-hover\",\n },\n {\n variant: \"outlined\",\n forceStyle: \"focus\",\n className: \"border-interactive-outlined-focus\",\n },\n {\n variant: \"outlined\",\n forceStyle: \"press\",\n className: \"border-interactive-outlined-active\",\n },\n /* ghost */\n {\n variant: \"ghost\",\n forceStyle: undefined,\n className: \"border-transparent\",\n },\n {\n variant: \"ghost\",\n forceStyle: \"hover\",\n className: \"border-interactive-outlined-hover\",\n },\n {\n variant: \"ghost\",\n forceStyle: \"focus\",\n className: \"border-interactive-outlined-focus\",\n },\n {\n variant: \"ghost\",\n forceStyle: \"press\",\n className: \"border-interactive-outlined-active\",\n },\n ]\n : undefined,\n defaultVariants: {\n variant: \"contained\",\n },\n },\n { twMerge: false },\n);\n\ntype PressableBoxVariantProps = VariantProps<typeof pressableBoxVariants>;\n\nexport interface PressableBoxProps\n extends RNPressableProps, PressableBoxVariantProps {\n accent?: Accent;\n className?: string;\n forceStyle?: \"focus\" | \"hover\" | \"press\";\n}\n\n// TODO what is the diff between <Box interactive> and PressableBox ?\nexport const PressableBox = forwardRef<RNView, PressableBoxProps>(\n ({ className, variant, forceStyle, accent, ...props }, ref) => {\n return (\n <AccentScope accent={accent}>\n <InteractiveBox\n ref={ref}\n withFocusVisibleOutline\n role=\"button\"\n className={pressableBoxVariants({\n variant,\n\n className,\n forceStyle,\n })}\n {...props}\n />\n </AccentScope>\n );\n },\n);\n","import type { ReactNode } from \"react\";\nimport { Platform } from \"react-native\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { PressableBox, type PressableBoxProps } from \"../data/PressableBox\";\nimport { Icon, type SVGIconElement } from \"../primitives/Icon\";\nimport { Text } from \"../primitives/Text\";\n\nexport const buttonHeight = {\n sm: 38,\n md: 44,\n} as const;\n\nconst buttonVariants = tv(\n {\n slots: {\n frame: \"flex-row flex-center\",\n text: \"font-body-bold text-center shrink\",\n icon: \"\",\n },\n variants: {\n size: {\n sm: {\n frame: \"rounded-sm px-xs gap-xxs min-h-[38px]\",\n text: \"text-sm py-xxs\",\n },\n md: {\n frame: \"rounded-sm px-m gap-xs min-h-[44px]\",\n text: \"text-base py-xs\",\n },\n },\n variant: {\n contained: { text: \"text-on-accent\" },\n outlined: { text: \"text-sharp\" },\n ghost: { text: \"text-sharp\" },\n },\n disabled: { true: {}, false: {} },\n },\n compoundVariants: [\n {\n variant: \"contained\",\n disabled: false,\n ghost: false,\n class: { icon: \"text-on-accent\" },\n },\n {\n variant: \"contained\",\n disabled: false,\n ghost: true,\n class: {\n text: \"text-sharp hover:text-on-accent\",\n icon: \"text-sharp hover:text-on-accent\",\n },\n },\n { variant: \"outlined\", disabled: false, class: { icon: \"text-sharp\" } },\n {\n variant: \"contained\",\n disabled: true,\n class: { icon: \"text-disabled-sharp\", text: \"text-disabled-sharp\" },\n },\n {\n variant: \"outlined\",\n disabled: true,\n class: { icon: \"text-disabled-muted\", text: \"text-disabled-muted\" },\n },\n ],\n defaultVariants: { size: \"md\", variant: \"contained\" },\n },\n { twMerge: false },\n);\n\ntype ButtonSizeProps = Pick<VariantProps<typeof buttonVariants>, \"size\">;\n\nexport interface ButtonProps\n extends Omit<PressableBoxProps, \"children\">, ButtonSizeProps {\n icon?: SVGIconElement;\n accent?: Accent;\n text: ReactNode;\n}\n\nexport function Button({\n icon,\n text,\n disabled,\n accent = \"brand\",\n variant = \"contained\",\n size = \"md\",\n className,\n ...pressableProps\n}: ButtonProps): ReactNode {\n const styles = buttonVariants({\n size,\n variant,\n disabled: disabled === true,\n });\n return (\n <PressableBox\n accent={accent}\n variant={variant}\n disabled={disabled}\n className={styles.frame({ className })}\n {...pressableProps}\n >\n {icon ? (\n <Icon\n icon={icon}\n className={styles.icon()}\n size={size === \"sm\" ? 16 : 20}\n />\n ) : null}\n <Text aria-disabled={disabled === true} className={styles.text()}>\n {text}\n </Text>\n </PressableBox>\n );\n}\n\nexport interface ExternalLinkButtonProps extends ButtonProps {\n href: string;\n}\n\nexport function ExternalLinkButton({\n href,\n onPress,\n ...buttonProps\n}: ExternalLinkButtonProps): ReactNode {\n return (\n <Button\n {...buttonProps}\n role=\"link\"\n onPress={(event) => {\n onPress?.(event);\n if (event.defaultPrevented) return;\n if (Platform.OS === \"web\") {\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n } else {\n throw new Error(\"todo\");\n // Linking.openURL(href);\n }\n }}\n />\n );\n}\n\nexport interface InternalLinkButtonProps extends ButtonProps {\n href: string;\n}\n\nexport function InternalLinkButton({\n href: _href,\n ...buttonProps\n}: InternalLinkButtonProps): ReactNode {\n return <Button {...buttonProps} role=\"link\" />;\n}\n","import type { ReactNode } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { PressableBox, type PressableBoxProps } from \"../data/PressableBox\";\nimport { Icon, type SVGIconElement } from \"../primitives/Icon\";\nimport { buttonHeight } from \"./Button\";\n\nconst iconButtonVariants = tv(\n {\n slots: {\n frame: \"shrink-0 flex-center rounded-full\",\n icon: \"\",\n },\n variants: {\n variant: {\n contained: {},\n outlined: {},\n ghost: {},\n },\n disabled: {\n true: {},\n false: {},\n },\n },\n compoundVariants: [\n {\n variant: \"contained\",\n disabled: false,\n class: { icon: \"text-on-accent\" },\n },\n {\n variant: \"outlined\",\n disabled: false,\n class: { icon: \"text-sharp\" },\n },\n {\n variant: \"ghost\",\n disabled: false,\n class: { icon: \"text-sharp\" },\n },\n {\n variant: \"contained\",\n disabled: true,\n class: { icon: \"text-disabled-sharp\" },\n },\n {\n variant: \"outlined\",\n disabled: true,\n class: { icon: \"text-disabled-muted\" },\n },\n {\n variant: \"ghost\",\n disabled: true,\n class: { icon: \"text-disabled-muted\" },\n },\n ],\n defaultVariants: { variant: \"contained\" },\n },\n { twMerge: false },\n);\n\nexport interface IconButtonProps extends Omit<PressableBoxProps, \"children\"> {\n icon: SVGIconElement;\n /** Preset size token, or any number for a custom diameter (px). */\n size?: number | \"md\" | \"sm\";\n /** When \"fill\", the icon takes 80% of the button; default uses 50%. */\n iconSize?: \"fill\";\n \"aria-label\": string;\n}\n\nexport function IconButton({\n icon,\n disabled,\n size = \"md\",\n iconSize,\n variant = \"contained\",\n className,\n ...pressableProps\n}: IconButtonProps): ReactNode {\n const diameter = typeof size === \"number\" ? size : buttonHeight[size];\n const styles = iconButtonVariants({ variant, disabled: disabled === true });\n\n return (\n <PressableBox\n variant={variant}\n disabled={disabled}\n className={styles.frame({ className })}\n style={{ width: diameter, height: diameter }}\n {...pressableProps}\n >\n <Icon\n icon={icon}\n size={diameter * (iconSize === \"fill\" ? 0.8 : 0.55)}\n className={styles.icon()}\n />\n </PressableBox>\n );\n}\n","import { forwardRef } from \"react\";\nimport {\n TextInput as RNTextInput,\n type TextInputProps as RNTextInputProps,\n} from \"react-native\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport { useThemeToken } from \"../../core/useThemeToken\";\n\nconst inputVariants = tv(\n {\n base: [\n \"bg-highlight text-base text-sharp\",\n \"border\",\n \"transition-[border-color,background-color,outline-color] duration-200 ease-in\",\n \"outline-interactive-outlined-pressable\", // to have proper outline color transition\n process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? \"\"\n : \"border-interactive-outlined-pressable\",\n \"hover:border-interactive-outlined-hover\",\n \"focus:border-interactive-outlined-focus\",\n \"focus:outline-1 focus:outline-interactive-outlined-focus focus:outline-offset-0\",\n \"active:border-interactive-outlined-active\",\n \"disabled:bg-disabled-interactive-muted disabled:border-interactive-outlined-disabled disabled:text-form-disabled-text disabled:cursor-not-allowed\",\n ].join(\" \"),\n variants: {\n multiline: {\n false: \"rounded-md px-m py-xs\",\n true: \"min-h-[80px] resize-y rounded-xs px-xs py-xs\",\n },\n forceStyle: {\n undefined: process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? \"border-interactive-outlined-pressable\"\n : \"\",\n hover: process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? \"border-interactive-outlined-hover\"\n : \"\",\n focus: process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? \"border-interactive-outlined-focus outline-1 outline-interactive-outlined-focus outline-offset-0\"\n : \"\",\n press: process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? \"border-interactive-outlined-active\"\n : \"\",\n },\n },\n defaultVariants: {\n forceStyle: \"undefined\",\n },\n },\n { twMerge: false },\n);\n\ntype InputVariantProps = VariantProps<typeof inputVariants>;\n\nconst MODE_PROPS = {\n password: {\n secureTextEntry: true,\n autoComplete: \"current-password\",\n },\n number: {\n inputMode: \"numeric\",\n keyboardType: \"numeric\",\n },\n tel: {\n inputMode: \"tel\",\n autoComplete: \"tel\",\n keyboardType: \"phone-pad\",\n },\n email: {\n inputMode: \"email\",\n autoComplete: \"email\",\n keyboardType: \"email-address\",\n },\n url: {\n inputMode: \"url\",\n keyboardType: \"url\",\n },\n search: {\n inputMode: \"search\",\n },\n webSearch: {\n inputMode: \"search\",\n keyboardType: \"web-search\",\n },\n} as const satisfies Record<string, Partial<RNTextInputProps>>;\n\nexport type InputTextMode = keyof typeof MODE_PROPS;\n\nexport interface InputTextProps\n extends Omit<RNTextInputProps, \"editable\">, InputVariantProps {\n className?: string;\n disabled?: boolean;\n mode?: InputTextMode;\n}\n\nexport const InputText = forwardRef<RNTextInput, InputTextProps>(\n ({ className, disabled, mode, multiline, forceStyle, ...props }, ref) => {\n const placeholderColor = useThemeToken(\"--color-form-placeholder\");\n const modeProps = mode ? MODE_PROPS[mode] : undefined;\n return (\n <RNTextInput\n ref={ref}\n editable={!disabled}\n disabled={disabled}\n aria-disabled={disabled === true}\n multiline={multiline === true}\n placeholderTextColor={\n typeof placeholderColor === \"string\" ? placeholderColor : undefined\n }\n className={inputVariants({ multiline, forceStyle, className })}\n {...modeProps}\n {...props}\n />\n );\n },\n);\n","import { forwardRef } from \"react\";\nimport type { TextInput as RNTextInput } from \"react-native\";\nimport { InputText, type InputTextProps } from \"./InputText\";\n\nexport type TextAreaProps = Omit<InputTextProps, \"multiline\">;\n\nexport const TextArea = forwardRef<RNTextInput, TextAreaProps>((props, ref) => {\n return <InputText ref={ref} multiline {...props} />;\n});\n","import { type ReactNode, useCallback, useState } from \"react\";\nimport { Switch as RNSwitch } from \"react-native\";\nimport { useThemeToken } from \"../../core/useThemeToken\";\nimport { AccentScope, type AccentScopeProps } from \"../containers/AccentScope\";\n\nexport interface SwitchProps {\n accent?: AccentScopeProps[\"accent\"];\n checked?: boolean;\n disabled?: boolean;\n onValueChange?: (value: boolean) => void;\n \"aria-labelledby\"?: string;\n testID?: string;\n}\n\nfunction useControllableChecked(\n controlled: boolean | undefined,\n onValueChange?: (value: boolean) => void,\n): readonly [boolean, (next: boolean) => void] {\n const [internal, setInternal] = useState(controlled ?? false);\n const value = controlled ?? internal;\n const onChange = useCallback(\n (next: boolean) => {\n if (controlled === undefined) {\n setInternal(next);\n }\n if (next !== value) {\n onValueChange?.(next);\n }\n },\n [controlled, onValueChange, value],\n );\n return [value, onChange] as const;\n}\n\nfunction SwitchInner({\n checked,\n disabled,\n onValueChange,\n ...props\n}: SwitchProps): ReactNode {\n const [value, setValue] = useControllableChecked(checked, onValueChange);\n const [trackBg, thumb, disabledTrackBg, disabledThumb] = useThemeToken([\n \"--color-lowered\",\n \"--color-highlight\",\n \"--color-disabled-interactive-muted\",\n \"--color-disabled-muted\",\n ]);\n const track = disabled ? disabledTrackBg : trackBg;\n const thumbColor = disabled ? disabledThumb : thumb;\n return (\n <RNSwitch\n value={value}\n disabled={disabled}\n ios_backgroundColor={track}\n trackColor={{ false: track, true: track }}\n thumbColor={thumbColor}\n onValueChange={setValue}\n {...props}\n />\n );\n}\n\nexport function Switch({ accent, ...rest }: SwitchProps): ReactNode {\n return (\n <AccentScope accent={accent}>\n <SwitchInner {...rest} />\n </AccentScope>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { AccentScope } from \"../containers/AccentScope\";\nimport { Box } from \"../containers/Box\";\nimport { Icon, type SVGIconElement } from \"../primitives/Icon\";\nimport { Text } from \"../primitives/Text\";\n\nconst badgeVariants = tv(\n {\n slots: {\n frame: \"flex-row items-center self-start rounded-full\",\n text: \"font-body-bold\",\n icon: \"\",\n },\n variants: {\n size: {\n sm: { frame: \"gap-xxs px-xs py-xxs\", text: \"text-xs\", icon: \"\" },\n md: { frame: \"gap-xs px-sm py-xxs\", text: \"text-sm\", icon: \"\" },\n },\n variant: {\n solid: {\n frame: \"bg-highlight-accent\",\n text: \"text-sharp\",\n icon: \"text-sharp\",\n },\n \"solid.enabled\": {\n frame: \"bg-enabled\",\n text: \"text-sharp\",\n icon: \"text-sharp\",\n },\n outlined: {\n frame: \"border border-accent\",\n text: \"text-accent\",\n icon: \"text-accent\",\n },\n },\n },\n defaultVariants: { size: \"md\", variant: \"solid\" },\n },\n { twMerge: false },\n);\n\ntype BadgeVariantProps = VariantProps<typeof badgeVariants>;\ntype BadgeSize = NonNullable<BadgeVariantProps[\"size\"]>;\n\nconst ICON_SIZE: Record<BadgeSize, number> = { sm: 12, md: 16 };\n\nexport interface BadgeProps {\n accent?: Accent;\n size?: BadgeSize;\n variant?: NonNullable<BadgeVariantProps[\"variant\"]>;\n icon?: SVGIconElement;\n children?: ReactNode;\n}\n\nexport function Badge({\n accent = \"brand\",\n size = \"md\",\n variant = \"solid\",\n icon,\n children,\n}: BadgeProps): ReactNode {\n const styles = badgeVariants({ size, variant });\n return (\n <AccentScope accent={accent}>\n <Box className={styles.frame()}>\n {icon ? (\n <Icon icon={icon} size={ICON_SIZE[size]} className={styles.icon()} />\n ) : null}\n <Text className={styles.text()}>{children}</Text>\n </Box>\n </AccentScope>\n );\n}\n","import { CheckRegularIcon } from \"alouette-icons/phosphor-icons/CheckRegularIcon\";\nimport { InfoRegularIcon } from \"alouette-icons/phosphor-icons/InfoRegularIcon\";\nimport { WarningRegularIcon } from \"alouette-icons/phosphor-icons/WarningRegularIcon\";\nimport { XRegularIcon } from \"alouette-icons/phosphor-icons/XRegularIcon\";\nimport type { ReactNode } from \"react\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport type { Except } from \"type-fest\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { IconButton } from \"../actions/IconButton\";\nimport { AccentScope } from \"../containers/AccentScope\";\nimport { Box } from \"../containers/Box\";\nimport { Icon, type SVGIconElement } from \"../primitives/Icon\";\nimport { Text } from \"../primitives/Text\";\n\nconst messageFrameVariants = tv(\n {\n base: \"flex-row items-center bg-highlight-accent overflow-hidden\",\n variants: {\n size: {\n sm: \"gap-xs p-sm rounded-xs\",\n md: \"gap-m p-m rounded-sm\",\n lg: \"gap-l p-l rounded-md\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n { twMerge: false },\n);\n\ntype MessageVariantProps = VariantProps<typeof messageFrameVariants>;\ntype MessageSize = NonNullable<MessageVariantProps[\"size\"]>;\n\nconst ICON_SIZE: Record<MessageSize, number> = { sm: 20, md: 24, lg: 28 };\nconst DISMISS_BUTTON_SIZE: Record<MessageSize, number> = {\n sm: 24,\n md: 40,\n lg: 40,\n};\n\ninterface MessageBaseProps {\n accent: Accent;\n size?: MessageSize;\n icon: SVGIconElement;\n children?: ReactNode;\n}\ninterface MessagePropsWithDismiss extends MessageBaseProps {\n onDismiss: () => void;\n dismissIconAriaLabel: string;\n}\ninterface MessagePropsWithoutDismiss extends MessageBaseProps {\n onDismiss?: undefined;\n dismissIconAriaLabel?: undefined;\n}\n\nexport type MessageProps = MessagePropsWithDismiss | MessagePropsWithoutDismiss;\n\nexport function Message({\n icon,\n size = \"md\",\n accent,\n children,\n onDismiss,\n dismissIconAriaLabel,\n}: MessageProps): ReactNode {\n const dismissDiameter = DISMISS_BUTTON_SIZE[size];\n return (\n <AccentScope accent={accent}>\n <Box className={`shadow-m ${messageFrameVariants({ size })}`}>\n <Icon icon={icon} size={ICON_SIZE[size]} className=\"text-accent\" />\n <Text className=\"text-accent grow\">{children}</Text>\n {onDismiss ? (\n <Box\n style={{ width: dismissDiameter, height: dismissDiameter }}\n className=\"flex-center\"\n >\n <IconButton\n icon={<XRegularIcon />}\n iconSize={size === \"sm\" ? \"fill\" : undefined}\n size={dismissDiameter}\n variant=\"ghost\"\n aria-label={dismissIconAriaLabel}\n onPress={onDismiss}\n />\n </Box>\n ) : null}\n </Box>\n </AccentScope>\n );\n}\n\ntype AccentMessageProps = Except<MessageProps, \"accent\" | \"icon\">;\n\nexport function InfoMessage(props: AccentMessageProps): ReactNode {\n return <Message {...props} accent=\"info\" icon={<InfoRegularIcon />} />;\n}\n\nexport function ConfirmationMessage(props: AccentMessageProps): ReactNode {\n return <Message {...props} accent=\"success\" icon={<CheckRegularIcon />} />;\n}\n\nexport function WarningMessage(props: AccentMessageProps): ReactNode {\n return <Message {...props} accent=\"warning\" icon={<WarningRegularIcon />} />;\n}\n","import { CaretRightRegularIcon } from \"alouette-icons/phosphor-icons/CaretRightRegularIcon\";\nimport type { ReactNode } from \"react\";\nimport { View } from \"react-native\";\nimport { Icon } from \"../primitives/Icon\";\nimport { PressableBox, type PressableBoxProps } from \"./PressableBox\";\n\nexport interface PressableListItemProps {\n variant?: PressableBoxProps[\"variant\"];\n accent?: PressableBoxProps[\"accent\"];\n role?: PressableBoxProps[\"role\"];\n children: ReactNode;\n onPress: () => void;\n}\n\nexport function PressableListItem({\n variant = \"contained\",\n role = \"button\",\n accent,\n children,\n onPress,\n}: PressableListItemProps): ReactNode {\n return (\n <PressableBox\n variant={variant}\n role={role}\n accent={accent}\n className=\"flex-row items-center justify-between mx-xs my-xxs px-m py-m\"\n onPress={onPress}\n >\n <View className=\"flex-1\">{children}</View>\n <View className=\"justify-center\">\n <Icon\n className={\n variant === \"contained\" ? \"text-on-accent-muted\" : \"text-muted\"\n }\n icon={<CaretRightRegularIcon />}\n size={18}\n />\n </View>\n </PressableBox>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { View } from \"react-native\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { AccentScope } from \"../containers/AccentScope\";\n\nexport interface GradientBackgroundProps {\n children?: ReactNode;\n accent?: Accent;\n}\n\nexport function GradientBackground({\n accent,\n children,\n}: GradientBackgroundProps): ReactNode {\n return (\n <AccentScope accent={accent}>\n <View className=\"absolute inset-0 bg-linear-to-t from-screen-gradient-end from-5% via-screen-gradient-middle via-80% to-screen-gradient-start to-98%\">\n {children}\n </View>\n </AccentScope>\n );\n}\n","import { type ReactNode, forwardRef } from \"react\";\nimport {\n ScrollView as RNScrollView,\n type ScrollViewProps as RNScrollViewProps,\n View,\n} from \"react-native\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { useThemeToken } from \"../../core/useThemeToken\";\nimport { AccentScope } from \"../containers/AccentScope\";\nimport { GradientBackground } from \"./GradientBackground\";\n\ninterface GradientScrollViewInnerProps extends RNScrollViewProps {\n children?: ReactNode;\n}\n\nconst GradientScrollViewInner = forwardRef<\n RNScrollView,\n GradientScrollViewInnerProps\n>(({ children, ...scrollViewProps }, ref) => {\n const [gradientStart, gradientEnd] = useThemeToken([\n \"--color-screen-gradient-start\",\n \"--color-screen-gradient-end\",\n ]);\n return (\n <RNScrollView ref={ref} {...scrollViewProps}>\n <View\n className=\"absolute left-0 right-0\"\n style={{\n top: -600,\n height: 600,\n backgroundColor: gradientStart,\n }}\n />\n <View\n className=\"absolute left-0 right-0\"\n style={{\n bottom: -600,\n height: 600,\n backgroundColor: gradientEnd,\n }}\n />\n <GradientBackground />\n {children}\n </RNScrollView>\n );\n});\n\nexport interface GradientScrollViewProps extends RNScrollViewProps {\n children?: ReactNode;\n accent: Accent;\n}\n\nexport const GradientScrollView = forwardRef<\n RNScrollView,\n GradientScrollViewProps\n>(({ accent, children, ...scrollViewProps }, ref) => {\n return (\n <AccentScope accent={accent}>\n <GradientScrollViewInner ref={ref} {...scrollViewProps}>\n {children}\n </GradientScrollViewInner>\n </AccentScope>\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 { useWindowDimensions } from \"react-native\";\nimport {\n BreakpointNameEnum,\n type BreakpointNames,\n Breakpoints,\n} from \"../config/Breakpoints\";\n\nexport function useCurrentBreakpointName(): BreakpointNameEnum {\n const { width } = useWindowDimensions();\n if (width >= Breakpoints.WIDE) return BreakpointNameEnum.WIDE;\n if (width >= Breakpoints.LARGE) return BreakpointNameEnum.LARGE;\n if (width >= Breakpoints.MEDIUM) return BreakpointNameEnum.MEDIUM;\n if (width >= Breakpoints.SMALL) return BreakpointNameEnum.SMALL;\n return BreakpointNameEnum.BASE;\n}\n\nexport function useCurrentBreakpointNameFiltered<\n Names extends BreakpointNames[],\n>(names: Names): Names[number] {\n const current = useCurrentBreakpointName();\n // Walk from the largest matching breakpoint down to BASE; pick the first\n // one the consumer asked for.\n const ordered = [\n BreakpointNameEnum.WIDE,\n BreakpointNameEnum.LARGE,\n BreakpointNameEnum.MEDIUM,\n BreakpointNameEnum.SMALL,\n BreakpointNameEnum.BASE,\n ] as const;\n const startIndex = ordered.indexOf(current);\n for (let i = startIndex; i < ordered.length; i++) {\n const candidate = ordered[i]!;\n if (names.includes(candidate)) return candidate;\n }\n return BreakpointNameEnum.BASE;\n}\n","import type { ReactNode } from \"react\";\nimport { View } from \"react-native\";\nimport type { SetRequired } from \"type-fest\";\nimport type { BreakpointNames } from \"../config/Breakpoints\";\nimport { useCurrentBreakpointNameFiltered } from \"./useCurrentBreakpointName\";\n\ntype SwitchBreakpointsProps = SetRequired<\n Partial<Record<BreakpointNames, ReactNode>>,\n \"base\"\n> & { children?: never };\n\n// Static lookup table so the Tailwind/NativeWind scanner sees every classname.\n// Keys are `\"<currentBreakpoint>:<nextDefinedBreakpointOrEnd>\"`. The value\n// is the className that makes the slot visible from `current` (inclusive)\n// up to `next` (exclusive).\n//\n// Tailwind v4 breakpoint mapping — see global.css:\n// sm = 480px (alouette SMALL)\n// md = 768px (alouette MEDIUM)\n// lg = 1024px (alouette LARGE)\n// xl = 1280px (alouette WIDE)\nconst VISIBILITY_CLASS: Record<string, string> = {\n \"base:end\": \"flex\",\n \"base:small\": \"flex sm:hidden\",\n \"base:medium\": \"flex md:hidden\",\n \"base:large\": \"flex lg:hidden\",\n \"base:wide\": \"flex xl:hidden\",\n \"small:end\": \"hidden sm:flex\",\n \"small:medium\": \"hidden sm:flex md:hidden\",\n \"small:large\": \"hidden sm:flex lg:hidden\",\n \"small:wide\": \"hidden sm:flex xl:hidden\",\n \"medium:end\": \"hidden md:flex\",\n \"medium:large\": \"hidden md:flex lg:hidden\",\n \"medium:wide\": \"hidden md:flex xl:hidden\",\n \"large:end\": \"hidden lg:flex\",\n \"large:wide\": \"hidden lg:flex xl:hidden\",\n \"wide:end\": \"hidden xl:flex\",\n};\n\n/**\n * Display based on current breakpoint via responsive utility classes.\n *\n * On web this is SSR-friendly (CSS handles the switching). On native it\n * still relies on NativeWind's runtime media-query evaluation.\n */\nexport function SwitchBreakpointsUsingDisplayNone({\n ...breakpoints\n}: SwitchBreakpointsProps): ReactNode {\n const entries = Object.entries(breakpoints) as [BreakpointNames, ReactNode][];\n\n return entries.map(([name, node], index) => {\n const next = entries[index + 1]?.[0] ?? \"end\";\n const className = VISIBILITY_CLASS[`${name}:${next}`] ?? \"flex\";\n return (\n <View key={name} className={className}>\n {node}\n </View>\n );\n });\n}\n\n/**\n * Display based on current breakpoint via conditional rendering. Only the\n * matching slot is in the tree — heavier components stay unmounted.\n */\nexport function SwitchBreakpointsUsingNull({\n children,\n ...breakpoints\n}: SwitchBreakpointsProps): ReactNode {\n const currentBreakpointName = useCurrentBreakpointNameFiltered(\n Object.keys(breakpoints) as (keyof typeof breakpoints)[],\n );\n\n return breakpoints[currentBreakpointName] ?? null;\n}\n","import * as WebBrowser from \"expo-web-browser\";\nimport { WebBrowserPresentationStyle } from \"expo-web-browser\";\nimport type { ComponentProps, FunctionComponent, ReactNode } from \"react\";\nimport { Linking } from \"react-native\";\nimport type { GestureResponderEvent } from \"react-native\";\nimport { useThemeToken } from \"../core/useThemeToken\";\n\nexport interface ExternalLinkRequiredComponentProps {\n onPress?: (event: GestureResponderEvent) => Promise<void> | void;\n}\n\nexport interface ExternalOpenLinkBehavior {\n native: \"linking\" | \"webBrowser\";\n web: \"targetBlank\" | \"targetSelf\";\n}\nconst useOpenExternalLink = () => {\n const [textSharp, bgSurface] = useThemeToken([\n \"--color-sharp\",\n \"--color-surface\",\n ]);\n return async (href: string, openLinkBehavior: ExternalOpenLinkBehavior) => {\n switch (openLinkBehavior.native) {\n case \"webBrowser\": {\n return WebBrowser.openBrowserAsync(href, {\n controlsColor: textSharp,\n dismissButtonStyle: \"close\",\n presentationStyle: WebBrowserPresentationStyle.PAGE_SHEET,\n toolbarColor: bgSurface,\n secondaryToolbarColor: bgSurface,\n readerMode: false,\n enableBarCollapsing: false,\n showTitle: true,\n enableDefaultShareMenuItem: true,\n });\n }\n case \"linking\": {\n return Linking.openURL(href);\n }\n default: {\n throw new Error(\n `Unsupported openLinkBehavior.native: ${openLinkBehavior.native as string}`,\n );\n }\n }\n };\n};\n\nexport interface ExternalLinkProps<C extends FunctionComponent<any>> {\n as: C;\n href: string;\n onPress?: (event: GestureResponderEvent) => void;\n openLinkBehavior: ExternalOpenLinkBehavior;\n}\n\ntype ExternalLinkSpreadProps<C extends FunctionComponent<any>> = Omit<\n ComponentProps<C>,\n keyof ExternalLinkProps<C>\n>;\n\nexport function ExternalLink<C extends FunctionComponent<any>>({\n as: C,\n href,\n openLinkBehavior,\n onPress,\n ...props\n}: ExternalLinkProps<C> & ExternalLinkSpreadProps<C>): ReactNode {\n const openExternalLink = useOpenExternalLink();\n const handlePress: ExternalLinkRequiredComponentProps[\"onPress\"] = (e) => {\n if (onPress) {\n onPress(e);\n if (e?.defaultPrevented) return;\n }\n\n if (!href) return;\n\n return openExternalLink(href, openLinkBehavior);\n };\n\n return <C {...(props as any)} onPress={handlePress} />;\n}\n"],"names":["RNView","RNText","styled","RNScrollView","RNFlatList","RNSectionList","twMerge","Fragment","live","RNTextInput","RNSwitch","ICON_SIZE","View","BreakpointNameEnum"],"mappings":"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"}
1
+ {"version":3,"file":"index-node22.mjs","sources":["../src/core/ThemeContext.ts","../src/themeVariables.ts","../src/ui/containers/ScopedTheme.tsx","../src/core/AlouetteProvider.tsx","../src/core/AlouetteDecorator.tsx","../src/core/useThemeToken.ts","../src/ui/primitives/View.tsx","../src/ui/containers/AccentScope.tsx","../src/ui/primitives/Text.tsx","../src/ui/primitives/ScrollView.tsx","../src/ui/primitives/FlatList.tsx","../src/ui/primitives/SectionList.tsx","../src/ui/stacks/stacks.tsx","../src/ui/stacks/Separator.tsx","../src/ui/containers/Box.tsx","../src/ui/containers/Surface.tsx","../src/ui/styled.tsx","../src/ui/story-components/StoryTitle.tsx","../src/ui/story-components/Story.tsx","../src/ui/story-components/StoryContainer.tsx","../src/ui/story-components/StoryDecorator.tsx","../src/ui/story-components/StoryGrid.tsx","../src/ui/containers/Presence.tsx","../src/animationDurationsMs.ts","../src/ui/primitives/Icon.tsx","../src/ui/data/PressableBox.tsx","../src/ui/actions/Button.tsx","../src/ui/actions/IconButton.tsx","../src/ui/inputs/InputText.tsx","../src/ui/inputs/TextArea.tsx","../src/ui/inputs/Switch.tsx","../src/ui/inputs/Select.shared.tsx","../src/ui/inputs/Select.tsx","../src/ui/feedback/Badge.tsx","../src/ui/feedback/Message.tsx","../src/ui/data/PressableListItem.tsx","../src/ui/layout/GradientBackground.tsx","../src/ui/layout/GradientScrollView.tsx","../src/config/Breakpoints.ts","../src/windowSize/useCurrentBreakpointName.ts","../src/windowSize/SwitchBreakpoints.tsx","../src/expo/ExternalLink.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { AlouetteModeTheme, AlouetteTheme } from \"./AlouetteConfig\";\n\n/**\n * Tracks the currently applied theme name (e.g. \"dark_brand\") so JS reads\n * (`useThemeToken`) and accent composition (`AccentScope`) know which theme\n * is active. Set by `ScopedTheme` alongside NativeWind's variable context.\n *\n * Defaults to \"light\", matching the light defaults in the global `@theme` block.\n */\nexport const ThemeContext = createContext<AlouetteTheme>(\"light\");\n\nexport function useCurrentTheme(): AlouetteTheme {\n return useContext(ThemeContext);\n}\n\nexport function useCurrentMode(): AlouetteModeTheme {\n return useContext(ThemeContext).startsWith(\"dark\") ? \"dark\" : \"light\";\n}\n","/* Generated by scripts/build-css.ts. DO NOT EDIT. */\nimport type { AlouetteTheme } from \"./core/AlouetteConfig\";\n\n/**\n * Resolved CSS-variable maps for every theme, shared with global.css. Feeds\n * `ScopedTheme` (NativeWind's `VariableContextProvider`) and `useThemeToken`.\n */\nexport const themeVariables: Record<\n AlouetteTheme,\n Record<`--${string}`, string>\n> = {\n \"light\": {\n \"--color-translucent\": \"#ffffff66\",\n \"--color-disabled-sharp\": \"#616161\",\n \"--color-disabled-muted\": \"#8F8F8F\",\n \"--color-disabled-interactive\": \"#B8B8B8\",\n \"--color-disabled-interactive-muted\": \"#E0E0E0\",\n \"--color-muted\": \"#474747\",\n \"--color-form-border-disabled\": \"#B8B8B8\",\n \"--color-form-placeholder\": \"#616161\",\n \"--color-form-disabled-text\": \"#474747\",\n \"--color-interactive-contained-disabled\": \"#C7C7C7\",\n \"--color-interactive-outlined-disabled\": \"#B8B8B8\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#EBEBEB\",\n \"--color-interactive-accent-outlined-disabled\": \"#B8B8B8\",\n \"--color-screen\": \"#EBEBEB\",\n \"--color-surface\": \"#F5F5F5\",\n \"--color-highlight\": \"#FFFFFF\",\n \"--color-enabled\": \"#C7C7C7\",\n \"--color-highlight-accent\": \"#E0E0E0\",\n \"--color-lowered\": \"#E0E0E0\",\n \"--color-screen-gradient-start\": \"#E0E0E0\",\n \"--color-screen-gradient-middle\": \"#C7C7C7\",\n \"--color-screen-gradient-end\": \"#B8B8B8\",\n \"--color-border-muted\": \"#8F8F8F\",\n \"--color-border-sharp\": \"#616161\",\n \"--color-interactive-contained-pressable\": \"#FFFFFF\",\n \"--color-interactive-contained-hover\": \"#F5F5F5\",\n \"--color-interactive-contained-focus\": \"#F5F5F5\",\n \"--color-interactive-contained-active\": \"#EBEBEB\",\n \"--color-interactive-outlined-pressable\": \"#616161\",\n \"--color-interactive-outlined-hover\": \"#8F8F8F\",\n \"--color-interactive-outlined-focus\": \"#8F8F8F\",\n \"--color-interactive-outlined-active\": \"#8F8F8F\",\n \"--color-interactive-outlined-outline-focus\": \"#8F8F8F\",\n \"--color-interactive-active\": \"#616161\",\n \"--color-interactive-pressable\": \"#474747\",\n \"--color-interactive-hover\": \"#141414\",\n \"--color-sharp\": \"#141414\",\n \"--color-accent\": \"#141414\",\n \"--color-accent-muted\": \"#616161\",\n \"--color-on-accent\": \"#141414\",\n \"--color-on-accent-muted\": \"#616161\",\n \"--color-selection\": \"#47474740\",\n \"--color-interactive-accent-contained-bg\": \"#EBEBEB\",\n \"--color-interactive-accent-contained-bg-hover\": \"#F5F5F5\",\n \"--color-interactive-accent-contained-bg-focus\": \"#F5F5F5\",\n \"--color-interactive-accent-contained-bg-active\": \"#F5F5F5\"\n },\n \"dark\": {\n \"--color-translucent\": \"#1f1e1e55\",\n \"--color-disabled-sharp\": \"#A8A8A8\",\n \"--color-disabled-muted\": \"#A8A8A8\",\n \"--color-disabled-interactive\": \"#525252\",\n \"--color-disabled-interactive-muted\": \"#333333\",\n \"--color-muted\": \"#C2C2C2\",\n \"--color-form-border-disabled\": \"#525252\",\n \"--color-form-placeholder\": \"#A8A8A8\",\n \"--color-form-disabled-text\": \"#C2C2C2\",\n \"--color-interactive-contained-disabled\": \"#3D3D3D\",\n \"--color-interactive-outlined-disabled\": \"#474747\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#3D3D3D\",\n \"--color-interactive-accent-outlined-disabled\": \"#474747\",\n \"--color-screen\": \"#1F1F1F\",\n \"--color-surface\": \"#292929\",\n \"--color-highlight\": \"#333333\",\n \"--color-enabled\": \"#525252\",\n \"--color-highlight-accent\": \"#333333\",\n \"--color-lowered\": \"#0F0F0F\",\n \"--color-screen-gradient-start\": \"#292929\",\n \"--color-screen-gradient-middle\": \"#1F1F1F\",\n \"--color-screen-gradient-end\": \"#0F0F0F\",\n \"--color-border-muted\": \"#525252\",\n \"--color-border-sharp\": \"#A8A8A8\",\n \"--color-interactive-contained-pressable\": \"#474747\",\n \"--color-interactive-contained-hover\": \"#525252\",\n \"--color-interactive-contained-focus\": \"#525252\",\n \"--color-interactive-contained-active\": \"#525252\",\n \"--color-interactive-outlined-pressable\": \"#525252\",\n \"--color-interactive-outlined-hover\": \"#A8A8A8\",\n \"--color-interactive-outlined-focus\": \"#A8A8A8\",\n \"--color-interactive-outlined-active\": \"#A8A8A8\",\n \"--color-interactive-outlined-outline-focus\": \"#525252\",\n \"--color-interactive-active\": \"#A8A8A8\",\n \"--color-interactive-pressable\": \"#C2C2C2\",\n \"--color-interactive-hover\": \"#F5F5F5\",\n \"--color-sharp\": \"#F5F5F5\",\n \"--color-accent\": \"#F5F5F5\",\n \"--color-accent-muted\": \"#C2C2C2\",\n \"--color-on-accent\": \"#F5F5F5\",\n \"--color-on-accent-muted\": \"#C2C2C2\",\n \"--color-selection\": \"#C2C2C240\",\n \"--color-interactive-accent-contained-bg\": \"#474747\",\n \"--color-interactive-accent-contained-bg-hover\": \"#525252\",\n \"--color-interactive-accent-contained-bg-focus\": \"#525252\",\n \"--color-interactive-accent-contained-bg-active\": \"#525252\"\n },\n \"light_brand\": {\n \"--color-translucent\": \"#ffffff66\",\n \"--color-disabled-sharp\": \"#616161\",\n \"--color-disabled-muted\": \"#8F8F8F\",\n \"--color-disabled-interactive\": \"#B8B8B8\",\n \"--color-disabled-interactive-muted\": \"#E0E0E0\",\n \"--color-muted\": \"#474747\",\n \"--color-form-border-disabled\": \"#B8B8B8\",\n \"--color-form-placeholder\": \"#616161\",\n \"--color-form-disabled-text\": \"#474747\",\n \"--color-interactive-contained-disabled\": \"#C7C7C7\",\n \"--color-interactive-outlined-disabled\": \"#B8B8B8\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#EBEBEB\",\n \"--color-interactive-accent-outlined-disabled\": \"#B8B8B8\",\n \"--color-screen\": \"#DFF1F6\",\n \"--color-surface\": \"#EFF8FB\",\n \"--color-highlight\": \"#F7FBFD\",\n \"--color-enabled\": \"#99DFF5\",\n \"--color-highlight-accent\": \"#C7EEF9\",\n \"--color-lowered\": \"#C7EEF9\",\n \"--color-screen-gradient-start\": \"#C7EEF9\",\n \"--color-screen-gradient-middle\": \"#99DFF5\",\n \"--color-screen-gradient-end\": \"#7DD7F2\",\n \"--color-border-muted\": \"#23C8FB\",\n \"--color-border-sharp\": \"#037496\",\n \"--color-interactive-contained-pressable\": \"#037496\",\n \"--color-interactive-contained-hover\": \"#049AC8\",\n \"--color-interactive-contained-focus\": \"#049AC8\",\n \"--color-interactive-contained-active\": \"#23C8FB\",\n \"--color-interactive-outlined-pressable\": \"#037496\",\n \"--color-interactive-outlined-hover\": \"#23C8FB\",\n \"--color-interactive-outlined-focus\": \"#23C8FB\",\n \"--color-interactive-outlined-active\": \"#23C8FB\",\n \"--color-interactive-outlined-outline-focus\": \"#23C8FB\",\n \"--color-interactive-active\": \"#037496\",\n \"--color-interactive-pressable\": \"#024D64\",\n \"--color-interactive-hover\": \"#011F28\",\n \"--color-sharp\": \"#011F28\",\n \"--color-accent\": \"#024D64\",\n \"--color-accent-muted\": \"#037496\",\n \"--color-on-accent\": \"#FFFFFF\",\n \"--color-on-accent-muted\": \"#C7EEF9\",\n \"--color-selection\": \"#024D6440\",\n \"--color-interactive-accent-contained-bg\": \"#DFF1F6\",\n \"--color-interactive-accent-contained-bg-hover\": \"#EFF8FB\",\n \"--color-interactive-accent-contained-bg-focus\": \"#EFF8FB\",\n \"--color-interactive-accent-contained-bg-active\": \"#EFF8FB\"\n },\n \"light_info\": {\n \"--color-translucent\": \"#ffffff66\",\n \"--color-disabled-sharp\": \"#616161\",\n \"--color-disabled-muted\": \"#8F8F8F\",\n \"--color-disabled-interactive\": \"#B8B8B8\",\n \"--color-disabled-interactive-muted\": \"#E0E0E0\",\n \"--color-muted\": \"#474747\",\n \"--color-form-border-disabled\": \"#B8B8B8\",\n \"--color-form-placeholder\": \"#616161\",\n \"--color-form-disabled-text\": \"#474747\",\n \"--color-interactive-contained-disabled\": \"#C7C7C7\",\n \"--color-interactive-outlined-disabled\": \"#B8B8B8\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#EBEBEB\",\n \"--color-interactive-accent-outlined-disabled\": \"#B8B8B8\",\n \"--color-screen\": \"#DFF0F6\",\n \"--color-surface\": \"#EFF8FB\",\n \"--color-highlight\": \"#F7FBFD\",\n \"--color-enabled\": \"#99DEF5\",\n \"--color-highlight-accent\": \"#C7EDF9\",\n \"--color-lowered\": \"#C7EDF9\",\n \"--color-screen-gradient-start\": \"#C7EDF9\",\n \"--color-screen-gradient-middle\": \"#99DEF5\",\n \"--color-screen-gradient-end\": \"#7DD5F2\",\n \"--color-border-muted\": \"#23C5FB\",\n \"--color-border-sharp\": \"#037196\",\n \"--color-interactive-contained-pressable\": \"#037196\",\n \"--color-interactive-contained-hover\": \"#0497C8\",\n \"--color-interactive-contained-focus\": \"#0497C8\",\n \"--color-interactive-contained-active\": \"#23C5FB\",\n \"--color-interactive-outlined-pressable\": \"#037196\",\n \"--color-interactive-outlined-hover\": \"#23C5FB\",\n \"--color-interactive-outlined-focus\": \"#23C5FB\",\n \"--color-interactive-outlined-active\": \"#23C5FB\",\n \"--color-interactive-outlined-outline-focus\": \"#23C5FB\",\n \"--color-interactive-active\": \"#037196\",\n \"--color-interactive-pressable\": \"#024B64\",\n \"--color-interactive-hover\": \"#011E28\",\n \"--color-sharp\": \"#011E28\",\n \"--color-accent\": \"#024B64\",\n \"--color-accent-muted\": \"#037196\",\n \"--color-on-accent\": \"#FFFFFF\",\n \"--color-on-accent-muted\": \"#C7EDF9\",\n \"--color-selection\": \"#024B6440\",\n \"--color-interactive-accent-contained-bg\": \"#DFF0F6\",\n \"--color-interactive-accent-contained-bg-hover\": \"#EFF8FB\",\n \"--color-interactive-accent-contained-bg-focus\": \"#EFF8FB\",\n \"--color-interactive-accent-contained-bg-active\": \"#EFF8FB\"\n },\n \"light_success\": {\n \"--color-translucent\": \"#ffffff66\",\n \"--color-disabled-sharp\": \"#616161\",\n \"--color-disabled-muted\": \"#8F8F8F\",\n \"--color-disabled-interactive\": \"#B8B8B8\",\n \"--color-disabled-interactive-muted\": \"#E0E0E0\",\n \"--color-muted\": \"#474747\",\n \"--color-form-border-disabled\": \"#B8B8B8\",\n \"--color-form-placeholder\": \"#616161\",\n \"--color-form-disabled-text\": \"#474747\",\n \"--color-interactive-contained-disabled\": \"#C7C7C7\",\n \"--color-interactive-outlined-disabled\": \"#B8B8B8\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#EBEBEB\",\n \"--color-interactive-accent-outlined-disabled\": \"#B8B8B8\",\n \"--color-screen\": \"#DFF6DF\",\n \"--color-surface\": \"#EFFBEF\",\n \"--color-highlight\": \"#F7FDF7\",\n \"--color-enabled\": \"#91F391\",\n \"--color-highlight-accent\": \"#BFF8BF\",\n \"--color-lowered\": \"#BFF8BF\",\n \"--color-screen-gradient-start\": \"#BFF8BF\",\n \"--color-screen-gradient-middle\": \"#91F391\",\n \"--color-screen-gradient-end\": \"#75F075\",\n \"--color-border-muted\": \"#19FA19\",\n \"--color-border-sharp\": \"#027802\",\n \"--color-interactive-contained-pressable\": \"#027802\",\n \"--color-interactive-contained-hover\": \"#03AA03\",\n \"--color-interactive-contained-focus\": \"#03AA03\",\n \"--color-interactive-contained-active\": \"#19FA19\",\n \"--color-interactive-outlined-pressable\": \"#027802\",\n \"--color-interactive-outlined-hover\": \"#19FA19\",\n \"--color-interactive-outlined-focus\": \"#19FA19\",\n \"--color-interactive-outlined-active\": \"#19FA19\",\n \"--color-interactive-outlined-outline-focus\": \"#19FA19\",\n \"--color-interactive-active\": \"#027802\",\n \"--color-interactive-pressable\": \"#014601\",\n \"--color-interactive-hover\": \"#012801\",\n \"--color-sharp\": \"#012801\",\n \"--color-accent\": \"#014601\",\n \"--color-accent-muted\": \"#027802\",\n \"--color-on-accent\": \"#FFFFFF\",\n \"--color-on-accent-muted\": \"#BFF8BF\",\n \"--color-selection\": \"#01460140\",\n \"--color-interactive-accent-contained-bg\": \"#DFF6DF\",\n \"--color-interactive-accent-contained-bg-hover\": \"#EFFBEF\",\n \"--color-interactive-accent-contained-bg-focus\": \"#EFFBEF\",\n \"--color-interactive-accent-contained-bg-active\": \"#EFFBEF\"\n },\n \"light_warning\": {\n \"--color-translucent\": \"#ffffff66\",\n \"--color-disabled-sharp\": \"#616161\",\n \"--color-disabled-muted\": \"#8F8F8F\",\n \"--color-disabled-interactive\": \"#B8B8B8\",\n \"--color-disabled-interactive-muted\": \"#E0E0E0\",\n \"--color-muted\": \"#474747\",\n \"--color-form-border-disabled\": \"#B8B8B8\",\n \"--color-form-placeholder\": \"#616161\",\n \"--color-form-disabled-text\": \"#474747\",\n \"--color-interactive-contained-disabled\": \"#C7C7C7\",\n \"--color-interactive-outlined-disabled\": \"#B8B8B8\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#EBEBEB\",\n \"--color-interactive-accent-outlined-disabled\": \"#B8B8B8\",\n \"--color-screen\": \"#F6EEDF\",\n \"--color-surface\": \"#FBF7EF\",\n \"--color-highlight\": \"#FDFBF7\",\n \"--color-enabled\": \"#F3D291\",\n \"--color-highlight-accent\": \"#F8E5BF\",\n \"--color-lowered\": \"#F8E5BF\",\n \"--color-screen-gradient-start\": \"#F8E5BF\",\n \"--color-screen-gradient-middle\": \"#F3D291\",\n \"--color-screen-gradient-end\": \"#F0C775\",\n \"--color-border-muted\": \"#FAAF19\",\n \"--color-border-sharp\": \"#8C5E03\",\n \"--color-interactive-contained-pressable\": \"#8C5E03\",\n \"--color-interactive-contained-hover\": \"#BE8004\",\n \"--color-interactive-contained-focus\": \"#BE8004\",\n \"--color-interactive-contained-active\": \"#FAAF19\",\n \"--color-interactive-outlined-pressable\": \"#8C5E03\",\n \"--color-interactive-outlined-hover\": \"#FAAF19\",\n \"--color-interactive-outlined-focus\": \"#FAAF19\",\n \"--color-interactive-outlined-active\": \"#FAAF19\",\n \"--color-interactive-outlined-outline-focus\": \"#FAAF19\",\n \"--color-interactive-active\": \"#8C5E03\",\n \"--color-interactive-pressable\": \"#5A3D02\",\n \"--color-interactive-hover\": \"#281B01\",\n \"--color-sharp\": \"#281B01\",\n \"--color-accent\": \"#5A3D02\",\n \"--color-accent-muted\": \"#8C5E03\",\n \"--color-on-accent\": \"#FFFFFF\",\n \"--color-on-accent-muted\": \"#F8E5BF\",\n \"--color-selection\": \"#5A3D0240\",\n \"--color-interactive-accent-contained-bg\": \"#F6EEDF\",\n \"--color-interactive-accent-contained-bg-hover\": \"#FBF7EF\",\n \"--color-interactive-accent-contained-bg-focus\": \"#FBF7EF\",\n \"--color-interactive-accent-contained-bg-active\": \"#FBF7EF\"\n },\n \"light_danger\": {\n \"--color-translucent\": \"#ffffff66\",\n \"--color-disabled-sharp\": \"#616161\",\n \"--color-disabled-muted\": \"#8F8F8F\",\n \"--color-disabled-interactive\": \"#B8B8B8\",\n \"--color-disabled-interactive-muted\": \"#E0E0E0\",\n \"--color-muted\": \"#474747\",\n \"--color-form-border-disabled\": \"#B8B8B8\",\n \"--color-form-placeholder\": \"#616161\",\n \"--color-form-disabled-text\": \"#474747\",\n \"--color-interactive-contained-disabled\": \"#C7C7C7\",\n \"--color-interactive-outlined-disabled\": \"#B8B8B8\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#EBEBEB\",\n \"--color-interactive-accent-outlined-disabled\": \"#B8B8B8\",\n \"--color-screen\": \"#F6E0DF\",\n \"--color-surface\": \"#FBEFEF\",\n \"--color-highlight\": \"#FDF7F7\",\n \"--color-enabled\": \"#F7A4A1\",\n \"--color-highlight-accent\": \"#FBD2D0\",\n \"--color-lowered\": \"#FBD2D0\",\n \"--color-screen-gradient-start\": \"#FBD2D0\",\n \"--color-screen-gradient-middle\": \"#F7A4A1\",\n \"--color-screen-gradient-end\": \"#F48985\",\n \"--color-border-muted\": \"#FB342D\",\n \"--color-border-sharp\": \"#A00803\",\n \"--color-interactive-contained-pressable\": \"#A00803\",\n \"--color-interactive-contained-hover\": \"#D20B04\",\n \"--color-interactive-contained-focus\": \"#D20B04\",\n \"--color-interactive-contained-active\": \"#FB342D\",\n \"--color-interactive-outlined-pressable\": \"#A00803\",\n \"--color-interactive-outlined-hover\": \"#FB342D\",\n \"--color-interactive-outlined-focus\": \"#FB342D\",\n \"--color-interactive-outlined-active\": \"#FB342D\",\n \"--color-interactive-outlined-outline-focus\": \"#FB342D\",\n \"--color-interactive-active\": \"#A00803\",\n \"--color-interactive-pressable\": \"#6E0602\",\n \"--color-interactive-hover\": \"#280201\",\n \"--color-sharp\": \"#280201\",\n \"--color-accent\": \"#6E0602\",\n \"--color-accent-muted\": \"#A00803\",\n \"--color-on-accent\": \"#FFFFFF\",\n \"--color-on-accent-muted\": \"#FBD2D0\",\n \"--color-selection\": \"#6E060240\",\n \"--color-interactive-accent-contained-bg\": \"#F6E0DF\",\n \"--color-interactive-accent-contained-bg-hover\": \"#FBEFEF\",\n \"--color-interactive-accent-contained-bg-focus\": \"#FBEFEF\",\n \"--color-interactive-accent-contained-bg-active\": \"#FBEFEF\"\n },\n \"dark_brand\": {\n \"--color-translucent\": \"#1f1e1e55\",\n \"--color-disabled-sharp\": \"#A8A8A8\",\n \"--color-disabled-muted\": \"#A8A8A8\",\n \"--color-disabled-interactive\": \"#525252\",\n \"--color-disabled-interactive-muted\": \"#333333\",\n \"--color-muted\": \"#C2C2C2\",\n \"--color-form-border-disabled\": \"#525252\",\n \"--color-form-placeholder\": \"#A8A8A8\",\n \"--color-form-disabled-text\": \"#C2C2C2\",\n \"--color-interactive-contained-disabled\": \"#3D3D3D\",\n \"--color-interactive-outlined-disabled\": \"#474747\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#3D3D3D\",\n \"--color-interactive-accent-outlined-disabled\": \"#474747\",\n \"--color-screen\": \"#0D2830\",\n \"--color-surface\": \"#123540\",\n \"--color-highlight\": \"#104E60\",\n \"--color-enabled\": \"#1E94B8\",\n \"--color-highlight-accent\": \"#104E60\",\n \"--color-lowered\": \"#071418\",\n \"--color-screen-gradient-start\": \"#123540\",\n \"--color-screen-gradient-middle\": \"#0D2830\",\n \"--color-screen-gradient-end\": \"#071418\",\n \"--color-border-muted\": \"#1E94B8\",\n \"--color-border-sharp\": \"#5CD1F5\",\n \"--color-interactive-contained-pressable\": \"#156A84\",\n \"--color-interactive-contained-hover\": \"#1E94B8\",\n \"--color-interactive-contained-focus\": \"#1E94B8\",\n \"--color-interactive-contained-active\": \"#1E94B8\",\n \"--color-interactive-outlined-pressable\": \"#1E94B8\",\n \"--color-interactive-outlined-hover\": \"#5CD1F5\",\n \"--color-interactive-outlined-focus\": \"#5CD1F5\",\n \"--color-interactive-outlined-active\": \"#5CD1F5\",\n \"--color-interactive-outlined-outline-focus\": \"#1E94B8\",\n \"--color-interactive-active\": \"#5CD1F5\",\n \"--color-interactive-pressable\": \"#8CDFF8\",\n \"--color-interactive-hover\": \"#D9F4FD\",\n \"--color-sharp\": \"#D9F4FD\",\n \"--color-accent\": \"#8CDFF8\",\n \"--color-accent-muted\": \"#8CDFF8\",\n \"--color-on-accent\": \"#F5F5F5\",\n \"--color-on-accent-muted\": \"#8CDFF8\",\n \"--color-selection\": \"#8CDFF840\",\n \"--color-interactive-accent-contained-bg\": \"#156A84\",\n \"--color-interactive-accent-contained-bg-hover\": \"#1E94B8\",\n \"--color-interactive-accent-contained-bg-focus\": \"#1E94B8\",\n \"--color-interactive-accent-contained-bg-active\": \"#1E94B8\"\n },\n \"dark_info\": {\n \"--color-translucent\": \"#1f1e1e55\",\n \"--color-disabled-sharp\": \"#A8A8A8\",\n \"--color-disabled-muted\": \"#A8A8A8\",\n \"--color-disabled-interactive\": \"#525252\",\n \"--color-disabled-interactive-muted\": \"#333333\",\n \"--color-muted\": \"#C2C2C2\",\n \"--color-form-border-disabled\": \"#525252\",\n \"--color-form-placeholder\": \"#A8A8A8\",\n \"--color-form-disabled-text\": \"#C2C2C2\",\n \"--color-interactive-contained-disabled\": \"#3D3D3D\",\n \"--color-interactive-outlined-disabled\": \"#474747\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#3D3D3D\",\n \"--color-interactive-accent-outlined-disabled\": \"#474747\",\n \"--color-screen\": \"#0D2730\",\n \"--color-surface\": \"#123440\",\n \"--color-highlight\": \"#104C60\",\n \"--color-enabled\": \"#1E92B8\",\n \"--color-highlight-accent\": \"#104C60\",\n \"--color-lowered\": \"#071418\",\n \"--color-screen-gradient-start\": \"#123440\",\n \"--color-screen-gradient-middle\": \"#0D2730\",\n \"--color-screen-gradient-end\": \"#071418\",\n \"--color-border-muted\": \"#1E92B8\",\n \"--color-border-sharp\": \"#5CCEF5\",\n \"--color-interactive-contained-pressable\": \"#156884\",\n \"--color-interactive-contained-hover\": \"#1E92B8\",\n \"--color-interactive-contained-focus\": \"#1E92B8\",\n \"--color-interactive-contained-active\": \"#1E92B8\",\n \"--color-interactive-outlined-pressable\": \"#1E92B8\",\n \"--color-interactive-outlined-hover\": \"#5CCEF5\",\n \"--color-interactive-outlined-focus\": \"#5CCEF5\",\n \"--color-interactive-outlined-active\": \"#5CCEF5\",\n \"--color-interactive-outlined-outline-focus\": \"#1E92B8\",\n \"--color-interactive-active\": \"#5CCEF5\",\n \"--color-interactive-pressable\": \"#8CDDF8\",\n \"--color-interactive-hover\": \"#D9F4FD\",\n \"--color-sharp\": \"#D9F4FD\",\n \"--color-accent\": \"#8CDDF8\",\n \"--color-accent-muted\": \"#8CDDF8\",\n \"--color-on-accent\": \"#F5F5F5\",\n \"--color-on-accent-muted\": \"#8CDDF8\",\n \"--color-selection\": \"#8CDDF840\",\n \"--color-interactive-accent-contained-bg\": \"#156884\",\n \"--color-interactive-accent-contained-bg-hover\": \"#1E92B8\",\n \"--color-interactive-accent-contained-bg-focus\": \"#1E92B8\",\n \"--color-interactive-accent-contained-bg-active\": \"#1E92B8\"\n },\n \"dark_success\": {\n \"--color-translucent\": \"#1f1e1e55\",\n \"--color-disabled-sharp\": \"#A8A8A8\",\n \"--color-disabled-muted\": \"#A8A8A8\",\n \"--color-disabled-interactive\": \"#525252\",\n \"--color-disabled-interactive-muted\": \"#333333\",\n \"--color-muted\": \"#C2C2C2\",\n \"--color-form-border-disabled\": \"#525252\",\n \"--color-form-placeholder\": \"#A8A8A8\",\n \"--color-form-disabled-text\": \"#C2C2C2\",\n \"--color-interactive-contained-disabled\": \"#3D3D3D\",\n \"--color-interactive-outlined-disabled\": \"#474747\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#3D3D3D\",\n \"--color-interactive-accent-outlined-disabled\": \"#474747\",\n \"--color-screen\": \"#0D300D\",\n \"--color-surface\": \"#124012\",\n \"--color-highlight\": \"#0F570F\",\n \"--color-enabled\": \"#1FAD1F\",\n \"--color-highlight-accent\": \"#0F570F\",\n \"--color-lowered\": \"#071807\",\n \"--color-screen-gradient-start\": \"#124012\",\n \"--color-screen-gradient-middle\": \"#0D300D\",\n \"--color-screen-gradient-end\": \"#071807\",\n \"--color-border-muted\": \"#1FAD1F\",\n \"--color-border-sharp\": \"#52F452\",\n \"--color-interactive-contained-pressable\": \"#157915\",\n \"--color-interactive-contained-hover\": \"#1FAD1F\",\n \"--color-interactive-contained-focus\": \"#1FAD1F\",\n \"--color-interactive-contained-active\": \"#1FAD1F\",\n \"--color-interactive-outlined-pressable\": \"#1FAD1F\",\n \"--color-interactive-outlined-hover\": \"#52F452\",\n \"--color-interactive-outlined-focus\": \"#52F452\",\n \"--color-interactive-outlined-active\": \"#52F452\",\n \"--color-interactive-outlined-outline-focus\": \"#1FAD1F\",\n \"--color-interactive-active\": \"#52F452\",\n \"--color-interactive-pressable\": \"#82F782\",\n \"--color-interactive-hover\": \"#D9FDD9\",\n \"--color-sharp\": \"#D9FDD9\",\n \"--color-accent\": \"#82F782\",\n \"--color-accent-muted\": \"#82F782\",\n \"--color-on-accent\": \"#F5F5F5\",\n \"--color-on-accent-muted\": \"#82F782\",\n \"--color-selection\": \"#82F78240\",\n \"--color-interactive-accent-contained-bg\": \"#157915\",\n \"--color-interactive-accent-contained-bg-hover\": \"#1FAD1F\",\n \"--color-interactive-accent-contained-bg-focus\": \"#1FAD1F\",\n \"--color-interactive-accent-contained-bg-active\": \"#1FAD1F\"\n },\n \"dark_warning\": {\n \"--color-translucent\": \"#1f1e1e55\",\n \"--color-disabled-sharp\": \"#A8A8A8\",\n \"--color-disabled-muted\": \"#A8A8A8\",\n \"--color-disabled-interactive\": \"#525252\",\n \"--color-disabled-interactive-muted\": \"#333333\",\n \"--color-muted\": \"#C2C2C2\",\n \"--color-form-border-disabled\": \"#525252\",\n \"--color-form-placeholder\": \"#A8A8A8\",\n \"--color-form-disabled-text\": \"#C2C2C2\",\n \"--color-interactive-contained-disabled\": \"#3D3D3D\",\n \"--color-interactive-outlined-disabled\": \"#474747\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#3D3D3D\",\n \"--color-interactive-accent-outlined-disabled\": \"#474747\",\n \"--color-screen\": \"#30240D\",\n \"--color-surface\": \"#403012\",\n \"--color-highlight\": \"#583F0E\",\n \"--color-enabled\": \"#AF7E1D\",\n \"--color-highlight-accent\": \"#583F0E\",\n \"--color-lowered\": \"#181207\",\n \"--color-screen-gradient-start\": \"#403012\",\n \"--color-screen-gradient-middle\": \"#30240D\",\n \"--color-screen-gradient-end\": \"#181207\",\n \"--color-border-muted\": \"#AF7E1D\",\n \"--color-border-sharp\": \"#F4BE52\",\n \"--color-interactive-contained-pressable\": \"#7B5914\",\n \"--color-interactive-contained-hover\": \"#AF7E1D\",\n \"--color-interactive-contained-focus\": \"#AF7E1D\",\n \"--color-interactive-contained-active\": \"#AF7E1D\",\n \"--color-interactive-outlined-pressable\": \"#AF7E1D\",\n \"--color-interactive-outlined-hover\": \"#F4BE52\",\n \"--color-interactive-outlined-focus\": \"#F4BE52\",\n \"--color-interactive-outlined-active\": \"#F4BE52\",\n \"--color-interactive-outlined-outline-focus\": \"#AF7E1D\",\n \"--color-interactive-active\": \"#F4BE52\",\n \"--color-interactive-pressable\": \"#F7D082\",\n \"--color-interactive-hover\": \"#FDF1D9\",\n \"--color-sharp\": \"#FDF1D9\",\n \"--color-accent\": \"#F7D082\",\n \"--color-accent-muted\": \"#F7D082\",\n \"--color-on-accent\": \"#F5F5F5\",\n \"--color-on-accent-muted\": \"#F7D082\",\n \"--color-selection\": \"#F7D08240\",\n \"--color-interactive-accent-contained-bg\": \"#7B5914\",\n \"--color-interactive-accent-contained-bg-hover\": \"#AF7E1D\",\n \"--color-interactive-accent-contained-bg-focus\": \"#AF7E1D\",\n \"--color-interactive-accent-contained-bg-active\": \"#AF7E1D\"\n },\n \"dark_danger\": {\n \"--color-translucent\": \"#1f1e1e55\",\n \"--color-disabled-sharp\": \"#A8A8A8\",\n \"--color-disabled-muted\": \"#A8A8A8\",\n \"--color-disabled-interactive\": \"#525252\",\n \"--color-disabled-interactive-muted\": \"#333333\",\n \"--color-muted\": \"#C2C2C2\",\n \"--color-form-border-disabled\": \"#525252\",\n \"--color-form-placeholder\": \"#A8A8A8\",\n \"--color-form-disabled-text\": \"#C2C2C2\",\n \"--color-interactive-contained-disabled\": \"#3D3D3D\",\n \"--color-interactive-outlined-disabled\": \"#474747\",\n \"--color-interactive-accent-contained-bg-disabled\": \"#3D3D3D\",\n \"--color-interactive-accent-outlined-disabled\": \"#474747\",\n \"--color-screen\": \"#300F0D\",\n \"--color-surface\": \"#401312\",\n \"--color-highlight\": \"#691411\",\n \"--color-enabled\": \"#C1251F\",\n \"--color-highlight-accent\": \"#691411\",\n \"--color-lowered\": \"#180707\",\n \"--color-screen-gradient-start\": \"#401312\",\n \"--color-screen-gradient-middle\": \"#300F0D\",\n \"--color-screen-gradient-end\": \"#180707\",\n \"--color-border-muted\": \"#C1251F\",\n \"--color-border-sharp\": \"#F56A66\",\n \"--color-interactive-contained-pressable\": \"#8C1B17\",\n \"--color-interactive-contained-hover\": \"#C1251F\",\n \"--color-interactive-contained-focus\": \"#C1251F\",\n \"--color-interactive-contained-active\": \"#C1251F\",\n \"--color-interactive-outlined-pressable\": \"#C1251F\",\n \"--color-interactive-outlined-hover\": \"#F56A66\",\n \"--color-interactive-outlined-focus\": \"#F56A66\",\n \"--color-interactive-outlined-active\": \"#F56A66\",\n \"--color-interactive-outlined-outline-focus\": \"#C1251F\",\n \"--color-interactive-active\": \"#F56A66\",\n \"--color-interactive-pressable\": \"#F89996\",\n \"--color-interactive-hover\": \"#FDDAD9\",\n \"--color-sharp\": \"#FDDAD9\",\n \"--color-accent\": \"#F89996\",\n \"--color-accent-muted\": \"#F89996\",\n \"--color-on-accent\": \"#F5F5F5\",\n \"--color-on-accent-muted\": \"#F89996\",\n \"--color-selection\": \"#F8999640\",\n \"--color-interactive-accent-contained-bg\": \"#8C1B17\",\n \"--color-interactive-accent-contained-bg-hover\": \"#C1251F\",\n \"--color-interactive-accent-contained-bg-focus\": \"#C1251F\",\n \"--color-interactive-accent-contained-bg-active\": \"#C1251F\"\n }\n};\n","import { VariableContextProvider } from \"nativewind\";\nimport type { ReactNode } from \"react\";\nimport type { AlouetteTheme } from \"../../core/AlouetteConfig\";\nimport { ThemeContext } from \"../../core/ThemeContext\";\nimport { themeVariables } from \"../../themeVariables\";\n\nexport interface ScopedThemeProps {\n /** Full theme name, e.g. \"light\", \"dark\", \"light_brand\", \"dark_danger\". */\n theme: AlouetteTheme;\n children?: ReactNode;\n}\n\n/**\n * Applies a theme to its subtree by pushing the theme's resolved CSS variables\n * through NativeWind's `VariableContextProvider` (layout-neutral on both web —\n * `display: contents` — and native — context only). It also records the active\n * theme name in `ThemeContext` so `useThemeToken` and `AccentScope` can read it.\n *\n * Replaces Uniwind's `ScopedTheme`.\n */\nexport function ScopedTheme({ theme, children }: ScopedThemeProps): ReactNode {\n return (\n <ThemeContext.Provider value={theme}>\n <VariableContextProvider value={themeVariables[theme]}>\n {children}\n </VariableContextProvider>\n </ThemeContext.Provider>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { useColorScheme } from \"react-native\";\nimport { ScopedTheme } from \"../ui/containers/ScopedTheme\";\n\nexport interface AlouetteProviderProps {\n children: ReactNode;\n}\n\nexport function AlouetteProvider({\n children,\n}: AlouetteProviderProps): ReactNode {\n // Apply the OS light/dark scheme as the root theme so base tokens resolve\n // correctly app-wide. Subtrees can override via ScopedTheme / AccentScope.\n const colorScheme = useColorScheme();\n return (\n <ScopedTheme theme={colorScheme === \"dark\" ? \"dark\" : \"light\"}>\n {children}\n </ScopedTheme>\n );\n}\n","/* eslint-disable react/destructuring-assignment */\nimport type { Decorator } from \"@storybook/react-vite\";\nimport { ScopedTheme } from \"../ui/containers/ScopedTheme\";\nimport { AlouetteProvider } from \"./AlouetteProvider\";\nimport { SafeAreaProvider } from \"./SafeAreaProvider\";\n\n// eslint-disable-next-line react/function-component-definition -- not a component\nexport const AlouetteDecorator: Decorator = (storyFn, context) => {\n const theme: \"dark\" | \"light\" =\n context.globals.backgrounds?.value === \"#000000\" ? \"dark\" : \"light\";\n\n return (\n <SafeAreaProvider>\n <AlouetteProvider>\n <ScopedTheme theme={theme}>{storyFn(context)}</ScopedTheme>\n </AlouetteProvider>\n </SafeAreaProvider>\n );\n};\n","import { useContext } from \"react\";\nimport { themeVariables } from \"../themeVariables\";\nimport { ThemeContext } from \"./ThemeContext\";\n\ntype TokenName = `--${string}`;\n\n/**\n * Reads theme token values in JS for the few props that can't take a className\n * (gradient stops, `placeholderTextColor`, native Switch track/thumb, the Expo\n * browser chrome, SVG icon tint). Values come from the generated `themeVariables`\n * map keyed by the active `ThemeContext`, so they stay in sync with `global.css`.\n *\n * Replaces Uniwind's `useCSSVariable`. Unlike NativeWind's\n * `useUnstableNativeVariable` this works on web and native alike and is stable.\n */\nexport function useThemeToken(token: TokenName): string | undefined;\nexport function useThemeToken<const T extends readonly TokenName[]>(\n tokens: T,\n): { [K in keyof T]: string | undefined };\nexport function useThemeToken(\n tokenOrTokens: TokenName | readonly TokenName[],\n): (string | undefined)[] | string | undefined {\n const theme = useContext(ThemeContext);\n const vars = themeVariables[theme];\n if (Array.isArray(tokenOrTokens)) {\n return tokenOrTokens.map((token) => vars[token]);\n }\n return vars[tokenOrTokens as TokenName];\n}\n","import { forwardRef } from \"react\";\nimport { View as RNView, type ViewProps as RNViewProps } from \"react-native\";\n\nexport type ViewProps = RNViewProps;\n\nexport const View = forwardRef<RNView, ViewProps>((props, ref) => {\n return <RNView ref={ref} {...props} />;\n});\n","import type { ReactNode } from \"react\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { useCurrentMode } from \"../../core/ThemeContext\";\nimport { ScopedTheme } from \"./ScopedTheme\";\n\nexport interface AccentScopeProps {\n mode?: \"dark\" | \"light\";\n accent?: Accent;\n children?: ReactNode;\n}\n\nexport function AccentScope({\n mode: forcedMode,\n accent,\n children,\n}: AccentScopeProps): ReactNode {\n const currentMode = useCurrentMode();\n if (!accent) {\n return children;\n }\n // ScopedTheme applies the accent theme's *resolved* variables (base mode + accent),\n // so a single scope works at any depth — no need to pre-apply the base mode.\n const mode = forcedMode ?? currentMode;\n return <ScopedTheme theme={`${mode}_${accent}`}>{children}</ScopedTheme>;\n}\n","import { forwardRef } from \"react\";\nimport { Text as RNText, type TextProps as RNTextProps } from \"react-native\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { AccentScope } from \"../containers/AccentScope\";\n\nconst twMerge = extendTailwindMerge({\n extend: {\n classGroups: {\n \"font-family\": [\n \"font-body\",\n \"font-body-bold\",\n \"font-body-extrabold\",\n \"font-heading\",\n \"font-heading-bold\",\n \"font-heading-extrabold\",\n \"font-mono\",\n \"font-mono-bold\",\n \"font-mono-extrabold\",\n ],\n },\n },\n});\n\nexport interface TextProps extends RNTextProps {\n accent?: Accent;\n}\n\nexport const Text = forwardRef<RNText, TextProps>(\n ({ className, accent, ...props }, ref) => {\n return (\n <AccentScope accent={accent}>\n <RNText\n ref={ref}\n className={twMerge(\"font-body text-sharp\", className)}\n {...props}\n />\n </AccentScope>\n );\n },\n);\n\nexport type ParagraphProps = TextProps;\n\nexport const Paragraph = forwardRef<RNText, ParagraphProps>(\n ({ className, ...props }, ref) => {\n return (\n <Text\n ref={ref}\n role=\"paragraph\"\n className={`select-auto ${className ?? \"\"}`}\n {...props}\n />\n );\n },\n);\n","import { styled } from \"nativewind\";\nimport type { ComponentType } from \"react\";\nimport {\n ScrollView as RNScrollView,\n type ScrollViewProps as RNScrollViewProps,\n} from \"react-native\";\n\nexport type ScrollViewProps = RNScrollViewProps;\n\nexport const ScrollView = styled(RNScrollView, {\n className: \"style\",\n contentContainerClassName: \"contentContainerStyle\",\n}) as ComponentType<ScrollViewProps>;\n","import { styled } from \"nativewind\";\nimport type { ReactNode } from \"react\";\nimport {\n FlatList as RNFlatList,\n type FlatListProps as RNFlatListProps,\n} from \"react-native\";\n\nexport type FlatListProps<ItemT> = RNFlatListProps<ItemT>;\n\nexport const FlatList = styled(RNFlatList, {\n className: \"style\",\n contentContainerClassName: \"contentContainerStyle\",\n columnWrapperClassName: \"columnWrapperStyle\",\n}) as <ItemT>(props: FlatListProps<ItemT>) => ReactNode;\n","import { styled } from \"nativewind\";\nimport type { ReactNode } from \"react\";\nimport {\n SectionList as RNSectionList,\n type SectionListProps as RNSectionListProps,\n} from \"react-native\";\n\ntype DefaultSectionT = Record<string, unknown>;\n\nexport type SectionListProps<\n ItemT,\n SectionT = DefaultSectionT,\n> = RNSectionListProps<ItemT, SectionT>;\n\nexport const SectionList = styled(RNSectionList, {\n className: \"style\",\n contentContainerClassName: \"contentContainerStyle\",\n}) as <ItemT, SectionT = DefaultSectionT>(\n props: SectionListProps<ItemT, SectionT>,\n) => ReactNode;\n","import { forwardRef } from \"react\";\nimport { View as RNView, type ViewProps as RNViewProps } from \"react-native\";\n\nexport type StackProps = RNViewProps;\n\nexport const Stack = forwardRef<RNView, StackProps>(\n ({ className, ...props }, ref) => {\n return (\n <RNView\n ref={ref}\n className={`flex-row flex-wrap ${className ?? \"\"}`}\n {...props}\n />\n );\n },\n);\n\nexport type HStackProps = RNViewProps;\n\nexport const HStack = forwardRef<RNView, HStackProps>(\n ({ className, ...props }, ref) => {\n return (\n <RNView ref={ref} className={`flex-row ${className ?? \"\"}`} {...props} />\n );\n },\n);\n\nexport type VStackProps = RNViewProps;\n\nexport const VStack = forwardRef<RNView, VStackProps>(\n ({ className, ...props }, ref) => {\n return (\n <RNView ref={ref} className={`flex-col ${className ?? \"\"}`} {...props} />\n );\n },\n);\n","import { forwardRef } from \"react\";\nimport { View as RNView, type ViewProps as RNViewProps } from \"react-native\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\n\nconst separatorVariants = tv({\n base: \"border-border-sharp\",\n variants: {\n vertical: {\n true: \"self-stretch border-r w-px\",\n false: \"self-stretch border-b h-px\",\n },\n },\n defaultVariants: {\n vertical: false,\n },\n});\n\ntype SeparatorVariantProps = VariantProps<typeof separatorVariants>;\n\nexport interface SeparatorProps extends RNViewProps, SeparatorVariantProps {}\n\nexport const Separator = forwardRef<RNView, SeparatorProps>(\n ({ className, vertical, ...props }, ref) => {\n return (\n <RNView\n ref={ref}\n className={separatorVariants({ vertical, className })}\n {...props}\n />\n );\n },\n);\n","import type { ReactElement } from \"react\";\nimport { Children, cloneElement, forwardRef } from \"react\";\nimport {\n Pressable,\n type PressableProps,\n View as RNView,\n type ViewProps as RNViewProps,\n} from \"react-native\";\nimport type { VariantProps } from \"tailwind-variants\";\nimport { tv } from \"tailwind-variants\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { useSafeAreaInsets } from \"../../core/useSafeAreaInsets\";\nimport { AccentScope } from \"./AccentScope\";\n// Allow Box to shrink when used inside HStack/VStack (matches the original\n// BoxFrame default). overflow is intentionally left off so multi-layer\n// box-shadows are not clipped.\nexport const boxBaseClasses = \"shrink\";\n\nexport interface BoxProps extends RNViewProps {\n accent?: Accent;\n}\n\nexport const Box = forwardRef<RNView, BoxProps>(\n ({ className, accent, ...props }, ref) => {\n return (\n <AccentScope accent={accent}>\n <RNView\n ref={ref}\n className={`${boxBaseClasses} ${className ?? \"\"}`}\n {...props}\n />\n </AccentScope>\n );\n },\n);\n\nexport const interactiveBoxVariants = tv({\n base: [\n boxBaseClasses,\n \"cursor-pointer\",\n \"transition-[transform,background-color,border-color] duration-200 ease-in\",\n \"disabled:cursor-not-allowed disabled:opacity-70 aria-disabled:cursor-not-allowed aria-disabled:opacity-70\",\n \"active:scale-[0.975]\",\n ].join(\" \"),\n variants: {\n withFocusVisibleOutline: {\n true: \"focus-visible:outline-2 focus-visible:outline-offset-2\",\n },\n },\n});\n\nexport interface InteractiveBoxProps\n extends VariantProps<typeof interactiveBoxVariants>, PressableProps {}\n\nexport const InteractiveBox = forwardRef<RNView, InteractiveBoxProps>(\n ({ withFocusVisibleOutline, className, ...rest }, ref) => (\n <Pressable\n ref={ref}\n // override default behavior of Pressable which sets pointerEvents to \"none\" on disabled state. However this prevents cursor to display as\n pointerEvents=\"auto\"\n {...rest}\n className={interactiveBoxVariants({ withFocusVisibleOutline, className })}\n />\n ),\n);\n\nexport const InteractiveBoxHitSlop = forwardRef<RNView, InteractiveBoxProps>(\n ({ withFocusVisibleOutline, children, className, ...rest }, ref) => {\n const child = Children.only(children) as ReactElement<RNViewProps>;\n return (\n <Pressable\n ref={ref}\n // override default behavior of Pressable which sets pointerEvents to \"none\" on disabled state. However this prevents cursor to display as\n pointerEvents=\"auto\"\n className={`flex-center ${className ?? \"\"}`}\n {...rest}\n >\n {cloneElement(child, {\n className: interactiveBoxVariants({\n withFocusVisibleOutline,\n className: child.props.className,\n }),\n })}\n </Pressable>\n );\n },\n);\n\nexport type SafeAreaBoxProps = Omit<BoxProps, \"style\">;\n\nexport const SafeAreaBox = forwardRef<RNView, SafeAreaBoxProps>(\n (props, ref) => {\n const insets = useSafeAreaInsets();\n return (\n <Box\n ref={ref}\n style={{\n paddingTop: insets.top,\n paddingBottom: insets.bottom,\n paddingLeft: insets.left,\n paddingRight: insets.right,\n }}\n {...props}\n />\n );\n },\n);\n","import { forwardRef } from \"react\";\nimport type { View as RNView } from \"react-native\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { AccentScope } from \"./AccentScope\";\nimport { Box, type BoxProps } from \"./Box\";\n\nconst surfaceVariants = tv(\n {\n // overflow-hidden so the multi-layer shadow respects the rounded corners.\n base: \"overflow-hidden\",\n variants: {\n size: {\n sm: \"p-m rounded-xs\",\n md: \"p-xl rounded-sm\",\n lg: \"p-xxl rounded-md\",\n },\n variant: {\n surface: \"bg-surface\",\n highlight: \"bg-highlight\",\n \"highlight-accent\": \"bg-highlight-accent\",\n lowered: \"bg-lowered\",\n translucent: \"bg-translucent\",\n },\n shadow: {\n none: \"shadow-none\",\n s: \"shadow-s\",\n m: \"shadow-m\",\n l: \"shadow-l\",\n lowered: \"shadow-lowered\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"surface\",\n },\n },\n { twMerge: false },\n);\n\ntype SurfaceVariantProps = VariantProps<typeof surfaceVariants>;\n\nexport interface SurfaceProps extends BoxProps, SurfaceVariantProps {\n accent?: Accent;\n}\n\nexport const Surface = forwardRef<RNView, SurfaceProps>(\n ({ className, size, variant, shadow, accent, ...props }, ref) => {\n // shadow defaults to \"s\", or \"lowered\" when variant=\"lowered\".\n const resolvedShadow = shadow ?? (variant === \"lowered\" ? \"lowered\" : \"s\");\n return (\n <AccentScope accent={accent}>\n <Box\n ref={ref}\n className={surfaceVariants({\n size,\n variant,\n shadow: resolvedShadow,\n className,\n })}\n {...props}\n />\n </AccentScope>\n );\n },\n);\n","import type { ComponentType } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function styled<P extends { className?: string }>(\n Component: ComponentType<P>,\n defaultClassName: string,\n): ComponentType<P> {\n function StyledComponent({ className, ...props }: P) {\n return (\n <Component\n className={twMerge(defaultClassName, className)}\n {...(props as P)}\n />\n );\n }\n StyledComponent.displayName = `Styled(${Component.displayName ?? Component.name ?? \"Component\"})`;\n StyledComponent.__isStyledComponent = true;\n return StyledComponent;\n}\n","import { forwardRef } from \"react\";\nimport type { Text as RNText } from \"react-native\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport { Text, type TextProps } from \"../primitives/Text\";\n\nconst storyTitleVariants = tv({\n base: \"font-heading-extrabold text-sharp\",\n variants: {\n level: {\n 1: \"text-4xl mb-xl\",\n 2: \"text-3xl mb-xl\",\n 3: \"text-2xl mb-m\",\n 4: \"text-xl mb-m\",\n },\n },\n defaultVariants: {\n level: 1,\n },\n});\n\ntype StoryTitleVariantProps = VariantProps<typeof storyTitleVariants>;\n\nexport interface StoryTitleProps extends TextProps, StoryTitleVariantProps {}\n\nexport const StoryTitle = forwardRef<RNText, StoryTitleProps>(\n ({ className, level, ...props }, ref) => {\n return (\n <Text\n ref={ref}\n className={storyTitleVariants({ level, className })}\n {...props}\n />\n );\n },\n);\n","import { Fragment, type ReactNode } from \"react\";\nimport { Platform } from \"react-native\";\nimport type { Accent, AlouetteModeTheme } from \"../../core/AlouetteConfig\";\nimport { AccentScope } from \"../containers/AccentScope\";\nimport { ScopedTheme } from \"../containers/ScopedTheme\";\nimport { Surface } from \"../containers/Surface\";\nimport { ScrollView } from \"../primitives/ScrollView\";\nimport { View } from \"../primitives/View\";\nimport { VStack } from \"../stacks/stacks\";\nimport { styled } from \"../styled\";\nimport { StoryTitle } from \"./StoryTitle\";\n\nexport interface StorySectionProps {\n title: ReactNode;\n children: ReactNode;\n level?: 1 | 2;\n modeTheme?: AlouetteModeTheme;\n accent?: Accent;\n withSurface?: boolean;\n}\n\nconst InternalStorySection = styled(View, \"-mx-l px-l\");\n\nfunction StorySection({\n title,\n children,\n level = 1,\n modeTheme,\n accent,\n withSurface = false,\n}: StorySectionProps): ReactNode {\n const content = (\n <InternalStorySection className=\"pb-xl bg-screen\">\n {withSurface ? (\n <Surface>\n <StoryTitle level={(level + 1) as 2 | 3}>{title}</StoryTitle>\n <VStack className=\"gap-m\">{children}</VStack>\n </Surface>\n ) : (\n <>\n <StoryTitle level={(level + 1) as 2 | 3}>{title}</StoryTitle>\n <VStack className=\"gap-m\">{children}</VStack>\n </>\n )}\n </InternalStorySection>\n );\n\n if (modeTheme) {\n return <ScopedTheme theme={modeTheme}>{content}</ScopedTheme>;\n }\n if (accent) {\n return <AccentScope accent={accent}>{content}</AccentScope>;\n }\n return content;\n}\n\nfunction StorySubSection({\n title,\n children,\n modeTheme,\n accent,\n withSurface = false,\n}: StorySectionProps): ReactNode {\n const content = (\n <InternalStorySection className=\"mb-m\">\n {withSurface ? (\n <Surface>\n <StoryTitle level={3}>{title}</StoryTitle>\n <VStack className=\"gap-m\">{children}</VStack>\n </Surface>\n ) : (\n <>\n <StoryTitle level={3}>{title}</StoryTitle>\n <VStack className=\"gap-m\">{children}</VStack>\n </>\n )}\n </InternalStorySection>\n );\n if (modeTheme) {\n return <ScopedTheme theme={modeTheme}>{content}</ScopedTheme>;\n }\n if (accent) {\n return <AccentScope accent={accent}>{content}</AccentScope>;\n }\n return content;\n}\n\n// const SimpleWebScrollView = styled(View, \"h-full overflow-auto\");\n\nconst ScrollWrapper = Platform.OS === \"web\" ? Fragment : ScrollView;\n\nexport interface StoryProps {\n documentation?: NonNullable<ReactNode>;\n children?: NonNullable<ReactNode>;\n noDarkMode?: boolean;\n}\n\nexport function Story({\n documentation,\n children,\n noDarkMode,\n}: StoryProps): ReactNode {\n return (\n <ScrollWrapper>\n {documentation && (\n <Surface accent=\"info\" className=\"mb-xxl\">\n {documentation}\n </Surface>\n )}\n {([\"light\", ...(noDarkMode ? [] : [\"dark\"])] as (\"dark\" | \"light\")[]).map(\n (mode) => (\n <ScopedTheme key={mode} theme={mode}>\n <View className=\"bg-screen p-l\">{children}</View>\n </ScopedTheme>\n ),\n )}\n </ScrollWrapper>\n );\n}\n\nStory.Section = StorySection;\nStory.SubSection = StorySubSection;\n\nexport const accents: Accent[] = [\n \"brand\",\n \"danger\",\n \"info\",\n \"success\",\n \"warning\",\n];\n","import type { ReactNode } from \"react\";\nimport { ScopedTheme } from \"../containers/ScopedTheme\";\nimport { ScrollView } from \"../primitives/ScrollView\";\nimport { StoryTitle } from \"./StoryTitle\";\n\nexport interface StoryContainerProps {\n title: ReactNode;\n children: NonNullable<ReactNode>;\n}\n\nexport function StoryContainer({\n title,\n children,\n}: StoryContainerProps): ReactNode {\n return (\n <ScopedTheme theme=\"light\">\n <ScrollView className=\"bg-white p-3xl\">\n <StoryTitle level={1}>{title}</StoryTitle>\n {children}\n </ScrollView>\n </ScopedTheme>\n );\n}\n","import type { Decorator } from \"@storybook/react-vite\";\nimport { StoryContainer } from \"./StoryContainer\";\n\n// eslint-disable-next-line react/function-component-definition -- not a component, it's a decorator for storybook.\nexport const StoryDecorator: Decorator = (storyFn, { name, parameters }) => {\n if (parameters?.container === false) return storyFn();\n return <StoryContainer title={name}>{storyFn()}</StoryContainer>;\n};\n","import { Children, type ReactNode } from \"react\";\nimport { Platform } from \"react-native\";\nimport { tv } from \"tailwind-variants\";\nimport { View } from \"../primitives/View\";\nimport { VStack } from \"../stacks/stacks\";\nimport { StoryTitle } from \"./StoryTitle\";\n\nconst rowVariants = tv(\n {\n base: \"flex-col\",\n variants: {\n breakpoint: {\n small: \"sm:flex-row sm:mb-xl\",\n medium: \"md:flex-row md:mb-xl\",\n },\n flexWrap: { true: \"\" },\n },\n compoundVariants: [\n { breakpoint: \"small\", flexWrap: true, class: \"sm:flex-wrap sm:gap-m\" },\n { breakpoint: \"medium\", flexWrap: true, class: \"md:flex-wrap md:gap-m\" },\n ],\n },\n { twMerge: false },\n);\n\nconst itemVariants = tv(\n {\n base: \"pt-m pb-xl\",\n variants: {\n breakpoint: {\n small: \"sm:pt-0 sm:pb-0 sm:my-xxs shrink\",\n medium: \"md:pt-0 md:pb-0 md:my-xxs shrink\",\n },\n flexWrap: {\n true: \"\",\n false: \"\",\n },\n loose: {\n true: \"\",\n false: \"grow\",\n },\n },\n compoundVariants: [\n { breakpoint: \"small\", flexWrap: false, class: \"sm:basis-0\" },\n { breakpoint: \"medium\", flexWrap: false, class: \"md:basis-0\" },\n ],\n defaultVariants: {\n flexWrap: false,\n },\n },\n { twMerge: false },\n);\n\nexport interface StoryGridRowProps {\n children: NonNullable<ReactNode>;\n breakpoint?: \"medium\" | \"small\";\n flexWrap?: boolean;\n loose?: boolean;\n}\n\nfunction StoryGridRow({\n children,\n breakpoint = \"small\",\n flexWrap,\n loose,\n}: StoryGridRowProps): ReactNode {\n return (\n <View className={rowVariants({ breakpoint, flexWrap })}>\n {Children.map(children, (child) => (\n <View className={itemVariants({ breakpoint, flexWrap, loose })}>\n {child}\n </View>\n ))}\n </View>\n );\n}\n\nexport interface StoryGridColProps {\n children: NonNullable<ReactNode>;\n title?: string;\n platform?: \"all\" | \"native\" | \"web\";\n}\n\nfunction StoryGridCol({\n title,\n children,\n platform = \"all\",\n}: StoryGridColProps): ReactNode {\n const isNative = Platform.OS === \"ios\" || Platform.OS === \"android\";\n\n if (Platform.OS === \"web\" && platform === \"native\") {\n return null;\n }\n if (isNative && platform === \"web\") {\n return null;\n }\n\n return title ? (\n <VStack>\n <StoryTitle level={4} numberOfLines={1}>\n {title}\n </StoryTitle>\n {children}\n </VStack>\n ) : (\n children\n );\n}\n\nexport const StoryGrid = {\n Row: StoryGridRow,\n Col: StoryGridCol,\n};\n","import {\n Children,\n type Key,\n type ReactElement,\n type ReactNode,\n cloneElement,\n isValidElement,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { View } from \"../primitives/View\";\n\nexport interface PresenceBaseProps {\n /**\n * Identity of the current child. When it changes, the previous child is kept\n * mounted (with `exitClassName`) for `exitDurationMs` so it can animate out\n * while the new child animates in — an AnimatePresence-style swap done with\n * pure CSS animations, no animation library.\n */\n activeKey: Key;\n /** How long to keep the exiting child mounted — match the exit animation. */\n exitDurationMs: number;\n /** Animation class applied to the entering (current) child. */\n enterClassName?: string;\n /** Animation class applied to the exiting (previous) child. */\n exitClassName?: string;\n /** Class applied to every item (e.g. `absolute inset-0` to overlap). */\n className?: string;\n}\n\ninterface Snapshot {\n key: Key;\n node: ReactNode;\n}\n\nfunction joinClasses(...classes: (string | undefined)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n\n/**\n * Shared keyed-swap logic. Keeps the previously rendered child as a snapshot\n * after `activeKey` changes so an exit animation can play, then removes it once\n * `exitDurationMs` has elapsed. The entering child is keyed by `activeKey`, so\n * it remounts on each change and replays its enter animation.\n *\n * Assumes one child whose content is derived from `activeKey` (the common\n * keyed-swap case). Updates to the active child between key changes are shown\n * live but not snapshotted for the next exit.\n */\nfunction usePresence(\n activeKey: Key,\n exitDurationMs: number,\n children: ReactNode,\n): Snapshot[] {\n const [exiting, setExiting] = useState<Snapshot[]>([]);\n const previousRef = useRef<Snapshot>({ key: activeKey, node: children });\n const childrenRef = useRef<ReactNode>(children);\n childrenRef.current = children;\n const timersRef = useRef<ReturnType<typeof setTimeout>[]>([]);\n\n useEffect(\n () => () => {\n timersRef.current.forEach(clearTimeout);\n },\n [],\n );\n\n useEffect(() => {\n const previous = previousRef.current;\n if (previous.key === activeKey) {\n return;\n }\n previousRef.current = { key: activeKey, node: childrenRef.current };\n setExiting((list) => [...list, previous]);\n const timer = setTimeout(() => {\n setExiting((list) => list.filter((item) => item !== previous));\n timersRef.current = timersRef.current.filter((t) => t !== timer);\n }, exitDurationMs);\n timersRef.current.push(timer);\n }, [activeKey, exitDurationMs]);\n\n return exiting;\n}\n\ninterface PresenceItem {\n key: Key;\n node: ReactNode;\n}\n\nfunction toItems(children: ReactNode): PresenceItem[] {\n return Children.toArray(children)\n .filter(isValidElement)\n .map((child) => ({ key: child.key as Key, node: child }));\n}\n\n/**\n * Order-preserving merge of the previously rendered key order with the current\n * live keys (the react-transition-group algorithm). Removed keys stay in their\n * old positions, so an exiting item animates out in place instead of jumping to\n * the end of the list.\n */\nfunction mergeKeys(previous: Key[], next: Key[]): Key[] {\n const nextSet = new Set(next);\n const pendingByNext = new Map<Key, Key[]>();\n let pending: Key[] = [];\n\n for (const key of previous) {\n if (nextSet.has(key)) {\n if (pending.length > 0) {\n pendingByNext.set(key, pending);\n pending = [];\n }\n } else {\n pending.push(key);\n }\n }\n\n const result: Key[] = [];\n for (const key of next) {\n const before = pendingByNext.get(key);\n if (before) {\n result.push(...before);\n }\n result.push(key);\n }\n result.push(...pending);\n return result;\n}\n\ninterface RenderedItem extends PresenceItem {\n exiting: boolean;\n}\n\n/**\n * Diffs a list of keyed children across renders. New keys are returned with\n * `exiting: false` (mounted fresh, so their enter animation plays); removed keys\n * are kept with `exiting: true` for `exitDurationMs` so they can animate out,\n * then dropped. Order is preserved via {@link mergeKeys}.\n */\nfunction usePresenceList(\n children: ReactNode,\n exitDurationMs: number,\n): RenderedItem[] {\n const items = toItems(children);\n const liveKeys = items.map((item) => item.key);\n const signature = liveKeys.join(\"\u0000\");\n\n const nodesRef = useRef<Map<Key, ReactNode>>(new Map());\n for (const item of items) {\n nodesRef.current.set(item.key, item.node);\n }\n const liveKeysRef = useRef(liveKeys);\n liveKeysRef.current = liveKeys;\n\n const [order, setOrder] = useState<Key[]>(liveKeys);\n const orderRef = useRef(order);\n orderRef.current = order;\n const timersRef = useRef<Map<Key, ReturnType<typeof setTimeout>>>(new Map());\n\n useEffect(\n () => () => {\n timersRef.current.forEach(clearTimeout);\n },\n [],\n );\n\n useEffect(() => {\n const live = new Set(liveKeysRef.current);\n const newOrder = mergeKeys(orderRef.current, liveKeysRef.current);\n\n // A key that came back before its timer fired cancels its pending exit.\n for (const key of liveKeysRef.current) {\n const timer = timersRef.current.get(key);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(key);\n }\n }\n // A key that's gone animates out, then is dropped once the timer fires.\n for (const key of newOrder) {\n if (!live.has(key) && !timersRef.current.has(key)) {\n const timer = setTimeout(() => {\n timersRef.current.delete(key);\n nodesRef.current.delete(key);\n setOrder((current) => current.filter((k) => k !== key));\n }, exitDurationMs);\n timersRef.current.set(key, timer);\n }\n }\n setOrder(newOrder);\n }, [signature, exitDurationMs]);\n\n const live = new Set(liveKeys);\n return order.map((key) => ({\n key,\n node: nodesRef.current.get(key),\n exiting: !live.has(key),\n }));\n}\n\nexport interface PresenceListProps {\n /** How long to keep a removed child mounted — match the exit animation. */\n exitDurationMs: number;\n /** Animation class applied to entering children. */\n enterClassName?: string;\n /** Animation class applied to exiting children. */\n exitClassName?: string;\n /** Class applied to every item's wrapper `<View>`. */\n className?: string;\n /**\n * A list of keyed elements — each child must have a stable `key`. Adding a key\n * animates that item in while the others stay put; removing a key animates only\n * that item out.\n */\n children: ReactNode;\n}\n\n/**\n * Keyed-list presence (AnimatePresence-style). Renders a list of keyed children,\n * each wrapped in its own `<View>`, and animates individual add/remove: added\n * keys mount with `enterClassName`, removed keys stay mounted with `exitClassName`\n * for `exitDurationMs` before unmounting. For swapping a single child, use\n * {@link PresenceOne}.\n */\nexport function PresenceList({\n exitDurationMs,\n enterClassName,\n exitClassName,\n className,\n children,\n}: PresenceListProps): ReactNode {\n const items = usePresenceList(children, exitDurationMs);\n\n return (\n <>\n {items.map((item) => (\n <View\n key={item.key}\n className={joinClasses(\n className,\n item.exiting ? exitClassName : enterClassName,\n )}\n >\n {item.node}\n </View>\n ))}\n </>\n );\n}\n\ntype StyledElement = ReactElement<{ className?: string }>;\n\nexport interface PresenceOneProps extends PresenceBaseProps {\n /**\n * A single element that accepts and forwards `className` to its root view.\n * The `className` + enter/exit animation classes are merged onto it directly,\n * so no extra wrapper `<View>` is added to the tree.\n */\n children: StyledElement;\n}\n\n/**\n * Keyed-swap presence that merges the animation classes onto the child element\n * itself via `cloneElement` — no wrapper `<View>`. Requires a single element\n * that forwards `className`; for anything else use {@link PresenceList}.\n */\nexport function PresenceOne({\n activeKey,\n exitDurationMs,\n enterClassName,\n exitClassName,\n className,\n children,\n}: PresenceOneProps): ReactNode {\n const exiting = usePresence(activeKey, exitDurationMs, children);\n\n return (\n <>\n {exiting.map((item) => {\n const node = item.node as StyledElement;\n return cloneElement(node, {\n key: item.key,\n className: joinClasses(\n node.props.className,\n className,\n exitClassName,\n ),\n });\n })}\n {cloneElement(children, {\n key: activeKey,\n className: joinClasses(\n children.props.className,\n className,\n enterClassName,\n ),\n })}\n </>\n );\n}\n","/* Generated by scripts/build-css.ts. DO NOT EDIT. */\n\n/**\n * Duration (in ms) of each generic motion, mirroring the `--animate-*` CSS\n * tokens. Pass the matching value as `exitDurationMs` to {@link PresenceOne} /\n * {@link PresenceList} so the exit timer matches the CSS animation.\n */\nexport const animationDurationsMs = {\n \"slide\": 600,\n \"collapse\": 800\n} as const;\n","import {\n type ReactElement,\n type ReactNode,\n type SVGProps,\n cloneElement,\n} from \"react\";\nimport { useThemeToken } from \"../../core/useThemeToken\";\n\nexport type SVGIconElement = ReactElement<SVGProps<SVGSVGElement>>;\n\nexport interface IconProps {\n icon: SVGIconElement;\n /** Square size in px. Defaults to 20. */\n size?: number;\n /**\n * Text-colour className driving the icon tint, e.g. `text-sharp`,\n * `text-muted`, `text-accent`, `text-on-accent`, `text-disabled-muted`.\n * Defaults to `text-sharp`.\n */\n className?:\n | string // keeping string to allow tailwind-variants usage\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n | \"text-accent\"\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n | \"text-disabled-muted\"\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n | \"text-disabled\"\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n | \"text-muted\"\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n | \"text-on-accent-muted\"\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n | \"text-on-accent\"\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n | \"text-sharp\";\n}\n\nexport function Icon({\n icon,\n size = 20,\n className = \"text-sharp\",\n}: IconProps): ReactNode {\n // RN SVG needs a concrete color, not a className. Resolve the text-* color\n // class to its --color-* token value via the active theme.\n const token = className\n .split(/\\s+/)\n .find((part) => part.startsWith(\"text-\"))\n ?.slice(\"text-\".length);\n const color = useThemeToken(`--color-${token ?? \"sharp\"}`);\n return cloneElement(icon, {\n color,\n width: size,\n height: size,\n });\n}\n","import { forwardRef } from \"react\";\nimport type {\n PressableProps as RNPressableProps,\n View as RNView,\n} from \"react-native\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { AccentScope } from \"../containers/AccentScope\";\nimport { InteractiveBox, interactiveBoxVariants } from \"../containers/Box\";\n\nconst pressableBoxVariants = tv(\n {\n extend: interactiveBoxVariants,\n base: \"overflow-hidden\",\n variants: {\n variant: {\n contained: [\n \"rounded-sm\",\n process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? \"\"\n : \"shadow-s bg-interactive-contained-pressable\",\n \"hover:bg-interactive-contained-hover\",\n \"focus:bg-interactive-contained-focus\",\n \"active:bg-interactive-contained-active\",\n \"disabled:bg-interactive-contained-disabled disabled:shadow-none\",\n \"focus-visible:outline-border-muted\",\n ].join(\" \"),\n outlined: [\n \"border bg-highlight\",\n process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? \"\"\n : \"border-interactive-outlined-pressable\",\n \"hover:border-interactive-outlined-hover\",\n \"focus:border-interactive-outlined-focus\",\n \"active:border-interactive-outlined-active\",\n \"disabled:border-interactive-outlined-disabled\",\n \"focus-visible:outline-interactive-outlined-outline-focus\",\n ].join(\" \"),\n ghost: [\n \"border border-transparent\",\n \"hover:border hover:border-interactive-outlined-hover\",\n \"focus:border focus:border-interactive-outlined-focus\",\n \"active:border active:border-interactive-outlined-active\",\n \"disabled:border-interactive-outlined-disabled\",\n \"focus-visible:outline-interactive-outlined-outline-focus\",\n ].join(\" \"),\n },\n forceStyle: {\n hover: \"\",\n focus: \"\",\n press: \"scale-[0.975]\",\n },\n },\n compoundVariants: process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? [\n /* contained */\n {\n variant: \"contained\",\n forceStyle: undefined,\n ghost: false,\n className: \"shadow-s bg-interactive-contained-pressable\",\n },\n {\n variant: \"contained\",\n forceStyle: \"hover\",\n className: \"shadow-s bg-interactive-contained-hover\",\n },\n {\n variant: \"contained\",\n forceStyle: \"focus\",\n className: \"shadow-s bg-interactive-contained-focus\",\n },\n {\n variant: \"contained\",\n forceStyle: \"press\",\n className: \"shadow-s bg-interactive-contained-active\",\n },\n /* outlined */\n {\n variant: \"outlined\",\n forceStyle: undefined,\n ghost: false,\n className: \"border-interactive-outlined-pressable\",\n },\n {\n variant: \"outlined\",\n forceStyle: \"hover\",\n className: \"border-interactive-outlined-hover\",\n },\n {\n variant: \"outlined\",\n forceStyle: \"focus\",\n className: \"border-interactive-outlined-focus\",\n },\n {\n variant: \"outlined\",\n forceStyle: \"press\",\n className: \"border-interactive-outlined-active\",\n },\n /* ghost */\n {\n variant: \"ghost\",\n forceStyle: undefined,\n className: \"border-transparent\",\n },\n {\n variant: \"ghost\",\n forceStyle: \"hover\",\n className: \"border-interactive-outlined-hover\",\n },\n {\n variant: \"ghost\",\n forceStyle: \"focus\",\n className: \"border-interactive-outlined-focus\",\n },\n {\n variant: \"ghost\",\n forceStyle: \"press\",\n className: \"border-interactive-outlined-active\",\n },\n ]\n : undefined,\n defaultVariants: {\n variant: \"contained\",\n },\n },\n { twMerge: false },\n);\n\ntype PressableBoxVariantProps = VariantProps<typeof pressableBoxVariants>;\n\nexport interface PressableBoxProps\n extends RNPressableProps, PressableBoxVariantProps {\n accent?: Accent;\n className?: string;\n forceStyle?: \"focus\" | \"hover\" | \"press\";\n}\n\n// TODO what is the diff between <Box interactive> and PressableBox ?\nexport const PressableBox = forwardRef<RNView, PressableBoxProps>(\n ({ className, variant, forceStyle, accent, ...props }, ref) => {\n return (\n <AccentScope accent={accent}>\n <InteractiveBox\n ref={ref}\n withFocusVisibleOutline\n role=\"button\"\n className={pressableBoxVariants({\n variant,\n\n className,\n forceStyle,\n })}\n {...props}\n />\n </AccentScope>\n );\n },\n);\n","import type { ReactNode } from \"react\";\nimport { Platform } from \"react-native\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { PressableBox, type PressableBoxProps } from \"../data/PressableBox\";\nimport { Icon, type SVGIconElement } from \"../primitives/Icon\";\nimport { Text } from \"../primitives/Text\";\n\nexport const buttonHeight = {\n sm: 38,\n md: 44,\n} as const;\n\nconst buttonVariants = tv(\n {\n slots: {\n frame: \"flex-row flex-center\",\n text: \"font-body-bold text-center shrink\",\n icon: \"\",\n },\n variants: {\n size: {\n sm: {\n frame: \"rounded-sm px-xs gap-xxs min-h-[38px]\",\n text: \"text-sm py-xxs\",\n },\n md: {\n frame: \"rounded-sm px-m gap-xs min-h-[44px]\",\n text: \"text-base py-xs\",\n },\n },\n variant: {\n contained: { text: \"text-on-accent\" },\n outlined: { text: \"text-sharp\" },\n ghost: { text: \"text-sharp\" },\n },\n disabled: { true: {}, false: {} },\n },\n compoundVariants: [\n {\n variant: \"contained\",\n disabled: false,\n ghost: false,\n class: { icon: \"text-on-accent\" },\n },\n {\n variant: \"contained\",\n disabled: false,\n ghost: true,\n class: {\n text: \"text-sharp hover:text-on-accent\",\n icon: \"text-sharp hover:text-on-accent\",\n },\n },\n { variant: \"outlined\", disabled: false, class: { icon: \"text-sharp\" } },\n {\n variant: \"contained\",\n disabled: true,\n class: { icon: \"text-disabled-sharp\", text: \"text-disabled-sharp\" },\n },\n {\n variant: \"outlined\",\n disabled: true,\n class: { icon: \"text-disabled-muted\", text: \"text-disabled-muted\" },\n },\n ],\n defaultVariants: { size: \"md\", variant: \"contained\" },\n },\n { twMerge: false },\n);\n\ntype ButtonSizeProps = Pick<VariantProps<typeof buttonVariants>, \"size\">;\n\nexport interface ButtonProps\n extends Omit<PressableBoxProps, \"children\">, ButtonSizeProps {\n icon?: SVGIconElement;\n accent?: Accent;\n text: ReactNode;\n}\n\nexport function Button({\n icon,\n text,\n disabled,\n accent = \"brand\",\n variant = \"contained\",\n size = \"md\",\n className,\n ...pressableProps\n}: ButtonProps): ReactNode {\n const styles = buttonVariants({\n size,\n variant,\n disabled: disabled === true,\n });\n return (\n <PressableBox\n accent={accent}\n variant={variant}\n disabled={disabled}\n className={styles.frame({ className })}\n {...pressableProps}\n >\n {icon ? (\n <Icon\n icon={icon}\n className={styles.icon()}\n size={size === \"sm\" ? 16 : 20}\n />\n ) : null}\n <Text aria-disabled={disabled === true} className={styles.text()}>\n {text}\n </Text>\n </PressableBox>\n );\n}\n\nexport interface ExternalLinkButtonProps extends ButtonProps {\n href: string;\n}\n\nexport function ExternalLinkButton({\n href,\n onPress,\n ...buttonProps\n}: ExternalLinkButtonProps): ReactNode {\n return (\n <Button\n {...buttonProps}\n role=\"link\"\n onPress={(event) => {\n onPress?.(event);\n if (event.defaultPrevented) return;\n if (Platform.OS === \"web\") {\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n } else {\n throw new Error(\"todo\");\n // Linking.openURL(href);\n }\n }}\n />\n );\n}\n\nexport interface InternalLinkButtonProps extends ButtonProps {\n href: string;\n}\n\nexport function InternalLinkButton({\n href: _href,\n ...buttonProps\n}: InternalLinkButtonProps): ReactNode {\n return <Button {...buttonProps} role=\"link\" />;\n}\n","import type { ReactNode } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { PressableBox, type PressableBoxProps } from \"../data/PressableBox\";\nimport { Icon, type SVGIconElement } from \"../primitives/Icon\";\nimport { buttonHeight } from \"./Button\";\n\nconst iconButtonVariants = tv(\n {\n slots: {\n frame: \"shrink-0 flex-center rounded-full\",\n icon: \"\",\n },\n variants: {\n variant: {\n contained: {},\n outlined: {},\n ghost: {},\n },\n disabled: {\n true: {},\n false: {},\n },\n },\n compoundVariants: [\n {\n variant: \"contained\",\n disabled: false,\n class: { icon: \"text-on-accent\" },\n },\n {\n variant: \"outlined\",\n disabled: false,\n class: { icon: \"text-sharp\" },\n },\n {\n variant: \"ghost\",\n disabled: false,\n class: { icon: \"text-sharp\" },\n },\n {\n variant: \"contained\",\n disabled: true,\n class: { icon: \"text-disabled-sharp\" },\n },\n {\n variant: \"outlined\",\n disabled: true,\n class: { icon: \"text-disabled-muted\" },\n },\n {\n variant: \"ghost\",\n disabled: true,\n class: { icon: \"text-disabled-muted\" },\n },\n ],\n defaultVariants: { variant: \"contained\" },\n },\n { twMerge: false },\n);\n\nexport interface IconButtonProps extends Omit<PressableBoxProps, \"children\"> {\n icon: SVGIconElement;\n /** Preset size token, or any number for a custom diameter (px). */\n size?: number | \"md\" | \"sm\";\n /** When \"fill\", the icon takes 80% of the button; default uses 50%. */\n iconSize?: \"fill\";\n \"aria-label\": string;\n}\n\nexport function IconButton({\n icon,\n disabled,\n size = \"md\",\n iconSize,\n variant = \"contained\",\n className,\n ...pressableProps\n}: IconButtonProps): ReactNode {\n const diameter = typeof size === \"number\" ? size : buttonHeight[size];\n const styles = iconButtonVariants({ variant, disabled: disabled === true });\n\n return (\n <PressableBox\n variant={variant}\n disabled={disabled}\n className={styles.frame({ className })}\n style={{ width: diameter, height: diameter }}\n {...pressableProps}\n >\n <Icon\n icon={icon}\n size={diameter * (iconSize === \"fill\" ? 0.8 : 0.55)}\n className={styles.icon()}\n />\n </PressableBox>\n );\n}\n","import { forwardRef } from \"react\";\nimport {\n TextInput as RNTextInput,\n type TextInputProps as RNTextInputProps,\n} from \"react-native\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport { useThemeToken } from \"../../core/useThemeToken\";\n\nconst inputVariants = tv(\n {\n base: [\n \"bg-highlight text-base text-sharp\",\n \"border\",\n \"transition-[border-color,background-color,outline-color] duration-200 ease-in\",\n \"outline-interactive-outlined-pressable\", // to have proper outline color transition\n process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? \"\"\n : \"border-interactive-outlined-pressable\",\n \"hover:border-interactive-outlined-hover\",\n \"focus:border-interactive-outlined-focus\",\n \"focus:outline-1 focus:outline-interactive-outlined-focus focus:outline-offset-0\",\n \"active:border-interactive-outlined-active\",\n \"disabled:bg-disabled-interactive-muted disabled:border-interactive-outlined-disabled disabled:text-form-disabled-text disabled:cursor-not-allowed\",\n ].join(\" \"),\n variants: {\n multiline: {\n false: \"rounded-md px-m py-xs\",\n true: \"min-h-[80px] resize-y rounded-xs px-xs py-xs\",\n },\n forceStyle: {\n undefined: process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? \"border-interactive-outlined-pressable\"\n : \"\",\n hover: process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? \"border-interactive-outlined-hover\"\n : \"\",\n focus: process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? \"border-interactive-outlined-focus outline-1 outline-interactive-outlined-focus outline-offset-0\"\n : \"\",\n press: process.env.EXPO_PUBLIC_STORYBOOK_ENABLED\n ? \"border-interactive-outlined-active\"\n : \"\",\n },\n },\n defaultVariants: {\n forceStyle: \"undefined\",\n },\n },\n { twMerge: false },\n);\n\ntype InputVariantProps = VariantProps<typeof inputVariants>;\n\nconst MODE_PROPS = {\n password: {\n secureTextEntry: true,\n autoComplete: \"current-password\",\n },\n number: {\n inputMode: \"numeric\",\n keyboardType: \"numeric\",\n },\n tel: {\n inputMode: \"tel\",\n autoComplete: \"tel\",\n keyboardType: \"phone-pad\",\n },\n email: {\n inputMode: \"email\",\n autoComplete: \"email\",\n keyboardType: \"email-address\",\n },\n url: {\n inputMode: \"url\",\n keyboardType: \"url\",\n },\n search: {\n inputMode: \"search\",\n },\n webSearch: {\n inputMode: \"search\",\n keyboardType: \"web-search\",\n },\n} as const satisfies Record<string, Partial<RNTextInputProps>>;\n\nexport type InputTextMode = keyof typeof MODE_PROPS;\n\nexport interface InputTextProps\n extends Omit<RNTextInputProps, \"editable\">, InputVariantProps {\n className?: string;\n disabled?: boolean;\n mode?: InputTextMode;\n}\n\nexport const InputText = forwardRef<RNTextInput, InputTextProps>(\n ({ className, disabled, mode, multiline, forceStyle, ...props }, ref) => {\n const placeholderColor = useThemeToken(\"--color-form-placeholder\");\n const modeProps = mode ? MODE_PROPS[mode] : undefined;\n return (\n <RNTextInput\n ref={ref}\n editable={!disabled}\n disabled={disabled}\n aria-disabled={disabled === true}\n multiline={multiline === true}\n placeholderTextColor={\n typeof placeholderColor === \"string\" ? placeholderColor : undefined\n }\n className={inputVariants({ multiline, forceStyle, className })}\n {...modeProps}\n {...props}\n />\n );\n },\n);\n","import { forwardRef } from \"react\";\nimport type { TextInput as RNTextInput } from \"react-native\";\nimport { InputText, type InputTextProps } from \"./InputText\";\n\nexport type TextAreaProps = Omit<InputTextProps, \"multiline\">;\n\nexport const TextArea = forwardRef<RNTextInput, TextAreaProps>((props, ref) => {\n return <InputText ref={ref} multiline {...props} />;\n});\n","import { type ReactNode, useCallback, useState } from \"react\";\nimport { Switch as RNSwitch } from \"react-native\";\nimport { useThemeToken } from \"../../core/useThemeToken\";\nimport { AccentScope, type AccentScopeProps } from \"../containers/AccentScope\";\n\nexport interface SwitchProps {\n accent?: AccentScopeProps[\"accent\"];\n checked?: boolean;\n disabled?: boolean;\n onValueChange?: (value: boolean) => void;\n \"aria-labelledby\"?: string;\n testID?: string;\n}\n\nfunction useControllableChecked(\n controlled: boolean | undefined,\n onValueChange?: (value: boolean) => void,\n): readonly [boolean, (next: boolean) => void] {\n const [internal, setInternal] = useState(controlled ?? false);\n const value = controlled ?? internal;\n const onChange = useCallback(\n (next: boolean) => {\n if (controlled === undefined) {\n setInternal(next);\n }\n if (next !== value) {\n onValueChange?.(next);\n }\n },\n [controlled, onValueChange, value],\n );\n return [value, onChange] as const;\n}\n\nfunction SwitchInner({\n checked,\n disabled,\n onValueChange,\n ...props\n}: SwitchProps): ReactNode {\n const [value, setValue] = useControllableChecked(checked, onValueChange);\n const [trackBg, thumb, disabledTrackBg, disabledThumb] = useThemeToken([\n \"--color-lowered\",\n \"--color-highlight\",\n \"--color-disabled-interactive-muted\",\n \"--color-disabled-muted\",\n ]);\n const track = disabled ? disabledTrackBg : trackBg;\n const thumbColor = disabled ? disabledThumb : thumb;\n return (\n <RNSwitch\n value={value}\n disabled={disabled}\n ios_backgroundColor={track}\n trackColor={{ false: track, true: track }}\n thumbColor={thumbColor}\n onValueChange={setValue}\n {...props}\n />\n );\n}\n\nexport function Switch({ accent, ...rest }: SwitchProps): ReactNode {\n return (\n <AccentScope accent={accent}>\n <SwitchInner {...rest} />\n </AccentScope>\n );\n}\n","import { CaretDownRegularIcon } from \"alouette-icons/phosphor-icons/CaretDownRegularIcon\";\nimport { type ReactNode, useCallback, useState } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { Icon } from \"../primitives/Icon\";\nimport { Text } from \"../primitives/Text\";\n\nexport interface SelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps {\n options: SelectOption[];\n /** Controlled selected value. */\n value?: string;\n /** Initial value for uncontrolled usage. */\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n placeholder?: string;\n disabled?: boolean;\n accent?: Accent;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n testID?: string;\n}\n\nexport function useControllableValue(\n controlled: string | undefined,\n defaultValue: string | undefined,\n onValueChange?: (value: string) => void,\n): readonly [string | undefined, (next: string) => void] {\n const [internal, setInternal] = useState(defaultValue);\n const value = controlled ?? internal;\n const setValue = useCallback(\n (next: string) => {\n if (controlled === undefined) {\n setInternal(next);\n }\n if (next !== value) {\n onValueChange?.(next);\n }\n },\n [controlled, onValueChange, value],\n );\n return [value, setValue] as const;\n}\n\n// Shared outlined-input look for the trigger, matching InputText. Focus styling\n// and the background are platform-specific (the background lives in each\n// platform's enabled/disabled variant so the disabled bg never competes with\n// bg-highlight at equal specificity), so they are applied by each platform file.\nexport const selectTriggerBaseClassName = [\n \"flex-row items-center justify-between gap-xs\",\n \"rounded-md border px-m py-xs min-h-[44px]\",\n \"transition-[border-color,outline-color,background-color] duration-200 ease-in\",\n].join(\" \");\n\nconst triggerLabelVariants = tv({\n base: \"flex-1 text-base\",\n variants: {\n // Mirrors InputText: sharp value, form-placeholder, form-disabled-text.\n state: {\n value: \"text-sharp\",\n placeholder: \"text-form-placeholder\",\n disabled: \"text-form-disabled-text\",\n },\n },\n defaultVariants: { state: \"value\" },\n});\n\nexport interface SelectTriggerContentProps {\n label?: string;\n placeholder?: string;\n disabled?: boolean;\n}\n\nexport function SelectTriggerContent({\n label,\n placeholder,\n disabled,\n}: SelectTriggerContentProps): ReactNode {\n const state = ((): \"disabled\" | \"placeholder\" | \"value\" => {\n // Placeholder keeps its own color even when disabled (mirrors InputText,\n // whose placeholderTextColor is independent of the disabled text color);\n // only an actual value switches to the darker disabled text color.\n if (label === undefined) return \"placeholder\";\n if (disabled) return \"disabled\";\n return \"value\";\n })();\n return (\n <>\n <Text numberOfLines={1} className={triggerLabelVariants({ state })}>\n {label ?? placeholder ?? \"\"}\n </Text>\n <Icon\n icon={<CaretDownRegularIcon />}\n size={18}\n className={disabled ? \"text-form-disabled-text\" : \"text-muted\"}\n />\n </>\n );\n}\n","import { CheckRegularIcon } from \"alouette-icons/phosphor-icons/CheckRegularIcon\";\nimport { type ReactNode, useState } from \"react\";\nimport { Modal, Pressable, useWindowDimensions } from \"react-native\";\nimport { tv } from \"tailwind-variants\";\nimport { AccentScope } from \"../containers/AccentScope\";\nimport { InteractiveBox } from \"../containers/Box\";\nimport { Surface } from \"../containers/Surface\";\nimport { Icon } from \"../primitives/Icon\";\nimport { ScrollView } from \"../primitives/ScrollView\";\nimport { Text } from \"../primitives/Text\";\nimport {\n type SelectOption,\n type SelectProps,\n SelectTriggerContent,\n selectTriggerBaseClassName,\n useControllableValue,\n} from \"./Select.shared\";\n\nconst triggerVariants = tv(\n {\n base: selectTriggerBaseClassName,\n variants: {\n // bg lives in each branch (not the shared base) so the disabled bg never\n // competes with bg-highlight at equal specificity.\n disabled: {\n true: \"bg-disabled-interactive-muted border-interactive-outlined-disabled\",\n false: [\n \"bg-highlight\",\n \"border-interactive-outlined-pressable\",\n \"hover:border-interactive-outlined-hover\",\n \"focus:border-interactive-outlined-focus\",\n \"active:border-interactive-outlined-active\",\n ].join(\" \"),\n },\n },\n defaultVariants: { disabled: false },\n },\n { twMerge: false },\n);\n\nconst optionVariants = tv(\n {\n base: [\n \"flex-row items-center justify-between gap-xxs rounded-xs px-m py-m my-xxs\",\n \"hover:bg-interactive-contained-hover focus:bg-interactive-contained-focus active:bg-interactive-contained-active\",\n ].join(\" \"),\n variants: {\n selected: {\n true: \"bg-interactive-contained-active\",\n false: \"bg-interactive-contained-pressable\",\n },\n disabled: {\n true: \"opacity-50\",\n false: \"\",\n },\n },\n defaultVariants: { selected: false, disabled: false },\n },\n { twMerge: false },\n);\n\ninterface SelectOptionRowProps {\n option: SelectOption;\n selected: boolean;\n onSelect: (value: string) => void;\n}\n\nfunction SelectOptionRow({\n option,\n selected,\n onSelect,\n}: SelectOptionRowProps): ReactNode {\n return (\n <Pressable\n role=\"option\"\n aria-selected={selected}\n aria-disabled={option.disabled === true}\n disabled={option.disabled}\n className={optionVariants({ selected, disabled: option.disabled })}\n onPress={() => {\n onSelect(option.value);\n }}\n >\n <Text numberOfLines={1} className=\"flex-1 text-base text-on-accent\">\n {option.label}\n </Text>\n {selected ? (\n <Icon\n icon={<CheckRegularIcon />}\n size={18}\n className=\"text-on-accent\"\n />\n ) : null}\n </Pressable>\n );\n}\n\nfunction SelectInner({\n options,\n value,\n defaultValue,\n onValueChange,\n placeholder,\n disabled,\n testID,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n}: Omit<SelectProps, \"accent\">): ReactNode {\n const [current, setValue] = useControllableValue(\n value,\n defaultValue,\n onValueChange,\n );\n const [open, setOpen] = useState(false);\n const { height: windowHeight } = useWindowDimensions();\n const selected = options.find((option) => option.value === current);\n\n const onSelect = (next: string) => {\n setValue(next);\n setOpen(false);\n };\n\n return (\n <>\n <InteractiveBox\n withFocusVisibleOutline\n role=\"combobox\"\n aria-expanded={open}\n aria-disabled={disabled === true}\n disabled={disabled}\n testID={testID}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n className={triggerVariants({ disabled })}\n onPress={() => {\n setOpen(true);\n }}\n >\n <SelectTriggerContent\n label={selected?.label}\n placeholder={placeholder}\n disabled={disabled}\n />\n </InteractiveBox>\n <Modal\n transparent\n visible={open}\n animationType=\"fade\"\n onRequestClose={() => {\n setOpen(false);\n }}\n >\n <Pressable\n className=\"flex-1 justify-center bg-translucent px-xl\"\n onPress={() => {\n setOpen(false);\n }}\n >\n {/* Captures presses so tapping the list does not dismiss the modal. */}\n <Pressable className=\"w-full\" aria-label={ariaLabel}>\n <Surface variant=\"highlight\" shadow=\"l\" size=\"sm\" className=\"py-xs\">\n {/* Pixel maxHeight (not a %) so the ScrollView sizes to its\n content and only scrolls once it exceeds ~70% of the screen. */}\n <ScrollView\n style={{ maxHeight: windowHeight * 0.7 }}\n showsVerticalScrollIndicator={false}\n >\n {options.map((option) => (\n <SelectOptionRow\n key={option.value}\n option={option}\n selected={option.value === current}\n onSelect={onSelect}\n />\n ))}\n </ScrollView>\n </Surface>\n </Pressable>\n </Pressable>\n </Modal>\n </>\n );\n}\n\nexport function Select({ accent, ...rest }: SelectProps): ReactNode {\n return (\n <AccentScope accent={accent}>\n <SelectInner {...rest} />\n </AccentScope>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { AccentScope } from \"../containers/AccentScope\";\nimport { Box } from \"../containers/Box\";\nimport { Icon, type SVGIconElement } from \"../primitives/Icon\";\nimport { Text } from \"../primitives/Text\";\n\nconst badgeVariants = tv(\n {\n slots: {\n frame: \"flex-row items-center self-start rounded-full\",\n text: \"font-body-bold\",\n icon: \"\",\n },\n variants: {\n size: {\n sm: { frame: \"gap-xxs px-xs py-xxs\", text: \"text-xs\", icon: \"\" },\n md: { frame: \"gap-xs px-sm py-xxs\", text: \"text-sm\", icon: \"\" },\n },\n variant: {\n solid: {\n frame: \"bg-highlight-accent\",\n text: \"text-sharp\",\n icon: \"text-sharp\",\n },\n \"solid.enabled\": {\n frame: \"bg-enabled\",\n text: \"text-sharp\",\n icon: \"text-sharp\",\n },\n outlined: {\n frame: \"border border-accent\",\n text: \"text-accent\",\n icon: \"text-accent\",\n },\n },\n },\n defaultVariants: { size: \"md\", variant: \"solid\" },\n },\n { twMerge: false },\n);\n\ntype BadgeVariantProps = VariantProps<typeof badgeVariants>;\ntype BadgeSize = NonNullable<BadgeVariantProps[\"size\"]>;\n\nconst ICON_SIZE: Record<BadgeSize, number> = { sm: 12, md: 16 };\n\nexport interface BadgeProps {\n accent?: Accent;\n size?: BadgeSize;\n variant?: NonNullable<BadgeVariantProps[\"variant\"]>;\n icon?: SVGIconElement;\n children?: ReactNode;\n}\n\nexport function Badge({\n accent = \"brand\",\n size = \"md\",\n variant = \"solid\",\n icon,\n children,\n}: BadgeProps): ReactNode {\n const styles = badgeVariants({ size, variant });\n return (\n <AccentScope accent={accent}>\n <Box className={styles.frame()}>\n {icon ? (\n <Icon icon={icon} size={ICON_SIZE[size]} className={styles.icon()} />\n ) : null}\n <Text className={styles.text()}>{children}</Text>\n </Box>\n </AccentScope>\n );\n}\n","import { CheckRegularIcon } from \"alouette-icons/phosphor-icons/CheckRegularIcon\";\nimport { InfoRegularIcon } from \"alouette-icons/phosphor-icons/InfoRegularIcon\";\nimport { WarningRegularIcon } from \"alouette-icons/phosphor-icons/WarningRegularIcon\";\nimport { XRegularIcon } from \"alouette-icons/phosphor-icons/XRegularIcon\";\nimport type { ReactNode } from \"react\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport type { Except } from \"type-fest\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { IconButton } from \"../actions/IconButton\";\nimport { AccentScope } from \"../containers/AccentScope\";\nimport { Box } from \"../containers/Box\";\nimport { Icon, type SVGIconElement } from \"../primitives/Icon\";\nimport { Text } from \"../primitives/Text\";\n\nconst messageFrameVariants = tv(\n {\n base: \"flex-row items-center bg-highlight-accent overflow-hidden\",\n variants: {\n size: {\n sm: \"gap-xs p-sm rounded-xs\",\n md: \"gap-m p-m rounded-sm\",\n lg: \"gap-l p-l rounded-md\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n { twMerge: false },\n);\n\ntype MessageVariantProps = VariantProps<typeof messageFrameVariants>;\ntype MessageSize = NonNullable<MessageVariantProps[\"size\"]>;\n\nconst ICON_SIZE: Record<MessageSize, number> = { sm: 20, md: 24, lg: 28 };\nconst DISMISS_BUTTON_SIZE: Record<MessageSize, number> = {\n sm: 24,\n md: 40,\n lg: 40,\n};\n\ninterface MessageBaseProps {\n accent: Accent;\n size?: MessageSize;\n icon: SVGIconElement;\n children?: ReactNode;\n}\ninterface MessagePropsWithDismiss extends MessageBaseProps {\n onDismiss: () => void;\n dismissIconAriaLabel: string;\n}\ninterface MessagePropsWithoutDismiss extends MessageBaseProps {\n onDismiss?: undefined;\n dismissIconAriaLabel?: undefined;\n}\n\nexport type MessageProps = MessagePropsWithDismiss | MessagePropsWithoutDismiss;\n\nexport function Message({\n icon,\n size = \"md\",\n accent,\n children,\n onDismiss,\n dismissIconAriaLabel,\n}: MessageProps): ReactNode {\n const dismissDiameter = DISMISS_BUTTON_SIZE[size];\n return (\n <AccentScope accent={accent}>\n <Box className={`shadow-m ${messageFrameVariants({ size })}`}>\n <Icon icon={icon} size={ICON_SIZE[size]} className=\"text-accent\" />\n <Text className=\"text-accent grow\">{children}</Text>\n {onDismiss ? (\n <Box\n style={{ width: dismissDiameter, height: dismissDiameter }}\n className=\"flex-center\"\n >\n <IconButton\n icon={<XRegularIcon />}\n iconSize={size === \"sm\" ? \"fill\" : undefined}\n size={dismissDiameter}\n variant=\"ghost\"\n aria-label={dismissIconAriaLabel}\n onPress={onDismiss}\n />\n </Box>\n ) : null}\n </Box>\n </AccentScope>\n );\n}\n\ntype AccentMessageProps = Except<MessageProps, \"accent\" | \"icon\">;\n\nexport function InfoMessage(props: AccentMessageProps): ReactNode {\n return <Message {...props} accent=\"info\" icon={<InfoRegularIcon />} />;\n}\n\nexport function ConfirmationMessage(props: AccentMessageProps): ReactNode {\n return <Message {...props} accent=\"success\" icon={<CheckRegularIcon />} />;\n}\n\nexport function WarningMessage(props: AccentMessageProps): ReactNode {\n return <Message {...props} accent=\"warning\" icon={<WarningRegularIcon />} />;\n}\n","import { CaretRightRegularIcon } from \"alouette-icons/phosphor-icons/CaretRightRegularIcon\";\nimport type { ReactNode } from \"react\";\nimport { View } from \"react-native\";\nimport { Icon } from \"../primitives/Icon\";\nimport { PressableBox, type PressableBoxProps } from \"./PressableBox\";\n\nexport interface PressableListItemProps {\n variant?: PressableBoxProps[\"variant\"];\n accent?: PressableBoxProps[\"accent\"];\n role?: PressableBoxProps[\"role\"];\n children: ReactNode;\n onPress: () => void;\n}\n\nexport function PressableListItem({\n variant = \"contained\",\n role = \"button\",\n accent,\n children,\n onPress,\n}: PressableListItemProps): ReactNode {\n return (\n <PressableBox\n variant={variant}\n role={role}\n accent={accent}\n className=\"flex-row items-center justify-between mx-xs my-xxs px-m py-m\"\n onPress={onPress}\n >\n <View className=\"flex-1\">{children}</View>\n <View className=\"justify-center\">\n <Icon\n className={\n variant === \"contained\" ? \"text-on-accent-muted\" : \"text-muted\"\n }\n icon={<CaretRightRegularIcon />}\n size={18}\n />\n </View>\n </PressableBox>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { View } from \"react-native\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { AccentScope } from \"../containers/AccentScope\";\n\nexport interface GradientBackgroundProps {\n children?: ReactNode;\n accent?: Accent;\n}\n\nexport function GradientBackground({\n accent,\n children,\n}: GradientBackgroundProps): ReactNode {\n return (\n <AccentScope accent={accent}>\n <View className=\"absolute inset-0 bg-linear-to-t from-screen-gradient-end from-5% via-screen-gradient-middle via-80% to-screen-gradient-start to-98%\">\n {children}\n </View>\n </AccentScope>\n );\n}\n","import { type ReactNode, forwardRef } from \"react\";\nimport {\n ScrollView as RNScrollView,\n type ScrollViewProps as RNScrollViewProps,\n View,\n} from \"react-native\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { useThemeToken } from \"../../core/useThemeToken\";\nimport { AccentScope } from \"../containers/AccentScope\";\nimport { GradientBackground } from \"./GradientBackground\";\n\ninterface GradientScrollViewInnerProps extends RNScrollViewProps {\n children?: ReactNode;\n}\n\nconst GradientScrollViewInner = forwardRef<\n RNScrollView,\n GradientScrollViewInnerProps\n>(({ children, ...scrollViewProps }, ref) => {\n const [gradientStart, gradientEnd] = useThemeToken([\n \"--color-screen-gradient-start\",\n \"--color-screen-gradient-end\",\n ]);\n return (\n <RNScrollView ref={ref} {...scrollViewProps}>\n <View\n className=\"absolute left-0 right-0\"\n style={{\n top: -600,\n height: 600,\n backgroundColor: gradientStart,\n }}\n />\n <View\n className=\"absolute left-0 right-0\"\n style={{\n bottom: -600,\n height: 600,\n backgroundColor: gradientEnd,\n }}\n />\n <GradientBackground />\n {children}\n </RNScrollView>\n );\n});\n\nexport interface GradientScrollViewProps extends RNScrollViewProps {\n children?: ReactNode;\n accent: Accent;\n}\n\nexport const GradientScrollView = forwardRef<\n RNScrollView,\n GradientScrollViewProps\n>(({ accent, children, ...scrollViewProps }, ref) => {\n return (\n <AccentScope accent={accent}>\n <GradientScrollViewInner ref={ref} {...scrollViewProps}>\n {children}\n </GradientScrollViewInner>\n </AccentScope>\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 { useWindowDimensions } from \"react-native\";\nimport {\n BreakpointNameEnum,\n type BreakpointNames,\n Breakpoints,\n} from \"../config/Breakpoints\";\n\nexport function useCurrentBreakpointName(): BreakpointNameEnum {\n const { width } = useWindowDimensions();\n if (width >= Breakpoints.WIDE) return BreakpointNameEnum.WIDE;\n if (width >= Breakpoints.LARGE) return BreakpointNameEnum.LARGE;\n if (width >= Breakpoints.MEDIUM) return BreakpointNameEnum.MEDIUM;\n if (width >= Breakpoints.SMALL) return BreakpointNameEnum.SMALL;\n return BreakpointNameEnum.BASE;\n}\n\nexport function useCurrentBreakpointNameFiltered<\n Names extends BreakpointNames[],\n>(names: Names): Names[number] {\n const current = useCurrentBreakpointName();\n // Walk from the largest matching breakpoint down to BASE; pick the first\n // one the consumer asked for.\n const ordered = [\n BreakpointNameEnum.WIDE,\n BreakpointNameEnum.LARGE,\n BreakpointNameEnum.MEDIUM,\n BreakpointNameEnum.SMALL,\n BreakpointNameEnum.BASE,\n ] as const;\n const startIndex = ordered.indexOf(current);\n for (let i = startIndex; i < ordered.length; i++) {\n const candidate = ordered[i]!;\n if (names.includes(candidate)) return candidate;\n }\n return BreakpointNameEnum.BASE;\n}\n","import type { ReactNode } from \"react\";\nimport { View } from \"react-native\";\nimport type { SetRequired } from \"type-fest\";\nimport type { BreakpointNames } from \"../config/Breakpoints\";\nimport { useCurrentBreakpointNameFiltered } from \"./useCurrentBreakpointName\";\n\ntype SwitchBreakpointsProps = SetRequired<\n Partial<Record<BreakpointNames, ReactNode>>,\n \"base\"\n> & { children?: never };\n\n// Static lookup table so the Tailwind/NativeWind scanner sees every classname.\n// Keys are `\"<currentBreakpoint>:<nextDefinedBreakpointOrEnd>\"`. The value\n// is the className that makes the slot visible from `current` (inclusive)\n// up to `next` (exclusive).\n//\n// Tailwind v4 breakpoint mapping — see global.css:\n// sm = 480px (alouette SMALL)\n// md = 768px (alouette MEDIUM)\n// lg = 1024px (alouette LARGE)\n// xl = 1280px (alouette WIDE)\nconst VISIBILITY_CLASS: Record<string, string> = {\n \"base:end\": \"flex\",\n \"base:small\": \"flex sm:hidden\",\n \"base:medium\": \"flex md:hidden\",\n \"base:large\": \"flex lg:hidden\",\n \"base:wide\": \"flex xl:hidden\",\n \"small:end\": \"hidden sm:flex\",\n \"small:medium\": \"hidden sm:flex md:hidden\",\n \"small:large\": \"hidden sm:flex lg:hidden\",\n \"small:wide\": \"hidden sm:flex xl:hidden\",\n \"medium:end\": \"hidden md:flex\",\n \"medium:large\": \"hidden md:flex lg:hidden\",\n \"medium:wide\": \"hidden md:flex xl:hidden\",\n \"large:end\": \"hidden lg:flex\",\n \"large:wide\": \"hidden lg:flex xl:hidden\",\n \"wide:end\": \"hidden xl:flex\",\n};\n\n/**\n * Display based on current breakpoint via responsive utility classes.\n *\n * On web this is SSR-friendly (CSS handles the switching). On native it\n * still relies on NativeWind's runtime media-query evaluation.\n */\nexport function SwitchBreakpointsUsingDisplayNone({\n ...breakpoints\n}: SwitchBreakpointsProps): ReactNode {\n const entries = Object.entries(breakpoints) as [BreakpointNames, ReactNode][];\n\n return entries.map(([name, node], index) => {\n const next = entries[index + 1]?.[0] ?? \"end\";\n const className = VISIBILITY_CLASS[`${name}:${next}`] ?? \"flex\";\n return (\n <View key={name} className={className}>\n {node}\n </View>\n );\n });\n}\n\n/**\n * Display based on current breakpoint via conditional rendering. Only the\n * matching slot is in the tree — heavier components stay unmounted.\n */\nexport function SwitchBreakpointsUsingNull({\n children,\n ...breakpoints\n}: SwitchBreakpointsProps): ReactNode {\n const currentBreakpointName = useCurrentBreakpointNameFiltered(\n Object.keys(breakpoints) as (keyof typeof breakpoints)[],\n );\n\n return breakpoints[currentBreakpointName] ?? null;\n}\n","import * as WebBrowser from \"expo-web-browser\";\nimport { WebBrowserPresentationStyle } from \"expo-web-browser\";\nimport type { ComponentProps, FunctionComponent, ReactNode } from \"react\";\nimport { Linking } from \"react-native\";\nimport type { GestureResponderEvent } from \"react-native\";\nimport { useThemeToken } from \"../core/useThemeToken\";\n\nexport interface ExternalLinkRequiredComponentProps {\n onPress?: (event: GestureResponderEvent) => Promise<void> | void;\n}\n\nexport interface ExternalOpenLinkBehavior {\n native: \"linking\" | \"webBrowser\";\n web: \"targetBlank\" | \"targetSelf\";\n}\nconst useOpenExternalLink = () => {\n const [textSharp, bgSurface] = useThemeToken([\n \"--color-sharp\",\n \"--color-surface\",\n ]);\n return async (href: string, openLinkBehavior: ExternalOpenLinkBehavior) => {\n switch (openLinkBehavior.native) {\n case \"webBrowser\": {\n return WebBrowser.openBrowserAsync(href, {\n controlsColor: textSharp,\n dismissButtonStyle: \"close\",\n presentationStyle: WebBrowserPresentationStyle.PAGE_SHEET,\n toolbarColor: bgSurface,\n secondaryToolbarColor: bgSurface,\n readerMode: false,\n enableBarCollapsing: false,\n showTitle: true,\n enableDefaultShareMenuItem: true,\n });\n }\n case \"linking\": {\n return Linking.openURL(href);\n }\n default: {\n throw new Error(\n `Unsupported openLinkBehavior.native: ${openLinkBehavior.native as string}`,\n );\n }\n }\n };\n};\n\nexport interface ExternalLinkProps<C extends FunctionComponent<any>> {\n as: C;\n href: string;\n onPress?: (event: GestureResponderEvent) => void;\n openLinkBehavior: ExternalOpenLinkBehavior;\n}\n\ntype ExternalLinkSpreadProps<C extends FunctionComponent<any>> = Omit<\n ComponentProps<C>,\n keyof ExternalLinkProps<C>\n>;\n\nexport function ExternalLink<C extends FunctionComponent<any>>({\n as: C,\n href,\n openLinkBehavior,\n onPress,\n ...props\n}: ExternalLinkProps<C> & ExternalLinkSpreadProps<C>): ReactNode {\n const openExternalLink = useOpenExternalLink();\n const handlePress: ExternalLinkRequiredComponentProps[\"onPress\"] = (e) => {\n if (onPress) {\n onPress(e);\n if (e?.defaultPrevented) return;\n }\n\n if (!href) return;\n\n return openExternalLink(href, openLinkBehavior);\n };\n\n return <C {...(props as any)} onPress={handlePress} />;\n}\n"],"names":["RNView","RNText","styled","RNScrollView","RNFlatList","RNSectionList","twMerge","Fragment","live","RNTextInput","RNSwitch","ICON_SIZE","View","BreakpointNameEnum"],"mappings":"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"}