@admin-layout/gluestack-ui-mobile 11.0.4-alpha.0 → 12.0.16-alpha.0

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 (204) hide show
  1. package/CHANGELOG.md +60 -4
  2. package/lib/__tests__/prolayout-layout-feature.test.js +1 -1
  3. package/lib/__tests__/prolayout-layout-feature.test.js.map +1 -1
  4. package/lib/components/AuthWrapper.js +5 -3
  5. package/lib/components/AuthWrapper.js.map +1 -1
  6. package/lib/components/ErrorBounday.js.map +1 -1
  7. package/lib/components/NavigationComponent.js.map +1 -1
  8. package/lib/components/UnAuthenticatedComponent.js.map +1 -1
  9. package/lib/components/WithConfiguration.js +4 -4
  10. package/lib/components/WithConfiguration.js.map +1 -1
  11. package/lib/components/WithPermission.js +1 -1
  12. package/lib/components/WithPermission.js.map +1 -1
  13. package/lib/components/WithPolicy.js +2 -2
  14. package/lib/components/WithPolicy.js.map +1 -1
  15. package/lib/components/ui/accordion/index.web.d.ts +209 -0
  16. package/lib/components/ui/accordion/index.web.js +156 -0
  17. package/lib/components/ui/accordion/index.web.js.map +1 -0
  18. package/lib/components/ui/actionsheet/index.web.d.ts +872 -0
  19. package/lib/components/ui/actionsheet/index.web.js +286 -0
  20. package/lib/components/ui/actionsheet/index.web.js.map +1 -0
  21. package/lib/components/ui/alert/index.web.d.ts +135 -0
  22. package/lib/components/ui/alert/index.web.js +38 -0
  23. package/lib/components/ui/alert/index.web.js.map +1 -0
  24. package/lib/components/ui/alert-dialog/index.web.d.ts +64 -0
  25. package/lib/components/ui/alert-dialog/index.web.js +139 -0
  26. package/lib/components/ui/alert-dialog/index.web.js.map +1 -0
  27. package/lib/components/ui/avatar/index.web.d.ts +21 -0
  28. package/lib/components/ui/avatar/index.web.js +92 -0
  29. package/lib/components/ui/avatar/index.web.js.map +1 -0
  30. package/lib/components/ui/badge/index.web.d.ts +382 -0
  31. package/lib/components/ui/badge/index.web.js +138 -0
  32. package/lib/components/ui/badge/index.web.js.map +1 -0
  33. package/lib/components/ui/button/index.web.d.ts +247 -0
  34. package/lib/components/ui/button/index.web.js +57 -0
  35. package/lib/components/ui/button/index.web.js.map +1 -0
  36. package/lib/components/ui/checkbox/index.web.d.ts +265 -0
  37. package/lib/components/ui/checkbox/index.web.js +77 -0
  38. package/lib/components/ui/checkbox/index.web.js.map +1 -0
  39. package/lib/components/ui/divider/index.web.d.ts +53 -0
  40. package/lib/components/ui/divider/index.web.js +21 -0
  41. package/lib/components/ui/divider/index.web.js.map +1 -0
  42. package/lib/components/ui/drawer/index.web.d.ts +174 -0
  43. package/lib/components/ui/drawer/index.web.js +65 -0
  44. package/lib/components/ui/drawer/index.web.js.map +1 -0
  45. package/lib/components/ui/fab/index.web.d.ts +520 -0
  46. package/lib/components/ui/fab/index.web.js +146 -0
  47. package/lib/components/ui/fab/index.web.js.map +1 -0
  48. package/lib/components/ui/flat-list/index.web.d.ts +21 -0
  49. package/lib/components/ui/flat-list/index.web.js +41 -0
  50. package/lib/components/ui/flat-list/index.web.js.map +1 -0
  51. package/lib/components/ui/form-control/index.web.d.ts +2071 -0
  52. package/lib/components/ui/form-control/index.web.js +290 -0
  53. package/lib/components/ui/form-control/index.web.js.map +1 -0
  54. package/lib/components/ui/image/index.web.d.ts +142 -0
  55. package/lib/components/ui/image/index.web.js +29 -0
  56. package/lib/components/ui/image/index.web.js.map +1 -0
  57. package/lib/components/ui/image-background/index.web.d.ts +8 -0
  58. package/lib/components/ui/image-background/index.web.js +23 -0
  59. package/lib/components/ui/image-background/index.web.js.map +1 -0
  60. package/lib/components/ui/input/index.web.d.ts +163 -0
  61. package/lib/components/ui/input/index.web.js +50 -0
  62. package/lib/components/ui/input/index.web.js.map +1 -0
  63. package/lib/components/ui/input-accessory-view/index.web.d.ts +9 -0
  64. package/lib/components/ui/input-accessory-view/index.web.js +16 -0
  65. package/lib/components/ui/input-accessory-view/index.web.js.map +1 -0
  66. package/lib/components/ui/keyboard-avoiding-view/index.web.d.ts +9 -0
  67. package/lib/components/ui/keyboard-avoiding-view/index.web.js +8 -0
  68. package/lib/components/ui/keyboard-avoiding-view/index.web.js.map +1 -0
  69. package/lib/components/ui/link/index.web.d.ts +365 -0
  70. package/lib/components/ui/link/index.web.js +70 -0
  71. package/lib/components/ui/link/index.web.js.map +1 -0
  72. package/lib/components/ui/menu/index.web.d.ts +142 -0
  73. package/lib/components/ui/menu/index.web.js +83 -0
  74. package/lib/components/ui/menu/index.web.js.map +1 -0
  75. package/lib/components/ui/modal/index.web.d.ts +111 -0
  76. package/lib/components/ui/modal/index.web.js +58 -0
  77. package/lib/components/ui/modal/index.web.js.map +1 -0
  78. package/lib/components/ui/popover/index.web.d.ts +309 -0
  79. package/lib/components/ui/popover/index.web.js +184 -0
  80. package/lib/components/ui/popover/index.web.js.map +1 -0
  81. package/lib/components/ui/portal/index.web.d.ts +9 -0
  82. package/lib/components/ui/portal/index.web.js +16 -0
  83. package/lib/components/ui/portal/index.web.js.map +1 -0
  84. package/lib/components/ui/pressable/index.web.d.ts +8 -0
  85. package/lib/components/ui/pressable/index.web.js +44 -0
  86. package/lib/components/ui/pressable/index.web.js.map +1 -0
  87. package/lib/components/ui/progress/index.web.d.ts +237 -0
  88. package/lib/components/ui/progress/index.web.js +73 -0
  89. package/lib/components/ui/progress/index.web.js.map +1 -0
  90. package/lib/components/ui/radio/index.web.d.ts +224 -0
  91. package/lib/components/ui/radio/index.web.js +69 -0
  92. package/lib/components/ui/radio/index.web.js.map +1 -0
  93. package/lib/components/ui/refresh-control/index.web.d.ts +14 -0
  94. package/lib/components/ui/refresh-control/index.web.js +69 -0
  95. package/lib/components/ui/refresh-control/index.web.js.map +1 -0
  96. package/lib/components/ui/safe-area-view/index.web.d.ts +6 -0
  97. package/lib/components/ui/safe-area-view/index.web.js +10 -0
  98. package/lib/components/ui/safe-area-view/index.web.js.map +1 -0
  99. package/lib/components/ui/scroll-view/index.web.d.ts +44 -0
  100. package/lib/components/ui/scroll-view/index.web.js +41 -0
  101. package/lib/components/ui/scroll-view/index.web.js.map +1 -0
  102. package/lib/components/ui/section-list/index.web.d.ts +26 -0
  103. package/lib/components/ui/section-list/index.web.js +35 -0
  104. package/lib/components/ui/section-list/index.web.js.map +1 -0
  105. package/lib/components/ui/select/index.web.d.ts +162 -0
  106. package/lib/components/ui/select/index.web.js +51 -0
  107. package/lib/components/ui/select/index.web.js.map +1 -0
  108. package/lib/components/ui/slider/index.web.d.ts +223 -0
  109. package/lib/components/ui/slider/index.web.js +189 -0
  110. package/lib/components/ui/slider/index.web.js.map +1 -0
  111. package/lib/components/ui/spinner/index.web.d.ts +176 -0
  112. package/lib/components/ui/spinner/index.web.js +55 -0
  113. package/lib/components/ui/spinner/index.web.js.map +1 -0
  114. package/lib/components/ui/status-bar/index.web.d.ts +14 -0
  115. package/lib/components/ui/status-bar/index.web.js +7 -0
  116. package/lib/components/ui/status-bar/index.web.js.map +1 -0
  117. package/lib/components/ui/switch/index.web.d.ts +71 -0
  118. package/lib/components/ui/switch/index.web.js +27 -0
  119. package/lib/components/ui/switch/index.web.js.map +1 -0
  120. package/lib/components/ui/tabs/index.web.d.ts +351 -0
  121. package/lib/components/ui/tabs/index.web.js +120 -0
  122. package/lib/components/ui/tabs/index.web.js.map +1 -0
  123. package/lib/components/ui/textarea/index.web.d.ts +162 -0
  124. package/lib/components/ui/textarea/index.web.js +50 -0
  125. package/lib/components/ui/textarea/index.web.js.map +1 -0
  126. package/lib/components/ui/toast/index.web.d.ts +225 -0
  127. package/lib/components/ui/toast/index.web.js +80 -0
  128. package/lib/components/ui/toast/index.web.js.map +1 -0
  129. package/lib/components/ui/tooltip/index.web.d.ts +86 -0
  130. package/lib/components/ui/tooltip/index.web.js +110 -0
  131. package/lib/components/ui/tooltip/index.web.js.map +1 -0
  132. package/lib/components/ui/view/index.web.d.ts +2 -0
  133. package/lib/components/ui/view/index.web.js +7 -0
  134. package/lib/components/ui/view/index.web.js.map +1 -0
  135. package/lib/components/ui/virtualized-list/index.web.d.ts +19 -0
  136. package/lib/components/ui/virtualized-list/index.web.js +30 -0
  137. package/lib/components/ui/virtualized-list/index.web.js.map +1 -0
  138. package/lib/components/usePermissionAutoFetch.d.ts +7 -19
  139. package/lib/components/with-interactions-lifecycle-managed.js.map +1 -1
  140. package/lib/components/with-interactions-managed.js +2 -3
  141. package/lib/components/with-interactions-managed.js.map +1 -1
  142. package/lib/containers/layout/DrawerBottomNavigationConfig.d.ts +47 -47
  143. package/lib/containers/layout/DrawerConfig.d.ts +31 -31
  144. package/lib/containers/layout/module.js +1 -1
  145. package/lib/containers/layout/module.js.map +1 -1
  146. package/lib/interfaces/settings.d.ts +1 -0
  147. package/lib/redux/settings.d.ts +4 -9
  148. package/lib/utils/routeConfigKeyReplace.test.js +1 -1
  149. package/lib/utils/routeConfigKeyReplace.test.js.map +1 -1
  150. package/package.json +7 -4
  151. package/src/__tests__/prolayout-layout-feature.test.tsx +2 -2
  152. package/src/components/AuthWrapper.tsx +6 -3
  153. package/src/components/ErrorBounday.tsx +18 -19
  154. package/src/components/NavigationComponent.tsx +1 -1
  155. package/src/components/UnAuthenticatedComponent.tsx +1 -3
  156. package/src/components/WithConfiguration.tsx +5 -8
  157. package/src/components/WithPermission.tsx +1 -1
  158. package/src/components/WithPolicy.tsx +4 -3
  159. package/src/components/ui/accordion/index.web.tsx +294 -0
  160. package/src/components/ui/actionsheet/index.web.tsx +555 -0
  161. package/src/components/ui/alert/index.web.tsx +71 -0
  162. package/src/components/ui/alert-dialog/index.web.tsx +241 -0
  163. package/src/components/ui/avatar/index.web.tsx +150 -0
  164. package/src/components/ui/badge/index.web.tsx +188 -0
  165. package/src/components/ui/button/index.web.tsx +86 -0
  166. package/src/components/ui/checkbox/index.web.tsx +151 -0
  167. package/src/components/ui/divider/index.web.tsx +37 -0
  168. package/src/components/ui/drawer/index.web.tsx +144 -0
  169. package/src/components/ui/fab/index.web.tsx +201 -0
  170. package/src/components/ui/flat-list/index.web.tsx +89 -0
  171. package/src/components/ui/form-control/index.web.tsx +451 -0
  172. package/src/components/ui/image/index.web.tsx +43 -0
  173. package/src/components/ui/image-background/index.web.tsx +43 -0
  174. package/src/components/ui/input/index.web.tsx +80 -0
  175. package/src/components/ui/input-accessory-view/index.web.tsx +31 -0
  176. package/src/components/ui/keyboard-avoiding-view/index.web.tsx +23 -0
  177. package/src/components/ui/link/index.web.tsx +103 -0
  178. package/src/components/ui/menu/index.web.tsx +159 -0
  179. package/src/components/ui/modal/index.web.tsx +135 -0
  180. package/src/components/ui/popover/index.web.tsx +326 -0
  181. package/src/components/ui/portal/index.web.tsx +34 -0
  182. package/src/components/ui/pressable/index.web.tsx +73 -0
  183. package/src/components/ui/progress/index.web.tsx +123 -0
  184. package/src/components/ui/radio/index.web.tsx +130 -0
  185. package/src/components/ui/refresh-control/index.web.tsx +104 -0
  186. package/src/components/ui/safe-area-view/index.web.tsx +24 -0
  187. package/src/components/ui/scroll-view/index.web.tsx +142 -0
  188. package/src/components/ui/section-list/index.web.tsx +93 -0
  189. package/src/components/ui/select/index.web.tsx +83 -0
  190. package/src/components/ui/slider/index.web.tsx +283 -0
  191. package/src/components/ui/spinner/index.web.tsx +81 -0
  192. package/src/components/ui/status-bar/index.web.tsx +20 -0
  193. package/src/components/ui/switch/index.web.tsx +44 -0
  194. package/src/components/ui/tabs/index.web.tsx +205 -0
  195. package/src/components/ui/textarea/index.web.tsx +86 -0
  196. package/src/components/ui/toast/index.web.tsx +132 -0
  197. package/src/components/ui/tooltip/index.web.tsx +155 -0
  198. package/src/components/ui/view/index.web.tsx +15 -0
  199. package/src/components/ui/virtualized-list/index.web.tsx +84 -0
  200. package/src/components/with-interactions-lifecycle-managed.tsx +0 -4
  201. package/src/components/with-interactions-managed.tsx +3 -4
  202. package/src/containers/layout/module.ts +1 -1
  203. package/src/interfaces/settings.ts +1 -0
  204. package/src/utils/routeConfigKeyReplace.test.ts +4 -4
@@ -0,0 +1,555 @@
1
+ 'use client';
2
+ import React from 'react';
3
+ import { createActionsheet } from '@gluestack-ui/actionsheet';
4
+ import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon';
5
+ import { tva } from '@gluestack-ui/nativewind-utils/tva';
6
+ import type { VariantProps } from '@gluestack-ui/nativewind-utils';
7
+ import { cssInterop } from 'nativewind';
8
+ import { Motion, AnimatePresence, createMotionAnimatedComponent } from '@legendapp/motion';
9
+
10
+ // Web-specific components
11
+ const ItemWrapper = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({ ...props }, ref) => {
12
+ return <div {...props} ref={ref} />;
13
+ });
14
+
15
+ const AnimatedDiv = createMotionAnimatedComponent(({ children, ...props }) => <div {...props}>{children}</div>);
16
+
17
+ // Define proper types for the web components
18
+ type WebComponentProps = {
19
+ children?: React.ReactNode;
20
+ className?: string;
21
+ style?: React.CSSProperties;
22
+ } & React.HTMLAttributes<HTMLElement>;
23
+
24
+ const WebRoot = React.forwardRef<HTMLDivElement, WebComponentProps>(({ children, ...props }, ref) => (
25
+ <div ref={ref} {...props}>
26
+ {children}
27
+ </div>
28
+ ));
29
+
30
+ const WebContent = Motion.View;
31
+
32
+ const WebItemText = React.forwardRef<HTMLSpanElement, WebComponentProps>(({ children, ...props }, ref) => (
33
+ <span ref={ref} {...props}>
34
+ {children}
35
+ </span>
36
+ ));
37
+
38
+ const WebDragIndicator = React.forwardRef<HTMLDivElement, WebComponentProps>(({ children, ...props }, ref) => (
39
+ <div ref={ref} {...props}>
40
+ {children}
41
+ </div>
42
+ ));
43
+
44
+ const WebIndicatorWrapper = React.forwardRef<HTMLDivElement, WebComponentProps>(({ children, ...props }, ref) => (
45
+ <div ref={ref} {...props}>
46
+ {children}
47
+ </div>
48
+ ));
49
+
50
+ const WebScrollView = React.forwardRef<HTMLDivElement, WebComponentProps>(({ children, ...props }, ref) => (
51
+ <div ref={ref} {...props}>
52
+ {children}
53
+ </div>
54
+ ));
55
+
56
+ const WebVirtualizedList = React.forwardRef<HTMLDivElement, WebComponentProps>(({ children, ...props }, ref) => (
57
+ <div ref={ref} {...props}>
58
+ {children}
59
+ </div>
60
+ ));
61
+
62
+ const WebFlatList = React.forwardRef<HTMLDivElement, WebComponentProps>(({ children, ...props }, ref) => (
63
+ <div ref={ref} {...props}>
64
+ {children}
65
+ </div>
66
+ ));
67
+
68
+ const WebSectionList = React.forwardRef<HTMLDivElement, WebComponentProps>(({ children, ...props }, ref) => (
69
+ <div ref={ref} {...props}>
70
+ {children}
71
+ </div>
72
+ ));
73
+
74
+ const WebSectionHeaderText = React.forwardRef<HTMLHeadingElement, WebComponentProps>(({ children, ...props }, ref) => (
75
+ <h4 ref={ref} {...props}>
76
+ {children}
77
+ </h4>
78
+ ));
79
+
80
+ export const UIActionsheet = createActionsheet({
81
+ Root: WebRoot,
82
+ Content: WebContent,
83
+ Item: ItemWrapper,
84
+ ItemText: WebItemText,
85
+ DragIndicator: WebDragIndicator,
86
+ IndicatorWrapper: WebIndicatorWrapper,
87
+ Backdrop: AnimatedDiv,
88
+ ScrollView: WebScrollView,
89
+ VirtualizedList: WebVirtualizedList,
90
+ FlatList: WebFlatList,
91
+ SectionList: WebSectionList,
92
+ SectionHeaderText: WebSectionHeaderText,
93
+ Icon: UIIcon,
94
+ AnimatePresence: AnimatePresence,
95
+ });
96
+
97
+ cssInterop(UIActionsheet, { target: 'style', className: true });
98
+ cssInterop(UIActionsheet.Content, { target: 'style', className: true });
99
+ cssInterop(ItemWrapper, { target: 'style', className: true });
100
+ cssInterop(UIActionsheet.ItemText, { target: 'style', className: true });
101
+ cssInterop(UIActionsheet.DragIndicator, { target: 'style', className: true });
102
+ cssInterop(UIActionsheet.DragIndicatorWrapper, { target: 'style', className: true });
103
+ cssInterop(UIActionsheet.Backdrop, { target: 'style', className: true });
104
+ cssInterop(UIActionsheet.ScrollView, {
105
+ target: 'style',
106
+ className: true,
107
+ contentContainerStyle: true,
108
+ indicatorStyle: true,
109
+ });
110
+ cssInterop(UIActionsheet.VirtualizedList, {
111
+ target: 'style',
112
+ className: true,
113
+ ListFooterComponentStyle: true,
114
+ ListHeaderComponentStyle: true,
115
+ contentContainerStyle: true,
116
+ indicatorStyle: true,
117
+ });
118
+ cssInterop(UIActionsheet.FlatList, {
119
+ target: 'style',
120
+ className: true,
121
+ ListFooterComponentStyle: true,
122
+ ListHeaderComponentStyle: true,
123
+ columnWrapperStyle: true,
124
+ contentContainerStyle: true,
125
+ indicatorStyle: true,
126
+ });
127
+ cssInterop(UIActionsheet.SectionList, { target: 'style', className: true });
128
+ cssInterop(UIActionsheet.SectionHeaderText, { target: 'style', className: true });
129
+
130
+ cssInterop(PrimitiveIcon, {
131
+ className: {
132
+ target: 'style',
133
+ nativeStyleToProp: {
134
+ height: true,
135
+ width: true,
136
+ fill: true,
137
+ color: 'classNameColor',
138
+ stroke: true,
139
+ },
140
+ },
141
+ });
142
+
143
+ const actionsheetStyle = tva({ base: 'w-full h-full pointer-events-none' });
144
+
145
+ const actionsheetContentStyle = tva({
146
+ base: 'items-center rounded-tl-3xl rounded-tr-3xl p-5 pt-2 bg-background-0 pointer-events-auto select-none shadow-hard-5 border border-b-0 border-outline-100',
147
+ });
148
+
149
+ const actionsheetItemStyle = tva({
150
+ base: 'w-full flex-row items-center p-3 rounded-sm cursor-pointer data-[disabled=true]:opacity-40 data-[disabled=true]:pointer-events-auto data-[disabled=true]:cursor-not-allowed hover:bg-background-50 active:bg-background-100 data-[focus=true]:bg-background-100 data-[focus-visible=true]:bg-background-100 data-[focus-visible=true]:outline-indicator-primary gap-2',
151
+ });
152
+
153
+ const actionsheetItemTextStyle = tva({
154
+ base: 'text-typography-700 font-normal font-body',
155
+ variants: {
156
+ isTruncated: {
157
+ true: 'truncate',
158
+ },
159
+ bold: {
160
+ true: 'font-bold',
161
+ },
162
+ underline: {
163
+ true: 'underline',
164
+ },
165
+ strikeThrough: {
166
+ true: 'line-through',
167
+ },
168
+ size: {
169
+ '2xs': 'text-2xs',
170
+ xs: 'text-xs',
171
+ sm: 'text-sm',
172
+ md: 'text-base',
173
+ lg: 'text-lg',
174
+ xl: 'text-xl',
175
+ '2xl': 'text-2xl',
176
+ '3xl': 'text-3xl',
177
+ '4xl': 'text-4xl',
178
+ '5xl': 'text-5xl',
179
+ '6xl': 'text-6xl',
180
+ },
181
+ },
182
+ });
183
+
184
+ const actionsheetDragIndicatorStyle = tva({
185
+ base: 'w-16 h-1 bg-background-400 rounded-full',
186
+ });
187
+
188
+ const actionsheetDragIndicatorWrapperStyle = tva({
189
+ base: 'w-full py-1 items-center',
190
+ });
191
+
192
+ const actionsheetBackdropStyle = tva({
193
+ base: 'absolute left-0 top-0 right-0 bottom-0 bg-background-dark cursor-default pointer-events-auto',
194
+ });
195
+
196
+ const actionsheetScrollViewStyle = tva({
197
+ base: 'w-full h-auto overflow-auto',
198
+ });
199
+
200
+ const actionsheetVirtualizedListStyle = tva({
201
+ base: 'w-full h-auto overflow-auto',
202
+ });
203
+
204
+ const actionsheetFlatListStyle = tva({
205
+ base: 'w-full h-auto overflow-auto',
206
+ });
207
+
208
+ const actionsheetSectionListStyle = tva({
209
+ base: 'w-full h-auto overflow-auto',
210
+ });
211
+
212
+ const actionsheetSectionHeaderTextStyle = tva({
213
+ base: 'leading-5 font-bold font-heading my-0 text-typography-500 p-3 uppercase',
214
+ variants: {
215
+ isTruncated: {
216
+ true: 'truncate',
217
+ },
218
+ bold: {
219
+ true: 'font-bold',
220
+ },
221
+ underline: {
222
+ true: 'underline',
223
+ },
224
+ strikeThrough: {
225
+ true: 'line-through',
226
+ },
227
+ size: {
228
+ '5xl': 'text-5xl',
229
+ '4xl': 'text-4xl',
230
+ '3xl': 'text-3xl',
231
+ '2xl': 'text-2xl',
232
+ xl: 'text-xl',
233
+ lg: 'text-lg',
234
+ md: 'text-base',
235
+ sm: 'text-sm',
236
+ xs: 'text-xs',
237
+ },
238
+ sub: {
239
+ true: 'text-xs',
240
+ },
241
+ italic: {
242
+ true: 'italic',
243
+ },
244
+ highlight: {
245
+ true: 'bg-yellow500',
246
+ },
247
+ },
248
+ defaultVariants: {
249
+ size: 'xs',
250
+ },
251
+ });
252
+
253
+ const actionsheetIconStyle = tva({
254
+ base: 'text-background-500 fill-none',
255
+ variants: {
256
+ size: {
257
+ '2xs': 'h-3 w-3',
258
+ xs: 'h-3.5 w-3.5',
259
+ sm: 'h-4 w-4',
260
+ md: 'w-[18px] h-[18px]',
261
+ lg: 'h-5 w-5',
262
+ xl: 'h-6 w-6',
263
+ },
264
+ },
265
+ });
266
+
267
+ // Web-specific types
268
+ type IActionsheetProps = VariantProps<typeof actionsheetStyle> & React.ComponentPropsWithoutRef<typeof UIActionsheet>;
269
+
270
+ type IActionsheetContentProps = VariantProps<typeof actionsheetContentStyle> &
271
+ React.ComponentPropsWithoutRef<typeof UIActionsheet.Content> & {
272
+ className?: string;
273
+ };
274
+
275
+ type IActionsheetItemProps = VariantProps<typeof actionsheetItemStyle> &
276
+ React.ComponentPropsWithoutRef<typeof UIActionsheet.Item>;
277
+
278
+ type IActionsheetItemTextProps = VariantProps<typeof actionsheetItemTextStyle> &
279
+ React.ComponentPropsWithoutRef<typeof UIActionsheet.ItemText>;
280
+
281
+ type IActionsheetDragIndicatorProps = VariantProps<typeof actionsheetDragIndicatorStyle> &
282
+ React.ComponentPropsWithoutRef<typeof UIActionsheet.DragIndicator>;
283
+
284
+ type IActionsheetDragIndicatorWrapperProps = VariantProps<typeof actionsheetDragIndicatorWrapperStyle> &
285
+ React.ComponentPropsWithoutRef<typeof UIActionsheet.DragIndicatorWrapper>;
286
+
287
+ type IActionsheetBackdropProps = VariantProps<typeof actionsheetBackdropStyle> &
288
+ React.ComponentPropsWithoutRef<typeof UIActionsheet.Backdrop> & {
289
+ className?: string;
290
+ };
291
+
292
+ type IActionsheetScrollViewProps = VariantProps<typeof actionsheetScrollViewStyle> &
293
+ React.ComponentPropsWithoutRef<typeof UIActionsheet.ScrollView>;
294
+
295
+ type IActionsheetVirtualizedListProps = VariantProps<typeof actionsheetVirtualizedListStyle> &
296
+ React.ComponentPropsWithoutRef<typeof UIActionsheet.VirtualizedList>;
297
+
298
+ type IActionsheetFlatListProps = VariantProps<typeof actionsheetFlatListStyle> &
299
+ React.ComponentPropsWithoutRef<typeof UIActionsheet.FlatList>;
300
+
301
+ type IActionsheetSectionListProps = VariantProps<typeof actionsheetSectionListStyle> &
302
+ React.ComponentPropsWithoutRef<typeof UIActionsheet.SectionList>;
303
+
304
+ type IActionsheetSectionHeaderTextProps = VariantProps<typeof actionsheetSectionHeaderTextStyle> &
305
+ React.ComponentPropsWithoutRef<typeof UIActionsheet.SectionHeaderText>;
306
+
307
+ type IActionsheetIconProps = VariantProps<typeof actionsheetIconStyle> &
308
+ React.ComponentPropsWithoutRef<typeof UIActionsheet.Icon> & {
309
+ className?: string;
310
+ as?: React.ElementType;
311
+ height?: number;
312
+ width?: number;
313
+ };
314
+
315
+ const Actionsheet = React.forwardRef<React.ElementRef<typeof UIActionsheet>, IActionsheetProps>(
316
+ ({ className, ...props }, ref) => {
317
+ return (
318
+ <UIActionsheet
319
+ className={actionsheetStyle({
320
+ class: className,
321
+ })}
322
+ ref={ref}
323
+ {...props}
324
+ />
325
+ );
326
+ },
327
+ );
328
+
329
+ const ActionsheetContent = React.forwardRef<React.ElementRef<typeof UIActionsheet.Content>, IActionsheetContentProps>(
330
+ ({ className, ...props }, ref) => {
331
+ return (
332
+ <UIActionsheet.Content
333
+ className={actionsheetContentStyle({
334
+ class: className,
335
+ })}
336
+ ref={ref}
337
+ {...props}
338
+ />
339
+ );
340
+ },
341
+ );
342
+
343
+ const ActionsheetItem = React.forwardRef<React.ElementRef<typeof UIActionsheet.Item>, IActionsheetItemProps>(
344
+ ({ className, ...props }, ref) => {
345
+ return (
346
+ <UIActionsheet.Item
347
+ className={actionsheetItemStyle({
348
+ class: className,
349
+ })}
350
+ ref={ref}
351
+ {...props}
352
+ />
353
+ );
354
+ },
355
+ );
356
+
357
+ const ActionsheetItemText = React.forwardRef<
358
+ React.ElementRef<typeof UIActionsheet.ItemText>,
359
+ IActionsheetItemTextProps
360
+ >(({ isTruncated, bold, underline, strikeThrough, size = 'sm', className, ...props }, ref) => {
361
+ return (
362
+ <UIActionsheet.ItemText
363
+ className={actionsheetItemTextStyle({
364
+ class: className,
365
+ isTruncated,
366
+ bold,
367
+ underline,
368
+ strikeThrough,
369
+ size,
370
+ })}
371
+ ref={ref}
372
+ {...props}
373
+ />
374
+ );
375
+ });
376
+
377
+ const ActionsheetDragIndicator = React.forwardRef<
378
+ React.ElementRef<typeof UIActionsheet.DragIndicator>,
379
+ IActionsheetDragIndicatorProps
380
+ >(({ className, ...props }, ref) => {
381
+ return (
382
+ <UIActionsheet.DragIndicator
383
+ className={actionsheetDragIndicatorStyle({
384
+ class: className,
385
+ })}
386
+ ref={ref}
387
+ {...props}
388
+ />
389
+ );
390
+ });
391
+
392
+ const ActionsheetDragIndicatorWrapper = React.forwardRef<
393
+ React.ElementRef<typeof UIActionsheet.DragIndicatorWrapper>,
394
+ IActionsheetDragIndicatorWrapperProps
395
+ >(({ className, ...props }, ref) => {
396
+ return (
397
+ <UIActionsheet.DragIndicatorWrapper
398
+ className={actionsheetDragIndicatorWrapperStyle({
399
+ class: className,
400
+ })}
401
+ ref={ref}
402
+ {...props}
403
+ />
404
+ );
405
+ });
406
+
407
+ const ActionsheetBackdrop = React.forwardRef<
408
+ React.ElementRef<typeof UIActionsheet.Backdrop>,
409
+ IActionsheetBackdropProps
410
+ >(({ className, ...props }, ref) => {
411
+ return (
412
+ <UIActionsheet.Backdrop
413
+ initial={{
414
+ opacity: 0,
415
+ }}
416
+ animate={{
417
+ opacity: 0.5,
418
+ }}
419
+ exit={{
420
+ opacity: 0,
421
+ }}
422
+ {...props}
423
+ className={actionsheetBackdropStyle({
424
+ class: className,
425
+ })}
426
+ ref={ref}
427
+ />
428
+ );
429
+ });
430
+
431
+ const ActionsheetScrollView = React.forwardRef<
432
+ React.ElementRef<typeof UIActionsheet.ScrollView>,
433
+ IActionsheetScrollViewProps
434
+ >(({ className, ...props }, ref) => {
435
+ return (
436
+ <UIActionsheet.ScrollView
437
+ className={actionsheetScrollViewStyle({
438
+ class: className,
439
+ })}
440
+ ref={ref}
441
+ {...props}
442
+ />
443
+ );
444
+ });
445
+
446
+ const ActionsheetVirtualizedList = React.forwardRef<
447
+ React.ElementRef<typeof UIActionsheet.VirtualizedList>,
448
+ IActionsheetVirtualizedListProps
449
+ >(({ className, ...props }, ref) => {
450
+ return (
451
+ <UIActionsheet.VirtualizedList
452
+ className={actionsheetVirtualizedListStyle({
453
+ class: className,
454
+ })}
455
+ ref={ref}
456
+ {...props}
457
+ />
458
+ );
459
+ });
460
+
461
+ const ActionsheetFlatList = React.forwardRef<
462
+ React.ElementRef<typeof UIActionsheet.FlatList>,
463
+ IActionsheetFlatListProps
464
+ >(({ className, ...props }, ref) => {
465
+ return (
466
+ <UIActionsheet.FlatList
467
+ className={actionsheetFlatListStyle({
468
+ class: className,
469
+ })}
470
+ ref={ref}
471
+ {...props}
472
+ />
473
+ );
474
+ });
475
+
476
+ const ActionsheetSectionList = React.forwardRef<
477
+ React.ElementRef<typeof UIActionsheet.SectionList>,
478
+ IActionsheetSectionListProps
479
+ >(({ className, ...props }, ref) => {
480
+ return (
481
+ <UIActionsheet.SectionList
482
+ className={actionsheetSectionListStyle({
483
+ class: className,
484
+ })}
485
+ ref={ref}
486
+ {...props}
487
+ />
488
+ );
489
+ });
490
+
491
+ const ActionsheetSectionHeaderText = React.forwardRef<
492
+ React.ElementRef<typeof UIActionsheet.SectionHeaderText>,
493
+ IActionsheetSectionHeaderTextProps
494
+ >(({ className, isTruncated, bold, underline, strikeThrough, size, sub, italic, highlight, ...props }, ref) => {
495
+ return (
496
+ <UIActionsheet.SectionHeaderText
497
+ className={actionsheetSectionHeaderTextStyle({
498
+ class: className,
499
+ isTruncated,
500
+ bold,
501
+ underline,
502
+ strikeThrough,
503
+ size,
504
+ sub,
505
+ italic,
506
+ highlight,
507
+ })}
508
+ ref={ref}
509
+ {...props}
510
+ />
511
+ );
512
+ });
513
+
514
+ const ActionsheetIcon = React.forwardRef<React.ElementRef<typeof UIActionsheet.Icon>, IActionsheetIconProps>(
515
+ ({ className, size = 'sm', ...props }, ref) => {
516
+ if (typeof size === 'number') {
517
+ return (
518
+ <UIActionsheet.Icon
519
+ ref={ref}
520
+ {...props}
521
+ className={actionsheetIconStyle({ class: className })}
522
+ size={size}
523
+ />
524
+ );
525
+ } else if ((props.height !== undefined || props.width !== undefined) && size === undefined) {
526
+ return <UIActionsheet.Icon ref={ref} {...props} className={actionsheetIconStyle({ class: className })} />;
527
+ }
528
+ return (
529
+ <UIActionsheet.Icon
530
+ className={actionsheetIconStyle({
531
+ class: className,
532
+ size,
533
+ })}
534
+ ref={ref}
535
+ {...props}
536
+ />
537
+ );
538
+ },
539
+ );
540
+
541
+ export {
542
+ Actionsheet,
543
+ ActionsheetContent,
544
+ ActionsheetItem,
545
+ ActionsheetItemText,
546
+ ActionsheetDragIndicator,
547
+ ActionsheetDragIndicatorWrapper,
548
+ ActionsheetBackdrop,
549
+ ActionsheetScrollView,
550
+ ActionsheetVirtualizedList,
551
+ ActionsheetFlatList,
552
+ ActionsheetSectionList,
553
+ ActionsheetSectionHeaderText,
554
+ ActionsheetIcon,
555
+ };
@@ -0,0 +1,71 @@
1
+ 'use client';
2
+ import React, { forwardRef } from 'react';
3
+ import { createAlert } from '@gluestack-ui/alert';
4
+ import { tva } from '@gluestack-ui/nativewind-utils/tva';
5
+ import { withStyleContext } from '@gluestack-ui/nativewind-utils/withStyleContext';
6
+ import { cssInterop } from 'nativewind';
7
+ import type { VariantProps } from '@gluestack-ui/nativewind-utils';
8
+
9
+ const SCOPE = 'ALERT';
10
+
11
+ const alertStyle = tva({
12
+ base: 'rounded-lg p-4 mb-4',
13
+ variants: {
14
+ variant: {
15
+ solid: '',
16
+ outline: 'border',
17
+ accent: 'border-l-4',
18
+ },
19
+ status: {
20
+ info: 'bg-blue-50 text-blue-700 border-blue-500',
21
+ success: 'bg-green-50 text-green-700 border-green-500',
22
+ warning: 'bg-yellow-50 text-yellow-700 border-yellow-500',
23
+ error: 'bg-red-50 text-red-700 border-red-500',
24
+ },
25
+ },
26
+ defaultVariants: {
27
+ variant: 'solid',
28
+ status: 'info',
29
+ },
30
+ });
31
+
32
+ export const AlertIcon = forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(
33
+ ({ className, children, ...props }, ref) => (
34
+ <div ref={ref} className={`mr-3 flex-shrink-0 ${className || ''}`} {...props}>
35
+ {children}
36
+ </div>
37
+ ),
38
+ );
39
+
40
+ AlertIcon.displayName = 'AlertIcon';
41
+
42
+ export const AlertText = forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => (
43
+ <div ref={ref} className={`flex-1 ${className || ''}`} {...props} />
44
+ ));
45
+
46
+ AlertText.displayName = 'AlertText';
47
+
48
+ export const AlertTitle = forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => (
49
+ <div ref={ref} className={`font-semibold mb-1 ${className || ''}`} {...props} />
50
+ ));
51
+
52
+ AlertTitle.displayName = 'AlertTitle';
53
+
54
+ export const AlertDescription = forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(
55
+ ({ className, ...props }, ref) => <div ref={ref} className={className} {...props} />,
56
+ );
57
+
58
+ AlertDescription.displayName = 'AlertDescription';
59
+
60
+ type IAlertProps = React.ComponentProps<'div'> & {
61
+ variant?: VariantProps<typeof alertStyle>['variant'];
62
+ status?: VariantProps<typeof alertStyle>['status'];
63
+ };
64
+
65
+ const Alert = forwardRef<HTMLDivElement, IAlertProps>(({ className, variant, status, ...props }, ref) => {
66
+ return <div ref={ref} role="alert" className={alertStyle({ variant, status, class: className })} {...props} />;
67
+ });
68
+
69
+ Alert.displayName = 'Alert';
70
+
71
+ export { Alert };