@cratis/components 1.10.1 → 2.0.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 (344) hide show
  1. package/README.md +475 -4
  2. package/dist/cjs/CommandDialog/CommandDialog.js +94 -4
  3. package/dist/cjs/CommandDialog/CommandDialog.js.map +1 -1
  4. package/dist/cjs/CommandDialog/CommandStepper.js +63 -3
  5. package/dist/cjs/CommandDialog/CommandStepper.js.map +1 -1
  6. package/dist/cjs/CommandDialog/StepperCommandDialog.js +95 -6
  7. package/dist/cjs/CommandDialog/StepperCommandDialog.js.map +1 -1
  8. package/dist/cjs/CommandForm/fields/CalendarField.js +14 -1
  9. package/dist/cjs/CommandForm/fields/CalendarField.js.map +1 -1
  10. package/dist/cjs/CommandForm/fields/CheckboxField.js +10 -1
  11. package/dist/cjs/CommandForm/fields/CheckboxField.js.map +1 -1
  12. package/dist/cjs/CommandForm/fields/ChipsField.js +11 -1
  13. package/dist/cjs/CommandForm/fields/ChipsField.js.map +1 -1
  14. package/dist/cjs/CommandForm/fields/ColorPickerField.js +17 -1
  15. package/dist/cjs/CommandForm/fields/ColorPickerField.js.map +1 -1
  16. package/dist/cjs/CommandForm/fields/DropdownField.js +16 -1
  17. package/dist/cjs/CommandForm/fields/DropdownField.js.map +1 -1
  18. package/dist/cjs/CommandForm/fields/InputTextField.js +41 -1
  19. package/dist/cjs/CommandForm/fields/InputTextField.js.map +1 -1
  20. package/dist/cjs/CommandForm/fields/MultiSelectField.js +13 -1
  21. package/dist/cjs/CommandForm/fields/MultiSelectField.js.map +1 -1
  22. package/dist/cjs/CommandForm/fields/NumberField.js +11 -1
  23. package/dist/cjs/CommandForm/fields/NumberField.js.map +1 -1
  24. package/dist/cjs/CommandForm/fields/RadioButtonField.js +23 -0
  25. package/dist/cjs/CommandForm/fields/RadioButtonField.js.map +1 -0
  26. package/dist/cjs/CommandForm/fields/RadioGroupField.js +40 -0
  27. package/dist/cjs/CommandForm/fields/RadioGroupField.js.map +1 -0
  28. package/dist/cjs/CommandForm/fields/SliderField.js +10 -1
  29. package/dist/cjs/CommandForm/fields/SliderField.js.map +1 -1
  30. package/dist/cjs/CommandForm/fields/TextAreaField.js +12 -1
  31. package/dist/cjs/CommandForm/fields/TextAreaField.js.map +1 -1
  32. package/dist/cjs/CommandForm/index.js +4 -0
  33. package/dist/cjs/CommandForm/index.js.map +1 -1
  34. package/dist/cjs/Common/CratisComponentsProvider.js +44 -0
  35. package/dist/cjs/Common/CratisComponentsProvider.js.map +1 -0
  36. package/dist/cjs/Common/ErrorBoundary.js +32 -0
  37. package/dist/cjs/Common/ErrorBoundary.js.map +1 -1
  38. package/dist/cjs/Common/FormElement.css +26 -0
  39. package/dist/cjs/Common/FormElement.js +14 -1
  40. package/dist/cjs/Common/FormElement.js.map +1 -1
  41. package/dist/cjs/Common/Page.js +13 -0
  42. package/dist/cjs/Common/Page.js.map +1 -1
  43. package/dist/cjs/Common/Tooltip.css +3 -3
  44. package/dist/cjs/Common/index.js +4 -0
  45. package/dist/cjs/Common/index.js.map +1 -1
  46. package/dist/cjs/DataPage/DataPage.js +113 -8
  47. package/dist/cjs/DataPage/DataPage.js.map +1 -1
  48. package/dist/cjs/DataTables/DataTableForObservableQuery.js +65 -6
  49. package/dist/cjs/DataTables/DataTableForObservableQuery.js.map +1 -1
  50. package/dist/cjs/DataTables/DataTableForQuery.js +62 -6
  51. package/dist/cjs/DataTables/DataTableForQuery.js.map +1 -1
  52. package/dist/cjs/Dialogs/BusyIndicatorDialog.js +47 -0
  53. package/dist/cjs/Dialogs/BusyIndicatorDialog.js.map +1 -1
  54. package/dist/cjs/Dialogs/Dialog.js +79 -6
  55. package/dist/cjs/Dialogs/Dialog.js.map +1 -1
  56. package/dist/cjs/Dropdown/Dropdown.js +13 -0
  57. package/dist/cjs/Dropdown/Dropdown.js.map +1 -1
  58. package/dist/cjs/ObjectContentEditor/ObjectContentEditor.js +37 -21
  59. package/dist/cjs/ObjectContentEditor/ObjectContentEditor.js.map +1 -1
  60. package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.css +6 -0
  61. package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.js +14 -2
  62. package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -1
  63. package/dist/cjs/PivotViewer/PivotViewer.css +131 -134
  64. package/dist/cjs/PivotViewer/PivotViewer.js +19 -0
  65. package/dist/cjs/PivotViewer/PivotViewer.js.map +1 -1
  66. package/dist/cjs/PivotViewer/components/Spinner.css +8 -8
  67. package/dist/cjs/SchemaEditor/NameCell.js +2 -2
  68. package/dist/cjs/SchemaEditor/NameCell.js.map +1 -1
  69. package/dist/cjs/SchemaEditor/SchemaEditor.js +15 -3
  70. package/dist/cjs/SchemaEditor/SchemaEditor.js.map +1 -1
  71. package/dist/cjs/SchemaEditor/SchemaEditor.module.css +5 -1
  72. package/dist/cjs/SchemaEditor/TypeCell.js +3 -3
  73. package/dist/cjs/SchemaEditor/TypeCell.js.map +1 -1
  74. package/dist/cjs/TimeMachine/EventsView.css +17 -17
  75. package/dist/cjs/TimeMachine/EventsView.js +13 -2
  76. package/dist/cjs/TimeMachine/EventsView.js.map +1 -1
  77. package/dist/cjs/TimeMachine/Properties.css +57 -0
  78. package/dist/cjs/TimeMachine/Properties.js +9 -28
  79. package/dist/cjs/TimeMachine/Properties.js.map +1 -1
  80. package/dist/cjs/TimeMachine/ReadModelView.js +10 -0
  81. package/dist/cjs/TimeMachine/ReadModelView.js.map +1 -1
  82. package/dist/cjs/TimeMachine/TimeMachine.css +38 -18
  83. package/dist/cjs/Toolbar/Toolbar.css +34 -17
  84. package/dist/cjs/Toolbar/ToolbarLayout.js +19 -20
  85. package/dist/cjs/Toolbar/ToolbarLayout.js.map +1 -1
  86. package/dist/cjs/index.js +4 -0
  87. package/dist/cjs/index.js.map +1 -1
  88. package/dist/cjs/tailwind-utilities.css +444 -7
  89. package/dist/cjs/tokens.css +83 -0
  90. package/dist/esm/CommandDialog/CommandDialog.d.ts.map +1 -1
  91. package/dist/esm/CommandDialog/CommandDialog.js +94 -4
  92. package/dist/esm/CommandDialog/CommandDialog.js.map +1 -1
  93. package/dist/esm/CommandDialog/CommandStepper.d.ts.map +1 -1
  94. package/dist/esm/CommandDialog/CommandStepper.js +63 -3
  95. package/dist/esm/CommandDialog/CommandStepper.js.map +1 -1
  96. package/dist/esm/CommandDialog/StepperCommandDialog.d.ts +4 -0
  97. package/dist/esm/CommandDialog/StepperCommandDialog.d.ts.map +1 -1
  98. package/dist/esm/CommandDialog/StepperCommandDialog.js +95 -6
  99. package/dist/esm/CommandDialog/StepperCommandDialog.js.map +1 -1
  100. package/dist/esm/CommandForm/fields/CalendarField.d.ts +5 -0
  101. package/dist/esm/CommandForm/fields/CalendarField.d.ts.map +1 -1
  102. package/dist/esm/CommandForm/fields/CalendarField.js +14 -1
  103. package/dist/esm/CommandForm/fields/CalendarField.js.map +1 -1
  104. package/dist/esm/CommandForm/fields/CheckboxField.d.ts +5 -0
  105. package/dist/esm/CommandForm/fields/CheckboxField.d.ts.map +1 -1
  106. package/dist/esm/CommandForm/fields/CheckboxField.js +10 -1
  107. package/dist/esm/CommandForm/fields/CheckboxField.js.map +1 -1
  108. package/dist/esm/CommandForm/fields/ChipsField.d.ts +5 -0
  109. package/dist/esm/CommandForm/fields/ChipsField.d.ts.map +1 -1
  110. package/dist/esm/CommandForm/fields/ChipsField.js +11 -1
  111. package/dist/esm/CommandForm/fields/ChipsField.js.map +1 -1
  112. package/dist/esm/CommandForm/fields/ColorPickerField.d.ts +5 -0
  113. package/dist/esm/CommandForm/fields/ColorPickerField.d.ts.map +1 -1
  114. package/dist/esm/CommandForm/fields/ColorPickerField.js +17 -1
  115. package/dist/esm/CommandForm/fields/ColorPickerField.js.map +1 -1
  116. package/dist/esm/CommandForm/fields/DropdownField.d.ts +5 -0
  117. package/dist/esm/CommandForm/fields/DropdownField.d.ts.map +1 -1
  118. package/dist/esm/CommandForm/fields/DropdownField.js +16 -1
  119. package/dist/esm/CommandForm/fields/DropdownField.js.map +1 -1
  120. package/dist/esm/CommandForm/fields/InputTextField.d.ts +5 -0
  121. package/dist/esm/CommandForm/fields/InputTextField.d.ts.map +1 -1
  122. package/dist/esm/CommandForm/fields/InputTextField.js +41 -1
  123. package/dist/esm/CommandForm/fields/InputTextField.js.map +1 -1
  124. package/dist/esm/CommandForm/fields/MultiSelectField.d.ts +5 -0
  125. package/dist/esm/CommandForm/fields/MultiSelectField.d.ts.map +1 -1
  126. package/dist/esm/CommandForm/fields/MultiSelectField.js +13 -1
  127. package/dist/esm/CommandForm/fields/MultiSelectField.js.map +1 -1
  128. package/dist/esm/CommandForm/fields/NumberField.d.ts +5 -0
  129. package/dist/esm/CommandForm/fields/NumberField.d.ts.map +1 -1
  130. package/dist/esm/CommandForm/fields/NumberField.js +11 -1
  131. package/dist/esm/CommandForm/fields/NumberField.js.map +1 -1
  132. package/dist/esm/CommandForm/fields/RadioButtonField.d.ts +17 -0
  133. package/dist/esm/CommandForm/fields/RadioButtonField.d.ts.map +1 -0
  134. package/dist/esm/CommandForm/fields/RadioButtonField.js +21 -0
  135. package/dist/esm/CommandForm/fields/RadioButtonField.js.map +1 -0
  136. package/dist/esm/CommandForm/fields/RadioGroupField.d.ts +19 -0
  137. package/dist/esm/CommandForm/fields/RadioGroupField.d.ts.map +1 -0
  138. package/dist/esm/CommandForm/fields/RadioGroupField.js +38 -0
  139. package/dist/esm/CommandForm/fields/RadioGroupField.js.map +1 -0
  140. package/dist/esm/CommandForm/fields/SliderField.d.ts +5 -0
  141. package/dist/esm/CommandForm/fields/SliderField.d.ts.map +1 -1
  142. package/dist/esm/CommandForm/fields/SliderField.js +10 -1
  143. package/dist/esm/CommandForm/fields/SliderField.js.map +1 -1
  144. package/dist/esm/CommandForm/fields/TextAreaField.d.ts +5 -0
  145. package/dist/esm/CommandForm/fields/TextAreaField.d.ts.map +1 -1
  146. package/dist/esm/CommandForm/fields/TextAreaField.js +12 -1
  147. package/dist/esm/CommandForm/fields/TextAreaField.js.map +1 -1
  148. package/dist/esm/CommandForm/fields/index.d.ts +2 -0
  149. package/dist/esm/CommandForm/fields/index.d.ts.map +1 -1
  150. package/dist/esm/CommandForm/fields/index.js +2 -0
  151. package/dist/esm/CommandForm/fields/index.js.map +1 -1
  152. package/dist/esm/CommandForm/index.js +2 -0
  153. package/dist/esm/CommandForm/index.js.map +1 -1
  154. package/dist/esm/Common/CratisComponentsProvider.d.ts +11 -0
  155. package/dist/esm/Common/CratisComponentsProvider.d.ts.map +1 -0
  156. package/dist/esm/Common/CratisComponentsProvider.js +40 -0
  157. package/dist/esm/Common/CratisComponentsProvider.js.map +1 -0
  158. package/dist/esm/Common/ErrorBoundary.d.ts.map +1 -1
  159. package/dist/esm/Common/ErrorBoundary.js +32 -0
  160. package/dist/esm/Common/ErrorBoundary.js.map +1 -1
  161. package/dist/esm/Common/FormElement.css +26 -0
  162. package/dist/esm/Common/FormElement.d.ts +1 -0
  163. package/dist/esm/Common/FormElement.d.ts.map +1 -1
  164. package/dist/esm/Common/FormElement.js +14 -1
  165. package/dist/esm/Common/FormElement.js.map +1 -1
  166. package/dist/esm/Common/Page.d.ts.map +1 -1
  167. package/dist/esm/Common/Page.js +13 -0
  168. package/dist/esm/Common/Page.js.map +1 -1
  169. package/dist/esm/Common/Tooltip.css +3 -3
  170. package/dist/esm/Common/index.d.ts +1 -0
  171. package/dist/esm/Common/index.d.ts.map +1 -1
  172. package/dist/esm/Common/index.js +1 -0
  173. package/dist/esm/Common/index.js.map +1 -1
  174. package/dist/esm/DataPage/DataPage.d.ts +12 -3
  175. package/dist/esm/DataPage/DataPage.d.ts.map +1 -1
  176. package/dist/esm/DataPage/DataPage.js +113 -8
  177. package/dist/esm/DataPage/DataPage.js.map +1 -1
  178. package/dist/esm/DataTables/DataTableForObservableQuery.d.ts +9 -1
  179. package/dist/esm/DataTables/DataTableForObservableQuery.d.ts.map +1 -1
  180. package/dist/esm/DataTables/DataTableForObservableQuery.js +65 -6
  181. package/dist/esm/DataTables/DataTableForObservableQuery.js.map +1 -1
  182. package/dist/esm/DataTables/DataTableForQuery.d.ts +9 -1
  183. package/dist/esm/DataTables/DataTableForQuery.d.ts.map +1 -1
  184. package/dist/esm/DataTables/DataTableForQuery.js +62 -6
  185. package/dist/esm/DataTables/DataTableForQuery.js.map +1 -1
  186. package/dist/esm/Dialogs/BusyIndicatorDialog.d.ts.map +1 -1
  187. package/dist/esm/Dialogs/BusyIndicatorDialog.js +47 -0
  188. package/dist/esm/Dialogs/BusyIndicatorDialog.js.map +1 -1
  189. package/dist/esm/Dialogs/Dialog.d.ts +5 -1
  190. package/dist/esm/Dialogs/Dialog.d.ts.map +1 -1
  191. package/dist/esm/Dialogs/Dialog.js +79 -6
  192. package/dist/esm/Dialogs/Dialog.js.map +1 -1
  193. package/dist/esm/Dropdown/Dropdown.d.ts.map +1 -1
  194. package/dist/esm/Dropdown/Dropdown.js +13 -0
  195. package/dist/esm/Dropdown/Dropdown.js.map +1 -1
  196. package/dist/esm/ObjectContentEditor/ObjectContentEditor.d.ts +2 -1
  197. package/dist/esm/ObjectContentEditor/ObjectContentEditor.d.ts.map +1 -1
  198. package/dist/esm/ObjectContentEditor/ObjectContentEditor.js +37 -21
  199. package/dist/esm/ObjectContentEditor/ObjectContentEditor.js.map +1 -1
  200. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.css +6 -0
  201. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.d.ts +3 -1
  202. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.d.ts.map +1 -1
  203. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js +14 -2
  204. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -1
  205. package/dist/esm/PivotViewer/PivotViewer.css +131 -134
  206. package/dist/esm/PivotViewer/PivotViewer.d.ts.map +1 -1
  207. package/dist/esm/PivotViewer/PivotViewer.js +19 -0
  208. package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
  209. package/dist/esm/PivotViewer/components/Spinner.css +8 -8
  210. package/dist/esm/SchemaEditor/NameCell.d.ts.map +1 -1
  211. package/dist/esm/SchemaEditor/NameCell.js +2 -2
  212. package/dist/esm/SchemaEditor/NameCell.js.map +1 -1
  213. package/dist/esm/SchemaEditor/SchemaEditor.d.ts +2 -1
  214. package/dist/esm/SchemaEditor/SchemaEditor.d.ts.map +1 -1
  215. package/dist/esm/SchemaEditor/SchemaEditor.js +15 -3
  216. package/dist/esm/SchemaEditor/SchemaEditor.js.map +1 -1
  217. package/dist/esm/SchemaEditor/SchemaEditor.module.css +5 -1
  218. package/dist/esm/SchemaEditor/TypeCell.d.ts.map +1 -1
  219. package/dist/esm/SchemaEditor/TypeCell.js +3 -3
  220. package/dist/esm/SchemaEditor/TypeCell.js.map +1 -1
  221. package/dist/esm/TimeMachine/EventsView.css +17 -17
  222. package/dist/esm/TimeMachine/EventsView.d.ts +5 -0
  223. package/dist/esm/TimeMachine/EventsView.d.ts.map +1 -1
  224. package/dist/esm/TimeMachine/EventsView.js +13 -2
  225. package/dist/esm/TimeMachine/EventsView.js.map +1 -1
  226. package/dist/esm/TimeMachine/Properties.css +57 -0
  227. package/dist/esm/TimeMachine/Properties.d.ts +1 -0
  228. package/dist/esm/TimeMachine/Properties.d.ts.map +1 -1
  229. package/dist/esm/TimeMachine/Properties.js +9 -28
  230. package/dist/esm/TimeMachine/Properties.js.map +1 -1
  231. package/dist/esm/TimeMachine/ReadModelView.d.ts.map +1 -1
  232. package/dist/esm/TimeMachine/ReadModelView.js +10 -0
  233. package/dist/esm/TimeMachine/ReadModelView.js.map +1 -1
  234. package/dist/esm/TimeMachine/TimeMachine.css +38 -18
  235. package/dist/esm/Toolbar/Toolbar.css +34 -17
  236. package/dist/esm/Toolbar/ToolbarFanOutItem.d.ts +1 -1
  237. package/dist/esm/Toolbar/ToolbarFanOutItem.d.ts.map +1 -1
  238. package/dist/esm/Toolbar/ToolbarLayout.d.ts.map +1 -1
  239. package/dist/esm/Toolbar/ToolbarLayout.js +20 -21
  240. package/dist/esm/Toolbar/ToolbarLayout.js.map +1 -1
  241. package/dist/esm/index.d.ts +1 -0
  242. package/dist/esm/index.d.ts.map +1 -1
  243. package/dist/esm/index.js +1 -0
  244. package/dist/esm/index.js.map +1 -1
  245. package/dist/esm/tailwind-utilities.css +444 -7
  246. package/dist/esm/tokens.css +83 -0
  247. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  248. package/package.json +53 -25
  249. package/dist/esm/CommandDialog/CommandDialog.stories.d.ts +0 -21
  250. package/dist/esm/CommandDialog/CommandDialog.stories.d.ts.map +0 -1
  251. package/dist/esm/CommandDialog/CommandDialog.stories.js +0 -353
  252. package/dist/esm/CommandDialog/CommandDialog.stories.js.map +0 -1
  253. package/dist/esm/CommandDialog/CommandStepper.stories.d.ts +0 -11
  254. package/dist/esm/CommandDialog/CommandStepper.stories.d.ts.map +0 -1
  255. package/dist/esm/CommandDialog/CommandStepper.stories.js +0 -84
  256. package/dist/esm/CommandDialog/CommandStepper.stories.js.map +0 -1
  257. package/dist/esm/CommandDialog/StepperCommandDialog.stories.d.ts +0 -12
  258. package/dist/esm/CommandDialog/StepperCommandDialog.stories.d.ts.map +0 -1
  259. package/dist/esm/CommandDialog/StepperCommandDialog.stories.js +0 -158
  260. package/dist/esm/CommandDialog/StepperCommandDialog.stories.js.map +0 -1
  261. package/dist/esm/CommandForm/fields/Fields.stories.d.ts +0 -17
  262. package/dist/esm/CommandForm/fields/Fields.stories.d.ts.map +0 -1
  263. package/dist/esm/CommandForm/fields/Fields.stories.js +0 -179
  264. package/dist/esm/CommandForm/fields/Fields.stories.js.map +0 -1
  265. package/dist/esm/Common/ErrorBoundary.stories.d.ts +0 -8
  266. package/dist/esm/Common/ErrorBoundary.stories.d.ts.map +0 -1
  267. package/dist/esm/Common/ErrorBoundary.stories.js +0 -22
  268. package/dist/esm/Common/ErrorBoundary.stories.js.map +0 -1
  269. package/dist/esm/Common/FormElement.stories.d.ts +0 -9
  270. package/dist/esm/Common/FormElement.stories.d.ts.map +0 -1
  271. package/dist/esm/Common/FormElement.stories.js +0 -27
  272. package/dist/esm/Common/FormElement.stories.js.map +0 -1
  273. package/dist/esm/Common/Icon.stories.d.ts +0 -11
  274. package/dist/esm/Common/Icon.stories.d.ts.map +0 -1
  275. package/dist/esm/Common/Icon.stories.js +0 -26
  276. package/dist/esm/Common/Icon.stories.js.map +0 -1
  277. package/dist/esm/Common/Page.stories.d.ts +0 -10
  278. package/dist/esm/Common/Page.stories.d.ts.map +0 -1
  279. package/dist/esm/Common/Page.stories.js +0 -35
  280. package/dist/esm/Common/Page.stories.js.map +0 -1
  281. package/dist/esm/DataPage/DataPage.stories.d.ts +0 -10
  282. package/dist/esm/DataPage/DataPage.stories.d.ts.map +0 -1
  283. package/dist/esm/DataPage/DataPage.stories.js +0 -69
  284. package/dist/esm/DataPage/DataPage.stories.js.map +0 -1
  285. package/dist/esm/DataTables/DataTableForObservableQuery.stories.d.ts +0 -8
  286. package/dist/esm/DataTables/DataTableForObservableQuery.stories.d.ts.map +0 -1
  287. package/dist/esm/DataTables/DataTableForObservableQuery.stories.js +0 -79
  288. package/dist/esm/DataTables/DataTableForObservableQuery.stories.js.map +0 -1
  289. package/dist/esm/DataTables/DataTableForQuery.stories.d.ts +0 -8
  290. package/dist/esm/DataTables/DataTableForQuery.stories.d.ts.map +0 -1
  291. package/dist/esm/DataTables/DataTableForQuery.stories.js +0 -54
  292. package/dist/esm/DataTables/DataTableForQuery.stories.js.map +0 -1
  293. package/dist/esm/Dialogs/BusyIndicatorDialog.stories.d.ts +0 -7
  294. package/dist/esm/Dialogs/BusyIndicatorDialog.stories.d.ts.map +0 -1
  295. package/dist/esm/Dialogs/BusyIndicatorDialog.stories.js +0 -15
  296. package/dist/esm/Dialogs/BusyIndicatorDialog.stories.js.map +0 -1
  297. package/dist/esm/Dialogs/ConfirmationDialog.stories.d.ts +0 -7
  298. package/dist/esm/Dialogs/ConfirmationDialog.stories.d.ts.map +0 -1
  299. package/dist/esm/Dialogs/ConfirmationDialog.stories.js +0 -20
  300. package/dist/esm/Dialogs/ConfirmationDialog.stories.js.map +0 -1
  301. package/dist/esm/Dialogs/Dialog.stories.d.ts +0 -13
  302. package/dist/esm/Dialogs/Dialog.stories.d.ts.map +0 -1
  303. package/dist/esm/Dialogs/Dialog.stories.js +0 -85
  304. package/dist/esm/Dialogs/Dialog.stories.js.map +0 -1
  305. package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.d.ts +0 -12
  306. package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.d.ts.map +0 -1
  307. package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.js +0 -184
  308. package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.js.map +0 -1
  309. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.d.ts +0 -10
  310. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.d.ts.map +0 -1
  311. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.js +0 -45
  312. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.js.map +0 -1
  313. package/dist/esm/PivotViewer/PivotViewer.stories.d.ts +0 -8
  314. package/dist/esm/PivotViewer/PivotViewer.stories.d.ts.map +0 -1
  315. package/dist/esm/PivotViewer/PivotViewer.stories.js +0 -233
  316. package/dist/esm/PivotViewer/PivotViewer.stories.js.map +0 -1
  317. package/dist/esm/SchemaEditor/SchemaEditor.stories.d.ts +0 -12
  318. package/dist/esm/SchemaEditor/SchemaEditor.stories.d.ts.map +0 -1
  319. package/dist/esm/SchemaEditor/SchemaEditor.stories.js +0 -157
  320. package/dist/esm/SchemaEditor/SchemaEditor.stories.js.map +0 -1
  321. package/dist/esm/TimeMachine/EventsView.stories.d.ts +0 -9
  322. package/dist/esm/TimeMachine/EventsView.stories.d.ts.map +0 -1
  323. package/dist/esm/TimeMachine/EventsView.stories.js +0 -82
  324. package/dist/esm/TimeMachine/EventsView.stories.js.map +0 -1
  325. package/dist/esm/TimeMachine/Properties.stories.d.ts +0 -10
  326. package/dist/esm/TimeMachine/Properties.stories.d.ts.map +0 -1
  327. package/dist/esm/TimeMachine/Properties.stories.js +0 -51
  328. package/dist/esm/TimeMachine/Properties.stories.js.map +0 -1
  329. package/dist/esm/TimeMachine/ReadModelView.stories.d.ts +0 -8
  330. package/dist/esm/TimeMachine/ReadModelView.stories.d.ts.map +0 -1
  331. package/dist/esm/TimeMachine/ReadModelView.stories.js +0 -80
  332. package/dist/esm/TimeMachine/ReadModelView.stories.js.map +0 -1
  333. package/dist/esm/TimeMachine/TimeMachine.stories.d.ts +0 -9
  334. package/dist/esm/TimeMachine/TimeMachine.stories.d.ts.map +0 -1
  335. package/dist/esm/TimeMachine/TimeMachine.stories.js +0 -115
  336. package/dist/esm/TimeMachine/TimeMachine.stories.js.map +0 -1
  337. package/dist/esm/Toolbar/Toolbar.stories.d.ts +0 -26
  338. package/dist/esm/Toolbar/Toolbar.stories.d.ts.map +0 -1
  339. package/dist/esm/Toolbar/Toolbar.stories.js +0 -240
  340. package/dist/esm/Toolbar/Toolbar.stories.js.map +0 -1
  341. package/dist/esm/given.d.ts +0 -5
  342. package/dist/esm/given.d.ts.map +0 -1
  343. package/dist/esm/given.js +0 -7
  344. package/dist/esm/given.js.map +0 -1
package/README.md CHANGED
@@ -23,11 +23,26 @@ The package provides dual CommonJS and ES Module builds with proper conditional
23
23
  ## Installation
24
24
 
25
25
  ```bash
26
- npm install @cratis/components
26
+ npm install @cratis/components primereact primeicons
27
27
  # or
28
- yarn add @cratis/components
28
+ yarn add @cratis/components primereact primeicons
29
29
  ```
30
30
 
31
+ `primereact` and `primeicons` are peer dependencies — installing them in your
32
+ app ensures a single copy is shared with the wrappers in this package. The
33
+ `@cratis/arc*` packages and `react`/`react-dom` are also peer dependencies;
34
+ you typically already have them.
35
+
36
+ The following are **optional** peer dependencies, only required if you use the
37
+ component that depends on them:
38
+
39
+ | Component | Optional peer |
40
+ |---|---|
41
+ | `PivotViewer` | `pixi.js` (canvas) and `framer-motion` (animated panels) |
42
+ | `DataPage` resizable layout | `allotment` |
43
+
44
+ Install them only when you reach for the corresponding component.
45
+
31
46
  ## Usage
32
47
 
33
48
  ### Importing Components
@@ -46,16 +61,472 @@ import { TimeMachine, DataPage } from '@cratis/components';
46
61
 
47
62
  ### Available Subpath Exports
48
63
 
64
+ Components:
65
+
66
+ - `@cratis/components` — package root (re-exports `CratisComponentsProvider` and the namespaced component groups)
49
67
  - `@cratis/components/CommandDialog`
68
+ - `@cratis/components/CommandStepper`
50
69
  - `@cratis/components/CommandForm`
70
+ - `@cratis/components/CommandForm/fields`
51
71
  - `@cratis/components/Common`
52
72
  - `@cratis/components/DataPage`
53
73
  - `@cratis/components/DataTables`
54
74
  - `@cratis/components/Dialogs`
55
75
  - `@cratis/components/Dropdown`
56
- - `@cratis/components/EventModeling`
76
+ - `@cratis/components/ObjectContentEditor`
77
+ - `@cratis/components/ObjectNavigationalBar`
57
78
  - `@cratis/components/PivotViewer`
79
+ - `@cratis/components/SchemaEditor`
58
80
  - `@cratis/components/TimeMachine`
81
+ - `@cratis/components/Toolbar`
82
+ - `@cratis/components/types`
83
+
84
+ Stylesheets:
85
+
86
+ - `@cratis/components/styles` — Tailwind utilities + Cratis CSS variable tokens (single stylesheet, recommended)
87
+ - `@cratis/components/tokens` — only the `--cratis-*` CSS variable tokens (for consumers using their own utility CSS solution)
88
+
89
+ ## Styling
90
+
91
+ This package ships primarily for its functionality and Arc integrations.
92
+ Styling is designed to stay out of the way: choose the setup that matches how
93
+ much control you want, and the other layers stay invisible.
94
+
95
+ > **Tip — see each setup live:** every Storybook story includes a **Styling**
96
+ > toolbar (paintbrush icon) that flips between five modes that demonstrate
97
+ > the three setups below: *Lara Dark Blue*, *Lara Light Blue*, *Themed with
98
+ > custom palette*, *Unstyled (bare structure)*, and *Unstyled + Tailwind pt*.
99
+ > Open any story (`yarn dev`) and switch modes to see the same component under
100
+ > each setup.
101
+
102
+ ### TL;DR — choose a styling setup
103
+
104
+ | Setup | When | Effort | What you write |
105
+ |---|---|---|---|
106
+ | **Use a PrimeReact theme** | You want components to look good immediately and tweak from there. | Lowest | Theme CSS import + provider |
107
+ | **Use a custom palette on top of a PrimeReact theme** | You want PrimeReact's structure but your own colors. | Low | A PrimeReact theme + CSS variable overrides |
108
+ | **Use fully unstyled mode** | You're integrating into a tightly controlled design system. | Highest | `unstyled: true` + a `pt` preset in CSS or Tailwind |
109
+
110
+ > **Why the first two options still load a PrimeReact theme**
111
+ >
112
+ > In PrimeReact 10, every widget's *structural* CSS (padding, borders, dialog
113
+ > frame, focus rings, button shapes) ships **inside the theme file**. There is
114
+ > no separate "primitives" stylesheet. So a consumer who doesn't load any
115
+ > PrimeReact theme also has no structural CSS — components render as their
116
+ > raw HTML primitives.
117
+ >
118
+ > The `--cratis-*` token layer is therefore an **additive Cratis-scoped tint**
119
+ > for surfaces *our* wrappers own (validation error text, the FormElement
120
+ > addon, breadcrumb borders, etc.). It is not, by itself, enough to skin
121
+ > PrimeReact widgets. Override PrimeReact's variables when you want the whole
122
+ > UI in your palette. Use `unstyled: true` and a `pt` preset when you want to
123
+ > replace PrimeReact's visuals entirely.
124
+
125
+ All three setups use the same one-line setup. You can change direction later
126
+ because the same provider, tokens, and `pt` hooks stay available.
127
+
128
+ ### One-line setup (every styling option)
129
+
130
+ ```tsx
131
+ import '@cratis/components/styles';
132
+ import { CratisComponentsProvider } from '@cratis/components';
133
+
134
+ export const App = () => (
135
+ <CratisComponentsProvider>
136
+ <YourApp />
137
+ </CratisComponentsProvider>
138
+ );
139
+ ```
140
+
141
+ - `@cratis/components/styles` ships the Tailwind utility classes used inside
142
+ the package plus the `--cratis-*` CSS variable token layer that every
143
+ internal component reads from. (Use `@cratis/components/tokens` instead if
144
+ you're bringing your own Tailwind.)
145
+ - `CratisComponentsProvider` is a thin wrapper over PrimeReact's
146
+ `PrimeReactProvider` so Cratis has one place to layer in defaults. Drop in
147
+ raw `PrimeReactProvider` if you'd rather.
148
+
149
+ The three setups below differ only in **what else** you load on top of this
150
+ setup.
151
+
152
+ ---
153
+
154
+ ### Use a PrimeReact theme
155
+
156
+ Load any PrimeReact theme stylesheet alongside Cratis Components. PrimeReact's
157
+ own widgets paint themselves from the theme, and the `--cratis-*` tokens cascade
158
+ to the matching theme variables so Cratis-scoped surfaces follow along.
159
+
160
+ ```tsx
161
+ // 1. Theme first, then Cratis styles so any --cratis-* override wins.
162
+ import 'primereact/resources/themes/lara-dark-blue/theme.css';
163
+ import 'primeicons/primeicons.css';
164
+ import '@cratis/components/styles';
165
+
166
+ import { CratisComponentsProvider } from '@cratis/components';
167
+
168
+ export const App = () => (
169
+ <CratisComponentsProvider>
170
+ <YourApp />
171
+ </CratisComponentsProvider>
172
+ );
173
+ ```
174
+
175
+ #### Override a single component with CSS
176
+
177
+ Plain CSS works fine on top of the theme. Target either PrimeReact's class
178
+ names or your own `className`:
179
+
180
+ ```css
181
+ /* yourApp.css */
182
+ .p-button {
183
+ border-radius: 999px; /* pill buttons everywhere */
184
+ }
185
+
186
+ .dangerous-button {
187
+ background: var(--cratis-red-500);
188
+ color: white;
189
+ }
190
+ ```
191
+
192
+ ```tsx
193
+ <Button label="Delete" className="dangerous-button" />
194
+ ```
195
+
196
+ #### Override a single component with Tailwind
197
+
198
+ Pass Tailwind utility classes through the wrapper's `className` prop:
199
+
200
+ ```tsx
201
+ <InputTextField value={c => c.name}
202
+ className="rounded-2xl bg-slate-900 text-slate-50" />
203
+
204
+ <Dialog title="Confirm" className="shadow-2xl rounded-3xl">
205
+ {/* … */}
206
+ </Dialog>
207
+ ```
208
+
209
+ **Use this setup when:** you're prototyping, building internal tools, or are
210
+ happy with one of the prebuilt PrimeReact themes.
211
+
212
+ ---
213
+
214
+ ### Use a custom palette on top of a PrimeReact theme
215
+
216
+ Keep a PrimeReact theme as your **structural baseline** (so every widget gets
217
+ its padding, dialog frame, button shape, focus ring, etc.) and override the
218
+ PrimeReact CSS variables on `:root` to repaint the whole UI in your own
219
+ colors. The `--cratis-*` tokens follow along through tokens.css's cascade, so
220
+ Cratis-scoped surfaces stay in sync — and you can override the Cratis tokens
221
+ independently if you want Cratis surfaces to differ from PrimeReact widgets.
222
+
223
+ #### With plain CSS
224
+
225
+ ```css
226
+ /* palette.override.css — imported once, after @cratis/components/styles */
227
+ :root {
228
+ /* PrimeReact variables — these are what PrimeReact widgets read. */
229
+ --surface-0: #1e293b;
230
+ --surface-100: #1e293b;
231
+ --surface-ground: #020617;
232
+ --surface-section: #0f172a;
233
+ --surface-card: #1e293b;
234
+ --surface-overlay: #1e293b;
235
+ --surface-hover: #334155;
236
+ --surface-border: #334155;
237
+
238
+ --text-color: #f8fafc;
239
+ --text-color-secondary: #94a3b8;
240
+
241
+ --primary-color: #38bdf8;
242
+ --primary-color-text: #0b1220;
243
+
244
+ --highlight-bg: #1e40af;
245
+ --highlight-text-color: #ffffff;
246
+
247
+ --border-radius: 10px;
248
+
249
+ /* --cratis-* tokens default to var(--surface-*) etc. via tokens.css, so
250
+ the overrides above flow through automatically. Set these explicitly
251
+ only if you want Cratis-scoped surfaces tinted differently. */
252
+ --cratis-red-500: #ef4444;
253
+ --cratis-green-500: #22c55e;
254
+ }
255
+ ```
256
+
257
+ ```tsx
258
+ // 1. PrimeReact theme provides the structure.
259
+ import 'primereact/resources/themes/lara-dark-blue/theme.css';
260
+ import 'primeicons/primeicons.css';
261
+ import '@cratis/components/styles';
262
+ // 2. Your palette overrides — must come after the theme so they win.
263
+ import './palette.override.css';
264
+ ```
265
+
266
+ #### Scoped (dark-on-light, light-on-dark, etc.)
267
+
268
+ PrimeReact variables cascade like any other CSS variable, so an ancestor
269
+ scope works:
270
+
271
+ ```css
272
+ .dark-zone {
273
+ --surface-card: #0b1220;
274
+ --text-color: #f8fafc;
275
+ --primary-color: #60a5fa;
276
+ }
277
+ ```
278
+
279
+ ```tsx
280
+ <div className="dark-zone">
281
+ <Dialog title="Always dark">…</Dialog>
282
+ </div>
283
+ ```
284
+
285
+ #### With Tailwind CSS
286
+
287
+ Tailwind's `@layer base` is the idiomatic spot — declare the palette once and
288
+ Tailwind handles cascade and dark mode:
289
+
290
+ ```css
291
+ /* app.css */
292
+ @import "tailwindcss";
293
+ @import "primereact/resources/themes/lara-dark-blue/theme.css";
294
+ @import "@cratis/components/styles";
295
+
296
+ @layer base {
297
+ :root {
298
+ --surface-card: theme('colors.slate.800');
299
+ --surface-border: theme('colors.slate.700');
300
+ --text-color: theme('colors.slate.50');
301
+ --primary-color: theme('colors.sky.400');
302
+ --cratis-red-500: theme('colors.red.500');
303
+ }
304
+
305
+ .dark {
306
+ --surface-card: theme('colors.slate.900');
307
+ --text-color: theme('colors.slate.100');
308
+ }
309
+ }
310
+ ```
311
+
312
+ #### What `--cratis-*` tokens are for
313
+
314
+ PrimeReact widgets read PrimeReact's own variables (`--surface-card`,
315
+ `--text-color`, `--primary-color`, …) directly. Cratis wrappers add some
316
+ surfaces of their own (inline validation error text, the FormElement addon
317
+ background, the breadcrumb bottom border, etc.) — those use a parallel set
318
+ of `--cratis-*` tokens that default to the PrimeReact value via the cascade
319
+ defined in `tokens.css`.
320
+
321
+ The upshot:
322
+
323
+ - Override **PrimeReact variables** to repaint the whole UI (PrimeReact widgets + Cratis surfaces).
324
+ - Override **`--cratis-*` tokens** when you specifically want Cratis surfaces to differ from PrimeReact widgets.
325
+
326
+ #### `--cratis-*` token reference (Cratis-scoped surfaces)
327
+
328
+ | Group | Tokens |
329
+ |---|---|
330
+ | Surfaces | `--cratis-surface-0`, `--cratis-surface-100`, `--cratis-surface-ground`, `--cratis-surface-section`, `--cratis-surface-card`, `--cratis-surface-overlay`, `--cratis-surface-hover`, `--cratis-surface-border` |
331
+ | Text | `--cratis-text-color`, `--cratis-text-color-secondary` |
332
+ | Brand | `--cratis-primary-color`, `--cratis-primary-color-text`, `--cratis-primary-300`, `--cratis-primary-400`, `--cratis-primary-500`, `--cratis-primary-600` |
333
+ | Selection | `--cratis-highlight-bg`, `--cratis-highlight-text-color` |
334
+ | Semantic | `--cratis-green-500`, `--cratis-orange-500`, `--cratis-red-500` |
335
+ | Geometry | `--cratis-border-radius` |
336
+ | Effects | `--cratis-focus-ring`, `--cratis-maskbg` |
337
+
338
+ Each defaults to the PrimeReact variable with the same name minus the
339
+ `--cratis-` prefix (e.g. `--cratis-surface-card` → `var(--surface-card)`).
340
+
341
+ **Use this setup when:** you want a custom look without writing a PrimeReact
342
+ theme from scratch, you're shipping multiple palette variants (light/dark/
343
+ brand), or you want Cratis-scoped surfaces tinted differently from PrimeReact
344
+ widgets.
345
+
346
+ ---
347
+
348
+ ### Use fully unstyled mode
349
+
350
+ Turn off every PrimeReact base style at the provider and supply visuals
351
+ through PrimeReact's `pt` (pass-through) mechanism, your own CSS, or both.
352
+ Components render structurally only and become a blank canvas.
353
+
354
+ ```tsx
355
+ import '@cratis/components/styles'; // tokens + Tailwind utilities still useful for spacing/layout
356
+ import { CratisComponentsProvider } from '@cratis/components';
357
+
358
+ export const App = () => (
359
+ <CratisComponentsProvider value={{ unstyled: true, pt: globalPt }}>
360
+ <YourApp />
361
+ </CratisComponentsProvider>
362
+ );
363
+ ```
364
+
365
+ #### A `pt` preset in plain CSS
366
+
367
+ Attach a `className` from your own stylesheet via a global preset:
368
+
369
+ ```ts
370
+ // pt-preset.ts
371
+ export const globalPt = {
372
+ button: {
373
+ root: { className: 'my-btn' },
374
+ },
375
+ dialog: {
376
+ root: { className: 'my-dialog' },
377
+ header: { className: 'my-dialog__header' },
378
+ content: { className: 'my-dialog__body' },
379
+ },
380
+ inputtext: {
381
+ root: { className: 'my-input' },
382
+ },
383
+ } as const;
384
+ ```
385
+
386
+ ```css
387
+ /* yourApp.css */
388
+ .my-btn {
389
+ display: inline-flex;
390
+ align-items: center;
391
+ padding: 0.5rem 1rem;
392
+ background: var(--cratis-primary-color);
393
+ color: var(--cratis-primary-color-text);
394
+ border: none;
395
+ border-radius: var(--cratis-border-radius);
396
+ cursor: pointer;
397
+ }
398
+
399
+ .my-dialog__header {
400
+ padding: 1rem 1.25rem;
401
+ background: var(--cratis-surface-card);
402
+ border-bottom: 1px solid var(--cratis-surface-border);
403
+ font-weight: 600;
404
+ }
405
+ ```
406
+
407
+ #### A `pt` preset in Tailwind
408
+
409
+ Same shape, Tailwind utilities as the class strings:
410
+
411
+ ```ts
412
+ // pt-preset.ts
413
+ export const globalPt = {
414
+ button: {
415
+ root: { className: 'inline-flex items-center px-4 py-2 rounded-lg bg-sky-500 text-white hover:bg-sky-400 disabled:opacity-50' },
416
+ },
417
+ dialog: {
418
+ root: { className: 'rounded-2xl shadow-2xl overflow-hidden' },
419
+ header: { className: 'px-5 py-3 bg-slate-800 text-slate-50 font-semibold border-b border-slate-700' },
420
+ content: { className: 'p-5 bg-slate-900 text-slate-100' },
421
+ },
422
+ inputtext: {
423
+ root: { className: 'w-full px-3 py-2 rounded-md bg-slate-800 text-slate-50 border border-slate-700 focus:border-sky-400 focus:outline-none' },
424
+ },
425
+ } as const;
426
+ ```
427
+
428
+ #### Per-instance overrides
429
+
430
+ Anything global can be overridden per-instance — useful when one component
431
+ needs to look different:
432
+
433
+ ```tsx
434
+ <Dialog
435
+ title="Brand callout"
436
+ pt={{ root: { className: 'rounded-none' },
437
+ header: { className: 'bg-pink-600 text-white' } }}>
438
+
439
+ </Dialog>
440
+
441
+ <InputTextField value={c => c.name}
442
+ pt={{ root: { className: 'border-2 border-pink-500' } }} />
443
+ ```
444
+
445
+ #### Composite components in unstyled mode
446
+
447
+ `DataPage` and `StepperCommandDialog` compose multiple PrimeReact widgets and
448
+ expose explicit per-slot props. The global `pt` reaches every internal widget;
449
+ per-instance overrides target the inner slot directly:
450
+
451
+ ```tsx
452
+ <DataPage<AllAuthors, Author, never>
453
+ title="Authors" query={AllAuthors}
454
+ tablePt={{ table: { className: 'min-w-full divide-y divide-slate-700' } }}
455
+ menubarPt={{ root: { className: 'px-3 py-2 bg-slate-900' } }}>
456
+ <DataPage.MenuItems>…</DataPage.MenuItems>
457
+ <DataPage.Columns>…</DataPage.Columns>
458
+ </DataPage>
459
+
460
+ <StepperCommandDialog<RegisterOrder> command={RegisterOrder} title="New order"
461
+ /* pt targets the Stepper */
462
+ pt={{ stepperpanel: { content: { className: 'pt-6' } } }}
463
+ /* dialogPt targets the outer Dialog */
464
+ dialogPt={{ header: { className: 'bg-slate-900' } }}>
465
+
466
+ </StepperCommandDialog>
467
+ ```
468
+
469
+ `ObjectContentEditor`, `ObjectNavigationalBar`, and `SchemaEditor` accept only
470
+ `className` on the root — restyle their internals via the **global** `pt`
471
+ preset.
472
+
473
+ **Use this setup when:** you have a design system to honor, you're matching a
474
+ brand kit, or you want zero PrimeReact CSS in the final bundle.
475
+
476
+ ---
477
+
478
+ ### Combining styling setups
479
+
480
+ The styling options compose, so you don't have to choose one for the whole app:
481
+
482
+ - **Themed with one unstyled component** — keep the PrimeReact theme and pass
483
+ `unstyled` per-component to opt that one widget out:
484
+ ```tsx
485
+ <Dialog title="Custom" unstyled pt={brandDialogPt}>…</Dialog>
486
+ ```
487
+ - **Unstyled with one themed island** — wrap a subtree in a second
488
+ `CratisComponentsProvider` that restores defaults:
489
+ ```tsx
490
+ <CratisComponentsProvider value={{ unstyled: true, pt: globalPt }}>
491
+ <App />
492
+ <CratisComponentsProvider value={{ unstyled: false }}>
493
+ <PrimeReactThemedSubtree />
494
+ </CratisComponentsProvider>
495
+ </CratisComponentsProvider>
496
+ ```
497
+ - **Dark mode** — scope the palette overrides to `.dark` (override
498
+ `--surface-card`, `--text-color`, `--primary-color`, etc., plus any
499
+ `--cratis-*` tokens you want to diverge) and toggle the class on the root
500
+ element. PrimeReact widgets and Cratis surfaces both follow the cascade.
501
+
502
+ ### Per-component `pt` cheat sheet
503
+
504
+ Three patterns, depending on how much PrimeReact a wrapper composes:
505
+
506
+ 1. **Single-widget wrappers** — `Dialog`, every `CommandForm` field,
507
+ `EventsView`, and `Dropdown` forward `pt`, `ptOptions`, `unstyled`, and
508
+ `className` straight to their inner PrimeReact component.
509
+ 2. **Multi-slot composites** — `StepperCommandDialog` (`pt` for Stepper,
510
+ `dialogPt` for Dialog), `DataPage` (`tablePt` for DataTable, `menubarPt`
511
+ for Menubar), and `DataTableForQuery` / `DataTableForObservableQuery`
512
+ (`pt` for DataTable, `paginatorPt` for Paginator) — each slot has
513
+ `*PtOptions`, `*Unstyled`, and (where applicable) `*ClassName` siblings.
514
+ 3. **Large composites** — `ObjectContentEditor`, `ObjectNavigationalBar`,
515
+ `SchemaEditor` expose `className` only; restyle internals via the global
516
+ `pt` preset.
517
+
518
+ ### What is *not* fully pass-through
519
+
520
+ A small number of internal usages opt into PrimeReact's slot-rendering by
521
+ name (for example, a custom Menubar item template uses `p-menuitem-link` /
522
+ `p-menuitem-text` to match the surrounding default-rendered items). These are
523
+ correct contracts with PrimeReact's own slot rendering, not hard-coded
524
+ theming — they have no effect in `unstyled` mode and match the rest of the
525
+ menu in themed mode.
526
+
527
+ `BusyIndicatorDialog` only honors the global `pt` set via
528
+ `CratisComponentsProvider`; it does not accept per-instance `pt` because its
529
+ request type is owned by `@cratis/arc.react`.
59
530
 
60
531
  ## Troubleshooting
61
532
 
@@ -81,4 +552,4 @@ If using TypeScript 4.7+, try updating your `tsconfig.json`:
81
552
 
82
553
  ### Import Errors
83
554
 
84
- Ensure you're using the correct import paths. The package uses case-sensitive paths that match the actual component names.
555
+ Ensure you're using the correct import paths. The package uses case-sensitive paths that match the actual component names.
@@ -6,7 +6,7 @@ var Dialog = require('../Dialogs/Dialog.js');
6
6
  var React = require('react');
7
7
  var commands = require('@cratis/arc.react/commands');
8
8
 
9
- const CommandDialogWrapper = ({ title, visible, width, style, contentStyle, resizable, buttons, okLabel, cancelLabel, yesLabel, noLabel, isValid, onClose, onConfirm, onCancel, onSuccess, onValidationFailure, onFailed, onBeforeExecute, children }) => {
9
+ const CommandDialogWrapper = ({ title, visible, width, style, contentStyle, resizable, buttons, okLabel, cancelLabel, yesLabel, noLabel, isValid, onClose, onConfirm, onCancel, onSuccess, onValidationFailure, onFailed, onBeforeExecute, className, pt, ptOptions, unstyled, children }) => {
10
10
  const { setCommandValues, setCommandResult, isValid: isCommandFormValid } = commands.useCommandFormContext();
11
11
  const commandInstance = commands.useCommandInstance();
12
12
  const [isBusy, setIsBusy] = React.useState(false);
@@ -63,11 +63,101 @@ const CommandDialogWrapper = ({ title, visible, width, style, contentStyle, resi
63
63
  };
64
64
  const processedChildren = processChildren(children);
65
65
  const isDialogValid = (isValid !== false) && isCommandFormValid;
66
- return (jsxRuntime.jsx(Dialog.Dialog, { title: title, visible: visible, width: width, style: style, contentStyle: contentStyle, resizable: resizable, buttons: buttons, onClose: onClose, onConfirm: handleConfirm, onCancel: onCancel, okLabel: okLabel, cancelLabel: cancelLabel, yesLabel: yesLabel, noLabel: noLabel, isValid: isDialogValid, isBusy: isBusy, children: jsxRuntime.jsx("div", { style: { display: 'flex', flexDirection: 'column', width: '100%' }, children: processedChildren }) }));
66
+ return (jsxRuntime.jsx(Dialog.Dialog, { title: title, visible: visible, width: width, style: style, contentStyle: contentStyle, resizable: resizable, buttons: buttons, onClose: onClose, onConfirm: handleConfirm, onCancel: onCancel, okLabel: okLabel, cancelLabel: cancelLabel, yesLabel: yesLabel, noLabel: noLabel, isValid: isDialogValid, isBusy: isBusy, className: className, pt: pt, ptOptions: ptOptions, unstyled: unstyled, children: jsxRuntime.jsx("div", { style: { display: 'flex', flexDirection: 'column', width: '100%' }, children: processedChildren }) }));
67
67
  };
68
+ /**
69
+ * A {@link Dialog} that hosts a Cratis Arc `CommandForm`, runs the bound
70
+ * command on confirm, and only closes when the command succeeds. This is
71
+ * the standard pattern for "user fills in a form, clicks OK, command runs
72
+ * server-side, dialog dismisses" — `CommandDialog` collapses about thirty
73
+ * lines of orchestration into the props on a single component.
74
+ *
75
+ * ## Where `TCommand` comes from
76
+ *
77
+ * `TCommand` is an auto-generated TypeScript class produced by the Arc proxy
78
+ * generator from a C# `[Command]` record. `dotnet build` writes a `.ts` file
79
+ * per command with the right property types and a typed `execute()` method;
80
+ * importing the class is all the connection-to-the-backend you need. The
81
+ * class also exposes a `.use()` hook for direct (non-dialog) usage and a
82
+ * `useWithChangeTracking()` variant.
83
+ *
84
+ * ## What happens on confirm
85
+ *
86
+ * 1. If `onBeforeExecute` is supplied, it transforms the command values.
87
+ * Used for generated IDs (`Guid.create()`) that the user did not type in.
88
+ * 2. The command's `execute()` runs through Arc's command pipeline. The
89
+ * backend handler returns either a typed response (mapped to `TResponse`)
90
+ * or a `ValidationResult[]`.
91
+ * 3. On `IsSuccess: true`, `onSuccess(response)` fires and the dialog closes
92
+ * through the dialog host context.
93
+ * 4. On a validation failure, `onValidationFailure(errors)` fires and the
94
+ * form's per-field error display is updated. The dialog stays open.
95
+ * 5. On a domain or transport failure, `onFailed(result)` fires. The dialog
96
+ * stays open and the `CommandResult` is set on the form context so the
97
+ * UI can surface the error to the user.
98
+ *
99
+ * Throughout, the dialog is in the `isBusy` state — every action button is
100
+ * disabled and the confirm button shows a spinner.
101
+ *
102
+ * ## Field binding
103
+ *
104
+ * Children that are `CommandFormField` instances (`InputTextField`,
105
+ * `NumberField`, `DropdownField`, every `@cratis/components/CommandForm/fields`
106
+ * widget) bind to a property on the command via the `value` accessor:
107
+ *
108
+ * ```tsx
109
+ * <InputTextField value={c => c.name} title="Name" />
110
+ * ```
111
+ *
112
+ * The accessor's argument is the command instance — TypeScript infers
113
+ * `c.name` is a string and the field type-checks against that. Arbitrary
114
+ * non-field children (custom layout, additional text, decorative elements)
115
+ * are rendered as plain content.
116
+ *
117
+ * ## Typed dialog host usage
118
+ *
119
+ * Combine with `useDialog<CommandResult<TResponse>>()` from
120
+ * `@cratis/arc.react/dialogs` to get a fully-typed result at the call site:
121
+ *
122
+ * ```tsx
123
+ * import { useDialog, DialogResult } from '@cratis/arc.react/dialogs';
124
+ * import { CommandDialog } from '@cratis/components/CommandDialog';
125
+ * import { RegisterAuthor } from './RegisterAuthor'; // proxy from C#
126
+ *
127
+ * type RegisterAuthorResponse = { authorId: string };
128
+ *
129
+ * const RegisterAuthorDialog = () => {
130
+ * const { closeDialog } = useDialogContext<CommandResult<RegisterAuthorResponse>>();
131
+ * return (
132
+ * <CommandDialog<RegisterAuthor, RegisterAuthorResponse>
133
+ * command={RegisterAuthor}
134
+ * title="Register author"
135
+ * okLabel="Register"
136
+ * onSuccess={(response) => closeDialog(DialogResult.Ok)}
137
+ * onCancel={() => closeDialog(DialogResult.Cancelled)}>
138
+ * <InputTextField value={c => c.name} title="Name" />
139
+ * <InputTextField value={c => c.email} title="Email" />
140
+ * </CommandDialog>
141
+ * );
142
+ * };
143
+ * ```
144
+ *
145
+ * ## What's special vs. raw Dialog + CommandForm
146
+ *
147
+ * - Confirm wiring (`onConfirm` → `commandInstance.execute()`) is handled
148
+ * internally; you only supply `onSuccess` / `onValidationFailure` / `onFailed`.
149
+ * - The dialog's `isBusy` state tracks the in-flight command without manual
150
+ * `useState`.
151
+ * - Field error propagation from `CommandResult.validationResults` to the
152
+ * form context is automatic.
153
+ *
154
+ * @typeParam TCommand - The command class (proxy generated from C# `[Command]`).
155
+ * @typeParam TResponse - The success payload type returned by the command's `Handle()` method on the backend.
156
+ * @param props - {@link CommandDialogProps}.
157
+ */
68
158
  const CommandDialogComponent = (props) => {
69
- const { title, visible, width, style, contentStyle, resizable, buttons = dialogs.DialogButtons.OkCancel, okLabel, cancelLabel, yesLabel, noLabel, isValid, onClose, onConfirm, onCancel, children, ...commandFormProps } = props;
70
- return (jsxRuntime.jsx(commands.CommandForm, { ...commandFormProps, children: jsxRuntime.jsx(CommandDialogWrapper, { title: title, visible: visible, width: width, style: style, contentStyle: contentStyle, resizable: resizable, buttons: buttons, okLabel: okLabel, cancelLabel: cancelLabel, yesLabel: yesLabel, noLabel: noLabel, isValid: isValid, onClose: onClose, onConfirm: onConfirm, onCancel: onCancel, onSuccess: props.onSuccess, onValidationFailure: props.onValidationFailure, onFailed: props.onFailed, onBeforeExecute: commandFormProps.onBeforeExecute, children: children }) }));
159
+ const { title, visible, width, style, contentStyle, resizable, buttons = dialogs.DialogButtons.OkCancel, okLabel, cancelLabel, yesLabel, noLabel, isValid, onClose, onConfirm, onCancel, className, pt, ptOptions, unstyled, children, ...commandFormProps } = props;
160
+ return (jsxRuntime.jsx(commands.CommandForm, { ...commandFormProps, children: jsxRuntime.jsx(CommandDialogWrapper, { title: title, visible: visible, width: width, style: style, contentStyle: contentStyle, resizable: resizable, buttons: buttons, okLabel: okLabel, cancelLabel: cancelLabel, yesLabel: yesLabel, noLabel: noLabel, isValid: isValid, onClose: onClose, onConfirm: onConfirm, onCancel: onCancel, onSuccess: props.onSuccess, onValidationFailure: props.onValidationFailure, onFailed: props.onFailed, onBeforeExecute: commandFormProps.onBeforeExecute, className: className, pt: pt, ptOptions: ptOptions, unstyled: unstyled, children: children }) }));
71
161
  };
72
162
  const CommandDialogColumnWrapper = ({ children }) => (jsxRuntime.jsx(commands.CommandForm.Column, { children: children }));
73
163
  CommandDialogColumnWrapper.displayName = 'CommandFormColumn';
@@ -1 +1 @@
1
- {"version":3,"file":"CommandDialog.js","sources":["../../../CommandDialog/CommandDialog.tsx"],"sourcesContent":[null],"names":["useCommandFormContext","useCommandInstance","useState","DialogResult","_jsx","CommandFormFieldWrapper","Dialog","DialogButtons","CommandForm"],"mappings":"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"}
1
+ {"version":3,"file":"CommandDialog.js","sources":["../../../CommandDialog/CommandDialog.tsx"],"sourcesContent":[null],"names":["useCommandFormContext","useCommandInstance","useState","DialogResult","_jsx","CommandFormFieldWrapper","Dialog","DialogButtons","CommandForm"],"mappings":"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"}