@alneas/appkit-react 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (659) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +85 -15
  3. package/consumer-ai/SKILL.md +12 -0
  4. package/consumer-ai/api-index.json +103754 -0
  5. package/consumer-ai/package-context.json +409 -0
  6. package/dist/ai/action/ExecutionHistory.cjs.map +1 -1
  7. package/dist/ai/action/ExecutionHistory.d.cts +32 -2
  8. package/dist/ai/action/ExecutionHistory.d.ts +32 -2
  9. package/dist/ai/action/ExecutionHistory.js.map +1 -1
  10. package/dist/ai/action/ScreenActionContext.cjs.map +1 -1
  11. package/dist/ai/action/ScreenActionContext.d.cts +15 -2
  12. package/dist/ai/action/ScreenActionContext.d.ts +15 -2
  13. package/dist/ai/action/ScreenActionContext.js.map +1 -1
  14. package/dist/ai/action/context.cjs.map +1 -1
  15. package/dist/ai/action/context.d.cts +19 -3
  16. package/dist/ai/action/context.d.ts +19 -3
  17. package/dist/ai/action/context.js.map +1 -1
  18. package/dist/ai/action/types.d.cts +35 -3
  19. package/dist/ai/action/types.d.ts +35 -3
  20. package/dist/ai/action/use-execution-session.cjs.map +1 -1
  21. package/dist/ai/action/use-execution-session.d.cts +17 -1
  22. package/dist/ai/action/use-execution-session.d.ts +17 -1
  23. package/dist/ai/action/use-execution-session.js.map +1 -1
  24. package/dist/ai/action/use-screen-action-registry.cjs.map +1 -1
  25. package/dist/ai/action/use-screen-action-registry.d.cts +77 -8
  26. package/dist/ai/action/use-screen-action-registry.d.ts +77 -8
  27. package/dist/ai/action/use-screen-action-registry.js.map +1 -1
  28. package/dist/ai/action/use-screen-action.cjs.map +1 -1
  29. package/dist/ai/action/use-screen-action.d.cts +23 -6
  30. package/dist/ai/action/use-screen-action.d.ts +23 -6
  31. package/dist/ai/action/use-screen-action.js.map +1 -1
  32. package/dist/ai/action/use-screen-context.cjs.map +1 -1
  33. package/dist/ai/action/use-screen-context.d.cts +42 -5
  34. package/dist/ai/action/use-screen-context.d.ts +42 -5
  35. package/dist/ai/action/use-screen-context.js.map +1 -1
  36. package/dist/ai/ai-chat/transport.cjs.map +1 -1
  37. package/dist/ai/ai-chat/transport.d.cts +35 -8
  38. package/dist/ai/ai-chat/transport.d.ts +35 -8
  39. package/dist/ai/ai-chat/transport.js.map +1 -1
  40. package/dist/ai/generative-ui/GenerativeUIRenderer.cjs.map +1 -1
  41. package/dist/ai/generative-ui/GenerativeUIRenderer.d.cts +21 -3
  42. package/dist/ai/generative-ui/GenerativeUIRenderer.d.ts +21 -3
  43. package/dist/ai/generative-ui/GenerativeUIRenderer.js.map +1 -1
  44. package/dist/ai/generative-ui/error-boundary.cjs.map +1 -1
  45. package/dist/ai/generative-ui/error-boundary.d.cts +98 -2
  46. package/dist/ai/generative-ui/error-boundary.d.ts +98 -2
  47. package/dist/ai/generative-ui/error-boundary.js.map +1 -1
  48. package/dist/ai/generative-ui/registry.cjs.map +1 -1
  49. package/dist/ai/generative-ui/registry.d.cts +96 -7
  50. package/dist/ai/generative-ui/registry.d.ts +96 -7
  51. package/dist/ai/generative-ui/registry.js.map +1 -1
  52. package/dist/ai/proposal/ProposalFieldReview.cjs.map +1 -1
  53. package/dist/ai/proposal/ProposalFieldReview.d.cts +170 -8
  54. package/dist/ai/proposal/ProposalFieldReview.d.ts +170 -8
  55. package/dist/ai/proposal/ProposalFieldReview.js.map +1 -1
  56. package/dist/ai/proposal/types.d.cts +97 -26
  57. package/dist/ai/proposal/types.d.ts +97 -26
  58. package/dist/ai/proposal/use-proposal-batch-review.cjs.map +1 -1
  59. package/dist/ai/proposal/use-proposal-batch-review.d.cts +133 -7
  60. package/dist/ai/proposal/use-proposal-batch-review.d.ts +133 -7
  61. package/dist/ai/proposal/use-proposal-batch-review.js.map +1 -1
  62. package/dist/ai/proposal/use-proposal-review.cjs.map +1 -1
  63. package/dist/ai/proposal/use-proposal-review.d.cts +47 -5
  64. package/dist/ai/proposal/use-proposal-review.d.ts +47 -5
  65. package/dist/ai/proposal/use-proposal-review.js.map +1 -1
  66. package/dist/avatar.svg +1 -0
  67. package/dist/consumer-ai/SKILL.md +6 -0
  68. package/dist/consumer-ai/api-index.json +103754 -0
  69. package/dist/consumer-ai/package-context.json +5 -3
  70. package/dist/mockServiceWorker.js +361 -0
  71. package/dist/styles.css +1 -1
  72. package/dist/tools/components/auth/AuthForms.cjs.map +1 -1
  73. package/dist/tools/components/auth/AuthForms.d.cts +131 -81
  74. package/dist/tools/components/auth/AuthForms.d.ts +131 -81
  75. package/dist/tools/components/auth/AuthForms.js.map +1 -1
  76. package/dist/tools/components/auth/AuthGuard.cjs.map +1 -1
  77. package/dist/tools/components/auth/AuthGuard.d.cts +31 -4
  78. package/dist/tools/components/auth/AuthGuard.d.ts +31 -4
  79. package/dist/tools/components/auth/AuthGuard.js.map +1 -1
  80. package/dist/tools/components/auth/AuthProvider.cjs.map +1 -1
  81. package/dist/tools/components/auth/AuthProvider.d.cts +39 -42
  82. package/dist/tools/components/auth/AuthProvider.d.ts +39 -42
  83. package/dist/tools/components/auth/AuthProvider.js.map +1 -1
  84. package/dist/tools/components/auth/ProtectedRoute.cjs.map +1 -1
  85. package/dist/tools/components/auth/ProtectedRoute.d.cts +75 -60
  86. package/dist/tools/components/auth/ProtectedRoute.d.ts +75 -60
  87. package/dist/tools/components/auth/ProtectedRoute.js.map +1 -1
  88. package/dist/tools/components/auth/SignInButton.cjs.map +1 -1
  89. package/dist/tools/components/auth/SignInButton.d.cts +26 -18
  90. package/dist/tools/components/auth/SignInButton.d.ts +26 -18
  91. package/dist/tools/components/auth/SignInButton.js.map +1 -1
  92. package/dist/tools/components/auth/UserProfileProvider.cjs.map +1 -1
  93. package/dist/tools/components/auth/UserProfileProvider.d.cts +48 -20
  94. package/dist/tools/components/auth/UserProfileProvider.d.ts +48 -20
  95. package/dist/tools/components/auth/UserProfileProvider.js.map +1 -1
  96. package/dist/tools/components/auth/adapters/better-auth-adapter.cjs.map +1 -1
  97. package/dist/tools/components/auth/adapters/better-auth-adapter.d.cts +371 -51
  98. package/dist/tools/components/auth/adapters/better-auth-adapter.d.ts +371 -51
  99. package/dist/tools/components/auth/adapters/better-auth-adapter.js.map +1 -1
  100. package/dist/tools/components/auth/adapters/mock-adapter.cjs.map +1 -1
  101. package/dist/tools/components/auth/adapters/mock-adapter.d.cts +149 -28
  102. package/dist/tools/components/auth/adapters/mock-adapter.d.ts +149 -28
  103. package/dist/tools/components/auth/adapters/mock-adapter.js.map +1 -1
  104. package/dist/tools/components/auth/auth-session.cjs.map +1 -1
  105. package/dist/tools/components/auth/auth-session.d.cts +147 -1
  106. package/dist/tools/components/auth/auth-session.d.ts +147 -1
  107. package/dist/tools/components/auth/auth-session.js.map +1 -1
  108. package/dist/tools/components/auth/session-cache.cjs.map +1 -1
  109. package/dist/tools/components/auth/session-cache.d.cts +88 -24
  110. package/dist/tools/components/auth/session-cache.d.ts +88 -24
  111. package/dist/tools/components/auth/session-cache.js.map +1 -1
  112. package/dist/tools/components/auth/types.cjs.map +1 -1
  113. package/dist/tools/components/auth/types.d.cts +329 -106
  114. package/dist/tools/components/auth/types.d.ts +329 -106
  115. package/dist/tools/components/auth/types.js.map +1 -1
  116. package/dist/tools/components/auth/useAuth.cjs.map +1 -1
  117. package/dist/tools/components/auth/useAuth.d.cts +110 -17
  118. package/dist/tools/components/auth/useAuth.d.ts +110 -17
  119. package/dist/tools/components/auth/useAuth.js.map +1 -1
  120. package/dist/tools/components/auth/useAuthGuard.cjs.map +1 -1
  121. package/dist/tools/components/auth/useAuthGuard.d.cts +49 -38
  122. package/dist/tools/components/auth/useAuthGuard.d.ts +49 -38
  123. package/dist/tools/components/auth/useAuthGuard.js.map +1 -1
  124. package/dist/tools/components/auth/useRoleCheck.cjs.map +1 -1
  125. package/dist/tools/components/auth/useRoleCheck.d.cts +48 -1
  126. package/dist/tools/components/auth/useRoleCheck.d.ts +48 -1
  127. package/dist/tools/components/auth/useRoleCheck.js.map +1 -1
  128. package/dist/tools/components/auth/useUserProfile.cjs.map +1 -1
  129. package/dist/tools/components/auth/useUserProfile.d.cts +66 -1
  130. package/dist/tools/components/auth/useUserProfile.d.ts +66 -1
  131. package/dist/tools/components/auth/useUserProfile.js.map +1 -1
  132. package/dist/tools/components/barcode/BarcodeGenerator.cjs.map +1 -1
  133. package/dist/tools/components/barcode/BarcodeGenerator.d.cts +32 -18
  134. package/dist/tools/components/barcode/BarcodeGenerator.d.ts +32 -18
  135. package/dist/tools/components/barcode/BarcodeGenerator.js.map +1 -1
  136. package/dist/tools/components/barcode/QRCodeGenerator.cjs +1 -1
  137. package/dist/tools/components/barcode/QRCodeGenerator.cjs.map +1 -1
  138. package/dist/tools/components/barcode/QRCodeGenerator.d.cts +20 -13
  139. package/dist/tools/components/barcode/QRCodeGenerator.d.ts +20 -13
  140. package/dist/tools/components/barcode/QRCodeGenerator.js +1 -1
  141. package/dist/tools/components/barcode/QRCodeGenerator.js.map +1 -1
  142. package/dist/tools/components/barcode/QRCodeScanner.cjs.map +1 -1
  143. package/dist/tools/components/barcode/QRCodeScanner.d.cts +32 -1
  144. package/dist/tools/components/barcode/QRCodeScanner.d.ts +32 -1
  145. package/dist/tools/components/barcode/QRCodeScanner.js.map +1 -1
  146. package/dist/tools/components/calendar/ResourceCalendar.cjs.map +1 -1
  147. package/dist/tools/components/calendar/ResourceCalendar.d.cts +17 -42
  148. package/dist/tools/components/calendar/ResourceCalendar.d.ts +17 -42
  149. package/dist/tools/components/calendar/ResourceCalendar.js.map +1 -1
  150. package/dist/tools/components/calendar/views/ResourceView.cjs +1 -1
  151. package/dist/tools/components/calendar/views/ResourceView.cjs.map +1 -1
  152. package/dist/tools/components/calendar/views/ResourceView.js +2 -2
  153. package/dist/tools/components/calendar/views/ResourceView.js.map +1 -1
  154. package/dist/tools/components/chart/ComposedChart.cjs.map +1 -1
  155. package/dist/tools/components/chart/ComposedChart.d.cts +54 -1
  156. package/dist/tools/components/chart/ComposedChart.d.ts +54 -1
  157. package/dist/tools/components/chart/ComposedChart.js.map +1 -1
  158. package/dist/tools/components/chart/SimpleAreaChart.cjs.map +1 -1
  159. package/dist/tools/components/chart/SimpleAreaChart.d.cts +41 -1
  160. package/dist/tools/components/chart/SimpleAreaChart.d.ts +41 -1
  161. package/dist/tools/components/chart/SimpleAreaChart.js.map +1 -1
  162. package/dist/tools/components/chart/SimpleBarChart.cjs.map +1 -1
  163. package/dist/tools/components/chart/SimpleBarChart.d.cts +34 -24
  164. package/dist/tools/components/chart/SimpleBarChart.d.ts +34 -24
  165. package/dist/tools/components/chart/SimpleBarChart.js.map +1 -1
  166. package/dist/tools/components/chart/SimpleLineChart.cjs.map +1 -1
  167. package/dist/tools/components/chart/SimpleLineChart.d.cts +31 -28
  168. package/dist/tools/components/chart/SimpleLineChart.d.ts +31 -28
  169. package/dist/tools/components/chart/SimpleLineChart.js.map +1 -1
  170. package/dist/tools/components/chart/SimplePieChart.cjs.map +1 -1
  171. package/dist/tools/components/chart/SimplePieChart.d.cts +28 -22
  172. package/dist/tools/components/chart/SimplePieChart.d.ts +28 -22
  173. package/dist/tools/components/chart/SimplePieChart.js.map +1 -1
  174. package/dist/tools/components/chart/SimpleRadarChart.cjs.map +1 -1
  175. package/dist/tools/components/chart/SimpleRadarChart.d.cts +38 -1
  176. package/dist/tools/components/chart/SimpleRadarChart.d.ts +38 -1
  177. package/dist/tools/components/chart/SimpleRadarChart.js.map +1 -1
  178. package/dist/tools/components/chart/SimpleScatterChart.cjs.map +1 -1
  179. package/dist/tools/components/chart/SimpleScatterChart.d.cts +44 -1
  180. package/dist/tools/components/chart/SimpleScatterChart.d.ts +44 -1
  181. package/dist/tools/components/chart/SimpleScatterChart.js.map +1 -1
  182. package/dist/tools/components/chart/StackedBarChart.cjs.map +1 -1
  183. package/dist/tools/components/chart/StackedBarChart.d.cts +38 -1
  184. package/dist/tools/components/chart/StackedBarChart.d.ts +38 -1
  185. package/dist/tools/components/chart/StackedBarChart.js.map +1 -1
  186. package/dist/tools/components/data-table/data-table.cjs +1 -1
  187. package/dist/tools/components/data-table/data-table.cjs.map +1 -1
  188. package/dist/tools/components/data-table/data-table.js +286 -263
  189. package/dist/tools/components/data-table/data-table.js.map +1 -1
  190. package/dist/tools/components/data-table/table-utils.cjs.map +1 -1
  191. package/dist/tools/components/data-table/table-utils.d.cts +45 -35
  192. package/dist/tools/components/data-table/table-utils.d.ts +45 -35
  193. package/dist/tools/components/data-table/table-utils.js.map +1 -1
  194. package/dist/tools/components/editable-table/editable-table.cjs +1 -1
  195. package/dist/tools/components/editable-table/editable-table.cjs.map +1 -1
  196. package/dist/tools/components/editable-table/editable-table.js +15 -2
  197. package/dist/tools/components/editable-table/editable-table.js.map +1 -1
  198. package/dist/tools/components/error/ErrorDialog.cjs +1 -1
  199. package/dist/tools/components/error/ErrorDialog.cjs.map +1 -1
  200. package/dist/tools/components/error/ErrorDialog.js +1 -1
  201. package/dist/tools/components/error/ErrorDialog.js.map +1 -1
  202. package/dist/tools/components/error/ErrorInline.cjs +1 -1
  203. package/dist/tools/components/error/ErrorInline.cjs.map +1 -1
  204. package/dist/tools/components/error/ErrorInline.js +1 -1
  205. package/dist/tools/components/error/ErrorInline.js.map +1 -1
  206. package/dist/tools/components/error/ErrorNotification.cjs +1 -1
  207. package/dist/tools/components/error/ErrorNotification.cjs.map +1 -1
  208. package/dist/tools/components/error/ErrorNotification.js +10 -10
  209. package/dist/tools/components/error/ErrorNotification.js.map +1 -1
  210. package/dist/tools/components/file-browser/FilePreview.cjs +1 -1
  211. package/dist/tools/components/file-browser/FilePreview.cjs.map +1 -1
  212. package/dist/tools/components/file-browser/FilePreview.js +28 -26
  213. package/dist/tools/components/file-browser/FilePreview.js.map +1 -1
  214. package/dist/tools/components/filter/filter.cjs.map +1 -1
  215. package/dist/tools/components/filter/filter.d.cts +23 -34
  216. package/dist/tools/components/filter/filter.d.ts +23 -34
  217. package/dist/tools/components/filter/filter.js.map +1 -1
  218. package/dist/tools/components/form/EnhancedDetailPage.cjs.map +1 -1
  219. package/dist/tools/components/form/EnhancedDetailPage.d.cts +47 -42
  220. package/dist/tools/components/form/EnhancedDetailPage.d.ts +47 -42
  221. package/dist/tools/components/form/EnhancedDetailPage.js.map +1 -1
  222. package/dist/tools/components/form/form-grid.cjs.map +1 -1
  223. package/dist/tools/components/form/form-grid.d.cts +44 -22
  224. package/dist/tools/components/form/form-grid.d.ts +44 -22
  225. package/dist/tools/components/form/form-grid.js.map +1 -1
  226. package/dist/tools/components/gantt/GanttChart.cjs +1 -1
  227. package/dist/tools/components/gantt/GanttChart.cjs.map +1 -1
  228. package/dist/tools/components/gantt/GanttChart.d.cts +20 -1
  229. package/dist/tools/components/gantt/GanttChart.d.ts +20 -1
  230. package/dist/tools/components/gantt/GanttChart.js +3 -0
  231. package/dist/tools/components/gantt/GanttChart.js.map +1 -1
  232. package/dist/tools/components/gantt/components/GanttTaskBar.cjs +1 -1
  233. package/dist/tools/components/gantt/components/GanttTaskBar.cjs.map +1 -1
  234. package/dist/tools/components/gantt/components/GanttTaskBar.js +2 -1
  235. package/dist/tools/components/gantt/components/GanttTaskBar.js.map +1 -1
  236. package/dist/tools/components/header/header.cjs +1 -1
  237. package/dist/tools/components/header/header.cjs.map +1 -1
  238. package/dist/tools/components/header/header.d.cts +103 -40
  239. package/dist/tools/components/header/header.d.ts +103 -40
  240. package/dist/tools/components/header/header.js +1 -1
  241. package/dist/tools/components/header/header.js.map +1 -1
  242. package/dist/tools/components/i18n/LanguageSwitcher.cjs.map +1 -1
  243. package/dist/tools/components/i18n/LanguageSwitcher.d.cts +18 -14
  244. package/dist/tools/components/i18n/LanguageSwitcher.d.ts +18 -14
  245. package/dist/tools/components/i18n/LanguageSwitcher.js.map +1 -1
  246. package/dist/tools/components/kanban/KanbanBoard.cjs +1 -1
  247. package/dist/tools/components/kanban/KanbanBoard.cjs.map +1 -1
  248. package/dist/tools/components/kanban/KanbanBoard.d.cts +16 -34
  249. package/dist/tools/components/kanban/KanbanBoard.d.ts +16 -34
  250. package/dist/tools/components/kanban/KanbanBoard.js +3 -0
  251. package/dist/tools/components/kanban/KanbanBoard.js.map +1 -1
  252. package/dist/tools/components/kanban/KanbanColumn.cjs +1 -1
  253. package/dist/tools/components/kanban/KanbanColumn.cjs.map +1 -1
  254. package/dist/tools/components/kanban/KanbanColumn.js +1 -1
  255. package/dist/tools/components/kanban/KanbanColumn.js.map +1 -1
  256. package/dist/tools/components/kanban/kanban-compound.cjs +1 -1
  257. package/dist/tools/components/kanban/kanban-compound.cjs.map +1 -1
  258. package/dist/tools/components/kanban/kanban-compound.js +4 -1
  259. package/dist/tools/components/kanban/kanban-compound.js.map +1 -1
  260. package/dist/tools/components/kanban/kanban-primitives.cjs +1 -1
  261. package/dist/tools/components/kanban/kanban-primitives.cjs.map +1 -1
  262. package/dist/tools/components/kanban/kanban-primitives.js +0 -1
  263. package/dist/tools/components/kanban/kanban-primitives.js.map +1 -1
  264. package/dist/tools/components/priority-queue/PriorityCard.cjs +1 -1
  265. package/dist/tools/components/priority-queue/PriorityCard.cjs.map +1 -1
  266. package/dist/tools/components/priority-queue/PriorityCard.js +3 -1
  267. package/dist/tools/components/priority-queue/PriorityCard.js.map +1 -1
  268. package/dist/tools/components/sidebar/SmartSidebar.cjs.map +1 -1
  269. package/dist/tools/components/sidebar/SmartSidebar.d.cts +41 -43
  270. package/dist/tools/components/sidebar/SmartSidebar.d.ts +41 -43
  271. package/dist/tools/components/sidebar/SmartSidebar.js.map +1 -1
  272. package/dist/tools/components/splash/SplashScreen.cjs.map +1 -1
  273. package/dist/tools/components/splash/SplashScreen.d.cts +43 -68
  274. package/dist/tools/components/splash/SplashScreen.d.ts +43 -68
  275. package/dist/tools/components/splash/SplashScreen.js.map +1 -1
  276. package/dist/tools/components/workflow/WorkflowStatusPanel.cjs +1 -1
  277. package/dist/tools/components/workflow/WorkflowStatusPanel.cjs.map +1 -1
  278. package/dist/tools/components/workflow/WorkflowStatusPanel.js +2 -2
  279. package/dist/tools/components/workflow/WorkflowStatusPanel.js.map +1 -1
  280. package/dist/tools/lib/data-access/data-access-context.cjs.map +1 -1
  281. package/dist/tools/lib/data-access/data-access-context.d.cts +15 -6
  282. package/dist/tools/lib/data-access/data-access-context.d.ts +15 -6
  283. package/dist/tools/lib/data-access/data-access-context.js.map +1 -1
  284. package/dist/tools/lib/data-access/react-query-provider.cjs.map +1 -1
  285. package/dist/tools/lib/data-access/react-query-provider.d.cts +19 -2
  286. package/dist/tools/lib/data-access/react-query-provider.d.ts +19 -2
  287. package/dist/tools/lib/data-access/react-query-provider.js.map +1 -1
  288. package/dist/tools/lib/data-access/react-query.cjs.map +1 -1
  289. package/dist/tools/lib/data-access/react-query.d.cts +365 -90
  290. package/dist/tools/lib/data-access/react-query.d.ts +365 -90
  291. package/dist/tools/lib/data-access/react-query.js.map +1 -1
  292. package/dist/tools/lib/error/AppError.cjs.map +1 -1
  293. package/dist/tools/lib/error/AppError.d.cts +157 -63
  294. package/dist/tools/lib/error/AppError.d.ts +157 -63
  295. package/dist/tools/lib/error/AppError.js.map +1 -1
  296. package/dist/tools/lib/hooks/useAsyncWithTimeout.cjs.map +1 -1
  297. package/dist/tools/lib/hooks/useAsyncWithTimeout.d.cts +79 -26
  298. package/dist/tools/lib/hooks/useAsyncWithTimeout.d.ts +79 -26
  299. package/dist/tools/lib/hooks/useAsyncWithTimeout.js.map +1 -1
  300. package/dist/tools/lib/hooks/useError.cjs.map +1 -1
  301. package/dist/tools/lib/hooks/useError.d.cts +51 -16
  302. package/dist/tools/lib/hooks/useError.d.ts +51 -16
  303. package/dist/tools/lib/hooks/useError.js.map +1 -1
  304. package/dist/tools/lib/schema/ajv.cjs +1 -1
  305. package/dist/tools/lib/schema/ajv.cjs.map +1 -1
  306. package/dist/tools/lib/schema/ajv.d.cts +19 -8
  307. package/dist/tools/lib/schema/ajv.d.ts +19 -8
  308. package/dist/tools/lib/schema/ajv.js +2 -1
  309. package/dist/tools/lib/schema/ajv.js.map +1 -1
  310. package/dist/tools/lib/state/error-store.cjs.map +1 -1
  311. package/dist/tools/lib/state/error-store.d.cts +61 -10
  312. package/dist/tools/lib/state/error-store.d.ts +61 -10
  313. package/dist/tools/lib/state/error-store.js.map +1 -1
  314. package/dist/tools/lib/state/store-factory.cjs.map +1 -1
  315. package/dist/tools/lib/state/store-factory.d.cts +25 -4
  316. package/dist/tools/lib/state/store-factory.d.ts +25 -4
  317. package/dist/tools/lib/state/store-factory.js.map +1 -1
  318. package/dist/tools/lib/state/ui-store.cjs.map +1 -1
  319. package/dist/tools/lib/state/ui-store.d.cts +39 -0
  320. package/dist/tools/lib/state/ui-store.d.ts +39 -0
  321. package/dist/tools/lib/state/ui-store.js.map +1 -1
  322. package/dist/ui/components/theme/theme-context.cjs.map +1 -1
  323. package/dist/ui/components/theme/theme-context.d.cts +171 -1
  324. package/dist/ui/components/theme/theme-context.d.ts +171 -1
  325. package/dist/ui/components/theme/theme-context.js.map +1 -1
  326. package/dist/ui/components/theme/theme-provider.cjs.map +1 -1
  327. package/dist/ui/components/theme/theme-provider.d.cts +31 -19
  328. package/dist/ui/components/theme/theme-provider.d.ts +31 -19
  329. package/dist/ui/components/theme/theme-provider.js.map +1 -1
  330. package/dist/ui/components/theme/theme-script.cjs.map +1 -1
  331. package/dist/ui/components/theme/theme-script.d.cts +16 -1
  332. package/dist/ui/components/theme/theme-script.d.ts +16 -1
  333. package/dist/ui/components/theme/theme-script.js.map +1 -1
  334. package/dist/ui/components/theme/theme-switcher.cjs +1 -1
  335. package/dist/ui/components/theme/theme-switcher.cjs.map +1 -1
  336. package/dist/ui/components/theme/theme-switcher.d.cts +82 -13
  337. package/dist/ui/components/theme/theme-switcher.d.ts +82 -13
  338. package/dist/ui/components/theme/theme-switcher.js +8 -0
  339. package/dist/ui/components/theme/theme-switcher.js.map +1 -1
  340. package/dist/ui/components/ui/accordion.cjs.map +1 -1
  341. package/dist/ui/components/ui/accordion.d.cts +60 -0
  342. package/dist/ui/components/ui/accordion.d.ts +60 -0
  343. package/dist/ui/components/ui/accordion.js.map +1 -1
  344. package/dist/ui/components/ui/adjustable-pane.cjs.map +1 -1
  345. package/dist/ui/components/ui/adjustable-pane.d.cts +44 -26
  346. package/dist/ui/components/ui/adjustable-pane.d.ts +44 -26
  347. package/dist/ui/components/ui/adjustable-pane.js.map +1 -1
  348. package/dist/ui/components/ui/alert-dialog.cjs.map +1 -1
  349. package/dist/ui/components/ui/alert-dialog.d.cts +179 -2
  350. package/dist/ui/components/ui/alert-dialog.d.ts +179 -2
  351. package/dist/ui/components/ui/alert-dialog.js.map +1 -1
  352. package/dist/ui/components/ui/alert.cjs.map +1 -1
  353. package/dist/ui/components/ui/alert.d.cts +52 -4
  354. package/dist/ui/components/ui/alert.d.ts +52 -4
  355. package/dist/ui/components/ui/alert.js.map +1 -1
  356. package/dist/ui/components/ui/aspect-ratio.cjs.map +1 -1
  357. package/dist/ui/components/ui/aspect-ratio.d.cts +16 -1
  358. package/dist/ui/components/ui/aspect-ratio.d.ts +16 -1
  359. package/dist/ui/components/ui/aspect-ratio.js.map +1 -1
  360. package/dist/ui/components/ui/avatar.cjs.map +1 -1
  361. package/dist/ui/components/ui/avatar.d.cts +87 -3
  362. package/dist/ui/components/ui/avatar.d.ts +87 -3
  363. package/dist/ui/components/ui/avatar.js.map +1 -1
  364. package/dist/ui/components/ui/badge-components.cjs.map +1 -1
  365. package/dist/ui/components/ui/badge-components.d.cts +13 -1
  366. package/dist/ui/components/ui/badge-components.d.ts +13 -1
  367. package/dist/ui/components/ui/badge-components.js.map +1 -1
  368. package/dist/ui/components/ui/badge-variants.cjs.map +1 -1
  369. package/dist/ui/components/ui/badge-variants.d.cts +15 -0
  370. package/dist/ui/components/ui/badge-variants.d.ts +15 -0
  371. package/dist/ui/components/ui/badge-variants.js.map +1 -1
  372. package/dist/ui/components/ui/breadcrumb.cjs.map +1 -1
  373. package/dist/ui/components/ui/breadcrumb.d.cts +91 -7
  374. package/dist/ui/components/ui/breadcrumb.d.ts +91 -7
  375. package/dist/ui/components/ui/breadcrumb.js.map +1 -1
  376. package/dist/ui/components/ui/button-components.cjs.map +1 -1
  377. package/dist/ui/components/ui/button-components.d.cts +18 -6
  378. package/dist/ui/components/ui/button-components.d.ts +18 -6
  379. package/dist/ui/components/ui/button-components.js.map +1 -1
  380. package/dist/ui/components/ui/button-group-components.cjs.map +1 -1
  381. package/dist/ui/components/ui/button-group-components.d.cts +39 -3
  382. package/dist/ui/components/ui/button-group-components.d.ts +39 -3
  383. package/dist/ui/components/ui/button-group-components.js.map +1 -1
  384. package/dist/ui/components/ui/button-group-variants.cjs.map +1 -1
  385. package/dist/ui/components/ui/button-group-variants.d.cts +15 -0
  386. package/dist/ui/components/ui/button-group-variants.d.ts +15 -0
  387. package/dist/ui/components/ui/button-group-variants.js.map +1 -1
  388. package/dist/ui/components/ui/button-variants.cjs.map +1 -1
  389. package/dist/ui/components/ui/button-variants.d.cts +13 -2
  390. package/dist/ui/components/ui/button-variants.d.ts +13 -2
  391. package/dist/ui/components/ui/button-variants.js.map +1 -1
  392. package/dist/ui/components/ui/card.cjs.map +1 -1
  393. package/dist/ui/components/ui/card.d.cts +106 -2
  394. package/dist/ui/components/ui/card.d.ts +106 -2
  395. package/dist/ui/components/ui/card.js.map +1 -1
  396. package/dist/ui/components/ui/checkbox-group.cjs.map +1 -1
  397. package/dist/ui/components/ui/checkbox-group.d.cts +13 -1
  398. package/dist/ui/components/ui/checkbox-group.d.ts +13 -1
  399. package/dist/ui/components/ui/checkbox-group.js.map +1 -1
  400. package/dist/ui/components/ui/checkbox.cjs.map +1 -1
  401. package/dist/ui/components/ui/checkbox.d.cts +17 -6
  402. package/dist/ui/components/ui/checkbox.d.ts +17 -6
  403. package/dist/ui/components/ui/checkbox.js.map +1 -1
  404. package/dist/ui/components/ui/collapsible.cjs.map +1 -1
  405. package/dist/ui/components/ui/collapsible.d.cts +39 -3
  406. package/dist/ui/components/ui/collapsible.d.ts +39 -3
  407. package/dist/ui/components/ui/collapsible.js.map +1 -1
  408. package/dist/ui/components/ui/combobox-components.cjs.map +1 -1
  409. package/dist/ui/components/ui/combobox-components.d.cts +209 -14
  410. package/dist/ui/components/ui/combobox-components.d.ts +209 -14
  411. package/dist/ui/components/ui/combobox-components.js.map +1 -1
  412. package/dist/ui/components/ui/combobox-hooks.cjs.map +1 -1
  413. package/dist/ui/components/ui/combobox-hooks.d.cts +13 -1
  414. package/dist/ui/components/ui/combobox-hooks.d.ts +13 -1
  415. package/dist/ui/components/ui/combobox-hooks.js.map +1 -1
  416. package/dist/ui/components/ui/command.cjs.map +1 -1
  417. package/dist/ui/components/ui/command.d.cts +132 -9
  418. package/dist/ui/components/ui/command.d.ts +132 -9
  419. package/dist/ui/components/ui/command.js.map +1 -1
  420. package/dist/ui/components/ui/context-menu.cjs.map +1 -1
  421. package/dist/ui/components/ui/context-menu.d.cts +233 -2
  422. package/dist/ui/components/ui/context-menu.d.ts +233 -2
  423. package/dist/ui/components/ui/context-menu.js.map +1 -1
  424. package/dist/ui/components/ui/dialog.cjs.map +1 -1
  425. package/dist/ui/components/ui/dialog.d.cts +157 -5
  426. package/dist/ui/components/ui/dialog.d.ts +157 -5
  427. package/dist/ui/components/ui/dialog.js.map +1 -1
  428. package/dist/ui/components/ui/drawer.cjs.map +1 -1
  429. package/dist/ui/components/ui/drawer.d.cts +130 -10
  430. package/dist/ui/components/ui/drawer.d.ts +130 -10
  431. package/dist/ui/components/ui/drawer.js.map +1 -1
  432. package/dist/ui/components/ui/dropdown-menu.cjs.map +1 -1
  433. package/dist/ui/components/ui/dropdown-menu.d.cts +225 -6
  434. package/dist/ui/components/ui/dropdown-menu.d.ts +225 -6
  435. package/dist/ui/components/ui/dropdown-menu.js.map +1 -1
  436. package/dist/ui/components/ui/empty.cjs.map +1 -1
  437. package/dist/ui/components/ui/empty.d.cts +78 -6
  438. package/dist/ui/components/ui/empty.d.ts +78 -6
  439. package/dist/ui/components/ui/empty.js.map +1 -1
  440. package/dist/ui/components/ui/field.cjs.map +1 -1
  441. package/dist/ui/components/ui/field.d.cts +180 -6
  442. package/dist/ui/components/ui/field.d.ts +180 -6
  443. package/dist/ui/components/ui/field.js.map +1 -1
  444. package/dist/ui/components/ui/file-icon.cjs.map +1 -1
  445. package/dist/ui/components/ui/file-icon.d.cts +32 -4
  446. package/dist/ui/components/ui/file-icon.d.ts +32 -4
  447. package/dist/ui/components/ui/file-icon.js.map +1 -1
  448. package/dist/ui/components/ui/hover-card.cjs.map +1 -1
  449. package/dist/ui/components/ui/hover-card.d.cts +39 -3
  450. package/dist/ui/components/ui/hover-card.d.ts +39 -3
  451. package/dist/ui/components/ui/hover-card.js.map +1 -1
  452. package/dist/ui/components/ui/input-group.cjs.map +1 -1
  453. package/dist/ui/components/ui/input-group.d.cts +84 -6
  454. package/dist/ui/components/ui/input-group.d.ts +84 -6
  455. package/dist/ui/components/ui/input-group.js.map +1 -1
  456. package/dist/ui/components/ui/input-otp.cjs.map +1 -1
  457. package/dist/ui/components/ui/input-otp.d.cts +58 -4
  458. package/dist/ui/components/ui/input-otp.d.ts +58 -4
  459. package/dist/ui/components/ui/input-otp.js.map +1 -1
  460. package/dist/ui/components/ui/input.cjs.map +1 -1
  461. package/dist/ui/components/ui/input.d.cts +18 -10
  462. package/dist/ui/components/ui/input.d.ts +18 -10
  463. package/dist/ui/components/ui/input.js.map +1 -1
  464. package/dist/ui/components/ui/item.cjs.map +1 -1
  465. package/dist/ui/components/ui/item.d.cts +130 -10
  466. package/dist/ui/components/ui/item.d.ts +130 -10
  467. package/dist/ui/components/ui/item.js.map +1 -1
  468. package/dist/ui/components/ui/kbd.cjs.map +1 -1
  469. package/dist/ui/components/ui/kbd.d.cts +26 -2
  470. package/dist/ui/components/ui/kbd.d.ts +26 -2
  471. package/dist/ui/components/ui/kbd.js.map +1 -1
  472. package/dist/ui/components/ui/label.cjs.map +1 -1
  473. package/dist/ui/components/ui/label.d.cts +15 -0
  474. package/dist/ui/components/ui/label.d.ts +15 -0
  475. package/dist/ui/components/ui/label.js.map +1 -1
  476. package/dist/ui/components/ui/layout.cjs +1 -1
  477. package/dist/ui/components/ui/layout.cjs.map +1 -1
  478. package/dist/ui/components/ui/layout.d.cts +45 -11
  479. package/dist/ui/components/ui/layout.d.ts +45 -11
  480. package/dist/ui/components/ui/layout.js +22 -20
  481. package/dist/ui/components/ui/layout.js.map +1 -1
  482. package/dist/ui/components/ui/menubar.cjs.map +1 -1
  483. package/dist/ui/components/ui/menubar.d.cts +220 -16
  484. package/dist/ui/components/ui/menubar.d.ts +220 -16
  485. package/dist/ui/components/ui/menubar.js.map +1 -1
  486. package/dist/ui/components/ui/meter.cjs.map +1 -1
  487. package/dist/ui/components/ui/meter.d.cts +52 -4
  488. package/dist/ui/components/ui/meter.d.ts +52 -4
  489. package/dist/ui/components/ui/meter.js.map +1 -1
  490. package/dist/ui/components/ui/mobile-form-variants.cjs.map +1 -1
  491. package/dist/ui/components/ui/mobile-form-variants.d.cts +30 -0
  492. package/dist/ui/components/ui/mobile-form-variants.d.ts +30 -0
  493. package/dist/ui/components/ui/mobile-form-variants.js.map +1 -1
  494. package/dist/ui/components/ui/mobile-form.cjs.map +1 -1
  495. package/dist/ui/components/ui/mobile-form.d.cts +186 -9
  496. package/dist/ui/components/ui/mobile-form.d.ts +186 -9
  497. package/dist/ui/components/ui/mobile-form.js.map +1 -1
  498. package/dist/ui/components/ui/navigation-menu-components.cjs.map +1 -1
  499. package/dist/ui/components/ui/navigation-menu-components.d.cts +104 -8
  500. package/dist/ui/components/ui/navigation-menu-components.d.ts +104 -8
  501. package/dist/ui/components/ui/navigation-menu-components.js.map +1 -1
  502. package/dist/ui/components/ui/navigation-menu-variants.cjs.map +1 -1
  503. package/dist/ui/components/ui/navigation-menu-variants.d.cts +15 -0
  504. package/dist/ui/components/ui/navigation-menu-variants.d.ts +15 -0
  505. package/dist/ui/components/ui/navigation-menu-variants.js.map +1 -1
  506. package/dist/ui/components/ui/number-field.cjs.map +1 -1
  507. package/dist/ui/components/ui/number-field.d.cts +78 -6
  508. package/dist/ui/components/ui/number-field.d.ts +78 -6
  509. package/dist/ui/components/ui/number-field.js.map +1 -1
  510. package/dist/ui/components/ui/pagination.cjs.map +1 -1
  511. package/dist/ui/components/ui/pagination.d.cts +99 -7
  512. package/dist/ui/components/ui/pagination.d.ts +99 -7
  513. package/dist/ui/components/ui/pagination.js.map +1 -1
  514. package/dist/ui/components/ui/password-input.cjs.map +1 -1
  515. package/dist/ui/components/ui/password-input.d.cts +10 -7
  516. package/dist/ui/components/ui/password-input.d.ts +10 -7
  517. package/dist/ui/components/ui/password-input.js.map +1 -1
  518. package/dist/ui/components/ui/popover.cjs.map +1 -1
  519. package/dist/ui/components/ui/popover.d.cts +86 -2
  520. package/dist/ui/components/ui/popover.d.ts +86 -2
  521. package/dist/ui/components/ui/popover.js.map +1 -1
  522. package/dist/ui/components/ui/progress.cjs.map +1 -1
  523. package/dist/ui/components/ui/progress.d.cts +72 -2
  524. package/dist/ui/components/ui/progress.d.ts +72 -2
  525. package/dist/ui/components/ui/progress.js.map +1 -1
  526. package/dist/ui/components/ui/radio-card.cjs.map +1 -1
  527. package/dist/ui/components/ui/radio-card.d.cts +32 -4
  528. package/dist/ui/components/ui/radio-card.d.ts +32 -4
  529. package/dist/ui/components/ui/radio-card.js.map +1 -1
  530. package/dist/ui/components/ui/radio-group.cjs.map +1 -1
  531. package/dist/ui/components/ui/radio-group.d.cts +28 -2
  532. package/dist/ui/components/ui/radio-group.d.ts +28 -2
  533. package/dist/ui/components/ui/radio-group.js.map +1 -1
  534. package/dist/ui/components/ui/resizable.cjs.map +1 -1
  535. package/dist/ui/components/ui/resizable.d.cts +42 -3
  536. package/dist/ui/components/ui/resizable.d.ts +42 -3
  537. package/dist/ui/components/ui/resizable.js.map +1 -1
  538. package/dist/ui/components/ui/responsive-list.cjs.map +1 -1
  539. package/dist/ui/components/ui/responsive-list.d.cts +176 -13
  540. package/dist/ui/components/ui/responsive-list.d.ts +176 -13
  541. package/dist/ui/components/ui/responsive-list.js.map +1 -1
  542. package/dist/ui/components/ui/scroll-area.cjs.map +1 -1
  543. package/dist/ui/components/ui/scroll-area.d.cts +28 -1
  544. package/dist/ui/components/ui/scroll-area.d.ts +28 -1
  545. package/dist/ui/components/ui/scroll-area.js.map +1 -1
  546. package/dist/ui/components/ui/searchable-select-input.cjs.map +1 -1
  547. package/dist/ui/components/ui/searchable-select-input.d.cts +199 -49
  548. package/dist/ui/components/ui/searchable-select-input.d.ts +199 -49
  549. package/dist/ui/components/ui/searchable-select-input.js.map +1 -1
  550. package/dist/ui/components/ui/select.cjs.map +1 -1
  551. package/dist/ui/components/ui/select.d.cts +205 -40
  552. package/dist/ui/components/ui/select.d.ts +205 -40
  553. package/dist/ui/components/ui/select.js.map +1 -1
  554. package/dist/ui/components/ui/separator.cjs.map +1 -1
  555. package/dist/ui/components/ui/separator.d.cts +13 -2
  556. package/dist/ui/components/ui/separator.d.ts +13 -2
  557. package/dist/ui/components/ui/separator.js.map +1 -1
  558. package/dist/ui/components/ui/sheet.cjs.map +1 -1
  559. package/dist/ui/components/ui/sheet.d.cts +128 -3
  560. package/dist/ui/components/ui/sheet.d.ts +128 -3
  561. package/dist/ui/components/ui/sheet.js.map +1 -1
  562. package/dist/ui/components/ui/skeleton.cjs.map +1 -1
  563. package/dist/ui/components/ui/skeleton.d.cts +13 -1
  564. package/dist/ui/components/ui/skeleton.d.ts +13 -1
  565. package/dist/ui/components/ui/skeleton.js.map +1 -1
  566. package/dist/ui/components/ui/slider.cjs.map +1 -1
  567. package/dist/ui/components/ui/slider.d.cts +13 -7
  568. package/dist/ui/components/ui/slider.d.ts +13 -7
  569. package/dist/ui/components/ui/slider.js.map +1 -1
  570. package/dist/ui/components/ui/spinner.cjs.map +1 -1
  571. package/dist/ui/components/ui/spinner.d.cts +13 -1
  572. package/dist/ui/components/ui/spinner.d.ts +13 -1
  573. package/dist/ui/components/ui/spinner.js.map +1 -1
  574. package/dist/ui/components/ui/switch.cjs.map +1 -1
  575. package/dist/ui/components/ui/switch.d.cts +26 -0
  576. package/dist/ui/components/ui/switch.d.ts +26 -0
  577. package/dist/ui/components/ui/switch.js.map +1 -1
  578. package/dist/ui/components/ui/table.cjs.map +1 -1
  579. package/dist/ui/components/ui/table.d.cts +118 -2
  580. package/dist/ui/components/ui/table.d.ts +118 -2
  581. package/dist/ui/components/ui/table.js.map +1 -1
  582. package/dist/ui/components/ui/tabs-components.cjs.map +1 -1
  583. package/dist/ui/components/ui/tabs-components.d.cts +52 -5
  584. package/dist/ui/components/ui/tabs-components.d.ts +52 -5
  585. package/dist/ui/components/ui/tabs-components.js.map +1 -1
  586. package/dist/ui/components/ui/tabs-variants.cjs.map +1 -1
  587. package/dist/ui/components/ui/tabs-variants.d.cts +15 -0
  588. package/dist/ui/components/ui/tabs-variants.d.ts +15 -0
  589. package/dist/ui/components/ui/tabs-variants.js.map +1 -1
  590. package/dist/ui/components/ui/textarea.cjs.map +1 -1
  591. package/dist/ui/components/ui/textarea.d.cts +23 -0
  592. package/dist/ui/components/ui/textarea.d.ts +23 -0
  593. package/dist/ui/components/ui/textarea.js.map +1 -1
  594. package/dist/ui/components/ui/toast.cjs.map +1 -1
  595. package/dist/ui/components/ui/toast.d.cts +136 -0
  596. package/dist/ui/components/ui/toast.d.ts +136 -0
  597. package/dist/ui/components/ui/toast.js.map +1 -1
  598. package/dist/ui/components/ui/toaster.cjs.map +1 -1
  599. package/dist/ui/components/ui/toaster.d.cts +12 -3
  600. package/dist/ui/components/ui/toaster.d.ts +12 -3
  601. package/dist/ui/components/ui/toaster.js.map +1 -1
  602. package/dist/ui/components/ui/toggle-components.cjs.map +1 -1
  603. package/dist/ui/components/ui/toggle-components.d.cts +15 -0
  604. package/dist/ui/components/ui/toggle-components.d.ts +15 -0
  605. package/dist/ui/components/ui/toggle-components.js.map +1 -1
  606. package/dist/ui/components/ui/toggle-group.cjs.map +1 -1
  607. package/dist/ui/components/ui/toggle-group.d.cts +33 -0
  608. package/dist/ui/components/ui/toggle-group.d.ts +33 -0
  609. package/dist/ui/components/ui/toggle-group.js.map +1 -1
  610. package/dist/ui/components/ui/toggle-variants.cjs.map +1 -1
  611. package/dist/ui/components/ui/toggle-variants.d.cts +15 -0
  612. package/dist/ui/components/ui/toggle-variants.d.ts +15 -0
  613. package/dist/ui/components/ui/toggle-variants.js.map +1 -1
  614. package/dist/ui/components/ui/toolbar.cjs.map +1 -1
  615. package/dist/ui/components/ui/toolbar.d.cts +94 -7
  616. package/dist/ui/components/ui/toolbar.d.ts +94 -7
  617. package/dist/ui/components/ui/toolbar.js.map +1 -1
  618. package/dist/ui/components/ui/tooltip.cjs.map +1 -1
  619. package/dist/ui/components/ui/tooltip.d.cts +54 -3
  620. package/dist/ui/components/ui/tooltip.d.ts +54 -3
  621. package/dist/ui/components/ui/tooltip.js.map +1 -1
  622. package/dist/ui/lib/hooks/use-gps.cjs.map +1 -1
  623. package/dist/ui/lib/hooks/use-gps.d.cts +29 -4
  624. package/dist/ui/lib/hooks/use-gps.d.ts +29 -4
  625. package/dist/ui/lib/hooks/use-gps.js.map +1 -1
  626. package/dist/ui/lib/hooks/use-is-client.cjs.map +1 -1
  627. package/dist/ui/lib/hooks/use-is-client.d.cts +11 -2
  628. package/dist/ui/lib/hooks/use-is-client.d.ts +11 -2
  629. package/dist/ui/lib/hooks/use-is-client.js.map +1 -1
  630. package/dist/ui/lib/hooks/use-keyboard-shortcut.cjs.map +1 -1
  631. package/dist/ui/lib/hooks/use-keyboard-shortcut.d.cts +48 -18
  632. package/dist/ui/lib/hooks/use-keyboard-shortcut.d.ts +48 -18
  633. package/dist/ui/lib/hooks/use-keyboard-shortcut.js.map +1 -1
  634. package/dist/ui/lib/hooks/use-mobile.cjs.map +1 -1
  635. package/dist/ui/lib/hooks/use-mobile.d.cts +11 -3
  636. package/dist/ui/lib/hooks/use-mobile.d.ts +11 -3
  637. package/dist/ui/lib/hooks/use-mobile.js.map +1 -1
  638. package/dist/ui/lib/hooks/use-toast.cjs.map +1 -1
  639. package/dist/ui/lib/hooks/use-toast.d.cts +184 -15
  640. package/dist/ui/lib/hooks/use-toast.d.ts +184 -15
  641. package/dist/ui/lib/hooks/use-toast.js.map +1 -1
  642. package/dist/ui/lib/ime-utils.cjs.map +1 -1
  643. package/dist/ui/lib/ime-utils.d.cts +40 -13
  644. package/dist/ui/lib/ime-utils.d.ts +40 -13
  645. package/dist/ui/lib/ime-utils.js.map +1 -1
  646. package/dist/ui/lib/utils.cjs.map +1 -1
  647. package/dist/ui/lib/utils.d.cts +9 -6
  648. package/dist/ui/lib/utils.d.ts +9 -6
  649. package/dist/ui/lib/utils.js.map +1 -1
  650. package/docs/ai.md +34 -1
  651. package/docs/exports.md +5 -1
  652. package/docs/index.md +89 -16
  653. package/docs/migration.md +268 -0
  654. package/docs/request-form.md +4 -1
  655. package/docs/tools.md +4 -1
  656. package/docs/ui.md +4 -1
  657. package/llms-full.txt +499 -36
  658. package/llms.txt +4 -0
  659. package/package.json +35 -5
@@ -2,16 +2,44 @@ import { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';
2
2
  import { Radio as RadioPrimitive } from '@base-ui/react/radio';
3
3
  import * as React from 'react';
4
4
  /**
5
- * RadioCardGroup Component
6
- * カードスタイルのラジオグループコンポーネント
5
+ * Coordinates mutually exclusive choices displayed as cards.
6
+ * @param props - Component attributes and children accepted by the declared Base UI or native prop type; className customizes wrapper styling.
7
+ * @returns The rendered RadioCardGroup composition.
8
+ * @remarks Import @alneas/appkit-react/styles in the rendering host. Place card items under RadioCardGroup with distinct value strings. label and detail are optional React nodes rendered inside the radio control; children are appended below them. Base UI owns selection and focus; the host owns persistence. The ref prop forwards to the rendered control or container declared by the component ref type.
9
+ * @example
10
+ * ```tsx
11
+ * import { RadioCardGroup, RadioCardItem } from '@alneas/appkit-react/ui';
12
+ * import '@alneas/appkit-react/styles';
13
+ *
14
+ * export function Example() {
15
+ * return (<RadioCardGroup defaultValue="basic" aria-label="Plan"><RadioCardItem value="basic" label="Basic" detail="For personal use" /><RadioCardItem value="team" label="Team" /></RadioCardGroup>);
16
+ * }
17
+ * ```
7
18
  */
8
19
  declare const RadioCardGroup: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.Props<any>, "ref"> & React.RefAttributes<HTMLDivElement>>;
9
20
  /**
10
- * RadioCardItem Component
11
- * カードスタイルのラジオアイテムコンポーネント
21
+ * Renders one card choice with label/detail content and a checked indicator.
22
+ * @param props - Component attributes and children accepted by the declared Base UI or native prop type; className customizes wrapper styling.
23
+ * @returns The rendered RadioCardItem composition.
24
+ * @remarks Import @alneas/appkit-react/styles in the rendering host. Place card items under RadioCardGroup with distinct value strings. label and detail are optional React nodes rendered inside the radio control; children are appended below them. Base UI owns selection and focus; the host owns persistence. The ref prop forwards to the rendered control or container declared by the component ref type.
25
+ * @example
26
+ * ```tsx
27
+ * import { RadioCardGroup, RadioCardItem } from '@alneas/appkit-react/ui';
28
+ * import '@alneas/appkit-react/styles';
29
+ *
30
+ * export function Example() {
31
+ * return (<RadioCardGroup defaultValue="basic" aria-label="Plan"><RadioCardItem value="basic" label="Basic" detail="For personal use" /><RadioCardItem value="team" label="Team" /></RadioCardGroup>);
32
+ * }
33
+ * ```
12
34
  */
13
35
  declare const RadioCardItem: React.ForwardRefExoticComponent<Omit<RadioPrimitive.Root.Props<any> & {
36
+ /**
37
+ * Visible control/option text or content; does not perform persistence or validation.
38
+ */
14
39
  label?: React.ReactNode;
40
+ /**
41
+ * Optional supporting content below the radio-card label.
42
+ */
15
43
  detail?: React.ReactNode;
16
44
  }, "ref"> & React.RefAttributes<HTMLButtonElement>>;
17
45
  export { RadioCardGroup, RadioCardItem };
@@ -1 +1 @@
1
- {"version":3,"file":"radio-card.js","names":["React","RadioGroupPrimitive","RadioPrimitive","React$1","RadioCardGroup","props","RadioGroup","cn","className","RadioCardItem","Radio","label","Label","detail","children","CheckCircleIcon"],"sources":["../../../../src/ui/components/ui/radio-card.tsx"],"sourcesContent":["import * as React from 'react';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { CheckCircleIcon } from 'lucide-react';\n\nimport { cn } from '../../lib/utils';\nimport { Label } from './label';\n\n/**\n * RadioCardGroup Component\n * カードスタイルのラジオグループコンポーネント\n */\nconst RadioCardGroup = React.forwardRef<HTMLDivElement, RadioGroupPrimitive.Props>(\n ({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive\n ref={ref}\n data-slot='radio-card-group'\n className={cn('grid gap-2', className)}\n {...props}\n />\n );\n },\n);\nRadioCardGroup.displayName = 'RadioCardGroup';\n\n/**\n * RadioCardItem Component\n * カードスタイルのラジオアイテムコンポーネント\n */\nconst RadioCardItem = React.forwardRef<\n HTMLButtonElement,\n RadioPrimitive.Root.Props & {\n label?: React.ReactNode;\n detail?: React.ReactNode;\n }\n>(({ className, children, label, detail, ...props }, ref) => {\n return (\n <RadioPrimitive.Root\n ref={ref}\n data-slot='radio-card-item'\n className={cn(\n 'group/radio-card relative flex cursor-pointer rounded-lg px-4 py-3 shadow-sm border border-input bg-card text-card-foreground outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 aria-checked:border-primary aria-checked:bg-primary/5',\n className,\n )}\n {...props}\n >\n <div className='flex w-full items-center justify-between'>\n <div className='flex items-center'>\n <div className='text-sm text-left'>\n {label && (\n <Label className='font-medium cursor-pointer block text-foreground group-aria-checked/radio-card:text-primary'>\n {label}\n </Label>\n )}\n {detail && (\n <span className='text-xs text-muted-foreground block mt-0.5 group-aria-checked/radio-card:text-primary/80'>\n {detail}\n </span>\n )}\n {children}\n </div>\n </div>\n <RadioPrimitive.Indicator className='shrink-0 text-primary ml-2'>\n <CheckCircleIcon className='h-5 w-5' />\n </RadioPrimitive.Indicator>\n </div>\n </RadioPrimitive.Root>\n );\n});\nRadioCardItem.displayName = 'RadioCardItem';\n\nexport { RadioCardGroup, RadioCardItem };\n"],"mappings":";;;;;;;;;AAYA,IAAMI,IAAiBJ,EAAM,YAC1B,EAAE,cAAW,GAAGK,KAAS,MAEtB,kBAACJ,GAAD;CACO;CACL,aAAU;CACV,WAAWM,EAAG,cAAcC,CAAS;CACrC,GAAIH;AACL,CAAA,CAGP;AACA,EAAe,cAAc;AAM7B,IAAMI,IAAgBT,EAAM,YAMzB,EAAE,cAAW,aAAU,UAAO,WAAQ,GAAGK,KAAS,MAEjD,kBAACH,EAAe,MAAhB;CACO;CACL,aAAU;CACV,WAAWK,EACT,4XACAC,CACF;CACA,GAAIH;CAEJ,UAAA,kBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,kBAAC,OAAD;GAAK,WAAU;GACb,UAAA,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACGM,KACC,kBAACC,GAAD;MAAO,WAAU;MACd,UAAAD;KACI,CAAA;KAERE,KACC,kBAAC,QAAD;MAAM,WAAU;MACb,UAAAA;KACG,CAAA;KAEPC;IACE;;EACF,CAAA,GACL,kBAACZ,EAAe,WAAhB;GAA0B,WAAU;GAClC,UAAA,kBAACa,GAAD,EAAiB,WAAU,UAAW,CAAA;EACd,CAAA,CACvB;;AACc,CAAA,CAExB;AACD,EAAc,cAAc"}
1
+ {"version":3,"file":"radio-card.js","names":["React","RadioGroupPrimitive","RadioPrimitive","React$1","RadioCardGroup","props","RadioGroup","cn","className","RadioCardItem","Radio","label","Label","detail","children","CheckCircleIcon"],"sources":["../../../../src/ui/components/ui/radio-card.tsx"],"sourcesContent":["import * as React from 'react';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { CheckCircleIcon } from 'lucide-react';\n\nimport { cn } from '../../lib/utils';\nimport { Label } from './label';\n\n/**\n * Coordinates mutually exclusive choices displayed as cards.\n * @param props - Component attributes and children accepted by the declared Base UI or native prop type; className customizes wrapper styling.\n * @returns The rendered RadioCardGroup composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. Place card items under RadioCardGroup with distinct value strings. label and detail are optional React nodes rendered inside the radio control; children are appended below them. Base UI owns selection and focus; the host owns persistence. The ref prop forwards to the rendered control or container declared by the component ref type.\n * @example\n * ```tsx\n * import { RadioCardGroup, RadioCardItem } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example() {\n * return (<RadioCardGroup defaultValue=\"basic\" aria-label=\"Plan\"><RadioCardItem value=\"basic\" label=\"Basic\" detail=\"For personal use\" /><RadioCardItem value=\"team\" label=\"Team\" /></RadioCardGroup>);\n * }\n * ```\n */\nconst RadioCardGroup = React.forwardRef<HTMLDivElement, RadioGroupPrimitive.Props>(\n ({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive\n ref={ref}\n data-slot='radio-card-group'\n className={cn('grid gap-2', className)}\n {...props}\n />\n );\n },\n);\nRadioCardGroup.displayName = 'RadioCardGroup';\n\n/**\n * Renders one card choice with label/detail content and a checked indicator.\n * @param props - Component attributes and children accepted by the declared Base UI or native prop type; className customizes wrapper styling.\n * @returns The rendered RadioCardItem composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. Place card items under RadioCardGroup with distinct value strings. label and detail are optional React nodes rendered inside the radio control; children are appended below them. Base UI owns selection and focus; the host owns persistence. The ref prop forwards to the rendered control or container declared by the component ref type.\n * @example\n * ```tsx\n * import { RadioCardGroup, RadioCardItem } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example() {\n * return (<RadioCardGroup defaultValue=\"basic\" aria-label=\"Plan\"><RadioCardItem value=\"basic\" label=\"Basic\" detail=\"For personal use\" /><RadioCardItem value=\"team\" label=\"Team\" /></RadioCardGroup>);\n * }\n * ```\n */\nconst RadioCardItem = React.forwardRef<\n HTMLButtonElement,\n RadioPrimitive.Root.Props & {\n /**\n * Visible control/option text or content; does not perform persistence or validation.\n */\n label?: React.ReactNode;\n /**\n * Optional supporting content below the radio-card label.\n */\n detail?: React.ReactNode;\n }\n>(({ className, children, label, detail, ...props }, ref) => {\n return (\n <RadioPrimitive.Root\n ref={ref}\n data-slot='radio-card-item'\n className={cn(\n 'group/radio-card relative flex cursor-pointer rounded-lg px-4 py-3 shadow-sm border border-input bg-card text-card-foreground outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 aria-checked:border-primary aria-checked:bg-primary/5',\n className,\n )}\n {...props}\n >\n <div className='flex w-full items-center justify-between'>\n <div className='flex items-center'>\n <div className='text-sm text-left'>\n {label && (\n <Label className='font-medium cursor-pointer block text-foreground group-aria-checked/radio-card:text-primary'>\n {label}\n </Label>\n )}\n {detail && (\n <span className='text-xs text-muted-foreground block mt-0.5 group-aria-checked/radio-card:text-primary/80'>\n {detail}\n </span>\n )}\n {children}\n </div>\n </div>\n <RadioPrimitive.Indicator className='shrink-0 text-primary ml-2'>\n <CheckCircleIcon className='h-5 w-5' />\n </RadioPrimitive.Indicator>\n </div>\n </RadioPrimitive.Root>\n );\n});\nRadioCardItem.displayName = 'RadioCardItem';\n\nexport { RadioCardGroup, RadioCardItem };\n"],"mappings":";;;;;;;;;AAuBA,IAAMI,IAAiBJ,EAAM,YAC1B,EAAE,cAAW,GAAGK,KAAS,MAEtB,kBAACJ,GAAD;CACO;CACL,aAAU;CACV,WAAWM,EAAG,cAAcC,CAAS;CACrC,GAAIH;AACL,CAAA,CAGP;AACA,EAAe,cAAc;AAiB7B,IAAMI,IAAgBT,EAAM,YAYzB,EAAE,cAAW,aAAU,UAAO,WAAQ,GAAGK,KAAS,MAEjD,kBAACH,EAAe,MAAhB;CACO;CACL,aAAU;CACV,WAAWK,EACT,4XACAC,CACF;CACA,GAAIH;CAEJ,UAAA,kBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,kBAAC,OAAD;GAAK,WAAU;GACb,UAAA,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACGM,KACC,kBAACC,GAAD;MAAO,WAAU;MACd,UAAAD;KACI,CAAA;KAERE,KACC,kBAAC,QAAD;MAAM,WAAU;MACb,UAAAA;KACG,CAAA;KAEPC;IACE;;EACF,CAAA,GACL,kBAACZ,EAAe,WAAhB;GAA0B,WAAU;GAClC,UAAA,kBAACa,GAAD,EAAiB,WAAU,UAAW,CAAA;EACd,CAAA,CACvB;;AACc,CAAA,CAExB;AACD,EAAc,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"radio-group.cjs","names":["React","RadioGroupPrimitive","cn","RadioPrimitive","CircleIcon","require_runtime","require_ui_lib_utils","react_jsx_runtime","react","lucide_react","_base_ui_react_radio_group","_base_ui_react_radio","RadioGroup","props","className","RadioGroupItem"],"sources":["../../../../src/ui/components/ui/radio-group.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport { CircleIcon } from 'lucide-react';\n\nimport { cn } from '../../lib/utils';\n\n/**\n * RadioGroup Component\n * ラジオグループコンポーネント\n */\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupPrimitive.Props>(\n ({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive\n ref={ref}\n data-slot='radio-group'\n className={cn('grid gap-2 w-full', className)}\n {...props}\n />\n );\n },\n);\nRadioGroup.displayName = 'RadioGroup';\n\nconst RadioGroupItem = React.forwardRef<HTMLButtonElement, RadioPrimitive.Root.Props>(\n ({ className, ...props }, ref) => {\n return (\n <RadioPrimitive.Root\n ref={ref}\n data-slot='radio-group-item'\n className={cn(\n 'border-input text-primary dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 flex size-4 rounded-full focus-visible:ring-[3px] aria-invalid:ring-[3px] group/radio-group-item peer relative aspect-square shrink-0 border outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioPrimitive.Indicator\n data-slot='radio-group-indicator'\n className='group-aria-invalid/radio-group-item:text-destructive text-primary flex size-4 items-center justify-center'\n >\n <CircleIcon className='absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-current' />\n </RadioPrimitive.Indicator>\n </RadioPrimitive.Root>\n );\n },\n);\nRadioGroupItem.displayName = 'RadioGroupItem';\n\nexport { RadioGroup, RadioGroupItem };\n"],"mappings":"A,2VAWA,IAAMY,EAAaZ,EAAM,YACtB,CAAE,YAAW,GAAGa,GAAS,KAEtB,EAAAN,EAAA,IAAA,CAACN,EAAAA,WAAD,CACO,MACL,YAAU,cACV,UAAWC,EAAAA,GAAG,oBAAqBY,CAAS,EAC5C,GAAID,CACL,CAAA,CAGP,EACA,EAAW,YAAc,aAEzB,IAAME,EAAiBf,EAAM,YAC1B,CAAE,YAAW,GAAGa,GAAS,KAEtB,EAAAN,EAAA,IAAA,CAACJ,EAAAA,MAAe,KAAhB,CACO,MACL,YAAU,mBACV,UAAWD,EAAAA,GACT,4eACAY,CACF,EACA,GAAID,EAEJ,UAAA,EAAAN,EAAA,IAAA,CAACJ,EAAAA,MAAe,UAAhB,CACE,YAAU,wBACV,UAAU,4GAEV,UAAA,EAAAI,EAAA,IAAA,CAACH,EAAAA,WAAD,CAAY,UAAU,iFAAmF,CAAA,CACjF,CAAA,CACP,CAAA,CAG3B,EACA,EAAe,YAAc,iB"}
1
+ {"version":3,"file":"radio-group.cjs","names":["React","RadioGroupPrimitive","cn","RadioPrimitive","CircleIcon","require_runtime","require_ui_lib_utils","react_jsx_runtime","react","lucide_react","_base_ui_react_radio_group","_base_ui_react_radio","RadioGroup","props","className","RadioGroupItem"],"sources":["../../../../src/ui/components/ui/radio-group.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport { CircleIcon } from 'lucide-react';\n\nimport { cn } from '../../lib/utils';\n\n/**\n * Coordinates a grid of mutually exclusive radio choices.\n * @param props - Component attributes and children accepted by the declared Base UI or native prop type; className customizes wrapper styling.\n * @returns The rendered RadioGroup composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. Items require RadioGroup context and distinct values. Supply labels or accessible names for each item. The wrapper delegates controlled/default selection and keyboard behavior to Base UI. The ref prop forwards to the rendered control or container declared by the component ref type.\n * @example\n * ```tsx\n * import { RadioGroup, RadioGroupItem, Label } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example() {\n * return (<RadioGroup defaultValue=\"email\" aria-label=\"Contact method\"><div><RadioGroupItem id=\"email\" value=\"email\" /><Label htmlFor=\"email\">Email</Label></div><div><RadioGroupItem id=\"phone\" value=\"phone\" /><Label htmlFor=\"phone\">Phone</Label></div></RadioGroup>);\n * }\n * ```\n */\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupPrimitive.Props>(\n ({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive\n ref={ref}\n data-slot='radio-group'\n className={cn('grid gap-2 w-full', className)}\n {...props}\n />\n );\n },\n);\nRadioGroup.displayName = 'RadioGroup';\n\n/**\n * Renders one radio choice with a built-in circular checked indicator.\n * @param props - Component attributes and children accepted by the declared Base UI or native prop type; className customizes wrapper styling.\n * @returns The rendered RadioGroupItem composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. Items require RadioGroup context and distinct values. Supply labels or accessible names for each item. The wrapper delegates controlled/default selection and keyboard behavior to Base UI. The ref prop forwards to the rendered control or container declared by the component ref type. children are replaced by the built-in checked indicator.\n * @example\n * ```tsx\n * import { RadioGroup, RadioGroupItem, Label } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example() {\n * return (<RadioGroup defaultValue=\"email\" aria-label=\"Contact method\"><div><RadioGroupItem id=\"email\" value=\"email\" /><Label htmlFor=\"email\">Email</Label></div><div><RadioGroupItem id=\"phone\" value=\"phone\" /><Label htmlFor=\"phone\">Phone</Label></div></RadioGroup>);\n * }\n * ```\n */\nconst RadioGroupItem = React.forwardRef<HTMLButtonElement, RadioPrimitive.Root.Props>(\n ({ className, ...props }, ref) => {\n return (\n <RadioPrimitive.Root\n ref={ref}\n data-slot='radio-group-item'\n className={cn(\n 'border-input text-primary dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 flex size-4 rounded-full focus-visible:ring-[3px] aria-invalid:ring-[3px] group/radio-group-item peer relative aspect-square shrink-0 border outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioPrimitive.Indicator\n data-slot='radio-group-indicator'\n className='group-aria-invalid/radio-group-item:text-destructive text-primary flex size-4 items-center justify-center'\n >\n <CircleIcon className='absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-current' />\n </RadioPrimitive.Indicator>\n </RadioPrimitive.Root>\n );\n },\n);\nRadioGroupItem.displayName = 'RadioGroupItem';\n\nexport { RadioGroup, RadioGroupItem };\n"],"mappings":"A,2VAsBA,IAAMY,EAAaZ,EAAM,YACtB,CAAE,YAAW,GAAGa,GAAS,KAEtB,EAAAN,EAAA,IAAA,CAACN,EAAAA,WAAD,CACO,MACL,YAAU,cACV,UAAWC,EAAAA,GAAG,oBAAqBY,CAAS,EAC5C,GAAID,CACL,CAAA,CAGP,EACA,EAAW,YAAc,aAiBzB,IAAME,EAAiBf,EAAM,YAC1B,CAAE,YAAW,GAAGa,GAAS,KAEtB,EAAAN,EAAA,IAAA,CAACJ,EAAAA,MAAe,KAAhB,CACO,MACL,YAAU,mBACV,UAAWD,EAAAA,GACT,4eACAY,CACF,EACA,GAAID,EAEJ,UAAA,EAAAN,EAAA,IAAA,CAACJ,EAAAA,MAAe,UAAhB,CACE,YAAU,wBACV,UAAU,4GAEV,UAAA,EAAAI,EAAA,IAAA,CAACH,EAAAA,WAAD,CAAY,UAAU,iFAAmF,CAAA,CACjF,CAAA,CACP,CAAA,CAG3B,EACA,EAAe,YAAc,iB"}
@@ -2,9 +2,35 @@ import { Radio as RadioPrimitive } from '@base-ui/react/radio';
2
2
  import { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';
3
3
  import * as React from 'react';
4
4
  /**
5
- * RadioGroup Component
6
- * ラジオグループコンポーネント
5
+ * Coordinates a grid of mutually exclusive radio choices.
6
+ * @param props - Component attributes and children accepted by the declared Base UI or native prop type; className customizes wrapper styling.
7
+ * @returns The rendered RadioGroup composition.
8
+ * @remarks Import @alneas/appkit-react/styles in the rendering host. Items require RadioGroup context and distinct values. Supply labels or accessible names for each item. The wrapper delegates controlled/default selection and keyboard behavior to Base UI. The ref prop forwards to the rendered control or container declared by the component ref type.
9
+ * @example
10
+ * ```tsx
11
+ * import { RadioGroup, RadioGroupItem, Label } from '@alneas/appkit-react/ui';
12
+ * import '@alneas/appkit-react/styles';
13
+ *
14
+ * export function Example() {
15
+ * return (<RadioGroup defaultValue="email" aria-label="Contact method"><div><RadioGroupItem id="email" value="email" /><Label htmlFor="email">Email</Label></div><div><RadioGroupItem id="phone" value="phone" /><Label htmlFor="phone">Phone</Label></div></RadioGroup>);
16
+ * }
17
+ * ```
7
18
  */
8
19
  declare const RadioGroup: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.Props<any>, "ref"> & React.RefAttributes<HTMLDivElement>>;
20
+ /**
21
+ * Renders one radio choice with a built-in circular checked indicator.
22
+ * @param props - Component attributes and children accepted by the declared Base UI or native prop type; className customizes wrapper styling.
23
+ * @returns The rendered RadioGroupItem composition.
24
+ * @remarks Import @alneas/appkit-react/styles in the rendering host. Items require RadioGroup context and distinct values. Supply labels or accessible names for each item. The wrapper delegates controlled/default selection and keyboard behavior to Base UI. The ref prop forwards to the rendered control or container declared by the component ref type. children are replaced by the built-in checked indicator.
25
+ * @example
26
+ * ```tsx
27
+ * import { RadioGroup, RadioGroupItem, Label } from '@alneas/appkit-react/ui';
28
+ * import '@alneas/appkit-react/styles';
29
+ *
30
+ * export function Example() {
31
+ * return (<RadioGroup defaultValue="email" aria-label="Contact method"><div><RadioGroupItem id="email" value="email" /><Label htmlFor="email">Email</Label></div><div><RadioGroupItem id="phone" value="phone" /><Label htmlFor="phone">Phone</Label></div></RadioGroup>);
32
+ * }
33
+ * ```
34
+ */
9
35
  declare const RadioGroupItem: React.ForwardRefExoticComponent<Omit<RadioPrimitive.Root.Props<any>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
10
36
  export { RadioGroup, RadioGroupItem };
@@ -2,9 +2,35 @@ import { Radio as RadioPrimitive } from '@base-ui/react/radio';
2
2
  import { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';
3
3
  import * as React from 'react';
4
4
  /**
5
- * RadioGroup Component
6
- * ラジオグループコンポーネント
5
+ * Coordinates a grid of mutually exclusive radio choices.
6
+ * @param props - Component attributes and children accepted by the declared Base UI or native prop type; className customizes wrapper styling.
7
+ * @returns The rendered RadioGroup composition.
8
+ * @remarks Import @alneas/appkit-react/styles in the rendering host. Items require RadioGroup context and distinct values. Supply labels or accessible names for each item. The wrapper delegates controlled/default selection and keyboard behavior to Base UI. The ref prop forwards to the rendered control or container declared by the component ref type.
9
+ * @example
10
+ * ```tsx
11
+ * import { RadioGroup, RadioGroupItem, Label } from '@alneas/appkit-react/ui';
12
+ * import '@alneas/appkit-react/styles';
13
+ *
14
+ * export function Example() {
15
+ * return (<RadioGroup defaultValue="email" aria-label="Contact method"><div><RadioGroupItem id="email" value="email" /><Label htmlFor="email">Email</Label></div><div><RadioGroupItem id="phone" value="phone" /><Label htmlFor="phone">Phone</Label></div></RadioGroup>);
16
+ * }
17
+ * ```
7
18
  */
8
19
  declare const RadioGroup: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.Props<any>, "ref"> & React.RefAttributes<HTMLDivElement>>;
20
+ /**
21
+ * Renders one radio choice with a built-in circular checked indicator.
22
+ * @param props - Component attributes and children accepted by the declared Base UI or native prop type; className customizes wrapper styling.
23
+ * @returns The rendered RadioGroupItem composition.
24
+ * @remarks Import @alneas/appkit-react/styles in the rendering host. Items require RadioGroup context and distinct values. Supply labels or accessible names for each item. The wrapper delegates controlled/default selection and keyboard behavior to Base UI. The ref prop forwards to the rendered control or container declared by the component ref type. children are replaced by the built-in checked indicator.
25
+ * @example
26
+ * ```tsx
27
+ * import { RadioGroup, RadioGroupItem, Label } from '@alneas/appkit-react/ui';
28
+ * import '@alneas/appkit-react/styles';
29
+ *
30
+ * export function Example() {
31
+ * return (<RadioGroup defaultValue="email" aria-label="Contact method"><div><RadioGroupItem id="email" value="email" /><Label htmlFor="email">Email</Label></div><div><RadioGroupItem id="phone" value="phone" /><Label htmlFor="phone">Phone</Label></div></RadioGroup>);
32
+ * }
33
+ * ```
34
+ */
9
35
  declare const RadioGroupItem: React.ForwardRefExoticComponent<Omit<RadioPrimitive.Root.Props<any>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
10
36
  export { RadioGroup, RadioGroupItem };
@@ -1 +1 @@
1
- {"version":3,"file":"radio-group.js","names":["React","RadioGroupPrimitive","RadioPrimitive","React$1","RadioGroup$1","RadioGroup","props","cn","className","RadioGroupItem","Radio","CircleIcon"],"sources":["../../../../src/ui/components/ui/radio-group.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport { CircleIcon } from 'lucide-react';\n\nimport { cn } from '../../lib/utils';\n\n/**\n * RadioGroup Component\n * ラジオグループコンポーネント\n */\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupPrimitive.Props>(\n ({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive\n ref={ref}\n data-slot='radio-group'\n className={cn('grid gap-2 w-full', className)}\n {...props}\n />\n );\n },\n);\nRadioGroup.displayName = 'RadioGroup';\n\nconst RadioGroupItem = React.forwardRef<HTMLButtonElement, RadioPrimitive.Root.Props>(\n ({ className, ...props }, ref) => {\n return (\n <RadioPrimitive.Root\n ref={ref}\n data-slot='radio-group-item'\n className={cn(\n 'border-input text-primary dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 flex size-4 rounded-full focus-visible:ring-[3px] aria-invalid:ring-[3px] group/radio-group-item peer relative aspect-square shrink-0 border outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioPrimitive.Indicator\n data-slot='radio-group-indicator'\n className='group-aria-invalid/radio-group-item:text-destructive text-primary flex size-4 items-center justify-center'\n >\n <CircleIcon className='absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-current' />\n </RadioPrimitive.Indicator>\n </RadioPrimitive.Root>\n );\n },\n);\nRadioGroupItem.displayName = 'RadioGroupItem';\n\nexport { RadioGroup, RadioGroupItem };\n"],"mappings":";;;;;;;;AAWA,IAAMK,IAAaL,EAAM,YACtB,EAAE,cAAW,GAAGM,KAAS,MAEtB,kBAACL,GAAD;CACO;CACL,aAAU;CACV,WAAWM,EAAG,qBAAqBC,CAAS;CAC5C,GAAIF;AACL,CAAA,CAGP;AACA,EAAW,cAAc;AAEzB,IAAMG,IAAiBT,EAAM,YAC1B,EAAE,cAAW,GAAGM,KAAS,MAEtB,kBAACJ,EAAe,MAAhB;CACO;CACL,aAAU;CACV,WAAWK,EACT,6eACAC,CACF;CACA,GAAIF;CAEJ,UAAA,kBAACJ,EAAe,WAAhB;EACE,aAAU;EACV,WAAU;EAEV,UAAA,kBAACS,GAAD,EAAY,WAAU,kFAAmF,CAAA;CACjF,CAAA;AACP,CAAA,CAG3B;AACA,EAAe,cAAc"}
1
+ {"version":3,"file":"radio-group.js","names":["React","RadioGroupPrimitive","RadioPrimitive","React$1","RadioGroup$1","RadioGroup","props","cn","className","RadioGroupItem","Radio","CircleIcon"],"sources":["../../../../src/ui/components/ui/radio-group.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport { CircleIcon } from 'lucide-react';\n\nimport { cn } from '../../lib/utils';\n\n/**\n * Coordinates a grid of mutually exclusive radio choices.\n * @param props - Component attributes and children accepted by the declared Base UI or native prop type; className customizes wrapper styling.\n * @returns The rendered RadioGroup composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. Items require RadioGroup context and distinct values. Supply labels or accessible names for each item. The wrapper delegates controlled/default selection and keyboard behavior to Base UI. The ref prop forwards to the rendered control or container declared by the component ref type.\n * @example\n * ```tsx\n * import { RadioGroup, RadioGroupItem, Label } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example() {\n * return (<RadioGroup defaultValue=\"email\" aria-label=\"Contact method\"><div><RadioGroupItem id=\"email\" value=\"email\" /><Label htmlFor=\"email\">Email</Label></div><div><RadioGroupItem id=\"phone\" value=\"phone\" /><Label htmlFor=\"phone\">Phone</Label></div></RadioGroup>);\n * }\n * ```\n */\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupPrimitive.Props>(\n ({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive\n ref={ref}\n data-slot='radio-group'\n className={cn('grid gap-2 w-full', className)}\n {...props}\n />\n );\n },\n);\nRadioGroup.displayName = 'RadioGroup';\n\n/**\n * Renders one radio choice with a built-in circular checked indicator.\n * @param props - Component attributes and children accepted by the declared Base UI or native prop type; className customizes wrapper styling.\n * @returns The rendered RadioGroupItem composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. Items require RadioGroup context and distinct values. Supply labels or accessible names for each item. The wrapper delegates controlled/default selection and keyboard behavior to Base UI. The ref prop forwards to the rendered control or container declared by the component ref type. children are replaced by the built-in checked indicator.\n * @example\n * ```tsx\n * import { RadioGroup, RadioGroupItem, Label } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example() {\n * return (<RadioGroup defaultValue=\"email\" aria-label=\"Contact method\"><div><RadioGroupItem id=\"email\" value=\"email\" /><Label htmlFor=\"email\">Email</Label></div><div><RadioGroupItem id=\"phone\" value=\"phone\" /><Label htmlFor=\"phone\">Phone</Label></div></RadioGroup>);\n * }\n * ```\n */\nconst RadioGroupItem = React.forwardRef<HTMLButtonElement, RadioPrimitive.Root.Props>(\n ({ className, ...props }, ref) => {\n return (\n <RadioPrimitive.Root\n ref={ref}\n data-slot='radio-group-item'\n className={cn(\n 'border-input text-primary dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 flex size-4 rounded-full focus-visible:ring-[3px] aria-invalid:ring-[3px] group/radio-group-item peer relative aspect-square shrink-0 border outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioPrimitive.Indicator\n data-slot='radio-group-indicator'\n className='group-aria-invalid/radio-group-item:text-destructive text-primary flex size-4 items-center justify-center'\n >\n <CircleIcon className='absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-current' />\n </RadioPrimitive.Indicator>\n </RadioPrimitive.Root>\n );\n },\n);\nRadioGroupItem.displayName = 'RadioGroupItem';\n\nexport { RadioGroup, RadioGroupItem };\n"],"mappings":";;;;;;;;AAsBA,IAAMK,IAAaL,EAAM,YACtB,EAAE,cAAW,GAAGM,KAAS,MAEtB,kBAACL,GAAD;CACO;CACL,aAAU;CACV,WAAWM,EAAG,qBAAqBC,CAAS;CAC5C,GAAIF;AACL,CAAA,CAGP;AACA,EAAW,cAAc;AAiBzB,IAAMG,IAAiBT,EAAM,YAC1B,EAAE,cAAW,GAAGM,KAAS,MAEtB,kBAACJ,EAAe,MAAhB;CACO;CACL,aAAU;CACV,WAAWK,EACT,6eACAC,CACF;CACA,GAAIF;CAEJ,UAAA,kBAACJ,EAAe,WAAhB;EACE,aAAU;EACV,WAAU;EAEV,UAAA,kBAACS,GAAD,EAAY,WAAU,kFAAmF,CAAA;CACjF,CAAA;AACP,CAAA,CAG3B;AACA,EAAe,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"resizable.cjs","names":["PanelGroup","cn","Panel","PanelResizeHandle","require_runtime","require_ui_lib_utils","react_jsx_runtime","react","react_resizable_panels","ResizablePanelGroup","props","className","ResizablePanel","ResizableHandle","withHandle"],"sources":["../../../../src/ui/components/ui/resizable.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Panel, Group as PanelGroup, Separator as PanelResizeHandle } from 'react-resizable-panels';\n\nimport { cn } from '../../lib/utils';\n\n/**\n * ドラッグで幅や高さをリサイズ可能なパネルを配置するためのグループコンテナ。\n */\nfunction ResizablePanelGroup({ className, ...props }: React.ComponentProps<typeof PanelGroup>) {\n return (\n <PanelGroup\n data-slot='resizable-panel-group'\n className={cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className)}\n {...props}\n />\n );\n}\n\n/**\n * リサイズ可能な個々のパネル領域。\n */\nfunction ResizablePanel({ ...props }: React.ComponentProps<typeof Panel>) {\n return <Panel data-slot='resizable-panel' {...props} />;\n}\n\n/**\n * パネル間の境界線であり、ドラッグしてサイズ変更を行うためのハンドル。\n */\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof PanelResizeHandle> & {\n withHandle?: boolean;\n}) {\n return (\n <PanelResizeHandle\n data-slot='resizable-handle'\n className={cn(\n 'bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n className,\n )}\n {...props}\n >\n {withHandle && <div className='bg-border h-6 w-1 rounded-lg z-10 flex shrink-0' />}\n </PanelResizeHandle>\n );\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n"],"mappings":"A,wSAUA,SAASS,EAAoB,CAAE,YAAW,GAAGC,GAAkD,CAC7F,OACE,EAAAJ,EAAA,IAAA,CAACN,EAAAA,MAAD,CACE,YAAU,wBACV,UAAWC,EAAAA,GAAG,oEAAqEU,CAAS,EAC5F,GAAID,CACL,CAAA,CAEL,CAKA,SAASE,EAAe,CAAE,GAAGF,GAA6C,CACxE,OAAO,EAAAJ,EAAA,IAAA,CAACJ,EAAAA,MAAD,CAAO,YAAU,kBAAkB,GAAIQ,CAAQ,CAAA,CACxD,CAKA,SAASG,EAAgB,CACvB,aACA,YACA,GAAGH,GAGF,CACD,OACE,EAAAJ,EAAA,IAAA,CAACH,EAAAA,UAAD,CACE,YAAU,mBACV,UAAWF,EAAAA,GACT,4oBACAU,CACF,EACA,GAAID,EAEH,SAAAI,IAAc,EAAAR,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,iDAAmD,CAAA,CAChE,CAAA,CAEvB,C"}
1
+ {"version":3,"file":"resizable.cjs","names":["PanelGroup","cn","Panel","PanelResizeHandle","require_runtime","require_ui_lib_utils","react_jsx_runtime","react","react_resizable_panels","ResizablePanelGroup","props","className","ResizablePanel","ResizableHandle","withHandle"],"sources":["../../../../src/ui/components/ui/resizable.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Panel, Group as PanelGroup, Separator as PanelResizeHandle } from 'react-resizable-panels';\n\nimport { cn } from '../../lib/utils';\n\n/**\n * Coordinates adjacent resizable panels through react-resizable-panels Group.\n * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling.\n * @returns The rendered ResizablePanelGroup composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. Place panels and handles as siblings inside the group and give the host a nonzero size. Props follow the installed react-resizable-panels Group/Panel/Separator API; this wrapper does not add size persistence. withHandle defaults to false/absent.\n * @example\n * ```tsx\n * import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example() {\n * return (<ResizablePanelGroup orientation=\"horizontal\"><ResizablePanel defaultSize=\"50%\">Left</ResizablePanel><ResizableHandle withHandle /><ResizablePanel defaultSize=\"50%\">Right</ResizablePanel></ResizablePanelGroup>);\n * }\n * ```\n */\nfunction ResizablePanelGroup({ className, ...props }: React.ComponentProps<typeof PanelGroup>) {\n return (\n <PanelGroup\n data-slot='resizable-panel-group'\n className={cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className)}\n {...props}\n />\n );\n}\n\n/**\n * Renders one panel managed by its surrounding resizable group.\n * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling.\n * @returns The rendered ResizablePanel composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. Place panels and handles as siblings inside the group and give the host a nonzero size. Props follow the installed react-resizable-panels Group/Panel/Separator API; this wrapper does not add size persistence. withHandle defaults to false/absent.\n * @example\n * ```tsx\n * import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example() {\n * return (<ResizablePanelGroup orientation=\"horizontal\"><ResizablePanel defaultSize=\"50%\">Left</ResizablePanel><ResizableHandle withHandle /><ResizablePanel defaultSize=\"50%\">Right</ResizablePanel></ResizablePanelGroup>);\n * }\n * ```\n */\nfunction ResizablePanel({ ...props }: React.ComponentProps<typeof Panel>) {\n return <Panel data-slot='resizable-panel' {...props} />;\n}\n\n/**\n * Renders the draggable panel separator with an optional visible handle.\n * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling.\n * @returns The rendered ResizableHandle composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. Place panels and handles as siblings inside the group and give the host a nonzero size. Props follow the installed react-resizable-panels Group/Panel/Separator API; this wrapper does not add size persistence. withHandle defaults to false/absent. children are replaced by the optional withHandle grip.\n * @example\n * ```tsx\n * import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example() {\n * return (<ResizablePanelGroup orientation=\"horizontal\"><ResizablePanel defaultSize=\"50%\">Left</ResizablePanel><ResizableHandle withHandle /><ResizablePanel defaultSize=\"50%\">Right</ResizablePanel></ResizablePanelGroup>);\n * }\n * ```\n */\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof PanelResizeHandle> & {\n /**\n * Adds a small visible grip when true; defaults to false/absent.\n */\n withHandle?: boolean;\n}) {\n return (\n <PanelResizeHandle\n data-slot='resizable-handle'\n className={cn(\n 'bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n className,\n )}\n {...props}\n >\n {withHandle && <div className='bg-border h-6 w-1 rounded-lg z-10 flex shrink-0' />}\n </PanelResizeHandle>\n );\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n"],"mappings":"A,wSAsBA,SAASS,EAAoB,CAAE,YAAW,GAAGC,GAAkD,CAC7F,OACE,EAAAJ,EAAA,IAAA,CAACN,EAAAA,MAAD,CACE,YAAU,wBACV,UAAWC,EAAAA,GAAG,oEAAqEU,CAAS,EAC5F,GAAID,CACL,CAAA,CAEL,CAiBA,SAASE,EAAe,CAAE,GAAGF,GAA6C,CACxE,OAAO,EAAAJ,EAAA,IAAA,CAACJ,EAAAA,MAAD,CAAO,YAAU,kBAAkB,GAAIQ,CAAQ,CAAA,CACxD,CAiBA,SAASG,EAAgB,CACvB,aACA,YACA,GAAGH,GAMF,CACD,OACE,EAAAJ,EAAA,IAAA,CAACH,EAAAA,UAAD,CACE,YAAU,mBACV,UAAWF,EAAAA,GACT,4oBACAU,CACF,EACA,GAAID,EAEH,SAAAI,IAAc,EAAAR,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,iDAAmD,CAAA,CAChE,CAAA,CAEvB,C"}
@@ -1,17 +1,56 @@
1
1
  import { Panel, Group as PanelGroup, Separator as PanelResizeHandle } from 'react-resizable-panels';
2
2
  import * as React from 'react';
3
3
  /**
4
- * ドラッグで幅や高さをリサイズ可能なパネルを配置するためのグループコンテナ。
4
+ * Coordinates adjacent resizable panels through react-resizable-panels Group.
5
+ * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling.
6
+ * @returns The rendered ResizablePanelGroup composition.
7
+ * @remarks Import @alneas/appkit-react/styles in the rendering host. Place panels and handles as siblings inside the group and give the host a nonzero size. Props follow the installed react-resizable-panels Group/Panel/Separator API; this wrapper does not add size persistence. withHandle defaults to false/absent.
8
+ * @example
9
+ * ```tsx
10
+ * import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@alneas/appkit-react/ui';
11
+ * import '@alneas/appkit-react/styles';
12
+ *
13
+ * export function Example() {
14
+ * return (<ResizablePanelGroup orientation="horizontal"><ResizablePanel defaultSize="50%">Left</ResizablePanel><ResizableHandle withHandle /><ResizablePanel defaultSize="50%">Right</ResizablePanel></ResizablePanelGroup>);
15
+ * }
16
+ * ```
5
17
  */
6
18
  declare function ResizablePanelGroup({ className, ...props }: React.ComponentProps<typeof PanelGroup>): React.JSX.Element;
7
19
  /**
8
- * リサイズ可能な個々のパネル領域。
20
+ * Renders one panel managed by its surrounding resizable group.
21
+ * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling.
22
+ * @returns The rendered ResizablePanel composition.
23
+ * @remarks Import @alneas/appkit-react/styles in the rendering host. Place panels and handles as siblings inside the group and give the host a nonzero size. Props follow the installed react-resizable-panels Group/Panel/Separator API; this wrapper does not add size persistence. withHandle defaults to false/absent.
24
+ * @example
25
+ * ```tsx
26
+ * import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@alneas/appkit-react/ui';
27
+ * import '@alneas/appkit-react/styles';
28
+ *
29
+ * export function Example() {
30
+ * return (<ResizablePanelGroup orientation="horizontal"><ResizablePanel defaultSize="50%">Left</ResizablePanel><ResizableHandle withHandle /><ResizablePanel defaultSize="50%">Right</ResizablePanel></ResizablePanelGroup>);
31
+ * }
32
+ * ```
9
33
  */
10
34
  declare function ResizablePanel({ ...props }: React.ComponentProps<typeof Panel>): React.JSX.Element;
11
35
  /**
12
- * パネル間の境界線であり、ドラッグしてサイズ変更を行うためのハンドル。
36
+ * Renders the draggable panel separator with an optional visible handle.
37
+ * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling.
38
+ * @returns The rendered ResizableHandle composition.
39
+ * @remarks Import @alneas/appkit-react/styles in the rendering host. Place panels and handles as siblings inside the group and give the host a nonzero size. Props follow the installed react-resizable-panels Group/Panel/Separator API; this wrapper does not add size persistence. withHandle defaults to false/absent. children are replaced by the optional withHandle grip.
40
+ * @example
41
+ * ```tsx
42
+ * import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@alneas/appkit-react/ui';
43
+ * import '@alneas/appkit-react/styles';
44
+ *
45
+ * export function Example() {
46
+ * return (<ResizablePanelGroup orientation="horizontal"><ResizablePanel defaultSize="50%">Left</ResizablePanel><ResizableHandle withHandle /><ResizablePanel defaultSize="50%">Right</ResizablePanel></ResizablePanelGroup>);
47
+ * }
48
+ * ```
13
49
  */
14
50
  declare function ResizableHandle({ withHandle, className, ...props }: React.ComponentProps<typeof PanelResizeHandle> & {
51
+ /**
52
+ * Adds a small visible grip when true; defaults to false/absent.
53
+ */
15
54
  withHandle?: boolean;
16
55
  }): React.JSX.Element;
17
56
  export { ResizablePanelGroup, ResizablePanel, ResizableHandle };
@@ -1,17 +1,56 @@
1
1
  import { Panel, Group as PanelGroup, Separator as PanelResizeHandle } from 'react-resizable-panels';
2
2
  import * as React from 'react';
3
3
  /**
4
- * ドラッグで幅や高さをリサイズ可能なパネルを配置するためのグループコンテナ。
4
+ * Coordinates adjacent resizable panels through react-resizable-panels Group.
5
+ * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling.
6
+ * @returns The rendered ResizablePanelGroup composition.
7
+ * @remarks Import @alneas/appkit-react/styles in the rendering host. Place panels and handles as siblings inside the group and give the host a nonzero size. Props follow the installed react-resizable-panels Group/Panel/Separator API; this wrapper does not add size persistence. withHandle defaults to false/absent.
8
+ * @example
9
+ * ```tsx
10
+ * import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@alneas/appkit-react/ui';
11
+ * import '@alneas/appkit-react/styles';
12
+ *
13
+ * export function Example() {
14
+ * return (<ResizablePanelGroup orientation="horizontal"><ResizablePanel defaultSize="50%">Left</ResizablePanel><ResizableHandle withHandle /><ResizablePanel defaultSize="50%">Right</ResizablePanel></ResizablePanelGroup>);
15
+ * }
16
+ * ```
5
17
  */
6
18
  declare function ResizablePanelGroup({ className, ...props }: React.ComponentProps<typeof PanelGroup>): React.JSX.Element;
7
19
  /**
8
- * リサイズ可能な個々のパネル領域。
20
+ * Renders one panel managed by its surrounding resizable group.
21
+ * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling.
22
+ * @returns The rendered ResizablePanel composition.
23
+ * @remarks Import @alneas/appkit-react/styles in the rendering host. Place panels and handles as siblings inside the group and give the host a nonzero size. Props follow the installed react-resizable-panels Group/Panel/Separator API; this wrapper does not add size persistence. withHandle defaults to false/absent.
24
+ * @example
25
+ * ```tsx
26
+ * import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@alneas/appkit-react/ui';
27
+ * import '@alneas/appkit-react/styles';
28
+ *
29
+ * export function Example() {
30
+ * return (<ResizablePanelGroup orientation="horizontal"><ResizablePanel defaultSize="50%">Left</ResizablePanel><ResizableHandle withHandle /><ResizablePanel defaultSize="50%">Right</ResizablePanel></ResizablePanelGroup>);
31
+ * }
32
+ * ```
9
33
  */
10
34
  declare function ResizablePanel({ ...props }: React.ComponentProps<typeof Panel>): React.JSX.Element;
11
35
  /**
12
- * パネル間の境界線であり、ドラッグしてサイズ変更を行うためのハンドル。
36
+ * Renders the draggable panel separator with an optional visible handle.
37
+ * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling.
38
+ * @returns The rendered ResizableHandle composition.
39
+ * @remarks Import @alneas/appkit-react/styles in the rendering host. Place panels and handles as siblings inside the group and give the host a nonzero size. Props follow the installed react-resizable-panels Group/Panel/Separator API; this wrapper does not add size persistence. withHandle defaults to false/absent. children are replaced by the optional withHandle grip.
40
+ * @example
41
+ * ```tsx
42
+ * import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@alneas/appkit-react/ui';
43
+ * import '@alneas/appkit-react/styles';
44
+ *
45
+ * export function Example() {
46
+ * return (<ResizablePanelGroup orientation="horizontal"><ResizablePanel defaultSize="50%">Left</ResizablePanel><ResizableHandle withHandle /><ResizablePanel defaultSize="50%">Right</ResizablePanel></ResizablePanelGroup>);
47
+ * }
48
+ * ```
13
49
  */
14
50
  declare function ResizableHandle({ withHandle, className, ...props }: React.ComponentProps<typeof PanelResizeHandle> & {
51
+ /**
52
+ * Adds a small visible grip when true; defaults to false/absent.
53
+ */
15
54
  withHandle?: boolean;
16
55
  }): React.JSX.Element;
17
56
  export { ResizablePanelGroup, ResizablePanel, ResizableHandle };
@@ -1 +1 @@
1
- {"version":3,"file":"resizable.js","names":["PanelGroup","PanelResizeHandle","ResizablePanelGroup","props","Group","cn","className","ResizablePanel","Panel","ResizableHandle","Separator","withHandle"],"sources":["../../../../src/ui/components/ui/resizable.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Panel, Group as PanelGroup, Separator as PanelResizeHandle } from 'react-resizable-panels';\n\nimport { cn } from '../../lib/utils';\n\n/**\n * ドラッグで幅や高さをリサイズ可能なパネルを配置するためのグループコンテナ。\n */\nfunction ResizablePanelGroup({ className, ...props }: React.ComponentProps<typeof PanelGroup>) {\n return (\n <PanelGroup\n data-slot='resizable-panel-group'\n className={cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className)}\n {...props}\n />\n );\n}\n\n/**\n * リサイズ可能な個々のパネル領域。\n */\nfunction ResizablePanel({ ...props }: React.ComponentProps<typeof Panel>) {\n return <Panel data-slot='resizable-panel' {...props} />;\n}\n\n/**\n * パネル間の境界線であり、ドラッグしてサイズ変更を行うためのハンドル。\n */\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof PanelResizeHandle> & {\n withHandle?: boolean;\n}) {\n return (\n <PanelResizeHandle\n data-slot='resizable-handle'\n className={cn(\n 'bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n className,\n )}\n {...props}\n >\n {withHandle && <div className='bg-border h-6 w-1 rounded-lg z-10 flex shrink-0' />}\n </PanelResizeHandle>\n );\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n"],"mappings":";;;;;;;AAUA,SAASE,EAAoB,EAAE,cAAW,GAAGC,KAAkD;CAC7F,OACE,kBAACH,GAAD;EACE,aAAU;EACV,WAAWK,EAAG,qEAAqEC,CAAS;EAC5F,GAAIH;CACL,CAAA;AAEL;AAKA,SAASI,EAAe,EAAE,GAAGJ,KAA6C;CACxE,OAAO,kBAACK,GAAD;EAAO,aAAU;EAAkB,GAAIL;CAAQ,CAAA;AACxD;AAKA,SAASM,EAAgB,EACvB,eACA,cACA,GAAGN,KAGF;CACD,OACE,kBAACF,GAAD;EACE,aAAU;EACV,WAAWI,EACT,6oBACAC,CACF;EACA,GAAIH;EAEH,UAAAQ,KAAc,kBAAC,OAAD,EAAK,WAAU,kDAAmD,CAAA;CAChE,CAAA;AAEvB"}
1
+ {"version":3,"file":"resizable.js","names":["PanelGroup","PanelResizeHandle","ResizablePanelGroup","props","Group","cn","className","ResizablePanel","Panel","ResizableHandle","Separator","withHandle"],"sources":["../../../../src/ui/components/ui/resizable.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Panel, Group as PanelGroup, Separator as PanelResizeHandle } from 'react-resizable-panels';\n\nimport { cn } from '../../lib/utils';\n\n/**\n * Coordinates adjacent resizable panels through react-resizable-panels Group.\n * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling.\n * @returns The rendered ResizablePanelGroup composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. Place panels and handles as siblings inside the group and give the host a nonzero size. Props follow the installed react-resizable-panels Group/Panel/Separator API; this wrapper does not add size persistence. withHandle defaults to false/absent.\n * @example\n * ```tsx\n * import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example() {\n * return (<ResizablePanelGroup orientation=\"horizontal\"><ResizablePanel defaultSize=\"50%\">Left</ResizablePanel><ResizableHandle withHandle /><ResizablePanel defaultSize=\"50%\">Right</ResizablePanel></ResizablePanelGroup>);\n * }\n * ```\n */\nfunction ResizablePanelGroup({ className, ...props }: React.ComponentProps<typeof PanelGroup>) {\n return (\n <PanelGroup\n data-slot='resizable-panel-group'\n className={cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className)}\n {...props}\n />\n );\n}\n\n/**\n * Renders one panel managed by its surrounding resizable group.\n * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling.\n * @returns The rendered ResizablePanel composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. Place panels and handles as siblings inside the group and give the host a nonzero size. Props follow the installed react-resizable-panels Group/Panel/Separator API; this wrapper does not add size persistence. withHandle defaults to false/absent.\n * @example\n * ```tsx\n * import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example() {\n * return (<ResizablePanelGroup orientation=\"horizontal\"><ResizablePanel defaultSize=\"50%\">Left</ResizablePanel><ResizableHandle withHandle /><ResizablePanel defaultSize=\"50%\">Right</ResizablePanel></ResizablePanelGroup>);\n * }\n * ```\n */\nfunction ResizablePanel({ ...props }: React.ComponentProps<typeof Panel>) {\n return <Panel data-slot='resizable-panel' {...props} />;\n}\n\n/**\n * Renders the draggable panel separator with an optional visible handle.\n * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling.\n * @returns The rendered ResizableHandle composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. Place panels and handles as siblings inside the group and give the host a nonzero size. Props follow the installed react-resizable-panels Group/Panel/Separator API; this wrapper does not add size persistence. withHandle defaults to false/absent. children are replaced by the optional withHandle grip.\n * @example\n * ```tsx\n * import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example() {\n * return (<ResizablePanelGroup orientation=\"horizontal\"><ResizablePanel defaultSize=\"50%\">Left</ResizablePanel><ResizableHandle withHandle /><ResizablePanel defaultSize=\"50%\">Right</ResizablePanel></ResizablePanelGroup>);\n * }\n * ```\n */\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof PanelResizeHandle> & {\n /**\n * Adds a small visible grip when true; defaults to false/absent.\n */\n withHandle?: boolean;\n}) {\n return (\n <PanelResizeHandle\n data-slot='resizable-handle'\n className={cn(\n 'bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n className,\n )}\n {...props}\n >\n {withHandle && <div className='bg-border h-6 w-1 rounded-lg z-10 flex shrink-0' />}\n </PanelResizeHandle>\n );\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n"],"mappings":";;;;;;;AAsBA,SAASE,EAAoB,EAAE,cAAW,GAAGC,KAAkD;CAC7F,OACE,kBAACH,GAAD;EACE,aAAU;EACV,WAAWK,EAAG,qEAAqEC,CAAS;EAC5F,GAAIH;CACL,CAAA;AAEL;AAiBA,SAASI,EAAe,EAAE,GAAGJ,KAA6C;CACxE,OAAO,kBAACK,GAAD;EAAO,aAAU;EAAkB,GAAIL;CAAQ,CAAA;AACxD;AAiBA,SAASM,EAAgB,EACvB,eACA,cACA,GAAGN,KAMF;CACD,OACE,kBAACF,GAAD;EACE,aAAU;EACV,WAAWI,EACT,6oBACAC,CACF;EACA,GAAIH;EAEH,UAAAQ,KAAc,kBAAC,OAAD,EAAK,WAAU,kDAAmD,CAAA;CAChE,CAAA;AAEvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"responsive-list.cjs","names":["cn","React","require_runtime","require_ui_lib_utils","react_jsx_runtime","react","DataList","getValue","keys","key","value","item","k","data","testId","emptyMessage","className","columns","col","onRowClick","keyField","mobileCardClassName","idx","gapClasses","ResponsiveGrid","props","colClasses","cols","gap","SwipeableItem","translateX","setTranslateX","startX","setStartX","isDragging","setIsDragging","handleTouchStart","handleTouchMove","diff","handleTouchEnd","threshold","onSwipeRight","onSwipeLeft","rightAction","leftAction","PullToRefresh","isPulling","setIsPulling","isRefreshing","setIsRefreshing","pullDistance","setPullDistance","startY","distance","pullThreshold","onRefresh"],"sources":["../../../../src/ui/components/ui/responsive-list.tsx"],"sourcesContent":["/**\n * レスポンシブデータリストコンポーネント\n *\n * shadcn/ui パターンに準拠:\n * - テーマトークン使用 (bg-card, text-muted-foreground など)\n * - testId prop 対応\n * - data-slot 属性\n */\n\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\n\n// ============================================================================\n// DataList - Table on desktop, Cards on mobile\n// ============================================================================\n\nexport interface DataListColumn<T> {\n key: keyof T | string;\n header: string;\n render?: (item: T) => React.ReactNode;\n className?: string;\n /** Hide this column on mobile */\n mobileHidden?: boolean;\n /** Show label on mobile card (default: true) */\n mobileLabel?: boolean;\n}\n\nexport interface DataListProps<T> {\n data: T[];\n columns: DataListColumn<T>[];\n keyField: keyof T;\n onRowClick?: (item: T) => void;\n emptyMessage?: string;\n className?: string;\n mobileCardClassName?: string;\n testId?: string;\n}\n\n/**\n * PCサイズではテーブル形式、モバイルサイズではカード形式でデータを表示するレスポンシブなデータリストコンポーネント。\n */\nfunction DataList<T extends Record<string, unknown>>({\n data,\n columns,\n keyField,\n onRowClick,\n emptyMessage = 'データがありません',\n className,\n mobileCardClassName,\n testId,\n}: DataListProps<T>) {\n const getValue = (item: T, key: string): unknown => {\n const keys = key.split('.');\n let value: unknown = item;\n for (const k of keys) {\n value = (value as Record<string, unknown>)?.[k];\n }\n return value;\n };\n\n if (data.length === 0) {\n return (\n <div\n data-slot='data-list-empty'\n data-testid={testId ? `${testId}-empty` : undefined}\n className='flex items-center justify-center py-12 text-muted-foreground'\n >\n {emptyMessage}\n </div>\n );\n }\n\n return (\n <div data-slot='data-list' data-testid={testId} className={cn('w-full', className)}>\n {/* Desktop Table */}\n <div className='hidden md:block overflow-x-auto'>\n <table className='w-full text-sm'>\n <thead>\n <tr className='border-b bg-muted/50'>\n {columns.map((col) => (\n <th\n key={String(col.key)}\n className={cn('py-3 px-4 text-left font-medium text-foreground', col.className)}\n >\n {col.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.map((item) => (\n <tr\n key={String(item[keyField])}\n data-slot='data-list-row'\n className={cn(\n 'border-b transition-colors hover:bg-muted/50',\n onRowClick && 'cursor-pointer',\n )}\n onClick={() => onRowClick?.(item)}\n >\n {columns.map((col) => (\n <td key={String(col.key)} className={cn('py-3 px-4', col.className)}>\n {col.render ? col.render(item) : String(getValue(item, String(col.key)) ?? '')}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n\n {/* Mobile Cards */}\n <div className='md:hidden space-y-3'>\n {data.map((item) => (\n <div\n key={String(item[keyField])}\n data-slot='data-list-card'\n className={cn(\n 'p-4 border rounded-lg bg-card text-card-foreground shadow-sm',\n onRowClick && 'cursor-pointer active:bg-muted/50',\n mobileCardClassName,\n )}\n onClick={() => onRowClick?.(item)}\n >\n {columns\n .filter((col) => !col.mobileHidden)\n .map((col, idx) => (\n <div\n key={String(col.key)}\n className={cn(\n 'flex justify-between items-center',\n idx > 0 && 'mt-2 pt-2 border-t border-dashed border-border',\n )}\n >\n {col.mobileLabel !== false && (\n <span className='text-sm text-muted-foreground'>{col.header}</span>\n )}\n <span className={cn('font-medium', col.className)}>\n {col.render ? col.render(item) : String(getValue(item, String(col.key)) ?? '')}\n </span>\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n );\n}\n\n// ============================================================================\n// ResponsiveGrid\n// ============================================================================\n\nexport interface ResponsiveGridProps extends React.HTMLAttributes<HTMLDivElement> {\n cols?: {\n default?: number;\n sm?: number;\n md?: number;\n lg?: number;\n xl?: number;\n };\n gap?: 'none' | 'sm' | 'default' | 'lg';\n}\n\nconst gapClasses = {\n none: 'gap-0',\n sm: 'gap-2',\n default: 'gap-4',\n lg: 'gap-6',\n};\n\n/**\n * デバイスの画面幅に合わせてカラム数を切り替えることができるレスポンシブグリッドレイアウト。\n */\nfunction ResponsiveGrid({\n children,\n cols = { default: 1, md: 2, lg: 3 },\n gap = 'default',\n className,\n ...props\n}: ResponsiveGridProps) {\n // Build grid classes dynamically\n const colClasses = [\n cols.default && `grid-cols-${cols.default}`,\n cols.sm && `sm:grid-cols-${cols.sm}`,\n cols.md && `md:grid-cols-${cols.md}`,\n cols.lg && `lg:grid-cols-${cols.lg}`,\n cols.xl && `xl:grid-cols-${cols.xl}`,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n data-slot='responsive-grid'\n className={cn('grid', gapClasses[gap], colClasses, className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// ============================================================================\n// SwipeableItem\n// ============================================================================\n\nexport interface SwipeableItemProps extends React.HTMLAttributes<HTMLDivElement> {\n onSwipeLeft?: () => void;\n onSwipeRight?: () => void;\n leftAction?: React.ReactNode;\n rightAction?: React.ReactNode;\n threshold?: number;\n}\n\n/**\n * タッチデバイスなどで左右スワイプ操作によるアクション(削除や編集など)を実行できるコンポーネント。\n */\nfunction SwipeableItem({\n children,\n onSwipeLeft,\n onSwipeRight,\n leftAction,\n rightAction,\n threshold = 50,\n className,\n ...props\n}: SwipeableItemProps) {\n const [translateX, setTranslateX] = React.useState(0);\n const [startX, setStartX] = React.useState(0);\n const [isDragging, setIsDragging] = React.useState(false);\n\n const handleTouchStart = (e: React.TouchEvent) => {\n setStartX(e.touches[0].clientX);\n setIsDragging(true);\n };\n\n const handleTouchMove = (e: React.TouchEvent) => {\n if (!isDragging) return;\n const diff = e.touches[0].clientX - startX;\n const maxSwipe = 100;\n setTranslateX(Math.max(-maxSwipe, Math.min(maxSwipe, diff)));\n };\n\n const handleTouchEnd = () => {\n setIsDragging(false);\n if (translateX > threshold && onSwipeRight) {\n onSwipeRight();\n } else if (translateX < -threshold && onSwipeLeft) {\n onSwipeLeft();\n }\n setTranslateX(0);\n };\n\n return (\n <div\n data-slot='swipeable-item'\n className={cn('relative overflow-hidden', className)}\n {...props}\n >\n {/* Background actions */}\n <div className='absolute inset-0 flex'>\n <div className='flex-1 flex items-center justify-start px-4 bg-green-500 text-white'>\n {rightAction}\n </div>\n <div className='flex-1 flex items-center justify-end px-4 bg-destructive text-destructive-foreground'>\n {leftAction}\n </div>\n </div>\n\n {/* Swipeable content */}\n <div\n className='relative bg-background transition-transform'\n style={{\n transform: `translateX(${translateX}px)`,\n transition: isDragging ? 'none' : 'transform 0.2s',\n }}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n >\n {children}\n </div>\n </div>\n );\n}\n\n// ============================================================================\n// PullToRefresh\n// ============================================================================\n\nexport interface PullToRefreshProps extends React.HTMLAttributes<HTMLDivElement> {\n onRefresh: () => Promise<void>;\n pullThreshold?: number;\n}\n\n/**\n * モバイル端末などで画面上部を下に引っ張ってデータを更新する(Pull to Refresh)機能を実装するコンポーネント。\n */\nfunction PullToRefresh({\n children,\n onRefresh,\n pullThreshold = 80,\n className,\n ...props\n}: PullToRefreshProps) {\n const [isPulling, setIsPulling] = React.useState(false);\n const [isRefreshing, setIsRefreshing] = React.useState(false);\n const [pullDistance, setPullDistance] = React.useState(0);\n const startY = React.useRef(0);\n\n const handleTouchStart = (e: React.TouchEvent) => {\n if (window.scrollY === 0) {\n startY.current = e.touches[0].clientY;\n setIsPulling(true);\n }\n };\n\n const handleTouchMove = (e: React.TouchEvent) => {\n if (!isPulling) return;\n const distance = e.touches[0].clientY - startY.current;\n if (distance > 0) {\n setPullDistance(Math.min(distance * 0.5, 100));\n }\n };\n\n const handleTouchEnd = async () => {\n if (pullDistance >= pullThreshold) {\n setIsRefreshing(true);\n await onRefresh();\n setIsRefreshing(false);\n }\n setIsPulling(false);\n setPullDistance(0);\n };\n\n return (\n <div\n data-slot='pull-to-refresh'\n className={cn('relative', className)}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n {...props}\n >\n {/* Pull indicator */}\n <div\n className='absolute left-1/2 -translate-x-1/2 flex items-center justify-center transition-all'\n style={{\n top: pullDistance - 40,\n opacity: pullDistance / pullThreshold,\n }}\n >\n <div\n className={cn(\n 'w-6 h-6 border-2 border-primary border-t-transparent rounded-full',\n isRefreshing && 'animate-spin',\n )}\n />\n </div>\n\n {/* Content */}\n <div\n style={{\n transform: `translateY(${pullDistance}px)`,\n transition: isPulling ? 'none' : 'transform 0.2s',\n }}\n >\n {children}\n </div>\n </div>\n );\n}\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport { DataList, ResponsiveGrid, SwipeableItem, PullToRefresh };\n"],"mappings":"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"}
1
+ {"version":3,"file":"responsive-list.cjs","names":["cn","React","require_runtime","require_ui_lib_utils","react_jsx_runtime","react","DataList","getValue","keys","key","value","item","k","data","testId","emptyMessage","className","columns","col","onRowClick","keyField","mobileCardClassName","idx","gapClasses","ResponsiveGrid","props","colClasses","cols","gap","SwipeableItem","translateX","setTranslateX","startX","setStartX","isDragging","setIsDragging","handleTouchStart","handleTouchMove","diff","handleTouchEnd","threshold","onSwipeRight","onSwipeLeft","rightAction","leftAction","PullToRefresh","isPulling","setIsPulling","isRefreshing","setIsRefreshing","pullDistance","setPullDistance","startY","distance","pullThreshold","onRefresh"],"sources":["../../../../src/ui/components/ui/responsive-list.tsx"],"sourcesContent":["/** Responsive record presentation and touch interaction wrappers; the host owns data loading and actions. */\n\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\n\n// ============================================================================\n// DataList - Table on desktop, Cards on mobile\n// ============================================================================\n\n/**\n * One desktop-table/mobile-card column and optional row renderer.\n * @typeParam T - Complete row shape used by record keys, renderers and callbacks.\n * @remarks Inherited native or primitive props keep their upstream types and behavior; this declaration documents only the wrapper-owned options.\n * @see DataList\n */\nexport interface DataListColumn<T> {\n /**\n * Row property or dot-separated lookup path used for default rendering and column keys.\n */\n key: keyof T | string;\n /**\n * Column heading, also used as a mobile card label unless mobileLabel=false.\n */\n header: string;\n /**\n * Custom renderer receiving the complete row; may run for both desktop and mobile markup.\n * @param item - Complete row supplied by the renderer/click handler.\n * @returns Content rendered for this row/option.\n */\n render?: (item: T) => React.ReactNode;\n /**\n * Additional classes merged with wrapper styling; see the component for the targeted element.\n */\n className?: string;\n /**\n * Hides this column only in mobile cards; omitted/false keeps it visible.\n */\n mobileHidden?: boolean;\n /**\n * Shows the column header beside the mobile value unless explicitly false.\n */\n mobileLabel?: boolean;\n}\n\n/**\n * Records, stable row keys and responsive rendering behavior for DataList.\n * @typeParam T - Complete row shape used by record keys, renderers and callbacks.\n * @remarks Inherited native or primitive props keep their upstream types and behavior; this declaration documents only the wrapper-owned options.\n * @see DataList\n */\nexport interface DataListProps<T> {\n /**\n * Rows in display order; an empty array renders only emptyMessage.\n */\n data: T[];\n /**\n * Column definitions in display order; reused for desktop and mobile markup.\n */\n columns: DataListColumn<T>[];\n /**\n * Row field whose String(value) supplies React keys; provide unique stable values.\n */\n keyField: keyof T;\n /**\n * Called with the row on desktop-row or mobile-card click; adds pointer styling but no keyboard activation.\n * @param item - Complete row supplied by the renderer/click handler.\n * @returns No value; complete the host callback action.\n */\n onRowClick?: (item: T) => void;\n /**\n * Text shown when data is empty.\n * @defaultValue データがありません\n */\n emptyMessage?: string;\n /**\n * Additional classes merged with wrapper styling; see the component for the targeted element.\n */\n className?: string;\n /**\n * Additional classes on each mobile card.\n */\n mobileCardClassName?: string;\n /**\n * Root data-testid for nonempty data; the empty state uses `${testId}-empty`.\n */\n testId?: string;\n}\n\n/**\n * Renders the same records as a desktop table and mobile cards using responsive visibility classes.\n * @typeParam T - Record shape used by data, column render callbacks and row-click callbacks; must extend Record<string, unknown>.\n * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling. Wrapper defaults: emptyMessage='データがありません'.\n * @returns The rendered DataList composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. DataList mounts both desktop/mobile representations; CSS switches visibility at md, so custom render callbacks may execute for both. It does not virtualize or add keyboard row activation. keyField must give stable unique stringifiable keys. ResponsiveGrid creates dynamic Tailwind classes: the host CSS must include the requested classes. Touch helpers do not add mouse/keyboard equivalents or persistence.\n * @example\n * ```tsx\n * import type { ComponentProps } from 'react';\n * import { DataList, ResponsiveGrid, SwipeableItem, PullToRefresh } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example({ refresh }: { refresh: () => Promise<void> }) {\n * return (<PullToRefresh onRefresh={async () => { await refresh(); }}><ResponsiveGrid><SwipeableItem onSwipeLeft={() => console.log(\"Left swipe\")}><DataList data={[{ id: \"one\", title: \"Draft\" }]} keyField=\"id\" columns={[{ key: \"title\", header: \"Title\" }]} /></SwipeableItem></ResponsiveGrid></PullToRefresh>);\n * }\n * ```\n */\nfunction DataList<T extends Record<string, unknown>>({\n data,\n columns,\n keyField,\n onRowClick,\n emptyMessage = 'データがありません',\n className,\n mobileCardClassName,\n testId,\n}: DataListProps<T>) {\n const getValue = (item: T, key: string): unknown => {\n const keys = key.split('.');\n let value: unknown = item;\n for (const k of keys) {\n value = (value as Record<string, unknown>)?.[k];\n }\n return value;\n };\n\n if (data.length === 0) {\n return (\n <div\n data-slot='data-list-empty'\n data-testid={testId ? `${testId}-empty` : undefined}\n className='flex items-center justify-center py-12 text-muted-foreground'\n >\n {emptyMessage}\n </div>\n );\n }\n\n return (\n <div data-slot='data-list' data-testid={testId} className={cn('w-full', className)}>\n {/* Desktop Table */}\n <div className='hidden md:block overflow-x-auto'>\n <table className='w-full text-sm'>\n <thead>\n <tr className='border-b bg-muted/50'>\n {columns.map((col) => (\n <th\n key={String(col.key)}\n className={cn('py-3 px-4 text-left font-medium text-foreground', col.className)}\n >\n {col.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.map((item) => (\n <tr\n key={String(item[keyField])}\n data-slot='data-list-row'\n className={cn(\n 'border-b transition-colors hover:bg-muted/50',\n onRowClick && 'cursor-pointer',\n )}\n onClick={() => onRowClick?.(item)}\n >\n {columns.map((col) => (\n <td key={String(col.key)} className={cn('py-3 px-4', col.className)}>\n {col.render ? col.render(item) : String(getValue(item, String(col.key)) ?? '')}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n\n {/* Mobile Cards */}\n <div className='md:hidden space-y-3'>\n {data.map((item) => (\n <div\n key={String(item[keyField])}\n data-slot='data-list-card'\n className={cn(\n 'p-4 border rounded-lg bg-card text-card-foreground shadow-sm',\n onRowClick && 'cursor-pointer active:bg-muted/50',\n mobileCardClassName,\n )}\n onClick={() => onRowClick?.(item)}\n >\n {columns\n .filter((col) => !col.mobileHidden)\n .map((col, idx) => (\n <div\n key={String(col.key)}\n className={cn(\n 'flex justify-between items-center',\n idx > 0 && 'mt-2 pt-2 border-t border-dashed border-border',\n )}\n >\n {col.mobileLabel !== false && (\n <span className='text-sm text-muted-foreground'>{col.header}</span>\n )}\n <span className={cn('font-medium', col.className)}>\n {col.render ? col.render(item) : String(getValue(item, String(col.key)) ?? '')}\n </span>\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n );\n}\n\n// ============================================================================\n// ResponsiveGrid\n// ============================================================================\n\n/**\n * Native div attributes and dynamically constructed breakpoint column classes.\n * @remarks Inherited native or primitive props keep their upstream types and behavior; this declaration documents only the wrapper-owned options.\n * @see ResponsiveGrid\n */\nexport interface ResponsiveGridProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Breakpoint column counts; defaults to { default: 1, md: 2, lg: 3 }. A supplied object replaces the default, with no merging. Requested dynamic utility classes must exist in host CSS.\n */\n cols?: {\n /**\n * Column count below the sm breakpoint; if omitted in a supplied cols object, no base column class is added.\n */\n default?: number;\n /**\n * Column count from the sm breakpoint; a requested utility class must exist in the host CSS.\n */\n sm?: number;\n /**\n * Column count from the md breakpoint; a requested utility class must exist in the host CSS.\n */\n md?: number;\n /**\n * Column count from the lg breakpoint; a requested utility class must exist in the host CSS.\n */\n lg?: number;\n /**\n * Column count from the xl breakpoint; a requested utility class must exist in the host CSS.\n */\n xl?: number;\n };\n /**\n * Gap preset: none=gap-0, sm=gap-2, default=gap-4, lg=gap-6; defaults to default.\n */\n gap?: 'none' | 'sm' | 'default' | 'lg';\n}\n\nconst gapClasses = {\n none: 'gap-0',\n sm: 'gap-2',\n default: 'gap-4',\n lg: 'gap-6',\n};\n\n/**\n * Builds grid-column utility classes for caller-selected breakpoints.\n * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling. Wrapper defaults: cols={ default: 1, md: 2, lg: 3 }, gap='default'.\n * @returns The rendered ResponsiveGrid composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. DataList mounts both desktop/mobile representations; CSS switches visibility at md, so custom render callbacks may execute for both. It does not virtualize or add keyboard row activation. keyField must give stable unique stringifiable keys. ResponsiveGrid creates dynamic Tailwind classes: the host CSS must include the requested classes. Touch helpers do not add mouse/keyboard equivalents or persistence. cols defaults to { default: 1, md: 2, lg: 3 }; supplying cols replaces that object without merging omitted breakpoints.\n * @example\n * ```tsx\n * import type { ComponentProps } from 'react';\n * import { DataList, ResponsiveGrid, SwipeableItem, PullToRefresh } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example({ refresh }: { refresh: () => Promise<void> }) {\n * return (<PullToRefresh onRefresh={async () => { await refresh(); }}><ResponsiveGrid><SwipeableItem onSwipeLeft={() => console.log(\"Left swipe\")}><DataList data={[{ id: \"one\", title: \"Draft\" }]} keyField=\"id\" columns={[{ key: \"title\", header: \"Title\" }]} /></SwipeableItem></ResponsiveGrid></PullToRefresh>);\n * }\n * ```\n */\nfunction ResponsiveGrid({\n children,\n cols = { default: 1, md: 2, lg: 3 },\n gap = 'default',\n className,\n ...props\n}: ResponsiveGridProps) {\n // Build grid classes dynamically\n const colClasses = [\n cols.default && `grid-cols-${cols.default}`,\n cols.sm && `sm:grid-cols-${cols.sm}`,\n cols.md && `md:grid-cols-${cols.md}`,\n cols.lg && `lg:grid-cols-${cols.lg}`,\n cols.xl && `xl:grid-cols-${cols.xl}`,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n data-slot='responsive-grid'\n className={cn('grid', gapClasses[gap], colClasses, className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// ============================================================================\n// SwipeableItem\n// ============================================================================\n\n/**\n * Native outer div attributes and touch-swipe action configuration.\n * @remarks Inherited native or primitive props keep their upstream types and behavior; this declaration documents only the wrapper-owned options.\n * @see SwipeableItem\n */\nexport interface SwipeableItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Called at touch end when left displacement exceeds threshold; the wrapper then resets translation.\n * @returns No value; complete the host callback action.\n */\n onSwipeLeft?: () => void;\n /**\n * Called at touch end when right displacement exceeds threshold; the wrapper then resets translation.\n * @returns No value; complete the host callback action.\n */\n onSwipeRight?: () => void;\n /**\n * Background content revealed by a leftward swipe.\n */\n leftAction?: React.ReactNode;\n /**\n * Background content revealed by a rightward swipe.\n */\n rightAction?: React.ReactNode;\n /**\n * Strict activation threshold in CSS pixels; defaults to 50. Translation is capped at ±100, so thresholds >=100 never activate.\n */\n threshold?: number;\n}\n\n/**\n * Reveals side actions during a horizontal touch swipe and notifies the host after a threshold.\n * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling. Wrapper defaults: threshold=50.\n * @returns The rendered SwipeableItem composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. DataList mounts both desktop/mobile representations; CSS switches visibility at md, so custom render callbacks may execute for both. It does not virtualize or add keyboard row activation. keyField must give stable unique stringifiable keys. ResponsiveGrid creates dynamic Tailwind classes: the host CSS must include the requested classes. Touch helpers do not add mouse/keyboard equivalents or persistence. threshold defaults to 50 CSS pixels; displacement is clamped to ±100px and resets after touch end. leftAction appears during a left swipe, rightAction during a right swipe. Callbacks run only when displacement strictly exceeds the threshold.\n * @example\n * ```tsx\n * import type { ComponentProps } from 'react';\n * import { DataList, ResponsiveGrid, SwipeableItem, PullToRefresh } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example({ refresh }: { refresh: () => Promise<void> }) {\n * return (<PullToRefresh onRefresh={async () => { await refresh(); }}><ResponsiveGrid><SwipeableItem onSwipeLeft={() => console.log(\"Left swipe\")}><DataList data={[{ id: \"one\", title: \"Draft\" }]} keyField=\"id\" columns={[{ key: \"title\", header: \"Title\" }]} /></SwipeableItem></ResponsiveGrid></PullToRefresh>);\n * }\n * ```\n */\nfunction SwipeableItem({\n children,\n onSwipeLeft,\n onSwipeRight,\n leftAction,\n rightAction,\n threshold = 50,\n className,\n ...props\n}: SwipeableItemProps) {\n const [translateX, setTranslateX] = React.useState(0);\n const [startX, setStartX] = React.useState(0);\n const [isDragging, setIsDragging] = React.useState(false);\n\n const handleTouchStart = (e: React.TouchEvent) => {\n setStartX(e.touches[0].clientX);\n setIsDragging(true);\n };\n\n const handleTouchMove = (e: React.TouchEvent) => {\n if (!isDragging) return;\n const diff = e.touches[0].clientX - startX;\n const maxSwipe = 100;\n setTranslateX(Math.max(-maxSwipe, Math.min(maxSwipe, diff)));\n };\n\n const handleTouchEnd = () => {\n setIsDragging(false);\n if (translateX > threshold && onSwipeRight) {\n onSwipeRight();\n } else if (translateX < -threshold && onSwipeLeft) {\n onSwipeLeft();\n }\n setTranslateX(0);\n };\n\n return (\n <div\n data-slot='swipeable-item'\n className={cn('relative overflow-hidden', className)}\n {...props}\n >\n {/* Background actions */}\n <div className='absolute inset-0 flex'>\n <div className='flex-1 flex items-center justify-start px-4 bg-green-500 text-white'>\n {rightAction}\n </div>\n <div className='flex-1 flex items-center justify-end px-4 bg-destructive text-destructive-foreground'>\n {leftAction}\n </div>\n </div>\n\n {/* Swipeable content */}\n <div\n className='relative bg-background transition-transform'\n style={{\n transform: `translateX(${translateX}px)`,\n transition: isDragging ? 'none' : 'transform 0.2s',\n }}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n >\n {children}\n </div>\n </div>\n );\n}\n\n// ============================================================================\n// PullToRefresh\n// ============================================================================\n\n/**\n * Native outer div attributes and asynchronous downward-pull refresh configuration.\n * @remarks Inherited native or primitive props keep their upstream types and behavior; this declaration documents only the wrapper-owned options.\n * @see PullToRefresh\n */\nexport interface PullToRefreshProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Called and awaited after an eligible downward pull; the host performs refresh and handles errors. Rejection leaves the local refreshing state set.\n * @returns A promise resolving when host refresh work completes; rejection is not caught by the wrapper.\n */\n onRefresh: () => Promise<void>;\n /**\n * Visual pull distance in CSS pixels required for refresh; defaults to 80. Visual distance is half touch displacement capped at 100; values >100 cannot activate.\n */\n pullThreshold?: number;\n}\n\n/**\n * Tracks downward touch motion and requests an asynchronous refresh after a threshold.\n * @param props - Component attributes and children accepted by the declared native/underlying prop type; className customizes wrapper styling. Wrapper defaults: pullThreshold=80.\n * @returns The rendered PullToRefresh composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. DataList mounts both desktop/mobile representations; CSS switches visibility at md, so custom render callbacks may execute for both. It does not virtualize or add keyboard row activation. keyField must give stable unique stringifiable keys. ResponsiveGrid creates dynamic Tailwind classes: the host CSS must include the requested classes. Touch helpers do not add mouse/keyboard equivalents or persistence. A pull starts only when window.scrollY is zero. Visual distance is half the pointer displacement, capped at 100 CSS pixels; pullThreshold defaults to 80. Refresh is awaited, but there is no concurrency guard or finally cleanup: rejection leaves refreshing/pull state set. Handle errors inside onRefresh when recovery is needed. Native touch handlers supplied in props override the wrapper handlers.\n * @example\n * ```tsx\n * import type { ComponentProps } from 'react';\n * import { DataList, ResponsiveGrid, SwipeableItem, PullToRefresh } from '@alneas/appkit-react/ui';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example({ refresh }: { refresh: () => Promise<void> }) {\n * return (<PullToRefresh onRefresh={async () => { await refresh(); }}><ResponsiveGrid><SwipeableItem onSwipeLeft={() => console.log(\"Left swipe\")}><DataList data={[{ id: \"one\", title: \"Draft\" }]} keyField=\"id\" columns={[{ key: \"title\", header: \"Title\" }]} /></SwipeableItem></ResponsiveGrid></PullToRefresh>);\n * }\n * ```\n */\nfunction PullToRefresh({\n children,\n onRefresh,\n pullThreshold = 80,\n className,\n ...props\n}: PullToRefreshProps) {\n const [isPulling, setIsPulling] = React.useState(false);\n const [isRefreshing, setIsRefreshing] = React.useState(false);\n const [pullDistance, setPullDistance] = React.useState(0);\n const startY = React.useRef(0);\n\n const handleTouchStart = (e: React.TouchEvent) => {\n if (window.scrollY === 0) {\n startY.current = e.touches[0].clientY;\n setIsPulling(true);\n }\n };\n\n const handleTouchMove = (e: React.TouchEvent) => {\n if (!isPulling) return;\n const distance = e.touches[0].clientY - startY.current;\n if (distance > 0) {\n setPullDistance(Math.min(distance * 0.5, 100));\n }\n };\n\n const handleTouchEnd = async () => {\n if (pullDistance >= pullThreshold) {\n setIsRefreshing(true);\n await onRefresh();\n setIsRefreshing(false);\n }\n setIsPulling(false);\n setPullDistance(0);\n };\n\n return (\n <div\n data-slot='pull-to-refresh'\n className={cn('relative', className)}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n {...props}\n >\n {/* Pull indicator */}\n <div\n className='absolute left-1/2 -translate-x-1/2 flex items-center justify-center transition-all'\n style={{\n top: pullDistance - 40,\n opacity: pullDistance / pullThreshold,\n }}\n >\n <div\n className={cn(\n 'w-6 h-6 border-2 border-primary border-t-transparent rounded-full',\n isRefreshing && 'animate-spin',\n )}\n />\n </div>\n\n {/* Content */}\n <div\n style={{\n transform: `translateY(${pullDistance}px)`,\n transition: isPulling ? 'none' : 'transform 0.2s',\n }}\n >\n {children}\n </div>\n </div>\n );\n}\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport { DataList, ResponsiveGrid, SwipeableItem, PullToRefresh };\n"],"mappings":"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"}