alouette 20.2.0 → 20.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/inputs/Select.shared.tsx","../src/ui/inputs/Select.tsx","../src/ui/feedback/Badge.tsx","../src/ui/feedback/ConnectionState.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 type StyleProp,\n type ViewStyle,\n} from \"react-native\";\n\nexport type ScrollViewProps = RNScrollViewProps;\n\ninterface StyledScrollViewProps {\n style?: StyleProp<ViewStyle>;\n contentContainerStyle?: StyleProp<ViewStyle>;\n}\n\nexport const ScrollView = styled(\n RNScrollView as unknown as ComponentType<StyledScrollViewProps>,\n {\n className: \"style\",\n contentContainerClassName: \"contentContainerStyle\",\n },\n) as ComponentType<ScrollViewProps>;\n","import { styled } from \"nativewind\";\nimport type { ComponentType, ReactNode } from \"react\";\nimport {\n FlatList as RNFlatList,\n type FlatListProps as RNFlatListProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\n\nexport type FlatListProps<ItemT> = RNFlatListProps<ItemT>;\n\ninterface StyledFlatListProps {\n style?: StyleProp<ViewStyle>;\n contentContainerStyle?: StyleProp<ViewStyle>;\n columnWrapperStyle?: StyleProp<ViewStyle>;\n}\n\nexport const FlatList = styled(\n RNFlatList as unknown as ComponentType<StyledFlatListProps>,\n {\n className: \"style\",\n contentContainerClassName: \"contentContainerStyle\",\n columnWrapperClassName: \"columnWrapperStyle\",\n },\n) as <ItemT>(props: FlatListProps<ItemT>) => ReactNode;\n","import { styled } from \"nativewind\";\nimport type { ComponentType, ReactNode } from \"react\";\nimport {\n SectionList as RNSectionList,\n type SectionListProps as RNSectionListProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\n\ntype DefaultSectionT = Record<string, unknown>;\n\nexport type SectionListProps<\n ItemT,\n SectionT = DefaultSectionT,\n> = RNSectionListProps<ItemT, SectionT>;\n\ninterface StyledSectionListProps {\n style?: StyleProp<ViewStyle>;\n contentContainerStyle?: StyleProp<ViewStyle>;\n}\n\nexport const SectionList = styled(\n RNSectionList as unknown as ComponentType<StyledSectionListProps>,\n {\n className: \"style\",\n contentContainerClassName: \"contentContainerStyle\",\n },\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 xs: \"p-sm rounded-xs\",\n sm: \"p-m rounded-sm\",\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 type { ReactNode } from \"react\";\nimport { useEffect, useState } from \"react\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { AccentScope } from \"../containers/AccentScope\";\nimport { Text } from \"../primitives/Text\";\nimport { View } from \"../primitives/View\";\n\nexport type ConnectionStateStatus = \"connected\" | \"connecting\" | \"disconnected\";\n\n// How long the green \"connected\" pill stays fully visible before sliding out.\nconst connectedHoldMs = 1200;\n\nexport interface ConnectionStateProps {\n /** Current connection status, or `null` when unknown (renders nothing). */\n state: ConnectionStateStatus | null;\n /** Force the banner off-screen regardless of `state`. */\n forceHidden?: boolean;\n /** Keep the banner on-screen even when `connected` (for demos/showcases). */\n forceVisible?: boolean;\n /** Label shown in the pill (e.g. \"Reconnecting…\"). */\n children: NonNullable<ReactNode>;\n}\n\n/**\n * Thin status banner pinned to the top of the screen. It stays hidden while\n * connected and slides down to surface a red pill when connecting or\n * disconnected. On reconnection it turns green and holds for `connectedHoldMs`\n * so the confirmation is legible, then slides back out.\n */\nexport function ConnectionState({\n state,\n forceHidden,\n forceVisible,\n children,\n}: ConnectionStateProps): ReactNode {\n const connected = state === \"connected\";\n\n // While `connected`, keep the pill visible for a pause, then slide it out.\n const [hideAfterHold, setHideAfterHold] = useState(false);\n useEffect(() => {\n if (!connected || forceVisible) {\n setHideAfterHold(false);\n return undefined;\n }\n const timer = setTimeout(() => {\n setHideAfterHold(true);\n }, connectedHoldMs);\n return () => {\n clearTimeout(timer);\n };\n }, [connected, forceVisible]);\n\n const hidden =\n forceHidden || (!forceVisible && (!state || (connected && hideAfterHold)));\n const accent: Accent = connected ? \"success\" : \"danger\";\n\n return (\n <AccentScope accent={accent}>\n <View\n className={`absolute inset-x-0 top-0 z-9 h-0.5 bg-interactive-contained-pressable shadow-m transition-transform duration-700 ease-in-out ${hidden ? \"-translate-y-6\" : \"translate-y-0\"}`}\n >\n {state ? (\n <Text className=\"absolute left-1/2 top-0.5 h-5.5 w-50 -translate-x-1/2 rounded-b-sm bg-interactive-contained-pressable text-center leading-5.5 text-on-accent transition-colors duration-200\">\n {children}\n </Text>\n ) : null}\n </View>\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/data/PressableBox.tsx","../src/ui/primitives/Icon.tsx","../src/ui/actions/Button.tsx","../src/ui/actions/IconButton.tsx","../src/ui/containers/Modal.tsx","../src/ui/containers/AlertDialog.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/ConnectionState.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 type StyleProp,\n type ViewStyle,\n} from \"react-native\";\n\nexport type ScrollViewProps = RNScrollViewProps;\n\ninterface StyledScrollViewProps {\n style?: StyleProp<ViewStyle>;\n contentContainerStyle?: StyleProp<ViewStyle>;\n}\n\nexport const ScrollView = styled(\n RNScrollView as unknown as ComponentType<StyledScrollViewProps>,\n {\n className: \"style\",\n contentContainerClassName: \"contentContainerStyle\",\n },\n) as ComponentType<ScrollViewProps>;\n","import { styled } from \"nativewind\";\nimport type { ComponentType, ReactNode } from \"react\";\nimport {\n FlatList as RNFlatList,\n type FlatListProps as RNFlatListProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\n\nexport type FlatListProps<ItemT> = RNFlatListProps<ItemT>;\n\ninterface StyledFlatListProps {\n style?: StyleProp<ViewStyle>;\n contentContainerStyle?: StyleProp<ViewStyle>;\n columnWrapperStyle?: StyleProp<ViewStyle>;\n}\n\nexport const FlatList = styled(\n RNFlatList as unknown as ComponentType<StyledFlatListProps>,\n {\n className: \"style\",\n contentContainerClassName: \"contentContainerStyle\",\n columnWrapperClassName: \"columnWrapperStyle\",\n },\n) as <ItemT>(props: FlatListProps<ItemT>) => ReactNode;\n","import { styled } from \"nativewind\";\nimport type { ComponentType, ReactNode } from \"react\";\nimport {\n SectionList as RNSectionList,\n type SectionListProps as RNSectionListProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\n\ntype DefaultSectionT = Record<string, unknown>;\n\nexport type SectionListProps<\n ItemT,\n SectionT = DefaultSectionT,\n> = RNSectionListProps<ItemT, SectionT>;\n\ninterface StyledSectionListProps {\n style?: StyleProp<ViewStyle>;\n contentContainerStyle?: StyleProp<ViewStyle>;\n}\n\nexport const SectionList = styled(\n RNSectionList as unknown as ComponentType<StyledSectionListProps>,\n {\n className: \"style\",\n contentContainerClassName: \"contentContainerStyle\",\n },\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 xs: \"p-sm rounded-xs\",\n sm: \"p-m rounded-sm\",\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 { 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 {\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 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 { XRegularIcon } from \"alouette-icons/phosphor-icons/XRegularIcon\";\nimport { type ReactNode, useId } from \"react\";\nimport { Pressable, Modal as RNModal, useWindowDimensions } from \"react-native\";\nimport { type VariantProps, tv } from \"tailwind-variants\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { IconButton } from \"../actions/IconButton\";\nimport { Icon, type SVGIconElement } from \"../primitives/Icon\";\nimport { ScrollView } from \"../primitives/ScrollView\";\nimport { Text } from \"../primitives/Text\";\nimport { View } from \"../primitives/View\";\nimport { HStack, VStack } from \"../stacks/stacks\";\nimport { AccentScope } from \"./AccentScope\";\nimport { Surface } from \"./Surface\";\n\nconst panelVariants = tv(\n {\n // w-full so the panel shrinks on small screens (the backdrop padding keeps a\n // margin); max-w caps it on wide viewports.\n base: \"w-full\",\n variants: {\n size: {\n sm: \"max-w-[360px]\",\n md: \"max-w-[520px]\",\n lg: \"max-w-[720px]\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n { twMerge: false },\n);\n\ntype PanelVariantProps = VariantProps<typeof panelVariants>;\n\n// The close button is absolutely positioned at a fixed corner inset, so its\n// height no longer dictates the header row height and it hugs the corner\n// regardless of the Surface's size-scaled padding. The title reserves right\n// padding so its text can't run under the button — larger sizes need less\n// because the Surface padding already pushes the text inward.\nconst titleReserveVariants = tv(\n {\n variants: {\n size: {\n sm: \"pr-xxl\",\n md: \"pr-xl\",\n lg: \"pr-xl\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n { twMerge: false },\n);\n\ninterface ModalBaseProps {\n /** Whether the modal is shown. */\n visible: boolean;\n /**\n * Called when the user dismisses the modal — backdrop press, close button, the\n * Android back button, or the Escape key (web).\n */\n onClose: () => void;\n children: ReactNode;\n /** Accent-tinted icon rendered before the title in the header. */\n icon?: SVGIconElement;\n /** Actions row rendered below the body (e.g. Cancel/Confirm buttons). */\n footer?: ReactNode;\n accent?: Accent;\n size?: PanelVariantProps[\"size\"];\n /** Hide the header close button (the modal stays dismissible otherwise). */\n hideCloseButton?: boolean;\n /** Accessible label for the close button. */\n closeButtonAriaLabel?: string;\n /**\n * `alertdialog` for interruptions that require an explicit response\n * (destructive confirmation, errors). Defaults to `dialog`.\n */\n role?: \"alertdialog\" | \"dialog\";\n /** ID of the element describing the dialog (announced by assistive tech). */\n \"aria-describedby\"?: string;\n testID?: string;\n}\n\ninterface ModalWithTitleProps extends ModalBaseProps {\n /** Heading rendered in the header; also labels the dialog for assistive tech. */\n title: string;\n \"aria-label\"?: string;\n}\n\ninterface ModalWithoutTitleProps extends ModalBaseProps {\n title?: undefined;\n /** Required when there is no `title`, so the dialog is still labelled. */\n \"aria-label\": string;\n}\n\nexport type ModalProps = ModalWithoutTitleProps | ModalWithTitleProps;\n\nexport function Modal({\n visible,\n onClose,\n children,\n icon,\n footer,\n accent,\n size = \"md\",\n title,\n hideCloseButton = false,\n closeButtonAriaLabel = \"Close\",\n role = \"dialog\",\n \"aria-describedby\": ariaDescribedby,\n testID,\n \"aria-label\": ariaLabel,\n}: ModalProps): ReactNode {\n const { height: windowHeight } = useWindowDimensions();\n const titleId = useId();\n\n return (\n <AccentScope accent={accent}>\n <RNModal\n transparent\n visible={visible}\n animationType=\"fade\"\n onRequestClose={onClose}\n >\n <View className=\"flex-1 flex-center p-l\">\n {/* Backdrop is an absolutely-filled sibling behind the panel, so it\n catches outside clicks without wrapping the panel — clicks inside\n the panel never reach it. aria-hidden + focusable={false} keep this\n dismiss target out of the accessibility tree and the tab order. */}\n <Pressable\n aria-hidden\n focusable={false}\n className=\"absolute inset-0 bg-translucent\"\n onPress={onClose}\n />\n <View\n aria-modal\n role={role}\n aria-label={title === undefined ? ariaLabel : undefined}\n aria-labelledby={title === undefined ? undefined : titleId}\n aria-describedby={ariaDescribedby}\n testID={testID}\n className={`relative ${panelVariants({ size })}`}\n >\n <Surface\n variant=\"highlight\"\n size={size}\n shadow=\"l\"\n className=\"relative gap-m\"\n >\n {title === undefined && icon === undefined ? null : (\n <HStack\n className={`items-center gap-xs ${\n hideCloseButton ? \"\" : titleReserveVariants({ size })\n }`}\n >\n {icon === undefined ? null : (\n <Icon icon={icon} size={24} className=\"text-accent\" />\n )}\n {title === undefined ? null : (\n <Text\n nativeID={titleId}\n className=\"shrink font-heading-bold text-xl leading-tight text-sharp\"\n >\n {title}\n </Text>\n )}\n </HStack>\n )}\n\n {hideCloseButton ? null : (\n <IconButton\n icon={<XRegularIcon />}\n variant=\"ghost\"\n size={size === \"lg\" ? \"md\" : size}\n aria-label={closeButtonAriaLabel}\n className=\"absolute right-sm top-sm\"\n onPress={onClose}\n />\n )}\n\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 style={{ maxHeight: windowHeight * 0.7 }}>\n <VStack className=\"gap-m\">{children}</VStack>\n </ScrollView>\n\n {footer === undefined ? null : (\n <HStack className=\"items-center justify-end gap-m\">\n {footer}\n </HStack>\n )}\n </Surface>\n </View>\n </View>\n </RNModal>\n </AccentScope>\n );\n}\n","import { CheckRegularIcon } from \"alouette-icons/phosphor-icons/CheckRegularIcon\";\nimport { InfoRegularIcon } from \"alouette-icons/phosphor-icons/InfoRegularIcon\";\nimport { QuestionRegularIcon } from \"alouette-icons/phosphor-icons/QuestionRegularIcon\";\nimport { WarningRegularIcon } from \"alouette-icons/phosphor-icons/WarningRegularIcon\";\nimport { type ReactNode, useId } from \"react\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { Button } from \"../actions/Button\";\nimport type { SVGIconElement } from \"../primitives/Icon\";\nimport { Text } from \"../primitives/Text\";\nimport { Modal, type ModalProps } from \"./Modal\";\n\ninterface AlertDialogBaseProps extends Pick<ModalProps, \"size\" | \"testID\"> {\n /** Whether the dialog is shown. */\n visible: boolean;\n /** Heading; also labels the dialog for assistive tech. */\n title: string;\n /** Body copy describing the situation or the consequence of confirming. */\n children?: ReactNode;\n /** Themes the icon and the primary button. Defaults to \"danger\". */\n accent?: Accent;\n /**\n * Icon shown in the header, signalling the nature of the dialog. Prefer a\n * usage component ({@link QuestionAlertDialog}, {@link WarningAlertDialog},\n * {@link InfoAlertDialog}, {@link SuccessAlertDialog}) which supplies it.\n */\n icon: SVGIconElement;\n}\n\ninterface ConfirmAlertDialogProps extends AlertDialogBaseProps {\n /**\n * \"confirm\" (default) offers a cancel and a confirm action — for decisions,\n * typically destructive ones.\n */\n variant?: \"confirm\";\n /** Called when the user confirms the action. */\n onConfirm: () => void;\n /**\n * Called when the user rejects the action — cancel button, backdrop, Escape,\n * or the Android back button.\n */\n onCancel: () => void;\n /** Confirm button label. Defaults to \"Confirm\". */\n confirmText?: ReactNode;\n /** Cancel button label. Defaults to \"Cancel\". */\n cancelText?: ReactNode;\n /** Disables the confirm button (e.g. while an async action is pending). */\n confirmDisabled?: boolean;\n}\n\ninterface AcknowledgeAlertDialogProps extends AlertDialogBaseProps {\n /**\n * \"alert\" offers a single acknowledge action — for interruptions that only\n * need to be read and dismissed.\n */\n variant: \"alert\";\n /**\n * Called when the user dismisses the dialog — acknowledge button, backdrop,\n * Escape, or the Android back button.\n */\n onClose: () => void;\n /** Acknowledge button label. Defaults to \"OK\". */\n closeText?: ReactNode;\n}\n\ninterface RequiredAlertDialogProps extends AlertDialogBaseProps {\n /**\n * \"required\" offers a single action and cannot be dismissed by the backdrop,\n * Escape, or the Android back button — the user must respond (e.g. accept\n * updated terms, a forced sign-out).\n */\n variant: \"required\";\n /** Called when the user takes the required action. */\n onConfirm: () => void;\n /** Action button label. Defaults to \"OK\". */\n confirmText?: ReactNode;\n /** Disables the action button (e.g. while an async action is pending). */\n confirmDisabled?: boolean;\n}\n\nexport type AlertDialogProps =\n | AcknowledgeAlertDialogProps\n | ConfirmAlertDialogProps\n | RequiredAlertDialogProps;\n\ninterface ResolvedVariant {\n /** Footer buttons for the variant. */\n footer: ReactNode;\n /**\n * Handler for the dialog's dismiss affordances (backdrop / Escape / Android\n * back): the rejecting action for confirm/alert, a no-op for required.\n */\n onDismiss: () => void;\n}\n\n// Resolves the variant-specific footer and dismiss handler outside the\n// component so its discriminated props can be narrowed by destructuring.\nfunction resolveVariant(\n props: AlertDialogProps,\n accent: Accent,\n): ResolvedVariant {\n switch (props.variant) {\n case \"alert\": {\n const { onClose, closeText } = props;\n return {\n onDismiss: onClose,\n footer: (\n <Button accent={accent} text={closeText ?? \"OK\"} onPress={onClose} />\n ),\n };\n }\n case \"required\": {\n const { onConfirm, confirmText, confirmDisabled } = props;\n return {\n // Non-dismissible: only the explicit action closes it.\n onDismiss: () => undefined,\n footer: (\n <Button\n accent={accent}\n text={confirmText ?? \"OK\"}\n disabled={confirmDisabled}\n onPress={onConfirm}\n />\n ),\n };\n }\n case \"confirm\":\n case undefined:\n default: {\n const { onConfirm, onCancel, confirmText, cancelText, confirmDisabled } =\n props;\n return {\n onDismiss: onCancel,\n footer: (\n <>\n <Button\n variant=\"outlined\"\n text={cancelText ?? \"Cancel\"}\n onPress={onCancel}\n />\n <Button\n accent={accent}\n text={confirmText ?? \"Confirm\"}\n disabled={confirmDisabled}\n onPress={onConfirm}\n />\n </>\n ),\n };\n }\n }\n}\n\nexport function AlertDialog(props: AlertDialogProps): ReactNode {\n const {\n visible,\n title,\n children,\n accent = \"danger\",\n icon,\n size = \"md\",\n testID,\n } = props;\n const descriptionId = useId();\n const { footer, onDismiss } = resolveVariant(props, accent);\n\n return (\n <Modal\n hideCloseButton\n visible={visible}\n role=\"alertdialog\"\n accent={accent}\n size={size}\n title={title}\n icon={icon}\n aria-describedby={children === undefined ? undefined : descriptionId}\n testID={testID}\n footer={footer}\n onClose={onDismiss}\n >\n {children === undefined ? null : (\n <Text nativeID={descriptionId} className=\"text-base text-muted\">\n {children}\n </Text>\n )}\n </Modal>\n );\n}\n\n// Omit that distributes over the union so each variant keeps its own props.\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n\n// Icon is fixed by the usage component; the accent stays the caller's choice.\nexport type AlertDialogUsageProps = DistributiveOmit<AlertDialogProps, \"icon\">;\n\nexport function QuestionAlertDialog(props: AlertDialogUsageProps): ReactNode {\n return <AlertDialog {...props} icon={<QuestionRegularIcon />} />;\n}\n\nexport function WarningAlertDialog(props: AlertDialogUsageProps): ReactNode {\n return <AlertDialog {...props} icon={<WarningRegularIcon />} />;\n}\n\nexport function InfoAlertDialog(props: AlertDialogUsageProps): ReactNode {\n return <AlertDialog {...props} icon={<InfoRegularIcon />} />;\n}\n\nexport function SuccessAlertDialog(props: AlertDialogUsageProps): ReactNode {\n return <AlertDialog {...props} icon={<CheckRegularIcon />} />;\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 type { ReactNode } from \"react\";\nimport { useEffect, useState } from \"react\";\nimport type { Accent } from \"../../core/AlouetteConfig\";\nimport { AccentScope } from \"../containers/AccentScope\";\nimport { Text } from \"../primitives/Text\";\nimport { View } from \"../primitives/View\";\n\nexport type ConnectionStateStatus = \"connected\" | \"connecting\" | \"disconnected\";\n\n// How long the green \"connected\" pill stays fully visible before sliding out.\nconst connectedHoldMs = 1200;\n\nexport interface ConnectionStateProps {\n /** Current connection status, or `null` when unknown (renders nothing). */\n state: ConnectionStateStatus | null;\n /** Force the banner off-screen regardless of `state`. */\n forceHidden?: boolean;\n /** Keep the banner on-screen even when `connected` (for demos/showcases). */\n forceVisible?: boolean;\n /** Label shown in the pill (e.g. \"Reconnecting…\"). */\n children: NonNullable<ReactNode>;\n}\n\n/**\n * Thin status banner pinned to the top of the screen. It stays hidden while\n * connected and slides down to surface a red pill when connecting or\n * disconnected. On reconnection it turns green and holds for `connectedHoldMs`\n * so the confirmation is legible, then slides back out.\n */\nexport function ConnectionState({\n state,\n forceHidden,\n forceVisible,\n children,\n}: ConnectionStateProps): ReactNode {\n const connected = state === \"connected\";\n\n // While `connected`, keep the pill visible for a pause, then slide it out.\n const [hideAfterHold, setHideAfterHold] = useState(false);\n useEffect(() => {\n if (!connected || forceVisible) {\n setHideAfterHold(false);\n return undefined;\n }\n const timer = setTimeout(() => {\n setHideAfterHold(true);\n }, connectedHoldMs);\n return () => {\n clearTimeout(timer);\n };\n }, [connected, forceVisible]);\n\n const hidden =\n forceHidden || (!forceVisible && (!state || (connected && hideAfterHold)));\n const accent: Accent = connected ? \"success\" : \"danger\";\n\n return (\n <AccentScope accent={accent}>\n <View\n className={`absolute inset-x-0 top-0 z-9 h-0.5 bg-interactive-contained-pressable shadow-m transition-transform duration-700 ease-in-out ${hidden ? \"-translate-y-6\" : \"translate-y-0\"}`}\n >\n {state ? (\n <Text className=\"absolute left-1/2 top-0.5 h-5.5 w-50 -translate-x-1/2 rounded-b-sm bg-interactive-contained-pressable text-center leading-5.5 text-on-accent transition-colors duration-200\">\n {children}\n </Text>\n ) : null}\n </View>\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","RNModal","RNTextInput","RNSwitch","Modal","ICON_SIZE","View","BreakpointNameEnum"],"mappings":"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"}