@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
@@ -1,12 +1,45 @@
1
1
  import * as React from 'react';
2
+ /**
3
+ * In-memory notification record read by a host renderer.
4
+ *
5
+ * @see useToast for subscription and display; see toast for creation.
6
+ */
2
7
  type ToasterToast = {
8
+ /**
9
+ * Generated decimal string identifier used for updates and dismissal.
10
+ */
3
11
  id: string;
12
+ /**
13
+ * Optional heading content rendered by the host.
14
+ */
4
15
  title?: React.ReactNode;
16
+ /**
17
+ * Optional body content rendered by the host.
18
+ */
5
19
  description?: React.ReactNode;
20
+ /**
21
+ * Optional host-rendered action element.
22
+ */
6
23
  action?: React.ReactNode;
24
+ /**
25
+ * Whether the host renderer should show this notification.
26
+ */
7
27
  open?: boolean;
28
+ /**
29
+ * Optional host open-state callback; toast replaces it with dismissal handling.
30
+ *
31
+ * @param open - New host-rendered visibility.
32
+ *
33
+ * @returns No value.
34
+ */
8
35
  onOpenChange?: (open: boolean) => void;
36
+ /**
37
+ * Presentation intent; default is normal styling, destructive indicates an error.
38
+ */
9
39
  variant?: 'default' | 'destructive';
40
+ /**
41
+ * Requested host display duration in milliseconds; toast defaults to 3000 or 5000 for destructive.
42
+ */
10
43
  duration?: number;
11
44
  };
12
45
  declare const _actionTypes: {
@@ -16,78 +49,214 @@ declare const _actionTypes: {
16
49
  readonly REMOVE_TOAST: "REMOVE_TOAST";
17
50
  };
18
51
  type ActionType = typeof _actionTypes;
52
+ /**
53
+ * Reducer message for adding, updating, closing or removing stored notifications.
54
+ *
55
+ * @see reducer for direct reduction; normal callers use toast/useToast.
56
+ */
19
57
  type Action = {
58
+ /** Insert a notification at the front and cap the list at five. */
20
59
  type: ActionType['ADD_TOAST'];
60
+ /** Complete notification to insert. */
21
61
  toast: ToasterToast;
22
62
  } | {
63
+ /** Merge fields into the matching notification ID. */
23
64
  type: ActionType['UPDATE_TOAST'];
65
+ /** Fields to merge; id selects the existing notification. */
24
66
  toast: Partial<ToasterToast>;
25
67
  } | {
68
+ /** Close matching notifications and queue removal after five seconds. */
26
69
  type: ActionType['DISMISS_TOAST'];
70
+ /** Target ID; omission affects all notifications. */
27
71
  toastId?: ToasterToast['id'];
28
72
  } | {
73
+ /** Remove matching notifications immediately. */
29
74
  type: ActionType['REMOVE_TOAST'];
75
+ /** Target ID; omission affects all notifications. */
30
76
  toastId?: ToasterToast['id'];
31
77
  };
78
+ /**
79
+ * Current module-global notification list exposed by useToast.
80
+ *
81
+ * @see useToast for subscription.
82
+ */
32
83
  interface State {
84
+ /**
85
+ * Newest-first notifications, capped at five when a notification is added.
86
+ */
33
87
  toasts: ToasterToast[];
34
88
  }
35
89
  /**
36
- * トースト状態を操作するためのステート reducer。
37
- * @param state 現在のトースト状態
38
- * @param action 実行するアクション定義
39
- * @returns 更新された新しいトースト状態
90
+ * Reduces notification actions, scheduling delayed removal when notifications are dismissed.
91
+ *
92
+ * @param state - Existing newest-first notification list.
93
+ *
94
+ * @param action - Add/update/dismiss/remove instruction; omitted IDs in dismiss/remove affect all.
95
+ *
96
+ * @returns New list state; unrecognized update IDs leave entries unchanged.
97
+ *
98
+ * @remarks Dismissal closes entries and schedules module-global removal timers for 5000 ms,
99
+ * so this reducer has a timer side effect. Adding truncates to five; duration does not
100
+ * schedule dismissal here. Normal application code should use toast/useToast.
101
+ *
102
+ * @example
103
+ * ```ts
104
+ * import { reducer } from '@alneas/appkit-react/ui/hooks';
105
+ * const state = reducer({ toasts: [] }, { type: 'REMOVE_TOAST' });
106
+ * ```
40
107
  */
41
108
  export declare const reducer: (state: State, action: Action) => State;
109
+ /**
110
+ * Notification creation inputs; IDs are generated by toast.
111
+ *
112
+ * @see toast for creation.
113
+ */
42
114
  type Toast = Omit<ToasterToast, 'id'>;
43
115
  /**
44
- * トースト通知を表示します。
116
+ * Adds an open notification to the module-global store and returns controls for it.
117
+ *
118
+ * @param props - Content, intent and optional duration; ID/open/onOpenChange are managed here.
45
119
  *
46
- * デフォルトの表示時間は、通常時 3000ms、エラー(destructive)時 5000ms です。
120
+ * @returns Generated ID plus dismiss and update controls. Updates preserve the generated ID.
47
121
  *
48
- * @param props - トーストのプロパティ
49
- * @returns トーストの制御オブジェクト
122
+ * @remarks Default duration is 3000 ms, or 5000 ms for destructive. Duration is metadata
123
+ * for the host renderer; this store does not auto-dismiss after duration. Calling dismiss
124
+ * closes the notification and queues removal five seconds later. At most five added
125
+ * notifications are retained. State is shared across hook consumers in this module;
126
+ * mount a renderer consuming useToast, and import Appkit styles for styled UI.
127
+ *
128
+ * @example
129
+ * ```ts
130
+ * import { toast } from '@alneas/appkit-react/ui/hooks';
131
+ * const notice = toast({ title: 'Saved', description: 'The host operation completed.' });
132
+ * notice.dismiss();
133
+ * ```
50
134
  */
51
135
  declare function toast({ duration, ...props }: Toast & {
136
+ /** Display-duration metadata in milliseconds; not an internal auto-dismiss timer. */
52
137
  duration?: number;
53
138
  }): {
139
+ /** Generated notification identifier. */
54
140
  id: string;
141
+ /**
142
+ * Close and queue removal; see toast for usage.
143
+ * @returns No value after dispatching dismissal.
144
+ *
145
+ * @see toast for the canonical control example.
146
+ */
55
147
  dismiss: () => void;
148
+ /**
149
+ * Merge notification fields while preserving id; see toast.
150
+ * @param props - Fields to merge; id is replaced by the original generated ID.
151
+ *
152
+ * @returns No value after dispatching the update.
153
+ *
154
+ * @see toast for the canonical control example.
155
+ */
56
156
  update: (props: ToasterToast) => void;
57
157
  };
58
158
  declare namespace toast {
59
159
  var success: (title: React.ReactNode, options?: Partial<Toast>) => {
160
+ /** Generated notification identifier. */
60
161
  id: string;
162
+ /**
163
+ * Close and queue removal; see toast for usage.
164
+ * @returns No value after dispatching dismissal.
165
+ *
166
+ * @see toast for the canonical control example.
167
+ */
61
168
  dismiss: () => void;
169
+ /**
170
+ * Merge notification fields while preserving id; see toast.
171
+ * @param props - Fields to merge; id is replaced by the original generated ID.
172
+ *
173
+ * @returns No value after dispatching the update.
174
+ *
175
+ * @see toast for the canonical control example.
176
+ */
62
177
  update: (props: ToasterToast) => void;
63
178
  };
64
179
  var error: (title: React.ReactNode, options?: Partial<Toast>) => {
180
+ /** Generated notification identifier. */
65
181
  id: string;
182
+ /**
183
+ * Close and queue removal; see toast for usage.
184
+ * @returns No value after dispatching dismissal.
185
+ *
186
+ * @see toast for the canonical control example.
187
+ */
66
188
  dismiss: () => void;
189
+ /**
190
+ * Merge notification fields while preserving id; see toast.
191
+ * @param props - Fields to merge; id is replaced by the original generated ID.
192
+ *
193
+ * @returns No value after dispatching the update.
194
+ *
195
+ * @see toast for the canonical control example.
196
+ */
67
197
  update: (props: ToasterToast) => void;
68
198
  };
69
199
  var info: (title: React.ReactNode, options?: Partial<Toast>) => {
200
+ /** Generated notification identifier. */
70
201
  id: string;
202
+ /**
203
+ * Close and queue removal; see toast for usage.
204
+ * @returns No value after dispatching dismissal.
205
+ *
206
+ * @see toast for the canonical control example.
207
+ */
71
208
  dismiss: () => void;
209
+ /**
210
+ * Merge notification fields while preserving id; see toast.
211
+ * @param props - Fields to merge; id is replaced by the original generated ID.
212
+ *
213
+ * @returns No value after dispatching the update.
214
+ *
215
+ * @see toast for the canonical control example.
216
+ */
72
217
  update: (props: ToasterToast) => void;
73
218
  };
74
219
  }
75
220
  /**
76
- * トースト通知を表示・管理するためのフック。
221
+ * Subscribes a component to the shared in-memory notification list.
222
+ *
223
+ * @returns Current notifications, the toast creator and dismiss(id?) that closes one or all entries.
224
+ *
225
+ * @remarks The hook renders nothing; the host must render toasts and honor open/duration.
226
+ * Subscription cleanup removes its listener. Module state/timers survive component
227
+ * unmounts, so this store is not isolated per provider or SSR request. No provider is
228
+ * required; import Appkit styles when using Appkit notification UI.
77
229
  *
78
230
  * @example
79
231
  * ```tsx
80
- * const { toast } = useToast();
81
- *
82
- * toast({
83
- * title: "送信完了",
84
- * description: "メッセージを送信しました。",
85
- * });
232
+ * import { useToast } from '@alneas/appkit-react/ui/hooks';
233
+ * export function Notices() {
234
+ * const { toasts, dismiss } = useToast();
235
+ * return <div>{toasts.filter(item => item.open).map(item => <button key={item.id} onClick={() => dismiss(item.id)}>{item.title}</button>)}</div>;
236
+ * }
86
237
  * ```
87
238
  */
88
239
  declare function useToast(): {
240
+ /**
241
+ * Add notifications; see toast for arguments, results and duration behavior.
242
+ * @param props - Notification content, presentation and optional duration metadata.
243
+ *
244
+ * @returns Generated ID and update/dismiss controls.
245
+ *
246
+ * @see toast for the canonical creation example.
247
+ */
89
248
  toast: typeof toast;
249
+ /**
250
+ * Close one or all notifications and queue removal.
251
+ *
252
+ * @param toastId - ID to close; omission closes all current notifications.
253
+ *
254
+ * @returns No value after dispatching dismissal.
255
+ */
90
256
  dismiss: (toastId?: string) => void;
257
+ /**
258
+ * Newest-first notifications, capped at five when a notification is added.
259
+ */
91
260
  toasts: ToasterToast[];
92
261
  };
93
262
  export { useToast, toast };
@@ -1 +1 @@
1
- {"version":3,"file":"use-toast.js","names":["React","React$1","TOAST_LIMIT","TOAST_REMOVE_DELAY","count","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","reducer","action","state","t","toast","listeners","memoryState","props","id","actualDuration","duration","update","dismiss","open","options","useToast","setState","index"],"sources":["../../../../src/ui/lib/hooks/use-toast.ts"],"sourcesContent":["import * as React from 'react';\n\nconst TOAST_LIMIT = 5;\nconst TOAST_REMOVE_DELAY = 5000;\n\ntype ToasterToast = {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n variant?: 'default' | 'destructive';\n duration?: number;\n};\n\nconst _actionTypes = {\n ADD_TOAST: 'ADD_TOAST',\n UPDATE_TOAST: 'UPDATE_TOAST',\n DISMISS_TOAST: 'DISMISS_TOAST',\n REMOVE_TOAST: 'REMOVE_TOAST',\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof _actionTypes;\n\ntype Action =\n | {\n type: ActionType['ADD_TOAST'];\n toast: ToasterToast;\n }\n | {\n type: ActionType['UPDATE_TOAST'];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType['DISMISS_TOAST'];\n toastId?: ToasterToast['id'];\n }\n | {\n type: ActionType['REMOVE_TOAST'];\n toastId?: ToasterToast['id'];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: 'REMOVE_TOAST',\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\n/**\n * トースト状態を操作するためのステート reducer。\n * @param state 現在のトースト状態\n * @param action 実行するアクション定義\n * @returns 更新された新しいトースト状態\n */\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case 'ADD_TOAST':\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case 'UPDATE_TOAST':\n return {\n ...state,\n toasts: state.toasts.map((t) => (t.id === action.toast.id ? { ...t, ...action.toast } : t)),\n };\n\n case 'DISMISS_TOAST': {\n const { toastId } = action;\n\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case 'REMOVE_TOAST':\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, 'id'>;\n\n/**\n * トースト通知を表示します。\n *\n * デフォルトの表示時間は、通常時 3000ms、エラー(destructive)時 5000ms です。\n *\n * @param props - トーストのプロパティ\n * @returns トーストの制御オブジェクト\n */\nfunction toast({ duration, ...props }: Toast & { duration?: number }) {\n const id = genId();\n\n // デフォルトの表示時間: エラーは5秒、それ以外は3秒\n const actualDuration = duration ?? (props.variant === 'destructive' ? 5000 : 3000);\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: 'UPDATE_TOAST',\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id });\n\n dispatch({\n type: 'ADD_TOAST',\n toast: {\n ...props,\n id,\n duration: actualDuration,\n open: true,\n onOpenChange: (open: boolean) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\n/**\n * 成功通知を表示します(3000ms)。\n */\ntoast.success = (title: React.ReactNode, options?: Partial<Toast>) =>\n toast({ title, ...options, variant: 'default' });\n\n/**\n * エラー通知を表示します(5000ms)。\n */\ntoast.error = (title: React.ReactNode, options?: Partial<Toast>) =>\n toast({ title, ...options, variant: 'destructive' });\n\n/**\n * 情報通知を表示します(3000ms)。\n */\ntoast.info = (title: React.ReactNode, options?: Partial<Toast>) =>\n toast({ title, ...options, variant: 'default' });\n\n/**\n * トースト通知を表示・管理するためのフック。\n *\n * @example\n * ```tsx\n * const { toast } = useToast();\n *\n * toast({\n * title: \"送信完了\",\n * description: \"メッセージを送信しました。\",\n * });\n * ```\n */\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: 'DISMISS_TOAST', toastId }),\n };\n}\n\nexport { useToast, toast };\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-toast.js","names":["React","React$1","TOAST_LIMIT","TOAST_REMOVE_DELAY","count","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","reducer","action","state","t","toast","listeners","memoryState","props","id","actualDuration","duration","update","dismiss","open","options","useToast","setState","index"],"sources":["../../../../src/ui/lib/hooks/use-toast.ts"],"sourcesContent":["import * as React from 'react';\n\nconst TOAST_LIMIT = 5;\nconst TOAST_REMOVE_DELAY = 5000;\n\n/**\n * In-memory notification record read by a host renderer.\n *\n * @see useToast for subscription and display; see toast for creation.\n */\ntype ToasterToast = {\n /**\n * Generated decimal string identifier used for updates and dismissal.\n */\n id: string;\n /**\n * Optional heading content rendered by the host.\n */\n title?: React.ReactNode;\n /**\n * Optional body content rendered by the host.\n */\n description?: React.ReactNode;\n /**\n * Optional host-rendered action element.\n */\n action?: React.ReactNode;\n /**\n * Whether the host renderer should show this notification.\n */\n open?: boolean;\n /**\n * Optional host open-state callback; toast replaces it with dismissal handling.\n *\n * @param open - New host-rendered visibility.\n *\n * @returns No value.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Presentation intent; default is normal styling, destructive indicates an error.\n */\n variant?: 'default' | 'destructive';\n /**\n * Requested host display duration in milliseconds; toast defaults to 3000 or 5000 for destructive.\n */\n duration?: number;\n};\n\nconst _actionTypes = {\n ADD_TOAST: 'ADD_TOAST',\n UPDATE_TOAST: 'UPDATE_TOAST',\n DISMISS_TOAST: 'DISMISS_TOAST',\n REMOVE_TOAST: 'REMOVE_TOAST',\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof _actionTypes;\n\n/**\n * Reducer message for adding, updating, closing or removing stored notifications.\n *\n * @see reducer for direct reduction; normal callers use toast/useToast.\n */\ntype Action =\n | {\n /** Insert a notification at the front and cap the list at five. */\n type: ActionType['ADD_TOAST'];\n /** Complete notification to insert. */\n toast: ToasterToast;\n }\n | {\n /** Merge fields into the matching notification ID. */\n type: ActionType['UPDATE_TOAST'];\n /** Fields to merge; id selects the existing notification. */\n toast: Partial<ToasterToast>;\n }\n | {\n /** Close matching notifications and queue removal after five seconds. */\n type: ActionType['DISMISS_TOAST'];\n /** Target ID; omission affects all notifications. */\n toastId?: ToasterToast['id'];\n }\n | {\n /** Remove matching notifications immediately. */\n type: ActionType['REMOVE_TOAST'];\n /** Target ID; omission affects all notifications. */\n toastId?: ToasterToast['id'];\n };\n\n/**\n * Current module-global notification list exposed by useToast.\n *\n * @see useToast for subscription.\n */\ninterface State {\n /**\n * Newest-first notifications, capped at five when a notification is added.\n */\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: 'REMOVE_TOAST',\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\n/**\n * Reduces notification actions, scheduling delayed removal when notifications are dismissed.\n *\n * @param state - Existing newest-first notification list.\n *\n * @param action - Add/update/dismiss/remove instruction; omitted IDs in dismiss/remove affect all.\n *\n * @returns New list state; unrecognized update IDs leave entries unchanged.\n *\n * @remarks Dismissal closes entries and schedules module-global removal timers for 5000 ms,\n * so this reducer has a timer side effect. Adding truncates to five; duration does not\n * schedule dismissal here. Normal application code should use toast/useToast.\n *\n * @example\n * ```ts\n * import { reducer } from '@alneas/appkit-react/ui/hooks';\n * const state = reducer({ toasts: [] }, { type: 'REMOVE_TOAST' });\n * ```\n */\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case 'ADD_TOAST':\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case 'UPDATE_TOAST':\n return {\n ...state,\n toasts: state.toasts.map((t) => (t.id === action.toast.id ? { ...t, ...action.toast } : t)),\n };\n\n case 'DISMISS_TOAST': {\n const { toastId } = action;\n\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case 'REMOVE_TOAST':\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\n/**\n * Notification creation inputs; IDs are generated by toast.\n *\n * @see toast for creation.\n */\ntype Toast = Omit<ToasterToast, 'id'>;\n\n/**\n * Adds an open notification to the module-global store and returns controls for it.\n *\n * @param props - Content, intent and optional duration; ID/open/onOpenChange are managed here.\n *\n * @returns Generated ID plus dismiss and update controls. Updates preserve the generated ID.\n *\n * @remarks Default duration is 3000 ms, or 5000 ms for destructive. Duration is metadata\n * for the host renderer; this store does not auto-dismiss after duration. Calling dismiss\n * closes the notification and queues removal five seconds later. At most five added\n * notifications are retained. State is shared across hook consumers in this module;\n * mount a renderer consuming useToast, and import Appkit styles for styled UI.\n *\n * @example\n * ```ts\n * import { toast } from '@alneas/appkit-react/ui/hooks';\n * const notice = toast({ title: 'Saved', description: 'The host operation completed.' });\n * notice.dismiss();\n * ```\n */\nfunction toast({ duration, ...props }: Toast & {\n /** Display-duration metadata in milliseconds; not an internal auto-dismiss timer. */\n duration?: number;\n}) {\n const id = genId();\n\n // デフォルトの表示時間: エラーは5秒、それ以外は3秒\n const actualDuration = duration ?? (props.variant === 'destructive' ? 5000 : 3000);\n\n /**\n * Merges fields into this notification while preserving its generated ID.\n *\n * @param props - Notification fields; the supplied id is overwritten by this notification ID.\n *\n * @returns No value after the store update.\n *\n * @see toast for the creation/control example.\n *\n * @example\n * ```ts\n * import { toast } from '@alneas/appkit-react/ui/hooks';\n * const notice = toast({ title: 'Working' });\n * notice.update({ id: notice.id, title: 'Complete' });\n * notice.dismiss();\n * ```\n */\n const update = (props: ToasterToast) =>\n dispatch({\n type: 'UPDATE_TOAST',\n toast: { ...props, id },\n });\n /**\n * Closes this notification and queues its removal after five seconds.\n *\n * @returns No value after dispatching dismissal.\n *\n * @see toast for a complete example.\n *\n * @example\n * ```ts\n * import { toast } from '@alneas/appkit-react/ui/hooks';\n * const notice = toast({ title: 'Status' });\n * notice.dismiss();\n * ```\n */\n const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id });\n\n dispatch({\n type: 'ADD_TOAST',\n toast: {\n ...props,\n id,\n duration: actualDuration,\n open: true,\n onOpenChange: (open: boolean) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n /** Generated notification identifier. */\n id: id,\n /**\n * Close and queue removal; see toast for usage.\n * @returns No value after dispatching dismissal.\n *\n * @see toast for the canonical control example.\n */\n dismiss,\n /**\n * Merge notification fields while preserving id; see toast.\n * @param props - Fields to merge; id is replaced by the original generated ID.\n *\n * @returns No value after dispatching the update.\n *\n * @see toast for the canonical control example.\n */\n update,\n };\n}\n\n/**\n * Adds a normal notification with a title and optional content overrides.\n *\n * @param title - Heading content; options.title can override this value.\n *\n * @param options - Other notification inputs; variant is forced to default.\n *\n * @returns Generated ID plus update/dismiss controls, as returned by toast.\n *\n * @remarks Duration defaults to 3000 ms as host-renderer metadata, and can be overridden.\n *\n * @example\n * ```ts\n * import { toast } from '@alneas/appkit-react/ui/hooks';\n * const notice = toast.success('Operation status');\n * notice.dismiss();\n * ```\n */\ntoast.success = (title: React.ReactNode, options?: Partial<Toast>) =>\n toast({ title, ...options, variant: 'default' });\n\n/**\n * Adds a destructive notification with a title and optional content overrides.\n *\n * @param title - Heading content; options.title can override this value.\n *\n * @param options - Other notification inputs; variant is forced to destructive.\n *\n * @returns Generated ID plus update/dismiss controls, as returned by toast.\n *\n * @remarks Duration defaults to 5000 ms as host-renderer metadata, and can be overridden.\n *\n * @example\n * ```ts\n * import { toast } from '@alneas/appkit-react/ui/hooks';\n * const notice = toast.error('Operation status');\n * notice.dismiss();\n * ```\n */\ntoast.error = (title: React.ReactNode, options?: Partial<Toast>) =>\n toast({ title, ...options, variant: 'destructive' });\n\n/**\n * Adds a normal notification with a title and optional content overrides.\n *\n * @param title - Heading content; options.title can override this value.\n *\n * @param options - Other notification inputs; variant is forced to default.\n *\n * @returns Generated ID plus update/dismiss controls, as returned by toast.\n *\n * @remarks Duration defaults to 3000 ms as host-renderer metadata, and can be overridden.\n *\n * @example\n * ```ts\n * import { toast } from '@alneas/appkit-react/ui/hooks';\n * const notice = toast.info('Operation status');\n * notice.dismiss();\n * ```\n */\ntoast.info = (title: React.ReactNode, options?: Partial<Toast>) =>\n toast({ title, ...options, variant: 'default' });\n\n/**\n * Subscribes a component to the shared in-memory notification list.\n *\n * @returns Current notifications, the toast creator and dismiss(id?) that closes one or all entries.\n *\n * @remarks The hook renders nothing; the host must render toasts and honor open/duration.\n * Subscription cleanup removes its listener. Module state/timers survive component\n * unmounts, so this store is not isolated per provider or SSR request. No provider is\n * required; import Appkit styles when using Appkit notification UI.\n *\n * @example\n * ```tsx\n * import { useToast } from '@alneas/appkit-react/ui/hooks';\n * export function Notices() {\n * const { toasts, dismiss } = useToast();\n * return <div>{toasts.filter(item => item.open).map(item => <button key={item.id} onClick={() => dismiss(item.id)}>{item.title}</button>)}</div>;\n * }\n * ```\n */\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n /**\n * Add notifications; see toast for arguments, results and duration behavior.\n * @param props - Notification content, presentation and optional duration metadata.\n *\n * @returns Generated ID and update/dismiss controls.\n *\n * @see toast for the canonical creation example.\n */\n toast,\n /**\n * Close one or all notifications and queue removal.\n *\n * @param toastId - ID to close; omission closes all current notifications.\n *\n * @returns No value after dispatching dismissal.\n */\n dismiss: (toastId?: string) => dispatch({ type: 'DISMISS_TOAST', toastId }),\n };\n}\n\nexport { useToast, toast };\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ime-utils.cjs","names":["toHalfWidth","str","s","normalizeNumericInput","val","getNextNumericValue","base","current","result","direction","step","precision"],"sources":["../../../src/ui/lib/ime-utils.ts"],"sourcesContent":["/**\n * 全角文字(数字、記号)を半角に変換します。\n * @param str - 変換対象の文字列\n * @returns 半角変換後の文字列\n */\nexport function toHalfWidth(str: string): string {\n return str\n .replace(/[!-~]/g, (s) => {\n return String.fromCharCode(s.charCodeAt(0) - 0xfee0);\n })\n .replace(/\\u3000/g, ' ');\n}\n\n/**\n * 数値入力フィールド用に、全角を半角に変換し、不正な文字を除去します。\n * 0-9, '.', '-' 以外の文字を除去します。\n * @param val - 正規化対象の文字列\n * @returns 正規化後の文字列\n */\nexport function normalizeNumericInput(val: string): string {\n if (!val) return '';\n const hw = toHalfWidth(val);\n return hw.replace(/[^0-9.-]/g, '');\n}\n\n/**\n * 上下キーによる数値増減の計算を行います。\n * 浮動小数点の計算誤差を考慮した結果を返します。\n * @param current - 現在の数値(文字列または数値)\n * @param direction - 増減の方向 ('up' | 'down')\n * @param step - 増減のステップ量\n * @returns 次の数値\n */\nexport function getNextNumericValue(\n current: string | number | null | undefined,\n direction: 'up' | 'down',\n step: number = 1,\n): number {\n const base = typeof current === 'number' ? current : parseFloat(String(current || '0'));\n const validBase = isNaN(base) ? 0 : base;\n const delta = direction === 'up' ? step : -step;\n\n const result = validBase + delta;\n const precision = (String(step).split('.')[1] || '').length;\n return parseFloat(result.toFixed(precision));\n}\n"],"mappings":"A,gFAKA,SAAgBA,EAAY,EAAqB,CAC/C,OAAOC,EACJ,QAAQ,SAAW,GACX,OAAO,aAAaC,EAAE,WAAW,CAAC,EAAI,KAAM,CACpD,CAAC,CACD,QAAQ,UAAW,GAAG,CAC3B,CAQA,SAAgBC,EAAsB,EAAqB,CAGzD,OAFKC,EACMJ,EAAYI,CAChB,CAAA,CAAG,QAAQ,YAAa,EAAE,EAFhB,EAGnB,CAUA,SAAgBC,EACd,EACA,EACA,EAAe,EACP,CACR,IAAMC,EAAO,OAAOC,GAAY,SAAWA,EAAU,WAAW,OAAOA,GAAW,GAAG,CAAC,EAIhFC,GAHY,MAAMF,CAAI,EAAI,EAAIA,IACtBG,IAAc,KAAOC,EAAO,CAACA,GAGrCC,GAAa,OAAOD,CAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAM,GAAA,CAAI,OACrD,OAAO,WAAWF,EAAO,QAAQG,CAAS,CAAC,CAC7C,C"}
1
+ {"version":3,"file":"ime-utils.cjs","names":["toHalfWidth","str","s","normalizeNumericInput","val","getNextNumericValue","base","current","result","direction","step","precision"],"sources":["../../../src/ui/lib/ime-utils.ts"],"sourcesContent":["/**\n * Converts full-width ASCII punctuation/letters/digits and ideographic spaces to ASCII.\n *\n * @param str - Input text; other Unicode characters are retained.\n *\n * @returns Converted text without mutating the input.\n *\n * @example\n * ```ts\n * import { toHalfWidth } from '@alneas/appkit-react/ui/utils';\n * const text = toHalfWidth('123 A'); // '123 A'\n * ```\n */\nexport function toHalfWidth(str: string): string {\n return str\n .replace(/[!-~]/g, (s) => {\n return String.fromCharCode(s.charCodeAt(0) - 0xfee0);\n })\n .replace(/\\u3000/g, ' ');\n}\n\n/**\n * Converts full-width ASCII and removes characters other than digits, dots and hyphens.\n *\n * @param val - Raw numeric input text; empty input remains empty.\n *\n * @returns Filtered text; repeated signs/dots are retained, so this is not numeric validation.\n *\n * @example\n * ```ts\n * import { normalizeNumericInput } from '@alneas/appkit-react/ui/utils';\n * const text = normalizeNumericInput('¥12.3'); // '12.3'\n * ```\n */\nexport function normalizeNumericInput(val: string): string {\n if (!val) return '';\n const hw = toHalfWidth(val);\n return hw.replace(/[^0-9.-]/g, '');\n}\n\n/**\n * Adds or subtracts a step and rounds using the step's decimal spelling.\n *\n * @param current - Number or parseFloat-compatible text; missing, empty or NaN input uses zero.\n *\n * @param direction - Up adds step; down subtracts it.\n *\n * @param step - Delta magnitude, default 1; decimal precision is derived from String(step).\n *\n * @returns Next number rounded with toFixed; no min/max clamp is applied.\n *\n * @remarks Exponential step spellings have no decimal digits in this calculation; this\n * helper is not arbitrary-precision arithmetic.\n *\n * @example\n * ```ts\n * import { getNextNumericValue } from '@alneas/appkit-react/ui/utils';\n * const next = getNextNumericValue('1.2', 'up', 0.1); // 1.3\n * ```\n */\nexport function getNextNumericValue(\n current: string | number | null | undefined,\n direction: 'up' | 'down',\n step: number = 1,\n): number {\n const base = typeof current === 'number' ? current : parseFloat(String(current || '0'));\n const validBase = isNaN(base) ? 0 : base;\n const delta = direction === 'up' ? step : -step;\n\n const result = validBase + delta;\n const precision = (String(step).split('.')[1] || '').length;\n return parseFloat(result.toFixed(precision));\n}\n"],"mappings":"A,gFAaA,SAAgBA,EAAY,EAAqB,CAC/C,OAAOC,EACJ,QAAQ,SAAW,GACX,OAAO,aAAaC,EAAE,WAAW,CAAC,EAAI,KAAM,CACpD,CAAC,CACD,QAAQ,UAAW,GAAG,CAC3B,CAeA,SAAgBC,EAAsB,EAAqB,CAGzD,OAFKC,EACMJ,EAAYI,CAChB,CAAA,CAAG,QAAQ,YAAa,EAAE,EAFhB,EAGnB,CAsBA,SAAgBC,EACd,EACA,EACA,EAAe,EACP,CACR,IAAMC,EAAO,OAAOC,GAAY,SAAWA,EAAU,WAAW,OAAOA,GAAW,GAAG,CAAC,EAIhFC,GAHY,MAAMF,CAAI,EAAI,EAAIA,IACtBG,IAAc,KAAOC,EAAO,CAACA,GAGrCC,GAAa,OAAOD,CAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAM,GAAA,CAAI,OACrD,OAAO,WAAWF,EAAO,QAAQG,CAAS,CAAC,CAC7C,C"}
@@ -1,22 +1,49 @@
1
1
  /**
2
- * 全角文字(数字、記号)を半角に変換します。
3
- * @param str - 変換対象の文字列
4
- * @returns 半角変換後の文字列
2
+ * Converts full-width ASCII punctuation/letters/digits and ideographic spaces to ASCII.
3
+ *
4
+ * @param str - Input text; other Unicode characters are retained.
5
+ *
6
+ * @returns Converted text without mutating the input.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { toHalfWidth } from '@alneas/appkit-react/ui/utils';
11
+ * const text = toHalfWidth('123 A'); // '123 A'
12
+ * ```
5
13
  */
6
14
  export declare function toHalfWidth(str: string): string;
7
15
  /**
8
- * 数値入力フィールド用に、全角を半角に変換し、不正な文字を除去します。
9
- * 0-9, '.', '-' 以外の文字を除去します。
10
- * @param val - 正規化対象の文字列
11
- * @returns 正規化後の文字列
16
+ * Converts full-width ASCII and removes characters other than digits, dots and hyphens.
17
+ *
18
+ * @param val - Raw numeric input text; empty input remains empty.
19
+ *
20
+ * @returns Filtered text; repeated signs/dots are retained, so this is not numeric validation.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * import { normalizeNumericInput } from '@alneas/appkit-react/ui/utils';
25
+ * const text = normalizeNumericInput('¥12.3'); // '12.3'
26
+ * ```
12
27
  */
13
28
  export declare function normalizeNumericInput(val: string): string;
14
29
  /**
15
- * 上下キーによる数値増減の計算を行います。
16
- * 浮動小数点の計算誤差を考慮した結果を返します。
17
- * @param current - 現在の数値(文字列または数値)
18
- * @param direction - 増減の方向 ('up' | 'down')
19
- * @param step - 増減のステップ量
20
- * @returns 次の数値
30
+ * Adds or subtracts a step and rounds using the step's decimal spelling.
31
+ *
32
+ * @param current - Number or parseFloat-compatible text; missing, empty or NaN input uses zero.
33
+ *
34
+ * @param direction - Up adds step; down subtracts it.
35
+ *
36
+ * @param step - Delta magnitude, default 1; decimal precision is derived from String(step).
37
+ *
38
+ * @returns Next number rounded with toFixed; no min/max clamp is applied.
39
+ *
40
+ * @remarks Exponential step spellings have no decimal digits in this calculation; this
41
+ * helper is not arbitrary-precision arithmetic.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * import { getNextNumericValue } from '@alneas/appkit-react/ui/utils';
46
+ * const next = getNextNumericValue('1.2', 'up', 0.1); // 1.3
47
+ * ```
21
48
  */
22
49
  export declare function getNextNumericValue(current: string | number | null | undefined, direction: 'up' | 'down', step?: number): number;
@@ -1,22 +1,49 @@
1
1
  /**
2
- * 全角文字(数字、記号)を半角に変換します。
3
- * @param str - 変換対象の文字列
4
- * @returns 半角変換後の文字列
2
+ * Converts full-width ASCII punctuation/letters/digits and ideographic spaces to ASCII.
3
+ *
4
+ * @param str - Input text; other Unicode characters are retained.
5
+ *
6
+ * @returns Converted text without mutating the input.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { toHalfWidth } from '@alneas/appkit-react/ui/utils';
11
+ * const text = toHalfWidth('123 A'); // '123 A'
12
+ * ```
5
13
  */
6
14
  export declare function toHalfWidth(str: string): string;
7
15
  /**
8
- * 数値入力フィールド用に、全角を半角に変換し、不正な文字を除去します。
9
- * 0-9, '.', '-' 以外の文字を除去します。
10
- * @param val - 正規化対象の文字列
11
- * @returns 正規化後の文字列
16
+ * Converts full-width ASCII and removes characters other than digits, dots and hyphens.
17
+ *
18
+ * @param val - Raw numeric input text; empty input remains empty.
19
+ *
20
+ * @returns Filtered text; repeated signs/dots are retained, so this is not numeric validation.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * import { normalizeNumericInput } from '@alneas/appkit-react/ui/utils';
25
+ * const text = normalizeNumericInput('¥12.3'); // '12.3'
26
+ * ```
12
27
  */
13
28
  export declare function normalizeNumericInput(val: string): string;
14
29
  /**
15
- * 上下キーによる数値増減の計算を行います。
16
- * 浮動小数点の計算誤差を考慮した結果を返します。
17
- * @param current - 現在の数値(文字列または数値)
18
- * @param direction - 増減の方向 ('up' | 'down')
19
- * @param step - 増減のステップ量
20
- * @returns 次の数値
30
+ * Adds or subtracts a step and rounds using the step's decimal spelling.
31
+ *
32
+ * @param current - Number or parseFloat-compatible text; missing, empty or NaN input uses zero.
33
+ *
34
+ * @param direction - Up adds step; down subtracts it.
35
+ *
36
+ * @param step - Delta magnitude, default 1; decimal precision is derived from String(step).
37
+ *
38
+ * @returns Next number rounded with toFixed; no min/max clamp is applied.
39
+ *
40
+ * @remarks Exponential step spellings have no decimal digits in this calculation; this
41
+ * helper is not arbitrary-precision arithmetic.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * import { getNextNumericValue } from '@alneas/appkit-react/ui/utils';
46
+ * const next = getNextNumericValue('1.2', 'up', 0.1); // 1.3
47
+ * ```
21
48
  */
22
49
  export declare function getNextNumericValue(current: string | number | null | undefined, direction: 'up' | 'down', step?: number): number;
@@ -1 +1 @@
1
- {"version":3,"file":"ime-utils.js","names":["toHalfWidth","str","s","normalizeNumericInput","val","getNextNumericValue","base","current","result","direction","step","precision"],"sources":["../../../src/ui/lib/ime-utils.ts"],"sourcesContent":["/**\n * 全角文字(数字、記号)を半角に変換します。\n * @param str - 変換対象の文字列\n * @returns 半角変換後の文字列\n */\nexport function toHalfWidth(str: string): string {\n return str\n .replace(/[!-~]/g, (s) => {\n return String.fromCharCode(s.charCodeAt(0) - 0xfee0);\n })\n .replace(/\\u3000/g, ' ');\n}\n\n/**\n * 数値入力フィールド用に、全角を半角に変換し、不正な文字を除去します。\n * 0-9, '.', '-' 以外の文字を除去します。\n * @param val - 正規化対象の文字列\n * @returns 正規化後の文字列\n */\nexport function normalizeNumericInput(val: string): string {\n if (!val) return '';\n const hw = toHalfWidth(val);\n return hw.replace(/[^0-9.-]/g, '');\n}\n\n/**\n * 上下キーによる数値増減の計算を行います。\n * 浮動小数点の計算誤差を考慮した結果を返します。\n * @param current - 現在の数値(文字列または数値)\n * @param direction - 増減の方向 ('up' | 'down')\n * @param step - 増減のステップ量\n * @returns 次の数値\n */\nexport function getNextNumericValue(\n current: string | number | null | undefined,\n direction: 'up' | 'down',\n step: number = 1,\n): number {\n const base = typeof current === 'number' ? current : parseFloat(String(current || '0'));\n const validBase = isNaN(base) ? 0 : base;\n const delta = direction === 'up' ? step : -step;\n\n const result = validBase + delta;\n const precision = (String(step).split('.')[1] || '').length;\n return parseFloat(result.toFixed(precision));\n}\n"],"mappings":";;AAKA,SAAgBA,EAAY,GAAqB;CAC/C,OAAOC,EACJ,QAAQ,WAAW,MACX,OAAO,aAAaC,EAAE,WAAW,CAAC,IAAI,KAAM,CACpD,CAAC,CACD,QAAQ,WAAW,GAAG;AAC3B;AAQA,SAAgBC,EAAsB,GAAqB;CAGzD,OAFKC,IACMJ,EAAYI,CAChB,CAAA,CAAG,QAAQ,aAAa,EAAE,IAFhB;AAGnB;AAUA,SAAgBC,EACd,GACA,GACA,IAAe,GACP;CACR,IAAMC,IAAO,OAAOC,KAAY,WAAWA,IAAU,WAAW,OAAOA,KAAW,GAAG,CAAC,GAIhFC,KAHY,MAAMF,CAAI,IAAI,IAAIA,MACtBG,MAAc,OAAOC,IAAO,CAACA,IAGrCC,KAAa,OAAOD,CAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAA,CAAI;CACrD,OAAO,WAAWF,EAAO,QAAQG,CAAS,CAAC;AAC7C"}
1
+ {"version":3,"file":"ime-utils.js","names":["toHalfWidth","str","s","normalizeNumericInput","val","getNextNumericValue","base","current","result","direction","step","precision"],"sources":["../../../src/ui/lib/ime-utils.ts"],"sourcesContent":["/**\n * Converts full-width ASCII punctuation/letters/digits and ideographic spaces to ASCII.\n *\n * @param str - Input text; other Unicode characters are retained.\n *\n * @returns Converted text without mutating the input.\n *\n * @example\n * ```ts\n * import { toHalfWidth } from '@alneas/appkit-react/ui/utils';\n * const text = toHalfWidth('123 A'); // '123 A'\n * ```\n */\nexport function toHalfWidth(str: string): string {\n return str\n .replace(/[!-~]/g, (s) => {\n return String.fromCharCode(s.charCodeAt(0) - 0xfee0);\n })\n .replace(/\\u3000/g, ' ');\n}\n\n/**\n * Converts full-width ASCII and removes characters other than digits, dots and hyphens.\n *\n * @param val - Raw numeric input text; empty input remains empty.\n *\n * @returns Filtered text; repeated signs/dots are retained, so this is not numeric validation.\n *\n * @example\n * ```ts\n * import { normalizeNumericInput } from '@alneas/appkit-react/ui/utils';\n * const text = normalizeNumericInput('¥12.3'); // '12.3'\n * ```\n */\nexport function normalizeNumericInput(val: string): string {\n if (!val) return '';\n const hw = toHalfWidth(val);\n return hw.replace(/[^0-9.-]/g, '');\n}\n\n/**\n * Adds or subtracts a step and rounds using the step's decimal spelling.\n *\n * @param current - Number or parseFloat-compatible text; missing, empty or NaN input uses zero.\n *\n * @param direction - Up adds step; down subtracts it.\n *\n * @param step - Delta magnitude, default 1; decimal precision is derived from String(step).\n *\n * @returns Next number rounded with toFixed; no min/max clamp is applied.\n *\n * @remarks Exponential step spellings have no decimal digits in this calculation; this\n * helper is not arbitrary-precision arithmetic.\n *\n * @example\n * ```ts\n * import { getNextNumericValue } from '@alneas/appkit-react/ui/utils';\n * const next = getNextNumericValue('1.2', 'up', 0.1); // 1.3\n * ```\n */\nexport function getNextNumericValue(\n current: string | number | null | undefined,\n direction: 'up' | 'down',\n step: number = 1,\n): number {\n const base = typeof current === 'number' ? current : parseFloat(String(current || '0'));\n const validBase = isNaN(base) ? 0 : base;\n const delta = direction === 'up' ? step : -step;\n\n const result = validBase + delta;\n const precision = (String(step).split('.')[1] || '').length;\n return parseFloat(result.toFixed(precision));\n}\n"],"mappings":";;AAaA,SAAgBA,EAAY,GAAqB;CAC/C,OAAOC,EACJ,QAAQ,WAAW,MACX,OAAO,aAAaC,EAAE,WAAW,CAAC,IAAI,KAAM,CACpD,CAAC,CACD,QAAQ,WAAW,GAAG;AAC3B;AAeA,SAAgBC,EAAsB,GAAqB;CAGzD,OAFKC,IACMJ,EAAYI,CAChB,CAAA,CAAG,QAAQ,aAAa,EAAE,IAFhB;AAGnB;AAsBA,SAAgBC,EACd,GACA,GACA,IAAe,GACP;CACR,IAAMC,IAAO,OAAOC,KAAY,WAAWA,IAAU,WAAW,OAAOA,KAAW,GAAG,CAAC,GAIhFC,KAHY,MAAMF,CAAI,IAAI,IAAIA,MACtBG,MAAc,OAAOC,IAAO,CAACA,IAGrCC,KAAa,OAAOD,CAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAA,CAAI;CACrD,OAAO,WAAWF,EAAO,QAAQG,CAAS,CAAC;AAC7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs","names":["twMerge","clsx","tailwind_merge","cn","inputs"],"sources":["../../../src/ui/lib/utils.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Tailwind CSS のクラス名を安全に結合し、競合を解決します。\n * clsx で条件付きクラスを処理し、tailwind-merge で重複するスタイルを上書きします。\n *\n * @param inputs - 結合するクラス名の配列(文字列、オブジェクト、ブール値など)\n * @returns 最適化されたクラス名文字列\n *\n * @example\n * ```typescript\n * cn('px-2 py-1', isPrimary && 'bg-blue-500', className)\n * ```\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":"A,kIAeA,SAAgBG,EAAG,GAAGC,EAAsB,CAC1C,OAAA,EAAOJ,EAAAA,QAAAA,EAAAA,EAAQC,EAAA,KAAA,CAAKG,CAAM,CAAC,CAC7B,C"}
1
+ {"version":3,"file":"utils.cjs","names":["twMerge","clsx","tailwind_merge","cn","inputs"],"sources":["../../../src/ui/lib/utils.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Combines conditional class values with clsx and resolves Tailwind conflicts with tailwind-merge.\n *\n * @param inputs - Class strings, arrays or conditional objects accepted by clsx.\n *\n * @returns A merged class string; later conflicting Tailwind utilities generally win.\n *\n * @remarks Pure formatting helper; no React provider or stylesheet is required to call it.\n *\n * @example\n * ```ts\n * import { cn } from '@alneas/appkit-react/ui/utils';\n * const className = cn('px-2 py-1', { 'bg-blue-500': true }, 'px-4');\n * ```\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":"A,kIAkBA,SAAgBG,EAAG,GAAGC,EAAsB,CAC1C,OAAA,EAAOJ,EAAAA,QAAAA,EAAAA,EAAQC,EAAA,KAAA,CAAKG,CAAM,CAAC,CAC7B,C"}
@@ -1,14 +1,17 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  /**
3
- * Tailwind CSS のクラス名を安全に結合し、競合を解決します。
4
- * clsx で条件付きクラスを処理し、tailwind-merge で重複するスタイルを上書きします。
3
+ * Combines conditional class values with clsx and resolves Tailwind conflicts with tailwind-merge.
5
4
  *
6
- * @param inputs - 結合するクラス名の配列(文字列、オブジェクト、ブール値など)
7
- * @returns 最適化されたクラス名文字列
5
+ * @param inputs - Class strings, arrays or conditional objects accepted by clsx.
6
+ *
7
+ * @returns A merged class string; later conflicting Tailwind utilities generally win.
8
+ *
9
+ * @remarks Pure formatting helper; no React provider or stylesheet is required to call it.
8
10
  *
9
11
  * @example
10
- * ```typescript
11
- * cn('px-2 py-1', isPrimary && 'bg-blue-500', className)
12
+ * ```ts
13
+ * import { cn } from '@alneas/appkit-react/ui/utils';
14
+ * const className = cn('px-2 py-1', { 'bg-blue-500': true }, 'px-4');
12
15
  * ```
13
16
  */
14
17
  export declare function cn(...inputs: ClassValue[]): string;
@@ -1,14 +1,17 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  /**
3
- * Tailwind CSS のクラス名を安全に結合し、競合を解決します。
4
- * clsx で条件付きクラスを処理し、tailwind-merge で重複するスタイルを上書きします。
3
+ * Combines conditional class values with clsx and resolves Tailwind conflicts with tailwind-merge.
5
4
  *
6
- * @param inputs - 結合するクラス名の配列(文字列、オブジェクト、ブール値など)
7
- * @returns 最適化されたクラス名文字列
5
+ * @param inputs - Class strings, arrays or conditional objects accepted by clsx.
6
+ *
7
+ * @returns A merged class string; later conflicting Tailwind utilities generally win.
8
+ *
9
+ * @remarks Pure formatting helper; no React provider or stylesheet is required to call it.
8
10
  *
9
11
  * @example
10
- * ```typescript
11
- * cn('px-2 py-1', isPrimary && 'bg-blue-500', className)
12
+ * ```ts
13
+ * import { cn } from '@alneas/appkit-react/ui/utils';
14
+ * const className = cn('px-2 py-1', { 'bg-blue-500': true }, 'px-4');
12
15
  * ```
13
16
  */
14
17
  export declare function cn(...inputs: ClassValue[]): string;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["cn","inputs","twMerge","clsx"],"sources":["../../../src/ui/lib/utils.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Tailwind CSS のクラス名を安全に結合し、競合を解決します。\n * clsx で条件付きクラスを処理し、tailwind-merge で重複するスタイルを上書きします。\n *\n * @param inputs - 結合するクラス名の配列(文字列、オブジェクト、ブール値など)\n * @returns 最適化されたクラス名文字列\n *\n * @example\n * ```typescript\n * cn('px-2 py-1', isPrimary && 'bg-blue-500', className)\n * ```\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";;;;AAeA,SAAgBA,EAAG,GAAGC,GAAsB;CAC1C,OAAOC,EAAQC,EAAKF,CAAM,CAAC;AAC7B"}
1
+ {"version":3,"file":"utils.js","names":["cn","inputs","twMerge","clsx"],"sources":["../../../src/ui/lib/utils.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Combines conditional class values with clsx and resolves Tailwind conflicts with tailwind-merge.\n *\n * @param inputs - Class strings, arrays or conditional objects accepted by clsx.\n *\n * @returns A merged class string; later conflicting Tailwind utilities generally win.\n *\n * @remarks Pure formatting helper; no React provider or stylesheet is required to call it.\n *\n * @example\n * ```ts\n * import { cn } from '@alneas/appkit-react/ui/utils';\n * const className = cn('px-2 py-1', { 'bg-blue-500': true }, 'px-4');\n * ```\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";;;;AAkBA,SAAgBA,EAAG,GAAGC,GAAsB;CAC1C,OAAOC,EAAQC,EAAKF,CAAM,CAAC;AAC7B"}
package/docs/ai.md CHANGED
@@ -1,8 +1,11 @@
1
1
  ---
2
2
  title: "Review AI proposals in React"
3
3
  description: "React proposal review and generative UI bindings"
4
+ sidebar:
5
+ order: 2
4
6
  archetype: how-to
5
- project: tools
7
+ project: appkit
8
+ tags: ["appkit", "ai"]
6
9
  ---
7
10
 
8
11
  # Review AI proposals in React
@@ -35,3 +38,33 @@ Type-check this example in your application. See [the export reference](exports.
35
38
  ## Troubleshooting / Common Pitfalls
36
39
 
37
40
  React proposal review and generative UI bindings. The optional chat transport requires the ai SDK peer. Proposals do not authorize execution or stored-record changes.
41
+
42
+ ## Prompt injection and review permissions
43
+
44
+ Transport text, tool-call arguments, retrieved files and tool outputs are untrusted. The optional `ai` peer is needed only by the SDK chat binding; a chat transport never approves or executes a tool. Keep provider secrets in a server-owned endpoint.
45
+
46
+ Use the [Core validation and approval sequence](../../appkit-core/docs/ai.md) before presenting a proposal. Display the exact immutable target and arguments, require explicit approval for writes or sensitive disclosure, and invalidate approval when the call, session or registration changes. The server must independently enforce resource permissions, concurrency and durable idempotency at execution time. A React component, assistant message or SDK tool-output event is not authorization.
47
+
48
+ Render registered components only, keep React text rendering escaped, and project minimal validated outputs. Do not evaluate generated code or embed arbitrary model HTML. Cancellation cannot roll back completed writes; reconcile uncertain effects before retrying. See [Core error recovery](../../appkit-core/docs/ai-errors.md).
49
+
50
+ ## Application review controls
51
+
52
+ These host-owned controls consume the application's pending snapshot. Supply the Core example's controller or equivalent server-backed application flow. `onSettled` refreshes application state. No provider, database or theme provider is required just to render these controls; the larger application retains its documented providers and explicit styles.
53
+
54
+ ```tsx
55
+ import {useState} from 'react';
56
+ /** Host-owned review controls; rendering or receiving a tool event never grants permission. */
57
+ export function RenameToolReview({example,pending,onSettled}:{
58
+ example:{approve:(id:string)=>Promise<unknown>;reject:(id:string)=>void};
59
+ pending:{approvalId:string;recordId:string;name:string}|null;onSettled:()=>void;
60
+ }){
61
+ const [busy,setBusy]=useState(false),[failure,setFailure]=useState(false);
62
+ if(!pending)return null;
63
+ return <section aria-label="Review proposed rename">
64
+ <p>Rename record {pending.recordId} to {pending.name}</p>
65
+ <button disabled={busy} onClick={async()=>{setBusy(true);setFailure(false);try{await example.approve(pending.approvalId);}catch{setFailure(true);}finally{setBusy(false);onSettled();}}}>Approve</button>
66
+ <button disabled={busy} onClick={()=>{example.reject(pending.approvalId);onSettled();}}>Reject</button>
67
+ {failure&&<p role="alert">Execution could not complete. Check the application outcome before retrying.</p>}
68
+ </section>;
69
+ }
70
+ ```
package/docs/exports.md CHANGED
@@ -1,8 +1,11 @@
1
1
  ---
2
2
  title: "Public exports and optional peers"
3
3
  description: "Exact install package, public import subpaths and optional peer requirements."
4
+ sidebar:
5
+ order: 10
4
6
  archetype: reference
5
- project: tools
7
+ project: appkit
8
+ tags: ["appkit", "exports"]
6
9
  ---
7
10
 
8
11
  # Public exports and optional peers
@@ -58,6 +61,7 @@ bun add @alneas/appkit-react
58
61
  | `@alneas/appkit-react/tools/styles` | CSS |
59
62
  | `@alneas/appkit-react/ai-instructions` | Metadata |
60
63
  | `@alneas/appkit-react/package-context.json` | Metadata |
64
+ | `@alneas/appkit-react/api-index.json` | Metadata |
61
65
 
62
66
  ## Optional peers
63
67