{"version":3,"sources":["jsdelivr-header.js","/npm/alouette@16.3.0/src/core/useSafeAreaInsets.web.ts","/npm/alouette@16.3.0/src/components/primitives/createVariants.ts","/npm/alouette@16.3.0/src/components/containers/variants.ts","/npm/alouette@16.3.0/src/components/containers/Box.tsx","/npm/alouette@16.3.0/src/components/containers/PressableBox.tsx","/npm/alouette@16.3.0/src/components/primitives/Icon.tsx","/npm/alouette@16.3.0/src/components/actions/IconButton.tsx","/npm/alouette@16.3.0/src/components/primitives/stacks.ts","/npm/alouette@16.3.0/src/components/typography/Typography.tsx","/npm/alouette@16.3.0/src/components/actions/Button.tsx","/npm/alouette@16.3.0/src/components/feedback/FeedbackIcon.tsx","/npm/alouette@16.3.0/src/components/feedback/Message.tsx","/npm/alouette@16.3.0/src/components/forms/InputText.tsx","/npm/alouette@16.3.0/src/components/primitives/ScrollView.ts","/npm/alouette@16.3.0/src/components/story-components/StoryTitle.tsx","/npm/alouette@16.3.0/src/components/story-components/Story.tsx","/npm/alouette@16.3.0/src/components/story-components/StoryContainer.tsx","/npm/alouette@16.3.0/src/components/story-components/StoryDecorator.tsx","/npm/alouette@16.3.0/src/components/story-components/StoryGrid.tsx","/npm/alouette@16.3.0/src/core/AlouetteProvider.tsx","/npm/alouette@16.3.0/src/core/SafeAreaProvider.web.ts","/npm/alouette@16.3.0/src/core/AlouetteDecorator.tsx","/npm/alouette@16.3.0/src/components/story-components/WithTamaguiConfig.tsx","/npm/alouette@16.3.0/src/config/Breakpoints.ts","/npm/alouette@16.3.0/src/components/windowSize/useCurrentBreakpointName.ts","/npm/alouette@16.3.0/src/components/windowSize/SwitchBreakpoints.tsx","/npm/alouette@16.3.0/src/components/layout/Separator.tsx","/npm/alouette@16.3.0/src/components/layout/PressableListItem.tsx","/npm/alouette@16.3.0/src/components/layout/GradientBackground.tsx"],"names":[],"mappings":"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","file":"/npm/alouette@16.3.0/dist/index-browser.es.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/alouette@16.3.0/dist/index-browser.es.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import type { useSafeAreaInsets as useSafeAreaInsetsImpl } from \"react-native-safe-area-context\";\n\nexport const useSafeAreaInsets: typeof useSafeAreaInsetsImpl = () => ({\n  top: 0,\n  bottom: 0,\n  left: 0,\n  right: 0,\n});\n","import type { VariantSpreadExtras } from \"@tamagui/core\";\n\nexport const fullscreenStyle = {\n  position: \"absolute\",\n  top: 0,\n  left: 0,\n  right: 0,\n  bottom: 0,\n} as const;\n\nexport type InternalPseudoState = \"focus\" | \"hover\" | \"press\";\n\nexport const getInteractionStyles = (\n  name: \"backgroundColor\" | \"borderColor\" | \"outlineColor\" | \"shadowColor\",\n  { disabled, interactive, variant }: VariantSpreadExtras<any>[\"props\"],\n) => {\n  const isGhost = variant?.startsWith(\"ghost-\");\n  const prefix =\n    interactive === \"text\"\n      ? \"interactive.forms\"\n      : // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n        `interactive.${(isGhost ? variant.slice(6) : variant) || \"contained\"}`;\n\n  if (disabled) {\n    return { [name]: `$${prefix}.${name}:disabled` } as const;\n  }\n\n  if (name === \"shadowColor\") {\n    // no need to add :hover, :focus, :press, and causes issues because all of the box-shadow is set and resets width etc\n    return { [name]: `$${prefix}.${name}` } as const;\n  }\n\n  if (name === \"outlineColor\") {\n    return {\n      focusVisibleStyle: {\n        outlineWidth: 2,\n        outlineStyle: \"solid\",\n        outlineOffset: 2,\n        outlineColor: `$${prefix}.${name}:focus`,\n      },\n    } as const;\n  }\n\n  return {\n    [name]: isGhost ? \"transparent\" : `$${prefix}.${name}`,\n    hoverStyle: { [name]: `$${prefix}.${name}:hover` },\n    pressStyle: { [name]: `$${prefix}.${name}:press` },\n    focusStyle: { [name]: `$${prefix}.${name}:focus` },\n  } as const;\n};\n","import { isAndroid } from \"@tamagui/core\";\nimport type { SizeTokens, VariantSpreadExtras, ViewStyle } from \"@tamagui/core\";\nimport {\n  fullscreenStyle,\n  getInteractionStyles,\n} from \"../primitives/createVariants\";\n\nexport const withBorder = (\n  val: SizeTokens | boolean,\n  { props }: VariantSpreadExtras<any>,\n) => {\n  return {\n    borderWidth: typeof val !== \"boolean\" ? val : 1,\n\n    ...(props.interactive\n      ? getInteractionStyles(\"borderColor\", props)\n      : { borderColor: \"$borderColor\" }),\n  } as const;\n};\n\nexport const withBackground = (\n  val: boolean,\n  { props }: VariantSpreadExtras<any>,\n) => {\n  if (!val) return {} as const;\n\n  if (!props.role && !props.outlineStyle && props.interactive) {\n    throw new Error(\"A role prop is required while using interactive\");\n  }\n\n  return {\n    ...(props.interactive\n      ? {\n          ...getInteractionStyles(\"backgroundColor\", props),\n          ...getInteractionStyles(\"outlineColor\", props),\n        }\n      : {\n          backgroundColor: props.withElevation\n            ? \"$nonInteractiveBackgroundColor.elevated\"\n            : \"$nonInteractiveBackgroundColor\",\n        }),\n  } as const;\n};\n\nexport const withScreenBackground = (\n  val: boolean | \"translucent\",\n  { props }: VariantSpreadExtras<any>,\n) => {\n  if (!val) return {} as const;\n\n  if (val === \"translucent\") {\n    if (process.env.NODE_ENV !== \"production\" && props.withElevation) {\n      throw new Error(\n        \"Cannot use withElevation and translucent screen background together\",\n      );\n    }\n    return {\n      backgroundColor: \"$screenBackgroundColor.translucent\",\n      backdropFilter: \"blur(14px)\",\n    } as const;\n  }\n\n  if (props.withElevation) {\n    return {\n      backgroundColor: \"$screenBackgroundColor.elevated\",\n    } as const;\n  }\n\n  return {\n    backgroundColor: \"$screenBackgroundColor\",\n  } as const;\n};\n\nexport const withElevation = (\n  val: boolean,\n  { props }: VariantSpreadExtras<any>,\n) => {\n  if (!val) return {} as const;\n\n  const height = 2;\n\n  return {\n    ...(props.disabled\n      ? {}\n      : {\n          shadowOffset: { width: 0, height },\n          shadowOpacity: 0.65,\n          shadowRadius: 6,\n          ...(isAndroid ? { elevationAndroid: height * 2 } : undefined),\n        }),\n    ...(props.interactive\n      ? getInteractionStyles(\"shadowColor\", props)\n      : { shadowColor: \"$shadowColor\" }),\n  } as const;\n};\n\nconst circularStyle = {\n  borderRadius: 100_000,\n  padding: 0,\n};\n\nexport const size = (val: number) => {\n  return { width: val, height: val } as const;\n};\n\nexport const circular = {\n  true: (val: boolean, { props, tokens }: { props: any; tokens: any }) => {\n    if (!(\"size\" in props)) {\n      return circularStyle;\n    }\n    const sizePropValue: keyof typeof tokens.size = props.size;\n    const sizeValue = tokens.size[sizePropValue];\n    return {\n      ...circularStyle,\n      width: sizeValue,\n      height: sizeValue,\n      maxWidth: sizeValue,\n      maxHeight: sizeValue,\n      minWidth: sizeValue,\n      minHeight: sizeValue,\n    };\n  },\n} as const;\n\nexport const fullscreen = {\n  true: fullscreenStyle,\n} as const;\n\nexport const interactive = (\n  isInteractiveOrInteractiveCursorType: ViewStyle[\"cursor\"] | boolean,\n  { props }: VariantSpreadExtras<any>,\n) => {\n  if (!isInteractiveOrInteractiveCursorType) return null;\n  if (props.disabled) {\n    return { cursor: \"not-allowed\" } as const;\n  }\n  return {\n    cursor:\n      isInteractiveOrInteractiveCursorType === true\n        ? \"pointer\"\n        : isInteractiveOrInteractiveCursorType,\n\n    // fix to properly reset press/hover styles\n    transform: [{ scale: 1 }],\n\n    hoverStyle: {\n      transform: [{ scale: 1.02 }],\n    },\n\n    pressStyle: {\n      transform: [{ scale: 0.98 }],\n    },\n  } as const;\n};\n\nexport const centered = {\n  true: {\n    alignItems: \"center\",\n    justifyContent: \"center\",\n  },\n} as const;\n","import type { GetProps } from \"@tamagui/core\";\nimport { View, styled } from \"@tamagui/core\";\nimport { useSafeAreaInsets } from \"../../core/useSafeAreaInsets\";\nimport * as variants from \"./variants\";\n\n/** View with alouette variants */\nexport const Box = styled(View, {\n  name: \"Box\",\n  variants,\n  animation: \"fast\",\n} as const);\n\nexport type BoxProps = GetProps<typeof Box>;\n\nexport const SafeAreaBox = Box.styleable<{\n  padding?: never;\n  paddingTop?: never;\n  paddingBottom?: never;\n  paddingLeft?: never;\n  paddingRight?: never;\n}>((props) => {\n  const insets = useSafeAreaInsets();\n  return (\n    <Box\n      {...props}\n      paddingTop={insets.top}\n      paddingBottom={insets.bottom}\n      paddingLeft={insets.left}\n      paddingRight={insets.right}\n    />\n  );\n});\n\nexport type SafeAreaBoxProps = GetProps<typeof SafeAreaBox>;\n","import type { GetProps } from \"@tamagui/core\";\nimport { styled } from \"@tamagui/core\";\nimport { Box } from \"./Box\";\n\nexport const PressableBox = styled(Box, {\n  interactive: true,\n\n  variants: {\n    variant: {\n      contained: {\n        withBackground: true,\n      },\n      outlined: {\n        withBackground: true,\n        withBorder: 2,\n      },\n      elevated: {\n        withBackground: true,\n        withElevation: true,\n        withBorder: true,\n        borderColor: \"$contrastBorderColor\",\n      },\n      \"ghost-contained\": {\n        withBackground: true,\n      },\n      \"ghost-outlined\": {\n        withBorder: 2,\n        withBackground: true,\n      },\n    },\n  },\n\n  defaultVariants: {\n    variant: \"contained\",\n  },\n} as const);\n\nexport type PressableBoxProps = GetProps<typeof PressableBox>;\n","import type { ColorTokens, Variable } from \"@tamagui/core\";\nimport { Text, usePropsAndStyle } from \"@tamagui/core\";\nimport { cloneElement } from \"react\";\nimport type { ReactElement, ReactNode, SVGProps } from \"react\";\nimport type { OpaqueColorValue } from \"react-native\";\n\nexport type SVGIconElement = ReactElement<SVGProps<SVGSVGElement>>;\n\nexport interface IconProps {\n  icon: SVGIconElement;\n  disabled?: boolean;\n  accent?: boolean;\n  color?: ColorTokens | OpaqueColorValue | Variable<any> | undefined;\n  size?: number;\n}\n\nconst getDefaultColor = (disabled?: boolean, accent?: boolean) => {\n  if (disabled) return \"$textColor:disabled\";\n  if (accent) return \"$accentTextColor\";\n  return \"$textColor\";\n};\n\nexport function Icon({\n  icon,\n  size = 20,\n  disabled,\n  accent,\n  color = getDefaultColor(disabled, accent),\n}: IconProps): ReactNode {\n  const [props, style] = usePropsAndStyle(\n    { color, width: size, height: size },\n    { forComponent: Text },\n  );\n  return cloneElement(icon, { style, ...props } as any);\n}\n","import type { GetProps } from \"@tamagui/core\";\nimport { styled } from \"@tamagui/core\";\nimport type { ReactNode } from \"react\";\nimport { PressableBox } from \"../containers/PressableBox\";\nimport type { SVGIconElement } from \"../primitives/Icon\";\nimport { Icon } from \"../primitives/Icon\";\n\nconst IconButtonFrame = styled(PressableBox, {\n  name: \"IconButtonFrame\",\n  role: \"button\",\n  centered: true,\n  borderRadius: 10_000,\n\n  variants: {\n    variant: {\n      contained: {\n        withBackground: true,\n      },\n      outlined: {\n        withBackground: true,\n        withBorder: 1,\n      },\n      elevated: {\n        withBackground: true,\n        withElevation: true,\n        withBorder: 1,\n      },\n      \"ghost-contained\": {\n        withBackground: true,\n      },\n      \"ghost-outlined\": {\n        withBackground: true,\n        withBorder: 1,\n      },\n    },\n  },\n\n  defaultVariants: {\n    variant: \"contained\",\n  },\n});\n\ntype IconButtonFrameProps = GetProps<typeof IconButtonFrame>;\n\nexport interface IconButtonProps extends IconButtonFrameProps {\n  icon: NonNullable<SVGIconElement>;\n}\n\nexport function IconButton({\n  icon,\n  disabled,\n  size = 40,\n  variant = \"contained\",\n  ...pressableProps\n}: IconButtonProps): ReactNode {\n  return (\n    <IconButtonFrame\n      size={size}\n      variant={variant}\n      disabled={disabled}\n      {...pressableProps}\n    >\n      <Icon size={size / 2} disabled={disabled} icon={icon} />\n    </IconButtonFrame>\n  );\n}\n","import { View, styled } from \"@tamagui/core\";\nimport type { GetProps } from \"@tamagui/core\";\nimport { fullscreenStyle } from \"./createVariants\";\n\nconst variants = {\n  fullscreen: {\n    true: fullscreenStyle,\n  },\n} as const;\n\nexport const Stack = styled(View, {\n  name: \"Stack\",\n  variants: {\n    ...variants,\n    type: {\n      h: { flexDirection: \"row\" },\n      v: { flexDirection: \"column\" },\n    },\n  } as const,\n});\n\nexport type StackProps = GetProps<typeof Stack>;\n\nexport const HStack = styled(View, {\n  name: \"HStack\",\n  flexDirection: \"row\",\n  variants,\n});\n\nexport type HStackProps = GetProps<typeof HStack>;\n\nexport const VStack = styled(View, {\n  name: \"VStack\",\n  flexDirection: \"column\",\n});\n\nexport type VStackProps = GetProps<typeof VStack>;\n","import type { GetProps } from \"@tamagui/core\";\nimport { Text, styled } from \"@tamagui/core\";\n\nexport const Typography = styled(Text, {\n  name: \"Typography\",\n  fontFamily: \"$body\",\n  color: \"$textColor\",\n\n  variants: {\n    inherit: {\n      false: {\n        size: \"$md\",\n        weight: \"$regular\",\n        family: \"$body\",\n      },\n    },\n    size: {\n      \"...fontSize\": (size) => ({\n        fontSize: size,\n        lineHeight: size,\n      }),\n    },\n    weight: {\n      $regular: { fontWeight: \"$regular\" },\n      $bold: { fontWeight: \"$bold\" },\n      $extraBold: { fontWeight: \"$extraBold\" },\n    },\n    family: {\n      $heading: { fontFamily: \"$heading\" },\n      $body: { fontFamily: \"$body\" },\n      $monospace: { fontFamily: \"$monospace\" },\n    },\n    accent: {\n      true: {\n        color: \"$accentTextColor\",\n      },\n    },\n    disabled: {\n      true: {\n        color: \"$textColor:disabled\",\n      },\n    },\n  },\n\n  defaultVariants: {\n    inherit: false,\n    // contrast: false,\n  },\n} as const);\n\nexport type TypographyProps = GetProps<typeof Typography>;\n\nexport const TypographyParagraph = styled(Typography, {\n  name: \"TypographyParagraph\",\n  tag: \"p\",\n  userSelect: \"auto\",\n  family: \"$body\",\n} as const);\n\nexport type TypographyParagraphProps = GetProps<typeof TypographyParagraph>;\n","import type { GetProps } from \"@tamagui/core\";\nimport { styled } from \"@tamagui/core\";\nimport type { ReactNode } from \"react\";\nimport type { Except } from \"type-fest\";\nimport { PressableBox } from \"../containers/PressableBox\";\nimport type { SVGIconElement } from \"../primitives/Icon\";\nimport { Icon } from \"../primitives/Icon\";\nimport { HStack } from \"../primitives/stacks\";\nimport { Typography } from \"../typography/Typography\";\n\nconst ButtonFrame = styled(PressableBox, {\n  name: \"ButtonFrame\",\n  role: \"button\",\n  centered: true,\n  minHeight: 42,\n\n  variants: {\n    size: {\n      sm: {\n        paddingHorizontal: \"$sm\",\n        borderRadius: \"$3\",\n        minHeight: 32,\n      },\n      md: {\n        paddingHorizontal: \"$md\",\n        borderRadius: \"$sm\",\n        minHeight: 42,\n      },\n    },\n  },\n\n  defaultVariants: {\n    size: \"md\",\n  },\n} as const);\n\ntype ButtonFrameProps = GetProps<typeof ButtonFrame>;\n\nexport interface ButtonProps extends Except<ButtonFrameProps, \"size\"> {\n  icon?: NonNullable<SVGIconElement>;\n  text: ReactNode;\n  size?: \"md\" | \"sm\";\n}\n\nexport function Button({\n  icon,\n  text,\n  disabled,\n  variant = \"contained\",\n  size = \"md\",\n  ...pressableProps\n}: ButtonProps): ReactNode {\n  return (\n    <ButtonFrame\n      disabled={disabled}\n      variant={variant}\n      size={size}\n      {...pressableProps}\n    >\n      <HStack gap=\"$xs\" alignItems=\"center\">\n        {icon && (\n          <Icon\n            disabled={disabled}\n            icon={icon}\n            size={size === \"sm\" ? 16 : 20}\n          />\n        )}\n        <Typography\n          size={size === \"sm\" ? \"$sm\" : \"$md\"}\n          weight=\"$bold\"\n          paddingVertical={size === \"sm\" ? \"$1\" : \"$xs\"}\n          disabled={disabled}\n        >\n          {text}\n        </Typography>\n      </HStack>\n    </ButtonFrame>\n  );\n}\n\nexport function ExternalLinkButton(\n  props: Except<ButtonProps, \"href\" | \"role\" | \"tag\"> & { href: string },\n): ReactNode {\n  return (\n    <Button\n      {...props}\n      tag=\"a\"\n      role=\"link\"\n      target=\"_blank\"\n      rel=\"noopener noreferrer\"\n      style={{ textDecorationLine: \"none\" }}\n    />\n  );\n}\n\nexport function InternalLinkButton(\n  props: Except<ButtonProps, \"href\" | \"role\" | \"tag\"> & { href: string },\n): ReactNode {\n  return <Button {...props} tag=\"a\" role=\"link\" />;\n}\n","import { CheckRegularIcon } from \"alouette-icons/phosphor-icons/CheckRegularIcon\";\nimport { InfoRegularIcon } from \"alouette-icons/phosphor-icons/InfoRegularIcon\";\nimport { WarningCircleRegularIcon } from \"alouette-icons/phosphor-icons/WarningCircleRegularIcon\";\nimport { WarningRegularIcon } from \"alouette-icons/phosphor-icons/WarningRegularIcon\";\nimport type { ReactNode } from \"react\";\nimport { Icon } from \"../primitives/Icon\";\nimport type { MessageProps } from \"./Message\";\n\ninterface FeedbackIconProps {\n  type: MessageProps[\"theme\"];\n}\n\nexport function FeedbackIcon({ type }: FeedbackIconProps): ReactNode {\n  switch (type) {\n    case \"warning\":\n      return <Icon icon={<WarningCircleRegularIcon />} />;\n    case \"success\":\n      return <Icon icon={<CheckRegularIcon />} />;\n    case \"danger\":\n      return <Icon icon={<WarningRegularIcon />} />;\n    default:\n      return <Icon icon={<InfoRegularIcon />} />;\n  }\n}\n","import { View, styled } from \"@tamagui/core\";\nimport { XRegularIcon } from \"alouette-icons/phosphor-icons/XRegularIcon\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { IconButton } from \"../actions/IconButton\";\nimport { Box } from \"../containers/Box\";\nimport { Typography } from \"../typography/Typography\";\nimport { FeedbackIcon } from \"./FeedbackIcon\";\n\nexport const MessageFrame = styled(Box, {\n  name: \"MessageFrame\",\n  alignItems: \"center\",\n  withBackground: true,\n  borderRadius: \"$md\",\n  paddingHorizontal: \"$4\",\n  flexDirection: \"row\",\n  gap: \"$4\",\n} as const);\n\nexport const MessageText = styled(Typography, {\n  name: \"MessageText\",\n  // contrast: true,\n  size: \"$md\",\n  flexGrow: 1,\n  paddingVertical: \"$4\",\n  variants: {\n    centered: {\n      true: {\n        textAlign: \"center\",\n        paddingHorizontal: \"$4\",\n      },\n    },\n  },\n} as const);\n\nconst MessageIconContainer = styled(View, {\n  alignItems: \"center\",\n});\n\nconst MessageDismissButtonContainer = styled(View, {\n  marginRight: \"$2\",\n});\n\nexport interface MessageProps {\n  theme: NonNullable<ComponentProps<typeof MessageFrame>[\"theme\"]>;\n  children?: ReactNode;\n  textCentered?: boolean;\n  onDismiss?: () => void;\n}\n\nexport function Message({\n  theme,\n  textCentered,\n  children,\n  onDismiss,\n}: MessageProps): ReactNode {\n  return (\n    <MessageFrame theme={theme}>\n      {textCentered ? null : (\n        <MessageIconContainer>\n          <FeedbackIcon type={theme} />\n        </MessageIconContainer>\n      )}\n      <MessageText centered={textCentered}>{children}</MessageText>\n      {onDismiss ? (\n        <MessageDismissButtonContainer>\n          <IconButton\n            icon={<XRegularIcon />}\n            size={40}\n            variant=\"ghost-contained\"\n          />\n        </MessageDismissButtonContainer>\n      ) : null}\n    </MessageFrame>\n  );\n}\n","import type { GetProps } from \"@tamagui/core\";\nimport { styled } from \"@tamagui/core\";\nimport { TextInput } from \"react-native\";\nimport * as variants from \"../containers/variants\";\n\nconst StyledInputText = styled(\n  TextInput,\n  {\n    variants,\n\n    padding: \"$xs\",\n    borderRadius: \"$sm\",\n\n    color: \"$interactive.forms.textColor\",\n    // currently not working in web unless we use tamagui Input\n    // placeholderTextColor: \"$interactive.forms.placeholderTextColor\",\n\n    // @ts-expect-error missing prop due to isInput but in does exist in variants\n    withBorder: true,\n    withBackground: true,\n\n    borderWidth: 1,\n\n    // reset browser style\n    outlineStyle: \"none\",\n  },\n  { isInput: true },\n);\n\nexport const InputText = styled(StyledInputText, {\n  name: \"InputText\",\n  interactive: \"text\",\n  theme: \"primary\",\n  // animation: \"formElement\", // remove all style ?\n});\n\nexport type InputTextProps = GetProps<typeof InputText>;\n\nexport const TextArea = styled(InputText, {\n  multiline: true,\n});\n\nexport type TextAreaProps = GetProps<typeof TextArea>;\n","import type { GetProps } from \"@tamagui/core\";\nimport { styled } from \"@tamagui/core\";\nimport { ScrollView as ScrollViewNative } from \"react-native\";\nimport { fullscreenStyle } from \"./createVariants\";\n\nexport const ScrollView = styled(\n  ScrollViewNative,\n  {\n    name: \"ScrollView\",\n    scrollEnabled: true,\n\n    variants: {\n      fullscreen: {\n        true: fullscreenStyle,\n      },\n    },\n  } as const,\n  {\n    accept: {\n      contentContainerStyle: \"style\",\n    },\n  } as const,\n);\n\nexport type ScrollView = Pick<ScrollViewNative, \"scrollTo\">;\n\nexport type ScrollViewProps = GetProps<typeof ScrollView>;\n","import type { GetProps } from \"@tamagui/core\";\nimport { styled } from \"@tamagui/core\";\nimport { Typography } from \"../typography/Typography\";\n\nexport const StoryTitle = styled(Typography, {\n  family: \"$heading\",\n  weight: \"$extraBold\",\n  variants: {\n    level: {\n      1: { size: \"$xl\", marginBottom: \"$8\" },\n      2: { size: \"$lg\", marginBottom: \"$8\" },\n      3: { size: \"$md\", marginBottom: \"$3\" },\n      4: { size: \"$sm\", marginBottom: \"$3\" },\n    },\n  } as const,\n\n  defaultVariants: {\n    level: 1,\n  },\n} as const);\n\nexport type StoryTitleProps = GetProps<typeof StoryTitle>;\n","import { isWeb, styled } from \"@tamagui/core\";\nimport { Fragment } from \"react\";\nimport type { ReactNode } from \"react\";\nimport type { Except } from \"type-fest\";\nimport { Box } from \"../containers/Box\";\nimport { ScrollView } from \"../primitives/ScrollView\";\nimport { VStack } from \"../primitives/stacks\";\nimport type { VStackProps } from \"../primitives/stacks\";\nimport { StoryTitle } from \"./StoryTitle\";\n\nconst InternalStorySection = styled(VStack, {\n  marginBottom: \"$8\",\n  paddingHorizontal: \"$4\",\n  marginHorizontal: \"$-4\",\n  variants: {\n    withBackground: {\n      true: {\n        backgroundColor: \"$backgroundColor\",\n      },\n    },\n  } as const,\n});\n\nexport type StorySectionProps = Except<VStackProps, \"marginBottom\"> & {\n  title: ReactNode;\n  children: ReactNode;\n  level?: 1 | 2;\n  withBackground?: boolean;\n};\n\nfunction StorySection({\n  title,\n  children,\n  level = 1,\n  withBackground,\n  ...props\n}: StorySectionProps): ReactNode {\n  return (\n    <InternalStorySection withBackground={withBackground} {...props}>\n      <StoryTitle level={(level + 1) as 2 | 3}>{title}</StoryTitle>\n      {children}\n    </InternalStorySection>\n  );\n}\n\nfunction SubSection({\n  title,\n  children,\n\n  ...props\n}: StorySectionProps): ReactNode {\n  return (\n    <InternalStorySection marginBottom=\"$4\" {...props}>\n      <StoryTitle level={3}>{title}</StoryTitle>\n      {children}\n    </InternalStorySection>\n  );\n}\n\nconst ScrollViewNative = isWeb ? Fragment : ScrollView;\n\nexport interface StoryProps {\n  documentation?: NonNullable<ReactNode>;\n  children?: NonNullable<ReactNode>;\n  noDarkTheme?: boolean;\n}\n\nexport function Story({\n  documentation,\n  children,\n  noDarkTheme,\n}: StoryProps): ReactNode {\n  return (\n    <ScrollViewNative>\n      {documentation && (\n        <Box\n          withBorder=\"$2\"\n          borderRadius=\"$md\"\n          padding=\"$md\"\n          theme=\"primary\"\n          marginBottom=\"$12\"\n        >\n          {documentation}\n        </Box>\n      )}\n      {[\"light\", ...(noDarkTheme ? [] : [\"dark\"])].map((theme) => (\n        <Box key={theme} withScreenBackground theme={theme} padding=\"$md\">\n          {children}\n        </Box>\n      ))}\n    </ScrollViewNative>\n  );\n}\n\nStory.Section = StorySection;\nStory.SubSection = SubSection;\n","import type { ReactNode } from \"react\";\nimport { ScrollView } from \"../primitives/ScrollView\";\nimport { StoryTitle } from \"./StoryTitle\";\n\nexport interface StoryContainerProps {\n  title: ReactNode;\n  children: NonNullable<ReactNode>;\n}\n\nexport function StoryContainer({\n  title,\n  children,\n}: StoryContainerProps): ReactNode {\n  return (\n    <ScrollView theme=\"light\" backgroundColor=\"#fff\" padding=\"$4\">\n      <StoryTitle level={1}>{title}</StoryTitle>\n      {children}\n    </ScrollView>\n  );\n}\n","import type { Decorator } from \"@storybook/react-vite\";\nimport { StoryContainer } from \"./StoryContainer\";\n\n// eslint-disable-next-line react/function-component-definition -- not a component, it's a decorator for storybook.\nexport const StoryDecorator: Decorator = (storyFn, { name, container }) => {\n  if (container === false) return storyFn();\n  return <StoryContainer title={name}>{storyFn()}</StoryContainer>;\n};\n","import type { ReactNode } from \"react\";\nimport { Children } from \"react\";\nimport { Platform } from \"react-native\";\nimport { View } from \"../primitives/View\";\nimport { VStack } from \"../primitives/stacks\";\nimport { StoryTitle } from \"./StoryTitle\";\n\nexport interface StoryGridRowProps {\n  children: NonNullable<ReactNode>;\n  breakpoint?: \"medium\" | \"small\";\n  flexWrap?: boolean;\n}\n\nfunction StoryGridRow({\n  children,\n  breakpoint = \"small\",\n  flexWrap,\n}: StoryGridRowProps): ReactNode {\n  return (\n    <View\n      flexDirection=\"column\"\n      {...{\n        [`$${breakpoint}`]: {\n          flexDirection: \"row\",\n          marginVertical: \"$-1\",\n          marginBottom: \"$4\",\n          flexWrap: flexWrap ? \"wrap\" : undefined,\n          gap: flexWrap ? \"$xs\" : undefined,\n        },\n      }}\n    >\n      {Children.map(children, (child) => (\n        <View\n          paddingTop=\"$2\"\n          paddingBottom=\"$4\"\n          {...{\n            [`$${breakpoint}`]: {\n              flexGrow: 1,\n              flexBasis: flexWrap ? undefined : 0,\n              paddingTop: 0,\n              paddingBottom: 0,\n              marginVertical: \"$2\",\n            },\n          }}\n        >\n          {child}\n        </View>\n      ))}\n    </View>\n  );\n}\n\nexport interface StoryGridColProps {\n  children: NonNullable<ReactNode>;\n  title?: string;\n  platform?: \"all\" | \"native\" | \"web\";\n}\n\nfunction StoryGridCol({\n  title,\n  children,\n  platform = \"all\",\n}: StoryGridColProps): ReactNode {\n  const isNative = Platform.OS === \"ios\" || Platform.OS === \"android\";\n\n  if (Platform.OS === \"web\" && platform === \"native\") {\n    return null;\n  }\n\n  if (isNative && platform === \"web\") {\n    return null;\n  }\n\n  return title ? (\n    <VStack>\n      <StoryTitle level={4} numberOfLines={1}>\n        {title}\n      </StoryTitle>\n      {children}\n    </VStack>\n  ) : (\n    children\n  );\n}\n\nexport const StoryGrid = {\n  Row: StoryGridRow,\n  Col: StoryGridCol,\n};\n","import type { TamaguiProviderProps } from \"@tamagui/core\";\nimport { TamaguiProvider } from \"@tamagui/core\";\nimport type { ReactNode } from \"react\";\nimport { useColorScheme } from \"react-native\";\nimport \"./reset\";\n\nexport interface AlouetteProviderProps\n  extends Pick<TamaguiProviderProps, \"disableInjectCSS\"> {\n  children: ReactNode;\n  tamaguiConfig: NonNullable<TamaguiProviderProps[\"config\"]>;\n  defaultTheme?: \"dark\" | \"light\";\n}\n\nexport const useDefaultThemeFromColorScheme = () => {\n  const colorScheme = useColorScheme();\n  return colorScheme || \"light\";\n};\n\nexport function AlouetteProvider({\n  children,\n  tamaguiConfig,\n  defaultTheme = \"light\",\n  disableInjectCSS,\n}: AlouetteProviderProps): ReactNode {\n  return (\n    <TamaguiProvider\n      config={tamaguiConfig}\n      defaultTheme={defaultTheme}\n      disableInjectCSS={disableInjectCSS}\n    >\n      {children}\n    </TamaguiProvider>\n  );\n}\n","import type { ReactNode } from \"react\";\n\nexport function SafeAreaProvider({ children }: { children: ReactNode }) {\n  return children;\n}\n","/* eslint-disable react/destructuring-assignment */\nimport type { Decorator } from \"@storybook/react-vite\";\nimport type { TamaguiProviderProps } from \"@tamagui/core\";\nimport { createContext, useEffect, useState } from \"react\";\nimport { useColorScheme } from \"react-native\";\nimport { AlouetteProvider } from \"./AlouetteProvider\";\nimport { SafeAreaProvider } from \"./SafeAreaProvider\";\n\nexport const AlouetteTamaguiConfigContext = createContext<\n  TamaguiProviderProps[\"config\"] | null\n>(null);\n\n// eslint-disable-next-line react/function-component-definition -- not a component\nexport const AlouetteDecorator: Decorator = (storyFn, context) => {\n  const systemColorScheme = useColorScheme();\n  const [theme, setTheme] = useState(systemColorScheme || \"light\");\n\n  useEffect(() => {\n    const backgroundColor = context.globals.backgrounds?.value;\n    if (backgroundColor === \"#000000\") {\n      setTheme(\"dark\");\n    } else {\n      setTheme(\"light\");\n    }\n  }, [context.globals.backgrounds?.value]);\n\n  return (\n    <SafeAreaProvider>\n      <AlouetteProvider\n        tamaguiConfig={context.parameters.tamaguiConfig}\n        defaultTheme={theme}\n      >\n        <AlouetteTamaguiConfigContext.Provider\n          value={context.parameters.tamaguiConfig}\n        >\n          {storyFn(context)}\n        </AlouetteTamaguiConfigContext.Provider>\n      </AlouetteProvider>\n    </SafeAreaProvider>\n  );\n};\n","import { useContext } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { AlouetteTamaguiConfigContext } from \"../../core/AlouetteDecorator\";\nimport type { AlouetteProviderProps } from \"../../core/AlouetteProvider\";\n\nexport interface WithTamaguiConfigProps {\n  render: (\n    config: AlouetteProviderProps[\"tamaguiConfig\"],\n  ) => NonNullable<ReactNode>;\n}\n\nexport function WithTamaguiConfig({\n  render,\n}: WithTamaguiConfigProps): ReactNode {\n  const config = useContext(AlouetteTamaguiConfigContext);\n  if (!config) {\n    throw new Error(\n      \"No config found, check that AlouetteDecorator is used in the story\",\n    );\n  }\n  return render(config);\n}\n","export const Breakpoints = {\n  /**\n   * min-width: 0\n   */\n  BASE: 0,\n  /**\n   * min-width: 480px\n   */\n  SMALL: 480,\n  /**\n   * min-width: 768px\n   */\n  MEDIUM: 768,\n  /**\n   * min-width: 1024px\n   */\n  LARGE: 1024,\n  /**\n   * min-width: 1280px\n   */\n  WIDE: 1280,\n} as const;\n\nexport type Breakpoint = (typeof Breakpoints)[keyof typeof Breakpoints];\nexport type BreakpointNames = \"base\" | \"large\" | \"medium\" | \"small\" | \"wide\";\n\nexport enum BreakpointNameEnum {\n  BASE = \"base\",\n  SMALL = \"small\",\n  MEDIUM = \"medium\",\n  LARGE = \"large\",\n  WIDE = \"wide\",\n}\n","import { useMedia } from \"@tamagui/core\";\nimport type { BreakpointNames } from \"../../config/Breakpoints\";\nimport { BreakpointNameEnum } from \"../../config/Breakpoints\";\n\nexport function useCurrentBreakpointName(): BreakpointNameEnum {\n  const media = useMedia();\n\n  if (media.wide) return BreakpointNameEnum.WIDE;\n  if (media.large) return BreakpointNameEnum.LARGE;\n  if (media.medium) return BreakpointNameEnum.MEDIUM;\n  if (media.small) return BreakpointNameEnum.SMALL;\n  return BreakpointNameEnum.BASE;\n}\n\nexport function useCurrentBreakpointNameFiltered<\n  Names extends BreakpointNames[],\n>(names: Names): Names[number] {\n  const media = useMedia();\n\n  if (names.includes(BreakpointNameEnum.WIDE) && media.wide) {\n    return BreakpointNameEnum.WIDE;\n  }\n  if (names.includes(BreakpointNameEnum.LARGE) && media.large) {\n    return BreakpointNameEnum.LARGE;\n  }\n  if (names.includes(BreakpointNameEnum.MEDIUM) && media.medium) {\n    return BreakpointNameEnum.MEDIUM;\n  }\n  if (names.includes(BreakpointNameEnum.SMALL) && media.small) {\n    return BreakpointNameEnum.SMALL;\n  }\n  return BreakpointNameEnum.BASE;\n}\n","import type { ReactNode } from \"react\";\nimport type { SetRequired } from \"type-fest\";\nimport type { BreakpointNames } from \"../../config/Breakpoints\";\nimport { View } from \"../primitives/View\";\nimport { useCurrentBreakpointNameFiltered } from \"./useCurrentBreakpointName\";\n\ntype SwitchBreakpointsProps = SetRequired<\n  Partial<Record<BreakpointNames, ReactNode>>,\n  \"base\"\n> & { children?: never };\n\n/**\n * Display based on current breakpoint\n *\n * This mode is SSR friendly\n */\nexport function SwitchBreakpointsUsingDisplayNone({\n  ...breakpoints\n}: SwitchBreakpointsProps): ReactNode {\n  const entries = Object.entries(breakpoints);\n\n  return entries.map(([name, node], index) => {\n    return (\n      <View\n        key={name}\n        display={name === \"base\" ? \"flex\" : \"none\"}\n        {...(name === \"base\"\n          ? undefined\n          : { display: \"none\", [`$${name}`]: { display: \"flex\" } })}\n        {...(index + 1 in entries\n          ? { [`$${entries[index + 1]![0]}`]: { display: \"none\" } }\n          : undefined)}\n      >\n        {node}\n      </View>\n    );\n  });\n}\n\n/**\n * Display based on current breakpoint\n *\n * This mode is not SSR friendly\n */\nexport function SwitchBreakpointsUsingNull({\n  children,\n  ...breakpoints\n}: SwitchBreakpointsProps): ReactNode {\n  const currentBreakpointName = useCurrentBreakpointNameFiltered(\n    Object.keys(breakpoints) as (keyof typeof breakpoints)[],\n  );\n\n  return breakpoints[currentBreakpointName] ?? null;\n}\n","import type { GetProps } from \"@tamagui/core\";\nimport { Stack, styled } from \"@tamagui/core\";\n\nexport const Separator = styled(Stack, {\n  name: \"Separator\",\n  flexGrow: 1,\n  flexShrink: 0,\n  height: 0,\n  maxHeight: 0,\n  borderColor: \"$borderColor\",\n  borderWidth: 0,\n  borderBottomWidth: 1,\n  y: -0.5,\n\n  variants: {\n    vertical: {\n      true: {\n        height: \"auto\",\n        maxHeight: \"auto\",\n        width: 0,\n        maxWidth: 0,\n        borderBottomWidth: 0,\n        borderRightWidth: 1,\n        y: 0,\n        x: -0.5,\n      },\n    },\n  } as const,\n} as const);\n\nexport type SeparatorProps = GetProps<typeof Separator>;\n","import type { PressableBoxProps } from \"alouette\";\nimport { CaretRightRegularIcon } from \"alouette-icons/phosphor-icons/CaretRightRegularIcon\";\nimport type { ReactNode } from \"react\";\nimport { PressableBox } from \"../containers/PressableBox\";\nimport { Icon } from \"../primitives/Icon\";\nimport { View } from \"../primitives/View\";\nimport { HStack, VStack } from \"../primitives/stacks\";\n\nexport interface PressableListItemProps {\n  theme?: PressableBoxProps[\"theme\"];\n  variant?: PressableBoxProps[\"variant\"];\n  borderRadius?: PressableBoxProps[\"borderRadius\"];\n  withBackground?: PressableBoxProps[\"withBackground\"];\n  role?: PressableBoxProps[\"role\"];\n  children: ReactNode;\n  onPress: () => void;\n}\nexport function PressableListItem({\n  theme,\n  variant,\n  withBackground,\n  borderRadius,\n  role = \"button\",\n  children,\n  onPress,\n}: PressableListItemProps): ReactNode {\n  return (\n    <PressableBox\n      theme={theme}\n      variant={variant}\n      withBackground={withBackground}\n      borderRadius={borderRadius}\n      role={role}\n      marginHorizontal=\"$4\"\n      marginVertical=\"$1\"\n      onPress={onPress}\n    >\n      <HStack\n        justifyContent=\"space-between\"\n        alignItems=\"center\"\n        paddingHorizontal=\"$4\"\n        paddingVertical=\"$4\"\n      >\n        <View flex={1}>{children}</View>\n        <VStack justifyContent=\"center\">\n          <Icon accent icon={<CaretRightRegularIcon />} size={18} />\n        </VStack>\n      </HStack>\n    </PressableBox>\n  );\n}\n","import type { ThemeName } from \"@tamagui/core\";\nimport { Theme, useTheme } from \"@tamagui/core\";\nimport { LinearGradient } from \"expo-linear-gradient\";\nimport type { ReactNode } from \"react\";\nimport { StyleSheet } from \"react-native\";\n\nexport interface GradientBackgroundProps {\n  theme?: ThemeName;\n  children?: ReactNode;\n}\n\nexport function GradientBackground({\n  theme: themeName,\n  children,\n}: GradientBackgroundProps) {\n  const theme = useTheme({ name: themeName });\n\n  const colors = [\n    theme[\"gradientColor:start\"]?.get(\"web\"),\n    theme[\"gradientColor:middle\"]?.get(\"web\"),\n    theme[\"gradientColor:end\"]?.get(\"web\"),\n  ] as [string, string, string];\n\n  return (\n    <Theme name={themeName}>\n      <LinearGradient\n        colors={colors}\n        start={{ x: 0, y: 0 }}\n        end={{ x: 1, y: 1 }}\n        locations={[0.2, 0.7, 1]}\n        style={StyleSheet.absoluteFill}\n      >\n        {children}\n      </LinearGradient>\n    </Theme>\n  );\n}\n"]}