@frosted-ui/react-native 0.0.1-canary.91

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.
Files changed (188) hide show
  1. package/README.md +102 -0
  2. package/dist/components/accordion.d.ts +21 -0
  3. package/dist/components/accordion.d.ts.map +1 -0
  4. package/dist/components/accordion.js +94 -0
  5. package/dist/components/accordion.js.map +1 -0
  6. package/dist/components/alert-dialog.d.ts +67 -0
  7. package/dist/components/alert-dialog.d.ts.map +1 -0
  8. package/dist/components/alert-dialog.js +170 -0
  9. package/dist/components/alert-dialog.js.map +1 -0
  10. package/dist/components/aspect-ratio.d.ts +4 -0
  11. package/dist/components/aspect-ratio.d.ts.map +1 -0
  12. package/dist/components/aspect-ratio.js +4 -0
  13. package/dist/components/aspect-ratio.js.map +1 -0
  14. package/dist/components/avatar.d.ts +23 -0
  15. package/dist/components/avatar.d.ts.map +1 -0
  16. package/dist/components/avatar.js +143 -0
  17. package/dist/components/avatar.js.map +1 -0
  18. package/dist/components/badge.d.ts +17 -0
  19. package/dist/components/badge.d.ts.map +1 -0
  20. package/dist/components/badge.js +95 -0
  21. package/dist/components/badge.js.map +1 -0
  22. package/dist/components/button.d.ts +14 -0
  23. package/dist/components/button.d.ts.map +1 -0
  24. package/dist/components/button.js +85 -0
  25. package/dist/components/button.js.map +1 -0
  26. package/dist/components/callout.d.ts +25 -0
  27. package/dist/components/callout.d.ts.map +1 -0
  28. package/dist/components/callout.js +146 -0
  29. package/dist/components/callout.js.map +1 -0
  30. package/dist/components/card.d.ts +10 -0
  31. package/dist/components/card.d.ts.map +1 -0
  32. package/dist/components/card.js +41 -0
  33. package/dist/components/card.js.map +1 -0
  34. package/dist/components/checkbox.d.ts +13 -0
  35. package/dist/components/checkbox.d.ts.map +1 -0
  36. package/dist/components/checkbox.js +116 -0
  37. package/dist/components/checkbox.js.map +1 -0
  38. package/dist/components/code.d.ts +20 -0
  39. package/dist/components/code.d.ts.map +1 -0
  40. package/dist/components/code.js +83 -0
  41. package/dist/components/code.js.map +1 -0
  42. package/dist/components/context-menu.d.ts +65 -0
  43. package/dist/components/context-menu.d.ts.map +1 -0
  44. package/dist/components/context-menu.js +441 -0
  45. package/dist/components/context-menu.js.map +1 -0
  46. package/dist/components/dialog.d.ts +49 -0
  47. package/dist/components/dialog.d.ts.map +1 -0
  48. package/dist/components/dialog.js +141 -0
  49. package/dist/components/dialog.js.map +1 -0
  50. package/dist/components/dropdown-menu.d.ts +65 -0
  51. package/dist/components/dropdown-menu.d.ts.map +1 -0
  52. package/dist/components/dropdown-menu.js +441 -0
  53. package/dist/components/dropdown-menu.js.map +1 -0
  54. package/dist/components/heading.d.ts +15 -0
  55. package/dist/components/heading.d.ts.map +1 -0
  56. package/dist/components/heading.js +8 -0
  57. package/dist/components/heading.js.map +1 -0
  58. package/dist/components/hover-card.d.ts +24 -0
  59. package/dist/components/hover-card.d.ts.map +1 -0
  60. package/dist/components/hover-card.js +49 -0
  61. package/dist/components/hover-card.js.map +1 -0
  62. package/dist/components/icon-button.d.ts +14 -0
  63. package/dist/components/icon-button.d.ts.map +1 -0
  64. package/dist/components/icon-button.js +85 -0
  65. package/dist/components/icon-button.js.map +1 -0
  66. package/dist/components/icon.d.ts +28 -0
  67. package/dist/components/icon.d.ts.map +1 -0
  68. package/dist/components/icon.js +45 -0
  69. package/dist/components/icon.js.map +1 -0
  70. package/dist/components/index.d.ts +33 -0
  71. package/dist/components/index.d.ts.map +1 -0
  72. package/dist/components/index.js +45 -0
  73. package/dist/components/index.js.map +1 -0
  74. package/dist/components/label.d.ts +8 -0
  75. package/dist/components/label.d.ts.map +1 -0
  76. package/dist/components/label.js +26 -0
  77. package/dist/components/label.js.map +1 -0
  78. package/dist/components/native-only-animated-view.d.ts +223 -0
  79. package/dist/components/native-only-animated-view.d.ts.map +1 -0
  80. package/dist/components/native-only-animated-view.js +26 -0
  81. package/dist/components/native-only-animated-view.js.map +1 -0
  82. package/dist/components/popover.d.ts +24 -0
  83. package/dist/components/popover.d.ts.map +1 -0
  84. package/dist/components/popover.js +52 -0
  85. package/dist/components/popover.js.map +1 -0
  86. package/dist/components/progress.d.ts +15 -0
  87. package/dist/components/progress.d.ts.map +1 -0
  88. package/dist/components/progress.js +68 -0
  89. package/dist/components/progress.js.map +1 -0
  90. package/dist/components/radio-group.d.ts +19 -0
  91. package/dist/components/radio-group.d.ts.map +1 -0
  92. package/dist/components/radio-group.js +138 -0
  93. package/dist/components/radio-group.js.map +1 -0
  94. package/dist/components/segmented-control.d.ts +21 -0
  95. package/dist/components/segmented-control.d.ts.map +1 -0
  96. package/dist/components/segmented-control.js +113 -0
  97. package/dist/components/segmented-control.js.map +1 -0
  98. package/dist/components/select.d.ts +58 -0
  99. package/dist/components/select.d.ts.map +1 -0
  100. package/dist/components/select.js +493 -0
  101. package/dist/components/select.js.map +1 -0
  102. package/dist/components/separator.d.ts +12 -0
  103. package/dist/components/separator.d.ts.map +1 -0
  104. package/dist/components/separator.js +64 -0
  105. package/dist/components/separator.js.map +1 -0
  106. package/dist/components/skeleton.d.ts +28 -0
  107. package/dist/components/skeleton.d.ts.map +1 -0
  108. package/dist/components/skeleton.js +153 -0
  109. package/dist/components/skeleton.js.map +1 -0
  110. package/dist/components/spinner.d.ts +17 -0
  111. package/dist/components/spinner.d.ts.map +1 -0
  112. package/dist/components/spinner.js +199 -0
  113. package/dist/components/spinner.js.map +1 -0
  114. package/dist/components/switch.d.ts +13 -0
  115. package/dist/components/switch.d.ts.map +1 -0
  116. package/dist/components/switch.js +204 -0
  117. package/dist/components/switch.js.map +1 -0
  118. package/dist/components/tabs.d.ts +25 -0
  119. package/dist/components/tabs.d.ts.map +1 -0
  120. package/dist/components/tabs.js +124 -0
  121. package/dist/components/tabs.js.map +1 -0
  122. package/dist/components/text-area.d.ts +16 -0
  123. package/dist/components/text-area.d.ts.map +1 -0
  124. package/dist/components/text-area.js +117 -0
  125. package/dist/components/text-area.js.map +1 -0
  126. package/dist/components/text-field.d.ts +35 -0
  127. package/dist/components/text-field.d.ts.map +1 -0
  128. package/dist/components/text-field.js +256 -0
  129. package/dist/components/text-field.js.map +1 -0
  130. package/dist/components/text.d.ts +23 -0
  131. package/dist/components/text.d.ts.map +1 -0
  132. package/dist/components/text.js +33 -0
  133. package/dist/components/text.js.map +1 -0
  134. package/dist/components/tooltip.d.ts +24 -0
  135. package/dist/components/tooltip.d.ts.map +1 -0
  136. package/dist/components/tooltip.js +63 -0
  137. package/dist/components/tooltip.js.map +1 -0
  138. package/dist/index.d.ts +4 -0
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +8 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/lib/button-styles.d.ts +13 -0
  143. package/dist/lib/button-styles.d.ts.map +1 -0
  144. package/dist/lib/button-styles.js +131 -0
  145. package/dist/lib/button-styles.js.map +1 -0
  146. package/dist/lib/color-utils.d.ts +21 -0
  147. package/dist/lib/color-utils.d.ts.map +1 -0
  148. package/dist/lib/color-utils.js +84 -0
  149. package/dist/lib/color-utils.js.map +1 -0
  150. package/dist/lib/dialog-styles.d.ts +42 -0
  151. package/dist/lib/dialog-styles.d.ts.map +1 -0
  152. package/dist/lib/dialog-styles.js +162 -0
  153. package/dist/lib/dialog-styles.js.map +1 -0
  154. package/dist/lib/native-colors.d.ts +8 -0
  155. package/dist/lib/native-colors.d.ts.map +1 -0
  156. package/dist/lib/native-colors.js +67 -0
  157. package/dist/lib/native-colors.js.map +1 -0
  158. package/dist/lib/panel-styles.d.ts +32 -0
  159. package/dist/lib/panel-styles.d.ts.map +1 -0
  160. package/dist/lib/panel-styles.js +96 -0
  161. package/dist/lib/panel-styles.js.map +1 -0
  162. package/dist/lib/text-input-styles.d.ts +35 -0
  163. package/dist/lib/text-input-styles.d.ts.map +1 -0
  164. package/dist/lib/text-input-styles.js +107 -0
  165. package/dist/lib/text-input-styles.js.map +1 -0
  166. package/dist/lib/theme-vars.d.ts +222 -0
  167. package/dist/lib/theme-vars.d.ts.map +1 -0
  168. package/dist/lib/theme-vars.js +173 -0
  169. package/dist/lib/theme-vars.js.map +1 -0
  170. package/dist/lib/theme.d.ts +57 -0
  171. package/dist/lib/theme.d.ts.map +1 -0
  172. package/dist/lib/theme.js +80 -0
  173. package/dist/lib/theme.js.map +1 -0
  174. package/dist/lib/types.d.ts +14 -0
  175. package/dist/lib/types.d.ts.map +1 -0
  176. package/dist/lib/types.js +2 -0
  177. package/dist/lib/types.js.map +1 -0
  178. package/dist/lib/use-theme-vars.d.ts +325 -0
  179. package/dist/lib/use-theme-vars.d.ts.map +1 -0
  180. package/dist/lib/use-theme-vars.js +17 -0
  181. package/dist/lib/use-theme-vars.js.map +1 -0
  182. package/dist/lib/utils.d.ts +3 -0
  183. package/dist/lib/utils.d.ts.map +1 -0
  184. package/dist/lib/utils.js +17 -0
  185. package/dist/lib/utils.js.map +1 -0
  186. package/global.css +1813 -0
  187. package/package.json +114 -0
  188. package/tailwind-preset.js +310 -0
package/README.md ADDED
@@ -0,0 +1,102 @@
1
+ # @frosted-ui/react-native
2
+
3
+ A beautiful, accessible component library for React Native built with NativeWind and React Native Reusables.
4
+
5
+ ## Installation
6
+
7
+ ### For Bare React Native Projects
8
+
9
+ 1. Install the package and its peer dependencies:
10
+
11
+ ```bash
12
+ npm install @frosted-ui/react-native
13
+ # or
14
+ yarn add @frosted-ui/react-native
15
+ # or
16
+ pnpm add @frosted-ui/react-native
17
+ ```
18
+
19
+ 2. Install peer dependencies:
20
+
21
+ ```bash
22
+ npm install react react-native nativewind react-native-reanimated react-native-safe-area-context react-native-screens react-native-svg lucide-react-native
23
+ # or
24
+ yarn add react react-native nativewind react-native-reanimated react-native-safe-area-context react-native-screens react-native-svg lucide-react-native
25
+ # or
26
+ pnpm add react react-native nativewind react-native-reanimated react-native-safe-area-context react-native-screens react-native-svg lucide-react-native
27
+ ```
28
+
29
+ 3. **Setup NativeWind**: Follow the [NativeWind v4 installation guide](https://www.nativewind.dev/v4/overview/installation) for your project.
30
+
31
+ 4. **Setup React Native Reanimated**: Follow the [React Native Reanimated installation guide](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started/).
32
+
33
+ 5. **Setup React Native Screens**: Follow the [React Native Screens installation guide](https://github.com/software-mansion/react-native-screens#installation).
34
+
35
+ 6. **Setup React Native SVG**: Follow the [React Native SVG installation guide](https://github.com/software-mansion/react-native-svg#installation).
36
+
37
+ ### For Expo Projects
38
+
39
+ The package works with Expo projects as well. Follow the same installation steps above, and Expo will handle the native module linking automatically.
40
+
41
+ ## Usage
42
+
43
+ ```tsx
44
+ import { Button, Text } from '@frosted-ui/react-native';
45
+
46
+ export default function App() {
47
+ return (
48
+ <Button variant="surface" size="2">
49
+ <Text>Hello World</Text>
50
+ </Button>
51
+ );
52
+ }
53
+ ```
54
+
55
+ ## Requirements
56
+
57
+ - React >= 18.0.0
58
+ - React Native >= 0.70.0
59
+ - NativeWind >= 4.0.0
60
+ - React Native Reanimated >= 3.0.0
61
+ - React Native Safe Area Context >= 4.0.0
62
+ - React Native Screens >= 3.0.0
63
+ - React Native SVG >= 13.0.0
64
+ - Lucide React Native >= 0.300.0
65
+
66
+ ## Components
67
+
68
+ This library includes a comprehensive set of UI components:
69
+
70
+ - Accordion
71
+ - Alert Dialog
72
+ - Avatar
73
+ - Badge
74
+ - Button
75
+ - Card
76
+ - Checkbox
77
+ - Dialog
78
+ - Dropdown Menu
79
+ - Hover Card
80
+ - Icon
81
+ - Label
82
+ - Popover
83
+ - Progress
84
+ - Radio Group
85
+ - Select
86
+ - Separator
87
+ - Skeleton
88
+ - Spinner
89
+ - Switch
90
+ - Tabs
91
+ - Text
92
+ - Text Field
93
+ - Text Area
94
+ - Tooltip
95
+
96
+ ## Styling
97
+
98
+ This library uses NativeWind (Tailwind CSS for React Native) for styling. Make sure your project is configured with NativeWind v4.
99
+
100
+ ## License
101
+
102
+ MIT
@@ -0,0 +1,21 @@
1
+ import * as AccordionPrimitive from '@rn-primitives/accordion';
2
+ import * as React from 'react';
3
+ type AccordionRootProps = Omit<AccordionPrimitive.RootProps, 'asChild'> & React.RefAttributes<AccordionPrimitive.RootRef>;
4
+ declare function AccordionRoot({ children, ...props }: AccordionRootProps): React.JSX.Element;
5
+ type AccordionItemProps = AccordionPrimitive.ItemProps & React.RefAttributes<AccordionPrimitive.ItemRef>;
6
+ declare function AccordionItem({ children, value, ...props }: AccordionItemProps): React.JSX.Element;
7
+ type AccordionTriggerProps = AccordionPrimitive.TriggerProps & {
8
+ children?: React.ReactNode;
9
+ } & React.RefAttributes<AccordionPrimitive.TriggerRef>;
10
+ declare function AccordionTrigger({ children, ...props }: AccordionTriggerProps): React.JSX.Element;
11
+ type AccordionContentProps = AccordionPrimitive.ContentProps & React.RefAttributes<AccordionPrimitive.ContentRef>;
12
+ declare function AccordionContent({ children, ...props }: AccordionContentProps): React.JSX.Element;
13
+ declare const Accordion: {
14
+ Root: typeof AccordionRoot;
15
+ Item: typeof AccordionItem;
16
+ Trigger: typeof AccordionTrigger;
17
+ Content: typeof AccordionContent;
18
+ };
19
+ export { Accordion, AccordionContent, AccordionItem, AccordionRoot, AccordionTrigger };
20
+ export type { AccordionContentProps, AccordionItemProps, AccordionRootProps, AccordionTriggerProps, };
21
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/components/accordion.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,kBAAkB,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAmB/B,KAAK,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,GACrE,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAElD,iBAAS,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,qBAMhE;AAED,KAAK,kBAAkB,GAAG,kBAAkB,CAAC,SAAS,GACpD,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAElD,iBAAS,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,qBAMvE;AAID,KAAK,qBAAqB,GAAG,kBAAkB,CAAC,YAAY,GAAG;IAC7D,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,GAAG,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;AAEvD,iBAAS,gBAAgB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,qBA8DtE;AAED,KAAK,qBAAqB,GAAG,kBAAkB,CAAC,YAAY,GAC1D,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;AAErD,iBAAS,gBAAgB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,qBAYtE;AAED,QAAA,MAAM,SAAS;;;;;CAKd,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;AACvF,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GACtB,CAAC"}
@@ -0,0 +1,94 @@
1
+ import { useThemeVars } from '../lib/use-theme-vars';
2
+ import * as AccordionPrimitive from '@rn-primitives/accordion';
3
+ import * as React from 'react';
4
+ import { Platform, Pressable, View } from 'react-native';
5
+ import Svg, { Path } from 'react-native-svg';
6
+ import { Text } from './text';
7
+ // Custom chevron icon that matches web version
8
+ function ChevronIcon({ size, color }) {
9
+ return (<Svg width={size} height={size} viewBox="0 0 20 20" fill="none">
10
+ <Path d="M6 12L9.64645 8.35355C9.84171 8.15829 10.1583 8.15829 10.3536 8.35355L14 12" stroke={color} strokeWidth={1.5} strokeLinecap="round"/>
11
+ </Svg>);
12
+ }
13
+ function AccordionRoot({ children, ...props }) {
14
+ return (<AccordionPrimitive.Root {...props}>
15
+ {children}
16
+ </AccordionPrimitive.Root>);
17
+ }
18
+ function AccordionItem({ children, value, ...props }) {
19
+ return (<AccordionPrimitive.Item value={value} {...props}>
20
+ {children}
21
+ </AccordionPrimitive.Item>);
22
+ }
23
+ const TriggerWrapper = Platform.OS === 'web' ? View : Pressable;
24
+ function AccordionTrigger({ children, ...props }) {
25
+ const { isExpanded } = AccordionPrimitive.useItemContext();
26
+ const { colors } = useThemeVars();
27
+ const gray = colors.palettes.gray;
28
+ // Trigger styles matching web CSS
29
+ const triggerStyle = {
30
+ flexDirection: 'row',
31
+ alignItems: 'center',
32
+ width: '100%',
33
+ gap: 8, // space-2
34
+ backgroundColor: gray.a3,
35
+ borderRadius: 8, // radius-4
36
+ paddingVertical: 8, // space-2
37
+ paddingHorizontal: 16, // space-4
38
+ // Inset border using boxShadow on web, borderWidth on native
39
+ ...(Platform.OS === 'web'
40
+ ? {
41
+ boxShadow: `0px 0px 0px 1px ${gray.a5} inset`,
42
+ }
43
+ : {
44
+ borderWidth: 1,
45
+ borderColor: gray.a5,
46
+ }),
47
+ };
48
+ // Focus style for web
49
+ const focusStyle = Platform.OS === 'web'
50
+ ? {
51
+ outlineWidth: 0,
52
+ }
53
+ : undefined;
54
+ // Chevron rotation style
55
+ const chevronStyle = {
56
+ transform: [{ rotate: isExpanded ? '0deg' : '180deg' }],
57
+ };
58
+ return (<AccordionPrimitive.Header>
59
+ <AccordionPrimitive.Trigger {...props} asChild>
60
+ <TriggerWrapper style={[triggerStyle, focusStyle]}>
61
+ <View style={chevronStyle}>
62
+ <ChevronIcon size={20} color={gray.a11}/>
63
+ </View>
64
+ <View style={{ flex: 1 }}>
65
+ <Text size="1" weight="bold" style={{
66
+ color: gray.a11,
67
+ textTransform: 'uppercase',
68
+ letterSpacing: 0.06 * 12, // 0.06em at font-size 12px
69
+ }}>
70
+ {children}
71
+ </Text>
72
+ </View>
73
+ </TriggerWrapper>
74
+ </AccordionPrimitive.Trigger>
75
+ </AccordionPrimitive.Header>);
76
+ }
77
+ function AccordionContent({ children, ...props }) {
78
+ // Content inner padding matching web CSS
79
+ const contentInnerStyle = {
80
+ paddingVertical: 16, // space-4
81
+ paddingHorizontal: 20, // space-5
82
+ };
83
+ return (<AccordionPrimitive.Content {...props}>
84
+ <View style={contentInnerStyle}>{children}</View>
85
+ </AccordionPrimitive.Content>);
86
+ }
87
+ const Accordion = {
88
+ Root: AccordionRoot,
89
+ Item: AccordionItem,
90
+ Trigger: AccordionTrigger,
91
+ Content: AccordionContent,
92
+ };
93
+ export { Accordion, AccordionContent, AccordionItem, AccordionRoot, AccordionTrigger };
94
+ //# sourceMappingURL=accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../src/components/accordion.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { Heading } from '../components/heading';
2
+ import { Text } from '../components/text';
3
+ import { type DialogSize } from '../lib/dialog-styles';
4
+ import * as AlertDialogPrimitive from '@rn-primitives/alert-dialog';
5
+ import * as React from 'react';
6
+ import { View } from 'react-native';
7
+ type AlertDialogRootProps = React.ComponentProps<typeof AlertDialogPrimitive.Root>;
8
+ type AlertDialogTriggerProps = React.ComponentProps<typeof AlertDialogPrimitive.Trigger>;
9
+ interface AlertDialogContentProps extends Omit<AlertDialogPrimitive.ContentProps, 'asChild'>, React.RefAttributes<AlertDialogPrimitive.ContentRef> {
10
+ size?: DialogSize;
11
+ portalHost?: string;
12
+ }
13
+ declare function AlertDialogContent({ size, portalHost, children, style, ...props }: AlertDialogContentProps): React.JSX.Element;
14
+ declare namespace AlertDialogContent {
15
+ var displayName: string;
16
+ }
17
+ declare function AlertDialogHeader({ style, ...props }: React.ComponentProps<typeof View>): React.JSX.Element;
18
+ declare namespace AlertDialogHeader {
19
+ var displayName: string;
20
+ }
21
+ declare function AlertDialogFooter({ style, ...props }: React.ComponentProps<typeof View>): React.JSX.Element;
22
+ declare namespace AlertDialogFooter {
23
+ var displayName: string;
24
+ }
25
+ type AlertDialogTitleProps = Omit<React.ComponentProps<typeof Heading>, 'as'>;
26
+ declare function AlertDialogTitle({ size: sizeProp, style, ...props }: AlertDialogTitleProps): React.JSX.Element;
27
+ declare namespace AlertDialogTitle {
28
+ var displayName: string;
29
+ }
30
+ type AlertDialogDescriptionProps = Omit<React.ComponentProps<typeof Text>, 'as'>;
31
+ declare function AlertDialogDescription({ size: sizeProp, style, ...props }: AlertDialogDescriptionProps): React.JSX.Element;
32
+ declare namespace AlertDialogDescription {
33
+ var displayName: string;
34
+ }
35
+ type AlertDialogActionProps = React.ComponentProps<typeof AlertDialogPrimitive.Action>;
36
+ declare function AlertDialogAction({ children, ...props }: AlertDialogActionProps): React.JSX.Element;
37
+ declare namespace AlertDialogAction {
38
+ var displayName: string;
39
+ }
40
+ type AlertDialogCancelProps = React.ComponentProps<typeof AlertDialogPrimitive.Cancel>;
41
+ declare function AlertDialogCancel({ children, ...props }: AlertDialogCancelProps): React.JSX.Element;
42
+ declare namespace AlertDialogCancel {
43
+ var displayName: string;
44
+ }
45
+ declare const AlertDialog: {
46
+ (props: AlertDialogRootProps): React.JSX.Element;
47
+ displayName: string;
48
+ } & {
49
+ Root: {
50
+ (props: AlertDialogRootProps): React.JSX.Element;
51
+ displayName: string;
52
+ };
53
+ Trigger: {
54
+ (props: AlertDialogTriggerProps): React.JSX.Element;
55
+ displayName: string;
56
+ };
57
+ Content: typeof AlertDialogContent;
58
+ Header: typeof AlertDialogHeader;
59
+ Footer: typeof AlertDialogFooter;
60
+ Title: typeof AlertDialogTitle;
61
+ Description: typeof AlertDialogDescription;
62
+ Action: typeof AlertDialogAction;
63
+ Cancel: typeof AlertDialogCancel;
64
+ };
65
+ export { AlertDialog };
66
+ export type { AlertDialogActionProps as ActionProps, AlertDialogCancelProps as CancelProps, AlertDialogContentProps as ContentProps, AlertDialogDescriptionProps as DescriptionProps, AlertDialogRootProps as RootProps, AlertDialogTitleProps as TitleProps, AlertDialogTriggerProps as TriggerProps, };
67
+ //# sourceMappingURL=alert-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../../src/components/alert-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA6C,IAAI,EAAkB,MAAM,cAAc,CAAC;AAuB/F,KAAK,oBAAoB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAKnF,KAAK,uBAAuB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAsDzF,UAAU,uBACR,SACE,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,SAAS,CAAC,EAClD,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,UAAU,CAAC;IACtD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,iBAAS,kBAAkB,CAAC,EAC1B,IAAU,EACV,UAAU,EACV,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,uBAAuB,qBA6BzB;kBAnCQ,kBAAkB;;;AAuC3B,iBAAS,iBAAiB,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,qBAEhF;kBAFQ,iBAAiB;;;AAM1B,iBAAS,iBAAiB,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,qBAchF;kBAdQ,iBAAiB;;;AAkB1B,KAAK,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AAE9E,iBAAS,gBAAgB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,qBAYnF;kBAZQ,gBAAgB;;;AAgBzB,KAAK,2BAA2B,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAEjF,iBAAS,sBAAsB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,2BAA2B,qBAY/F;kBAZQ,sBAAsB;;;AAgB/B,KAAK,sBAAsB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAEvF,iBAAS,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,sBAAsB,qBAMxE;kBANQ,iBAAiB;;;AAU1B,KAAK,sBAAsB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAEvF,iBAAS,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,sBAAsB,qBAMxE;kBANQ,iBAAiB;;;AA6C1B,QAAA,MAAM,WAAW;YAhOe,oBAAoB;;;;gBAApB,oBAAoB;;;;gBAKjB,uBAAuB;;;;;;;;;;CAqOxD,CAAC;AAEH,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EACV,sBAAsB,IAAI,WAAW,EACrC,sBAAsB,IAAI,WAAW,EACrC,uBAAuB,IAAI,YAAY,EACvC,2BAA2B,IAAI,gBAAgB,EAC/C,oBAAoB,IAAI,SAAS,EACjC,qBAAqB,IAAI,UAAU,EACnC,uBAAuB,IAAI,YAAY,GACxC,CAAC"}
@@ -0,0 +1,170 @@
1
+ import { Heading } from '../components/heading';
2
+ import { Text } from '../components/text';
3
+ import { getDialogBackdropStyle, getDialogContentStyle, getDialogDescriptionSize, getDialogOverlayStyle, getDialogSizeStyles, getDialogTitleSize, } from '../lib/dialog-styles';
4
+ import { useThemeVars } from '../lib/use-theme-vars';
5
+ import * as AlertDialogPrimitive from '@rn-primitives/alert-dialog';
6
+ import * as React from 'react';
7
+ import { Platform, StyleSheet, useWindowDimensions, View } from 'react-native';
8
+ import Animated, { FadeIn, FadeOut } from 'react-native-reanimated';
9
+ import { FullWindowOverlay as RNFullWindowOverlay } from 'react-native-screens';
10
+ const AlertDialogContentContext = React.createContext({
11
+ size: '3',
12
+ });
13
+ // ============================================================================
14
+ // Components
15
+ // ============================================================================
16
+ const FullWindowOverlay = Platform.OS === 'ios' ? RNFullWindowOverlay : React.Fragment;
17
+ const AlertDialogRoot = (props) => <AlertDialogPrimitive.Root {...props}/>;
18
+ AlertDialogRoot.displayName = 'AlertDialog.Root';
19
+ const AlertDialogTrigger = (props) => (<AlertDialogPrimitive.Trigger {...props} asChild/>);
20
+ AlertDialogTrigger.displayName = 'AlertDialog.Trigger';
21
+ // Overlay
22
+ function AlertDialogOverlay({ children, ...props }) {
23
+ const overlayStyle = getDialogOverlayStyle();
24
+ const backdropStyle = getDialogBackdropStyle();
25
+ if (Platform.OS === 'web') {
26
+ return (<FullWindowOverlay>
27
+ <AlertDialogPrimitive.Overlay style={overlayStyle} {...props}>
28
+ <View style={backdropStyle} pointerEvents="none"/>
29
+ {children}
30
+ </AlertDialogPrimitive.Overlay>
31
+ </FullWindowOverlay>);
32
+ }
33
+ // Native: AlertDialog should NOT dismiss on backdrop tap, so we use View (not Pressable)
34
+ const nativeBackdropStyle = getDialogBackdropStyle();
35
+ return (<FullWindowOverlay>
36
+ <AlertDialogPrimitive.Overlay {...props} asChild>
37
+ <View style={overlayStyle}>
38
+ {/* Animated backdrop */}
39
+ <Animated.View entering={FadeIn.duration(200)} exiting={FadeOut.duration(150)} style={nativeBackdropStyle} pointerEvents="none"/>
40
+ {/* Animated content */}
41
+ <Animated.View entering={FadeIn.duration(200)} exiting={FadeOut.duration(150)}>
42
+ {children}
43
+ </Animated.View>
44
+ </View>
45
+ </AlertDialogPrimitive.Overlay>
46
+ </FullWindowOverlay>);
47
+ }
48
+ AlertDialogOverlay.displayName = 'AlertDialog.Overlay';
49
+ function AlertDialogContent({ size = '3', portalHost, children, style, ...props }) {
50
+ const { colors, isDark } = useThemeVars();
51
+ const { width: windowWidth } = useWindowDimensions();
52
+ const contentStyle = getDialogContentStyle(size, colors, isDark, windowWidth, style);
53
+ const contextValue = React.useMemo(() => ({ size }), [size]);
54
+ // On web, flatten styles to avoid "indexed property setter" error
55
+ const finalStyle = Platform.OS === 'web'
56
+ ? StyleSheet.flatten([
57
+ contentStyle,
58
+ { animation: 'fui-dialog-content-show 400ms cubic-bezier(0.16, 1, 0.3, 1)' },
59
+ style,
60
+ ])
61
+ : [contentStyle, style];
62
+ return (<AlertDialogPrimitive.Portal hostName={portalHost}>
63
+ <AlertDialogOverlay>
64
+ <AlertDialogPrimitive.Content style={finalStyle} {...props}>
65
+ <AlertDialogContentContext.Provider value={contextValue}>
66
+ {children}
67
+ </AlertDialogContentContext.Provider>
68
+ </AlertDialogPrimitive.Content>
69
+ </AlertDialogOverlay>
70
+ </AlertDialogPrimitive.Portal>);
71
+ }
72
+ AlertDialogContent.displayName = 'AlertDialog.Content';
73
+ // Header
74
+ function AlertDialogHeader({ style, ...props }) {
75
+ return <View style={[{ flexDirection: 'column', gap: 8 }, style]} {...props}/>;
76
+ }
77
+ AlertDialogHeader.displayName = 'AlertDialog.Header';
78
+ // Footer
79
+ function AlertDialogFooter({ style, ...props }) {
80
+ return (<View style={[
81
+ {
82
+ flexDirection: Platform.OS === 'web' ? 'row' : 'column-reverse',
83
+ gap: 12,
84
+ justifyContent: 'flex-end',
85
+ },
86
+ style,
87
+ ]} {...props}/>);
88
+ }
89
+ AlertDialogFooter.displayName = 'AlertDialog.Footer';
90
+ function AlertDialogTitle({ size: sizeProp, style, ...props }) {
91
+ const { size: contextSize } = React.useContext(AlertDialogContentContext);
92
+ const size = sizeProp ?? getDialogTitleSize(contextSize);
93
+ const sizeStyles = getDialogSizeStyles(contextSize);
94
+ return (<View style={{ marginBottom: sizeStyles.titleMarginBottom }}>
95
+ <AlertDialogPrimitive.Title asChild>
96
+ <Heading size={size} style={style} {...props}/>
97
+ </AlertDialogPrimitive.Title>
98
+ </View>);
99
+ }
100
+ AlertDialogTitle.displayName = 'AlertDialog.Title';
101
+ function AlertDialogDescription({ size: sizeProp, style, ...props }) {
102
+ const { size: contextSize } = React.useContext(AlertDialogContentContext);
103
+ const size = sizeProp ?? getDialogDescriptionSize(contextSize);
104
+ const sizeStyles = getDialogSizeStyles(contextSize);
105
+ return (<View style={{ marginBottom: sizeStyles.descriptionMarginBottom }}>
106
+ <AlertDialogPrimitive.Description asChild>
107
+ <Text size={size} style={style} {...props}/>
108
+ </AlertDialogPrimitive.Description>
109
+ </View>);
110
+ }
111
+ AlertDialogDescription.displayName = 'AlertDialog.Description';
112
+ function AlertDialogAction({ children, ...props }) {
113
+ return (<AlertDialogPrimitive.Action {...props} asChild>
114
+ {children}
115
+ </AlertDialogPrimitive.Action>);
116
+ }
117
+ AlertDialogAction.displayName = 'AlertDialog.Action';
118
+ function AlertDialogCancel({ children, ...props }) {
119
+ return (<AlertDialogPrimitive.Cancel {...props} asChild>
120
+ {children}
121
+ </AlertDialogPrimitive.Cancel>);
122
+ }
123
+ AlertDialogCancel.displayName = 'AlertDialog.Cancel';
124
+ // Inject CSS keyframes for web animations (same as Dialog)
125
+ if (Platform.OS === 'web' && typeof document !== 'undefined') {
126
+ const styleId = 'frosted-ui-dialog-keyframes';
127
+ if (!document.getElementById(styleId)) {
128
+ const styleEl = document.createElement('style');
129
+ styleEl.id = styleId;
130
+ styleEl.textContent = `
131
+ @keyframes fui-dialog-content-show {
132
+ from {
133
+ opacity: 0;
134
+ transform: translateY(5px) scale(0.97);
135
+ }
136
+ to {
137
+ opacity: 1;
138
+ transform: translateY(0px) scale(1);
139
+ }
140
+ }
141
+ @keyframes fui-dialog-content-hide {
142
+ from {
143
+ opacity: 1;
144
+ transform: translateY(0px) scale(1);
145
+ }
146
+ to {
147
+ opacity: 0;
148
+ transform: translateY(5px) scale(0.99);
149
+ }
150
+ }
151
+ `;
152
+ document.head.appendChild(styleEl);
153
+ }
154
+ }
155
+ // ============================================================================
156
+ // Exports
157
+ // ============================================================================
158
+ const AlertDialog = Object.assign(AlertDialogRoot, {
159
+ Root: AlertDialogRoot,
160
+ Trigger: AlertDialogTrigger,
161
+ Content: AlertDialogContent,
162
+ Header: AlertDialogHeader,
163
+ Footer: AlertDialogFooter,
164
+ Title: AlertDialogTitle,
165
+ Description: AlertDialogDescription,
166
+ Action: AlertDialogAction,
167
+ Cancel: AlertDialogCancel,
168
+ });
169
+ export { AlertDialog };
170
+ //# sourceMappingURL=alert-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-dialog.js","sourceRoot":"","sources":["../../src/components/alert-dialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import * as AspectRatioPrimitive from '@rn-primitives/aspect-ratio';
2
+ declare const AspectRatio: typeof AspectRatioPrimitive.Root;
3
+ export { AspectRatio };
4
+ //# sourceMappingURL=aspect-ratio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aspect-ratio.d.ts","sourceRoot":"","sources":["../../src/components/aspect-ratio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AAEpE,QAAA,MAAM,WAAW,EAAE,OAAO,oBAAoB,CAAC,IAAgC,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import * as AspectRatioPrimitive from '@rn-primitives/aspect-ratio';
2
+ const AspectRatio = AspectRatioPrimitive.Root;
3
+ export { AspectRatio };
4
+ //# sourceMappingURL=aspect-ratio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aspect-ratio.js","sourceRoot":"","sources":["../../src/components/aspect-ratio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AAEpE,MAAM,WAAW,GAAqC,oBAAoB,CAAC,IAAI,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { Color } from '../lib/types';
2
+ import * as React from 'react';
3
+ declare const avatarSizes: readonly ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
4
+ declare const avatarShapes: readonly ["circle", "square"];
5
+ type AvatarSize = (typeof avatarSizes)[number];
6
+ type AvatarShape = (typeof avatarShapes)[number];
7
+ declare function getAvatarSize(size: AvatarSize): number;
8
+ type AvatarProps = {
9
+ /** Image source URL */
10
+ src?: string;
11
+ /** Fallback content - string (will generate initials) or ReactNode */
12
+ fallback: React.ReactNode;
13
+ /** Size of the avatar */
14
+ size?: AvatarSize;
15
+ /** Shape of the avatar */
16
+ shape?: AvatarShape;
17
+ /** Accent color for fallback state */
18
+ color?: Color;
19
+ };
20
+ declare function Avatar({ src, fallback, size, shape, color }: AvatarProps): React.JSX.Element;
21
+ export { Avatar, avatarShapes, avatarSizes, getAvatarSize };
22
+ export type { AvatarProps, AvatarShape, AvatarSize };
23
+ //# sourceMappingURL=avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/components/avatar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,KAAK,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,QAAA,MAAM,WAAW,6DAA8D,CAAC;AAChF,QAAA,MAAM,YAAY,+BAAgC,CAAC;AAEnD,KAAK,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/C,KAAK,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAqBjD,iBAAS,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAuB/C;AAiBD,KAAK,WAAW,GAAG;IACjB,uBAAuB;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,yBAAyB;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,sCAAsC;IACtC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,iBAAS,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAU,EAAE,KAAgB,EAAE,KAAK,EAAE,EAAE,WAAW,qBAoGlF;AAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC"}