@lssm/lib.ui-kit 0.0.0-canary-20251120170226

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 (397) hide show
  1. package/README.md +75 -0
  2. package/dist/index.d.ts +5 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +6 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/node_modules/@hookform/resolvers/dist/resolvers.js +35 -0
  7. package/dist/node_modules/@hookform/resolvers/dist/resolvers.js.map +1 -0
  8. package/dist/node_modules/@hookform/resolvers/zod/dist/zod.js +119 -0
  9. package/dist/node_modules/@hookform/resolvers/zod/dist/zod.js.map +1 -0
  10. package/dist/node_modules/react-hook-form/dist/index.esm.js +2062 -0
  11. package/dist/node_modules/react-hook-form/dist/index.esm.js.map +1 -0
  12. package/dist/node_modules/zod/v4/classic/errors.js +30 -0
  13. package/dist/node_modules/zod/v4/classic/errors.js.map +1 -0
  14. package/dist/node_modules/zod/v4/classic/iso.js +38 -0
  15. package/dist/node_modules/zod/v4/classic/iso.js.map +1 -0
  16. package/dist/node_modules/zod/v4/classic/parse.js +20 -0
  17. package/dist/node_modules/zod/v4/classic/parse.js.map +1 -0
  18. package/dist/node_modules/zod/v4/classic/schemas.js +395 -0
  19. package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -0
  20. package/dist/node_modules/zod/v4/core/api.js +377 -0
  21. package/dist/node_modules/zod/v4/core/api.js.map +1 -0
  22. package/dist/node_modules/zod/v4/core/checks.js +226 -0
  23. package/dist/node_modules/zod/v4/core/checks.js.map +1 -0
  24. package/dist/node_modules/zod/v4/core/core.js +57 -0
  25. package/dist/node_modules/zod/v4/core/core.js.map +1 -0
  26. package/dist/node_modules/zod/v4/core/errors.js +63 -0
  27. package/dist/node_modules/zod/v4/core/errors.js.map +1 -0
  28. package/dist/node_modules/zod/v4/core/parse.js +110 -0
  29. package/dist/node_modules/zod/v4/core/parse.js.map +1 -0
  30. package/dist/node_modules/zod/v4/core/regexes.js +59 -0
  31. package/dist/node_modules/zod/v4/core/regexes.js.map +1 -0
  32. package/dist/node_modules/zod/v4/core/registries.js +53 -0
  33. package/dist/node_modules/zod/v4/core/registries.js.map +1 -0
  34. package/dist/node_modules/zod/v4/core/schemas.js +755 -0
  35. package/dist/node_modules/zod/v4/core/schemas.js.map +1 -0
  36. package/dist/node_modules/zod/v4/core/util.js +152 -0
  37. package/dist/node_modules/zod/v4/core/util.js.map +1 -0
  38. package/dist/node_modules/zod/v4/core/versions.js +10 -0
  39. package/dist/node_modules/zod/v4/core/versions.js.map +1 -0
  40. package/dist/tsconfig.tsbuildinfo +1 -0
  41. package/dist/ui/accordion.d.ts +36 -0
  42. package/dist/ui/accordion.d.ts.map +1 -0
  43. package/dist/ui/accordion.js +93 -0
  44. package/dist/ui/accordion.js.map +1 -0
  45. package/dist/ui/alert-dialog.d.ts +72 -0
  46. package/dist/ui/alert-dialog.d.ts.map +1 -0
  47. package/dist/ui/alert-dialog.js +98 -0
  48. package/dist/ui/alert-dialog.js.map +1 -0
  49. package/dist/ui/alert.d.ts +37 -0
  50. package/dist/ui/alert.d.ts.map +1 -0
  51. package/dist/ui/alert.js +50 -0
  52. package/dist/ui/alert.js.map +1 -0
  53. package/dist/ui/aspect-ratio.d.ts +12 -0
  54. package/dist/ui/aspect-ratio.d.ts.map +1 -0
  55. package/dist/ui/aspect-ratio.js +8 -0
  56. package/dist/ui/aspect-ratio.js.map +1 -0
  57. package/dist/ui/atoms/FilterSelect/FilterSelect.d.ts +8 -0
  58. package/dist/ui/atoms/FilterSelect/FilterSelect.d.ts.map +1 -0
  59. package/dist/ui/atoms/FilterSelect/FilterSelect.js +58 -0
  60. package/dist/ui/atoms/FilterSelect/FilterSelect.js.map +1 -0
  61. package/dist/ui/atoms/FilterSelect/index.d.ts +3 -0
  62. package/dist/ui/atoms/FilterSelect/index.js +3 -0
  63. package/dist/ui/atoms/FilterSelect/types.d.ts +19 -0
  64. package/dist/ui/atoms/FilterSelect/types.d.ts.map +1 -0
  65. package/dist/ui/atoms/FilterSelect/types.js +0 -0
  66. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.d.ts +23 -0
  67. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.d.ts.map +1 -0
  68. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.js +48 -0
  69. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.js.map +1 -0
  70. package/dist/ui/atoms/LoadingSpinner/index.d.ts +2 -0
  71. package/dist/ui/atoms/LoadingSpinner/index.js +3 -0
  72. package/dist/ui/atoms/Pagination/Pagination.d.ts +8 -0
  73. package/dist/ui/atoms/Pagination/Pagination.d.ts.map +1 -0
  74. package/dist/ui/atoms/Pagination/Pagination.js +163 -0
  75. package/dist/ui/atoms/Pagination/Pagination.js.map +1 -0
  76. package/dist/ui/atoms/Pagination/index.d.ts +3 -0
  77. package/dist/ui/atoms/Pagination/index.js +3 -0
  78. package/dist/ui/atoms/Pagination/types.d.ts +16 -0
  79. package/dist/ui/atoms/Pagination/types.d.ts.map +1 -0
  80. package/dist/ui/atoms/Pagination/types.js +0 -0
  81. package/dist/ui/atoms/SearchInput/SearchInput.d.ts +8 -0
  82. package/dist/ui/atoms/SearchInput/SearchInput.d.ts.map +1 -0
  83. package/dist/ui/atoms/SearchInput/SearchInput.js +50 -0
  84. package/dist/ui/atoms/SearchInput/SearchInput.js.map +1 -0
  85. package/dist/ui/atoms/SearchInput/index.d.ts +3 -0
  86. package/dist/ui/atoms/SearchInput/index.js +3 -0
  87. package/dist/ui/atoms/SearchInput/types.d.ts +13 -0
  88. package/dist/ui/atoms/SearchInput/types.d.ts.map +1 -0
  89. package/dist/ui/atoms/SearchInput/types.js +0 -0
  90. package/dist/ui/avatar.d.ts +28 -0
  91. package/dist/ui/avatar.d.ts.map +1 -0
  92. package/dist/ui/avatar.js +28 -0
  93. package/dist/ui/avatar.js.map +1 -0
  94. package/dist/ui/badge.d.ts +22 -0
  95. package/dist/ui/badge.d.ts.map +1 -0
  96. package/dist/ui/badge.js +26 -0
  97. package/dist/ui/badge.js.map +1 -0
  98. package/dist/ui/breadcrumb.d.ts +39 -0
  99. package/dist/ui/breadcrumb.d.ts.map +1 -0
  100. package/dist/ui/breadcrumb.js +73 -0
  101. package/dist/ui/breadcrumb.js.map +1 -0
  102. package/dist/ui/button.d.ts +26 -0
  103. package/dist/ui/button.d.ts.map +1 -0
  104. package/dist/ui/button.js +75 -0
  105. package/dist/ui/button.js.map +1 -0
  106. package/dist/ui/card.d.ts +44 -0
  107. package/dist/ui/card.d.ts.map +1 -0
  108. package/dist/ui/card.js +52 -0
  109. package/dist/ui/card.js.map +1 -0
  110. package/dist/ui/carousel.d.ts +5 -0
  111. package/dist/ui/carousel.d.ts.map +1 -0
  112. package/dist/ui/carousel.js +6 -0
  113. package/dist/ui/carousel.js.map +1 -0
  114. package/dist/ui/checkbox.d.ts +17 -0
  115. package/dist/ui/checkbox.d.ts.map +1 -0
  116. package/dist/ui/checkbox.js +21 -0
  117. package/dist/ui/checkbox.js.map +1 -0
  118. package/dist/ui/collapsible.d.ts +25 -0
  119. package/dist/ui/collapsible.d.ts.map +1 -0
  120. package/dist/ui/collapsible.js +10 -0
  121. package/dist/ui/collapsible.js.map +1 -0
  122. package/dist/ui/command.d.ts +5 -0
  123. package/dist/ui/command.d.ts.map +1 -0
  124. package/dist/ui/command.js +6 -0
  125. package/dist/ui/command.js.map +1 -0
  126. package/dist/ui/context-menu.d.ts +110 -0
  127. package/dist/ui/context-menu.d.ts.map +1 -0
  128. package/dist/ui/context-menu.js +108 -0
  129. package/dist/ui/context-menu.js.map +1 -0
  130. package/dist/ui/date-picker.d.ts +24 -0
  131. package/dist/ui/date-picker.d.ts.map +1 -0
  132. package/dist/ui/date-picker.js +54 -0
  133. package/dist/ui/date-picker.js.map +1 -0
  134. package/dist/ui/date-range-picker.d.ts +31 -0
  135. package/dist/ui/date-range-picker.d.ts.map +1 -0
  136. package/dist/ui/date-range-picker.js +86 -0
  137. package/dist/ui/date-range-picker.js.map +1 -0
  138. package/dist/ui/datetime-picker.d.ts +28 -0
  139. package/dist/ui/datetime-picker.d.ts.map +1 -0
  140. package/dist/ui/datetime-picker.js +45 -0
  141. package/dist/ui/datetime-picker.js.map +1 -0
  142. package/dist/ui/dialog.d.ts +69 -0
  143. package/dist/ui/dialog.d.ts.map +1 -0
  144. package/dist/ui/dialog.js +81 -0
  145. package/dist/ui/dialog.js.map +1 -0
  146. package/dist/ui/dropdown-menu.d.ts +112 -0
  147. package/dist/ui/dropdown-menu.d.ts.map +1 -0
  148. package/dist/ui/dropdown-menu.js +110 -0
  149. package/dist/ui/dropdown-menu.js.map +1 -0
  150. package/dist/ui/empty-state.d.ts +29 -0
  151. package/dist/ui/empty-state.d.ts.map +1 -0
  152. package/dist/ui/empty-state.js +46 -0
  153. package/dist/ui/empty-state.js.map +1 -0
  154. package/dist/ui/empty.d.ts +37 -0
  155. package/dist/ui/empty.d.ts.map +1 -0
  156. package/dist/ui/empty.js +63 -0
  157. package/dist/ui/empty.js.map +1 -0
  158. package/dist/ui/fab.d.ts +36 -0
  159. package/dist/ui/fab.d.ts.map +1 -0
  160. package/dist/ui/fab.js +104 -0
  161. package/dist/ui/fab.js.map +1 -0
  162. package/dist/ui/field.d.ts +67 -0
  163. package/dist/ui/field.d.ts.map +1 -0
  164. package/dist/ui/field.js +124 -0
  165. package/dist/ui/field.js.map +1 -0
  166. package/dist/ui/form.d.ts +50 -0
  167. package/dist/ui/form.d.ts.map +1 -0
  168. package/dist/ui/form.js +96 -0
  169. package/dist/ui/form.js.map +1 -0
  170. package/dist/ui/hover-card.d.ts +30 -0
  171. package/dist/ui/hover-card.d.ts.map +1 -0
  172. package/dist/ui/hover-card.js +33 -0
  173. package/dist/ui/hover-card.js.map +1 -0
  174. package/dist/ui/icons/Check.d.ts +2 -0
  175. package/dist/ui/icons/Check.js +9 -0
  176. package/dist/ui/icons/Check.js.map +1 -0
  177. package/dist/ui/icons/ChevronDown.d.ts +2 -0
  178. package/dist/ui/icons/ChevronDown.js +9 -0
  179. package/dist/ui/icons/ChevronDown.js.map +1 -0
  180. package/dist/ui/icons/ChevronRight.d.ts +2 -0
  181. package/dist/ui/icons/ChevronRight.js +9 -0
  182. package/dist/ui/icons/ChevronRight.js.map +1 -0
  183. package/dist/ui/icons/ChevronUp.d.ts +2 -0
  184. package/dist/ui/icons/ChevronUp.js +9 -0
  185. package/dist/ui/icons/ChevronUp.js.map +1 -0
  186. package/dist/ui/icons/CircleUser.d.ts +2 -0
  187. package/dist/ui/icons/CircleUser.js +9 -0
  188. package/dist/ui/icons/CircleUser.js.map +1 -0
  189. package/dist/ui/icons/Info.d.ts +2 -0
  190. package/dist/ui/icons/Info.js +9 -0
  191. package/dist/ui/icons/Info.js.map +1 -0
  192. package/dist/ui/icons/Key.d.ts +2 -0
  193. package/dist/ui/icons/Key.js +9 -0
  194. package/dist/ui/icons/Key.js.map +1 -0
  195. package/dist/ui/icons/MoonStar.d.ts +2 -0
  196. package/dist/ui/icons/MoonStar.js +9 -0
  197. package/dist/ui/icons/MoonStar.js.map +1 -0
  198. package/dist/ui/icons/Sun.d.ts +2 -0
  199. package/dist/ui/icons/Sun.js +9 -0
  200. package/dist/ui/icons/Sun.js.map +1 -0
  201. package/dist/ui/icons/X.d.ts +2 -0
  202. package/dist/ui/icons/X.js +9 -0
  203. package/dist/ui/icons/X.js.map +1 -0
  204. package/dist/ui/icons/iconWithClassName.d.ts +7 -0
  205. package/dist/ui/icons/iconWithClassName.d.ts.map +1 -0
  206. package/dist/ui/icons/iconWithClassName.js +16 -0
  207. package/dist/ui/icons/iconWithClassName.js.map +1 -0
  208. package/dist/ui/input.d.ts +15 -0
  209. package/dist/ui/input.d.ts.map +1 -0
  210. package/dist/ui/input.js +17 -0
  211. package/dist/ui/input.js.map +1 -0
  212. package/dist/ui/label.d.ts +16 -0
  213. package/dist/ui/label.d.ts.map +1 -0
  214. package/dist/ui/label.js +24 -0
  215. package/dist/ui/label.js.map +1 -0
  216. package/dist/ui/link.d.ts +14 -0
  217. package/dist/ui/link.d.ts.map +1 -0
  218. package/dist/ui/link.js +16 -0
  219. package/dist/ui/link.js.map +1 -0
  220. package/dist/ui/loading-button.d.ts +20 -0
  221. package/dist/ui/loading-button.d.ts.map +1 -0
  222. package/dist/ui/loading-button.js +22 -0
  223. package/dist/ui/loading-button.js.map +1 -0
  224. package/dist/ui/loading-overlay.d.ts +16 -0
  225. package/dist/ui/loading-overlay.d.ts.map +1 -0
  226. package/dist/ui/loading-overlay.js +44 -0
  227. package/dist/ui/loading-overlay.js.map +1 -0
  228. package/dist/ui/loading-screen.d.ts +14 -0
  229. package/dist/ui/loading-screen.d.ts.map +1 -0
  230. package/dist/ui/loading-screen.js +93 -0
  231. package/dist/ui/loading-screen.js.map +1 -0
  232. package/dist/ui/marketing/FeatureGrid.d.ts +21 -0
  233. package/dist/ui/marketing/FeatureGrid.d.ts.map +1 -0
  234. package/dist/ui/marketing/FeatureGrid.js +35 -0
  235. package/dist/ui/marketing/FeatureGrid.js.map +1 -0
  236. package/dist/ui/marketing/Hero.d.ts +28 -0
  237. package/dist/ui/marketing/Hero.d.ts.map +1 -0
  238. package/dist/ui/marketing/Hero.js +52 -0
  239. package/dist/ui/marketing/Hero.js.map +1 -0
  240. package/dist/ui/marketing/PricingTable.d.ts +25 -0
  241. package/dist/ui/marketing/PricingTable.d.ts.map +1 -0
  242. package/dist/ui/marketing/PricingTable.js +60 -0
  243. package/dist/ui/marketing/PricingTable.js.map +1 -0
  244. package/dist/ui/marketing/index.d.ts +4 -0
  245. package/dist/ui/marketing/index.js +5 -0
  246. package/dist/ui/menubar.d.ts +115 -0
  247. package/dist/ui/menubar.d.ts.map +1 -0
  248. package/dist/ui/menubar.js +120 -0
  249. package/dist/ui/menubar.js.map +1 -0
  250. package/dist/ui/molecules/Autocomplete/index.d.ts +5 -0
  251. package/dist/ui/molecules/Autocomplete/index.d.ts.map +1 -0
  252. package/dist/ui/molecules/Autocomplete/index.js +6 -0
  253. package/dist/ui/molecules/Autocomplete/index.js.map +1 -0
  254. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.d.ts +8 -0
  255. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.d.ts.map +1 -0
  256. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.js +106 -0
  257. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.js.map +1 -0
  258. package/dist/ui/molecules/SearchAndFilter/index.d.ts +3 -0
  259. package/dist/ui/molecules/SearchAndFilter/index.js +3 -0
  260. package/dist/ui/molecules/SearchAndFilter/types.d.ts +25 -0
  261. package/dist/ui/molecules/SearchAndFilter/types.d.ts.map +1 -0
  262. package/dist/ui/molecules/SearchAndFilter/types.js +0 -0
  263. package/dist/ui/molecules/SkeletonList.d.ts +16 -0
  264. package/dist/ui/molecules/SkeletonList.d.ts.map +1 -0
  265. package/dist/ui/molecules/SkeletonList.js +15 -0
  266. package/dist/ui/molecules/SkeletonList.js.map +1 -0
  267. package/dist/ui/nativewind-env.d.ts +1 -0
  268. package/dist/ui/navigation-menu.d.ts +68 -0
  269. package/dist/ui/navigation-menu.d.ts.map +1 -0
  270. package/dist/ui/navigation-menu.js +87 -0
  271. package/dist/ui/navigation-menu.js.map +1 -0
  272. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.d.ts +30 -0
  273. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
  274. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.js +108 -0
  275. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.js.map +1 -0
  276. package/dist/ui/organisms/ErrorBoundary/index.d.ts +2 -0
  277. package/dist/ui/organisms/ErrorBoundary/index.js +3 -0
  278. package/dist/ui/organisms/ListPage/ListPage.d.ts +29 -0
  279. package/dist/ui/organisms/ListPage/ListPage.d.ts.map +1 -0
  280. package/dist/ui/organisms/ListPage/ListPage.js +198 -0
  281. package/dist/ui/organisms/ListPage/ListPage.js.map +1 -0
  282. package/dist/ui/organisms/ListPage/index.d.ts +3 -0
  283. package/dist/ui/organisms/ListPage/index.js +3 -0
  284. package/dist/ui/organisms/ListPage/types.d.ts +42 -0
  285. package/dist/ui/organisms/ListPage/types.d.ts.map +1 -0
  286. package/dist/ui/organisms/ListPage/types.js +0 -0
  287. package/dist/ui/page-header.d.ts +27 -0
  288. package/dist/ui/page-header.d.ts.map +1 -0
  289. package/dist/ui/page-header.js +41 -0
  290. package/dist/ui/page-header.js.map +1 -0
  291. package/dist/ui/password-strength.d.ts +21 -0
  292. package/dist/ui/password-strength.d.ts.map +1 -0
  293. package/dist/ui/password-strength.js +99 -0
  294. package/dist/ui/password-strength.js.map +1 -0
  295. package/dist/ui/popover.d.ts +30 -0
  296. package/dist/ui/popover.d.ts.map +1 -0
  297. package/dist/ui/popover.js +35 -0
  298. package/dist/ui/popover.js.map +1 -0
  299. package/dist/ui/progress.d.ts +17 -0
  300. package/dist/ui/progress.d.ts.map +1 -0
  301. package/dist/ui/progress.js +40 -0
  302. package/dist/ui/progress.js.map +1 -0
  303. package/dist/ui/radio-group.d.ts +15 -0
  304. package/dist/ui/radio-group.d.ts.map +1 -0
  305. package/dist/ui/radio-group.js +23 -0
  306. package/dist/ui/radio-group.js.map +1 -0
  307. package/dist/ui/select.d.ts +84 -0
  308. package/dist/ui/select.d.ts.map +1 -0
  309. package/dist/ui/select.js +111 -0
  310. package/dist/ui/select.js.map +1 -0
  311. package/dist/ui/separator.d.ts +16 -0
  312. package/dist/ui/separator.d.ts.map +1 -0
  313. package/dist/ui/separator.js +18 -0
  314. package/dist/ui/separator.js.map +1 -0
  315. package/dist/ui/sheet.d.ts +5 -0
  316. package/dist/ui/sheet.d.ts.map +1 -0
  317. package/dist/ui/sheet.js +6 -0
  318. package/dist/ui/sheet.js.map +1 -0
  319. package/dist/ui/sidebar.d.ts +5 -0
  320. package/dist/ui/sidebar.d.ts.map +1 -0
  321. package/dist/ui/sidebar.js +6 -0
  322. package/dist/ui/sidebar.js.map +1 -0
  323. package/dist/ui/skeleton.d.ts +12 -0
  324. package/dist/ui/skeleton.d.ts.map +1 -0
  325. package/dist/ui/skeleton.js +24 -0
  326. package/dist/ui/skeleton.js.map +1 -0
  327. package/dist/ui/stack.d.ts +77 -0
  328. package/dist/ui/stack.d.ts.map +1 -0
  329. package/dist/ui/stack.js +238 -0
  330. package/dist/ui/stack.js.map +1 -0
  331. package/dist/ui/stepper.d.ts +23 -0
  332. package/dist/ui/stepper.d.ts.map +1 -0
  333. package/dist/ui/stepper.js +38 -0
  334. package/dist/ui/stepper.js.map +1 -0
  335. package/dist/ui/switch.d.ts +15 -0
  336. package/dist/ui/switch.d.ts.map +1 -0
  337. package/dist/ui/switch.js +54 -0
  338. package/dist/ui/switch.js.map +1 -0
  339. package/dist/ui/table.d.ts +51 -0
  340. package/dist/ui/table.d.ts.map +1 -0
  341. package/dist/ui/table.js +57 -0
  342. package/dist/ui/table.js.map +1 -0
  343. package/dist/ui/tabs.d.ts +33 -0
  344. package/dist/ui/tabs.d.ts.map +1 -0
  345. package/dist/ui/tabs.js +29 -0
  346. package/dist/ui/tabs.js.map +1 -0
  347. package/dist/ui/text.d.ts +21 -0
  348. package/dist/ui/text.d.ts.map +1 -0
  349. package/dist/ui/text.js +19 -0
  350. package/dist/ui/text.js.map +1 -0
  351. package/dist/ui/textarea.d.ts +10 -0
  352. package/dist/ui/textarea.d.ts.map +1 -0
  353. package/dist/ui/textarea.js +20 -0
  354. package/dist/ui/textarea.js.map +1 -0
  355. package/dist/ui/time-picker.d.ts +22 -0
  356. package/dist/ui/time-picker.d.ts.map +1 -0
  357. package/dist/ui/time-picker.js +53 -0
  358. package/dist/ui/time-picker.js.map +1 -0
  359. package/dist/ui/toggle-group.d.ts +36 -0
  360. package/dist/ui/toggle-group.d.ts.map +1 -0
  361. package/dist/ui/toggle-group.js +55 -0
  362. package/dist/ui/toggle-group.js.map +1 -0
  363. package/dist/ui/toggle.d.ts +34 -0
  364. package/dist/ui/toggle.d.ts.map +1 -0
  365. package/dist/ui/toggle.js +67 -0
  366. package/dist/ui/toggle.js.map +1 -0
  367. package/dist/ui/tooltip.d.ts +32 -0
  368. package/dist/ui/tooltip.d.ts.map +1 -0
  369. package/dist/ui/tooltip.js +41 -0
  370. package/dist/ui/tooltip.js.map +1 -0
  371. package/dist/ui/typography.d.ts +65 -0
  372. package/dist/ui/typography.d.ts.map +1 -0
  373. package/dist/ui/typography.js +88 -0
  374. package/dist/ui/typography.js.map +1 -0
  375. package/dist/ui/useColorScheme.d.ts +12 -0
  376. package/dist/ui/useColorScheme.d.ts.map +1 -0
  377. package/dist/ui/useColorScheme.js +17 -0
  378. package/dist/ui/useColorScheme.js.map +1 -0
  379. package/dist/ui/useListState.d.ts +34 -0
  380. package/dist/ui/useListState.d.ts.map +1 -0
  381. package/dist/ui/useListState.js +75 -0
  382. package/dist/ui/useListState.js.map +1 -0
  383. package/dist/ui/usecases/UseCaseCard.d.ts +19 -0
  384. package/dist/ui/usecases/UseCaseCard.d.ts.map +1 -0
  385. package/dist/ui/usecases/UseCaseCard.js +35 -0
  386. package/dist/ui/usecases/UseCaseCard.js.map +1 -0
  387. package/dist/ui/usecases/UserStoryCard.d.ts +15 -0
  388. package/dist/ui/usecases/UserStoryCard.d.ts.map +1 -0
  389. package/dist/ui/usecases/UserStoryCard.js +36 -0
  390. package/dist/ui/usecases/UserStoryCard.js.map +1 -0
  391. package/dist/ui/usecases/index.d.ts +3 -0
  392. package/dist/ui/usecases/index.js +4 -0
  393. package/dist/ui/utils.d.ts +7 -0
  394. package/dist/ui/utils.d.ts.map +1 -0
  395. package/dist/ui/utils.js +11 -0
  396. package/dist/ui/utils.js.map +1 -0
  397. package/package.json +212 -0
@@ -0,0 +1,112 @@
1
+ import * as React$1 from "react";
2
+ import * as react_native4 from "react-native";
3
+ import { StyleProp, TextProps, View, ViewStyle } from "react-native";
4
+ import * as react_jsx_runtime42 from "react/jsx-runtime";
5
+ import * as _rn_primitives_dropdown_menu0 from "@rn-primitives/dropdown-menu";
6
+
7
+ //#region ui/dropdown-menu.d.ts
8
+ declare const DropdownMenu: React$1.ForwardRefExoticComponent<react_native4.ViewProps & {
9
+ asChild?: boolean;
10
+ } & {
11
+ onOpenChange?: (open: boolean) => void;
12
+ } & React$1.RefAttributes<View>>;
13
+ declare const DropdownMenuTrigger: React$1.ForwardRefExoticComponent<Omit<react_native4.PressableProps & React$1.RefAttributes<View>, "ref"> & {
14
+ asChild?: boolean;
15
+ } & {
16
+ onKeyDown?: (ev: React$1.KeyboardEvent) => void;
17
+ onKeyUp?: (ev: React$1.KeyboardEvent) => void;
18
+ } & React$1.RefAttributes<_rn_primitives_dropdown_menu0.TriggerRef>>;
19
+ declare const DropdownMenuGroup: React$1.ForwardRefExoticComponent<react_native4.ViewProps & {
20
+ asChild?: boolean;
21
+ } & React$1.RefAttributes<View>>;
22
+ declare const DropdownMenuPortal: typeof _rn_primitives_dropdown_menu0.Portal;
23
+ declare const DropdownMenuSub: React$1.ForwardRefExoticComponent<react_native4.ViewProps & {
24
+ asChild?: boolean;
25
+ } & {
26
+ defaultOpen?: boolean;
27
+ open?: boolean;
28
+ onOpenChange?: (value: boolean) => void;
29
+ } & React$1.RefAttributes<View>>;
30
+ declare const DropdownMenuRadioGroup: React$1.ForwardRefExoticComponent<react_native4.ViewProps & {
31
+ asChild?: boolean;
32
+ } & {
33
+ value: string | undefined;
34
+ onValueChange: (value: string) => void;
35
+ } & React$1.RefAttributes<View>>;
36
+ declare function DropdownMenuSubTrigger({
37
+ className,
38
+ inset,
39
+ children,
40
+ ...props
41
+ }: _rn_primitives_dropdown_menu0.SubTriggerProps & {
42
+ ref?: React$1.RefObject<_rn_primitives_dropdown_menu0.SubTriggerRef>;
43
+ className?: string;
44
+ inset?: boolean;
45
+ children?: React$1.ReactNode;
46
+ }): react_jsx_runtime42.JSX.Element;
47
+ declare function DropdownMenuSubContent({
48
+ className,
49
+ ...props
50
+ }: _rn_primitives_dropdown_menu0.SubContentProps & {
51
+ ref?: React$1.RefObject<_rn_primitives_dropdown_menu0.SubContentRef>;
52
+ }): react_jsx_runtime42.JSX.Element;
53
+ declare function DropdownMenuContent({
54
+ className,
55
+ overlayClassName,
56
+ overlayStyle,
57
+ portalHost,
58
+ ...props
59
+ }: _rn_primitives_dropdown_menu0.ContentProps & {
60
+ ref?: React$1.RefObject<_rn_primitives_dropdown_menu0.ContentRef>;
61
+ overlayStyle?: StyleProp<ViewStyle>;
62
+ overlayClassName?: string;
63
+ portalHost?: string;
64
+ }): react_jsx_runtime42.JSX.Element;
65
+ declare function DropdownMenuItem({
66
+ className,
67
+ inset,
68
+ ...props
69
+ }: _rn_primitives_dropdown_menu0.ItemProps & {
70
+ ref?: React$1.RefObject<_rn_primitives_dropdown_menu0.ItemRef>;
71
+ className?: string;
72
+ inset?: boolean;
73
+ }): react_jsx_runtime42.JSX.Element;
74
+ declare function DropdownMenuCheckboxItem({
75
+ className,
76
+ children,
77
+ checked,
78
+ ...props
79
+ }: _rn_primitives_dropdown_menu0.CheckboxItemProps & {
80
+ ref?: React$1.RefObject<_rn_primitives_dropdown_menu0.CheckboxItemRef>;
81
+ children?: React$1.ReactNode;
82
+ }): react_jsx_runtime42.JSX.Element;
83
+ declare function DropdownMenuRadioItem({
84
+ className,
85
+ children,
86
+ ...props
87
+ }: _rn_primitives_dropdown_menu0.RadioItemProps & {
88
+ ref?: React$1.RefObject<_rn_primitives_dropdown_menu0.RadioItemRef>;
89
+ children?: React$1.ReactNode;
90
+ }): react_jsx_runtime42.JSX.Element;
91
+ declare function DropdownMenuLabel({
92
+ className,
93
+ inset,
94
+ ...props
95
+ }: _rn_primitives_dropdown_menu0.LabelProps & {
96
+ ref?: React$1.RefObject<_rn_primitives_dropdown_menu0.LabelRef>;
97
+ className?: string;
98
+ inset?: boolean;
99
+ }): react_jsx_runtime42.JSX.Element;
100
+ declare function DropdownMenuSeparator({
101
+ className,
102
+ ...props
103
+ }: _rn_primitives_dropdown_menu0.SeparatorProps & {
104
+ ref?: React$1.RefObject<_rn_primitives_dropdown_menu0.SeparatorRef>;
105
+ }): react_jsx_runtime42.JSX.Element;
106
+ declare function DropdownMenuShortcut({
107
+ className,
108
+ ...props
109
+ }: TextProps): react_jsx_runtime42.JSX.Element;
110
+ //#endregion
111
+ export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };
112
+ //# sourceMappingURL=dropdown-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu.d.ts","names":[],"sources":["../../ui/dropdown-menu.tsx"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ import { ChevronDown } from "./icons/ChevronDown.js";
2
+ import { cn } from "./utils.js";
3
+ import { TextClassContext } from "./text.js";
4
+ import { Check } from "./icons/Check.js";
5
+ import { ChevronRight } from "./icons/ChevronRight.js";
6
+ import { ChevronUp } from "./icons/ChevronUp.js";
7
+ import "react";
8
+ import { Platform, StyleSheet, Text, View } from "react-native";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ import * as DropdownMenuPrimitive from "@rn-primitives/dropdown-menu";
11
+
12
+ //#region ui/dropdown-menu.tsx
13
+ const DropdownMenu = DropdownMenuPrimitive.Root;
14
+ const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
15
+ const DropdownMenuGroup = DropdownMenuPrimitive.Group;
16
+ const DropdownMenuPortal = DropdownMenuPrimitive.Portal;
17
+ const DropdownMenuSub = DropdownMenuPrimitive.Sub;
18
+ const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
19
+ function DropdownMenuSubTrigger({ className, inset, children,...props }) {
20
+ const { open } = DropdownMenuPrimitive.useSubContext();
21
+ const Icon = Platform.OS === "web" ? ChevronRight : open ? ChevronUp : ChevronDown;
22
+ return /* @__PURE__ */ jsx(TextClassContext.Provider, {
23
+ value: cn("native:text-lg text-primary text-sm select-none", open && "native:text-accent-foreground"),
24
+ children: /* @__PURE__ */ jsxs(DropdownMenuPrimitive.SubTrigger, {
25
+ className: cn("native:py-2 active:bg-accent web:cursor-default web:select-none web:outline-hidden web:hover:bg-accent web:focus:bg-accent flex flex-row items-center gap-2 rounded-xs px-2 py-1.5", open && "bg-accent", inset && "pl-8", className),
26
+ ...props,
27
+ children: [children, /* @__PURE__ */ jsx(Icon, {
28
+ size: 18,
29
+ className: "text-foreground ml-auto"
30
+ })]
31
+ })
32
+ });
33
+ }
34
+ function DropdownMenuSubContent({ className,...props }) {
35
+ const { open } = DropdownMenuPrimitive.useSubContext();
36
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.SubContent, {
37
+ className: cn("border-border bg-popover shadow-foreground/5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 mt-1 min-w-32 overflow-hidden rounded-md border p-1 shadow-md", open ? "web:animate-in web:fade-in-0 web:zoom-in-95" : "web:animate-out web:fade-out-0 web:zoom-out", className),
38
+ ...props
39
+ });
40
+ }
41
+ function DropdownMenuContent({ className, overlayClassName, overlayStyle, portalHost,...props }) {
42
+ const { open } = DropdownMenuPrimitive.useRootContext();
43
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, {
44
+ hostName: portalHost,
45
+ children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Overlay, {
46
+ style: overlayStyle ? StyleSheet.flatten([Platform.OS !== "web" ? StyleSheet.absoluteFill : void 0, overlayStyle]) : Platform.OS !== "web" ? StyleSheet.absoluteFill : void 0,
47
+ className: overlayClassName,
48
+ children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Content, {
49
+ className: cn("border-border bg-popover shadow-foreground/5 web:data-[side=bottom]:slide-in-from-top-2 web:data-[side=left]:slide-in-from-right-2 web:data-[side=right]:slide-in-from-left-2 web:data-[side=top]:slide-in-from-bottom-2 z-50 min-w-32 overflow-hidden rounded-md border p-1 shadow-md", open ? "web:animate-in web:fade-in-0 web:zoom-in-95" : "web:animate-out web:fade-out-0 web:zoom-out-95", className),
50
+ ...props
51
+ })
52
+ })
53
+ });
54
+ }
55
+ function DropdownMenuItem({ className, inset,...props }) {
56
+ return /* @__PURE__ */ jsx(TextClassContext.Provider, {
57
+ value: "select-none text-sm native:text-lg text-popover-foreground web:group-focus:text-accent-foreground",
58
+ children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Item, {
59
+ className: cn("native:py-2 group active:bg-accent web:cursor-default web:outline-hidden web:hover:bg-accent web:focus:bg-accent relative flex flex-row items-center gap-2 rounded-xs px-2 py-1.5", inset && "pl-8", props.disabled && "web:pointer-events-none opacity-50", className),
60
+ ...props
61
+ })
62
+ });
63
+ }
64
+ function DropdownMenuCheckboxItem({ className, children, checked,...props }) {
65
+ return /* @__PURE__ */ jsxs(DropdownMenuPrimitive.CheckboxItem, {
66
+ className: cn("web:group native:py-2 active:bg-accent web:cursor-default web:outline-hidden web:focus:bg-accent relative flex flex-row items-center rounded-xs py-1.5 pr-2 pl-8", props.disabled && "web:pointer-events-none opacity-50", className),
67
+ checked,
68
+ ...props,
69
+ children: [/* @__PURE__ */ jsx(View, {
70
+ className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center",
71
+ children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, {
72
+ size: 14,
73
+ strokeWidth: 3,
74
+ className: "text-foreground"
75
+ }) })
76
+ }), children]
77
+ });
78
+ }
79
+ function DropdownMenuRadioItem({ className, children,...props }) {
80
+ return /* @__PURE__ */ jsxs(DropdownMenuPrimitive.RadioItem, {
81
+ className: cn("web:group native:py-2 active:bg-accent web:cursor-default web:outline-hidden web:focus:bg-accent relative flex flex-row items-center rounded-xs py-1.5 pr-2 pl-8", props.disabled && "web:pointer-events-none opacity-50", className),
82
+ ...props,
83
+ children: [/* @__PURE__ */ jsx(View, {
84
+ className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center",
85
+ children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(View, { className: "bg-foreground h-2 w-2 rounded-full" }) })
86
+ }), children]
87
+ });
88
+ }
89
+ function DropdownMenuLabel({ className, inset,...props }) {
90
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Label, {
91
+ className: cn("native:text-base text-foreground web:cursor-default px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className),
92
+ ...props
93
+ });
94
+ }
95
+ function DropdownMenuSeparator({ className,...props }) {
96
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Separator, {
97
+ className: cn("bg-border -mx-1 my-1 h-px", className),
98
+ ...props
99
+ });
100
+ }
101
+ function DropdownMenuShortcut({ className,...props }) {
102
+ return /* @__PURE__ */ jsx(Text, {
103
+ className: cn("native:text-sm text-muted-foreground ml-auto text-xs tracking-widest", className),
104
+ ...props
105
+ });
106
+ }
107
+
108
+ //#endregion
109
+ export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };
110
+ //# sourceMappingURL=dropdown-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu.js","names":[],"sources":["../../ui/dropdown-menu.tsx"],"sourcesContent":["import * as DropdownMenuPrimitive from '@rn-primitives/dropdown-menu';\nimport * as React from 'react';\nimport {\n Platform,\n type StyleProp,\n StyleSheet,\n Text,\n type TextProps,\n View,\n type ViewStyle,\n} from 'react-native';\nimport { Check } from './icons/Check';\nimport { ChevronDown } from './icons/ChevronDown';\nimport { ChevronRight } from './icons/ChevronRight';\nimport { ChevronUp } from './icons/ChevronUp';\nimport { cn } from './utils';\nimport { TextClassContext } from './text';\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: DropdownMenuPrimitive.SubTriggerProps & {\n ref?: React.RefObject<DropdownMenuPrimitive.SubTriggerRef>;\n className?: string;\n inset?: boolean;\n children?: React.ReactNode;\n}) {\n const { open } = DropdownMenuPrimitive.useSubContext();\n const Icon =\n Platform.OS === 'web' ? ChevronRight : open ? ChevronUp : ChevronDown;\n return (\n <TextClassContext.Provider\n value={cn(\n 'native:text-lg text-primary text-sm select-none',\n open && 'native:text-accent-foreground'\n )}\n >\n <DropdownMenuPrimitive.SubTrigger\n className={cn(\n 'native:py-2 active:bg-accent web:cursor-default web:select-none web:outline-hidden web:hover:bg-accent web:focus:bg-accent flex flex-row items-center gap-2 rounded-xs px-2 py-1.5',\n open && 'bg-accent',\n inset && 'pl-8',\n className\n )}\n {...props}\n >\n {children}\n <Icon size={18} className=\"text-foreground ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n </TextClassContext.Provider>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: DropdownMenuPrimitive.SubContentProps & {\n ref?: React.RefObject<DropdownMenuPrimitive.SubContentRef>;\n}) {\n const { open } = DropdownMenuPrimitive.useSubContext();\n return (\n <DropdownMenuPrimitive.SubContent\n className={cn(\n 'border-border bg-popover shadow-foreground/5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 mt-1 min-w-32 overflow-hidden rounded-md border p-1 shadow-md',\n open\n ? 'web:animate-in web:fade-in-0 web:zoom-in-95'\n : 'web:animate-out web:fade-out-0 web:zoom-out',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n overlayClassName,\n overlayStyle,\n portalHost,\n ...props\n}: DropdownMenuPrimitive.ContentProps & {\n ref?: React.RefObject<DropdownMenuPrimitive.ContentRef>;\n overlayStyle?: StyleProp<ViewStyle>;\n overlayClassName?: string;\n portalHost?: string;\n}) {\n const { open } = DropdownMenuPrimitive.useRootContext();\n return (\n <DropdownMenuPrimitive.Portal hostName={portalHost}>\n <DropdownMenuPrimitive.Overlay\n style={\n overlayStyle\n ? StyleSheet.flatten([\n Platform.OS !== 'web' ? StyleSheet.absoluteFill : undefined,\n overlayStyle as typeof StyleSheet.absoluteFill,\n ])\n : Platform.OS !== 'web'\n ? StyleSheet.absoluteFill\n : undefined\n }\n className={overlayClassName}\n >\n <DropdownMenuPrimitive.Content\n className={cn(\n 'border-border bg-popover shadow-foreground/5 web:data-[side=bottom]:slide-in-from-top-2 web:data-[side=left]:slide-in-from-right-2 web:data-[side=right]:slide-in-from-left-2 web:data-[side=top]:slide-in-from-bottom-2 z-50 min-w-32 overflow-hidden rounded-md border p-1 shadow-md',\n open\n ? 'web:animate-in web:fade-in-0 web:zoom-in-95'\n : 'web:animate-out web:fade-out-0 web:zoom-out-95',\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Overlay>\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n ...props\n}: DropdownMenuPrimitive.ItemProps & {\n ref?: React.RefObject<DropdownMenuPrimitive.ItemRef>;\n className?: string;\n inset?: boolean;\n}) {\n return (\n <TextClassContext.Provider value=\"select-none text-sm native:text-lg text-popover-foreground web:group-focus:text-accent-foreground\">\n <DropdownMenuPrimitive.Item\n className={cn(\n 'native:py-2 group active:bg-accent web:cursor-default web:outline-hidden web:hover:bg-accent web:focus:bg-accent relative flex flex-row items-center gap-2 rounded-xs px-2 py-1.5',\n inset && 'pl-8',\n props.disabled && 'web:pointer-events-none opacity-50',\n className\n )}\n {...props}\n />\n </TextClassContext.Provider>\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: DropdownMenuPrimitive.CheckboxItemProps & {\n ref?: React.RefObject<DropdownMenuPrimitive.CheckboxItemRef>;\n children?: React.ReactNode;\n}) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n className={cn(\n 'web:group native:py-2 active:bg-accent web:cursor-default web:outline-hidden web:focus:bg-accent relative flex flex-row items-center rounded-xs py-1.5 pr-2 pl-8',\n props.disabled && 'web:pointer-events-none opacity-50',\n className\n )}\n checked={checked}\n {...props}\n >\n <View className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check size={14} strokeWidth={3} className=\"text-foreground\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </View>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: DropdownMenuPrimitive.RadioItemProps & {\n ref?: React.RefObject<DropdownMenuPrimitive.RadioItemRef>;\n children?: React.ReactNode;\n}) {\n return (\n <DropdownMenuPrimitive.RadioItem\n className={cn(\n 'web:group native:py-2 active:bg-accent web:cursor-default web:outline-hidden web:focus:bg-accent relative flex flex-row items-center rounded-xs py-1.5 pr-2 pl-8',\n props.disabled && 'web:pointer-events-none opacity-50',\n className\n )}\n {...props}\n >\n <View className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <View className=\"bg-foreground h-2 w-2 rounded-full\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </View>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: DropdownMenuPrimitive.LabelProps & {\n ref?: React.RefObject<DropdownMenuPrimitive.LabelRef>;\n className?: string;\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n className={cn(\n 'native:text-base text-foreground web:cursor-default px-2 py-1.5 text-sm font-semibold',\n inset && 'pl-8',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: DropdownMenuPrimitive.SeparatorProps & {\n ref?: React.RefObject<DropdownMenuPrimitive.SeparatorRef>;\n}) {\n return (\n <DropdownMenuPrimitive.Separator\n className={cn('bg-border -mx-1 my-1 h-px', className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({ className, ...props }: TextProps) {\n return (\n <Text\n className={cn(\n 'native:text-sm text-muted-foreground ml-auto text-xs tracking-widest',\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n"],"mappings":";;;;;;;;;;;;AAkBA,MAAM,eAAe,sBAAsB;AAE3C,MAAM,sBAAsB,sBAAsB;AAElD,MAAM,oBAAoB,sBAAsB;AAEhD,MAAM,qBAAqB,sBAAsB;AAEjD,MAAM,kBAAkB,sBAAsB;AAE9C,MAAM,yBAAyB,sBAAsB;AAErD,SAAS,uBAAuB,EAC9B,WACA,OACA,SACA,GAAG,SAMF;CACD,MAAM,EAAE,SAAS,sBAAsB,eAAe;CACtD,MAAM,OACJ,SAAS,OAAO,QAAQ,eAAe,OAAO,YAAY;AAC5D,QACE,oBAAC,iBAAiB;EAChB,OAAO,GACL,mDACA,QAAQ,gCACT;YAED,qBAAC,sBAAsB;GACrB,WAAW,GACT,sLACA,QAAQ,aACR,SAAS,QACT,UACD;GACD,GAAI;cAEH,UACD,oBAAC;IAAK,MAAM;IAAI,WAAU;KAA4B;IACrB;GACT;;AAIhC,SAAS,uBAAuB,EAC9B,UACA,GAAG,SAGF;CACD,MAAM,EAAE,SAAS,sBAAsB,eAAe;AACtD,QACE,oBAAC,sBAAsB;EACrB,WAAW,GACT,+QACA,OACI,gDACA,+CACJ,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,oBAAoB,EAC3B,WACA,kBACA,cACA,WACA,GAAG,SAMF;CACD,MAAM,EAAE,SAAS,sBAAsB,gBAAgB;AACvD,QACE,oBAAC,sBAAsB;EAAO,UAAU;YACtC,oBAAC,sBAAsB;GACrB,OACE,eACI,WAAW,QAAQ,CACjB,SAAS,OAAO,QAAQ,WAAW,eAAe,QAClD,aACD,CAAC,GACF,SAAS,OAAO,QACd,WAAW,eACX;GAER,WAAW;aAEX,oBAAC,sBAAsB;IACrB,WAAW,GACT,0RACA,OACI,gDACA,kDACJ,UACD;IACD,GAAI;KACJ;IAC4B;GACH;;AAInC,SAAS,iBAAiB,EACxB,WACA,MACA,GAAG,SAKF;AACD,QACE,oBAAC,iBAAiB;EAAS,OAAM;YAC/B,oBAAC,sBAAsB;GACrB,WAAW,GACT,qLACA,SAAS,QACT,MAAM,YAAY,sCAClB,UACD;GACD,GAAI;IACJ;GACwB;;AAIhC,SAAS,yBAAyB,EAChC,WACA,UACA,QACA,GAAG,SAIF;AACD,QACE,qBAAC,sBAAsB;EACrB,WAAW,GACT,oKACA,MAAM,YAAY,sCAClB,UACD;EACQ;EACT,GAAI;aAEJ,oBAAC;GAAK,WAAU;aACd,oBAAC,sBAAsB,2BACrB,oBAAC;IAAM,MAAM;IAAI,aAAa;IAAG,WAAU;KAAoB,GAC3B;IACjC,EACN;GACkC;;AAIzC,SAAS,sBAAsB,EAC7B,WACA,SACA,GAAG,SAIF;AACD,QACE,qBAAC,sBAAsB;EACrB,WAAW,GACT,oKACA,MAAM,YAAY,sCAClB,UACD;EACD,GAAI;aAEJ,oBAAC;GAAK,WAAU;aACd,oBAAC,sBAAsB,2BACrB,oBAAC,QAAK,WAAU,uCAAuC,GACnB;IACjC,EACN;GAC+B;;AAItC,SAAS,kBAAkB,EACzB,WACA,MACA,GAAG,SAKF;AACD,QACE,oBAAC,sBAAsB;EACrB,WAAW,GACT,yFACA,SAAS,QACT,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,sBAAsB,EAC7B,UACA,GAAG,SAGF;AACD,QACE,oBAAC,sBAAsB;EACrB,WAAW,GAAG,6BAA6B,UAAU;EACrD,GAAI;GACJ;;AAIN,SAAS,qBAAqB,EAAE,UAAW,GAAG,SAAoB;AAChE,QACE,oBAAC;EACC,WAAW,GACT,wEACA,UACD;EACD,GAAI;GACJ"}
@@ -0,0 +1,29 @@
1
+ import * as React$1 from "react";
2
+ import * as react_jsx_runtime51 from "react/jsx-runtime";
3
+ import { VariantProps } from "class-variance-authority";
4
+ import * as class_variance_authority_types3 from "class-variance-authority/types";
5
+
6
+ //#region ui/empty-state.d.ts
7
+ declare const containerVariants: (props?: ({
8
+ density?: "default" | "compact" | null | undefined;
9
+ } & class_variance_authority_types3.ClassProp) | undefined) => string;
10
+ interface EmptyStateProps extends VariantProps<typeof containerVariants> {
11
+ icon?: React$1.ReactNode;
12
+ title: React$1.ReactNode;
13
+ description?: React$1.ReactNode;
14
+ primaryAction?: React$1.ReactNode;
15
+ secondaryAction?: React$1.ReactNode;
16
+ className?: string;
17
+ }
18
+ declare function EmptyState({
19
+ icon,
20
+ title,
21
+ description,
22
+ primaryAction,
23
+ secondaryAction,
24
+ className,
25
+ density
26
+ }: EmptyStateProps): react_jsx_runtime51.JSX.Element;
27
+ //#endregion
28
+ export { EmptyState, EmptyStateProps };
29
+ //# sourceMappingURL=empty-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-state.d.ts","names":[],"sources":["../../ui/empty-state.tsx"],"sourcesContent":[],"mappings":";;;;;;cAQM;;IAUJ,+BAAA,CAAA;UAEe,eAAA,SACP,oBAAoB;EAbxB,IAAA,CAAA,EAcG,OAAA,CAAM,SAJb;EAEe,KAAA,EAGR,OAAA,CAAM,SAFb;EAA4B,WAAA,CAAA,EAGd,OAAA,CAAM,SAHQ;EACrB,aAAM,CAAA,EAGG,OAAA,CAAM,SAHT;EACN,eAAM,CAAA,EAGK,OAAA,CAAM,SAHX;EACC,SAAM,CAAA,EAAA,MAAA;;AAEF,iBAIJ,UAAA,CAJU;EAAA,IAAA;EAAA,KAAA;EAAA,WAAA;EAAA,aAAA;EAAA,eAAA;EAAA,SAAA;EAAA;AAAA,CAAA,EAYvB,eAZuB,CAAA,EAYR,mBAAA,CAAA,GAAA,CAAA,OAZQ"}
@@ -0,0 +1,46 @@
1
+ import { cn } from "./utils.js";
2
+ import { Text as Text$1 } from "./text.js";
3
+ import { VStack } from "./stack.js";
4
+ import { H3 } from "./typography.js";
5
+ import "react";
6
+ import { View } from "react-native";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { cva } from "class-variance-authority";
9
+
10
+ //#region ui/empty-state.tsx
11
+ const containerVariants = cva("items-center text-center", {
12
+ variants: { density: {
13
+ compact: "gap-3 p-6",
14
+ default: "gap-4 p-8"
15
+ } },
16
+ defaultVariants: { density: "default" }
17
+ });
18
+ function EmptyState({ icon, title, description, primaryAction, secondaryAction, className, density }) {
19
+ return /* @__PURE__ */ jsxs(VStack, {
20
+ className: cn(containerVariants({ density }), className),
21
+ children: [
22
+ icon ? /* @__PURE__ */ jsx(View, {
23
+ className: "bg-muted flex h-12 w-12 items-center justify-center rounded-full",
24
+ children: /* @__PURE__ */ jsx(View, {
25
+ className: "text-muted-foreground flex items-center justify-center",
26
+ children: icon
27
+ })
28
+ }) : null,
29
+ /* @__PURE__ */ jsxs(View, { children: [/* @__PURE__ */ jsx(H3, {
30
+ className: "font-medium",
31
+ children: title
32
+ }), description ? /* @__PURE__ */ jsx(View, {
33
+ className: "text-muted-foreground text-base",
34
+ children: /* @__PURE__ */ jsx(Text$1, { children: description })
35
+ }) : null] }),
36
+ (primaryAction || secondaryAction) && /* @__PURE__ */ jsxs(View, {
37
+ className: "flex items-center justify-center gap-2",
38
+ children: [primaryAction, secondaryAction]
39
+ })
40
+ ]
41
+ });
42
+ }
43
+
44
+ //#endregion
45
+ export { EmptyState };
46
+ //# sourceMappingURL=empty-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-state.js","names":["Text"],"sources":["../../ui/empty-state.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from './utils';\nimport { VStack } from './stack';\nimport { H3 } from './typography';\nimport { Text } from './text';\nimport { View } from 'react-native';\n\nconst containerVariants = cva('items-center text-center', {\n variants: {\n density: {\n compact: 'gap-3 p-6',\n default: 'gap-4 p-8',\n },\n },\n defaultVariants: {\n density: 'default',\n },\n});\n\nexport interface EmptyStateProps\n extends VariantProps<typeof containerVariants> {\n icon?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n primaryAction?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n className?: string;\n}\n\nexport function EmptyState({\n icon,\n title,\n description,\n primaryAction,\n secondaryAction,\n className,\n density,\n}: EmptyStateProps) {\n return (\n <VStack className={cn(containerVariants({ density }), className)}>\n {icon ? (\n <View className=\"bg-muted flex h-12 w-12 items-center justify-center rounded-full\">\n {/* Consumers pass their own icon; keep neutral backdrop */}\n <View className=\"text-muted-foreground flex items-center justify-center\">\n {icon}\n </View>\n </View>\n ) : null}\n\n <View>\n <H3 className=\"font-medium\">{title}</H3>\n {description ? (\n <View className=\"text-muted-foreground text-base\">\n <Text>{description}</Text>\n </View>\n ) : null}\n </View>\n\n {(primaryAction || secondaryAction) && (\n <View className=\"flex items-center justify-center gap-2\">\n {primaryAction}\n {secondaryAction}\n </View>\n )}\n </VStack>\n );\n}\n"],"mappings":";;;;;;;;;;AAQA,MAAM,oBAAoB,IAAI,4BAA4B;CACxD,UAAU,EACR,SAAS;EACP,SAAS;EACT,SAAS;EACV,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CAAC;AAYF,SAAgB,WAAW,EACzB,MACA,OACA,aACA,eACA,iBACA,WACA,WACkB;AAClB,QACE,qBAAC;EAAO,WAAW,GAAG,kBAAkB,EAAE,SAAS,CAAC,EAAE,UAAU;;GAC7D,OACC,oBAAC;IAAK,WAAU;cAEd,oBAAC;KAAK,WAAU;eACb;MACI;KACF,GACL;GAEJ,qBAAC,mBACC,oBAAC;IAAG,WAAU;cAAe;KAAW,EACvC,cACC,oBAAC;IAAK,WAAU;cACd,oBAACA,oBAAM,cAAmB;KACrB,GACL,QACC;IAEL,iBAAiB,oBACjB,qBAAC;IAAK,WAAU;eACb,eACA;KACI;;GAEF"}
@@ -0,0 +1,37 @@
1
+ import { ViewProps } from "react-native";
2
+ import * as react_jsx_runtime61 from "react/jsx-runtime";
3
+ import { VariantProps } from "class-variance-authority";
4
+ import * as class_variance_authority_types4 from "class-variance-authority/types";
5
+
6
+ //#region ui/empty.d.ts
7
+ declare function Empty({
8
+ className,
9
+ ...props
10
+ }: ViewProps): react_jsx_runtime61.JSX.Element;
11
+ declare function EmptyHeader({
12
+ className,
13
+ ...props
14
+ }: ViewProps): react_jsx_runtime61.JSX.Element;
15
+ declare const emptyMediaVariants: (props?: ({
16
+ variant?: "default" | "icon" | null | undefined;
17
+ } & class_variance_authority_types4.ClassProp) | undefined) => string;
18
+ declare function EmptyMedia({
19
+ className,
20
+ variant,
21
+ ...props
22
+ }: ViewProps & VariantProps<typeof emptyMediaVariants>): react_jsx_runtime61.JSX.Element;
23
+ declare function EmptyTitle({
24
+ className,
25
+ ...props
26
+ }: ViewProps): react_jsx_runtime61.JSX.Element;
27
+ declare function EmptyDescription({
28
+ className,
29
+ ...props
30
+ }: ViewProps): react_jsx_runtime61.JSX.Element;
31
+ declare function EmptyContent({
32
+ className,
33
+ ...props
34
+ }: ViewProps): react_jsx_runtime61.JSX.Element;
35
+ //#endregion
36
+ export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle };
37
+ //# sourceMappingURL=empty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty.d.ts","names":[],"sources":["../../ui/empty.tsx"],"sourcesContent":[],"mappings":";;;;;;iBAKS,KAAA;;;GAA+B,YAAS,mBAAA,CAAA,GAAA,CAAA;iBAaxC,WAAA;;;GAAqC,YAAS,mBAAA,CAAA,GAAA,CAAA;cAajD,0BA1BQ;;AAFsC,CAAA,GAyCnD,+BAAA,CAAA,SAvCa,CAAA,GAAA,SAAA,EAAA,GAAA,MAAA;iBAyCL,UAAA,CAzCQ;EAAA,SAAA;EAAA,OAAA;EAAA,GAAA;AAAA,CAAA,EA6Cd,SA7Cc,GA6CF,YA7CE,CAAA,OA6CkB,kBA7ClB,CAAA,CAAA,EA6CqC,mBAAA,CAAA,GAAA,CAAA,OA7CrC;iBAwDR,UAAA,CAxD+B;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAwDK,SAxDL,CAAA,EAwDc,mBAAA,CAAA,GAAA,CAAA,OAxDd;iBAkE/B,gBAAA,CAlEwC;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAkEE,SAlEF,CAAA,EAkEW,mBAAA,CAAA,GAAA,CAAA,OAlEX;iBA+ExC,YAAA,CA/EwC;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA+EF,SA/EE,CAAA,EA+EO,mBAAA,CAAA,GAAA,CAAA,OA/EP"}
@@ -0,0 +1,63 @@
1
+ import { cn } from "./utils.js";
2
+ import { View } from "react-native";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { cva } from "class-variance-authority";
5
+
6
+ //#region ui/empty.tsx
7
+ function Empty({ className,...props }) {
8
+ return /* @__PURE__ */ jsx(View, {
9
+ "data-slot": "empty",
10
+ className: cn("flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12", className),
11
+ ...props
12
+ });
13
+ }
14
+ function EmptyHeader({ className,...props }) {
15
+ return /* @__PURE__ */ jsx(View, {
16
+ "data-slot": "empty-header",
17
+ className: cn("flex max-w-sm flex-col items-center gap-2 text-center", className),
18
+ ...props
19
+ });
20
+ }
21
+ const emptyMediaVariants = cva("flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
22
+ variants: { variant: {
23
+ default: "bg-transparent",
24
+ icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6"
25
+ } },
26
+ defaultVariants: { variant: "default" }
27
+ });
28
+ function EmptyMedia({ className, variant = "default",...props }) {
29
+ return /* @__PURE__ */ jsx(View, {
30
+ "data-slot": "empty-icon",
31
+ "data-variant": variant,
32
+ className: cn(emptyMediaVariants({
33
+ variant,
34
+ className
35
+ })),
36
+ ...props
37
+ });
38
+ }
39
+ function EmptyTitle({ className,...props }) {
40
+ return /* @__PURE__ */ jsx(View, {
41
+ "data-slot": "empty-title",
42
+ className: cn("text-lg font-medium tracking-tight", className),
43
+ ...props
44
+ });
45
+ }
46
+ function EmptyDescription({ className,...props }) {
47
+ return /* @__PURE__ */ jsx(View, {
48
+ "data-slot": "empty-description",
49
+ className: cn("text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4", className),
50
+ ...props
51
+ });
52
+ }
53
+ function EmptyContent({ className,...props }) {
54
+ return /* @__PURE__ */ jsx(View, {
55
+ "data-slot": "empty-content",
56
+ className: cn("flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance", className),
57
+ ...props
58
+ });
59
+ }
60
+
61
+ //#endregion
62
+ export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle };
63
+ //# sourceMappingURL=empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty.js","names":[],"sources":["../../ui/empty.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from './utils';\nimport { View, type ViewProps } from 'react-native';\n\nfunction Empty({ className, ...props }: ViewProps) {\n return (\n <View\n data-slot=\"empty\"\n className={cn(\n 'flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyHeader({ className, ...props }: ViewProps) {\n return (\n <View\n data-slot=\"empty-header\"\n className={cn(\n 'flex max-w-sm flex-col items-center gap-2 text-center',\n className\n )}\n {...props}\n />\n );\n}\n\nconst emptyMediaVariants = cva(\n 'flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n icon: \"bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6\",\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nfunction EmptyMedia({\n className,\n variant = 'default',\n ...props\n}: ViewProps & VariantProps<typeof emptyMediaVariants>) {\n return (\n <View\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\nfunction EmptyTitle({ className, ...props }: ViewProps) {\n return (\n <View\n data-slot=\"empty-title\"\n className={cn('text-lg font-medium tracking-tight', className)}\n {...props}\n />\n );\n}\n\nfunction EmptyDescription({ className, ...props }: ViewProps) {\n return (\n <View\n data-slot=\"empty-description\"\n className={cn(\n 'text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: ViewProps) {\n return (\n <View\n data-slot=\"empty-content\"\n className={cn(\n 'flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance',\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n};\n"],"mappings":";;;;;;AAKA,SAAS,MAAM,EAAE,UAAW,GAAG,SAAoB;AACjD,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,gIACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,YAAY,EAAE,UAAW,GAAG,SAAoB;AACvD,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,yDACA,UACD;EACD,GAAI;GACJ;;AAIN,MAAM,qBAAqB,IACzB,+FACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,MAAM;EACP,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;AAED,SAAS,WAAW,EAClB,WACA,UAAU,UACV,GAAG,SACmD;AACtD,QACE,oBAAC;EACC,aAAU;EACV,gBAAc;EACd,WAAW,GAAG,mBAAmB;GAAE;GAAS;GAAW,CAAC,CAAC;EACzD,GAAI;GACJ;;AAIN,SAAS,WAAW,EAAE,UAAW,GAAG,SAAoB;AACtD,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,sCAAsC,UAAU;EAC9D,GAAI;GACJ;;AAIN,SAAS,iBAAiB,EAAE,UAAW,GAAG,SAAoB;AAC5D,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,2GACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,aAAa,EAAE,UAAW,GAAG,SAAoB;AACxD,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,iFACA,UACD;EACD,GAAI;GACJ"}
@@ -0,0 +1,36 @@
1
+ import React from "react";
2
+ import * as react_jsx_runtime67 from "react/jsx-runtime";
3
+
4
+ //#region ui/fab.d.ts
5
+ interface FABAction {
6
+ icon: React.ReactNode;
7
+ label: string;
8
+ onPress: () => void;
9
+ color?: string;
10
+ }
11
+ interface FABProps {
12
+ actions: FABAction[];
13
+ className?: string;
14
+ mainIcon?: React.ReactNode;
15
+ mainColor?: string;
16
+ }
17
+ declare function FAB({
18
+ actions,
19
+ className,
20
+ mainIcon,
21
+ mainColor
22
+ }: FABProps): react_jsx_runtime67.JSX.Element;
23
+ declare function MiniFAB({
24
+ icon,
25
+ onPress,
26
+ className,
27
+ color
28
+ }: {
29
+ icon: React.ReactNode;
30
+ onPress: () => void;
31
+ className?: string;
32
+ color?: string;
33
+ }): react_jsx_runtime67.JSX.Element;
34
+ //#endregion
35
+ export { FAB, MiniFAB };
36
+ //# sourceMappingURL=fab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fab.d.ts","names":[],"sources":["../../ui/fab.tsx"],"sourcesContent":[],"mappings":";;;;UAUU,SAAA;QACF,KAAA,CAAM;;EADJ,OAAA,EAAA,GAAS,GAAA,IAAA;EAOT,KAAA,CAAA,EAAA,MAAQ;AASlB;UATU,QAAA,CAUR;EACA,OAAA,EAVS,SAUT,EAAA;EACA,SAAA,CAAA,EAAA,MAAA;EACA,QAAA,CAAA,EAVW,KAAA,CAAM,SAUjB;EACC,SAAA,CAAA,EAAA,MAAA;;AAAQ,iBALK,GAAA,CAKL;EAAA,OAAA;EAAA,SAAA;EAAA,QAAA;EAAA;AAAA,CAAA,EAAR,QAAQ,CAAA,EAAA,mBAAA,CAAA,GAAA,CAAA,OAAA;AAuHK,iBAAA,OAAA,CAAO;EAAA,IAAA;EAAA,OAAA;EAAA,SAAA;EAAA;CAAA,EAAA;EACrB,IAAA,EAKM,KAAA,CAAM,SALZ;EACA,OAAA,EAAA,GAAA,GAAA,IAAA;EACA,SAAA,CAAA,EAAA,MAAA;EACA,KAAA,CAAA,EAAA,MAAA;CAEM,CAAA,EAIP,mBAAA,CAAA,GAAA,CAAA,OAJa"}
package/dist/ui/fab.js ADDED
@@ -0,0 +1,104 @@
1
+ import { cn } from "./utils.js";
2
+ import React, { useState } from "react";
3
+ import { Pressable, StyleSheet, View } from "react-native";
4
+ import Animated, { useAnimatedStyle, withSpring, withTiming } from "react-native-reanimated";
5
+ import { Plus, X } from "lucide-react-native";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+
8
+ //#region ui/fab.tsx
9
+ const AnimatedPressable = Animated.createAnimatedComponent(Pressable);
10
+ function FAB({ actions, className, mainIcon, mainColor = "bg-primary" }) {
11
+ const [isOpen, setIsOpen] = useState(false);
12
+ const toggleMenu = () => {
13
+ setIsOpen(!isOpen);
14
+ };
15
+ const rotation = useAnimatedStyle(() => {
16
+ return { transform: [{ rotate: withSpring(isOpen ? "45deg" : "0deg", {
17
+ damping: 15,
18
+ stiffness: 150
19
+ }) }] };
20
+ });
21
+ return /* @__PURE__ */ jsxs(View, {
22
+ className: cn("absolute right-4 bottom-24 z-50", className),
23
+ children: [
24
+ isOpen && /* @__PURE__ */ jsx(Pressable, {
25
+ style: StyleSheet.absoluteFillObject,
26
+ className: "fixed inset-0 -top-full -left-full h-[200%] w-[200%]",
27
+ onPress: () => setIsOpen(false)
28
+ }),
29
+ actions.map((action, index) => {
30
+ return /* @__PURE__ */ jsx(AnimatedPressable, {
31
+ style: [useAnimatedStyle(() => {
32
+ return {
33
+ transform: [{ translateY: withSpring(isOpen ? -(index + 1) * 65 : 0, {
34
+ damping: 15,
35
+ stiffness: 150,
36
+ mass: 1 + index * .1
37
+ }) }],
38
+ opacity: withTiming(isOpen ? 1 : 0, { duration: 200 }),
39
+ pointerEvents: isOpen ? "auto" : "none"
40
+ };
41
+ }), useAnimatedStyle(() => {
42
+ return { transform: [{ scale: withSpring(isOpen ? 1 : .8, {
43
+ damping: 15,
44
+ stiffness: 150
45
+ }) }] };
46
+ })],
47
+ className: "absolute right-0 bottom-0",
48
+ onPress: () => {
49
+ action.onPress();
50
+ setIsOpen(false);
51
+ },
52
+ children: /* @__PURE__ */ jsx(View, {
53
+ className: cn("h-12 w-12 items-center justify-center rounded-full shadow-lg", action.color || "bg-secondary"),
54
+ children: action.icon
55
+ })
56
+ }, index);
57
+ }),
58
+ /* @__PURE__ */ jsx(AnimatedPressable, {
59
+ onPress: toggleMenu,
60
+ className: cn("h-14 w-14 items-center justify-center rounded-full shadow-xl", mainColor),
61
+ style: [rotation, {
62
+ shadowColor: "#000",
63
+ shadowOffset: {
64
+ width: 0,
65
+ height: 4
66
+ },
67
+ shadowOpacity: .3,
68
+ shadowRadius: 8,
69
+ elevation: 8
70
+ }],
71
+ children: isOpen ? /* @__PURE__ */ jsx(X, {
72
+ size: 24,
73
+ color: "white",
74
+ strokeWidth: 2.5
75
+ }) : mainIcon || /* @__PURE__ */ jsx(Plus, {
76
+ size: 24,
77
+ color: "white",
78
+ strokeWidth: 2.5
79
+ })
80
+ })
81
+ ]
82
+ });
83
+ }
84
+ function MiniFAB({ icon, onPress, className, color = "bg-primary" }) {
85
+ return /* @__PURE__ */ jsx(Pressable, {
86
+ onPress,
87
+ className: cn("h-12 w-12 items-center justify-center rounded-full shadow-lg", color, className),
88
+ style: {
89
+ shadowColor: "#000",
90
+ shadowOffset: {
91
+ width: 0,
92
+ height: 2
93
+ },
94
+ shadowOpacity: .25,
95
+ shadowRadius: 4,
96
+ elevation: 5
97
+ },
98
+ children: icon
99
+ });
100
+ }
101
+
102
+ //#endregion
103
+ export { FAB, MiniFAB };
104
+ //# sourceMappingURL=fab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fab.js","names":[],"sources":["../../ui/fab.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Pressable, StyleSheet, View } from 'react-native';\nimport Animated, {\n useAnimatedStyle,\n withSpring,\n withTiming,\n} from 'react-native-reanimated';\nimport { cn } from './utils';\nimport { Plus, X } from 'lucide-react-native';\n\ninterface FABAction {\n icon: React.ReactNode;\n label: string;\n onPress: () => void;\n color?: string;\n}\n\ninterface FABProps {\n actions: FABAction[];\n className?: string;\n mainIcon?: React.ReactNode;\n mainColor?: string;\n}\n\nconst AnimatedPressable = Animated.createAnimatedComponent(Pressable);\n\nexport function FAB({\n actions,\n className,\n mainIcon,\n mainColor = 'bg-primary',\n}: FABProps) {\n const [isOpen, setIsOpen] = useState(false);\n\n const toggleMenu = () => {\n setIsOpen(!isOpen);\n };\n\n const rotation = useAnimatedStyle(() => {\n return {\n transform: [\n {\n rotate: withSpring(isOpen ? '45deg' : '0deg', {\n damping: 15,\n stiffness: 150,\n }),\n },\n ],\n };\n });\n\n return (\n <View className={cn('absolute right-4 bottom-24 z-50', className)}>\n {/* Backdrop */}\n {isOpen && (\n <Pressable\n style={StyleSheet.absoluteFillObject}\n className=\"fixed inset-0 -top-full -left-full h-[200%] w-[200%]\"\n onPress={() => setIsOpen(false)}\n />\n )}\n\n {/* Action buttons */}\n {actions.map((action, index) => {\n const translateY = useAnimatedStyle(() => {\n const baseTranslation = isOpen ? -(index + 1) * 65 : 0;\n return {\n transform: [\n {\n translateY: withSpring(baseTranslation, {\n damping: 15,\n stiffness: 150,\n mass: 1 + index * 0.1,\n }),\n },\n ],\n opacity: withTiming(isOpen ? 1 : 0, {\n duration: 200,\n }),\n pointerEvents: isOpen ? 'auto' : 'none',\n };\n });\n\n const scale = useAnimatedStyle(() => {\n return {\n transform: [\n {\n scale: withSpring(isOpen ? 1 : 0.8, {\n damping: 15,\n stiffness: 150,\n }),\n },\n ],\n };\n });\n\n return (\n <AnimatedPressable\n key={index}\n style={[translateY, scale]}\n className=\"absolute right-0 bottom-0\"\n onPress={() => {\n action.onPress();\n setIsOpen(false);\n }}\n >\n <View\n className={cn(\n 'h-12 w-12 items-center justify-center rounded-full shadow-lg',\n action.color || 'bg-secondary'\n )}\n >\n {action.icon}\n </View>\n </AnimatedPressable>\n );\n })}\n\n {/* Main FAB button */}\n <AnimatedPressable\n onPress={toggleMenu}\n className={cn(\n 'h-14 w-14 items-center justify-center rounded-full shadow-xl',\n mainColor\n )}\n style={[\n rotation,\n {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 4,\n },\n shadowOpacity: 0.3,\n shadowRadius: 8,\n elevation: 8,\n },\n ]}\n >\n {isOpen ? (\n <X size={24} color=\"white\" strokeWidth={2.5} />\n ) : (\n mainIcon || <Plus size={24} color=\"white\" strokeWidth={2.5} />\n )}\n </AnimatedPressable>\n </View>\n );\n}\n\n// Mini FAB for single actions\nexport function MiniFAB({\n icon,\n onPress,\n className,\n color = 'bg-primary',\n}: {\n icon: React.ReactNode;\n onPress: () => void;\n className?: string;\n color?: string;\n}) {\n return (\n <Pressable\n onPress={onPress}\n className={cn(\n 'h-12 w-12 items-center justify-center rounded-full shadow-lg',\n color,\n className\n )}\n style={{\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 2,\n },\n shadowOpacity: 0.25,\n shadowRadius: 4,\n elevation: 5,\n }}\n >\n {icon}\n </Pressable>\n );\n}\n"],"mappings":";;;;;;;;AAwBA,MAAM,oBAAoB,SAAS,wBAAwB,UAAU;AAErE,SAAgB,IAAI,EAClB,SACA,WACA,UACA,YAAY,gBACD;CACX,MAAM,CAAC,QAAQ,aAAa,SAAS,MAAM;CAE3C,MAAM,mBAAmB;AACvB,YAAU,CAAC,OAAO;;CAGpB,MAAM,WAAW,uBAAuB;AACtC,SAAO,EACL,WAAW,CACT,EACE,QAAQ,WAAW,SAAS,UAAU,QAAQ;GAC5C,SAAS;GACT,WAAW;GACZ,CAAC,EACH,CACF,EACF;GACD;AAEF,QACE,qBAAC;EAAK,WAAW,GAAG,mCAAmC,UAAU;;GAE9D,UACC,oBAAC;IACC,OAAO,WAAW;IAClB,WAAU;IACV,eAAe,UAAU,MAAM;KAC/B;GAIH,QAAQ,KAAK,QAAQ,UAAU;AAiC9B,WACE,oBAAC;KAEC,OAAO,CAnCQ,uBAAuB;AAExC,aAAO;OACL,WAAW,CACT,EACE,YAAY,WAJM,SAAS,EAAE,QAAQ,KAAK,KAAK,GAIP;QACtC,SAAS;QACT,WAAW;QACX,MAAM,IAAI,QAAQ;QACnB,CAAC,EACH,CACF;OACD,SAAS,WAAW,SAAS,IAAI,GAAG,EAClC,UAAU,KACX,CAAC;OACF,eAAe,SAAS,SAAS;OAClC;OACD,EAEY,uBAAuB;AACnC,aAAO,EACL,WAAW,CACT,EACE,OAAO,WAAW,SAAS,IAAI,IAAK;OAClC,SAAS;OACT,WAAW;OACZ,CAAC,EACH,CACF,EACF;OACD,CAK4B;KAC1B,WAAU;KACV,eAAe;AACb,aAAO,SAAS;AAChB,gBAAU,MAAM;;eAGlB,oBAAC;MACC,WAAW,GACT,gEACA,OAAO,SAAS,eACjB;gBAEA,OAAO;OACH;OAfF,MAgBa;KAEtB;GAGF,oBAAC;IACC,SAAS;IACT,WAAW,GACT,gEACA,UACD;IACD,OAAO,CACL,UACA;KACE,aAAa;KACb,cAAc;MACZ,OAAO;MACP,QAAQ;MACT;KACD,eAAe;KACf,cAAc;KACd,WAAW;KACZ,CACF;cAEA,SACC,oBAAC;KAAE,MAAM;KAAI,OAAM;KAAQ,aAAa;MAAO,GAE/C,YAAY,oBAAC;KAAK,MAAM;KAAI,OAAM;KAAQ,aAAa;MAAO;KAE9C;;GACf;;AAKX,SAAgB,QAAQ,EACtB,MACA,SACA,WACA,QAAQ,gBAMP;AACD,QACE,oBAAC;EACU;EACT,WAAW,GACT,gEACA,OACA,UACD;EACD,OAAO;GACL,aAAa;GACb,cAAc;IACZ,OAAO;IACP,QAAQ;IACT;GACD,eAAe;GACf,cAAc;GACd,WAAW;GACZ;YAEA;GACS"}