@butternutbox/pawprint-native 0.0.1
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.
- package/.turbo/turbo-build.log +30 -0
- package/COMPONENT_GUIDELINES.md +610 -0
- package/README.md +72 -0
- package/dist/ibm-plex-sans-condensed-400-normal-I2XLJNNB.woff2 +0 -0
- package/dist/ibm-plex-sans-condensed-500-normal-IEQBNVGX.woff2 +0 -0
- package/dist/ibm-plex-sans-condensed-600-normal-UX5ZU5T6.woff2 +0 -0
- package/dist/ibm-plex-sans-condensed-700-normal-4PFYFTSO.woff2 +0 -0
- package/dist/ida-narrow-500-normal-C6I2PK4T.woff2 +0 -0
- package/dist/ida-narrow-700-normal-UPHPRIN6.woff2 +0 -0
- package/dist/index.cjs +2686 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +780 -0
- package/dist/index.d.ts +780 -0
- package/dist/index.js +2617 -0
- package/dist/index.js.map +1 -0
- package/eslint.config.js +3 -0
- package/llms.txt +458 -0
- package/package.json +57 -0
- package/src/components/atoms/Avatar/Avatar.stories.tsx +125 -0
- package/src/components/atoms/Avatar/Avatar.tsx +159 -0
- package/src/components/atoms/Avatar/index.ts +7 -0
- package/src/components/atoms/Badge/Badge.stories.tsx +231 -0
- package/src/components/atoms/Badge/Badge.tsx +184 -0
- package/src/components/atoms/Badge/index.ts +2 -0
- package/src/components/atoms/Button/Button.stories.tsx +145 -0
- package/src/components/atoms/Button/Button.tsx +261 -0
- package/src/components/atoms/Button/index.ts +7 -0
- package/src/components/atoms/Hint/Hint.stories.tsx +84 -0
- package/src/components/atoms/Hint/Hint.tsx +59 -0
- package/src/components/atoms/Hint/index.ts +2 -0
- package/src/components/atoms/Icon/Icon.stories.tsx +200 -0
- package/src/components/atoms/Icon/Icon.tsx +112 -0
- package/src/components/atoms/Icon/index.ts +8 -0
- package/src/components/atoms/IconButton/IconButton.stories.tsx +162 -0
- package/src/components/atoms/IconButton/IconButton.tsx +227 -0
- package/src/components/atoms/IconButton/index.ts +7 -0
- package/src/components/atoms/Illustration/Illustration.stories.tsx +167 -0
- package/src/components/atoms/Illustration/Illustration.tsx +81 -0
- package/src/components/atoms/Illustration/index.ts +6 -0
- package/src/components/atoms/Input/Input.stories.tsx +142 -0
- package/src/components/atoms/Input/Input.tsx +110 -0
- package/src/components/atoms/Input/InputDescription.tsx +49 -0
- package/src/components/atoms/Input/InputError.tsx +39 -0
- package/src/components/atoms/Input/InputField.tsx +119 -0
- package/src/components/atoms/Input/InputLabel.tsx +61 -0
- package/src/components/atoms/Input/index.ts +10 -0
- package/src/components/atoms/Link/Link.stories.tsx +119 -0
- package/src/components/atoms/Link/Link.tsx +118 -0
- package/src/components/atoms/Link/index.ts +2 -0
- package/src/components/atoms/Logo/Logo.registry.ts +39 -0
- package/src/components/atoms/Logo/Logo.tsx +68 -0
- package/src/components/atoms/Logo/index.ts +4 -0
- package/src/components/atoms/Spinner/Spinner.stories.tsx +98 -0
- package/src/components/atoms/Spinner/Spinner.tsx +91 -0
- package/src/components/atoms/Spinner/index.ts +2 -0
- package/src/components/atoms/Switch/Switch.stories.tsx +120 -0
- package/src/components/atoms/Switch/Switch.tsx +196 -0
- package/src/components/atoms/Switch/index.ts +2 -0
- package/src/components/atoms/Tag/Tag.stories.tsx +89 -0
- package/src/components/atoms/Tag/Tag.tsx +122 -0
- package/src/components/atoms/Tag/index.ts +2 -0
- package/src/components/atoms/Typography/Typography.stories.tsx +315 -0
- package/src/components/atoms/Typography/Typography.tsx +284 -0
- package/src/components/atoms/Typography/index.ts +2 -0
- package/src/components/atoms/index.ts +14 -0
- package/src/components/index.ts +2 -0
- package/src/components/molecules/ButtonDock/ButtonDock.stories.tsx +95 -0
- package/src/components/molecules/ButtonDock/ButtonDock.tsx +148 -0
- package/src/components/molecules/ButtonDock/index.ts +2 -0
- package/src/components/molecules/ButtonGroup/ButtonGroup.stories.tsx +82 -0
- package/src/components/molecules/ButtonGroup/ButtonGroup.tsx +94 -0
- package/src/components/molecules/ButtonGroup/index.ts +2 -0
- package/src/components/molecules/Checkbox/Checkbox.stories.tsx +148 -0
- package/src/components/molecules/Checkbox/Checkbox.tsx +279 -0
- package/src/components/molecules/Checkbox/CheckboxGroup.tsx +53 -0
- package/src/components/molecules/Checkbox/index.ts +4 -0
- package/src/components/molecules/Radio/Radio.stories.tsx +182 -0
- package/src/components/molecules/Radio/Radio.tsx +249 -0
- package/src/components/molecules/Radio/RadioGroup.tsx +142 -0
- package/src/components/molecules/Radio/index.ts +4 -0
- package/src/components/molecules/SegmentedControl/SegmentedControl.stories.tsx +151 -0
- package/src/components/molecules/SegmentedControl/SegmentedControl.tsx +323 -0
- package/src/components/molecules/SegmentedControl/index.ts +5 -0
- package/src/components/molecules/Slider/Slider.stories.tsx +144 -0
- package/src/components/molecules/Slider/Slider.tsx +303 -0
- package/src/components/molecules/Slider/index.ts +2 -0
- package/src/components/molecules/index.ts +6 -0
- package/src/fonts/ibm-plex-sans-condensed-400-normal.woff2 +0 -0
- package/src/fonts/ibm-plex-sans-condensed-500-normal.woff2 +0 -0
- package/src/fonts/ibm-plex-sans-condensed-600-normal.woff2 +0 -0
- package/src/fonts/ibm-plex-sans-condensed-700-normal.woff2 +0 -0
- package/src/fonts/ida-narrow-500-normal.woff2 +0 -0
- package/src/fonts/ida-narrow-700-normal.woff2 +0 -0
- package/src/fonts/index.ts +49 -0
- package/src/index.ts +9 -0
- package/src/theme/PawprintProvider.tsx +26 -0
- package/src/theme/ThemeProvider.tsx +63 -0
- package/src/theme/index.ts +5 -0
- package/src/theme/theme.ts +3 -0
- package/src/theme/utils.ts +31 -0
- package/src/types/fonts.d.ts +4 -0
- package/src/types/index.ts +1 -0
- package/src/types/theme.ts +24 -0
- package/tsconfig.json +5 -0
- package/tsup.config.ts +11 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/fonts/index.ts","../src/theme/utils.ts","../src/theme/ThemeProvider.tsx","../src/theme/PawprintProvider.tsx","../src/theme/theme.ts","../src/components/atoms/Typography/Typography.tsx","../src/components/atoms/Avatar/Avatar.tsx","../src/components/atoms/Icon/Icon.tsx","../src/components/atoms/Badge/Badge.tsx","../src/components/atoms/Spinner/Spinner.tsx","../src/components/atoms/Button/Button.tsx","../src/components/atoms/Hint/Hint.tsx","../src/components/atoms/IconButton/IconButton.tsx","../src/components/atoms/Illustration/Illustration.tsx","../src/components/atoms/Input/InputLabel.tsx","../src/components/atoms/Input/InputField.tsx","../src/components/atoms/Input/InputDescription.tsx","../src/components/atoms/Input/InputError.tsx","../src/components/atoms/Input/Input.tsx","../src/components/atoms/Link/Link.tsx","../src/components/atoms/Logo/Logo.registry.ts","../src/components/atoms/Logo/Logo.tsx","../src/components/atoms/Switch/Switch.tsx","../src/components/atoms/Tag/Tag.tsx","../src/components/molecules/ButtonDock/ButtonDock.tsx","../src/components/molecules/ButtonGroup/ButtonGroup.tsx","../../pawprint-icons/dist/chunk-N3ETBM74.js","../../pawprint-icons/dist/core.js","../src/components/molecules/Checkbox/Checkbox.tsx","../src/components/molecules/Checkbox/CheckboxGroup.tsx","../src/components/molecules/Radio/Radio.tsx","../src/components/molecules/Radio/RadioGroup.tsx","../src/components/molecules/SegmentedControl/SegmentedControl.tsx","../src/components/molecules/Slider/Slider.tsx"],"names":["Brand","theme","Theme","EmotionThemeProvider","jsx","styled","React","align","textTransform","textDecoration","color","noWrap","rest","parseTokenValue","useTheme","View","jsxs","Pressable","StyledSpinnerWrapper","StyledRoot","Animated","useRef","useEffect","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","__spreadProps","jsx2","forwardRef2","jsx3","forwardRef3","jsx4","forwardRef4","jsx5","forwardRef5","jsx6","forwardRef6","jsx7","forwardRef7","jsx8","forwardRef8","jsx9","forwardRef9","jsx10","forwardRef10","jsx11","forwardRef11","jsx12","forwardRef12","jsx13","forwardRef13","jsx14","forwardRef14","jsx15","forwardRef15","jsx16","forwardRef16","jsx17","forwardRef17","jsx18","forwardRef18","jsx19","forwardRef19","Error","jsx20","forwardRef20","jsx21","forwardRef21","jsx22","forwardRef22","jsx23","forwardRef23","jsx24","forwardRef24","jsx25","forwardRef25","jsx26","forwardRef26","jsx27","forwardRef27","jsx28","forwardRef28","jsx29","forwardRef29","jsx30","forwardRef30","jsx31","forwardRef31","jsx32","forwardRef32","jsx33","forwardRef33","jsx34","forwardRef34","jsx35","forwardRef35","jsx36","forwardRef36","jsx37","forwardRef37","jsx38","forwardRef38","jsx39","forwardRef39","jsx40","forwardRef40","jsx41","forwardRef41","jsx42","forwardRef42","jsx43","forwardRef43","jsx44","forwardRef44","jsx45","forwardRef45","jsx46","forwardRef46","jsx47","forwardRef47","jsx48","forwardRef48","jsx49","forwardRef49","jsx50","forwardRef50","jsx51","forwardRef51","jsx52","forwardRef52","jsx53","forwardRef53","jsx54","forwardRef54","jsx55","forwardRef55","jsx56","forwardRef56","StyledControl","StyledContent","_a","StyledContainer","_b","StyledLabelRow","StyledThumb"],"mappings":"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","file":"index.js","sourcesContent":["import { Brand, BrandName } from \"@butternutbox/pawprint-tokens\"\nimport type { FontSource } from \"expo-font\"\n\nimport idaNarrow500 from \"./ida-narrow-500-normal.woff2\"\nimport idaNarrow700 from \"./ida-narrow-700-normal.woff2\"\nimport ibmPlexSansCondensed400 from \"./ibm-plex-sans-condensed-400-normal.woff2\"\nimport ibmPlexSansCondensed500 from \"./ibm-plex-sans-condensed-500-normal.woff2\"\nimport ibmPlexSansCondensed600 from \"./ibm-plex-sans-condensed-600-normal.woff2\"\nimport ibmPlexSansCondensed700 from \"./ibm-plex-sans-condensed-700-normal.woff2\"\n\n// Keys passed to useFonts — each key becomes the exact @font-face family name\n// that expo-font registers on web, and the postscript font name on iOS/Android.\nexport const BRAND_FONTS: Partial<\n Record<BrandName, Record<string, FontSource>>\n> = {\n [Brand.Butternutbox]: {\n \"IdaNarrow-Medium\": idaNarrow500 as FontSource,\n \"IdaNarrow-Bold\": idaNarrow700 as FontSource,\n \"IBMPlexSansCondensed-Regular\": ibmPlexSansCondensed400 as FontSource,\n \"IBMPlexSansCondensed-Medium\": ibmPlexSansCondensed500 as FontSource,\n \"IBMPlexSansCondensed-SemiBold\": ibmPlexSansCondensed600 as FontSource,\n \"IBMPlexSansCondensed-Bold\": ibmPlexSansCondensed700 as FontSource\n }\n}\n\n// Maps token fontFamily + fontWeight → the expo-font registered key.\n// The key is used as fontFamily on both web and native — useFonts registers\n// it as the @font-face family name on web so it matches Text styles directly.\n// fontWeight is dropped because the weight is already encoded in the key name.\nconst FONT_MAP: Record<string, Record<string, string>> = {\n \"IBM Plex Sans Condensed\": {\n \"400\": \"IBMPlexSansCondensed-Regular\",\n \"500\": \"IBMPlexSansCondensed-Medium\",\n \"600\": \"IBMPlexSansCondensed-SemiBold\",\n \"700\": \"IBMPlexSansCondensed-Bold\"\n },\n \"Ida Narrow\": {\n \"500\": \"IdaNarrow-Medium\",\n \"700\": \"IdaNarrow-Bold\"\n }\n}\n\nexport const resolveFont = (\n fontFamily: string,\n fontWeight: string\n): { fontFamily: string } => {\n const resolved = FONT_MAP[fontFamily]?.[fontWeight]\n return { fontFamily: resolved ?? fontFamily }\n}\n","import {\n DEFAULT_THEME_OPTIONS,\n THEME_OPTIONS_MAP,\n Brand,\n Theme,\n BrandName,\n ThemeName\n} from \"@butternutbox/pawprint-tokens\"\nimport type { Theme as EmotionTheme } from \"@emotion/react\"\n\n/**\n * Creates a pawprint theme based on brand and theme name for React Native\n *\n * @param brand - The brand to use (butternutbox, marro, etc.)\n * @param theme - The theme name to use (default, dark, etc.)\n * @returns A theme object with the selected brand and theme options\n */\nexport const createPawprintTheme = (\n brand: BrandName = Brand.Butternutbox,\n theme: ThemeName = Theme.Default\n): EmotionTheme => {\n const brandThemes = THEME_OPTIONS_MAP[brand]\n\n // Check if the requested theme exists for this brand, otherwise use default\n const themeOptions =\n brandThemes && theme in brandThemes\n ? brandThemes[theme as keyof typeof brandThemes]\n : DEFAULT_THEME_OPTIONS\n\n return themeOptions as EmotionTheme\n}\n","import React, { useState, createContext, useContext, useMemo } from \"react\"\nimport { ThemeProvider as EmotionThemeProvider } from \"@emotion/react\"\nimport type { Theme as EmotionTheme } from \"@emotion/react\"\nimport {\n Brand,\n Theme,\n BrandName,\n ThemeName\n} from \"@butternutbox/pawprint-tokens\"\nimport { createPawprintTheme } from \"./utils\"\n\ntype ThemeContextType = {\n brand: BrandName\n theme: ThemeName\n setTheme: (theme: ThemeName) => void\n emotionTheme: EmotionTheme\n}\n\ntype Props = {\n brand?: BrandName\n initialTheme?: ThemeName\n children: React.ReactNode\n}\n\nconst ThemeContext = createContext<ThemeContextType>({\n brand: Brand.Butternutbox,\n theme: Theme.Default,\n setTheme: (_theme: ThemeName) => {},\n emotionTheme: createPawprintTheme(Brand.Butternutbox, Theme.Default)\n})\n\nexport const ThemeProvider = ({\n children,\n brand = Brand.Butternutbox,\n initialTheme = Theme.Default\n}: Props): React.JSX.Element => {\n const [theme, setTheme] = useState<ThemeName>(initialTheme)\n\n const emotionTheme = useMemo(\n () => createPawprintTheme(brand, theme),\n [brand, theme]\n )\n\n const contextValue = useMemo(\n () => ({\n brand,\n theme,\n setTheme,\n emotionTheme\n }),\n [brand, theme, emotionTheme]\n )\n\n return (\n <ThemeContext.Provider value={contextValue}>\n <EmotionThemeProvider theme={emotionTheme}>\n {children}\n </EmotionThemeProvider>\n </ThemeContext.Provider>\n )\n}\n\nexport const usePawprint = () => useContext(ThemeContext)\n","import React from \"react\"\nimport { ThemeProvider } from \"./ThemeProvider\"\nimport {\n Brand,\n Theme,\n BrandName,\n ThemeName\n} from \"@butternutbox/pawprint-tokens\"\n\nexport interface PawprintProviderProps {\n brand?: BrandName\n initialTheme?: ThemeName\n children: React.ReactNode\n}\n\nexport const PawprintProvider: React.FC<PawprintProviderProps> = ({\n brand = Brand.Butternutbox,\n initialTheme = Theme.Default,\n children\n}) => {\n return (\n <ThemeProvider brand={brand} initialTheme={initialTheme}>\n {children}\n </ThemeProvider>\n )\n}\n","import { tokens } from \"@butternutbox/pawprint-tokens\"\n\nexport const theme = tokens\n","import React from \"react\"\nimport { Text, TextStyle, TextProps } from \"react-native\"\nimport { useTheme } from \"@emotion/react\"\nimport styled from \"@emotion/native\"\nimport { type BrandThemeSemanticsColourText } from \"@butternutbox/pawprint-tokens\"\nimport { resolveFont } from \"../../../fonts\"\n\ntype BodySize = \"xs\" | \"sm\" | \"md\" | \"lg\"\ntype HeadingSize = \"2xs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"\ntype DisplaySize = \"md\" | \"lg\"\ntype BodyWeight = \"medium\" | \"semiBold\" | \"bold\"\n\ntype TextAlign = \"left\" | \"right\" | \"center\" | \"justify\"\ntype TextTransform = \"none\" | \"capitalize\" | \"uppercase\" | \"lowercase\"\ntype TextDecoration = \"none\" | \"underline\" | \"line-through\"\n\ntype SemanticTextColorKey = Exclude<\n keyof BrandThemeSemanticsColourText,\n \"link\" | \"action\"\n>\n\ntype FlattenTextColorValues<T> = T extends string\n ? T\n : T extends object\n ? {\n [K in keyof T]: FlattenTextColorValues<T[K]>\n }[keyof T]\n : never\n\ntype SemanticTextColorValue =\n FlattenTextColorValues<BrandThemeSemanticsColourText>\n\ntype NativeTypographyToken = {\n fontFamily?: string\n fontWeight?: string\n fontSize?: string\n lineHeight?: string\n letterSpacing?: string\n}\n\ntype NativeTextProps = Omit<TextProps, \"style\">\n\ntype BodyVariant = {\n variant?: \"body\"\n size?: BodySize\n weight?: BodyWeight\n}\n\ntype HeadingVariant = {\n variant: \"heading\"\n size?: HeadingSize\n weight?: never\n}\n\ntype DisplayVariant = {\n variant: \"display\"\n size?: DisplaySize\n weight?: never\n}\n\ntype CommonProps = {\n align?: TextAlign\n noWrap?: boolean\n textTransform?: TextTransform\n textDecoration?: TextDecoration\n}\n\ntype SemanticVariant = (BodyVariant | HeadingVariant | DisplayVariant) & {\n color?: SemanticTextColorKey\n token?: never\n} & CommonProps\n\ntype TokenVariant = {\n token: NativeTypographyToken\n color?: SemanticTextColorValue\n} & CommonProps\n\nexport type TypographyProps =\n | (SemanticVariant & NativeTextProps)\n | (TokenVariant & NativeTextProps)\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\n/**\n * Converts a letter-spacing token value to an absolute pixel number.\n * Token values can be percentage strings (e.g. \"2%\", \"0.12%\") or\n * pixel strings (e.g. \"1px\"). Percentages are resolved relative to fontSize.\n */\nconst resolveLetterSpacing = (\n letterSpacing: string,\n fontSize: number\n): number => {\n if (letterSpacing.endsWith(\"%\")) {\n return (parseFloat(letterSpacing) / 100) * fontSize\n }\n return parseFloat(letterSpacing)\n}\n\nconst semanticToStyle = (token: {\n fontFamily: string\n fontWeight: string\n fontSize: string\n lineHeight: string\n letterSpacing?: string\n}): TextStyle => {\n const { fontFamily } = resolveFont(token.fontFamily, token.fontWeight)\n const fontSize = parseTokenValue(token.fontSize)\n return {\n fontFamily,\n fontSize,\n lineHeight: parseTokenValue(token.lineHeight),\n ...(token.letterSpacing && {\n letterSpacing: resolveLetterSpacing(token.letterSpacing, fontSize)\n })\n }\n}\n\nconst nativeTokenToStyle = (token: NativeTypographyToken): TextStyle => {\n const style: TextStyle = {}\n if (token.fontFamily && token.fontWeight) {\n const { fontFamily } = resolveFont(token.fontFamily, token.fontWeight)\n style.fontFamily = fontFamily\n } else if (token.fontFamily) {\n style.fontFamily = token.fontFamily\n }\n if (token.fontSize) style.fontSize = parseTokenValue(token.fontSize)\n if (token.lineHeight) style.lineHeight = parseTokenValue(token.lineHeight)\n if (token.letterSpacing && style.fontSize) {\n style.letterSpacing = resolveLetterSpacing(\n token.letterSpacing,\n style.fontSize\n )\n }\n return style\n}\n\nconst VARIANT_DEFAULTS = {\n body: { size: \"md\" } as const,\n heading: { size: \"md\" } as const,\n display: { size: \"lg\" } as const\n}\n\nconst StyledText = styled(Text)({})\n\n/**\n * Typography component for body text, headings, and display copy.\n * Styling and semantics only — no i18n concerns.\n *\n * **Semantic mode:**\n * - `variant=\"body\"` — 4 sizes (xs–lg), 3 weights.\n * - `variant=\"heading\"` — 6 sizes (2xs–xl), responsive (steps down one size on narrow screens).\n * - `variant=\"display\"` — 2 sizes (md/lg), responsive.\n *\n * **Token mode:**\n * - `token` — Pass resolved typography token object from theme.tokens.components\n *\n * @param {\"body\" | \"heading\" | \"display\"} [variant=\"body\"] - Text style variant.\n * @param {\"xs\" | \"sm\" | \"md\" | \"lg\" | \"2xs\" | \"xl\"} [size=\"md\"] - Size token. Available sizes depend on variant.\n * @param {\"medium\" | \"semiBold\" | \"bold\"} [weight=\"medium\"] - Font weight. Body only — heading and display have fixed weight.\n * @param {NativeTypographyToken} [token] - Resolved typography token object (alternative to semantic props).\n * @param {SemanticTextColorKey} [color] - Semantic text color key for semantic mode.\n * @param {SemanticTextColorValue} [color] - Hex color string for token mode.\n * @param {\"left\" | \"right\" | \"center\" | \"justify\"} [align] - Text alignment.\n * @param {boolean} [noWrap] - If true, text is truncated to one line with an ellipsis.\n * @param {\"none\" | \"capitalize\" | \"uppercase\" | \"lowercase\"} [textTransform] - Text transformation.\n * @param {\"none\" | \"underline\" | \"line-through\"} [textDecoration] - Text decoration.\n *\n * @example\n * // Semantic usage\n * <Typography size=\"md\" weight=\"semiBold\">Body text</Typography>\n * <Typography variant=\"heading\" size=\"xl\">Page title</Typography>\n * <Typography variant=\"display\" size=\"lg\" color=\"secondary\">Hero copy</Typography>\n *\n * // Token usage (for component-owned text)\n * <Typography\n * token={theme.tokens.components.checkbox.typography.label}\n * color={theme.tokens.components.checkbox.colour.text.title}\n * >\n * Accept terms\n * </Typography>\n */\nexport const Typography = React.forwardRef<Text, TypographyProps>(\n (props, ref) => {\n const theme = useTheme()\n const { typography, colour } = theme.tokens.semantics\n\n const getCommonStyles = (\n align?: TextAlign,\n textTransform?: TextTransform,\n textDecoration?: TextDecoration\n ): TextStyle => ({\n ...(align && { textAlign: align }),\n ...(textTransform && { textTransform }),\n ...(textDecoration && {\n textDecorationLine: textDecoration as TextStyle[\"textDecorationLine\"]\n })\n })\n\n if (\"token\" in props && props.token) {\n const {\n token,\n color,\n align,\n noWrap,\n textTransform,\n textDecoration,\n ...rest\n } = props\n\n const style: TextStyle = {\n ...nativeTokenToStyle(token),\n ...(color ? { color } : {}),\n ...getCommonStyles(align, textTransform, textDecoration)\n }\n\n return (\n <StyledText\n ref={ref}\n style={style}\n numberOfLines={noWrap ? 1 : undefined}\n ellipsizeMode={noWrap ? \"tail\" : undefined}\n {...rest}\n />\n )\n }\n\n const {\n variant = \"body\",\n size,\n weight = \"medium\",\n color = \"primary\",\n align,\n noWrap,\n textTransform,\n textDecoration,\n ...rest\n } = props\n\n const resolvedSize = size ?? VARIANT_DEFAULTS[variant].size\n const commonStyles = getCommonStyles(align, textTransform, textDecoration)\n\n const getSemanticColor = (colorKey: SemanticTextColorKey): TextStyle => ({\n color: colour.text[colorKey]\n })\n\n let textStyle: TextStyle = {}\n\n if (variant === \"body\") {\n textStyle = {\n ...semanticToStyle(typography.body[weight][resolvedSize as BodySize]),\n ...getSemanticColor(color),\n ...commonStyles\n }\n } else if (variant === \"heading\") {\n const headingSize = resolvedSize as HeadingSize\n const tokenSet = typography.heading.mobile[headingSize]\n textStyle = {\n ...semanticToStyle(tokenSet),\n ...getSemanticColor(color),\n ...commonStyles\n }\n } else if (variant === \"display\") {\n const displaySize = resolvedSize as DisplaySize\n const tokenSet = typography.heading.display.mobile[displaySize]\n textStyle = {\n ...semanticToStyle(tokenSet),\n ...getSemanticColor(color),\n ...commonStyles\n }\n }\n\n return (\n <StyledText\n ref={ref}\n style={textStyle}\n numberOfLines={noWrap ? 1 : undefined}\n ellipsizeMode={noWrap ? \"tail\" : undefined}\n {...rest}\n />\n )\n }\n)\n\nTypography.displayName = \"Typography\"\n","import React from \"react\"\nimport { View } from \"react-native\"\nimport * as AvatarPrimitive from \"@rn-primitives/avatar\"\nimport styled from \"@emotion/native\"\nimport { Typography } from \"../Typography\"\n\nexport type AvatarSize = \"sm\" | \"md\" | \"lg\"\nexport type AvatarBorder = \"none\" | \"sm\" | \"md\"\nexport type AvatarFallbackType = \"string\" | \"image\"\n\nexport interface AvatarProps {\n src?: string\n alt: string\n size?: AvatarSize\n border?: AvatarBorder\n fallbackType?: AvatarFallbackType\n fallbackString?: string\n}\n\nconst SIZE_MAP = {\n sm: \"small\",\n md: \"medium\",\n lg: \"large\"\n} as const\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledRoot = styled(AvatarPrimitive.Root)<{\n size: AvatarSize\n border: AvatarBorder\n}>(({ theme, size, border }) => {\n const { avatar } = theme.tokens.components\n const { borderRadius } = theme.tokens.semantics.dimensions\n\n const tokenSize = SIZE_MAP[size]\n const avatarSize = parseTokenValue(avatar.size[tokenSize])\n\n return {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n borderRadius: parseTokenValue(borderRadius.round),\n width: avatarSize,\n height: avatarSize,\n ...(border !== \"none\" && {\n borderWidth: parseTokenValue(\n avatar.borderWidth[border === \"sm\" ? \"small\" : \"medium\"]\n ),\n borderColor: avatar.colour.border.default,\n borderStyle: \"solid\" as const\n })\n }\n})\n\nconst StyledImage = styled(AvatarPrimitive.Image)({\n width: \"100%\",\n height: \"100%\",\n resizeMode: \"cover\"\n})\n\nconst StyledFallback = styled(AvatarPrimitive.Fallback)(({ theme }) => {\n const { background, text } = theme.tokens.semantics.colour\n return {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n height: \"100%\",\n backgroundColor: background.container.disabled,\n color: text.disabled\n }\n})\n\nconst AVATAR_TO_BODY_SIZE = {\n sm: \"xs\",\n md: \"sm\",\n lg: \"md\"\n} as const\n\n/**\n * Avatar component for displaying user profile pictures or fallback initials.\n * Built on @rn-primitives/avatar with design system styling.\n *\n * Features:\n * - Three size variants (sm, md, lg)\n * - Optional borders (none, sm, md)\n * - Automatic fallback handling when image fails to load\n * - String fallback (user initials) or image fallback (default icon)\n * - Accessible with required alt text\n *\n * @example\n * ```tsx\n * import { Avatar } from \"@butternutbox/pawprint-native\"\n *\n * // With image\n * <Avatar src=\"https://example.com/photo.jpg\" alt=\"User Name\" size=\"md\" />\n *\n * // With initials fallback\n * <Avatar alt=\"John Doe\" fallbackString=\"JD\" size=\"sm\" border=\"sm\" />\n *\n * // With icon fallback\n * <Avatar alt=\"User avatar\" fallbackType=\"image\" size=\"lg\" />\n * ```\n *\n * @param {string} [src] - Image source URL.\n * @param {string} alt - Accessible label for the avatar.\n * @param {\"sm\" | \"md\" | \"lg\"} [size=\"md\"] - Size variant.\n * @param {\"none\" | \"sm\" | \"md\"} [border=\"none\"] - Border width variant.\n * @param {\"string\" | \"image\"} [fallbackType] - Fallback type (auto-detected based on fallbackString if not specified).\n * @param {string} [fallbackString] - Text to display as fallback (typically user initials).\n */\nconst AvatarRoot = React.forwardRef<View, AvatarProps>(\n (\n {\n src,\n alt,\n size = \"md\",\n border = \"none\",\n fallbackType,\n fallbackString,\n ...rest\n },\n ref\n ) => {\n // Auto-detect fallback type based on whether fallbackString is provided\n const effectiveFallbackType =\n fallbackType ?? (fallbackString ? \"string\" : \"image\")\n\n const showStringFallback =\n effectiveFallbackType === \"string\" && fallbackString\n\n return (\n <StyledRoot ref={ref} alt={alt} size={size} border={border} {...rest}>\n {src && <StyledImage source={{ uri: src }} />}\n <StyledFallback>\n {showStringFallback ? (\n <Typography\n size={AVATAR_TO_BODY_SIZE[size]}\n weight=\"bold\"\n color=\"disabled\"\n >\n {fallbackString}\n </Typography>\n ) : (\n // TODO: replace with the Icon when available\n <Typography size={AVATAR_TO_BODY_SIZE[size]} color=\"disabled\">\n 👤\n </Typography>\n )}\n </StyledFallback>\n </StyledRoot>\n )\n }\n)\n\nAvatarRoot.displayName = \"Avatar\"\n\nexport const Avatar = AvatarRoot\n","import React from \"react\"\nimport { View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\n\ntype IconCategory = \"core\" | \"marketing\" | \"payments\" | \"flags\"\ntype IconSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\"\ntype IconColour =\n | \"primary\"\n | \"secondary\"\n | \"disabled\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"promo\"\n | \"info\"\n | \"alt\"\n | \"action-default\"\n | \"action-inverse\"\n\ntype PawprintIcon = React.ComponentType<{\n width?: number\n height?: number\n color?: string\n}> & {\n category?: IconCategory\n}\n\ntype IconOwnProps = {\n icon: PawprintIcon\n size?: IconSize\n colour?: IconColour\n \"aria-label\"?: string\n}\n\ntype IconProps = IconOwnProps & Omit<ViewProps, keyof IconOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledIconRoot = styled(View)<{\n iconDimension: number\n}>(({ iconDimension }) => ({\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n width: iconDimension,\n height: iconDimension\n}))\n\n/**\n * Renders an SVG icon with token-based sizing and colour.\n *\n * @example\n * ```tsx\n * import { Icon } from \"@butternutbox/pawprint-native\"\n * import { ArrowRight } from \"@butternutbox/pawprint-icons/core\"\n *\n * <Icon icon={ArrowRight} size=\"md\" colour=\"primary\" aria-label=\"Go forward\" />\n * ```\n *\n * @param icon - **(required)** Icon component from `@butternutbox/pawprint-icons/{category}`\n * @param size - *(optional)* Size variant: xs, sm, md (default), lg, xl, 2xl\n * @param colour - *(optional)* Colour variant from semantic icon tokens (default: primary)\n * @param aria-label - *(optional)* Accessible label; omit for decorative icons\n */\nconst Icon = React.forwardRef<View, IconProps>(\n (\n {\n icon: IconComponent,\n size = \"md\",\n colour = \"primary\",\n \"aria-label\": ariaLabel,\n ...rest\n },\n ref\n ) => {\n const theme = useTheme()\n const category = (IconComponent as PawprintIcon).category || \"core\"\n\n const iconTokens = theme.tokens.semantics.colour.icon\n let color: string\n if (colour === \"action-default\") {\n color = iconTokens.action.default\n } else if (colour === \"action-inverse\") {\n color = iconTokens.action.inverse\n } else {\n color = iconTokens[colour]\n }\n\n const sizing = theme.tokens.components.icons.sizing.icons\n const categorySizing = sizing[category] as unknown as Record<string, string>\n const dimension = parseTokenValue(categorySizing[size])\n\n return (\n <StyledIconRoot\n ref={ref}\n iconDimension={dimension}\n accessibilityRole={ariaLabel ? \"image\" : undefined}\n accessibilityLabel={ariaLabel}\n accessible={!!ariaLabel}\n {...rest}\n >\n <IconComponent width={dimension} height={dimension} color={color} />\n </StyledIconRoot>\n )\n }\n)\n\nIcon.displayName = \"Icon\"\n\nexport { Icon }\nexport type { IconProps, PawprintIcon, IconCategory, IconSize, IconColour }\n","import React from \"react\"\nimport { View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport { Typography } from \"../Typography\"\nimport { Icon, type PawprintIcon } from \"../Icon\"\n\ntype BadgeVariant = \"primary\" | \"promo\" | \"success\" | \"warning\" | \"error\"\ntype BadgeSize = \"small\" | \"medium\" | \"large\"\n\ntype BaseBadgeProps = {\n children: React.ReactNode\n variant?: BadgeVariant\n size?: BadgeSize\n icon?: PawprintIcon\n}\n\ntype PinnedBadgeProps = BaseBadgeProps & {\n pinned: true\n top?: number\n bottom?: number\n}\n\ntype UnpinnedBadgeProps = BaseBadgeProps & {\n pinned?: false\n top?: never\n bottom?: never\n}\n\ntype BadgeOwnProps = PinnedBadgeProps | UnpinnedBadgeProps\n\nexport type BadgeProps = BadgeOwnProps & Omit<ViewProps, keyof BadgeOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledBadge = styled(View)<{\n badgeVariant: BadgeVariant\n badgeSize: BadgeSize\n pinned: boolean\n top?: number\n bottom?: number\n}>(({ theme, badgeVariant, badgeSize, pinned, top, bottom }) => {\n const { sizing, spacing, colour, primary, pinnedBadge } =\n theme.tokens.components.badges.badge\n\n const backgroundColorMap = {\n primary: colour.background.default,\n promo: colour.background.promo,\n success: colour.background.success,\n warning: colour.background.warning,\n error: colour.background.error\n } as const\n\n const borderRadiusStyles = pinned\n ? {\n borderTopLeftRadius: parseTokenValue(\n pinnedBadge.borderRadius.leftRadius\n ),\n borderBottomLeftRadius: parseTokenValue(\n pinnedBadge.borderRadius.leftRadius\n ),\n borderTopRightRadius: parseTokenValue(\n pinnedBadge.borderRadius.rightRadius\n ),\n borderBottomRightRadius: parseTokenValue(\n pinnedBadge.borderRadius.rightRadius\n )\n }\n : {\n borderRadius: parseTokenValue(primary.borderRadius.default)\n }\n\n const positionStyles = pinned\n ? {\n position: \"absolute\" as const,\n left: 0,\n ...(top !== undefined && { top }),\n ...(bottom !== undefined && { bottom })\n }\n : {}\n\n return {\n flexDirection: \"row\" as const,\n alignItems: \"center\" as const,\n justifyContent: \"center\" as const,\n height: parseTokenValue(sizing[badgeSize].height),\n minWidth: parseTokenValue(sizing[badgeSize].minWidth),\n paddingHorizontal: parseTokenValue(spacing[badgeSize].horizontalPadding),\n gap: parseTokenValue(spacing[badgeSize].gap),\n backgroundColor: backgroundColorMap[badgeVariant],\n ...borderRadiusStyles,\n ...positionStyles\n }\n})\n\n/**\n * Badge component for displaying labels with optional icons.\n * Used to highlight status, categories, or notifications.\n *\n * @param {React.ReactNode} children - Badge label text.\n * @param {\"primary\" | \"promo\" | \"success\" | \"warning\" | \"error\"} [variant=\"primary\"] - Visual style variant.\n * @param {\"small\" | \"medium\" | \"large\"} [size=\"medium\"] - Size of the badge.\n * @param {boolean} [pinned=false] - If true, applies pinned styling and positions absolutely to the left edge.\n * @param {PawprintIcon} [icon] - Optional icon from @butternutbox/pawprint-icons.\n * @param {number} [top] - Top position when pinned.\n * @param {number} [bottom] - Bottom position when pinned.\n *\n * @example\n * <Badge>New</Badge>\n * <Badge variant=\"success\" size=\"large\" icon={CheckCircle}>Verified</Badge>\n *\n * @example\n * <View style={{ position: \"relative\" }}>\n * <Badge variant=\"promo\" pinned top={16}>Special</Badge>\n * </View>\n */\nexport const Badge = React.forwardRef<View, BadgeProps>(\n (\n {\n variant = \"primary\",\n size = \"medium\",\n pinned = false,\n icon,\n children,\n top,\n bottom,\n ...rest\n },\n ref\n ) => {\n const theme = useTheme()\n const { typography, colour } = theme.tokens.components.badges.badge\n\n const iconSizeMap = {\n small: \"xs\",\n medium: \"xs\",\n large: \"sm\"\n } as const\n\n const iconColourMap = {\n primary: \"primary\",\n promo: \"promo\",\n success: \"alt\",\n warning: \"alt\",\n error: \"alt\"\n } as const\n\n const textColorMap = {\n primary: colour.text.primary,\n promo: colour.text.promo,\n success: colour.text.default,\n warning: colour.text.default,\n error: colour.text.default\n }\n\n return (\n <StyledBadge\n ref={ref}\n badgeVariant={variant}\n badgeSize={size}\n pinned={pinned}\n top={top}\n bottom={bottom}\n {...rest}\n >\n {icon && (\n <Icon\n icon={icon}\n size={iconSizeMap[size]}\n colour={iconColourMap[variant]}\n />\n )}\n <Typography\n token={typography[size].default}\n color={textColorMap[variant]}\n >\n {children}\n </Typography>\n </StyledBadge>\n )\n }\n)\n\nBadge.displayName = \"Badge\"\n","import React, { useEffect, useRef } from \"react\"\nimport { Animated, Easing, View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\n\ntype SpinnerSize = \"sm\" | \"md\" | \"lg\"\ntype SpinnerVariant = \"dark\" | \"light\"\n\ntype SpinnerOwnProps = {\n size?: SpinnerSize\n variant?: SpinnerVariant\n}\n\ntype SpinnerProps = SpinnerOwnProps & Omit<ViewProps, keyof SpinnerOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledSpinner = styled(View)({})\n\n/**\n * A spinner component for indicating indeterminate loading states.\n *\n * @example\n * ```tsx\n * import { Spinner } from \"@butternutbox/pawprint-native\"\n *\n * <Spinner />\n * <Spinner size=\"lg\" variant=\"light\" />\n * ```\n *\n * @param size - *(optional)* Size variant: sm, md (default), lg\n * @param variant - *(optional)* Colour variant: dark (default), light\n */\nconst Spinner = React.forwardRef<View, SpinnerProps>(\n ({ size = \"md\", variant = \"dark\", style, ...rest }, ref) => {\n const theme = useTheme()\n const spinAnim = useRef(new Animated.Value(0)).current\n\n const { size: sizeTokens, colour } = theme.tokens.components.spinner\n const borderWidth = parseTokenValue(\n theme.tokens.semantics.dimensions.borderWidth.md\n )\n const baseColor = colour.background.base[variant]\n const progressColor = colour.background.progress[variant]\n const dimension = parseTokenValue(sizeTokens[size])\n\n useEffect(() => {\n const animation = Animated.loop(\n Animated.timing(spinAnim, {\n toValue: 1,\n duration: 600,\n easing: Easing.linear,\n useNativeDriver: true\n })\n )\n animation.start()\n return () => animation.stop()\n }, [spinAnim])\n\n const spin = spinAnim.interpolate({\n inputRange: [0, 1],\n outputRange: [\"0deg\", \"360deg\"]\n })\n\n return (\n <StyledSpinner ref={ref} {...rest}>\n <Animated.View\n accessibilityRole=\"progressbar\"\n accessibilityLabel=\"Loading\"\n style={[\n {\n width: dimension,\n height: dimension,\n borderRadius: dimension / 2,\n borderWidth,\n borderColor: baseColor,\n borderTopColor: progressColor,\n transform: [{ rotate: spin }]\n },\n style\n ]}\n />\n </StyledSpinner>\n )\n }\n)\n\nSpinner.displayName = \"Spinner\"\n\nexport { Spinner }\nexport type { SpinnerProps, SpinnerSize, SpinnerVariant }\n","import React from \"react\"\nimport { Pressable, View, PressableProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport { Typography } from \"../Typography\"\nimport { Spinner } from \"../Spinner\"\nimport { resolveFont } from \"../../../fonts\"\n\ntype ButtonVariant = \"filled\" | \"outlined\" | \"text\"\ntype ButtonSize = \"sm\" | \"md\" | \"lg\"\ntype ButtonColour = \"primary\" | \"secondary\"\n\ntype ButtonOwnProps = {\n variant?: ButtonVariant\n size?: ButtonSize\n colour?: ButtonColour\n loading?: boolean\n fullWidth?: boolean\n startIcon?: React.ReactNode\n endIcon?: React.ReactNode\n children?: React.ReactNode\n}\n\ntype ButtonProps = ButtonOwnProps &\n Omit<PressableProps, keyof ButtonOwnProps | \"children\">\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst sizeToTypographyKey: Record<ButtonSize, string> = {\n lg: \"large\",\n md: \"medium\",\n sm: \"small\"\n}\n\nconst IconWrapper = styled(View)({\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0\n})\n\nconst StyledButton = styled(Pressable)<{\n buttonHeight: number\n buttonMinWidth: number\n buttonPaddingHorizontal: number\n buttonPaddingVertical: number\n buttonGap: number\n buttonBorderRadius: number\n buttonBgColor: string\n buttonOpacity: number\n buttonBorderWidth?: number\n buttonBorderColor?: string\n buttonFullWidth: boolean\n}>(\n ({\n buttonHeight,\n buttonMinWidth,\n buttonPaddingHorizontal,\n buttonPaddingVertical,\n buttonGap,\n buttonBorderRadius,\n buttonBgColor,\n buttonOpacity,\n buttonBorderWidth,\n buttonBorderColor,\n buttonFullWidth\n }) => ({\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n height: buttonHeight,\n minWidth: buttonMinWidth,\n paddingHorizontal: buttonPaddingHorizontal,\n paddingVertical: buttonPaddingVertical,\n gap: buttonGap,\n borderRadius: buttonBorderRadius,\n backgroundColor: buttonBgColor,\n opacity: buttonOpacity,\n ...(buttonBorderWidth\n ? { borderWidth: buttonBorderWidth, borderColor: buttonBorderColor }\n : {}),\n ...(buttonFullWidth ? { width: \"100%\" } : {})\n })\n)\n\nconst StyledTextWrapper = styled(View)<{\n textOpacity: number\n}>(({ textOpacity }) => ({\n opacity: textOpacity\n}))\n\nconst StyledSpinnerWrapper = styled(View)({\n position: \"absolute\",\n alignItems: \"center\",\n justifyContent: \"center\"\n})\n\n/**\n * A button component with token-based styling.\n *\n * Supports `filled` (default), `outlined`, and `text` variants.\n *\n * @example\n * ```tsx\n * import { Button } from \"@butternutbox/pawprint-native\"\n *\n * <Button variant=\"filled\" colour=\"primary\" size=\"md\">Click me</Button>\n * <Button variant=\"text\">Text button</Button>\n * ```\n *\n * @param variant - *(optional)* Visual variant: filled (default), outlined, or text.\n * @param size - *(optional)* Size variant: sm, md (default), lg\n * @param colour - *(optional)* Colour variant: primary (default), secondary\n * @param loading - *(optional)* Shows spinner and disables interaction\n * @param fullWidth - *(optional)* Stretches button to fill its container\n * @param startIcon - *(optional)* Leading icon element\n * @param endIcon - *(optional)* Trailing icon element\n */\nconst Button = React.forwardRef<View, ButtonProps>(\n (\n {\n variant = \"filled\",\n size = \"md\",\n colour = \"primary\",\n loading = false,\n fullWidth = false,\n startIcon,\n endIcon,\n children,\n disabled,\n ...rest\n },\n ref\n ) => {\n const theme = useTheme()\n const isDisabled = disabled || loading\n const buttons = theme.tokens.components.buttons\n const sizeTokens = buttons.size[size]\n const spacingTokens = buttons.spacing[size]\n const typographyKey = sizeToTypographyKey[size]\n const typography = buttons.text[\n typographyKey as keyof typeof buttons.text\n ] as unknown as Record<string, string>\n\n resolveFont(typography.fontFamily, typography.fontWeight)\n\n const [pressed, setPressed] = React.useState(false)\n\n const getVariantStyles = (\n isPressed: boolean\n ): {\n backgroundColor: string\n borderWidth?: number\n borderColor?: string\n textColor: string\n spinnerColor: string\n } => {\n if (variant === \"filled\") {\n const bgTokens = buttons.filledButton.colour.background[colour]\n const textToken = buttons.filledButton.colour.text[colour].default\n return {\n backgroundColor: isDisabled\n ? bgTokens.disabled\n : isPressed\n ? bgTokens.selected\n : bgTokens.default,\n textColor: textToken,\n spinnerColor: textToken\n }\n }\n\n if (variant === \"outlined\") {\n const outline = buttons.outlineButton\n return {\n backgroundColor:\n loading || isPressed\n ? outline.colour.background.selected\n : \"transparent\",\n borderWidth: parseTokenValue(outline.border.default),\n borderColor: outline.colour.border.default,\n textColor:\n loading || isPressed\n ? outline.colour.text.selected\n : outline.colour.text.default,\n spinnerColor: outline.colour.text.selected\n }\n }\n\n // text variant\n const text = buttons.textButton\n return {\n backgroundColor:\n loading || isPressed ? text.background.selected : \"transparent\",\n textColor:\n loading || isPressed ? text.text.selected : text.text.default,\n spinnerColor: text.text.selected\n }\n }\n\n const variantStyles = getVariantStyles(pressed)\n\n return (\n <StyledButton\n ref={ref}\n disabled={isDisabled}\n accessibilityState={{ disabled: isDisabled, busy: loading }}\n onPressIn={() => setPressed(true)}\n onPressOut={() => setPressed(false)}\n buttonHeight={parseTokenValue(sizeTokens.height)}\n buttonMinWidth={parseTokenValue(sizeTokens.minWidth)}\n buttonPaddingHorizontal={parseTokenValue(\n spacingTokens.horizontalPadding\n )}\n buttonPaddingVertical={parseTokenValue(spacingTokens.verticalPadding)}\n buttonGap={parseTokenValue(spacingTokens.gap)}\n buttonBorderRadius={parseTokenValue(buttons.borderRadius.default)}\n buttonBgColor={variantStyles.backgroundColor}\n buttonOpacity={\n isDisabled && !loading ? parseFloat(buttons.opacity.disabled) : 1\n }\n buttonBorderWidth={variantStyles.borderWidth}\n buttonBorderColor={variantStyles.borderColor}\n buttonFullWidth={fullWidth}\n {...rest}\n >\n {startIcon && <IconWrapper>{startIcon}</IconWrapper>}\n <StyledTextWrapper textOpacity={loading ? 0 : 1}>\n <Typography\n token={{\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeight,\n fontSize: typography.fontSize,\n lineHeight: typography.fontSize,\n letterSpacing: typography.letterSpacing\n }}\n color={variantStyles.textColor as never}\n >\n {children}\n </Typography>\n </StyledTextWrapper>\n {endIcon && <IconWrapper>{endIcon}</IconWrapper>}\n {loading && (\n <StyledSpinnerWrapper>\n <Spinner\n size={size}\n style={{\n borderColor: \"transparent\",\n borderTopColor: variantStyles.spinnerColor\n }}\n />\n </StyledSpinnerWrapper>\n )}\n </StyledButton>\n )\n }\n)\n\nButton.displayName = \"Button\"\n\nexport { Button }\nexport type { ButtonProps, ButtonVariant, ButtonSize, ButtonColour }\n","import React from \"react\"\nimport { View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\n\ntype HintVariant = \"default\" | \"success\" | \"warning\" | \"error\"\n\ntype HintOwnProps = {\n variant?: HintVariant\n}\n\nexport type HintProps = HintOwnProps & Omit<ViewProps, keyof HintOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledHint = styled(View)<{ hintVariant: HintVariant }>(({\n theme,\n hintVariant\n}) => {\n const {\n badge,\n hint: {\n colour: { background }\n }\n } = theme.tokens.components.badges\n\n const hintVariantMap = {\n default: background.default,\n success: background.success,\n warning: background.warning,\n error: background.error\n } as const\n\n const size = parseTokenValue(badge.hint.sizing.default)\n\n return {\n width: size,\n height: size,\n borderRadius: size / 2,\n backgroundColor: hintVariantMap[hintVariant]\n }\n})\n\n/**\n * Hint component for displaying notification indicators.\n * A small circular dot used to draw attention or indicate status.\n *\n * @param {\"default\" | \"success\" | \"warning\" | \"error\"} [variant=\"default\"] - Visual style variant.\n *\n * @example\n * <Hint variant=\"success\" />\n * <Hint variant=\"error\" />\n */\nexport const Hint = React.forwardRef<View, HintProps>(\n ({ variant = \"default\", ...rest }, ref) => {\n return <StyledHint ref={ref} hintVariant={variant} {...rest} />\n }\n)\n\nHint.displayName = \"Hint\"\n","import React from \"react\"\nimport { Pressable, View, PressableProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport { Spinner } from \"../Spinner\"\nimport type { PawprintIcon } from \"../Icon\"\n\ntype IconButtonVariant = \"filled\" | \"outlined\" | \"text\"\ntype IconButtonSize = \"sm\" | \"md\" | \"lg\"\ntype IconButtonColour = \"primary\" | \"secondary\" | \"tertiary\"\n\ntype IconButtonOwnProps = {\n icon: PawprintIcon\n variant?: IconButtonVariant\n size?: IconButtonSize\n colour?: IconButtonColour\n loading?: boolean\n disabled?: boolean\n \"aria-label\": string\n}\n\ntype IconButtonProps = IconButtonOwnProps &\n Omit<PressableProps, keyof IconButtonOwnProps | \"children\">\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst sizeToIconSizeToken = {\n lg: \"xl\",\n md: \"lg\",\n sm: \"md\"\n} as const\n\nconst StyledIconButton = styled(Pressable)<{\n buttonDimension: number\n buttonBorderRadius: number\n buttonBgColor: string\n buttonOpacity: number\n buttonBorderWidth?: number\n buttonBorderColor?: string\n}>(\n ({\n buttonDimension,\n buttonBorderRadius,\n buttonBgColor,\n buttonOpacity,\n buttonBorderWidth,\n buttonBorderColor\n }) => ({\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n width: buttonDimension,\n height: buttonDimension,\n borderRadius: buttonBorderRadius,\n backgroundColor: buttonBgColor,\n opacity: buttonOpacity,\n ...(buttonBorderWidth\n ? { borderWidth: buttonBorderWidth, borderColor: buttonBorderColor }\n : {})\n })\n)\n\nconst StyledIconWrapper = styled(View)<{\n iconDimension: number\n iconOpacity: number\n}>(({ iconDimension, iconOpacity }) => ({\n width: iconDimension,\n height: iconDimension,\n opacity: iconOpacity\n}))\n\nconst StyledSpinnerWrapper = styled(View)({\n position: \"absolute\",\n alignItems: \"center\",\n justifyContent: \"center\"\n})\n\n/**\n * A circular icon-only button with token-based styling.\n *\n * @example\n * ```tsx\n * import { IconButton } from \"@butternutbox/pawprint-native\"\n * import { Add } from \"@butternutbox/pawprint-icons/core\"\n *\n * <IconButton icon={Add} aria-label=\"Add item\" />\n * <IconButton icon={Add} variant=\"outlined\" aria-label=\"Add item\" />\n * ```\n *\n * @param icon - **(required)** Icon component\n * @param variant - *(optional)* Visual variant: filled (default), outlined, or text.\n * @param size - *(optional)* Size variant: sm, md (default), lg\n * @param colour - *(optional)* Colour variant: primary (default), secondary, tertiary\n * @param loading - *(optional)* Shows spinner and disables interaction\n * @param aria-label - **(required)** Accessible label for the button\n */\nconst IconButton = React.forwardRef<View, IconButtonProps>(\n (\n {\n icon: IconComponent,\n variant = \"filled\",\n size = \"md\",\n colour = \"primary\",\n loading = false,\n disabled,\n \"aria-label\": ariaLabel,\n ...rest\n },\n ref\n ) => {\n const theme = useTheme()\n const isDisabled = disabled || loading\n const buttons = theme.tokens.components.buttons\n const sizeTokens = buttons.size[size]\n const dimension = parseTokenValue(sizeTokens.height)\n const iconSizing = theme.tokens.components.icons.sizing.icons.core\n const iconDimension = parseTokenValue(iconSizing[sizeToIconSizeToken[size]])\n\n const [pressed, setPressed] = React.useState(false)\n\n const getVariantStyles = (\n isPressed: boolean\n ): {\n backgroundColor: string\n borderWidth?: number\n borderColor?: string\n iconColor: string\n } => {\n if (variant === \"filled\") {\n const filled = buttons.iconButton.filledButton\n const bgTokens = filled.colour.background[colour]\n const iconTokens = filled.colour.icon[colour]\n const hasStatefulIconColor =\n \"hover\" in (iconTokens as unknown as Record<string, unknown>)\n return {\n backgroundColor: isDisabled\n ? bgTokens.disabled\n : loading || isPressed\n ? bgTokens.selected\n : bgTokens.default,\n iconColor:\n (loading || isPressed) && hasStatefulIconColor\n ? (iconTokens as unknown as Record<string, string>).selected\n : (iconTokens as unknown as Record<string, string>).default\n }\n }\n\n if (variant === \"outlined\") {\n const outline = buttons.iconButton.outlineButton\n return {\n backgroundColor:\n loading || isPressed\n ? outline.colour.background.selected\n : \"transparent\",\n borderWidth: parseTokenValue(outline.border.default),\n borderColor: outline.colour.border.default,\n iconColor:\n loading || isPressed\n ? outline.colour.icon.selected\n : outline.colour.icon.default\n }\n }\n\n // text variant\n const text = buttons.iconButton.textButton\n return {\n backgroundColor:\n loading || isPressed ? text.background.selected : \"transparent\",\n iconColor: loading || isPressed ? text.icon.selected : text.icon.default\n }\n }\n\n const variantStyles = getVariantStyles(pressed)\n\n return (\n <StyledIconButton\n ref={ref}\n disabled={isDisabled}\n accessibilityLabel={ariaLabel}\n accessibilityState={{ disabled: isDisabled, busy: loading }}\n onPressIn={() => setPressed(true)}\n onPressOut={() => setPressed(false)}\n buttonDimension={dimension}\n buttonBorderRadius={parseTokenValue(buttons.borderRadius.default)}\n buttonBgColor={variantStyles.backgroundColor}\n buttonOpacity={\n isDisabled && !loading ? parseFloat(buttons.opacity.disabled) : 1\n }\n buttonBorderWidth={variantStyles.borderWidth}\n buttonBorderColor={variantStyles.borderColor}\n {...rest}\n >\n <StyledIconWrapper\n iconDimension={iconDimension}\n iconOpacity={loading ? 0 : 1}\n >\n <IconComponent\n width={iconDimension}\n height={iconDimension}\n color={variantStyles.iconColor}\n />\n </StyledIconWrapper>\n {loading && (\n <StyledSpinnerWrapper>\n <Spinner\n size={size}\n style={{\n borderColor: \"transparent\",\n borderTopColor: \"currentColor\"\n }}\n />\n </StyledSpinnerWrapper>\n )}\n </StyledIconButton>\n )\n }\n)\n\nIconButton.displayName = \"IconButton\"\n\nexport { IconButton }\nexport type {\n IconButtonProps,\n IconButtonVariant,\n IconButtonSize,\n IconButtonColour\n}\n","import React from \"react\"\nimport { View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\n\ntype IllustrationSize = \"sm\" | \"lg\"\n\ntype PawprintIllustration = React.ComponentType<{\n width?: number\n height?: number\n}>\n\ntype IllustrationOwnProps = {\n illustration: PawprintIllustration\n size?: IllustrationSize\n \"aria-label\"?: string\n}\n\ntype IllustrationProps = IllustrationOwnProps &\n Omit<ViewProps, keyof IllustrationOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledRoot = styled(View)<{\n illustrationHeight: number\n}>(({ illustrationHeight }) => ({\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n height: illustrationHeight\n}))\n\n/**\n * Renders a multi-colour SVG illustration with token-based sizing.\n *\n * @example\n * ```tsx\n * import { Illustration } from \"@butternutbox/pawprint-native\"\n * import { DogSittingFilled } from \"@butternutbox/pawprint-illustrations/poses\"\n *\n * <Illustration illustration={DogSittingFilled} size=\"sm\" aria-label=\"Dog sitting\" />\n * ```\n *\n * @param illustration - **(required)** Illustration component\n * @param size - *(optional)* Size variant: sm (default), lg\n * @param aria-label - *(optional)* Accessible label\n */\nconst Illustration = React.forwardRef<View, IllustrationProps>(\n (\n {\n illustration: IllustrationComponent,\n size = \"sm\",\n \"aria-label\": ariaLabel,\n ...rest\n },\n ref\n ) => {\n const theme = useTheme()\n const dimension = parseTokenValue(\n theme.tokens.components.illustrations.sizing.illustrations[size]\n )\n\n return (\n <StyledRoot\n ref={ref}\n illustrationHeight={dimension}\n accessibilityRole={ariaLabel ? \"image\" : undefined}\n accessibilityLabel={ariaLabel}\n accessible={!!ariaLabel}\n {...rest}\n >\n <IllustrationComponent height={dimension} />\n </StyledRoot>\n )\n }\n)\n\nIllustration.displayName = \"Illustration\"\n\nexport { Illustration }\nexport type { IllustrationProps, PawprintIllustration, IllustrationSize }\n","import React from \"react\"\nimport { View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport { Typography } from \"../Typography\"\nimport type { InputState } from \"./InputField\"\n\ntype InputLabelOwnProps = {\n optionalText?: string\n state?: InputState\n children: React.ReactNode\n}\n\nexport type InputLabelProps = InputLabelOwnProps &\n Omit<ViewProps, keyof InputLabelOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledLabelRow = styled(View)<{\n labelGap: number\n}>(({ labelGap }) => ({\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: labelGap\n}))\n\n/**\n * Label component for Input fields.\n *\n * @param optionalText - Optional text to display next to label (e.g., \"(optional)\")\n * @param state - Visual state of the input (affects label color for error state)\n * @param children - Label text content\n */\nexport const InputLabel = React.forwardRef<View, InputLabelProps>(\n ({ optionalText, state = \"default\", children, ...rest }, ref) => {\n const theme = useTheme()\n const { colour, text, spacing } = theme.tokens.components.inputs\n\n return (\n <StyledLabelRow\n ref={ref}\n labelGap={parseTokenValue(spacing.label.gap)}\n {...rest}\n >\n <Typography\n token={text.label}\n color={state === \"error\" ? colour.label.error : colour.label.default}\n >\n {children}\n </Typography>\n {optionalText && (\n <Typography token={text.optional} color={colour.label.optional}>\n {optionalText}\n </Typography>\n )}\n </StyledLabelRow>\n )\n }\n)\n\nInputLabel.displayName = \"Input.Label\"\n","import React from \"react\"\nimport { View, TextInput, TextInputProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\n\nexport type InputState = \"default\" | \"error\" | \"success\"\n\ntype InputFieldOwnProps = {\n leadingIcon?: React.ReactNode\n trailingIcon?: React.ReactNode\n state?: InputState\n}\n\nexport type InputFieldProps = InputFieldOwnProps &\n Omit<TextInputProps, keyof InputFieldOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledInputWrapper = styled(View)<{\n wrapperGap: number\n wrapperMinWidth: number\n wrapperHeight: number\n wrapperPaddingVertical: number\n wrapperPaddingHorizontal: number\n wrapperBgColor: string\n wrapperBorderWidth: number\n wrapperBorderColor: string\n wrapperBorderRadius: number\n}>(\n ({\n wrapperGap,\n wrapperMinWidth,\n wrapperHeight,\n wrapperPaddingVertical,\n wrapperPaddingHorizontal,\n wrapperBgColor,\n wrapperBorderWidth,\n wrapperBorderColor,\n wrapperBorderRadius\n }) => ({\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: wrapperGap,\n minWidth: wrapperMinWidth,\n width: \"100%\",\n height: wrapperHeight,\n paddingVertical: wrapperPaddingVertical,\n paddingHorizontal: wrapperPaddingHorizontal,\n backgroundColor: wrapperBgColor,\n borderWidth: wrapperBorderWidth,\n borderColor: wrapperBorderColor,\n borderRadius: wrapperBorderRadius\n })\n)\n\nconst StyledInput = styled(TextInput)<{\n inputColor: string\n}>(({ inputColor }) => ({\n flex: 1,\n minWidth: 0,\n minHeight: 0,\n padding: 0,\n color: inputColor\n}))\n\nconst StyledIconSlot = styled(View)({\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0\n})\n\n/**\n * InputField component - The input field wrapper with icons and visual states.\n *\n * @param {React.ReactNode} [leadingIcon] - Icon to display before the input\n * @param {React.ReactNode} [trailingIcon] - Icon to display after the input\n * @param {InputState} [state] - Visual state of the input (default, error, success)\n */\nexport const InputField = React.forwardRef<TextInput, InputFieldProps>(\n ({ leadingIcon, trailingIcon, state = \"default\", style, ...rest }, ref) => {\n const theme = useTheme()\n const { spacing, colour, borderWidth, borderRadius, size } =\n theme.tokens.components.inputs\n\n const stateBorderColorMap = {\n error: colour.field.border.error,\n success: colour.field.border.success,\n default: colour.field.border.default\n }\n\n return (\n <StyledInputWrapper\n wrapperGap={parseTokenValue(spacing.field.gap)}\n wrapperMinWidth={parseTokenValue(size.field.minWidth)}\n wrapperHeight={parseTokenValue(size.field.height)}\n wrapperPaddingVertical={parseTokenValue(spacing.field.verticalPadding)}\n wrapperPaddingHorizontal={parseTokenValue(\n spacing.field.horizontalPadding\n )}\n wrapperBgColor={colour.field.background.default}\n wrapperBorderWidth={parseTokenValue(borderWidth.field.default)}\n wrapperBorderColor={stateBorderColorMap[state]}\n wrapperBorderRadius={parseTokenValue(borderRadius.field.default)}\n >\n {leadingIcon && <StyledIconSlot>{leadingIcon}</StyledIconSlot>}\n <StyledInput\n ref={ref}\n inputColor={colour.field.text.default}\n style={style}\n placeholderTextColor={colour.field.text.placeholder}\n {...rest}\n />\n {trailingIcon && <StyledIconSlot>{trailingIcon}</StyledIconSlot>}\n </StyledInputWrapper>\n )\n }\n)\n\nInputField.displayName = \"Input.Field\"\n","import React from \"react\"\nimport { View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport { Typography } from \"../Typography\"\nimport type { InputState } from \"./InputField\"\n\ntype InputDescriptionOwnProps = {\n state?: InputState\n children: React.ReactNode\n}\n\nexport type InputDescriptionProps = InputDescriptionOwnProps &\n Omit<ViewProps, keyof InputDescriptionOwnProps>\n\nconst StyledDescriptionRow = styled(View)({\n flexDirection: \"row\",\n alignItems: \"center\"\n})\n\n/**\n * Description/help text component for Input fields.\n *\n * @param state - Visual state of the input (affects description color for error state)\n * @param children - Description text content\n */\nexport const InputDescription = React.forwardRef<View, InputDescriptionProps>(\n ({ state = \"default\", children, ...rest }, ref) => {\n const theme = useTheme()\n const { colour, description } = theme.tokens.components.inputs\n\n return (\n <StyledDescriptionRow ref={ref} {...rest}>\n <Typography\n token={description.text.default}\n color={\n state === \"error\"\n ? colour.description.error\n : colour.description.default\n }\n >\n {children}\n </Typography>\n </StyledDescriptionRow>\n )\n }\n)\n\nInputDescription.displayName = \"Input.Description\"\n","import React from \"react\"\nimport { View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport { Typography } from \"../Typography\"\n\nexport type InputErrorProps = {\n children?: React.ReactNode\n} & ViewProps\n\nconst StyledErrorRow = styled(View)({\n flexDirection: \"row\",\n alignItems: \"center\"\n})\n\n/**\n * Error message component for Input fields.\n *\n * @param children - Error message text\n */\nexport const InputError = React.forwardRef<View, InputErrorProps>(\n ({ children, ...rest }, ref) => {\n const theme = useTheme()\n const { colour, description } = theme.tokens.components.inputs\n\n return (\n <StyledErrorRow ref={ref} {...rest}>\n <Typography\n token={description.text.default}\n color={colour.description.error}\n >\n {children}\n </Typography>\n </StyledErrorRow>\n )\n }\n)\n\nInputError.displayName = \"Input.Error\"\n","import React from \"react\"\nimport { View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { InputLabel } from \"./InputLabel\"\nimport { InputField, type InputFieldProps, type InputState } from \"./InputField\"\nimport { InputDescription } from \"./InputDescription\"\nimport { InputError } from \"./InputError\"\n\ntype InputOwnProps = {\n label?: string\n description?: string\n error?: string\n state?: InputState\n optionalText?: string\n}\n\nexport type InputProps = InputOwnProps &\n Omit<InputFieldProps, keyof InputOwnProps> &\n Omit<ViewProps, keyof InputOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledRoot = styled(View)(({ theme }) => {\n const { spacing } = theme.tokens.components.inputs\n\n return {\n gap: parseTokenValue(spacing.gap)\n }\n})\n\n/**\n * Text input component for collecting user data.\n * Supports both a simple props API and a flexible compound component API.\n *\n * **Simple Props API:**\n * @example\n * <Input\n * label=\"Email\"\n * placeholder=\"you@butternutbox.com\"\n * description=\"We'll never share your email\"\n * error=\"Invalid email address\"\n * state=\"error\"\n * optionalText=\"(optional)\"\n * />\n *\n * **Compound Component API:**\n * @example\n * <Input.Root>\n * <Input.Label optionalText=\"(optional)\">Email</Input.Label>\n * <Input.Field placeholder=\"you@butternutbox.com\" />\n * <Input.Description>We'll never share your email</Input.Description>\n * <Input.Error>Invalid email</Input.Error>\n * </Input.Root>\n */\nconst InputRoot = React.forwardRef<View, InputProps>(\n (\n {\n label,\n description,\n error,\n state = \"default\",\n optionalText,\n children,\n // InputField props\n ...inputFieldProps\n },\n ref\n ) => {\n // If children are provided, use compound component API\n if (children) {\n return <StyledRoot ref={ref}>{children}</StyledRoot>\n }\n\n // Otherwise use Props API\n return (\n <StyledRoot ref={ref}>\n {label && (\n <InputLabel optionalText={optionalText} state={state}>\n {label}\n </InputLabel>\n )}\n <InputField state={state} {...inputFieldProps} />\n {description && (\n <InputDescription state={state}>{description}</InputDescription>\n )}\n {error && state === \"error\" && <InputError>{error}</InputError>}\n </StyledRoot>\n )\n }\n)\n\nInputRoot.displayName = \"Input\"\n\ntype InputComponent = React.ForwardRefExoticComponent<\n InputProps & React.RefAttributes<View>\n> & {\n Root: typeof StyledRoot\n Label: typeof InputLabel\n Field: typeof InputField\n Description: typeof InputDescription\n Error: typeof InputError\n}\n\nexport const Input = Object.assign(InputRoot, {\n Root: StyledRoot,\n Label: InputLabel,\n Field: InputField,\n Description: InputDescription,\n Error: InputError\n}) as InputComponent\n","import React from \"react\"\nimport {\n Pressable,\n View,\n PressableProps,\n Linking,\n ViewStyle\n} from \"react-native\"\nimport { useTheme } from \"@emotion/react\"\nimport { Typography } from \"../Typography\"\n\nexport type LinkSize = \"sm\" | \"md\" | \"lg\"\nexport type LinkWeight = \"medium\" | \"semiBold\" | \"bold\"\n\ntype LinkOwnProps = {\n weight?: LinkWeight\n standalone?: boolean\n size?: LinkSize\n disabled?: boolean\n href?: string\n children?: React.ReactNode\n}\n\nexport type LinkProps = LinkOwnProps &\n Omit<PressableProps, keyof LinkOwnProps | \"children\">\n\n/**\n * Link component for navigational elements.\n *\n * - Inline (default) — underlined, inherits font size from surrounding context.\n * - Standalone — includes a trailing arrow indicator.\n *\n * @param {\"sm\" | \"md\" | \"lg\"} [size=\"md\"] - Size of standalone link text.\n * @param {\"medium\" | \"semiBold\" | \"bold\"} [weight=\"semiBold\"] - Font weight.\n * @param {boolean} [standalone=false] - Renders with a trailing arrow.\n * @param {boolean} [disabled=false] - Disables the link.\n * @param {string} [href] - URL to open when pressed.\n *\n * @example\n * <Link href=\"https://example.com\" standalone>Find out more</Link>\n */\nexport const Link = React.forwardRef<View, LinkProps>(\n (\n {\n size = \"md\",\n weight = \"semiBold\",\n standalone = false,\n disabled = false,\n href,\n children,\n onPress,\n style,\n ...rest\n },\n ref\n ) => {\n const theme = useTheme()\n const { typography, colour } = theme.tokens.semantics\n const linkColour = colour.text.link\n\n const handlePress = (\n e: Parameters<NonNullable<PressableProps[\"onPress\"]>>[0]\n ) => {\n if (onPress) {\n onPress(e)\n } else if (href) {\n Linking.openURL(href)\n }\n }\n\n return (\n <Pressable\n ref={ref}\n disabled={disabled}\n onPress={handlePress}\n accessibilityRole=\"link\"\n accessibilityState={{ disabled }}\n style={({ pressed }) => {\n const baseStyle: ViewStyle = {\n ...(standalone && {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 4\n }),\n opacity: disabled ? 0.5 : 1\n }\n return [\n baseStyle,\n typeof style === \"function\" ? style({ pressed }) : style\n ]\n }}\n {...rest}\n >\n {({ pressed }) => (\n <>\n <Typography\n token={typography.link[weight][size]}\n color={pressed ? linkColour.hover : linkColour.default}\n textDecoration={standalone ? \"none\" : \"underline\"}\n >\n {children}\n </Typography>\n {standalone && (\n <Typography\n token={typography.link[weight][size]}\n color={pressed ? linkColour.hover : linkColour.default}\n >\n {\" →\"}\n </Typography>\n )}\n </>\n )}\n </Pressable>\n )\n }\n)\n\nLink.displayName = \"Link\"\n","import React from \"react\"\nimport type { LogoBrand, LogoVariant } from \"./Logo\"\n\ntype LogoSvgComponent = React.ComponentType<{\n width?: number\n height?: number\n}>\n\n// Logo registry - consumers should register their logo components here\n// or provide them via a registration function\nconst LOGOS: Record<\n LogoBrand,\n Partial<Record<LogoVariant, LogoSvgComponent>>\n> = {\n butternut: {},\n psibufet: {},\n bcorp: {}\n}\n\nfunction resolveLogo(\n brand: LogoBrand,\n variant: LogoVariant\n): LogoSvgComponent | undefined {\n return LOGOS[brand]?.[variant]\n}\n\nfunction registerLogo(\n brand: LogoBrand,\n variant: LogoVariant,\n component: LogoSvgComponent\n): void {\n if (!LOGOS[brand]) {\n LOGOS[brand] = {}\n }\n LOGOS[brand][variant] = component\n}\n\nexport { resolveLogo, registerLogo, LOGOS }\nexport type { LogoSvgComponent }\n","import React from \"react\"\nimport { View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { resolveLogo } from \"./Logo.registry\"\n\ntype LogoBrand = \"butternut\" | \"psibufet\" | \"bcorp\"\ntype LogoVariant =\n | \"wordmark\"\n | \"primary\"\n | \"tabbed-top\"\n | \"tabbed-bottom\"\n | \"favicon\"\n\ntype LogoOwnProps = {\n brand: LogoBrand\n variant?: LogoVariant\n \"aria-label\"?: string\n}\n\ntype LogoProps = LogoOwnProps & Omit<ViewProps, keyof LogoOwnProps>\n\nconst StyledRoot = styled(View)({\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0\n})\n\n/**\n * Renders a brand logo SVG.\n *\n * @example\n * ```tsx\n * import { Logo } from \"@butternutbox/pawprint-native\"\n *\n * <Logo brand=\"butternut\" variant=\"primary\" aria-label=\"ButternutBox\" />\n * ```\n *\n * @param brand - **(required)** Brand: \"butternut\", \"psibufet\", or \"bcorp\"\n * @param variant - *(optional)* Logo variant (default: \"primary\"). Ignored for \"bcorp\".\n * @param aria-label - *(optional)* Accessible label\n */\nconst Logo = React.forwardRef<View, LogoProps>(\n ({ brand, variant = \"primary\", \"aria-label\": ariaLabel, ...rest }, ref) => {\n const effectiveVariant = brand === \"bcorp\" ? \"primary\" : variant\n const LogoComponent = resolveLogo(brand, effectiveVariant)\n\n if (!LogoComponent) {\n return null\n }\n\n return (\n <StyledRoot\n ref={ref}\n accessibilityRole={ariaLabel ? \"image\" : undefined}\n accessibilityLabel={ariaLabel}\n accessible={!!ariaLabel}\n {...rest}\n >\n <LogoComponent />\n </StyledRoot>\n )\n }\n)\n\nLogo.displayName = \"Logo\"\n\nexport { Logo }\nexport type { LogoProps, LogoBrand, LogoVariant }\n","import React, { useEffect, useRef } from \"react\"\nimport { View, Animated, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport * as SwitchPrimitive from \"@rn-primitives/switch\"\nimport { Typography } from \"../Typography\"\n\ntype SwitchOwnProps = {\n label?: React.ReactNode\n subText?: React.ReactNode\n disabled?: boolean\n checked?: boolean\n defaultChecked?: boolean\n onCheckedChange?: (checked: boolean) => void\n}\n\nexport type SwitchProps = SwitchOwnProps & Omit<ViewProps, keyof SwitchOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledContainer = styled(View)<{\n switchGap: number\n switchOpacity: number\n}>(({ switchGap, switchOpacity }) => ({\n flexDirection: \"row\",\n alignItems: \"flex-start\",\n gap: switchGap,\n opacity: switchOpacity\n}))\n\nconst StyledControl = styled(SwitchPrimitive.Root)<{\n switchChecked: boolean\n controlWidth: number\n controlHeight: number\n controlBorderWidth: number\n controlBorderColor: string\n controlBgChecked: string\n controlBgDefault: string\n}>(\n ({\n switchChecked,\n controlWidth,\n controlHeight,\n controlBorderWidth,\n controlBorderColor,\n controlBgChecked,\n controlBgDefault\n }) => ({\n position: \"relative\",\n width: controlWidth,\n height: controlHeight,\n minWidth: controlWidth,\n minHeight: controlHeight,\n borderRadius: controlHeight,\n borderWidth: switchChecked ? 0 : controlBorderWidth,\n borderColor: switchChecked ? \"transparent\" : controlBorderColor,\n backgroundColor: switchChecked ? controlBgChecked : controlBgDefault,\n justifyContent: \"center\"\n })\n)\n\nconst StyledThumb = styled(Animated.View)<{\n thumbSize: number\n thumbBgColor: string\n}>(({ thumbSize, thumbBgColor }) => ({\n width: thumbSize,\n height: thumbSize,\n borderRadius: thumbSize / 2,\n backgroundColor: thumbBgColor,\n position: \"absolute\"\n}))\n\nconst StyledContent = styled(View)<{\n contentGap: number\n}>(({ contentGap }) => ({\n gap: contentGap\n}))\n\n/**\n * Switch component for toggling between two states, on and off.\n *\n * @param {React.ReactNode} [label] - Main label text or content.\n * @param {React.ReactNode} [subText] - Optional descriptive subtext.\n * @param {boolean} [disabled=false] - Whether the switch is disabled.\n * @param {boolean} [checked] - Controlled checked state.\n * @param {(checked: boolean) => void} [onCheckedChange] - Controlled change handler.\n *\n * @example\n * <Switch label=\"SMS Delivery Notifications\" subText=\"I want to receive SMS notifications\" />\n */\nexport const Switch = React.forwardRef<View, SwitchProps>(\n (\n {\n label,\n subText,\n disabled = false,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n ...rest\n },\n ref\n ) => {\n const theme = useTheme()\n const { size, colour, opacity, borderWidth, spacing, typography } =\n theme.tokens.components.switch\n\n const isControlled = controlledChecked !== undefined\n const [internalChecked, setInternalChecked] = React.useState(defaultChecked)\n const isChecked = isControlled ? controlledChecked : internalChecked\n\n const controlWidth = parseTokenValue(size.control.width)\n const controlHeight = parseTokenValue(size.control.height)\n const thumbSize = parseTokenValue(size.thumb.default)\n const borderWidthValue = parseTokenValue(borderWidth.control.default)\n const outerInset = 5\n const inset = outerInset - borderWidthValue\n const translateX = controlWidth - thumbSize - outerInset * 2\n\n const animValue = useRef(new Animated.Value(isChecked ? 1 : 0)).current\n\n useEffect(() => {\n Animated.timing(animValue, {\n toValue: isChecked ? 1 : 0,\n duration: 200,\n useNativeDriver: true\n }).start()\n }, [isChecked, animValue])\n\n const thumbTranslateX = animValue.interpolate({\n inputRange: [0, 1],\n outputRange: [inset, inset + translateX]\n })\n\n const handleCheckedChange = (checked: boolean) => {\n if (!isControlled) {\n setInternalChecked(checked)\n }\n onCheckedChange?.(checked)\n }\n\n return (\n <StyledContainer\n ref={ref}\n switchGap={parseTokenValue(spacing.gap)}\n switchOpacity={disabled ? parseFloat(opacity.disabled) : 1}\n {...rest}\n >\n <StyledControl\n checked={isChecked}\n onCheckedChange={handleCheckedChange}\n disabled={disabled}\n switchChecked={isChecked}\n controlWidth={controlWidth}\n controlHeight={controlHeight}\n controlBorderWidth={borderWidthValue}\n controlBorderColor={colour.control.border.default}\n controlBgChecked={colour.control.background.selected}\n controlBgDefault={colour.control.background.default}\n >\n <SwitchPrimitive.Thumb asChild>\n <StyledThumb\n thumbSize={thumbSize}\n thumbBgColor={\n isChecked\n ? colour.thumb.background.selected\n : colour.thumb.background.default\n }\n style={{ transform: [{ translateX: thumbTranslateX }] }}\n />\n </SwitchPrimitive.Thumb>\n </StyledControl>\n\n {(label || subText) && (\n <StyledContent contentGap={parseTokenValue(spacing.content.gap)}>\n {label && (\n <Typography token={typography.label} color={colour.text.title}>\n {label}\n </Typography>\n )}\n {subText && (\n <Typography\n token={typography.subText}\n color={colour.text.subtext}\n >\n {subText}\n </Typography>\n )}\n </StyledContent>\n )}\n </StyledContainer>\n )\n }\n)\n\nSwitch.displayName = \"Switch\"\n","import React from \"react\"\nimport { View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport { Typography } from \"../Typography\"\nimport { Icon, type PawprintIcon } from \"../Icon\"\n\ntype TagVariant =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"promo\"\n | \"success\"\n | \"warning\"\n | \"error\"\n\ntype TagSize = \"small\" | \"medium\" | \"large\"\n\ntype TagOwnProps = {\n children: React.ReactNode\n variant?: TagVariant\n size?: TagSize\n icon?: PawprintIcon\n}\n\nexport type TagProps = TagOwnProps & Omit<ViewProps, keyof TagOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledTag = styled(View)<{\n tagVariant: TagVariant\n tagSize: TagSize\n}>(({ theme, tagVariant, tagSize }) => {\n const { sizing, spacing, colour, badge } = theme.tokens.components.tags\n\n const backgroundColorMap = {\n primary: colour.primary.background,\n secondary: colour.primary.secondary,\n tertiary: colour.primary.tertiery,\n promo: colour.primary.promo,\n success: colour.primary.success,\n warning: colour.primary.warning,\n error: colour.primary.error\n } as const\n\n return {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: parseTokenValue(sizing[tagSize].height),\n minWidth: parseTokenValue(sizing[tagSize].minWidth),\n paddingHorizontal: parseTokenValue(spacing.horizontalPadding),\n gap: parseTokenValue(spacing[tagSize].gap),\n borderRadius: parseTokenValue(badge.borderRadius.default),\n backgroundColor: backgroundColorMap[tagVariant]\n }\n})\n\n/**\n * Tag component for labelling and categorising content.\n *\n * @param {React.ReactNode} children - Tag label text.\n * @param {\"primary\" | \"secondary\" | \"tertiary\" | \"promo\" | \"success\" | \"warning\" | \"error\"} [variant=\"primary\"] - Visual style variant.\n * @param {\"small\" | \"medium\" | \"large\"} [size=\"medium\"] - Size of the tag.\n * @param {PawprintIcon} [icon] - Optional leading icon from @butternutbox/pawprint-icons.\n *\n * @example\n * <Tag>Company news</Tag>\n * <Tag variant=\"success\" size=\"large\" icon={CheckCircle}>Verified</Tag>\n */\nexport const Tag = React.forwardRef<View, TagProps>(\n ({ variant = \"primary\", size = \"medium\", icon, children, ...rest }, ref) => {\n const theme = useTheme()\n const { typography, colour } = theme.tokens.components.tags\n\n const iconSizeMap = {\n small: \"xs\",\n medium: \"xs\",\n large: \"sm\"\n } as const\n\n const iconColourMap = {\n primary: \"primary\",\n secondary: \"primary\",\n tertiary: \"primary\",\n promo: \"promo\",\n success: \"success\",\n warning: \"warning\",\n error: \"error\"\n } as const\n\n const textColorMap = {\n primary: colour.text.default,\n secondary: colour.text.default,\n tertiary: colour.text.default,\n promo: colour.text.promo,\n success: colour.text.success,\n warning: colour.text.warning,\n error: colour.text.error\n }\n\n return (\n <StyledTag ref={ref} tagVariant={variant} tagSize={size} {...rest}>\n {icon && (\n <Icon\n icon={icon}\n size={iconSizeMap[size]}\n colour={iconColourMap[variant]}\n />\n )}\n <Typography\n token={typography[size].default}\n color={textColorMap[variant]}\n >\n {children}\n </Typography>\n </StyledTag>\n )\n }\n)\n\nTag.displayName = \"Tag\"\n","import React from \"react\"\nimport { View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport { Typography } from \"../../atoms/Typography\"\n\ntype ButtonDockVariant = \"stacked\" | \"inline\"\n\ntype ButtonDockOwnProps = {\n variant?: ButtonDockVariant\n leadingContent?: React.ReactNode\n description?: React.ReactNode\n}\n\ntype ButtonDockProps = ButtonDockOwnProps &\n Omit<ViewProps, keyof ButtonDockOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledDockRoot = styled(View)<{\n dockBgColor: string\n dockBorderTopWidth: number\n dockBorderTopColor: string\n dockPaddingVertical: number\n}>(\n ({\n dockBgColor,\n dockBorderTopWidth,\n dockBorderTopColor,\n dockPaddingVertical\n }) => ({\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n backgroundColor: dockBgColor,\n borderTopWidth: dockBorderTopWidth,\n borderTopColor: dockBorderTopColor,\n paddingVertical: dockPaddingVertical\n })\n)\n\nconst StyledStackedInner = styled(View)({\n alignItems: \"center\",\n gap: 16,\n width: \"100%\",\n maxWidth: 520\n})\n\nconst StyledButtonGroup = styled(View)<{\n groupDirection: \"column\" | \"row\"\n groupAlign: \"stretch\" | \"center\"\n groupJustify: \"center\" | \"space-around\"\n groupGap: number\n}>(({ groupDirection, groupAlign, groupJustify, groupGap }) => ({\n flexDirection: groupDirection,\n alignItems: groupAlign,\n justifyContent: groupJustify,\n gap: groupGap,\n width: \"100%\",\n ...(groupDirection === \"column\" ? { maxWidth: 520 } : {})\n}))\n\n/**\n * A layout container for action buttons, typically placed at the bottom of a\n * page or section.\n *\n * @example\n * ```tsx\n * import { ButtonDock, Button } from \"@butternutbox/pawprint-native\"\n *\n * <ButtonDock variant=\"stacked\" description=\"Helper text\">\n * <Button fullWidth>Continue</Button>\n * <Button fullWidth variant=\"filled\" colour=\"secondary\">Back</Button>\n * </ButtonDock>\n * ```\n *\n * @param variant - *(optional)* Layout variant: stacked (default) or inline\n * @param leadingContent - *(optional)* Content rendered above buttons (stacked only)\n * @param description - *(optional)* Helper text rendered below buttons (stacked only)\n */\nconst ButtonDock = React.forwardRef<View, ButtonDockProps>(\n (\n { variant = \"stacked\", leadingContent, description, children, ...rest },\n ref\n ) => {\n const theme = useTheme()\n const { buttonDock, buttonGroup } = theme.tokens.components\n const { dimensions } = theme.tokens.semantics\n const isStacked = variant === \"stacked\"\n\n const groupGap = parseTokenValue(\n isStacked\n ? buttonGroup.spacing.stacked.gap\n : buttonGroup.spacing.sideBySide.gap\n )\n\n return (\n <StyledDockRoot\n ref={ref}\n dockBgColor={buttonDock.colour.background}\n dockBorderTopWidth={parseTokenValue(dimensions.borderWidth.sm)}\n dockBorderTopColor={buttonDock.colour.border}\n dockPaddingVertical={parseTokenValue(\n buttonDock.spacing[variant].desktop.verticalPadding\n )}\n {...rest}\n >\n {isStacked ? (\n <StyledStackedInner>\n {leadingContent}\n <StyledButtonGroup\n groupDirection=\"column\"\n groupAlign=\"stretch\"\n groupJustify=\"center\"\n groupGap={groupGap}\n >\n {children}\n </StyledButtonGroup>\n {description && (\n <Typography\n variant=\"body\"\n size=\"md\"\n weight=\"medium\"\n align=\"center\"\n >\n {typeof description === \"string\" ? description : description}\n </Typography>\n )}\n </StyledStackedInner>\n ) : (\n <StyledButtonGroup\n groupDirection=\"row\"\n groupAlign=\"center\"\n groupJustify=\"space-around\"\n groupGap={groupGap}\n >\n {children}\n </StyledButtonGroup>\n )}\n </StyledDockRoot>\n )\n }\n)\n\nButtonDock.displayName = \"ButtonDock\"\n\nexport { ButtonDock }\nexport type { ButtonDockProps, ButtonDockVariant }\n","import React from \"react\"\nimport { View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport { Typography } from \"../../atoms/Typography\"\n\nexport type ButtonGroupLayout = \"stacked\" | \"inline\"\n\ntype ButtonGroupOwnProps = {\n layout?: ButtonGroupLayout\n description?: React.ReactNode\n children: React.ReactNode\n}\n\nexport type ButtonGroupProps = ButtonGroupOwnProps &\n Omit<ViewProps, keyof ButtonGroupOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledGroupRoot = styled(View)<{\n rootGap: number\n}>(({ rootGap }) => ({\n gap: rootGap,\n alignItems: \"center\",\n width: \"100%\"\n}))\n\nconst StyledButtonRow = styled(View)<{\n rowDirection: \"row-reverse\" | \"column\"\n rowAlign?: \"center\"\n rowGap: number\n}>(({ rowDirection, rowAlign, rowGap }) => ({\n flexDirection: rowDirection,\n width: \"100%\",\n gap: rowGap,\n ...(rowAlign ? { alignItems: rowAlign } : {})\n}))\n\n/**\n * ButtonGroup arranges 1 or 2 buttons in a stacked or inline layout\n * with an optional description below.\n *\n * @example\n * ```tsx\n * <ButtonGroup description=\"Choose an option\">\n * <Button colour=\"primary\">Confirm</Button>\n * <Button colour=\"secondary\">Cancel</Button>\n * </ButtonGroup>\n * ```\n *\n * @param {\"stacked\" | \"inline\"} [layout=\"stacked\"] - Layout direction for buttons.\n * @param {React.ReactNode} [description] - Optional text displayed below the buttons.\n * @param {React.ReactNode} children - 1 or 2 Button elements.\n */\nexport const ButtonGroup = React.forwardRef<View, ButtonGroupProps>(\n ({ layout = \"stacked\", description, children, ...rest }, ref) => {\n const theme = useTheme()\n const { buttonGroup } = theme.tokens.components\n\n const isInline = layout === \"inline\"\n\n return (\n <StyledGroupRoot\n ref={ref}\n accessibilityRole=\"none\"\n rootGap={parseTokenValue(buttonGroup.spacing.gap)}\n {...rest}\n >\n <StyledButtonRow\n rowDirection={isInline ? \"row-reverse\" : \"column\"}\n rowAlign={isInline ? \"center\" : undefined}\n rowGap={parseTokenValue(\n isInline\n ? buttonGroup.spacing.sideBySide.gap\n : buttonGroup.spacing.stacked.gap\n )}\n >\n {children}\n </StyledButtonRow>\n {description && (\n <Typography\n token={buttonGroup.typography.description}\n color={buttonGroup.colour.text}\n align=\"center\"\n >\n {description}\n </Typography>\n )}\n </StyledGroupRoot>\n )\n }\n)\n\nButtonGroup.displayName = \"ButtonGroup\"\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n\nexport {\n __spreadValues,\n __spreadProps\n};\n","import {\n __spreadProps,\n __spreadValues\n} from \"./chunk-N3ETBM74.js\";\n\n// src/generated/web/core/Add.tsx\nimport { forwardRef } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar Add = (props, ref) => /* @__PURE__ */ jsx(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx(\"path\", { d: \"M18 13h-5v5c0 .55-.45 1-1 1s-1-.45-1-1v-5H6c-.55 0-1-.45-1-1s.45-1 1-1h5V6c0-.55.45-1 1-1s1 .45 1 1v5h5c.55 0 1 .45 1 1s-.45 1-1 1\" }) }));\nvar ForwardRef = forwardRef(Add);\nForwardRef.category = \"core\";\nvar Add_default = ForwardRef;\n\n// src/generated/web/core/AddCircle.tsx\nimport { forwardRef as forwardRef2 } from \"react\";\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar AddCircle = (props, ref) => /* @__PURE__ */ jsx2(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx2(\"path\", { d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m4 11h-3v3c0 .55-.45 1-1 1s-1-.45-1-1v-3H8c-.55 0-1-.45-1-1s.45-1 1-1h3V8c0-.55.45-1 1-1s1 .45 1 1v3h3c.55 0 1 .45 1 1s-.45 1-1 1\" }) }));\nvar ForwardRef2 = forwardRef2(AddCircle);\nForwardRef2.category = \"core\";\nvar AddCircle_default = ForwardRef2;\n\n// src/generated/web/core/AddCircleOutline.tsx\nimport { forwardRef as forwardRef3 } from \"react\";\nimport { jsx as jsx3 } from \"react/jsx-runtime\";\nvar AddCircleOutline = (props, ref) => /* @__PURE__ */ jsx3(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx3(\"path\", { d: \"M12 7c-.55 0-1 .45-1 1v3H8c-.55 0-1 .45-1 1s.45 1 1 1h3v3c0 .55.45 1 1 1s1-.45 1-1v-3h3c.55 0 1-.45 1-1s-.45-1-1-1h-3V8c0-.55-.45-1-1-1m0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8\" }) }));\nvar ForwardRef3 = forwardRef3(AddCircleOutline);\nForwardRef3.category = \"core\";\nvar AddCircleOutline_default = ForwardRef3;\n\n// src/generated/web/core/ArrowBack.tsx\nimport { forwardRef as forwardRef4 } from \"react\";\nimport { jsx as jsx4 } from \"react/jsx-runtime\";\nvar ArrowBack = (props, ref) => /* @__PURE__ */ jsx4(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx4(\"path\", { d: \"M19 11H7.83l4.88-4.88c.39-.39.39-1.03 0-1.42a.996.996 0 0 0-1.41 0l-6.59 6.59a.996.996 0 0 0 0 1.41l6.59 6.59a.996.996 0 1 0 1.41-1.41L7.83 13H19c.55 0 1-.45 1-1s-.45-1-1-1\" }) }));\nvar ForwardRef4 = forwardRef4(ArrowBack);\nForwardRef4.category = \"core\";\nvar ArrowBack_default = ForwardRef4;\n\n// src/generated/web/core/ArrowDownward.tsx\nimport { forwardRef as forwardRef5 } from \"react\";\nimport { jsx as jsx5 } from \"react/jsx-runtime\";\nvar ArrowDownward = (props, ref) => /* @__PURE__ */ jsx5(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx5(\"path\", { d: \"M11 5v11.17l-4.88-4.88c-.39-.39-1.03-.39-1.42 0a.996.996 0 0 0 0 1.41l6.59 6.59c.39.39 1.02.39 1.41 0l6.59-6.59a.996.996 0 1 0-1.41-1.41L13 16.17V5c0-.55-.45-1-1-1s-1 .45-1 1\" }) }));\nvar ForwardRef5 = forwardRef5(ArrowDownward);\nForwardRef5.category = \"core\";\nvar ArrowDownward_default = ForwardRef5;\n\n// src/generated/web/core/ArrowDropDown.tsx\nimport { forwardRef as forwardRef6 } from \"react\";\nimport { jsx as jsx6 } from \"react/jsx-runtime\";\nvar ArrowDropDown = (props, ref) => /* @__PURE__ */ jsx6(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx6(\"path\", { d: \"m8.71 11.71 2.59 2.59c.39.39 1.02.39 1.41 0l2.59-2.59c.63-.63.18-1.71-.71-1.71H9.41c-.89 0-1.33 1.08-.7 1.71\" }) }));\nvar ForwardRef6 = forwardRef6(ArrowDropDown);\nForwardRef6.category = \"core\";\nvar ArrowDropDown_default = ForwardRef6;\n\n// src/generated/web/core/ArrowDropUp.tsx\nimport { forwardRef as forwardRef7 } from \"react\";\nimport { jsx as jsx7 } from \"react/jsx-runtime\";\nvar ArrowDropUp = (props, ref) => /* @__PURE__ */ jsx7(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx7(\"path\", { d: \"M8.71 12.29 11.3 9.7a.996.996 0 0 1 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71\" }) }));\nvar ForwardRef7 = forwardRef7(ArrowDropUp);\nForwardRef7.category = \"core\";\nvar ArrowDropUp_default = ForwardRef7;\n\n// src/generated/web/core/ArrowForward.tsx\nimport { forwardRef as forwardRef8 } from \"react\";\nimport { jsx as jsx8 } from \"react/jsx-runtime\";\nvar ArrowForward = (props, ref) => /* @__PURE__ */ jsx8(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx8(\"path\", { d: \"M5 13h11.17l-4.88 4.88c-.39.39-.39 1.03 0 1.42s1.02.39 1.41 0l6.59-6.59a.996.996 0 0 0 0-1.41l-6.58-6.6a.996.996 0 1 0-1.41 1.41L16.17 11H5c-.55 0-1 .45-1 1s.45 1 1 1\" }) }));\nvar ForwardRef8 = forwardRef8(ArrowForward);\nForwardRef8.category = \"core\";\nvar ArrowForward_default = ForwardRef8;\n\n// src/generated/web/core/ArrowLeft.tsx\nimport { forwardRef as forwardRef9 } from \"react\";\nimport { jsx as jsx9 } from \"react/jsx-runtime\";\nvar ArrowLeft = (props, ref) => /* @__PURE__ */ jsx9(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx9(\"path\", { d: \"M12.29 8.71 9.7 11.3a.996.996 0 0 0 0 1.41l2.59 2.59c.63.63 1.71.18 1.71-.71V9.41c0-.89-1.08-1.33-1.71-.7\" }) }));\nvar ForwardRef9 = forwardRef9(ArrowLeft);\nForwardRef9.category = \"core\";\nvar ArrowLeft_default = ForwardRef9;\n\n// src/generated/web/core/ArrowRight.tsx\nimport { forwardRef as forwardRef10 } from \"react\";\nimport { jsx as jsx10 } from \"react/jsx-runtime\";\nvar ArrowRight = (props, ref) => /* @__PURE__ */ jsx10(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx10(\"path\", { d: \"m11.71 15.29 2.59-2.59a.996.996 0 0 0 0-1.41L11.71 8.7c-.63-.62-1.71-.18-1.71.71v5.17c0 .9 1.08 1.34 1.71.71\" }) }));\nvar ForwardRef10 = forwardRef10(ArrowRight);\nForwardRef10.category = \"core\";\nvar ArrowRight_default = ForwardRef10;\n\n// src/generated/web/core/ArrowUpward.tsx\nimport { forwardRef as forwardRef11 } from \"react\";\nimport { jsx as jsx11 } from \"react/jsx-runtime\";\nvar ArrowUpward = (props, ref) => /* @__PURE__ */ jsx11(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx11(\"path\", { d: \"M13 19V7.83l4.88 4.88c.39.39 1.03.39 1.42 0a.996.996 0 0 0 0-1.41l-6.59-6.59a.996.996 0 0 0-1.41 0l-6.6 6.58a.996.996 0 1 0 1.41 1.41L11 7.83V19c0 .55.45 1 1 1s1-.45 1-1\" }) }));\nvar ForwardRef11 = forwardRef11(ArrowUpward);\nForwardRef11.category = \"core\";\nvar ArrowUpward_default = ForwardRef11;\n\n// src/generated/web/core/Autorenew.tsx\nimport { forwardRef as forwardRef12 } from \"react\";\nimport { jsx as jsx12 } from \"react/jsx-runtime\";\nvar Autorenew = (props, ref) => /* @__PURE__ */ jsx12(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx12(\"path\", { d: \"M12 6v1.79c0 .45.54.67.85.35l2.79-2.79c.2-.2.2-.51 0-.71l-2.79-2.79a.5.5 0 0 0-.85.36V4c-4.42 0-8 3.58-8 8 0 1.04.2 2.04.57 2.95.27.67 1.13.85 1.64.34.27-.27.38-.68.23-1.04C6.15 13.56 6 12.79 6 12c0-3.31 2.69-6 6-6m5.79 2.71c-.27.27-.38.69-.23 1.04.28.7.44 1.46.44 2.25 0 3.31-2.69 6-6 6v-1.79c0-.45-.54-.67-.85-.35l-2.79 2.79c-.2.2-.2.51 0 .71l2.79 2.79a.5.5 0 0 0 .85-.35V20c4.42 0 8-3.58 8-8 0-1.04-.2-2.04-.57-2.95-.27-.67-1.13-.85-1.64-.34\" }) }));\nvar ForwardRef12 = forwardRef12(Autorenew);\nForwardRef12.category = \"core\";\nvar Autorenew_default = ForwardRef12;\n\n// src/generated/web/core/Cancel.tsx\nimport { forwardRef as forwardRef13 } from \"react\";\nimport { jsx as jsx13 } from \"react/jsx-runtime\";\nvar Cancel = (props, ref) => /* @__PURE__ */ jsx13(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx13(\"path\", { d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2m4.3 14.3a.996.996 0 0 1-1.41 0L12 13.41 9.11 16.3a.996.996 0 1 1-1.41-1.41L10.59 12 7.7 9.11A.996.996 0 1 1 9.11 7.7L12 10.59l2.89-2.89a.996.996 0 1 1 1.41 1.41L13.41 12l2.89 2.89c.38.38.38 1.02 0 1.41\" }) }));\nvar ForwardRef13 = forwardRef13(Cancel);\nForwardRef13.category = \"core\";\nvar Cancel_default = ForwardRef13;\n\n// src/generated/web/core/Check.tsx\nimport { forwardRef as forwardRef14 } from \"react\";\nimport { jsx as jsx14 } from \"react/jsx-runtime\";\nvar Check = (props, ref) => /* @__PURE__ */ jsx14(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx14(\"path\", { d: \"M9 16.17 5.53 12.7a.996.996 0 1 0-1.41 1.41l4.18 4.18c.39.39 1.02.39 1.41 0L20.29 7.71a.996.996 0 1 0-1.41-1.41z\" }) }));\nvar ForwardRef14 = forwardRef14(Check);\nForwardRef14.category = \"core\";\nvar Check_default = ForwardRef14;\n\n// src/generated/web/core/CheckCircle.tsx\nimport { forwardRef as forwardRef15 } from \"react\";\nimport { jsx as jsx15 } from \"react/jsx-runtime\";\nvar CheckCircle = (props, ref) => /* @__PURE__ */ jsx15(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx15(\"path\", { d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2M9.29 16.29 5.7 12.7a.996.996 0 1 1 1.41-1.41L10 14.17l6.88-6.88a.996.996 0 1 1 1.41 1.41l-7.59 7.59a.996.996 0 0 1-1.41 0\" }) }));\nvar ForwardRef15 = forwardRef15(CheckCircle);\nForwardRef15.category = \"core\";\nvar CheckCircle_default = ForwardRef15;\n\n// src/generated/web/core/Close.tsx\nimport { forwardRef as forwardRef16 } from \"react\";\nimport { jsx as jsx16 } from \"react/jsx-runtime\";\nvar Close = (props, ref) => /* @__PURE__ */ jsx16(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx16(\"path\", { d: \"M18.3 5.71a.996.996 0 0 0-1.41 0L12 10.59 7.11 5.7A.996.996 0 1 0 5.7 7.11L10.59 12 5.7 16.89a.996.996 0 1 0 1.41 1.41L12 13.41l4.89 4.89a.996.996 0 1 0 1.41-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4\" }) }));\nvar ForwardRef16 = forwardRef16(Close);\nForwardRef16.category = \"core\";\nvar Close_default = ForwardRef16;\n\n// src/generated/web/core/Delete.tsx\nimport { forwardRef as forwardRef17 } from \"react\";\nimport { jsx as jsx17 } from \"react/jsx-runtime\";\nvar Delete = (props, ref) => /* @__PURE__ */ jsx17(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx17(\"path\", { d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2zM18 4h-2.5l-.71-.71c-.18-.18-.44-.29-.7-.29H9.91c-.26 0-.52.11-.7.29L8.5 4H6c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1\" }) }));\nvar ForwardRef17 = forwardRef17(Delete);\nForwardRef17.category = \"core\";\nvar Delete_default = ForwardRef17;\n\n// src/generated/web/core/DoDisturb.tsx\nimport { forwardRef as forwardRef18 } from \"react\";\nimport { jsx as jsx18 } from \"react/jsx-runtime\";\nvar DoDisturb = (props, ref) => /* @__PURE__ */ jsx18(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx18(\"path\", { d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8 0-1.85.63-3.55 1.69-4.9L16.9 18.31A7.9 7.9 0 0 1 12 20m6.31-3.1L7.1 5.69A7.9 7.9 0 0 1 12 4c4.42 0 8 3.58 8 8 0 1.85-.63 3.55-1.69 4.9\" }) }));\nvar ForwardRef18 = forwardRef18(DoDisturb);\nForwardRef18.category = \"core\";\nvar DoDisturb_default = ForwardRef18;\n\n// src/generated/web/core/Edit.tsx\nimport { forwardRef as forwardRef19 } from \"react\";\nimport { jsx as jsx19 } from \"react/jsx-runtime\";\nvar Edit = (props, ref) => /* @__PURE__ */ jsx19(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx19(\"path\", { d: \"M3 17.46v3.04c0 .28.22.5.5.5h3.04c.13 0 .26-.05.35-.15L17.81 9.94l-3.75-3.75L3.15 17.1q-.15.15-.15.36M20.71 7.04a.996.996 0 0 0 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z\" }) }));\nvar ForwardRef19 = forwardRef19(Edit);\nForwardRef19.category = \"core\";\nvar Edit_default = ForwardRef19;\n\n// src/generated/web/core/Error.tsx\nimport { forwardRef as forwardRef20 } from \"react\";\nimport { jsx as jsx20 } from \"react/jsx-runtime\";\nvar Error = (props, ref) => /* @__PURE__ */ jsx20(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx20(\"path\", { d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 11c-.55 0-1-.45-1-1V8c0-.55.45-1 1-1s1 .45 1 1v4c0 .55-.45 1-1 1m1 4h-2v-2h2z\" }) }));\nvar ForwardRef20 = forwardRef20(Error);\nForwardRef20.category = \"core\";\nvar Error_default = ForwardRef20;\n\n// src/generated/web/core/ErrorOutline.tsx\nimport { forwardRef as forwardRef21 } from \"react\";\nimport { jsx as jsx21 } from \"react/jsx-runtime\";\nvar ErrorOutline = (props, ref) => /* @__PURE__ */ jsx21(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx21(\"path\", { d: \"M12 7c.55 0 1 .45 1 1v4c0 .55-.45 1-1 1s-1-.45-1-1V8c0-.55.45-1 1-1m-.01-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2M12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8m1-3h-2v-2h2z\" }) }));\nvar ForwardRef21 = forwardRef21(ErrorOutline);\nForwardRef21.category = \"core\";\nvar ErrorOutline_default = ForwardRef21;\n\n// src/generated/web/core/Female.tsx\nimport { forwardRef as forwardRef22 } from \"react\";\nimport { jsx as jsx22 } from \"react/jsx-runtime\";\nvar Female = (props, ref) => /* @__PURE__ */ jsx22(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx22(\"path\", { d: \"M12 6c1.93 0 3.5 1.57 3.5 3.5S13.93 13 12 13s-3.5-1.57-3.5-3.5S10.07 6 12 6m1 8.91a5.5 5.5 0 0 0 4.5-5.41C17.5 6.46 15.04 4 12 4S6.5 6.46 6.5 9.5a5.5 5.5 0 0 0 4.5 5.41V17h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1v-1h1c.55 0 1-.45 1-1s-.45-1-1-1h-1z\" }) }));\nvar ForwardRef22 = forwardRef22(Female);\nForwardRef22.category = \"core\";\nvar Female_default = ForwardRef22;\n\n// src/generated/web/core/FilterAlt.tsx\nimport { forwardRef as forwardRef23 } from \"react\";\nimport { jsx as jsx23 } from \"react/jsx-runtime\";\nvar FilterAlt = (props, ref) => /* @__PURE__ */ jsx23(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx23(\"path\", { d: \"M4.25 5.61C6.57 8.59 10 13 10 13v5c0 1.1.9 2 2 2s2-.9 2-2v-5s3.43-4.41 5.75-7.39c.51-.66.04-1.61-.8-1.61H5.04c-.83 0-1.3.95-.79 1.61\" }) }));\nvar ForwardRef23 = forwardRef23(FilterAlt);\nForwardRef23.category = \"core\";\nvar FilterAlt_default = ForwardRef23;\n\n// src/generated/web/core/HelpOutline.tsx\nimport { forwardRef as forwardRef24 } from \"react\";\nimport { jsx as jsx24 } from \"react/jsx-runtime\";\nvar HelpOutline = (props, ref) => /* @__PURE__ */ jsx24(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx24(\"path\", { d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m-1-4h2v2h-2zm1.61-9.96c-2.06-.3-3.88.97-4.43 2.79-.18.58.26 1.17.87 1.17h.2c.41 0 .74-.29.88-.67.32-.89 1.27-1.5 2.3-1.28.95.2 1.65 1.13 1.57 2.1-.1 1.34-1.62 1.63-2.45 2.88 0 .01-.01.01-.01.02-.01.02-.02.03-.03.05-.09.15-.18.32-.25.5-.01.03-.03.05-.04.08-.01.02-.01.04-.02.07-.12.34-.2.75-.2 1.25h2c0-.42.11-.77.28-1.07.02-.03.03-.06.05-.09.08-.14.18-.27.28-.39.01-.01.02-.03.03-.04.1-.12.21-.23.33-.34.96-.91 2.26-1.65 1.99-3.56-.24-1.74-1.61-3.21-3.35-3.47\" }) }));\nvar ForwardRef24 = forwardRef24(HelpOutline);\nForwardRef24.category = \"core\";\nvar HelpOutline_default = ForwardRef24;\n\n// src/generated/web/core/HighlightOff.tsx\nimport { forwardRef as forwardRef25 } from \"react\";\nimport { jsx as jsx25 } from \"react/jsx-runtime\";\nvar HighlightOff = (props, ref) => /* @__PURE__ */ jsx25(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx25(\"path\", { d: \"M13.89 8.7 12 10.59 10.11 8.7a.996.996 0 1 0-1.41 1.41L10.59 12 8.7 13.89a.996.996 0 1 0 1.41 1.41L12 13.41l1.89 1.89a.996.996 0 1 0 1.41-1.41L13.41 12l1.89-1.89a.996.996 0 0 0 0-1.41c-.39-.38-1.03-.38-1.41 0M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8\" }) }));\nvar ForwardRef25 = forwardRef25(HighlightOff);\nForwardRef25.category = \"core\";\nvar HighlightOff_default = ForwardRef25;\n\n// src/generated/web/core/Info.tsx\nimport { forwardRef as forwardRef26 } from \"react\";\nimport { jsx as jsx26 } from \"react/jsx-runtime\";\nvar Info = (props, ref) => /* @__PURE__ */ jsx26(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx26(\"path\", { d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 15c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1s1 .45 1 1v4c0 .55-.45 1-1 1m1-8h-2V7h2z\" }) }));\nvar ForwardRef26 = forwardRef26(Info);\nForwardRef26.category = \"core\";\nvar Info_default = ForwardRef26;\n\n// src/generated/web/core/InfoOutline.tsx\nimport { forwardRef as forwardRef27 } from \"react\";\nimport { jsx as jsx27 } from \"react/jsx-runtime\";\nvar InfoOutline = (props, ref) => /* @__PURE__ */ jsx27(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx27(\"path\", { d: \"M11 7h2v2h-2zm1 10c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1m0-15C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8\" }) }));\nvar ForwardRef27 = forwardRef27(InfoOutline);\nForwardRef27.category = \"core\";\nvar InfoOutline_default = ForwardRef27;\n\n// src/generated/web/core/KeyboardArrowDown.tsx\nimport { forwardRef as forwardRef28 } from \"react\";\nimport { jsx as jsx28 } from \"react/jsx-runtime\";\nvar KeyboardArrowDown = (props, ref) => /* @__PURE__ */ jsx28(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx28(\"path\", { d: \"M8.12 9.29 12 13.17l3.88-3.88a.996.996 0 1 1 1.41 1.41l-4.59 4.59a.996.996 0 0 1-1.41 0L6.7 10.7a.996.996 0 0 1 0-1.41c.39-.38 1.03-.39 1.42 0\" }) }));\nvar ForwardRef28 = forwardRef28(KeyboardArrowDown);\nForwardRef28.category = \"core\";\nvar KeyboardArrowDown_default = ForwardRef28;\n\n// src/generated/web/core/KeyboardArrowLeft.tsx\nimport { forwardRef as forwardRef29 } from \"react\";\nimport { jsx as jsx29 } from \"react/jsx-runtime\";\nvar KeyboardArrowLeft = (props, ref) => /* @__PURE__ */ jsx29(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx29(\"path\", { d: \"M14.71 15.88 10.83 12l3.88-3.88a.996.996 0 1 0-1.41-1.41L8.71 11.3a.996.996 0 0 0 0 1.41l4.59 4.59c.39.39 1.02.39 1.41 0 .38-.39.39-1.03 0-1.42\" }) }));\nvar ForwardRef29 = forwardRef29(KeyboardArrowLeft);\nForwardRef29.category = \"core\";\nvar KeyboardArrowLeft_default = ForwardRef29;\n\n// src/generated/web/core/KeyboardArrowRight.tsx\nimport { forwardRef as forwardRef30 } from \"react\";\nimport { jsx as jsx30 } from \"react/jsx-runtime\";\nvar KeyboardArrowRight = (props, ref) => /* @__PURE__ */ jsx30(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx30(\"path\", { d: \"M9.29 15.88 13.17 12 9.29 8.12a.996.996 0 1 1 1.41-1.41l4.59 4.59c.39.39.39 1.02 0 1.41L10.7 17.3a.996.996 0 0 1-1.41 0c-.38-.39-.39-1.03 0-1.42\" }) }));\nvar ForwardRef30 = forwardRef30(KeyboardArrowRight);\nForwardRef30.category = \"core\";\nvar KeyboardArrowRight_default = ForwardRef30;\n\n// src/generated/web/core/KeyboardArrowUp.tsx\nimport { forwardRef as forwardRef31 } from \"react\";\nimport { jsx as jsx31 } from \"react/jsx-runtime\";\nvar KeyboardArrowUp = (props, ref) => /* @__PURE__ */ jsx31(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx31(\"path\", { d: \"M8.12 14.71 12 10.83l3.88 3.88a.996.996 0 1 0 1.41-1.41L12.7 8.71a.996.996 0 0 0-1.41 0L6.7 13.3a.996.996 0 0 0 0 1.41c.39.38 1.03.39 1.42 0\" }) }));\nvar ForwardRef31 = forwardRef31(KeyboardArrowUp);\nForwardRef31.category = \"core\";\nvar KeyboardArrowUp_default = ForwardRef31;\n\n// src/generated/web/core/KeyboardDoubleArrowDown.tsx\nimport { forwardRef as forwardRef32 } from \"react\";\nimport { jsx as jsx32 } from \"react/jsx-runtime\";\nvar KeyboardDoubleArrowDown = (props, ref) => /* @__PURE__ */ jsx32(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx32(\"path\", { fillRule: \"evenodd\", d: \"M6.702 12.282a.996.996 0 0 1 1.41 0l3.88 3.88 3.88-3.87a.996.996 0 0 1 1.41 0c.39.39.39 1.02.01 1.4l-4.59 4.59a.996.996 0 0 1-1.41 0l-4.59-4.59a.996.996 0 0 1 0-1.41m-.01-6.59a.995.995 0 0 1 1.41 0l3.89 3.88 3.88-3.87a.996.996 0 0 1 1.41 0c.39.39.39 1.02 0 1.4l-4.59 4.59a.997.997 0 0 1-1.41 0l-4.59-4.59a.995.995 0 0 1 0-1.41\", clipRule: \"evenodd\" }) }));\nvar ForwardRef32 = forwardRef32(KeyboardDoubleArrowDown);\nForwardRef32.category = \"core\";\nvar KeyboardDoubleArrowDown_default = ForwardRef32;\n\n// src/generated/web/core/KeyboardDoubleArrowLeft.tsx\nimport { forwardRef as forwardRef33 } from \"react\";\nimport { jsx as jsx33 } from \"react/jsx-runtime\";\nvar KeyboardDoubleArrowLeft = (props, ref) => /* @__PURE__ */ jsx33(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx33(\"path\", { fillRule: \"evenodd\", d: \"M10.282 6.692a.996.996 0 1 1 1.41 1.41l-3.88 3.88 3.87 3.88c.39.39.39 1.02 0 1.41a.993.993 0 0 1-1.4.01l-4.59-4.59a.996.996 0 0 1 0-1.41zm6.59 0a.996.996 0 1 1 1.41 1.41l-3.88 3.88 3.87 3.88c.39.39.39 1.02 0 1.41a.993.993 0 0 1-1.4.01l-4.59-4.59a.996.996 0 0 1 0-1.41z\", clipRule: \"evenodd\" }) }));\nvar ForwardRef33 = forwardRef33(KeyboardDoubleArrowLeft);\nForwardRef33.category = \"core\";\nvar KeyboardDoubleArrowLeft_default = ForwardRef33;\n\n// src/generated/web/core/KeyboardDoubleArrowRight.tsx\nimport { forwardRef as forwardRef34 } from \"react\";\nimport { jsx as jsx34 } from \"react/jsx-runtime\";\nvar KeyboardDoubleArrowRight = (props, ref) => /* @__PURE__ */ jsx34(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx34(\"path\", { fillRule: \"evenodd\", d: \"M5.692 6.693a1.01 1.01 0 0 1 1.421 0l4.58 4.58c.39.39.39 1.02 0 1.41l-4.59 4.59a.996.996 0 1 1-1.41-1.41l3.88-3.88-3.88-3.88a.997.997 0 0 1 0-1.41m6.591 0c.39-.39 1.03-.39 1.41-.01l4.59 4.59c.39.39.39 1.02 0 1.41l-4.59 4.59a.996.996 0 1 1-1.41-1.41l3.88-3.88-3.88-3.88a.996.996 0 0 1 0-1.41\", clipRule: \"evenodd\" }) }));\nvar ForwardRef34 = forwardRef34(KeyboardDoubleArrowRight);\nForwardRef34.category = \"core\";\nvar KeyboardDoubleArrowRight_default = ForwardRef34;\n\n// src/generated/web/core/KeyboardDoubleArrowUp.tsx\nimport { forwardRef as forwardRef35 } from \"react\";\nimport { jsx as jsx35 } from \"react/jsx-runtime\";\nvar KeyboardDoubleArrowUp = (props, ref) => /* @__PURE__ */ jsx35(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx35(\"path\", { fillRule: \"evenodd\", d: \"M11.282 12.282a.996.996 0 0 1 1.41 0l4.59 4.59a.996.996 0 1 1-1.41 1.41l-3.88-3.88-3.89 3.87a.995.995 0 0 1-1.41 0 .995.995 0 0 1 0-1.41zm0-6.59a.996.996 0 0 1 1.41 0l4.59 4.59a.996.996 0 1 1-1.41 1.41l-3.88-3.88-3.89 3.87a.996.996 0 1 1-1.41-1.41z\", clipRule: \"evenodd\" }) }));\nvar ForwardRef35 = forwardRef35(KeyboardDoubleArrowUp);\nForwardRef35.category = \"core\";\nvar KeyboardDoubleArrowUp_default = ForwardRef35;\n\n// src/generated/web/core/Language.tsx\nimport { forwardRef as forwardRef36 } from \"react\";\nimport { jsx as jsx36 } from \"react/jsx-runtime\";\nvar Language = (props, ref) => /* @__PURE__ */ jsx36(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx36(\"path\", { d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2m6.93 6h-2.95a15.7 15.7 0 0 0-1.38-3.56A8.03 8.03 0 0 1 18.92 8M12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96M4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2s.06 1.34.14 2zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56A8 8 0 0 1 5.08 16m2.95-8H5.08a8 8 0 0 1 4.33-3.56A15.7 15.7 0 0 0 8.03 8M12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96M14.34 14H9.66c-.09-.66-.16-1.32-.16-2s.07-1.35.16-2h4.68c.09.65.16 1.32.16 2s-.07 1.34-.16 2m.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95a8.03 8.03 0 0 1-4.33 3.56M16.36 14c.08-.66.14-1.32.14-2s-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2z\" }) }));\nvar ForwardRef36 = forwardRef36(Language);\nForwardRef36.category = \"core\";\nvar Language_default = ForwardRef36;\n\n// src/generated/web/core/Lock.tsx\nimport { forwardRef as forwardRef37 } from \"react\";\nimport { jsx as jsx37 } from \"react/jsx-runtime\";\nvar Lock = (props, ref) => /* @__PURE__ */ jsx37(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx37(\"path\", { d: \"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2M9 8V6c0-1.66 1.34-3 3-3s3 1.34 3 3v2z\" }) }));\nvar ForwardRef37 = forwardRef37(Lock);\nForwardRef37.category = \"core\";\nvar Lock_default = ForwardRef37;\n\n// src/generated/web/core/Male.tsx\nimport { forwardRef as forwardRef38 } from \"react\";\nimport { jsx as jsx38 } from \"react/jsx-runtime\";\nvar Male = (props, ref) => /* @__PURE__ */ jsx38(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx38(\"path\", { d: \"M19 4h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.58l-3.97 3.97C11.73 9.36 10.66 9 9.5 9 6.46 9 4 11.46 4 14.5S6.46 20 9.5 20s5.5-2.46 5.5-5.5c0-1.16-.36-2.23-.97-3.12L18 7.42V9c0 .55.45 1 1 1s1-.45 1-1V5c0-.55-.45-1-1-1M9.5 18C7.57 18 6 16.43 6 14.5S7.57 11 9.5 11s3.5 1.57 3.5 3.5S11.43 18 9.5 18\" }) }));\nvar ForwardRef38 = forwardRef38(Male);\nForwardRef38.category = \"core\";\nvar Male_default = ForwardRef38;\n\n// src/generated/web/core/Menu.tsx\nimport { forwardRef as forwardRef39 } from \"react\";\nimport { jsx as jsx39 } from \"react/jsx-runtime\";\nvar Menu = (props, ref) => /* @__PURE__ */ jsx39(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx39(\"path\", { d: \"M4 18h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1m0-5h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1M3 7c0 .55.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1\" }) }));\nvar ForwardRef39 = forwardRef39(Menu);\nForwardRef39.category = \"core\";\nvar Menu_default = ForwardRef39;\n\n// src/generated/web/core/MoreHoriz.tsx\nimport { forwardRef as forwardRef40 } from \"react\";\nimport { jsx as jsx40 } from \"react/jsx-runtime\";\nvar MoreHoriz = (props, ref) => /* @__PURE__ */ jsx40(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx40(\"path\", { d: \"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2\" }) }));\nvar ForwardRef40 = forwardRef40(MoreHoriz);\nForwardRef40.category = \"core\";\nvar MoreHoriz_default = ForwardRef40;\n\n// src/generated/web/core/MoreVert.tsx\nimport { forwardRef as forwardRef41 } from \"react\";\nimport { jsx as jsx41 } from \"react/jsx-runtime\";\nvar MoreVert = (props, ref) => /* @__PURE__ */ jsx41(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx41(\"path\", { d: \"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2\" }) }));\nvar ForwardRef41 = forwardRef41(MoreVert);\nForwardRef41.category = \"core\";\nvar MoreVert_default = ForwardRef41;\n\n// src/generated/web/core/Pause.tsx\nimport { forwardRef as forwardRef42 } from \"react\";\nimport { jsx as jsx42 } from \"react/jsx-runtime\";\nvar Pause = (props, ref) => /* @__PURE__ */ jsx42(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx42(\"path\", { d: \"M8 19c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2s-2 .9-2 2v10c0 1.1.9 2 2 2m6-12v10c0 1.1.9 2 2 2s2-.9 2-2V7c0-1.1-.9-2-2-2s-2 .9-2 2\" }) }));\nvar ForwardRef42 = forwardRef42(Pause);\nForwardRef42.category = \"core\";\nvar Pause_default = ForwardRef42;\n\n// src/generated/web/core/PlayArrow.tsx\nimport { forwardRef as forwardRef43 } from \"react\";\nimport { jsx as jsx43 } from \"react/jsx-runtime\";\nvar PlayArrow = (props, ref) => /* @__PURE__ */ jsx43(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx43(\"path\", { d: \"M8 6.82v10.36c0 .79.87 1.27 1.54.84l8.14-5.18a1 1 0 0 0 0-1.69L9.54 5.98A.998.998 0 0 0 8 6.82\" }) }));\nvar ForwardRef43 = forwardRef43(PlayArrow);\nForwardRef43.category = \"core\";\nvar PlayArrow_default = ForwardRef43;\n\n// src/generated/web/core/Refresh.tsx\nimport { forwardRef as forwardRef44 } from \"react\";\nimport { jsx as jsx44 } from \"react/jsx-runtime\";\nvar Refresh = (props, ref) => /* @__PURE__ */ jsx44(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx44(\"path\", { d: \"M17.65 6.35a7.95 7.95 0 0 0-6.48-2.31c-3.67.37-6.69 3.35-7.1 7.02C3.52 15.91 7.27 20 12 20a7.98 7.98 0 0 0 7.21-4.56c.32-.67-.16-1.44-.9-1.44-.37 0-.72.2-.88.53a5.994 5.994 0 0 1-6.8 3.31c-2.22-.49-4.01-2.3-4.48-4.52A6.002 6.002 0 0 1 12 6c1.66 0 3.14.69 4.22 1.78l-1.51 1.51c-.63.63-.19 1.71.7 1.71H19c.55 0 1-.45 1-1V6.41c0-.89-1.08-1.34-1.71-.71z\" }) }));\nvar ForwardRef44 = forwardRef44(Refresh);\nForwardRef44.category = \"core\";\nvar Refresh_default = ForwardRef44;\n\n// src/generated/web/core/Remove.tsx\nimport { forwardRef as forwardRef45 } from \"react\";\nimport { jsx as jsx45 } from \"react/jsx-runtime\";\nvar Remove = (props, ref) => /* @__PURE__ */ jsx45(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx45(\"path\", { d: \"M18 13H6c-.55 0-1-.45-1-1s.45-1 1-1h12c.55 0 1 .45 1 1s-.45 1-1 1\" }) }));\nvar ForwardRef45 = forwardRef45(Remove);\nForwardRef45.category = \"core\";\nvar Remove_default = ForwardRef45;\n\n// src/generated/web/core/RemoveCircle.tsx\nimport { forwardRef as forwardRef46 } from \"react\";\nimport { jsx as jsx46 } from \"react/jsx-runtime\";\nvar RemoveCircle = (props, ref) => /* @__PURE__ */ jsx46(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx46(\"path\", { d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m4 11H8c-.55 0-1-.45-1-1s.45-1 1-1h8c.55 0 1 .45 1 1s-.45 1-1 1\" }) }));\nvar ForwardRef46 = forwardRef46(RemoveCircle);\nForwardRef46.category = \"core\";\nvar RemoveCircle_default = ForwardRef46;\n\n// src/generated/web/core/RemoveCircleOutline.tsx\nimport { forwardRef as forwardRef47 } from \"react\";\nimport { jsx as jsx47 } from \"react/jsx-runtime\";\nvar RemoveCircleOutline = (props, ref) => /* @__PURE__ */ jsx47(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx47(\"path\", { d: \"M7 12c0 .55.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1m5-10C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8\" }) }));\nvar ForwardRef47 = forwardRef47(RemoveCircleOutline);\nForwardRef47.category = \"core\";\nvar RemoveCircleOutline_default = ForwardRef47;\n\n// src/generated/web/core/Search.tsx\nimport { forwardRef as forwardRef48 } from \"react\";\nimport { jsx as jsx48 } from \"react/jsx-runtime\";\nvar Search = (props, ref) => /* @__PURE__ */ jsx48(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx48(\"path\", { d: \"M15.5 14h-.79l-.28-.27a6.5 6.5 0 0 0 1.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 0 0-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 0 0 5.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0s.41-1.08 0-1.49zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14\" }) }));\nvar ForwardRef48 = forwardRef48(Search);\nForwardRef48.category = \"core\";\nvar Search_default = ForwardRef48;\n\n// src/generated/web/core/Settings.tsx\nimport { forwardRef as forwardRef49 } from \"react\";\nimport { jsx as jsx49 } from \"react/jsx-runtime\";\nvar Settings = (props, ref) => /* @__PURE__ */ jsx49(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx49(\"path\", { d: \"M19.5 12c0-.23-.01-.45-.03-.68l1.86-1.41c.4-.3.51-.86.26-1.3l-1.87-3.23a.987.987 0 0 0-1.25-.42l-2.15.91c-.37-.26-.76-.49-1.17-.68l-.29-2.31c-.06-.5-.49-.88-.99-.88h-3.73c-.51 0-.94.38-1 .88l-.29 2.31c-.41.19-.8.42-1.17.68l-2.15-.91c-.46-.2-1-.02-1.25.42L2.41 8.62c-.25.44-.14.99.26 1.3l1.86 1.41a7.3 7.3 0 0 0 0 1.35l-1.86 1.41c-.4.3-.51.86-.26 1.3l1.87 3.23c.25.44.79.62 1.25.42l2.15-.91c.37.26.76.49 1.17.68l.29 2.31c.06.5.49.88.99.88h3.73c.5 0 .93-.38.99-.88l.29-2.31c.41-.19.8-.42 1.17-.68l2.15.91c.46.2 1 .02 1.25-.42l1.87-3.23c.25-.44.14-.99-.26-1.3l-1.86-1.41c.03-.23.04-.45.04-.68m-7.46 3.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5\" }) }));\nvar ForwardRef49 = forwardRef49(Settings);\nForwardRef49.category = \"core\";\nvar Settings_default = ForwardRef49;\n\n// src/generated/web/core/StarBorder.tsx\nimport { forwardRef as forwardRef50 } from \"react\";\nimport { jsx as jsx50 } from \"react/jsx-runtime\";\nvar StarBorder = (props, ref) => /* @__PURE__ */ jsx50(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx50(\"path\", { d: \"m19.65 9.04-4.84-.42-1.89-4.45c-.34-.81-1.5-.81-1.84 0L9.19 8.63l-4.83.41c-.88.07-1.24 1.17-.57 1.75l3.67 3.18-1.1 4.72c-.2.86.73 1.54 1.49 1.08l4.15-2.5 4.15 2.51c.76.46 1.69-.22 1.49-1.08l-1.1-4.73 3.67-3.18c.67-.58.32-1.68-.56-1.75M12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28z\" }) }));\nvar ForwardRef50 = forwardRef50(StarBorder);\nForwardRef50.category = \"core\";\nvar StarBorder_default = ForwardRef50;\n\n// src/generated/web/core/StarHalf.tsx\nimport { forwardRef as forwardRef51 } from \"react\";\nimport { jsx as jsx51 } from \"react/jsx-runtime\";\nvar StarHalf = (props, ref) => /* @__PURE__ */ jsx51(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx51(\"path\", { d: \"m19.65 9.04-4.84-.42-1.89-4.45c-.34-.81-1.5-.81-1.84 0L9.19 8.63l-4.83.41c-.88.07-1.24 1.17-.57 1.75l3.67 3.18-1.1 4.72c-.2.86.73 1.54 1.49 1.08l4.15-2.5 4.15 2.51c.76.46 1.69-.22 1.49-1.08l-1.1-4.73 3.67-3.18c.67-.58.32-1.68-.56-1.75M12 15.4V6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28z\" }) }));\nvar ForwardRef51 = forwardRef51(StarHalf);\nForwardRef51.category = \"core\";\nvar StarHalf_default = ForwardRef51;\n\n// src/generated/web/core/StarRate.tsx\nimport { forwardRef as forwardRef52 } from \"react\";\nimport { jsx as jsx52 } from \"react/jsx-runtime\";\nvar StarRate = (props, ref) => /* @__PURE__ */ jsx52(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx52(\"path\", { d: \"m11.957 17.498 4.15 2.51c.76.46 1.69-.22 1.49-1.08l-1.1-4.72 3.67-3.18c.67-.58.31-1.68-.57-1.75l-4.83-.41-1.89-4.46c-.34-.81-1.5-.81-1.84 0l-1.89 4.45-4.83.41c-.88.07-1.24 1.17-.57 1.75l3.67 3.18-1.1 4.72c-.2.86.73 1.54 1.49 1.08z\" }) }));\nvar ForwardRef52 = forwardRef52(StarRate);\nForwardRef52.category = \"core\";\nvar StarRate_default = ForwardRef52;\n\n// src/generated/web/core/Visibility.tsx\nimport { forwardRef as forwardRef53 } from \"react\";\nimport { jsx as jsx53 } from \"react/jsx-runtime\";\nvar Visibility = (props, ref) => /* @__PURE__ */ jsx53(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx53(\"path\", { d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3\" }) }));\nvar ForwardRef53 = forwardRef53(Visibility);\nForwardRef53.category = \"core\";\nvar Visibility_default = ForwardRef53;\n\n// src/generated/web/core/VisibilityOff.tsx\nimport { forwardRef as forwardRef54 } from \"react\";\nimport { jsx as jsx54 } from \"react/jsx-runtime\";\nvar VisibilityOff = (props, ref) => /* @__PURE__ */ jsx54(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx54(\"path\", { d: \"M12 6.5c2.76 0 5 2.24 5 5 0 .51-.1 1-.24 1.46l3.06 3.06c1.39-1.23 2.49-2.77 3.18-4.53C21.27 7.11 17 4 12 4c-1.27 0-2.49.2-3.64.57l2.17 2.17c.47-.14.96-.24 1.47-.24M2.71 3.16a.996.996 0 0 0 0 1.41l1.97 1.97A11.9 11.9 0 0 0 1 11.5C2.73 15.89 7 19 12 19c1.52 0 2.97-.3 4.31-.82l2.72 2.72a.996.996 0 1 0 1.41-1.41L4.13 3.16c-.39-.39-1.03-.39-1.42 0M12 16.5c-2.76 0-5-2.24-5-5 0-.77.18-1.5.49-2.14l1.57 1.57c-.03.18-.06.37-.06.57 0 1.66 1.34 3 3 3 .2 0 .38-.03.57-.07L14.14 16c-.65.32-1.37.5-2.14.5m2.97-5.33a2.97 2.97 0 0 0-2.64-2.64z\" }) }));\nvar ForwardRef54 = forwardRef54(VisibilityOff);\nForwardRef54.category = \"core\";\nvar VisibilityOff_default = ForwardRef54;\n\n// src/generated/web/core/VolumeOff.tsx\nimport { forwardRef as forwardRef55 } from \"react\";\nimport { jsx as jsx55 } from \"react/jsx-runtime\";\nvar VolumeOff = (props, ref) => /* @__PURE__ */ jsx55(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx55(\"path\", { d: \"M3.63 3.63a.996.996 0 0 0 0 1.41L7.29 8.7 7 9H4c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h3l3.29 3.29c.63.63 1.71.18 1.71-.71v-4.17l4.18 4.18c-.49.37-1.02.68-1.6.91-.36.15-.58.53-.58.92 0 .72.73 1.18 1.39.91.8-.33 1.55-.77 2.22-1.31l1.34 1.34a.996.996 0 1 0 1.41-1.41L5.05 3.63c-.39-.39-1.02-.39-1.42 0M19 12c0 .82-.15 1.61-.41 2.34l1.53 1.53c.56-1.17.88-2.48.88-3.87 0-3.83-2.4-7.11-5.78-8.4-.59-.23-1.22.23-1.22.86v.19c0 .38.25.71.61.85C17.18 6.54 19 9.06 19 12m-8.71-6.29-.17.17L12 7.76V6.41c0-.89-1.08-1.33-1.71-.7M16.5 12A4.5 4.5 0 0 0 14 7.97v1.79l2.48 2.48c.01-.08.02-.16.02-.24\" }) }));\nvar ForwardRef55 = forwardRef55(VolumeOff);\nForwardRef55.category = \"core\";\nvar VolumeOff_default = ForwardRef55;\n\n// src/generated/web/core/VolumeUp.tsx\nimport { forwardRef as forwardRef56 } from \"react\";\nimport { jsx as jsx56 } from \"react/jsx-runtime\";\nvar VolumeUp = (props, ref) => /* @__PURE__ */ jsx56(\"svg\", __spreadProps(__spreadValues({ xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"currentColor\", viewBox: \"0 0 24 24\", ref }, props), { children: /* @__PURE__ */ jsx56(\"path\", { d: \"M3 10v4c0 .55.45 1 1 1h3l3.29 3.29c.63.63 1.71.18 1.71-.71V6.41c0-.89-1.08-1.34-1.71-.71L7 9H4c-.55 0-1 .45-1 1m13.5 2A4.5 4.5 0 0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02M14 4.45v.2c0 .38.25.71.6.85A7 7 0 0 1 19 12c0 2.94-1.82 5.47-4.4 6.5-.36.14-.6.47-.6.85v.2c0 .63.63 1.07 1.21.85A8.98 8.98 0 0 0 21 12c0-3.84-2.4-7.11-5.79-8.4-.58-.23-1.21.22-1.21.85\" }) }));\nvar ForwardRef56 = forwardRef56(VolumeUp);\nForwardRef56.category = \"core\";\nvar VolumeUp_default = ForwardRef56;\nexport {\n Add_default as Add,\n AddCircle_default as AddCircle,\n AddCircleOutline_default as AddCircleOutline,\n ArrowBack_default as ArrowBack,\n ArrowDownward_default as ArrowDownward,\n ArrowDropDown_default as ArrowDropDown,\n ArrowDropUp_default as ArrowDropUp,\n ArrowForward_default as ArrowForward,\n ArrowLeft_default as ArrowLeft,\n ArrowRight_default as ArrowRight,\n ArrowUpward_default as ArrowUpward,\n Autorenew_default as Autorenew,\n Cancel_default as Cancel,\n Check_default as Check,\n CheckCircle_default as CheckCircle,\n Close_default as Close,\n Delete_default as Delete,\n DoDisturb_default as DoDisturb,\n Edit_default as Edit,\n Error_default as Error,\n ErrorOutline_default as ErrorOutline,\n Female_default as Female,\n FilterAlt_default as FilterAlt,\n HelpOutline_default as HelpOutline,\n HighlightOff_default as HighlightOff,\n Info_default as Info,\n InfoOutline_default as InfoOutline,\n KeyboardArrowDown_default as KeyboardArrowDown,\n KeyboardArrowLeft_default as KeyboardArrowLeft,\n KeyboardArrowRight_default as KeyboardArrowRight,\n KeyboardArrowUp_default as KeyboardArrowUp,\n KeyboardDoubleArrowDown_default as KeyboardDoubleArrowDown,\n KeyboardDoubleArrowLeft_default as KeyboardDoubleArrowLeft,\n KeyboardDoubleArrowRight_default as KeyboardDoubleArrowRight,\n KeyboardDoubleArrowUp_default as KeyboardDoubleArrowUp,\n Language_default as Language,\n Lock_default as Lock,\n Male_default as Male,\n Menu_default as Menu,\n MoreHoriz_default as MoreHoriz,\n MoreVert_default as MoreVert,\n Pause_default as Pause,\n PlayArrow_default as PlayArrow,\n Refresh_default as Refresh,\n Remove_default as Remove,\n RemoveCircle_default as RemoveCircle,\n RemoveCircleOutline_default as RemoveCircleOutline,\n Search_default as Search,\n Settings_default as Settings,\n StarBorder_default as StarBorder,\n StarHalf_default as StarHalf,\n StarRate_default as StarRate,\n Visibility_default as Visibility,\n VisibilityOff_default as VisibilityOff,\n VolumeOff_default as VolumeOff,\n VolumeUp_default as VolumeUp\n};\n","import React from \"react\"\nimport { View, PressableProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport * as CheckboxPrimitive from \"@rn-primitives/checkbox\"\nimport { Check } from \"@butternutbox/pawprint-icons/core\"\nimport { Icon } from \"../../atoms/Icon\"\nimport { Typography } from \"../../atoms/Typography\"\n\nexport type CheckboxVariant = \"standalone\" | \"tile\"\n\ntype CheckboxOwnProps = {\n variant?: CheckboxVariant\n label: string\n subText?: string\n illustration?: React.ReactNode\n checked?: boolean\n defaultChecked?: boolean\n onCheckedChange?: (checked: boolean) => void\n disabled?: boolean\n name?: string\n value?: string\n}\n\nexport type CheckboxProps = CheckboxOwnProps &\n Omit<PressableProps, keyof CheckboxOwnProps | \"children\">\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledRoot = styled(CheckboxPrimitive.Root)<{\n rootFlexAlign: string\n rootGap: number\n rootOpacity: number\n rootPaddingVertical?: number\n rootPaddingHorizontal?: number\n rootMaxWidth?: number\n rootBgColor?: string\n rootBorderWidth?: number\n rootBorderColor?: string\n rootBorderRadius?: number\n}>(\n ({\n rootFlexAlign,\n rootGap,\n rootOpacity,\n rootPaddingVertical,\n rootPaddingHorizontal,\n rootMaxWidth,\n rootBgColor,\n rootBorderWidth,\n rootBorderColor,\n rootBorderRadius\n }) => ({\n flexDirection: \"row\",\n alignItems: rootFlexAlign as \"center\" | \"flex-start\",\n gap: rootGap,\n opacity: rootOpacity,\n ...(rootPaddingVertical !== undefined\n ? { paddingVertical: rootPaddingVertical }\n : {}),\n ...(rootPaddingHorizontal !== undefined\n ? { paddingHorizontal: rootPaddingHorizontal }\n : {}),\n ...(rootMaxWidth !== undefined\n ? { maxWidth: rootMaxWidth, width: \"100%\" }\n : {}),\n ...(rootBgColor ? { backgroundColor: rootBgColor } : {}),\n ...(rootBorderWidth !== undefined\n ? { borderWidth: rootBorderWidth, borderColor: rootBorderColor }\n : {}),\n ...(rootBorderRadius !== undefined\n ? { borderRadius: rootBorderRadius }\n : {})\n })\n)\n\nconst StyledControl = styled(View)<{\n controlSize: number\n controlBorderWidth: number\n controlBorderColor: string\n controlBorderRadius: number\n controlBgColor: string\n}>(\n ({\n controlSize,\n controlBorderWidth,\n controlBorderColor,\n controlBorderRadius,\n controlBgColor\n }) => ({\n flexShrink: 0,\n width: controlSize,\n height: controlSize,\n borderWidth: controlBorderWidth,\n borderColor: controlBorderColor,\n borderRadius: controlBorderRadius,\n backgroundColor: controlBgColor,\n alignItems: \"center\",\n justifyContent: \"center\"\n })\n)\n\nconst StyledContent = styled(View)<{\n contentGap: number\n}>(({ contentGap }) => ({\n flexDirection: \"column\",\n gap: contentGap,\n flex: 1,\n minWidth: 0\n}))\n\nconst StyledIllustration = styled(View)<{\n illustrationSize: number\n}>(({ illustrationSize }) => ({\n flexShrink: 0,\n width: illustrationSize,\n height: illustrationSize,\n overflow: \"hidden\"\n}))\n\n/**\n * Checkbox component for binary selection, supporting standalone and tile layouts.\n *\n * @param {\"standalone\" | \"tile\"} [variant=\"standalone\"] - Visual layout variant.\n * @param {string} label - Visible label text.\n * @param {string} [subText] - Optional secondary descriptive text.\n * @param {React.ReactNode} [illustration] - Optional decorative slot (tile variant only).\n * @param {boolean} [checked] - Controlled checked state.\n * @param {boolean} [defaultChecked] - Uncontrolled initial checked state.\n * @param {(checked: boolean) => void} [onCheckedChange] - Callback when state changes.\n * @param {boolean} [disabled=false] - Prevents interaction.\n *\n * @example\n * <Checkbox label=\"Accept terms\" subText=\"Required to proceed\" />\n * <Checkbox variant=\"tile\" label=\"Newsletters\" subText=\"Stay up to date\" />\n */\nexport const Checkbox = React.forwardRef<View, CheckboxProps>(\n (\n {\n variant = \"standalone\",\n label,\n subText,\n illustration,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n disabled = false,\n style,\n ...rest\n },\n ref\n ) => {\n const theme = useTheme()\n const { checkbox } = theme.tokens.components\n const { dimensions } = theme.tokens.semantics\n\n const isControlled = controlledChecked !== undefined\n const [internalChecked, setInternalChecked] = React.useState(defaultChecked)\n const isChecked = isControlled ? controlledChecked : internalChecked\n\n const handleCheckedChange = (checked: boolean) => {\n if (!isControlled) {\n setInternalChecked(checked)\n }\n onCheckedChange?.(checked)\n }\n\n const isTile = variant === \"tile\"\n const controlSize = parseTokenValue(checkbox.size.control.default)\n\n return (\n <StyledRoot\n ref={ref}\n checked={isChecked}\n onCheckedChange={handleCheckedChange}\n disabled={disabled}\n rootFlexAlign={isTile ? \"center\" : \"flex-start\"}\n rootGap={parseTokenValue(\n isTile ? checkbox.checkboxTile.spacing.gap : checkbox.spacing.gap\n )}\n rootOpacity={\n disabled ? parseFloat(theme.tokens.primitives.opacity[\"40\"]) : 1\n }\n rootPaddingVertical={\n isTile\n ? parseTokenValue(checkbox.checkboxTile.spacing.verticalPadding)\n : undefined\n }\n rootPaddingHorizontal={\n isTile\n ? parseTokenValue(checkbox.checkboxTile.spacing.horizontalPadding)\n : undefined\n }\n rootMaxWidth={\n isTile\n ? parseTokenValue(checkbox.checkboxTile.size.maxWidth)\n : undefined\n }\n rootBgColor={\n isTile\n ? isChecked\n ? checkbox.checkboxTile.colour.background.selected\n : checkbox.checkboxTile.colour.background.default\n : undefined\n }\n rootBorderWidth={\n isTile\n ? parseTokenValue(checkbox.checkboxTile.borderWidth.default)\n : undefined\n }\n rootBorderColor={\n isTile\n ? isChecked\n ? checkbox.checkboxTile.colour.border.selected\n : checkbox.checkboxTile.colour.border.default\n : undefined\n }\n rootBorderRadius={\n isTile\n ? parseTokenValue(checkbox.checkboxTile.borderRadius.default)\n : undefined\n }\n style={typeof style === \"function\" ? undefined : style}\n {...rest}\n >\n <StyledControl\n controlSize={controlSize}\n controlBorderWidth={parseTokenValue(checkbox.control.border.default)}\n controlBorderColor={\n isChecked\n ? checkbox.colour.background.selected\n : checkbox.colour.border.default\n }\n controlBorderRadius={parseTokenValue(dimensions.borderRadius.xs)}\n controlBgColor={\n isChecked ? checkbox.colour.background.selected : \"transparent\"\n }\n >\n <CheckboxPrimitive.Indicator>\n <Icon icon={Check} size=\"xs\" colour=\"alt\" />\n </CheckboxPrimitive.Indicator>\n </StyledControl>\n\n <StyledContent\n contentGap={parseTokenValue(checkbox.spacing.content.gap)}\n >\n {label && (\n <Typography\n token={checkbox.typography.label}\n color={checkbox.colour.text.title}\n >\n {label}\n </Typography>\n )}\n {subText && (\n <Typography\n token={checkbox.typography.subText}\n color={checkbox.colour.text.subtext}\n >\n {subText}\n </Typography>\n )}\n </StyledContent>\n\n {isTile && illustration && (\n <StyledIllustration\n illustrationSize={parseTokenValue(\n checkbox.checkboxTile.size.illustration.default\n )}\n >\n {illustration}\n </StyledIllustration>\n )}\n </StyledRoot>\n )\n }\n)\n\nCheckbox.displayName = \"Checkbox\"\n","import React from \"react\"\nimport { View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\n\ntype CheckboxGroupOwnProps = {\n children: React.ReactNode\n orientation?: \"horizontal\" | \"vertical\"\n}\n\nexport type CheckboxGroupProps = CheckboxGroupOwnProps &\n Omit<ViewProps, keyof CheckboxGroupOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledGroup = styled(View)<{\n groupDirection: \"row\" | \"column\"\n groupGap: number\n}>(({ groupDirection, groupGap }) => ({\n flexDirection: groupDirection,\n gap: groupGap\n}))\n\n/**\n * CheckboxGroup manages layout for a collection of Checkboxes.\n *\n * @param {\"horizontal\" | \"vertical\"} [orientation=\"vertical\"] - Layout direction.\n *\n * @example\n * <CheckboxGroup>\n * <Checkbox label=\"Chicken\" />\n * <Checkbox label=\"Beef\" />\n * </CheckboxGroup>\n */\nexport const CheckboxGroup = React.forwardRef<View, CheckboxGroupProps>(\n ({ orientation = \"vertical\", children, ...rest }, ref) => {\n const theme = useTheme()\n const { checkbox } = theme.tokens.components\n\n return (\n <StyledGroup\n ref={ref}\n groupDirection={orientation === \"horizontal\" ? \"row\" : \"column\"}\n groupGap={parseTokenValue(checkbox.spacing.gap)}\n {...rest}\n >\n {children}\n </StyledGroup>\n )\n }\n)\n\nCheckboxGroup.displayName = \"CheckboxGroup\"\n","import React from \"react\"\nimport { Pressable, View, PressableProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport { Typography } from \"../../atoms/Typography\"\nimport { Illustration, type IllustrationProps } from \"../../atoms/Illustration\"\n\nexport type RadioOwnProps = {\n value: string\n variant?: \"standalone\" | \"tile\"\n label?: React.ReactNode\n subText?: React.ReactNode\n asset?: IllustrationProps\n disabled?: boolean\n selected?: boolean\n onSelect?: (value: string) => void\n}\n\nexport type RadioProps = RadioOwnProps &\n Omit<PressableProps, keyof RadioOwnProps | \"children\">\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledRadioRoot = styled(Pressable)<{\n radioGap: number\n radioOpacity: number\n radioPaddingVertical?: number\n radioPaddingHorizontal?: number\n radioMaxWidth?: number\n radioBgColor?: string\n radioBorderWidth?: number\n radioBorderColor?: string\n radioBorderRadius?: number\n}>(\n ({\n radioGap,\n radioOpacity,\n radioPaddingVertical,\n radioPaddingHorizontal,\n radioMaxWidth,\n radioBgColor,\n radioBorderWidth,\n radioBorderColor,\n radioBorderRadius\n }) => ({\n flexDirection: \"row\",\n alignItems: \"flex-start\",\n width: \"100%\",\n gap: radioGap,\n opacity: radioOpacity,\n ...(radioPaddingVertical !== undefined\n ? { paddingVertical: radioPaddingVertical }\n : {}),\n ...(radioPaddingHorizontal !== undefined\n ? { paddingHorizontal: radioPaddingHorizontal }\n : {}),\n ...(radioMaxWidth !== undefined ? { maxWidth: radioMaxWidth } : {}),\n ...(radioBgColor ? { backgroundColor: radioBgColor } : {}),\n ...(radioBorderWidth !== undefined\n ? { borderWidth: radioBorderWidth, borderColor: radioBorderColor }\n : {}),\n ...(radioBorderRadius !== undefined\n ? { borderRadius: radioBorderRadius }\n : {})\n })\n)\n\nconst StyledRadioControl = styled(View)<{\n controlSize: number\n controlBorderWidth: number\n controlBorderColor: string\n}>(({ controlSize, controlBorderWidth, controlBorderColor }) => ({\n width: controlSize,\n height: controlSize,\n minWidth: controlSize,\n minHeight: controlSize,\n borderWidth: controlBorderWidth,\n borderColor: controlBorderColor,\n borderRadius: controlSize / 2,\n alignItems: \"center\",\n justifyContent: \"center\"\n}))\n\nconst StyledIndicator = styled(View)<{\n indicatorSize: number\n indicatorBgColor: string\n}>(({ indicatorSize, indicatorBgColor }) => ({\n width: indicatorSize,\n height: indicatorSize,\n borderRadius: indicatorSize / 2,\n backgroundColor: indicatorBgColor\n}))\n\nconst StyledTextContent = styled(View)<{\n textContentGap: number\n}>(({ textContentGap }) => ({\n flexDirection: \"column\",\n gap: textContentGap,\n marginTop: 2\n}))\n\nconst StyledAssetWrapper = styled(View)({\n alignSelf: \"center\"\n})\n\n/**\n * Radio button component for single selection within a group.\n *\n * @param {string} value - The value of the radio button (required).\n * @param {\"standalone\" | \"tile\"} [variant=\"standalone\"] - Visual style variant.\n * @param {React.ReactNode} [label] - Main label text or content.\n * @param {React.ReactNode} [subText] - Optional descriptive subtext.\n * @param {IllustrationProps} [asset] - Optional illustration asset for tile variant.\n * @param {boolean} [disabled=false] - Whether the radio is disabled.\n * @param {boolean} [selected=false] - Whether the radio is currently selected.\n * @param {(value: string) => void} [onSelect] - Callback when radio is selected.\n *\n * @example\n * <Radio value=\"chicken\" label=\"Chicken\" subText=\"Tender & tasty\" />\n */\nexport const Radio = React.forwardRef<View, RadioProps>(\n (\n {\n variant = \"standalone\",\n label,\n subText,\n asset,\n disabled = false,\n value,\n selected = false,\n onSelect,\n style,\n ...rest\n },\n ref\n ) => {\n const theme = useTheme()\n const { radio } = theme.tokens.components\n const { spacing, typography, colour } = radio\n\n const handlePress = () => {\n if (disabled) return\n onSelect?.(value)\n }\n\n const controlSize = parseTokenValue(radio.size.control.default)\n const indicatorSize = parseTokenValue(radio.size.indicator.default)\n const borderWidthVal = parseTokenValue(radio.borderWidth.default)\n const isTile = variant === \"tile\"\n\n return (\n <StyledRadioRoot\n ref={ref}\n onPress={handlePress}\n disabled={disabled}\n accessibilityRole=\"radio\"\n accessibilityState={{ selected, disabled }}\n radioGap={parseTokenValue(\n isTile ? radio.radioTile.spacing.gap : spacing.gap\n )}\n radioOpacity={disabled ? parseFloat(radio.opacity.disabled) : 1}\n radioPaddingVertical={\n isTile\n ? parseTokenValue(radio.radioTile.spacing.verticalPadding)\n : undefined\n }\n radioPaddingHorizontal={\n isTile\n ? parseTokenValue(radio.radioTile.spacing.horizontalPadding)\n : undefined\n }\n radioMaxWidth={\n isTile ? parseTokenValue(radio.radioTile.size.maxWidth) : undefined\n }\n radioBgColor={\n isTile\n ? selected\n ? radio.radioTile.colour.background.selected\n : radio.radioTile.colour.background.default\n : undefined\n }\n radioBorderWidth={\n isTile\n ? parseTokenValue(radio.radioTile.borderWidth.default)\n : undefined\n }\n radioBorderColor={\n isTile\n ? selected\n ? radio.radioTile.colour.border.selected\n : radio.radioTile.colour.border.default\n : undefined\n }\n radioBorderRadius={\n isTile\n ? parseTokenValue(radio.radioTile.borderRadius.default)\n : undefined\n }\n style={typeof style === \"function\" ? undefined : style}\n {...rest}\n >\n <StyledRadioControl\n controlSize={controlSize}\n controlBorderWidth={borderWidthVal}\n controlBorderColor={\n selected\n ? radio.colour.control.border.selected\n : radio.colour.control.border.default\n }\n >\n {selected && (\n <StyledIndicator\n indicatorSize={indicatorSize}\n indicatorBgColor={radio.colour.indicator.background.selected}\n />\n )}\n </StyledRadioControl>\n\n {(label || subText) && (\n <StyledTextContent\n textContentGap={parseTokenValue(spacing.content.gap)}\n >\n {label && (\n <Typography token={typography.label} color={colour.text.title}>\n {label}\n </Typography>\n )}\n {subText && (\n <Typography\n token={typography.subText}\n color={colour.text.subtext}\n >\n {subText}\n </Typography>\n )}\n </StyledTextContent>\n )}\n\n {isTile && asset && (\n <StyledAssetWrapper>\n <Illustration {...asset} />\n </StyledAssetWrapper>\n )}\n </StyledRadioRoot>\n )\n }\n)\n\nRadio.displayName = \"Radio\"\n","import React from \"react\"\nimport { View, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport { Radio, type RadioOwnProps } from \"./Radio\"\n\ntype RadioGroupOwnProps = {\n name: string\n options?: RadioOwnProps[]\n orientation?: \"horizontal\" | \"vertical\"\n value?: string\n defaultValue?: string\n disabled?: boolean\n onValueChange?: (value: string) => void\n}\n\nexport type RadioGroupProps = RadioGroupOwnProps &\n Omit<ViewProps, keyof RadioGroupOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledRadioGroup = styled(View)<{\n groupDirection: \"row\" | \"column\"\n groupGap: number\n}>(({ groupDirection, groupGap }) => ({\n flexDirection: groupDirection,\n gap: groupGap\n}))\n\n/**\n * RadioGroup component that manages state for a collection of Radio buttons.\n *\n * @param {string} name - Name attribute for the radio group (required).\n * @param {Array} [options] - Options to render as radio buttons.\n * @param {\"horizontal\" | \"vertical\"} [orientation=\"vertical\"] - Layout direction.\n * @param {string} [value] - Controlled value of the selected radio.\n * @param {string} [defaultValue] - Default selected value for uncontrolled usage.\n * @param {boolean} [disabled=false] - Whether all radios in the group are disabled.\n * @param {(value: string) => void} [onValueChange] - Callback when selection changes.\n *\n * @example\n * <RadioGroup\n * name=\"size\"\n * options={[\n * { value: \"small\", label: \"Small\" },\n * { value: \"medium\", label: \"Medium\" }\n * ]}\n * value={size}\n * onValueChange={setSize}\n * />\n *\n * @example\n * <RadioGroup name=\"size\" defaultValue=\"medium\">\n * <RadioGroup.Radio value=\"small\" label=\"Small\" />\n * <RadioGroup.Radio value=\"medium\" label=\"Medium\" />\n * </RadioGroup>\n */\nconst RadioGroupRoot = React.forwardRef<View, RadioGroupProps>(\n (\n {\n name: _name,\n options,\n orientation = \"vertical\",\n value,\n defaultValue,\n onValueChange,\n disabled = false,\n children,\n ...rest\n },\n ref\n ) => {\n const theme = useTheme()\n const { radio } = theme.tokens.components\n\n const optionsFirstValue = options?.[0]?.value\n const derivedDefaultValue = defaultValue ?? optionsFirstValue\n\n const isControlled = value !== undefined\n const [internalValue, setInternalValue] = React.useState(\n derivedDefaultValue ?? \"\"\n )\n const currentValue = isControlled ? value : internalValue\n\n const handleSelect = React.useCallback(\n (newValue: string) => {\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onValueChange?.(newValue)\n },\n [isControlled, onValueChange]\n )\n\n const renderChildren = () => {\n if (options) {\n return options.map((option) => (\n <Radio\n key={option.value}\n {...option}\n selected={currentValue === option.value}\n onSelect={handleSelect}\n disabled={disabled || option.disabled}\n />\n ))\n }\n\n return React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child\n return React.cloneElement(child as React.ReactElement<RadioOwnProps>, {\n selected: currentValue === (child.props as RadioOwnProps).value,\n onSelect: handleSelect,\n disabled: disabled || (child.props as RadioOwnProps).disabled\n })\n })\n }\n\n return (\n <StyledRadioGroup\n ref={ref}\n accessibilityRole=\"radiogroup\"\n groupDirection={orientation === \"horizontal\" ? \"row\" : \"column\"}\n groupGap={parseTokenValue(radio.spacing.gap)}\n {...rest}\n >\n {renderChildren()}\n </StyledRadioGroup>\n )\n }\n)\n\nRadioGroupRoot.displayName = \"RadioGroup\"\n\ntype RadioGroupComponent = React.ForwardRefExoticComponent<\n RadioGroupProps & React.RefAttributes<View>\n> & {\n Radio: typeof Radio\n}\n\nexport const RadioGroup = Object.assign(RadioGroupRoot, {\n Radio\n}) as RadioGroupComponent\n","import React from \"react\"\nimport { View, Pressable, ScrollView, ViewProps } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport { Typography } from \"../../atoms/Typography\"\n\ntype SegmentedControlLayout = \"fixed\" | \"intrinsic\"\n\ntype SegmentedControlOption = {\n value: string\n label: React.ReactNode\n disabled?: boolean\n}\n\ntype SegmentedControlOwnProps = {\n options?: SegmentedControlOption[]\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n layout?: SegmentedControlLayout\n disabled?: boolean\n}\n\nexport type SegmentedControlProps = SegmentedControlOwnProps &\n Omit<ViewProps, keyof SegmentedControlOwnProps>\n\ntype SegmentedControlItemOwnProps = {\n value: string\n disabled?: boolean\n children: React.ReactNode\n}\n\nexport type SegmentedControlItemProps = SegmentedControlItemOwnProps &\n Omit<ViewProps, keyof SegmentedControlItemOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst StyledSegmentItem = styled(Pressable)<{\n itemHeight: number\n itemMinWidth: number\n itemPaddingVertical: number\n itemPaddingHorizontal: number\n itemBorderRadius: number\n itemBgColor: string\n itemOpacity: number\n itemFlex?: number\n}>(\n ({\n itemHeight,\n itemMinWidth,\n itemPaddingVertical,\n itemPaddingHorizontal,\n itemBorderRadius,\n itemBgColor,\n itemOpacity,\n itemFlex\n }) => ({\n height: itemHeight,\n minWidth: itemMinWidth,\n paddingVertical: itemPaddingVertical,\n paddingHorizontal: itemPaddingHorizontal,\n borderRadius: itemBorderRadius,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: itemBgColor,\n opacity: itemOpacity,\n ...(itemFlex !== undefined ? { flex: itemFlex } : { flexShrink: 0 })\n })\n)\n\nconst StyledContainer = styled(View)<{\n containerGap: number\n containerPaddingVertical: number\n containerPaddingHorizontal: number\n containerBorderRadius: number\n containerBgColor: string\n containerFullWidth: boolean\n}>(\n ({\n containerGap,\n containerPaddingVertical,\n containerPaddingHorizontal,\n containerBorderRadius,\n containerBgColor,\n containerFullWidth\n }) => ({\n flexDirection: \"row\",\n alignItems: \"stretch\",\n gap: containerGap,\n paddingVertical: containerPaddingVertical,\n paddingHorizontal: containerPaddingHorizontal,\n borderRadius: containerBorderRadius,\n backgroundColor: containerBgColor,\n ...(containerFullWidth ? { width: \"100%\" } : {})\n })\n)\n\n/**\n * Internal item rendered within SegmentedControl.\n */\nconst SegmentedControlItemBase = ({\n value,\n disabled = false,\n selected = false,\n layout,\n onSelect,\n children,\n theme\n}: {\n value: string\n disabled?: boolean\n selected?: boolean\n layout: SegmentedControlLayout\n onSelect?: (value: string) => void\n children: React.ReactNode\n theme: ReturnType<typeof useTheme>\n}) => {\n const { controlItem } = theme.tokens.components.segmentedControl\n const { size, spacing, borderRadius, colour, opacity } = controlItem\n const { typography } = controlItem\n\n const handlePress = () => {\n if (disabled) return\n onSelect?.(value)\n }\n\n const { token, color } = selected\n ? {\n token: typography.label.default,\n color: colour.text.selected\n }\n : {\n token: typography.label.inactive,\n color: colour.text.unselected\n }\n\n return (\n <StyledSegmentItem\n onPress={handlePress}\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityState={{ selected, disabled }}\n itemHeight={parseTokenValue(size.small.height)}\n itemMinWidth={parseTokenValue(size.small.minWidth)}\n itemPaddingVertical={parseTokenValue(spacing.verticalPadding)}\n itemPaddingHorizontal={parseTokenValue(spacing.horizontalPadding)}\n itemBorderRadius={parseTokenValue(borderRadius.default)}\n itemBgColor={selected ? colour.background.selected : \"transparent\"}\n itemOpacity={disabled ? parseFloat(opacity.disabled.default) : 1}\n itemFlex={layout === \"fixed\" ? 1 : undefined}\n >\n <Typography token={token} color={color}>\n {children}\n </Typography>\n </StyledSegmentItem>\n )\n}\n\n/**\n * SegmentedControl.Item for compound component API.\n */\nconst SegmentedControlItem = React.forwardRef<View, SegmentedControlItemProps>(\n (_props, _ref) => {\n return null\n }\n)\n\nSegmentedControlItem.displayName = \"SegmentedControl.Item\"\n\n/**\n * Segmented control component for selecting exactly one option from a set.\n *\n * @param {Array} [options] - Options to render as segments.\n * @param {string} [value] - Controlled selected value.\n * @param {string} [defaultValue] - Uncontrolled initial selected value.\n * @param {(value: string) => void} [onValueChange] - Called when the selected value changes.\n * @param {\"fixed\" | \"intrinsic\"} [layout=\"intrinsic\"] - Layout mode.\n * @param {boolean} [disabled=false] - Whether the entire control is disabled.\n *\n * @example\n * <SegmentedControl\n * options={[{ value: \"left\", label: \"Left\" }, { value: \"right\", label: \"Right\" }]}\n * defaultValue=\"left\"\n * />\n *\n * @example\n * <SegmentedControl value={value} onValueChange={setValue}>\n * <SegmentedControl.Item value=\"left\">Left</SegmentedControl.Item>\n * <SegmentedControl.Item value=\"right\">Right</SegmentedControl.Item>\n * </SegmentedControl>\n */\nconst SegmentedControlRoot = React.forwardRef<View, SegmentedControlProps>(\n (\n {\n options,\n value,\n defaultValue,\n onValueChange,\n layout = \"intrinsic\",\n disabled = false,\n children,\n ...rest\n },\n ref\n ) => {\n const theme = useTheme()\n const { spacing, borderRadius, colour } =\n theme.tokens.components.segmentedControl\n\n const optionsFirstValue = options?.[0]?.value\n const childrenArray = React.Children.toArray(children)\n const firstChildValue = childrenArray\n .map((child) => {\n if (!React.isValidElement(child)) return undefined\n return (child.props as { value?: string }).value\n })\n .find((v): v is string => typeof v === \"string\")\n\n const derivedDefaultValue =\n defaultValue ?? optionsFirstValue ?? firstChildValue\n\n const isControlled = typeof value === \"string\"\n const [uncontrolledValue, setUncontrolledValue] = React.useState(\n () => derivedDefaultValue ?? \"\"\n )\n const currentValue = isControlled ? value : uncontrolledValue\n\n const handleSelect = React.useCallback(\n (newValue: string) => {\n if (!isControlled) {\n setUncontrolledValue(newValue)\n }\n onValueChange?.(newValue)\n },\n [isControlled, onValueChange]\n )\n\n const renderItems = () => {\n if (options) {\n return options.map((option) => (\n <SegmentedControlItemBase\n key={option.value}\n value={option.value}\n disabled={disabled || option.disabled}\n selected={currentValue === option.value}\n layout={layout}\n onSelect={handleSelect}\n theme={theme}\n >\n {option.label}\n </SegmentedControlItemBase>\n ))\n }\n\n return childrenArray.map((child) => {\n if (!React.isValidElement(child)) return child\n const childProps = child.props as SegmentedControlItemOwnProps\n return (\n <SegmentedControlItemBase\n key={childProps.value}\n value={childProps.value}\n disabled={disabled || childProps.disabled}\n selected={currentValue === childProps.value}\n layout={layout}\n onSelect={handleSelect}\n theme={theme}\n >\n {childProps.children}\n </SegmentedControlItemBase>\n )\n })\n }\n\n const containerProps = {\n containerGap: parseTokenValue(spacing.gap),\n containerPaddingVertical: parseTokenValue(spacing.verticalPadding),\n containerPaddingHorizontal: parseTokenValue(spacing.horizontalPadding),\n containerBorderRadius: parseTokenValue(borderRadius.default),\n containerBgColor: colour.background.default,\n containerFullWidth: layout === \"fixed\"\n }\n\n if (layout === \"intrinsic\") {\n return (\n <View ref={ref} {...rest}>\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={{\n flexDirection: \"row\",\n alignItems: \"stretch\",\n gap: containerProps.containerGap,\n paddingVertical: containerProps.containerPaddingVertical,\n paddingHorizontal: containerProps.containerPaddingHorizontal,\n borderRadius: containerProps.containerBorderRadius,\n backgroundColor: containerProps.containerBgColor\n }}\n >\n {renderItems()}\n </ScrollView>\n </View>\n )\n }\n\n return (\n <StyledContainer ref={ref} {...containerProps} {...rest}>\n {renderItems()}\n </StyledContainer>\n )\n }\n)\n\nSegmentedControlRoot.displayName = \"SegmentedControl\"\n\ntype SegmentedControlComponent = React.ForwardRefExoticComponent<\n SegmentedControlProps & React.RefAttributes<View>\n> & {\n Item: typeof SegmentedControlItem\n}\n\nexport const SegmentedControl = Object.assign(SegmentedControlRoot, {\n Item: SegmentedControlItem\n}) as SegmentedControlComponent\n","import React, { useCallback, useRef } from \"react\"\nimport { View, ViewProps, PanResponder, LayoutChangeEvent } from \"react-native\"\nimport styled from \"@emotion/native\"\nimport { useTheme } from \"@emotion/react\"\nimport * as SliderPrimitive from \"@rn-primitives/slider\"\nimport { Typography } from \"../../atoms/Typography\"\n\ntype SliderOwnProps = {\n value?: number\n defaultValue?: number\n onValueChange?: (value: number) => void\n onValueCommitted?: (value: number) => void\n min?: number\n max?: number\n step?: number\n disabled?: boolean\n leadingLabel?: string\n trailingLabel?: string\n leadingIcon?: React.ReactNode\n trailingIcon?: React.ReactNode\n description?: string\n}\n\nexport type SliderProps = SliderOwnProps & Omit<ViewProps, keyof SliderOwnProps>\n\nconst parseTokenValue = (value: string): number => parseFloat(value)\n\nconst clamp = (val: number, min: number, max: number): number =>\n Math.min(Math.max(val, min), max)\n\nconst snap = (val: number, step: number, min: number): number => {\n const steps = Math.round((val - min) / step)\n return min + steps * step\n}\n\nconst StyledSliderRoot = styled(SliderPrimitive.Root)<{\n sliderGap: number\n sliderMinWidth: number\n sliderOpacity: number\n}>(({ sliderGap, sliderMinWidth, sliderOpacity }) => ({\n gap: sliderGap,\n minWidth: sliderMinWidth,\n opacity: sliderOpacity\n}))\n\nconst StyledLabelRow = styled(View)<{\n labelRowGap: number\n}>(({ labelRowGap }) => ({\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: labelRowGap\n}))\n\nconst StyledLabelSlot = styled(View)<{\n labelSlotGap: number\n}>(({ labelSlotGap }) => ({\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: labelSlotGap,\n flexShrink: 0\n}))\n\nconst StyledTrackArea = styled(View)<{\n trackAreaHeight: number\n}>(({ trackAreaHeight }) => ({\n flex: 1,\n height: trackAreaHeight,\n justifyContent: \"center\"\n}))\n\nconst StyledTrack = styled(SliderPrimitive.Track)<{\n trackHeight: number\n trackBorderRadius: number\n trackBgColor: string\n trackBorderWidth: number\n trackBorderColor: string\n}>(\n ({\n trackHeight,\n trackBorderRadius,\n trackBgColor,\n trackBorderWidth,\n trackBorderColor\n }) => ({\n height: trackHeight,\n borderRadius: trackBorderRadius,\n backgroundColor: trackBgColor,\n borderWidth: trackBorderWidth,\n borderColor: trackBorderColor,\n overflow: \"hidden\"\n })\n)\n\nconst StyledRange = styled(SliderPrimitive.Range)<{\n rangeBgColor: string\n rangeBorderRadius: number\n}>(({ rangeBgColor, rangeBorderRadius }) => ({\n height: \"100%\",\n backgroundColor: rangeBgColor,\n borderRadius: rangeBorderRadius\n}))\n\nconst StyledThumb = styled(SliderPrimitive.Thumb)<{\n thumbSize: number\n thumbBorderRadius: number\n thumbBgColor: string\n}>(({ thumbSize, thumbBorderRadius, thumbBgColor }) => ({\n position: \"absolute\",\n width: thumbSize,\n height: thumbSize,\n borderRadius: thumbBorderRadius,\n backgroundColor: thumbBgColor,\n alignItems: \"center\",\n justifyContent: \"center\"\n}))\n\n/**\n * Slider component for selecting a numeric value within a min/max range.\n *\n * @param {number} [value] - Controlled value.\n * @param {number} [defaultValue] - Uncontrolled initial value.\n * @param {(value: number) => void} [onValueChange] - Callback fired on every value change.\n * @param {(value: number) => void} [onValueCommitted] - Callback fired when the user finishes dragging.\n * @param {number} [min=0] - Minimum value.\n * @param {number} [max=100] - Maximum value.\n * @param {number} [step=1] - Step increment.\n * @param {boolean} [disabled=false] - Prevents interaction.\n * @param {string} [leadingLabel] - Label to the left of the track.\n * @param {string} [trailingLabel] - Label to the right of the track.\n * @param {React.ReactNode} [leadingIcon] - Icon before the leading label.\n * @param {React.ReactNode} [trailingIcon] - Icon after the trailing label.\n * @param {string} [description] - Descriptive text below the control.\n *\n * @example\n * <Slider defaultValue={25} leadingLabel=\"0kg\" trailingLabel=\"50kg+\" />\n */\nexport const Slider = React.forwardRef<View, SliderProps>(\n (\n {\n value: controlledValue,\n defaultValue = 0,\n onValueChange,\n onValueCommitted,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n leadingLabel,\n trailingLabel,\n leadingIcon,\n trailingIcon,\n description,\n ...rest\n },\n ref\n ) => {\n const theme = useTheme()\n const { slider, buttons } = theme.tokens.components\n const { dimensions } = theme.tokens.semantics\n\n const isControlled = controlledValue !== undefined\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const currentValue = isControlled ? controlledValue : internalValue\n\n const trackWidth = useRef(0)\n const thumbSize = parseTokenValue(buttons.size.md.height)\n const trackHeight = parseTokenValue(slider.sizing.track.height)\n\n const fraction = max > min ? (currentValue - min) / (max - min) : 0\n\n const handleLayout = (e: LayoutChangeEvent) => {\n trackWidth.current = e.nativeEvent.layout.width\n }\n\n const updateValue = useCallback(\n (locationX: number) => {\n if (disabled || trackWidth.current === 0) return\n const ratio = clamp(locationX / trackWidth.current, 0, 1)\n const raw = min + ratio * (max - min)\n const snapped = snap(clamp(raw, min, max), step, min)\n if (!isControlled) {\n setInternalValue(snapped)\n }\n onValueChange?.(snapped)\n },\n [disabled, min, max, step, isControlled, onValueChange]\n )\n\n const panResponder = useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => !disabled,\n onMoveShouldSetPanResponder: () => !disabled,\n onPanResponderGrant: (e) => {\n updateValue(e.nativeEvent.locationX)\n },\n onPanResponderMove: (e) => {\n updateValue(e.nativeEvent.locationX)\n },\n onPanResponderRelease: () => {\n onValueCommitted?.(currentValue)\n }\n })\n ).current\n\n const hasLeading = leadingIcon !== undefined || leadingLabel !== undefined\n const hasTrailing =\n trailingIcon !== undefined || trailingLabel !== undefined\n\n const labelGap = parseTokenValue(slider.sliderField.spacing.label.gap)\n const roundBorderRadius = parseTokenValue(dimensions.borderRadius.round)\n\n return (\n <StyledSliderRoot\n ref={ref}\n value={currentValue}\n min={min}\n max={max}\n disabled={disabled}\n sliderGap={parseTokenValue(slider.sliderField.spacing.gap)}\n sliderMinWidth={parseTokenValue(slider.sizing.minWidth)}\n sliderOpacity={disabled ? parseFloat(buttons.opacity.disabled) : 1}\n {...rest}\n >\n <StyledLabelRow labelRowGap={labelGap}>\n {hasLeading && (\n <StyledLabelSlot labelSlotGap={labelGap}>\n {leadingIcon}\n {leadingLabel && (\n <Typography\n token={slider.sliderField.typography.label}\n color={slider.sliderField.colour.text.label}\n >\n {leadingLabel}\n </Typography>\n )}\n </StyledLabelSlot>\n )}\n\n <StyledTrackArea\n trackAreaHeight={thumbSize}\n onLayout={handleLayout}\n {...panResponder.panHandlers}\n >\n <StyledTrack\n trackHeight={trackHeight}\n trackBorderRadius={roundBorderRadius}\n trackBgColor={slider.colour.track.background.default}\n trackBorderWidth={parseTokenValue(dimensions.borderWidth.sm)}\n trackBorderColor={slider.colour.track.border.default}\n >\n <StyledRange\n rangeBgColor={slider.colour.indicator.background.default}\n rangeBorderRadius={roundBorderRadius}\n style={{ width: `${fraction * 100}%` }}\n />\n </StyledTrack>\n <StyledThumb\n thumbSize={thumbSize}\n style={{\n left: `${fraction * 100}%`,\n marginLeft: -thumbSize / 2\n }}\n thumbBorderRadius={parseTokenValue(buttons.borderRadius.default)}\n thumbBgColor={\n buttons.iconButton.filledButton.colour.background.primary\n .default\n }\n >\n <Typography size=\"xs\" color=\"alt\">\n ⟨⟩\n </Typography>\n </StyledThumb>\n </StyledTrackArea>\n\n {hasTrailing && (\n <StyledLabelSlot labelSlotGap={labelGap}>\n {trailingLabel && (\n <Typography\n token={slider.sliderField.typography.label}\n color={slider.sliderField.colour.text.label}\n >\n {trailingLabel}\n </Typography>\n )}\n {trailingIcon}\n </StyledLabelSlot>\n )}\n </StyledLabelRow>\n\n {description && (\n <Typography\n token={slider.sliderField.typography.description}\n color={slider.sliderField.colour.text.description}\n >\n {description}\n </Typography>\n )}\n </StyledSliderRoot>\n )\n }\n)\n\nSlider.displayName = \"Slider\"\n"]}
|