@multiplatform.one/backoffice 7.23.0 → 7.23.2

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 (471) hide show
  1. package/dist/cjs/chrome/CommandPalette.cjs +2 -2
  2. package/dist/cjs/chrome/CommandPalette.native.js +2 -2
  3. package/dist/cjs/chrome/CommandPalette.native.js.map +1 -1
  4. package/dist/cjs/chrome/help-about-dialog.cjs +2 -1
  5. package/dist/cjs/chrome/help-about-dialog.native.js +2 -1
  6. package/dist/cjs/chrome/help-about-dialog.native.js.map +1 -1
  7. package/dist/cjs/chrome/help-shortcuts-dialog.cjs +3 -3
  8. package/dist/cjs/chrome/help-shortcuts-dialog.native.js +3 -3
  9. package/dist/cjs/chrome/help-shortcuts-dialog.native.js.map +1 -1
  10. package/dist/cjs/chrome/notifications-panel.cjs +4 -5
  11. package/dist/cjs/chrome/notifications-panel.native.js +4 -5
  12. package/dist/cjs/chrome/notifications-panel.native.js.map +1 -1
  13. package/dist/cjs/form/FormConnections.cjs +7 -7
  14. package/dist/cjs/form/FormConnections.native.js +7 -7
  15. package/dist/cjs/form/FormConnections.native.js.map +1 -1
  16. package/dist/cjs/form/FormDialogs.cjs +6 -5
  17. package/dist/cjs/form/FormDialogs.native.js +6 -5
  18. package/dist/cjs/form/FormDialogs.native.js.map +1 -1
  19. package/dist/cjs/form/FormSidebarPanel.cjs +1 -1
  20. package/dist/cjs/form/FormSidebarPanel.native.js +1 -1
  21. package/dist/cjs/form/FormSidebarPanel.native.js.map +1 -1
  22. package/dist/cjs/form/FormTimeline.cjs +4 -4
  23. package/dist/cjs/form/FormTimeline.native.js +4 -4
  24. package/dist/cjs/form/FormTimeline.native.js.map +1 -1
  25. package/dist/cjs/form/sidebar-dialogs.cjs +3 -2
  26. package/dist/cjs/form/sidebar-dialogs.native.js +3 -2
  27. package/dist/cjs/form/sidebar-dialogs.native.js.map +1 -1
  28. package/dist/cjs/list/AddTagsDialog.cjs +2 -1
  29. package/dist/cjs/list/AddTagsDialog.native.js +2 -1
  30. package/dist/cjs/list/AddTagsDialog.native.js.map +1 -1
  31. package/dist/cjs/list/AssignToDialog.cjs +2 -1
  32. package/dist/cjs/list/AssignToDialog.native.js +2 -1
  33. package/dist/cjs/list/AssignToDialog.native.js.map +1 -1
  34. package/dist/cjs/list/DoctypeListScreen.cjs +1 -22
  35. package/dist/cjs/list/DoctypeListScreen.native.js +1 -24
  36. package/dist/cjs/list/DoctypeListScreen.native.js.map +1 -1
  37. package/dist/cjs/list/ListSidebar.cjs +2 -1
  38. package/dist/cjs/list/ListSidebar.native.js +2 -1
  39. package/dist/cjs/list/ListSidebar.native.js.map +1 -1
  40. package/dist/cjs/list/bulk-edit-dialog.cjs +2 -1
  41. package/dist/cjs/list/bulk-edit-dialog.native.js +2 -1
  42. package/dist/cjs/list/bulk-edit-dialog.native.js.map +1 -1
  43. package/dist/cjs/list/filter-editor.cjs +7 -5
  44. package/dist/cjs/list/filter-editor.native.js +7 -5
  45. package/dist/cjs/list/filter-editor.native.js.map +1 -1
  46. package/dist/cjs/list/filter-saved.cjs +2 -1
  47. package/dist/cjs/list/filter-saved.native.js +2 -1
  48. package/dist/cjs/list/filter-saved.native.js.map +1 -1
  49. package/dist/cjs/list/filter-sort.cjs +2 -1
  50. package/dist/cjs/list/filter-sort.native.js +2 -1
  51. package/dist/cjs/list/filter-sort.native.js.map +1 -1
  52. package/dist/cjs/list/sidebar-section.cjs +7 -3
  53. package/dist/cjs/list/sidebar-section.native.js +7 -3
  54. package/dist/cjs/list/sidebar-section.native.js.map +1 -1
  55. package/dist/cjs/quickEntry/QuickEntryDialog.cjs +1 -1
  56. package/dist/cjs/quickEntry/QuickEntryDialog.native.js +1 -1
  57. package/dist/cjs/quickEntry/QuickEntryDialog.native.js.map +1 -1
  58. package/dist/cjs/report/queryReportFilterBar.cjs +2 -2
  59. package/dist/cjs/report/queryReportFilterBar.native.js +2 -2
  60. package/dist/cjs/report/queryReportFilterBar.native.js.map +1 -1
  61. package/dist/cjs/report/report-toolbar.cjs +5 -4
  62. package/dist/cjs/report/report-toolbar.native.js +5 -4
  63. package/dist/cjs/report/report-toolbar.native.js.map +1 -1
  64. package/dist/cjs/shared/measures.cjs +31 -0
  65. package/dist/cjs/shared/measures.native.js +34 -0
  66. package/dist/cjs/shared/measures.native.js.map +1 -0
  67. package/dist/cjs/shell/BackofficeShell.cjs +1 -1
  68. package/dist/cjs/shell/BackofficeShell.native.js +1 -1
  69. package/dist/cjs/shell/BackofficeShell.native.js.map +1 -1
  70. package/dist/cjs/views/DashboardView.cjs +17 -13
  71. package/dist/cjs/views/DashboardView.native.js +17 -13
  72. package/dist/cjs/views/DashboardView.native.js.map +1 -1
  73. package/dist/cjs/views/kanban-board-controls.cjs +4 -3
  74. package/dist/cjs/views/kanban-board-controls.native.js +4 -3
  75. package/dist/cjs/views/kanban-board-controls.native.js.map +1 -1
  76. package/dist/cjs/views/report-controls.cjs +5 -4
  77. package/dist/cjs/views/report-controls.native.js +5 -4
  78. package/dist/cjs/views/report-controls.native.js.map +1 -1
  79. package/dist/cjs/workspace/WorkspaceChartBlock.cjs +4 -3
  80. package/dist/cjs/workspace/WorkspaceChartBlock.native.js +4 -3
  81. package/dist/cjs/workspace/WorkspaceChartBlock.native.js.map +1 -1
  82. package/dist/cjs/workspace/WorkspaceLinkCard.cjs +2 -2
  83. package/dist/cjs/workspace/WorkspaceLinkCard.native.js +2 -2
  84. package/dist/cjs/workspace/WorkspaceLinkCard.native.js.map +1 -1
  85. package/dist/cjs/workspace/WorkspaceLinkDirectory.cjs +1 -1
  86. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js +1 -1
  87. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  88. package/dist/cjs/workspace/WorkspaceNumberCard.cjs +2 -3
  89. package/dist/cjs/workspace/WorkspaceNumberCard.native.js +2 -3
  90. package/dist/cjs/workspace/WorkspaceNumberCard.native.js.map +1 -1
  91. package/dist/cjs/workspace/WorkspaceQuickList.cjs +1 -1
  92. package/dist/cjs/workspace/WorkspaceQuickList.native.js +1 -1
  93. package/dist/cjs/workspace/WorkspaceQuickList.native.js.map +1 -1
  94. package/dist/cjs/workspace/WorkspaceRecents.cjs +1 -1
  95. package/dist/cjs/workspace/WorkspaceRecents.native.js +1 -1
  96. package/dist/cjs/workspace/WorkspaceRecents.native.js.map +1 -1
  97. package/dist/cjs/workspace/WorkspaceScreen.cjs +11 -21
  98. package/dist/cjs/workspace/WorkspaceScreen.native.js +14 -22
  99. package/dist/cjs/workspace/WorkspaceScreen.native.js.map +1 -1
  100. package/dist/cjs/workspace/WorkspaceShortcut.cjs +3 -3
  101. package/dist/cjs/workspace/WorkspaceShortcut.native.js +3 -3
  102. package/dist/cjs/workspace/WorkspaceShortcut.native.js.map +1 -1
  103. package/dist/cjs/workspace/useDashboardChart.cjs +1 -1
  104. package/dist/cjs/workspace/useDashboardChart.native.js +1 -1
  105. package/dist/cjs/workspace/useDashboardChart.native.js.map +1 -1
  106. package/dist/cjs/workspace/useWorkspaceDoc.cjs +1 -1
  107. package/dist/cjs/workspace/useWorkspaceDoc.native.js +1 -1
  108. package/dist/cjs/workspace/useWorkspaceDoc.native.js.map +1 -1
  109. package/dist/esm/chrome/CommandPalette.mjs +2 -2
  110. package/dist/esm/chrome/CommandPalette.mjs.map +1 -1
  111. package/dist/esm/chrome/CommandPalette.native.js +2 -2
  112. package/dist/esm/chrome/help-about-dialog.mjs +2 -1
  113. package/dist/esm/chrome/help-about-dialog.mjs.map +1 -1
  114. package/dist/esm/chrome/help-about-dialog.native.js +2 -1
  115. package/dist/esm/chrome/help-about-dialog.native.js.map +1 -1
  116. package/dist/esm/chrome/help-shortcuts-dialog.mjs +4 -4
  117. package/dist/esm/chrome/help-shortcuts-dialog.mjs.map +1 -1
  118. package/dist/esm/chrome/help-shortcuts-dialog.native.js +4 -4
  119. package/dist/esm/chrome/help-shortcuts-dialog.native.js.map +1 -1
  120. package/dist/esm/chrome/notifications-panel.mjs +5 -6
  121. package/dist/esm/chrome/notifications-panel.mjs.map +1 -1
  122. package/dist/esm/chrome/notifications-panel.native.js +5 -6
  123. package/dist/esm/chrome/notifications-panel.native.js.map +1 -1
  124. package/dist/esm/form/FormConnections.mjs +8 -8
  125. package/dist/esm/form/FormConnections.mjs.map +1 -1
  126. package/dist/esm/form/FormConnections.native.js +8 -8
  127. package/dist/esm/form/FormConnections.native.js.map +1 -1
  128. package/dist/esm/form/FormDialogs.mjs +7 -6
  129. package/dist/esm/form/FormDialogs.mjs.map +1 -1
  130. package/dist/esm/form/FormDialogs.native.js +7 -6
  131. package/dist/esm/form/FormDialogs.native.js.map +1 -1
  132. package/dist/esm/form/FormSidebarPanel.mjs +2 -2
  133. package/dist/esm/form/FormSidebarPanel.mjs.map +1 -1
  134. package/dist/esm/form/FormSidebarPanel.native.js +2 -2
  135. package/dist/esm/form/FormSidebarPanel.native.js.map +1 -1
  136. package/dist/esm/form/FormTimeline.mjs +4 -4
  137. package/dist/esm/form/FormTimeline.mjs.map +1 -1
  138. package/dist/esm/form/FormTimeline.native.js +4 -4
  139. package/dist/esm/form/FormTimeline.native.js.map +1 -1
  140. package/dist/esm/form/sidebar-dialogs.mjs +3 -2
  141. package/dist/esm/form/sidebar-dialogs.mjs.map +1 -1
  142. package/dist/esm/form/sidebar-dialogs.native.js +3 -2
  143. package/dist/esm/form/sidebar-dialogs.native.js.map +1 -1
  144. package/dist/esm/list/AddTagsDialog.mjs +2 -1
  145. package/dist/esm/list/AddTagsDialog.mjs.map +1 -1
  146. package/dist/esm/list/AddTagsDialog.native.js +2 -1
  147. package/dist/esm/list/AddTagsDialog.native.js.map +1 -1
  148. package/dist/esm/list/AssignToDialog.mjs +2 -1
  149. package/dist/esm/list/AssignToDialog.mjs.map +1 -1
  150. package/dist/esm/list/AssignToDialog.native.js +2 -1
  151. package/dist/esm/list/AssignToDialog.native.js.map +1 -1
  152. package/dist/esm/list/DoctypeListScreen.mjs +1 -22
  153. package/dist/esm/list/DoctypeListScreen.mjs.map +1 -1
  154. package/dist/esm/list/DoctypeListScreen.native.js +1 -24
  155. package/dist/esm/list/DoctypeListScreen.native.js.map +1 -1
  156. package/dist/esm/list/ListSidebar.mjs +2 -1
  157. package/dist/esm/list/ListSidebar.mjs.map +1 -1
  158. package/dist/esm/list/ListSidebar.native.js +2 -1
  159. package/dist/esm/list/ListSidebar.native.js.map +1 -1
  160. package/dist/esm/list/bulk-edit-dialog.mjs +2 -1
  161. package/dist/esm/list/bulk-edit-dialog.mjs.map +1 -1
  162. package/dist/esm/list/bulk-edit-dialog.native.js +2 -1
  163. package/dist/esm/list/bulk-edit-dialog.native.js.map +1 -1
  164. package/dist/esm/list/filter-editor.mjs +7 -5
  165. package/dist/esm/list/filter-editor.mjs.map +1 -1
  166. package/dist/esm/list/filter-editor.native.js +7 -5
  167. package/dist/esm/list/filter-editor.native.js.map +1 -1
  168. package/dist/esm/list/filter-saved.mjs +2 -1
  169. package/dist/esm/list/filter-saved.mjs.map +1 -1
  170. package/dist/esm/list/filter-saved.native.js +2 -1
  171. package/dist/esm/list/filter-saved.native.js.map +1 -1
  172. package/dist/esm/list/filter-sort.mjs +2 -1
  173. package/dist/esm/list/filter-sort.mjs.map +1 -1
  174. package/dist/esm/list/filter-sort.native.js +2 -1
  175. package/dist/esm/list/filter-sort.native.js.map +1 -1
  176. package/dist/esm/list/sidebar-section.mjs +8 -4
  177. package/dist/esm/list/sidebar-section.mjs.map +1 -1
  178. package/dist/esm/list/sidebar-section.native.js +8 -4
  179. package/dist/esm/list/sidebar-section.native.js.map +1 -1
  180. package/dist/esm/quickEntry/QuickEntryDialog.mjs +2 -2
  181. package/dist/esm/quickEntry/QuickEntryDialog.mjs.map +1 -1
  182. package/dist/esm/quickEntry/QuickEntryDialog.native.js +2 -2
  183. package/dist/esm/quickEntry/QuickEntryDialog.native.js.map +1 -1
  184. package/dist/esm/report/queryReportFilterBar.mjs +3 -3
  185. package/dist/esm/report/queryReportFilterBar.mjs.map +1 -1
  186. package/dist/esm/report/queryReportFilterBar.native.js +3 -3
  187. package/dist/esm/report/queryReportFilterBar.native.js.map +1 -1
  188. package/dist/esm/report/report-toolbar.mjs +5 -4
  189. package/dist/esm/report/report-toolbar.mjs.map +1 -1
  190. package/dist/esm/report/report-toolbar.native.js +5 -4
  191. package/dist/esm/report/report-toolbar.native.js.map +1 -1
  192. package/dist/esm/shared/measures.mjs +5 -0
  193. package/dist/esm/shared/measures.mjs.map +1 -0
  194. package/dist/esm/shared/measures.native.js +5 -0
  195. package/dist/esm/shared/measures.native.js.map +1 -0
  196. package/dist/esm/shell/BackofficeShell.mjs +2 -2
  197. package/dist/esm/shell/BackofficeShell.mjs.map +1 -1
  198. package/dist/esm/shell/BackofficeShell.native.js +2 -2
  199. package/dist/esm/shell/BackofficeShell.native.js.map +1 -1
  200. package/dist/esm/views/DashboardView.mjs +18 -14
  201. package/dist/esm/views/DashboardView.mjs.map +1 -1
  202. package/dist/esm/views/DashboardView.native.js +18 -14
  203. package/dist/esm/views/DashboardView.native.js.map +1 -1
  204. package/dist/esm/views/kanban-board-controls.mjs +5 -4
  205. package/dist/esm/views/kanban-board-controls.mjs.map +1 -1
  206. package/dist/esm/views/kanban-board-controls.native.js +5 -4
  207. package/dist/esm/views/kanban-board-controls.native.js.map +1 -1
  208. package/dist/esm/views/report-controls.mjs +5 -4
  209. package/dist/esm/views/report-controls.mjs.map +1 -1
  210. package/dist/esm/views/report-controls.native.js +5 -4
  211. package/dist/esm/views/report-controls.native.js.map +1 -1
  212. package/dist/esm/workspace/WorkspaceChartBlock.mjs +5 -4
  213. package/dist/esm/workspace/WorkspaceChartBlock.mjs.map +1 -1
  214. package/dist/esm/workspace/WorkspaceChartBlock.native.js +5 -4
  215. package/dist/esm/workspace/WorkspaceChartBlock.native.js.map +1 -1
  216. package/dist/esm/workspace/WorkspaceLinkCard.mjs +2 -2
  217. package/dist/esm/workspace/WorkspaceLinkCard.mjs.map +1 -1
  218. package/dist/esm/workspace/WorkspaceLinkCard.native.js +2 -2
  219. package/dist/esm/workspace/WorkspaceLinkCard.native.js.map +1 -1
  220. package/dist/esm/workspace/WorkspaceLinkDirectory.mjs +2 -2
  221. package/dist/esm/workspace/WorkspaceLinkDirectory.mjs.map +1 -1
  222. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js +2 -2
  223. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  224. package/dist/esm/workspace/WorkspaceNumberCard.mjs +2 -3
  225. package/dist/esm/workspace/WorkspaceNumberCard.mjs.map +1 -1
  226. package/dist/esm/workspace/WorkspaceNumberCard.native.js +2 -3
  227. package/dist/esm/workspace/WorkspaceNumberCard.native.js.map +1 -1
  228. package/dist/esm/workspace/WorkspaceQuickList.mjs +2 -2
  229. package/dist/esm/workspace/WorkspaceQuickList.mjs.map +1 -1
  230. package/dist/esm/workspace/WorkspaceQuickList.native.js +2 -2
  231. package/dist/esm/workspace/WorkspaceQuickList.native.js.map +1 -1
  232. package/dist/esm/workspace/WorkspaceRecents.mjs +2 -2
  233. package/dist/esm/workspace/WorkspaceRecents.mjs.map +1 -1
  234. package/dist/esm/workspace/WorkspaceRecents.native.js +2 -2
  235. package/dist/esm/workspace/WorkspaceRecents.native.js.map +1 -1
  236. package/dist/esm/workspace/WorkspaceScreen.mjs +12 -22
  237. package/dist/esm/workspace/WorkspaceScreen.mjs.map +1 -1
  238. package/dist/esm/workspace/WorkspaceScreen.native.js +15 -23
  239. package/dist/esm/workspace/WorkspaceScreen.native.js.map +1 -1
  240. package/dist/esm/workspace/WorkspaceShortcut.mjs +4 -4
  241. package/dist/esm/workspace/WorkspaceShortcut.mjs.map +1 -1
  242. package/dist/esm/workspace/WorkspaceShortcut.native.js +4 -4
  243. package/dist/esm/workspace/WorkspaceShortcut.native.js.map +1 -1
  244. package/dist/esm/workspace/useDashboardChart.mjs +1 -1
  245. package/dist/esm/workspace/useDashboardChart.mjs.map +1 -1
  246. package/dist/esm/workspace/useDashboardChart.native.js +1 -1
  247. package/dist/esm/workspace/useDashboardChart.native.js.map +1 -1
  248. package/dist/esm/workspace/useWorkspaceDoc.mjs +1 -1
  249. package/dist/esm/workspace/useWorkspaceDoc.mjs.map +1 -1
  250. package/dist/esm/workspace/useWorkspaceDoc.native.js +1 -1
  251. package/dist/esm/workspace/useWorkspaceDoc.native.js.map +1 -1
  252. package/dist/jsx/chrome/CommandPalette.mjs +2 -2
  253. package/dist/jsx/chrome/CommandPalette.mjs.map +1 -1
  254. package/dist/jsx/chrome/CommandPalette.native.js +2 -2
  255. package/dist/jsx/chrome/CommandPalette.native.js.map +1 -1
  256. package/dist/jsx/chrome/help-about-dialog.mjs +2 -1
  257. package/dist/jsx/chrome/help-about-dialog.mjs.map +1 -1
  258. package/dist/jsx/chrome/help-about-dialog.native.js +2 -1
  259. package/dist/jsx/chrome/help-about-dialog.native.js.map +1 -1
  260. package/dist/jsx/chrome/help-shortcuts-dialog.mjs +4 -4
  261. package/dist/jsx/chrome/help-shortcuts-dialog.mjs.map +1 -1
  262. package/dist/jsx/chrome/help-shortcuts-dialog.native.js +3 -3
  263. package/dist/jsx/chrome/help-shortcuts-dialog.native.js.map +1 -1
  264. package/dist/jsx/chrome/notifications-panel.mjs +5 -6
  265. package/dist/jsx/chrome/notifications-panel.mjs.map +1 -1
  266. package/dist/jsx/chrome/notifications-panel.native.js +4 -5
  267. package/dist/jsx/chrome/notifications-panel.native.js.map +1 -1
  268. package/dist/jsx/form/FormConnections.mjs +8 -8
  269. package/dist/jsx/form/FormConnections.mjs.map +1 -1
  270. package/dist/jsx/form/FormConnections.native.js +7 -7
  271. package/dist/jsx/form/FormConnections.native.js.map +1 -1
  272. package/dist/jsx/form/FormDialogs.mjs +7 -6
  273. package/dist/jsx/form/FormDialogs.mjs.map +1 -1
  274. package/dist/jsx/form/FormDialogs.native.js +6 -5
  275. package/dist/jsx/form/FormDialogs.native.js.map +1 -1
  276. package/dist/jsx/form/FormSidebarPanel.mjs +2 -2
  277. package/dist/jsx/form/FormSidebarPanel.mjs.map +1 -1
  278. package/dist/jsx/form/FormSidebarPanel.native.js +1 -1
  279. package/dist/jsx/form/FormSidebarPanel.native.js.map +1 -1
  280. package/dist/jsx/form/FormTimeline.mjs +4 -4
  281. package/dist/jsx/form/FormTimeline.mjs.map +1 -1
  282. package/dist/jsx/form/FormTimeline.native.js +4 -4
  283. package/dist/jsx/form/FormTimeline.native.js.map +1 -1
  284. package/dist/jsx/form/sidebar-dialogs.mjs +3 -2
  285. package/dist/jsx/form/sidebar-dialogs.mjs.map +1 -1
  286. package/dist/jsx/form/sidebar-dialogs.native.js +3 -2
  287. package/dist/jsx/form/sidebar-dialogs.native.js.map +1 -1
  288. package/dist/jsx/list/AddTagsDialog.mjs +2 -1
  289. package/dist/jsx/list/AddTagsDialog.mjs.map +1 -1
  290. package/dist/jsx/list/AddTagsDialog.native.js +2 -1
  291. package/dist/jsx/list/AddTagsDialog.native.js.map +1 -1
  292. package/dist/jsx/list/AssignToDialog.mjs +2 -1
  293. package/dist/jsx/list/AssignToDialog.mjs.map +1 -1
  294. package/dist/jsx/list/AssignToDialog.native.js +2 -1
  295. package/dist/jsx/list/AssignToDialog.native.js.map +1 -1
  296. package/dist/jsx/list/DoctypeListScreen.mjs +1 -22
  297. package/dist/jsx/list/DoctypeListScreen.mjs.map +1 -1
  298. package/dist/jsx/list/DoctypeListScreen.native.js +1 -24
  299. package/dist/jsx/list/DoctypeListScreen.native.js.map +1 -1
  300. package/dist/jsx/list/ListSidebar.mjs +2 -1
  301. package/dist/jsx/list/ListSidebar.mjs.map +1 -1
  302. package/dist/jsx/list/ListSidebar.native.js +2 -1
  303. package/dist/jsx/list/ListSidebar.native.js.map +1 -1
  304. package/dist/jsx/list/bulk-edit-dialog.mjs +2 -1
  305. package/dist/jsx/list/bulk-edit-dialog.mjs.map +1 -1
  306. package/dist/jsx/list/bulk-edit-dialog.native.js +2 -1
  307. package/dist/jsx/list/bulk-edit-dialog.native.js.map +1 -1
  308. package/dist/jsx/list/filter-editor.mjs +7 -5
  309. package/dist/jsx/list/filter-editor.mjs.map +1 -1
  310. package/dist/jsx/list/filter-editor.native.js +7 -5
  311. package/dist/jsx/list/filter-editor.native.js.map +1 -1
  312. package/dist/jsx/list/filter-saved.mjs +2 -1
  313. package/dist/jsx/list/filter-saved.mjs.map +1 -1
  314. package/dist/jsx/list/filter-saved.native.js +2 -1
  315. package/dist/jsx/list/filter-saved.native.js.map +1 -1
  316. package/dist/jsx/list/filter-sort.mjs +2 -1
  317. package/dist/jsx/list/filter-sort.mjs.map +1 -1
  318. package/dist/jsx/list/filter-sort.native.js +2 -1
  319. package/dist/jsx/list/filter-sort.native.js.map +1 -1
  320. package/dist/jsx/list/sidebar-section.mjs +8 -4
  321. package/dist/jsx/list/sidebar-section.mjs.map +1 -1
  322. package/dist/jsx/list/sidebar-section.native.js +7 -3
  323. package/dist/jsx/list/sidebar-section.native.js.map +1 -1
  324. package/dist/jsx/quickEntry/QuickEntryDialog.mjs +2 -2
  325. package/dist/jsx/quickEntry/QuickEntryDialog.mjs.map +1 -1
  326. package/dist/jsx/quickEntry/QuickEntryDialog.native.js +1 -1
  327. package/dist/jsx/quickEntry/QuickEntryDialog.native.js.map +1 -1
  328. package/dist/jsx/report/queryReportFilterBar.mjs +3 -3
  329. package/dist/jsx/report/queryReportFilterBar.mjs.map +1 -1
  330. package/dist/jsx/report/queryReportFilterBar.native.js +2 -2
  331. package/dist/jsx/report/queryReportFilterBar.native.js.map +1 -1
  332. package/dist/jsx/report/report-toolbar.mjs +5 -4
  333. package/dist/jsx/report/report-toolbar.mjs.map +1 -1
  334. package/dist/jsx/report/report-toolbar.native.js +5 -4
  335. package/dist/jsx/report/report-toolbar.native.js.map +1 -1
  336. package/dist/jsx/shared/measures.mjs +5 -0
  337. package/dist/jsx/shared/measures.mjs.map +1 -0
  338. package/dist/jsx/shared/measures.native.js +34 -0
  339. package/dist/jsx/shared/measures.native.js.map +1 -0
  340. package/dist/jsx/shell/BackofficeShell.mjs +2 -2
  341. package/dist/jsx/shell/BackofficeShell.mjs.map +1 -1
  342. package/dist/jsx/shell/BackofficeShell.native.js +1 -1
  343. package/dist/jsx/shell/BackofficeShell.native.js.map +1 -1
  344. package/dist/jsx/views/DashboardView.mjs +18 -14
  345. package/dist/jsx/views/DashboardView.mjs.map +1 -1
  346. package/dist/jsx/views/DashboardView.native.js +17 -13
  347. package/dist/jsx/views/DashboardView.native.js.map +1 -1
  348. package/dist/jsx/views/kanban-board-controls.mjs +5 -4
  349. package/dist/jsx/views/kanban-board-controls.mjs.map +1 -1
  350. package/dist/jsx/views/kanban-board-controls.native.js +4 -3
  351. package/dist/jsx/views/kanban-board-controls.native.js.map +1 -1
  352. package/dist/jsx/views/report-controls.mjs +5 -4
  353. package/dist/jsx/views/report-controls.mjs.map +1 -1
  354. package/dist/jsx/views/report-controls.native.js +5 -4
  355. package/dist/jsx/views/report-controls.native.js.map +1 -1
  356. package/dist/jsx/workspace/WorkspaceChartBlock.mjs +5 -4
  357. package/dist/jsx/workspace/WorkspaceChartBlock.mjs.map +1 -1
  358. package/dist/jsx/workspace/WorkspaceChartBlock.native.js +4 -3
  359. package/dist/jsx/workspace/WorkspaceChartBlock.native.js.map +1 -1
  360. package/dist/jsx/workspace/WorkspaceLinkCard.mjs +2 -2
  361. package/dist/jsx/workspace/WorkspaceLinkCard.mjs.map +1 -1
  362. package/dist/jsx/workspace/WorkspaceLinkCard.native.js +2 -2
  363. package/dist/jsx/workspace/WorkspaceLinkCard.native.js.map +1 -1
  364. package/dist/jsx/workspace/WorkspaceLinkDirectory.mjs +2 -2
  365. package/dist/jsx/workspace/WorkspaceLinkDirectory.mjs.map +1 -1
  366. package/dist/jsx/workspace/WorkspaceLinkDirectory.native.js +1 -1
  367. package/dist/jsx/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  368. package/dist/jsx/workspace/WorkspaceNumberCard.mjs +2 -3
  369. package/dist/jsx/workspace/WorkspaceNumberCard.mjs.map +1 -1
  370. package/dist/jsx/workspace/WorkspaceNumberCard.native.js +2 -3
  371. package/dist/jsx/workspace/WorkspaceNumberCard.native.js.map +1 -1
  372. package/dist/jsx/workspace/WorkspaceQuickList.mjs +2 -2
  373. package/dist/jsx/workspace/WorkspaceQuickList.mjs.map +1 -1
  374. package/dist/jsx/workspace/WorkspaceQuickList.native.js +1 -1
  375. package/dist/jsx/workspace/WorkspaceQuickList.native.js.map +1 -1
  376. package/dist/jsx/workspace/WorkspaceRecents.mjs +2 -2
  377. package/dist/jsx/workspace/WorkspaceRecents.mjs.map +1 -1
  378. package/dist/jsx/workspace/WorkspaceRecents.native.js +1 -1
  379. package/dist/jsx/workspace/WorkspaceRecents.native.js.map +1 -1
  380. package/dist/jsx/workspace/WorkspaceScreen.mjs +12 -22
  381. package/dist/jsx/workspace/WorkspaceScreen.mjs.map +1 -1
  382. package/dist/jsx/workspace/WorkspaceScreen.native.js +14 -22
  383. package/dist/jsx/workspace/WorkspaceScreen.native.js.map +1 -1
  384. package/dist/jsx/workspace/WorkspaceShortcut.mjs +4 -4
  385. package/dist/jsx/workspace/WorkspaceShortcut.mjs.map +1 -1
  386. package/dist/jsx/workspace/WorkspaceShortcut.native.js +3 -3
  387. package/dist/jsx/workspace/WorkspaceShortcut.native.js.map +1 -1
  388. package/dist/jsx/workspace/useDashboardChart.mjs +1 -1
  389. package/dist/jsx/workspace/useDashboardChart.mjs.map +1 -1
  390. package/dist/jsx/workspace/useDashboardChart.native.js +1 -1
  391. package/dist/jsx/workspace/useDashboardChart.native.js.map +1 -1
  392. package/dist/jsx/workspace/useWorkspaceDoc.mjs +1 -1
  393. package/dist/jsx/workspace/useWorkspaceDoc.mjs.map +1 -1
  394. package/dist/jsx/workspace/useWorkspaceDoc.native.js +1 -1
  395. package/dist/jsx/workspace/useWorkspaceDoc.native.js.map +1 -1
  396. package/package.json +12 -12
  397. package/src/chrome/CommandPalette.stories.tsx +7 -1
  398. package/src/chrome/CommandPalette.tsx +2 -2
  399. package/src/chrome/help-about-dialog.tsx +5 -1
  400. package/src/chrome/help-shortcuts-dialog.tsx +16 -4
  401. package/src/chrome/notifications-panel.tsx +11 -4
  402. package/src/desk/Desk.stories.tsx +7 -1
  403. package/src/desk/DeskSurface.stories.tsx +7 -1
  404. package/src/form/FormConnections.tsx +40 -5
  405. package/src/form/FormDialogs.tsx +18 -4
  406. package/src/form/FormSidebarPanel.tsx +5 -1
  407. package/src/form/FormTimeline.tsx +14 -2
  408. package/src/form/sidebar-dialogs.tsx +3 -2
  409. package/src/list/AddTagsDialog.tsx +2 -1
  410. package/src/list/AssignToDialog.tsx +2 -1
  411. package/src/list/DoctypeListScreen.auth.spec.tsx +84 -0
  412. package/src/list/DoctypeListScreen.tsx +5 -32
  413. package/src/list/ListSidebar.tsx +2 -1
  414. package/src/list/bulk-edit-dialog.tsx +2 -1
  415. package/src/list/filter-editor.tsx +29 -5
  416. package/src/list/filter-saved.tsx +11 -1
  417. package/src/list/filter-sort.tsx +7 -1
  418. package/src/list/sidebar-section.tsx +10 -2
  419. package/src/quickEntry/QuickEntryDialog.tsx +7 -2
  420. package/src/report/queryReportFilterBar.tsx +9 -3
  421. package/src/report/report-toolbar.tsx +5 -4
  422. package/src/shared/measures.ts +11 -0
  423. package/src/shell/BackofficeShell.tsx +14 -2
  424. package/src/shell/NotFoundScreen.stories.tsx +7 -1
  425. package/src/views/DashboardView.tsx +32 -8
  426. package/src/views/DoctypeViewScreen.stories.tsx +7 -1
  427. package/src/views/kanban-board-controls.tsx +12 -4
  428. package/src/views/report-controls.tsx +5 -4
  429. package/src/workspace/WorkspaceChartBlock.tsx +15 -4
  430. package/src/workspace/WorkspaceLinkCard.tsx +2 -2
  431. package/src/workspace/WorkspaceLinkDirectory.tsx +10 -2
  432. package/src/workspace/WorkspaceNumberCard.tsx +2 -2
  433. package/src/workspace/WorkspaceQuickList.tsx +2 -1
  434. package/src/workspace/WorkspaceRecents.tsx +11 -2
  435. package/src/workspace/WorkspaceScreen.tsx +17 -9
  436. package/src/workspace/WorkspaceShortcut.tsx +20 -3
  437. package/src/workspace/clientCache.auth.spec.ts +65 -0
  438. package/src/workspace/useDashboardChart.ts +1 -1
  439. package/src/workspace/useWorkspaceDoc.ts +1 -1
  440. package/types/chrome/help-about-dialog.d.ts.map +1 -1
  441. package/types/chrome/help-shortcuts-dialog.d.ts.map +1 -1
  442. package/types/chrome/notifications-panel.d.ts.map +1 -1
  443. package/types/form/FormConnections.d.ts.map +1 -1
  444. package/types/form/FormDialogs.d.ts.map +1 -1
  445. package/types/form/FormSidebarPanel.d.ts.map +1 -1
  446. package/types/form/FormTimeline.d.ts.map +1 -1
  447. package/types/form/sidebar-dialogs.d.ts.map +1 -1
  448. package/types/list/AddTagsDialog.d.ts.map +1 -1
  449. package/types/list/AssignToDialog.d.ts.map +1 -1
  450. package/types/list/DoctypeListScreen.d.ts.map +1 -1
  451. package/types/list/ListSidebar.d.ts.map +1 -1
  452. package/types/list/bulk-edit-dialog.d.ts.map +1 -1
  453. package/types/list/filter-editor.d.ts.map +1 -1
  454. package/types/list/filter-saved.d.ts.map +1 -1
  455. package/types/list/filter-sort.d.ts.map +1 -1
  456. package/types/list/sidebar-section.d.ts.map +1 -1
  457. package/types/quickEntry/QuickEntryDialog.d.ts.map +1 -1
  458. package/types/report/queryReportFilterBar.d.ts.map +1 -1
  459. package/types/report/report-toolbar.d.ts.map +1 -1
  460. package/types/shared/measures.d.ts +3 -0
  461. package/types/shared/measures.d.ts.map +1 -0
  462. package/types/shell/BackofficeShell.d.ts.map +1 -1
  463. package/types/views/DashboardView.d.ts.map +1 -1
  464. package/types/views/kanban-board-controls.d.ts.map +1 -1
  465. package/types/views/report-controls.d.ts.map +1 -1
  466. package/types/workspace/WorkspaceChartBlock.d.ts.map +1 -1
  467. package/types/workspace/WorkspaceLinkDirectory.d.ts.map +1 -1
  468. package/types/workspace/WorkspaceQuickList.d.ts.map +1 -1
  469. package/types/workspace/WorkspaceRecents.d.ts.map +1 -1
  470. package/types/workspace/WorkspaceScreen.d.ts.map +1 -1
  471. package/types/workspace/WorkspaceShortcut.d.ts.map +1 -1
@@ -0,0 +1,11 @@
1
+ import { sizeRecipeEscape } from "@multiplatform.one/theme";
2
+
3
+ export const dialogBodyMinWidth = sizeRecipeEscape(
4
+ 280,
5
+ "dialog body floor: a reading width for the form inside a dialog or popover",
6
+ );
7
+
8
+ export const overlayListMaxHeight = sizeRecipeEscape(
9
+ 360,
10
+ "overlay list cap: a menu or popover list scrolls past this height instead of growing",
11
+ );
@@ -20,7 +20,12 @@
20
20
  import { SizableText, SkipLink, XStack, YStack, isWeb } from "@multiplatform.one/components";
21
21
  import { Button } from "@multiplatform.one/forms";
22
22
  import * as componentsBarrel from "@multiplatform.one/components";
23
- import { hairline, useLayoutSizeClass, useResolvedKnobs } from "@multiplatform.one/theme";
23
+ import {
24
+ hairline,
25
+ sizeRecipeEscape,
26
+ useLayoutSizeClass,
27
+ useResolvedKnobs,
28
+ } from "@multiplatform.one/theme";
24
29
  import { ListIcon, XIcon } from "@phosphor-icons/react";
25
30
  import type React from "react";
26
31
  import { useEffect, useRef, useState } from "react";
@@ -172,7 +177,14 @@ export function BackofficeShell({ children, activePath, onNavigate }: Backoffice
172
177
  when the awesomebar capability is off) */}
173
178
  <XStack flex={1} minWidth={0} justifyContent="center">
174
179
  {capabilities.awesomebar.enabled && (
175
- <XStack flex={1} maxWidth={560} minWidth={0}>
180
+ <XStack
181
+ flex={1}
182
+ maxWidth={sizeRecipeEscape(
183
+ 560,
184
+ "awesomebar: caps the centred search field in the banner",
185
+ )}
186
+ minWidth={0}
187
+ >
176
188
  <BackofficeAwesomebar focusRef={awesomebarRef} />
177
189
  </XStack>
178
190
  )}
@@ -7,10 +7,16 @@
7
7
  import { YStack } from "@multiplatform.one/components";
8
8
  import { InMemoryFixtureProvider } from "@multiplatform.one/frappe";
9
9
  import type { ReactNode } from "react";
10
+ import { sizeRecipeEscape } from "@multiplatform.one/theme";
10
11
  import { BackofficeProvider } from "../config/BackofficeProvider";
11
12
  import { createMemoryNavigator } from "../navigation/navigator";
12
13
  import { NotFoundScreen } from "./NotFoundScreen";
13
14
 
15
+ const frameHeight = sizeRecipeEscape(
16
+ 420,
17
+ "story canvas: a fixed-height frame for a full-height screen to fill",
18
+ );
19
+
14
20
  const meta = {
15
21
  title: "Screens/Backoffice/NotFoundScreen",
16
22
  component: NotFoundScreen,
@@ -46,7 +52,7 @@ function Host({
46
52
  frappe={{ baseURL: MOCK_HOST, fixtures: new InMemoryFixtureProvider({}) }}
47
53
  navigation={navigation}
48
54
  >
49
- <YStack flex={1} height={420} justifyContent="center">
55
+ <YStack flex={1} height={frameHeight} justifyContent="center">
50
56
  {children}
51
57
  </YStack>
52
58
  </BackofficeProvider>
@@ -18,7 +18,7 @@ import {
18
18
  YStack,
19
19
  } from "@multiplatform.one/components";
20
20
  import { ChartCard, FrappeChartCard, FrappeKPICard } from "@multiplatform.one/frappe-ui";
21
- import { useResolvedKnobs } from "@multiplatform.one/theme";
21
+ import { sizeRecipeEscape, useResolvedKnobs } from "@multiplatform.one/theme";
22
22
  import { useState } from "react";
23
23
  import { useTranslation } from "react-i18next";
24
24
  import { useBackofficeNavigator, useBackofficePaths } from "../config/BackofficeProvider";
@@ -37,13 +37,32 @@ import { selectFieldOptions, useViewMeta } from "./viewMeta";
37
37
  import { ViewError, ViewLoading } from "./ViewStates";
38
38
 
39
39
  const CHART_HEIGHT = 220;
40
+ const kpiColumnWidth = sizeRecipeEscape(
41
+ 220,
42
+ "dashboard grid: cards share a row until a column drops below its floor, then wrap",
43
+ );
44
+ const statusColumnWidth = sizeRecipeEscape(
45
+ 180,
46
+ "dashboard grid: cards share a row until a column drops below its floor, then wrap",
47
+ );
48
+ const chartColumnBasis = sizeRecipeEscape(
49
+ 360,
50
+ "dashboard grid: cards share a row until a column drops below its floor, then wrap",
51
+ );
52
+ const chartColumnMinWidth = sizeRecipeEscape(
53
+ 300,
54
+ "dashboard grid: cards share a row until a column drops below its floor, then wrap",
55
+ );
40
56
 
41
57
  /** Card-shaped chart skeleton so the first load doesn't jump layout. */
42
58
  function ChartSkeletonCard({ height }: { height: number }) {
43
59
  const { t } = useTranslation(BACKOFFICE_I18N_NAMESPACE);
44
60
  return (
45
61
  <Card aria-busy aria-label={t("views.loading", "Loading")}>
46
- <Skeleton width="40%" height={16} />
62
+ <Skeleton
63
+ width="40%"
64
+ height={sizeRecipeEscape(16, "title bone: the height of the card title it stands in for")}
65
+ />
47
66
  <Skeleton variant="rounded" width="100%" height={height} />
48
67
  </Card>
49
68
  );
@@ -82,7 +101,7 @@ export function DashboardView({ doctype }: DashboardViewProps) {
82
101
  <ScrollView flex={1}>
83
102
  <YStack {...knobProps.panelPadding} {...knobProps.gap}>
84
103
  <XStack {...knobProps.gap} flexWrap="wrap">
85
- <YStack flexGrow={1} flexBasis={220} minWidth={220}>
104
+ <YStack flexGrow={1} flexBasis={kpiColumnWidth} minWidth={kpiColumnWidth}>
86
105
  <FrappeKPICard
87
106
  config={{
88
107
  id: "total",
@@ -93,7 +112,7 @@ export function DashboardView({ doctype }: DashboardViewProps) {
93
112
  dataSource={{ doctype }}
94
113
  />
95
114
  </YStack>
96
- <YStack flexGrow={1} flexBasis={220} minWidth={220}>
115
+ <YStack flexGrow={1} flexBasis={kpiColumnWidth} minWidth={kpiColumnWidth}>
97
116
  <FrappeKPICard
98
117
  config={{
99
118
  id: "created-30d",
@@ -107,7 +126,7 @@ export function DashboardView({ doctype }: DashboardViewProps) {
107
126
  }}
108
127
  />
109
128
  </YStack>
110
- <YStack flexGrow={1} flexBasis={220} minWidth={220}>
129
+ <YStack flexGrow={1} flexBasis={kpiColumnWidth} minWidth={kpiColumnWidth}>
111
130
  <FrappeKPICard
112
131
  config={{
113
132
  id: "modified-7d",
@@ -126,7 +145,12 @@ export function DashboardView({ doctype }: DashboardViewProps) {
126
145
  {statusField && statusOptions.length > 0 && (
127
146
  <XStack {...knobProps.gap} flexWrap="wrap">
128
147
  {statusOptions.map((option) => (
129
- <YStack key={option} flexGrow={1} flexBasis={180} minWidth={180}>
148
+ <YStack
149
+ key={option}
150
+ flexGrow={1}
151
+ flexBasis={statusColumnWidth}
152
+ minWidth={statusColumnWidth}
153
+ >
130
154
  <FrappeKPICard
131
155
  config={{
132
156
  id: `status-${option}`,
@@ -149,7 +173,7 @@ export function DashboardView({ doctype }: DashboardViewProps) {
149
173
  )}
150
174
 
151
175
  <XStack {...knobProps.gap} flexWrap="wrap">
152
- <YStack flexGrow={1} flexBasis={360} minWidth={300}>
176
+ <YStack flexGrow={1} flexBasis={chartColumnBasis} minWidth={chartColumnMinWidth}>
153
177
  {weekly.isLoading ? (
154
178
  <ChartSkeletonCard height={CHART_HEIGHT} />
155
179
  ) : weekly.error ? (
@@ -186,7 +210,7 @@ export function DashboardView({ doctype }: DashboardViewProps) {
186
210
  )}
187
211
  </YStack>
188
212
  {statusField && (
189
- <YStack flexGrow={1} flexBasis={360} minWidth={300}>
213
+ <YStack flexGrow={1} flexBasis={chartColumnBasis} minWidth={chartColumnMinWidth}>
190
214
  <FrappeChartCard
191
215
  config={{
192
216
  id: `by-${statusField.fieldname}`,
@@ -12,11 +12,17 @@
12
12
  // so an arm sets them by seeding the MemoryNavigator path.
13
13
  import { YStack } from "@multiplatform.one/components";
14
14
  import { InMemoryFixtureProvider } from "@multiplatform.one/frappe";
15
+ import { sizeRecipeEscape } from "@multiplatform.one/theme";
15
16
  import { BackofficeProvider } from "../config/BackofficeProvider";
16
17
  import { createMemoryNavigator } from "../navigation/navigator";
17
18
  import type { BackofficeView } from "../navigation/paths";
18
19
  import { DoctypeViewScreen } from "./DoctypeViewScreen";
19
20
 
21
+ const frameHeight = sizeRecipeEscape(
22
+ 600,
23
+ "story canvas: a fixed-height frame for a full-height screen to fill",
24
+ );
25
+
20
26
  const meta = {
21
27
  title: "Screens/Backoffice/DoctypeViewScreen",
22
28
  component: DoctypeViewScreen,
@@ -212,7 +218,7 @@ function View({ doctype, view, path }: { doctype: string; view: BackofficeView;
212
218
  frappe={{ baseURL: MOCK_HOST, fixtures: makeFixtures() }}
213
219
  navigation={createMemoryNavigator(path ?? "/backoffice")}
214
220
  >
215
- <YStack flex={1} height={600} minHeight={0}>
221
+ <YStack flex={1} height={frameHeight} minHeight={0}>
216
222
  <DoctypeViewScreen doctype={doctype} view={view} />
217
223
  </YStack>
218
224
  </BackofficeProvider>
@@ -17,13 +17,14 @@ import {
17
17
  type DropdownMenuEntry,
18
18
  } from "@multiplatform.one/components";
19
19
  import { Data } from "@multiplatform.one/frappe-ui";
20
- import { useResolvedKnobs } from "@multiplatform.one/theme";
20
+ import { sizeRecipeEscape, useResolvedKnobs } from "@multiplatform.one/theme";
21
21
  import { CaretDownIcon, DotsThreeIcon, PlusIcon } from "@phosphor-icons/react";
22
22
  import { useState } from "react";
23
23
  import { useTranslation } from "react-i18next";
24
24
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
25
25
  import type { KanbanBoardColumnConfig } from "./deskViewConfigs";
26
26
  import type { KanbanFieldOption } from "./kanban-field-picker";
27
+ import { dialogBodyMinWidth } from "../shared/measures";
27
28
 
28
29
  // ── Board picker ──────────────────────────────────────────────
29
30
 
@@ -172,7 +173,7 @@ export function CreateBoardDialog({
172
173
  void handleConfirm();
173
174
  }}
174
175
  >
175
- <YStack gap="$3" minWidth={280}>
176
+ <YStack gap="$3" minWidth={dialogBodyMinWidth}>
176
177
  <Text color="$color11" fontSize="$3">
177
178
  {t("views.kanbanBoardCreateBody", {
178
179
  defaultValue: "Columns come from the chosen field's options ({{doctype}}).",
@@ -300,7 +301,14 @@ export function KanbanBoardEnd({
300
301
  };
301
302
 
302
303
  return (
303
- <YStack {...knobProps.gap} minWidth={160} alignItems="stretch">
304
+ <YStack
305
+ {...knobProps.gap}
306
+ minWidth={sizeRecipeEscape(
307
+ 160,
308
+ "kanban controls: a floor so the add-column button keeps its label",
309
+ )}
310
+ alignItems="stretch"
311
+ >
304
312
  <Button size={knobProps.sizeToken} icon={PlusIcon} onPress={() => setAddOpen(true)}>
305
313
  {t("views.kanbanAddColumn", "Add column")}
306
314
  </Button>
@@ -343,7 +351,7 @@ export function KanbanBoardEnd({
343
351
  void handleConfirm();
344
352
  }}
345
353
  >
346
- <YStack gap="$3" minWidth={280}>
354
+ <YStack gap="$3" minWidth={dialogBodyMinWidth}>
347
355
  <Data
348
356
  label={t("views.kanbanAddColumnName", "Column name")}
349
357
  placeholder={t("views.kanbanAddColumnPlaceholder", "e.g. In Review")}
@@ -27,6 +27,7 @@ import { ArrowSquareOutIcon } from "@phosphor-icons/react";
27
27
  import { useTranslation } from "react-i18next";
28
28
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
29
29
  import type { FrappeFilters } from "../shared/types";
30
+ import { overlayListMaxHeight } from "../shared/measures";
30
31
 
31
32
  /** Field types the report can total / aggregate (mirrors ReportBuilder). */
32
33
  export const REPORT_NUMERIC_FIELDTYPES = new Set([
@@ -135,7 +136,7 @@ export function ReportToolbar({
135
136
  })}
136
137
  </Button>
137
138
  </DropdownMenu.Trigger>
138
- <DropdownMenu.Content maxHeight={360}>
139
+ <DropdownMenu.Content maxHeight={overlayListMaxHeight}>
139
140
  <DropdownMenu.Label>{t("report.pickColumns", "Report columns")}</DropdownMenu.Label>
140
141
  {columns.map((column) => {
141
142
  const lastEnabled = column.enabled && enabledCount === 1;
@@ -170,7 +171,7 @@ export function ReportToolbar({
170
171
  : t("report.groupBy", "Group by")}
171
172
  </Button>
172
173
  </DropdownMenu.Trigger>
173
- <DropdownMenu.Content maxHeight={360}>
174
+ <DropdownMenu.Content maxHeight={overlayListMaxHeight}>
174
175
  <DropdownMenu.CheckboxItem
175
176
  checked={!groupBy}
176
177
  closeOnSelect
@@ -238,7 +239,7 @@ export function ReportToolbar({
238
239
  })}
239
240
  </Button>
240
241
  </DropdownMenu.Trigger>
241
- <DropdownMenu.Content maxHeight={360}>
242
+ <DropdownMenu.Content maxHeight={overlayListMaxHeight}>
242
243
  {numericColumns.map((column) => (
243
244
  <DropdownMenu.CheckboxItem
244
245
  key={column.fieldname}
@@ -384,7 +385,7 @@ export function ReportFooter({
384
385
  {t("report.openRecord", "Open")}
385
386
  </Button>
386
387
  </DropdownMenu.Trigger>
387
- <DropdownMenu.Content maxHeight={360}>
388
+ <DropdownMenu.Content maxHeight={overlayListMaxHeight}>
388
389
  <DropdownMenu.Label>
389
390
  {t("report.openRecordHint", "Open a record from this page")}
390
391
  </DropdownMenu.Label>
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import { AsyncBoundary, Card, Skeleton, Text, YStack } from "@multiplatform.one/components";
12
12
  import { ChartCard, type ChartConfig, type ChartType } from "@multiplatform.one/frappe-ui";
13
- import { useResolvedKnobs } from "@multiplatform.one/theme";
13
+ import { sizeRecipeEscape, useResolvedKnobs } from "@multiplatform.one/theme";
14
14
  import { useMemo } from "react";
15
15
  import { useTranslation } from "react-i18next";
16
16
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
@@ -18,6 +18,11 @@ import type { WorkspaceChartRow } from "./types";
18
18
  import { useDashboardChartData, type DashboardChartDoc } from "./useDashboardChart";
19
19
  import { useFrappeDoc } from "./useWorkspaceDoc";
20
20
 
21
+ const chartHeight = sizeRecipeEscape(
22
+ 220,
23
+ "chart block: one plot height the chart and its loading bone share",
24
+ );
25
+
21
26
  function toChartType(frappeType: string | undefined): ChartType {
22
27
  switch (frappeType) {
23
28
  case "Line":
@@ -65,7 +70,7 @@ export function WorkspaceChartBlock({ row }: WorkspaceChartBlockProps) {
65
70
  label,
66
71
  value: dataset.values[index] ?? 0,
67
72
  })),
68
- height: 220,
73
+ height: chartHeight,
69
74
  };
70
75
  }, [series, chartDoc?.type, row.name, title]);
71
76
 
@@ -88,8 +93,14 @@ export function WorkspaceChartBlock({ row }: WorkspaceChartBlockProps) {
88
93
  return (
89
94
  <Card flexGrow={1} aria-busy aria-label={t("loading", "Loading")}>
90
95
  <YStack {...knobProps.panelPadding} {...knobProps.gap}>
91
- <Skeleton width="40%" height={16} />
92
- <Skeleton variant="rounded" width="100%" height={220} />
96
+ <Skeleton
97
+ width="40%"
98
+ height={sizeRecipeEscape(
99
+ 16,
100
+ "title bone: the height of the card title it stands in for",
101
+ )}
102
+ />
103
+ <Skeleton variant="rounded" width="100%" height={chartHeight} />
93
104
  </YStack>
94
105
  </Card>
95
106
  );
@@ -104,7 +104,7 @@ function LinkRow({
104
104
  cursor={disabled ? "default" : "pointer"}
105
105
  paddingVertical="$1.5"
106
106
  paddingHorizontal={pad}
107
- minHeight={36}
107
+ minHeight="$3"
108
108
  alignItems="center"
109
109
  role="link"
110
110
  aria-label={row.label}
@@ -208,7 +208,7 @@ export function WorkspaceLinkCard({ group, collapse = true }: WorkspaceLinkCardP
208
208
  cursor="pointer"
209
209
  paddingVertical="$1.5"
210
210
  paddingHorizontal={pad}
211
- minHeight={36}
211
+ minHeight="$3"
212
212
  alignItems="center"
213
213
  role="button"
214
214
  aria-expanded={expanded}
@@ -11,7 +11,11 @@
11
11
  */
12
12
  import { EmptyState, Accordion, YStack } from "@multiplatform.one/components";
13
13
  import { SearchInput, useViewportGtSm } from "@multiplatform.one/forms";
14
- import { ensureCompositeFocusRing, useResolvedKnobs } from "@multiplatform.one/theme";
14
+ import {
15
+ FOCUS_RING_MIN_WIDTH,
16
+ ensureCompositeFocusRing,
17
+ useResolvedKnobs,
18
+ } from "@multiplatform.one/theme";
15
19
  import { useMemo, useState } from "react";
16
20
  import { useTranslation } from "react-i18next";
17
21
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
@@ -95,7 +99,11 @@ export function WorkspaceLinkDirectory({ items }: WorkspaceLinkDirectoryProps) {
95
99
  {/* LC-71: 2px pad = default ring offset, so Accordion's clip
96
100
  cannot cut the whole-box ring. Inner Area outline is
97
101
  suppressed — the Box (magnifier included) carries it. */}
98
- <YStack padding={2} overflow="visible" data-testid="workspace-filter-links">
102
+ <YStack
103
+ padding={FOCUS_RING_MIN_WIDTH}
104
+ overflow="visible"
105
+ data-testid="workspace-filter-links"
106
+ >
99
107
  <SearchInput
100
108
  value={filter}
101
109
  onChange={setFilter}
@@ -75,8 +75,8 @@ export function WorkspaceNumberCard({ row }: WorkspaceNumberCardProps) {
75
75
  return (
76
76
  <Card flexGrow={1} aria-busy aria-label={t("loading", "Loading")}>
77
77
  <YStack {...knobProps.panelPadding} {...knobProps.gap}>
78
- <Skeleton width="60%" height={12} />
79
- <Skeleton width="40%" height={28} />
78
+ <Skeleton width="60%" />
79
+ <Skeleton width="40%" height="$2" />
80
80
  </YStack>
81
81
  </Card>
82
82
  );
@@ -8,6 +8,7 @@
8
8
  import { Card, Separator, Text, XStack, YStack } from "@multiplatform.one/components";
9
9
  import { FrappeList } from "@multiplatform.one/frappe-ui";
10
10
  import {
11
+ TOUCH_HEIGHT_FLOOR,
11
12
  ensureFocusVisibleRing,
12
13
  FOCUS_RING_HALO_OFFSET,
13
14
  useResolvedKnobs,
@@ -97,7 +98,7 @@ export function WorkspaceQuickList({ row }: WorkspaceQuickListProps) {
97
98
  <XStack
98
99
  paddingVertical="$2"
99
100
  paddingHorizontal={pad}
100
- minHeight={44}
101
+ minHeight={TOUCH_HEIGHT_FLOOR}
101
102
  alignItems="center"
102
103
  cursor="pointer"
103
104
  overflow="hidden"
@@ -13,7 +13,11 @@
13
13
  */
14
14
  import { ClockCounterClockwiseIcon } from "@phosphor-icons/react";
15
15
  import { Card, PageSection, Text, XStack, useTheme } from "@multiplatform.one/components";
16
- import { ensureFocusVisibleRing, useResolvedKnobs } from "@multiplatform.one/theme";
16
+ import {
17
+ TOUCH_HEIGHT_FLOOR,
18
+ ensureFocusVisibleRing,
19
+ useResolvedKnobs,
20
+ } from "@multiplatform.one/theme";
17
21
  import { useCallback, useEffect, useRef, useState } from "react";
18
22
  import { useTranslation } from "react-i18next";
19
23
  import { readRecentItems, type RecentItem } from "../chrome/awesomebar-data";
@@ -90,7 +94,12 @@ export function WorkspaceRecents() {
90
94
  // rectangle on the page ground, so no LC-71 §4 carve-out (MPO-92).
91
95
  focusVisibleStyle={ensureFocusVisibleRing()}
92
96
  >
93
- <XStack paddingHorizontal="$3" minHeight={44} alignItems="center" {...knobProps.gap}>
97
+ <XStack
98
+ paddingHorizontal="$3"
99
+ minHeight={TOUCH_HEIGHT_FLOOR}
100
+ alignItems="center"
101
+ {...knobProps.gap}
102
+ >
94
103
  <ClockCounterClockwiseIcon size={iconSize} color={iconColor} aria-hidden />
95
104
  <Text {...knobProps.label} fontWeight="400" numberOfLines={1} flexShrink={1}>
96
105
  {item.label}
@@ -31,7 +31,7 @@ import {
31
31
  XStack,
32
32
  YStack,
33
33
  } from "@multiplatform.one/components";
34
- import { useResolvedKnobs } from "@multiplatform.one/theme";
34
+ import { TOUCH_HEIGHT_FLOOR, sizeRecipeEscape, useResolvedKnobs } from "@multiplatform.one/theme";
35
35
  import { useMemo, type ReactNode } from "react";
36
36
  import { useTranslation } from "react-i18next";
37
37
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
@@ -148,6 +148,15 @@ function blockToGridItem(block: WorkspaceBlock, doc: WorkspaceDoc): WorkspaceGri
148
148
  }
149
149
  }
150
150
 
151
+ const chipBoneWidths = sizeRecipeEscape(
152
+ [128, 104, 144, 112],
153
+ "loading bones: placeholder chip widths and card height for content that has not loaded",
154
+ );
155
+ const cardBoneHeight = sizeRecipeEscape(
156
+ 200,
157
+ "loading bones: placeholder chip widths and card height for content that has not loaded",
158
+ );
159
+
151
160
  function WorkspaceSkeleton() {
152
161
  const { knobProps } = useResolvedKnobs();
153
162
  const { t } = useTranslation(BACKOFFICE_I18N_NAMESPACE);
@@ -155,17 +164,16 @@ function WorkspaceSkeleton() {
155
164
  // band (44px chips, deterministic widths), then the content card region.
156
165
  return (
157
166
  <YStack {...knobProps.gapLg} aria-busy aria-label={t("loading", "Loading")}>
158
- <Skeleton width="30%" height={32} />
167
+ <Skeleton width="30%" height="$2.5" />
159
168
  <XStack {...knobProps.gap}>
160
- <Skeleton variant="rounded" width={128} height={44} />
161
- <Skeleton variant="rounded" width={104} height={44} />
162
- <Skeleton variant="rounded" width={144} height={44} />
163
- <Skeleton variant="rounded" width={112} height={44} />
169
+ {chipBoneWidths.map((width) => (
170
+ <Skeleton key={width} variant="rounded" width={width} height={TOUCH_HEIGHT_FLOOR} />
171
+ ))}
164
172
  </XStack>
165
173
  <XStack {...knobProps.gap}>
166
- <Skeleton variant="rounded" width="32%" height={200} />
167
- <Skeleton variant="rounded" width="32%" height={200} />
168
- <Skeleton variant="rounded" width="32%" height={200} />
174
+ <Skeleton variant="rounded" width="32%" height={cardBoneHeight} />
175
+ <Skeleton variant="rounded" width="32%" height={cardBoneHeight} />
176
+ <Skeleton variant="rounded" width="32%" height={cardBoneHeight} />
169
177
  </XStack>
170
178
  </YStack>
171
179
  );
@@ -26,7 +26,12 @@ import {
26
26
  import { Card, Chip, Skeleton, Text, XStack, useTheme } from "@multiplatform.one/components";
27
27
  import { useFrappeAggregate, useFrappeConfig } from "@multiplatform.one/frappe-ui";
28
28
  import { openUrl } from "@multiplatform.one/platform";
29
- import { ensureFocusVisibleRing, useResolvedKnobs } from "@multiplatform.one/theme";
29
+ import {
30
+ TOUCH_HEIGHT_FLOOR,
31
+ ensureFocusVisibleRing,
32
+ sizeRecipeEscape,
33
+ useResolvedKnobs,
34
+ } from "@multiplatform.one/theme";
30
35
  import { useEffect, useMemo } from "react";
31
36
  import { useTranslation } from "react-i18next";
32
37
  import {
@@ -217,14 +222,26 @@ export function WorkspaceShortcut({ row, onPress }: WorkspaceShortcutProps) {
217
222
  >
218
223
  {/* Compact chip anatomy: icon + label + count, ≥44px press target
219
224
  (DG-LAY-04), self-sized so the band wraps instead of stretching. */}
220
- <XStack paddingHorizontal="$3" minHeight={44} alignItems="center" {...knobProps.gap}>
225
+ <XStack
226
+ paddingHorizontal="$3"
227
+ minHeight={TOUCH_HEIGHT_FLOOR}
228
+ alignItems="center"
229
+ {...knobProps.gap}
230
+ >
221
231
  <TypeIcon size={iconSize} color={iconColor} aria-hidden />
222
232
  <Text {...knobProps.label} fontWeight="400" numberOfLines={1} flexShrink={1}>
223
233
  {row.label}
224
234
  </Text>
225
235
  {isDoctype ? (
226
236
  countLoading ? (
227
- <Skeleton variant="rounded" width={28} height={16} />
237
+ <Skeleton
238
+ variant="rounded"
239
+ width="$2"
240
+ height={sizeRecipeEscape(
241
+ 16,
242
+ "count bone: the height of the count badge it stands in for",
243
+ )}
244
+ />
228
245
  ) : countError ? null : countLabel !== undefined ? (
229
246
  <Chip size="$2" variant="subtle" color="gray">
230
247
  {countLabel}
@@ -0,0 +1,65 @@
1
+ // The workspace hooks cache their REST client per connection. Two
2
+ // connections to one bench that differ only in useToken must not share a
3
+ // client, or the first one built decides whether the other sends its token
4
+ // (MPO-406). The bench answers a tokenless call as Guest.
5
+ import { renderHook, waitFor } from "@testing-library/react";
6
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
7
+ import { useDashboardChartData } from "./useDashboardChart";
8
+ import { useWorkspaceDoc } from "./useWorkspaceDoc";
9
+
10
+ const provider = vi.hoisted(() => ({ config: undefined as unknown }));
11
+ vi.mock("@multiplatform.one/frappe-ui", () => ({ useFrappeConfig: () => provider.config }));
12
+
13
+ const token = "token key:secret";
14
+ let sent: (string | null)[] = [];
15
+
16
+ beforeEach(() => {
17
+ sent = [];
18
+ vi.stubGlobal("fetch", async (input: string | URL | Request, init?: RequestInit) => {
19
+ sent.push(new Headers(init?.headers).get("Authorization"));
20
+ const url = new URL(String(input));
21
+ const body = url.pathname.startsWith("/api/resource/")
22
+ ? { data: { name: "Home", doctype: "Workspace" } }
23
+ : { message: { labels: [], datasets: [] } };
24
+ return new Response(JSON.stringify(body), {
25
+ headers: { "content-type": "application/json" },
26
+ });
27
+ });
28
+ });
29
+
30
+ afterEach(() => vi.unstubAllGlobals());
31
+
32
+ async function authorizationPerConnection(
33
+ baseURL: string,
34
+ mount: () => () => boolean,
35
+ ): Promise<{ off: (string | null)[]; on: (string | null)[] }> {
36
+ const auth = (useToken: boolean) => ({ useToken, token: "key:secret", type: "token" });
37
+ provider.config = { baseURL, realtime: false, auth: auth(false) };
38
+ const offSettled = mount();
39
+ await waitFor(() => expect(offSettled()).toBe(true));
40
+ const off = sent.splice(0);
41
+ provider.config = { baseURL, realtime: false, auth: auth(true) };
42
+ const onSettled = mount();
43
+ await waitFor(() => expect(onSettled()).toBe(true));
44
+ return { off, on: sent.splice(0) };
45
+ }
46
+
47
+ describe("workspace REST clients never drop a connection's token", () => {
48
+ it("useDashboardChartData", async () => {
49
+ const { off, on } = await authorizationPerConnection("http://chart-auth.test", () => {
50
+ const { result } = renderHook(() => useDashboardChartData("Sales"));
51
+ return () => !result.current.isLoading && !!result.current.series;
52
+ });
53
+ expect(off).toEqual([null]);
54
+ expect(on).toEqual([token]);
55
+ });
56
+
57
+ it("useWorkspaceDoc", async () => {
58
+ const { off, on } = await authorizationPerConnection("http://workspace-auth.test", () => {
59
+ const { result } = renderHook(() => useWorkspaceDoc("Home"));
60
+ return () => !result.current.isLoading && !!result.current.doc;
61
+ });
62
+ expect(off).toEqual([null]);
63
+ expect(on).toEqual([token]);
64
+ });
65
+ });
@@ -44,7 +44,7 @@ export interface UseDashboardChartDataResult {
44
44
  const callCache = new Map<string, CallModule>();
45
45
 
46
46
  function getCall(baseURL: string, auth: FrappeConfig["auth"]): CallModule {
47
- const key = `${baseURL}:${auth?.token ?? ""}:${auth?.type ?? ""}`;
47
+ const key = `${baseURL}:${auth?.useToken ? "t" : ""}:${auth?.token ?? ""}:${auth?.type ?? ""}`;
48
48
  let call = callCache.get(key);
49
49
  if (!call) {
50
50
  const authConfig: AuthConfig | undefined = auth
@@ -15,7 +15,7 @@ import type { WorkspaceDoc } from "./types";
15
15
  const dbCache = new Map<string, DbModule>();
16
16
 
17
17
  function getDb(baseURL: string, auth: FrappeConfig["auth"]): DbModule {
18
- const key = `${baseURL}:${auth?.token ?? ""}:${auth?.type ?? ""}`;
18
+ const key = `${baseURL}:${auth?.useToken ? "t" : ""}:${auth?.token ?? ""}:${auth?.type ?? ""}`;
19
19
  let db = dbCache.get(key);
20
20
  if (!db) {
21
21
  const authConfig: AuthConfig | undefined = auth
@@ -1 +1 @@
1
- {"version":3,"file":"help-about-dialog.d.ts","sourceRoot":"","sources":["../../src/chrome/help-about-dialog.tsx"],"names":[],"mappings":"AAuBA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAED,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,oBAAoB,2CA0F3E"}
1
+ {"version":3,"file":"help-about-dialog.d.ts","sourceRoot":"","sources":["../../src/chrome/help-about-dialog.tsx"],"names":[],"mappings":"AAwBA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAED,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,oBAAoB,2CA6F3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"help-shortcuts-dialog.d.ts","sourceRoot":"","sources":["../../src/chrome/help-shortcuts-dialog.tsx"],"names":[],"mappings":"AAoBA,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAqED,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,wBAAwB,2CAoDnF"}
1
+ {"version":3,"file":"help-shortcuts-dialog.d.ts","sourceRoot":"","sources":["../../src/chrome/help-shortcuts-dialog.tsx"],"names":[],"mappings":"AAoBA,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AA8ED,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,wBAAwB,2CAuDnF"}
@@ -1 +1 @@
1
- {"version":3,"file":"notifications-panel.d.ts","sourceRoot":"","sources":["../../src/chrome/notifications-panel.tsx"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,WAAW,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9C,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAsFD,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,SAAS,EACT,KAAK,EACL,WAAW,EACX,aAAa,GACd,EAAE,uBAAuB,2CAgEzB"}
1
+ {"version":3,"file":"notifications-panel.d.ts","sourceRoot":"","sources":["../../src/chrome/notifications-panel.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,WAAW,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9C,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AA4FD,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,SAAS,EACT,KAAK,EACL,WAAW,EACX,aAAa,GACd,EAAE,uBAAuB,2CAgEzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormConnections.d.ts","sourceRoot":"","sources":["../../src/form/FormConnections.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAY5D,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAkKD,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CA2DtF"}
1
+ {"version":3,"file":"FormConnections.d.ts","sourceRoot":"","sources":["../../src/form/FormConnections.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAY5D,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAoMD,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CA2DtF"}