@wireservers-ui/react-natives 1.0.0 → 1.0.1-rc1

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 (402) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +214 -98
  3. package/bin/cli.js +356 -0
  4. package/package.json +27 -48
  5. package/src/accordion/accordion-content.tsx +30 -30
  6. package/src/accordion/accordion-icon.tsx +54 -54
  7. package/src/accordion/accordion-item.tsx +37 -37
  8. package/src/accordion/accordion-title-text.tsx +24 -24
  9. package/src/accordion/accordion-trigger.tsx +38 -38
  10. package/src/accordion/accordion.tsx +91 -91
  11. package/src/accordion/index.ts +24 -24
  12. package/src/accordion/styles.ts +74 -74
  13. package/src/accordion/types.ts +56 -56
  14. package/src/actionsheet/actionsheet-backdrop.tsx +23 -23
  15. package/src/actionsheet/actionsheet-content.tsx +19 -19
  16. package/src/actionsheet/actionsheet-drag-indicator-wrapper.tsx +19 -19
  17. package/src/actionsheet/actionsheet-drag-indicator.tsx +19 -19
  18. package/src/actionsheet/actionsheet-item-text.tsx +19 -19
  19. package/src/actionsheet/actionsheet-item.tsx +20 -20
  20. package/src/actionsheet/actionsheet-scroll-view.tsx +12 -12
  21. package/src/actionsheet/actionsheet.tsx +45 -45
  22. package/src/actionsheet/index.ts +20 -20
  23. package/src/actionsheet/styles.ts +25 -25
  24. package/src/actionsheet/types.ts +49 -49
  25. package/src/alert/alert-body.tsx +19 -19
  26. package/src/alert/alert-close-button.tsx +23 -23
  27. package/src/alert/alert-icon.tsx +40 -40
  28. package/src/alert/alert-text.tsx +22 -22
  29. package/src/alert/alert.tsx +33 -33
  30. package/src/alert/index.ts +15 -15
  31. package/src/alert/styles.ts +112 -112
  32. package/src/alert/types.ts +36 -36
  33. package/src/alert-dialog/alert-dialog.tsx +54 -54
  34. package/src/alert-dialog/index.ts +2 -2
  35. package/src/alert-dialog/styles.ts +40 -40
  36. package/src/alert-dialog/types.ts +40 -40
  37. package/src/aspect-ratio/aspect-ratio.tsx +20 -20
  38. package/src/aspect-ratio/index.ts +2 -2
  39. package/src/aspect-ratio/styles.ts +6 -6
  40. package/src/aspect-ratio/types.ts +7 -7
  41. package/src/avatar/avatar-badge.tsx +22 -22
  42. package/src/avatar/avatar-fallback-text.tsx +33 -33
  43. package/src/avatar/avatar-group.tsx +53 -53
  44. package/src/avatar/avatar-image.tsx +21 -21
  45. package/src/avatar/avatar.tsx +27 -27
  46. package/src/avatar/index.ts +14 -14
  47. package/src/avatar/styles.ts +94 -94
  48. package/src/avatar/types.ts +35 -35
  49. package/src/badge/badge-icon.tsx +20 -20
  50. package/src/badge/badge-text.tsx +24 -24
  51. package/src/badge/badge.tsx +39 -39
  52. package/src/badge/index.ts +11 -11
  53. package/src/badge/styles.ts +175 -175
  54. package/src/badge/types.ts +37 -37
  55. package/src/blockquote/blockquote.tsx +21 -21
  56. package/src/blockquote/index.ts +2 -2
  57. package/src/blockquote/styles.ts +11 -11
  58. package/src/blockquote/types.ts +6 -6
  59. package/src/box/box.tsx +19 -19
  60. package/src/box/index.ts +2 -2
  61. package/src/box/styles.ts +6 -6
  62. package/src/box/types.ts +6 -6
  63. package/src/breadcrumb/breadcrumb-item.tsx +20 -20
  64. package/src/breadcrumb/breadcrumb-link.tsx +20 -20
  65. package/src/breadcrumb/breadcrumb-text.tsx +19 -19
  66. package/src/breadcrumb/breadcrumb.tsx +43 -43
  67. package/src/breadcrumb/index.ts +12 -12
  68. package/src/breadcrumb/styles.ts +36 -36
  69. package/src/breadcrumb/types.ts +33 -33
  70. package/src/button/button-group.tsx +35 -35
  71. package/src/button/button-icon.tsx +37 -37
  72. package/src/button/button-spinner.tsx +12 -12
  73. package/src/button/button-text.tsx +27 -27
  74. package/src/button/button.tsx +42 -42
  75. package/src/button/index.ts +19 -19
  76. package/src/button/styles.ts +250 -250
  77. package/src/button/types.ts +67 -67
  78. package/src/calendar/calendar-day-cell.tsx +67 -67
  79. package/src/calendar/calendar-day-view.tsx +66 -66
  80. package/src/calendar/calendar-event.tsx +59 -59
  81. package/src/calendar/calendar-header.tsx +60 -60
  82. package/src/calendar/calendar-horizontal-view.tsx +372 -372
  83. package/src/calendar/calendar-legend.tsx +41 -41
  84. package/src/calendar/calendar-month-view.tsx +47 -47
  85. package/src/calendar/calendar-vertical-view.tsx +395 -395
  86. package/src/calendar/calendar-view-switcher.tsx +65 -65
  87. package/src/calendar/calendar-week-view.tsx +52 -52
  88. package/src/calendar/calendar.tsx +74 -74
  89. package/src/calendar/index.ts +27 -27
  90. package/src/calendar/styles.ts +367 -367
  91. package/src/calendar/types.ts +101 -101
  92. package/src/calendar/use-calendar.ts +170 -170
  93. package/src/calendar/utils.ts +278 -278
  94. package/src/card/card-body.tsx +22 -22
  95. package/src/card/card-footer.tsx +19 -19
  96. package/src/card/card-header.tsx +22 -22
  97. package/src/card/card.tsx +27 -27
  98. package/src/card/index.ts +13 -13
  99. package/src/card/styles.ts +54 -54
  100. package/src/card/types.ts +31 -31
  101. package/src/carousel/carousel.tsx +436 -436
  102. package/src/carousel/index.ts +2 -2
  103. package/src/carousel/styles.ts +21 -21
  104. package/src/carousel/types.ts +41 -41
  105. package/src/center/center.tsx +19 -19
  106. package/src/center/index.ts +2 -2
  107. package/src/center/styles.ts +6 -6
  108. package/src/center/types.ts +6 -6
  109. package/src/checkbox/checkbox-group.tsx +63 -63
  110. package/src/checkbox/checkbox-icon.tsx +35 -35
  111. package/src/checkbox/checkbox-indicator.tsx +30 -30
  112. package/src/checkbox/checkbox-label.tsx +24 -24
  113. package/src/checkbox/checkbox.tsx +86 -86
  114. package/src/checkbox/index.ts +14 -14
  115. package/src/checkbox/styles.ts +69 -69
  116. package/src/checkbox/types.ts +55 -55
  117. package/src/circular-progress/circular-progress.tsx +82 -82
  118. package/src/circular-progress/index.ts +2 -2
  119. package/src/circular-progress/styles.ts +31 -31
  120. package/src/circular-progress/types.ts +18 -18
  121. package/src/code/code.tsx +36 -36
  122. package/src/code/index.ts +2 -2
  123. package/src/code/styles.ts +25 -25
  124. package/src/code/types.ts +13 -13
  125. package/src/collapsible/collapsible.tsx +58 -58
  126. package/src/collapsible/index.ts +2 -2
  127. package/src/collapsible/styles.ts +5 -5
  128. package/src/collapsible/types.ts +21 -21
  129. package/src/color-picker/color-picker-box.tsx +115 -115
  130. package/src/color-picker/color-picker-slider.tsx +98 -98
  131. package/src/color-picker/color-picker.tsx +162 -162
  132. package/src/color-picker/color-utils.ts +215 -215
  133. package/src/color-picker/index.ts +34 -34
  134. package/src/color-picker/styles.ts +32 -32
  135. package/src/color-picker/types.ts +49 -49
  136. package/src/color-picker/use-pointer-drag.ts +80 -80
  137. package/src/container/container.tsx +19 -19
  138. package/src/container/index.ts +2 -2
  139. package/src/container/styles.ts +21 -21
  140. package/src/container/types.ts +10 -10
  141. package/src/date-picker/date-picker.tsx +136 -136
  142. package/src/date-picker/index.ts +15 -15
  143. package/src/date-picker/styles.ts +18 -18
  144. package/src/date-picker/types.ts +33 -33
  145. package/src/divider/divider.tsx +21 -21
  146. package/src/divider/index.ts +2 -2
  147. package/src/divider/styles.ts +14 -14
  148. package/src/divider/types.ts +7 -7
  149. package/src/drawer/drawer-backdrop.tsx +23 -23
  150. package/src/drawer/drawer-body.tsx +19 -19
  151. package/src/drawer/drawer-close-button.tsx +29 -29
  152. package/src/drawer/drawer-content.tsx +142 -142
  153. package/src/drawer/drawer-footer.tsx +19 -19
  154. package/src/drawer/drawer-header.tsx +19 -19
  155. package/src/drawer/drawer.tsx +54 -54
  156. package/src/drawer/index.ts +22 -22
  157. package/src/drawer/styles.ts +36 -36
  158. package/src/drawer/types.ts +62 -62
  159. package/src/empty/empty.tsx +53 -53
  160. package/src/empty/index.ts +2 -2
  161. package/src/empty/styles.ts +26 -26
  162. package/src/empty/types.ts +22 -22
  163. package/src/fab/fab-icon.tsx +20 -20
  164. package/src/fab/fab-label.tsx +22 -22
  165. package/src/fab/fab.tsx +45 -45
  166. package/src/fab/index.ts +11 -11
  167. package/src/fab/styles.ts +57 -57
  168. package/src/fab/types.ts +33 -33
  169. package/src/form-control/form-control-error-icon.tsx +25 -25
  170. package/src/form-control/form-control-error-message.tsx +40 -40
  171. package/src/form-control/form-control-helper-text.tsx +25 -25
  172. package/src/form-control/form-control-label-text.tsx +25 -25
  173. package/src/form-control/form-control-label.tsx +36 -36
  174. package/src/form-control/form-control.tsx +46 -46
  175. package/src/form-control/index.ts +20 -20
  176. package/src/form-control/styles.ts +105 -105
  177. package/src/form-control/types.ts +45 -45
  178. package/src/heading/heading.tsx +21 -21
  179. package/src/heading/index.ts +2 -2
  180. package/src/heading/styles.ts +24 -24
  181. package/src/heading/types.ts +19 -19
  182. package/src/icon/icon.tsx +21 -21
  183. package/src/icon/index.ts +2 -2
  184. package/src/icon/styles.ts +18 -18
  185. package/src/icon/types.ts +8 -8
  186. package/src/icon-button/icon-button.tsx +23 -23
  187. package/src/icon-button/index.ts +2 -2
  188. package/src/icon-button/styles.ts +78 -78
  189. package/src/icon-button/types.ts +15 -15
  190. package/src/image/image.tsx +20 -20
  191. package/src/image/index.ts +2 -2
  192. package/src/image/styles.ts +28 -28
  193. package/src/image/types.ts +11 -11
  194. package/src/index.ts +1039 -1039
  195. package/src/input/index.ts +13 -13
  196. package/src/input/input-field.tsx +35 -35
  197. package/src/input/input-icon.tsx +25 -25
  198. package/src/input/input-slot.tsx +24 -24
  199. package/src/input/input.tsx +73 -73
  200. package/src/input/styles.ts +90 -90
  201. package/src/input/types.ts +39 -39
  202. package/src/kbd/index.ts +2 -2
  203. package/src/kbd/kbd.tsx +21 -21
  204. package/src/kbd/styles.ts +11 -11
  205. package/src/kbd/types.ts +7 -7
  206. package/src/link/index.ts +4 -4
  207. package/src/link/link-text.tsx +19 -19
  208. package/src/link/link.tsx +31 -31
  209. package/src/link/styles.ts +19 -19
  210. package/src/link/types.ts +13 -13
  211. package/src/list/index.ts +2 -2
  212. package/src/list/list.tsx +55 -55
  213. package/src/list/styles.ts +8 -8
  214. package/src/list/types.ts +17 -17
  215. package/src/menu/index.ts +2 -2
  216. package/src/menu/menu.tsx +99 -99
  217. package/src/menu/styles.ts +14 -14
  218. package/src/menu/types.ts +30 -30
  219. package/src/modal/index.ts +18 -18
  220. package/src/modal/modal-backdrop.tsx +23 -23
  221. package/src/modal/modal-body.tsx +19 -19
  222. package/src/modal/modal-close-button.tsx +29 -29
  223. package/src/modal/modal-content.tsx +22 -22
  224. package/src/modal/modal-footer.tsx +19 -19
  225. package/src/modal/modal-header.tsx +19 -19
  226. package/src/modal/modal.tsx +50 -50
  227. package/src/modal/styles.ts +37 -37
  228. package/src/modal/types.ts +49 -49
  229. package/src/nativewind-env.d.ts +1 -1
  230. package/src/number-input/index.ts +18 -18
  231. package/src/number-input/number-input.tsx +161 -161
  232. package/src/number-input/styles.ts +35 -35
  233. package/src/number-input/types.ts +44 -44
  234. package/src/overlay/index.ts +2 -2
  235. package/src/overlay/overlay.tsx +21 -21
  236. package/src/overlay/styles.ts +6 -6
  237. package/src/overlay/types.ts +7 -7
  238. package/src/pagination/index.ts +2 -2
  239. package/src/pagination/pagination.tsx +58 -58
  240. package/src/pagination/styles.ts +27 -27
  241. package/src/pagination/types.ts +19 -19
  242. package/src/password-input/index.ts +14 -14
  243. package/src/password-input/password-input.tsx +79 -79
  244. package/src/password-input/styles.ts +25 -25
  245. package/src/password-input/types.ts +24 -24
  246. package/src/pin-input/index.ts +12 -12
  247. package/src/pin-input/pin-input.tsx +96 -96
  248. package/src/pin-input/styles.ts +16 -16
  249. package/src/pin-input/types.ts +26 -26
  250. package/src/popover/index.ts +2 -2
  251. package/src/popover/popover.tsx +98 -98
  252. package/src/popover/styles.ts +31 -31
  253. package/src/popover/types.ts +46 -46
  254. package/src/portal/index.ts +2 -2
  255. package/src/portal/portal.tsx +8 -8
  256. package/src/portal/styles.ts +2 -2
  257. package/src/portal/types.ts +3 -3
  258. package/src/pressable/index.ts +2 -2
  259. package/src/pressable/pressable.tsx +20 -20
  260. package/src/pressable/styles.ts +10 -10
  261. package/src/pressable/types.ts +6 -6
  262. package/src/progress/index.ts +9 -9
  263. package/src/progress/progress-filled-track.tsx +26 -26
  264. package/src/progress/progress.tsx +52 -52
  265. package/src/progress/styles.ts +34 -34
  266. package/src/progress/types.ts +28 -28
  267. package/src/radio/index.ts +14 -14
  268. package/src/radio/radio-group.tsx +61 -61
  269. package/src/radio/radio-icon.tsx +24 -24
  270. package/src/radio/radio-indicator.tsx +30 -30
  271. package/src/radio/radio-label.tsx +24 -24
  272. package/src/radio/radio.tsx +68 -68
  273. package/src/radio/styles.ts +69 -69
  274. package/src/radio/types.ts +51 -51
  275. package/src/rating/index.ts +7 -7
  276. package/src/rating/rating.tsx +93 -93
  277. package/src/rating/styles.ts +13 -13
  278. package/src/rating/types.ts +29 -29
  279. package/src/search-input/index.ts +16 -16
  280. package/src/search-input/search-input.tsx +119 -119
  281. package/src/search-input/styles.ts +28 -28
  282. package/src/search-input/types.ts +31 -31
  283. package/src/segmented-control/index.ts +2 -2
  284. package/src/segmented-control/segmented-control.tsx +34 -34
  285. package/src/segmented-control/styles.ts +22 -22
  286. package/src/segmented-control/types.ts +22 -22
  287. package/src/select/index.ts +28 -28
  288. package/src/select/select-backdrop.tsx +25 -25
  289. package/src/select/select-content.tsx +49 -49
  290. package/src/select/select-drag-indicator.tsx +19 -19
  291. package/src/select/select-icon.tsx +25 -25
  292. package/src/select/select-input.tsx +32 -32
  293. package/src/select/select-item-text.tsx +30 -30
  294. package/src/select/select-item.tsx +72 -72
  295. package/src/select/select-portal.tsx +22 -22
  296. package/src/select/select-scroll-view.tsx +22 -22
  297. package/src/select/select-trigger.tsx +64 -64
  298. package/src/select/select.tsx +101 -101
  299. package/src/select/styles.ts +114 -114
  300. package/src/select/types.ts +92 -92
  301. package/src/skeleton/index.ts +2 -2
  302. package/src/skeleton/skeleton.tsx +29 -29
  303. package/src/skeleton/styles.ts +14 -14
  304. package/src/skeleton/types.ts +12 -12
  305. package/src/slider/index.ts +12 -12
  306. package/src/slider/slider-filled-track.tsx +31 -31
  307. package/src/slider/slider-thumb.tsx +52 -52
  308. package/src/slider/slider-track.tsx +154 -154
  309. package/src/slider/slider.tsx +193 -193
  310. package/src/slider/styles.ts +71 -71
  311. package/src/slider/types.ts +47 -47
  312. package/src/snackbar/index.ts +2 -2
  313. package/src/snackbar/snackbar.tsx +39 -39
  314. package/src/snackbar/styles.ts +29 -29
  315. package/src/snackbar/types.ts +21 -21
  316. package/src/spinner/index.ts +2 -2
  317. package/src/spinner/spinner.tsx +29 -29
  318. package/src/spinner/styles.ts +15 -15
  319. package/src/spinner/types.ts +10 -10
  320. package/src/stack/index.ts +2 -2
  321. package/src/stack/stack.tsx +49 -49
  322. package/src/stack/styles.ts +25 -25
  323. package/src/stack/types.ts +15 -15
  324. package/src/stat/index.ts +2 -2
  325. package/src/stat/stat.tsx +48 -48
  326. package/src/stat/styles.ts +34 -34
  327. package/src/stat/types.ts +24 -24
  328. package/src/stepper/index.ts +2 -2
  329. package/src/stepper/stepper.tsx +95 -95
  330. package/src/stepper/styles.ts +49 -49
  331. package/src/stepper/types.ts +20 -20
  332. package/src/switch/index.ts +2 -2
  333. package/src/switch/styles.ts +24 -24
  334. package/src/switch/switch.tsx +67 -67
  335. package/src/switch/types.ts +23 -23
  336. package/src/table/index.ts +2 -2
  337. package/src/table/styles.ts +12 -12
  338. package/src/table/table.tsx +52 -52
  339. package/src/table/types.ts +10 -10
  340. package/src/tabs/index.ts +18 -18
  341. package/src/tabs/styles.ts +113 -113
  342. package/src/tabs/tab-list.tsx +29 -29
  343. package/src/tabs/tab-panel.tsx +29 -29
  344. package/src/tabs/tab-panels.tsx +21 -21
  345. package/src/tabs/tab-text.tsx +26 -26
  346. package/src/tabs/tab.tsx +56 -56
  347. package/src/tabs/tabs.tsx +71 -71
  348. package/src/tabs/types.ts +53 -53
  349. package/src/tag/index.ts +14 -14
  350. package/src/tag/styles.ts +115 -115
  351. package/src/tag/tag-close-button.tsx +26 -26
  352. package/src/tag/tag-icon.tsx +20 -20
  353. package/src/tag/tag-text.tsx +22 -22
  354. package/src/tag/tag.tsx +40 -40
  355. package/src/tag/types.ts +33 -33
  356. package/src/tags-input/index.ts +18 -18
  357. package/src/tags-input/styles.ts +29 -29
  358. package/src/tags-input/tags-input.tsx +149 -149
  359. package/src/tags-input/types.ts +37 -37
  360. package/src/text/index.ts +2 -2
  361. package/src/text/styles.ts +54 -54
  362. package/src/text/text.tsx +51 -51
  363. package/src/text/types.ts +36 -36
  364. package/src/textarea/index.ts +2 -2
  365. package/src/textarea/styles.ts +37 -37
  366. package/src/textarea/textarea.tsx +68 -68
  367. package/src/textarea/types.ts +14 -14
  368. package/src/timeline/index.ts +2 -2
  369. package/src/timeline/styles.ts +57 -57
  370. package/src/timeline/timeline.tsx +52 -52
  371. package/src/timeline/types.ts +30 -30
  372. package/src/toast/index.ts +17 -17
  373. package/src/toast/styles.ts +118 -118
  374. package/src/toast/toast-description.tsx +22 -22
  375. package/src/toast/toast-provider.tsx +136 -136
  376. package/src/toast/toast-title.tsx +22 -22
  377. package/src/toast/toast.tsx +43 -43
  378. package/src/toast/types.ts +50 -50
  379. package/src/toast/use-toast.ts +7 -7
  380. package/src/toggle/index.ts +2 -2
  381. package/src/toggle/styles.ts +30 -30
  382. package/src/toggle/toggle.tsx +25 -25
  383. package/src/toggle/types.ts +15 -15
  384. package/src/toggle-group/index.ts +2 -2
  385. package/src/toggle-group/styles.ts +35 -35
  386. package/src/toggle-group/toggle-group.tsx +60 -60
  387. package/src/toggle-group/types.ts +29 -29
  388. package/src/tooltip/index.ts +11 -11
  389. package/src/tooltip/styles.ts +9 -9
  390. package/src/tooltip/tooltip-content.tsx +19 -19
  391. package/src/tooltip/tooltip-text.tsx +19 -19
  392. package/src/tooltip/tooltip.tsx +116 -116
  393. package/src/tooltip/types.ts +35 -35
  394. package/src/utils/brand.ts +5 -5
  395. package/src/utils/create-context.ts +17 -17
  396. package/src/utils/index.ts +8 -8
  397. package/src/utils/types.ts +20 -20
  398. package/src/visually-hidden/index.ts +2 -2
  399. package/src/visually-hidden/styles.ts +6 -6
  400. package/src/visually-hidden/types.ts +6 -6
  401. package/src/visually-hidden/visually-hidden.tsx +22 -22
  402. package/tailwind-preset.js +203 -203
package/src/menu/types.ts CHANGED
@@ -1,30 +1,30 @@
1
- import type { View, Pressable } from 'react-native';
2
-
3
- export interface MenuTriggerRect { pageX: number; pageY: number; width: number; height: number; }
4
-
5
- export interface MenuContextValue {
6
- isOpen: boolean;
7
- onToggle: () => void;
8
- onClose: () => void;
9
- triggerRect: MenuTriggerRect;
10
- setTriggerRect: (rect: MenuTriggerRect) => void;
11
- }
12
-
13
- export interface MenuProps {
14
- isOpen?: boolean;
15
- onOpenChange?: (open: boolean) => void;
16
- defaultOpen?: boolean;
17
- children: React.ReactNode;
18
- }
19
-
20
- export interface MenuTriggerProps extends React.ComponentPropsWithoutRef<typeof Pressable> { className?: string; }
21
- export interface MenuContentProps extends React.ComponentPropsWithoutRef<typeof View> { className?: string; }
22
- export interface MenuItemProps extends React.ComponentPropsWithoutRef<typeof Pressable> {
23
- className?: string;
24
- isDisabled?: boolean;
25
- }
26
- export interface MenuItemTextProps extends React.ComponentPropsWithoutRef<typeof View> { className?: string; }
27
- export interface MenuItemIconProps { as: React.ElementType; className?: string; }
28
- export interface MenuSeparatorProps extends React.ComponentPropsWithoutRef<typeof View> { className?: string; }
29
- export interface MenuGroupProps extends React.ComponentPropsWithoutRef<typeof View> { className?: string; }
30
- export interface MenuGroupTitleProps extends React.ComponentPropsWithoutRef<typeof View> { className?: string; }
1
+ import type { View, Pressable } from 'react-native';
2
+
3
+ export interface MenuTriggerRect { pageX: number; pageY: number; width: number; height: number; }
4
+
5
+ export interface MenuContextValue {
6
+ isOpen: boolean;
7
+ onToggle: () => void;
8
+ onClose: () => void;
9
+ triggerRect: MenuTriggerRect;
10
+ setTriggerRect: (rect: MenuTriggerRect) => void;
11
+ }
12
+
13
+ export interface MenuProps {
14
+ isOpen?: boolean;
15
+ onOpenChange?: (open: boolean) => void;
16
+ defaultOpen?: boolean;
17
+ children: React.ReactNode;
18
+ }
19
+
20
+ export interface MenuTriggerProps extends React.ComponentPropsWithoutRef<typeof Pressable> { className?: string; }
21
+ export interface MenuContentProps extends React.ComponentPropsWithoutRef<typeof View> { className?: string; }
22
+ export interface MenuItemProps extends React.ComponentPropsWithoutRef<typeof Pressable> {
23
+ className?: string;
24
+ isDisabled?: boolean;
25
+ }
26
+ export interface MenuItemTextProps extends React.ComponentPropsWithoutRef<typeof View> { className?: string; }
27
+ export interface MenuItemIconProps { as: React.ElementType; className?: string; }
28
+ export interface MenuSeparatorProps extends React.ComponentPropsWithoutRef<typeof View> { className?: string; }
29
+ export interface MenuGroupProps extends React.ComponentPropsWithoutRef<typeof View> { className?: string; }
30
+ export interface MenuGroupTitleProps extends React.ComponentPropsWithoutRef<typeof View> { className?: string; }
@@ -1,18 +1,18 @@
1
- export { Modal } from './modal';
2
- export { ModalBackdrop } from './modal-backdrop';
3
- export { ModalContent } from './modal-content';
4
- export { ModalHeader } from './modal-header';
5
- export { ModalBody } from './modal-body';
6
- export { ModalFooter } from './modal-footer';
7
- export { ModalCloseButton } from './modal-close-button';
8
-
9
- export type {
10
- ModalProps,
11
- ModalBackdropProps,
12
- ModalContentProps,
13
- ModalHeaderProps,
14
- ModalBodyProps,
15
- ModalFooterProps,
16
- ModalCloseButtonProps,
17
- ModalSize,
18
- } from './types';
1
+ export { Modal } from './modal';
2
+ export { ModalBackdrop } from './modal-backdrop';
3
+ export { ModalContent } from './modal-content';
4
+ export { ModalHeader } from './modal-header';
5
+ export { ModalBody } from './modal-body';
6
+ export { ModalFooter } from './modal-footer';
7
+ export { ModalCloseButton } from './modal-close-button';
8
+
9
+ export type {
10
+ ModalProps,
11
+ ModalBackdropProps,
12
+ ModalContentProps,
13
+ ModalHeaderProps,
14
+ ModalBodyProps,
15
+ ModalFooterProps,
16
+ ModalCloseButtonProps,
17
+ ModalSize,
18
+ } from './types';
@@ -1,23 +1,23 @@
1
- import React from 'react';
2
- import { Pressable } from 'react-native';
3
- import { useModalContext } from './modal';
4
- import type { ModalBackdropProps } from './types';
5
- import { modalBackdropStyle } from './styles';
6
-
7
- export const ModalBackdrop = React.forwardRef<
8
- React.ElementRef<typeof Pressable>,
9
- ModalBackdropProps
10
- >(({ className, ...props }, ref) => {
11
- const { onClose, closeOnOverlayClick } = useModalContext();
12
-
13
- return (
14
- <Pressable
15
- ref={ref}
16
- onPress={closeOnOverlayClick ? onClose : undefined}
17
- className={modalBackdropStyle({ class: className })}
18
- {...props}
19
- />
20
- );
21
- });
22
-
23
- ModalBackdrop.displayName = 'ModalBackdrop';
1
+ import React from 'react';
2
+ import { Pressable } from 'react-native';
3
+ import { useModalContext } from './modal';
4
+ import type { ModalBackdropProps } from './types';
5
+ import { modalBackdropStyle } from './styles';
6
+
7
+ export const ModalBackdrop = React.forwardRef<
8
+ React.ElementRef<typeof Pressable>,
9
+ ModalBackdropProps
10
+ >(({ className, ...props }, ref) => {
11
+ const { onClose, closeOnOverlayClick } = useModalContext();
12
+
13
+ return (
14
+ <Pressable
15
+ ref={ref}
16
+ onPress={closeOnOverlayClick ? onClose : undefined}
17
+ className={modalBackdropStyle({ class: className })}
18
+ {...props}
19
+ />
20
+ );
21
+ });
22
+
23
+ ModalBackdrop.displayName = 'ModalBackdrop';
@@ -1,19 +1,19 @@
1
- import React from 'react';
2
- import { View } from 'react-native';
3
- import type { ModalBodyProps } from './types';
4
- import { modalBodyStyle } from './styles';
5
-
6
- export const ModalBody = React.forwardRef<
7
- React.ElementRef<typeof View>,
8
- ModalBodyProps
9
- >(({ className, ...props }, ref) => {
10
- return (
11
- <View
12
- ref={ref}
13
- className={modalBodyStyle({ class: className })}
14
- {...props}
15
- />
16
- );
17
- });
18
-
19
- ModalBody.displayName = 'ModalBody';
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import type { ModalBodyProps } from './types';
4
+ import { modalBodyStyle } from './styles';
5
+
6
+ export const ModalBody = React.forwardRef<
7
+ React.ElementRef<typeof View>,
8
+ ModalBodyProps
9
+ >(({ className, ...props }, ref) => {
10
+ return (
11
+ <View
12
+ ref={ref}
13
+ className={modalBodyStyle({ class: className })}
14
+ {...props}
15
+ />
16
+ );
17
+ });
18
+
19
+ ModalBody.displayName = 'ModalBody';
@@ -1,29 +1,29 @@
1
- import React from 'react';
2
- import { Pressable, Text } from 'react-native';
3
- import { useModalContext } from './modal';
4
- import type { ModalCloseButtonProps } from './types';
5
- import { modalCloseButtonStyle } from './styles';
6
-
7
- export const ModalCloseButton = React.forwardRef<
8
- React.ElementRef<typeof Pressable>,
9
- ModalCloseButtonProps
10
- >(({ className, children, ...props }, ref) => {
11
- const { onClose } = useModalContext();
12
-
13
- return (
14
- <Pressable
15
- ref={ref}
16
- onPress={onClose}
17
- accessibilityRole="button"
18
- accessibilityLabel="Close"
19
- className={modalCloseButtonStyle({ class: className })}
20
- {...props}
21
- >
22
- {children ?? (
23
- <Text className="text-typography-500 text-lg leading-none">✕</Text>
24
- )}
25
- </Pressable>
26
- );
27
- });
28
-
29
- ModalCloseButton.displayName = 'ModalCloseButton';
1
+ import React from 'react';
2
+ import { Pressable, Text } from 'react-native';
3
+ import { useModalContext } from './modal';
4
+ import type { ModalCloseButtonProps } from './types';
5
+ import { modalCloseButtonStyle } from './styles';
6
+
7
+ export const ModalCloseButton = React.forwardRef<
8
+ React.ElementRef<typeof Pressable>,
9
+ ModalCloseButtonProps
10
+ >(({ className, children, ...props }, ref) => {
11
+ const { onClose } = useModalContext();
12
+
13
+ return (
14
+ <Pressable
15
+ ref={ref}
16
+ onPress={onClose}
17
+ accessibilityRole="button"
18
+ accessibilityLabel="Close"
19
+ className={modalCloseButtonStyle({ class: className })}
20
+ {...props}
21
+ >
22
+ {children ?? (
23
+ <Text className="text-typography-500 text-lg leading-none">✕</Text>
24
+ )}
25
+ </Pressable>
26
+ );
27
+ });
28
+
29
+ ModalCloseButton.displayName = 'ModalCloseButton';
@@ -1,22 +1,22 @@
1
- import React from 'react';
2
- import { View } from 'react-native';
3
- import { useModalContext } from './modal';
4
- import type { ModalContentProps } from './types';
5
- import { modalContentStyle } from './styles';
6
-
7
- export const ModalContent = React.forwardRef<
8
- React.ElementRef<typeof View>,
9
- ModalContentProps
10
- >(({ className, ...props }, ref) => {
11
- const { size } = useModalContext();
12
-
13
- return (
14
- <View
15
- ref={ref}
16
- className={modalContentStyle({ size, class: className })}
17
- {...props}
18
- />
19
- );
20
- });
21
-
22
- ModalContent.displayName = 'ModalContent';
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import { useModalContext } from './modal';
4
+ import type { ModalContentProps } from './types';
5
+ import { modalContentStyle } from './styles';
6
+
7
+ export const ModalContent = React.forwardRef<
8
+ React.ElementRef<typeof View>,
9
+ ModalContentProps
10
+ >(({ className, ...props }, ref) => {
11
+ const { size } = useModalContext();
12
+
13
+ return (
14
+ <View
15
+ ref={ref}
16
+ className={modalContentStyle({ size, class: className })}
17
+ {...props}
18
+ />
19
+ );
20
+ });
21
+
22
+ ModalContent.displayName = 'ModalContent';
@@ -1,19 +1,19 @@
1
- import React from 'react';
2
- import { View } from 'react-native';
3
- import type { ModalFooterProps } from './types';
4
- import { modalFooterStyle } from './styles';
5
-
6
- export const ModalFooter = React.forwardRef<
7
- React.ElementRef<typeof View>,
8
- ModalFooterProps
9
- >(({ className, ...props }, ref) => {
10
- return (
11
- <View
12
- ref={ref}
13
- className={modalFooterStyle({ class: className })}
14
- {...props}
15
- />
16
- );
17
- });
18
-
19
- ModalFooter.displayName = 'ModalFooter';
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import type { ModalFooterProps } from './types';
4
+ import { modalFooterStyle } from './styles';
5
+
6
+ export const ModalFooter = React.forwardRef<
7
+ React.ElementRef<typeof View>,
8
+ ModalFooterProps
9
+ >(({ className, ...props }, ref) => {
10
+ return (
11
+ <View
12
+ ref={ref}
13
+ className={modalFooterStyle({ class: className })}
14
+ {...props}
15
+ />
16
+ );
17
+ });
18
+
19
+ ModalFooter.displayName = 'ModalFooter';
@@ -1,19 +1,19 @@
1
- import React from 'react';
2
- import { View } from 'react-native';
3
- import type { ModalHeaderProps } from './types';
4
- import { modalHeaderStyle } from './styles';
5
-
6
- export const ModalHeader = React.forwardRef<
7
- React.ElementRef<typeof View>,
8
- ModalHeaderProps
9
- >(({ className, ...props }, ref) => {
10
- return (
11
- <View
12
- ref={ref}
13
- className={modalHeaderStyle({ class: className })}
14
- {...props}
15
- />
16
- );
17
- });
18
-
19
- ModalHeader.displayName = 'ModalHeader';
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import type { ModalHeaderProps } from './types';
4
+ import { modalHeaderStyle } from './styles';
5
+
6
+ export const ModalHeader = React.forwardRef<
7
+ React.ElementRef<typeof View>,
8
+ ModalHeaderProps
9
+ >(({ className, ...props }, ref) => {
10
+ return (
11
+ <View
12
+ ref={ref}
13
+ className={modalHeaderStyle({ class: className })}
14
+ {...props}
15
+ />
16
+ );
17
+ });
18
+
19
+ ModalHeader.displayName = 'ModalHeader';
@@ -1,50 +1,50 @@
1
- import React from 'react';
2
- import {
3
- Modal as RNModal,
4
- View,
5
- KeyboardAvoidingView,
6
- Platform,
7
- } from 'react-native';
8
- import { createComponentContext } from '../utils/create-context';
9
- import type { ModalProps, ModalContextValue } from './types';
10
-
11
- export const [ModalProvider, useModalContext] =
12
- createComponentContext<ModalContextValue>('Modal');
13
-
14
- export const Modal: React.FC<ModalProps> = ({
15
- isOpen,
16
- onClose,
17
- size = 'md',
18
- closeOnOverlayClick = true,
19
- avoidKeyboard = false,
20
- children,
21
- }) => {
22
- const content = (
23
- <View className="flex-1 items-center justify-center">{children}</View>
24
- );
25
-
26
- return (
27
- <ModalProvider value={{ isOpen, onClose, size, closeOnOverlayClick }}>
28
- <RNModal
29
- visible={isOpen}
30
- transparent
31
- animationType="fade"
32
- onRequestClose={onClose}
33
- statusBarTranslucent
34
- >
35
- {avoidKeyboard ? (
36
- <KeyboardAvoidingView
37
- behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
38
- className="flex-1"
39
- >
40
- {content}
41
- </KeyboardAvoidingView>
42
- ) : (
43
- content
44
- )}
45
- </RNModal>
46
- </ModalProvider>
47
- );
48
- };
49
-
50
- Modal.displayName = 'Modal';
1
+ import React from 'react';
2
+ import {
3
+ Modal as RNModal,
4
+ View,
5
+ KeyboardAvoidingView,
6
+ Platform,
7
+ } from 'react-native';
8
+ import { createComponentContext } from '../utils/create-context';
9
+ import type { ModalProps, ModalContextValue } from './types';
10
+
11
+ export const [ModalProvider, useModalContext] =
12
+ createComponentContext<ModalContextValue>('Modal');
13
+
14
+ export const Modal: React.FC<ModalProps> = ({
15
+ isOpen,
16
+ onClose,
17
+ size = 'md',
18
+ closeOnOverlayClick = true,
19
+ avoidKeyboard = false,
20
+ children,
21
+ }) => {
22
+ const content = (
23
+ <View className="flex-1 items-center justify-center">{children}</View>
24
+ );
25
+
26
+ return (
27
+ <ModalProvider value={{ isOpen, onClose, size, closeOnOverlayClick }}>
28
+ <RNModal
29
+ visible={isOpen}
30
+ transparent
31
+ animationType="fade"
32
+ onRequestClose={onClose}
33
+ statusBarTranslucent
34
+ >
35
+ {avoidKeyboard ? (
36
+ <KeyboardAvoidingView
37
+ behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
38
+ className="flex-1"
39
+ >
40
+ {content}
41
+ </KeyboardAvoidingView>
42
+ ) : (
43
+ content
44
+ )}
45
+ </RNModal>
46
+ </ModalProvider>
47
+ );
48
+ };
49
+
50
+ Modal.displayName = 'Modal';
@@ -1,37 +1,37 @@
1
- import { tv } from 'tailwind-variants';
2
-
3
- export const modalBackdropStyle = tv({
4
- base: 'absolute inset-0 bg-black/50',
5
- });
6
-
7
- export const modalContentStyle = tv({
8
- base: 'bg-background-0 rounded-xl overflow-hidden shadow-hard-5',
9
- variants: {
10
- size: {
11
- xs: 'w-[60%] max-w-[280px]',
12
- sm: 'w-[70%] max-w-[360px]',
13
- md: 'w-[80%] max-w-[480px]',
14
- lg: 'w-[90%] max-w-[640px]',
15
- full: 'w-[95%] max-w-full max-h-[90%]',
16
- },
17
- },
18
- defaultVariants: {
19
- size: 'md',
20
- },
21
- });
22
-
23
- export const modalHeaderStyle = tv({
24
- base: 'flex-row items-center justify-between px-5 pt-5 pb-2',
25
- });
26
-
27
- export const modalBodyStyle = tv({
28
- base: 'px-5 py-3',
29
- });
30
-
31
- export const modalFooterStyle = tv({
32
- base: 'flex-row items-center justify-end gap-3 px-5 pb-5 pt-2',
33
- });
34
-
35
- export const modalCloseButtonStyle = tv({
36
- base: 'p-1 rounded-md active:bg-background-200',
37
- });
1
+ import { tv } from 'tailwind-variants';
2
+
3
+ export const modalBackdropStyle = tv({
4
+ base: 'absolute inset-0 bg-black/50',
5
+ });
6
+
7
+ export const modalContentStyle = tv({
8
+ base: 'bg-background-0 rounded-xl overflow-hidden shadow-hard-5',
9
+ variants: {
10
+ size: {
11
+ xs: 'w-[60%] max-w-[280px]',
12
+ sm: 'w-[70%] max-w-[360px]',
13
+ md: 'w-[80%] max-w-[480px]',
14
+ lg: 'w-[90%] max-w-[640px]',
15
+ full: 'w-[95%] max-w-full max-h-[90%]',
16
+ },
17
+ },
18
+ defaultVariants: {
19
+ size: 'md',
20
+ },
21
+ });
22
+
23
+ export const modalHeaderStyle = tv({
24
+ base: 'flex-row items-center justify-between px-5 pt-5 pb-2',
25
+ });
26
+
27
+ export const modalBodyStyle = tv({
28
+ base: 'px-5 py-3',
29
+ });
30
+
31
+ export const modalFooterStyle = tv({
32
+ base: 'flex-row items-center justify-end gap-3 px-5 pb-5 pt-2',
33
+ });
34
+
35
+ export const modalCloseButtonStyle = tv({
36
+ base: 'p-1 rounded-md active:bg-background-200',
37
+ });
@@ -1,49 +1,49 @@
1
- import type { View, Pressable, Text as RNText } from 'react-native';
2
-
3
- export type ModalSize = 'xs' | 'sm' | 'md' | 'lg' | 'full';
4
-
5
- export interface ModalContextValue {
6
- isOpen: boolean;
7
- onClose: () => void;
8
- size: ModalSize;
9
- closeOnOverlayClick: boolean;
10
- }
11
-
12
- export interface ModalProps {
13
- isOpen: boolean;
14
- onClose: () => void;
15
- size?: ModalSize;
16
- closeOnOverlayClick?: boolean;
17
- avoidKeyboard?: boolean;
18
- children: React.ReactNode;
19
- }
20
-
21
- export interface ModalBackdropProps
22
- extends React.ComponentPropsWithoutRef<typeof Pressable> {
23
- className?: string;
24
- }
25
-
26
- export interface ModalContentProps
27
- extends React.ComponentPropsWithoutRef<typeof View> {
28
- className?: string;
29
- }
30
-
31
- export interface ModalHeaderProps
32
- extends React.ComponentPropsWithoutRef<typeof View> {
33
- className?: string;
34
- }
35
-
36
- export interface ModalBodyProps
37
- extends React.ComponentPropsWithoutRef<typeof View> {
38
- className?: string;
39
- }
40
-
41
- export interface ModalFooterProps
42
- extends React.ComponentPropsWithoutRef<typeof View> {
43
- className?: string;
44
- }
45
-
46
- export interface ModalCloseButtonProps
47
- extends React.ComponentPropsWithoutRef<typeof Pressable> {
48
- className?: string;
49
- }
1
+ import type { View, Pressable, Text as RNText } from 'react-native';
2
+
3
+ export type ModalSize = 'xs' | 'sm' | 'md' | 'lg' | 'full';
4
+
5
+ export interface ModalContextValue {
6
+ isOpen: boolean;
7
+ onClose: () => void;
8
+ size: ModalSize;
9
+ closeOnOverlayClick: boolean;
10
+ }
11
+
12
+ export interface ModalProps {
13
+ isOpen: boolean;
14
+ onClose: () => void;
15
+ size?: ModalSize;
16
+ closeOnOverlayClick?: boolean;
17
+ avoidKeyboard?: boolean;
18
+ children: React.ReactNode;
19
+ }
20
+
21
+ export interface ModalBackdropProps
22
+ extends React.ComponentPropsWithoutRef<typeof Pressable> {
23
+ className?: string;
24
+ }
25
+
26
+ export interface ModalContentProps
27
+ extends React.ComponentPropsWithoutRef<typeof View> {
28
+ className?: string;
29
+ }
30
+
31
+ export interface ModalHeaderProps
32
+ extends React.ComponentPropsWithoutRef<typeof View> {
33
+ className?: string;
34
+ }
35
+
36
+ export interface ModalBodyProps
37
+ extends React.ComponentPropsWithoutRef<typeof View> {
38
+ className?: string;
39
+ }
40
+
41
+ export interface ModalFooterProps
42
+ extends React.ComponentPropsWithoutRef<typeof View> {
43
+ className?: string;
44
+ }
45
+
46
+ export interface ModalCloseButtonProps
47
+ extends React.ComponentPropsWithoutRef<typeof Pressable> {
48
+ className?: string;
49
+ }
@@ -1 +1 @@
1
- /// <reference types="nativewind/types" />
1
+ /// <reference types="nativewind/types" />