@wireservers-ui/react-natives 2.0.1 → 2.0.2

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 (404) hide show
  1. package/CHANGELOG.md +94 -71
  2. package/LICENSE +21 -21
  3. package/README.md +653 -613
  4. package/bin/cli.js +83 -5
  5. package/bin/init.js +470 -324
  6. package/package.json +1 -1
  7. package/src/accordion/accordion-content.tsx +30 -30
  8. package/src/accordion/accordion-icon.tsx +54 -54
  9. package/src/accordion/accordion-item.tsx +37 -37
  10. package/src/accordion/accordion-title-text.tsx +24 -24
  11. package/src/accordion/accordion-trigger.tsx +38 -38
  12. package/src/accordion/accordion.tsx +91 -91
  13. package/src/accordion/index.ts +24 -24
  14. package/src/accordion/styles.ts +74 -74
  15. package/src/accordion/types.ts +56 -56
  16. package/src/actionsheet/actionsheet-backdrop.tsx +23 -23
  17. package/src/actionsheet/actionsheet-content.tsx +19 -19
  18. package/src/actionsheet/actionsheet-drag-indicator-wrapper.tsx +19 -19
  19. package/src/actionsheet/actionsheet-drag-indicator.tsx +19 -19
  20. package/src/actionsheet/actionsheet-item-text.tsx +19 -19
  21. package/src/actionsheet/actionsheet-item.tsx +20 -20
  22. package/src/actionsheet/actionsheet-scroll-view.tsx +12 -12
  23. package/src/actionsheet/actionsheet.tsx +45 -45
  24. package/src/actionsheet/index.ts +20 -20
  25. package/src/actionsheet/styles.ts +25 -25
  26. package/src/actionsheet/types.ts +49 -49
  27. package/src/alert/alert-body.tsx +19 -19
  28. package/src/alert/alert-close-button.tsx +23 -23
  29. package/src/alert/alert-icon.tsx +40 -40
  30. package/src/alert/alert-text.tsx +22 -22
  31. package/src/alert/alert.tsx +33 -33
  32. package/src/alert/index.ts +15 -15
  33. package/src/alert/styles.ts +112 -112
  34. package/src/alert/types.ts +36 -36
  35. package/src/alert-dialog/alert-dialog.tsx +54 -54
  36. package/src/alert-dialog/index.ts +2 -2
  37. package/src/alert-dialog/styles.ts +40 -40
  38. package/src/alert-dialog/types.ts +40 -40
  39. package/src/aspect-ratio/aspect-ratio.tsx +20 -20
  40. package/src/aspect-ratio/index.ts +2 -2
  41. package/src/aspect-ratio/styles.ts +6 -6
  42. package/src/aspect-ratio/types.ts +7 -7
  43. package/src/avatar/avatar-badge.tsx +22 -22
  44. package/src/avatar/avatar-fallback-text.tsx +33 -33
  45. package/src/avatar/avatar-group.tsx +53 -53
  46. package/src/avatar/avatar-image.tsx +21 -21
  47. package/src/avatar/avatar.tsx +27 -27
  48. package/src/avatar/index.ts +14 -14
  49. package/src/avatar/styles.ts +94 -94
  50. package/src/avatar/types.ts +35 -35
  51. package/src/badge/badge-icon.tsx +20 -20
  52. package/src/badge/badge-text.tsx +24 -24
  53. package/src/badge/badge.tsx +39 -39
  54. package/src/badge/index.ts +11 -11
  55. package/src/badge/styles.ts +175 -175
  56. package/src/badge/types.ts +37 -37
  57. package/src/blockquote/blockquote.tsx +21 -21
  58. package/src/blockquote/index.ts +2 -2
  59. package/src/blockquote/styles.ts +11 -11
  60. package/src/blockquote/types.ts +6 -6
  61. package/src/box/box.tsx +19 -19
  62. package/src/box/index.ts +2 -2
  63. package/src/box/styles.ts +6 -6
  64. package/src/box/types.ts +6 -6
  65. package/src/breadcrumb/breadcrumb-item.tsx +20 -20
  66. package/src/breadcrumb/breadcrumb-link.tsx +20 -20
  67. package/src/breadcrumb/breadcrumb-text.tsx +19 -19
  68. package/src/breadcrumb/breadcrumb.tsx +43 -43
  69. package/src/breadcrumb/index.ts +12 -12
  70. package/src/breadcrumb/styles.ts +36 -36
  71. package/src/breadcrumb/types.ts +33 -33
  72. package/src/button/button-group.tsx +35 -35
  73. package/src/button/button-icon.tsx +37 -37
  74. package/src/button/button-spinner.tsx +12 -12
  75. package/src/button/button-text.tsx +27 -27
  76. package/src/button/button.tsx +42 -42
  77. package/src/button/index.ts +19 -19
  78. package/src/button/styles.ts +250 -250
  79. package/src/button/types.ts +67 -67
  80. package/src/calendar/calendar-day-cell.tsx +67 -67
  81. package/src/calendar/calendar-day-view.tsx +66 -66
  82. package/src/calendar/calendar-event.tsx +59 -59
  83. package/src/calendar/calendar-header.tsx +60 -60
  84. package/src/calendar/calendar-horizontal-view.tsx +372 -372
  85. package/src/calendar/calendar-legend.tsx +41 -41
  86. package/src/calendar/calendar-month-view.tsx +47 -47
  87. package/src/calendar/calendar-vertical-view.tsx +395 -395
  88. package/src/calendar/calendar-view-switcher.tsx +65 -65
  89. package/src/calendar/calendar-week-view.tsx +52 -52
  90. package/src/calendar/calendar.tsx +74 -74
  91. package/src/calendar/index.ts +27 -27
  92. package/src/calendar/styles.ts +367 -367
  93. package/src/calendar/types.ts +101 -101
  94. package/src/calendar/use-calendar.ts +170 -170
  95. package/src/calendar/utils.ts +278 -278
  96. package/src/card/card-body.tsx +22 -22
  97. package/src/card/card-footer.tsx +19 -19
  98. package/src/card/card-header.tsx +22 -22
  99. package/src/card/card.tsx +27 -27
  100. package/src/card/index.ts +13 -13
  101. package/src/card/styles.ts +54 -54
  102. package/src/card/types.ts +31 -31
  103. package/src/carousel/carousel.tsx +436 -436
  104. package/src/carousel/index.ts +2 -2
  105. package/src/carousel/styles.ts +21 -21
  106. package/src/carousel/types.ts +41 -41
  107. package/src/center/center.tsx +19 -19
  108. package/src/center/index.ts +2 -2
  109. package/src/center/styles.ts +6 -6
  110. package/src/center/types.ts +6 -6
  111. package/src/checkbox/checkbox-group.tsx +63 -63
  112. package/src/checkbox/checkbox-icon.tsx +35 -35
  113. package/src/checkbox/checkbox-indicator.tsx +30 -30
  114. package/src/checkbox/checkbox-label.tsx +24 -24
  115. package/src/checkbox/checkbox.tsx +86 -86
  116. package/src/checkbox/index.ts +14 -14
  117. package/src/checkbox/styles.ts +69 -69
  118. package/src/checkbox/types.ts +55 -55
  119. package/src/circular-progress/circular-progress.tsx +82 -82
  120. package/src/circular-progress/index.ts +2 -2
  121. package/src/circular-progress/styles.ts +31 -31
  122. package/src/circular-progress/types.ts +18 -18
  123. package/src/code/code.tsx +36 -36
  124. package/src/code/index.ts +2 -2
  125. package/src/code/styles.ts +25 -25
  126. package/src/code/types.ts +13 -13
  127. package/src/collapsible/collapsible.tsx +58 -58
  128. package/src/collapsible/index.ts +2 -2
  129. package/src/collapsible/styles.ts +5 -5
  130. package/src/collapsible/types.ts +21 -21
  131. package/src/color-picker/color-picker-box.tsx +115 -115
  132. package/src/color-picker/color-picker-slider.tsx +98 -98
  133. package/src/color-picker/color-picker.tsx +162 -162
  134. package/src/color-picker/color-utils.ts +215 -215
  135. package/src/color-picker/index.ts +34 -34
  136. package/src/color-picker/styles.ts +32 -32
  137. package/src/color-picker/types.ts +49 -49
  138. package/src/color-picker/use-pointer-drag.ts +80 -80
  139. package/src/container/container.tsx +19 -19
  140. package/src/container/index.ts +2 -2
  141. package/src/container/styles.ts +21 -21
  142. package/src/container/types.ts +10 -10
  143. package/src/date-picker/date-picker.tsx +136 -136
  144. package/src/date-picker/index.ts +15 -15
  145. package/src/date-picker/styles.ts +18 -18
  146. package/src/date-picker/types.ts +33 -33
  147. package/src/divider/divider.tsx +21 -21
  148. package/src/divider/index.ts +2 -2
  149. package/src/divider/styles.ts +14 -14
  150. package/src/divider/types.ts +7 -7
  151. package/src/drawer/drawer-backdrop.tsx +23 -23
  152. package/src/drawer/drawer-body.tsx +19 -19
  153. package/src/drawer/drawer-close-button.tsx +29 -29
  154. package/src/drawer/drawer-content.tsx +142 -142
  155. package/src/drawer/drawer-footer.tsx +19 -19
  156. package/src/drawer/drawer-header.tsx +19 -19
  157. package/src/drawer/drawer.tsx +54 -54
  158. package/src/drawer/index.ts +22 -22
  159. package/src/drawer/styles.ts +36 -36
  160. package/src/drawer/types.ts +62 -62
  161. package/src/empty/empty.tsx +53 -53
  162. package/src/empty/index.ts +2 -2
  163. package/src/empty/styles.ts +26 -26
  164. package/src/empty/types.ts +22 -22
  165. package/src/fab/fab-icon.tsx +20 -20
  166. package/src/fab/fab-label.tsx +22 -22
  167. package/src/fab/fab.tsx +45 -45
  168. package/src/fab/index.ts +11 -11
  169. package/src/fab/styles.ts +57 -57
  170. package/src/fab/types.ts +33 -33
  171. package/src/form-control/form-control-error-icon.tsx +25 -25
  172. package/src/form-control/form-control-error-message.tsx +40 -40
  173. package/src/form-control/form-control-helper-text.tsx +25 -25
  174. package/src/form-control/form-control-label-text.tsx +25 -25
  175. package/src/form-control/form-control-label.tsx +36 -36
  176. package/src/form-control/form-control.tsx +46 -46
  177. package/src/form-control/index.ts +20 -20
  178. package/src/form-control/styles.ts +105 -105
  179. package/src/form-control/types.ts +45 -45
  180. package/src/heading/heading.tsx +21 -21
  181. package/src/heading/index.ts +2 -2
  182. package/src/heading/styles.ts +24 -24
  183. package/src/heading/types.ts +19 -19
  184. package/src/icon/icon.tsx +21 -21
  185. package/src/icon/index.ts +2 -2
  186. package/src/icon/styles.ts +18 -18
  187. package/src/icon/types.ts +8 -8
  188. package/src/icon-button/icon-button.tsx +23 -23
  189. package/src/icon-button/index.ts +2 -2
  190. package/src/icon-button/styles.ts +78 -78
  191. package/src/icon-button/types.ts +15 -15
  192. package/src/image/image.tsx +20 -20
  193. package/src/image/index.ts +2 -2
  194. package/src/image/styles.ts +28 -28
  195. package/src/image/types.ts +11 -11
  196. package/src/index.ts +1039 -1039
  197. package/src/input/index.ts +13 -13
  198. package/src/input/input-field.tsx +35 -35
  199. package/src/input/input-icon.tsx +25 -25
  200. package/src/input/input-slot.tsx +24 -24
  201. package/src/input/input.tsx +73 -73
  202. package/src/input/styles.ts +90 -90
  203. package/src/input/types.ts +39 -39
  204. package/src/kbd/index.ts +2 -2
  205. package/src/kbd/kbd.tsx +21 -21
  206. package/src/kbd/styles.ts +11 -11
  207. package/src/kbd/types.ts +7 -7
  208. package/src/link/index.ts +4 -4
  209. package/src/link/link-text.tsx +19 -19
  210. package/src/link/link.tsx +31 -31
  211. package/src/link/styles.ts +19 -19
  212. package/src/link/types.ts +13 -13
  213. package/src/list/index.ts +2 -2
  214. package/src/list/list.tsx +55 -55
  215. package/src/list/styles.ts +8 -8
  216. package/src/list/types.ts +17 -17
  217. package/src/menu/index.ts +2 -2
  218. package/src/menu/menu.tsx +99 -99
  219. package/src/menu/styles.ts +14 -14
  220. package/src/menu/types.ts +30 -30
  221. package/src/modal/index.ts +18 -18
  222. package/src/modal/modal-backdrop.tsx +23 -23
  223. package/src/modal/modal-body.tsx +19 -19
  224. package/src/modal/modal-close-button.tsx +29 -29
  225. package/src/modal/modal-content.tsx +22 -22
  226. package/src/modal/modal-footer.tsx +19 -19
  227. package/src/modal/modal-header.tsx +19 -19
  228. package/src/modal/modal.tsx +50 -50
  229. package/src/modal/styles.ts +37 -37
  230. package/src/modal/types.ts +49 -49
  231. package/src/nativewind-env.d.ts +1 -1
  232. package/src/number-input/index.ts +18 -18
  233. package/src/number-input/number-input.tsx +161 -161
  234. package/src/number-input/styles.ts +35 -35
  235. package/src/number-input/types.ts +44 -44
  236. package/src/overlay/index.ts +2 -2
  237. package/src/overlay/overlay.tsx +21 -21
  238. package/src/overlay/styles.ts +6 -6
  239. package/src/overlay/types.ts +7 -7
  240. package/src/pagination/index.ts +2 -2
  241. package/src/pagination/pagination.tsx +58 -58
  242. package/src/pagination/styles.ts +27 -27
  243. package/src/pagination/types.ts +19 -19
  244. package/src/password-input/index.ts +14 -14
  245. package/src/password-input/password-input.tsx +79 -79
  246. package/src/password-input/styles.ts +25 -25
  247. package/src/password-input/types.ts +24 -24
  248. package/src/pin-input/index.ts +12 -12
  249. package/src/pin-input/pin-input.tsx +96 -96
  250. package/src/pin-input/styles.ts +16 -16
  251. package/src/pin-input/types.ts +26 -26
  252. package/src/popover/index.ts +2 -2
  253. package/src/popover/popover.tsx +98 -98
  254. package/src/popover/styles.ts +31 -31
  255. package/src/popover/types.ts +46 -46
  256. package/src/portal/index.ts +2 -2
  257. package/src/portal/portal.tsx +8 -8
  258. package/src/portal/styles.ts +2 -2
  259. package/src/portal/types.ts +3 -3
  260. package/src/pressable/index.ts +2 -2
  261. package/src/pressable/pressable.tsx +20 -20
  262. package/src/pressable/styles.ts +10 -10
  263. package/src/pressable/types.ts +6 -6
  264. package/src/progress/index.ts +9 -9
  265. package/src/progress/progress-filled-track.tsx +26 -26
  266. package/src/progress/progress.tsx +52 -52
  267. package/src/progress/styles.ts +34 -34
  268. package/src/progress/types.ts +28 -28
  269. package/src/radio/index.ts +14 -14
  270. package/src/radio/radio-group.tsx +61 -61
  271. package/src/radio/radio-icon.tsx +24 -24
  272. package/src/radio/radio-indicator.tsx +30 -30
  273. package/src/radio/radio-label.tsx +24 -24
  274. package/src/radio/radio.tsx +68 -68
  275. package/src/radio/styles.ts +69 -69
  276. package/src/radio/types.ts +51 -51
  277. package/src/rating/index.ts +7 -7
  278. package/src/rating/rating.tsx +93 -93
  279. package/src/rating/styles.ts +13 -13
  280. package/src/rating/types.ts +29 -29
  281. package/src/search-input/index.ts +16 -16
  282. package/src/search-input/search-input.tsx +119 -119
  283. package/src/search-input/styles.ts +28 -28
  284. package/src/search-input/types.ts +31 -31
  285. package/src/segmented-control/index.ts +2 -2
  286. package/src/segmented-control/segmented-control.tsx +34 -34
  287. package/src/segmented-control/styles.ts +22 -22
  288. package/src/segmented-control/types.ts +22 -22
  289. package/src/select/index.ts +28 -28
  290. package/src/select/select-backdrop.tsx +25 -25
  291. package/src/select/select-content.tsx +49 -49
  292. package/src/select/select-drag-indicator.tsx +19 -19
  293. package/src/select/select-icon.tsx +25 -25
  294. package/src/select/select-input.tsx +32 -32
  295. package/src/select/select-item-text.tsx +30 -30
  296. package/src/select/select-item.tsx +72 -72
  297. package/src/select/select-portal.tsx +22 -22
  298. package/src/select/select-scroll-view.tsx +22 -22
  299. package/src/select/select-trigger.tsx +64 -64
  300. package/src/select/select.tsx +101 -101
  301. package/src/select/styles.ts +114 -114
  302. package/src/select/types.ts +92 -92
  303. package/src/skeleton/index.ts +2 -2
  304. package/src/skeleton/skeleton.tsx +29 -29
  305. package/src/skeleton/styles.ts +14 -14
  306. package/src/skeleton/types.ts +12 -12
  307. package/src/slider/index.ts +12 -12
  308. package/src/slider/slider-filled-track.tsx +31 -31
  309. package/src/slider/slider-thumb.tsx +52 -52
  310. package/src/slider/slider-track.tsx +154 -154
  311. package/src/slider/slider.tsx +193 -193
  312. package/src/slider/styles.ts +71 -71
  313. package/src/slider/types.ts +47 -47
  314. package/src/snackbar/index.ts +2 -2
  315. package/src/snackbar/snackbar.tsx +39 -39
  316. package/src/snackbar/styles.ts +29 -29
  317. package/src/snackbar/types.ts +21 -21
  318. package/src/spinner/index.ts +2 -2
  319. package/src/spinner/spinner.tsx +29 -29
  320. package/src/spinner/styles.ts +15 -15
  321. package/src/spinner/types.ts +10 -10
  322. package/src/stack/index.ts +2 -2
  323. package/src/stack/stack.tsx +49 -49
  324. package/src/stack/styles.ts +25 -25
  325. package/src/stack/types.ts +15 -15
  326. package/src/stat/index.ts +2 -2
  327. package/src/stat/stat.tsx +48 -48
  328. package/src/stat/styles.ts +34 -34
  329. package/src/stat/types.ts +24 -24
  330. package/src/stepper/index.ts +2 -2
  331. package/src/stepper/stepper.tsx +95 -95
  332. package/src/stepper/styles.ts +49 -49
  333. package/src/stepper/types.ts +20 -20
  334. package/src/switch/index.ts +2 -2
  335. package/src/switch/styles.ts +24 -24
  336. package/src/switch/switch.tsx +67 -67
  337. package/src/switch/types.ts +23 -23
  338. package/src/table/index.ts +2 -2
  339. package/src/table/styles.ts +12 -12
  340. package/src/table/table.tsx +52 -52
  341. package/src/table/types.ts +10 -10
  342. package/src/tabs/index.ts +18 -18
  343. package/src/tabs/styles.ts +113 -113
  344. package/src/tabs/tab-list.tsx +29 -29
  345. package/src/tabs/tab-panel.tsx +29 -29
  346. package/src/tabs/tab-panels.tsx +21 -21
  347. package/src/tabs/tab-text.tsx +26 -26
  348. package/src/tabs/tab.tsx +56 -56
  349. package/src/tabs/tabs.tsx +71 -71
  350. package/src/tabs/types.ts +53 -53
  351. package/src/tag/index.ts +14 -14
  352. package/src/tag/styles.ts +115 -115
  353. package/src/tag/tag-close-button.tsx +26 -26
  354. package/src/tag/tag-icon.tsx +20 -20
  355. package/src/tag/tag-text.tsx +22 -22
  356. package/src/tag/tag.tsx +40 -40
  357. package/src/tag/types.ts +33 -33
  358. package/src/tags-input/index.ts +18 -18
  359. package/src/tags-input/styles.ts +29 -29
  360. package/src/tags-input/tags-input.tsx +149 -149
  361. package/src/tags-input/types.ts +37 -37
  362. package/src/text/index.ts +2 -2
  363. package/src/text/styles.ts +54 -54
  364. package/src/text/text.tsx +51 -51
  365. package/src/text/types.ts +36 -36
  366. package/src/textarea/index.ts +2 -2
  367. package/src/textarea/styles.ts +37 -37
  368. package/src/textarea/textarea.tsx +68 -68
  369. package/src/textarea/types.ts +14 -14
  370. package/src/timeline/index.ts +2 -2
  371. package/src/timeline/styles.ts +57 -57
  372. package/src/timeline/timeline.tsx +52 -52
  373. package/src/timeline/types.ts +30 -30
  374. package/src/toast/index.ts +17 -17
  375. package/src/toast/styles.ts +118 -118
  376. package/src/toast/toast-description.tsx +22 -22
  377. package/src/toast/toast-provider.tsx +136 -136
  378. package/src/toast/toast-title.tsx +22 -22
  379. package/src/toast/toast.tsx +43 -43
  380. package/src/toast/types.ts +50 -50
  381. package/src/toast/use-toast.ts +7 -7
  382. package/src/toggle/index.ts +2 -2
  383. package/src/toggle/styles.ts +30 -30
  384. package/src/toggle/toggle.tsx +25 -25
  385. package/src/toggle/types.ts +15 -15
  386. package/src/toggle-group/index.ts +2 -2
  387. package/src/toggle-group/styles.ts +35 -35
  388. package/src/toggle-group/toggle-group.tsx +60 -60
  389. package/src/toggle-group/types.ts +29 -29
  390. package/src/tooltip/index.ts +11 -11
  391. package/src/tooltip/styles.ts +9 -9
  392. package/src/tooltip/tooltip-content.tsx +19 -19
  393. package/src/tooltip/tooltip-text.tsx +19 -19
  394. package/src/tooltip/tooltip.tsx +116 -116
  395. package/src/tooltip/types.ts +35 -35
  396. package/src/utils/brand.ts +5 -5
  397. package/src/utils/create-context.ts +17 -17
  398. package/src/utils/index.ts +8 -8
  399. package/src/utils/types.ts +20 -20
  400. package/src/visually-hidden/index.ts +2 -2
  401. package/src/visually-hidden/styles.ts +6 -6
  402. package/src/visually-hidden/types.ts +6 -6
  403. package/src/visually-hidden/visually-hidden.tsx +22 -22
  404. package/tailwind-preset.js +212 -203
@@ -1,22 +1,22 @@
1
- import React from 'react';
2
- import { View } from 'react-native';
3
- import { useAvatarContext } from './avatar';
4
- import type { AvatarBadgeProps } from './types';
5
- import { avatarBadgeStyle } from './styles';
6
-
7
- export const AvatarBadge = React.forwardRef<
8
- React.ElementRef<typeof View>,
9
- AvatarBadgeProps
10
- >(({ className, ...props }, ref) => {
11
- const { size } = useAvatarContext();
12
-
13
- return (
14
- <View
15
- ref={ref}
16
- className={avatarBadgeStyle({ size, class: className })}
17
- {...props}
18
- />
19
- );
20
- });
21
-
22
- AvatarBadge.displayName = 'AvatarBadge';
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import { useAvatarContext } from './avatar';
4
+ import type { AvatarBadgeProps } from './types';
5
+ import { avatarBadgeStyle } from './styles';
6
+
7
+ export const AvatarBadge = React.forwardRef<
8
+ React.ElementRef<typeof View>,
9
+ AvatarBadgeProps
10
+ >(({ className, ...props }, ref) => {
11
+ const { size } = useAvatarContext();
12
+
13
+ return (
14
+ <View
15
+ ref={ref}
16
+ className={avatarBadgeStyle({ size, class: className })}
17
+ {...props}
18
+ />
19
+ );
20
+ });
21
+
22
+ AvatarBadge.displayName = 'AvatarBadge';
@@ -1,33 +1,33 @@
1
- import React from 'react';
2
- import { Text } from 'react-native';
3
- import { useAvatarContext } from './avatar';
4
- import type { AvatarFallbackTextProps } from './types';
5
- import { avatarFallbackTextStyle } from './styles';
6
-
7
- export const AvatarFallbackText = React.forwardRef<
8
- React.ElementRef<typeof Text>,
9
- AvatarFallbackTextProps
10
- >(({ className, children, ...props }, ref) => {
11
- const { size } = useAvatarContext();
12
-
13
- const initials =
14
- typeof children === 'string'
15
- ? children
16
- .split(' ')
17
- .map((w) => w[0])
18
- .join('')
19
- .slice(0, 2)
20
- : children;
21
-
22
- return (
23
- <Text
24
- ref={ref}
25
- className={avatarFallbackTextStyle({ size, class: className })}
26
- {...props}
27
- >
28
- {initials}
29
- </Text>
30
- );
31
- });
32
-
33
- AvatarFallbackText.displayName = 'AvatarFallbackText';
1
+ import React from 'react';
2
+ import { Text } from 'react-native';
3
+ import { useAvatarContext } from './avatar';
4
+ import type { AvatarFallbackTextProps } from './types';
5
+ import { avatarFallbackTextStyle } from './styles';
6
+
7
+ export const AvatarFallbackText = React.forwardRef<
8
+ React.ElementRef<typeof Text>,
9
+ AvatarFallbackTextProps
10
+ >(({ className, children, ...props }, ref) => {
11
+ const { size } = useAvatarContext();
12
+
13
+ const initials =
14
+ typeof children === 'string'
15
+ ? children
16
+ .split(' ')
17
+ .map((w) => w[0])
18
+ .join('')
19
+ .slice(0, 2)
20
+ : children;
21
+
22
+ return (
23
+ <Text
24
+ ref={ref}
25
+ className={avatarFallbackTextStyle({ size, class: className })}
26
+ {...props}
27
+ >
28
+ {initials}
29
+ </Text>
30
+ );
31
+ });
32
+
33
+ AvatarFallbackText.displayName = 'AvatarFallbackText';
@@ -1,53 +1,53 @@
1
- import React from 'react';
2
- import { View, Text } from 'react-native';
3
- import type { AvatarGroupProps, AvatarSize } from './types';
4
- import {
5
- avatarGroupStyle,
6
- avatarGroupOverflowStyle,
7
- avatarGroupOverflowTextStyle,
8
- } from './styles';
9
-
10
- export const AvatarGroup = React.forwardRef<
11
- React.ElementRef<typeof View>,
12
- AvatarGroupProps
13
- >(({ className, max, children, ...props }, ref) => {
14
- const childArray = React.Children.toArray(children);
15
- const totalCount = childArray.length;
16
- const shouldTruncate = max != null && totalCount > max;
17
- const visibleChildren = shouldTruncate
18
- ? childArray.slice(0, max)
19
- : childArray;
20
- const overflowCount = shouldTruncate ? totalCount - max : 0;
21
-
22
- // Try to read size from first Avatar child
23
- const firstChild = childArray[0];
24
- const size: AvatarSize =
25
- React.isValidElement<{ size?: AvatarSize }>(firstChild) && firstChild.props.size
26
- ? firstChild.props.size
27
- : 'md';
28
-
29
- return (
30
- <View
31
- ref={ref}
32
- className={avatarGroupStyle({ class: className })}
33
- {...props}
34
- >
35
- {visibleChildren.map((child, index) => (
36
- <View key={index} className={index > 0 ? '-ml-2' : ''}>
37
- {child}
38
- </View>
39
- ))}
40
- {shouldTruncate && (
41
- <View className="-ml-2">
42
- <View className={avatarGroupOverflowStyle({ size })}>
43
- <Text className={avatarGroupOverflowTextStyle({ size })}>
44
- +{overflowCount}
45
- </Text>
46
- </View>
47
- </View>
48
- )}
49
- </View>
50
- );
51
- });
52
-
53
- AvatarGroup.displayName = 'AvatarGroup';
1
+ import React from 'react';
2
+ import { View, Text } from 'react-native';
3
+ import type { AvatarGroupProps, AvatarSize } from './types';
4
+ import {
5
+ avatarGroupStyle,
6
+ avatarGroupOverflowStyle,
7
+ avatarGroupOverflowTextStyle,
8
+ } from './styles';
9
+
10
+ export const AvatarGroup = React.forwardRef<
11
+ React.ElementRef<typeof View>,
12
+ AvatarGroupProps
13
+ >(({ className, max, children, ...props }, ref) => {
14
+ const childArray = React.Children.toArray(children);
15
+ const totalCount = childArray.length;
16
+ const shouldTruncate = max != null && totalCount > max;
17
+ const visibleChildren = shouldTruncate
18
+ ? childArray.slice(0, max)
19
+ : childArray;
20
+ const overflowCount = shouldTruncate ? totalCount - max : 0;
21
+
22
+ // Try to read size from first Avatar child
23
+ const firstChild = childArray[0];
24
+ const size: AvatarSize =
25
+ React.isValidElement<{ size?: AvatarSize }>(firstChild) && firstChild.props.size
26
+ ? firstChild.props.size
27
+ : 'md';
28
+
29
+ return (
30
+ <View
31
+ ref={ref}
32
+ className={avatarGroupStyle({ class: className })}
33
+ {...props}
34
+ >
35
+ {visibleChildren.map((child, index) => (
36
+ <View key={index} className={index > 0 ? '-ml-2' : ''}>
37
+ {child}
38
+ </View>
39
+ ))}
40
+ {shouldTruncate && (
41
+ <View className="-ml-2">
42
+ <View className={avatarGroupOverflowStyle({ size })}>
43
+ <Text className={avatarGroupOverflowTextStyle({ size })}>
44
+ +{overflowCount}
45
+ </Text>
46
+ </View>
47
+ </View>
48
+ )}
49
+ </View>
50
+ );
51
+ });
52
+
53
+ AvatarGroup.displayName = 'AvatarGroup';
@@ -1,21 +1,21 @@
1
- import React from 'react';
2
- import { Image } from 'react-native';
3
- import type { AvatarImageProps } from './types';
4
- import { avatarImageStyle } from './styles';
5
-
6
- export const AvatarImage = React.forwardRef<
7
- React.ElementRef<typeof Image>,
8
- AvatarImageProps
9
- >(({ className, source, alt, ...props }, ref) => {
10
- return (
11
- <Image
12
- ref={ref}
13
- source={source as any}
14
- accessibilityLabel={alt}
15
- className={avatarImageStyle({ class: className })}
16
- {...props}
17
- />
18
- );
19
- });
20
-
21
- AvatarImage.displayName = 'AvatarImage';
1
+ import React from 'react';
2
+ import { Image } from 'react-native';
3
+ import type { AvatarImageProps } from './types';
4
+ import { avatarImageStyle } from './styles';
5
+
6
+ export const AvatarImage = React.forwardRef<
7
+ React.ElementRef<typeof Image>,
8
+ AvatarImageProps
9
+ >(({ className, source, alt, ...props }, ref) => {
10
+ return (
11
+ <Image
12
+ ref={ref}
13
+ source={source as any}
14
+ accessibilityLabel={alt}
15
+ className={avatarImageStyle({ class: className })}
16
+ {...props}
17
+ />
18
+ );
19
+ });
20
+
21
+ AvatarImage.displayName = 'AvatarImage';
@@ -1,27 +1,27 @@
1
- import React from 'react';
2
- import { View } from 'react-native';
3
- import { createComponentContext } from '../utils/create-context';
4
- import type { AvatarProps, AvatarContextValue } from './types';
5
- import { avatarStyle } from './styles';
6
-
7
- export const [AvatarProvider, useAvatarContext] =
8
- createComponentContext<AvatarContextValue>('Avatar');
9
-
10
- export const Avatar = React.forwardRef<
11
- React.ElementRef<typeof View>,
12
- AvatarProps
13
- >(({ className, size = 'md', children, ...props }, ref) => {
14
- return (
15
- <AvatarProvider value={{ size }}>
16
- <View
17
- ref={ref}
18
- className={avatarStyle({ size, class: className })}
19
- {...props}
20
- >
21
- {children}
22
- </View>
23
- </AvatarProvider>
24
- );
25
- });
26
-
27
- Avatar.displayName = 'Avatar';
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import { createComponentContext } from '../utils/create-context';
4
+ import type { AvatarProps, AvatarContextValue } from './types';
5
+ import { avatarStyle } from './styles';
6
+
7
+ export const [AvatarProvider, useAvatarContext] =
8
+ createComponentContext<AvatarContextValue>('Avatar');
9
+
10
+ export const Avatar = React.forwardRef<
11
+ React.ElementRef<typeof View>,
12
+ AvatarProps
13
+ >(({ className, size = 'md', children, ...props }, ref) => {
14
+ return (
15
+ <AvatarProvider value={{ size }}>
16
+ <View
17
+ ref={ref}
18
+ className={avatarStyle({ size, class: className })}
19
+ {...props}
20
+ >
21
+ {children}
22
+ </View>
23
+ </AvatarProvider>
24
+ );
25
+ });
26
+
27
+ Avatar.displayName = 'Avatar';
@@ -1,14 +1,14 @@
1
- export { Avatar } from './avatar';
2
- export { AvatarImage } from './avatar-image';
3
- export { AvatarFallbackText } from './avatar-fallback-text';
4
- export { AvatarBadge } from './avatar-badge';
5
- export { AvatarGroup } from './avatar-group';
6
-
7
- export type {
8
- AvatarProps,
9
- AvatarImageProps,
10
- AvatarFallbackTextProps,
11
- AvatarBadgeProps,
12
- AvatarGroupProps,
13
- AvatarSize,
14
- } from './types';
1
+ export { Avatar } from './avatar';
2
+ export { AvatarImage } from './avatar-image';
3
+ export { AvatarFallbackText } from './avatar-fallback-text';
4
+ export { AvatarBadge } from './avatar-badge';
5
+ export { AvatarGroup } from './avatar-group';
6
+
7
+ export type {
8
+ AvatarProps,
9
+ AvatarImageProps,
10
+ AvatarFallbackTextProps,
11
+ AvatarBadgeProps,
12
+ AvatarGroupProps,
13
+ AvatarSize,
14
+ } from './types';
@@ -1,94 +1,94 @@
1
- import { tv } from 'tailwind-variants';
2
-
3
- export const avatarStyle = tv({
4
- base: 'rounded-full items-center justify-center bg-primary-500 overflow-hidden relative',
5
- variants: {
6
- size: {
7
- 'xs': 'h-6 w-6',
8
- 'sm': 'h-8 w-8',
9
- 'md': 'h-10 w-10',
10
- 'lg': 'h-12 w-12',
11
- 'xl': 'h-14 w-14',
12
- '2xl': 'h-16 w-16',
13
- },
14
- },
15
- defaultVariants: {
16
- size: 'md',
17
- },
18
- });
19
-
20
- export const avatarImageStyle = tv({
21
- base: 'h-full w-full rounded-full absolute',
22
- });
23
-
24
- export const avatarFallbackTextStyle = tv({
25
- base: 'text-typography-0 font-semibold uppercase',
26
- variants: {
27
- size: {
28
- 'xs': 'text-2xs',
29
- 'sm': 'text-xs',
30
- 'md': 'text-sm',
31
- 'lg': 'text-base',
32
- 'xl': 'text-lg',
33
- '2xl': 'text-xl',
34
- },
35
- },
36
- defaultVariants: {
37
- size: 'md',
38
- },
39
- });
40
-
41
- export const avatarBadgeStyle = tv({
42
- base: 'absolute rounded-full bg-success-500 border-2 border-background-0',
43
- variants: {
44
- size: {
45
- 'xs': 'h-2 w-2 bottom-0 right-0',
46
- 'sm': 'h-2.5 w-2.5 bottom-0 right-0',
47
- 'md': 'h-3 w-3 bottom-0 right-0',
48
- 'lg': 'h-3.5 w-3.5 bottom-0 right-0',
49
- 'xl': 'h-4 w-4 bottom-0 right-0',
50
- '2xl': 'h-4 w-4 bottom-0.5 right-0.5',
51
- },
52
- },
53
- defaultVariants: {
54
- size: 'md',
55
- },
56
- });
57
-
58
- export const avatarGroupStyle = tv({
59
- base: 'flex-row items-center',
60
- });
61
-
62
- export const avatarGroupOverflowStyle = tv({
63
- base: 'rounded-full items-center justify-center bg-background-300',
64
- variants: {
65
- size: {
66
- 'xs': 'h-6 w-6',
67
- 'sm': 'h-8 w-8',
68
- 'md': 'h-10 w-10',
69
- 'lg': 'h-12 w-12',
70
- 'xl': 'h-14 w-14',
71
- '2xl': 'h-16 w-16',
72
- },
73
- },
74
- defaultVariants: {
75
- size: 'md',
76
- },
77
- });
78
-
79
- export const avatarGroupOverflowTextStyle = tv({
80
- base: 'text-typography-700 font-semibold',
81
- variants: {
82
- size: {
83
- 'xs': 'text-2xs',
84
- 'sm': 'text-xs',
85
- 'md': 'text-xs',
86
- 'lg': 'text-sm',
87
- 'xl': 'text-base',
88
- '2xl': 'text-lg',
89
- },
90
- },
91
- defaultVariants: {
92
- size: 'md',
93
- },
94
- });
1
+ import { tv } from 'tailwind-variants';
2
+
3
+ export const avatarStyle = tv({
4
+ base: 'rounded-full items-center justify-center bg-primary-500 overflow-hidden relative',
5
+ variants: {
6
+ size: {
7
+ 'xs': 'h-6 w-6',
8
+ 'sm': 'h-8 w-8',
9
+ 'md': 'h-10 w-10',
10
+ 'lg': 'h-12 w-12',
11
+ 'xl': 'h-14 w-14',
12
+ '2xl': 'h-16 w-16',
13
+ },
14
+ },
15
+ defaultVariants: {
16
+ size: 'md',
17
+ },
18
+ });
19
+
20
+ export const avatarImageStyle = tv({
21
+ base: 'h-full w-full rounded-full absolute',
22
+ });
23
+
24
+ export const avatarFallbackTextStyle = tv({
25
+ base: 'text-typography-0 font-semibold uppercase',
26
+ variants: {
27
+ size: {
28
+ 'xs': 'text-2xs',
29
+ 'sm': 'text-xs',
30
+ 'md': 'text-sm',
31
+ 'lg': 'text-base',
32
+ 'xl': 'text-lg',
33
+ '2xl': 'text-xl',
34
+ },
35
+ },
36
+ defaultVariants: {
37
+ size: 'md',
38
+ },
39
+ });
40
+
41
+ export const avatarBadgeStyle = tv({
42
+ base: 'absolute rounded-full bg-success-500 border-2 border-background-0',
43
+ variants: {
44
+ size: {
45
+ 'xs': 'h-2 w-2 bottom-0 right-0',
46
+ 'sm': 'h-2.5 w-2.5 bottom-0 right-0',
47
+ 'md': 'h-3 w-3 bottom-0 right-0',
48
+ 'lg': 'h-3.5 w-3.5 bottom-0 right-0',
49
+ 'xl': 'h-4 w-4 bottom-0 right-0',
50
+ '2xl': 'h-4 w-4 bottom-0.5 right-0.5',
51
+ },
52
+ },
53
+ defaultVariants: {
54
+ size: 'md',
55
+ },
56
+ });
57
+
58
+ export const avatarGroupStyle = tv({
59
+ base: 'flex-row items-center',
60
+ });
61
+
62
+ export const avatarGroupOverflowStyle = tv({
63
+ base: 'rounded-full items-center justify-center bg-background-300',
64
+ variants: {
65
+ size: {
66
+ 'xs': 'h-6 w-6',
67
+ 'sm': 'h-8 w-8',
68
+ 'md': 'h-10 w-10',
69
+ 'lg': 'h-12 w-12',
70
+ 'xl': 'h-14 w-14',
71
+ '2xl': 'h-16 w-16',
72
+ },
73
+ },
74
+ defaultVariants: {
75
+ size: 'md',
76
+ },
77
+ });
78
+
79
+ export const avatarGroupOverflowTextStyle = tv({
80
+ base: 'text-typography-700 font-semibold',
81
+ variants: {
82
+ size: {
83
+ 'xs': 'text-2xs',
84
+ 'sm': 'text-xs',
85
+ 'md': 'text-xs',
86
+ 'lg': 'text-sm',
87
+ 'xl': 'text-base',
88
+ '2xl': 'text-lg',
89
+ },
90
+ },
91
+ defaultVariants: {
92
+ size: 'md',
93
+ },
94
+ });
@@ -1,35 +1,35 @@
1
- import type { View, Text as RNText, ImageSourcePropType } from 'react-native';
2
-
3
- export type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
4
-
5
- export interface AvatarContextValue {
6
- size: AvatarSize;
7
- }
8
-
9
- export interface AvatarProps
10
- extends React.ComponentPropsWithoutRef<typeof View> {
11
- className?: string;
12
- size?: AvatarSize;
13
- }
14
-
15
- export interface AvatarImageProps {
16
- className?: string;
17
- source: ImageSourcePropType | { uri: string };
18
- alt?: string;
19
- }
20
-
21
- export interface AvatarFallbackTextProps
22
- extends React.ComponentPropsWithoutRef<typeof RNText> {
23
- className?: string;
24
- }
25
-
26
- export interface AvatarBadgeProps
27
- extends React.ComponentPropsWithoutRef<typeof View> {
28
- className?: string;
29
- }
30
-
31
- export interface AvatarGroupProps
32
- extends React.ComponentPropsWithoutRef<typeof View> {
33
- className?: string;
34
- max?: number;
35
- }
1
+ import type { View, Text as RNText, ImageSourcePropType } from 'react-native';
2
+
3
+ export type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
4
+
5
+ export interface AvatarContextValue {
6
+ size: AvatarSize;
7
+ }
8
+
9
+ export interface AvatarProps
10
+ extends React.ComponentPropsWithoutRef<typeof View> {
11
+ className?: string;
12
+ size?: AvatarSize;
13
+ }
14
+
15
+ export interface AvatarImageProps {
16
+ className?: string;
17
+ source: ImageSourcePropType | { uri: string };
18
+ alt?: string;
19
+ }
20
+
21
+ export interface AvatarFallbackTextProps
22
+ extends React.ComponentPropsWithoutRef<typeof RNText> {
23
+ className?: string;
24
+ }
25
+
26
+ export interface AvatarBadgeProps
27
+ extends React.ComponentPropsWithoutRef<typeof View> {
28
+ className?: string;
29
+ }
30
+
31
+ export interface AvatarGroupProps
32
+ extends React.ComponentPropsWithoutRef<typeof View> {
33
+ className?: string;
34
+ max?: number;
35
+ }
@@ -1,20 +1,20 @@
1
- import React from 'react';
2
- import { useBadgeContext } from './badge';
3
- import type { BadgeIconProps } from './types';
4
- import { badgeIconStyle } from './styles';
5
-
6
- export const BadgeIcon = React.forwardRef<any, BadgeIconProps>(
7
- ({ as: IconComponent, className, ...props }, ref) => {
8
- const { action, variant, size } = useBadgeContext();
9
-
10
- return (
11
- <IconComponent
12
- ref={ref}
13
- className={badgeIconStyle({ action, variant, size, class: className })}
14
- {...props}
15
- />
16
- );
17
- },
18
- );
19
-
20
- BadgeIcon.displayName = 'BadgeIcon';
1
+ import React from 'react';
2
+ import { useBadgeContext } from './badge';
3
+ import type { BadgeIconProps } from './types';
4
+ import { badgeIconStyle } from './styles';
5
+
6
+ export const BadgeIcon = React.forwardRef<any, BadgeIconProps>(
7
+ ({ as: IconComponent, className, ...props }, ref) => {
8
+ const { action, variant, size } = useBadgeContext();
9
+
10
+ return (
11
+ <IconComponent
12
+ ref={ref}
13
+ className={badgeIconStyle({ action, variant, size, class: className })}
14
+ {...props}
15
+ />
16
+ );
17
+ },
18
+ );
19
+
20
+ BadgeIcon.displayName = 'BadgeIcon';