@multiplatform.one/backoffice 7.23.1 → 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 (711) hide show
  1. package/dist/cjs/chrome/BackofficeAwesomebar.native.js +1 -1
  2. package/dist/cjs/chrome/BackofficeAwesomebar.native.js.map +1 -1
  3. package/dist/cjs/chrome/CommandPalette.cjs +2 -2
  4. package/dist/cjs/chrome/CommandPalette.native.js +3 -3
  5. package/dist/cjs/chrome/CommandPalette.native.js.map +1 -1
  6. package/dist/cjs/chrome/HelpMenu.native.js +1 -1
  7. package/dist/cjs/chrome/HelpMenu.native.js.map +1 -1
  8. package/dist/cjs/chrome/NotificationsButton.native.js +1 -1
  9. package/dist/cjs/chrome/NotificationsButton.native.js.map +1 -1
  10. package/dist/cjs/chrome/UserMenu.native.js +1 -1
  11. package/dist/cjs/chrome/UserMenu.native.js.map +1 -1
  12. package/dist/cjs/chrome/awesomebar-data.native.js.map +1 -1
  13. package/dist/cjs/chrome/command-palette-model.native.js +1 -1
  14. package/dist/cjs/chrome/command-palette-model.native.js.map +1 -1
  15. package/dist/cjs/chrome/help-about-dialog.cjs +2 -1
  16. package/dist/cjs/chrome/help-about-dialog.native.js +3 -2
  17. package/dist/cjs/chrome/help-about-dialog.native.js.map +1 -1
  18. package/dist/cjs/chrome/help-shortcuts-dialog.cjs +3 -3
  19. package/dist/cjs/chrome/help-shortcuts-dialog.native.js +4 -4
  20. package/dist/cjs/chrome/help-shortcuts-dialog.native.js.map +1 -1
  21. package/dist/cjs/chrome/notifications-data.native.js.map +1 -1
  22. package/dist/cjs/chrome/notifications-panel.cjs +4 -5
  23. package/dist/cjs/chrome/notifications-panel.native.js +5 -6
  24. package/dist/cjs/chrome/notifications-panel.native.js.map +1 -1
  25. package/dist/cjs/chrome/notifications-utils.native.js.map +1 -1
  26. package/dist/cjs/chrome/shortcuts.native.js.map +1 -1
  27. package/dist/cjs/chrome/user-session.native.js.map +1 -1
  28. package/dist/cjs/config/BackofficeProvider.native.js +1 -1
  29. package/dist/cjs/config/BackofficeProvider.native.js.map +1 -1
  30. package/dist/cjs/config/capabilities.native.js.map +1 -1
  31. package/dist/cjs/config/events.native.js.map +1 -1
  32. package/dist/cjs/config/slots.native.js.map +1 -1
  33. package/dist/cjs/desk/Desk.native.js.map +1 -1
  34. package/dist/cjs/desk/DeskSurface.native.js.map +1 -1
  35. package/dist/cjs/desk/resolveDeskPath.native.js.map +1 -1
  36. package/dist/cjs/desk/scope.native.js.map +1 -1
  37. package/dist/cjs/desk/target.native.js.map +1 -1
  38. package/dist/cjs/form/DocFormScreen.native.js +1 -1
  39. package/dist/cjs/form/DocFormScreen.native.js.map +1 -1
  40. package/dist/cjs/form/FormConnections.cjs +7 -7
  41. package/dist/cjs/form/FormConnections.native.js +8 -8
  42. package/dist/cjs/form/FormConnections.native.js.map +1 -1
  43. package/dist/cjs/form/FormDialogs.cjs +6 -5
  44. package/dist/cjs/form/FormDialogs.native.js +7 -6
  45. package/dist/cjs/form/FormDialogs.native.js.map +1 -1
  46. package/dist/cjs/form/FormErrorBoundary.native.js +1 -1
  47. package/dist/cjs/form/FormErrorBoundary.native.js.map +1 -1
  48. package/dist/cjs/form/FormHeaderCluster.native.js +1 -1
  49. package/dist/cjs/form/FormHeaderCluster.native.js.map +1 -1
  50. package/dist/cjs/form/FormSidebarPanel.cjs +1 -1
  51. package/dist/cjs/form/FormSidebarPanel.native.js +2 -2
  52. package/dist/cjs/form/FormSidebarPanel.native.js.map +1 -1
  53. package/dist/cjs/form/FormTimeline.cjs +4 -4
  54. package/dist/cjs/form/FormTimeline.native.js +5 -5
  55. package/dist/cjs/form/FormTimeline.native.js.map +1 -1
  56. package/dist/cjs/form/FormToolbar.native.js +1 -1
  57. package/dist/cjs/form/FormToolbar.native.js.map +1 -1
  58. package/dist/cjs/form/connections-data.native.js.map +1 -1
  59. package/dist/cjs/form/createPrefill.native.js.map +1 -1
  60. package/dist/cjs/form/dependsOn.native.js.map +1 -1
  61. package/dist/cjs/form/dirtyTracking.native.js.map +1 -1
  62. package/dist/cjs/form/docinfo.native.js.map +1 -1
  63. package/dist/cjs/form/fetchFrom.native.js.map +1 -1
  64. package/dist/cjs/form/fieldPermissions.native.js.map +1 -1
  65. package/dist/cjs/form/formActions.native.js.map +1 -1
  66. package/dist/cjs/form/formLayout.native.js.map +1 -1
  67. package/dist/cjs/form/platformHooks.native.js.map +1 -1
  68. package/dist/cjs/form/sidebar-attachments.native.js +1 -1
  69. package/dist/cjs/form/sidebar-attachments.native.js.map +1 -1
  70. package/dist/cjs/form/sidebar-dialogs.cjs +3 -2
  71. package/dist/cjs/form/sidebar-dialogs.native.js +4 -3
  72. package/dist/cjs/form/sidebar-dialogs.native.js.map +1 -1
  73. package/dist/cjs/form/sidebar-people.native.js +1 -1
  74. package/dist/cjs/form/sidebar-people.native.js.map +1 -1
  75. package/dist/cjs/form/sidebar-rpc.native.js.map +1 -1
  76. package/dist/cjs/form/sidebar-utils.native.js.map +1 -1
  77. package/dist/cjs/form/timeline-entries.native.js.map +1 -1
  78. package/dist/cjs/form/timeline-utils.native.js.map +1 -1
  79. package/dist/cjs/form/useFormEngine.native.js.map +1 -1
  80. package/dist/cjs/i18n/en.native.js.map +1 -1
  81. package/dist/cjs/i18n/index.native.js.map +1 -1
  82. package/dist/cjs/index.native.js +1 -1
  83. package/dist/cjs/index.native.js.map +1 -1
  84. package/dist/cjs/list/AddTagsDialog.cjs +2 -1
  85. package/dist/cjs/list/AddTagsDialog.native.js +3 -2
  86. package/dist/cjs/list/AddTagsDialog.native.js.map +1 -1
  87. package/dist/cjs/list/AssignToDialog.cjs +2 -1
  88. package/dist/cjs/list/AssignToDialog.native.js +3 -2
  89. package/dist/cjs/list/AssignToDialog.native.js.map +1 -1
  90. package/dist/cjs/list/DoctypeListScreen.native.js +1 -1
  91. package/dist/cjs/list/DoctypeListScreen.native.js.map +1 -1
  92. package/dist/cjs/list/ListBulkActionsBar.native.js +1 -1
  93. package/dist/cjs/list/ListBulkActionsBar.native.js.map +1 -1
  94. package/dist/cjs/list/ListFilterBar.native.js +1 -1
  95. package/dist/cjs/list/ListFilterBar.native.js.map +1 -1
  96. package/dist/cjs/list/ListSidebar.cjs +2 -1
  97. package/dist/cjs/list/ListSidebar.native.js +3 -2
  98. package/dist/cjs/list/ListSidebar.native.js.map +1 -1
  99. package/dist/cjs/list/bulk-edit-dialog.cjs +2 -1
  100. package/dist/cjs/list/bulk-edit-dialog.native.js +3 -2
  101. package/dist/cjs/list/bulk-edit-dialog.native.js.map +1 -1
  102. package/dist/cjs/list/bulk-export.native.js.map +1 -1
  103. package/dist/cjs/list/bulk-submit-cancel.native.js.map +1 -1
  104. package/dist/cjs/list/bulkActions.native.js.map +1 -1
  105. package/dist/cjs/list/filter-chips.native.js +1 -1
  106. package/dist/cjs/list/filter-chips.native.js.map +1 -1
  107. package/dist/cjs/list/filter-editor.cjs +7 -5
  108. package/dist/cjs/list/filter-editor.native.js +8 -6
  109. package/dist/cjs/list/filter-editor.native.js.map +1 -1
  110. package/dist/cjs/list/filter-fields.native.js.map +1 -1
  111. package/dist/cjs/list/filter-saved.cjs +2 -1
  112. package/dist/cjs/list/filter-saved.native.js +3 -2
  113. package/dist/cjs/list/filter-saved.native.js.map +1 -1
  114. package/dist/cjs/list/filter-sort.cjs +2 -1
  115. package/dist/cjs/list/filter-sort.native.js +3 -2
  116. package/dist/cjs/list/filter-sort.native.js.map +1 -1
  117. package/dist/cjs/list/filter-standard.native.js.map +1 -1
  118. package/dist/cjs/list/filterConversion.native.js.map +1 -1
  119. package/dist/cjs/list/list-tools-sheet.native.js +1 -1
  120. package/dist/cjs/list/list-tools-sheet.native.js.map +1 -1
  121. package/dist/cjs/list/listColumns.native.js.map +1 -1
  122. package/dist/cjs/list/listFields.native.js.map +1 -1
  123. package/dist/cjs/list/listFormat.native.js.map +1 -1
  124. package/dist/cjs/list/listUrlState.native.js.map +1 -1
  125. package/dist/cjs/list/sidebar-section.cjs +7 -3
  126. package/dist/cjs/list/sidebar-section.native.js +8 -4
  127. package/dist/cjs/list/sidebar-section.native.js.map +1 -1
  128. package/dist/cjs/list/sidebar-stats.native.js.map +1 -1
  129. package/dist/cjs/list/statusColors.native.js.map +1 -1
  130. package/dist/cjs/navigation/navigator.native.js.map +1 -1
  131. package/dist/cjs/navigation/paths.native.js.map +1 -1
  132. package/dist/cjs/oneAdapter/index.native.js.map +1 -1
  133. package/dist/cjs/quickEntry/QuickEntryDialog.cjs +1 -1
  134. package/dist/cjs/quickEntry/QuickEntryDialog.native.js +2 -2
  135. package/dist/cjs/quickEntry/QuickEntryDialog.native.js.map +1 -1
  136. package/dist/cjs/quickEntry/quickEntryPlan.native.js.map +1 -1
  137. package/dist/cjs/report/DoctypeReportView.native.js +1 -1
  138. package/dist/cjs/report/DoctypeReportView.native.js.map +1 -1
  139. package/dist/cjs/report/QueryReportScreen.native.js +1 -1
  140. package/dist/cjs/report/QueryReportScreen.native.js.map +1 -1
  141. package/dist/cjs/report/queryReportColumns.native.js.map +1 -1
  142. package/dist/cjs/report/queryReportFilterBar.cjs +2 -2
  143. package/dist/cjs/report/queryReportFilterBar.native.js +3 -3
  144. package/dist/cjs/report/queryReportFilterBar.native.js.map +1 -1
  145. package/dist/cjs/report/queryReportUrlState.native.js.map +1 -1
  146. package/dist/cjs/report/report-grid.native.js +1 -1
  147. package/dist/cjs/report/report-grid.native.js.map +1 -1
  148. package/dist/cjs/report/report-toolbar.cjs +5 -4
  149. package/dist/cjs/report/report-toolbar.native.js +6 -5
  150. package/dist/cjs/report/report-toolbar.native.js.map +1 -1
  151. package/dist/cjs/report/reportShapes.native.js.map +1 -1
  152. package/dist/cjs/report/reportViewModel.native.js.map +1 -1
  153. package/dist/cjs/report/savedReports.native.js.map +1 -1
  154. package/dist/cjs/report/useQueryReport.native.js.map +1 -1
  155. package/dist/cjs/shared/deskLinks.native.js.map +1 -1
  156. package/dist/cjs/shared/listNavContext.native.js.map +1 -1
  157. package/dist/cjs/shared/measures.cjs +31 -0
  158. package/dist/cjs/shared/measures.native.js +34 -0
  159. package/dist/cjs/shared/measures.native.js.map +1 -0
  160. package/dist/cjs/shared/types.native.js.map +1 -1
  161. package/dist/cjs/shared/useDocinfo.native.js.map +1 -1
  162. package/dist/cjs/shared/useDoctypeMeta.native.js.map +1 -1
  163. package/dist/cjs/shared/useFrappeApp.native.js.map +1 -1
  164. package/dist/cjs/shared/useRecentVisit.native.js.map +1 -1
  165. package/dist/cjs/shared/useSessionUserId.native.js.map +1 -1
  166. package/dist/cjs/shared/useSlugTarget.native.js.map +1 -1
  167. package/dist/cjs/shared/useUserRoles.native.js.map +1 -1
  168. package/dist/cjs/shell/BackofficeShell.cjs +1 -1
  169. package/dist/cjs/shell/BackofficeShell.native.js +2 -2
  170. package/dist/cjs/shell/BackofficeShell.native.js.map +1 -1
  171. package/dist/cjs/shell/HomeRedirect.native.js +1 -1
  172. package/dist/cjs/shell/HomeRedirect.native.js.map +1 -1
  173. package/dist/cjs/shell/NotFoundScreen.native.js +1 -1
  174. package/dist/cjs/shell/NotFoundScreen.native.js.map +1 -1
  175. package/dist/cjs/shell/SlugScreen.native.js +1 -1
  176. package/dist/cjs/shell/SlugScreen.native.js.map +1 -1
  177. package/dist/cjs/shell/WorkspaceSidebar.native.js +1 -1
  178. package/dist/cjs/shell/WorkspaceSidebar.native.js.map +1 -1
  179. package/dist/cjs/shell/useWorkspaces.native.js.map +1 -1
  180. package/dist/cjs/shell/workspaceIcons.native.js.map +1 -1
  181. package/dist/cjs/views/CalendarView.native.js +1 -1
  182. package/dist/cjs/views/CalendarView.native.js.map +1 -1
  183. package/dist/cjs/views/DashboardView.cjs +17 -13
  184. package/dist/cjs/views/DashboardView.native.js +18 -14
  185. package/dist/cjs/views/DashboardView.native.js.map +1 -1
  186. package/dist/cjs/views/DoctypeViewScreen.native.js.map +1 -1
  187. package/dist/cjs/views/ImageView.native.js +1 -1
  188. package/dist/cjs/views/ImageView.native.js.map +1 -1
  189. package/dist/cjs/views/KanbanView.native.js +1 -1
  190. package/dist/cjs/views/KanbanView.native.js.map +1 -1
  191. package/dist/cjs/views/ReportView.native.js +1 -1
  192. package/dist/cjs/views/ReportView.native.js.map +1 -1
  193. package/dist/cjs/views/TreeView.native.js +1 -1
  194. package/dist/cjs/views/TreeView.native.js.map +1 -1
  195. package/dist/cjs/views/ViewHeader.native.js +1 -1
  196. package/dist/cjs/views/ViewHeader.native.js.map +1 -1
  197. package/dist/cjs/views/ViewStates.native.js +1 -1
  198. package/dist/cjs/views/ViewStates.native.js.map +1 -1
  199. package/dist/cjs/views/ViewSwitcherMenu.native.js +1 -1
  200. package/dist/cjs/views/ViewSwitcherMenu.native.js.map +1 -1
  201. package/dist/cjs/views/calendar-field-selector.native.js +1 -1
  202. package/dist/cjs/views/calendar-field-selector.native.js.map +1 -1
  203. package/dist/cjs/views/connection.native.js.map +1 -1
  204. package/dist/cjs/views/dashboard-data.native.js.map +1 -1
  205. package/dist/cjs/views/deskViewConfigs.native.js.map +1 -1
  206. package/dist/cjs/views/kanban-board-controls.cjs +4 -3
  207. package/dist/cjs/views/kanban-board-controls.native.js +5 -4
  208. package/dist/cjs/views/kanban-board-controls.native.js.map +1 -1
  209. package/dist/cjs/views/kanban-field-picker.native.js +1 -1
  210. package/dist/cjs/views/kanban-field-picker.native.js.map +1 -1
  211. package/dist/cjs/views/kanbanBoardOps.native.js.map +1 -1
  212. package/dist/cjs/views/report-controls.cjs +5 -4
  213. package/dist/cjs/views/report-controls.native.js +6 -5
  214. package/dist/cjs/views/report-controls.native.js.map +1 -1
  215. package/dist/cjs/views/viewAvailability.native.js.map +1 -1
  216. package/dist/cjs/views/viewMeta.native.js.map +1 -1
  217. package/dist/cjs/workspace/WorkspaceChartBlock.cjs +4 -3
  218. package/dist/cjs/workspace/WorkspaceChartBlock.native.js +5 -4
  219. package/dist/cjs/workspace/WorkspaceChartBlock.native.js.map +1 -1
  220. package/dist/cjs/workspace/WorkspaceGrid.native.js.map +1 -1
  221. package/dist/cjs/workspace/WorkspaceLinkCard.cjs +2 -2
  222. package/dist/cjs/workspace/WorkspaceLinkCard.native.js +3 -3
  223. package/dist/cjs/workspace/WorkspaceLinkCard.native.js.map +1 -1
  224. package/dist/cjs/workspace/WorkspaceLinkDirectory.cjs +1 -1
  225. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js +2 -2
  226. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  227. package/dist/cjs/workspace/WorkspaceNumberCard.cjs +2 -3
  228. package/dist/cjs/workspace/WorkspaceNumberCard.native.js +3 -4
  229. package/dist/cjs/workspace/WorkspaceNumberCard.native.js.map +1 -1
  230. package/dist/cjs/workspace/WorkspaceQuickList.cjs +1 -1
  231. package/dist/cjs/workspace/WorkspaceQuickList.native.js +2 -2
  232. package/dist/cjs/workspace/WorkspaceQuickList.native.js.map +1 -1
  233. package/dist/cjs/workspace/WorkspaceRecents.cjs +1 -1
  234. package/dist/cjs/workspace/WorkspaceRecents.native.js +2 -2
  235. package/dist/cjs/workspace/WorkspaceRecents.native.js.map +1 -1
  236. package/dist/cjs/workspace/WorkspaceScreen.cjs +11 -21
  237. package/dist/cjs/workspace/WorkspaceScreen.native.js +15 -23
  238. package/dist/cjs/workspace/WorkspaceScreen.native.js.map +1 -1
  239. package/dist/cjs/workspace/WorkspaceShortcut.cjs +3 -3
  240. package/dist/cjs/workspace/WorkspaceShortcut.native.js +4 -4
  241. package/dist/cjs/workspace/WorkspaceShortcut.native.js.map +1 -1
  242. package/dist/cjs/workspace/parseContent.native.js.map +1 -1
  243. package/dist/cjs/workspace/types.native.js.map +1 -1
  244. package/dist/cjs/workspace/useDashboardChart.cjs +1 -1
  245. package/dist/cjs/workspace/useDashboardChart.native.js +1 -1
  246. package/dist/cjs/workspace/useDashboardChart.native.js.map +1 -1
  247. package/dist/cjs/workspace/useWorkspaceDoc.cjs +1 -1
  248. package/dist/cjs/workspace/useWorkspaceDoc.native.js +1 -1
  249. package/dist/cjs/workspace/useWorkspaceDoc.native.js.map +1 -1
  250. package/dist/esm/chrome/BackofficeAwesomebar.native.js.map +1 -1
  251. package/dist/esm/chrome/CommandPalette.mjs +2 -2
  252. package/dist/esm/chrome/CommandPalette.mjs.map +1 -1
  253. package/dist/esm/chrome/CommandPalette.native.js +2 -2
  254. package/dist/esm/chrome/CommandPalette.native.js.map +1 -1
  255. package/dist/esm/chrome/HelpMenu.native.js.map +1 -1
  256. package/dist/esm/chrome/NotificationsButton.native.js.map +1 -1
  257. package/dist/esm/chrome/UserMenu.native.js.map +1 -1
  258. package/dist/esm/chrome/awesomebar-data.native.js.map +1 -1
  259. package/dist/esm/chrome/command-palette-model.native.js.map +1 -1
  260. package/dist/esm/chrome/help-about-dialog.mjs +2 -1
  261. package/dist/esm/chrome/help-about-dialog.mjs.map +1 -1
  262. package/dist/esm/chrome/help-about-dialog.native.js +2 -1
  263. package/dist/esm/chrome/help-about-dialog.native.js.map +1 -1
  264. package/dist/esm/chrome/help-shortcuts-dialog.mjs +4 -4
  265. package/dist/esm/chrome/help-shortcuts-dialog.mjs.map +1 -1
  266. package/dist/esm/chrome/help-shortcuts-dialog.native.js +4 -4
  267. package/dist/esm/chrome/help-shortcuts-dialog.native.js.map +1 -1
  268. package/dist/esm/chrome/notifications-data.native.js.map +1 -1
  269. package/dist/esm/chrome/notifications-panel.mjs +5 -6
  270. package/dist/esm/chrome/notifications-panel.mjs.map +1 -1
  271. package/dist/esm/chrome/notifications-panel.native.js +5 -6
  272. package/dist/esm/chrome/notifications-panel.native.js.map +1 -1
  273. package/dist/esm/chrome/notifications-utils.native.js.map +1 -1
  274. package/dist/esm/chrome/shortcuts.native.js.map +1 -1
  275. package/dist/esm/chrome/user-session.native.js.map +1 -1
  276. package/dist/esm/config/BackofficeProvider.native.js.map +1 -1
  277. package/dist/esm/config/capabilities.native.js.map +1 -1
  278. package/dist/esm/config/events.native.js.map +1 -1
  279. package/dist/esm/config/slots.native.js.map +1 -1
  280. package/dist/esm/desk/Desk.native.js.map +1 -1
  281. package/dist/esm/desk/DeskSurface.native.js.map +1 -1
  282. package/dist/esm/desk/resolveDeskPath.native.js.map +1 -1
  283. package/dist/esm/desk/scope.native.js.map +1 -1
  284. package/dist/esm/desk/target.native.js.map +1 -1
  285. package/dist/esm/form/DocFormScreen.native.js.map +1 -1
  286. package/dist/esm/form/FormConnections.mjs +8 -8
  287. package/dist/esm/form/FormConnections.mjs.map +1 -1
  288. package/dist/esm/form/FormConnections.native.js +8 -8
  289. package/dist/esm/form/FormConnections.native.js.map +1 -1
  290. package/dist/esm/form/FormDialogs.mjs +7 -6
  291. package/dist/esm/form/FormDialogs.mjs.map +1 -1
  292. package/dist/esm/form/FormDialogs.native.js +7 -6
  293. package/dist/esm/form/FormDialogs.native.js.map +1 -1
  294. package/dist/esm/form/FormErrorBoundary.native.js.map +1 -1
  295. package/dist/esm/form/FormHeaderCluster.native.js.map +1 -1
  296. package/dist/esm/form/FormSidebarPanel.mjs +2 -2
  297. package/dist/esm/form/FormSidebarPanel.mjs.map +1 -1
  298. package/dist/esm/form/FormSidebarPanel.native.js +2 -2
  299. package/dist/esm/form/FormSidebarPanel.native.js.map +1 -1
  300. package/dist/esm/form/FormTimeline.mjs +4 -4
  301. package/dist/esm/form/FormTimeline.mjs.map +1 -1
  302. package/dist/esm/form/FormTimeline.native.js +4 -4
  303. package/dist/esm/form/FormTimeline.native.js.map +1 -1
  304. package/dist/esm/form/FormToolbar.native.js.map +1 -1
  305. package/dist/esm/form/connections-data.native.js.map +1 -1
  306. package/dist/esm/form/createPrefill.native.js.map +1 -1
  307. package/dist/esm/form/dependsOn.native.js.map +1 -1
  308. package/dist/esm/form/dirtyTracking.native.js.map +1 -1
  309. package/dist/esm/form/docinfo.native.js.map +1 -1
  310. package/dist/esm/form/fetchFrom.native.js.map +1 -1
  311. package/dist/esm/form/fieldPermissions.native.js.map +1 -1
  312. package/dist/esm/form/formActions.native.js.map +1 -1
  313. package/dist/esm/form/formLayout.native.js.map +1 -1
  314. package/dist/esm/form/platformHooks.native.js.map +1 -1
  315. package/dist/esm/form/sidebar-attachments.native.js.map +1 -1
  316. package/dist/esm/form/sidebar-dialogs.mjs +3 -2
  317. package/dist/esm/form/sidebar-dialogs.mjs.map +1 -1
  318. package/dist/esm/form/sidebar-dialogs.native.js +3 -2
  319. package/dist/esm/form/sidebar-dialogs.native.js.map +1 -1
  320. package/dist/esm/form/sidebar-people.native.js.map +1 -1
  321. package/dist/esm/form/sidebar-rpc.native.js.map +1 -1
  322. package/dist/esm/form/sidebar-utils.native.js.map +1 -1
  323. package/dist/esm/form/timeline-entries.native.js.map +1 -1
  324. package/dist/esm/form/timeline-utils.native.js.map +1 -1
  325. package/dist/esm/form/useFormEngine.native.js.map +1 -1
  326. package/dist/esm/i18n/en.native.js.map +1 -1
  327. package/dist/esm/i18n/index.native.js.map +1 -1
  328. package/dist/esm/index.native.js.map +1 -1
  329. package/dist/esm/list/AddTagsDialog.mjs +2 -1
  330. package/dist/esm/list/AddTagsDialog.mjs.map +1 -1
  331. package/dist/esm/list/AddTagsDialog.native.js +2 -1
  332. package/dist/esm/list/AddTagsDialog.native.js.map +1 -1
  333. package/dist/esm/list/AssignToDialog.mjs +2 -1
  334. package/dist/esm/list/AssignToDialog.mjs.map +1 -1
  335. package/dist/esm/list/AssignToDialog.native.js +2 -1
  336. package/dist/esm/list/AssignToDialog.native.js.map +1 -1
  337. package/dist/esm/list/DoctypeListScreen.native.js.map +1 -1
  338. package/dist/esm/list/ListBulkActionsBar.native.js.map +1 -1
  339. package/dist/esm/list/ListFilterBar.native.js.map +1 -1
  340. package/dist/esm/list/ListSidebar.mjs +2 -1
  341. package/dist/esm/list/ListSidebar.mjs.map +1 -1
  342. package/dist/esm/list/ListSidebar.native.js +2 -1
  343. package/dist/esm/list/ListSidebar.native.js.map +1 -1
  344. package/dist/esm/list/bulk-edit-dialog.mjs +2 -1
  345. package/dist/esm/list/bulk-edit-dialog.mjs.map +1 -1
  346. package/dist/esm/list/bulk-edit-dialog.native.js +2 -1
  347. package/dist/esm/list/bulk-edit-dialog.native.js.map +1 -1
  348. package/dist/esm/list/bulk-export.native.js.map +1 -1
  349. package/dist/esm/list/bulk-submit-cancel.native.js.map +1 -1
  350. package/dist/esm/list/bulkActions.native.js.map +1 -1
  351. package/dist/esm/list/filter-chips.native.js.map +1 -1
  352. package/dist/esm/list/filter-editor.mjs +7 -5
  353. package/dist/esm/list/filter-editor.mjs.map +1 -1
  354. package/dist/esm/list/filter-editor.native.js +7 -5
  355. package/dist/esm/list/filter-editor.native.js.map +1 -1
  356. package/dist/esm/list/filter-fields.native.js.map +1 -1
  357. package/dist/esm/list/filter-saved.mjs +2 -1
  358. package/dist/esm/list/filter-saved.mjs.map +1 -1
  359. package/dist/esm/list/filter-saved.native.js +2 -1
  360. package/dist/esm/list/filter-saved.native.js.map +1 -1
  361. package/dist/esm/list/filter-sort.mjs +2 -1
  362. package/dist/esm/list/filter-sort.mjs.map +1 -1
  363. package/dist/esm/list/filter-sort.native.js +2 -1
  364. package/dist/esm/list/filter-sort.native.js.map +1 -1
  365. package/dist/esm/list/filter-standard.native.js.map +1 -1
  366. package/dist/esm/list/filterConversion.native.js.map +1 -1
  367. package/dist/esm/list/list-tools-sheet.native.js.map +1 -1
  368. package/dist/esm/list/listColumns.native.js.map +1 -1
  369. package/dist/esm/list/listFields.native.js.map +1 -1
  370. package/dist/esm/list/listFormat.native.js.map +1 -1
  371. package/dist/esm/list/listUrlState.native.js.map +1 -1
  372. package/dist/esm/list/sidebar-section.mjs +8 -4
  373. package/dist/esm/list/sidebar-section.mjs.map +1 -1
  374. package/dist/esm/list/sidebar-section.native.js +8 -4
  375. package/dist/esm/list/sidebar-section.native.js.map +1 -1
  376. package/dist/esm/list/sidebar-stats.native.js.map +1 -1
  377. package/dist/esm/list/statusColors.native.js.map +1 -1
  378. package/dist/esm/navigation/navigator.native.js.map +1 -1
  379. package/dist/esm/navigation/paths.native.js.map +1 -1
  380. package/dist/esm/oneAdapter/index.native.js.map +1 -1
  381. package/dist/esm/quickEntry/QuickEntryDialog.mjs +2 -2
  382. package/dist/esm/quickEntry/QuickEntryDialog.mjs.map +1 -1
  383. package/dist/esm/quickEntry/QuickEntryDialog.native.js +2 -2
  384. package/dist/esm/quickEntry/QuickEntryDialog.native.js.map +1 -1
  385. package/dist/esm/quickEntry/quickEntryPlan.native.js.map +1 -1
  386. package/dist/esm/report/DoctypeReportView.native.js.map +1 -1
  387. package/dist/esm/report/QueryReportScreen.native.js.map +1 -1
  388. package/dist/esm/report/queryReportColumns.native.js.map +1 -1
  389. package/dist/esm/report/queryReportFilterBar.mjs +3 -3
  390. package/dist/esm/report/queryReportFilterBar.mjs.map +1 -1
  391. package/dist/esm/report/queryReportFilterBar.native.js +3 -3
  392. package/dist/esm/report/queryReportFilterBar.native.js.map +1 -1
  393. package/dist/esm/report/queryReportUrlState.native.js.map +1 -1
  394. package/dist/esm/report/report-grid.native.js.map +1 -1
  395. package/dist/esm/report/report-toolbar.mjs +5 -4
  396. package/dist/esm/report/report-toolbar.mjs.map +1 -1
  397. package/dist/esm/report/report-toolbar.native.js +5 -4
  398. package/dist/esm/report/report-toolbar.native.js.map +1 -1
  399. package/dist/esm/report/reportShapes.native.js.map +1 -1
  400. package/dist/esm/report/reportViewModel.native.js.map +1 -1
  401. package/dist/esm/report/savedReports.native.js.map +1 -1
  402. package/dist/esm/report/useQueryReport.native.js.map +1 -1
  403. package/dist/esm/shared/deskLinks.native.js.map +1 -1
  404. package/dist/esm/shared/listNavContext.native.js.map +1 -1
  405. package/dist/esm/shared/measures.mjs +5 -0
  406. package/dist/esm/shared/measures.mjs.map +1 -0
  407. package/dist/esm/shared/measures.native.js +5 -0
  408. package/dist/esm/shared/measures.native.js.map +1 -0
  409. package/dist/esm/shared/types.native.js.map +1 -1
  410. package/dist/esm/shared/useDocinfo.native.js.map +1 -1
  411. package/dist/esm/shared/useDoctypeMeta.native.js.map +1 -1
  412. package/dist/esm/shared/useFrappeApp.native.js.map +1 -1
  413. package/dist/esm/shared/useRecentVisit.native.js.map +1 -1
  414. package/dist/esm/shared/useSessionUserId.native.js.map +1 -1
  415. package/dist/esm/shared/useSlugTarget.native.js.map +1 -1
  416. package/dist/esm/shared/useUserRoles.native.js.map +1 -1
  417. package/dist/esm/shell/BackofficeShell.mjs +2 -2
  418. package/dist/esm/shell/BackofficeShell.mjs.map +1 -1
  419. package/dist/esm/shell/BackofficeShell.native.js +2 -2
  420. package/dist/esm/shell/BackofficeShell.native.js.map +1 -1
  421. package/dist/esm/shell/HomeRedirect.native.js.map +1 -1
  422. package/dist/esm/shell/NotFoundScreen.native.js.map +1 -1
  423. package/dist/esm/shell/SlugScreen.native.js.map +1 -1
  424. package/dist/esm/shell/WorkspaceSidebar.native.js.map +1 -1
  425. package/dist/esm/shell/useWorkspaces.native.js.map +1 -1
  426. package/dist/esm/shell/workspaceIcons.native.js.map +1 -1
  427. package/dist/esm/views/CalendarView.native.js.map +1 -1
  428. package/dist/esm/views/DashboardView.mjs +18 -14
  429. package/dist/esm/views/DashboardView.mjs.map +1 -1
  430. package/dist/esm/views/DashboardView.native.js +18 -14
  431. package/dist/esm/views/DashboardView.native.js.map +1 -1
  432. package/dist/esm/views/DoctypeViewScreen.native.js.map +1 -1
  433. package/dist/esm/views/ImageView.native.js.map +1 -1
  434. package/dist/esm/views/KanbanView.native.js.map +1 -1
  435. package/dist/esm/views/ReportView.native.js.map +1 -1
  436. package/dist/esm/views/TreeView.native.js.map +1 -1
  437. package/dist/esm/views/ViewHeader.native.js.map +1 -1
  438. package/dist/esm/views/ViewStates.native.js.map +1 -1
  439. package/dist/esm/views/ViewSwitcherMenu.native.js.map +1 -1
  440. package/dist/esm/views/calendar-field-selector.native.js.map +1 -1
  441. package/dist/esm/views/connection.native.js.map +1 -1
  442. package/dist/esm/views/dashboard-data.native.js.map +1 -1
  443. package/dist/esm/views/deskViewConfigs.native.js.map +1 -1
  444. package/dist/esm/views/kanban-board-controls.mjs +5 -4
  445. package/dist/esm/views/kanban-board-controls.mjs.map +1 -1
  446. package/dist/esm/views/kanban-board-controls.native.js +5 -4
  447. package/dist/esm/views/kanban-board-controls.native.js.map +1 -1
  448. package/dist/esm/views/kanban-field-picker.native.js.map +1 -1
  449. package/dist/esm/views/kanbanBoardOps.native.js.map +1 -1
  450. package/dist/esm/views/report-controls.mjs +5 -4
  451. package/dist/esm/views/report-controls.mjs.map +1 -1
  452. package/dist/esm/views/report-controls.native.js +5 -4
  453. package/dist/esm/views/report-controls.native.js.map +1 -1
  454. package/dist/esm/views/viewAvailability.native.js.map +1 -1
  455. package/dist/esm/views/viewMeta.native.js.map +1 -1
  456. package/dist/esm/workspace/WorkspaceChartBlock.mjs +5 -4
  457. package/dist/esm/workspace/WorkspaceChartBlock.mjs.map +1 -1
  458. package/dist/esm/workspace/WorkspaceChartBlock.native.js +5 -4
  459. package/dist/esm/workspace/WorkspaceChartBlock.native.js.map +1 -1
  460. package/dist/esm/workspace/WorkspaceGrid.native.js.map +1 -1
  461. package/dist/esm/workspace/WorkspaceLinkCard.mjs +2 -2
  462. package/dist/esm/workspace/WorkspaceLinkCard.mjs.map +1 -1
  463. package/dist/esm/workspace/WorkspaceLinkCard.native.js +2 -2
  464. package/dist/esm/workspace/WorkspaceLinkCard.native.js.map +1 -1
  465. package/dist/esm/workspace/WorkspaceLinkDirectory.mjs +2 -2
  466. package/dist/esm/workspace/WorkspaceLinkDirectory.mjs.map +1 -1
  467. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js +2 -2
  468. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  469. package/dist/esm/workspace/WorkspaceNumberCard.mjs +2 -3
  470. package/dist/esm/workspace/WorkspaceNumberCard.mjs.map +1 -1
  471. package/dist/esm/workspace/WorkspaceNumberCard.native.js +2 -3
  472. package/dist/esm/workspace/WorkspaceNumberCard.native.js.map +1 -1
  473. package/dist/esm/workspace/WorkspaceQuickList.mjs +2 -2
  474. package/dist/esm/workspace/WorkspaceQuickList.mjs.map +1 -1
  475. package/dist/esm/workspace/WorkspaceQuickList.native.js +2 -2
  476. package/dist/esm/workspace/WorkspaceQuickList.native.js.map +1 -1
  477. package/dist/esm/workspace/WorkspaceRecents.mjs +2 -2
  478. package/dist/esm/workspace/WorkspaceRecents.mjs.map +1 -1
  479. package/dist/esm/workspace/WorkspaceRecents.native.js +2 -2
  480. package/dist/esm/workspace/WorkspaceRecents.native.js.map +1 -1
  481. package/dist/esm/workspace/WorkspaceScreen.mjs +12 -22
  482. package/dist/esm/workspace/WorkspaceScreen.mjs.map +1 -1
  483. package/dist/esm/workspace/WorkspaceScreen.native.js +15 -23
  484. package/dist/esm/workspace/WorkspaceScreen.native.js.map +1 -1
  485. package/dist/esm/workspace/WorkspaceShortcut.mjs +4 -4
  486. package/dist/esm/workspace/WorkspaceShortcut.mjs.map +1 -1
  487. package/dist/esm/workspace/WorkspaceShortcut.native.js +4 -4
  488. package/dist/esm/workspace/WorkspaceShortcut.native.js.map +1 -1
  489. package/dist/esm/workspace/parseContent.native.js.map +1 -1
  490. package/dist/esm/workspace/types.native.js.map +1 -1
  491. package/dist/esm/workspace/useDashboardChart.mjs +1 -1
  492. package/dist/esm/workspace/useDashboardChart.mjs.map +1 -1
  493. package/dist/esm/workspace/useDashboardChart.native.js +1 -1
  494. package/dist/esm/workspace/useDashboardChart.native.js.map +1 -1
  495. package/dist/esm/workspace/useWorkspaceDoc.mjs +1 -1
  496. package/dist/esm/workspace/useWorkspaceDoc.mjs.map +1 -1
  497. package/dist/esm/workspace/useWorkspaceDoc.native.js +1 -1
  498. package/dist/esm/workspace/useWorkspaceDoc.native.js.map +1 -1
  499. package/dist/jsx/chrome/CommandPalette.mjs +2 -2
  500. package/dist/jsx/chrome/CommandPalette.mjs.map +1 -1
  501. package/dist/jsx/chrome/CommandPalette.native.js +2 -2
  502. package/dist/jsx/chrome/CommandPalette.native.js.map +1 -1
  503. package/dist/jsx/chrome/help-about-dialog.mjs +2 -1
  504. package/dist/jsx/chrome/help-about-dialog.mjs.map +1 -1
  505. package/dist/jsx/chrome/help-about-dialog.native.js +2 -1
  506. package/dist/jsx/chrome/help-about-dialog.native.js.map +1 -1
  507. package/dist/jsx/chrome/help-shortcuts-dialog.mjs +4 -4
  508. package/dist/jsx/chrome/help-shortcuts-dialog.mjs.map +1 -1
  509. package/dist/jsx/chrome/help-shortcuts-dialog.native.js +3 -3
  510. package/dist/jsx/chrome/help-shortcuts-dialog.native.js.map +1 -1
  511. package/dist/jsx/chrome/notifications-panel.mjs +5 -6
  512. package/dist/jsx/chrome/notifications-panel.mjs.map +1 -1
  513. package/dist/jsx/chrome/notifications-panel.native.js +4 -5
  514. package/dist/jsx/chrome/notifications-panel.native.js.map +1 -1
  515. package/dist/jsx/form/FormConnections.mjs +8 -8
  516. package/dist/jsx/form/FormConnections.mjs.map +1 -1
  517. package/dist/jsx/form/FormConnections.native.js +7 -7
  518. package/dist/jsx/form/FormConnections.native.js.map +1 -1
  519. package/dist/jsx/form/FormDialogs.mjs +7 -6
  520. package/dist/jsx/form/FormDialogs.mjs.map +1 -1
  521. package/dist/jsx/form/FormDialogs.native.js +6 -5
  522. package/dist/jsx/form/FormDialogs.native.js.map +1 -1
  523. package/dist/jsx/form/FormSidebarPanel.mjs +2 -2
  524. package/dist/jsx/form/FormSidebarPanel.mjs.map +1 -1
  525. package/dist/jsx/form/FormSidebarPanel.native.js +1 -1
  526. package/dist/jsx/form/FormSidebarPanel.native.js.map +1 -1
  527. package/dist/jsx/form/FormTimeline.mjs +4 -4
  528. package/dist/jsx/form/FormTimeline.mjs.map +1 -1
  529. package/dist/jsx/form/FormTimeline.native.js +4 -4
  530. package/dist/jsx/form/FormTimeline.native.js.map +1 -1
  531. package/dist/jsx/form/sidebar-dialogs.mjs +3 -2
  532. package/dist/jsx/form/sidebar-dialogs.mjs.map +1 -1
  533. package/dist/jsx/form/sidebar-dialogs.native.js +3 -2
  534. package/dist/jsx/form/sidebar-dialogs.native.js.map +1 -1
  535. package/dist/jsx/list/AddTagsDialog.mjs +2 -1
  536. package/dist/jsx/list/AddTagsDialog.mjs.map +1 -1
  537. package/dist/jsx/list/AddTagsDialog.native.js +2 -1
  538. package/dist/jsx/list/AddTagsDialog.native.js.map +1 -1
  539. package/dist/jsx/list/AssignToDialog.mjs +2 -1
  540. package/dist/jsx/list/AssignToDialog.mjs.map +1 -1
  541. package/dist/jsx/list/AssignToDialog.native.js +2 -1
  542. package/dist/jsx/list/AssignToDialog.native.js.map +1 -1
  543. package/dist/jsx/list/ListSidebar.mjs +2 -1
  544. package/dist/jsx/list/ListSidebar.mjs.map +1 -1
  545. package/dist/jsx/list/ListSidebar.native.js +2 -1
  546. package/dist/jsx/list/ListSidebar.native.js.map +1 -1
  547. package/dist/jsx/list/bulk-edit-dialog.mjs +2 -1
  548. package/dist/jsx/list/bulk-edit-dialog.mjs.map +1 -1
  549. package/dist/jsx/list/bulk-edit-dialog.native.js +2 -1
  550. package/dist/jsx/list/bulk-edit-dialog.native.js.map +1 -1
  551. package/dist/jsx/list/filter-editor.mjs +7 -5
  552. package/dist/jsx/list/filter-editor.mjs.map +1 -1
  553. package/dist/jsx/list/filter-editor.native.js +7 -5
  554. package/dist/jsx/list/filter-editor.native.js.map +1 -1
  555. package/dist/jsx/list/filter-saved.mjs +2 -1
  556. package/dist/jsx/list/filter-saved.mjs.map +1 -1
  557. package/dist/jsx/list/filter-saved.native.js +2 -1
  558. package/dist/jsx/list/filter-saved.native.js.map +1 -1
  559. package/dist/jsx/list/filter-sort.mjs +2 -1
  560. package/dist/jsx/list/filter-sort.mjs.map +1 -1
  561. package/dist/jsx/list/filter-sort.native.js +2 -1
  562. package/dist/jsx/list/filter-sort.native.js.map +1 -1
  563. package/dist/jsx/list/sidebar-section.mjs +8 -4
  564. package/dist/jsx/list/sidebar-section.mjs.map +1 -1
  565. package/dist/jsx/list/sidebar-section.native.js +7 -3
  566. package/dist/jsx/list/sidebar-section.native.js.map +1 -1
  567. package/dist/jsx/quickEntry/QuickEntryDialog.mjs +2 -2
  568. package/dist/jsx/quickEntry/QuickEntryDialog.mjs.map +1 -1
  569. package/dist/jsx/quickEntry/QuickEntryDialog.native.js +1 -1
  570. package/dist/jsx/quickEntry/QuickEntryDialog.native.js.map +1 -1
  571. package/dist/jsx/report/queryReportFilterBar.mjs +3 -3
  572. package/dist/jsx/report/queryReportFilterBar.mjs.map +1 -1
  573. package/dist/jsx/report/queryReportFilterBar.native.js +2 -2
  574. package/dist/jsx/report/queryReportFilterBar.native.js.map +1 -1
  575. package/dist/jsx/report/report-toolbar.mjs +5 -4
  576. package/dist/jsx/report/report-toolbar.mjs.map +1 -1
  577. package/dist/jsx/report/report-toolbar.native.js +5 -4
  578. package/dist/jsx/report/report-toolbar.native.js.map +1 -1
  579. package/dist/jsx/shared/measures.mjs +5 -0
  580. package/dist/jsx/shared/measures.mjs.map +1 -0
  581. package/dist/jsx/shared/measures.native.js +34 -0
  582. package/dist/jsx/shared/measures.native.js.map +1 -0
  583. package/dist/jsx/shell/BackofficeShell.mjs +2 -2
  584. package/dist/jsx/shell/BackofficeShell.mjs.map +1 -1
  585. package/dist/jsx/shell/BackofficeShell.native.js +1 -1
  586. package/dist/jsx/shell/BackofficeShell.native.js.map +1 -1
  587. package/dist/jsx/views/DashboardView.mjs +18 -14
  588. package/dist/jsx/views/DashboardView.mjs.map +1 -1
  589. package/dist/jsx/views/DashboardView.native.js +17 -13
  590. package/dist/jsx/views/DashboardView.native.js.map +1 -1
  591. package/dist/jsx/views/kanban-board-controls.mjs +5 -4
  592. package/dist/jsx/views/kanban-board-controls.mjs.map +1 -1
  593. package/dist/jsx/views/kanban-board-controls.native.js +4 -3
  594. package/dist/jsx/views/kanban-board-controls.native.js.map +1 -1
  595. package/dist/jsx/views/report-controls.mjs +5 -4
  596. package/dist/jsx/views/report-controls.mjs.map +1 -1
  597. package/dist/jsx/views/report-controls.native.js +5 -4
  598. package/dist/jsx/views/report-controls.native.js.map +1 -1
  599. package/dist/jsx/workspace/WorkspaceChartBlock.mjs +5 -4
  600. package/dist/jsx/workspace/WorkspaceChartBlock.mjs.map +1 -1
  601. package/dist/jsx/workspace/WorkspaceChartBlock.native.js +4 -3
  602. package/dist/jsx/workspace/WorkspaceChartBlock.native.js.map +1 -1
  603. package/dist/jsx/workspace/WorkspaceLinkCard.mjs +2 -2
  604. package/dist/jsx/workspace/WorkspaceLinkCard.mjs.map +1 -1
  605. package/dist/jsx/workspace/WorkspaceLinkCard.native.js +2 -2
  606. package/dist/jsx/workspace/WorkspaceLinkCard.native.js.map +1 -1
  607. package/dist/jsx/workspace/WorkspaceLinkDirectory.mjs +2 -2
  608. package/dist/jsx/workspace/WorkspaceLinkDirectory.mjs.map +1 -1
  609. package/dist/jsx/workspace/WorkspaceLinkDirectory.native.js +1 -1
  610. package/dist/jsx/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  611. package/dist/jsx/workspace/WorkspaceNumberCard.mjs +2 -3
  612. package/dist/jsx/workspace/WorkspaceNumberCard.mjs.map +1 -1
  613. package/dist/jsx/workspace/WorkspaceNumberCard.native.js +2 -3
  614. package/dist/jsx/workspace/WorkspaceNumberCard.native.js.map +1 -1
  615. package/dist/jsx/workspace/WorkspaceQuickList.mjs +2 -2
  616. package/dist/jsx/workspace/WorkspaceQuickList.mjs.map +1 -1
  617. package/dist/jsx/workspace/WorkspaceQuickList.native.js +1 -1
  618. package/dist/jsx/workspace/WorkspaceQuickList.native.js.map +1 -1
  619. package/dist/jsx/workspace/WorkspaceRecents.mjs +2 -2
  620. package/dist/jsx/workspace/WorkspaceRecents.mjs.map +1 -1
  621. package/dist/jsx/workspace/WorkspaceRecents.native.js +1 -1
  622. package/dist/jsx/workspace/WorkspaceRecents.native.js.map +1 -1
  623. package/dist/jsx/workspace/WorkspaceScreen.mjs +12 -22
  624. package/dist/jsx/workspace/WorkspaceScreen.mjs.map +1 -1
  625. package/dist/jsx/workspace/WorkspaceScreen.native.js +14 -22
  626. package/dist/jsx/workspace/WorkspaceScreen.native.js.map +1 -1
  627. package/dist/jsx/workspace/WorkspaceShortcut.mjs +4 -4
  628. package/dist/jsx/workspace/WorkspaceShortcut.mjs.map +1 -1
  629. package/dist/jsx/workspace/WorkspaceShortcut.native.js +3 -3
  630. package/dist/jsx/workspace/WorkspaceShortcut.native.js.map +1 -1
  631. package/dist/jsx/workspace/useDashboardChart.mjs +1 -1
  632. package/dist/jsx/workspace/useDashboardChart.mjs.map +1 -1
  633. package/dist/jsx/workspace/useDashboardChart.native.js +1 -1
  634. package/dist/jsx/workspace/useDashboardChart.native.js.map +1 -1
  635. package/dist/jsx/workspace/useWorkspaceDoc.mjs +1 -1
  636. package/dist/jsx/workspace/useWorkspaceDoc.mjs.map +1 -1
  637. package/dist/jsx/workspace/useWorkspaceDoc.native.js +1 -1
  638. package/dist/jsx/workspace/useWorkspaceDoc.native.js.map +1 -1
  639. package/package.json +12 -12
  640. package/src/chrome/CommandPalette.stories.tsx +7 -1
  641. package/src/chrome/CommandPalette.tsx +2 -2
  642. package/src/chrome/help-about-dialog.tsx +5 -1
  643. package/src/chrome/help-shortcuts-dialog.tsx +16 -4
  644. package/src/chrome/notifications-panel.tsx +11 -4
  645. package/src/desk/Desk.stories.tsx +7 -1
  646. package/src/desk/DeskSurface.stories.tsx +7 -1
  647. package/src/form/FormConnections.tsx +40 -5
  648. package/src/form/FormDialogs.tsx +18 -4
  649. package/src/form/FormSidebarPanel.tsx +5 -1
  650. package/src/form/FormTimeline.tsx +14 -2
  651. package/src/form/sidebar-dialogs.tsx +3 -2
  652. package/src/list/AddTagsDialog.tsx +2 -1
  653. package/src/list/AssignToDialog.tsx +2 -1
  654. package/src/list/ListSidebar.tsx +2 -1
  655. package/src/list/bulk-edit-dialog.tsx +2 -1
  656. package/src/list/filter-editor.tsx +29 -5
  657. package/src/list/filter-saved.tsx +11 -1
  658. package/src/list/filter-sort.tsx +7 -1
  659. package/src/list/sidebar-section.tsx +10 -2
  660. package/src/quickEntry/QuickEntryDialog.tsx +7 -2
  661. package/src/report/queryReportFilterBar.tsx +9 -3
  662. package/src/report/report-toolbar.tsx +5 -4
  663. package/src/shared/measures.ts +11 -0
  664. package/src/shell/BackofficeShell.tsx +14 -2
  665. package/src/shell/NotFoundScreen.stories.tsx +7 -1
  666. package/src/views/DashboardView.tsx +32 -8
  667. package/src/views/DoctypeViewScreen.stories.tsx +7 -1
  668. package/src/views/kanban-board-controls.tsx +12 -4
  669. package/src/views/report-controls.tsx +5 -4
  670. package/src/workspace/WorkspaceChartBlock.tsx +15 -4
  671. package/src/workspace/WorkspaceLinkCard.tsx +2 -2
  672. package/src/workspace/WorkspaceLinkDirectory.tsx +10 -2
  673. package/src/workspace/WorkspaceNumberCard.tsx +2 -2
  674. package/src/workspace/WorkspaceQuickList.tsx +2 -1
  675. package/src/workspace/WorkspaceRecents.tsx +11 -2
  676. package/src/workspace/WorkspaceScreen.tsx +17 -9
  677. package/src/workspace/WorkspaceShortcut.tsx +20 -3
  678. package/src/workspace/clientCache.auth.spec.ts +65 -0
  679. package/src/workspace/useDashboardChart.ts +1 -1
  680. package/src/workspace/useWorkspaceDoc.ts +1 -1
  681. package/types/chrome/help-about-dialog.d.ts.map +1 -1
  682. package/types/chrome/help-shortcuts-dialog.d.ts.map +1 -1
  683. package/types/chrome/notifications-panel.d.ts.map +1 -1
  684. package/types/form/FormConnections.d.ts.map +1 -1
  685. package/types/form/FormDialogs.d.ts.map +1 -1
  686. package/types/form/FormSidebarPanel.d.ts.map +1 -1
  687. package/types/form/FormTimeline.d.ts.map +1 -1
  688. package/types/form/sidebar-dialogs.d.ts.map +1 -1
  689. package/types/list/AddTagsDialog.d.ts.map +1 -1
  690. package/types/list/AssignToDialog.d.ts.map +1 -1
  691. package/types/list/ListSidebar.d.ts.map +1 -1
  692. package/types/list/bulk-edit-dialog.d.ts.map +1 -1
  693. package/types/list/filter-editor.d.ts.map +1 -1
  694. package/types/list/filter-saved.d.ts.map +1 -1
  695. package/types/list/filter-sort.d.ts.map +1 -1
  696. package/types/list/sidebar-section.d.ts.map +1 -1
  697. package/types/quickEntry/QuickEntryDialog.d.ts.map +1 -1
  698. package/types/report/queryReportFilterBar.d.ts.map +1 -1
  699. package/types/report/report-toolbar.d.ts.map +1 -1
  700. package/types/shared/measures.d.ts +3 -0
  701. package/types/shared/measures.d.ts.map +1 -0
  702. package/types/shell/BackofficeShell.d.ts.map +1 -1
  703. package/types/views/DashboardView.d.ts.map +1 -1
  704. package/types/views/kanban-board-controls.d.ts.map +1 -1
  705. package/types/views/report-controls.d.ts.map +1 -1
  706. package/types/workspace/WorkspaceChartBlock.d.ts.map +1 -1
  707. package/types/workspace/WorkspaceLinkDirectory.d.ts.map +1 -1
  708. package/types/workspace/WorkspaceQuickList.d.ts.map +1 -1
  709. package/types/workspace/WorkspaceRecents.d.ts.map +1 -1
  710. package/types/workspace/WorkspaceScreen.d.ts.map +1 -1
  711. package/types/workspace/WorkspaceShortcut.d.ts.map +1 -1
@@ -13,9 +13,15 @@
13
13
  import { Text, YStack } from "@multiplatform.one/components";
14
14
  import { InMemoryFixtureProvider } from "@multiplatform.one/frappe";
15
15
  import type { ReactNode } from "react";
16
+ import { sizeRecipeEscape } from "@multiplatform.one/theme";
16
17
  import { Desk } from "./Desk";
17
18
  import type { DeskSurfaceProps } from "./DeskSurface";
18
19
 
20
+ const frameHeight = sizeRecipeEscape(
21
+ 680,
22
+ "story canvas: a fixed-height frame for a full-height screen to fill",
23
+ );
24
+
19
25
  const meta = {
20
26
  title: "Screens/Backoffice/Desk",
21
27
  component: Desk,
@@ -176,7 +182,7 @@ const frappe = () => ({ baseURL: MOCK_HOST, fixtures: makeFixtures() });
176
182
 
177
183
  function Frame({ children }: { children: ReactNode }) {
178
184
  return (
179
- <YStack height={680} minHeight={0}>
185
+ <YStack height={frameHeight} minHeight={0}>
180
186
  {children}
181
187
  </YStack>
182
188
  );
@@ -12,11 +12,17 @@
12
12
  import { Text, YStack } from "@multiplatform.one/components";
13
13
  import { InMemoryFixtureProvider } from "@multiplatform.one/frappe";
14
14
  import type { ReactNode } from "react";
15
+ import { sizeRecipeEscape } from "@multiplatform.one/theme";
15
16
  import { BackofficeProvider } from "../config/BackofficeProvider";
16
17
  import { createMemoryNavigator } from "../navigation/navigator";
17
18
  import { DeskSurface, DeskSurfaceLoading, type DeskSurfaceProps } from "./DeskSurface";
18
19
  import type { DeskTarget } from "./target";
19
20
 
21
+ const frameHeight = sizeRecipeEscape(
22
+ 560,
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/DeskSurface",
22
28
  component: DeskSurface,
@@ -193,7 +199,7 @@ function Surface({ target, children }: { target?: DeskTarget; children?: ReactNo
193
199
  frappe={{ baseURL: MOCK_HOST, fixtures: makeFixtures() }}
194
200
  navigation={createMemoryNavigator("/backoffice")}
195
201
  >
196
- <YStack flex={1} height={560} minHeight={0}>
202
+ <YStack flex={1} height={frameHeight} minHeight={0}>
197
203
  {children ?? (target ? <DeskSurface target={target} /> : null)}
198
204
  </YStack>
199
205
  </BackofficeProvider>
@@ -15,6 +15,7 @@ import {
15
15
  import {
16
16
  ensureFocusVisibleRing,
17
17
  getGroupPosition,
18
+ sizeRecipeEscape,
18
19
  stackRadiusProps,
19
20
  useResolvedKnobs,
20
21
  } from "@multiplatform.one/theme";
@@ -108,7 +109,14 @@ function ConnectionRow({ link, docname, count, countsLoading, index, total }: Co
108
109
  {link.targetDoctype}
109
110
  </SizableText>
110
111
  {countsLoading ? (
111
- <Skeleton variant="rounded" width={28} height={18} />
112
+ <Skeleton
113
+ variant="rounded"
114
+ width="$2"
115
+ height={sizeRecipeEscape(
116
+ 18,
117
+ "loading bones sized to the connection card rows they stand in for",
118
+ )}
119
+ />
112
120
  ) : (
113
121
  <>
114
122
  {openText !== undefined && (
@@ -189,12 +197,39 @@ function ConnectionsSkeleton() {
189
197
  return (
190
198
  <Card flexBasis={240} flexGrow={1} flexShrink={1}>
191
199
  <YStack {...knobProps.panelPadding} {...knobProps.gap}>
192
- <Skeleton width={120} height={18} />
200
+ <Skeleton
201
+ width={sizeRecipeEscape(
202
+ 120,
203
+ "loading bones sized to the connection card rows they stand in for",
204
+ )}
205
+ height={sizeRecipeEscape(
206
+ 18,
207
+ "loading bones sized to the connection card rows they stand in for",
208
+ )}
209
+ />
193
210
  <Separator />
194
211
  <YStack gap="$2">
195
- <Skeleton width="82%" height={16} />
196
- <Skeleton width="64%" height={16} />
197
- <Skeleton width="73%" height={16} />
212
+ <Skeleton
213
+ width="82%"
214
+ height={sizeRecipeEscape(
215
+ 16,
216
+ "loading bones sized to the connection card rows they stand in for",
217
+ )}
218
+ />
219
+ <Skeleton
220
+ width="64%"
221
+ height={sizeRecipeEscape(
222
+ 16,
223
+ "loading bones sized to the connection card rows they stand in for",
224
+ )}
225
+ />
226
+ <Skeleton
227
+ width="73%"
228
+ height={sizeRecipeEscape(
229
+ 16,
230
+ "loading bones sized to the connection card rows they stand in for",
231
+ )}
232
+ />
198
233
  </YStack>
199
234
  </YStack>
200
235
  </Card>
@@ -13,12 +13,14 @@ import { Link } from "@multiplatform.one/frappe-ui";
13
13
  import {
14
14
  ensureFocusVisibleRing,
15
15
  getGroupPosition,
16
+ sizeRecipeEscape,
16
17
  stackRadiusProps,
17
18
  useResolvedKnobs,
18
19
  } from "@multiplatform.one/theme";
19
20
  import { useEffect, useMemo, useState } from "react";
20
21
  import { useTranslation } from "react-i18next";
21
22
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
23
+ import { dialogBodyMinWidth } from "../shared/measures";
22
24
 
23
25
  // ---------------------------------------------------------------------------
24
26
  // Rename
@@ -106,7 +108,7 @@ export function EmailDialog({ open, onOpenChange, defaultSubject, onSend }: Emai
106
108
  confirmDisabledReason={t("emailDisabled", "Recipients and subject are required")}
107
109
  onConfirm={() => onSend({ recipients: recipients.trim(), subject: subject.trim(), content })}
108
110
  >
109
- <YStack {...knobProps.gap} minWidth={280}>
111
+ <YStack {...knobProps.gap} minWidth={dialogBodyMinWidth}>
110
112
  <Input
111
113
  value={recipients}
112
114
  onChangeText={setRecipients}
@@ -163,7 +165,7 @@ export function AssignDialog({ open, onOpenChange, onAssign }: AssignDialogProps
163
165
  confirmDisabledReason={t("assignDisabled", "Pick a user first")}
164
166
  onConfirm={() => onAssign(user)}
165
167
  >
166
- <YStack {...knobProps.gap} minWidth={280}>
168
+ <YStack {...knobProps.gap} minWidth={dialogBodyMinWidth}>
167
169
  <Link
168
170
  label={t("assignTo", "Assign to")}
169
171
  doctype="User"
@@ -226,7 +228,14 @@ export function JumpToFieldDialog({ open, onOpenChange, fields, onJump }: JumpTo
226
228
  if (matches[0]) onJump(matches[0]);
227
229
  }}
228
230
  >
229
- <YStack {...knobProps.gap} minWidth={280} maxWidth={420}>
231
+ <YStack
232
+ {...knobProps.gap}
233
+ minWidth={dialogBodyMinWidth}
234
+ maxWidth={sizeRecipeEscape(
235
+ 420,
236
+ "jump-to-field: a scannable column width, and the match list scrolls past about six rows",
237
+ )}
238
+ >
230
239
  <Input
231
240
  value={query}
232
241
  onChangeText={setQuery}
@@ -236,7 +245,12 @@ export function JumpToFieldDialog({ open, onOpenChange, fields, onJump }: JumpTo
236
245
  autoFocus: true,
237
246
  }}
238
247
  />
239
- <ScrollView maxHeight={240}>
248
+ <ScrollView
249
+ maxHeight={sizeRecipeEscape(
250
+ 240,
251
+ "jump-to-field: a scannable column width, and the match list scrolls past about six rows",
252
+ )}
253
+ >
240
254
  <YStack>
241
255
  {matches.map((field, index) => {
242
256
  const position = getGroupPosition(index, matches.length);
@@ -50,6 +50,7 @@ import {
50
50
  import {
51
51
  ensureFocusVisibleRing,
52
52
  getGroupPosition,
53
+ sizeRecipeEscape,
53
54
  stackEdgeRadius,
54
55
  useResolvedKnobs,
55
56
  } from "@multiplatform.one/theme";
@@ -553,7 +554,10 @@ export function FormSidebarPanel({
553
554
  src={imageUrl}
554
555
  alt={t("documentImage", "Document image")}
555
556
  width="100%"
556
- height={140}
557
+ height={sizeRecipeEscape(
558
+ 140,
559
+ "document image: a fixed-height cover thumbnail in the sidebar",
560
+ )}
557
561
  objectFit="cover"
558
562
  {...knobProps.containerRadius}
559
563
  />
@@ -607,7 +607,13 @@ export function FormTimeline({
607
607
  gap="$3"
608
608
  alignItems="flex-start"
609
609
  >
610
- <YStack width={24} height={24} alignItems="center" justifyContent="center" opacity={0.6}>
610
+ <YStack
611
+ width="$1.5"
612
+ height="$1.5"
613
+ alignItems="center"
614
+ justifyContent="center"
615
+ opacity={0.6}
616
+ >
611
617
  {icon}
612
618
  </YStack>
613
619
  <XStack flex={1} gap="$1.5" alignItems="center" flexWrap="wrap" paddingTop={2}>
@@ -643,7 +649,13 @@ export function FormTimeline({
643
649
  gap="$3"
644
650
  alignItems="flex-start"
645
651
  >
646
- <YStack width={24} height={24} alignItems="center" justifyContent="center" opacity={0.6}>
652
+ <YStack
653
+ width="$1.5"
654
+ height="$1.5"
655
+ alignItems="center"
656
+ justifyContent="center"
657
+ opacity={0.6}
658
+ >
647
659
  {icon}
648
660
  </YStack>
649
661
  <YStack
@@ -12,6 +12,7 @@ import { useResolvedKnobs } from "@multiplatform.one/theme";
12
12
  import { useEffect, useState } from "react";
13
13
  import { useTranslation } from "react-i18next";
14
14
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
15
+ import { dialogBodyMinWidth } from "../shared/measures";
15
16
 
16
17
  export interface SidebarAssignDialogProps {
17
18
  open: boolean;
@@ -44,7 +45,7 @@ export function SidebarAssignDialog({ open, onOpenChange, onAssign }: SidebarAss
44
45
  confirmDisabledReason={t("assignDisabled", "Pick a user first")}
45
46
  onConfirm={() => onAssign(user, description.trim() || undefined)}
46
47
  >
47
- <YStack {...knobProps.gap} minWidth={280}>
48
+ <YStack {...knobProps.gap} minWidth={dialogBodyMinWidth}>
48
49
  <Link
49
50
  label={t("assignTo", "Assign to")}
50
51
  doctype="User"
@@ -94,7 +95,7 @@ export function SidebarShareDialog({ open, onOpenChange, onShare }: SidebarShare
94
95
  confirmDisabledReason={t("shareDisabled", "Pick a user first")}
95
96
  onConfirm={() => onShare(user, canWrite)}
96
97
  >
97
- <YStack {...knobProps.gap} minWidth={280}>
98
+ <YStack {...knobProps.gap} minWidth={dialogBodyMinWidth}>
98
99
  <Link
99
100
  label={t("shareWith", "Share with")}
100
101
  doctype="User"
@@ -9,6 +9,7 @@ import { useTranslation } from "react-i18next";
9
9
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
10
10
  import { useFrappeApp } from "../shared/useFrappeApp";
11
11
  import { bulkAddTag } from "./bulkActions";
12
+ import { dialogBodyMinWidth } from "../shared/measures";
12
13
 
13
14
  export interface AddTagsDialogProps {
14
15
  doctype: string;
@@ -82,7 +83,7 @@ export function AddTagsDialog({ doctype, names, open, onOpenChange, onDone }: Ad
82
83
  void handleConfirm();
83
84
  }}
84
85
  >
85
- <YStack gap="$3" minWidth={280}>
86
+ <YStack gap="$3" minWidth={dialogBodyMinWidth}>
86
87
  <Text color="$color11" fontSize="$3">
87
88
  {t("list.tagBody", {
88
89
  count: names.length,
@@ -8,6 +8,7 @@ import { useTranslation } from "react-i18next";
8
8
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
9
9
  import { useFrappeApp } from "../shared/useFrappeApp";
10
10
  import { bulkAssign } from "./bulkActions";
11
+ import { dialogBodyMinWidth } from "../shared/measures";
11
12
 
12
13
  export interface AssignToDialogProps {
13
14
  doctype: string;
@@ -74,7 +75,7 @@ export function AssignToDialog({
74
75
  void handleConfirm();
75
76
  }}
76
77
  >
77
- <YStack gap="$3" minWidth={280}>
78
+ <YStack gap="$3" minWidth={dialogBodyMinWidth}>
78
79
  <Text color="$color11" fontSize="$3">
79
80
  {t("list.assignBody", {
80
81
  count: names.length,
@@ -18,6 +18,7 @@
18
18
  import { Accordion, SizableText, YStack } from "@multiplatform.one/components";
19
19
  import { useCallback, useMemo } from "react";
20
20
  import { useTranslation } from "react-i18next";
21
+ import { sizeRecipeEscape } from "@multiplatform.one/theme";
21
22
  import { useBackofficeCapabilities } from "../config/BackofficeProvider";
22
23
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
23
24
  import type { FrappeFilter, FrappeFilters } from "../shared/types";
@@ -156,7 +157,7 @@ export function ListSidebar({
156
157
 
157
158
  return (
158
159
  <YStack
159
- width={200}
160
+ width={sizeRecipeEscape(200, "list sidebar: a fixed facet column beside the list")}
160
161
  paddingRight="$2"
161
162
  paddingBottom="$4"
162
163
  aria-label={t("list.sidebarLabel", "List filters sidebar")}
@@ -22,6 +22,7 @@ import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
22
22
  import type { DocFieldMeta, DoctypeMeta } from "../shared/useDoctypeMeta";
23
23
  import { useFrappeApp } from "../shared/useFrappeApp";
24
24
  import type { BulkResult } from "./bulkActions";
25
+ import { dialogBodyMinWidth } from "../shared/measures";
25
26
 
26
27
  /**
27
28
  * Fieldtypes with no stored value (layout / display / child rows) plus
@@ -274,7 +275,7 @@ export function BulkEditDialog({
274
275
  void handleConfirm();
275
276
  }}
276
277
  >
277
- <YStack gap="$3" minWidth={280}>
278
+ <YStack gap="$3" minWidth={dialogBodyMinWidth}>
278
279
  <Text color="$color11" fontSize="$3">
279
280
  {t("list.editBody", {
280
281
  count: names.length,
@@ -19,6 +19,7 @@ import { Button, Input, Select } from "@multiplatform.one/forms";
19
19
  import { FunnelIcon, PlusIcon, XIcon } from "@phosphor-icons/react";
20
20
  import { useMemo, useRef, useState } from "react";
21
21
  import { useTranslation } from "react-i18next";
22
+ import { sizeRecipeEscape } from "@multiplatform.one/theme";
22
23
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
23
24
  import type { FrappeFilters } from "../shared/types";
24
25
  import type { DoctypeMeta } from "../shared/useDoctypeMeta";
@@ -35,6 +36,7 @@ import {
35
36
  type FilterFieldDescriptor,
36
37
  type FilterRowDraft,
37
38
  } from "@multiplatform.one/frappe-ui";
39
+ import { overlayListMaxHeight } from "../shared/measures";
38
40
 
39
41
  export interface FilterEditorButtonProps {
40
42
  meta?: DoctypeMeta;
@@ -141,7 +143,7 @@ export function FilterEditorPanel({
141
143
  {t("list.filters.empty", "No filters applied")}
142
144
  </Text>
143
145
  ) : scrollRows ? (
144
- <ScrollView maxHeight={360}>{rowList}</ScrollView>
146
+ <ScrollView maxHeight={overlayListMaxHeight}>{rowList}</ScrollView>
145
147
  ) : (
146
148
  rowList
147
149
  )}
@@ -192,7 +194,13 @@ export function FilterEditorButton({ meta, filters, onFiltersChange }: FilterEdi
192
194
  </Popover.Trigger>
193
195
  <PopoverContent padding="$3">
194
196
  <Popover.Arrow borderWidth={1} borderColor="$borderColor" />
195
- <YStack width={620} maxWidth="100%">
197
+ <YStack
198
+ width={sizeRecipeEscape(
199
+ 620,
200
+ "filter editor: fixed panel and column widths so field, condition and value line up across rows",
201
+ )}
202
+ maxWidth="100%"
203
+ >
196
204
  <FilterEditorPanel
197
205
  key={openGen}
198
206
  meta={meta}
@@ -238,7 +246,12 @@ function FilterEditorRow({ row, fields, onChange, onRemove }: FilterEditorRowPro
238
246
  {/* Column wrappers: fields only stretch to the wrapper width through
239
247
  a column cross-axis on native (row wrappers leave them at
240
248
  intrinsic width — sliver bug in the list-tools sheet). */}
241
- <YStack width={170}>
249
+ <YStack
250
+ width={sizeRecipeEscape(
251
+ 170,
252
+ "filter editor: fixed panel and column widths so field, condition and value line up across rows",
253
+ )}
254
+ >
242
255
  <Select
243
256
  value={row.fieldname}
244
257
  onChange={(next) => {
@@ -257,7 +270,12 @@ function FilterEditorRow({ row, fields, onChange, onRemove }: FilterEditorRowPro
257
270
  aria-label={t("list.filters.field", "Filter field")}
258
271
  />
259
272
  </YStack>
260
- <YStack width={150}>
273
+ <YStack
274
+ width={sizeRecipeEscape(
275
+ 150,
276
+ "filter editor: fixed panel and column widths so field, condition and value line up across rows",
277
+ )}
278
+ >
261
279
  <Select
262
280
  value={row.operator}
263
281
  onChange={(next) => {
@@ -270,7 +288,13 @@ function FilterEditorRow({ row, fields, onChange, onRemove }: FilterEditorRowPro
270
288
  aria-label={t("list.filters.condition", "Condition")}
271
289
  />
272
290
  </YStack>
273
- <YStack flex={1} minWidth={170}>
291
+ <YStack
292
+ flex={1}
293
+ minWidth={sizeRecipeEscape(
294
+ 170,
295
+ "filter editor: fixed panel and column widths so field, condition and value line up across rows",
296
+ )}
297
+ >
274
298
  <FilterValueEditor row={row} field={field} onChange={onChange} />
275
299
  </YStack>
276
300
  <Button
@@ -23,6 +23,7 @@ import {
23
23
  } from "@multiplatform.one/table";
24
24
  import { useMemo, useState } from "react";
25
25
  import { useTranslation } from "react-i18next";
26
+ import { sizeRecipeEscape } from "@multiplatform.one/theme";
26
27
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
27
28
  import type { FrappeFilters } from "../shared/types";
28
29
  import { useFrappeApp } from "../shared/useFrappeApp";
@@ -162,7 +163,16 @@ export function SavedFiltersControl({
162
163
 
163
164
  return (
164
165
  <XStack gap="$2" alignItems="center">
165
- {savedFilters.length > 0 ? <XStack maxWidth={220}>{dropdown}</XStack> : null}
166
+ {savedFilters.length > 0 ? (
167
+ <XStack
168
+ maxWidth={sizeRecipeEscape(
169
+ 220,
170
+ "saved-filter picker: caps the trigger beside the filter chips",
171
+ )}
172
+ >
173
+ {dropdown}
174
+ </XStack>
175
+ ) : null}
166
176
  {filters.length > 0 ? (
167
177
  <FilterManager
168
178
  currentFilters={filters}
@@ -19,6 +19,7 @@ import { useMemo } from "react";
19
19
  import { useTranslation } from "react-i18next";
20
20
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
21
21
  import type { DoctypeMeta } from "../shared/useDoctypeMeta";
22
+ import { overlayListMaxHeight } from "../shared/measures";
22
23
 
23
24
  export interface SortControlProps {
24
25
  meta?: DoctypeMeta;
@@ -203,7 +204,12 @@ export function SortControl({
203
204
 
204
205
  return (
205
206
  <XStack gap="$1" alignItems="center">
206
- <DropdownMenu items={items} closeOnSelect placement="bottom-end" maxHeight={360}>
207
+ <DropdownMenu
208
+ items={items}
209
+ closeOnSelect
210
+ placement="bottom-end"
211
+ maxHeight={overlayListMaxHeight}
212
+ >
207
213
  <Button
208
214
  size="$3"
209
215
  chromeless
@@ -17,6 +17,8 @@ import {
17
17
  ensureFocusVisibleRing,
18
18
  getGroupPosition,
19
19
  hairline,
20
+ sizeRecipeEscape,
21
+ sizeRecipeForToken,
20
22
  stackRadiusProps,
21
23
  useGroupPosition,
22
24
  useResolvedKnobs,
@@ -129,12 +131,18 @@ export interface SidebarSectionSkeletonProps {
129
131
 
130
132
  export function SidebarSectionSkeleton({ rows = 3 }: SidebarSectionSkeletonProps) {
131
133
  const { t } = useTranslation(BACKOFFICE_I18N_NAMESPACE);
134
+ const { knobProps } = useResolvedKnobs();
135
+ const lineBone = sizeRecipeForToken(knobProps.sizeToken).fontSize;
132
136
  return (
133
137
  <YStack gap="$2" paddingVertical="$1" aria-busy aria-label={t("loading", "Loading")}>
134
138
  {Array.from({ length: rows }, (_, index) => (
135
139
  <XStack key={index} alignItems="center" justifyContent="space-between" gap="$2">
136
- <Skeleton width={`${55 + ((index * 13) % 25)}%`} height={14} />
137
- <Skeleton variant="rounded" width={26} height={14} />
140
+ <Skeleton width={`${55 + ((index * 13) % 25)}%`} height={lineBone} />
141
+ <Skeleton
142
+ variant="rounded"
143
+ width={sizeRecipeEscape(26, "count bone: the width of a two-digit count chip")}
144
+ height={lineBone}
145
+ />
138
146
  </XStack>
139
147
  ))}
140
148
  </YStack>
@@ -25,7 +25,7 @@ import { AsyncSkeleton, ScrollView, Text, XStack, YStack } from "@multiplatform.
25
25
  import { AdaptivePopup, Button } from "@multiplatform.one/forms";
26
26
  import type { FrappeDocData } from "@multiplatform.one/frappe";
27
27
  import { SchemaForm, useFrappeConfig } from "@multiplatform.one/frappe-ui";
28
- import { useResolvedKnobs } from "@multiplatform.one/theme";
28
+ import { sizeRecipeEscape, useResolvedKnobs } from "@multiplatform.one/theme";
29
29
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
30
30
  import { useTranslation } from "react-i18next";
31
31
  import { useBackofficeCapabilities } from "../config/BackofficeProvider";
@@ -290,7 +290,12 @@ export function QuickEntryDialog({
290
290
  >
291
291
  {showForm ? (
292
292
  <YStack {...knobProps.gap} testID="quick-entry-form">
293
- <ScrollView maxHeight={480}>
293
+ <ScrollView
294
+ maxHeight={sizeRecipeEscape(
295
+ 480,
296
+ "quick entry: the field list scrolls inside the dialog past this height",
297
+ )}
298
+ >
294
299
  <YStack {...knobProps.gap}>
295
300
  {/* A crashing field degrades to its inline error slot (per-field
296
301
  wrapper); a form-level crash costs the mini-form body only —
@@ -19,7 +19,7 @@
19
19
  // read_only filters pass `disabled` through so pickers open nothing.
20
20
  import { View, XStack, YStack, isWeb } from "@multiplatform.one/components";
21
21
  import { Button, Checkbox, Input, Select, zIndex } from "@multiplatform.one/forms";
22
- import { useResolvedKnobs } from "@multiplatform.one/theme";
22
+ import { sizeRecipeEscape, useResolvedKnobs } from "@multiplatform.one/theme";
23
23
  import { XIcon } from "@phosphor-icons/react";
24
24
  import { useCallback, useEffect, useRef, useState } from "react";
25
25
  import { useTranslation } from "react-i18next";
@@ -289,8 +289,14 @@ export function QueryReportFilterBar({ filterMeta, filters, onApply }: QueryRepo
289
289
  return (
290
290
  <YStack
291
291
  key={filter.fieldname}
292
- minWidth={180}
293
- maxWidth={280}
292
+ minWidth={sizeRecipeEscape(
293
+ 180,
294
+ "report filter bar: each filter flexes between a readable floor and a cap",
295
+ )}
296
+ maxWidth={sizeRecipeEscape(
297
+ 280,
298
+ "report filter bar: each filter flexes between a readable floor and a cap",
299
+ )}
294
300
  flex={1}
295
301
  overflow="visible"
296
302
  data-query-report-filter={filter.fieldname}
@@ -27,6 +27,7 @@ import { filterTupleLabel } from "@multiplatform.one/frappe-ui";
27
27
  import type { FrappeFilters } from "../shared/types";
28
28
  import type { SavedReportSummary } from "./savedReports";
29
29
  import type { ReportColumnDef } from "./reportViewModel";
30
+ import { dialogBodyMinWidth, overlayListMaxHeight } from "../shared/measures";
30
31
 
31
32
  export interface ReportToolbarProps {
32
33
  /** Every pickable column (reportColumnsFromMeta). */
@@ -113,7 +114,7 @@ export function ReportToolbar({
113
114
  })}
114
115
  </Button>
115
116
  </DropdownMenu.Trigger>
116
- <DropdownMenu.Content maxHeight={360}>
117
+ <DropdownMenu.Content maxHeight={overlayListMaxHeight}>
117
118
  <DropdownMenu.Label>{t("report.pickColumns", "Report columns")}</DropdownMenu.Label>
118
119
  {columns.map((column) => {
119
120
  const isSelected = selectedSet.has(column.fieldname);
@@ -153,7 +154,7 @@ export function ReportToolbar({
153
154
  : t("report.groupBy", "Group by")}
154
155
  </Button>
155
156
  </DropdownMenu.Trigger>
156
- <DropdownMenu.Content maxHeight={360}>
157
+ <DropdownMenu.Content maxHeight={overlayListMaxHeight}>
157
158
  <DropdownMenu.CheckboxItem
158
159
  checked={!groupBy}
159
160
  closeOnSelect
@@ -187,7 +188,7 @@ export function ReportToolbar({
187
188
  : t("report.savedReport", "Select Report")}
188
189
  </Button>
189
190
  </DropdownMenu.Trigger>
190
- <DropdownMenu.Content maxHeight={360}>
191
+ <DropdownMenu.Content maxHeight={overlayListMaxHeight}>
191
192
  <DropdownMenu.CheckboxItem
192
193
  checked={!currentReport}
193
194
  closeOnSelect
@@ -241,7 +242,7 @@ export function ReportToolbar({
241
242
  bare boolean leaked to the DOM (LC-46 class). */}
242
243
  <PopoverContent {...knobProps.panelPadding}>
243
244
  <Popover.Arrow borderWidth={1} borderColor="$borderColor" />
244
- <XStack gap="$2" alignItems="center" minWidth={280}>
245
+ <XStack gap="$2" alignItems="center" minWidth={dialogBodyMinWidth}>
245
246
  <YStack flex={1} minWidth={0}>
246
247
  <Input
247
248
  size="$3"
@@ -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>