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

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 (207) hide show
  1. package/README.md +160 -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 +128 -0
  17. package/dist/components/avatar.js.map +1 -0
  18. package/dist/components/badge.d.ts +15 -0
  19. package/dist/components/badge.d.ts.map +1 -0
  20. package/dist/components/badge.js +81 -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 +81 -0
  25. package/dist/components/button.js.map +1 -0
  26. package/dist/components/callout.d.ts +23 -0
  27. package/dist/components/callout.d.ts.map +1 -0
  28. package/dist/components/callout.js +128 -0
  29. package/dist/components/callout.js.map +1 -0
  30. package/dist/components/card.d.ts +9 -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 +12 -0
  35. package/dist/components/checkbox.d.ts.map +1 -0
  36. package/dist/components/checkbox.js +100 -0
  37. package/dist/components/checkbox.js.map +1 -0
  38. package/dist/components/circular-progress.d.ts +21 -0
  39. package/dist/components/circular-progress.d.ts.map +1 -0
  40. package/dist/components/circular-progress.js +78 -0
  41. package/dist/components/circular-progress.js.map +1 -0
  42. package/dist/components/code.d.ts +18 -0
  43. package/dist/components/code.d.ts.map +1 -0
  44. package/dist/components/code.js +83 -0
  45. package/dist/components/code.js.map +1 -0
  46. package/dist/components/context-menu.d.ts +65 -0
  47. package/dist/components/context-menu.d.ts.map +1 -0
  48. package/dist/components/context-menu.js +441 -0
  49. package/dist/components/context-menu.js.map +1 -0
  50. package/dist/components/dialog.d.ts +49 -0
  51. package/dist/components/dialog.d.ts.map +1 -0
  52. package/dist/components/dialog.js +141 -0
  53. package/dist/components/dialog.js.map +1 -0
  54. package/dist/components/dropdown-menu.d.ts +65 -0
  55. package/dist/components/dropdown-menu.d.ts.map +1 -0
  56. package/dist/components/dropdown-menu.js +441 -0
  57. package/dist/components/dropdown-menu.js.map +1 -0
  58. package/dist/components/heading.d.ts +15 -0
  59. package/dist/components/heading.d.ts.map +1 -0
  60. package/dist/components/heading.js +8 -0
  61. package/dist/components/heading.js.map +1 -0
  62. package/dist/components/hover-card.d.ts +24 -0
  63. package/dist/components/hover-card.d.ts.map +1 -0
  64. package/dist/components/hover-card.js +49 -0
  65. package/dist/components/hover-card.js.map +1 -0
  66. package/dist/components/icon-button.d.ts +14 -0
  67. package/dist/components/icon-button.d.ts.map +1 -0
  68. package/dist/components/icon-button.js +81 -0
  69. package/dist/components/icon-button.js.map +1 -0
  70. package/dist/components/icon.d.ts +27 -0
  71. package/dist/components/icon.d.ts.map +1 -0
  72. package/dist/components/icon.js +30 -0
  73. package/dist/components/icon.js.map +1 -0
  74. package/dist/components/index.d.ts +37 -0
  75. package/dist/components/index.d.ts.map +1 -0
  76. package/dist/components/index.js +49 -0
  77. package/dist/components/index.js.map +1 -0
  78. package/dist/components/label.d.ts +8 -0
  79. package/dist/components/label.d.ts.map +1 -0
  80. package/dist/components/label.js +26 -0
  81. package/dist/components/label.js.map +1 -0
  82. package/dist/components/link.d.ts +19 -0
  83. package/dist/components/link.d.ts.map +1 -0
  84. package/dist/components/link.js +68 -0
  85. package/dist/components/link.js.map +1 -0
  86. package/dist/components/list.d.ts +37 -0
  87. package/dist/components/list.d.ts.map +1 -0
  88. package/dist/components/list.js +112 -0
  89. package/dist/components/list.js.map +1 -0
  90. package/dist/components/native-only-animated-view.d.ts +219 -0
  91. package/dist/components/native-only-animated-view.d.ts.map +1 -0
  92. package/dist/components/native-only-animated-view.js +26 -0
  93. package/dist/components/native-only-animated-view.js.map +1 -0
  94. package/dist/components/popover.d.ts +24 -0
  95. package/dist/components/popover.d.ts.map +1 -0
  96. package/dist/components/popover.js +52 -0
  97. package/dist/components/popover.js.map +1 -0
  98. package/dist/components/progress.d.ts +14 -0
  99. package/dist/components/progress.d.ts.map +1 -0
  100. package/dist/components/progress.js +52 -0
  101. package/dist/components/progress.js.map +1 -0
  102. package/dist/components/radio-group.d.ts +18 -0
  103. package/dist/components/radio-group.d.ts.map +1 -0
  104. package/dist/components/radio-group.js +122 -0
  105. package/dist/components/radio-group.js.map +1 -0
  106. package/dist/components/segmented-control.d.ts +21 -0
  107. package/dist/components/segmented-control.d.ts.map +1 -0
  108. package/dist/components/segmented-control.js +113 -0
  109. package/dist/components/segmented-control.js.map +1 -0
  110. package/dist/components/select.d.ts +58 -0
  111. package/dist/components/select.d.ts.map +1 -0
  112. package/dist/components/select.js +491 -0
  113. package/dist/components/select.js.map +1 -0
  114. package/dist/components/separator.d.ts +12 -0
  115. package/dist/components/separator.d.ts.map +1 -0
  116. package/dist/components/separator.js +47 -0
  117. package/dist/components/separator.js.map +1 -0
  118. package/dist/components/skeleton.d.ts +28 -0
  119. package/dist/components/skeleton.d.ts.map +1 -0
  120. package/dist/components/skeleton.js +137 -0
  121. package/dist/components/skeleton.js.map +1 -0
  122. package/dist/components/slider.d.ts +30 -0
  123. package/dist/components/slider.d.ts.map +1 -0
  124. package/dist/components/slider.js +248 -0
  125. package/dist/components/slider.js.map +1 -0
  126. package/dist/components/spinner.d.ts +17 -0
  127. package/dist/components/spinner.d.ts.map +1 -0
  128. package/dist/components/spinner.js +199 -0
  129. package/dist/components/spinner.js.map +1 -0
  130. package/dist/components/switch.d.ts +12 -0
  131. package/dist/components/switch.d.ts.map +1 -0
  132. package/dist/components/switch.js +188 -0
  133. package/dist/components/switch.js.map +1 -0
  134. package/dist/components/tabs.d.ts +26 -0
  135. package/dist/components/tabs.d.ts.map +1 -0
  136. package/dist/components/tabs.js +125 -0
  137. package/dist/components/tabs.js.map +1 -0
  138. package/dist/components/text-area.d.ts +16 -0
  139. package/dist/components/text-area.d.ts.map +1 -0
  140. package/dist/components/text-area.js +121 -0
  141. package/dist/components/text-area.js.map +1 -0
  142. package/dist/components/text-field.d.ts +35 -0
  143. package/dist/components/text-field.d.ts.map +1 -0
  144. package/dist/components/text-field.js +300 -0
  145. package/dist/components/text-field.js.map +1 -0
  146. package/dist/components/text.d.ts +23 -0
  147. package/dist/components/text.d.ts.map +1 -0
  148. package/dist/components/text.js +44 -0
  149. package/dist/components/text.js.map +1 -0
  150. package/dist/components/tooltip.d.ts +24 -0
  151. package/dist/components/tooltip.d.ts.map +1 -0
  152. package/dist/components/tooltip.js +63 -0
  153. package/dist/components/tooltip.js.map +1 -0
  154. package/dist/index.d.ts +9 -0
  155. package/dist/index.d.ts.map +1 -0
  156. package/dist/index.js +18 -0
  157. package/dist/index.js.map +1 -0
  158. package/dist/lib/button-styles.d.ts +13 -0
  159. package/dist/lib/button-styles.d.ts.map +1 -0
  160. package/dist/lib/button-styles.js +115 -0
  161. package/dist/lib/button-styles.js.map +1 -0
  162. package/dist/lib/color-utils.d.ts +26 -0
  163. package/dist/lib/color-utils.d.ts.map +1 -0
  164. package/dist/lib/color-utils.js +48 -0
  165. package/dist/lib/color-utils.js.map +1 -0
  166. package/dist/lib/dialog-styles.d.ts +42 -0
  167. package/dist/lib/dialog-styles.d.ts.map +1 -0
  168. package/dist/lib/dialog-styles.js +162 -0
  169. package/dist/lib/dialog-styles.js.map +1 -0
  170. package/dist/lib/full-window-overlay.d.ts +11 -0
  171. package/dist/lib/full-window-overlay.d.ts.map +1 -0
  172. package/dist/lib/full-window-overlay.js +16 -0
  173. package/dist/lib/full-window-overlay.js.map +1 -0
  174. package/dist/lib/panel-styles.d.ts +32 -0
  175. package/dist/lib/panel-styles.d.ts.map +1 -0
  176. package/dist/lib/panel-styles.js +96 -0
  177. package/dist/lib/panel-styles.js.map +1 -0
  178. package/dist/lib/text-input-styles.d.ts +36 -0
  179. package/dist/lib/text-input-styles.d.ts.map +1 -0
  180. package/dist/lib/text-input-styles.js +88 -0
  181. package/dist/lib/text-input-styles.js.map +1 -0
  182. package/dist/lib/theme-context.d.ts +80 -0
  183. package/dist/lib/theme-context.d.ts.map +1 -0
  184. package/dist/lib/theme-context.js +97 -0
  185. package/dist/lib/theme-context.js.map +1 -0
  186. package/dist/lib/theme-tokens.d.ts +222 -0
  187. package/dist/lib/theme-tokens.d.ts.map +1 -0
  188. package/dist/lib/theme-tokens.js +158 -0
  189. package/dist/lib/theme-tokens.js.map +1 -0
  190. package/dist/lib/theme.d.ts +40 -0
  191. package/dist/lib/theme.d.ts.map +1 -0
  192. package/dist/lib/theme.js +194 -0
  193. package/dist/lib/theme.js.map +1 -0
  194. package/dist/lib/types.d.ts +18 -0
  195. package/dist/lib/types.d.ts.map +1 -0
  196. package/dist/lib/types.js +2 -0
  197. package/dist/lib/types.js.map +1 -0
  198. package/dist/lib/use-theme-tokens.d.ts +593 -0
  199. package/dist/lib/use-theme-tokens.d.ts.map +1 -0
  200. package/dist/lib/use-theme-tokens.js +44 -0
  201. package/dist/lib/use-theme-tokens.js.map +1 -0
  202. package/docs/llm/COLOR_SYSTEM.md +799 -0
  203. package/docs/llm/COMPONENTS.md +1329 -0
  204. package/docs/llm/DESIGN_PATTERNS.md +2567 -0
  205. package/docs/llm/README.md +118 -0
  206. package/docs/llm/TYPOGRAPHY.md +516 -0
  207. package/package.json +106 -0
package/README.md ADDED
@@ -0,0 +1,160 @@
1
+ # @frosted-ui/react-native
2
+
3
+ A beautiful, accessible component library for React Native with a built-in design system.
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 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 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 react-native-reanimated react-native-safe-area-context react-native-screens react-native-svg lucide-react-native
27
+ ```
28
+
29
+ 3. **Setup React Native Reanimated**: Follow the [React Native Reanimated installation guide](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started/).
30
+
31
+ 4. **Setup React Native Screens**: Follow the [React Native Screens installation guide](https://github.com/software-mansion/react-native-screens#installation).
32
+
33
+ 5. **Setup React Native SVG**: Follow the [React Native SVG installation guide](https://github.com/software-mansion/react-native-svg#installation).
34
+
35
+ ### For Expo Projects
36
+
37
+ The package works with Expo projects as well. Follow the same installation steps above, and Expo will handle the native module linking automatically.
38
+
39
+ ## Usage
40
+
41
+ ```tsx
42
+ import { Button, Text, ThemeProvider } from '@frosted-ui/react-native';
43
+
44
+ export default function App() {
45
+ return (
46
+ <ThemeProvider>
47
+ <Button variant="surface" size="2">
48
+ <Text>Hello World</Text>
49
+ </Button>
50
+ </ThemeProvider>
51
+ );
52
+ }
53
+ ```
54
+
55
+ ### Theme Management
56
+
57
+ The library provides a `ThemeProvider` for managing light/dark mode:
58
+
59
+ ```tsx
60
+ import { ThemeProvider, useTheme } from '@frosted-ui/react-native';
61
+
62
+ function MyComponent() {
63
+ const { colorScheme, toggleColorScheme } = useTheme();
64
+
65
+ return (
66
+ <Button onPress={toggleColorScheme}>
67
+ <Text>Current theme: {colorScheme}</Text>
68
+ </Button>
69
+ );
70
+ }
71
+
72
+ export default function App() {
73
+ return (
74
+ <ThemeProvider>
75
+ <MyComponent />
76
+ </ThemeProvider>
77
+ );
78
+ }
79
+ ```
80
+
81
+ ### Accessing Theme Colors
82
+
83
+ Use `useThemeTokens` to access the design system colors in your components:
84
+
85
+ ```tsx
86
+ import { useThemeTokens } from '@frosted-ui/react-native';
87
+
88
+ function MyComponent() {
89
+ const { colors, isDark } = useThemeTokens();
90
+
91
+ return (
92
+ <View style={{ backgroundColor: colors.background }}>
93
+ <Text style={{ color: colors.palettes.gray['12'] }}>Hello World</Text>
94
+ </View>
95
+ );
96
+ }
97
+ ```
98
+
99
+ ## Requirements
100
+
101
+ - React >= 18.0.0
102
+ - React Native >= 0.70.0
103
+ - React Native Reanimated >= 3.0.0
104
+ - React Native Safe Area Context >= 4.0.0
105
+ - React Native Screens >= 3.0.0
106
+ - React Native SVG >= 13.0.0
107
+ - Lucide React Native >= 0.300.0
108
+
109
+ ## Components
110
+
111
+ This library includes a comprehensive set of UI components:
112
+
113
+ - Accordion
114
+ - Alert Dialog
115
+ - Avatar
116
+ - Badge
117
+ - Button
118
+ - Card
119
+ - Checkbox
120
+ - Dialog
121
+ - Dropdown Menu
122
+ - Hover Card
123
+ - Icon
124
+ - Label
125
+ - Popover
126
+ - Progress
127
+ - Radio Group
128
+ - Select
129
+ - Separator
130
+ - Skeleton
131
+ - Spinner
132
+ - Switch
133
+ - Tabs
134
+ - Text
135
+ - Text Field
136
+ - Text Area
137
+ - Tooltip
138
+
139
+ ## Styling
140
+
141
+ This library uses React Native's built-in styling system with a comprehensive design system. All components support light and dark mode out of the box, and include multiple color palettes (28+ accent colors) and variants.
142
+
143
+ ## AI/LLM Documentation
144
+
145
+ This package includes comprehensive documentation designed for AI agents and LLMs to generate code using Frosted UI. When installed, the docs are available at:
146
+
147
+ ```
148
+ node_modules/@frosted-ui/react-native/docs/llm/
149
+ ├── README.md # Overview and quick reference
150
+ ├── COLOR_SYSTEM.md # Color palettes, shades, variants, accessibility
151
+ ├── TYPOGRAPHY.md # Typography scale, font weights, components
152
+ ├── COMPONENTS.md # Full component API reference
153
+ └── DESIGN_PATTERNS.md # UX patterns, layout composition, visual design
154
+ ```
155
+
156
+ AI agents should read these files to understand how to properly use the design system when generating React Native applications.
157
+
158
+ ## License
159
+
160
+ 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 { useThemeTokens } from '../lib/use-theme-tokens';
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 } = useThemeTokens();
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 { useThemeTokens } from '../lib/use-theme-tokens';
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 } = useThemeTokens();
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;AAEzC,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;AAKjD,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,qBAqGlF;AAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC"}