@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,58 +1,129 @@
1
1
  import { ApplyProposalPayload, CandidateValidationResult, FieldDecision, FieldKey, ProposalReviewStatus, RecordProposal, ReviewDecisions } from '@alneas/appkit-core/ai';
2
- /** Props for ProposalReviewCard. */
2
+ /**
3
+ * Single-record review presentation and host apply inputs.
4
+ *
5
+ * @typeParam TRecord - Current record shape; defaults to a string-keyed record.
6
+ *
7
+ * @remarks These shared inputs are consumed by useProposalReview; persistence is host-owned.
8
+ *
9
+ * @see useProposalReview for a complete input example.
10
+ */
3
11
  export interface ProposalReviewCardProps<TRecord extends Record<string, any> = Record<string, any>> {
4
- /** 変更提案オブジェクト(イミュータブル) */
12
+ /**
13
+ * Immutable validated change proposal; changing id resets the review decisions.
14
+ */
5
15
  proposal: RecordProposal<TRecord>;
6
- /** 最新の元データレコード */
16
+ /**
17
+ * Latest host record used to compose accepted changes and detect conflicts.
18
+ */
7
19
  currentRecord: TRecord;
8
- /** アプリケーションが保持する元データの現在バージョン */
20
+ /**
21
+ * Current host version compared with the proposal base version.
22
+ */
9
23
  currentVersion: string | number;
10
24
  /**
11
- * レコード全体の業務検証関数(相関チェックやスキーマ検証)
12
- * 候補レコード(現在値+採用分)全体を検証します。
25
+ * Optional synchronous validation of the complete composed candidate; thrown errors propagate from render.
13
26
  */
14
27
  validateCandidate?: (candidate: TRecord) => CandidateValidationResult;
15
28
  /**
16
- * 適用ハンドラ(フォームへの反映、またはサーバーへの永続化リクエスト)
29
+ * Optional host apply callback receiving a payload; await persistence before resolving. Rejection becomes saveError.
17
30
  */
18
31
  onApply?: (payload: ApplyProposalPayload<TRecord>) => void | Promise<void>;
19
- /** 提案全体の破棄・スキップハンドラ */
32
+ /**
33
+ * Optional host dismissal callback; the headless hook does not call this member.
34
+ */
20
35
  onDismiss?: () => void;
21
- /** 適用ボタンのラベル(デフォルト: "適用する") */
36
+ /**
37
+ * Optional presentation label; not used by the headless hook.
38
+ */
22
39
  applyLabel?: string;
23
- /** カードの見出し(デフォルト: proposal.targetName または "変更提案の確認") */
40
+ /**
41
+ * Optional presentation title; not used by the headless hook.
42
+ */
24
43
  title?: string;
25
- /** カスタムクラス名 */
44
+ /**
45
+ * Optional presentation classes; not used by the headless hook.
46
+ */
26
47
  className?: string;
27
- /** テストID */
48
+ /**
49
+ * Optional presentation test marker; not used by the headless hook.
50
+ */
28
51
  testId?: string;
29
52
  }
30
- /** Return type of useProposalReview hook. */
53
+ /**
54
+ * Derived review state and explicit field-decision/apply controls.
55
+ *
56
+ * @typeParam TRecord - Record shape retained by candidate composition; defaults to a string-keyed record.
57
+ *
58
+ * @see useProposalReview for usage.
59
+ */
31
60
  export interface UseProposalReviewReturn<TRecord extends Record<string, any> = Record<string, any>> {
32
- /** 各フィールドの決定マップ */
61
+ /**
62
+ * Per-field pending/accepted/rejected choices; missing entries behave as pending.
63
+ */
33
64
  decisions: ReviewDecisions<TRecord>;
34
- /** 特定フィールドの決定を更新 */
65
+ /**
66
+ * Set one field choice and clear the save error.
67
+ *
68
+ * @param field - Record key to decide.
69
+ *
70
+ * @param decision - Pending, accepted or rejected choice.
71
+ *
72
+ * @returns No value after scheduling state.
73
+ */
35
74
  setDecision: (field: FieldKey<TRecord>, decision: FieldDecision) => void;
36
- /** 全フィールドを一括で採用 */
75
+ /**
76
+ * Mark every proposed change accepted.
77
+ *
78
+ * @returns No value after scheduling choices and clearing the save error.
79
+ */
37
80
  acceptAll: () => void;
38
- /** 全フィールドを一括で却下 */
81
+ /**
82
+ * Mark every proposed change rejected.
83
+ *
84
+ * @returns No value after scheduling choices and clearing the save error.
85
+ */
39
86
  rejectAll: () => void;
40
- /** 全フィールドの選択を初期状態(pending)にリセット */
87
+ /**
88
+ * Remove explicit choices so every change returns to pending.
89
+ *
90
+ * @returns No value after scheduling choices and clearing the save error.
91
+ */
41
92
  resetDecisions: () => void;
42
- /** 合成された候補レコード */
93
+ /**
94
+ * Current record with accepted proposal changes composed into a new candidate.
95
+ */
43
96
  candidateRecord: TRecord;
44
- /** 全体のレビュー決定状況 */
97
+ /**
98
+ * Derived aggregate decision status.
99
+ */
45
100
  reviewStatus: ProposalReviewStatus;
46
- /** 現在値・バージョンとの整合性チェック結果 */
101
+ /**
102
+ * Current-value/version compatibility check for the selected changes.
103
+ */
47
104
  consistency: ReturnType<typeof import('@alneas/appkit-core/ai/proposal').verifyCurrentState<TRecord>>;
48
- /** 候補レコード全体の検証結果 */
105
+ /**
106
+ * Optional complete-candidate validation result; undefined when no validator is supplied.
107
+ */
49
108
  candidateValidation?: CandidateValidationResult;
50
- /** 適用可能かどうか */
109
+ /**
110
+ * Whether decisions/consistency/validation permit application and onApply exists.
111
+ */
51
112
  canApply: boolean;
52
- /** 適用実行中フラグ */
113
+ /**
114
+ * Whether this displayed review is awaiting host apply completion.
115
+ */
53
116
  isSubmitting: boolean;
54
- /** 保存/適用失敗時のエラーメッセージ */
117
+ /**
118
+ * Last current-generation apply failure message, or null.
119
+ */
55
120
  saveError: string | null;
56
- /** 適用処理の実行関数 */
121
+ /**
122
+ * Apply a prepared payload through the host callback at most once concurrently per displayed generation.
123
+ *
124
+ * @returns True after current-generation success; false when blocked, failed or completed for an older generation.
125
+ *
126
+ * @remarks Errors from payload/application are caught as saveError; the host owns durable side effects and rollback.
127
+ */
57
128
  handleApply: () => Promise<boolean>;
58
129
  }
@@ -1,58 +1,129 @@
1
1
  import { ApplyProposalPayload, CandidateValidationResult, FieldDecision, FieldKey, ProposalReviewStatus, RecordProposal, ReviewDecisions } from '@alneas/appkit-core/ai';
2
- /** Props for ProposalReviewCard. */
2
+ /**
3
+ * Single-record review presentation and host apply inputs.
4
+ *
5
+ * @typeParam TRecord - Current record shape; defaults to a string-keyed record.
6
+ *
7
+ * @remarks These shared inputs are consumed by useProposalReview; persistence is host-owned.
8
+ *
9
+ * @see useProposalReview for a complete input example.
10
+ */
3
11
  export interface ProposalReviewCardProps<TRecord extends Record<string, any> = Record<string, any>> {
4
- /** 変更提案オブジェクト(イミュータブル) */
12
+ /**
13
+ * Immutable validated change proposal; changing id resets the review decisions.
14
+ */
5
15
  proposal: RecordProposal<TRecord>;
6
- /** 最新の元データレコード */
16
+ /**
17
+ * Latest host record used to compose accepted changes and detect conflicts.
18
+ */
7
19
  currentRecord: TRecord;
8
- /** アプリケーションが保持する元データの現在バージョン */
20
+ /**
21
+ * Current host version compared with the proposal base version.
22
+ */
9
23
  currentVersion: string | number;
10
24
  /**
11
- * レコード全体の業務検証関数(相関チェックやスキーマ検証)
12
- * 候補レコード(現在値+採用分)全体を検証します。
25
+ * Optional synchronous validation of the complete composed candidate; thrown errors propagate from render.
13
26
  */
14
27
  validateCandidate?: (candidate: TRecord) => CandidateValidationResult;
15
28
  /**
16
- * 適用ハンドラ(フォームへの反映、またはサーバーへの永続化リクエスト)
29
+ * Optional host apply callback receiving a payload; await persistence before resolving. Rejection becomes saveError.
17
30
  */
18
31
  onApply?: (payload: ApplyProposalPayload<TRecord>) => void | Promise<void>;
19
- /** 提案全体の破棄・スキップハンドラ */
32
+ /**
33
+ * Optional host dismissal callback; the headless hook does not call this member.
34
+ */
20
35
  onDismiss?: () => void;
21
- /** 適用ボタンのラベル(デフォルト: "適用する") */
36
+ /**
37
+ * Optional presentation label; not used by the headless hook.
38
+ */
22
39
  applyLabel?: string;
23
- /** カードの見出し(デフォルト: proposal.targetName または "変更提案の確認") */
40
+ /**
41
+ * Optional presentation title; not used by the headless hook.
42
+ */
24
43
  title?: string;
25
- /** カスタムクラス名 */
44
+ /**
45
+ * Optional presentation classes; not used by the headless hook.
46
+ */
26
47
  className?: string;
27
- /** テストID */
48
+ /**
49
+ * Optional presentation test marker; not used by the headless hook.
50
+ */
28
51
  testId?: string;
29
52
  }
30
- /** Return type of useProposalReview hook. */
53
+ /**
54
+ * Derived review state and explicit field-decision/apply controls.
55
+ *
56
+ * @typeParam TRecord - Record shape retained by candidate composition; defaults to a string-keyed record.
57
+ *
58
+ * @see useProposalReview for usage.
59
+ */
31
60
  export interface UseProposalReviewReturn<TRecord extends Record<string, any> = Record<string, any>> {
32
- /** 各フィールドの決定マップ */
61
+ /**
62
+ * Per-field pending/accepted/rejected choices; missing entries behave as pending.
63
+ */
33
64
  decisions: ReviewDecisions<TRecord>;
34
- /** 特定フィールドの決定を更新 */
65
+ /**
66
+ * Set one field choice and clear the save error.
67
+ *
68
+ * @param field - Record key to decide.
69
+ *
70
+ * @param decision - Pending, accepted or rejected choice.
71
+ *
72
+ * @returns No value after scheduling state.
73
+ */
35
74
  setDecision: (field: FieldKey<TRecord>, decision: FieldDecision) => void;
36
- /** 全フィールドを一括で採用 */
75
+ /**
76
+ * Mark every proposed change accepted.
77
+ *
78
+ * @returns No value after scheduling choices and clearing the save error.
79
+ */
37
80
  acceptAll: () => void;
38
- /** 全フィールドを一括で却下 */
81
+ /**
82
+ * Mark every proposed change rejected.
83
+ *
84
+ * @returns No value after scheduling choices and clearing the save error.
85
+ */
39
86
  rejectAll: () => void;
40
- /** 全フィールドの選択を初期状態(pending)にリセット */
87
+ /**
88
+ * Remove explicit choices so every change returns to pending.
89
+ *
90
+ * @returns No value after scheduling choices and clearing the save error.
91
+ */
41
92
  resetDecisions: () => void;
42
- /** 合成された候補レコード */
93
+ /**
94
+ * Current record with accepted proposal changes composed into a new candidate.
95
+ */
43
96
  candidateRecord: TRecord;
44
- /** 全体のレビュー決定状況 */
97
+ /**
98
+ * Derived aggregate decision status.
99
+ */
45
100
  reviewStatus: ProposalReviewStatus;
46
- /** 現在値・バージョンとの整合性チェック結果 */
101
+ /**
102
+ * Current-value/version compatibility check for the selected changes.
103
+ */
47
104
  consistency: ReturnType<typeof import('@alneas/appkit-core/ai/proposal').verifyCurrentState<TRecord>>;
48
- /** 候補レコード全体の検証結果 */
105
+ /**
106
+ * Optional complete-candidate validation result; undefined when no validator is supplied.
107
+ */
49
108
  candidateValidation?: CandidateValidationResult;
50
- /** 適用可能かどうか */
109
+ /**
110
+ * Whether decisions/consistency/validation permit application and onApply exists.
111
+ */
51
112
  canApply: boolean;
52
- /** 適用実行中フラグ */
113
+ /**
114
+ * Whether this displayed review is awaiting host apply completion.
115
+ */
53
116
  isSubmitting: boolean;
54
- /** 保存/適用失敗時のエラーメッセージ */
117
+ /**
118
+ * Last current-generation apply failure message, or null.
119
+ */
55
120
  saveError: string | null;
56
- /** 適用処理の実行関数 */
121
+ /**
122
+ * Apply a prepared payload through the host callback at most once concurrently per displayed generation.
123
+ *
124
+ * @returns True after current-generation success; false when blocked, failed or completed for an older generation.
125
+ *
126
+ * @remarks Errors from payload/application are caught as saveError; the host owns durable side effects and rollback.
127
+ */
57
128
  handleApply: () => Promise<boolean>;
58
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-proposal-batch-review.cjs","names":["createExecutionSession","useState","useRef","useSyncExternalStore","prepareProposalBatch","react","_alneas_appkit_core_ai","initial","useProposalBatchReview","key","options","item","stored","setStored","state","session","live","latest","current","history","busy","record","update","change","entries","items","applied","preparation","editable","id","next","value","selected","field","decision","planned","outcome","context","completed","payload","checked","fraction","progress"],"sources":["../../../src/ai/proposal/use-proposal-batch-review.ts"],"sourcesContent":["import { useLayoutEffect, useRef, useState, useSyncExternalStore } from 'react';\nimport { createExecutionSession, type ExecutionContext, type ExecutionRecord, type ExecutionSession } from \"@alneas/appkit-core/ai\";\nimport {\n prepareProposalBatch,\n type ApplyProposalPayload,\n type FieldDecision,\n type FieldKey,\n type PreparedProposalBatch,\n type ProposalBatchEntry,\n type ProposalBatchItem,\n type ProposalBatchValidator,\n type ReviewDecisions,\n} from \"@alneas/appkit-core/ai\";\n\n/** Multi-record review. Each item must have a unique validated immutable proposal. */\nexport interface UseProposalBatchReviewOptions<TRecord extends Record<string, any> = Record<string, any>> {\n /** Change for a new review session, including an intentional replay of the same proposals. */\n batchId: string;\n items: readonly ProposalBatchItem<TRecord>[];\n validateCandidate?: ProposalBatchValidator<TRecord>;\n /** Called sequentially. Resolve only when this row is applied; reject to stop the batch. */\n onApply?: (payload: ApplyProposalPayload<TRecord>, context: ExecutionContext) => void | Promise<void>;\n}\n\n/** Headless controller shared by batch lists and custom application layouts. */\nexport interface UseProposalBatchReviewReturn<TRecord extends Record<string, any> = Record<string, any>> {\n selectedIds: ReadonlySet<string>;\n appliedIds: ReadonlySet<string>;\n decisions: ReadonlyMap<string, ReviewDecisions<TRecord>>;\n preparation: PreparedProposalBatch<TRecord>;\n canApply: boolean;\n isSubmitting: boolean;\n activeProposalId: string | null;\n error: string | null;\n history: readonly ExecutionRecord[];\n setSelected(id: string, selected: boolean): void;\n selectAll(selected: boolean): void;\n setDecision(id: string, field: FieldKey<TRecord>, decision: FieldDecision): void;\n decideAll(id: string, decision: FieldDecision): void;\n apply(): Promise<boolean>;\n cancel(): void;\n clearHistory(): void;\n}\n\ninterface ReviewState<TRecord extends Record<string, any>> {\n key: string;\n session: ExecutionSession;\n selected: ReadonlySet<string>;\n applied: ReadonlySet<string>;\n decisions: ReadonlyMap<string, ReviewDecisions<TRecord>>;\n running: boolean;\n active: string | null;\n error: string | null;\n}\n\nfunction initial<TRecord extends Record<string, any>>(key: string): ReviewState<TRecord> {\n return {\n key,\n session: createExecutionSession(),\n selected: new Set(),\n applied: new Set(),\n decisions: new Map(),\n running: false,\n active: null,\n error: null,\n };\n}\n\n/**\n * Reviews multiple records without implicit field acceptance. Preflights the entire\n * selection, then rechecks each latest committed record immediately before applying it.\n * Stops on first failure or cancellation; confirmed successes are never retried within\n * this session.\n */\nexport function useProposalBatchReview<TRecord extends Record<string, any> = Record<string, any>>(\n options: UseProposalBatchReviewOptions<TRecord>\n): UseProposalBatchReviewReturn<TRecord> {\n const key = JSON.stringify([options.batchId, options.items.map(item => JSON.stringify(item.proposal)).sort()]);\n const [stored, setStored] = useState(() => initial<TRecord>(key));\n let state = stored;\n if (state.key !== key) {\n state = initial<TRecord>(key);\n setStored(state);\n }\n const session = state.session;\n const live = useRef<{ session: ExecutionSession; applied: Set<string> } | null>(null);\n const latest = useRef(options);\n useLayoutEffect(() => {\n latest.current = options;\n });\n useLayoutEffect(() => {\n const current = { session, applied: new Set<string>() };\n live.current = current;\n return () => {\n session.cancel();\n if (live.current === current) live.current = null;\n };\n }, [session]);\n\n const history = useSyncExternalStore(session.subscribe, session.getSnapshot, session.getSnapshot);\n const busy = () => session.getSnapshot().some(record => record.status === 'running' || record.status === 'cancelling');\n const update = (change: (current: ReviewState<TRecord>) => ReviewState<TRecord>) => {\n setStored(current => (current.session === session ? change(current) : current));\n };\n\n const entries = (\n items: readonly ProposalBatchItem<TRecord>[],\n applied: ReadonlySet<string>\n ): ProposalBatchEntry<TRecord>[] =>\n items.map(item => ({\n ...item,\n decisions: state.decisions.get(item.proposal.id) ?? ({} as ReviewDecisions<TRecord>),\n selected: state.selected.has(item.proposal.id) && !applied.has(item.proposal.id),\n }));\n\n const preparation = prepareProposalBatch(entries(options.items, state.applied), options.validateCandidate);\n const editable = (id: string) =>\n live.current?.session === session && !busy() && !live.current.applied.has(id) && options.items.some(item => item.proposal.id === id);\n\n const apply = async (): Promise<boolean> => {\n const current = live.current;\n if (!current || current.session !== session || busy() || !latest.current.onApply) return false;\n const planned = prepareProposalBatch(entries(latest.current.items, current.applied), latest.current.validateCandidate);\n if (!planned.canApply) return false;\n update(value => ({ ...value, running: true, error: null }));\n const outcome = await session.run(`一括適用 ${planned.payloads.length} 件`, async context => {\n context.reportProgress({ completed: 0, total: planned.payloads.length });\n let completed = 0;\n for (const payload of planned.payloads) {\n context.signal.throwIfAborted();\n if (live.current !== current) throw new DOMException('Review session changed', 'AbortError');\n const item = latest.current.items.find(value => value.proposal.id === payload.proposalId);\n if (!item) throw new Error('対象の提案が見つかりません。再確認してください。');\n const checked = prepareProposalBatch(\n [{ ...item, selected: true, decisions: state.decisions.get(payload.proposalId) ?? ({} as ReviewDecisions<TRecord>) }],\n latest.current.validateCandidate\n );\n if (!checked.canApply || !latest.current.onApply) {\n throw new Error('適用前にデータが変更されたため停止しました。再確認してください。');\n }\n update(value => ({ ...value, active: payload.proposalId }));\n await latest.current.onApply(checked.payloads[0], {\n signal: context.signal,\n reportProgress(progress) {\n const fraction =\n progress.total && Number.isFinite(progress.total) && Number.isFinite(progress.completed)\n ? Math.max(0, Math.min(1, progress.completed / progress.total))\n : 0;\n context.reportProgress({\n completed: completed + fraction,\n total: planned.payloads.length,\n message: progress.message,\n });\n },\n });\n if (live.current !== current) throw new DOMException('Review session changed', 'AbortError');\n current.applied.add(payload.proposalId);\n update(value => ({ ...value, applied: new Set(current.applied) }));\n context.reportProgress({ completed: ++completed, total: planned.payloads.length });\n }\n });\n if (live.current !== current) return false;\n update(value => ({\n ...value,\n running: false,\n active: null,\n error: outcome.status === 'failed' ? '適用に失敗しました。成功済みの提案を除いて再試行できます。' : null,\n }));\n return outcome.status === 'succeeded';\n };\n\n return {\n selectedIds: state.selected,\n appliedIds: state.applied,\n decisions: state.decisions,\n preparation,\n canApply: !!options.onApply && preparation.canApply && !state.running,\n isSubmitting: state.running,\n activeProposalId: state.active,\n error: state.error,\n history,\n setSelected(id, selected) {\n if (!editable(id)) return;\n update(value => {\n const next = new Set(value.selected);\n if (selected) next.add(id);\n else next.delete(id);\n return { ...value, selected: next, error: null };\n });\n },\n selectAll(selected) {\n if (busy()) return;\n update(value => ({\n ...value,\n selected: new Set(selected ? options.items.map(item => item.proposal.id) : value.applied),\n error: null,\n }));\n },\n setDecision(id, field, decision) {\n if (!editable(id) || !options.items.find(item => item.proposal.id === id)?.proposal.changes.some(change => change.field === field)) return;\n update(value => ({\n ...value,\n decisions: new Map(value.decisions).set(id, {\n ...value.decisions.get(id),\n [field]: decision,\n } as ReviewDecisions<TRecord>),\n error: null,\n }));\n },\n decideAll(id, decision) {\n if (!editable(id)) return;\n const item = options.items.find(value => value.proposal.id === id)!;\n update(value => ({\n ...value,\n decisions: new Map(value.decisions).set(\n id,\n Object.fromEntries(item.proposal.changes.map(change => [change.field, decision])) as ReviewDecisions<TRecord>\n ),\n error: null,\n }));\n },\n apply,\n cancel: session.cancel,\n clearHistory: session.clearHistory,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-proposal-batch-review.cjs","names":["createExecutionSession","useState","useRef","useSyncExternalStore","prepareProposalBatch","react","_alneas_appkit_core_ai","initial","useProposalBatchReview","key","options","item","stored","setStored","state","session","live","latest","current","history","busy","record","update","change","entries","items","applied","preparation","editable","id","next","value","selected","field","decision","planned","outcome","context","completed","payload","checked","fraction","progress"],"sources":["../../../src/ai/proposal/use-proposal-batch-review.ts"],"sourcesContent":["import { useLayoutEffect, useRef, useState, useSyncExternalStore } from 'react';\nimport { createExecutionSession, type ExecutionContext, type ExecutionRecord, type ExecutionSession } from \"@alneas/appkit-core/ai\";\nimport {\n prepareProposalBatch,\n type ApplyProposalPayload,\n type FieldDecision,\n type FieldKey,\n type PreparedProposalBatch,\n type ProposalBatchEntry,\n type ProposalBatchItem,\n type ProposalBatchValidator,\n type ReviewDecisions,\n} from \"@alneas/appkit-core/ai\";\n\n/**\n * Host inputs for reviewing unique immutable proposals across multiple records.\n *\n * @typeParam TRecord - Record shape; defaults to a string-keyed record.\n *\n * @see useProposalBatchReview for usage.\n */\nexport interface UseProposalBatchReviewOptions<TRecord extends Record<string, any> = Record<string, any>> {\n /** Change for a new review session, including an intentional replay of the same proposals. */\n batchId: string;\n /**\n * Validated proposals and latest records/versions; proposal IDs must be unique.\n */\n items: readonly ProposalBatchItem<TRecord>[];\n /**\n * Optional synchronous validator passed to Core batch preparation; thrown errors become invalid_candidate issues.\n */\n validateCandidate?: ProposalBatchValidator<TRecord>;\n /**\n * Sequential host callback receiving one prepared payload and cooperative abort/progress context.\n *\n * @param payload - Validated candidate and decisions for one proposal.\n *\n * @param context - Abort signal and fractional-progress reporting for this row.\n *\n * @returns No value after the host confirms application; reject to stop later rows.\n */\n onApply?: (payload: ApplyProposalPayload<TRecord>, context: ExecutionContext) => void | Promise<void>;\n}\n\n/**\n * Batch selection/decision state and explicit execution controls.\n *\n * @typeParam TRecord - Shared record shape; defaults to a string-keyed record.\n *\n * @see useProposalBatchReview for usage.\n */\nexport interface UseProposalBatchReviewReturn<TRecord extends Record<string, any> = Record<string, any>> {\n /**\n * Current selected proposal IDs; applied IDs are excluded from preparation.\n */\n selectedIds: ReadonlySet<string>;\n /**\n * Host-confirmed successes in this review session.\n */\n appliedIds: ReadonlySet<string>;\n /**\n * Per-proposal field decisions; absent choices remain pending.\n */\n decisions: ReadonlyMap<string, ReviewDecisions<TRecord>>;\n /**\n * Core batch preflight result for current selection and latest input props.\n */\n preparation: PreparedProposalBatch<TRecord>;\n /**\n * Whether a handler exists, preparation passes and state is not submitting.\n */\n canApply: boolean;\n /**\n * Whether the displayed batch is currently running.\n */\n isSubmitting: boolean;\n /**\n * Current row being applied, or null outside active row work.\n */\n activeProposalId: string | null;\n /**\n * Generic current-session batch failure message, or null; raw host exceptions are not exposed.\n */\n error: string | null;\n /**\n * Read-only execution history for this batch session.\n */\n history: readonly ExecutionRecord[];\n /**\n * Select or deselect an editable known proposal.\n *\n * @param id - Proposal identifier.\n *\n * @param selected - Desired selection state.\n *\n * @returns No value; unknown/applied/busy proposals are ignored.\n */\n setSelected(id: string, selected: boolean): void;\n /**\n * Change selection for the current items when idle.\n *\n * @param selected - True selects all current IDs; false retains only applied IDs in the selection set.\n *\n * @returns No value; calls while execution is busy are ignored.\n */\n selectAll(selected: boolean): void;\n /**\n * Change one existing proposed field while editable.\n *\n * @param id - Proposal identifier.\n *\n * @param field - Field present in that proposal.\n *\n * @param decision - Pending, accepted or rejected choice.\n *\n * @returns No value; invalid IDs/fields and busy/applied proposals are ignored.\n */\n setDecision(id: string, field: FieldKey<TRecord>, decision: FieldDecision): void;\n /**\n * Change every proposed field choice for one editable proposal.\n *\n * @param id - Proposal identifier.\n *\n * @param decision - Choice applied to all its changes.\n *\n * @returns No value; unknown/applied/busy proposals are ignored.\n */\n decideAll(id: string, decision: FieldDecision): void;\n /**\n * Preflight the selection, then apply rows sequentially with latest-record rechecks.\n *\n * @returns True only for current-session complete success; false when blocked, failed, cancelled or superseded.\n *\n * @remarks Confirmed successes are retained and skipped on retry; unconfirmed backend effects may still exist.\n */\n apply(): Promise<boolean>;\n /**\n * Request cooperative cancellation of current execution.\n *\n * @returns No value; does not roll back previously applied rows or force host work to stop.\n */\n cancel(): void;\n /**\n * Clear settled execution history using the session policy.\n *\n * @returns No value; does not clear review choices or confirmed applied IDs.\n */\n clearHistory(): void;\n}\n\ninterface ReviewState<TRecord extends Record<string, any>> {\n key: string;\n session: ExecutionSession;\n selected: ReadonlySet<string>;\n applied: ReadonlySet<string>;\n decisions: ReadonlyMap<string, ReviewDecisions<TRecord>>;\n running: boolean;\n active: string | null;\n error: string | null;\n}\n\nfunction initial<TRecord extends Record<string, any>>(key: string): ReviewState<TRecord> {\n return {\n key,\n session: createExecutionSession(),\n selected: new Set(),\n applied: new Set(),\n decisions: new Map(),\n running: false,\n active: null,\n error: null,\n };\n}\n\n/**\n * Reviews a batch with explicit field decisions and sequential host application.\n *\n * @typeParam TRecord - Record shape; defaults to a string-keyed record.\n *\n * @param options - Batch identity, unique immutable proposals/latest records, validation and optional host apply callback.\n *\n * @returns Selection/decision controls, preflight state, bounded execution history and cooperative cancellation.\n *\n * @remarks Requires React; no context/styles. Changing batchId or serialized proposal\n * content starts a new session; unmount/session changes request cancellation. Each row\n * is rechecked against latest committed host inputs before apply. Stops at the first\n * failure/cancellation; successes remain excluded from retries. Cancellation cannot\n * undo host effects, so persist idempotently and enforce concurrency/authorization in\n * the backend. A row that changed the backend before rejecting has an uncertain outcome.\n *\n * @example\n * ```tsx\n * import { useProposalBatchReview, type UseProposalBatchReviewOptions } from '@alneas/appkit-react/ai/proposal';\n * type RecordData = { title: string };\n * export function Batch({ options }: { options: UseProposalBatchReviewOptions<RecordData> }) {\n * const review = useProposalBatchReview(options);\n * return <button disabled={!review.canApply} onClick={() => { void review.apply(); }}>Apply selected records</button>;\n * }\n * ```\n */\nexport function useProposalBatchReview<TRecord extends Record<string, any> = Record<string, any>>(\n options: UseProposalBatchReviewOptions<TRecord>\n): UseProposalBatchReviewReturn<TRecord> {\n const key = JSON.stringify([options.batchId, options.items.map(item => JSON.stringify(item.proposal)).sort()]);\n const [stored, setStored] = useState(() => initial<TRecord>(key));\n let state = stored;\n if (state.key !== key) {\n state = initial<TRecord>(key);\n setStored(state);\n }\n const session = state.session;\n const live = useRef<{ session: ExecutionSession; applied: Set<string> } | null>(null);\n const latest = useRef(options);\n useLayoutEffect(() => {\n latest.current = options;\n });\n useLayoutEffect(() => {\n const current = { session, applied: new Set<string>() };\n live.current = current;\n return () => {\n session.cancel();\n if (live.current === current) live.current = null;\n };\n }, [session]);\n\n const history = useSyncExternalStore(session.subscribe, session.getSnapshot, session.getSnapshot);\n const busy = () => session.getSnapshot().some(record => record.status === 'running' || record.status === 'cancelling');\n const update = (change: (current: ReviewState<TRecord>) => ReviewState<TRecord>) => {\n setStored(current => (current.session === session ? change(current) : current));\n };\n\n const entries = (\n items: readonly ProposalBatchItem<TRecord>[],\n applied: ReadonlySet<string>\n ): ProposalBatchEntry<TRecord>[] =>\n items.map(item => ({\n ...item,\n decisions: state.decisions.get(item.proposal.id) ?? ({} as ReviewDecisions<TRecord>),\n selected: state.selected.has(item.proposal.id) && !applied.has(item.proposal.id),\n }));\n\n const preparation = prepareProposalBatch(entries(options.items, state.applied), options.validateCandidate);\n const editable = (id: string) =>\n live.current?.session === session && !busy() && !live.current.applied.has(id) && options.items.some(item => item.proposal.id === id);\n\n const apply = async (): Promise<boolean> => {\n const current = live.current;\n if (!current || current.session !== session || busy() || !latest.current.onApply) return false;\n const planned = prepareProposalBatch(entries(latest.current.items, current.applied), latest.current.validateCandidate);\n if (!planned.canApply) return false;\n update(value => ({ ...value, running: true, error: null }));\n const outcome = await session.run(`一括適用 ${planned.payloads.length} 件`, async context => {\n context.reportProgress({ completed: 0, total: planned.payloads.length });\n let completed = 0;\n for (const payload of planned.payloads) {\n context.signal.throwIfAborted();\n if (live.current !== current) throw new DOMException('Review session changed', 'AbortError');\n const item = latest.current.items.find(value => value.proposal.id === payload.proposalId);\n if (!item) throw new Error('対象の提案が見つかりません。再確認してください。');\n const checked = prepareProposalBatch(\n [{ ...item, selected: true, decisions: state.decisions.get(payload.proposalId) ?? ({} as ReviewDecisions<TRecord>) }],\n latest.current.validateCandidate\n );\n if (!checked.canApply || !latest.current.onApply) {\n throw new Error('適用前にデータが変更されたため停止しました。再確認してください。');\n }\n update(value => ({ ...value, active: payload.proposalId }));\n await latest.current.onApply(checked.payloads[0], {\n signal: context.signal,\n reportProgress(progress) {\n const fraction =\n progress.total && Number.isFinite(progress.total) && Number.isFinite(progress.completed)\n ? Math.max(0, Math.min(1, progress.completed / progress.total))\n : 0;\n context.reportProgress({\n completed: completed + fraction,\n total: planned.payloads.length,\n message: progress.message,\n });\n },\n });\n if (live.current !== current) throw new DOMException('Review session changed', 'AbortError');\n current.applied.add(payload.proposalId);\n update(value => ({ ...value, applied: new Set(current.applied) }));\n context.reportProgress({ completed: ++completed, total: planned.payloads.length });\n }\n });\n if (live.current !== current) return false;\n update(value => ({\n ...value,\n running: false,\n active: null,\n error: outcome.status === 'failed' ? '適用に失敗しました。成功済みの提案を除いて再試行できます。' : null,\n }));\n return outcome.status === 'succeeded';\n };\n\n return {\n selectedIds: state.selected,\n appliedIds: state.applied,\n decisions: state.decisions,\n preparation,\n canApply: !!options.onApply && preparation.canApply && !state.running,\n isSubmitting: state.running,\n activeProposalId: state.active,\n error: state.error,\n history,\n setSelected(id, selected) {\n if (!editable(id)) return;\n update(value => {\n const next = new Set(value.selected);\n if (selected) next.add(id);\n else next.delete(id);\n return { ...value, selected: next, error: null };\n });\n },\n selectAll(selected) {\n if (busy()) return;\n update(value => ({\n ...value,\n selected: new Set(selected ? options.items.map(item => item.proposal.id) : value.applied),\n error: null,\n }));\n },\n setDecision(id, field, decision) {\n if (!editable(id) || !options.items.find(item => item.proposal.id === id)?.proposal.changes.some(change => change.field === field)) return;\n update(value => ({\n ...value,\n decisions: new Map(value.decisions).set(id, {\n ...value.decisions.get(id),\n [field]: decision,\n } as ReviewDecisions<TRecord>),\n error: null,\n }));\n },\n decideAll(id, decision) {\n if (!editable(id)) return;\n const item = options.items.find(value => value.proposal.id === id)!;\n update(value => ({\n ...value,\n decisions: new Map(value.decisions).set(\n id,\n Object.fromEntries(item.proposal.changes.map(change => [change.field, decision])) as ReviewDecisions<TRecord>\n ),\n error: null,\n }));\n },\n apply,\n cancel: session.cancel,\n clearHistory: session.clearHistory,\n };\n}\n"],"mappings":"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"}
@@ -1,36 +1,162 @@
1
1
  import { ExecutionContext, ExecutionRecord, ApplyProposalPayload, FieldDecision, FieldKey, PreparedProposalBatch, ProposalBatchItem, ProposalBatchValidator, ReviewDecisions } from '@alneas/appkit-core/ai';
2
- /** Multi-record review. Each item must have a unique validated immutable proposal. */
2
+ /**
3
+ * Host inputs for reviewing unique immutable proposals across multiple records.
4
+ *
5
+ * @typeParam TRecord - Record shape; defaults to a string-keyed record.
6
+ *
7
+ * @see useProposalBatchReview for usage.
8
+ */
3
9
  export interface UseProposalBatchReviewOptions<TRecord extends Record<string, any> = Record<string, any>> {
4
10
  /** Change for a new review session, including an intentional replay of the same proposals. */
5
11
  batchId: string;
12
+ /**
13
+ * Validated proposals and latest records/versions; proposal IDs must be unique.
14
+ */
6
15
  items: readonly ProposalBatchItem<TRecord>[];
16
+ /**
17
+ * Optional synchronous validator passed to Core batch preparation; thrown errors become invalid_candidate issues.
18
+ */
7
19
  validateCandidate?: ProposalBatchValidator<TRecord>;
8
- /** Called sequentially. Resolve only when this row is applied; reject to stop the batch. */
20
+ /**
21
+ * Sequential host callback receiving one prepared payload and cooperative abort/progress context.
22
+ *
23
+ * @param payload - Validated candidate and decisions for one proposal.
24
+ *
25
+ * @param context - Abort signal and fractional-progress reporting for this row.
26
+ *
27
+ * @returns No value after the host confirms application; reject to stop later rows.
28
+ */
9
29
  onApply?: (payload: ApplyProposalPayload<TRecord>, context: ExecutionContext) => void | Promise<void>;
10
30
  }
11
- /** Headless controller shared by batch lists and custom application layouts. */
31
+ /**
32
+ * Batch selection/decision state and explicit execution controls.
33
+ *
34
+ * @typeParam TRecord - Shared record shape; defaults to a string-keyed record.
35
+ *
36
+ * @see useProposalBatchReview for usage.
37
+ */
12
38
  export interface UseProposalBatchReviewReturn<TRecord extends Record<string, any> = Record<string, any>> {
39
+ /**
40
+ * Current selected proposal IDs; applied IDs are excluded from preparation.
41
+ */
13
42
  selectedIds: ReadonlySet<string>;
43
+ /**
44
+ * Host-confirmed successes in this review session.
45
+ */
14
46
  appliedIds: ReadonlySet<string>;
47
+ /**
48
+ * Per-proposal field decisions; absent choices remain pending.
49
+ */
15
50
  decisions: ReadonlyMap<string, ReviewDecisions<TRecord>>;
51
+ /**
52
+ * Core batch preflight result for current selection and latest input props.
53
+ */
16
54
  preparation: PreparedProposalBatch<TRecord>;
55
+ /**
56
+ * Whether a handler exists, preparation passes and state is not submitting.
57
+ */
17
58
  canApply: boolean;
59
+ /**
60
+ * Whether the displayed batch is currently running.
61
+ */
18
62
  isSubmitting: boolean;
63
+ /**
64
+ * Current row being applied, or null outside active row work.
65
+ */
19
66
  activeProposalId: string | null;
67
+ /**
68
+ * Generic current-session batch failure message, or null; raw host exceptions are not exposed.
69
+ */
20
70
  error: string | null;
71
+ /**
72
+ * Read-only execution history for this batch session.
73
+ */
21
74
  history: readonly ExecutionRecord[];
75
+ /**
76
+ * Select or deselect an editable known proposal.
77
+ *
78
+ * @param id - Proposal identifier.
79
+ *
80
+ * @param selected - Desired selection state.
81
+ *
82
+ * @returns No value; unknown/applied/busy proposals are ignored.
83
+ */
22
84
  setSelected(id: string, selected: boolean): void;
85
+ /**
86
+ * Change selection for the current items when idle.
87
+ *
88
+ * @param selected - True selects all current IDs; false retains only applied IDs in the selection set.
89
+ *
90
+ * @returns No value; calls while execution is busy are ignored.
91
+ */
23
92
  selectAll(selected: boolean): void;
93
+ /**
94
+ * Change one existing proposed field while editable.
95
+ *
96
+ * @param id - Proposal identifier.
97
+ *
98
+ * @param field - Field present in that proposal.
99
+ *
100
+ * @param decision - Pending, accepted or rejected choice.
101
+ *
102
+ * @returns No value; invalid IDs/fields and busy/applied proposals are ignored.
103
+ */
24
104
  setDecision(id: string, field: FieldKey<TRecord>, decision: FieldDecision): void;
105
+ /**
106
+ * Change every proposed field choice for one editable proposal.
107
+ *
108
+ * @param id - Proposal identifier.
109
+ *
110
+ * @param decision - Choice applied to all its changes.
111
+ *
112
+ * @returns No value; unknown/applied/busy proposals are ignored.
113
+ */
25
114
  decideAll(id: string, decision: FieldDecision): void;
115
+ /**
116
+ * Preflight the selection, then apply rows sequentially with latest-record rechecks.
117
+ *
118
+ * @returns True only for current-session complete success; false when blocked, failed, cancelled or superseded.
119
+ *
120
+ * @remarks Confirmed successes are retained and skipped on retry; unconfirmed backend effects may still exist.
121
+ */
26
122
  apply(): Promise<boolean>;
123
+ /**
124
+ * Request cooperative cancellation of current execution.
125
+ *
126
+ * @returns No value; does not roll back previously applied rows or force host work to stop.
127
+ */
27
128
  cancel(): void;
129
+ /**
130
+ * Clear settled execution history using the session policy.
131
+ *
132
+ * @returns No value; does not clear review choices or confirmed applied IDs.
133
+ */
28
134
  clearHistory(): void;
29
135
  }
30
136
  /**
31
- * Reviews multiple records without implicit field acceptance. Preflights the entire
32
- * selection, then rechecks each latest committed record immediately before applying it.
33
- * Stops on first failure or cancellation; confirmed successes are never retried within
34
- * this session.
137
+ * Reviews a batch with explicit field decisions and sequential host application.
138
+ *
139
+ * @typeParam TRecord - Record shape; defaults to a string-keyed record.
140
+ *
141
+ * @param options - Batch identity, unique immutable proposals/latest records, validation and optional host apply callback.
142
+ *
143
+ * @returns Selection/decision controls, preflight state, bounded execution history and cooperative cancellation.
144
+ *
145
+ * @remarks Requires React; no context/styles. Changing batchId or serialized proposal
146
+ * content starts a new session; unmount/session changes request cancellation. Each row
147
+ * is rechecked against latest committed host inputs before apply. Stops at the first
148
+ * failure/cancellation; successes remain excluded from retries. Cancellation cannot
149
+ * undo host effects, so persist idempotently and enforce concurrency/authorization in
150
+ * the backend. A row that changed the backend before rejecting has an uncertain outcome.
151
+ *
152
+ * @example
153
+ * ```tsx
154
+ * import { useProposalBatchReview, type UseProposalBatchReviewOptions } from '@alneas/appkit-react/ai/proposal';
155
+ * type RecordData = { title: string };
156
+ * export function Batch({ options }: { options: UseProposalBatchReviewOptions<RecordData> }) {
157
+ * const review = useProposalBatchReview(options);
158
+ * return <button disabled={!review.canApply} onClick={() => { void review.apply(); }}>Apply selected records</button>;
159
+ * }
160
+ * ```
35
161
  */
36
162
  export declare function useProposalBatchReview<TRecord extends Record<string, any> = Record<string, any>>(options: UseProposalBatchReviewOptions<TRecord>): UseProposalBatchReviewReturn<TRecord>;