@multiplatform.one/backoffice 7.34.4 → 7.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (810) hide show
  1. package/dist/cjs/chrome/BackofficeAwesomebar.cjs +8 -3
  2. package/dist/cjs/chrome/BackofficeAwesomebar.native.js +8 -3
  3. package/dist/cjs/chrome/BackofficeAwesomebar.native.js.map +1 -1
  4. package/dist/cjs/chrome/CommandPalette.cjs +19 -15
  5. package/dist/cjs/chrome/CommandPalette.native.js +21 -15
  6. package/dist/cjs/chrome/CommandPalette.native.js.map +1 -1
  7. package/dist/cjs/chrome/NotificationsButton.cjs +2 -1
  8. package/dist/cjs/chrome/NotificationsButton.native.js +2 -1
  9. package/dist/cjs/chrome/NotificationsButton.native.js.map +1 -1
  10. package/dist/cjs/chrome/UserMenu.cjs +143 -77
  11. package/dist/cjs/chrome/UserMenu.native.js +157 -90
  12. package/dist/cjs/chrome/UserMenu.native.js.map +1 -1
  13. package/dist/cjs/chrome/notifications-panel.cjs +3 -4
  14. package/dist/cjs/chrome/notifications-panel.native.js +3 -4
  15. package/dist/cjs/chrome/notifications-panel.native.js.map +1 -1
  16. package/dist/cjs/chrome/user-session.cjs +2 -1
  17. package/dist/cjs/chrome/user-session.native.js +2 -1
  18. package/dist/cjs/chrome/user-session.native.js.map +1 -1
  19. package/dist/cjs/config/BackofficeProvider.cjs +3 -1
  20. package/dist/cjs/config/BackofficeProvider.native.js +3 -1
  21. package/dist/cjs/config/BackofficeProvider.native.js.map +1 -1
  22. package/dist/cjs/config/capabilities.cjs +3 -0
  23. package/dist/cjs/config/capabilities.native.js +3 -0
  24. package/dist/cjs/config/capabilities.native.js.map +1 -1
  25. package/dist/cjs/desk/Desk.cjs +17 -0
  26. package/dist/cjs/desk/Desk.native.js +17 -0
  27. package/dist/cjs/desk/Desk.native.js.map +1 -1
  28. package/dist/cjs/desk/DeskSurface.cjs +10 -0
  29. package/dist/cjs/desk/DeskSurface.native.js +10 -0
  30. package/dist/cjs/desk/DeskSurface.native.js.map +1 -1
  31. package/dist/cjs/desk/resolveDeskPath.cjs +6 -0
  32. package/dist/cjs/desk/resolveDeskPath.native.js +6 -0
  33. package/dist/cjs/desk/resolveDeskPath.native.js.map +1 -1
  34. package/dist/cjs/desk/target.cjs +5 -0
  35. package/dist/cjs/desk/target.native.js +5 -0
  36. package/dist/cjs/desk/target.native.js.map +1 -1
  37. package/dist/cjs/form/DocFormScreen.cjs +24 -3
  38. package/dist/cjs/form/DocFormScreen.native.js +27 -6
  39. package/dist/cjs/form/DocFormScreen.native.js.map +1 -1
  40. package/dist/cjs/form/FormConnections.cjs +2 -2
  41. package/dist/cjs/form/FormConnections.native.js +2 -2
  42. package/dist/cjs/form/FormConnections.native.js.map +1 -1
  43. package/dist/cjs/form/FormErrorBoundary.cjs +1 -1
  44. package/dist/cjs/form/FormErrorBoundary.native.js +1 -1
  45. package/dist/cjs/form/FormErrorBoundary.native.js.map +1 -1
  46. package/dist/cjs/form/FormSidebarPanel.cjs +1 -1
  47. package/dist/cjs/form/FormSidebarPanel.native.js +1 -1
  48. package/dist/cjs/form/FormSidebarPanel.native.js.map +1 -1
  49. package/dist/cjs/form/FormTimeline.cjs +1 -2
  50. package/dist/cjs/form/FormTimeline.native.js +1 -2
  51. package/dist/cjs/form/FormTimeline.native.js.map +1 -1
  52. package/dist/cjs/form/FormToolbar.cjs +97 -87
  53. package/dist/cjs/form/FormToolbar.native.js +98 -94
  54. package/dist/cjs/form/FormToolbar.native.js.map +1 -1
  55. package/dist/cjs/formBuilder/DoctypePicker.cjs +89 -0
  56. package/dist/cjs/formBuilder/DoctypePicker.native.js +98 -0
  57. package/dist/cjs/formBuilder/DoctypePicker.native.js.map +1 -0
  58. package/dist/cjs/formBuilder/FieldPalette.cjs +148 -0
  59. package/dist/cjs/formBuilder/FieldPalette.native.js +165 -0
  60. package/dist/cjs/formBuilder/FieldPalette.native.js.map +1 -0
  61. package/dist/cjs/formBuilder/FieldPropertiesPanel.cjs +186 -0
  62. package/dist/cjs/formBuilder/FieldPropertiesPanel.native.js +237 -0
  63. package/dist/cjs/formBuilder/FieldPropertiesPanel.native.js.map +1 -0
  64. package/dist/cjs/formBuilder/FormBuilderCanvas.cjs +407 -0
  65. package/dist/cjs/formBuilder/FormBuilderCanvas.native.js +472 -0
  66. package/dist/cjs/formBuilder/FormBuilderCanvas.native.js.map +1 -0
  67. package/dist/cjs/formBuilder/FormBuilderScreen.cjs +448 -0
  68. package/dist/cjs/formBuilder/FormBuilderScreen.native.js +537 -0
  69. package/dist/cjs/formBuilder/FormBuilderScreen.native.js.map +1 -0
  70. package/dist/cjs/formBuilder/api.cjs +160 -0
  71. package/dist/cjs/formBuilder/api.native.js +193 -0
  72. package/dist/cjs/formBuilder/api.native.js.map +1 -0
  73. package/dist/cjs/formBuilder/fieldtypes.cjs +114 -0
  74. package/dist/cjs/formBuilder/fieldtypes.native.js +133 -0
  75. package/dist/cjs/formBuilder/fieldtypes.native.js.map +1 -0
  76. package/dist/cjs/formBuilder/index.cjs +68 -0
  77. package/dist/cjs/formBuilder/index.native.js +71 -0
  78. package/dist/cjs/formBuilder/index.native.js.map +1 -0
  79. package/dist/cjs/formBuilder/model.cjs +466 -0
  80. package/dist/cjs/formBuilder/model.native.js +714 -0
  81. package/dist/cjs/formBuilder/model.native.js.map +1 -0
  82. package/dist/cjs/formBuilder/useFormBuilderDrag.cjs +399 -0
  83. package/dist/cjs/formBuilder/useFormBuilderDrag.native.js +434 -0
  84. package/dist/cjs/formBuilder/useFormBuilderDrag.native.js.map +1 -0
  85. package/dist/cjs/i18n/en.cjs +294 -4
  86. package/dist/cjs/i18n/en.native.js +294 -4
  87. package/dist/cjs/i18n/en.native.js.map +1 -1
  88. package/dist/cjs/index.cjs +41 -1
  89. package/dist/cjs/index.native.js +40 -0
  90. package/dist/cjs/index.native.js.map +1 -1
  91. package/dist/cjs/list/DoctypeListScreen.cjs +138 -40
  92. package/dist/cjs/list/DoctypeListScreen.native.js +155 -55
  93. package/dist/cjs/list/DoctypeListScreen.native.js.map +1 -1
  94. package/dist/cjs/list/ListFilterBar.cjs +8 -4
  95. package/dist/cjs/list/ListFilterBar.native.js +8 -4
  96. package/dist/cjs/list/ListFilterBar.native.js.map +1 -1
  97. package/dist/cjs/list/ListSidebar.cjs +4 -3
  98. package/dist/cjs/list/ListSidebar.native.js +4 -3
  99. package/dist/cjs/list/ListSidebar.native.js.map +1 -1
  100. package/dist/cjs/list/filter-chips.cjs +10 -4
  101. package/dist/cjs/list/filter-chips.native.js +10 -4
  102. package/dist/cjs/list/filter-chips.native.js.map +1 -1
  103. package/dist/cjs/list/filter-editor.cjs +1 -10
  104. package/dist/cjs/list/filter-editor.native.js +1 -10
  105. package/dist/cjs/list/filter-editor.native.js.map +1 -1
  106. package/dist/cjs/list/filter-saved.cjs +0 -1
  107. package/dist/cjs/list/filter-saved.native.js +0 -1
  108. package/dist/cjs/list/filter-saved.native.js.map +1 -1
  109. package/dist/cjs/list/filter-sort.cjs +0 -1
  110. package/dist/cjs/list/filter-sort.native.js +0 -1
  111. package/dist/cjs/list/filter-sort.native.js.map +1 -1
  112. package/dist/cjs/list/filter-standard.cjs +1 -3
  113. package/dist/cjs/list/filter-standard.native.js +1 -3
  114. package/dist/cjs/list/filter-standard.native.js.map +1 -1
  115. package/dist/cjs/list/list-tools-sheet.cjs +10 -3
  116. package/dist/cjs/list/list-tools-sheet.native.js +12 -3
  117. package/dist/cjs/list/list-tools-sheet.native.js.map +1 -1
  118. package/dist/cjs/navigation/paths.cjs +5 -0
  119. package/dist/cjs/navigation/paths.native.js +7 -0
  120. package/dist/cjs/navigation/paths.native.js.map +1 -1
  121. package/dist/cjs/report/QueryReportScreen.cjs +1 -1
  122. package/dist/cjs/report/QueryReportScreen.native.js +1 -1
  123. package/dist/cjs/report/QueryReportScreen.native.js.map +1 -1
  124. package/dist/cjs/report/queryReportFilterBar.cjs +3 -8
  125. package/dist/cjs/report/queryReportFilterBar.native.js +3 -8
  126. package/dist/cjs/report/queryReportFilterBar.native.js.map +1 -1
  127. package/dist/cjs/shared/sessionUser.cjs +21 -3
  128. package/dist/cjs/shared/sessionUser.native.js +44 -3
  129. package/dist/cjs/shared/sessionUser.native.js.map +1 -1
  130. package/dist/cjs/shell/BackofficeShell.cjs +127 -88
  131. package/dist/cjs/shell/BackofficeShell.native.js +144 -101
  132. package/dist/cjs/shell/BackofficeShell.native.js.map +1 -1
  133. package/dist/cjs/shell/HomeRedirect.cjs +17 -21
  134. package/dist/cjs/shell/HomeRedirect.native.js +17 -20
  135. package/dist/cjs/shell/HomeRedirect.native.js.map +1 -1
  136. package/dist/cjs/shell/WorkspaceSidebar.cjs +53 -25
  137. package/dist/cjs/shell/WorkspaceSidebar.native.js +55 -25
  138. package/dist/cjs/shell/WorkspaceSidebar.native.js.map +1 -1
  139. package/dist/cjs/shell/shellSidebarSlot.cjs +31 -0
  140. package/dist/cjs/shell/shellSidebarSlot.native.js +34 -0
  141. package/dist/cjs/shell/shellSidebarSlot.native.js.map +1 -0
  142. package/dist/cjs/shell/useWorkspaces.cjs +23 -6
  143. package/dist/cjs/shell/useWorkspaces.native.js +25 -6
  144. package/dist/cjs/shell/useWorkspaces.native.js.map +1 -1
  145. package/dist/cjs/views/DashboardView.cjs +2 -2
  146. package/dist/cjs/views/DashboardView.native.js +2 -2
  147. package/dist/cjs/views/DashboardView.native.js.map +1 -1
  148. package/dist/cjs/views/ImageView.cjs +14 -5
  149. package/dist/cjs/views/ImageView.native.js +14 -5
  150. package/dist/cjs/views/ImageView.native.js.map +1 -1
  151. package/dist/cjs/views/ViewHeader.cjs +17 -6
  152. package/dist/cjs/views/ViewHeader.native.js +17 -6
  153. package/dist/cjs/views/ViewHeader.native.js.map +1 -1
  154. package/dist/cjs/views/ViewSwitcherMenu.cjs +10 -9
  155. package/dist/cjs/views/ViewSwitcherMenu.native.js +10 -9
  156. package/dist/cjs/views/ViewSwitcherMenu.native.js.map +1 -1
  157. package/dist/cjs/views/viewAvailability.cjs +17 -9
  158. package/dist/cjs/views/viewAvailability.native.js +18 -8
  159. package/dist/cjs/views/viewAvailability.native.js.map +1 -1
  160. package/dist/cjs/views/viewMeta.cjs +24 -1
  161. package/dist/cjs/views/viewMeta.native.js +30 -1
  162. package/dist/cjs/views/viewMeta.native.js.map +1 -1
  163. package/dist/cjs/workspace/WorkspaceChartBlock.cjs +1 -1
  164. package/dist/cjs/workspace/WorkspaceChartBlock.native.js +1 -1
  165. package/dist/cjs/workspace/WorkspaceChartBlock.native.js.map +1 -1
  166. package/dist/cjs/workspace/WorkspaceLinkDirectory.cjs +2 -2
  167. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js +2 -2
  168. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  169. package/dist/cjs/workspace/WorkspaceRecents.cjs +1 -1
  170. package/dist/cjs/workspace/WorkspaceRecents.native.js +1 -1
  171. package/dist/cjs/workspace/WorkspaceRecents.native.js.map +1 -1
  172. package/dist/cjs/workspace/WorkspaceShortcut.cjs +1 -1
  173. package/dist/cjs/workspace/WorkspaceShortcut.native.js +1 -1
  174. package/dist/cjs/workspace/WorkspaceShortcut.native.js.map +1 -1
  175. package/dist/esm/chrome/BackofficeAwesomebar.mjs +9 -4
  176. package/dist/esm/chrome/BackofficeAwesomebar.mjs.map +1 -1
  177. package/dist/esm/chrome/BackofficeAwesomebar.native.js +9 -4
  178. package/dist/esm/chrome/BackofficeAwesomebar.native.js.map +1 -1
  179. package/dist/esm/chrome/CommandPalette.mjs +21 -17
  180. package/dist/esm/chrome/CommandPalette.mjs.map +1 -1
  181. package/dist/esm/chrome/CommandPalette.native.js +23 -17
  182. package/dist/esm/chrome/CommandPalette.native.js.map +1 -1
  183. package/dist/esm/chrome/NotificationsButton.mjs +3 -2
  184. package/dist/esm/chrome/NotificationsButton.mjs.map +1 -1
  185. package/dist/esm/chrome/NotificationsButton.native.js +3 -2
  186. package/dist/esm/chrome/NotificationsButton.native.js.map +1 -1
  187. package/dist/esm/chrome/UserMenu.mjs +145 -79
  188. package/dist/esm/chrome/UserMenu.mjs.map +1 -1
  189. package/dist/esm/chrome/UserMenu.native.js +159 -92
  190. package/dist/esm/chrome/UserMenu.native.js.map +1 -1
  191. package/dist/esm/chrome/notifications-panel.mjs +4 -5
  192. package/dist/esm/chrome/notifications-panel.mjs.map +1 -1
  193. package/dist/esm/chrome/notifications-panel.native.js +4 -5
  194. package/dist/esm/chrome/notifications-panel.native.js.map +1 -1
  195. package/dist/esm/chrome/user-session.mjs +3 -2
  196. package/dist/esm/chrome/user-session.mjs.map +1 -1
  197. package/dist/esm/chrome/user-session.native.js +3 -2
  198. package/dist/esm/chrome/user-session.native.js.map +1 -1
  199. package/dist/esm/config/BackofficeProvider.mjs +3 -1
  200. package/dist/esm/config/BackofficeProvider.mjs.map +1 -1
  201. package/dist/esm/config/BackofficeProvider.native.js +3 -1
  202. package/dist/esm/config/BackofficeProvider.native.js.map +1 -1
  203. package/dist/esm/config/capabilities.mjs +3 -0
  204. package/dist/esm/config/capabilities.mjs.map +1 -1
  205. package/dist/esm/config/capabilities.native.js +3 -0
  206. package/dist/esm/config/capabilities.native.js.map +1 -1
  207. package/dist/esm/desk/Desk.mjs +17 -0
  208. package/dist/esm/desk/Desk.mjs.map +1 -1
  209. package/dist/esm/desk/Desk.native.js +17 -0
  210. package/dist/esm/desk/Desk.native.js.map +1 -1
  211. package/dist/esm/desk/DeskSurface.mjs +10 -0
  212. package/dist/esm/desk/DeskSurface.mjs.map +1 -1
  213. package/dist/esm/desk/DeskSurface.native.js +10 -0
  214. package/dist/esm/desk/DeskSurface.native.js.map +1 -1
  215. package/dist/esm/desk/resolveDeskPath.mjs +6 -0
  216. package/dist/esm/desk/resolveDeskPath.mjs.map +1 -1
  217. package/dist/esm/desk/resolveDeskPath.native.js +6 -0
  218. package/dist/esm/desk/resolveDeskPath.native.js.map +1 -1
  219. package/dist/esm/desk/target.mjs +5 -0
  220. package/dist/esm/desk/target.mjs.map +1 -1
  221. package/dist/esm/desk/target.native.js +5 -0
  222. package/dist/esm/desk/target.native.js.map +1 -1
  223. package/dist/esm/form/DocFormScreen.mjs +24 -3
  224. package/dist/esm/form/DocFormScreen.mjs.map +1 -1
  225. package/dist/esm/form/DocFormScreen.native.js +27 -6
  226. package/dist/esm/form/DocFormScreen.native.js.map +1 -1
  227. package/dist/esm/form/FormConnections.mjs +2 -2
  228. package/dist/esm/form/FormConnections.mjs.map +1 -1
  229. package/dist/esm/form/FormConnections.native.js +2 -2
  230. package/dist/esm/form/FormConnections.native.js.map +1 -1
  231. package/dist/esm/form/FormErrorBoundary.mjs +1 -1
  232. package/dist/esm/form/FormErrorBoundary.mjs.map +1 -1
  233. package/dist/esm/form/FormErrorBoundary.native.js +1 -1
  234. package/dist/esm/form/FormErrorBoundary.native.js.map +1 -1
  235. package/dist/esm/form/FormSidebarPanel.mjs +1 -1
  236. package/dist/esm/form/FormSidebarPanel.mjs.map +1 -1
  237. package/dist/esm/form/FormSidebarPanel.native.js +1 -1
  238. package/dist/esm/form/FormSidebarPanel.native.js.map +1 -1
  239. package/dist/esm/form/FormTimeline.mjs +1 -2
  240. package/dist/esm/form/FormTimeline.mjs.map +1 -1
  241. package/dist/esm/form/FormTimeline.native.js +1 -2
  242. package/dist/esm/form/FormTimeline.native.js.map +1 -1
  243. package/dist/esm/form/FormToolbar.mjs +99 -89
  244. package/dist/esm/form/FormToolbar.mjs.map +1 -1
  245. package/dist/esm/form/FormToolbar.native.js +100 -96
  246. package/dist/esm/form/FormToolbar.native.js.map +1 -1
  247. package/dist/esm/formBuilder/DoctypePicker.mjs +64 -0
  248. package/dist/esm/formBuilder/DoctypePicker.mjs.map +1 -0
  249. package/dist/esm/formBuilder/DoctypePicker.native.js +70 -0
  250. package/dist/esm/formBuilder/DoctypePicker.native.js.map +1 -0
  251. package/dist/esm/formBuilder/FieldPalette.mjs +123 -0
  252. package/dist/esm/formBuilder/FieldPalette.mjs.map +1 -0
  253. package/dist/esm/formBuilder/FieldPalette.native.js +137 -0
  254. package/dist/esm/formBuilder/FieldPalette.native.js.map +1 -0
  255. package/dist/esm/formBuilder/FieldPropertiesPanel.mjs +161 -0
  256. package/dist/esm/formBuilder/FieldPropertiesPanel.mjs.map +1 -0
  257. package/dist/esm/formBuilder/FieldPropertiesPanel.native.js +209 -0
  258. package/dist/esm/formBuilder/FieldPropertiesPanel.native.js.map +1 -0
  259. package/dist/esm/formBuilder/FormBuilderCanvas.mjs +382 -0
  260. package/dist/esm/formBuilder/FormBuilderCanvas.mjs.map +1 -0
  261. package/dist/esm/formBuilder/FormBuilderCanvas.native.js +444 -0
  262. package/dist/esm/formBuilder/FormBuilderCanvas.native.js.map +1 -0
  263. package/dist/esm/formBuilder/FormBuilderScreen.mjs +423 -0
  264. package/dist/esm/formBuilder/FormBuilderScreen.mjs.map +1 -0
  265. package/dist/esm/formBuilder/FormBuilderScreen.native.js +509 -0
  266. package/dist/esm/formBuilder/FormBuilderScreen.native.js.map +1 -0
  267. package/dist/esm/formBuilder/api.mjs +129 -0
  268. package/dist/esm/formBuilder/api.mjs.map +1 -0
  269. package/dist/esm/formBuilder/api.native.js +159 -0
  270. package/dist/esm/formBuilder/api.native.js.map +1 -0
  271. package/dist/esm/formBuilder/fieldtypes.mjs +82 -0
  272. package/dist/esm/formBuilder/fieldtypes.mjs.map +1 -0
  273. package/dist/esm/formBuilder/fieldtypes.native.js +98 -0
  274. package/dist/esm/formBuilder/fieldtypes.native.js.map +1 -0
  275. package/dist/esm/formBuilder/index.mjs +6 -0
  276. package/dist/esm/formBuilder/index.mjs.map +1 -0
  277. package/dist/esm/formBuilder/index.native.js +6 -0
  278. package/dist/esm/formBuilder/index.native.js.map +1 -0
  279. package/dist/esm/formBuilder/model.mjs +420 -0
  280. package/dist/esm/formBuilder/model.mjs.map +1 -0
  281. package/dist/esm/formBuilder/model.native.js +665 -0
  282. package/dist/esm/formBuilder/model.native.js.map +1 -0
  283. package/dist/esm/formBuilder/useFormBuilderDrag.mjs +374 -0
  284. package/dist/esm/formBuilder/useFormBuilderDrag.mjs.map +1 -0
  285. package/dist/esm/formBuilder/useFormBuilderDrag.native.js +406 -0
  286. package/dist/esm/formBuilder/useFormBuilderDrag.native.js.map +1 -0
  287. package/dist/esm/i18n/en.mjs +294 -4
  288. package/dist/esm/i18n/en.mjs.map +1 -1
  289. package/dist/esm/i18n/en.native.js +294 -4
  290. package/dist/esm/i18n/en.native.js.map +1 -1
  291. package/dist/esm/index.mjs +3 -2
  292. package/dist/esm/index.mjs.map +1 -1
  293. package/dist/esm/index.native.js +3 -2
  294. package/dist/esm/index.native.js.map +1 -1
  295. package/dist/esm/list/DoctypeListScreen.mjs +141 -43
  296. package/dist/esm/list/DoctypeListScreen.mjs.map +1 -1
  297. package/dist/esm/list/DoctypeListScreen.native.js +158 -58
  298. package/dist/esm/list/DoctypeListScreen.native.js.map +1 -1
  299. package/dist/esm/list/ListFilterBar.mjs +9 -5
  300. package/dist/esm/list/ListFilterBar.mjs.map +1 -1
  301. package/dist/esm/list/ListFilterBar.native.js +9 -5
  302. package/dist/esm/list/ListFilterBar.native.js.map +1 -1
  303. package/dist/esm/list/ListSidebar.mjs +4 -3
  304. package/dist/esm/list/ListSidebar.mjs.map +1 -1
  305. package/dist/esm/list/ListSidebar.native.js +4 -3
  306. package/dist/esm/list/ListSidebar.native.js.map +1 -1
  307. package/dist/esm/list/filter-chips.mjs +10 -4
  308. package/dist/esm/list/filter-chips.mjs.map +1 -1
  309. package/dist/esm/list/filter-chips.native.js +10 -4
  310. package/dist/esm/list/filter-chips.native.js.map +1 -1
  311. package/dist/esm/list/filter-editor.mjs +1 -10
  312. package/dist/esm/list/filter-editor.mjs.map +1 -1
  313. package/dist/esm/list/filter-editor.native.js +1 -10
  314. package/dist/esm/list/filter-editor.native.js.map +1 -1
  315. package/dist/esm/list/filter-saved.mjs +0 -1
  316. package/dist/esm/list/filter-saved.mjs.map +1 -1
  317. package/dist/esm/list/filter-saved.native.js +0 -1
  318. package/dist/esm/list/filter-saved.native.js.map +1 -1
  319. package/dist/esm/list/filter-sort.mjs +0 -1
  320. package/dist/esm/list/filter-sort.mjs.map +1 -1
  321. package/dist/esm/list/filter-sort.native.js +0 -1
  322. package/dist/esm/list/filter-sort.native.js.map +1 -1
  323. package/dist/esm/list/filter-standard.mjs +1 -3
  324. package/dist/esm/list/filter-standard.mjs.map +1 -1
  325. package/dist/esm/list/filter-standard.native.js +1 -3
  326. package/dist/esm/list/filter-standard.native.js.map +1 -1
  327. package/dist/esm/list/list-tools-sheet.mjs +10 -3
  328. package/dist/esm/list/list-tools-sheet.mjs.map +1 -1
  329. package/dist/esm/list/list-tools-sheet.native.js +12 -3
  330. package/dist/esm/list/list-tools-sheet.native.js.map +1 -1
  331. package/dist/esm/navigation/paths.mjs +5 -1
  332. package/dist/esm/navigation/paths.mjs.map +1 -1
  333. package/dist/esm/navigation/paths.native.js +7 -1
  334. package/dist/esm/navigation/paths.native.js.map +1 -1
  335. package/dist/esm/report/QueryReportScreen.mjs +1 -1
  336. package/dist/esm/report/QueryReportScreen.mjs.map +1 -1
  337. package/dist/esm/report/QueryReportScreen.native.js +1 -1
  338. package/dist/esm/report/QueryReportScreen.native.js.map +1 -1
  339. package/dist/esm/report/queryReportFilterBar.mjs +3 -8
  340. package/dist/esm/report/queryReportFilterBar.mjs.map +1 -1
  341. package/dist/esm/report/queryReportFilterBar.native.js +3 -8
  342. package/dist/esm/report/queryReportFilterBar.native.js.map +1 -1
  343. package/dist/esm/shared/sessionUser.mjs +21 -4
  344. package/dist/esm/shared/sessionUser.mjs.map +1 -1
  345. package/dist/esm/shared/sessionUser.native.js +44 -4
  346. package/dist/esm/shared/sessionUser.native.js.map +1 -1
  347. package/dist/esm/shell/BackofficeShell.mjs +130 -91
  348. package/dist/esm/shell/BackofficeShell.mjs.map +1 -1
  349. package/dist/esm/shell/BackofficeShell.native.js +147 -104
  350. package/dist/esm/shell/BackofficeShell.native.js.map +1 -1
  351. package/dist/esm/shell/HomeRedirect.mjs +20 -24
  352. package/dist/esm/shell/HomeRedirect.mjs.map +1 -1
  353. package/dist/esm/shell/HomeRedirect.native.js +20 -23
  354. package/dist/esm/shell/HomeRedirect.native.js.map +1 -1
  355. package/dist/esm/shell/WorkspaceSidebar.mjs +55 -27
  356. package/dist/esm/shell/WorkspaceSidebar.mjs.map +1 -1
  357. package/dist/esm/shell/WorkspaceSidebar.native.js +57 -27
  358. package/dist/esm/shell/WorkspaceSidebar.native.js.map +1 -1
  359. package/dist/esm/shell/shellSidebarSlot.mjs +3 -0
  360. package/dist/esm/shell/shellSidebarSlot.mjs.map +1 -0
  361. package/dist/esm/shell/shellSidebarSlot.native.js +3 -0
  362. package/dist/esm/shell/shellSidebarSlot.native.js.map +1 -0
  363. package/dist/esm/shell/useWorkspaces.mjs +25 -8
  364. package/dist/esm/shell/useWorkspaces.mjs.map +1 -1
  365. package/dist/esm/shell/useWorkspaces.native.js +27 -8
  366. package/dist/esm/shell/useWorkspaces.native.js.map +1 -1
  367. package/dist/esm/views/DashboardView.mjs +2 -2
  368. package/dist/esm/views/DashboardView.mjs.map +1 -1
  369. package/dist/esm/views/DashboardView.native.js +2 -2
  370. package/dist/esm/views/DashboardView.native.js.map +1 -1
  371. package/dist/esm/views/ImageView.mjs +15 -6
  372. package/dist/esm/views/ImageView.mjs.map +1 -1
  373. package/dist/esm/views/ImageView.native.js +15 -6
  374. package/dist/esm/views/ImageView.native.js.map +1 -1
  375. package/dist/esm/views/ViewHeader.mjs +18 -7
  376. package/dist/esm/views/ViewHeader.mjs.map +1 -1
  377. package/dist/esm/views/ViewHeader.native.js +18 -7
  378. package/dist/esm/views/ViewHeader.native.js.map +1 -1
  379. package/dist/esm/views/ViewSwitcherMenu.mjs +11 -10
  380. package/dist/esm/views/ViewSwitcherMenu.mjs.map +1 -1
  381. package/dist/esm/views/ViewSwitcherMenu.native.js +11 -10
  382. package/dist/esm/views/ViewSwitcherMenu.native.js.map +1 -1
  383. package/dist/esm/views/viewAvailability.mjs +17 -9
  384. package/dist/esm/views/viewAvailability.mjs.map +1 -1
  385. package/dist/esm/views/viewAvailability.native.js +18 -8
  386. package/dist/esm/views/viewAvailability.native.js.map +1 -1
  387. package/dist/esm/views/viewMeta.mjs +23 -1
  388. package/dist/esm/views/viewMeta.mjs.map +1 -1
  389. package/dist/esm/views/viewMeta.native.js +29 -1
  390. package/dist/esm/views/viewMeta.native.js.map +1 -1
  391. package/dist/esm/workspace/WorkspaceChartBlock.mjs +1 -1
  392. package/dist/esm/workspace/WorkspaceChartBlock.mjs.map +1 -1
  393. package/dist/esm/workspace/WorkspaceChartBlock.native.js +1 -1
  394. package/dist/esm/workspace/WorkspaceChartBlock.native.js.map +1 -1
  395. package/dist/esm/workspace/WorkspaceLinkDirectory.mjs +2 -2
  396. package/dist/esm/workspace/WorkspaceLinkDirectory.mjs.map +1 -1
  397. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js +2 -2
  398. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  399. package/dist/esm/workspace/WorkspaceRecents.mjs +2 -2
  400. package/dist/esm/workspace/WorkspaceRecents.mjs.map +1 -1
  401. package/dist/esm/workspace/WorkspaceRecents.native.js +2 -2
  402. package/dist/esm/workspace/WorkspaceRecents.native.js.map +1 -1
  403. package/dist/esm/workspace/WorkspaceShortcut.mjs +2 -2
  404. package/dist/esm/workspace/WorkspaceShortcut.mjs.map +1 -1
  405. package/dist/esm/workspace/WorkspaceShortcut.native.js +2 -2
  406. package/dist/esm/workspace/WorkspaceShortcut.native.js.map +1 -1
  407. package/dist/jsx/chrome/BackofficeAwesomebar.mjs +9 -4
  408. package/dist/jsx/chrome/BackofficeAwesomebar.mjs.map +1 -1
  409. package/dist/jsx/chrome/BackofficeAwesomebar.native.js +8 -3
  410. package/dist/jsx/chrome/BackofficeAwesomebar.native.js.map +1 -1
  411. package/dist/jsx/chrome/CommandPalette.mjs +21 -17
  412. package/dist/jsx/chrome/CommandPalette.mjs.map +1 -1
  413. package/dist/jsx/chrome/CommandPalette.native.js +21 -15
  414. package/dist/jsx/chrome/CommandPalette.native.js.map +1 -1
  415. package/dist/jsx/chrome/NotificationsButton.mjs +3 -2
  416. package/dist/jsx/chrome/NotificationsButton.mjs.map +1 -1
  417. package/dist/jsx/chrome/NotificationsButton.native.js +2 -1
  418. package/dist/jsx/chrome/NotificationsButton.native.js.map +1 -1
  419. package/dist/jsx/chrome/UserMenu.mjs +145 -79
  420. package/dist/jsx/chrome/UserMenu.mjs.map +1 -1
  421. package/dist/jsx/chrome/UserMenu.native.js +157 -90
  422. package/dist/jsx/chrome/UserMenu.native.js.map +1 -1
  423. package/dist/jsx/chrome/notifications-panel.mjs +4 -5
  424. package/dist/jsx/chrome/notifications-panel.mjs.map +1 -1
  425. package/dist/jsx/chrome/notifications-panel.native.js +3 -4
  426. package/dist/jsx/chrome/notifications-panel.native.js.map +1 -1
  427. package/dist/jsx/chrome/user-session.mjs +3 -2
  428. package/dist/jsx/chrome/user-session.mjs.map +1 -1
  429. package/dist/jsx/chrome/user-session.native.js +2 -1
  430. package/dist/jsx/chrome/user-session.native.js.map +1 -1
  431. package/dist/jsx/config/BackofficeProvider.mjs +3 -1
  432. package/dist/jsx/config/BackofficeProvider.mjs.map +1 -1
  433. package/dist/jsx/config/BackofficeProvider.native.js +3 -1
  434. package/dist/jsx/config/BackofficeProvider.native.js.map +1 -1
  435. package/dist/jsx/config/capabilities.mjs +3 -0
  436. package/dist/jsx/config/capabilities.mjs.map +1 -1
  437. package/dist/jsx/config/capabilities.native.js +3 -0
  438. package/dist/jsx/config/capabilities.native.js.map +1 -1
  439. package/dist/jsx/desk/Desk.mjs +17 -0
  440. package/dist/jsx/desk/Desk.mjs.map +1 -1
  441. package/dist/jsx/desk/Desk.native.js +17 -0
  442. package/dist/jsx/desk/Desk.native.js.map +1 -1
  443. package/dist/jsx/desk/DeskSurface.mjs +10 -0
  444. package/dist/jsx/desk/DeskSurface.mjs.map +1 -1
  445. package/dist/jsx/desk/DeskSurface.native.js +10 -0
  446. package/dist/jsx/desk/DeskSurface.native.js.map +1 -1
  447. package/dist/jsx/desk/resolveDeskPath.mjs +6 -0
  448. package/dist/jsx/desk/resolveDeskPath.mjs.map +1 -1
  449. package/dist/jsx/desk/resolveDeskPath.native.js +6 -0
  450. package/dist/jsx/desk/resolveDeskPath.native.js.map +1 -1
  451. package/dist/jsx/desk/target.mjs +5 -0
  452. package/dist/jsx/desk/target.mjs.map +1 -1
  453. package/dist/jsx/desk/target.native.js +5 -0
  454. package/dist/jsx/desk/target.native.js.map +1 -1
  455. package/dist/jsx/form/DocFormScreen.mjs +24 -3
  456. package/dist/jsx/form/DocFormScreen.mjs.map +1 -1
  457. package/dist/jsx/form/DocFormScreen.native.js +27 -6
  458. package/dist/jsx/form/DocFormScreen.native.js.map +1 -1
  459. package/dist/jsx/form/FormConnections.mjs +2 -2
  460. package/dist/jsx/form/FormConnections.mjs.map +1 -1
  461. package/dist/jsx/form/FormConnections.native.js +2 -2
  462. package/dist/jsx/form/FormConnections.native.js.map +1 -1
  463. package/dist/jsx/form/FormErrorBoundary.mjs +1 -1
  464. package/dist/jsx/form/FormErrorBoundary.mjs.map +1 -1
  465. package/dist/jsx/form/FormErrorBoundary.native.js +1 -1
  466. package/dist/jsx/form/FormErrorBoundary.native.js.map +1 -1
  467. package/dist/jsx/form/FormSidebarPanel.mjs +1 -1
  468. package/dist/jsx/form/FormSidebarPanel.mjs.map +1 -1
  469. package/dist/jsx/form/FormSidebarPanel.native.js +1 -1
  470. package/dist/jsx/form/FormSidebarPanel.native.js.map +1 -1
  471. package/dist/jsx/form/FormTimeline.mjs +1 -2
  472. package/dist/jsx/form/FormTimeline.mjs.map +1 -1
  473. package/dist/jsx/form/FormTimeline.native.js +1 -2
  474. package/dist/jsx/form/FormTimeline.native.js.map +1 -1
  475. package/dist/jsx/form/FormToolbar.mjs +99 -89
  476. package/dist/jsx/form/FormToolbar.mjs.map +1 -1
  477. package/dist/jsx/form/FormToolbar.native.js +98 -94
  478. package/dist/jsx/form/FormToolbar.native.js.map +1 -1
  479. package/dist/jsx/formBuilder/DoctypePicker.mjs +64 -0
  480. package/dist/jsx/formBuilder/DoctypePicker.mjs.map +1 -0
  481. package/dist/jsx/formBuilder/DoctypePicker.native.js +98 -0
  482. package/dist/jsx/formBuilder/DoctypePicker.native.js.map +1 -0
  483. package/dist/jsx/formBuilder/FieldPalette.mjs +123 -0
  484. package/dist/jsx/formBuilder/FieldPalette.mjs.map +1 -0
  485. package/dist/jsx/formBuilder/FieldPalette.native.js +165 -0
  486. package/dist/jsx/formBuilder/FieldPalette.native.js.map +1 -0
  487. package/dist/jsx/formBuilder/FieldPropertiesPanel.mjs +161 -0
  488. package/dist/jsx/formBuilder/FieldPropertiesPanel.mjs.map +1 -0
  489. package/dist/jsx/formBuilder/FieldPropertiesPanel.native.js +237 -0
  490. package/dist/jsx/formBuilder/FieldPropertiesPanel.native.js.map +1 -0
  491. package/dist/jsx/formBuilder/FormBuilderCanvas.mjs +382 -0
  492. package/dist/jsx/formBuilder/FormBuilderCanvas.mjs.map +1 -0
  493. package/dist/jsx/formBuilder/FormBuilderCanvas.native.js +472 -0
  494. package/dist/jsx/formBuilder/FormBuilderCanvas.native.js.map +1 -0
  495. package/dist/jsx/formBuilder/FormBuilderScreen.mjs +423 -0
  496. package/dist/jsx/formBuilder/FormBuilderScreen.mjs.map +1 -0
  497. package/dist/jsx/formBuilder/FormBuilderScreen.native.js +537 -0
  498. package/dist/jsx/formBuilder/FormBuilderScreen.native.js.map +1 -0
  499. package/dist/jsx/formBuilder/api.mjs +129 -0
  500. package/dist/jsx/formBuilder/api.mjs.map +1 -0
  501. package/dist/jsx/formBuilder/api.native.js +193 -0
  502. package/dist/jsx/formBuilder/api.native.js.map +1 -0
  503. package/dist/jsx/formBuilder/fieldtypes.mjs +82 -0
  504. package/dist/jsx/formBuilder/fieldtypes.mjs.map +1 -0
  505. package/dist/jsx/formBuilder/fieldtypes.native.js +133 -0
  506. package/dist/jsx/formBuilder/fieldtypes.native.js.map +1 -0
  507. package/dist/jsx/formBuilder/index.mjs +6 -0
  508. package/dist/jsx/formBuilder/index.mjs.map +1 -0
  509. package/dist/jsx/formBuilder/index.native.js +71 -0
  510. package/dist/jsx/formBuilder/index.native.js.map +1 -0
  511. package/dist/jsx/formBuilder/model.mjs +420 -0
  512. package/dist/jsx/formBuilder/model.mjs.map +1 -0
  513. package/dist/jsx/formBuilder/model.native.js +714 -0
  514. package/dist/jsx/formBuilder/model.native.js.map +1 -0
  515. package/dist/jsx/formBuilder/useFormBuilderDrag.mjs +374 -0
  516. package/dist/jsx/formBuilder/useFormBuilderDrag.mjs.map +1 -0
  517. package/dist/jsx/formBuilder/useFormBuilderDrag.native.js +434 -0
  518. package/dist/jsx/formBuilder/useFormBuilderDrag.native.js.map +1 -0
  519. package/dist/jsx/i18n/en.mjs +294 -4
  520. package/dist/jsx/i18n/en.mjs.map +1 -1
  521. package/dist/jsx/i18n/en.native.js +294 -4
  522. package/dist/jsx/i18n/en.native.js.map +1 -1
  523. package/dist/jsx/index.js +3 -2
  524. package/dist/jsx/index.js.map +1 -1
  525. package/dist/jsx/index.mjs +3 -2
  526. package/dist/jsx/index.mjs.map +1 -1
  527. package/dist/jsx/index.native.js +40 -0
  528. package/dist/jsx/index.native.js.map +1 -1
  529. package/dist/jsx/list/DoctypeListScreen.mjs +141 -43
  530. package/dist/jsx/list/DoctypeListScreen.mjs.map +1 -1
  531. package/dist/jsx/list/DoctypeListScreen.native.js +155 -55
  532. package/dist/jsx/list/DoctypeListScreen.native.js.map +1 -1
  533. package/dist/jsx/list/ListFilterBar.mjs +9 -5
  534. package/dist/jsx/list/ListFilterBar.mjs.map +1 -1
  535. package/dist/jsx/list/ListFilterBar.native.js +8 -4
  536. package/dist/jsx/list/ListFilterBar.native.js.map +1 -1
  537. package/dist/jsx/list/ListSidebar.mjs +4 -3
  538. package/dist/jsx/list/ListSidebar.mjs.map +1 -1
  539. package/dist/jsx/list/ListSidebar.native.js +4 -3
  540. package/dist/jsx/list/ListSidebar.native.js.map +1 -1
  541. package/dist/jsx/list/filter-chips.mjs +10 -4
  542. package/dist/jsx/list/filter-chips.mjs.map +1 -1
  543. package/dist/jsx/list/filter-chips.native.js +10 -4
  544. package/dist/jsx/list/filter-chips.native.js.map +1 -1
  545. package/dist/jsx/list/filter-editor.mjs +1 -10
  546. package/dist/jsx/list/filter-editor.mjs.map +1 -1
  547. package/dist/jsx/list/filter-editor.native.js +1 -10
  548. package/dist/jsx/list/filter-editor.native.js.map +1 -1
  549. package/dist/jsx/list/filter-saved.mjs +0 -1
  550. package/dist/jsx/list/filter-saved.mjs.map +1 -1
  551. package/dist/jsx/list/filter-saved.native.js +0 -1
  552. package/dist/jsx/list/filter-saved.native.js.map +1 -1
  553. package/dist/jsx/list/filter-sort.mjs +0 -1
  554. package/dist/jsx/list/filter-sort.mjs.map +1 -1
  555. package/dist/jsx/list/filter-sort.native.js +0 -1
  556. package/dist/jsx/list/filter-sort.native.js.map +1 -1
  557. package/dist/jsx/list/filter-standard.mjs +1 -3
  558. package/dist/jsx/list/filter-standard.mjs.map +1 -1
  559. package/dist/jsx/list/filter-standard.native.js +1 -3
  560. package/dist/jsx/list/filter-standard.native.js.map +1 -1
  561. package/dist/jsx/list/list-tools-sheet.mjs +10 -3
  562. package/dist/jsx/list/list-tools-sheet.mjs.map +1 -1
  563. package/dist/jsx/list/list-tools-sheet.native.js +12 -3
  564. package/dist/jsx/list/list-tools-sheet.native.js.map +1 -1
  565. package/dist/jsx/navigation/paths.mjs +5 -1
  566. package/dist/jsx/navigation/paths.mjs.map +1 -1
  567. package/dist/jsx/navigation/paths.native.js +7 -0
  568. package/dist/jsx/navigation/paths.native.js.map +1 -1
  569. package/dist/jsx/report/QueryReportScreen.mjs +1 -1
  570. package/dist/jsx/report/QueryReportScreen.mjs.map +1 -1
  571. package/dist/jsx/report/QueryReportScreen.native.js +1 -1
  572. package/dist/jsx/report/QueryReportScreen.native.js.map +1 -1
  573. package/dist/jsx/report/queryReportFilterBar.mjs +3 -8
  574. package/dist/jsx/report/queryReportFilterBar.mjs.map +1 -1
  575. package/dist/jsx/report/queryReportFilterBar.native.js +3 -8
  576. package/dist/jsx/report/queryReportFilterBar.native.js.map +1 -1
  577. package/dist/jsx/shared/sessionUser.mjs +21 -4
  578. package/dist/jsx/shared/sessionUser.mjs.map +1 -1
  579. package/dist/jsx/shared/sessionUser.native.js +44 -3
  580. package/dist/jsx/shared/sessionUser.native.js.map +1 -1
  581. package/dist/jsx/shell/BackofficeShell.mjs +130 -91
  582. package/dist/jsx/shell/BackofficeShell.mjs.map +1 -1
  583. package/dist/jsx/shell/BackofficeShell.native.js +144 -101
  584. package/dist/jsx/shell/BackofficeShell.native.js.map +1 -1
  585. package/dist/jsx/shell/HomeRedirect.mjs +20 -24
  586. package/dist/jsx/shell/HomeRedirect.mjs.map +1 -1
  587. package/dist/jsx/shell/HomeRedirect.native.js +17 -20
  588. package/dist/jsx/shell/HomeRedirect.native.js.map +1 -1
  589. package/dist/jsx/shell/WorkspaceSidebar.mjs +55 -27
  590. package/dist/jsx/shell/WorkspaceSidebar.mjs.map +1 -1
  591. package/dist/jsx/shell/WorkspaceSidebar.native.js +55 -25
  592. package/dist/jsx/shell/WorkspaceSidebar.native.js.map +1 -1
  593. package/dist/jsx/shell/shellSidebarSlot.mjs +3 -0
  594. package/dist/jsx/shell/shellSidebarSlot.mjs.map +1 -0
  595. package/dist/jsx/shell/shellSidebarSlot.native.js +34 -0
  596. package/dist/jsx/shell/shellSidebarSlot.native.js.map +1 -0
  597. package/dist/jsx/shell/useWorkspaces.mjs +25 -8
  598. package/dist/jsx/shell/useWorkspaces.mjs.map +1 -1
  599. package/dist/jsx/shell/useWorkspaces.native.js +25 -6
  600. package/dist/jsx/shell/useWorkspaces.native.js.map +1 -1
  601. package/dist/jsx/views/DashboardView.mjs +2 -2
  602. package/dist/jsx/views/DashboardView.mjs.map +1 -1
  603. package/dist/jsx/views/DashboardView.native.js +2 -2
  604. package/dist/jsx/views/DashboardView.native.js.map +1 -1
  605. package/dist/jsx/views/ImageView.mjs +15 -6
  606. package/dist/jsx/views/ImageView.mjs.map +1 -1
  607. package/dist/jsx/views/ImageView.native.js +14 -5
  608. package/dist/jsx/views/ImageView.native.js.map +1 -1
  609. package/dist/jsx/views/ViewHeader.mjs +18 -7
  610. package/dist/jsx/views/ViewHeader.mjs.map +1 -1
  611. package/dist/jsx/views/ViewHeader.native.js +17 -6
  612. package/dist/jsx/views/ViewHeader.native.js.map +1 -1
  613. package/dist/jsx/views/ViewSwitcherMenu.mjs +11 -10
  614. package/dist/jsx/views/ViewSwitcherMenu.mjs.map +1 -1
  615. package/dist/jsx/views/ViewSwitcherMenu.native.js +10 -9
  616. package/dist/jsx/views/ViewSwitcherMenu.native.js.map +1 -1
  617. package/dist/jsx/views/viewAvailability.mjs +17 -9
  618. package/dist/jsx/views/viewAvailability.mjs.map +1 -1
  619. package/dist/jsx/views/viewAvailability.native.js +18 -8
  620. package/dist/jsx/views/viewAvailability.native.js.map +1 -1
  621. package/dist/jsx/views/viewMeta.mjs +23 -1
  622. package/dist/jsx/views/viewMeta.mjs.map +1 -1
  623. package/dist/jsx/views/viewMeta.native.js +30 -1
  624. package/dist/jsx/views/viewMeta.native.js.map +1 -1
  625. package/dist/jsx/workspace/WorkspaceChartBlock.mjs +1 -1
  626. package/dist/jsx/workspace/WorkspaceChartBlock.mjs.map +1 -1
  627. package/dist/jsx/workspace/WorkspaceChartBlock.native.js +1 -1
  628. package/dist/jsx/workspace/WorkspaceChartBlock.native.js.map +1 -1
  629. package/dist/jsx/workspace/WorkspaceLinkDirectory.mjs +2 -2
  630. package/dist/jsx/workspace/WorkspaceLinkDirectory.mjs.map +1 -1
  631. package/dist/jsx/workspace/WorkspaceLinkDirectory.native.js +2 -2
  632. package/dist/jsx/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  633. package/dist/jsx/workspace/WorkspaceRecents.mjs +2 -2
  634. package/dist/jsx/workspace/WorkspaceRecents.mjs.map +1 -1
  635. package/dist/jsx/workspace/WorkspaceRecents.native.js +1 -1
  636. package/dist/jsx/workspace/WorkspaceRecents.native.js.map +1 -1
  637. package/dist/jsx/workspace/WorkspaceShortcut.mjs +2 -2
  638. package/dist/jsx/workspace/WorkspaceShortcut.mjs.map +1 -1
  639. package/dist/jsx/workspace/WorkspaceShortcut.native.js +1 -1
  640. package/dist/jsx/workspace/WorkspaceShortcut.native.js.map +1 -1
  641. package/package.json +12 -12
  642. package/src/backofficeScreens.designLaw.spec.ts +27 -0
  643. package/src/chrome/BackofficeAwesomebar.tsx +8 -4
  644. package/src/chrome/CommandPalette.spec.tsx +19 -0
  645. package/src/chrome/CommandPalette.tsx +38 -24
  646. package/src/chrome/NotificationsButton.screen.spec.tsx +1 -0
  647. package/src/chrome/NotificationsButton.tsx +3 -2
  648. package/src/chrome/UserMenu.screen.spec.tsx +77 -7
  649. package/src/chrome/UserMenu.tsx +173 -109
  650. package/src/chrome/notifications-panel.tsx +3 -6
  651. package/src/chrome/user-session.tsx +8 -2
  652. package/src/config/BackofficeProvider.spec.tsx +6 -2
  653. package/src/config/BackofficeProvider.tsx +10 -0
  654. package/src/config/capabilities.spec.ts +13 -0
  655. package/src/config/capabilities.ts +4 -0
  656. package/src/desk/Desk.spec.tsx +48 -0
  657. package/src/desk/Desk.tsx +25 -1
  658. package/src/desk/DeskSurface.spec.tsx +2 -0
  659. package/src/desk/DeskSurface.tsx +8 -0
  660. package/src/desk/resolveDeskPath.spec.ts +20 -0
  661. package/src/desk/resolveDeskPath.ts +6 -1
  662. package/src/desk/target.ts +3 -0
  663. package/src/form/DocFormScreen.guest.screen.spec.tsx +4 -0
  664. package/src/form/DocFormScreen.rights.spec.tsx +113 -8
  665. package/src/form/DocFormScreen.tsx +65 -44
  666. package/src/form/FormConnections.tsx +2 -2
  667. package/src/form/FormErrorBoundary.spec.tsx +2 -3
  668. package/src/form/FormErrorBoundary.tsx +1 -1
  669. package/src/form/FormSidebarPanel.tsx +1 -1
  670. package/src/form/FormTimeline.tsx +0 -1
  671. package/src/form/FormToolbar.screen.spec.tsx +90 -29
  672. package/src/form/FormToolbar.tsx +98 -132
  673. package/src/formBuilder/DoctypePicker.tsx +72 -0
  674. package/src/formBuilder/FieldPalette.tsx +119 -0
  675. package/src/formBuilder/FieldPropertiesPanel.tsx +213 -0
  676. package/src/formBuilder/FormBuilderCanvas.tsx +468 -0
  677. package/src/formBuilder/FormBuilderScreen.screen.spec.tsx +392 -0
  678. package/src/formBuilder/FormBuilderScreen.stories.tsx +122 -0
  679. package/src/formBuilder/FormBuilderScreen.tsx +491 -0
  680. package/src/formBuilder/api.spec.ts +301 -0
  681. package/src/formBuilder/api.ts +198 -0
  682. package/src/formBuilder/fieldtypes.ts +140 -0
  683. package/src/formBuilder/index.ts +58 -0
  684. package/src/formBuilder/model.spec.ts +401 -0
  685. package/src/formBuilder/model.ts +522 -0
  686. package/src/formBuilder/useFormBuilderDrag.spec.tsx +170 -0
  687. package/src/formBuilder/useFormBuilderDrag.ts +498 -0
  688. package/src/i18n/en.ts +293 -3
  689. package/src/index.ts +58 -1
  690. package/src/list/DoctypeListScreen.guest.screen.spec.tsx +63 -2
  691. package/src/list/DoctypeListScreen.tsx +204 -85
  692. package/src/list/ListFilterBar.screen.spec.tsx +1 -1
  693. package/src/list/ListFilterBar.tsx +16 -6
  694. package/src/list/ListSidebar.tsx +11 -2
  695. package/src/list/filter-chips.tsx +19 -4
  696. package/src/list/filter-editor.tsx +1 -10
  697. package/src/list/filter-saved.tsx +0 -1
  698. package/src/list/filter-sort.tsx +0 -1
  699. package/src/list/filter-standard.tsx +1 -3
  700. package/src/list/list-tools-sheet.tsx +32 -13
  701. package/src/navigation/paths.spec.ts +19 -0
  702. package/src/navigation/paths.ts +8 -0
  703. package/src/report/QueryReportScreen.tsx +1 -1
  704. package/src/report/queryReportFilterBar.tsx +0 -5
  705. package/src/shared/sessionUser.spec.tsx +14 -1
  706. package/src/shared/sessionUser.ts +27 -6
  707. package/src/shell/BackofficeShell.spec.tsx +93 -10
  708. package/src/shell/BackofficeShell.tsx +184 -116
  709. package/src/shell/HomeRedirect.spec.tsx +89 -0
  710. package/src/shell/HomeRedirect.tsx +31 -20
  711. package/src/shell/WorkspaceSidebar.spec.tsx +15 -0
  712. package/src/shell/WorkspaceSidebar.tsx +58 -29
  713. package/src/shell/shellSidebarSlot.spec.tsx +178 -0
  714. package/src/shell/shellSidebarSlot.tsx +7 -0
  715. package/src/shell/useWorkspaces.spec.tsx +45 -0
  716. package/src/shell/useWorkspaces.ts +24 -8
  717. package/src/views/DashboardView.tsx +2 -2
  718. package/src/views/ImageView.tsx +19 -3
  719. package/src/views/ViewHeader.tsx +13 -14
  720. package/src/views/ViewSwitcherMenu.spec.tsx +3 -0
  721. package/src/views/ViewSwitcherMenu.tsx +11 -10
  722. package/src/views/viewAvailability.spec.ts +45 -12
  723. package/src/views/viewAvailability.ts +27 -24
  724. package/src/views/viewMeta.ts +30 -0
  725. package/src/workspace/WorkspaceChartBlock.tsx +1 -1
  726. package/src/workspace/WorkspaceLinkDirectory.tsx +2 -2
  727. package/src/workspace/WorkspaceRecents.tsx +9 -2
  728. package/src/workspace/WorkspaceShortcut.tsx +12 -2
  729. package/types/chrome/BackofficeAwesomebar.d.ts.map +1 -1
  730. package/types/chrome/CommandPalette.d.ts +7 -1
  731. package/types/chrome/CommandPalette.d.ts.map +1 -1
  732. package/types/chrome/NotificationsButton.d.ts.map +1 -1
  733. package/types/chrome/UserMenu.d.ts.map +1 -1
  734. package/types/chrome/notifications-panel.d.ts.map +1 -1
  735. package/types/chrome/user-session.d.ts.map +1 -1
  736. package/types/config/BackofficeProvider.d.ts +7 -1
  737. package/types/config/BackofficeProvider.d.ts.map +1 -1
  738. package/types/config/capabilities.d.ts +3 -0
  739. package/types/config/capabilities.d.ts.map +1 -1
  740. package/types/desk/Desk.d.ts +2 -1
  741. package/types/desk/Desk.d.ts.map +1 -1
  742. package/types/desk/DeskSurface.d.ts.map +1 -1
  743. package/types/desk/resolveDeskPath.d.ts +4 -1
  744. package/types/desk/resolveDeskPath.d.ts.map +1 -1
  745. package/types/desk/target.d.ts +3 -0
  746. package/types/desk/target.d.ts.map +1 -1
  747. package/types/form/DocFormScreen.d.ts +1 -1
  748. package/types/form/DocFormScreen.d.ts.map +1 -1
  749. package/types/form/FormTimeline.d.ts.map +1 -1
  750. package/types/form/FormToolbar.d.ts +5 -32
  751. package/types/form/FormToolbar.d.ts.map +1 -1
  752. package/types/formBuilder/DoctypePicker.d.ts +2 -0
  753. package/types/formBuilder/DoctypePicker.d.ts.map +1 -0
  754. package/types/formBuilder/FieldPalette.d.ts +6 -0
  755. package/types/formBuilder/FieldPalette.d.ts.map +1 -0
  756. package/types/formBuilder/FieldPropertiesPanel.d.ts +10 -0
  757. package/types/formBuilder/FieldPropertiesPanel.d.ts.map +1 -0
  758. package/types/formBuilder/FormBuilderCanvas.d.ts +17 -0
  759. package/types/formBuilder/FormBuilderCanvas.d.ts.map +1 -0
  760. package/types/formBuilder/FormBuilderScreen.d.ts +7 -0
  761. package/types/formBuilder/FormBuilderScreen.d.ts.map +1 -0
  762. package/types/formBuilder/api.d.ts +32 -0
  763. package/types/formBuilder/api.d.ts.map +1 -0
  764. package/types/formBuilder/fieldtypes.d.ts +21 -0
  765. package/types/formBuilder/fieldtypes.d.ts.map +1 -0
  766. package/types/formBuilder/index.d.ts +5 -0
  767. package/types/formBuilder/index.d.ts.map +1 -0
  768. package/types/formBuilder/model.d.ts +76 -0
  769. package/types/formBuilder/model.d.ts.map +1 -0
  770. package/types/formBuilder/useFormBuilderDrag.d.ts +44 -0
  771. package/types/formBuilder/useFormBuilderDrag.d.ts.map +1 -0
  772. package/types/i18n/en.d.ts +293 -3
  773. package/types/i18n/en.d.ts.map +1 -1
  774. package/types/index.d.ts +4 -3
  775. package/types/index.d.ts.map +1 -1
  776. package/types/list/DoctypeListScreen.d.ts.map +1 -1
  777. package/types/list/ListFilterBar.d.ts +10 -4
  778. package/types/list/ListFilterBar.d.ts.map +1 -1
  779. package/types/list/ListSidebar.d.ts +7 -1
  780. package/types/list/ListSidebar.d.ts.map +1 -1
  781. package/types/list/filter-chips.d.ts +9 -1
  782. package/types/list/filter-chips.d.ts.map +1 -1
  783. package/types/list/filter-saved.d.ts.map +1 -1
  784. package/types/list/filter-sort.d.ts.map +1 -1
  785. package/types/list/list-tools-sheet.d.ts +9 -1
  786. package/types/list/list-tools-sheet.d.ts.map +1 -1
  787. package/types/navigation/paths.d.ts +3 -0
  788. package/types/navigation/paths.d.ts.map +1 -1
  789. package/types/report/queryReportFilterBar.d.ts.map +1 -1
  790. package/types/shared/sessionUser.d.ts +1 -0
  791. package/types/shared/sessionUser.d.ts.map +1 -1
  792. package/types/shell/BackofficeShell.d.ts +6 -1
  793. package/types/shell/BackofficeShell.d.ts.map +1 -1
  794. package/types/shell/HomeRedirect.d.ts +3 -1
  795. package/types/shell/HomeRedirect.d.ts.map +1 -1
  796. package/types/shell/WorkspaceSidebar.d.ts.map +1 -1
  797. package/types/shell/shellSidebarSlot.d.ts +2 -0
  798. package/types/shell/shellSidebarSlot.d.ts.map +1 -0
  799. package/types/shell/useWorkspaces.d.ts +4 -0
  800. package/types/shell/useWorkspaces.d.ts.map +1 -1
  801. package/types/views/ImageView.d.ts.map +1 -1
  802. package/types/views/ViewHeader.d.ts +1 -10
  803. package/types/views/ViewHeader.d.ts.map +1 -1
  804. package/types/views/ViewSwitcherMenu.d.ts.map +1 -1
  805. package/types/views/viewAvailability.d.ts +12 -15
  806. package/types/views/viewAvailability.d.ts.map +1 -1
  807. package/types/views/viewMeta.d.ts +10 -0
  808. package/types/views/viewMeta.d.ts.map +1 -1
  809. package/types/workspace/WorkspaceRecents.d.ts.map +1 -1
  810. package/types/workspace/WorkspaceShortcut.d.ts.map +1 -1
@@ -9,6 +9,7 @@
9
9
  import React from "react";
10
10
  import {
11
11
  AsyncBoundary,
12
+ Chip,
12
13
  EmptyState,
13
14
  H1,
14
15
  PageHeader,
@@ -23,7 +24,7 @@ import { useLayoutSizeClass, useResolvedKnobs } from "@multiplatform.one/theme";
23
24
  // Catalog action Button — `accent` renders the active accent intent, the
24
25
  // house expression of the one page primary (LC-05 ONE-EMPHASIS; quick entry
25
26
  // "Create" precedent). The components Button above stays for neutral chrome.
26
- import { Button as ActionButton } from "@multiplatform.one/forms";
27
+ import { Button as ActionButton, SearchInput } from "@multiplatform.one/forms";
27
28
  import {
28
29
  ArrowSquareOutIcon,
29
30
  ArrowsClockwiseIcon,
@@ -34,13 +35,11 @@ import {
34
35
  FrappeTable,
35
36
  buildListColumns,
36
37
  docFieldsToFilterFields,
37
- isPermissionError,
38
38
  listFieldsToFetch,
39
39
  refusalReason,
40
40
  sessionDocRights,
41
41
  useFrappeAggregate,
42
42
  useFrappeConfig,
43
- useRecordShape,
44
43
  type ListDoc,
45
44
  type ListRow,
46
45
  } from "@multiplatform.one/frappe-ui";
@@ -73,8 +72,9 @@ import { useRecentVisit } from "../shared/useRecentVisit";
73
72
  // via the UI-free fieldPermissions module; drives list column pruning.
74
73
  import { buildPermLevelMatrix } from "../form/fieldPermissions";
75
74
  import type { FrappeFilters } from "../shared/types";
76
- import { type DoctypeMeta, useDoctypeMeta } from "../shared/useDoctypeMeta";
75
+ import { type DoctypeMeta } from "../shared/useDoctypeMeta";
77
76
  import { deriveAvailableViews } from "../views/viewAvailability";
77
+ import { useViewSource } from "../views/viewMeta";
78
78
  import { ViewSwitcherMenu } from "../views/ViewSwitcherMenu";
79
79
  import { useFrappeApp } from "../shared/useFrappeApp";
80
80
  import { useUserRoles } from "../shared/useUserRoles";
@@ -92,7 +92,10 @@ import {
92
92
  } from "./filterConversion";
93
93
  import { toggleFacetFilter } from "./sidebar-stats";
94
94
  import { ListFilterBar } from "./ListFilterBar";
95
+ import { ListToolsButton } from "./list-tools-sheet";
96
+ import { SortControl } from "./filter-sort";
95
97
  import { ListSidebar } from "./ListSidebar";
98
+ import { useShellSidebarPanel } from "../shell/shellSidebarSlot";
96
99
  import {
97
100
  parseFiltersParam,
98
101
  parseSortParam,
@@ -217,37 +220,14 @@ export function DoctypeListScreen({
217
220
  useRecentVisit(fixtureMode ? undefined : { label: doctype, path: paths.list(doctype) });
218
221
 
219
222
  const {
220
- meta: loadedMeta,
223
+ meta,
221
224
  loading: metaLoading,
222
225
  error: metaError,
223
226
  reload: reloadMeta,
224
- } = useDoctypeMeta(metaOverride ? undefined : doctype);
225
- const meta = metaOverride ?? loadedMeta;
226
- // Guest is refused getdoctype while it may still read the rows (LC-96):
227
- // the list then lays them out from one record's own fields, read-only, and
228
- // offers nothing that needs the meta.
229
- const metaRefused = !meta && metaError !== undefined && isPermissionError(metaError);
230
- const recordShape = useRecordShape(config, doctype, metaRefused);
231
- const layoutMeta = useMemo<DoctypeMeta | undefined>(
232
- () =>
233
- meta ??
234
- (recordShape.fields
235
- ? {
236
- name: doctype,
237
- fields: [...recordShape.fields]
238
- .sort(
239
- (a, b) =>
240
- Number(b.fieldname === "title" || b.fieldname === "name") -
241
- Number(a.fieldname === "title" || a.fieldname === "name"),
242
- )
243
- .map((field, index) => ({
244
- ...field,
245
- in_list_view: index < 6 ? (1 as const) : (0 as const),
246
- })),
247
- }
248
- : undefined),
249
- [meta, recordShape.fields, doctype],
250
- );
227
+ metaRefused,
228
+ recordShape,
229
+ layoutMeta,
230
+ } = useViewSource(doctype, metaOverride);
251
231
 
252
232
  // Operational errors reach the host bus (never replaces the inline state).
253
233
  useEffect(() => {
@@ -295,6 +275,11 @@ export function DoctypeListScreen({
295
275
  const [quickEntryOpen, setQuickEntryOpen] = useState(false);
296
276
  const [pendingDialog, setPendingDialog] = useState<PendingDialog>(null);
297
277
  const [likeOverrides, setLikeOverrides] = useState<Record<string, boolean>>({});
278
+ // Compact search box: one `like` tuple on the title field (desk's ID
279
+ // search), riding the hidden always-ANDed channel so it never becomes a
280
+ // chip or a `?f=` entry.
281
+ const [searchText, setSearchText] = useState("");
282
+ const [loadedCount, setLoadedCount] = useState(0);
298
283
  // Last page size the user picked — survives the filter/sort remounts.
299
284
  const pageSizeRef = useRef(pageSize ?? PAGE_SIZES[0]);
300
285
 
@@ -303,7 +288,13 @@ export function DoctypeListScreen({
303
288
  // value-keyed so unstable array literals from the host don't churn.
304
289
  // The ambient desk scope (GL-5, the tenant seam) joins the same channel.
305
290
  const deskScope = useDeskScope();
306
- const fixedFiltersKey = JSON.stringify([...deskScope, ...(fixedFilters ?? [])]);
291
+ const searchTerm = searchText.trim();
292
+ const searchField = meta?.title_field || "name";
293
+ const fixedFiltersKey = JSON.stringify([
294
+ ...deskScope,
295
+ ...(fixedFilters ?? []),
296
+ ...(searchTerm ? [[searchField, "like", `%${searchTerm}%`]] : []),
297
+ ]);
307
298
  const fixedTuples = useMemo(
308
299
  () => JSON.parse(fixedFiltersKey) as FrappeFilters,
309
300
  [fixedFiltersKey],
@@ -373,6 +364,7 @@ export function DoctypeListScreen({
373
364
  if (doctypeChanged) {
374
365
  setSort(parseSortParam(sortParam) ?? null);
375
366
  setLikeOverrides({});
367
+ setSearchText("");
376
368
  return;
377
369
  }
378
370
  if (sortParamChanged) {
@@ -383,6 +375,15 @@ export function DoctypeListScreen({
383
375
  }
384
376
  }, [doctype, filtersParam, sortParam, withFixed]);
385
377
 
378
+ // A new search term re-seeds the count/facet mirror right away instead of
379
+ // waiting for the table's next state echo.
380
+ const lastSearchTerm = useRef(searchTerm);
381
+ useEffect(() => {
382
+ if (lastSearchTerm.current === searchTerm) return;
383
+ lastSearchTerm.current = searchTerm;
384
+ setEffectiveFilters(withFixed(baseFiltersRef.current));
385
+ }, [searchTerm, withFixed]);
386
+
386
387
  const sortField = sort?.field ?? meta?.sort_field ?? "modified";
387
388
  const sortOrder = sort?.order ?? (meta?.sort_order?.toUpperCase() === "ASC" ? "asc" : "desc");
388
389
  // Effective sort as the table sees it (state ?? meta default) — the
@@ -508,6 +509,8 @@ export function DoctypeListScreen({
508
509
  .map((row) => (row as { name?: unknown }).name)
509
510
  .filter((value): value is string => typeof value === "string" && value.length > 0),
510
511
  );
512
+ const shown = state.data?.length ?? 0;
513
+ if (shown > 0) setLoadedCount((previous) => (previous === shown ? previous : shown));
511
514
  const nextFilters = tableStateToFrappeFilters(state);
512
515
  setEffectiveFilters((previous) =>
513
516
  previous && sameFilters(previous, nextFilters) ? previous : nextFilters,
@@ -824,18 +827,28 @@ export function DoctypeListScreen({
824
827
  // Selection + the bulk bar ride the bulkActions capability as one unit.
825
828
  const bulkActionsEnabled = capabilities.bulkActions.enabled && !metaRefused;
826
829
 
827
- // View switcher options: meta-derived availability (viewAvailability.ts
828
- // documents each view's desk precondition) ∩ capability allowlist ∩ the
829
- // `views` prop. "list" is the current view, so it always survives.
830
830
  const availableViews = useMemo(() => {
831
831
  if (!capabilities.views.enabled) return [];
832
- const permitted = viewsAllowlist
832
+ const allow = viewsAllowlist
833
833
  ? capabilities.views.allow.filter((view) => viewsAllowlist.includes(view))
834
834
  : capabilities.views.allow;
835
- // Without meta only the report lays itself out from the rows (LC-96).
836
- const allow = metaRefused ? permitted.filter((view) => view === "report") : permitted;
837
- return deriveAvailableViews(meta, { current: "list", allow });
838
- }, [meta, metaRefused, capabilities.views.enabled, capabilities.views.allow, viewsAllowlist]);
835
+ return deriveAvailableViews(
836
+ meta
837
+ ? { kind: "meta", meta, rights }
838
+ : metaRefused && recordShape.fields
839
+ ? { kind: "record", fields: recordShape.fields }
840
+ : undefined,
841
+ { allow },
842
+ );
843
+ }, [
844
+ meta,
845
+ rights,
846
+ metaRefused,
847
+ recordShape.fields,
848
+ capabilities.views.enabled,
849
+ capabilities.views.allow,
850
+ viewsAllowlist,
851
+ ]);
839
852
 
840
853
  // Remount ONLY on a doctype swap (different columns/meta). Filter, sort,
841
854
  // and refresh changes reconcile IN PLACE through the table's
@@ -858,6 +871,27 @@ export function DoctypeListScreen({
858
871
  [initialTableFilters, controlledSorting],
859
872
  );
860
873
 
874
+ // ONE-SIDEBAR (LC-101): the facet / group-by panel is never a second
875
+ // column. Under a BackofficeShell it stacks below the workspace nav in the
876
+ // shell's one sidebar column (collapsible group); on phones it rides the
877
+ // tools sheet instead. Without a shell it stands as the page's only
878
+ // sidebar column.
879
+ const facetPanelWanted = sidebarVisible && !metaRefused;
880
+ const facetPanel = (fill: boolean) => (
881
+ <ListSidebar
882
+ fill={fill}
883
+ doctype={doctype}
884
+ meta={meta}
885
+ filters={currentFilters}
886
+ onFiltersChange={handleBaseFiltersChange}
887
+ />
888
+ );
889
+ const shellTookPanel = useShellSidebarPanel(
890
+ facetPanelWanted && !compactChrome
891
+ ? { title: t("list.tools.groupBy", "Group by"), content: facetPanel(true) }
892
+ : null,
893
+ );
894
+
861
895
  if (metaError && !meta && !metaRefused) {
862
896
  return (
863
897
  <YStack flex={1}>
@@ -919,14 +953,15 @@ export function DoctypeListScreen({
919
953
  // orphan next to a seven-segment switcher.
920
954
  const listToolbar = (
921
955
  <XStack gap="$1.5" alignItems="center" flexWrap="wrap">
922
- {!compactChrome && !metaRefused && (
956
+ {/* The page's own column toggle: only when no shell took the panel
957
+ (the shell's stacked group collapses itself), never on phones
958
+ (the tools sheet carries the facets there). */}
959
+ {!compactChrome && !metaRefused && !shellTookPanel && (
923
960
  <ActionButton
924
961
  size="$3"
925
962
  circular
926
963
  chromeless
927
964
  icon={SidebarSimpleIcon}
928
- display="none"
929
- $sm={{ display: "flex" }}
930
965
  onPress={() => setSidebarVisible((visible) => !visible)}
931
966
  aria-expanded={sidebarVisible}
932
967
  aria-label={
@@ -938,7 +973,7 @@ export function DoctypeListScreen({
938
973
  )}
939
974
  {!metaRefused && (
940
975
  <ListFilterBar
941
- compact={compactChrome}
976
+ collapsed={compactChrome}
942
977
  showChips={false}
943
978
  doctype={doctype}
944
979
  meta={meta}
@@ -948,6 +983,7 @@ export function DoctypeListScreen({
948
983
  sortOrder={sortOrder}
949
984
  onSortChange={handleSortChange}
950
985
  likedByUser={sessionUser}
986
+ facets={facetPanelWanted ? facetPanel(true) : undefined}
951
987
  />
952
988
  )}
953
989
  <ViewSwitcherMenu views={availableViews} current="list" onViewChange={handleViewChange} />
@@ -988,53 +1024,137 @@ export function DoctypeListScreen({
988
1024
  </XStack>
989
1025
  );
990
1026
 
1027
+ // Phone chrome: the banner already names the doctype, so the list opens on
1028
+ // search + New, the filter pills, then the range readout beside sort.
1029
+ const rangeText =
1030
+ countText && count.value && loadedCount > 0
1031
+ ? t("list.resultRange", {
1032
+ shown: Math.min(loadedCount, count.value),
1033
+ count: count.value,
1034
+ defaultValue: "1–{{shown}} of {{count}}",
1035
+ })
1036
+ : countText;
1037
+ const compactHeader = (
1038
+ <YStack gap="$3">
1039
+ <XStack gap="$2" alignItems="center">
1040
+ <YStack flex={1} minWidth={0}>
1041
+ <SearchInput
1042
+ key={doctype}
1043
+ defaultValue=""
1044
+ onSearch={setSearchText}
1045
+ clearable
1046
+ placeholder={t("list.searchPlaceholder", {
1047
+ defaultValue: "Search {{doctype}}",
1048
+ doctype,
1049
+ })}
1050
+ aria-label={t("list.searchPlaceholder", {
1051
+ defaultValue: "Search {{doctype}}",
1052
+ doctype,
1053
+ })}
1054
+ />
1055
+ </YStack>
1056
+ {showNew && (
1057
+ <ActionButton
1058
+ accent
1059
+ icon={PlusIcon}
1060
+ onPress={() => setQuickEntryOpen(true)}
1061
+ aria-label={t("list.new", {
1062
+ defaultValue: "New {{doctype}}",
1063
+ doctype,
1064
+ })}
1065
+ testID="backoffice-list-new"
1066
+ />
1067
+ )}
1068
+ </XStack>
1069
+ {!metaRefused && (
1070
+ <FilterChips
1071
+ outlined
1072
+ meta={meta}
1073
+ filters={baseFilters}
1074
+ onFiltersChange={handleBaseFiltersChange}
1075
+ trailing={
1076
+ <ListToolsButton
1077
+ doctype={doctype}
1078
+ meta={meta}
1079
+ filters={baseFilters}
1080
+ onFiltersChange={handleBaseFiltersChange}
1081
+ sortField={sortField}
1082
+ sortOrder={sortOrder}
1083
+ onSortChange={handleSortChange}
1084
+ renderTrigger={(open) => (
1085
+ <Chip size="$4" variant="outlined" color="gray" icon={<PlusIcon />} onPress={open}>
1086
+ {t("list.filters.filter", "Filter")}
1087
+ </Chip>
1088
+ )}
1089
+ />
1090
+ }
1091
+ />
1092
+ )}
1093
+ <XStack alignItems="center" gap="$2">
1094
+ <Paragraph size="$3" color="$color10" margin={0} flexShrink={1} numberOfLines={1}>
1095
+ {rangeText ?? ""}
1096
+ </Paragraph>
1097
+ <XStack alignItems="center" gap="$1" flexShrink={0}>
1098
+ <ViewSwitcherMenu views={availableViews} current="list" onViewChange={handleViewChange} />
1099
+ {!metaRefused && (
1100
+ <SortControl
1101
+ meta={meta}
1102
+ sortField={sortField}
1103
+ sortOrder={sortOrder}
1104
+ onSortChange={handleSortChange}
1105
+ />
1106
+ )}
1107
+ </XStack>
1108
+ </XStack>
1109
+ </YStack>
1110
+ );
1111
+
991
1112
  return (
992
1113
  <YStack flex={1} minHeight={0} {...knobProps.gap} {...knobProps.panelPadding}>
993
- <PageHeader
994
- gap="$2"
995
- heading={
996
- <XStack gap="$2" alignItems="baseline" flexWrap="wrap">
997
- <H1
998
- {...knobProps.pageTitle}
999
- {...knobProps.heading}
1000
- margin={0}
1001
- flexShrink={1}
1002
- minWidth={0}
1003
- >
1004
- {doctype}
1005
- </H1>
1006
- {countText ? (
1007
- <Paragraph size="$2" color="$color10" margin={0}>
1008
- {countText}
1009
- </Paragraph>
1010
- ) : null}
1011
- </XStack>
1012
- }
1013
- actions={listToolbar}
1014
- >
1015
- {/* Shared chips readout (MOD-04 honest state): the table's own
1114
+ {compactChrome ? (
1115
+ compactHeader
1116
+ ) : (
1117
+ <PageHeader
1118
+ gap="$2"
1119
+ heading={
1120
+ <XStack gap="$2" alignItems="baseline" flexWrap="wrap">
1121
+ <H1
1122
+ {...knobProps.pageTitle}
1123
+ {...knobProps.heading}
1124
+ margin={0}
1125
+ flexShrink={1}
1126
+ minWidth={0}
1127
+ >
1128
+ {doctype}
1129
+ </H1>
1130
+ {countText ? (
1131
+ <Paragraph size="$2" color="$color10" margin={0}>
1132
+ {countText}
1133
+ </Paragraph>
1134
+ ) : null}
1135
+ </XStack>
1136
+ }
1137
+ actions={listToolbar}
1138
+ >
1139
+ {/* Shared chips readout (MOD-04 honest state): the table's own
1016
1140
  chips row is suppressed, so the list chrome owns them. Renders
1017
1141
  nothing while no filters apply. */}
1018
- <FilterChips meta={meta} filters={baseFilters} onFiltersChange={handleBaseFiltersChange} />
1019
- </PageHeader>
1142
+ <FilterChips
1143
+ meta={meta}
1144
+ filters={baseFilters}
1145
+ onFiltersChange={handleBaseFiltersChange}
1146
+ />
1147
+ </PageHeader>
1148
+ )}
1020
1149
 
1021
1150
  {(() => {
1022
1151
  const listBody = (
1023
1152
  <XStack flexGrow={1} flexShrink={0} flexBasis="auto" gap="$2" alignItems="stretch">
1024
- {/* Facet sidebar needs bench RPCs (fixture mode hides it) and is
1025
- hidden on narrow viewports (< $sm) like desk. MOD-04 keeps it:
1026
- facet clicks toggle tuples through the same baseFilters
1027
- channel (handleBaseFiltersChange) — counts are informative,
1028
- the chips row is the shared readout. */}
1029
- {sidebarVisible && !metaRefused && (
1030
- <YStack display="none" $sm={{ display: "flex" }}>
1031
- <ListSidebar
1032
- doctype={doctype}
1033
- meta={meta}
1034
- filters={currentFilters}
1035
- onFiltersChange={handleBaseFiltersChange}
1036
- />
1037
- </YStack>
1153
+ {/* LC-101: only when no shell took the panel (no shell above,
1154
+ or it is withdrawn) does it stand as the page's one sidebar
1155
+ column. Phones get it in the tools sheet instead. */}
1156
+ {facetPanelWanted && !shellTookPanel && !compactChrome && (
1157
+ <YStack>{facetPanel(false)}</YStack>
1038
1158
  )}
1039
1159
  <YStack flex={1} minWidth={0}>
1040
1160
  {showCreateFirst ? (
@@ -1086,7 +1206,6 @@ export function DoctypeListScreen({
1086
1206
  enablePagination={!fixtureMode}
1087
1207
  paginationMode="infinite"
1088
1208
  fetchTotalCount={false}
1089
- compact
1090
1209
  // ONE FILTER SYSTEM (MOD-04 / LC-16): the list chrome is
1091
1210
  // the single filtering authority; tuples reach the table
1092
1211
  // through controlledState (in-place adoption — no remount).
@@ -169,7 +169,7 @@ describe("ListFilterBar", () => {
169
169
  });
170
170
 
171
171
  it("collapses behind one counted Filter button on compact viewports", async () => {
172
- renderBar({ compact: true, filters: [["status", "=", "Open"]] });
172
+ renderBar({ collapsed: true, filters: [["status", "=", "Open"]] });
173
173
  await act(async () => {});
174
174
  expect(screen.getByRole("button", { name: "Filter" }).textContent).toContain("Filter (1)");
175
175
  expect(screen.queryByText("Status = Open")).toBeNull();
@@ -21,7 +21,8 @@
21
21
  import { XStack, YStack } from "@multiplatform.one/components";
22
22
  import { Button } from "@multiplatform.one/forms";
23
23
  import { HeartIcon } from "@phosphor-icons/react";
24
- import { useResolvedKnobs } from "@multiplatform.one/theme";
24
+ import type { ReactNode } from "react";
25
+ import { useResolvedKnobs, useLayoutSizeClass } from "@multiplatform.one/theme";
25
26
  import { useTranslation } from "react-i18next";
26
27
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
27
28
  import type { FrappeFilter, FrappeFilters } from "../shared/types";
@@ -43,11 +44,11 @@ export interface ListFilterBarProps {
43
44
  sortOrder?: "asc" | "desc";
44
45
  onSortChange?: (field: string, order: "asc" | "desc") => void;
45
46
  /**
46
- * Compact viewports collapse the whole bar behind one badge-counted
47
+ * Narrow viewports collapse the whole bar behind one badge-counted
47
48
  * "Filter" button opening the list-tools sheet (LC-06) — no stacked
48
- * always-visible rows.
49
+ * always-visible rows. Omitted = the viewport's layout size class.
49
50
  */
50
- compact?: boolean;
51
+ collapsed?: boolean;
51
52
  /**
52
53
  * When false, skip the chips row — the host renders FilterChips itself
53
54
  * (DoctypeListScreen puts them under the dense toolbar so they are not
@@ -59,6 +60,11 @@ export interface ListFilterBarProps {
59
60
  * filter (`_liked_by like %user%`). Omitted when there is no session.
60
61
  */
61
62
  likedByUser?: string;
63
+ /**
64
+ * The group-by facet panel, shown inside the collapsed (phone) tools
65
+ * sheet. Wider viewports stack it under the shell nav instead (LC-101).
66
+ */
67
+ facets?: ReactNode;
62
68
  }
63
69
 
64
70
  export function ListFilterBar({
@@ -69,11 +75,14 @@ export function ListFilterBar({
69
75
  sortField,
70
76
  sortOrder,
71
77
  onSortChange,
72
- compact,
78
+ collapsed: collapsedProp,
73
79
  showChips = true,
74
80
  likedByUser,
81
+ facets,
75
82
  }: ListFilterBarProps) {
76
83
  const { t } = useTranslation(BACKOFFICE_I18N_NAMESPACE);
84
+ const narrow = useLayoutSizeClass() === "compact";
85
+ const collapsed = collapsedProp ?? narrow;
77
86
  const { knobProps } = useResolvedKnobs();
78
87
  const iconSize = Number(knobProps.controlIcon?.width) || 16;
79
88
  const likedTuple: FrappeFilter | undefined = likedByUser
@@ -92,7 +101,7 @@ export function ListFilterBar({
92
101
  onPress={() => onFiltersChange(toggleFacetFilter(filters, likedTuple))}
93
102
  />
94
103
  ) : null;
95
- if (compact) {
104
+ if (collapsed) {
96
105
  return (
97
106
  <XStack {...knobProps.gap} alignItems="center">
98
107
  <ListToolsButton
@@ -103,6 +112,7 @@ export function ListFilterBar({
103
112
  sortField={sortField}
104
113
  sortOrder={sortOrder}
105
114
  onSortChange={onSortChange}
115
+ facets={facets}
106
116
  />
107
117
  {likedButton}
108
118
  </XStack>
@@ -47,6 +47,12 @@ export interface ListSidebarProps {
47
47
  * additionally gate their sections regardless of this prop.
48
48
  */
49
49
  hiddenSections?: readonly ListSidebarSection[];
50
+ /**
51
+ * Fill the host column instead of standing as a fixed-width column of its
52
+ * own: the shell rail (stacked under the nav, LC-101) and the phone tools
53
+ * sheet both pass it.
54
+ */
55
+ fill?: boolean;
50
56
  }
51
57
 
52
58
  /** The Select field powering the status facet (plain status or workflow state). */
@@ -77,6 +83,7 @@ export function ListSidebar({
77
83
  filters,
78
84
  onFiltersChange,
79
85
  hiddenSections,
86
+ fill,
80
87
  }: ListSidebarProps) {
81
88
  const { t } = useTranslation(BACKOFFICE_I18N_NAMESPACE);
82
89
  const sessionUser = useSessionUser();
@@ -157,8 +164,10 @@ export function ListSidebar({
157
164
 
158
165
  return (
159
166
  <YStack
160
- width={sizeRecipeEscape(200, "list sidebar: a fixed facet column beside the list")}
161
- paddingRight="$2"
167
+ width={
168
+ fill ? "100%" : sizeRecipeEscape(200, "list sidebar: a fixed facet column beside the list")
169
+ }
170
+ paddingRight={fill ? 0 : "$2"}
162
171
  paddingBottom="$4"
163
172
  aria-label={t("list.sidebarLabel", "List filters sidebar")}
164
173
  >
@@ -5,7 +5,7 @@
5
5
  * "Clear filters" drops them all.
6
6
  */
7
7
  import { Button, Chip, XStack } from "@multiplatform.one/components";
8
- import { useMemo } from "react";
8
+ import { useMemo, type ReactNode } from "react";
9
9
  import { useTranslation } from "react-i18next";
10
10
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
11
11
  import type { FrappeFilters } from "../shared/types";
@@ -16,18 +16,32 @@ export interface FilterChipsProps {
16
16
  meta?: DoctypeMeta;
17
17
  filters: FrappeFilters;
18
18
  onFiltersChange: (filters: FrappeFilters) => void;
19
+ /**
20
+ * Compact list chrome: neutral outlined pills, and the row stays mounted
21
+ * with no filters so `trailing` (the add-filter pill) always shows.
22
+ */
23
+ outlined?: boolean;
24
+ /** Rendered after the chips, inside the same wrapping row. */
25
+ trailing?: ReactNode;
19
26
  }
20
27
 
21
- export function FilterChips({ meta, filters, onFiltersChange }: FilterChipsProps) {
28
+ export function FilterChips({
29
+ meta,
30
+ filters,
31
+ onFiltersChange,
32
+ outlined,
33
+ trailing,
34
+ }: FilterChipsProps) {
22
35
  const { t } = useTranslation(BACKOFFICE_I18N_NAMESPACE);
23
36
  const fields = useMemo(() => filterableFieldsFromMeta(meta), [meta]);
24
- if (!filters.length) return null;
37
+ if (!filters.length && !trailing) return null;
25
38
  return (
26
39
  <XStack gap="$2" flexWrap="wrap" alignItems="center">
27
40
  {filters.map((tuple, index) => (
28
41
  <Chip
29
42
  key={`${tuple[0]}-${tuple[1]}-${index}`}
30
- color="blue"
43
+ {...(outlined ? { size: "$4" as const, variant: "outlined" as const } : {})}
44
+ color={outlined ? "gray" : "blue"}
31
45
  onDismiss={() => onFiltersChange(filters.filter((_, i) => i !== index))}
32
46
  >
33
47
  {filterTupleLabel(fields, tuple)}
@@ -38,6 +52,7 @@ export function FilterChips({ meta, filters, onFiltersChange }: FilterChipsProps
38
52
  {t("list.clearFilters", "Clear filters")}
39
53
  </Button>
40
54
  )}
55
+ {trailing}
41
56
  </XStack>
42
57
  );
43
58
  }
@@ -266,7 +266,6 @@ function FilterEditorRow({ row, fields, onChange, onRemove }: FilterEditorRowPro
266
266
  }}
267
267
  options={fieldOptions}
268
268
  size="$3"
269
- compact
270
269
  aria-label={t("list.filters.field", "Filter field")}
271
270
  />
272
271
  </YStack>
@@ -284,7 +283,6 @@ function FilterEditorRow({ row, fields, onChange, onRemove }: FilterEditorRowPro
284
283
  }}
285
284
  options={operatorOptions}
286
285
  size="$3"
287
- compact
288
286
  aria-label={t("list.filters.condition", "Condition")}
289
287
  />
290
288
  </YStack>
@@ -343,7 +341,6 @@ function FilterValueEditor({ row, field, onChange }: FilterValueEditorProps) {
343
341
  onChangeText={(next) => onChange({ values: [next, row.values[1] ?? ""] })}
344
342
  placeholder={placeholder ?? t("list.filters.from", "From")}
345
343
  size="$3"
346
- compact
347
344
  aria-label={t("list.filters.from", "From")}
348
345
  />
349
346
  </YStack>
@@ -353,7 +350,6 @@ function FilterValueEditor({ row, field, onChange }: FilterValueEditorProps) {
353
350
  onChangeText={(next) => onChange({ values: [row.values[0] ?? "", next] })}
354
351
  placeholder={placeholder ?? t("list.filters.to", "To")}
355
352
  size="$3"
356
- compact
357
353
  aria-label={t("list.filters.to", "To")}
358
354
  />
359
355
  </YStack>
@@ -372,7 +368,6 @@ function FilterValueEditor({ row, field, onChange }: FilterValueEditorProps) {
372
368
  options={selectOptionsFromField(field?.options)}
373
369
  placeholder={t("list.filters.selectValues", "Select values...")}
374
370
  size="$3"
375
- compact
376
371
  aria-label={valueLabel}
377
372
  />
378
373
  );
@@ -383,7 +378,6 @@ function FilterValueEditor({ row, field, onChange }: FilterValueEditorProps) {
383
378
  onChangeText={(next) => onChange({ value: next })}
384
379
  placeholder={t("list.filters.commaValues", "Comma separated values")}
385
380
  size="$3"
386
- compact
387
381
  aria-label={valueLabel}
388
382
  />
389
383
  );
@@ -401,7 +395,6 @@ function FilterValueEditor({ row, field, onChange }: FilterValueEditorProps) {
401
395
  options={selectOptionsFromField(field?.options)}
402
396
  placeholder={t("list.filters.selectValue", "Select...")}
403
397
  size="$3"
404
- compact
405
398
  aria-label={valueLabel}
406
399
  />
407
400
  );
@@ -413,7 +406,7 @@ function FilterValueEditor({ row, field, onChange }: FilterValueEditorProps) {
413
406
  onChange={(next) => onChange({ value: next })}
414
407
  doctype={field?.options ?? ""}
415
408
  placeholder={t("list.filters.searchValue", "Search...")}
416
- compact
409
+ size="$3"
417
410
  />
418
411
  );
419
412
  }
@@ -430,7 +423,6 @@ function FilterValueEditor({ row, field, onChange }: FilterValueEditorProps) {
430
423
  ]}
431
424
  placeholder={t("list.filters.selectValue", "Select...")}
432
425
  size="$3"
433
- compact
434
426
  aria-label={valueLabel}
435
427
  />
436
428
  );
@@ -443,7 +435,6 @@ function FilterValueEditor({ row, field, onChange }: FilterValueEditorProps) {
443
435
  onChangeText={(next) => onChange({ value: next })}
444
436
  placeholder={kind === "date" ? "YYYY-MM-DD" : t("list.filters.enterValue", "Enter value...")}
445
437
  size="$3"
446
- compact
447
438
  aria-label={valueLabel}
448
439
  {...(kind === "number" ? { keyboardType: "numeric" as const } : {})}
449
440
  />