UNPKG

alouette

Version:

A modern, customizable design system built on top of NativeWind v5 with configurable defaults

1,369 lines (1,339 loc) 107 kB
'use strict'; Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const jsxRuntime = require('react/jsx-runtime'); const nativewind = require('nativewind'); const react = require('react'); const reactNative = require('react-native'); const reactNativeSafeAreaContext = require('react-native-safe-area-context'); const tailwindMerge = require('tailwind-merge'); const tailwindVariants = require('tailwind-variants'); const XRegularIcon = require('alouette-icons/phosphor-icons/XRegularIcon'); const CheckCircleRegularIcon = require('alouette-icons/phosphor-icons/CheckCircleRegularIcon'); const WarningDuotoneIcon = require('alouette-icons/phosphor-icons/WarningDuotoneIcon'); const Animated = require('react-native-reanimated'); const reactNativeSvg = require('react-native-svg'); const CheckRegularIcon = require('alouette-icons/phosphor-icons/CheckRegularIcon'); const InfoRegularIcon = require('alouette-icons/phosphor-icons/InfoRegularIcon'); const QuestionRegularIcon = require('alouette-icons/phosphor-icons/QuestionRegularIcon'); const WarningRegularIcon = require('alouette-icons/phosphor-icons/WarningRegularIcon'); const CaretDownRegularIcon = require('alouette-icons/phosphor-icons/CaretDownRegularIcon'); const AsteriskSimpleRegularIcon = require('alouette-icons/phosphor-icons/AsteriskSimpleRegularIcon'); const reactHookForm = require('react-hook-form'); const PlusRegularIcon = require('alouette-icons/phosphor-icons/PlusRegularIcon'); const TrashRegularIcon = require('alouette-icons/phosphor-icons/TrashRegularIcon'); const CaretRightRegularIcon = require('alouette-icons/phosphor-icons/CaretRightRegularIcon'); const WebBrowser = require('expo-web-browser'); function _interopNamespaceDefault(e) { const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } }); if (e) { for (const k in e) { n[k] = e[k]; } } n.default = e; return n; } const WebBrowser__namespace = /*#__PURE__*/_interopNamespaceDefault(WebBrowser); const ThemeContext = react.createContext("light"); function useCurrentTheme() { return react.useContext(ThemeContext); } function useCurrentMode() { return react.useContext(ThemeContext).startsWith("dark") ? "dark" : "light"; } const themeVariables = { "light": { "--color-translucent": "#ffffff66", "--color-disabled-sharp": "#616161", "--color-disabled-muted": "#8F8F8F", "--color-disabled-interactive": "#B8B8B8", "--color-disabled-interactive-muted": "#E0E0E0", "--color-muted": "#474747", "--color-form-border-disabled": "#B8B8B8", "--color-form-placeholder": "#616161", "--color-form-disabled-text": "#474747", "--color-interactive-contained-disabled": "#C7C7C7", "--color-interactive-outlined-disabled": "#B8B8B8", "--color-interactive-accent-contained-bg-disabled": "#EBEBEB", "--color-interactive-accent-outlined-disabled": "#B8B8B8", "--color-screen": "#EBEBEB", "--color-surface": "#FAFAFA", "--color-highlight": "#FFFFFF", "--color-enabled": "#C7C7C7", "--color-highlight-accent": "#E0E0E0", "--color-lowered": "#E0E0E0", "--color-screen-gradient-start": "#E0E0E0", "--color-screen-gradient-middle": "#C7C7C7", "--color-screen-gradient-end": "#B8B8B8", "--color-border-muted": "#8F8F8F", "--color-border-sharp": "#616161", "--color-interactive-contained-pressable": "#FFFFFF", "--color-interactive-contained-hover": "#FAFAFA", "--color-interactive-contained-focus": "#FAFAFA", "--color-interactive-contained-active": "#EBEBEB", "--color-interactive-outlined-pressable": "#616161", "--color-interactive-outlined-hover": "#8F8F8F", "--color-interactive-outlined-focus": "#8F8F8F", "--color-interactive-outlined-active": "#8F8F8F", "--color-interactive-outlined-outline-focus": "#8F8F8F", "--color-interactive-active": "#616161", "--color-interactive-pressable": "#474747", "--color-interactive-hover": "#141414", "--color-sharp": "#141414", "--color-accent": "#141414", "--color-accent-muted": "#616161", "--color-on-accent": "#141414", "--color-on-accent-muted": "#616161", "--color-selection": "#47474740", "--color-interactive-accent-contained-bg": "#EBEBEB", "--color-interactive-accent-contained-bg-hover": "#FAFAFA", "--color-interactive-accent-contained-bg-focus": "#FAFAFA", "--color-interactive-accent-contained-bg-active": "#FAFAFA" }, "dark": { "--color-translucent": "#1f1e1e55", "--color-disabled-sharp": "#A8A8A8", "--color-disabled-muted": "#A8A8A8", "--color-disabled-interactive": "#525252", "--color-disabled-interactive-muted": "#333333", "--color-muted": "#C2C2C2", "--color-form-border-disabled": "#525252", "--color-form-placeholder": "#A8A8A8", "--color-form-disabled-text": "#C2C2C2", "--color-interactive-contained-disabled": "#3D3D3D", "--color-interactive-outlined-disabled": "#474747", "--color-interactive-accent-contained-bg-disabled": "#3D3D3D", "--color-interactive-accent-outlined-disabled": "#474747", "--color-screen": "#1F1F1F", "--color-surface": "#292929", "--color-highlight": "#333333", "--color-enabled": "#525252", "--color-highlight-accent": "#333333", "--color-lowered": "#0F0F0F", "--color-screen-gradient-start": "#292929", "--color-screen-gradient-middle": "#1F1F1F", "--color-screen-gradient-end": "#0F0F0F", "--color-border-muted": "#525252", "--color-border-sharp": "#A8A8A8", "--color-interactive-contained-pressable": "#474747", "--color-interactive-contained-hover": "#525252", "--color-interactive-contained-focus": "#525252", "--color-interactive-contained-active": "#525252", "--color-interactive-outlined-pressable": "#525252", "--color-interactive-outlined-hover": "#A8A8A8", "--color-interactive-outlined-focus": "#A8A8A8", "--color-interactive-outlined-active": "#A8A8A8", "--color-interactive-outlined-outline-focus": "#525252", "--color-interactive-active": "#A8A8A8", "--color-interactive-pressable": "#C2C2C2", "--color-interactive-hover": "#F5F5F5", "--color-sharp": "#F5F5F5", "--color-accent": "#F5F5F5", "--color-accent-muted": "#C2C2C2", "--color-on-accent": "#F5F5F5", "--color-on-accent-muted": "#C2C2C2", "--color-selection": "#C2C2C240", "--color-interactive-accent-contained-bg": "#474747", "--color-interactive-accent-contained-bg-hover": "#525252", "--color-interactive-accent-contained-bg-focus": "#525252", "--color-interactive-accent-contained-bg-active": "#525252" }, "light_brand": { "--color-translucent": "#ffffff66", "--color-disabled-sharp": "#616161", "--color-disabled-muted": "#8F8F8F", "--color-disabled-interactive": "#B8B8B8", "--color-disabled-interactive-muted": "#E0E0E0", "--color-muted": "#474747", "--color-form-border-disabled": "#B8B8B8", "--color-form-placeholder": "#616161", "--color-form-disabled-text": "#474747", "--color-interactive-contained-disabled": "#C7C7C7", "--color-interactive-outlined-disabled": "#B8B8B8", "--color-interactive-accent-contained-bg-disabled": "#EBEBEB", "--color-interactive-accent-outlined-disabled": "#B8B8B8", "--color-screen": "#DFF1F6", "--color-surface": "#EFF8FB", "--color-highlight": "#F7FBFD", "--color-enabled": "#99DFF5", "--color-highlight-accent": "#C7EEF9", "--color-lowered": "#C7EEF9", "--color-screen-gradient-start": "#C7EEF9", "--color-screen-gradient-middle": "#99DFF5", "--color-screen-gradient-end": "#7DD7F2", "--color-border-muted": "#23C8FB", "--color-border-sharp": "#037496", "--color-interactive-contained-pressable": "#037496", "--color-interactive-contained-hover": "#049AC8", "--color-interactive-contained-focus": "#049AC8", "--color-interactive-contained-active": "#23C8FB", "--color-interactive-outlined-pressable": "#037496", "--color-interactive-outlined-hover": "#23C8FB", "--color-interactive-outlined-focus": "#23C8FB", "--color-interactive-outlined-active": "#23C8FB", "--color-interactive-outlined-outline-focus": "#23C8FB", "--color-interactive-active": "#037496", "--color-interactive-pressable": "#024D64", "--color-interactive-hover": "#011F28", "--color-sharp": "#011F28", "--color-accent": "#024D64", "--color-accent-muted": "#037496", "--color-on-accent": "#FFFFFF", "--color-on-accent-muted": "#C7EEF9", "--color-selection": "#024D6440", "--color-interactive-accent-contained-bg": "#DFF1F6", "--color-interactive-accent-contained-bg-hover": "#EFF8FB", "--color-interactive-accent-contained-bg-focus": "#EFF8FB", "--color-interactive-accent-contained-bg-active": "#EFF8FB" }, "light_info": { "--color-translucent": "#ffffff66", "--color-disabled-sharp": "#616161", "--color-disabled-muted": "#8F8F8F", "--color-disabled-interactive": "#B8B8B8", "--color-disabled-interactive-muted": "#E0E0E0", "--color-muted": "#474747", "--color-form-border-disabled": "#B8B8B8", "--color-form-placeholder": "#616161", "--color-form-disabled-text": "#474747", "--color-interactive-contained-disabled": "#C7C7C7", "--color-interactive-outlined-disabled": "#B8B8B8", "--color-interactive-accent-contained-bg-disabled": "#EBEBEB", "--color-interactive-accent-outlined-disabled": "#B8B8B8", "--color-screen": "#DFF0F6", "--color-surface": "#EFF8FB", "--color-highlight": "#F7FBFD", "--color-enabled": "#99DEF5", "--color-highlight-accent": "#C7EDF9", "--color-lowered": "#C7EDF9", "--color-screen-gradient-start": "#C7EDF9", "--color-screen-gradient-middle": "#99DEF5", "--color-screen-gradient-end": "#7DD5F2", "--color-border-muted": "#23C5FB", "--color-border-sharp": "#037196", "--color-interactive-contained-pressable": "#037196", "--color-interactive-contained-hover": "#0497C8", "--color-interactive-contained-focus": "#0497C8", "--color-interactive-contained-active": "#23C5FB", "--color-interactive-outlined-pressable": "#037196", "--color-interactive-outlined-hover": "#23C5FB", "--color-interactive-outlined-focus": "#23C5FB", "--color-interactive-outlined-active": "#23C5FB", "--color-interactive-outlined-outline-focus": "#23C5FB", "--color-interactive-active": "#037196", "--color-interactive-pressable": "#024B64", "--color-interactive-hover": "#011E28", "--color-sharp": "#011E28", "--color-accent": "#024B64", "--color-accent-muted": "#037196", "--color-on-accent": "#FFFFFF", "--color-on-accent-muted": "#C7EDF9", "--color-selection": "#024B6440", "--color-interactive-accent-contained-bg": "#DFF0F6", "--color-interactive-accent-contained-bg-hover": "#EFF8FB", "--color-interactive-accent-contained-bg-focus": "#EFF8FB", "--color-interactive-accent-contained-bg-active": "#EFF8FB" }, "light_success": { "--color-translucent": "#ffffff66", "--color-disabled-sharp": "#616161", "--color-disabled-muted": "#8F8F8F", "--color-disabled-interactive": "#B8B8B8", "--color-disabled-interactive-muted": "#E0E0E0", "--color-muted": "#474747", "--color-form-border-disabled": "#B8B8B8", "--color-form-placeholder": "#616161", "--color-form-disabled-text": "#474747", "--color-interactive-contained-disabled": "#C7C7C7", "--color-interactive-outlined-disabled": "#B8B8B8", "--color-interactive-accent-contained-bg-disabled": "#EBEBEB", "--color-interactive-accent-outlined-disabled": "#B8B8B8", "--color-screen": "#DFF6DF", "--color-surface": "#EFFBEF", "--color-highlight": "#F7FDF7", "--color-enabled": "#91F391", "--color-highlight-accent": "#BFF8BF", "--color-lowered": "#BFF8BF", "--color-screen-gradient-start": "#BFF8BF", "--color-screen-gradient-middle": "#91F391", "--color-screen-gradient-end": "#75F075", "--color-border-muted": "#19FA19", "--color-border-sharp": "#027802", "--color-interactive-contained-pressable": "#027802", "--color-interactive-contained-hover": "#03AA03", "--color-interactive-contained-focus": "#03AA03", "--color-interactive-contained-active": "#19FA19", "--color-interactive-outlined-pressable": "#027802", "--color-interactive-outlined-hover": "#19FA19", "--color-interactive-outlined-focus": "#19FA19", "--color-interactive-outlined-active": "#19FA19", "--color-interactive-outlined-outline-focus": "#19FA19", "--color-interactive-active": "#027802", "--color-interactive-pressable": "#014601", "--color-interactive-hover": "#012801", "--color-sharp": "#012801", "--color-accent": "#014601", "--color-accent-muted": "#027802", "--color-on-accent": "#FFFFFF", "--color-on-accent-muted": "#BFF8BF", "--color-selection": "#01460140", "--color-interactive-accent-contained-bg": "#DFF6DF", "--color-interactive-accent-contained-bg-hover": "#EFFBEF", "--color-interactive-accent-contained-bg-focus": "#EFFBEF", "--color-interactive-accent-contained-bg-active": "#EFFBEF" }, "light_warning": { "--color-translucent": "#ffffff66", "--color-disabled-sharp": "#616161", "--color-disabled-muted": "#8F8F8F", "--color-disabled-interactive": "#B8B8B8", "--color-disabled-interactive-muted": "#E0E0E0", "--color-muted": "#474747", "--color-form-border-disabled": "#B8B8B8", "--color-form-placeholder": "#616161", "--color-form-disabled-text": "#474747", "--color-interactive-contained-disabled": "#C7C7C7", "--color-interactive-outlined-disabled": "#B8B8B8", "--color-interactive-accent-contained-bg-disabled": "#EBEBEB", "--color-interactive-accent-outlined-disabled": "#B8B8B8", "--color-screen": "#F6EEDF", "--color-surface": "#FBF7EF", "--color-highlight": "#FDFBF7", "--color-enabled": "#F3D291", "--color-highlight-accent": "#F8E5BF", "--color-lowered": "#F8E5BF", "--color-screen-gradient-start": "#F8E5BF", "--color-screen-gradient-middle": "#F3D291", "--color-screen-gradient-end": "#F0C775", "--color-border-muted": "#FAAF19", "--color-border-sharp": "#8C5E03", "--color-interactive-contained-pressable": "#8C5E03", "--color-interactive-contained-hover": "#BE8004", "--color-interactive-contained-focus": "#BE8004", "--color-interactive-contained-active": "#FAAF19", "--color-interactive-outlined-pressable": "#8C5E03", "--color-interactive-outlined-hover": "#FAAF19", "--color-interactive-outlined-focus": "#FAAF19", "--color-interactive-outlined-active": "#FAAF19", "--color-interactive-outlined-outline-focus": "#FAAF19", "--color-interactive-active": "#8C5E03", "--color-interactive-pressable": "#5A3D02", "--color-interactive-hover": "#281B01", "--color-sharp": "#281B01", "--color-accent": "#5A3D02", "--color-accent-muted": "#8C5E03", "--color-on-accent": "#FFFFFF", "--color-on-accent-muted": "#F8E5BF", "--color-selection": "#5A3D0240", "--color-interactive-accent-contained-bg": "#F6EEDF", "--color-interactive-accent-contained-bg-hover": "#FBF7EF", "--color-interactive-accent-contained-bg-focus": "#FBF7EF", "--color-interactive-accent-contained-bg-active": "#FBF7EF" }, "light_danger": { "--color-translucent": "#ffffff66", "--color-disabled-sharp": "#616161", "--color-disabled-muted": "#8F8F8F", "--color-disabled-interactive": "#B8B8B8", "--color-disabled-interactive-muted": "#E0E0E0", "--color-muted": "#474747", "--color-form-border-disabled": "#B8B8B8", "--color-form-placeholder": "#616161", "--color-form-disabled-text": "#474747", "--color-interactive-contained-disabled": "#C7C7C7", "--color-interactive-outlined-disabled": "#B8B8B8", "--color-interactive-accent-contained-bg-disabled": "#EBEBEB", "--color-interactive-accent-outlined-disabled": "#B8B8B8", "--color-screen": "#F6E0DF", "--color-surface": "#FBEFEF", "--color-highlight": "#FDF7F7", "--color-enabled": "#F7A4A1", "--color-highlight-accent": "#FBD2D0", "--color-lowered": "#FBD2D0", "--color-screen-gradient-start": "#FBD2D0", "--color-screen-gradient-middle": "#F7A4A1", "--color-screen-gradient-end": "#F48985", "--color-border-muted": "#FB342D", "--color-border-sharp": "#A00803", "--color-interactive-contained-pressable": "#A00803", "--color-interactive-contained-hover": "#D20B04", "--color-interactive-contained-focus": "#D20B04", "--color-interactive-contained-active": "#FB342D", "--color-interactive-outlined-pressable": "#A00803", "--color-interactive-outlined-hover": "#FB342D", "--color-interactive-outlined-focus": "#FB342D", "--color-interactive-outlined-active": "#FB342D", "--color-interactive-outlined-outline-focus": "#FB342D", "--color-interactive-active": "#A00803", "--color-interactive-pressable": "#6E0602", "--color-interactive-hover": "#280201", "--color-sharp": "#280201", "--color-accent": "#6E0602", "--color-accent-muted": "#A00803", "--color-on-accent": "#FFFFFF", "--color-on-accent-muted": "#FBD2D0", "--color-selection": "#6E060240", "--color-interactive-accent-contained-bg": "#F6E0DF", "--color-interactive-accent-contained-bg-hover": "#FBEFEF", "--color-interactive-accent-contained-bg-focus": "#FBEFEF", "--color-interactive-accent-contained-bg-active": "#FBEFEF" }, "dark_brand": { "--color-translucent": "#1f1e1e55", "--color-disabled-sharp": "#A8A8A8", "--color-disabled-muted": "#A8A8A8", "--color-disabled-interactive": "#525252", "--color-disabled-interactive-muted": "#333333", "--color-muted": "#C2C2C2", "--color-form-border-disabled": "#525252", "--color-form-placeholder": "#A8A8A8", "--color-form-disabled-text": "#C2C2C2", "--color-interactive-contained-disabled": "#3D3D3D", "--color-interactive-outlined-disabled": "#474747", "--color-interactive-accent-contained-bg-disabled": "#3D3D3D", "--color-interactive-accent-outlined-disabled": "#474747", "--color-screen": "#0D2830", "--color-surface": "#123540", "--color-highlight": "#104E60", "--color-enabled": "#1E94B8", "--color-highlight-accent": "#104E60", "--color-lowered": "#071418", "--color-screen-gradient-start": "#123540", "--color-screen-gradient-middle": "#0D2830", "--color-screen-gradient-end": "#071418", "--color-border-muted": "#1E94B8", "--color-border-sharp": "#5CD1F5", "--color-interactive-contained-pressable": "#156A84", "--color-interactive-contained-hover": "#1E94B8", "--color-interactive-contained-focus": "#1E94B8", "--color-interactive-contained-active": "#1E94B8", "--color-interactive-outlined-pressable": "#1E94B8", "--color-interactive-outlined-hover": "#5CD1F5", "--color-interactive-outlined-focus": "#5CD1F5", "--color-interactive-outlined-active": "#5CD1F5", "--color-interactive-outlined-outline-focus": "#1E94B8", "--color-interactive-active": "#5CD1F5", "--color-interactive-pressable": "#8CDFF8", "--color-interactive-hover": "#D9F4FD", "--color-sharp": "#D9F4FD", "--color-accent": "#8CDFF8", "--color-accent-muted": "#8CDFF8", "--color-on-accent": "#F5F5F5", "--color-on-accent-muted": "#8CDFF8", "--color-selection": "#8CDFF840", "--color-interactive-accent-contained-bg": "#156A84", "--color-interactive-accent-contained-bg-hover": "#1E94B8", "--color-interactive-accent-contained-bg-focus": "#1E94B8", "--color-interactive-accent-contained-bg-active": "#1E94B8" }, "dark_info": { "--color-translucent": "#1f1e1e55", "--color-disabled-sharp": "#A8A8A8", "--color-disabled-muted": "#A8A8A8", "--color-disabled-interactive": "#525252", "--color-disabled-interactive-muted": "#333333", "--color-muted": "#C2C2C2", "--color-form-border-disabled": "#525252", "--color-form-placeholder": "#A8A8A8", "--color-form-disabled-text": "#C2C2C2", "--color-interactive-contained-disabled": "#3D3D3D", "--color-interactive-outlined-disabled": "#474747", "--color-interactive-accent-contained-bg-disabled": "#3D3D3D", "--color-interactive-accent-outlined-disabled": "#474747", "--color-screen": "#0D2730", "--color-surface": "#123440", "--color-highlight": "#104C60", "--color-enabled": "#1E92B8", "--color-highlight-accent": "#104C60", "--color-lowered": "#071418", "--color-screen-gradient-start": "#123440", "--color-screen-gradient-middle": "#0D2730", "--color-screen-gradient-end": "#071418", "--color-border-muted": "#1E92B8", "--color-border-sharp": "#5CCEF5", "--color-interactive-contained-pressable": "#156884", "--color-interactive-contained-hover": "#1E92B8", "--color-interactive-contained-focus": "#1E92B8", "--color-interactive-contained-active": "#1E92B8", "--color-interactive-outlined-pressable": "#1E92B8", "--color-interactive-outlined-hover": "#5CCEF5", "--color-interactive-outlined-focus": "#5CCEF5", "--color-interactive-outlined-active": "#5CCEF5", "--color-interactive-outlined-outline-focus": "#1E92B8", "--color-interactive-active": "#5CCEF5", "--color-interactive-pressable": "#8CDDF8", "--color-interactive-hover": "#D9F4FD", "--color-sharp": "#D9F4FD", "--color-accent": "#8CDDF8", "--color-accent-muted": "#8CDDF8", "--color-on-accent": "#F5F5F5", "--color-on-accent-muted": "#8CDDF8", "--color-selection": "#8CDDF840", "--color-interactive-accent-contained-bg": "#156884", "--color-interactive-accent-contained-bg-hover": "#1E92B8", "--color-interactive-accent-contained-bg-focus": "#1E92B8", "--color-interactive-accent-contained-bg-active": "#1E92B8" }, "dark_success": { "--color-translucent": "#1f1e1e55", "--color-disabled-sharp": "#A8A8A8", "--color-disabled-muted": "#A8A8A8", "--color-disabled-interactive": "#525252", "--color-disabled-interactive-muted": "#333333", "--color-muted": "#C2C2C2", "--color-form-border-disabled": "#525252", "--color-form-placeholder": "#A8A8A8", "--color-form-disabled-text": "#C2C2C2", "--color-interactive-contained-disabled": "#3D3D3D", "--color-interactive-outlined-disabled": "#474747", "--color-interactive-accent-contained-bg-disabled": "#3D3D3D", "--color-interactive-accent-outlined-disabled": "#474747", "--color-screen": "#0D300D", "--color-surface": "#124012", "--color-highlight": "#0F570F", "--color-enabled": "#1FAD1F", "--color-highlight-accent": "#0F570F", "--color-lowered": "#071807", "--color-screen-gradient-start": "#124012", "--color-screen-gradient-middle": "#0D300D", "--color-screen-gradient-end": "#071807", "--color-border-muted": "#1FAD1F", "--color-border-sharp": "#52F452", "--color-interactive-contained-pressable": "#157915", "--color-interactive-contained-hover": "#1FAD1F", "--color-interactive-contained-focus": "#1FAD1F", "--color-interactive-contained-active": "#1FAD1F", "--color-interactive-outlined-pressable": "#1FAD1F", "--color-interactive-outlined-hover": "#52F452", "--color-interactive-outlined-focus": "#52F452", "--color-interactive-outlined-active": "#52F452", "--color-interactive-outlined-outline-focus": "#1FAD1F", "--color-interactive-active": "#52F452", "--color-interactive-pressable": "#82F782", "--color-interactive-hover": "#D9FDD9", "--color-sharp": "#D9FDD9", "--color-accent": "#82F782", "--color-accent-muted": "#82F782", "--color-on-accent": "#F5F5F5", "--color-on-accent-muted": "#82F782", "--color-selection": "#82F78240", "--color-interactive-accent-contained-bg": "#157915", "--color-interactive-accent-contained-bg-hover": "#1FAD1F", "--color-interactive-accent-contained-bg-focus": "#1FAD1F", "--color-interactive-accent-contained-bg-active": "#1FAD1F" }, "dark_warning": { "--color-translucent": "#1f1e1e55", "--color-disabled-sharp": "#A8A8A8", "--color-disabled-muted": "#A8A8A8", "--color-disabled-interactive": "#525252", "--color-disabled-interactive-muted": "#333333", "--color-muted": "#C2C2C2", "--color-form-border-disabled": "#525252", "--color-form-placeholder": "#A8A8A8", "--color-form-disabled-text": "#C2C2C2", "--color-interactive-contained-disabled": "#3D3D3D", "--color-interactive-outlined-disabled": "#474747", "--color-interactive-accent-contained-bg-disabled": "#3D3D3D", "--color-interactive-accent-outlined-disabled": "#474747", "--color-screen": "#30240D", "--color-surface": "#403012", "--color-highlight": "#583F0E", "--color-enabled": "#AF7E1D", "--color-highlight-accent": "#583F0E", "--color-lowered": "#181207", "--color-screen-gradient-start": "#403012", "--color-screen-gradient-middle": "#30240D", "--color-screen-gradient-end": "#181207", "--color-border-muted": "#AF7E1D", "--color-border-sharp": "#F4BE52", "--color-interactive-contained-pressable": "#7B5914", "--color-interactive-contained-hover": "#AF7E1D", "--color-interactive-contained-focus": "#AF7E1D", "--color-interactive-contained-active": "#AF7E1D", "--color-interactive-outlined-pressable": "#AF7E1D", "--color-interactive-outlined-hover": "#F4BE52", "--color-interactive-outlined-focus": "#F4BE52", "--color-interactive-outlined-active": "#F4BE52", "--color-interactive-outlined-outline-focus": "#AF7E1D", "--color-interactive-active": "#F4BE52", "--color-interactive-pressable": "#F7D082", "--color-interactive-hover": "#FDF1D9", "--color-sharp": "#FDF1D9", "--color-accent": "#F7D082", "--color-accent-muted": "#F7D082", "--color-on-accent": "#F5F5F5", "--color-on-accent-muted": "#F7D082", "--color-selection": "#F7D08240", "--color-interactive-accent-contained-bg": "#7B5914", "--color-interactive-accent-contained-bg-hover": "#AF7E1D", "--color-interactive-accent-contained-bg-focus": "#AF7E1D", "--color-interactive-accent-contained-bg-active": "#AF7E1D" }, "dark_danger": { "--color-translucent": "#1f1e1e55", "--color-disabled-sharp": "#A8A8A8", "--color-disabled-muted": "#A8A8A8", "--color-disabled-interactive": "#525252", "--color-disabled-interactive-muted": "#333333", "--color-muted": "#C2C2C2", "--color-form-border-disabled": "#525252", "--color-form-placeholder": "#A8A8A8", "--color-form-disabled-text": "#C2C2C2", "--color-interactive-contained-disabled": "#3D3D3D", "--color-interactive-outlined-disabled": "#474747", "--color-interactive-accent-contained-bg-disabled": "#3D3D3D", "--color-interactive-accent-outlined-disabled": "#474747", "--color-screen": "#300F0D", "--color-surface": "#401312", "--color-highlight": "#691411", "--color-enabled": "#C1251F", "--color-highlight-accent": "#691411", "--color-lowered": "#180707", "--color-screen-gradient-start": "#401312", "--color-screen-gradient-middle": "#300F0D", "--color-screen-gradient-end": "#180707", "--color-border-muted": "#C1251F", "--color-border-sharp": "#F56A66", "--color-interactive-contained-pressable": "#8C1B17", "--color-interactive-contained-hover": "#C1251F", "--color-interactive-contained-focus": "#C1251F", "--color-interactive-contained-active": "#C1251F", "--color-interactive-outlined-pressable": "#C1251F", "--color-interactive-outlined-hover": "#F56A66", "--color-interactive-outlined-focus": "#F56A66", "--color-interactive-outlined-active": "#F56A66", "--color-interactive-outlined-outline-focus": "#C1251F", "--color-interactive-active": "#F56A66", "--color-interactive-pressable": "#F89996", "--color-interactive-hover": "#FDDAD9", "--color-sharp": "#FDDAD9", "--color-accent": "#F89996", "--color-accent-muted": "#F89996", "--color-on-accent": "#F5F5F5", "--color-on-accent-muted": "#F89996", "--color-selection": "#F8999640", "--color-interactive-accent-contained-bg": "#8C1B17", "--color-interactive-accent-contained-bg-hover": "#C1251F", "--color-interactive-accent-contained-bg-focus": "#C1251F", "--color-interactive-accent-contained-bg-active": "#C1251F" } }; function ScopedTheme({ theme, children }) { return /* @__PURE__ */ jsxRuntime.jsx(ThemeContext.Provider, { value: theme, children: /* @__PURE__ */ jsxRuntime.jsx(nativewind.VariableContextProvider, { value: themeVariables[theme], children }) }); } function AlouetteProvider({ children }) { const colorScheme = reactNative.useColorScheme(); return /* @__PURE__ */ jsxRuntime.jsx(ScopedTheme, { theme: colorScheme === "dark" ? "dark" : "light", children }); } const AlouetteDecorator = (storyFn, context) => { const theme = context.globals.backgrounds?.value === "#000000" ? "dark" : "light"; return /* @__PURE__ */ jsxRuntime.jsx(reactNativeSafeAreaContext.SafeAreaProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(AlouetteProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(ScopedTheme, { theme, children: storyFn(context) }) }) }); }; function useThemeToken(tokenOrTokens) { const theme = react.useContext(ThemeContext); const vars = themeVariables[theme]; if (Array.isArray(tokenOrTokens)) { return tokenOrTokens.map((token) => vars[token]); } return vars[tokenOrTokens]; } const View = react.forwardRef((props, ref) => { return /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { ref, ...props }); }); function AccentScope({ mode: forcedMode, accent, children }) { const currentMode = useCurrentMode(); if (!accent) { return children; } const mode = forcedMode ?? currentMode; return /* @__PURE__ */ jsxRuntime.jsx(ScopedTheme, { theme: `${mode}_${accent}`, children }); } const twMerge = tailwindMerge.extendTailwindMerge({ extend: { classGroups: { "font-family": [ "font-body", "font-body-bold", "font-body-extrabold", "font-heading", "font-heading-bold", "font-heading-extrabold", "font-mono", "font-mono-bold", "font-mono-extrabold" ] } } }); const Text = react.forwardRef( ({ className, accent, ...props }, ref) => { return /* @__PURE__ */ jsxRuntime.jsx(AccentScope, { accent, children: /* @__PURE__ */ jsxRuntime.jsx( reactNative.Text, { ref, className: twMerge("font-body text-sharp", className), ...props } ) }); } ); const Paragraph = react.forwardRef( ({ className, ...props }, ref) => { return /* @__PURE__ */ jsxRuntime.jsx( Text, { ref, role: "paragraph", className: `select-auto ${className ?? ""}`, ...props } ); } ); const ScrollView = nativewind.styled( reactNative.ScrollView, { className: "style", contentContainerClassName: "contentContainerStyle" } ); const FlatList = nativewind.styled( reactNative.FlatList, { className: "style", contentContainerClassName: "contentContainerStyle", columnWrapperClassName: "columnWrapperStyle" } ); const SectionList = nativewind.styled( reactNative.SectionList, { className: "style", contentContainerClassName: "contentContainerStyle" } ); const Stack = react.forwardRef( ({ className, ...props }, ref) => { return /* @__PURE__ */ jsxRuntime.jsx( reactNative.View, { ref, className: `flex-row flex-wrap ${className ?? ""}`, ...props } ); } ); const HStack = react.forwardRef( ({ className, ...props }, ref) => { return /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { ref, className: `flex-row ${className ?? ""}`, ...props }); } ); const VStack = react.forwardRef( ({ className, ...props }, ref) => { return /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { ref, className: `flex-col ${className ?? ""}`, ...props }); } ); const separatorVariants = tailwindVariants.tv({ base: "border-border-sharp", variants: { vertical: { true: "self-stretch border-r w-px", false: "self-stretch border-b h-px" } }, defaultVariants: { vertical: false } }); const Separator = react.forwardRef( ({ className, vertical, ...props }, ref) => { return /* @__PURE__ */ jsxRuntime.jsx( reactNative.View, { ref, className: separatorVariants({ vertical, className }), ...props } ); } ); const boxBaseClasses = "shrink"; const Box = react.forwardRef( ({ className, accent, ...props }, ref) => { return /* @__PURE__ */ jsxRuntime.jsx(AccentScope, { accent, children: /* @__PURE__ */ jsxRuntime.jsx( reactNative.View, { ref, className: `${boxBaseClasses} ${className ?? ""}`, ...props } ) }); } ); const interactiveBoxVariants = tailwindVariants.tv({ base: [ boxBaseClasses, "cursor-pointer", "transition-[transform,background-color,border-color] duration-fast ease-in", "disabled:cursor-not-allowed disabled:opacity-70 aria-disabled:cursor-not-allowed aria-disabled:opacity-70", "active:scale-[0.975]" ].join(" "), variants: { withFocusVisibleOutline: { true: "focus-visible:outline-2 focus-visible:outline-offset-2" } } }); const InteractiveBox = react.forwardRef( ({ withFocusVisibleOutline, className, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx( reactNative.Pressable, { ref, pointerEvents: "auto", ...rest, className: interactiveBoxVariants({ withFocusVisibleOutline, className }) } ) ); react.forwardRef( ({ withFocusVisibleOutline, children, className, ...rest }, ref) => { const child = react.Children.only(children); return /* @__PURE__ */ jsxRuntime.jsx( reactNative.Pressable, { ref, pointerEvents: "auto", className: `flex-center ${className ?? ""}`, ...rest, children: react.cloneElement(child, { className: interactiveBoxVariants({ withFocusVisibleOutline, className: child.props.className }) }) } ); } ); const SafeAreaBox = react.forwardRef( (props, ref) => { const insets = reactNativeSafeAreaContext.useSafeAreaInsets(); return /* @__PURE__ */ jsxRuntime.jsx( Box, { ref, style: { paddingTop: insets.top, paddingBottom: insets.bottom, paddingLeft: insets.left, paddingRight: insets.right }, ...props } ); } ); const surfaceVariants = tailwindVariants.tv( { // overflow-hidden so the multi-layer shadow respects the rounded corners. base: "overflow-hidden transition-background duration-fast", variants: { size: { xs: "p-sm rounded-xs", sm: "p-m rounded-sm", md: "p-xl rounded-sm", lg: "p-xxl rounded-md" }, variant: { surface: "bg-surface", highlight: "bg-highlight", "highlight-accent": "bg-highlight-accent", lowered: "bg-lowered", translucent: "bg-translucent" }, shadow: { none: "shadow-none", s: "shadow-s", m: "shadow-m", l: "shadow-l", lowered: "shadow-lowered" } }, defaultVariants: { size: "md", variant: "surface" } }, { twMerge: false } ); const Surface = react.forwardRef( ({ className, size, variant, shadow, accent, ...props }, ref) => { const resolvedShadow = shadow ?? (variant === "lowered" ? "lowered" : "s"); return /* @__PURE__ */ jsxRuntime.jsx(AccentScope, { accent, children: /* @__PURE__ */ jsxRuntime.jsx( Box, { ref, className: surfaceVariants({ size, variant, shadow: resolvedShadow, className }), ...props } ) }); } ); function styled(Component, defaultClassName) { function StyledComponent({ className, ...props }) { return /* @__PURE__ */ jsxRuntime.jsx( Component, { className: tailwindMerge.twMerge(defaultClassName, className), ...props } ); } StyledComponent.displayName = `Styled(${Component.displayName ?? Component.name ?? "Component"})`; StyledComponent.__isStyledComponent = true; return StyledComponent; } const storyTitleVariants = tailwindVariants.tv({ base: "font-heading-extrabold text-sharp", variants: { level: { 1: "text-4xl mb-xl", 2: "text-3xl mb-xl", 3: "text-2xl mb-m", 4: "text-xl mb-m" } }, defaultVariants: { level: 1 } }); const StoryTitle = react.forwardRef( ({ className, level, ...props }, ref) => { return /* @__PURE__ */ jsxRuntime.jsx( Text, { ref, className: storyTitleVariants({ level, className }), ...props } ); } ); const InternalStorySection = styled(View, "-mx-l px-l"); function StorySection({ title, children, level = 1, modeTheme, accent, withSurface = false }) { const content = /* @__PURE__ */ jsxRuntime.jsx(InternalStorySection, { className: "pb-xl bg-screen", children: withSurface ? /* @__PURE__ */ jsxRuntime.jsxs(Surface, { children: [ /* @__PURE__ */ jsxRuntime.jsx(StoryTitle, { level: level + 1, children: title }), /* @__PURE__ */ jsxRuntime.jsx(VStack, { className: "gap-m", children }) ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [ /* @__PURE__ */ jsxRuntime.jsx(StoryTitle, { level: level + 1, children: title }), /* @__PURE__ */ jsxRuntime.jsx(VStack, { className: "gap-m", children }) ] }) }); if (modeTheme) { return /* @__PURE__ */ jsxRuntime.jsx(ScopedTheme, { theme: modeTheme, children: content }); } if (accent) { return /* @__PURE__ */ jsxRuntime.jsx(AccentScope, { accent, children: content }); } return content; } function StorySubSection({ title, children, modeTheme, accent, withSurface = false }) { const content = /* @__PURE__ */ jsxRuntime.jsx(InternalStorySection, { className: "mb-m", children: withSurface ? /* @__PURE__ */ jsxRuntime.jsxs(Surface, { children: [ /* @__PURE__ */ jsxRuntime.jsx(StoryTitle, { level: 3, children: title }), /* @__PURE__ */ jsxRuntime.jsx(VStack, { className: "gap-m", children }) ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [ /* @__PURE__ */ jsxRuntime.jsx(StoryTitle, { level: 3, children: title }), /* @__PURE__ */ jsxRuntime.jsx(VStack, { className: "gap-m", children }) ] }) }); if (modeTheme) { return /* @__PURE__ */ jsxRuntime.jsx(ScopedTheme, { theme: modeTheme, children: content }); } if (accent) { return /* @__PURE__ */ jsxRuntime.jsx(AccentScope, { accent, children: content }); } return content; } const ScrollWrapper = reactNative.Platform.OS === "web" ? react.Fragment : ScrollView; function Story({ documentation, children, noDarkMode }) { return /* @__PURE__ */ jsxRuntime.jsxs(ScrollWrapper, { children: [ documentation && /* @__PURE__ */ jsxRuntime.jsx(Surface, { accent: "info", className: "mb-xxl", children: documentation }), ["light", ...noDarkMode ? [] : ["dark"]].map( (mode) => /* @__PURE__ */ jsxRuntime.jsx(ScopedTheme, { theme: mode, children: /* @__PURE__ */ jsxRuntime.jsx(View, { className: "bg-screen p-l", children }) }, mode) ) ] }); } Story.Section = StorySection; Story.SubSection = StorySubSection; function StoryContainer({ title, children }) { return /* @__PURE__ */ jsxRuntime.jsx(ScopedTheme, { theme: "light", children: /* @__PURE__ */ jsxRuntime.jsxs(ScrollView, { className: "bg-white p-3xl", children: [ /* @__PURE__ */ jsxRuntime.jsx(StoryTitle, { level: 1, children: title }), children ] }) }); } const StoryDecorator = (storyFn, { name, parameters }) => { if (parameters?.container === false) return storyFn(); return /* @__PURE__ */ jsxRuntime.jsx(StoryContainer, { title: name, children: storyFn() }); }; const rowVariants = tailwindVariants.tv( { base: "flex-col", variants: { breakpoint: { small: "sm:flex-row sm:mb-xl", medium: "md:flex-row md:mb-xl" }, flexWrap: { true: "" } }, compoundVariants: [ { breakpoint: "small", flexWrap: true, class: "sm:flex-wrap sm:gap-m" }, { breakpoint: "medium", flexWrap: true, class: "md:flex-wrap md:gap-m" } ] }, { twMerge: false } ); const itemVariants = tailwindVariants.tv( { base: "pt-m pb-xl", variants: { breakpoint: { small: "sm:pt-0 sm:pb-0 sm:my-xxs shrink", medium: "md:pt-0 md:pb-0 md:my-xxs shrink" }, flexWrap: { true: "", false: "" }, loose: { true: "", false: "grow" } }, compoundVariants: [ { breakpoint: "small", flexWrap: false, class: "sm:basis-0" }, { breakpoint: "medium", flexWrap: false, class: "md:basis-0" } ], defaultVariants: { flexWrap: false } }, { twMerge: false } ); function StoryGridRow({ children, breakpoint = "small", flexWrap, loose }) { return /* @__PURE__ */ jsxRuntime.jsx(View, { className: rowVariants({ breakpoint, flexWrap }), children: react.Children.map(children, (child) => /* @__PURE__ */ jsxRuntime.jsx(View, { className: itemVariants({ breakpoint, flexWrap, loose }), children: child })) }); } function StoryGridCol({ title, children, platform = "all" }) { const isNative = reactNative.Platform.OS === "ios" || reactNative.Platform.OS === "android"; if (reactNative.Platform.OS === "web" && platform === "native") { return null; } if (isNative && platform === "web") { return null; } return title ? /* @__PURE__ */ jsxRuntime.jsxs(VStack, { children: [ /* @__PURE__ */ jsxRuntime.jsx(StoryTitle, { level: 4, numberOfLines: 1, children: title }), children ] }) : children; } const StoryGrid = { Row: StoryGridRow, Col: StoryGridCol }; function StableAccentScope({ mode: forcedMode, accent, children }) { const currentTheme = useCurrentTheme(); const currentMode = useCurrentMode(); return /* @__PURE__ */ jsxRuntime.jsx( ScopedTheme, { theme: accent ? `${forcedMode ?? currentMode}_${accent}` : currentTheme, children } ); } function joinClasses(...classes) { return classes.filter(Boolean).join(" "); } function usePresence(activeKey, exitDurationMs, children) { const [exiting, setExiting] = react.useState([]); const previousRef = react.useRef({ key: activeKey, node: children }); const childrenRef = react.useRef(children); childrenRef.current = children; const timersRef = react.useRef([]); react.useEffect( () => () => { timersRef.current.forEach(clearTimeout); }, [] ); react.useEffect(() => { const previous = previousRef.current; if (previous.key === activeKey) { return; } previousRef.current = { key: activeKey, node: childrenRef.current }; setExiting((list) => [...list, previous]); const timer = setTimeout(() => { setExiting((list) => list.filter((item) => item !== previous)); timersRef.current = timersRef.current.filter((t) => t !== timer); }, exitDurationMs); timersRef.current.push(timer); }, [activeKey, exitDurationMs]); return exiting; } function toItems(children) { return react.Children.toArray(children).filter(react.isValidElement).map((child) => ({ key: child.key, node: child })); } function mergeKeys(previous, next) { const nextSet = new Set(next); const pendingByNext = /* @__PURE__ */ new Map(); let pending = []; for (const key of previous) { if (nextSet.has(key)) { if (pending.length > 0) { pendingByNext.set(key, pending); pending = []; } } else { pending.push(key); } } const result = []; for (const key of next) { const before = pendingByNext.get(key); if (before) { result.push(...before); } result.push(key); } result.push(...pending); return result; } function usePresenceList(children, exitDurationMs) { const items = toItems(children); const liveKeys = items.map((item) => item.key); const signature = liveKeys.join("\0"); const nodesRef = react.useRef(/* @__PURE__ */ new Map()); for (const item of items) { nodesRef.current.set(item.key, item.node); } const liveKeysRef = react.useRef(liveKeys); liveKeysRef.current = liveKeys; const [order, setOrder] = react.useState(liveKeys); const orderRef = react.useRef(order); orderRef.current = order; const timersRef = react.useRef(/* @__PURE__ */ new Map()); react.useEffect( () => () => { timersRef.current.forEach(clearTimeout); }, [] ); react.useEffect(() => { const live2 = new Set(liveKeysRef.current); const newOrder = mergeKeys(orderRef.current, liveKeysRef.current); for (const key of liveKeysRef.current) { const timer = timersRef.current.get(key); if (timer) { clearTimeout(timer); timersRef.current.delete(key); } } for (const key of newOrder) { if (!live2.has(key) && !timersRef.current.has(key)) { const timer = setTimeout(() => { timersRef.current.delete(key); nodesRef.current.delete(key); setOrder((current) => current.filter((k) => k !== key)); }, exitDurationMs); timersRef.current.set(key, timer); } } setOrder(newOrder); }, [signature, exitDurationMs]); const live = new Set(liveKeys); return order.map((key) => ({ key, node: nodesRef.current.get(key), exiting: !live.has(key) })); } function PresenceList({ exitDurationMs, enterClassName, exitClassName, className, children }) { const items = usePresenceList(children, exitDurationMs); return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsx( View, { className: joinClasses( className, item.exiting ? exitClassName : enterClassName ), children: item.node }, item.key )) }); } function PresenceOne({ activeKey, exitDurationMs, enterClassName, exitClassName, className, children }) { const exiting = usePresence(activeKey, exitDurationMs, children); return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [ exiting.map((item) => { const node = item.node; return react.cloneElement(node, { key: item.key, className: joinClasses( node.props.className, className, exitClassName ) }); }), react.cloneElement(children, { key: activeKey, className: joinClasses( children.props.className, className, enterClassName ) }) ] }); } const animationDurationsMs = { "slide": 600, "collapse": 800, "progress": 600, "fade": 300, "fast": 200 }; const pressableBoxVariants = tailwindVariants.tv( { extend: interactiveBoxVariants, base: "overflow-hidden", variants: { variant: { contained: [ "rounded-sm", process.env.EXPO_PUBLIC_STORYBOOK_ENABLED ? "" : "shadow-s bg-interactive-contained-pressable", "hover:bg-interactive-contained-hover", "focus:bg-interactive-contained-focus", "active:bg-interactive-contained-active", "disabled:bg-interactive-contained-disabled disabled:shadow-none", "focus-visible:outline-border-muted" ].join(" "), outlined: [ "border bg-highlight", process.env.EXPO_PUBLIC_STORYBOOK_ENABLED ? "" : "border-interactive-outlined-pressable", "hover:border-interactive-outlined-hover", "focus:border-interactive-outlined-focus", "active:border-interactive-outlined-active", "disabled:border-interactive-outlined-disabled", "focus-visible:outline-interactive-outlined-outline-focus" ].join(" "), ghost: [ "border border-transparent", "hover:border hover:border-interactive-outlined-hover", "focus:border focus:border-interactive-outlined-focus", "active:border active:border-interactive-outlined-active", "disabled:border-interactive-outlined-disabled", "focus-visible:outline-interactive-outlined-outline-focus" ].join(" ") }, forceStyle: { hover: "", focus: "", press: "scale-[0.975]" } }, compoundVariants: process.env.EXPO_PUBLIC_STORYBOOK_ENABLED ? [ /* contained */ { variant: "contained", forceStyle: void 0, ghost: false, className: "shadow-s bg-interactive-contained-pressable" }, { variant: "contained", forceStyle: "hover", className: "shadow-s bg-interactive-contained-hover" }, { variant: "contained", forceStyle: "focus", className: "shadow-s bg-interactive-contained-focus" }, { variant: "contained", forceStyle: "press", className: "shadow-s bg-interactive-contained-active" }, /* outlined */ { variant: "outlined", forceStyle: void 0, ghost: false, className: "border-interactive-outlined-pressable" }, { variant: "outlined", forceStyle: "hover", className: "border-interactive-outlined-hover" }, { variant: "outlined", forceStyle: "focus", className: "border-interactive-outlined-