@alfakit/react 0.0.0-stage → 0.1.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 (1014) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +19 -2
  3. package/dist/app/components.d.ts +49 -0
  4. package/dist/app/components.d.ts.map +1 -0
  5. package/dist/app/components.js +99 -0
  6. package/dist/app/components.js.map +1 -0
  7. package/dist/app/hooks.d.ts +79 -0
  8. package/dist/app/hooks.d.ts.map +1 -0
  9. package/dist/app/hooks.js +239 -0
  10. package/dist/app/hooks.js.map +1 -0
  11. package/dist/components/actions/action-button.d.ts +17 -0
  12. package/dist/components/actions/action-button.d.ts.map +1 -0
  13. package/dist/components/actions/action-button.js +150 -0
  14. package/dist/components/actions/action-button.js.map +1 -0
  15. package/dist/components/actions/action-context.d.ts +11 -0
  16. package/dist/components/actions/action-context.d.ts.map +1 -0
  17. package/dist/components/actions/action-context.js +24 -0
  18. package/dist/components/actions/action-context.js.map +1 -0
  19. package/dist/components/actions/action-list.d.ts +20 -0
  20. package/dist/components/actions/action-list.d.ts.map +1 -0
  21. package/dist/components/actions/action-list.js +181 -0
  22. package/dist/components/actions/action-list.js.map +1 -0
  23. package/dist/components/actions/action-modals.d.ts +5 -0
  24. package/dist/components/actions/action-modals.d.ts.map +1 -0
  25. package/dist/components/actions/action-modals.js +362 -0
  26. package/dist/components/actions/action-modals.js.map +1 -0
  27. package/dist/components/actions/index.d.ts +5 -0
  28. package/dist/components/ai/copilot-panel.js +439 -0
  29. package/dist/components/ai/copilot-panel.js.map +1 -0
  30. package/dist/components/ai/copilot.d.ts +12 -0
  31. package/dist/components/ai/copilot.d.ts.map +1 -0
  32. package/dist/components/ai/copilot.js +66 -0
  33. package/dist/components/ai/copilot.js.map +1 -0
  34. package/dist/components/ai/index.d.ts +3 -0
  35. package/dist/components/ai/index.js +3 -0
  36. package/dist/components/ai/stream-lazy.d.ts +9 -0
  37. package/dist/components/ai/stream-lazy.d.ts.map +1 -0
  38. package/dist/components/ai/stream-lazy.js +13 -0
  39. package/dist/components/ai/stream-lazy.js.map +1 -0
  40. package/dist/components/ai/stream.js +85 -0
  41. package/dist/components/ai/stream.js.map +1 -0
  42. package/dist/components/analytics/alfakit-analytics.d.ts +14 -0
  43. package/dist/components/analytics/alfakit-analytics.d.ts.map +1 -0
  44. package/dist/components/analytics/alfakit-analytics.js +36 -0
  45. package/dist/components/analytics/alfakit-analytics.js.map +1 -0
  46. package/dist/components/analytics/breakdown.d.ts +11 -0
  47. package/dist/components/analytics/breakdown.d.ts.map +1 -0
  48. package/dist/components/analytics/breakdown.js +155 -0
  49. package/dist/components/analytics/breakdown.js.map +1 -0
  50. package/dist/components/analytics/index.d.ts +3 -0
  51. package/dist/components/cms/admin-bar.js +68 -0
  52. package/dist/components/cms/admin-bar.js.map +1 -0
  53. package/dist/components/cms/blocks.d.ts +41 -0
  54. package/dist/components/cms/blocks.d.ts.map +1 -0
  55. package/dist/components/cms/blocks.js +400 -0
  56. package/dist/components/cms/blocks.js.map +1 -0
  57. package/dist/components/cms/context.d.ts +24 -0
  58. package/dist/components/cms/context.d.ts.map +1 -0
  59. package/dist/components/cms/context.js +43 -0
  60. package/dist/components/cms/context.js.map +1 -0
  61. package/dist/components/cms/head.d.ts +11 -0
  62. package/dist/components/cms/head.d.ts.map +1 -0
  63. package/dist/components/cms/head.js +40 -0
  64. package/dist/components/cms/head.js.map +1 -0
  65. package/dist/components/cms/index.d.ts +8 -0
  66. package/dist/components/cms/index.js +8 -0
  67. package/dist/components/cms/live-preview-lazy.d.ts +9 -0
  68. package/dist/components/cms/live-preview-lazy.d.ts.map +1 -0
  69. package/dist/components/cms/live-preview-lazy.js +13 -0
  70. package/dist/components/cms/live-preview-lazy.js.map +1 -0
  71. package/dist/components/cms/live-preview.js +288 -0
  72. package/dist/components/cms/live-preview.js.map +1 -0
  73. package/dist/components/cms/menu.d.ts +24 -0
  74. package/dist/components/cms/menu.d.ts.map +1 -0
  75. package/dist/components/cms/menu.js +181 -0
  76. package/dist/components/cms/menu.js.map +1 -0
  77. package/dist/components/cms/page.d.ts +27 -0
  78. package/dist/components/cms/page.d.ts.map +1 -0
  79. package/dist/components/cms/page.js +180 -0
  80. package/dist/components/cms/page.js.map +1 -0
  81. package/dist/components/cms/parts.d.ts +24 -0
  82. package/dist/components/cms/parts.d.ts.map +1 -0
  83. package/dist/components/cms/parts.js +58 -0
  84. package/dist/components/cms/parts.js.map +1 -0
  85. package/dist/components/dev-tools/dev-tools-inspector.js +302 -0
  86. package/dist/components/dev-tools/dev-tools-inspector.js.map +1 -0
  87. package/dist/components/dev-tools/dev-tools-slot.js +24 -0
  88. package/dist/components/dev-tools/dev-tools-slot.js.map +1 -0
  89. package/dist/components/entries/code-entry.d.ts +8 -0
  90. package/dist/components/entries/code-entry.d.ts.map +1 -0
  91. package/dist/components/entries/code-entry.js +59 -0
  92. package/dist/components/entries/code-entry.js.map +1 -0
  93. package/dist/components/entries/entry-wrapper.d.ts +13 -0
  94. package/dist/components/entries/entry-wrapper.d.ts.map +1 -0
  95. package/dist/components/entries/entry-wrapper.js +175 -0
  96. package/dist/components/entries/entry-wrapper.js.map +1 -0
  97. package/dist/components/entries/index.d.ts +6 -0
  98. package/dist/components/entries/other-entries.d.ts +20 -0
  99. package/dist/components/entries/other-entries.d.ts.map +1 -0
  100. package/dist/components/entries/other-entries.js +169 -0
  101. package/dist/components/entries/other-entries.js.map +1 -0
  102. package/dist/components/entries/repeatable-entry-table.js +33 -0
  103. package/dist/components/entries/repeatable-entry-table.js.map +1 -0
  104. package/dist/components/entries/text-entry.d.ts +12 -0
  105. package/dist/components/entries/text-entry.d.ts.map +1 -0
  106. package/dist/components/entries/text-entry.js +181 -0
  107. package/dist/components/entries/text-entry.js.map +1 -0
  108. package/dist/components/entries/view-entry.d.ts +8 -0
  109. package/dist/components/entries/view-entry.d.ts.map +1 -0
  110. package/dist/components/entries/view-entry.js +26 -0
  111. package/dist/components/entries/view-entry.js.map +1 -0
  112. package/dist/components/fields/builder-picker.js +215 -0
  113. package/dist/components/fields/builder-picker.js.map +1 -0
  114. package/dist/components/fields/builder.d.ts +16 -0
  115. package/dist/components/fields/builder.d.ts.map +1 -0
  116. package/dist/components/fields/builder.js +351 -0
  117. package/dist/components/fields/builder.js.map +1 -0
  118. package/dist/components/fields/checkbox-list.d.ts +7 -0
  119. package/dist/components/fields/checkbox-list.d.ts.map +1 -0
  120. package/dist/components/fields/checkbox-list.js +133 -0
  121. package/dist/components/fields/checkbox-list.js.map +1 -0
  122. package/dist/components/fields/checkbox.d.ts +7 -0
  123. package/dist/components/fields/checkbox.d.ts.map +1 -0
  124. package/dist/components/fields/checkbox.js +29 -0
  125. package/dist/components/fields/checkbox.js.map +1 -0
  126. package/dist/components/fields/code-editor-lazy.d.ts +9 -0
  127. package/dist/components/fields/code-editor-lazy.d.ts.map +1 -0
  128. package/dist/components/fields/code-editor-lazy.js +31 -0
  129. package/dist/components/fields/code-editor-lazy.js.map +1 -0
  130. package/dist/components/fields/code-editor.js +107 -0
  131. package/dist/components/fields/code-editor.js.map +1 -0
  132. package/dist/components/fields/code-tokens.js +18 -0
  133. package/dist/components/fields/code-tokens.js.map +1 -0
  134. package/dist/components/fields/color-picker.d.ts +7 -0
  135. package/dist/components/fields/color-picker.d.ts.map +1 -0
  136. package/dist/components/fields/color-picker.js +70 -0
  137. package/dist/components/fields/color-picker.js.map +1 -0
  138. package/dist/components/fields/date-picker.d.ts +7 -0
  139. package/dist/components/fields/date-picker.d.ts.map +1 -0
  140. package/dist/components/fields/date-picker.js +230 -0
  141. package/dist/components/fields/date-picker.js.map +1 -0
  142. package/dist/components/fields/file-upload.d.ts +7 -0
  143. package/dist/components/fields/file-upload.d.ts.map +1 -0
  144. package/dist/components/fields/file-upload.js +397 -0
  145. package/dist/components/fields/file-upload.js.map +1 -0
  146. package/dist/components/fields/hidden.d.ts +7 -0
  147. package/dist/components/fields/hidden.d.ts.map +1 -0
  148. package/dist/components/fields/hidden.js +17 -0
  149. package/dist/components/fields/hidden.js.map +1 -0
  150. package/dist/components/fields/icon-picker-lazy.d.ts +9 -0
  151. package/dist/components/fields/icon-picker-lazy.d.ts.map +1 -0
  152. package/dist/components/fields/icon-picker-lazy.js +45 -0
  153. package/dist/components/fields/icon-picker-lazy.js.map +1 -0
  154. package/dist/components/fields/icon-picker-value.js +48 -0
  155. package/dist/components/fields/icon-picker-value.js.map +1 -0
  156. package/dist/components/fields/icon-picker.js +228 -0
  157. package/dist/components/fields/icon-picker.js.map +1 -0
  158. package/dist/components/fields/image-editor-dialog-lazy.js +18 -0
  159. package/dist/components/fields/image-editor-dialog-lazy.js.map +1 -0
  160. package/dist/components/fields/image-editor-dialog.js +328 -0
  161. package/dist/components/fields/image-editor-dialog.js.map +1 -0
  162. package/dist/components/fields/index.d.ts +24 -0
  163. package/dist/components/fields/item-actions.js +270 -0
  164. package/dist/components/fields/item-actions.js.map +1 -0
  165. package/dist/components/fields/key-value.d.ts +11 -0
  166. package/dist/components/fields/key-value.d.ts.map +1 -0
  167. package/dist/components/fields/key-value.js +194 -0
  168. package/dist/components/fields/key-value.js.map +1 -0
  169. package/dist/components/fields/lazy-fields.d.ts +13 -0
  170. package/dist/components/fields/lazy-fields.d.ts.map +1 -0
  171. package/dist/components/fields/lazy-fields.js +34 -0
  172. package/dist/components/fields/lazy-fields.js.map +1 -0
  173. package/dist/components/fields/modal-table-select.js +386 -0
  174. package/dist/components/fields/modal-table-select.js.map +1 -0
  175. package/dist/components/fields/money-input.d.ts +7 -0
  176. package/dist/components/fields/money-input.d.ts.map +1 -0
  177. package/dist/components/fields/money-input.js +91 -0
  178. package/dist/components/fields/money-input.js.map +1 -0
  179. package/dist/components/fields/one-time-code-input.d.ts +12 -0
  180. package/dist/components/fields/one-time-code-input.d.ts.map +1 -0
  181. package/dist/components/fields/one-time-code-input.js +53 -0
  182. package/dist/components/fields/one-time-code-input.js.map +1 -0
  183. package/dist/components/fields/query-builder-rules.js +295 -0
  184. package/dist/components/fields/query-builder-rules.js.map +1 -0
  185. package/dist/components/fields/radio.d.ts +7 -0
  186. package/dist/components/fields/radio.d.ts.map +1 -0
  187. package/dist/components/fields/radio.js +57 -0
  188. package/dist/components/fields/radio.js.map +1 -0
  189. package/dist/components/fields/repeater-table.js +111 -0
  190. package/dist/components/fields/repeater-table.js.map +1 -0
  191. package/dist/components/fields/repeater.d.ts +15 -0
  192. package/dist/components/fields/repeater.d.ts.map +1 -0
  193. package/dist/components/fields/repeater.js +209 -0
  194. package/dist/components/fields/repeater.js.map +1 -0
  195. package/dist/components/fields/rich-editor-extensions.js +295 -0
  196. package/dist/components/fields/rich-editor-extensions.js.map +1 -0
  197. package/dist/components/fields/rich-editor-lazy.d.ts +9 -0
  198. package/dist/components/fields/rich-editor-lazy.d.ts.map +1 -0
  199. package/dist/components/fields/rich-editor-lazy.js +24 -0
  200. package/dist/components/fields/rich-editor-lazy.js.map +1 -0
  201. package/dist/components/fields/rich-editor.js +517 -0
  202. package/dist/components/fields/rich-editor.js.map +1 -0
  203. package/dist/components/fields/select.d.ts +7 -0
  204. package/dist/components/fields/select.d.ts.map +1 -0
  205. package/dist/components/fields/select.js +455 -0
  206. package/dist/components/fields/select.js.map +1 -0
  207. package/dist/components/fields/slider.d.ts +12 -0
  208. package/dist/components/fields/slider.d.ts.map +1 -0
  209. package/dist/components/fields/slider.js +146 -0
  210. package/dist/components/fields/slider.js.map +1 -0
  211. package/dist/components/fields/tags-input.d.ts +7 -0
  212. package/dist/components/fields/tags-input.d.ts.map +1 -0
  213. package/dist/components/fields/tags-input.js +129 -0
  214. package/dist/components/fields/tags-input.js.map +1 -0
  215. package/dist/components/fields/text-input.d.ts +7 -0
  216. package/dist/components/fields/text-input.d.ts.map +1 -0
  217. package/dist/components/fields/text-input.js +135 -0
  218. package/dist/components/fields/text-input.js.map +1 -0
  219. package/dist/components/fields/textarea.d.ts +7 -0
  220. package/dist/components/fields/textarea.d.ts.map +1 -0
  221. package/dist/components/fields/textarea.js +37 -0
  222. package/dist/components/fields/textarea.js.map +1 -0
  223. package/dist/components/fields/toggle-buttons.d.ts +7 -0
  224. package/dist/components/fields/toggle-buttons.d.ts.map +1 -0
  225. package/dist/components/fields/toggle-buttons.js +84 -0
  226. package/dist/components/fields/toggle-buttons.js.map +1 -0
  227. package/dist/components/fields/toggle.d.ts +7 -0
  228. package/dist/components/fields/toggle.d.ts.map +1 -0
  229. package/dist/components/fields/toggle.js +39 -0
  230. package/dist/components/fields/toggle.js.map +1 -0
  231. package/dist/components/file-manager/file-manager-lazy.d.ts +10 -0
  232. package/dist/components/file-manager/file-manager-lazy.d.ts.map +1 -0
  233. package/dist/components/file-manager/file-manager-lazy.js +49 -0
  234. package/dist/components/file-manager/file-manager-lazy.js.map +1 -0
  235. package/dist/components/file-manager/file-manager.d.ts +1 -0
  236. package/dist/components/file-manager/file-manager.js +1387 -0
  237. package/dist/components/file-manager/file-manager.js.map +1 -0
  238. package/dist/components/file-manager/index.d.ts +3 -0
  239. package/dist/components/file-manager/picker-field.d.ts +12 -0
  240. package/dist/components/file-manager/picker-field.d.ts.map +1 -0
  241. package/dist/components/file-manager/picker-field.js +124 -0
  242. package/dist/components/file-manager/picker-field.js.map +1 -0
  243. package/dist/components/form/form-block.d.ts +12 -0
  244. package/dist/components/form/form-block.d.ts.map +1 -0
  245. package/dist/components/form/form-block.js +155 -0
  246. package/dist/components/form/form-block.js.map +1 -0
  247. package/dist/components/form/form-context.d.ts +27 -0
  248. package/dist/components/form/form-context.d.ts.map +1 -0
  249. package/dist/components/form/form-context.js +65 -0
  250. package/dist/components/form/form-context.js.map +1 -0
  251. package/dist/components/helpdesk/chat-panel.js +209 -0
  252. package/dist/components/helpdesk/chat-panel.js.map +1 -0
  253. package/dist/components/helpdesk/chat-widget.d.ts +23 -0
  254. package/dist/components/helpdesk/chat-widget.d.ts.map +1 -0
  255. package/dist/components/helpdesk/chat-widget.js +76 -0
  256. package/dist/components/helpdesk/chat-widget.js.map +1 -0
  257. package/dist/components/helpdesk/inbox-lazy.d.ts +9 -0
  258. package/dist/components/helpdesk/inbox-lazy.d.ts.map +1 -0
  259. package/dist/components/helpdesk/inbox-lazy.js +46 -0
  260. package/dist/components/helpdesk/inbox-lazy.js.map +1 -0
  261. package/dist/components/helpdesk/inbox.js +609 -0
  262. package/dist/components/helpdesk/inbox.js.map +1 -0
  263. package/dist/components/helpdesk/index.d.ts +3 -0
  264. package/dist/components/kanban/index.d.ts +2 -0
  265. package/dist/components/kanban/index.js +2 -0
  266. package/dist/components/kanban/kanban-lazy.d.ts +10 -0
  267. package/dist/components/kanban/kanban-lazy.d.ts.map +1 -0
  268. package/dist/components/kanban/kanban-lazy.js +31 -0
  269. package/dist/components/kanban/kanban-lazy.js.map +1 -0
  270. package/dist/components/kanban/kanban.js +591 -0
  271. package/dist/components/kanban/kanban.js.map +1 -0
  272. package/dist/components/layout/actions.js +40 -0
  273. package/dist/components/layout/actions.js.map +1 -0
  274. package/dist/components/layout/component-context.d.ts +13 -0
  275. package/dist/components/layout/component-context.d.ts.map +1 -0
  276. package/dist/components/layout/component-context.js +28 -0
  277. package/dist/components/layout/component-context.js.map +1 -0
  278. package/dist/components/layout/deferred.js +135 -0
  279. package/dist/components/layout/deferred.js.map +1 -0
  280. package/dist/components/layout/elements.d.ts +23 -0
  281. package/dist/components/layout/elements.d.ts.map +1 -0
  282. package/dist/components/layout/elements.js +183 -0
  283. package/dist/components/layout/elements.js.map +1 -0
  284. package/dist/components/layout/fieldset.d.ts +7 -0
  285. package/dist/components/layout/fieldset.d.ts.map +1 -0
  286. package/dist/components/layout/fieldset.js +29 -0
  287. package/dist/components/layout/fieldset.js.map +1 -0
  288. package/dist/components/layout/fused-group.d.ts +11 -0
  289. package/dist/components/layout/fused-group.d.ts.map +1 -0
  290. package/dist/components/layout/fused-group.js +64 -0
  291. package/dist/components/layout/fused-group.js.map +1 -0
  292. package/dist/components/layout/grid.d.ts +7 -0
  293. package/dist/components/layout/grid.d.ts.map +1 -0
  294. package/dist/components/layout/grid.js +20 -0
  295. package/dist/components/layout/grid.js.map +1 -0
  296. package/dist/components/layout/index.d.ts +12 -0
  297. package/dist/components/layout/mixed-content.d.ts +14 -0
  298. package/dist/components/layout/mixed-content.d.ts.map +1 -0
  299. package/dist/components/layout/mixed-content.js +44 -0
  300. package/dist/components/layout/mixed-content.js.map +1 -0
  301. package/dist/components/layout/prime.d.ts +17 -0
  302. package/dist/components/layout/prime.d.ts.map +1 -0
  303. package/dist/components/layout/prime.js +126 -0
  304. package/dist/components/layout/prime.js.map +1 -0
  305. package/dist/components/layout/schema-children.d.ts +18 -0
  306. package/dist/components/layout/schema-children.d.ts.map +1 -0
  307. package/dist/components/layout/schema-children.js +26 -0
  308. package/dist/components/layout/schema-children.js.map +1 -0
  309. package/dist/components/layout/section.d.ts +7 -0
  310. package/dist/components/layout/section.d.ts.map +1 -0
  311. package/dist/components/layout/section.js +133 -0
  312. package/dist/components/layout/section.js.map +1 -0
  313. package/dist/components/layout/tabs.d.ts +7 -0
  314. package/dist/components/layout/tabs.d.ts.map +1 -0
  315. package/dist/components/layout/tabs.js +83 -0
  316. package/dist/components/layout/tabs.js.map +1 -0
  317. package/dist/components/layout/wizard.d.ts +7 -0
  318. package/dist/components/layout/wizard.d.ts.map +1 -0
  319. package/dist/components/layout/wizard.js +172 -0
  320. package/dist/components/layout/wizard.js.map +1 -0
  321. package/dist/components/notifications/flash-toasts.d.ts +20 -0
  322. package/dist/components/notifications/flash-toasts.d.ts.map +1 -0
  323. package/dist/components/notifications/flash-toasts.js +121 -0
  324. package/dist/components/notifications/flash-toasts.js.map +1 -0
  325. package/dist/components/notifications/index.d.ts +5 -0
  326. package/dist/components/notifications/notifications-menu.d.ts +15 -0
  327. package/dist/components/notifications/notifications-menu.d.ts.map +1 -0
  328. package/dist/components/notifications/notifications-menu.js +201 -0
  329. package/dist/components/notifications/notifications-menu.js.map +1 -0
  330. package/dist/components/notifications/realtime-notifications.d.ts +9 -0
  331. package/dist/components/notifications/realtime-notifications.d.ts.map +1 -0
  332. package/dist/components/notifications/realtime-notifications.js +30 -0
  333. package/dist/components/notifications/realtime-notifications.js.map +1 -0
  334. package/dist/components/notifications/undo-button.d.ts +13 -0
  335. package/dist/components/notifications/undo-button.d.ts.map +1 -0
  336. package/dist/components/notifications/undo-button.js +54 -0
  337. package/dist/components/notifications/undo-button.js.map +1 -0
  338. package/dist/components/panel/app-sidebar.d.ts +7 -0
  339. package/dist/components/panel/app-sidebar.d.ts.map +1 -0
  340. package/dist/components/panel/app-sidebar.js +302 -0
  341. package/dist/components/panel/app-sidebar.js.map +1 -0
  342. package/dist/components/panel/bottom-nav.d.ts +9 -0
  343. package/dist/components/panel/bottom-nav.d.ts.map +1 -0
  344. package/dist/components/panel/bottom-nav.js +100 -0
  345. package/dist/components/panel/bottom-nav.js.map +1 -0
  346. package/dist/components/panel/debug-panel-slot.d.ts +8 -0
  347. package/dist/components/panel/debug-panel-slot.d.ts.map +1 -0
  348. package/dist/components/panel/debug-panel-slot.js +19 -0
  349. package/dist/components/panel/debug-panel-slot.js.map +1 -0
  350. package/dist/components/panel/debug-panel.d.ts +18 -0
  351. package/dist/components/panel/debug-panel.d.ts.map +1 -0
  352. package/dist/components/panel/debug-panel.js +423 -0
  353. package/dist/components/panel/debug-panel.js.map +1 -0
  354. package/dist/components/panel/global-search-palette.js +278 -0
  355. package/dist/components/panel/global-search-palette.js.map +1 -0
  356. package/dist/components/panel/global-search.d.ts +13 -0
  357. package/dist/components/panel/global-search.d.ts.map +1 -0
  358. package/dist/components/panel/global-search.js +114 -0
  359. package/dist/components/panel/global-search.js.map +1 -0
  360. package/dist/components/panel/impersonation-banner.d.ts +11 -0
  361. package/dist/components/panel/impersonation-banner.d.ts.map +1 -0
  362. package/dist/components/panel/impersonation-banner.js +52 -0
  363. package/dist/components/panel/impersonation-banner.js.map +1 -0
  364. package/dist/components/panel/index.d.ts +18 -0
  365. package/dist/components/panel/keyboard-shortcuts.d.ts +10 -0
  366. package/dist/components/panel/keyboard-shortcuts.d.ts.map +1 -0
  367. package/dist/components/panel/keyboard-shortcuts.js +107 -0
  368. package/dist/components/panel/keyboard-shortcuts.js.map +1 -0
  369. package/dist/components/panel/lazy-placeholder.d.ts +11 -0
  370. package/dist/components/panel/lazy-placeholder.d.ts.map +1 -0
  371. package/dist/components/panel/lazy-placeholder.js +35 -0
  372. package/dist/components/panel/lazy-placeholder.js.map +1 -0
  373. package/dist/components/panel/locale-switcher.d.ts +19 -0
  374. package/dist/components/panel/locale-switcher.d.ts.map +1 -0
  375. package/dist/components/panel/locale-switcher.js +113 -0
  376. package/dist/components/panel/locale-switcher.js.map +1 -0
  377. package/dist/components/panel/menu-item.js +65 -0
  378. package/dist/components/panel/menu-item.js.map +1 -0
  379. package/dist/components/panel/nav-label.js +29 -0
  380. package/dist/components/panel/nav-label.js.map +1 -0
  381. package/dist/components/panel/pwa.d.ts +13 -0
  382. package/dist/components/panel/pwa.d.ts.map +1 -0
  383. package/dist/components/panel/pwa.js +90 -0
  384. package/dist/components/panel/pwa.js.map +1 -0
  385. package/dist/components/panel/schema-contract-guard.js +44 -0
  386. package/dist/components/panel/schema-contract-guard.js.map +1 -0
  387. package/dist/components/panel/shortcut-keys.d.ts +11 -0
  388. package/dist/components/panel/shortcut-keys.d.ts.map +1 -0
  389. package/dist/components/panel/shortcut-keys.js +33 -0
  390. package/dist/components/panel/shortcut-keys.js.map +1 -0
  391. package/dist/components/panel/shortcuts-overlay.d.ts +13 -0
  392. package/dist/components/panel/shortcuts-overlay.d.ts.map +1 -0
  393. package/dist/components/panel/shortcuts-overlay.js +159 -0
  394. package/dist/components/panel/shortcuts-overlay.js.map +1 -0
  395. package/dist/components/panel/slot.d.ts +18 -0
  396. package/dist/components/panel/slot.d.ts.map +1 -0
  397. package/dist/components/panel/slot.js +31 -0
  398. package/dist/components/panel/slot.js.map +1 -0
  399. package/dist/components/panel/sub-navigation.js +125 -0
  400. package/dist/components/panel/sub-navigation.js.map +1 -0
  401. package/dist/components/panel/tenant-menu.d.ts +10 -0
  402. package/dist/components/panel/tenant-menu.d.ts.map +1 -0
  403. package/dist/components/panel/tenant-menu.js +196 -0
  404. package/dist/components/panel/tenant-menu.js.map +1 -0
  405. package/dist/components/panel/theme-toggle.d.ts +4 -0
  406. package/dist/components/panel/theme-toggle.d.ts.map +1 -0
  407. package/dist/components/panel/theme-toggle.js +84 -0
  408. package/dist/components/panel/theme-toggle.js.map +1 -0
  409. package/dist/components/panel/topbar.d.ts +10 -0
  410. package/dist/components/panel/topbar.d.ts.map +1 -0
  411. package/dist/components/panel/topbar.js +74 -0
  412. package/dist/components/panel/topbar.js.map +1 -0
  413. package/dist/components/panel/user-menu.d.ts +16 -0
  414. package/dist/components/panel/user-menu.d.ts.map +1 -0
  415. package/dist/components/panel/user-menu.js +151 -0
  416. package/dist/components/panel/user-menu.js.map +1 -0
  417. package/dist/components/realtime/conflict-banner.d.ts +13 -0
  418. package/dist/components/realtime/conflict-banner.d.ts.map +1 -0
  419. package/dist/components/realtime/conflict-banner.js +193 -0
  420. package/dist/components/realtime/conflict-banner.js.map +1 -0
  421. package/dist/components/realtime/index.d.ts +4 -0
  422. package/dist/components/realtime/index.js +4 -0
  423. package/dist/components/realtime/live-records-pill.d.ts +19 -0
  424. package/dist/components/realtime/live-records-pill.d.ts.map +1 -0
  425. package/dist/components/realtime/live-records-pill.js +57 -0
  426. package/dist/components/realtime/live-records-pill.js.map +1 -0
  427. package/dist/components/realtime/record-presence.d.ts +12 -0
  428. package/dist/components/realtime/record-presence.d.ts.map +1 -0
  429. package/dist/components/realtime/record-presence.js +79 -0
  430. package/dist/components/realtime/record-presence.js.map +1 -0
  431. package/dist/components/schema/content-slot.js +49 -0
  432. package/dist/components/schema/content-slot.js.map +1 -0
  433. package/dist/components/schema/field-actions.js +72 -0
  434. package/dist/components/schema/field-actions.js.map +1 -0
  435. package/dist/components/schema/field-wrapper.d.ts +20 -0
  436. package/dist/components/schema/field-wrapper.d.ts.map +1 -0
  437. package/dist/components/schema/field-wrapper.js +210 -0
  438. package/dist/components/schema/field-wrapper.js.map +1 -0
  439. package/dist/components/schema/fused-group-context.js +14 -0
  440. package/dist/components/schema/fused-group-context.js.map +1 -0
  441. package/dist/components/schema/schema-renderer.d.ts +23 -0
  442. package/dist/components/schema/schema-renderer.d.ts.map +1 -0
  443. package/dist/components/schema/schema-renderer.js +77 -0
  444. package/dist/components/schema/schema-renderer.js.map +1 -0
  445. package/dist/components/schema/translatable-field.js +76 -0
  446. package/dist/components/schema/translatable-field.js.map +1 -0
  447. package/dist/components/schema/virtual-spacer.js +23 -0
  448. package/dist/components/schema/virtual-spacer.js.map +1 -0
  449. package/dist/components/table/cells.d.ts +12 -0
  450. package/dist/components/table/cells.d.ts.map +1 -0
  451. package/dist/components/table/cells.js +472 -0
  452. package/dist/components/table/cells.js.map +1 -0
  453. package/dist/components/table/column-manager.d.ts +17 -0
  454. package/dist/components/table/column-manager.d.ts.map +1 -0
  455. package/dist/components/table/column-manager.js +338 -0
  456. package/dist/components/table/column-manager.js.map +1 -0
  457. package/dist/components/table/content-layout.d.ts +30 -0
  458. package/dist/components/table/content-layout.d.ts.map +1 -0
  459. package/dist/components/table/content-layout.js +224 -0
  460. package/dist/components/table/content-layout.js.map +1 -0
  461. package/dist/components/table/filters.d.ts +15 -0
  462. package/dist/components/table/filters.d.ts.map +1 -0
  463. package/dist/components/table/filters.js +300 -0
  464. package/dist/components/table/filters.js.map +1 -0
  465. package/dist/components/table/grouping.js +194 -0
  466. package/dist/components/table/grouping.js.map +1 -0
  467. package/dist/components/table/index.d.ts +10 -0
  468. package/dist/components/table/list-tabs.js +105 -0
  469. package/dist/components/table/list-tabs.js.map +1 -0
  470. package/dist/components/table/pagination.d.ts +7 -0
  471. package/dist/components/table/pagination.d.ts.map +1 -0
  472. package/dist/components/table/pagination.js +255 -0
  473. package/dist/components/table/pagination.js.map +1 -0
  474. package/dist/components/table/record-cell.d.ts +25 -0
  475. package/dist/components/table/record-cell.d.ts.map +1 -0
  476. package/dist/components/table/record-cell.js +86 -0
  477. package/dist/components/table/record-cell.js.map +1 -0
  478. package/dist/components/table/spreadsheet-lazy.d.ts +7 -0
  479. package/dist/components/table/spreadsheet-lazy.d.ts.map +1 -0
  480. package/dist/components/table/spreadsheet-lazy.js +15 -0
  481. package/dist/components/table/spreadsheet-lazy.js.map +1 -0
  482. package/dist/components/table/spreadsheet.d.ts +11 -0
  483. package/dist/components/table/spreadsheet.d.ts.map +1 -0
  484. package/dist/components/table/spreadsheet.js +420 -0
  485. package/dist/components/table/spreadsheet.js.map +1 -0
  486. package/dist/components/table/summary-rows.js +104 -0
  487. package/dist/components/table/summary-rows.js.map +1 -0
  488. package/dist/components/table/table-block.d.ts +12 -0
  489. package/dist/components/table/table-block.d.ts.map +1 -0
  490. package/dist/components/table/table-block.js +875 -0
  491. package/dist/components/table/table-block.js.map +1 -0
  492. package/dist/components/table/table-views.d.ts +15 -0
  493. package/dist/components/table/table-views.d.ts.map +1 -0
  494. package/dist/components/table/table-views.js +376 -0
  495. package/dist/components/table/table-views.js.map +1 -0
  496. package/dist/components/table/trigger-button.js +44 -0
  497. package/dist/components/table/trigger-button.js.map +1 -0
  498. package/dist/components/translation-manager/index.d.ts +2 -0
  499. package/dist/components/translation-manager/index.js +2 -0
  500. package/dist/components/translation-manager/translation-manager-lazy.d.ts +9 -0
  501. package/dist/components/translation-manager/translation-manager-lazy.d.ts.map +1 -0
  502. package/dist/components/translation-manager/translation-manager-lazy.js +24 -0
  503. package/dist/components/translation-manager/translation-manager-lazy.js.map +1 -0
  504. package/dist/components/translation-manager/translation-manager.js +719 -0
  505. package/dist/components/translation-manager/translation-manager.js.map +1 -0
  506. package/dist/components/tree/index.d.ts +2 -0
  507. package/dist/components/tree/index.js +2 -0
  508. package/dist/components/tree/tree-lazy.d.ts +10 -0
  509. package/dist/components/tree/tree-lazy.d.ts.map +1 -0
  510. package/dist/components/tree/tree-lazy.js +24 -0
  511. package/dist/components/tree/tree-lazy.js.map +1 -0
  512. package/dist/components/tree/tree.js +291 -0
  513. package/dist/components/tree/tree.js.map +1 -0
  514. package/dist/components/ui/alert.d.ts +12 -0
  515. package/dist/components/ui/alert.d.ts.map +1 -0
  516. package/dist/components/ui/alert.js +37 -0
  517. package/dist/components/ui/alert.js.map +1 -0
  518. package/dist/components/ui/avatar.d.ts +9 -0
  519. package/dist/components/ui/avatar.d.ts.map +1 -0
  520. package/dist/components/ui/avatar.js +29 -0
  521. package/dist/components/ui/avatar.js.map +1 -0
  522. package/dist/components/ui/badge.d.ts +12 -0
  523. package/dist/components/ui/badge.d.ts.map +1 -0
  524. package/dist/components/ui/badge.js +26 -0
  525. package/dist/components/ui/badge.js.map +1 -0
  526. package/dist/components/ui/breadcrumb.d.ts +14 -0
  527. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  528. package/dist/components/ui/breadcrumb.js +79 -0
  529. package/dist/components/ui/breadcrumb.js.map +1 -0
  530. package/dist/components/ui/button.d.ts +13 -0
  531. package/dist/components/ui/button.d.ts.map +1 -0
  532. package/dist/components/ui/button.js +47 -0
  533. package/dist/components/ui/button.js.map +1 -0
  534. package/dist/components/ui/calendar.d.ts +7 -0
  535. package/dist/components/ui/calendar.d.ts.map +1 -0
  536. package/dist/components/ui/calendar.js +48 -0
  537. package/dist/components/ui/calendar.js.map +1 -0
  538. package/dist/components/ui/card.d.ts +12 -0
  539. package/dist/components/ui/card.d.ts.map +1 -0
  540. package/dist/components/ui/card.js +56 -0
  541. package/dist/components/ui/card.js.map +1 -0
  542. package/dist/components/ui/checkbox.d.ts +7 -0
  543. package/dist/components/ui/checkbox.d.ts.map +1 -0
  544. package/dist/components/ui/checkbox.js +21 -0
  545. package/dist/components/ui/checkbox.js.map +1 -0
  546. package/dist/components/ui/collapsible.d.ts +9 -0
  547. package/dist/components/ui/collapsible.d.ts.map +1 -0
  548. package/dist/components/ui/collapsible.js +25 -0
  549. package/dist/components/ui/collapsible.js.map +1 -0
  550. package/dist/components/ui/command.d.ts +23 -0
  551. package/dist/components/ui/command.d.ts.map +1 -0
  552. package/dist/components/ui/command.js +89 -0
  553. package/dist/components/ui/command.js.map +1 -0
  554. package/dist/components/ui/dialog.d.ts +18 -0
  555. package/dist/components/ui/dialog.d.ts.map +1 -0
  556. package/dist/components/ui/dialog.js +92 -0
  557. package/dist/components/ui/dialog.js.map +1 -0
  558. package/dist/components/ui/dropdown-menu.d.ts +28 -0
  559. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  560. package/dist/components/ui/dropdown-menu.js +123 -0
  561. package/dist/components/ui/dropdown-menu.js.map +1 -0
  562. package/dist/components/ui/input.d.ts +6 -0
  563. package/dist/components/ui/input.d.ts.map +1 -0
  564. package/dist/components/ui/input.js +15 -0
  565. package/dist/components/ui/input.js.map +1 -0
  566. package/dist/components/ui/label.d.ts +7 -0
  567. package/dist/components/ui/label.d.ts.map +1 -0
  568. package/dist/components/ui/label.js +15 -0
  569. package/dist/components/ui/label.js.map +1 -0
  570. package/dist/components/ui/popover.d.ts +10 -0
  571. package/dist/components/ui/popover.d.ts.map +1 -0
  572. package/dist/components/ui/popover.js +35 -0
  573. package/dist/components/ui/popover.js.map +1 -0
  574. package/dist/components/ui/radio-group.d.ts +8 -0
  575. package/dist/components/ui/radio-group.d.ts.map +1 -0
  576. package/dist/components/ui/radio-group.js +28 -0
  577. package/dist/components/ui/radio-group.js.map +1 -0
  578. package/dist/components/ui/scroll-area.d.ts +8 -0
  579. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  580. package/dist/components/ui/scroll-area.js +36 -0
  581. package/dist/components/ui/scroll-area.js.map +1 -0
  582. package/dist/components/ui/select.d.ts +18 -0
  583. package/dist/components/ui/select.d.ts.map +1 -0
  584. package/dist/components/ui/select.js +96 -0
  585. package/dist/components/ui/select.js.map +1 -0
  586. package/dist/components/ui/separator.d.ts +7 -0
  587. package/dist/components/ui/separator.d.ts.map +1 -0
  588. package/dist/components/ui/separator.js +17 -0
  589. package/dist/components/ui/separator.js.map +1 -0
  590. package/dist/components/ui/sheet.d.ts +17 -0
  591. package/dist/components/ui/sheet.d.ts.map +1 -0
  592. package/dist/components/ui/sheet.js +89 -0
  593. package/dist/components/ui/sheet.js.map +1 -0
  594. package/dist/components/ui/sidebar.d.ts +72 -0
  595. package/dist/components/ui/sidebar.d.ts.map +1 -0
  596. package/dist/components/ui/sidebar.js +376 -0
  597. package/dist/components/ui/sidebar.js.map +1 -0
  598. package/dist/components/ui/skeleton.d.ts +6 -0
  599. package/dist/components/ui/skeleton.d.ts.map +1 -0
  600. package/dist/components/ui/skeleton.js +14 -0
  601. package/dist/components/ui/skeleton.js.map +1 -0
  602. package/dist/components/ui/sonner.d.ts +6 -0
  603. package/dist/components/ui/sonner.d.ts.map +1 -0
  604. package/dist/components/ui/sonner.js +34 -0
  605. package/dist/components/ui/sonner.js.map +1 -0
  606. package/dist/components/ui/spinner.d.ts +10 -0
  607. package/dist/components/ui/spinner.d.ts.map +1 -0
  608. package/dist/components/ui/spinner.js +30 -0
  609. package/dist/components/ui/spinner.js.map +1 -0
  610. package/dist/components/ui/switch.d.ts +7 -0
  611. package/dist/components/ui/switch.d.ts.map +1 -0
  612. package/dist/components/ui/switch.js +19 -0
  613. package/dist/components/ui/switch.js.map +1 -0
  614. package/dist/components/ui/table.d.ts +13 -0
  615. package/dist/components/ui/table.d.ts.map +1 -0
  616. package/dist/components/ui/table.js +67 -0
  617. package/dist/components/ui/table.js.map +1 -0
  618. package/dist/components/ui/tabs.d.ts +10 -0
  619. package/dist/components/ui/tabs.d.ts.map +1 -0
  620. package/dist/components/ui/tabs.js +36 -0
  621. package/dist/components/ui/tabs.js.map +1 -0
  622. package/dist/components/ui/textarea.d.ts +6 -0
  623. package/dist/components/ui/textarea.d.ts.map +1 -0
  624. package/dist/components/ui/textarea.js +14 -0
  625. package/dist/components/ui/textarea.js.map +1 -0
  626. package/dist/components/ui/tooltip.d.ts +10 -0
  627. package/dist/components/ui/tooltip.d.ts.map +1 -0
  628. package/dist/components/ui/tooltip.js +36 -0
  629. package/dist/components/ui/tooltip.js.map +1 -0
  630. package/dist/components/versions/record-versions.d.ts +12 -0
  631. package/dist/components/versions/record-versions.d.ts.map +1 -0
  632. package/dist/components/versions/record-versions.js +138 -0
  633. package/dist/components/versions/record-versions.js.map +1 -0
  634. package/dist/components/widgets/calendar-lazy.d.ts +9 -0
  635. package/dist/components/widgets/calendar-lazy.d.ts.map +1 -0
  636. package/dist/components/widgets/calendar-lazy.js +47 -0
  637. package/dist/components/widgets/calendar-lazy.js.map +1 -0
  638. package/dist/components/widgets/calendar.js +122 -0
  639. package/dist/components/widgets/calendar.js.map +1 -0
  640. package/dist/components/widgets/chart-filters.js +101 -0
  641. package/dist/components/widgets/chart-filters.js.map +1 -0
  642. package/dist/components/widgets/chart-lazy.d.ts +9 -0
  643. package/dist/components/widgets/chart-lazy.d.ts.map +1 -0
  644. package/dist/components/widgets/chart-lazy.js +27 -0
  645. package/dist/components/widgets/chart-lazy.js.map +1 -0
  646. package/dist/components/widgets/chart.js +216 -0
  647. package/dist/components/widgets/chart.js.map +1 -0
  648. package/dist/components/widgets/dashboard-customizer.d.ts +15 -0
  649. package/dist/components/widgets/dashboard-customizer.d.ts.map +1 -0
  650. package/dist/components/widgets/dashboard-customizer.js +219 -0
  651. package/dist/components/widgets/dashboard-customizer.js.map +1 -0
  652. package/dist/components/widgets/index.d.ts +6 -0
  653. package/dist/components/widgets/stats-overview.d.ts +7 -0
  654. package/dist/components/widgets/stats-overview.d.ts.map +1 -0
  655. package/dist/components/widgets/stats-overview.js +133 -0
  656. package/dist/components/widgets/stats-overview.js.map +1 -0
  657. package/dist/components/widgets/widgets-block.d.ts +10 -0
  658. package/dist/components/widgets/widgets-block.d.ts.map +1 -0
  659. package/dist/components/widgets/widgets-block.js +72 -0
  660. package/dist/components/widgets/widgets-block.js.map +1 -0
  661. package/dist/context.d.ts +55 -0
  662. package/dist/context.d.ts.map +1 -0
  663. package/dist/context.js +115 -0
  664. package/dist/context.js.map +1 -0
  665. package/dist/create-alfakit.d.ts +25 -0
  666. package/dist/create-alfakit.d.ts.map +1 -0
  667. package/dist/create-alfakit.js +182 -0
  668. package/dist/create-alfakit.js.map +1 -0
  669. package/dist/eject-manifest.json +1128 -0
  670. package/dist/hooks/use-hydrated.d.ts +9 -0
  671. package/dist/hooks/use-hydrated.d.ts.map +1 -0
  672. package/dist/hooks/use-hydrated.js +15 -0
  673. package/dist/hooks/use-hydrated.js.map +1 -0
  674. package/dist/hooks/use-mobile.d.ts +8 -0
  675. package/dist/hooks/use-mobile.d.ts.map +1 -0
  676. package/dist/hooks/use-mobile.js +21 -0
  677. package/dist/hooks/use-mobile.js.map +1 -0
  678. package/dist/hooks/use-store.d.ts +7 -0
  679. package/dist/hooks/use-store.d.ts.map +1 -0
  680. package/dist/hooks/use-store.js +13 -0
  681. package/dist/hooks/use-store.js.map +1 -0
  682. package/dist/hooks/use-virtual-list.d.ts +29 -0
  683. package/dist/hooks/use-virtual-list.d.ts.map +1 -0
  684. package/dist/hooks/use-virtual-list.js +73 -0
  685. package/dist/hooks/use-virtual-list.js.map +1 -0
  686. package/dist/index.d.ts +180 -0
  687. package/dist/index.js +161 -0
  688. package/dist/layouts/app-layout.d.ts +11 -0
  689. package/dist/layouts/app-layout.d.ts.map +1 -0
  690. package/dist/layouts/app-layout.js +104 -0
  691. package/dist/layouts/app-layout.js.map +1 -0
  692. package/dist/layouts/auth-layout.d.ts +11 -0
  693. package/dist/layouts/auth-layout.d.ts.map +1 -0
  694. package/dist/layouts/auth-layout.js +65 -0
  695. package/dist/layouts/auth-layout.js.map +1 -0
  696. package/dist/layouts/blank-layout.d.ts +7 -0
  697. package/dist/layouts/blank-layout.d.ts.map +1 -0
  698. package/dist/layouts/blank-layout.js +12 -0
  699. package/dist/layouts/blank-layout.js.map +1 -0
  700. package/dist/layouts/fullscreen-layout.d.ts +16 -0
  701. package/dist/layouts/fullscreen-layout.d.ts.map +1 -0
  702. package/dist/layouts/fullscreen-layout.js +107 -0
  703. package/dist/layouts/fullscreen-layout.js.map +1 -0
  704. package/dist/layouts/top-nav-layout.d.ts +15 -0
  705. package/dist/layouts/top-nav-layout.d.ts.map +1 -0
  706. package/dist/layouts/top-nav-layout.js +223 -0
  707. package/dist/layouts/top-nav-layout.js.map +1 -0
  708. package/dist/lib/attributes.d.ts +12 -0
  709. package/dist/lib/attributes.d.ts.map +1 -0
  710. package/dist/lib/attributes.js +55 -0
  711. package/dist/lib/attributes.js.map +1 -0
  712. package/dist/lib/colors.d.ts +23 -0
  713. package/dist/lib/colors.d.ts.map +1 -0
  714. package/dist/lib/colors.js +126 -0
  715. package/dist/lib/colors.js.map +1 -0
  716. package/dist/lib/discovery.d.ts +22 -0
  717. package/dist/lib/discovery.d.ts.map +1 -0
  718. package/dist/lib/discovery.js +45 -0
  719. package/dist/lib/discovery.js.map +1 -0
  720. package/dist/lib/icons.d.ts +24 -0
  721. package/dist/lib/icons.d.ts.map +1 -0
  722. package/dist/lib/icons.js +93 -0
  723. package/dist/lib/icons.js.map +1 -0
  724. package/dist/lib/lazy.d.ts +8 -0
  725. package/dist/lib/lazy.d.ts.map +1 -0
  726. package/dist/lib/lazy.js +47 -0
  727. package/dist/lib/lazy.js.map +1 -0
  728. package/dist/lib/new-tab-hint.js +15 -0
  729. package/dist/lib/new-tab-hint.js.map +1 -0
  730. package/dist/lib/utils.d.ts +5 -0
  731. package/dist/lib/utils.d.ts.map +1 -0
  732. package/dist/lib/utils.js +10 -0
  733. package/dist/lib/utils.js.map +1 -0
  734. package/dist/pages/page.d.ts +23 -0
  735. package/dist/pages/page.d.ts.map +1 -0
  736. package/dist/pages/page.js +328 -0
  737. package/dist/pages/page.js.map +1 -0
  738. package/dist/registry.d.ts +7 -0
  739. package/dist/registry.d.ts.map +1 -0
  740. package/dist/registry.js +113 -0
  741. package/dist/registry.js.map +1 -0
  742. package/dist/server.d.ts +28 -0
  743. package/dist/server.d.ts.map +1 -0
  744. package/dist/server.js +38 -0
  745. package/dist/server.js.map +1 -0
  746. package/dist/standalone/alfakit-component.d.ts +30 -0
  747. package/dist/standalone/alfakit-component.d.ts.map +1 -0
  748. package/dist/standalone/alfakit-component.js +156 -0
  749. package/dist/standalone/alfakit-component.js.map +1 -0
  750. package/dist/standalone/alfakit-toaster.d.ts +26 -0
  751. package/dist/standalone/alfakit-toaster.d.ts.map +1 -0
  752. package/dist/standalone/alfakit-toaster.js +38 -0
  753. package/dist/standalone/alfakit-toaster.js.map +1 -0
  754. package/dist/standalone/configure.d.ts +14 -0
  755. package/dist/standalone/configure.d.ts.map +1 -0
  756. package/dist/standalone/configure.js +27 -0
  757. package/dist/standalone/configure.js.map +1 -0
  758. package/dist/standalone/index.d.ts +4 -0
  759. package/dist/standalone/runtime.js +94 -0
  760. package/dist/standalone/runtime.js.map +1 -0
  761. package/dist/standalone.css +150 -0
  762. package/dist/starter-kit/index.d.ts +4 -0
  763. package/dist/starter-kit/index.js +4 -0
  764. package/dist/starter-kit/navigation.d.ts +20 -0
  765. package/dist/starter-kit/navigation.d.ts.map +1 -0
  766. package/dist/starter-kit/navigation.js +25 -0
  767. package/dist/starter-kit/navigation.js.map +1 -0
  768. package/dist/starter-kit/starter-kit.d.ts +56 -0
  769. package/dist/starter-kit/starter-kit.d.ts.map +1 -0
  770. package/dist/starter-kit/starter-kit.js +120 -0
  771. package/dist/starter-kit/starter-kit.js.map +1 -0
  772. package/dist/starter-kit/widgets-loaded.js +172 -0
  773. package/dist/starter-kit/widgets-loaded.js.map +1 -0
  774. package/dist/starter-kit/widgets-triggers.js +90 -0
  775. package/dist/starter-kit/widgets-triggers.js.map +1 -0
  776. package/dist/starter-kit/widgets.d.ts +38 -0
  777. package/dist/starter-kit/widgets.d.ts.map +1 -0
  778. package/dist/starter-kit/widgets.js +64 -0
  779. package/dist/starter-kit/widgets.js.map +1 -0
  780. package/dist/styles.css +305 -0
  781. package/dist/themes.css +1340 -0
  782. package/package.json +128 -3
  783. package/src/app/components.tsx +104 -0
  784. package/src/app/hooks.ts +365 -0
  785. package/src/components/actions/action-button.tsx +254 -0
  786. package/src/components/actions/action-context.tsx +23 -0
  787. package/src/components/actions/action-list.tsx +356 -0
  788. package/src/components/actions/action-modals.tsx +479 -0
  789. package/src/components/actions/index.ts +4 -0
  790. package/src/components/ai/copilot-panel.tsx +517 -0
  791. package/src/components/ai/copilot.tsx +82 -0
  792. package/src/components/ai/index.ts +2 -0
  793. package/src/components/ai/stream-lazy.tsx +8 -0
  794. package/src/components/ai/stream.tsx +100 -0
  795. package/src/components/analytics/alfakit-analytics.tsx +27 -0
  796. package/src/components/analytics/breakdown.tsx +150 -0
  797. package/src/components/analytics/index.ts +2 -0
  798. package/src/components/cms/admin-bar.tsx +66 -0
  799. package/src/components/cms/blocks.tsx +474 -0
  800. package/src/components/cms/context.tsx +57 -0
  801. package/src/components/cms/head.tsx +47 -0
  802. package/src/components/cms/index.ts +23 -0
  803. package/src/components/cms/live-preview-lazy.tsx +8 -0
  804. package/src/components/cms/live-preview.tsx +339 -0
  805. package/src/components/cms/menu.tsx +246 -0
  806. package/src/components/cms/page.tsx +219 -0
  807. package/src/components/cms/parts.tsx +84 -0
  808. package/src/components/dev-tools/dev-tools-inspector.tsx +374 -0
  809. package/src/components/dev-tools/dev-tools-slot.tsx +28 -0
  810. package/src/components/entries/code-entry.tsx +73 -0
  811. package/src/components/entries/entry-wrapper.tsx +171 -0
  812. package/src/components/entries/index.ts +11 -0
  813. package/src/components/entries/other-entries.tsx +235 -0
  814. package/src/components/entries/repeatable-entry-table.tsx +50 -0
  815. package/src/components/entries/text-entry.tsx +264 -0
  816. package/src/components/entries/view-entry.tsx +27 -0
  817. package/src/components/fields/builder-picker.tsx +323 -0
  818. package/src/components/fields/builder.tsx +537 -0
  819. package/src/components/fields/checkbox-list.tsx +181 -0
  820. package/src/components/fields/checkbox.tsx +26 -0
  821. package/src/components/fields/code-editor-lazy.tsx +33 -0
  822. package/src/components/fields/code-editor.tsx +157 -0
  823. package/src/components/fields/code-tokens.ts +15 -0
  824. package/src/components/fields/color-picker.tsx +72 -0
  825. package/src/components/fields/date-picker.tsx +336 -0
  826. package/src/components/fields/file-upload.tsx +643 -0
  827. package/src/components/fields/hidden.tsx +8 -0
  828. package/src/components/fields/icon-picker-lazy.tsx +44 -0
  829. package/src/components/fields/icon-picker-value.tsx +46 -0
  830. package/src/components/fields/icon-picker.tsx +293 -0
  831. package/src/components/fields/image-editor-dialog-lazy.tsx +22 -0
  832. package/src/components/fields/image-editor-dialog.tsx +431 -0
  833. package/src/components/fields/index.ts +23 -0
  834. package/src/components/fields/item-actions.tsx +381 -0
  835. package/src/components/fields/key-value.tsx +218 -0
  836. package/src/components/fields/lazy-fields.tsx +30 -0
  837. package/src/components/fields/modal-table-select.tsx +519 -0
  838. package/src/components/fields/money-input.tsx +132 -0
  839. package/src/components/fields/one-time-code-input.tsx +56 -0
  840. package/src/components/fields/query-builder-rules.tsx +444 -0
  841. package/src/components/fields/radio.tsx +67 -0
  842. package/src/components/fields/repeater-table.tsx +185 -0
  843. package/src/components/fields/repeater.tsx +317 -0
  844. package/src/components/fields/rich-editor-extensions.tsx +470 -0
  845. package/src/components/fields/rich-editor-lazy.tsx +21 -0
  846. package/src/components/fields/rich-editor.tsx +815 -0
  847. package/src/components/fields/select.tsx +667 -0
  848. package/src/components/fields/slider.tsx +262 -0
  849. package/src/components/fields/tags-input.tsx +176 -0
  850. package/src/components/fields/text-input.tsx +179 -0
  851. package/src/components/fields/textarea.tsx +37 -0
  852. package/src/components/fields/toggle-buttons.tsx +125 -0
  853. package/src/components/fields/toggle.tsx +50 -0
  854. package/src/components/file-manager/file-manager-lazy.tsx +52 -0
  855. package/src/components/file-manager/file-manager.tsx +1857 -0
  856. package/src/components/file-manager/index.ts +2 -0
  857. package/src/components/file-manager/picker-field.tsx +169 -0
  858. package/src/components/form/form-block.tsx +237 -0
  859. package/src/components/form/form-context.tsx +95 -0
  860. package/src/components/helpdesk/chat-panel.tsx +247 -0
  861. package/src/components/helpdesk/chat-widget.tsx +107 -0
  862. package/src/components/helpdesk/inbox-lazy.tsx +42 -0
  863. package/src/components/helpdesk/inbox.tsx +745 -0
  864. package/src/components/helpdesk/index.ts +2 -0
  865. package/src/components/kanban/index.ts +1 -0
  866. package/src/components/kanban/kanban-lazy.tsx +34 -0
  867. package/src/components/kanban/kanban.tsx +788 -0
  868. package/src/components/layout/actions.tsx +48 -0
  869. package/src/components/layout/component-context.ts +31 -0
  870. package/src/components/layout/deferred.tsx +156 -0
  871. package/src/components/layout/elements.tsx +259 -0
  872. package/src/components/layout/fieldset.tsx +35 -0
  873. package/src/components/layout/fused-group.tsx +96 -0
  874. package/src/components/layout/grid.tsx +19 -0
  875. package/src/components/layout/index.ts +18 -0
  876. package/src/components/layout/mixed-content.tsx +59 -0
  877. package/src/components/layout/prime.tsx +168 -0
  878. package/src/components/layout/schema-children.tsx +30 -0
  879. package/src/components/layout/section.tsx +173 -0
  880. package/src/components/layout/tabs.tsx +129 -0
  881. package/src/components/layout/wizard.tsx +244 -0
  882. package/src/components/notifications/flash-toasts.tsx +200 -0
  883. package/src/components/notifications/index.ts +4 -0
  884. package/src/components/notifications/notifications-menu.tsx +262 -0
  885. package/src/components/notifications/realtime-notifications.tsx +40 -0
  886. package/src/components/notifications/undo-button.tsx +50 -0
  887. package/src/components/panel/app-sidebar.tsx +439 -0
  888. package/src/components/panel/bottom-nav.tsx +130 -0
  889. package/src/components/panel/debug-panel-slot.tsx +25 -0
  890. package/src/components/panel/debug-panel.tsx +412 -0
  891. package/src/components/panel/global-search-palette.tsx +387 -0
  892. package/src/components/panel/global-search.tsx +147 -0
  893. package/src/components/panel/impersonation-banner.tsx +47 -0
  894. package/src/components/panel/index.ts +16 -0
  895. package/src/components/panel/keyboard-shortcuts.tsx +134 -0
  896. package/src/components/panel/lazy-placeholder.tsx +39 -0
  897. package/src/components/panel/locale-switcher.tsx +144 -0
  898. package/src/components/panel/menu-item.tsx +89 -0
  899. package/src/components/panel/nav-label.tsx +34 -0
  900. package/src/components/panel/pwa.tsx +118 -0
  901. package/src/components/panel/schema-contract-guard.tsx +50 -0
  902. package/src/components/panel/shortcut-keys.tsx +34 -0
  903. package/src/components/panel/shortcuts-overlay.tsx +238 -0
  904. package/src/components/panel/slot.tsx +43 -0
  905. package/src/components/panel/sub-navigation.tsx +161 -0
  906. package/src/components/panel/tenant-menu.tsx +175 -0
  907. package/src/components/panel/theme-toggle.tsx +69 -0
  908. package/src/components/panel/topbar.tsx +81 -0
  909. package/src/components/panel/user-menu.tsx +166 -0
  910. package/src/components/realtime/conflict-banner.tsx +208 -0
  911. package/src/components/realtime/index.ts +3 -0
  912. package/src/components/realtime/live-records-pill.tsx +66 -0
  913. package/src/components/realtime/record-presence.tsx +98 -0
  914. package/src/components/schema/content-slot.tsx +81 -0
  915. package/src/components/schema/field-actions.tsx +67 -0
  916. package/src/components/schema/field-wrapper.tsx +246 -0
  917. package/src/components/schema/fused-group-context.ts +11 -0
  918. package/src/components/schema/schema-renderer.tsx +127 -0
  919. package/src/components/schema/translatable-field.tsx +113 -0
  920. package/src/components/schema/virtual-spacer.tsx +14 -0
  921. package/src/components/table/cells.tsx +712 -0
  922. package/src/components/table/column-manager.tsx +480 -0
  923. package/src/components/table/content-layout.tsx +368 -0
  924. package/src/components/table/filters.tsx +378 -0
  925. package/src/components/table/grouping.tsx +275 -0
  926. package/src/components/table/index.ts +9 -0
  927. package/src/components/table/list-tabs.tsx +144 -0
  928. package/src/components/table/pagination.tsx +335 -0
  929. package/src/components/table/record-cell.tsx +147 -0
  930. package/src/components/table/spreadsheet-lazy.tsx +14 -0
  931. package/src/components/table/spreadsheet.tsx +602 -0
  932. package/src/components/table/summary-rows.tsx +160 -0
  933. package/src/components/table/table-block.tsx +1112 -0
  934. package/src/components/table/table-views.tsx +460 -0
  935. package/src/components/table/trigger-button.tsx +92 -0
  936. package/src/components/translation-manager/index.ts +1 -0
  937. package/src/components/translation-manager/translation-manager-lazy.tsx +25 -0
  938. package/src/components/translation-manager/translation-manager.tsx +827 -0
  939. package/src/components/tree/index.ts +1 -0
  940. package/src/components/tree/tree-lazy.tsx +30 -0
  941. package/src/components/tree/tree.tsx +385 -0
  942. package/src/components/ui/alert.tsx +57 -0
  943. package/src/components/ui/avatar.tsx +38 -0
  944. package/src/components/ui/badge.tsx +33 -0
  945. package/src/components/ui/breadcrumb.tsx +110 -0
  946. package/src/components/ui/button.tsx +54 -0
  947. package/src/components/ui/calendar.tsx +65 -0
  948. package/src/components/ui/card.tsx +74 -0
  949. package/src/components/ui/checkbox.tsx +30 -0
  950. package/src/components/ui/collapsible.tsx +20 -0
  951. package/src/components/ui/command.tsx +158 -0
  952. package/src/components/ui/dialog.tsx +124 -0
  953. package/src/components/ui/dropdown-menu.tsx +217 -0
  954. package/src/components/ui/input.tsx +20 -0
  955. package/src/components/ui/label.tsx +18 -0
  956. package/src/components/ui/popover.tsx +39 -0
  957. package/src/components/ui/radio-group.tsx +36 -0
  958. package/src/components/ui/scroll-area.tsx +53 -0
  959. package/src/components/ui/select.tsx +165 -0
  960. package/src/components/ui/separator.tsx +25 -0
  961. package/src/components/ui/sheet.tsx +131 -0
  962. package/src/components/ui/sidebar.tsx +660 -0
  963. package/src/components/ui/skeleton.tsx +14 -0
  964. package/src/components/ui/sonner.tsx +43 -0
  965. package/src/components/ui/spinner.tsx +31 -0
  966. package/src/components/ui/switch.tsx +25 -0
  967. package/src/components/ui/table.tsx +89 -0
  968. package/src/components/ui/tabs.tsx +51 -0
  969. package/src/components/ui/textarea.tsx +17 -0
  970. package/src/components/ui/tooltip.tsx +50 -0
  971. package/src/components/versions/record-versions.tsx +162 -0
  972. package/src/components/widgets/calendar-lazy.tsx +31 -0
  973. package/src/components/widgets/calendar.tsx +124 -0
  974. package/src/components/widgets/chart-filters.tsx +114 -0
  975. package/src/components/widgets/chart-lazy.tsx +21 -0
  976. package/src/components/widgets/chart.tsx +252 -0
  977. package/src/components/widgets/dashboard-customizer.tsx +309 -0
  978. package/src/components/widgets/index.ts +5 -0
  979. package/src/components/widgets/stats-overview.tsx +185 -0
  980. package/src/components/widgets/widgets-block.tsx +102 -0
  981. package/src/context.tsx +187 -0
  982. package/src/create-alfakit.tsx +300 -0
  983. package/src/hooks/use-hydrated.ts +16 -0
  984. package/src/hooks/use-mobile.ts +29 -0
  985. package/src/hooks/use-store.ts +18 -0
  986. package/src/hooks/use-virtual-list.ts +88 -0
  987. package/src/index.ts +135 -0
  988. package/src/layouts/app-layout.tsx +128 -0
  989. package/src/layouts/auth-layout.tsx +66 -0
  990. package/src/layouts/blank-layout.tsx +5 -0
  991. package/src/layouts/fullscreen-layout.tsx +86 -0
  992. package/src/layouts/top-nav-layout.tsx +293 -0
  993. package/src/lib/attributes.ts +79 -0
  994. package/src/lib/colors.ts +151 -0
  995. package/src/lib/discovery.tsx +68 -0
  996. package/src/lib/icons.tsx +145 -0
  997. package/src/lib/lazy.tsx +89 -0
  998. package/src/lib/new-tab-hint.tsx +8 -0
  999. package/src/lib/utils.ts +6 -0
  1000. package/src/pages/page.tsx +463 -0
  1001. package/src/registry.ts +132 -0
  1002. package/src/server.tsx +68 -0
  1003. package/src/standalone/alfakit-component.tsx +222 -0
  1004. package/src/standalone/alfakit-toaster.tsx +52 -0
  1005. package/src/standalone/configure.ts +24 -0
  1006. package/src/standalone/index.ts +3 -0
  1007. package/src/standalone/runtime.ts +153 -0
  1008. package/src/starter-kit/index.ts +14 -0
  1009. package/src/starter-kit/navigation.ts +34 -0
  1010. package/src/starter-kit/starter-kit.tsx +196 -0
  1011. package/src/starter-kit/widgets-loaded.tsx +217 -0
  1012. package/src/starter-kit/widgets-triggers.tsx +103 -0
  1013. package/src/starter-kit/widgets.tsx +103 -0
  1014. package/src/styles.css +305 -0
package/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Alfa Six Media and Management W.L.L.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,20 @@
1
- # Temporary Holding Version
1
+ # @alfakit/react
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ <p><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/alfasixbh/alfakit/main/art/alfasix/alfa-six-micro-white.svg"><img src="https://raw.githubusercontent.com/alfasixbh/alfakit/main/art/alfasix/alfa-six-micro-navy.svg" alt="" width="24" height="18" align="top"></picture> <sub>by <a href="https://alfasixbh.com">Alfa Six</a></sub></p>
4
+
5
+ React 19 renderer for AlfaKit, built on shadcn/ui, Radix and Inertia.js.
6
+
7
+ AlfaKit is the frontend-agnostic admin panel builder for Laravel by [Alfa Six](https://alfasixbh.com). Panels, resources, forms, tables and actions are defined in PHP and rendered by this package.
8
+
9
+ ## Install
10
+
11
+ ```bash
12
+ composer require alfasix/alfakit
13
+ php artisan alfakit:install --adapter=react
14
+ ```
15
+
16
+ The installer creates `resources/js/alfakit/app.*` and `resources/css/alfakit.css` and registers them with Vite. See the [documentation](https://alfakit.dev/docs) for custom components, pages and theming.
17
+
18
+ ## License
19
+
20
+ MIT © Alfa Six
@@ -0,0 +1,49 @@
1
+ import { ContentBlock, PageSchema } from "@alfakit/core";
2
+ import { ReactNode } from "react";
3
+ //#region src/app/components.d.ts
4
+ /**
5
+ * Building blocks for custom page components: the page shell with the panel layout, and the
6
+ * page's PHP-defined pieces rendered by name, with live fields, actions, uploads and polling
7
+ * working exactly as on schema-driven pages.
8
+ */
9
+ /** The current page with its lazy components resolved. */
10
+ export declare function useAppPage(): PageSchema | undefined;
11
+ /** A content block of the page by key (`form:customer`, `table`, `headerWidgets`…). */
12
+ export declare function usePageBlock(key: string): ContentBlock | undefined;
13
+ /**
14
+ * The page's layout (sidebar and topbar, `fullscreen`…), heading, header actions and
15
+ * document title around a custom component:
16
+ *
17
+ * ```tsx
18
+ * export default function Pos(props: PosProps) {
19
+ * return <AppPage>…</AppPage>
20
+ * }
21
+ * ```
22
+ */
23
+ export declare function AppPage({ children }: {
24
+ children: ReactNode;
25
+ }): import("react").JSX.Element;
26
+ export interface PageBlockProps {
27
+ /** The block key: `form:customer`, `table:products`, `infolist:summary`, `form`, `table`, `content`… */
28
+ name: string;
29
+ /** Rendered when the page has no such block (e.g. a hidden form). */
30
+ fallback?: ReactNode;
31
+ className?: string;
32
+ }
33
+ /** Render any content block of the page by key. */
34
+ export declare function PageBlock({ name, fallback, className }: PageBlockProps): import("react").JSX.Element;
35
+ type NamedBlockProps = Omit<PageBlockProps, 'name'> & {
36
+ name?: string;
37
+ };
38
+ /** A form defined by `{name}Form(Schema $schema)` (or the page's `form()` without a name). */
39
+ export declare function PageForm({ name, ...props }: NamedBlockProps): import("react").JSX.Element;
40
+ /** A table defined by `{name}Table(Table $table)` (or the page's `table()` without a name). */
41
+ export declare function PageTable({ name, ...props }: NamedBlockProps): import("react").JSX.Element;
42
+ /** An infolist defined by `{name}Infolist(Schema $schema)` (or the page's `infolist()`). */
43
+ export declare function PageInfolist({ name, ...props }: NamedBlockProps): import("react").JSX.Element;
44
+ /** The page's header (default) or footer widgets. */
45
+ export declare function PageWidgets({ position, ...props }: Omit<PageBlockProps, 'name'> & {
46
+ position?: 'header' | 'footer';
47
+ }): import("react").JSX.Element;
48
+ //#endregion
49
+ //# sourceMappingURL=components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.d.ts","names":[],"sources":["../../src/app/components.tsx"],"mappings":";;;;;;;;;wBAegB,cAAc;;wBAWd,aAAa,cAAc;;;;;;;;;;;wBAgB3B,UAAU;EAAc,UAAU;oBAAW,IAAA;iBAc5C;;EAEf;;EAEA,WAAW;EACX;;;wBAIc,YAAY,MAAM,UAAiB,aAAa,iCAAc,IAAA;KAezE,kBAAkB,KAAK;EAA4B;;;wBAGxC,WAAW,SAAS,SAAS,kCAAe,IAAA;;wBAK5C,YAAY,SAAS,SAAS,kCAAe,IAAA;;wBAK7C,eAAe,SAAS,SAAS,kCAAe,IAAA;;wBAKhD,cACd,aACG,SACF,KAAK;EAA4B;oBAAgC,IAAA"}
@@ -0,0 +1,99 @@
1
+ import { useAlfakitProps, usePageSchema, usePanel } from "../context.js";
2
+ import { PageActionProvider } from "../components/actions/action-context.js";
3
+ import { cn } from "../lib/utils.js";
4
+ import { ContentBlockRenderer, PageShell } from "../pages/page.js";
5
+ import { resolveLazyComponents } from "@alfakit/core";
6
+ import { Head } from "@inertiajs/react";
7
+ import { useMemo } from "react";
8
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
+ //#region src/app/components.tsx
10
+ /**
11
+ * Building blocks for custom page components: the page shell with the panel layout, and the
12
+ * page's PHP-defined pieces rendered by name, with live fields, actions, uploads and polling
13
+ * working exactly as on schema-driven pages.
14
+ */
15
+ /** The current page with its lazy components resolved. */
16
+ function useAppPage() {
17
+ const props = useAlfakitProps();
18
+ const page = usePageSchema();
19
+ return useMemo(() => page ? resolveLazyComponents(page, props.alfakitLazy) : void 0, [page, props.alfakitLazy]);
20
+ }
21
+ /** A content block of the page by key (`form:customer`, `table`, `headerWidgets`…). */
22
+ function usePageBlock(key) {
23
+ return useAppPage()?.content.find((block) => block.key === key);
24
+ }
25
+ /**
26
+ * The page's layout (sidebar and topbar, `fullscreen`…), heading, header actions and
27
+ * document title around a custom component:
28
+ *
29
+ * ```tsx
30
+ * export default function Pos(props: PosProps) {
31
+ * return <AppPage>…</AppPage>
32
+ * }
33
+ * ```
34
+ */
35
+ function AppPage({ children }) {
36
+ const page = useAppPage();
37
+ const panel = usePanel();
38
+ if (!page) return /* @__PURE__ */ jsx(Fragment$1, { children });
39
+ return /* @__PURE__ */ jsxs(PageActionProvider, {
40
+ value: {
41
+ token: page.token,
42
+ component: "page"
43
+ },
44
+ children: [/* @__PURE__ */ jsx(Head, { title: `${page.title} - ${panel.brandName}` }), /* @__PURE__ */ jsx(PageShell, {
45
+ page,
46
+ children
47
+ })]
48
+ });
49
+ }
50
+ /** Render any content block of the page by key. */
51
+ function PageBlock({ name, fallback = null, className }) {
52
+ const page = useAppPage();
53
+ const block = page?.content.find((candidate) => candidate.key === name);
54
+ if (!page || !block) return /* @__PURE__ */ jsx(Fragment$1, { children: fallback });
55
+ return /* @__PURE__ */ jsx(PageActionProvider, {
56
+ value: {
57
+ token: page.token,
58
+ component: "page"
59
+ },
60
+ children: /* @__PURE__ */ jsx("div", {
61
+ "data-slot": "page-block",
62
+ "data-block": name,
63
+ className: cn("min-w-0", className),
64
+ children: /* @__PURE__ */ jsx(ContentBlockRenderer, { block })
65
+ })
66
+ });
67
+ }
68
+ /** A form defined by `{name}Form(Schema $schema)` (or the page's `form()` without a name). */
69
+ function PageForm({ name, ...props }) {
70
+ return /* @__PURE__ */ jsx(PageBlock, {
71
+ name: name ? `form:${name}` : "form",
72
+ ...props
73
+ });
74
+ }
75
+ /** A table defined by `{name}Table(Table $table)` (or the page's `table()` without a name). */
76
+ function PageTable({ name, ...props }) {
77
+ return /* @__PURE__ */ jsx(PageBlock, {
78
+ name: name ? `table:${name}` : "table",
79
+ ...props
80
+ });
81
+ }
82
+ /** An infolist defined by `{name}Infolist(Schema $schema)` (or the page's `infolist()`). */
83
+ function PageInfolist({ name, ...props }) {
84
+ return /* @__PURE__ */ jsx(PageBlock, {
85
+ name: name ? `infolist:${name}` : "infolist",
86
+ ...props
87
+ });
88
+ }
89
+ /** The page's header (default) or footer widgets. */
90
+ function PageWidgets({ position = "header", ...props }) {
91
+ return /* @__PURE__ */ jsx(PageBlock, {
92
+ name: position === "footer" ? "footerWidgets" : "headerWidgets",
93
+ ...props
94
+ });
95
+ }
96
+ //#endregion
97
+ export { AppPage, PageBlock, PageForm, PageInfolist, PageTable, PageWidgets, useAppPage, usePageBlock };
98
+
99
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","names":[],"sources":["../../src/app/components.tsx"],"sourcesContent":["import { resolveLazyComponents, type ContentBlock, type PageSchema } from '@alfakit/core'\nimport { Head } from '@inertiajs/react'\nimport { useMemo, type ReactNode } from 'react'\nimport { PageActionProvider } from '../components/actions/action-context'\nimport { useAlfakitProps, usePageSchema, usePanel } from '../context'\nimport { cn } from '../lib/utils'\nimport { ContentBlockRenderer, PageShell } from '../pages/page'\n\n/**\n * Building blocks for custom page components: the page shell with the panel layout, and the\n * page's PHP-defined pieces rendered by name, with live fields, actions, uploads and polling\n * working exactly as on schema-driven pages.\n */\n\n/** The current page with its lazy components resolved. */\nexport function useAppPage(): PageSchema | undefined {\n const props = useAlfakitProps()\n const page = usePageSchema()\n\n return useMemo(\n () => (page ? resolveLazyComponents(page, props.alfakitLazy) : undefined),\n [page, props.alfakitLazy],\n )\n}\n\n/** A content block of the page by key (`form:customer`, `table`, `headerWidgets`…). */\nexport function usePageBlock(key: string): ContentBlock | undefined {\n const page = useAppPage()\n\n return page?.content.find((block) => block.key === key)\n}\n\n/**\n * The page's layout (sidebar and topbar, `fullscreen`…), heading, header actions and\n * document title around a custom component:\n *\n * ```tsx\n * export default function Pos(props: PosProps) {\n * return <AppPage>…</AppPage>\n * }\n * ```\n */\nexport function AppPage({ children }: { children: ReactNode }) {\n const page = useAppPage()\n const panel = usePanel()\n\n if (!page) return <>{children}</>\n\n return (\n <PageActionProvider value={{ token: page.token, component: 'page' }}>\n <Head title={`${page.title} - ${panel.brandName}`} />\n <PageShell page={page}>{children}</PageShell>\n </PageActionProvider>\n )\n}\n\nexport interface PageBlockProps {\n /** The block key: `form:customer`, `table:products`, `infolist:summary`, `form`, `table`, `content`… */\n name: string\n /** Rendered when the page has no such block (e.g. a hidden form). */\n fallback?: ReactNode\n className?: string\n}\n\n/** Render any content block of the page by key. */\nexport function PageBlock({ name, fallback = null, className }: PageBlockProps) {\n const page = useAppPage()\n const block = page?.content.find((candidate) => candidate.key === name)\n\n if (!page || !block) return <>{fallback}</>\n\n return (\n <PageActionProvider value={{ token: page.token, component: 'page' }}>\n <div data-slot=\"page-block\" data-block={name} className={cn('min-w-0', className)}>\n <ContentBlockRenderer block={block} />\n </div>\n </PageActionProvider>\n )\n}\n\ntype NamedBlockProps = Omit<PageBlockProps, 'name'> & { name?: string }\n\n/** A form defined by `{name}Form(Schema $schema)` (or the page's `form()` without a name). */\nexport function PageForm({ name, ...props }: NamedBlockProps) {\n return <PageBlock name={name ? `form:${name}` : 'form'} {...props} />\n}\n\n/** A table defined by `{name}Table(Table $table)` (or the page's `table()` without a name). */\nexport function PageTable({ name, ...props }: NamedBlockProps) {\n return <PageBlock name={name ? `table:${name}` : 'table'} {...props} />\n}\n\n/** An infolist defined by `{name}Infolist(Schema $schema)` (or the page's `infolist()`). */\nexport function PageInfolist({ name, ...props }: NamedBlockProps) {\n return <PageBlock name={name ? `infolist:${name}` : 'infolist'} {...props} />\n}\n\n/** The page's header (default) or footer widgets. */\nexport function PageWidgets({\n position = 'header',\n ...props\n}: Omit<PageBlockProps, 'name'> & { position?: 'header' | 'footer' }) {\n return <PageBlock name={position === 'footer' ? 'footerWidgets' : 'headerWidgets'} {...props} />\n}\n"],"mappings":";;;;;;;;;;;;;;;AAeA,SAAgB,aAAqC;CACnD,MAAM,QAAQ,gBAAgB;CAC9B,MAAM,OAAO,cAAc;CAE3B,OAAO,cACE,OAAO,sBAAsB,MAAM,MAAM,WAAW,IAAI,KAAA,GAC/D,CAAC,MAAM,MAAM,WAAW,CAC1B;AACF;;AAGA,SAAgB,aAAa,KAAuC;CAGlE,OAFa,WAEH,CAAC,EAAE,QAAQ,MAAM,UAAU,MAAM,QAAQ,GAAG;AACxD;;;;;;;;;;;AAYA,SAAgB,QAAQ,EAAE,YAAqC;CAC7D,MAAM,OAAO,WAAW;CACxB,MAAM,QAAQ,SAAS;CAEvB,IAAI,CAAC,MAAM,OAAO,oBAAA,YAAA,EAAG,SAAW,CAAA;CAEhC,OACE,qBAAC,oBAAD;EAAoB,OAAO;GAAE,OAAO,KAAK;GAAO,WAAW;EAAO;EAAlE,UAAA,CACE,oBAAC,MAAD,EAAM,OAAO,GAAG,KAAK,MAAM,KAAK,MAAM,YAAc,CAAA,GACpD,oBAAC,WAAD;GAAiB;GAAO;EAAoB,CAAA,CAC1B;;AAExB;;AAWA,SAAgB,UAAU,EAAE,MAAM,WAAW,MAAM,aAA6B;CAC9E,MAAM,OAAO,WAAW;CACxB,MAAM,QAAQ,MAAM,QAAQ,MAAM,cAAc,UAAU,QAAQ,IAAI;CAEtE,IAAI,CAAC,QAAQ,CAAC,OAAO,OAAO,oBAAA,YAAA,EAAA,UAAG,SAAW,CAAA;CAE1C,OACE,oBAAC,oBAAD;EAAoB,OAAO;GAAE,OAAO,KAAK;GAAO,WAAW;EAAO;EAChE,UAAA,oBAAC,OAAD;GAAK,aAAU;GAAa,cAAY;GAAM,WAAW,GAAG,WAAW,SAAS;GAC9E,UAAA,oBAAC,sBAAD,EAA6B,MAAQ,CAAA;EAClC,CAAA;CACa,CAAA;AAExB;;AAKA,SAAgB,SAAS,EAAE,MAAM,GAAG,SAA0B;CAC5D,OAAO,oBAAC,WAAD;EAAW,MAAM,OAAO,QAAQ,SAAS;EAAQ,GAAI;CAAQ,CAAA;AACtE;;AAGA,SAAgB,UAAU,EAAE,MAAM,GAAG,SAA0B;CAC7D,OAAO,oBAAC,WAAD;EAAW,MAAM,OAAO,SAAS,SAAS;EAAS,GAAI;CAAQ,CAAA;AACxE;;AAGA,SAAgB,aAAa,EAAE,MAAM,GAAG,SAA0B;CAChE,OAAO,oBAAC,WAAD;EAAW,MAAM,OAAO,YAAY,SAAS;EAAY,GAAI;CAAQ,CAAA;AAC9E;;AAGA,SAAgB,YAAY,EAC1B,WAAW,UACX,GAAG,SACiE;CACpE,OAAO,oBAAC,WAAD;EAAW,MAAM,aAAa,WAAW,kBAAkB;EAAiB,GAAI;CAAQ,CAAA;AACjG"}
@@ -0,0 +1,79 @@
1
+ import { FormStore, LivePropsOptions, PageMethodArguments, PageMethodCallOptions, ShortcutOptions } from "@alfakit/core";
2
+ //#region src/app/hooks.d.ts
3
+ export interface UsePageMethodOptions<TResult, TArgs> extends PageMethodCallOptions<TArgs> {
4
+ onSuccess?: (result: TResult, args: TArgs | undefined) => void;
5
+ onError?: (error: unknown, args: TArgs | undefined) => void;
6
+ }
7
+ export interface PageMethodBinding<TResult, TArgs> {
8
+ /** Call the method. Resolves with its result, or `undefined` when it failed. */
9
+ call: (args?: TArgs, options?: PageMethodCallOptions<TArgs>) => Promise<TResult | undefined>;
10
+ /** Like `call`, but rejects with the error (`PageMethodError`) when it fails. */
11
+ callOrThrow: (args?: TArgs, options?: PageMethodCallOptions<TArgs>) => Promise<TResult>;
12
+ loading: boolean;
13
+ result: TResult | undefined;
14
+ error: unknown;
15
+ /** Validation errors of the last call, first message per key (`{ sku: '…' }`). */
16
+ errors: Record<string, string>;
17
+ reset: () => void;
18
+ }
19
+ /**
20
+ * Call one `#[Expose]` method of the page:
21
+ *
22
+ * ```tsx
23
+ * const checkout = usePageMethod<Order, { items: CartLine[] }>('checkout', { forms: ['customer'] })
24
+ * <Button disabled={checkout.loading} onClick={() => checkout.call({ items })}>Charge</Button>
25
+ * ```
26
+ *
27
+ * Notifications are shown as toasts, redirects followed, `reloadProps()` applied.
28
+ */
29
+ export declare function usePageMethod<TResult = unknown, TArgs extends PageMethodArguments = Record<string, unknown>>(method: string, options?: UsePageMethodOptions<TResult, TArgs>): PageMethodBinding<TResult, TArgs>;
30
+ /** A map of method names to their arguments and results, for typed `usePageMethods()`. */
31
+ export type PageMethodMap = Record<string, {
32
+ args?: PageMethodArguments;
33
+ result?: unknown;
34
+ }>;
35
+ export interface PageMethodsBinding<TMap extends PageMethodMap> {
36
+ call: <K extends keyof TMap & string>(method: K, args?: TMap[K]['args'], options?: PageMethodCallOptions<TMap[K]['args']>) => Promise<TMap[K]['result'] | undefined>;
37
+ callOrThrow: <K extends keyof TMap & string>(method: K, args?: TMap[K]['args'], options?: PageMethodCallOptions<TMap[K]['args']>) => Promise<TMap[K]['result']>;
38
+ /** True while any call is in flight; `isLoading('checkout')` for one method. */
39
+ loading: boolean;
40
+ isLoading: (method: keyof TMap & string) => boolean;
41
+ /** Validation errors of the last failed call, by method. */
42
+ errors: Partial<Record<keyof TMap & string, Record<string, string>>>;
43
+ }
44
+ /**
45
+ * Call any `#[Expose]` method of the page by name. Type it with a map:
46
+ * `usePageMethods<{ addItem: { args: { sku: string }; result: CartLine } }>()`.
47
+ */
48
+ export declare function usePageMethods<TMap extends PageMethodMap = PageMethodMap>(defaults?: PageMethodCallOptions): PageMethodsBinding<TMap>;
49
+ /**
50
+ * Reload view data (`getViewData()` keys) with an Inertia partial reload:
51
+ * `const { reload, reloading } = useReloadProps(['cart'])`.
52
+ */
53
+ export declare function useReloadProps(only?: string[]): {
54
+ reload: (props?: string[]) => Promise<void>;
55
+ reloading: boolean;
56
+ };
57
+ /**
58
+ * Keep view data props fresh while the component is mounted: every `poll` interval, and/or
59
+ * when a Laravel Echo event arrives (`echo: { channel, events }`).
60
+ */
61
+ export declare function useLiveProps(only: string[], options: LivePropsOptions): void;
62
+ /**
63
+ * A keyboard shortcut while the component is mounted: `useShortcut('mod+k', openSearch)`.
64
+ * Shortcuts without a modifier are ignored while typing unless `allowInInputs` is set.
65
+ */
66
+ export declare function useShortcut(keys: string | string[], handler: (event: KeyboardEvent) => void, options?: ShortcutOptions & {
67
+ enabled?: boolean;
68
+ }): void;
69
+ /**
70
+ * The store and state of an embedded `<PageForm name>`: read its values, or reset fields
71
+ * with `store.setValue()`. `store` is undefined until the form has mounted.
72
+ */
73
+ export declare function usePageForm(name: string): {
74
+ store: FormStore | undefined;
75
+ values: Record<string, unknown>;
76
+ errors: Record<string, string[]>;
77
+ };
78
+ //#endregion
79
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","names":[],"sources":["../../src/app/hooks.ts"],"mappings":";;iBAiDiB,qBAAqB,SAAS,eAAe,sBAAsB;EAClF,aAAa,QAAQ,SAAS,MAAM;EACpC,WAAW,gBAAgB,MAAM;;iBAGlB,kBAAkB,SAAS;;EAE1C,OAAO,OAAO,OAAO,UAAU,sBAAsB,WAAW,QAAQ;;EAExE,cAAc,OAAO,OAAO,UAAU,sBAAsB,WAAW,QAAQ;EAC/E;EACA,QAAQ;EACR;;EAEA,QAAQ;EACR;;;;;;;;;;;;wBAac,cACd,mBACA,cAAc,sBAAsB,yBAEpC,gBACA,UAAS,qBAAqB,SAAS,SACtC,kBAAkB,SAAS;;YA2FlB,gBAAgB;EAAiB,OAAO;EAAqB;;iBAExD,mBAAmB,aAAa;EAC/C,OAAO,gBAAgB,eACrB,QAAQ,GACR,OAAO,KAAK,YACZ,UAAU,sBAAsB,KAAK,gBAClC,QAAQ,KAAK;EAClB,cAAc,gBAAgB,eAC5B,QAAQ,GACR,OAAO,KAAK,YACZ,UAAU,sBAAsB,KAAK,gBAClC,QAAQ,KAAK;;EAElB;EACA,YAAY,cAAc;;EAE1B,QAAQ,QAAQ,aAAa,eAAe;;;;;;wBAO9B,eAAe,aAAa,gBAAgB,eAC1D,WAAU,wBACT,mBAAmB;;;;;wBAkEN,eAAe;EAC7B,SAAS,qBAAqB;EAC9B;;;;;;wBAyBc,aAAa,gBAAgB,SAAS;;;;;wBActC,YACd,yBACA,UAAU,OAAO,wBACjB,UAAS;EAAoB;;;;;;wBAgCf,YAAY;EAC1B,OAAO;EACP,QAAQ;EACR,QAAQ"}
@@ -0,0 +1,239 @@
1
+ import { usePageSchema, usePanel, useT } from "../context.js";
2
+ import { showToast } from "../components/notifications/flash-toasts.js";
3
+ import { PageMethodError, firstErrors, getPageForm, onPageFormsChanged, registerShortcut, reloadPageProps, runPageMethod, watchPageProps } from "@alfakit/core";
4
+ import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
5
+ //#region src/app/hooks.ts
6
+ /**
7
+ * Hooks for custom page components (`Page::$component`): call `#[Expose]` methods, reload
8
+ * and watch view data, keyboard shortcuts, and the state of embedded `<PageForm>`s.
9
+ */
10
+ function useRuntime() {
11
+ const page = usePageSchema();
12
+ const panel = usePanel();
13
+ const t = useT();
14
+ const latest = useRef({
15
+ page,
16
+ panel,
17
+ t
18
+ });
19
+ useEffect(() => {
20
+ latest.current = {
21
+ page,
22
+ panel,
23
+ t
24
+ };
25
+ });
26
+ return useCallback(() => ({
27
+ token: latest.current.page?.token ?? "",
28
+ panel: latest.current.panel,
29
+ page: latest.current.page,
30
+ showToast: (notification) => showToast(notification),
31
+ t: latest.current.t
32
+ }), []);
33
+ }
34
+ /**
35
+ * Call one `#[Expose]` method of the page:
36
+ *
37
+ * ```tsx
38
+ * const checkout = usePageMethod<Order, { items: CartLine[] }>('checkout', { forms: ['customer'] })
39
+ * <Button disabled={checkout.loading} onClick={() => checkout.call({ items })}>Charge</Button>
40
+ * ```
41
+ *
42
+ * Notifications are shown as toasts, redirects followed, `reloadProps()` applied.
43
+ */
44
+ function usePageMethod(method, options = {}) {
45
+ const runtime = useRuntime();
46
+ const [state, setState] = useState({
47
+ loading: 0,
48
+ result: void 0,
49
+ error: null,
50
+ errors: {}
51
+ });
52
+ const optionsRef = useRef(options);
53
+ useEffect(() => {
54
+ optionsRef.current = options;
55
+ });
56
+ const mounted = useRef(true);
57
+ useEffect(() => {
58
+ mounted.current = true;
59
+ return () => {
60
+ mounted.current = false;
61
+ };
62
+ }, []);
63
+ const callOrThrow = useCallback(async (args, overrides = {}) => {
64
+ const { onSuccess, onError, ...defaults } = optionsRef.current;
65
+ setState((current) => ({
66
+ ...current,
67
+ loading: current.loading + 1,
68
+ error: null
69
+ }));
70
+ try {
71
+ const result = await runPageMethod(method, args, runtime(), {
72
+ ...defaults,
73
+ ...overrides
74
+ });
75
+ if (mounted.current) setState((current) => ({
76
+ loading: Math.max(0, current.loading - 1),
77
+ result,
78
+ error: null,
79
+ errors: {}
80
+ }));
81
+ onSuccess?.(result, args);
82
+ return result;
83
+ } catch (error) {
84
+ if (mounted.current) setState((current) => ({
85
+ ...current,
86
+ loading: Math.max(0, current.loading - 1),
87
+ error,
88
+ errors: error instanceof PageMethodError && error.isValidation ? firstErrors(error.errors) : {}
89
+ }));
90
+ onError?.(error, args);
91
+ throw error;
92
+ }
93
+ }, [method, runtime]);
94
+ const call = useCallback((args, overrides) => callOrThrow(args, overrides).catch(() => void 0), [callOrThrow]);
95
+ const reset = useCallback(() => setState({
96
+ loading: 0,
97
+ result: void 0,
98
+ error: null,
99
+ errors: {}
100
+ }), []);
101
+ return {
102
+ call,
103
+ callOrThrow,
104
+ loading: state.loading > 0,
105
+ result: state.result,
106
+ error: state.error,
107
+ errors: state.errors,
108
+ reset
109
+ };
110
+ }
111
+ /**
112
+ * Call any `#[Expose]` method of the page by name. Type it with a map:
113
+ * `usePageMethods<{ addItem: { args: { sku: string }; result: CartLine } }>()`.
114
+ */
115
+ function usePageMethods(defaults = {}) {
116
+ const runtime = useRuntime();
117
+ const [pending, setPending] = useState({});
118
+ const [errors, setErrors] = useState({});
119
+ const defaultsRef = useRef(defaults);
120
+ useEffect(() => {
121
+ defaultsRef.current = defaults;
122
+ });
123
+ const callOrThrow = useCallback(async (method, args, options = {}) => {
124
+ setPending((current) => ({
125
+ ...current,
126
+ [method]: (current[method] ?? 0) + 1
127
+ }));
128
+ try {
129
+ const result = await runPageMethod(method, args, runtime(), {
130
+ ...defaultsRef.current,
131
+ ...options
132
+ });
133
+ setErrors((current) => {
134
+ if (!current[method]) return current;
135
+ const next = { ...current };
136
+ delete next[method];
137
+ return next;
138
+ });
139
+ return result;
140
+ } catch (error) {
141
+ if (error instanceof PageMethodError && error.isValidation) setErrors((current) => ({
142
+ ...current,
143
+ [method]: firstErrors(error.errors)
144
+ }));
145
+ throw error;
146
+ } finally {
147
+ setPending((current) => ({
148
+ ...current,
149
+ [method]: Math.max(0, (current[method] ?? 1) - 1)
150
+ }));
151
+ }
152
+ }, [runtime]);
153
+ const call = useCallback((method, args, options) => callOrThrow(method, args, options).catch(() => void 0), [callOrThrow]);
154
+ return useMemo(() => ({
155
+ callOrThrow,
156
+ call,
157
+ loading: Object.values(pending).some((count) => count > 0),
158
+ isLoading: (method) => (pending[method] ?? 0) > 0,
159
+ errors
160
+ }), [
161
+ callOrThrow,
162
+ call,
163
+ pending,
164
+ errors
165
+ ]);
166
+ }
167
+ /**
168
+ * Reload view data (`getViewData()` keys) with an Inertia partial reload:
169
+ * `const { reload, reloading } = useReloadProps(['cart'])`.
170
+ */
171
+ function useReloadProps(only) {
172
+ const [reloading, setReloading] = useState(0);
173
+ const key = JSON.stringify(only ?? null);
174
+ return {
175
+ reload: useCallback(async (props) => {
176
+ setReloading((count) => count + 1);
177
+ try {
178
+ await reloadPageProps(props ?? JSON.parse(key) ?? void 0);
179
+ } finally {
180
+ setReloading((count) => Math.max(0, count - 1));
181
+ }
182
+ }, [key]),
183
+ reloading: reloading > 0
184
+ };
185
+ }
186
+ /**
187
+ * Keep view data props fresh while the component is mounted: every `poll` interval, and/or
188
+ * when a Laravel Echo event arrives (`echo: { channel, events }`).
189
+ */
190
+ function useLiveProps(only, options) {
191
+ const key = JSON.stringify([only, options]);
192
+ useEffect(() => {
193
+ const [props, live] = JSON.parse(key);
194
+ return watchPageProps(props, live);
195
+ }, [key]);
196
+ }
197
+ /**
198
+ * A keyboard shortcut while the component is mounted: `useShortcut('mod+k', openSearch)`.
199
+ * Shortcuts without a modifier are ignored while typing unless `allowInInputs` is set.
200
+ */
201
+ function useShortcut(keys, handler, options = {}) {
202
+ const handlerRef = useRef(handler);
203
+ useEffect(() => {
204
+ handlerRef.current = handler;
205
+ });
206
+ const key = JSON.stringify([
207
+ keys,
208
+ options.allowInInputs,
209
+ options.preventDefault
210
+ ]);
211
+ const enabled = options.enabled !== false;
212
+ useEffect(() => {
213
+ if (!enabled) return;
214
+ const [bindings, allowInInputs, preventDefault] = JSON.parse(key);
215
+ return registerShortcut(bindings, (event) => handlerRef.current(event), {
216
+ allowInInputs,
217
+ preventDefault
218
+ });
219
+ }, [key, enabled]);
220
+ }
221
+ const noopSubscribe = () => () => {};
222
+ /**
223
+ * The store and state of an embedded `<PageForm name>`: read its values, or reset fields
224
+ * with `store.setValue()`. `store` is undefined until the form has mounted.
225
+ */
226
+ function usePageForm(name) {
227
+ const store = useSyncExternalStore(onPageFormsChanged, () => getPageForm(name), () => void 0);
228
+ const subscribe = useCallback((listener) => store ? store.store.subscribe(listener) : noopSubscribe(), [store]);
229
+ const state = useSyncExternalStore(subscribe, () => store?.store.get(), () => void 0);
230
+ return {
231
+ store,
232
+ values: state?.values ?? {},
233
+ errors: state?.errors ?? {}
234
+ };
235
+ }
236
+ //#endregion
237
+ export { useLiveProps, usePageForm, usePageMethod, usePageMethods, useReloadProps, useShortcut };
238
+
239
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","names":[],"sources":["../../src/app/hooks.ts"],"sourcesContent":["import {\n firstErrors,\n getPageForm,\n onPageFormsChanged,\n PageMethodError,\n registerShortcut,\n reloadPageProps,\n runPageMethod,\n watchPageProps,\n type FormState,\n type FormStore,\n type LivePropsOptions,\n type PageMethodArguments,\n type PageMethodCallOptions,\n type PageMethodRuntime,\n type ShortcutOptions,\n} from '@alfakit/core'\nimport { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react'\nimport { showToast } from '../components/notifications/flash-toasts'\nimport { usePageSchema, usePanel, useT } from '../context'\n\n/**\n * Hooks for custom page components (`Page::$component`): call `#[Expose]` methods, reload\n * and watch view data, keyboard shortcuts, and the state of embedded `<PageForm>`s.\n */\n\nfunction useRuntime(): () => PageMethodRuntime {\n const page = usePageSchema()\n const panel = usePanel()\n const t = useT()\n const latest = useRef({ page, panel, t })\n\n useEffect(() => {\n latest.current = { page, panel, t }\n })\n\n // The token is re-issued with every response, so it is read when the call starts.\n return useCallback(\n () => ({\n token: latest.current.page?.token ?? '',\n panel: latest.current.panel,\n page: latest.current.page,\n showToast: (notification) => showToast(notification),\n t: latest.current.t,\n }),\n [],\n )\n}\n\nexport interface UsePageMethodOptions<TResult, TArgs> extends PageMethodCallOptions<TArgs> {\n onSuccess?: (result: TResult, args: TArgs | undefined) => void\n onError?: (error: unknown, args: TArgs | undefined) => void\n}\n\nexport interface PageMethodBinding<TResult, TArgs> {\n /** Call the method. Resolves with its result, or `undefined` when it failed. */\n call: (args?: TArgs, options?: PageMethodCallOptions<TArgs>) => Promise<TResult | undefined>\n /** Like `call`, but rejects with the error (`PageMethodError`) when it fails. */\n callOrThrow: (args?: TArgs, options?: PageMethodCallOptions<TArgs>) => Promise<TResult>\n loading: boolean\n result: TResult | undefined\n error: unknown\n /** Validation errors of the last call, first message per key (`{ sku: '…' }`). */\n errors: Record<string, string>\n reset: () => void\n}\n\n/**\n * Call one `#[Expose]` method of the page:\n *\n * ```tsx\n * const checkout = usePageMethod<Order, { items: CartLine[] }>('checkout', { forms: ['customer'] })\n * <Button disabled={checkout.loading} onClick={() => checkout.call({ items })}>Charge</Button>\n * ```\n *\n * Notifications are shown as toasts, redirects followed, `reloadProps()` applied.\n */\nexport function usePageMethod<\n TResult = unknown,\n TArgs extends PageMethodArguments = Record<string, unknown>,\n>(\n method: string,\n options: UsePageMethodOptions<TResult, TArgs> = {},\n): PageMethodBinding<TResult, TArgs> {\n const runtime = useRuntime()\n const [state, setState] = useState<{\n loading: number\n result: TResult | undefined\n error: unknown\n errors: Record<string, string>\n }>({ loading: 0, result: undefined, error: null, errors: {} })\n const optionsRef = useRef(options)\n\n useEffect(() => {\n optionsRef.current = options\n })\n const mounted = useRef(true)\n\n useEffect(() => {\n mounted.current = true\n\n return () => {\n mounted.current = false\n }\n }, [])\n\n const callOrThrow = useCallback(\n async (args?: TArgs, overrides: PageMethodCallOptions<TArgs> = {}): Promise<TResult> => {\n const { onSuccess, onError, ...defaults } = optionsRef.current\n\n setState((current) => ({ ...current, loading: current.loading + 1, error: null }))\n\n try {\n const result = await runPageMethod<TResult, TArgs>(method, args, runtime(), {\n ...defaults,\n ...overrides,\n })\n\n if (mounted.current) {\n setState((current) => ({\n loading: Math.max(0, current.loading - 1),\n result,\n error: null,\n errors: {},\n }))\n }\n\n onSuccess?.(result, args)\n\n return result\n } catch (error) {\n if (mounted.current) {\n setState((current) => ({\n ...current,\n loading: Math.max(0, current.loading - 1),\n error,\n errors:\n error instanceof PageMethodError && error.isValidation\n ? firstErrors(error.errors)\n : {},\n }))\n }\n\n onError?.(error, args)\n\n throw error\n }\n },\n [method, runtime],\n )\n\n const call = useCallback(\n (args?: TArgs, overrides?: PageMethodCallOptions<TArgs>) =>\n callOrThrow(args, overrides).catch(() => undefined),\n [callOrThrow],\n )\n\n const reset = useCallback(\n () => setState({ loading: 0, result: undefined, error: null, errors: {} }),\n [],\n )\n\n return {\n call,\n callOrThrow,\n loading: state.loading > 0,\n result: state.result,\n error: state.error,\n errors: state.errors,\n reset,\n }\n}\n\n/** A map of method names to their arguments and results, for typed `usePageMethods()`. */\nexport type PageMethodMap = Record<string, { args?: PageMethodArguments; result?: unknown }>\n\nexport interface PageMethodsBinding<TMap extends PageMethodMap> {\n call: <K extends keyof TMap & string>(\n method: K,\n args?: TMap[K]['args'],\n options?: PageMethodCallOptions<TMap[K]['args']>,\n ) => Promise<TMap[K]['result'] | undefined>\n callOrThrow: <K extends keyof TMap & string>(\n method: K,\n args?: TMap[K]['args'],\n options?: PageMethodCallOptions<TMap[K]['args']>,\n ) => Promise<TMap[K]['result']>\n /** True while any call is in flight; `isLoading('checkout')` for one method. */\n loading: boolean\n isLoading: (method: keyof TMap & string) => boolean\n /** Validation errors of the last failed call, by method. */\n errors: Partial<Record<keyof TMap & string, Record<string, string>>>\n}\n\n/**\n * Call any `#[Expose]` method of the page by name. Type it with a map:\n * `usePageMethods<{ addItem: { args: { sku: string }; result: CartLine } }>()`.\n */\nexport function usePageMethods<TMap extends PageMethodMap = PageMethodMap>(\n defaults: PageMethodCallOptions = {},\n): PageMethodsBinding<TMap> {\n const runtime = useRuntime()\n const [pending, setPending] = useState<Record<string, number>>({})\n const [errors, setErrors] = useState<Record<string, Record<string, string>>>({})\n const defaultsRef = useRef(defaults)\n\n useEffect(() => {\n defaultsRef.current = defaults\n })\n\n const callOrThrow = useCallback(\n async (method: string, args?: PageMethodArguments, options: PageMethodCallOptions = {}) => {\n setPending((current) => ({ ...current, [method]: (current[method] ?? 0) + 1 }))\n\n try {\n const result = await runPageMethod(method, args, runtime(), {\n ...defaultsRef.current,\n ...options,\n } as PageMethodCallOptions<PageMethodArguments>)\n\n setErrors((current) => {\n if (!current[method]) return current\n const next = { ...current }\n delete next[method]\n\n return next\n })\n\n return result\n } catch (error) {\n if (error instanceof PageMethodError && error.isValidation) {\n setErrors((current) => ({ ...current, [method]: firstErrors(error.errors) }))\n }\n\n throw error\n } finally {\n setPending((current) => ({ ...current, [method]: Math.max(0, (current[method] ?? 1) - 1) }))\n }\n },\n [runtime],\n )\n\n // `call` and `callOrThrow` keep their identity, so they are safe effect dependencies.\n const call = useCallback(\n (method: string, args?: PageMethodArguments, options?: PageMethodCallOptions) =>\n callOrThrow(method, args, options).catch(() => undefined),\n [callOrThrow],\n )\n\n return useMemo(\n () =>\n ({\n callOrThrow,\n call,\n loading: Object.values(pending).some((count) => count > 0),\n isLoading: (method: string) => (pending[method] ?? 0) > 0,\n errors,\n }) as unknown as PageMethodsBinding<TMap>,\n [callOrThrow, call, pending, errors],\n )\n}\n\n/**\n * Reload view data (`getViewData()` keys) with an Inertia partial reload:\n * `const { reload, reloading } = useReloadProps(['cart'])`.\n */\nexport function useReloadProps(only?: string[]): {\n reload: (props?: string[]) => Promise<void>\n reloading: boolean\n} {\n const [reloading, setReloading] = useState(0)\n const key = JSON.stringify(only ?? null)\n\n const reload = useCallback(\n async (props?: string[]) => {\n setReloading((count) => count + 1)\n\n try {\n await reloadPageProps(props ?? (JSON.parse(key) as string[] | null) ?? undefined)\n } finally {\n setReloading((count) => Math.max(0, count - 1))\n }\n },\n [key],\n )\n\n return { reload, reloading: reloading > 0 }\n}\n\n/**\n * Keep view data props fresh while the component is mounted: every `poll` interval, and/or\n * when a Laravel Echo event arrives (`echo: { channel, events }`).\n */\nexport function useLiveProps(only: string[], options: LivePropsOptions): void {\n const key = JSON.stringify([only, options])\n\n useEffect(() => {\n const [props, live] = JSON.parse(key) as [string[], LivePropsOptions]\n\n return watchPageProps(props, live)\n }, [key])\n}\n\n/**\n * A keyboard shortcut while the component is mounted: `useShortcut('mod+k', openSearch)`.\n * Shortcuts without a modifier are ignored while typing unless `allowInInputs` is set.\n */\nexport function useShortcut(\n keys: string | string[],\n handler: (event: KeyboardEvent) => void,\n options: ShortcutOptions & { enabled?: boolean } = {},\n): void {\n const handlerRef = useRef(handler)\n\n useEffect(() => {\n handlerRef.current = handler\n })\n const key = JSON.stringify([keys, options.allowInInputs, options.preventDefault])\n const enabled = options.enabled !== false\n\n useEffect(() => {\n if (!enabled) return\n\n const [bindings, allowInInputs, preventDefault] = JSON.parse(key) as [\n string | string[],\n boolean | undefined,\n boolean | undefined,\n ]\n\n return registerShortcut(bindings, (event) => handlerRef.current(event), {\n allowInInputs,\n preventDefault,\n })\n }, [key, enabled])\n}\n\nconst noopSubscribe = () => () => {}\n\n/**\n * The store and state of an embedded `<PageForm name>`: read its values, or reset fields\n * with `store.setValue()`. `store` is undefined until the form has mounted.\n */\nexport function usePageForm(name: string): {\n store: FormStore | undefined\n values: Record<string, unknown>\n errors: Record<string, string[]>\n} {\n const store = useSyncExternalStore(\n onPageFormsChanged,\n () => getPageForm(name),\n () => undefined,\n )\n\n const subscribe = useCallback(\n (listener: () => void) => (store ? store.store.subscribe(listener) : noopSubscribe()),\n [store],\n )\n const state = useSyncExternalStore<FormState | undefined>(\n subscribe,\n () => store?.store.get(),\n () => undefined,\n )\n\n return { store, values: state?.values ?? {}, errors: state?.errors ?? {} }\n}\n"],"mappings":";;;;;;;;;AA0BA,SAAS,aAAsC;CAC7C,MAAM,OAAO,cAAc;CAC3B,MAAM,QAAQ,SAAS;CACvB,MAAM,IAAI,KAAK;CACf,MAAM,SAAS,OAAO;EAAE;EAAM;EAAO;CAAE,CAAC;CAExC,gBAAgB;EACd,OAAO,UAAU;GAAE;GAAM;GAAO;EAAE;CACpC,CAAC;CAGD,OAAO,mBACE;EACL,OAAO,OAAO,QAAQ,MAAM,SAAS;EACrC,OAAO,OAAO,QAAQ;EACtB,MAAM,OAAO,QAAQ;EACrB,YAAY,iBAAiB,UAAU,YAAY;EACnD,GAAG,OAAO,QAAQ;CACpB,IACA,CAAC,CACH;AACF;;;;;;;;;;;AA8BA,SAAgB,cAId,QACA,UAAgD,CAAC,GACd;CACnC,MAAM,UAAU,WAAW;CAC3B,MAAM,CAAC,OAAO,YAAY,SAKvB;EAAE,SAAS;EAAG,QAAQ,KAAA;EAAW,OAAO;EAAM,QAAQ,CAAC;CAAE,CAAC;CAC7D,MAAM,aAAa,OAAO,OAAO;CAEjC,gBAAgB;EACd,WAAW,UAAU;CACvB,CAAC;CACD,MAAM,UAAU,OAAO,IAAI;CAE3B,gBAAgB;EACd,QAAQ,UAAU;EAElB,aAAa;GACX,QAAQ,UAAU;EACpB;CACF,GAAG,CAAC,CAAC;CAEL,MAAM,cAAc,YAClB,OAAO,MAAc,YAA0C,CAAC,MAAwB;EACtF,MAAM,EAAE,WAAW,SAAS,GAAG,aAAa,WAAW;EAEvD,UAAU,aAAa;GAAE,GAAG;GAAS,SAAS,QAAQ,UAAU;GAAG,OAAO;EAAK,EAAE;EAEjF,IAAI;GACF,MAAM,SAAS,MAAM,cAA8B,QAAQ,MAAM,QAAQ,GAAG;IAC1E,GAAG;IACH,GAAG;GACL,CAAC;GAED,IAAI,QAAQ,SACV,UAAU,aAAa;IACrB,SAAS,KAAK,IAAI,GAAG,QAAQ,UAAU,CAAC;IACxC;IACA,OAAO;IACP,QAAQ,CAAC;GACX,EAAE;GAGJ,YAAY,QAAQ,IAAI;GAExB,OAAO;EACT,SAAS,OAAO;GACd,IAAI,QAAQ,SACV,UAAU,aAAa;IACrB,GAAG;IACH,SAAS,KAAK,IAAI,GAAG,QAAQ,UAAU,CAAC;IACxC;IACA,QACE,iBAAiB,mBAAmB,MAAM,eACtC,YAAY,MAAM,MAAM,IACxB,CAAC;GACT,EAAE;GAGJ,UAAU,OAAO,IAAI;GAErB,MAAM;EACR;CACF,GACA,CAAC,QAAQ,OAAO,CAClB;CAEA,MAAM,OAAO,aACV,MAAc,cACb,YAAY,MAAM,SAAS,CAAC,CAAC,YAAY,KAAA,CAAS,GACpD,CAAC,WAAW,CACd;CAEA,MAAM,QAAQ,kBACN,SAAS;EAAE,SAAS;EAAG,QAAQ,KAAA;EAAW,OAAO;EAAM,QAAQ,CAAC;CAAE,CAAC,GACzE,CAAC,CACH;CAEA,OAAO;EACL;EACA;EACA,SAAS,MAAM,UAAU;EACzB,QAAQ,MAAM;EACd,OAAO,MAAM;EACb,QAAQ,MAAM;EACd;CACF;AACF;;;;;AA2BA,SAAgB,eACd,WAAkC,CAAC,GACT;CAC1B,MAAM,UAAU,WAAW;CAC3B,MAAM,CAAC,SAAS,cAAc,SAAiC,CAAC,CAAC;CACjE,MAAM,CAAC,QAAQ,aAAa,SAAiD,CAAC,CAAC;CAC/E,MAAM,cAAc,OAAO,QAAQ;CAEnC,gBAAgB;EACd,YAAY,UAAU;CACxB,CAAC;CAED,MAAM,cAAc,YAClB,OAAO,QAAgB,MAA4B,UAAiC,CAAC,MAAM;EACzF,YAAY,aAAa;GAAE,GAAG;IAAU,UAAU,QAAQ,WAAW,KAAK;EAAE,EAAE;EAE9E,IAAI;GACF,MAAM,SAAS,MAAM,cAAc,QAAQ,MAAM,QAAQ,GAAG;IAC1D,GAAG,YAAY;IACf,GAAG;GACL,CAA+C;GAE/C,WAAW,YAAY;IACrB,IAAI,CAAC,QAAQ,SAAS,OAAO;IAC7B,MAAM,OAAO,EAAE,GAAG,QAAQ;IAC1B,OAAO,KAAK;IAEZ,OAAO;GACT,CAAC;GAED,OAAO;EACT,SAAS,OAAO;GACd,IAAI,iBAAiB,mBAAmB,MAAM,cAC5C,WAAW,aAAa;IAAE,GAAG;KAAU,SAAS,YAAY,MAAM,MAAM;GAAE,EAAE;GAG9E,MAAM;EACR,UAAU;GACR,YAAY,aAAa;IAAE,GAAG;KAAU,SAAS,KAAK,IAAI,IAAI,QAAQ,WAAW,KAAK,CAAC;GAAE,EAAE;EAC7F;CACF,GACA,CAAC,OAAO,CACV;CAGA,MAAM,OAAO,aACV,QAAgB,MAA4B,YAC3C,YAAY,QAAQ,MAAM,OAAO,CAAC,CAAC,YAAY,KAAA,CAAS,GAC1D,CAAC,WAAW,CACd;CAEA,OAAO,eAEF;EACC;EACA;EACA,SAAS,OAAO,OAAO,OAAO,CAAC,CAAC,MAAM,UAAU,QAAQ,CAAC;EACzD,YAAY,YAAoB,QAAQ,WAAW,KAAK;EACxD;CACF,IACF;EAAC;EAAa;EAAM;EAAS;CAAM,CACrC;AACF;;;;;AAMA,SAAgB,eAAe,MAG7B;CACA,MAAM,CAAC,WAAW,gBAAgB,SAAS,CAAC;CAC5C,MAAM,MAAM,KAAK,UAAU,QAAQ,IAAI;CAevC,OAAO;EAAE,QAbM,YACb,OAAO,UAAqB;GAC1B,cAAc,UAAU,QAAQ,CAAC;GAEjC,IAAI;IACF,MAAM,gBAAgB,SAAU,KAAK,MAAM,GAAG,KAAyB,KAAA,CAAS;GAClF,UAAU;IACR,cAAc,UAAU,KAAK,IAAI,GAAG,QAAQ,CAAC,CAAC;GAChD;EACF,GACA,CAAC,GAAG,CAGQ;EAAG,WAAW,YAAY;CAAE;AAC5C;;;;;AAMA,SAAgB,aAAa,MAAgB,SAAiC;CAC5E,MAAM,MAAM,KAAK,UAAU,CAAC,MAAM,OAAO,CAAC;CAE1C,gBAAgB;EACd,MAAM,CAAC,OAAO,QAAQ,KAAK,MAAM,GAAG;EAEpC,OAAO,eAAe,OAAO,IAAI;CACnC,GAAG,CAAC,GAAG,CAAC;AACV;;;;;AAMA,SAAgB,YACd,MACA,SACA,UAAmD,CAAC,GAC9C;CACN,MAAM,aAAa,OAAO,OAAO;CAEjC,gBAAgB;EACd,WAAW,UAAU;CACvB,CAAC;CACD,MAAM,MAAM,KAAK,UAAU;EAAC;EAAM,QAAQ;EAAe,QAAQ;CAAc,CAAC;CAChF,MAAM,UAAU,QAAQ,YAAY;CAEpC,gBAAgB;EACd,IAAI,CAAC,SAAS;EAEd,MAAM,CAAC,UAAU,eAAe,kBAAkB,KAAK,MAAM,GAAG;EAMhE,OAAO,iBAAiB,WAAW,UAAU,WAAW,QAAQ,KAAK,GAAG;GACtE;GACA;EACF,CAAC;CACH,GAAG,CAAC,KAAK,OAAO,CAAC;AACnB;AAEA,MAAM,4BAA4B,CAAC;;;;;AAMnC,SAAgB,YAAY,MAI1B;CACA,MAAM,QAAQ,qBACZ,0BACM,YAAY,IAAI,SAChB,KAAA,CACR;CAEA,MAAM,YAAY,aACf,aAA0B,QAAQ,MAAM,MAAM,UAAU,QAAQ,IAAI,cAAc,GACnF,CAAC,KAAK,CACR;CACA,MAAM,QAAQ,qBACZ,iBACM,OAAO,MAAM,IAAI,SACjB,KAAA,CACR;CAEA,OAAO;EAAE;EAAO,QAAQ,OAAO,UAAU,CAAC;EAAG,QAAQ,OAAO,UAAU,CAAC;CAAE;AAC3E"}
@@ -0,0 +1,17 @@
1
+ import { ActionContext, ActionSchema } from "@alfakit/core";
2
+ //#region src/components/actions/action-button.d.ts
3
+ export interface ActionButtonProps {
4
+ action: ActionSchema;
5
+ context: ActionContext;
6
+ size?: 'xs' | 'sm' | 'default' | 'lg';
7
+ className?: string;
8
+ /** Force a variant (e.g. menu items render as plain rows). */
9
+ variant?: ActionSchema['variant'];
10
+ /** Bind the action's key bindings globally while mounted. */
11
+ withKeyBindings?: boolean;
12
+ /** Override how the action runs (e.g. a form submits its values). */
13
+ onTrigger?: (action: ActionSchema, context: ActionContext) => void | Promise<void>;
14
+ }
15
+ export declare function ActionButton({ action, context, size, className, variant: variantProp, withKeyBindings, onTrigger }: ActionButtonProps): import("react").JSX.Element;
16
+ //#endregion
17
+ //# sourceMappingURL=action-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-button.d.ts","names":[],"sources":["../../../src/components/actions/action-button.tsx"],"mappings":";;iBA8CiB;EACf,QAAQ;EACR,SAAS;EACT;EACA;;EAEA,UAAU;;EAEV;;EAEA,aAAa,QAAQ,cAAc,SAAS,yBAAyB;;wBA8BvD,eACd,QACA,SACA,MACA,WACA,SAAS,aACT,iBACA,aACC,oCAAiB,IAAA"}