@rehagro/ui 1.0.27 → 1.0.29

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/dist/native.d.mts CHANGED
@@ -377,6 +377,21 @@ type CardProps = Omit<PressableProps, "style"> & {
377
377
  /** Custom style */
378
378
  style?: StyleProp<ViewStyle>;
379
379
  };
380
+ type CardHeaderProps = {
381
+ children?: React__default.ReactNode;
382
+ style?: StyleProp<ViewStyle>;
383
+ };
384
+ declare const CardHeader: React__default.ForwardRefExoticComponent<CardHeaderProps & React__default.RefAttributes<View>>;
385
+ type CardContentProps = {
386
+ children?: React__default.ReactNode;
387
+ style?: StyleProp<ViewStyle>;
388
+ };
389
+ declare const CardContent: React__default.ForwardRefExoticComponent<CardContentProps & React__default.RefAttributes<View>>;
390
+ type CardFooterProps = {
391
+ children?: React__default.ReactNode;
392
+ style?: StyleProp<ViewStyle>;
393
+ };
394
+ declare const CardFooter: React__default.ForwardRefExoticComponent<CardFooterProps & React__default.RefAttributes<View>>;
380
395
  declare const Card: React__default.ForwardRefExoticComponent<Omit<PressableProps, "style"> & {
381
396
  /** Visual style variant */
382
397
  variant?: CardVariant;
@@ -392,21 +407,10 @@ declare const Card: React__default.ForwardRefExoticComponent<Omit<PressableProps
392
407
  children?: React__default.ReactNode;
393
408
  /** Custom style */
394
409
  style?: StyleProp<ViewStyle>;
395
- } & React__default.RefAttributes<View>>;
396
- type CardHeaderProps = {
397
- children?: React__default.ReactNode;
398
- style?: StyleProp<ViewStyle>;
410
+ } & React__default.RefAttributes<View>> & {
411
+ Header: React__default.ForwardRefExoticComponent<CardHeaderProps & React__default.RefAttributes<View>>;
412
+ Content: React__default.ForwardRefExoticComponent<CardContentProps & React__default.RefAttributes<View>>;
413
+ Footer: React__default.ForwardRefExoticComponent<CardFooterProps & React__default.RefAttributes<View>>;
399
414
  };
400
- declare const CardHeader: React__default.ForwardRefExoticComponent<CardHeaderProps & React__default.RefAttributes<View>>;
401
- type CardContentProps = {
402
- children?: React__default.ReactNode;
403
- style?: StyleProp<ViewStyle>;
404
- };
405
- declare const CardContent: React__default.ForwardRefExoticComponent<CardContentProps & React__default.RefAttributes<View>>;
406
- type CardFooterProps = {
407
- children?: React__default.ReactNode;
408
- style?: StyleProp<ViewStyle>;
409
- };
410
- declare const CardFooter: React__default.ForwardRefExoticComponent<CardFooterProps & React__default.RefAttributes<View>>;
411
415
 
412
416
  export { ActivityIndicator, type ActivityIndicatorColor, type ActivityIndicatorProps, type ActivityIndicatorSize, Avatar, type AvatarProps, type AvatarSize, type AvatarVariant, Button, ButtonColor, type ButtonProps, type ButtonRadius, type ButtonSize, type ButtonVariant, Card, CardContent, type CardContentProps, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, type CardPadding, type CardProps, type CardRadius, type CardVariant, Checkbox, type CheckboxProps, type CheckboxSize, IconButton, type IconButtonColor, type IconButtonProps, type IconButtonRadius, type IconButtonSize, type IconButtonVariant, RehagroNativeProvider, type RehagroNativeProviderProps, type RehagroNativeTheme, Tag, type TagColor, type TagProps, type TagSize, Text, type TextColor, TextInput, type TextInputProps, type TextInputRadius, type TextInputSize, type TextInputStatus, type TextProps, type TextSize, useRehagroTheme };
package/dist/native.d.ts CHANGED
@@ -377,6 +377,21 @@ type CardProps = Omit<PressableProps, "style"> & {
377
377
  /** Custom style */
378
378
  style?: StyleProp<ViewStyle>;
379
379
  };
380
+ type CardHeaderProps = {
381
+ children?: React__default.ReactNode;
382
+ style?: StyleProp<ViewStyle>;
383
+ };
384
+ declare const CardHeader: React__default.ForwardRefExoticComponent<CardHeaderProps & React__default.RefAttributes<View>>;
385
+ type CardContentProps = {
386
+ children?: React__default.ReactNode;
387
+ style?: StyleProp<ViewStyle>;
388
+ };
389
+ declare const CardContent: React__default.ForwardRefExoticComponent<CardContentProps & React__default.RefAttributes<View>>;
390
+ type CardFooterProps = {
391
+ children?: React__default.ReactNode;
392
+ style?: StyleProp<ViewStyle>;
393
+ };
394
+ declare const CardFooter: React__default.ForwardRefExoticComponent<CardFooterProps & React__default.RefAttributes<View>>;
380
395
  declare const Card: React__default.ForwardRefExoticComponent<Omit<PressableProps, "style"> & {
381
396
  /** Visual style variant */
382
397
  variant?: CardVariant;
@@ -392,21 +407,10 @@ declare const Card: React__default.ForwardRefExoticComponent<Omit<PressableProps
392
407
  children?: React__default.ReactNode;
393
408
  /** Custom style */
394
409
  style?: StyleProp<ViewStyle>;
395
- } & React__default.RefAttributes<View>>;
396
- type CardHeaderProps = {
397
- children?: React__default.ReactNode;
398
- style?: StyleProp<ViewStyle>;
410
+ } & React__default.RefAttributes<View>> & {
411
+ Header: React__default.ForwardRefExoticComponent<CardHeaderProps & React__default.RefAttributes<View>>;
412
+ Content: React__default.ForwardRefExoticComponent<CardContentProps & React__default.RefAttributes<View>>;
413
+ Footer: React__default.ForwardRefExoticComponent<CardFooterProps & React__default.RefAttributes<View>>;
399
414
  };
400
- declare const CardHeader: React__default.ForwardRefExoticComponent<CardHeaderProps & React__default.RefAttributes<View>>;
401
- type CardContentProps = {
402
- children?: React__default.ReactNode;
403
- style?: StyleProp<ViewStyle>;
404
- };
405
- declare const CardContent: React__default.ForwardRefExoticComponent<CardContentProps & React__default.RefAttributes<View>>;
406
- type CardFooterProps = {
407
- children?: React__default.ReactNode;
408
- style?: StyleProp<ViewStyle>;
409
- };
410
- declare const CardFooter: React__default.ForwardRefExoticComponent<CardFooterProps & React__default.RefAttributes<View>>;
411
415
 
412
416
  export { ActivityIndicator, type ActivityIndicatorColor, type ActivityIndicatorProps, type ActivityIndicatorSize, Avatar, type AvatarProps, type AvatarSize, type AvatarVariant, Button, ButtonColor, type ButtonProps, type ButtonRadius, type ButtonSize, type ButtonVariant, Card, CardContent, type CardContentProps, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, type CardPadding, type CardProps, type CardRadius, type CardVariant, Checkbox, type CheckboxProps, type CheckboxSize, IconButton, type IconButtonColor, type IconButtonProps, type IconButtonRadius, type IconButtonSize, type IconButtonVariant, RehagroNativeProvider, type RehagroNativeProviderProps, type RehagroNativeTheme, Tag, type TagColor, type TagProps, type TagSize, Text, type TextColor, TextInput, type TextInputProps, type TextInputRadius, type TextInputSize, type TextInputStatus, type TextProps, type TextSize, useRehagroTheme };
package/dist/native.js CHANGED
@@ -814,7 +814,7 @@ var paddingMap = {
814
814
  md: 16,
815
815
  lg: 24
816
816
  };
817
- var Card = react.forwardRef(function Card2({
817
+ var CardRoot = react.forwardRef(function Card({
818
818
  variant = "outlined",
819
819
  radius = "sm",
820
820
  padding = "md",
@@ -926,11 +926,16 @@ var CardFooter = react.forwardRef(function CardFooter2({ children, style }, ref)
926
926
  }
927
927
  );
928
928
  });
929
+ var Card2 = Object.assign(CardRoot, {
930
+ Header: CardHeader,
931
+ Content: CardContent,
932
+ Footer: CardFooter
933
+ });
929
934
 
930
935
  exports.ActivityIndicator = ActivityIndicator3;
931
936
  exports.Avatar = Avatar;
932
937
  exports.Button = Button;
933
- exports.Card = Card;
938
+ exports.Card = Card2;
934
939
  exports.CardContent = CardContent;
935
940
  exports.CardFooter = CardFooter;
936
941
  exports.CardHeader = CardHeader;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/provider/theme.native.ts","../src/provider/RehagroNativeContext.ts","../src/provider/RehagroNativeProvider.tsx","../src/components/Button/Button.native.tsx","../src/components/IconButton/IconButton.native.tsx","../src/components/TextInput/TextInput.native.tsx","../src/components/Checkbox/Checkbox.native.tsx","../src/components/Avatar/Avatar.native.tsx","../src/components/ActivityIndicator/ActivityIndicator.native.tsx","../src/components/Text/Text.native.tsx","../src/components/Tag/Tag.native.tsx","../src/components/Card/Card.native.tsx"],"names":["createContext","useContext","useMemo","forwardRef","Button","jsx","Pressable","jsxs","Fragment","ActivityIndicator","View","Text","darkenColor","PRESET_COLORS","isPresetColor","IconButton","TextInput","useState","paddingMap","radiusMap","RNTextInput","Checkbox","useCallback","Avatar","Image","RNActivityIndicator","RNText","Tag","Card","CardHeader","CardContent","CardFooter"],"mappings":"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","file":"native.js","sourcesContent":["import type { RehagroTheme } from \"./theme\";\r\n\r\n/** React Native theme — reuses the same token names as the web theme.\r\n * Color values are plain CSS hex strings (e.g. \"#16a34a\").\r\n * Spacing/radius/border values are numbers (device-independent pixels).\r\n */\r\nexport type RehagroNativeTheme = {\r\n // Brand colors\r\n primary?: string;\r\n primaryHover?: string;\r\n secondary?: string;\r\n secondaryHover?: string;\r\n danger?: string;\r\n dangerHover?: string;\r\n warning?: string;\r\n success?: string;\r\n info?: string;\r\n infoHover?: string;\r\n\r\n // Semantic colors\r\n text?: string;\r\n textMuted?: string;\r\n surface?: string;\r\n background?: string;\r\n border?: string;\r\n\r\n // Border radius (numbers = dp)\r\n radiusXxs?: number;\r\n radiusXs?: number;\r\n radiusSm?: number;\r\n radiusMd?: number;\r\n radiusLg?: number;\r\n radiusXl?: number;\r\n\r\n // Border width\r\n borderWidthSm?: number;\r\n borderWidthMd?: number;\r\n borderWidthLg?: number;\r\n\r\n // Input sizes\r\n inputHeightSm?: number;\r\n inputHeightMd?: number;\r\n inputHeightLg?: number;\r\n\r\n // Typography — must be loaded by the app (e.g. via expo-font / useFonts)\r\n // Inter for body/labels, Sora for headings/display\r\n fontFamilyBody?: string;\r\n fontFamilyDisplay?: string;\r\n\r\n // Text size scale (font size in dp)\r\n fontSizeXs?: number;\r\n fontSizeSm?: number;\r\n fontSizeMd?: number;\r\n fontSizeLg?: number;\r\n fontSizeXl?: number;\r\n fontSizeXxl?: number;\r\n fontSizeXxl2?: number;\r\n\r\n // Text line height scale (in dp)\r\n lineHeightXs?: number;\r\n lineHeightSm?: number;\r\n lineHeightMd?: number;\r\n lineHeightLg?: number;\r\n lineHeightXl?: number;\r\n lineHeightXxl?: number;\r\n lineHeightXxl2?: number;\r\n};\r\n\r\nexport type RehagroNativeProviderProps = {\r\n /** Theme overrides — any token not provided keeps the default value */\r\n theme?: RehagroNativeTheme;\r\n children: React.ReactNode;\r\n};\r\n\r\nexport const DEFAULT_NATIVE_THEME: RehagroNativeTheme = {\r\n primary: \"#16a34a\",\r\n secondary: \"#6b7280\",\r\n danger: \"#dc2626\",\r\n warning: \"#d97706\",\r\n success: \"#16a34a\",\r\n info: \"#0284c7\",\r\n infoHover: \"#0369a1\",\r\n\r\n text: \"#111827\",\r\n textMuted: \"#6b7280\",\r\n surface: \"#ffffff\",\r\n background: \"#f9fafb\",\r\n border: \"#d1d5db\",\r\n\r\n radiusXxs: 4,\r\n radiusXs: 8,\r\n radiusSm: 12,\r\n radiusMd: 16,\r\n radiusLg: 24,\r\n radiusXl: 32,\r\n\r\n borderWidthSm: 1,\r\n borderWidthMd: 2,\r\n borderWidthLg: 3,\r\n\r\n inputHeightSm: 36,\r\n inputHeightMd: 44,\r\n inputHeightLg: 52,\r\n\r\n fontFamilyBody: \"\",\r\n fontFamilyDisplay: \"\",\r\n\r\n fontSizeXs: 12,\r\n fontSizeSm: 14,\r\n fontSizeMd: 16,\r\n fontSizeLg: 18,\r\n fontSizeXl: 20,\r\n fontSizeXxl: 24,\r\n fontSizeXxl2: 32,\r\n\r\n lineHeightXs: 16,\r\n lineHeightSm: 20,\r\n lineHeightMd: 24,\r\n lineHeightLg: 26,\r\n lineHeightXl: 28,\r\n lineHeightXxl: 32,\r\n lineHeightXxl2: 40,\r\n};\r\n\r\n// Ensures RehagroNativeTheme color keys stay in sync with RehagroTheme\r\ntype _ColorKeysMatch = Pick<\r\n RehagroTheme,\r\n | \"primary\"\r\n | \"primaryHover\"\r\n | \"secondary\"\r\n | \"secondaryHover\"\r\n | \"danger\"\r\n | \"dangerHover\"\r\n | \"warning\"\r\n | \"success\"\r\n | \"info\"\r\n | \"infoHover\"\r\n | \"text\"\r\n | \"textMuted\"\r\n | \"surface\"\r\n | \"background\"\r\n | \"border\"\r\n>;\r\ntype _NativeColorKeys = Pick<\r\n RehagroNativeTheme,\r\n | \"primary\"\r\n | \"primaryHover\"\r\n | \"secondary\"\r\n | \"secondaryHover\"\r\n | \"danger\"\r\n | \"dangerHover\"\r\n | \"warning\"\r\n | \"success\"\r\n | \"info\"\r\n | \"infoHover\"\r\n | \"text\"\r\n | \"textMuted\"\r\n | \"surface\"\r\n | \"background\"\r\n | \"border\"\r\n>;\r\n// This line will error at compile time if the color keys diverge:\r\ntype _ColorKeysCheck = _ColorKeysMatch extends _NativeColorKeys ? true : never;\r\n","import { createContext, useContext } from \"react\";\r\nimport type { RehagroNativeTheme } from \"./theme.native\";\r\nimport { DEFAULT_NATIVE_THEME } from \"./theme.native\";\r\n\r\nexport const RehagroNativeContext = createContext<RehagroNativeTheme>(DEFAULT_NATIVE_THEME);\r\n\r\nexport function useRehagroTheme(): RehagroNativeTheme {\r\n return useContext(RehagroNativeContext);\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { RehagroNativeContext } from \"./RehagroNativeContext\";\r\nimport { DEFAULT_NATIVE_THEME } from \"./theme.native\";\r\nimport type { RehagroNativeProviderProps, RehagroNativeTheme } from \"./theme.native\";\r\n\r\nexport function RehagroNativeProvider({ theme, children }: RehagroNativeProviderProps) {\r\n const resolvedTheme = useMemo<RehagroNativeTheme>(\r\n () => ({ ...DEFAULT_NATIVE_THEME, ...theme }),\r\n [theme],\r\n );\r\n\r\n return (\r\n <RehagroNativeContext.Provider value={resolvedTheme}>\r\n {children}\r\n </RehagroNativeContext.Provider>\r\n );\r\n}\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n ActivityIndicator,\r\n Pressable,\r\n Text,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type TextStyle,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { ButtonColor, PresetColor } from \"../../types/colors.types\";\r\n\r\n/** Darkens a hex color (#rgb or #rrggbb) by the given factor (0–1). */\r\nfunction darkenColor(hex: string, factor = 0.2): string {\r\n if (!hex.startsWith(\"#\")) return hex;\r\n const clean = hex.replace(\"#\", \"\");\r\n const full = clean.length === 3\r\n ? clean.split(\"\").map((c) => c + c).join(\"\")\r\n : clean;\r\n const num = parseInt(full, 16);\r\n const r = Math.max(0, Math.round(((num >> 16) & 0xff) * (1 - factor)));\r\n const g = Math.max(0, Math.round(((num >> 8) & 0xff) * (1 - factor)));\r\n const b = Math.max(0, Math.round((num & 0xff) * (1 - factor)));\r\n return `#${[r, g, b].map((v) => v.toString(16).padStart(2, \"0\")).join(\"\")}`;\r\n}\r\n\r\nexport type { ButtonColor };\r\nexport type ButtonVariant = \"solid\" | \"outline\" | \"ghost\";\r\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\r\nexport type ButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport type ButtonProps = Omit<PressableProps, \"style\"> & {\r\n /** Visual style variant */\r\n variant?: ButtonVariant;\r\n /** Button size */\r\n size?: ButtonSize;\r\n /** Border radius */\r\n radius?: ButtonRadius;\r\n /** Color scheme — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\", \"rgb(...)\") */\r\n color?: ButtonColor;\r\n /** Shows loading state and disables interaction */\r\n loading?: boolean;\r\n /** Icon rendered to the left of children (hidden when loading) */\r\n leftIcon?: React.ReactNode;\r\n /** Icon rendered to the right of children (hidden when loading) */\r\n rightIcon?: React.ReactNode;\r\n /** Label text */\r\n children?: React.ReactNode;\r\n /** Custom style for the outer Pressable */\r\n style?: StyleProp<ViewStyle>;\r\n /** Custom style applied to the inner text label (string children only) */\r\n labelStyle?: StyleProp<TextStyle>;\r\n /** Background color when the button is pressed (overrides default pressed color) */\r\n pressedColor?: string;\r\n};\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\nexport const Button = forwardRef<View, ButtonProps>(function Button(\r\n {\r\n variant = \"solid\",\r\n size = \"md\",\r\n radius = \"sm\",\r\n color = \"primary\",\r\n loading = false,\r\n disabled,\r\n leftIcon,\r\n rightIcon,\r\n children,\r\n style,\r\n labelStyle,\r\n pressedColor,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const isDisabled = disabled || loading;\r\n const preset = isPresetColor(color);\r\n\r\n const presetBase: Record<PresetColor, string> = {\r\n primary: theme.primary ?? \"#15607A\",\r\n secondary: theme.secondary ?? \"#718D44\",\r\n danger: theme.danger ?? \"#dc2626\",\r\n warning: theme.warning ?? \"#d97706\",\r\n success: theme.success ?? \"#16a34a\",\r\n info: theme.info ?? \"#0284c7\",\r\n };\r\n\r\n const presetHover: Record<PresetColor, string> = {\r\n primary: theme.primaryHover ?? darkenColor(presetBase.primary),\r\n secondary: theme.secondaryHover ?? darkenColor(presetBase.secondary),\r\n danger: theme.dangerHover ?? darkenColor(presetBase.danger),\r\n warning: theme.warning ?? darkenColor(presetBase.warning),\r\n success: theme.success ?? darkenColor(presetBase.success),\r\n info: theme.infoHover ?? darkenColor(presetBase.info),\r\n };\r\n\r\n const colorBase = preset ? presetBase[color as PresetColor] : color;\r\n const colorHover = preset ? presetHover[color as PresetColor] : darkenColor(color);\r\n\r\n const sizeStyleMap: Record<ButtonSize, ViewStyle> = {\r\n sm: { paddingHorizontal: 12, paddingVertical: 6 },\r\n md: { paddingHorizontal: 16, paddingVertical: 8 },\r\n lg: { paddingHorizontal: 20, paddingVertical: 10 },\r\n };\r\n\r\n const fontSizeMap: Record<ButtonSize, number> = {\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n };\r\n\r\n const radiusStyleMap: Record<ButtonRadius, number> = {\r\n none: 0,\r\n xxs: 2,\r\n xs: 4,\r\n sm: 8,\r\n md: 12,\r\n lg: 16,\r\n xl: 24,\r\n full: 9999,\r\n };\r\n\r\n const baseStyle: ViewStyle = {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: 8,\r\n borderWidth: 1,\r\n opacity: isDisabled ? 0.5 : 1,\r\n borderRadius: radiusStyleMap[radius],\r\n ...sizeStyleMap[size],\r\n };\r\n\r\n const variantStyle = (pressed: boolean): ViewStyle => {\r\n if (variant === \"solid\") {\r\n const bg = isDisabled ? colorBase : pressed ? colorHover : colorBase;\r\n return { backgroundColor: bg, borderColor: bg };\r\n }\r\n if (variant === \"outline\") {\r\n const bg = pressed ? colorBase : \"transparent\";\r\n return {\r\n borderColor: isDisabled ? bg : colorBase,\r\n backgroundColor: bg,\r\n };\r\n }\r\n return { borderColor: \"transparent\", backgroundColor: \"transparent\" };\r\n };\r\n\r\n const textColor = (pressed: boolean): string => {\r\n if (variant === \"solid\") return theme.surface ?? \"#ffffff\";\r\n if (variant === \"outline\") return pressed ? (theme.surface ?? \"#ffffff\") : colorBase;\r\n return colorBase;\r\n };\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={isDisabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled: !!isDisabled, busy: loading }}\r\n accessibilityLabel={\r\n accessibilityLabel ?? (typeof children === \"string\" ? children : undefined)\r\n }\r\n android_ripple={{ color: pressedColor ?? colorHover, borderless: false }}\r\n style={({ pressed }) => [baseStyle, variantStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {({ pressed }) => (\r\n <>\r\n {loading && (\r\n <ActivityIndicator\r\n size=\"small\"\r\n color={variant === \"solid\" ? (theme.surface ?? \"#ffffff\") : colorBase}\r\n />\r\n )}\r\n {!loading && leftIcon && <View accessibilityElementsHidden>{leftIcon}</View>}\r\n {typeof children === \"string\" ? (\r\n <Text\r\n style={[{ color: textColor(pressed), fontSize: fontSizeMap[size], fontWeight: \"500\", ...(theme.fontFamilyDisplay ? { fontFamily: theme.fontFamilyDisplay } : {}) }, labelStyle]}\r\n >\r\n {children}\r\n </Text>\r\n ) : (\r\n children\r\n )}\r\n {!loading && rightIcon && <View accessibilityElementsHidden>{rightIcon}</View>}\r\n </>\r\n )}\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n ActivityIndicator,\r\n Pressable,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { ButtonColor, PresetColor } from \"../../types/colors.types\";\r\n\r\n/** Darkens a hex color (#rgb or #rrggbb) by the given factor (0–1). */\r\nfunction darkenColor(hex: string, factor = 0.2): string {\r\n if (!hex.startsWith(\"#\")) return hex;\r\n const clean = hex.replace(\"#\", \"\");\r\n const full = clean.length === 3\r\n ? clean.split(\"\").map((c) => c + c).join(\"\")\r\n : clean;\r\n const num = parseInt(full, 16);\r\n const r = Math.max(0, Math.round(((num >> 16) & 0xff) * (1 - factor)));\r\n const g = Math.max(0, Math.round(((num >> 8) & 0xff) * (1 - factor)));\r\n const b = Math.max(0, Math.round((num & 0xff) * (1 - factor)));\r\n return `#${[r, g, b].map((v) => v.toString(16).padStart(2, \"0\")).join(\"\")}`;\r\n}\r\n\r\nexport type IconButtonVariant = \"solid\" | \"outline\" | \"ghost\";\r\nexport type IconButtonSize = \"sm\" | \"md\" | \"lg\";\r\nexport type IconButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\nexport type IconButtonColor = ButtonColor;\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\nexport type IconButtonProps = Omit<PressableProps, \"style\"> & {\r\n /** Visual style variant */\r\n variant?: IconButtonVariant;\r\n /** Button size */\r\n size?: IconButtonSize;\r\n /** Border radius */\r\n radius?: IconButtonRadius;\r\n /** Color scheme — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\", \"rgb(...)\") */\r\n color?: IconButtonColor;\r\n /** Shows loading state and disables interaction */\r\n loading?: boolean;\r\n /** Icon content */\r\n children?: React.ReactNode;\r\n /** Custom style for the outer Pressable */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const IconButton = forwardRef<View, IconButtonProps>(function IconButton(\r\n {\r\n variant = \"ghost\",\r\n size = \"md\",\r\n radius = \"full\",\r\n color = \"primary\",\r\n loading = false,\r\n disabled,\r\n children,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const isDisabled = disabled || loading;\r\n\r\n const sizePxMap: Record<IconButtonSize, number> = {\r\n sm: 32,\r\n md: 40,\r\n lg: 48,\r\n };\r\n\r\n const radiusPxMap: Record<IconButtonRadius, number> = {\r\n none: 0,\r\n xxs: 2,\r\n xs: 4,\r\n sm: 8,\r\n md: 12,\r\n lg: 16,\r\n xl: 24,\r\n full: 9999,\r\n };\r\n\r\n const presetTokens: Record<PresetColor, { main: string; hover: string }> = {\r\n primary: { main: theme.primary ?? \"#15607A\", hover: theme.primaryHover ?? darkenColor(theme.primary ?? \"#15607A\") },\r\n secondary: { main: theme.secondary ?? \"#718D44\", hover: theme.secondaryHover ?? darkenColor(theme.secondary ?? \"#718D44\") },\r\n danger: { main: theme.danger ?? \"#dc2626\", hover: theme.dangerHover ?? darkenColor(theme.danger ?? \"#dc2626\") },\r\n warning: { main: theme.warning ?? \"#d97706\", hover: darkenColor(theme.warning ?? \"#d97706\") },\r\n success: { main: theme.success ?? \"#16a34a\", hover: darkenColor(theme.success ?? \"#16a34a\") },\r\n info: { main: theme.info ?? \"#0284c7\", hover: theme.infoHover ?? darkenColor(theme.info ?? \"#0284c7\") },\r\n };\r\n\r\n const preset = isPresetColor(color);\r\n const main = preset ? presetTokens[color as PresetColor].main : color;\r\n const hover = preset ? presetTokens[color as PresetColor].hover : darkenColor(color);\r\n const boxSize = sizePxMap[size];\r\n\r\n const baseStyle: ViewStyle = {\r\n width: boxSize,\r\n height: boxSize,\r\n borderRadius: radiusPxMap[radius],\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n borderWidth: 1,\r\n opacity: isDisabled ? 0.5 : 1,\r\n };\r\n\r\n const variantStyle = (pressed: boolean): ViewStyle => {\r\n if (variant === \"solid\") {\r\n return { backgroundColor: pressed ? hover : main, borderColor: pressed ? hover : main };\r\n }\r\n if (variant === \"outline\") {\r\n return { borderColor: main, backgroundColor: pressed ? main : \"transparent\" };\r\n }\r\n return { borderColor: \"transparent\", backgroundColor: pressed ? `${main}1a` : \"transparent\" };\r\n };\r\n\r\n const iconColor = (pressed: boolean): string => {\r\n if (variant === \"solid\") return theme.surface ?? \"#ffffff\";\r\n if (variant === \"outline\") return pressed ? (theme.surface ?? \"#ffffff\") : main;\r\n return main;\r\n };\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={isDisabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled: !!isDisabled, busy: loading }}\r\n accessibilityLabel={accessibilityLabel}\r\n android_ripple={{ color: hover, borderless: false }}\r\n style={({ pressed }) => [baseStyle, variantStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {({ pressed }) =>\r\n loading ? (\r\n <ActivityIndicator size=\"small\" color={variant === \"solid\" ? theme.surface : main} />\r\n ) : (\r\n <View style={{ tintColor: iconColor(pressed) } as ViewStyle}>\r\n {children}\r\n </View>\r\n )\r\n }\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef, useState } from \"react\";\r\nimport {\r\n TextInput as RNTextInput,\r\n Text,\r\n View,\r\n type TextInputProps as RNTextInputProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type TextInputStatus = \"default\" | \"error\";\r\nexport type TextInputSize = \"sm\" | \"md\" | \"lg\";\r\nexport type TextInputRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport type TextInputProps = Omit<RNTextInputProps, \"style\"> & {\r\n /** Label text displayed above the input */\r\n label?: string;\r\n /** Subtitle displayed next to the label */\r\n subtitle?: string;\r\n /** Validation status */\r\n status?: TextInputStatus;\r\n /** Input size */\r\n size?: TextInputSize;\r\n /** Border radius */\r\n radius?: TextInputRadius;\r\n /** Icon rendered to the left of the input */\r\n leftIcon?: React.ReactNode;\r\n /** Icon rendered to the right of the input */\r\n rightIcon?: React.ReactNode;\r\n /** Helper/error message displayed below the input */\r\n helperText?: React.ReactNode;\r\n /** Custom style for the outermost wrapper */\r\n wrapperStyle?: StyleProp<ViewStyle>;\r\n /** Custom style for the input container */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const TextInput = forwardRef<RNTextInput, TextInputProps>(function TextInput(\r\n {\r\n label,\r\n subtitle,\r\n status = \"default\",\r\n size = \"md\",\r\n radius = \"xs\",\r\n leftIcon,\r\n rightIcon,\r\n helperText,\r\n editable = true,\r\n wrapperStyle,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const [focused, setFocused] = useState(false);\r\n\r\n const isDisabled = editable === false;\r\n\r\n const heightMap: Record<TextInputSize, number> = {\r\n sm: theme.inputHeightSm ?? 36,\r\n md: theme.inputHeightMd ?? 44,\r\n lg: theme.inputHeightLg ?? 52,\r\n };\r\n\r\n const paddingMap: Record<TextInputSize, number> = {\r\n sm: 12,\r\n md: 14,\r\n lg: 16,\r\n };\r\n\r\n const fontSizeMap: Record<TextInputSize, number> = {\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n };\r\n\r\n const radiusMap: Record<TextInputRadius, number> = {\r\n none: 0,\r\n xxs: theme.radiusXxs ?? 4,\r\n xs: theme.radiusXs ?? 8,\r\n sm: theme.radiusSm ?? 12,\r\n md: theme.radiusMd ?? 16,\r\n lg: theme.radiusLg ?? 24,\r\n xl: theme.radiusXl ?? 32,\r\n full: 9999,\r\n };\r\n\r\n const hasError = status === \"error\" || !!helperText;\r\n\r\n const borderColor = hasError\r\n ? theme.danger\r\n : focused\r\n ? theme.primary\r\n : theme.border;\r\n\r\n const containerStyle: ViewStyle = {\r\n height: heightMap[size],\r\n paddingHorizontal: paddingMap[size],\r\n borderRadius: radiusMap[radius],\r\n borderWidth: theme.borderWidthSm,\r\n borderColor,\r\n backgroundColor: isDisabled ? theme.background : theme.surface,\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n opacity: isDisabled ? 0.5 : 1,\r\n };\r\n\r\n const inputId = accessibilityLabel ?? label;\r\n\r\n return (\r\n <View style={[{ gap: 4 }, wrapperStyle]}>\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <View style={{ flexDirection: \"row\", alignItems: \"baseline\", gap: 4 }}>\r\n <Text style={{ fontSize: 14, fontWeight: \"500\", color: theme.text }}>\r\n {label}\r\n </Text>\r\n {subtitle && (\r\n <Text style={{ fontSize: 14, color: theme.textMuted }}>{subtitle}</Text>\r\n )}\r\n </View>\r\n )}\r\n\r\n {/* Input container */}\r\n <View style={[containerStyle, style]}>\r\n {leftIcon && (\r\n <View accessibilityElementsHidden>\r\n {leftIcon}\r\n </View>\r\n )}\r\n\r\n <RNTextInput\r\n ref={ref}\r\n editable={editable}\r\n accessibilityLabel={inputId}\r\n accessibilityState={{ disabled: isDisabled }}\r\n aria-invalid={status === \"error\"}\r\n onFocus={(e) => {\r\n setFocused(true);\r\n rest.onFocus?.(e);\r\n }}\r\n onBlur={(e) => {\r\n setFocused(false);\r\n rest.onBlur?.(e);\r\n }}\r\n style={{\r\n flex: 1,\r\n fontSize: fontSizeMap[size],\r\n color: theme.text,\r\n }}\r\n placeholderTextColor={theme.textMuted}\r\n {...rest}\r\n />\r\n\r\n {rightIcon && (\r\n <View accessibilityElementsHidden>\r\n {rightIcon}\r\n </View>\r\n )}\r\n </View>\r\n\r\n {/* Helper text */}\r\n {helperText && (\r\n <Text\r\n style={{\r\n fontSize: 12,\r\n color: hasError ? theme.danger : theme.textMuted,\r\n }}\r\n >\r\n {helperText}\r\n </Text>\r\n )}\r\n </View>\r\n );\r\n});\r\n","import React, { forwardRef, useCallback, useState } from \"react\";\r\nimport {\r\n Pressable,\r\n Text,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type CheckboxSize = \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type CheckboxProps = Omit<PressableProps, \"style\" | \"onPress\"> & {\r\n /** Checkbox size */\r\n size?: CheckboxSize;\r\n /** Label text displayed next to the checkbox */\r\n label?: string;\r\n /** Controlled checked state */\r\n checked?: boolean;\r\n /** Default checked state (uncontrolled) */\r\n defaultChecked?: boolean;\r\n /** Indeterminate state (partially checked) */\r\n indeterminate?: boolean;\r\n /** Callback fired when the value changes */\r\n onChange?: (checked: boolean) => void;\r\n /** Custom style for the outer wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst CheckIcon = ({ size, color }: { size: number; color: string }) => (\r\n <View\r\n style={{\r\n width: size,\r\n height: size,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {/* Simple checkmark drawn with two Views rotated — no SVG dep needed */}\r\n <View\r\n style={{\r\n position: \"absolute\",\r\n width: size * 0.55,\r\n height: size * 0.3,\r\n borderLeftWidth: 2,\r\n borderBottomWidth: 2,\r\n borderColor: color,\r\n transform: [{ rotate: \"-45deg\" }, { translateY: -size * 0.05 }],\r\n }}\r\n />\r\n </View>\r\n);\r\n\r\nconst MinusIcon = ({ size, color }: { size: number; color: string }) => (\r\n <View\r\n style={{\r\n width: size * 0.7,\r\n height: 2,\r\n backgroundColor: color,\r\n }}\r\n />\r\n);\r\n\r\nexport const Checkbox = forwardRef<View, CheckboxProps>(function Checkbox(\r\n {\r\n size = \"md\",\r\n label,\r\n checked: controlledChecked,\r\n defaultChecked = false,\r\n indeterminate = false,\r\n disabled,\r\n onChange,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const isControlled = controlledChecked !== undefined;\r\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\r\n\r\n const isChecked = isControlled ? controlledChecked : internalChecked;\r\n const isActive = isChecked || indeterminate;\r\n\r\n const handlePress = useCallback(() => {\r\n if (disabled) return;\r\n const next = !isChecked;\r\n if (!isControlled) setInternalChecked(next);\r\n onChange?.(next);\r\n }, [disabled, isChecked, isControlled, onChange]);\r\n\r\n const boxSizeMap: Record<CheckboxSize, number> = {\r\n sm: 16,\r\n md: 20,\r\n lg: 24,\r\n };\r\n\r\n const iconSizeMap: Record<CheckboxSize, number> = {\r\n sm: 10,\r\n md: 12,\r\n lg: 14,\r\n };\r\n\r\n const fontSizeMap: Record<CheckboxSize, number> = {\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n };\r\n\r\n const boxSize = boxSizeMap[size];\r\n const iconSize = iconSizeMap[size];\r\n\r\n const boxStyle: ViewStyle = {\r\n width: boxSize,\r\n height: boxSize,\r\n borderRadius: theme.radiusXxs,\r\n borderWidth: theme.borderWidthSm,\r\n borderColor: isActive ? theme.primary : theme.border,\r\n backgroundColor: isActive ? theme.primary : theme.surface,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n };\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n onPress={handlePress}\r\n disabled={disabled}\r\n accessibilityRole=\"checkbox\"\r\n accessibilityState={{ checked: indeterminate ? \"mixed\" : isChecked, disabled: !!disabled }}\r\n accessibilityLabel={accessibilityLabel ?? label}\r\n style={[\r\n { flexDirection: \"row\", alignItems: \"center\", gap: 8, opacity: disabled ? 0.5 : 1 },\r\n style,\r\n ]}\r\n {...rest}\r\n >\r\n <View style={boxStyle}>\r\n {indeterminate ? (\r\n <MinusIcon size={iconSize} color={theme.surface ?? \"#ffffff\"} />\r\n ) : isChecked ? (\r\n <CheckIcon size={iconSize} color={theme.surface ?? \"#ffffff\"} />\r\n ) : null}\r\n </View>\r\n\r\n {label && (\r\n <Text\r\n style={{\r\n fontSize: fontSizeMap[size],\r\n color: theme.text,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef, useState, useMemo } from \"react\";\r\nimport { Image, Text, View, type StyleProp, type ViewStyle, type ViewProps } from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type AvatarSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type AvatarVariant = \"circle\" | \"square\";\r\n\r\n// Paleta de cores para avatares\r\nconst AVATAR_COLORS = [\r\n { bg: \"#FBF1E6\", text: \"#D6822D\" }, // Laranja\r\n { bg: \"#EDF3FA\", text: \"#538CC6\" }, // Azul\r\n { bg: \"#F3E5F5\", text: \"#9C27B0\" }, // Roxo\r\n { bg: \"#E8F5E9\", text: \"#4CAF50\" }, // Verde\r\n { bg: \"#FFF3E0\", text: \"#FF9800\" }, // Amarelo\r\n { bg: \"#FFEBEE\", text: \"#F44336\" }, // Vermelho\r\n { bg: \"#E3F2FD\", text: \"#2196F3\" }, // Azul claro\r\n { bg: \"#F3E5F5\", text: \"#673AB7\" }, // Violeta\r\n { bg: \"#E0F2F1\", text: \"#009688\" }, // Teal\r\n { bg: \"#FBE9E7\", text: \"#FF5722\" }, // Deep Orange\r\n];\r\n\r\n/**\r\n * Gera cores de avatar baseadas em uma string (nome)\r\n * Usa hash simples para garantir consistência\r\n */\r\nfunction getAvatarColors(name: string): { bg: string; text: string } {\r\n const hash = name.split(\"\").reduce((acc, char) => acc + char.charCodeAt(0), 0);\r\n const index = hash % AVATAR_COLORS.length;\r\n return AVATAR_COLORS[index];\r\n}\r\n\r\nexport type AvatarProps = Omit<ViewProps, \"style\"> & {\r\n /** Image source URL */\r\n src?: string;\r\n /** Alt text (used as accessibility label and initials fallback) */\r\n alt?: string;\r\n /** Fallback initials shown when image is unavailable */\r\n initials?: string;\r\n /** Avatar size */\r\n size?: AvatarSize;\r\n /** Shape variant */\r\n variant?: AvatarVariant;\r\n /** Generate background and text color automatically based on name/alt */\r\n colorFromName?: boolean;\r\n /** Custom style for the outer wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const Avatar = forwardRef<View, AvatarProps>(function Avatar(\r\n { src, alt = \"\", initials, size = \"md\", variant = \"circle\", colorFromName = false, style, ...rest },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const [imgError, setImgError] = useState(false);\r\n const showImage = !!src && !imgError;\r\n\r\n // Gera cores baseadas no nome se colorFromName estiver ativo\r\n const avatarColors = useMemo(() => {\r\n if (!colorFromName) return null;\r\n const name = initials || alt || \"\";\r\n return name ? getAvatarColors(name) : null;\r\n }, [colorFromName, initials, alt]);\r\n\r\n const fallbackLabel = initials\r\n ? initials.slice(0, 2).toUpperCase()\r\n : alt\r\n ? alt\r\n .split(\" \")\r\n .slice(0, 2)\r\n .map((w) => w[0])\r\n .join(\"\")\r\n .toUpperCase()\r\n : \"?\";\r\n\r\n const sizePxMap: Record<AvatarSize, number> = {\r\n sm: 32,\r\n md: 40,\r\n lg: 48,\r\n xl: 64,\r\n };\r\n\r\n const fontSizeMap: Record<AvatarSize, number> = {\r\n sm: 12,\r\n md: 14,\r\n lg: 18,\r\n xl: 20,\r\n };\r\n\r\n const boxSize = sizePxMap[size];\r\n const borderRadius = variant === \"circle\" ? boxSize / 2 : theme.radiusSm;\r\n\r\n const containerStyle: ViewStyle = {\r\n width: boxSize,\r\n height: boxSize,\r\n borderRadius,\r\n backgroundColor: avatarColors?.bg ?? theme.primary,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n overflow: \"hidden\",\r\n };\r\n\r\n return (\r\n <View\r\n ref={ref}\r\n accessible\r\n accessibilityRole=\"image\"\r\n accessibilityLabel={alt || initials || fallbackLabel}\r\n style={[containerStyle, style]}\r\n {...rest}\r\n >\r\n {showImage ? (\r\n <Image\r\n source={{ uri: src }}\r\n style={{ width: boxSize, height: boxSize, borderRadius }}\r\n onError={() => setImgError(true)}\r\n accessibilityLabel={alt}\r\n />\r\n ) : (\r\n <Text\r\n style={{\r\n fontSize: fontSizeMap[size],\r\n fontWeight: \"500\",\r\n color: avatarColors?.text ?? theme.surface,\r\n }}\r\n accessibilityElementsHidden\r\n >\r\n {fallbackLabel}\r\n </Text>\r\n )}\r\n </View>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n ActivityIndicator as RNActivityIndicator,\r\n View,\r\n type StyleProp,\r\n type ViewStyle,\r\n type ViewProps,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type ActivityIndicatorSize = \"sm\" | \"md\" | \"lg\";\r\nexport type ActivityIndicatorColor = \"primary\" | \"surface\" | \"custom\";\r\n\r\nexport type ActivityIndicatorProps = Omit<ViewProps, \"style\"> & {\r\n /** Spinner size */\r\n size?: ActivityIndicatorSize;\r\n /** Color preset — use \"custom\" to provide a raw color via `color` prop */\r\n colorVariant?: ActivityIndicatorColor;\r\n /** Raw color value (used when colorVariant is \"custom\") */\r\n color?: string;\r\n /** Whether the indicator is visible */\r\n animating?: boolean;\r\n /** Custom style for the outer wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst sizeMap: Record<ActivityIndicatorSize, number | \"small\" | \"large\"> = {\r\n sm: \"small\",\r\n md: \"large\",\r\n lg: 48,\r\n};\r\n\r\nexport const ActivityIndicator = forwardRef<View, ActivityIndicatorProps>(\r\n function ActivityIndicator(\r\n {\r\n size = \"md\",\r\n colorVariant = \"primary\",\r\n color,\r\n animating = true,\r\n style,\r\n accessibilityLabel = \"Carregando\",\r\n ...rest\r\n },\r\n ref,\r\n ) {\r\n const theme = useRehagroTheme();\r\n\r\n const resolvedColor =\r\n colorVariant === \"custom\" && color\r\n ? color\r\n : colorVariant === \"surface\"\r\n ? theme.surface\r\n : theme.primary;\r\n\r\n const spinnerSize = sizeMap[size];\r\n\r\n return (\r\n <View\r\n ref={ref}\r\n accessible\r\n accessibilityRole=\"progressbar\"\r\n accessibilityLabel={accessibilityLabel}\r\n accessibilityState={{ busy: animating }}\r\n style={style}\r\n {...rest}\r\n >\r\n <RNActivityIndicator\r\n animating={animating}\r\n size={spinnerSize as \"small\" | \"large\"}\r\n color={resolvedColor}\r\n />\r\n </View>\r\n );\r\n },\r\n);\r\n","import { forwardRef } from \"react\";\r\nimport {\r\n Text as RNText,\r\n type TextProps as RNTextProps,\r\n type StyleProp,\r\n type TextStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type TextSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\" | \"xxl2\";\r\n\r\nexport type TextColor = \"default\" | \"muted\" | \"primary\" | \"danger\" | \"success\" | \"warning\";\r\n\r\nexport type TextProps = Omit<RNTextProps, \"style\"> & {\r\n /** Font size scale */\r\n size?: TextSize;\r\n /** Color preset */\r\n color?: TextColor;\r\n /** Bold weight */\r\n bold?: boolean;\r\n /** Custom style */\r\n style?: StyleProp<TextStyle>;\r\n};\r\n\r\n\r\nexport const Text = forwardRef<RNText, TextProps>(function Text(\r\n { size = \"sm\", color = \"default\", bold = false, style, children, ...rest },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n\r\n const colorMap: Record<TextColor, string> = {\r\n default: theme.text ?? \"#111827\",\r\n muted: theme.textMuted ?? \"#6b7280\",\r\n primary: theme.primary ?? \"#16a34a\",\r\n danger: theme.danger ?? \"#dc2626\",\r\n success: theme.success ?? \"#16a34a\",\r\n warning: theme.warning ?? \"#d97706\",\r\n };\r\n\r\n const isDisplaySize = size === \"lg\" || size === \"xl\" || size === \"xxl\" || size === \"xxl2\";\r\n const fontFamily = isDisplaySize ? theme.fontFamilyDisplay : theme.fontFamilyBody;\r\n\r\n const fontSizeMap: Record<TextSize, number> = {\r\n xs: theme.fontSizeXs ?? 12,\r\n sm: theme.fontSizeSm ?? 14,\r\n md: theme.fontSizeMd ?? 16,\r\n lg: theme.fontSizeLg ?? 18,\r\n xl: theme.fontSizeXl ?? 20,\r\n xxl: theme.fontSizeXxl ?? 24,\r\n xxl2: theme.fontSizeXxl2 ?? 32,\r\n };\r\n\r\n const lineHeightMap: Record<TextSize, number> = {\r\n xs: theme.lineHeightXs ?? 16,\r\n sm: theme.lineHeightSm ?? 20,\r\n md: theme.lineHeightMd ?? 24,\r\n lg: theme.lineHeightLg ?? 26,\r\n xl: theme.lineHeightXl ?? 28,\r\n xxl: theme.lineHeightXxl ?? 32,\r\n xxl2: theme.lineHeightXxl2 ?? 40,\r\n };\r\n\r\n const resolvedStyle: TextStyle = {\r\n fontSize: fontSizeMap[size],\r\n lineHeight: lineHeightMap[size],\r\n color: colorMap[color],\r\n ...(fontFamily ? { fontFamily } : {}),\r\n ...(bold && !fontFamily ? { fontWeight: \"700\" } : {}),\r\n };\r\n\r\n return (\r\n <RNText ref={ref} style={[resolvedStyle, style]} {...rest}>\r\n {children}\r\n </RNText>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n Pressable,\r\n Text,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type TextStyle,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { PresetColor } from \"../../types/colors.types\";\r\n\r\nexport type TagColor = PresetColor | (string & {});\r\nexport type TagSize = \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type TagProps = Omit<PressableProps, \"style\"> & {\r\n /** Tag color — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\") */\r\n color?: TagColor;\r\n /** Tag size */\r\n size?: TagSize;\r\n /** Active (selected) state */\r\n active?: boolean;\r\n /** Disabled state */\r\n disabled?: boolean;\r\n /** Tag label text */\r\n title: string;\r\n /** Optional icon rendered on the left side */\r\n leftIcon?: React.ReactNode;\r\n /** Optional icon rendered on the right side */\r\n rightIcon?: React.ReactNode;\r\n /** Custom style for the outer container */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\n/** Appends a two-digit hex alpha to a 6-digit hex color string. */\r\nfunction hexAlpha(hex: string, alpha: string): string {\r\n return `${hex}${alpha}`;\r\n}\r\n\r\nexport const Tag = forwardRef<View, TagProps>(function Tag(\r\n {\r\n color = \"primary\",\r\n size = \"md\",\r\n active = false,\r\n disabled = false,\r\n title,\r\n leftIcon,\r\n rightIcon,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const clickable = !!rest.onPress && !disabled;\r\n\r\n const presetTokens: Record<PresetColor, { main: string; hover: string }> = {\r\n primary: { main: theme.primary ?? \"#16a34a\", hover: theme.primaryHover ?? \"#15803d\" },\r\n secondary: { main: theme.secondary ?? \"#6b7280\", hover: theme.secondaryHover ?? \"#4b5563\" },\r\n danger: { main: theme.danger ?? \"#dc2626\", hover: theme.dangerHover ?? \"#b91c1c\" },\r\n warning: { main: theme.warning ?? \"#d97706\", hover: theme.warning ?? \"#d97706\" },\r\n success: { main: theme.success ?? \"#16a34a\", hover: theme.success ?? \"#16a34a\" },\r\n info: { main: theme.info ?? \"#0284c7\", hover: theme.infoHover ?? \"#0369a1\" },\r\n };\r\n\r\n const preset = isPresetColor(color);\r\n const mainColor = preset ? presetTokens[color as PresetColor].main : color;\r\n const hoverColor = preset ? presetTokens[color as PresetColor].hover : color;\r\n\r\n const sizeStyleMap: Record<TagSize, ViewStyle> = {\r\n sm: { paddingHorizontal: 8, paddingVertical: 2, gap: 4 },\r\n md: { paddingHorizontal: 10, paddingVertical: 4, gap: 6 },\r\n lg: { paddingHorizontal: 12, paddingVertical: 6, gap: 6 },\r\n };\r\n\r\n const fontSizeMap: Record<TagSize, number> = {\r\n sm: 11,\r\n md: 12,\r\n lg: 13,\r\n };\r\n\r\n const baseStyle: ViewStyle = {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n alignSelf: \"flex-start\",\r\n borderRadius: 9999,\r\n borderWidth: 1,\r\n opacity: disabled ? 0.5 : 1,\r\n ...sizeStyleMap[size],\r\n };\r\n\r\n function containerStyle(pressed: boolean): ViewStyle {\r\n const resolvedColor = pressed && clickable ? hoverColor : mainColor;\r\n\r\n if (active) {\r\n return {\r\n backgroundColor: resolvedColor,\r\n borderColor: resolvedColor,\r\n };\r\n }\r\n\r\n // inactive\r\n const bg = pressed && clickable\r\n ? hexAlpha(mainColor, \"33\") // ~20% on press\r\n : hexAlpha(mainColor, \"1a\"); // ~10% resting\r\n const border = hexAlpha(mainColor, \"4d\"); // ~30%\r\n\r\n return { backgroundColor: bg, borderColor: border };\r\n }\r\n\r\n function resolvedTextColor(pressed: boolean): string {\r\n if (active) return theme.surface ?? \"#ffffff\";\r\n return pressed && clickable ? hoverColor : mainColor;\r\n }\r\n\r\n const textStyle = (pressed: boolean): TextStyle => ({\r\n color: resolvedTextColor(pressed),\r\n fontSize: fontSizeMap[size],\r\n fontWeight: \"500\",\r\n });\r\n\r\n if (!clickable) {\r\n return (\r\n <View\r\n ref={ref}\r\n accessibilityRole=\"text\"\r\n accessibilityLabel={accessibilityLabel ?? title}\r\n accessibilityState={{ disabled }}\r\n style={[baseStyle, containerStyle(false), style]}\r\n >\r\n {leftIcon && <View accessibilityElementsHidden>{leftIcon}</View>}\r\n <Text style={textStyle(false)}>{title}</Text>\r\n {rightIcon && <View accessibilityElementsHidden>{rightIcon}</View>}\r\n </View>\r\n );\r\n }\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={disabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled, selected: active }}\r\n accessibilityLabel={accessibilityLabel ?? title}\r\n style={({ pressed }) => [baseStyle, containerStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {({ pressed }) => (\r\n <>\r\n {leftIcon && <View accessibilityElementsHidden>{leftIcon}</View>}\r\n <Text style={textStyle(pressed)}>{title}</Text>\r\n {rightIcon && <View accessibilityElementsHidden>{rightIcon}</View>}\r\n </>\r\n )}\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\nimport {\n Pressable,\n View,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\n\nexport type CardVariant = \"elevated\" | \"outlined\" | \"filled\";\nexport type CardRadius = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type CardPadding = \"none\" | \"sm\" | \"md\" | \"lg\";\n\nexport type CardProps = Omit<PressableProps, \"style\"> & {\n /** Visual style variant */\n variant?: CardVariant;\n /** Border radius */\n radius?: CardRadius;\n /** Internal padding */\n padding?: CardPadding;\n /** Makes the card clickable with press effects */\n clickable?: boolean;\n /** Disabled state (only applies when clickable) */\n disabled?: boolean;\n /** Children content */\n children?: React.ReactNode;\n /** Custom style */\n style?: StyleProp<ViewStyle>;\n};\n\nconst radiusMap: Record<CardRadius, number> = {\n none: 0,\n xs: 2,\n sm: 4,\n md: 8,\n lg: 12,\n xl: 16,\n};\n\nconst paddingMap: Record<CardPadding, number> = {\n none: 0,\n sm: 12,\n md: 16,\n lg: 24,\n};\n\nexport const Card = forwardRef<View, CardProps>(function Card(\n {\n variant = \"outlined\",\n radius = \"sm\",\n padding = \"md\",\n clickable = false,\n disabled = false,\n children,\n style,\n ...rest\n },\n ref,\n) {\n const theme = useRehagroTheme();\n\n const baseStyle: ViewStyle = {\n borderRadius: radiusMap[radius],\n padding: paddingMap[padding],\n opacity: disabled ? 0.5 : 1,\n };\n\n const variantStyles: Record<CardVariant, ViewStyle> = {\n elevated: {\n backgroundColor: theme.surface,\n shadowColor: \"#000\",\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.1,\n shadowRadius: 8,\n elevation: 4,\n },\n outlined: {\n backgroundColor: theme.surface,\n borderWidth: 1,\n borderColor: theme.border,\n },\n filled: {\n backgroundColor: theme.background,\n },\n };\n\n const containerStyle = (pressed: boolean): ViewStyle[] => {\n const styles: ViewStyle[] = [baseStyle, variantStyles[variant]];\n\n if (clickable && pressed) {\n styles.push({\n opacity: 0.8,\n transform: [{ scale: 0.99 }],\n });\n }\n\n return styles;\n };\n\n if (!clickable) {\n return (\n <View\n ref={ref}\n style={[baseStyle, variantStyles[variant], style]}\n accessibilityRole=\"none\"\n >\n {children}\n </View>\n );\n }\n\n return (\n <Pressable\n ref={ref}\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityState={{ disabled }}\n style={({ pressed }) => [containerStyle(pressed), style]}\n {...rest}\n >\n {children}\n </Pressable>\n );\n});\n\nexport type CardHeaderProps = {\n children?: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n};\n\nexport const CardHeader = forwardRef<View, CardHeaderProps>(function CardHeader(\n { children, style },\n ref,\n) {\n return (\n <View\n ref={ref}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 16,\n },\n style,\n ]}\n >\n {children}\n </View>\n );\n});\n\nexport type CardContentProps = {\n children?: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n};\n\nexport const CardContent = forwardRef<View, CardContentProps>(function CardContent(\n { children, style },\n ref,\n) {\n return (\n <View ref={ref} style={[{ marginTop: 8 }, style]}>\n {children}\n </View>\n );\n});\n\nexport type CardFooterProps = {\n children?: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n};\n\nexport const CardFooter = forwardRef<View, CardFooterProps>(function CardFooter(\n { children, style },\n ref,\n) {\n const theme = useRehagroTheme();\n\n return (\n <View\n ref={ref}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n gap: 8,\n marginTop: 16,\n paddingTop: 16,\n borderTopWidth: 1,\n borderTopColor: theme.border,\n },\n style,\n ]}\n >\n {children}\n </View>\n );\n});\n"]}
1
+ {"version":3,"sources":["../src/provider/theme.native.ts","../src/provider/RehagroNativeContext.ts","../src/provider/RehagroNativeProvider.tsx","../src/components/Button/Button.native.tsx","../src/components/IconButton/IconButton.native.tsx","../src/components/TextInput/TextInput.native.tsx","../src/components/Checkbox/Checkbox.native.tsx","../src/components/Avatar/Avatar.native.tsx","../src/components/ActivityIndicator/ActivityIndicator.native.tsx","../src/components/Text/Text.native.tsx","../src/components/Tag/Tag.native.tsx","../src/components/Card/Card.native.tsx"],"names":["createContext","useContext","useMemo","forwardRef","Button","jsx","Pressable","jsxs","Fragment","ActivityIndicator","View","Text","darkenColor","PRESET_COLORS","isPresetColor","IconButton","TextInput","useState","paddingMap","radiusMap","RNTextInput","Checkbox","useCallback","Avatar","Image","RNActivityIndicator","RNText","Tag","CardHeader","CardContent","CardFooter","Card"],"mappings":"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","file":"native.js","sourcesContent":["import type { RehagroTheme } from \"./theme\";\r\n\r\n/** React Native theme — reuses the same token names as the web theme.\r\n * Color values are plain CSS hex strings (e.g. \"#16a34a\").\r\n * Spacing/radius/border values are numbers (device-independent pixels).\r\n */\r\nexport type RehagroNativeTheme = {\r\n // Brand colors\r\n primary?: string;\r\n primaryHover?: string;\r\n secondary?: string;\r\n secondaryHover?: string;\r\n danger?: string;\r\n dangerHover?: string;\r\n warning?: string;\r\n success?: string;\r\n info?: string;\r\n infoHover?: string;\r\n\r\n // Semantic colors\r\n text?: string;\r\n textMuted?: string;\r\n surface?: string;\r\n background?: string;\r\n border?: string;\r\n\r\n // Border radius (numbers = dp)\r\n radiusXxs?: number;\r\n radiusXs?: number;\r\n radiusSm?: number;\r\n radiusMd?: number;\r\n radiusLg?: number;\r\n radiusXl?: number;\r\n\r\n // Border width\r\n borderWidthSm?: number;\r\n borderWidthMd?: number;\r\n borderWidthLg?: number;\r\n\r\n // Input sizes\r\n inputHeightSm?: number;\r\n inputHeightMd?: number;\r\n inputHeightLg?: number;\r\n\r\n // Typography — must be loaded by the app (e.g. via expo-font / useFonts)\r\n // Inter for body/labels, Sora for headings/display\r\n fontFamilyBody?: string;\r\n fontFamilyDisplay?: string;\r\n\r\n // Text size scale (font size in dp)\r\n fontSizeXs?: number;\r\n fontSizeSm?: number;\r\n fontSizeMd?: number;\r\n fontSizeLg?: number;\r\n fontSizeXl?: number;\r\n fontSizeXxl?: number;\r\n fontSizeXxl2?: number;\r\n\r\n // Text line height scale (in dp)\r\n lineHeightXs?: number;\r\n lineHeightSm?: number;\r\n lineHeightMd?: number;\r\n lineHeightLg?: number;\r\n lineHeightXl?: number;\r\n lineHeightXxl?: number;\r\n lineHeightXxl2?: number;\r\n};\r\n\r\nexport type RehagroNativeProviderProps = {\r\n /** Theme overrides — any token not provided keeps the default value */\r\n theme?: RehagroNativeTheme;\r\n children: React.ReactNode;\r\n};\r\n\r\nexport const DEFAULT_NATIVE_THEME: RehagroNativeTheme = {\r\n primary: \"#16a34a\",\r\n secondary: \"#6b7280\",\r\n danger: \"#dc2626\",\r\n warning: \"#d97706\",\r\n success: \"#16a34a\",\r\n info: \"#0284c7\",\r\n infoHover: \"#0369a1\",\r\n\r\n text: \"#111827\",\r\n textMuted: \"#6b7280\",\r\n surface: \"#ffffff\",\r\n background: \"#f9fafb\",\r\n border: \"#d1d5db\",\r\n\r\n radiusXxs: 4,\r\n radiusXs: 8,\r\n radiusSm: 12,\r\n radiusMd: 16,\r\n radiusLg: 24,\r\n radiusXl: 32,\r\n\r\n borderWidthSm: 1,\r\n borderWidthMd: 2,\r\n borderWidthLg: 3,\r\n\r\n inputHeightSm: 36,\r\n inputHeightMd: 44,\r\n inputHeightLg: 52,\r\n\r\n fontFamilyBody: \"\",\r\n fontFamilyDisplay: \"\",\r\n\r\n fontSizeXs: 12,\r\n fontSizeSm: 14,\r\n fontSizeMd: 16,\r\n fontSizeLg: 18,\r\n fontSizeXl: 20,\r\n fontSizeXxl: 24,\r\n fontSizeXxl2: 32,\r\n\r\n lineHeightXs: 16,\r\n lineHeightSm: 20,\r\n lineHeightMd: 24,\r\n lineHeightLg: 26,\r\n lineHeightXl: 28,\r\n lineHeightXxl: 32,\r\n lineHeightXxl2: 40,\r\n};\r\n\r\n// Ensures RehagroNativeTheme color keys stay in sync with RehagroTheme\r\ntype _ColorKeysMatch = Pick<\r\n RehagroTheme,\r\n | \"primary\"\r\n | \"primaryHover\"\r\n | \"secondary\"\r\n | \"secondaryHover\"\r\n | \"danger\"\r\n | \"dangerHover\"\r\n | \"warning\"\r\n | \"success\"\r\n | \"info\"\r\n | \"infoHover\"\r\n | \"text\"\r\n | \"textMuted\"\r\n | \"surface\"\r\n | \"background\"\r\n | \"border\"\r\n>;\r\ntype _NativeColorKeys = Pick<\r\n RehagroNativeTheme,\r\n | \"primary\"\r\n | \"primaryHover\"\r\n | \"secondary\"\r\n | \"secondaryHover\"\r\n | \"danger\"\r\n | \"dangerHover\"\r\n | \"warning\"\r\n | \"success\"\r\n | \"info\"\r\n | \"infoHover\"\r\n | \"text\"\r\n | \"textMuted\"\r\n | \"surface\"\r\n | \"background\"\r\n | \"border\"\r\n>;\r\n// This line will error at compile time if the color keys diverge:\r\ntype _ColorKeysCheck = _ColorKeysMatch extends _NativeColorKeys ? true : never;\r\n","import { createContext, useContext } from \"react\";\r\nimport type { RehagroNativeTheme } from \"./theme.native\";\r\nimport { DEFAULT_NATIVE_THEME } from \"./theme.native\";\r\n\r\nexport const RehagroNativeContext = createContext<RehagroNativeTheme>(DEFAULT_NATIVE_THEME);\r\n\r\nexport function useRehagroTheme(): RehagroNativeTheme {\r\n return useContext(RehagroNativeContext);\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { RehagroNativeContext } from \"./RehagroNativeContext\";\r\nimport { DEFAULT_NATIVE_THEME } from \"./theme.native\";\r\nimport type { RehagroNativeProviderProps, RehagroNativeTheme } from \"./theme.native\";\r\n\r\nexport function RehagroNativeProvider({ theme, children }: RehagroNativeProviderProps) {\r\n const resolvedTheme = useMemo<RehagroNativeTheme>(\r\n () => ({ ...DEFAULT_NATIVE_THEME, ...theme }),\r\n [theme],\r\n );\r\n\r\n return (\r\n <RehagroNativeContext.Provider value={resolvedTheme}>\r\n {children}\r\n </RehagroNativeContext.Provider>\r\n );\r\n}\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n ActivityIndicator,\r\n Pressable,\r\n Text,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type TextStyle,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { ButtonColor, PresetColor } from \"../../types/colors.types\";\r\n\r\n/** Darkens a hex color (#rgb or #rrggbb) by the given factor (0–1). */\r\nfunction darkenColor(hex: string, factor = 0.2): string {\r\n if (!hex.startsWith(\"#\")) return hex;\r\n const clean = hex.replace(\"#\", \"\");\r\n const full = clean.length === 3\r\n ? clean.split(\"\").map((c) => c + c).join(\"\")\r\n : clean;\r\n const num = parseInt(full, 16);\r\n const r = Math.max(0, Math.round(((num >> 16) & 0xff) * (1 - factor)));\r\n const g = Math.max(0, Math.round(((num >> 8) & 0xff) * (1 - factor)));\r\n const b = Math.max(0, Math.round((num & 0xff) * (1 - factor)));\r\n return `#${[r, g, b].map((v) => v.toString(16).padStart(2, \"0\")).join(\"\")}`;\r\n}\r\n\r\nexport type { ButtonColor };\r\nexport type ButtonVariant = \"solid\" | \"outline\" | \"ghost\";\r\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\r\nexport type ButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport type ButtonProps = Omit<PressableProps, \"style\"> & {\r\n /** Visual style variant */\r\n variant?: ButtonVariant;\r\n /** Button size */\r\n size?: ButtonSize;\r\n /** Border radius */\r\n radius?: ButtonRadius;\r\n /** Color scheme — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\", \"rgb(...)\") */\r\n color?: ButtonColor;\r\n /** Shows loading state and disables interaction */\r\n loading?: boolean;\r\n /** Icon rendered to the left of children (hidden when loading) */\r\n leftIcon?: React.ReactNode;\r\n /** Icon rendered to the right of children (hidden when loading) */\r\n rightIcon?: React.ReactNode;\r\n /** Label text */\r\n children?: React.ReactNode;\r\n /** Custom style for the outer Pressable */\r\n style?: StyleProp<ViewStyle>;\r\n /** Custom style applied to the inner text label (string children only) */\r\n labelStyle?: StyleProp<TextStyle>;\r\n /** Background color when the button is pressed (overrides default pressed color) */\r\n pressedColor?: string;\r\n};\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\nexport const Button = forwardRef<View, ButtonProps>(function Button(\r\n {\r\n variant = \"solid\",\r\n size = \"md\",\r\n radius = \"sm\",\r\n color = \"primary\",\r\n loading = false,\r\n disabled,\r\n leftIcon,\r\n rightIcon,\r\n children,\r\n style,\r\n labelStyle,\r\n pressedColor,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const isDisabled = disabled || loading;\r\n const preset = isPresetColor(color);\r\n\r\n const presetBase: Record<PresetColor, string> = {\r\n primary: theme.primary ?? \"#15607A\",\r\n secondary: theme.secondary ?? \"#718D44\",\r\n danger: theme.danger ?? \"#dc2626\",\r\n warning: theme.warning ?? \"#d97706\",\r\n success: theme.success ?? \"#16a34a\",\r\n info: theme.info ?? \"#0284c7\",\r\n };\r\n\r\n const presetHover: Record<PresetColor, string> = {\r\n primary: theme.primaryHover ?? darkenColor(presetBase.primary),\r\n secondary: theme.secondaryHover ?? darkenColor(presetBase.secondary),\r\n danger: theme.dangerHover ?? darkenColor(presetBase.danger),\r\n warning: theme.warning ?? darkenColor(presetBase.warning),\r\n success: theme.success ?? darkenColor(presetBase.success),\r\n info: theme.infoHover ?? darkenColor(presetBase.info),\r\n };\r\n\r\n const colorBase = preset ? presetBase[color as PresetColor] : color;\r\n const colorHover = preset ? presetHover[color as PresetColor] : darkenColor(color);\r\n\r\n const sizeStyleMap: Record<ButtonSize, ViewStyle> = {\r\n sm: { paddingHorizontal: 12, paddingVertical: 6 },\r\n md: { paddingHorizontal: 16, paddingVertical: 8 },\r\n lg: { paddingHorizontal: 20, paddingVertical: 10 },\r\n };\r\n\r\n const fontSizeMap: Record<ButtonSize, number> = {\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n };\r\n\r\n const radiusStyleMap: Record<ButtonRadius, number> = {\r\n none: 0,\r\n xxs: 2,\r\n xs: 4,\r\n sm: 8,\r\n md: 12,\r\n lg: 16,\r\n xl: 24,\r\n full: 9999,\r\n };\r\n\r\n const baseStyle: ViewStyle = {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: 8,\r\n borderWidth: 1,\r\n opacity: isDisabled ? 0.5 : 1,\r\n borderRadius: radiusStyleMap[radius],\r\n ...sizeStyleMap[size],\r\n };\r\n\r\n const variantStyle = (pressed: boolean): ViewStyle => {\r\n if (variant === \"solid\") {\r\n const bg = isDisabled ? colorBase : pressed ? colorHover : colorBase;\r\n return { backgroundColor: bg, borderColor: bg };\r\n }\r\n if (variant === \"outline\") {\r\n const bg = pressed ? colorBase : \"transparent\";\r\n return {\r\n borderColor: isDisabled ? bg : colorBase,\r\n backgroundColor: bg,\r\n };\r\n }\r\n return { borderColor: \"transparent\", backgroundColor: \"transparent\" };\r\n };\r\n\r\n const textColor = (pressed: boolean): string => {\r\n if (variant === \"solid\") return theme.surface ?? \"#ffffff\";\r\n if (variant === \"outline\") return pressed ? (theme.surface ?? \"#ffffff\") : colorBase;\r\n return colorBase;\r\n };\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={isDisabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled: !!isDisabled, busy: loading }}\r\n accessibilityLabel={\r\n accessibilityLabel ?? (typeof children === \"string\" ? children : undefined)\r\n }\r\n android_ripple={{ color: pressedColor ?? colorHover, borderless: false }}\r\n style={({ pressed }) => [baseStyle, variantStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {({ pressed }) => (\r\n <>\r\n {loading && (\r\n <ActivityIndicator\r\n size=\"small\"\r\n color={variant === \"solid\" ? (theme.surface ?? \"#ffffff\") : colorBase}\r\n />\r\n )}\r\n {!loading && leftIcon && <View accessibilityElementsHidden>{leftIcon}</View>}\r\n {typeof children === \"string\" ? (\r\n <Text\r\n style={[{ color: textColor(pressed), fontSize: fontSizeMap[size], fontWeight: \"500\", ...(theme.fontFamilyDisplay ? { fontFamily: theme.fontFamilyDisplay } : {}) }, labelStyle]}\r\n >\r\n {children}\r\n </Text>\r\n ) : (\r\n children\r\n )}\r\n {!loading && rightIcon && <View accessibilityElementsHidden>{rightIcon}</View>}\r\n </>\r\n )}\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n ActivityIndicator,\r\n Pressable,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { ButtonColor, PresetColor } from \"../../types/colors.types\";\r\n\r\n/** Darkens a hex color (#rgb or #rrggbb) by the given factor (0–1). */\r\nfunction darkenColor(hex: string, factor = 0.2): string {\r\n if (!hex.startsWith(\"#\")) return hex;\r\n const clean = hex.replace(\"#\", \"\");\r\n const full = clean.length === 3\r\n ? clean.split(\"\").map((c) => c + c).join(\"\")\r\n : clean;\r\n const num = parseInt(full, 16);\r\n const r = Math.max(0, Math.round(((num >> 16) & 0xff) * (1 - factor)));\r\n const g = Math.max(0, Math.round(((num >> 8) & 0xff) * (1 - factor)));\r\n const b = Math.max(0, Math.round((num & 0xff) * (1 - factor)));\r\n return `#${[r, g, b].map((v) => v.toString(16).padStart(2, \"0\")).join(\"\")}`;\r\n}\r\n\r\nexport type IconButtonVariant = \"solid\" | \"outline\" | \"ghost\";\r\nexport type IconButtonSize = \"sm\" | \"md\" | \"lg\";\r\nexport type IconButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\nexport type IconButtonColor = ButtonColor;\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\nexport type IconButtonProps = Omit<PressableProps, \"style\"> & {\r\n /** Visual style variant */\r\n variant?: IconButtonVariant;\r\n /** Button size */\r\n size?: IconButtonSize;\r\n /** Border radius */\r\n radius?: IconButtonRadius;\r\n /** Color scheme — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\", \"rgb(...)\") */\r\n color?: IconButtonColor;\r\n /** Shows loading state and disables interaction */\r\n loading?: boolean;\r\n /** Icon content */\r\n children?: React.ReactNode;\r\n /** Custom style for the outer Pressable */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const IconButton = forwardRef<View, IconButtonProps>(function IconButton(\r\n {\r\n variant = \"ghost\",\r\n size = \"md\",\r\n radius = \"full\",\r\n color = \"primary\",\r\n loading = false,\r\n disabled,\r\n children,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const isDisabled = disabled || loading;\r\n\r\n const sizePxMap: Record<IconButtonSize, number> = {\r\n sm: 32,\r\n md: 40,\r\n lg: 48,\r\n };\r\n\r\n const radiusPxMap: Record<IconButtonRadius, number> = {\r\n none: 0,\r\n xxs: 2,\r\n xs: 4,\r\n sm: 8,\r\n md: 12,\r\n lg: 16,\r\n xl: 24,\r\n full: 9999,\r\n };\r\n\r\n const presetTokens: Record<PresetColor, { main: string; hover: string }> = {\r\n primary: { main: theme.primary ?? \"#15607A\", hover: theme.primaryHover ?? darkenColor(theme.primary ?? \"#15607A\") },\r\n secondary: { main: theme.secondary ?? \"#718D44\", hover: theme.secondaryHover ?? darkenColor(theme.secondary ?? \"#718D44\") },\r\n danger: { main: theme.danger ?? \"#dc2626\", hover: theme.dangerHover ?? darkenColor(theme.danger ?? \"#dc2626\") },\r\n warning: { main: theme.warning ?? \"#d97706\", hover: darkenColor(theme.warning ?? \"#d97706\") },\r\n success: { main: theme.success ?? \"#16a34a\", hover: darkenColor(theme.success ?? \"#16a34a\") },\r\n info: { main: theme.info ?? \"#0284c7\", hover: theme.infoHover ?? darkenColor(theme.info ?? \"#0284c7\") },\r\n };\r\n\r\n const preset = isPresetColor(color);\r\n const main = preset ? presetTokens[color as PresetColor].main : color;\r\n const hover = preset ? presetTokens[color as PresetColor].hover : darkenColor(color);\r\n const boxSize = sizePxMap[size];\r\n\r\n const baseStyle: ViewStyle = {\r\n width: boxSize,\r\n height: boxSize,\r\n borderRadius: radiusPxMap[radius],\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n borderWidth: 1,\r\n opacity: isDisabled ? 0.5 : 1,\r\n };\r\n\r\n const variantStyle = (pressed: boolean): ViewStyle => {\r\n if (variant === \"solid\") {\r\n return { backgroundColor: pressed ? hover : main, borderColor: pressed ? hover : main };\r\n }\r\n if (variant === \"outline\") {\r\n return { borderColor: main, backgroundColor: pressed ? main : \"transparent\" };\r\n }\r\n return { borderColor: \"transparent\", backgroundColor: pressed ? `${main}1a` : \"transparent\" };\r\n };\r\n\r\n const iconColor = (pressed: boolean): string => {\r\n if (variant === \"solid\") return theme.surface ?? \"#ffffff\";\r\n if (variant === \"outline\") return pressed ? (theme.surface ?? \"#ffffff\") : main;\r\n return main;\r\n };\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={isDisabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled: !!isDisabled, busy: loading }}\r\n accessibilityLabel={accessibilityLabel}\r\n android_ripple={{ color: hover, borderless: false }}\r\n style={({ pressed }) => [baseStyle, variantStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {({ pressed }) =>\r\n loading ? (\r\n <ActivityIndicator size=\"small\" color={variant === \"solid\" ? theme.surface : main} />\r\n ) : (\r\n <View style={{ tintColor: iconColor(pressed) } as ViewStyle}>\r\n {children}\r\n </View>\r\n )\r\n }\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef, useState } from \"react\";\r\nimport {\r\n TextInput as RNTextInput,\r\n Text,\r\n View,\r\n type TextInputProps as RNTextInputProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type TextInputStatus = \"default\" | \"error\";\r\nexport type TextInputSize = \"sm\" | \"md\" | \"lg\";\r\nexport type TextInputRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport type TextInputProps = Omit<RNTextInputProps, \"style\"> & {\r\n /** Label text displayed above the input */\r\n label?: string;\r\n /** Subtitle displayed next to the label */\r\n subtitle?: string;\r\n /** Validation status */\r\n status?: TextInputStatus;\r\n /** Input size */\r\n size?: TextInputSize;\r\n /** Border radius */\r\n radius?: TextInputRadius;\r\n /** Icon rendered to the left of the input */\r\n leftIcon?: React.ReactNode;\r\n /** Icon rendered to the right of the input */\r\n rightIcon?: React.ReactNode;\r\n /** Helper/error message displayed below the input */\r\n helperText?: React.ReactNode;\r\n /** Custom style for the outermost wrapper */\r\n wrapperStyle?: StyleProp<ViewStyle>;\r\n /** Custom style for the input container */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const TextInput = forwardRef<RNTextInput, TextInputProps>(function TextInput(\r\n {\r\n label,\r\n subtitle,\r\n status = \"default\",\r\n size = \"md\",\r\n radius = \"xs\",\r\n leftIcon,\r\n rightIcon,\r\n helperText,\r\n editable = true,\r\n wrapperStyle,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const [focused, setFocused] = useState(false);\r\n\r\n const isDisabled = editable === false;\r\n\r\n const heightMap: Record<TextInputSize, number> = {\r\n sm: theme.inputHeightSm ?? 36,\r\n md: theme.inputHeightMd ?? 44,\r\n lg: theme.inputHeightLg ?? 52,\r\n };\r\n\r\n const paddingMap: Record<TextInputSize, number> = {\r\n sm: 12,\r\n md: 14,\r\n lg: 16,\r\n };\r\n\r\n const fontSizeMap: Record<TextInputSize, number> = {\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n };\r\n\r\n const radiusMap: Record<TextInputRadius, number> = {\r\n none: 0,\r\n xxs: theme.radiusXxs ?? 4,\r\n xs: theme.radiusXs ?? 8,\r\n sm: theme.radiusSm ?? 12,\r\n md: theme.radiusMd ?? 16,\r\n lg: theme.radiusLg ?? 24,\r\n xl: theme.radiusXl ?? 32,\r\n full: 9999,\r\n };\r\n\r\n const hasError = status === \"error\" || !!helperText;\r\n\r\n const borderColor = hasError\r\n ? theme.danger\r\n : focused\r\n ? theme.primary\r\n : theme.border;\r\n\r\n const containerStyle: ViewStyle = {\r\n height: heightMap[size],\r\n paddingHorizontal: paddingMap[size],\r\n borderRadius: radiusMap[radius],\r\n borderWidth: theme.borderWidthSm,\r\n borderColor,\r\n backgroundColor: isDisabled ? theme.background : theme.surface,\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n opacity: isDisabled ? 0.5 : 1,\r\n };\r\n\r\n const inputId = accessibilityLabel ?? label;\r\n\r\n return (\r\n <View style={[{ gap: 4 }, wrapperStyle]}>\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <View style={{ flexDirection: \"row\", alignItems: \"baseline\", gap: 4 }}>\r\n <Text style={{ fontSize: 14, fontWeight: \"500\", color: theme.text }}>\r\n {label}\r\n </Text>\r\n {subtitle && (\r\n <Text style={{ fontSize: 14, color: theme.textMuted }}>{subtitle}</Text>\r\n )}\r\n </View>\r\n )}\r\n\r\n {/* Input container */}\r\n <View style={[containerStyle, style]}>\r\n {leftIcon && (\r\n <View accessibilityElementsHidden>\r\n {leftIcon}\r\n </View>\r\n )}\r\n\r\n <RNTextInput\r\n ref={ref}\r\n editable={editable}\r\n accessibilityLabel={inputId}\r\n accessibilityState={{ disabled: isDisabled }}\r\n aria-invalid={status === \"error\"}\r\n onFocus={(e) => {\r\n setFocused(true);\r\n rest.onFocus?.(e);\r\n }}\r\n onBlur={(e) => {\r\n setFocused(false);\r\n rest.onBlur?.(e);\r\n }}\r\n style={{\r\n flex: 1,\r\n fontSize: fontSizeMap[size],\r\n color: theme.text,\r\n }}\r\n placeholderTextColor={theme.textMuted}\r\n {...rest}\r\n />\r\n\r\n {rightIcon && (\r\n <View accessibilityElementsHidden>\r\n {rightIcon}\r\n </View>\r\n )}\r\n </View>\r\n\r\n {/* Helper text */}\r\n {helperText && (\r\n <Text\r\n style={{\r\n fontSize: 12,\r\n color: hasError ? theme.danger : theme.textMuted,\r\n }}\r\n >\r\n {helperText}\r\n </Text>\r\n )}\r\n </View>\r\n );\r\n});\r\n","import React, { forwardRef, useCallback, useState } from \"react\";\r\nimport {\r\n Pressable,\r\n Text,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type CheckboxSize = \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type CheckboxProps = Omit<PressableProps, \"style\" | \"onPress\"> & {\r\n /** Checkbox size */\r\n size?: CheckboxSize;\r\n /** Label text displayed next to the checkbox */\r\n label?: string;\r\n /** Controlled checked state */\r\n checked?: boolean;\r\n /** Default checked state (uncontrolled) */\r\n defaultChecked?: boolean;\r\n /** Indeterminate state (partially checked) */\r\n indeterminate?: boolean;\r\n /** Callback fired when the value changes */\r\n onChange?: (checked: boolean) => void;\r\n /** Custom style for the outer wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst CheckIcon = ({ size, color }: { size: number; color: string }) => (\r\n <View\r\n style={{\r\n width: size,\r\n height: size,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {/* Simple checkmark drawn with two Views rotated — no SVG dep needed */}\r\n <View\r\n style={{\r\n position: \"absolute\",\r\n width: size * 0.55,\r\n height: size * 0.3,\r\n borderLeftWidth: 2,\r\n borderBottomWidth: 2,\r\n borderColor: color,\r\n transform: [{ rotate: \"-45deg\" }, { translateY: -size * 0.05 }],\r\n }}\r\n />\r\n </View>\r\n);\r\n\r\nconst MinusIcon = ({ size, color }: { size: number; color: string }) => (\r\n <View\r\n style={{\r\n width: size * 0.7,\r\n height: 2,\r\n backgroundColor: color,\r\n }}\r\n />\r\n);\r\n\r\nexport const Checkbox = forwardRef<View, CheckboxProps>(function Checkbox(\r\n {\r\n size = \"md\",\r\n label,\r\n checked: controlledChecked,\r\n defaultChecked = false,\r\n indeterminate = false,\r\n disabled,\r\n onChange,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const isControlled = controlledChecked !== undefined;\r\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\r\n\r\n const isChecked = isControlled ? controlledChecked : internalChecked;\r\n const isActive = isChecked || indeterminate;\r\n\r\n const handlePress = useCallback(() => {\r\n if (disabled) return;\r\n const next = !isChecked;\r\n if (!isControlled) setInternalChecked(next);\r\n onChange?.(next);\r\n }, [disabled, isChecked, isControlled, onChange]);\r\n\r\n const boxSizeMap: Record<CheckboxSize, number> = {\r\n sm: 16,\r\n md: 20,\r\n lg: 24,\r\n };\r\n\r\n const iconSizeMap: Record<CheckboxSize, number> = {\r\n sm: 10,\r\n md: 12,\r\n lg: 14,\r\n };\r\n\r\n const fontSizeMap: Record<CheckboxSize, number> = {\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n };\r\n\r\n const boxSize = boxSizeMap[size];\r\n const iconSize = iconSizeMap[size];\r\n\r\n const boxStyle: ViewStyle = {\r\n width: boxSize,\r\n height: boxSize,\r\n borderRadius: theme.radiusXxs,\r\n borderWidth: theme.borderWidthSm,\r\n borderColor: isActive ? theme.primary : theme.border,\r\n backgroundColor: isActive ? theme.primary : theme.surface,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n };\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n onPress={handlePress}\r\n disabled={disabled}\r\n accessibilityRole=\"checkbox\"\r\n accessibilityState={{ checked: indeterminate ? \"mixed\" : isChecked, disabled: !!disabled }}\r\n accessibilityLabel={accessibilityLabel ?? label}\r\n style={[\r\n { flexDirection: \"row\", alignItems: \"center\", gap: 8, opacity: disabled ? 0.5 : 1 },\r\n style,\r\n ]}\r\n {...rest}\r\n >\r\n <View style={boxStyle}>\r\n {indeterminate ? (\r\n <MinusIcon size={iconSize} color={theme.surface ?? \"#ffffff\"} />\r\n ) : isChecked ? (\r\n <CheckIcon size={iconSize} color={theme.surface ?? \"#ffffff\"} />\r\n ) : null}\r\n </View>\r\n\r\n {label && (\r\n <Text\r\n style={{\r\n fontSize: fontSizeMap[size],\r\n color: theme.text,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef, useState, useMemo } from \"react\";\r\nimport { Image, Text, View, type StyleProp, type ViewStyle, type ViewProps } from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type AvatarSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type AvatarVariant = \"circle\" | \"square\";\r\n\r\n// Paleta de cores para avatares\r\nconst AVATAR_COLORS = [\r\n { bg: \"#FBF1E6\", text: \"#D6822D\" }, // Laranja\r\n { bg: \"#EDF3FA\", text: \"#538CC6\" }, // Azul\r\n { bg: \"#F3E5F5\", text: \"#9C27B0\" }, // Roxo\r\n { bg: \"#E8F5E9\", text: \"#4CAF50\" }, // Verde\r\n { bg: \"#FFF3E0\", text: \"#FF9800\" }, // Amarelo\r\n { bg: \"#FFEBEE\", text: \"#F44336\" }, // Vermelho\r\n { bg: \"#E3F2FD\", text: \"#2196F3\" }, // Azul claro\r\n { bg: \"#F3E5F5\", text: \"#673AB7\" }, // Violeta\r\n { bg: \"#E0F2F1\", text: \"#009688\" }, // Teal\r\n { bg: \"#FBE9E7\", text: \"#FF5722\" }, // Deep Orange\r\n];\r\n\r\n/**\r\n * Gera cores de avatar baseadas em uma string (nome)\r\n * Usa hash simples para garantir consistência\r\n */\r\nfunction getAvatarColors(name: string): { bg: string; text: string } {\r\n const hash = name.split(\"\").reduce((acc, char) => acc + char.charCodeAt(0), 0);\r\n const index = hash % AVATAR_COLORS.length;\r\n return AVATAR_COLORS[index];\r\n}\r\n\r\nexport type AvatarProps = Omit<ViewProps, \"style\"> & {\r\n /** Image source URL */\r\n src?: string;\r\n /** Alt text (used as accessibility label and initials fallback) */\r\n alt?: string;\r\n /** Fallback initials shown when image is unavailable */\r\n initials?: string;\r\n /** Avatar size */\r\n size?: AvatarSize;\r\n /** Shape variant */\r\n variant?: AvatarVariant;\r\n /** Generate background and text color automatically based on name/alt */\r\n colorFromName?: boolean;\r\n /** Custom style for the outer wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const Avatar = forwardRef<View, AvatarProps>(function Avatar(\r\n { src, alt = \"\", initials, size = \"md\", variant = \"circle\", colorFromName = false, style, ...rest },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const [imgError, setImgError] = useState(false);\r\n const showImage = !!src && !imgError;\r\n\r\n // Gera cores baseadas no nome se colorFromName estiver ativo\r\n const avatarColors = useMemo(() => {\r\n if (!colorFromName) return null;\r\n const name = initials || alt || \"\";\r\n return name ? getAvatarColors(name) : null;\r\n }, [colorFromName, initials, alt]);\r\n\r\n const fallbackLabel = initials\r\n ? initials.slice(0, 2).toUpperCase()\r\n : alt\r\n ? alt\r\n .split(\" \")\r\n .slice(0, 2)\r\n .map((w) => w[0])\r\n .join(\"\")\r\n .toUpperCase()\r\n : \"?\";\r\n\r\n const sizePxMap: Record<AvatarSize, number> = {\r\n sm: 32,\r\n md: 40,\r\n lg: 48,\r\n xl: 64,\r\n };\r\n\r\n const fontSizeMap: Record<AvatarSize, number> = {\r\n sm: 12,\r\n md: 14,\r\n lg: 18,\r\n xl: 20,\r\n };\r\n\r\n const boxSize = sizePxMap[size];\r\n const borderRadius = variant === \"circle\" ? boxSize / 2 : theme.radiusSm;\r\n\r\n const containerStyle: ViewStyle = {\r\n width: boxSize,\r\n height: boxSize,\r\n borderRadius,\r\n backgroundColor: avatarColors?.bg ?? theme.primary,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n overflow: \"hidden\",\r\n };\r\n\r\n return (\r\n <View\r\n ref={ref}\r\n accessible\r\n accessibilityRole=\"image\"\r\n accessibilityLabel={alt || initials || fallbackLabel}\r\n style={[containerStyle, style]}\r\n {...rest}\r\n >\r\n {showImage ? (\r\n <Image\r\n source={{ uri: src }}\r\n style={{ width: boxSize, height: boxSize, borderRadius }}\r\n onError={() => setImgError(true)}\r\n accessibilityLabel={alt}\r\n />\r\n ) : (\r\n <Text\r\n style={{\r\n fontSize: fontSizeMap[size],\r\n fontWeight: \"500\",\r\n color: avatarColors?.text ?? theme.surface,\r\n }}\r\n accessibilityElementsHidden\r\n >\r\n {fallbackLabel}\r\n </Text>\r\n )}\r\n </View>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n ActivityIndicator as RNActivityIndicator,\r\n View,\r\n type StyleProp,\r\n type ViewStyle,\r\n type ViewProps,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type ActivityIndicatorSize = \"sm\" | \"md\" | \"lg\";\r\nexport type ActivityIndicatorColor = \"primary\" | \"surface\" | \"custom\";\r\n\r\nexport type ActivityIndicatorProps = Omit<ViewProps, \"style\"> & {\r\n /** Spinner size */\r\n size?: ActivityIndicatorSize;\r\n /** Color preset — use \"custom\" to provide a raw color via `color` prop */\r\n colorVariant?: ActivityIndicatorColor;\r\n /** Raw color value (used when colorVariant is \"custom\") */\r\n color?: string;\r\n /** Whether the indicator is visible */\r\n animating?: boolean;\r\n /** Custom style for the outer wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst sizeMap: Record<ActivityIndicatorSize, number | \"small\" | \"large\"> = {\r\n sm: \"small\",\r\n md: \"large\",\r\n lg: 48,\r\n};\r\n\r\nexport const ActivityIndicator = forwardRef<View, ActivityIndicatorProps>(\r\n function ActivityIndicator(\r\n {\r\n size = \"md\",\r\n colorVariant = \"primary\",\r\n color,\r\n animating = true,\r\n style,\r\n accessibilityLabel = \"Carregando\",\r\n ...rest\r\n },\r\n ref,\r\n ) {\r\n const theme = useRehagroTheme();\r\n\r\n const resolvedColor =\r\n colorVariant === \"custom\" && color\r\n ? color\r\n : colorVariant === \"surface\"\r\n ? theme.surface\r\n : theme.primary;\r\n\r\n const spinnerSize = sizeMap[size];\r\n\r\n return (\r\n <View\r\n ref={ref}\r\n accessible\r\n accessibilityRole=\"progressbar\"\r\n accessibilityLabel={accessibilityLabel}\r\n accessibilityState={{ busy: animating }}\r\n style={style}\r\n {...rest}\r\n >\r\n <RNActivityIndicator\r\n animating={animating}\r\n size={spinnerSize as \"small\" | \"large\"}\r\n color={resolvedColor}\r\n />\r\n </View>\r\n );\r\n },\r\n);\r\n","import { forwardRef } from \"react\";\r\nimport {\r\n Text as RNText,\r\n type TextProps as RNTextProps,\r\n type StyleProp,\r\n type TextStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type TextSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\" | \"xxl2\";\r\n\r\nexport type TextColor = \"default\" | \"muted\" | \"primary\" | \"danger\" | \"success\" | \"warning\";\r\n\r\nexport type TextProps = Omit<RNTextProps, \"style\"> & {\r\n /** Font size scale */\r\n size?: TextSize;\r\n /** Color preset */\r\n color?: TextColor;\r\n /** Bold weight */\r\n bold?: boolean;\r\n /** Custom style */\r\n style?: StyleProp<TextStyle>;\r\n};\r\n\r\n\r\nexport const Text = forwardRef<RNText, TextProps>(function Text(\r\n { size = \"sm\", color = \"default\", bold = false, style, children, ...rest },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n\r\n const colorMap: Record<TextColor, string> = {\r\n default: theme.text ?? \"#111827\",\r\n muted: theme.textMuted ?? \"#6b7280\",\r\n primary: theme.primary ?? \"#16a34a\",\r\n danger: theme.danger ?? \"#dc2626\",\r\n success: theme.success ?? \"#16a34a\",\r\n warning: theme.warning ?? \"#d97706\",\r\n };\r\n\r\n const isDisplaySize = size === \"lg\" || size === \"xl\" || size === \"xxl\" || size === \"xxl2\";\r\n const fontFamily = isDisplaySize ? theme.fontFamilyDisplay : theme.fontFamilyBody;\r\n\r\n const fontSizeMap: Record<TextSize, number> = {\r\n xs: theme.fontSizeXs ?? 12,\r\n sm: theme.fontSizeSm ?? 14,\r\n md: theme.fontSizeMd ?? 16,\r\n lg: theme.fontSizeLg ?? 18,\r\n xl: theme.fontSizeXl ?? 20,\r\n xxl: theme.fontSizeXxl ?? 24,\r\n xxl2: theme.fontSizeXxl2 ?? 32,\r\n };\r\n\r\n const lineHeightMap: Record<TextSize, number> = {\r\n xs: theme.lineHeightXs ?? 16,\r\n sm: theme.lineHeightSm ?? 20,\r\n md: theme.lineHeightMd ?? 24,\r\n lg: theme.lineHeightLg ?? 26,\r\n xl: theme.lineHeightXl ?? 28,\r\n xxl: theme.lineHeightXxl ?? 32,\r\n xxl2: theme.lineHeightXxl2 ?? 40,\r\n };\r\n\r\n const resolvedStyle: TextStyle = {\r\n fontSize: fontSizeMap[size],\r\n lineHeight: lineHeightMap[size],\r\n color: colorMap[color],\r\n ...(fontFamily ? { fontFamily } : {}),\r\n ...(bold && !fontFamily ? { fontWeight: \"700\" } : {}),\r\n };\r\n\r\n return (\r\n <RNText ref={ref} style={[resolvedStyle, style]} {...rest}>\r\n {children}\r\n </RNText>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n Pressable,\r\n Text,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type TextStyle,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { PresetColor } from \"../../types/colors.types\";\r\n\r\nexport type TagColor = PresetColor | (string & {});\r\nexport type TagSize = \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type TagProps = Omit<PressableProps, \"style\"> & {\r\n /** Tag color — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\") */\r\n color?: TagColor;\r\n /** Tag size */\r\n size?: TagSize;\r\n /** Active (selected) state */\r\n active?: boolean;\r\n /** Disabled state */\r\n disabled?: boolean;\r\n /** Tag label text */\r\n title: string;\r\n /** Optional icon rendered on the left side */\r\n leftIcon?: React.ReactNode;\r\n /** Optional icon rendered on the right side */\r\n rightIcon?: React.ReactNode;\r\n /** Custom style for the outer container */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\n/** Appends a two-digit hex alpha to a 6-digit hex color string. */\r\nfunction hexAlpha(hex: string, alpha: string): string {\r\n return `${hex}${alpha}`;\r\n}\r\n\r\nexport const Tag = forwardRef<View, TagProps>(function Tag(\r\n {\r\n color = \"primary\",\r\n size = \"md\",\r\n active = false,\r\n disabled = false,\r\n title,\r\n leftIcon,\r\n rightIcon,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const clickable = !!rest.onPress && !disabled;\r\n\r\n const presetTokens: Record<PresetColor, { main: string; hover: string }> = {\r\n primary: { main: theme.primary ?? \"#16a34a\", hover: theme.primaryHover ?? \"#15803d\" },\r\n secondary: { main: theme.secondary ?? \"#6b7280\", hover: theme.secondaryHover ?? \"#4b5563\" },\r\n danger: { main: theme.danger ?? \"#dc2626\", hover: theme.dangerHover ?? \"#b91c1c\" },\r\n warning: { main: theme.warning ?? \"#d97706\", hover: theme.warning ?? \"#d97706\" },\r\n success: { main: theme.success ?? \"#16a34a\", hover: theme.success ?? \"#16a34a\" },\r\n info: { main: theme.info ?? \"#0284c7\", hover: theme.infoHover ?? \"#0369a1\" },\r\n };\r\n\r\n const preset = isPresetColor(color);\r\n const mainColor = preset ? presetTokens[color as PresetColor].main : color;\r\n const hoverColor = preset ? presetTokens[color as PresetColor].hover : color;\r\n\r\n const sizeStyleMap: Record<TagSize, ViewStyle> = {\r\n sm: { paddingHorizontal: 8, paddingVertical: 2, gap: 4 },\r\n md: { paddingHorizontal: 10, paddingVertical: 4, gap: 6 },\r\n lg: { paddingHorizontal: 12, paddingVertical: 6, gap: 6 },\r\n };\r\n\r\n const fontSizeMap: Record<TagSize, number> = {\r\n sm: 11,\r\n md: 12,\r\n lg: 13,\r\n };\r\n\r\n const baseStyle: ViewStyle = {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n alignSelf: \"flex-start\",\r\n borderRadius: 9999,\r\n borderWidth: 1,\r\n opacity: disabled ? 0.5 : 1,\r\n ...sizeStyleMap[size],\r\n };\r\n\r\n function containerStyle(pressed: boolean): ViewStyle {\r\n const resolvedColor = pressed && clickable ? hoverColor : mainColor;\r\n\r\n if (active) {\r\n return {\r\n backgroundColor: resolvedColor,\r\n borderColor: resolvedColor,\r\n };\r\n }\r\n\r\n // inactive\r\n const bg = pressed && clickable\r\n ? hexAlpha(mainColor, \"33\") // ~20% on press\r\n : hexAlpha(mainColor, \"1a\"); // ~10% resting\r\n const border = hexAlpha(mainColor, \"4d\"); // ~30%\r\n\r\n return { backgroundColor: bg, borderColor: border };\r\n }\r\n\r\n function resolvedTextColor(pressed: boolean): string {\r\n if (active) return theme.surface ?? \"#ffffff\";\r\n return pressed && clickable ? hoverColor : mainColor;\r\n }\r\n\r\n const textStyle = (pressed: boolean): TextStyle => ({\r\n color: resolvedTextColor(pressed),\r\n fontSize: fontSizeMap[size],\r\n fontWeight: \"500\",\r\n });\r\n\r\n if (!clickable) {\r\n return (\r\n <View\r\n ref={ref}\r\n accessibilityRole=\"text\"\r\n accessibilityLabel={accessibilityLabel ?? title}\r\n accessibilityState={{ disabled }}\r\n style={[baseStyle, containerStyle(false), style]}\r\n >\r\n {leftIcon && <View accessibilityElementsHidden>{leftIcon}</View>}\r\n <Text style={textStyle(false)}>{title}</Text>\r\n {rightIcon && <View accessibilityElementsHidden>{rightIcon}</View>}\r\n </View>\r\n );\r\n }\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={disabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled, selected: active }}\r\n accessibilityLabel={accessibilityLabel ?? title}\r\n style={({ pressed }) => [baseStyle, containerStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {({ pressed }) => (\r\n <>\r\n {leftIcon && <View accessibilityElementsHidden>{leftIcon}</View>}\r\n <Text style={textStyle(pressed)}>{title}</Text>\r\n {rightIcon && <View accessibilityElementsHidden>{rightIcon}</View>}\r\n </>\r\n )}\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n Pressable,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type CardVariant = \"elevated\" | \"outlined\" | \"filled\";\r\nexport type CardRadius = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type CardPadding = \"none\" | \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type CardProps = Omit<PressableProps, \"style\"> & {\r\n /** Visual style variant */\r\n variant?: CardVariant;\r\n /** Border radius */\r\n radius?: CardRadius;\r\n /** Internal padding */\r\n padding?: CardPadding;\r\n /** Makes the card clickable with press effects */\r\n clickable?: boolean;\r\n /** Disabled state (only applies when clickable) */\r\n disabled?: boolean;\r\n /** Children content */\r\n children?: React.ReactNode;\r\n /** Custom style */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst radiusMap: Record<CardRadius, number> = {\r\n none: 0,\r\n xs: 2,\r\n sm: 4,\r\n md: 8,\r\n lg: 12,\r\n xl: 16,\r\n};\r\n\r\nconst paddingMap: Record<CardPadding, number> = {\r\n none: 0,\r\n sm: 12,\r\n md: 16,\r\n lg: 24,\r\n};\r\n\r\nconst CardRoot = forwardRef<View, CardProps>(function Card(\r\n {\r\n variant = \"outlined\",\r\n radius = \"sm\",\r\n padding = \"md\",\r\n clickable = false,\r\n disabled = false,\r\n children,\r\n style,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n\r\n const baseStyle: ViewStyle = {\r\n borderRadius: radiusMap[radius],\r\n padding: paddingMap[padding],\r\n opacity: disabled ? 0.5 : 1,\r\n };\r\n\r\n const variantStyles: Record<CardVariant, ViewStyle> = {\r\n elevated: {\r\n backgroundColor: theme.surface,\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 2 },\r\n shadowOpacity: 0.1,\r\n shadowRadius: 8,\r\n elevation: 4,\r\n },\r\n outlined: {\r\n backgroundColor: theme.surface,\r\n borderWidth: 1,\r\n borderColor: theme.border,\r\n },\r\n filled: {\r\n backgroundColor: theme.background,\r\n },\r\n };\r\n\r\n const containerStyle = (pressed: boolean): ViewStyle[] => {\r\n const styles: ViewStyle[] = [baseStyle, variantStyles[variant]];\r\n\r\n if (clickable && pressed) {\r\n styles.push({\r\n opacity: 0.8,\r\n transform: [{ scale: 0.99 }],\r\n });\r\n }\r\n\r\n return styles;\r\n };\r\n\r\n if (!clickable) {\r\n return (\r\n <View\r\n ref={ref}\r\n style={[baseStyle, variantStyles[variant], style]}\r\n accessibilityRole=\"none\"\r\n >\r\n {children}\r\n </View>\r\n );\r\n }\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={disabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled }}\r\n style={({ pressed }) => [containerStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {children}\r\n </Pressable>\r\n );\r\n});\r\n\r\nexport type CardHeaderProps = {\r\n children?: React.ReactNode;\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const CardHeader = forwardRef<View, CardHeaderProps>(function CardHeader(\r\n { children, style },\r\n ref,\r\n) {\r\n return (\r\n <View\r\n ref={ref}\r\n style={[\r\n {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: 16,\r\n },\r\n style,\r\n ]}\r\n >\r\n {children}\r\n </View>\r\n );\r\n});\r\n\r\nexport type CardContentProps = {\r\n children?: React.ReactNode;\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const CardContent = forwardRef<View, CardContentProps>(function CardContent(\r\n { children, style },\r\n ref,\r\n) {\r\n return (\r\n <View ref={ref} style={[{ marginTop: 8 }, style]}>\r\n {children}\r\n </View>\r\n );\r\n});\r\n\r\nexport type CardFooterProps = {\r\n children?: React.ReactNode;\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const CardFooter = forwardRef<View, CardFooterProps>(function CardFooter(\r\n { children, style },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n\r\n return (\r\n <View\r\n ref={ref}\r\n style={[\r\n {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n gap: 8,\r\n marginTop: 16,\r\n paddingTop: 16,\r\n borderTopWidth: 1,\r\n borderTopColor: theme.border,\r\n },\r\n style,\r\n ]}\r\n >\r\n {children}\r\n </View>\r\n );\r\n});\r\n\r\nexport const Card = Object.assign(CardRoot, {\r\n Header: CardHeader,\r\n Content: CardContent,\r\n Footer: CardFooter,\r\n});\r\n"]}
package/dist/native.mjs CHANGED
@@ -812,7 +812,7 @@ var paddingMap = {
812
812
  md: 16,
813
813
  lg: 24
814
814
  };
815
- var Card = forwardRef(function Card2({
815
+ var CardRoot = forwardRef(function Card({
816
816
  variant = "outlined",
817
817
  radius = "sm",
818
818
  padding = "md",
@@ -924,7 +924,12 @@ var CardFooter = forwardRef(function CardFooter2({ children, style }, ref) {
924
924
  }
925
925
  );
926
926
  });
927
+ var Card2 = Object.assign(CardRoot, {
928
+ Header: CardHeader,
929
+ Content: CardContent,
930
+ Footer: CardFooter
931
+ });
927
932
 
928
- export { ActivityIndicator3 as ActivityIndicator, Avatar, Button, Card, CardContent, CardFooter, CardHeader, Checkbox, IconButton, RehagroNativeProvider, Tag, Text5 as Text, TextInput, useRehagroTheme };
933
+ export { ActivityIndicator3 as ActivityIndicator, Avatar, Button, Card2 as Card, CardContent, CardFooter, CardHeader, Checkbox, IconButton, RehagroNativeProvider, Tag, Text5 as Text, TextInput, useRehagroTheme };
929
934
  //# sourceMappingURL=native.mjs.map
930
935
  //# sourceMappingURL=native.mjs.map