@multiplatform.one/frappe-ui 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 (1268) hide show
  1. package/dist/cjs/FileBrowser/index.cjs +2 -3
  2. package/dist/cjs/FileBrowser/index.native.js +2 -3
  3. package/dist/cjs/FileBrowser/index.native.js.map +1 -1
  4. package/dist/cjs/FrappeAssignment.cjs +2 -2
  5. package/dist/cjs/FrappeAssignment.native.js +2 -2
  6. package/dist/cjs/FrappeAssignment.native.js.map +1 -1
  7. package/dist/cjs/FrappeCalendar.cjs +3 -3
  8. package/dist/cjs/FrappeCalendar.native.js +3 -3
  9. package/dist/cjs/FrappeCalendar.native.js.map +1 -1
  10. package/dist/cjs/FrappeChartCard.cjs +3 -3
  11. package/dist/cjs/FrappeChartCard.native.js +3 -3
  12. package/dist/cjs/FrappeChartCard.native.js.map +1 -1
  13. package/dist/cjs/FrappeForm.cjs +108 -17
  14. package/dist/cjs/FrappeForm.native.js +114 -18
  15. package/dist/cjs/FrappeForm.native.js.map +1 -1
  16. package/dist/cjs/FrappeFormActions.cjs +68 -20
  17. package/dist/cjs/FrappeFormActions.native.js +71 -20
  18. package/dist/cjs/FrappeFormActions.native.js.map +1 -1
  19. package/dist/cjs/FrappeFormConnections.cjs +1 -1
  20. package/dist/cjs/FrappeFormConnections.native.js +1 -1
  21. package/dist/cjs/FrappeFormConnections.native.js.map +1 -1
  22. package/dist/cjs/FrappeKPICard.cjs +2 -2
  23. package/dist/cjs/FrappeKPICard.native.js +2 -2
  24. package/dist/cjs/FrappeKPICard.native.js.map +1 -1
  25. package/dist/cjs/FrappeLikedBy.cjs +1 -1
  26. package/dist/cjs/FrappeLikedBy.native.js +1 -1
  27. package/dist/cjs/FrappeLikedBy.native.js.map +1 -1
  28. package/dist/cjs/FrappeListView.cjs +143 -39
  29. package/dist/cjs/FrappeListView.native.js +182 -58
  30. package/dist/cjs/FrappeListView.native.js.map +1 -1
  31. package/dist/cjs/FrappeRecordView.cjs +14 -23
  32. package/dist/cjs/FrappeRecordView.native.js +16 -25
  33. package/dist/cjs/FrappeRecordView.native.js.map +1 -1
  34. package/dist/cjs/FrappeReportBuilder.cjs +1 -1
  35. package/dist/cjs/FrappeReportBuilder.native.js +1 -1
  36. package/dist/cjs/FrappeReportBuilder.native.js.map +1 -1
  37. package/dist/cjs/FrappeReportView.cjs +0 -4
  38. package/dist/cjs/FrappeReportView.native.js +0 -4
  39. package/dist/cjs/FrappeReportView.native.js.map +1 -1
  40. package/dist/cjs/FrappeTable.native.js.map +1 -1
  41. package/dist/cjs/desk/DeskShell.cjs +20 -20
  42. package/dist/cjs/desk/DeskShell.native.js +21 -20
  43. package/dist/cjs/desk/DeskShell.native.js.map +1 -1
  44. package/dist/cjs/desk/awesomebar.cjs +4 -1
  45. package/dist/cjs/desk/awesomebar.native.js +4 -1
  46. package/dist/cjs/desk/awesomebar.native.js.map +1 -1
  47. package/dist/cjs/fieldRegistry.cjs +27 -10
  48. package/dist/cjs/fieldRegistry.native.js +27 -10
  49. package/dist/cjs/fieldRegistry.native.js.map +1 -1
  50. package/dist/cjs/fields/Barcode/index.cjs +0 -1
  51. package/dist/cjs/fields/Barcode/index.native.js +0 -1
  52. package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
  53. package/dist/cjs/fields/Check/index.cjs +0 -1
  54. package/dist/cjs/fields/Check/index.native.js +0 -1
  55. package/dist/cjs/fields/Check/index.native.js.map +1 -1
  56. package/dist/cjs/fields/CodeEditor/index.cjs +6 -14
  57. package/dist/cjs/fields/CodeEditor/index.native.js +6 -14
  58. package/dist/cjs/fields/CodeEditor/index.native.js.map +1 -1
  59. package/dist/cjs/fields/Color/index.cjs +0 -1
  60. package/dist/cjs/fields/Color/index.native.js +0 -1
  61. package/dist/cjs/fields/Color/index.native.js.map +1 -1
  62. package/dist/cjs/fields/Data/index.cjs +0 -1
  63. package/dist/cjs/fields/Data/index.native.js +0 -1
  64. package/dist/cjs/fields/Data/index.native.js.map +1 -1
  65. package/dist/cjs/fields/Date/catalog.cjs +0 -3
  66. package/dist/cjs/fields/Date/catalog.native.js +0 -3
  67. package/dist/cjs/fields/Date/catalog.native.js.map +1 -1
  68. package/dist/cjs/fields/Date/index.native.js +5 -7
  69. package/dist/cjs/fields/Date/index.native.js.map +1 -1
  70. package/dist/cjs/fields/DateRange/index.cjs +0 -1
  71. package/dist/cjs/fields/DateRange/index.native.js +0 -1
  72. package/dist/cjs/fields/DateRange/index.native.js.map +1 -1
  73. package/dist/cjs/fields/Duration/index.cjs +0 -2
  74. package/dist/cjs/fields/Duration/index.native.js +0 -2
  75. package/dist/cjs/fields/Duration/index.native.js.map +1 -1
  76. package/dist/cjs/fields/DynamicLink.cjs +1 -4
  77. package/dist/cjs/fields/DynamicLink.native.js +1 -4
  78. package/dist/cjs/fields/DynamicLink.native.js.map +1 -1
  79. package/dist/cjs/fields/FileUpload.cjs +3 -3
  80. package/dist/cjs/fields/FileUpload.native.js +3 -3
  81. package/dist/cjs/fields/FileUpload.native.js.map +1 -1
  82. package/dist/cjs/fields/FileUploadField/index.cjs +15 -3
  83. package/dist/cjs/fields/FileUploadField/index.native.js +18 -3
  84. package/dist/cjs/fields/FileUploadField/index.native.js.map +1 -1
  85. package/dist/cjs/fields/Geolocation/index.cjs +0 -1
  86. package/dist/cjs/fields/Geolocation/index.native.js +0 -1
  87. package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
  88. package/dist/cjs/fields/HTML/index.cjs +3 -3
  89. package/dist/cjs/fields/HTML/index.native.js +3 -3
  90. package/dist/cjs/fields/HTML/index.native.js.map +1 -1
  91. package/dist/cjs/fields/Heading/index.cjs +7 -7
  92. package/dist/cjs/fields/Heading/index.native.js +7 -7
  93. package/dist/cjs/fields/Heading/index.native.js.map +1 -1
  94. package/dist/cjs/fields/Icon/index.cjs +0 -1
  95. package/dist/cjs/fields/Icon/index.native.js +0 -1
  96. package/dist/cjs/fields/Icon/index.native.js.map +1 -1
  97. package/dist/cjs/fields/Link.cjs +0 -2
  98. package/dist/cjs/fields/Link.native.js +0 -2
  99. package/dist/cjs/fields/Link.native.js.map +1 -1
  100. package/dist/cjs/fields/LinkTree.cjs +0 -2
  101. package/dist/cjs/fields/LinkTree.native.js +0 -2
  102. package/dist/cjs/fields/LinkTree.native.js.map +1 -1
  103. package/dist/cjs/fields/LongText/index.cjs +0 -1
  104. package/dist/cjs/fields/LongText/index.native.js +0 -1
  105. package/dist/cjs/fields/LongText/index.native.js.map +1 -1
  106. package/dist/cjs/fields/MarkdownEditor/index.cjs +3 -5
  107. package/dist/cjs/fields/MarkdownEditor/index.native.js +6 -14
  108. package/dist/cjs/fields/MarkdownEditor/index.native.js.map +1 -1
  109. package/dist/cjs/fields/MentionInput/index.cjs +0 -1
  110. package/dist/cjs/fields/MentionInput/index.native.js +0 -1
  111. package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
  112. package/dist/cjs/fields/Numeric/index.cjs +5 -2
  113. package/dist/cjs/fields/Numeric/index.native.js +5 -2
  114. package/dist/cjs/fields/Numeric/index.native.js.map +1 -1
  115. package/dist/cjs/fields/OTPInput/index.cjs +0 -1
  116. package/dist/cjs/fields/OTPInput/index.native.js +0 -1
  117. package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
  118. package/dist/cjs/fields/Password/index.cjs +2 -7
  119. package/dist/cjs/fields/Password/index.native.js +2 -7
  120. package/dist/cjs/fields/Password/index.native.js.map +1 -1
  121. package/dist/cjs/fields/Phone/index.cjs +0 -1
  122. package/dist/cjs/fields/Phone/index.native.js +0 -1
  123. package/dist/cjs/fields/Phone/index.native.js.map +1 -1
  124. package/dist/cjs/fields/Progress/index.cjs +0 -1
  125. package/dist/cjs/fields/Progress/index.native.js +0 -1
  126. package/dist/cjs/fields/Progress/index.native.js.map +1 -1
  127. package/dist/cjs/fields/RadioGroup/index.cjs +0 -1
  128. package/dist/cjs/fields/RadioGroup/index.native.js +0 -1
  129. package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
  130. package/dist/cjs/fields/Rating/index.cjs +0 -1
  131. package/dist/cjs/fields/Rating/index.native.js +0 -1
  132. package/dist/cjs/fields/Rating/index.native.js.map +1 -1
  133. package/dist/cjs/fields/ReadOnly/index.cjs +5 -5
  134. package/dist/cjs/fields/ReadOnly/index.native.js +5 -5
  135. package/dist/cjs/fields/ReadOnly/index.native.js.map +1 -1
  136. package/dist/cjs/fields/Select/index.cjs +0 -1
  137. package/dist/cjs/fields/Select/index.native.js +0 -1
  138. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  139. package/dist/cjs/fields/Signature/index.cjs +0 -1
  140. package/dist/cjs/fields/Signature/index.native.js +0 -1
  141. package/dist/cjs/fields/Signature/index.native.js.map +1 -1
  142. package/dist/cjs/fields/Slider/index.cjs +0 -1
  143. package/dist/cjs/fields/Slider/index.native.js +0 -1
  144. package/dist/cjs/fields/Slider/index.native.js.map +1 -1
  145. package/dist/cjs/fields/SmallText/index.cjs +0 -1
  146. package/dist/cjs/fields/SmallText/index.native.js +0 -1
  147. package/dist/cjs/fields/SmallText/index.native.js.map +1 -1
  148. package/dist/cjs/fields/Switch/index.cjs +0 -1
  149. package/dist/cjs/fields/Switch/index.native.js +0 -1
  150. package/dist/cjs/fields/Switch/index.native.js.map +1 -1
  151. package/dist/cjs/fields/TableMultiSelect.cjs +1 -3
  152. package/dist/cjs/fields/TableMultiSelect.native.js +1 -3
  153. package/dist/cjs/fields/TableMultiSelect.native.js.map +1 -1
  154. package/dist/cjs/fields/TextEditor/index.cjs +1 -3
  155. package/dist/cjs/fields/TextEditor/index.native.js +1 -3
  156. package/dist/cjs/fields/TextEditor/index.native.js.map +1 -1
  157. package/dist/cjs/fields/TimePicker/index.cjs +0 -2
  158. package/dist/cjs/fields/TimePicker/index.native.js +0 -2
  159. package/dist/cjs/fields/TimePicker/index.native.js.map +1 -1
  160. package/dist/cjs/fields/ToggleGroup/index.cjs +0 -1
  161. package/dist/cjs/fields/ToggleGroup/index.native.js +0 -1
  162. package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
  163. package/dist/cjs/fields/shared/EditorPreviewPanes.cjs +4 -10
  164. package/dist/cjs/fields/shared/EditorPreviewPanes.native.js +4 -10
  165. package/dist/cjs/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  166. package/dist/cjs/index.cjs +5 -0
  167. package/dist/cjs/index.native.js +5 -0
  168. package/dist/cjs/index.native.js.map +1 -1
  169. package/dist/cjs/insights/InsightsFacetTags.cjs +1 -4
  170. package/dist/cjs/insights/InsightsFacetTags.native.js +1 -4
  171. package/dist/cjs/insights/InsightsFacetTags.native.js.map +1 -1
  172. package/dist/cjs/insights/InsightsKpiBand.cjs +1 -3
  173. package/dist/cjs/insights/InsightsKpiBand.native.js +1 -3
  174. package/dist/cjs/insights/InsightsKpiBand.native.js.map +1 -1
  175. package/dist/cjs/insights/InsightsLeaders.cjs +7 -8
  176. package/dist/cjs/insights/InsightsLeaders.native.js +7 -8
  177. package/dist/cjs/insights/InsightsLeaders.native.js.map +1 -1
  178. package/dist/cjs/insights/InsightsRecords.cjs +1 -4
  179. package/dist/cjs/insights/InsightsRecords.native.js +1 -4
  180. package/dist/cjs/insights/InsightsRecords.native.js.map +1 -1
  181. package/dist/cjs/insights/InsightsTable.cjs +7 -8
  182. package/dist/cjs/insights/InsightsTable.native.js +7 -8
  183. package/dist/cjs/insights/InsightsTable.native.js.map +1 -1
  184. package/dist/cjs/list/BandFilters.cjs +67 -0
  185. package/dist/cjs/list/BandFilters.native.js +77 -0
  186. package/dist/cjs/list/BandFilters.native.js.map +1 -0
  187. package/dist/cjs/list/FacetBadge.cjs +6 -5
  188. package/dist/cjs/list/FacetBadge.native.js +6 -5
  189. package/dist/cjs/list/FacetBadge.native.js.map +1 -1
  190. package/dist/cjs/list/FacetList.cjs +151 -0
  191. package/dist/cjs/list/FacetList.native.js +170 -0
  192. package/dist/cjs/list/FacetList.native.js.map +1 -0
  193. package/dist/cjs/list/FacetRail.cjs +14 -8
  194. package/dist/cjs/list/FacetRail.native.js +14 -8
  195. package/dist/cjs/list/FacetRail.native.js.map +1 -1
  196. package/dist/cjs/list/ImageWell.cjs +1 -1
  197. package/dist/cjs/list/ImageWell.native.js +1 -1
  198. package/dist/cjs/list/ImageWell.native.js.map +1 -1
  199. package/dist/cjs/list/ListControls.cjs +89 -55
  200. package/dist/cjs/list/ListControls.native.js +100 -64
  201. package/dist/cjs/list/ListControls.native.js.map +1 -1
  202. package/dist/cjs/list/ListControlsSheet.cjs +351 -0
  203. package/dist/cjs/list/ListControlsSheet.native.js +426 -0
  204. package/dist/cjs/list/ListControlsSheet.native.js.map +1 -0
  205. package/dist/cjs/list/ListFilterPanel.cjs +169 -0
  206. package/dist/cjs/list/ListFilterPanel.native.js +195 -0
  207. package/dist/cjs/list/ListFilterPanel.native.js.map +1 -0
  208. package/dist/cjs/list/ListSidebarToolbar.cjs +204 -0
  209. package/dist/cjs/list/ListSidebarToolbar.native.js +221 -0
  210. package/dist/cjs/list/ListSidebarToolbar.native.js.map +1 -0
  211. package/dist/cjs/list/ListToolsSheet.cjs +228 -0
  212. package/dist/cjs/list/ListToolsSheet.native.js +261 -0
  213. package/dist/cjs/list/ListToolsSheet.native.js.map +1 -0
  214. package/dist/cjs/list/RangeFilter.cjs +100 -36
  215. package/dist/cjs/list/RangeFilter.native.js +106 -41
  216. package/dist/cjs/list/RangeFilter.native.js.map +1 -1
  217. package/dist/cjs/list/RecordCard.cjs +45 -47
  218. package/dist/cjs/list/RecordCard.native.js +47 -46
  219. package/dist/cjs/list/RecordCard.native.js.map +1 -1
  220. package/dist/cjs/list/listColumns.cjs +8 -1
  221. package/dist/cjs/list/listColumns.native.js +8 -1
  222. package/dist/cjs/list/listColumns.native.js.map +1 -1
  223. package/dist/cjs/list/listControls.fixture.cjs +110 -0
  224. package/dist/cjs/list/listControls.fixture.native.js +118 -0
  225. package/dist/cjs/list/listControls.fixture.native.js.map +1 -0
  226. package/dist/cjs/list/listState.cjs +24 -1
  227. package/dist/cjs/list/listState.native.js +95 -5
  228. package/dist/cjs/list/listState.native.js.map +1 -1
  229. package/dist/cjs/list/useListControls.cjs +26 -6
  230. package/dist/cjs/list/useListControls.native.js +74 -11
  231. package/dist/cjs/list/useListControls.native.js.map +1 -1
  232. package/dist/cjs/record/RecordBars.cjs +70 -130
  233. package/dist/cjs/record/RecordBars.native.js +77 -150
  234. package/dist/cjs/record/RecordBars.native.js.map +1 -1
  235. package/dist/cjs/record/RecordGallery.cjs +22 -14
  236. package/dist/cjs/record/RecordGallery.native.js +22 -14
  237. package/dist/cjs/record/RecordGallery.native.js.map +1 -1
  238. package/dist/cjs/record/RecordHero.cjs +100 -133
  239. package/dist/cjs/record/RecordHero.native.js +97 -132
  240. package/dist/cjs/record/RecordHero.native.js.map +1 -1
  241. package/dist/cjs/record/RecordPage.cjs +190 -155
  242. package/dist/cjs/record/RecordPage.native.js +204 -169
  243. package/dist/cjs/record/RecordPage.native.js.map +1 -1
  244. package/dist/cjs/record/RecordPager.cjs +1 -4
  245. package/dist/cjs/record/RecordPager.native.js +1 -4
  246. package/dist/cjs/record/RecordPager.native.js.map +1 -1
  247. package/dist/cjs/record/RecordRows.cjs +87 -58
  248. package/dist/cjs/record/RecordRows.native.js +93 -60
  249. package/dist/cjs/record/RecordRows.native.js.map +1 -1
  250. package/dist/cjs/report/ReportGrid.cjs +0 -1
  251. package/dist/cjs/report/ReportGrid.native.js +0 -1
  252. package/dist/cjs/report/ReportGrid.native.js.map +1 -1
  253. package/dist/cjs/report/ReportViewToolbar.cjs +0 -1
  254. package/dist/cjs/report/ReportViewToolbar.native.js +0 -1
  255. package/dist/cjs/report/ReportViewToolbar.native.js.map +1 -1
  256. package/dist/cjs/schemaForm/SchemaWizard.cjs +0 -2
  257. package/dist/cjs/schemaForm/SchemaWizard.native.js +0 -2
  258. package/dist/cjs/schemaForm/SchemaWizard.native.js.map +1 -1
  259. package/dist/cjs/schemaForm/index.cjs +103 -9
  260. package/dist/cjs/schemaForm/index.native.js +110 -9
  261. package/dist/cjs/schemaForm/index.native.js.map +1 -1
  262. package/dist/cjs/useFrappePagination.cjs +1 -1
  263. package/dist/cjs/useFrappePagination.native.js +1 -1
  264. package/dist/cjs/useFrappePagination.native.js.map +1 -1
  265. package/dist/esm/FileBrowser/index.mjs +2 -3
  266. package/dist/esm/FileBrowser/index.mjs.map +1 -1
  267. package/dist/esm/FileBrowser/index.native.js +2 -3
  268. package/dist/esm/FileBrowser/index.native.js.map +1 -1
  269. package/dist/esm/FrappeAssignment.mjs +2 -2
  270. package/dist/esm/FrappeAssignment.mjs.map +1 -1
  271. package/dist/esm/FrappeAssignment.native.js +2 -2
  272. package/dist/esm/FrappeAssignment.native.js.map +1 -1
  273. package/dist/esm/FrappeCalendar.mjs +3 -3
  274. package/dist/esm/FrappeCalendar.mjs.map +1 -1
  275. package/dist/esm/FrappeCalendar.native.js +3 -3
  276. package/dist/esm/FrappeCalendar.native.js.map +1 -1
  277. package/dist/esm/FrappeChartCard.mjs +3 -3
  278. package/dist/esm/FrappeChartCard.mjs.map +1 -1
  279. package/dist/esm/FrappeChartCard.native.js +3 -3
  280. package/dist/esm/FrappeChartCard.native.js.map +1 -1
  281. package/dist/esm/FrappeForm.mjs +111 -20
  282. package/dist/esm/FrappeForm.mjs.map +1 -1
  283. package/dist/esm/FrappeForm.native.js +117 -21
  284. package/dist/esm/FrappeForm.native.js.map +1 -1
  285. package/dist/esm/FrappeFormActions.mjs +69 -23
  286. package/dist/esm/FrappeFormActions.mjs.map +1 -1
  287. package/dist/esm/FrappeFormActions.native.js +72 -23
  288. package/dist/esm/FrappeFormActions.native.js.map +1 -1
  289. package/dist/esm/FrappeFormConnections.mjs +1 -1
  290. package/dist/esm/FrappeFormConnections.mjs.map +1 -1
  291. package/dist/esm/FrappeFormConnections.native.js +1 -1
  292. package/dist/esm/FrappeFormConnections.native.js.map +1 -1
  293. package/dist/esm/FrappeKPICard.mjs +2 -2
  294. package/dist/esm/FrappeKPICard.mjs.map +1 -1
  295. package/dist/esm/FrappeKPICard.native.js +2 -2
  296. package/dist/esm/FrappeKPICard.native.js.map +1 -1
  297. package/dist/esm/FrappeLikedBy.mjs +1 -1
  298. package/dist/esm/FrappeLikedBy.mjs.map +1 -1
  299. package/dist/esm/FrappeLikedBy.native.js +1 -1
  300. package/dist/esm/FrappeLikedBy.native.js.map +1 -1
  301. package/dist/esm/FrappeListView.mjs +145 -41
  302. package/dist/esm/FrappeListView.mjs.map +1 -1
  303. package/dist/esm/FrappeListView.native.js +184 -60
  304. package/dist/esm/FrappeListView.native.js.map +1 -1
  305. package/dist/esm/FrappeRecordView.mjs +14 -23
  306. package/dist/esm/FrappeRecordView.mjs.map +1 -1
  307. package/dist/esm/FrappeRecordView.native.js +16 -25
  308. package/dist/esm/FrappeRecordView.native.js.map +1 -1
  309. package/dist/esm/FrappeReportBuilder.mjs +1 -1
  310. package/dist/esm/FrappeReportBuilder.mjs.map +1 -1
  311. package/dist/esm/FrappeReportBuilder.native.js +1 -1
  312. package/dist/esm/FrappeReportBuilder.native.js.map +1 -1
  313. package/dist/esm/FrappeReportView.mjs +0 -4
  314. package/dist/esm/FrappeReportView.mjs.map +1 -1
  315. package/dist/esm/FrappeReportView.native.js +0 -4
  316. package/dist/esm/FrappeReportView.native.js.map +1 -1
  317. package/dist/esm/FrappeTable.mjs.map +1 -1
  318. package/dist/esm/FrappeTable.native.js.map +1 -1
  319. package/dist/esm/desk/DeskShell.mjs +21 -21
  320. package/dist/esm/desk/DeskShell.mjs.map +1 -1
  321. package/dist/esm/desk/DeskShell.native.js +22 -21
  322. package/dist/esm/desk/DeskShell.native.js.map +1 -1
  323. package/dist/esm/desk/awesomebar.mjs +4 -1
  324. package/dist/esm/desk/awesomebar.mjs.map +1 -1
  325. package/dist/esm/desk/awesomebar.native.js +4 -1
  326. package/dist/esm/desk/awesomebar.native.js.map +1 -1
  327. package/dist/esm/fieldRegistry.mjs +26 -10
  328. package/dist/esm/fieldRegistry.mjs.map +1 -1
  329. package/dist/esm/fieldRegistry.native.js +26 -10
  330. package/dist/esm/fieldRegistry.native.js.map +1 -1
  331. package/dist/esm/fields/Barcode/index.mjs +0 -1
  332. package/dist/esm/fields/Barcode/index.mjs.map +1 -1
  333. package/dist/esm/fields/Barcode/index.native.js +0 -1
  334. package/dist/esm/fields/Barcode/index.native.js.map +1 -1
  335. package/dist/esm/fields/Check/index.mjs +0 -1
  336. package/dist/esm/fields/Check/index.mjs.map +1 -1
  337. package/dist/esm/fields/Check/index.native.js +0 -1
  338. package/dist/esm/fields/Check/index.native.js.map +1 -1
  339. package/dist/esm/fields/CodeEditor/index.mjs +7 -15
  340. package/dist/esm/fields/CodeEditor/index.mjs.map +1 -1
  341. package/dist/esm/fields/CodeEditor/index.native.js +7 -15
  342. package/dist/esm/fields/CodeEditor/index.native.js.map +1 -1
  343. package/dist/esm/fields/Color/index.mjs +0 -1
  344. package/dist/esm/fields/Color/index.mjs.map +1 -1
  345. package/dist/esm/fields/Color/index.native.js +0 -1
  346. package/dist/esm/fields/Color/index.native.js.map +1 -1
  347. package/dist/esm/fields/Data/index.mjs +0 -1
  348. package/dist/esm/fields/Data/index.mjs.map +1 -1
  349. package/dist/esm/fields/Data/index.native.js +0 -1
  350. package/dist/esm/fields/Data/index.native.js.map +1 -1
  351. package/dist/esm/fields/Date/catalog.mjs +0 -3
  352. package/dist/esm/fields/Date/catalog.mjs.map +1 -1
  353. package/dist/esm/fields/Date/catalog.native.js +0 -3
  354. package/dist/esm/fields/Date/catalog.native.js.map +1 -1
  355. package/dist/esm/fields/Date/index.native.js +5 -7
  356. package/dist/esm/fields/Date/index.native.js.map +1 -1
  357. package/dist/esm/fields/DateRange/index.mjs +0 -1
  358. package/dist/esm/fields/DateRange/index.mjs.map +1 -1
  359. package/dist/esm/fields/DateRange/index.native.js +0 -1
  360. package/dist/esm/fields/DateRange/index.native.js.map +1 -1
  361. package/dist/esm/fields/Duration/index.mjs +0 -2
  362. package/dist/esm/fields/Duration/index.mjs.map +1 -1
  363. package/dist/esm/fields/Duration/index.native.js +0 -2
  364. package/dist/esm/fields/Duration/index.native.js.map +1 -1
  365. package/dist/esm/fields/DynamicLink.mjs +1 -4
  366. package/dist/esm/fields/DynamicLink.mjs.map +1 -1
  367. package/dist/esm/fields/DynamicLink.native.js +1 -4
  368. package/dist/esm/fields/DynamicLink.native.js.map +1 -1
  369. package/dist/esm/fields/FileUpload.mjs +4 -4
  370. package/dist/esm/fields/FileUpload.mjs.map +1 -1
  371. package/dist/esm/fields/FileUpload.native.js +4 -4
  372. package/dist/esm/fields/FileUpload.native.js.map +1 -1
  373. package/dist/esm/fields/FileUploadField/index.mjs +14 -3
  374. package/dist/esm/fields/FileUploadField/index.mjs.map +1 -1
  375. package/dist/esm/fields/FileUploadField/index.native.js +17 -3
  376. package/dist/esm/fields/FileUploadField/index.native.js.map +1 -1
  377. package/dist/esm/fields/Geolocation/index.mjs +0 -1
  378. package/dist/esm/fields/Geolocation/index.mjs.map +1 -1
  379. package/dist/esm/fields/Geolocation/index.native.js +0 -1
  380. package/dist/esm/fields/Geolocation/index.native.js.map +1 -1
  381. package/dist/esm/fields/HTML/index.mjs +4 -4
  382. package/dist/esm/fields/HTML/index.mjs.map +1 -1
  383. package/dist/esm/fields/HTML/index.native.js +4 -4
  384. package/dist/esm/fields/HTML/index.native.js.map +1 -1
  385. package/dist/esm/fields/Heading/index.mjs +8 -8
  386. package/dist/esm/fields/Heading/index.mjs.map +1 -1
  387. package/dist/esm/fields/Heading/index.native.js +8 -8
  388. package/dist/esm/fields/Heading/index.native.js.map +1 -1
  389. package/dist/esm/fields/Icon/index.mjs +0 -1
  390. package/dist/esm/fields/Icon/index.mjs.map +1 -1
  391. package/dist/esm/fields/Icon/index.native.js +0 -1
  392. package/dist/esm/fields/Icon/index.native.js.map +1 -1
  393. package/dist/esm/fields/Link.mjs +0 -2
  394. package/dist/esm/fields/Link.mjs.map +1 -1
  395. package/dist/esm/fields/Link.native.js +0 -2
  396. package/dist/esm/fields/Link.native.js.map +1 -1
  397. package/dist/esm/fields/LinkTree.mjs +0 -2
  398. package/dist/esm/fields/LinkTree.mjs.map +1 -1
  399. package/dist/esm/fields/LinkTree.native.js +0 -2
  400. package/dist/esm/fields/LinkTree.native.js.map +1 -1
  401. package/dist/esm/fields/LongText/index.mjs +0 -1
  402. package/dist/esm/fields/LongText/index.mjs.map +1 -1
  403. package/dist/esm/fields/LongText/index.native.js +0 -1
  404. package/dist/esm/fields/LongText/index.native.js.map +1 -1
  405. package/dist/esm/fields/MarkdownEditor/index.mjs +4 -6
  406. package/dist/esm/fields/MarkdownEditor/index.mjs.map +1 -1
  407. package/dist/esm/fields/MarkdownEditor/index.native.js +7 -15
  408. package/dist/esm/fields/MarkdownEditor/index.native.js.map +1 -1
  409. package/dist/esm/fields/MentionInput/index.mjs +0 -1
  410. package/dist/esm/fields/MentionInput/index.mjs.map +1 -1
  411. package/dist/esm/fields/MentionInput/index.native.js +0 -1
  412. package/dist/esm/fields/MentionInput/index.native.js.map +1 -1
  413. package/dist/esm/fields/Numeric/index.mjs +5 -2
  414. package/dist/esm/fields/Numeric/index.mjs.map +1 -1
  415. package/dist/esm/fields/Numeric/index.native.js +5 -2
  416. package/dist/esm/fields/Numeric/index.native.js.map +1 -1
  417. package/dist/esm/fields/OTPInput/index.mjs +0 -1
  418. package/dist/esm/fields/OTPInput/index.mjs.map +1 -1
  419. package/dist/esm/fields/OTPInput/index.native.js +0 -1
  420. package/dist/esm/fields/OTPInput/index.native.js.map +1 -1
  421. package/dist/esm/fields/Password/index.mjs +2 -7
  422. package/dist/esm/fields/Password/index.mjs.map +1 -1
  423. package/dist/esm/fields/Password/index.native.js +2 -7
  424. package/dist/esm/fields/Password/index.native.js.map +1 -1
  425. package/dist/esm/fields/Phone/index.mjs +0 -1
  426. package/dist/esm/fields/Phone/index.mjs.map +1 -1
  427. package/dist/esm/fields/Phone/index.native.js +0 -1
  428. package/dist/esm/fields/Phone/index.native.js.map +1 -1
  429. package/dist/esm/fields/Progress/index.mjs +0 -1
  430. package/dist/esm/fields/Progress/index.mjs.map +1 -1
  431. package/dist/esm/fields/Progress/index.native.js +0 -1
  432. package/dist/esm/fields/Progress/index.native.js.map +1 -1
  433. package/dist/esm/fields/RadioGroup/index.mjs +0 -1
  434. package/dist/esm/fields/RadioGroup/index.mjs.map +1 -1
  435. package/dist/esm/fields/RadioGroup/index.native.js +0 -1
  436. package/dist/esm/fields/RadioGroup/index.native.js.map +1 -1
  437. package/dist/esm/fields/Rating/index.mjs +0 -1
  438. package/dist/esm/fields/Rating/index.mjs.map +1 -1
  439. package/dist/esm/fields/Rating/index.native.js +0 -1
  440. package/dist/esm/fields/Rating/index.native.js.map +1 -1
  441. package/dist/esm/fields/ReadOnly/index.mjs +6 -6
  442. package/dist/esm/fields/ReadOnly/index.mjs.map +1 -1
  443. package/dist/esm/fields/ReadOnly/index.native.js +6 -6
  444. package/dist/esm/fields/ReadOnly/index.native.js.map +1 -1
  445. package/dist/esm/fields/Select/index.mjs +0 -1
  446. package/dist/esm/fields/Select/index.mjs.map +1 -1
  447. package/dist/esm/fields/Select/index.native.js +0 -1
  448. package/dist/esm/fields/Select/index.native.js.map +1 -1
  449. package/dist/esm/fields/Signature/index.mjs +0 -1
  450. package/dist/esm/fields/Signature/index.mjs.map +1 -1
  451. package/dist/esm/fields/Signature/index.native.js +0 -1
  452. package/dist/esm/fields/Signature/index.native.js.map +1 -1
  453. package/dist/esm/fields/Slider/index.mjs +0 -1
  454. package/dist/esm/fields/Slider/index.mjs.map +1 -1
  455. package/dist/esm/fields/Slider/index.native.js +0 -1
  456. package/dist/esm/fields/Slider/index.native.js.map +1 -1
  457. package/dist/esm/fields/SmallText/index.mjs +0 -1
  458. package/dist/esm/fields/SmallText/index.mjs.map +1 -1
  459. package/dist/esm/fields/SmallText/index.native.js +0 -1
  460. package/dist/esm/fields/SmallText/index.native.js.map +1 -1
  461. package/dist/esm/fields/Switch/index.mjs +0 -1
  462. package/dist/esm/fields/Switch/index.mjs.map +1 -1
  463. package/dist/esm/fields/Switch/index.native.js +0 -1
  464. package/dist/esm/fields/Switch/index.native.js.map +1 -1
  465. package/dist/esm/fields/TableMultiSelect.mjs +1 -3
  466. package/dist/esm/fields/TableMultiSelect.mjs.map +1 -1
  467. package/dist/esm/fields/TableMultiSelect.native.js +1 -3
  468. package/dist/esm/fields/TableMultiSelect.native.js.map +1 -1
  469. package/dist/esm/fields/TextEditor/index.mjs +1 -3
  470. package/dist/esm/fields/TextEditor/index.mjs.map +1 -1
  471. package/dist/esm/fields/TextEditor/index.native.js +1 -3
  472. package/dist/esm/fields/TextEditor/index.native.js.map +1 -1
  473. package/dist/esm/fields/TimePicker/index.mjs +0 -2
  474. package/dist/esm/fields/TimePicker/index.mjs.map +1 -1
  475. package/dist/esm/fields/TimePicker/index.native.js +0 -2
  476. package/dist/esm/fields/TimePicker/index.native.js.map +1 -1
  477. package/dist/esm/fields/ToggleGroup/index.mjs +0 -1
  478. package/dist/esm/fields/ToggleGroup/index.mjs.map +1 -1
  479. package/dist/esm/fields/ToggleGroup/index.native.js +0 -1
  480. package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -1
  481. package/dist/esm/fields/shared/EditorPreviewPanes.mjs +5 -11
  482. package/dist/esm/fields/shared/EditorPreviewPanes.mjs.map +1 -1
  483. package/dist/esm/fields/shared/EditorPreviewPanes.native.js +5 -11
  484. package/dist/esm/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  485. package/dist/esm/index.mjs +3 -2
  486. package/dist/esm/index.mjs.map +1 -1
  487. package/dist/esm/index.native.js +3 -2
  488. package/dist/esm/index.native.js.map +1 -1
  489. package/dist/esm/insights/InsightsFacetTags.mjs +1 -4
  490. package/dist/esm/insights/InsightsFacetTags.mjs.map +1 -1
  491. package/dist/esm/insights/InsightsFacetTags.native.js +1 -4
  492. package/dist/esm/insights/InsightsFacetTags.native.js.map +1 -1
  493. package/dist/esm/insights/InsightsKpiBand.mjs +1 -3
  494. package/dist/esm/insights/InsightsKpiBand.mjs.map +1 -1
  495. package/dist/esm/insights/InsightsKpiBand.native.js +1 -3
  496. package/dist/esm/insights/InsightsKpiBand.native.js.map +1 -1
  497. package/dist/esm/insights/InsightsLeaders.mjs +7 -8
  498. package/dist/esm/insights/InsightsLeaders.mjs.map +1 -1
  499. package/dist/esm/insights/InsightsLeaders.native.js +7 -8
  500. package/dist/esm/insights/InsightsLeaders.native.js.map +1 -1
  501. package/dist/esm/insights/InsightsRecords.mjs +1 -4
  502. package/dist/esm/insights/InsightsRecords.mjs.map +1 -1
  503. package/dist/esm/insights/InsightsRecords.native.js +1 -4
  504. package/dist/esm/insights/InsightsRecords.native.js.map +1 -1
  505. package/dist/esm/insights/InsightsTable.mjs +7 -8
  506. package/dist/esm/insights/InsightsTable.mjs.map +1 -1
  507. package/dist/esm/insights/InsightsTable.native.js +7 -8
  508. package/dist/esm/insights/InsightsTable.native.js.map +1 -1
  509. package/dist/esm/list/BandFilters.mjs +42 -0
  510. package/dist/esm/list/BandFilters.mjs.map +1 -0
  511. package/dist/esm/list/BandFilters.native.js +49 -0
  512. package/dist/esm/list/BandFilters.native.js.map +1 -0
  513. package/dist/esm/list/FacetBadge.mjs +7 -6
  514. package/dist/esm/list/FacetBadge.mjs.map +1 -1
  515. package/dist/esm/list/FacetBadge.native.js +7 -6
  516. package/dist/esm/list/FacetBadge.native.js.map +1 -1
  517. package/dist/esm/list/FacetList.mjs +126 -0
  518. package/dist/esm/list/FacetList.mjs.map +1 -0
  519. package/dist/esm/list/FacetList.native.js +142 -0
  520. package/dist/esm/list/FacetList.native.js.map +1 -0
  521. package/dist/esm/list/FacetRail.mjs +15 -9
  522. package/dist/esm/list/FacetRail.mjs.map +1 -1
  523. package/dist/esm/list/FacetRail.native.js +15 -9
  524. package/dist/esm/list/FacetRail.native.js.map +1 -1
  525. package/dist/esm/list/ImageWell.mjs +2 -2
  526. package/dist/esm/list/ImageWell.mjs.map +1 -1
  527. package/dist/esm/list/ImageWell.native.js +2 -2
  528. package/dist/esm/list/ImageWell.native.js.map +1 -1
  529. package/dist/esm/list/ListControls.mjs +90 -56
  530. package/dist/esm/list/ListControls.mjs.map +1 -1
  531. package/dist/esm/list/ListControls.native.js +101 -65
  532. package/dist/esm/list/ListControls.native.js.map +1 -1
  533. package/dist/esm/list/ListControlsSheet.mjs +326 -0
  534. package/dist/esm/list/ListControlsSheet.mjs.map +1 -0
  535. package/dist/esm/list/ListControlsSheet.native.js +398 -0
  536. package/dist/esm/list/ListControlsSheet.native.js.map +1 -0
  537. package/dist/esm/list/ListFilterPanel.mjs +144 -0
  538. package/dist/esm/list/ListFilterPanel.mjs.map +1 -0
  539. package/dist/esm/list/ListFilterPanel.native.js +167 -0
  540. package/dist/esm/list/ListFilterPanel.native.js.map +1 -0
  541. package/dist/esm/list/ListSidebarToolbar.mjs +179 -0
  542. package/dist/esm/list/ListSidebarToolbar.mjs.map +1 -0
  543. package/dist/esm/list/ListSidebarToolbar.native.js +193 -0
  544. package/dist/esm/list/ListSidebarToolbar.native.js.map +1 -0
  545. package/dist/esm/list/ListToolsSheet.mjs +202 -0
  546. package/dist/esm/list/ListToolsSheet.mjs.map +1 -0
  547. package/dist/esm/list/ListToolsSheet.native.js +232 -0
  548. package/dist/esm/list/ListToolsSheet.native.js.map +1 -0
  549. package/dist/esm/list/RangeFilter.mjs +101 -37
  550. package/dist/esm/list/RangeFilter.mjs.map +1 -1
  551. package/dist/esm/list/RangeFilter.native.js +107 -42
  552. package/dist/esm/list/RangeFilter.native.js.map +1 -1
  553. package/dist/esm/list/RecordCard.mjs +46 -48
  554. package/dist/esm/list/RecordCard.mjs.map +1 -1
  555. package/dist/esm/list/RecordCard.native.js +48 -47
  556. package/dist/esm/list/RecordCard.native.js.map +1 -1
  557. package/dist/esm/list/listColumns.mjs +9 -2
  558. package/dist/esm/list/listColumns.mjs.map +1 -1
  559. package/dist/esm/list/listColumns.native.js +9 -2
  560. package/dist/esm/list/listColumns.native.js.map +1 -1
  561. package/dist/esm/list/listControls.fixture.mjs +84 -0
  562. package/dist/esm/list/listControls.fixture.mjs.map +1 -0
  563. package/dist/esm/list/listControls.fixture.native.js +89 -0
  564. package/dist/esm/list/listControls.fixture.native.js.map +1 -0
  565. package/dist/esm/list/listState.mjs +23 -2
  566. package/dist/esm/list/listState.mjs.map +1 -1
  567. package/dist/esm/list/listState.native.js +94 -6
  568. package/dist/esm/list/listState.native.js.map +1 -1
  569. package/dist/esm/list/useListControls.mjs +27 -7
  570. package/dist/esm/list/useListControls.mjs.map +1 -1
  571. package/dist/esm/list/useListControls.native.js +75 -12
  572. package/dist/esm/list/useListControls.native.js.map +1 -1
  573. package/dist/esm/record/RecordBars.mjs +73 -133
  574. package/dist/esm/record/RecordBars.mjs.map +1 -1
  575. package/dist/esm/record/RecordBars.native.js +80 -153
  576. package/dist/esm/record/RecordBars.native.js.map +1 -1
  577. package/dist/esm/record/RecordGallery.mjs +22 -14
  578. package/dist/esm/record/RecordGallery.mjs.map +1 -1
  579. package/dist/esm/record/RecordGallery.native.js +22 -14
  580. package/dist/esm/record/RecordGallery.native.js.map +1 -1
  581. package/dist/esm/record/RecordHero.mjs +100 -129
  582. package/dist/esm/record/RecordHero.mjs.map +1 -1
  583. package/dist/esm/record/RecordHero.native.js +97 -128
  584. package/dist/esm/record/RecordHero.native.js.map +1 -1
  585. package/dist/esm/record/RecordPage.mjs +195 -161
  586. package/dist/esm/record/RecordPage.mjs.map +1 -1
  587. package/dist/esm/record/RecordPage.native.js +209 -175
  588. package/dist/esm/record/RecordPage.native.js.map +1 -1
  589. package/dist/esm/record/RecordPager.mjs +1 -4
  590. package/dist/esm/record/RecordPager.mjs.map +1 -1
  591. package/dist/esm/record/RecordPager.native.js +1 -4
  592. package/dist/esm/record/RecordPager.native.js.map +1 -1
  593. package/dist/esm/record/RecordRows.mjs +88 -61
  594. package/dist/esm/record/RecordRows.mjs.map +1 -1
  595. package/dist/esm/record/RecordRows.native.js +94 -63
  596. package/dist/esm/record/RecordRows.native.js.map +1 -1
  597. package/dist/esm/report/ReportGrid.mjs +0 -1
  598. package/dist/esm/report/ReportGrid.mjs.map +1 -1
  599. package/dist/esm/report/ReportGrid.native.js +0 -1
  600. package/dist/esm/report/ReportGrid.native.js.map +1 -1
  601. package/dist/esm/report/ReportViewToolbar.mjs +0 -1
  602. package/dist/esm/report/ReportViewToolbar.mjs.map +1 -1
  603. package/dist/esm/report/ReportViewToolbar.native.js +0 -1
  604. package/dist/esm/report/ReportViewToolbar.native.js.map +1 -1
  605. package/dist/esm/schemaForm/SchemaWizard.mjs +0 -2
  606. package/dist/esm/schemaForm/SchemaWizard.mjs.map +1 -1
  607. package/dist/esm/schemaForm/SchemaWizard.native.js +0 -2
  608. package/dist/esm/schemaForm/SchemaWizard.native.js.map +1 -1
  609. package/dist/esm/schemaForm/index.mjs +103 -9
  610. package/dist/esm/schemaForm/index.mjs.map +1 -1
  611. package/dist/esm/schemaForm/index.native.js +110 -9
  612. package/dist/esm/schemaForm/index.native.js.map +1 -1
  613. package/dist/esm/useFrappePagination.mjs +1 -1
  614. package/dist/esm/useFrappePagination.mjs.map +1 -1
  615. package/dist/esm/useFrappePagination.native.js +1 -1
  616. package/dist/esm/useFrappePagination.native.js.map +1 -1
  617. package/dist/jsx/FileBrowser/index.mjs +2 -3
  618. package/dist/jsx/FileBrowser/index.mjs.map +1 -1
  619. package/dist/jsx/FileBrowser/index.native.js +2 -3
  620. package/dist/jsx/FileBrowser/index.native.js.map +1 -1
  621. package/dist/jsx/FrappeAssignment.mjs +2 -2
  622. package/dist/jsx/FrappeAssignment.mjs.map +1 -1
  623. package/dist/jsx/FrappeAssignment.native.js +2 -2
  624. package/dist/jsx/FrappeAssignment.native.js.map +1 -1
  625. package/dist/jsx/FrappeCalendar.mjs +3 -3
  626. package/dist/jsx/FrappeCalendar.mjs.map +1 -1
  627. package/dist/jsx/FrappeCalendar.native.js +3 -3
  628. package/dist/jsx/FrappeCalendar.native.js.map +1 -1
  629. package/dist/jsx/FrappeChartCard.mjs +3 -3
  630. package/dist/jsx/FrappeChartCard.mjs.map +1 -1
  631. package/dist/jsx/FrappeChartCard.native.js +3 -3
  632. package/dist/jsx/FrappeChartCard.native.js.map +1 -1
  633. package/dist/jsx/FrappeForm.mjs +111 -20
  634. package/dist/jsx/FrappeForm.mjs.map +1 -1
  635. package/dist/jsx/FrappeForm.native.js +114 -18
  636. package/dist/jsx/FrappeForm.native.js.map +1 -1
  637. package/dist/jsx/FrappeFormActions.mjs +69 -23
  638. package/dist/jsx/FrappeFormActions.mjs.map +1 -1
  639. package/dist/jsx/FrappeFormActions.native.js +71 -20
  640. package/dist/jsx/FrappeFormActions.native.js.map +1 -1
  641. package/dist/jsx/FrappeFormConnections.mjs +1 -1
  642. package/dist/jsx/FrappeFormConnections.mjs.map +1 -1
  643. package/dist/jsx/FrappeFormConnections.native.js +1 -1
  644. package/dist/jsx/FrappeFormConnections.native.js.map +1 -1
  645. package/dist/jsx/FrappeKPICard.mjs +2 -2
  646. package/dist/jsx/FrappeKPICard.mjs.map +1 -1
  647. package/dist/jsx/FrappeKPICard.native.js +2 -2
  648. package/dist/jsx/FrappeKPICard.native.js.map +1 -1
  649. package/dist/jsx/FrappeLikedBy.mjs +1 -1
  650. package/dist/jsx/FrappeLikedBy.mjs.map +1 -1
  651. package/dist/jsx/FrappeLikedBy.native.js +1 -1
  652. package/dist/jsx/FrappeLikedBy.native.js.map +1 -1
  653. package/dist/jsx/FrappeListView.mjs +145 -41
  654. package/dist/jsx/FrappeListView.mjs.map +1 -1
  655. package/dist/jsx/FrappeListView.native.js +182 -58
  656. package/dist/jsx/FrappeListView.native.js.map +1 -1
  657. package/dist/jsx/FrappeRecordView.mjs +14 -23
  658. package/dist/jsx/FrappeRecordView.mjs.map +1 -1
  659. package/dist/jsx/FrappeRecordView.native.js +16 -25
  660. package/dist/jsx/FrappeRecordView.native.js.map +1 -1
  661. package/dist/jsx/FrappeReportBuilder.mjs +1 -1
  662. package/dist/jsx/FrappeReportBuilder.mjs.map +1 -1
  663. package/dist/jsx/FrappeReportBuilder.native.js +1 -1
  664. package/dist/jsx/FrappeReportBuilder.native.js.map +1 -1
  665. package/dist/jsx/FrappeReportView.mjs +0 -4
  666. package/dist/jsx/FrappeReportView.mjs.map +1 -1
  667. package/dist/jsx/FrappeReportView.native.js +0 -4
  668. package/dist/jsx/FrappeReportView.native.js.map +1 -1
  669. package/dist/jsx/FrappeTable.mjs.map +1 -1
  670. package/dist/jsx/FrappeTable.native.js.map +1 -1
  671. package/dist/jsx/desk/DeskShell.mjs +21 -21
  672. package/dist/jsx/desk/DeskShell.mjs.map +1 -1
  673. package/dist/jsx/desk/DeskShell.native.js +21 -20
  674. package/dist/jsx/desk/DeskShell.native.js.map +1 -1
  675. package/dist/jsx/desk/awesomebar.mjs +4 -1
  676. package/dist/jsx/desk/awesomebar.mjs.map +1 -1
  677. package/dist/jsx/desk/awesomebar.native.js +4 -1
  678. package/dist/jsx/desk/awesomebar.native.js.map +1 -1
  679. package/dist/jsx/fieldRegistry.mjs +26 -10
  680. package/dist/jsx/fieldRegistry.mjs.map +1 -1
  681. package/dist/jsx/fieldRegistry.native.js +27 -10
  682. package/dist/jsx/fieldRegistry.native.js.map +1 -1
  683. package/dist/jsx/fields/Barcode/index.mjs +0 -1
  684. package/dist/jsx/fields/Barcode/index.mjs.map +1 -1
  685. package/dist/jsx/fields/Barcode/index.native.js +0 -1
  686. package/dist/jsx/fields/Barcode/index.native.js.map +1 -1
  687. package/dist/jsx/fields/Check/index.mjs +0 -1
  688. package/dist/jsx/fields/Check/index.mjs.map +1 -1
  689. package/dist/jsx/fields/Check/index.native.js +0 -1
  690. package/dist/jsx/fields/Check/index.native.js.map +1 -1
  691. package/dist/jsx/fields/CodeEditor/index.mjs +7 -15
  692. package/dist/jsx/fields/CodeEditor/index.mjs.map +1 -1
  693. package/dist/jsx/fields/CodeEditor/index.native.js +6 -14
  694. package/dist/jsx/fields/CodeEditor/index.native.js.map +1 -1
  695. package/dist/jsx/fields/Color/index.mjs +0 -1
  696. package/dist/jsx/fields/Color/index.mjs.map +1 -1
  697. package/dist/jsx/fields/Color/index.native.js +0 -1
  698. package/dist/jsx/fields/Color/index.native.js.map +1 -1
  699. package/dist/jsx/fields/Data/index.mjs +0 -1
  700. package/dist/jsx/fields/Data/index.mjs.map +1 -1
  701. package/dist/jsx/fields/Data/index.native.js +0 -1
  702. package/dist/jsx/fields/Data/index.native.js.map +1 -1
  703. package/dist/jsx/fields/Date/catalog.mjs +0 -3
  704. package/dist/jsx/fields/Date/catalog.mjs.map +1 -1
  705. package/dist/jsx/fields/Date/catalog.native.js +0 -3
  706. package/dist/jsx/fields/Date/catalog.native.js.map +1 -1
  707. package/dist/jsx/fields/Date/index.native.js +5 -7
  708. package/dist/jsx/fields/Date/index.native.js.map +1 -1
  709. package/dist/jsx/fields/DateRange/index.mjs +0 -1
  710. package/dist/jsx/fields/DateRange/index.mjs.map +1 -1
  711. package/dist/jsx/fields/DateRange/index.native.js +0 -1
  712. package/dist/jsx/fields/DateRange/index.native.js.map +1 -1
  713. package/dist/jsx/fields/Duration/index.mjs +0 -2
  714. package/dist/jsx/fields/Duration/index.mjs.map +1 -1
  715. package/dist/jsx/fields/Duration/index.native.js +0 -2
  716. package/dist/jsx/fields/Duration/index.native.js.map +1 -1
  717. package/dist/jsx/fields/DynamicLink.mjs +1 -4
  718. package/dist/jsx/fields/DynamicLink.mjs.map +1 -1
  719. package/dist/jsx/fields/DynamicLink.native.js +1 -4
  720. package/dist/jsx/fields/DynamicLink.native.js.map +1 -1
  721. package/dist/jsx/fields/FileUpload.mjs +4 -4
  722. package/dist/jsx/fields/FileUpload.mjs.map +1 -1
  723. package/dist/jsx/fields/FileUpload.native.js +3 -3
  724. package/dist/jsx/fields/FileUpload.native.js.map +1 -1
  725. package/dist/jsx/fields/FileUploadField/index.mjs +14 -3
  726. package/dist/jsx/fields/FileUploadField/index.mjs.map +1 -1
  727. package/dist/jsx/fields/FileUploadField/index.native.js +18 -3
  728. package/dist/jsx/fields/FileUploadField/index.native.js.map +1 -1
  729. package/dist/jsx/fields/Geolocation/index.mjs +0 -1
  730. package/dist/jsx/fields/Geolocation/index.mjs.map +1 -1
  731. package/dist/jsx/fields/Geolocation/index.native.js +0 -1
  732. package/dist/jsx/fields/Geolocation/index.native.js.map +1 -1
  733. package/dist/jsx/fields/HTML/index.mjs +4 -4
  734. package/dist/jsx/fields/HTML/index.mjs.map +1 -1
  735. package/dist/jsx/fields/HTML/index.native.js +3 -3
  736. package/dist/jsx/fields/HTML/index.native.js.map +1 -1
  737. package/dist/jsx/fields/Heading/index.mjs +8 -8
  738. package/dist/jsx/fields/Heading/index.mjs.map +1 -1
  739. package/dist/jsx/fields/Heading/index.native.js +7 -7
  740. package/dist/jsx/fields/Heading/index.native.js.map +1 -1
  741. package/dist/jsx/fields/Icon/index.mjs +0 -1
  742. package/dist/jsx/fields/Icon/index.mjs.map +1 -1
  743. package/dist/jsx/fields/Icon/index.native.js +0 -1
  744. package/dist/jsx/fields/Icon/index.native.js.map +1 -1
  745. package/dist/jsx/fields/Link.mjs +0 -2
  746. package/dist/jsx/fields/Link.mjs.map +1 -1
  747. package/dist/jsx/fields/Link.native.js +0 -2
  748. package/dist/jsx/fields/Link.native.js.map +1 -1
  749. package/dist/jsx/fields/LinkTree.mjs +0 -2
  750. package/dist/jsx/fields/LinkTree.mjs.map +1 -1
  751. package/dist/jsx/fields/LinkTree.native.js +0 -2
  752. package/dist/jsx/fields/LinkTree.native.js.map +1 -1
  753. package/dist/jsx/fields/LongText/index.mjs +0 -1
  754. package/dist/jsx/fields/LongText/index.mjs.map +1 -1
  755. package/dist/jsx/fields/LongText/index.native.js +0 -1
  756. package/dist/jsx/fields/LongText/index.native.js.map +1 -1
  757. package/dist/jsx/fields/MarkdownEditor/index.mjs +4 -6
  758. package/dist/jsx/fields/MarkdownEditor/index.mjs.map +1 -1
  759. package/dist/jsx/fields/MarkdownEditor/index.native.js +6 -14
  760. package/dist/jsx/fields/MarkdownEditor/index.native.js.map +1 -1
  761. package/dist/jsx/fields/MentionInput/index.mjs +0 -1
  762. package/dist/jsx/fields/MentionInput/index.mjs.map +1 -1
  763. package/dist/jsx/fields/MentionInput/index.native.js +0 -1
  764. package/dist/jsx/fields/MentionInput/index.native.js.map +1 -1
  765. package/dist/jsx/fields/Numeric/index.mjs +5 -2
  766. package/dist/jsx/fields/Numeric/index.mjs.map +1 -1
  767. package/dist/jsx/fields/Numeric/index.native.js +5 -2
  768. package/dist/jsx/fields/Numeric/index.native.js.map +1 -1
  769. package/dist/jsx/fields/OTPInput/index.mjs +0 -1
  770. package/dist/jsx/fields/OTPInput/index.mjs.map +1 -1
  771. package/dist/jsx/fields/OTPInput/index.native.js +0 -1
  772. package/dist/jsx/fields/OTPInput/index.native.js.map +1 -1
  773. package/dist/jsx/fields/Password/index.mjs +2 -7
  774. package/dist/jsx/fields/Password/index.mjs.map +1 -1
  775. package/dist/jsx/fields/Password/index.native.js +2 -7
  776. package/dist/jsx/fields/Password/index.native.js.map +1 -1
  777. package/dist/jsx/fields/Phone/index.mjs +0 -1
  778. package/dist/jsx/fields/Phone/index.mjs.map +1 -1
  779. package/dist/jsx/fields/Phone/index.native.js +0 -1
  780. package/dist/jsx/fields/Phone/index.native.js.map +1 -1
  781. package/dist/jsx/fields/Progress/index.mjs +0 -1
  782. package/dist/jsx/fields/Progress/index.mjs.map +1 -1
  783. package/dist/jsx/fields/Progress/index.native.js +0 -1
  784. package/dist/jsx/fields/Progress/index.native.js.map +1 -1
  785. package/dist/jsx/fields/RadioGroup/index.mjs +0 -1
  786. package/dist/jsx/fields/RadioGroup/index.mjs.map +1 -1
  787. package/dist/jsx/fields/RadioGroup/index.native.js +0 -1
  788. package/dist/jsx/fields/RadioGroup/index.native.js.map +1 -1
  789. package/dist/jsx/fields/Rating/index.mjs +0 -1
  790. package/dist/jsx/fields/Rating/index.mjs.map +1 -1
  791. package/dist/jsx/fields/Rating/index.native.js +0 -1
  792. package/dist/jsx/fields/Rating/index.native.js.map +1 -1
  793. package/dist/jsx/fields/ReadOnly/index.mjs +6 -6
  794. package/dist/jsx/fields/ReadOnly/index.mjs.map +1 -1
  795. package/dist/jsx/fields/ReadOnly/index.native.js +5 -5
  796. package/dist/jsx/fields/ReadOnly/index.native.js.map +1 -1
  797. package/dist/jsx/fields/Select/index.mjs +0 -1
  798. package/dist/jsx/fields/Select/index.mjs.map +1 -1
  799. package/dist/jsx/fields/Select/index.native.js +0 -1
  800. package/dist/jsx/fields/Select/index.native.js.map +1 -1
  801. package/dist/jsx/fields/Signature/index.mjs +0 -1
  802. package/dist/jsx/fields/Signature/index.mjs.map +1 -1
  803. package/dist/jsx/fields/Signature/index.native.js +0 -1
  804. package/dist/jsx/fields/Signature/index.native.js.map +1 -1
  805. package/dist/jsx/fields/Slider/index.mjs +0 -1
  806. package/dist/jsx/fields/Slider/index.mjs.map +1 -1
  807. package/dist/jsx/fields/Slider/index.native.js +0 -1
  808. package/dist/jsx/fields/Slider/index.native.js.map +1 -1
  809. package/dist/jsx/fields/SmallText/index.mjs +0 -1
  810. package/dist/jsx/fields/SmallText/index.mjs.map +1 -1
  811. package/dist/jsx/fields/SmallText/index.native.js +0 -1
  812. package/dist/jsx/fields/SmallText/index.native.js.map +1 -1
  813. package/dist/jsx/fields/Switch/index.mjs +0 -1
  814. package/dist/jsx/fields/Switch/index.mjs.map +1 -1
  815. package/dist/jsx/fields/Switch/index.native.js +0 -1
  816. package/dist/jsx/fields/Switch/index.native.js.map +1 -1
  817. package/dist/jsx/fields/TableMultiSelect.mjs +1 -3
  818. package/dist/jsx/fields/TableMultiSelect.mjs.map +1 -1
  819. package/dist/jsx/fields/TableMultiSelect.native.js +1 -3
  820. package/dist/jsx/fields/TableMultiSelect.native.js.map +1 -1
  821. package/dist/jsx/fields/TextEditor/index.mjs +1 -3
  822. package/dist/jsx/fields/TextEditor/index.mjs.map +1 -1
  823. package/dist/jsx/fields/TextEditor/index.native.js +1 -3
  824. package/dist/jsx/fields/TextEditor/index.native.js.map +1 -1
  825. package/dist/jsx/fields/TimePicker/index.mjs +0 -2
  826. package/dist/jsx/fields/TimePicker/index.mjs.map +1 -1
  827. package/dist/jsx/fields/TimePicker/index.native.js +0 -2
  828. package/dist/jsx/fields/TimePicker/index.native.js.map +1 -1
  829. package/dist/jsx/fields/ToggleGroup/index.mjs +0 -1
  830. package/dist/jsx/fields/ToggleGroup/index.mjs.map +1 -1
  831. package/dist/jsx/fields/ToggleGroup/index.native.js +0 -1
  832. package/dist/jsx/fields/ToggleGroup/index.native.js.map +1 -1
  833. package/dist/jsx/fields/shared/EditorPreviewPanes.mjs +5 -11
  834. package/dist/jsx/fields/shared/EditorPreviewPanes.mjs.map +1 -1
  835. package/dist/jsx/fields/shared/EditorPreviewPanes.native.js +4 -10
  836. package/dist/jsx/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  837. package/dist/jsx/index.js +3 -2
  838. package/dist/jsx/index.js.map +1 -1
  839. package/dist/jsx/index.mjs +3 -2
  840. package/dist/jsx/index.mjs.map +1 -1
  841. package/dist/jsx/index.native.js +5 -0
  842. package/dist/jsx/index.native.js.map +1 -1
  843. package/dist/jsx/insights/InsightsFacetTags.mjs +1 -4
  844. package/dist/jsx/insights/InsightsFacetTags.mjs.map +1 -1
  845. package/dist/jsx/insights/InsightsFacetTags.native.js +1 -4
  846. package/dist/jsx/insights/InsightsFacetTags.native.js.map +1 -1
  847. package/dist/jsx/insights/InsightsKpiBand.mjs +1 -3
  848. package/dist/jsx/insights/InsightsKpiBand.mjs.map +1 -1
  849. package/dist/jsx/insights/InsightsKpiBand.native.js +1 -3
  850. package/dist/jsx/insights/InsightsKpiBand.native.js.map +1 -1
  851. package/dist/jsx/insights/InsightsLeaders.mjs +7 -8
  852. package/dist/jsx/insights/InsightsLeaders.mjs.map +1 -1
  853. package/dist/jsx/insights/InsightsLeaders.native.js +7 -8
  854. package/dist/jsx/insights/InsightsLeaders.native.js.map +1 -1
  855. package/dist/jsx/insights/InsightsRecords.mjs +1 -4
  856. package/dist/jsx/insights/InsightsRecords.mjs.map +1 -1
  857. package/dist/jsx/insights/InsightsRecords.native.js +1 -4
  858. package/dist/jsx/insights/InsightsRecords.native.js.map +1 -1
  859. package/dist/jsx/insights/InsightsTable.mjs +7 -8
  860. package/dist/jsx/insights/InsightsTable.mjs.map +1 -1
  861. package/dist/jsx/insights/InsightsTable.native.js +7 -8
  862. package/dist/jsx/insights/InsightsTable.native.js.map +1 -1
  863. package/dist/jsx/list/BandFilters.mjs +42 -0
  864. package/dist/jsx/list/BandFilters.mjs.map +1 -0
  865. package/dist/jsx/list/BandFilters.native.js +77 -0
  866. package/dist/jsx/list/BandFilters.native.js.map +1 -0
  867. package/dist/jsx/list/FacetBadge.mjs +7 -6
  868. package/dist/jsx/list/FacetBadge.mjs.map +1 -1
  869. package/dist/jsx/list/FacetBadge.native.js +6 -5
  870. package/dist/jsx/list/FacetBadge.native.js.map +1 -1
  871. package/dist/jsx/list/FacetList.mjs +126 -0
  872. package/dist/jsx/list/FacetList.mjs.map +1 -0
  873. package/dist/jsx/list/FacetList.native.js +170 -0
  874. package/dist/jsx/list/FacetList.native.js.map +1 -0
  875. package/dist/jsx/list/FacetRail.mjs +15 -9
  876. package/dist/jsx/list/FacetRail.mjs.map +1 -1
  877. package/dist/jsx/list/FacetRail.native.js +14 -8
  878. package/dist/jsx/list/FacetRail.native.js.map +1 -1
  879. package/dist/jsx/list/ImageWell.mjs +2 -2
  880. package/dist/jsx/list/ImageWell.mjs.map +1 -1
  881. package/dist/jsx/list/ImageWell.native.js +1 -1
  882. package/dist/jsx/list/ImageWell.native.js.map +1 -1
  883. package/dist/jsx/list/ListControls.mjs +90 -56
  884. package/dist/jsx/list/ListControls.mjs.map +1 -1
  885. package/dist/jsx/list/ListControls.native.js +100 -64
  886. package/dist/jsx/list/ListControls.native.js.map +1 -1
  887. package/dist/jsx/list/ListControlsSheet.mjs +326 -0
  888. package/dist/jsx/list/ListControlsSheet.mjs.map +1 -0
  889. package/dist/jsx/list/ListControlsSheet.native.js +426 -0
  890. package/dist/jsx/list/ListControlsSheet.native.js.map +1 -0
  891. package/dist/jsx/list/ListFilterPanel.mjs +144 -0
  892. package/dist/jsx/list/ListFilterPanel.mjs.map +1 -0
  893. package/dist/jsx/list/ListFilterPanel.native.js +195 -0
  894. package/dist/jsx/list/ListFilterPanel.native.js.map +1 -0
  895. package/dist/jsx/list/ListSidebarToolbar.mjs +179 -0
  896. package/dist/jsx/list/ListSidebarToolbar.mjs.map +1 -0
  897. package/dist/jsx/list/ListSidebarToolbar.native.js +221 -0
  898. package/dist/jsx/list/ListSidebarToolbar.native.js.map +1 -0
  899. package/dist/jsx/list/ListToolsSheet.mjs +202 -0
  900. package/dist/jsx/list/ListToolsSheet.mjs.map +1 -0
  901. package/dist/jsx/list/ListToolsSheet.native.js +261 -0
  902. package/dist/jsx/list/ListToolsSheet.native.js.map +1 -0
  903. package/dist/jsx/list/RangeFilter.mjs +101 -37
  904. package/dist/jsx/list/RangeFilter.mjs.map +1 -1
  905. package/dist/jsx/list/RangeFilter.native.js +106 -41
  906. package/dist/jsx/list/RangeFilter.native.js.map +1 -1
  907. package/dist/jsx/list/RecordCard.mjs +46 -48
  908. package/dist/jsx/list/RecordCard.mjs.map +1 -1
  909. package/dist/jsx/list/RecordCard.native.js +47 -46
  910. package/dist/jsx/list/RecordCard.native.js.map +1 -1
  911. package/dist/jsx/list/listColumns.mjs +9 -2
  912. package/dist/jsx/list/listColumns.mjs.map +1 -1
  913. package/dist/jsx/list/listColumns.native.js +8 -1
  914. package/dist/jsx/list/listColumns.native.js.map +1 -1
  915. package/dist/jsx/list/listControls.fixture.mjs +84 -0
  916. package/dist/jsx/list/listControls.fixture.mjs.map +1 -0
  917. package/dist/jsx/list/listControls.fixture.native.js +118 -0
  918. package/dist/jsx/list/listControls.fixture.native.js.map +1 -0
  919. package/dist/jsx/list/listState.mjs +23 -2
  920. package/dist/jsx/list/listState.mjs.map +1 -1
  921. package/dist/jsx/list/listState.native.js +95 -5
  922. package/dist/jsx/list/listState.native.js.map +1 -1
  923. package/dist/jsx/list/useListControls.mjs +27 -7
  924. package/dist/jsx/list/useListControls.mjs.map +1 -1
  925. package/dist/jsx/list/useListControls.native.js +74 -11
  926. package/dist/jsx/list/useListControls.native.js.map +1 -1
  927. package/dist/jsx/record/RecordBars.mjs +73 -133
  928. package/dist/jsx/record/RecordBars.mjs.map +1 -1
  929. package/dist/jsx/record/RecordBars.native.js +77 -150
  930. package/dist/jsx/record/RecordBars.native.js.map +1 -1
  931. package/dist/jsx/record/RecordGallery.mjs +22 -14
  932. package/dist/jsx/record/RecordGallery.mjs.map +1 -1
  933. package/dist/jsx/record/RecordGallery.native.js +22 -14
  934. package/dist/jsx/record/RecordGallery.native.js.map +1 -1
  935. package/dist/jsx/record/RecordHero.mjs +100 -129
  936. package/dist/jsx/record/RecordHero.mjs.map +1 -1
  937. package/dist/jsx/record/RecordHero.native.js +97 -132
  938. package/dist/jsx/record/RecordHero.native.js.map +1 -1
  939. package/dist/jsx/record/RecordPage.mjs +195 -161
  940. package/dist/jsx/record/RecordPage.mjs.map +1 -1
  941. package/dist/jsx/record/RecordPage.native.js +204 -169
  942. package/dist/jsx/record/RecordPage.native.js.map +1 -1
  943. package/dist/jsx/record/RecordPager.mjs +1 -4
  944. package/dist/jsx/record/RecordPager.mjs.map +1 -1
  945. package/dist/jsx/record/RecordPager.native.js +1 -4
  946. package/dist/jsx/record/RecordPager.native.js.map +1 -1
  947. package/dist/jsx/record/RecordRows.mjs +88 -61
  948. package/dist/jsx/record/RecordRows.mjs.map +1 -1
  949. package/dist/jsx/record/RecordRows.native.js +93 -60
  950. package/dist/jsx/record/RecordRows.native.js.map +1 -1
  951. package/dist/jsx/report/ReportGrid.mjs +0 -1
  952. package/dist/jsx/report/ReportGrid.mjs.map +1 -1
  953. package/dist/jsx/report/ReportGrid.native.js +0 -1
  954. package/dist/jsx/report/ReportGrid.native.js.map +1 -1
  955. package/dist/jsx/report/ReportViewToolbar.mjs +0 -1
  956. package/dist/jsx/report/ReportViewToolbar.mjs.map +1 -1
  957. package/dist/jsx/report/ReportViewToolbar.native.js +0 -1
  958. package/dist/jsx/report/ReportViewToolbar.native.js.map +1 -1
  959. package/dist/jsx/schemaForm/SchemaWizard.mjs +0 -2
  960. package/dist/jsx/schemaForm/SchemaWizard.mjs.map +1 -1
  961. package/dist/jsx/schemaForm/SchemaWizard.native.js +0 -2
  962. package/dist/jsx/schemaForm/SchemaWizard.native.js.map +1 -1
  963. package/dist/jsx/schemaForm/index.mjs +103 -9
  964. package/dist/jsx/schemaForm/index.mjs.map +1 -1
  965. package/dist/jsx/schemaForm/index.native.js +110 -9
  966. package/dist/jsx/schemaForm/index.native.js.map +1 -1
  967. package/dist/jsx/useFrappePagination.mjs +1 -1
  968. package/dist/jsx/useFrappePagination.mjs.map +1 -1
  969. package/dist/jsx/useFrappePagination.native.js +1 -1
  970. package/dist/jsx/useFrappePagination.native.js.map +1 -1
  971. package/package.json +16 -16
  972. package/src/FileBrowser/FileBrowser.stories.tsx +3 -3
  973. package/src/FileBrowser/index.tsx +3 -5
  974. package/src/FormSidebar.stories.tsx +1 -1
  975. package/src/FormSidebar.tsx +1 -1
  976. package/src/FrappeAssignment.tsx +2 -2
  977. package/src/FrappeCalendar.radius.spec.tsx +33 -8
  978. package/src/FrappeCalendar.tsx +3 -3
  979. package/src/FrappeChartCard.stories.tsx +4 -4
  980. package/src/FrappeChartCard.tsx +3 -3
  981. package/src/FrappeConnectionIndicator.stories.tsx +2 -2
  982. package/src/FrappeDashboard.spec.tsx +10 -7
  983. package/src/FrappeForm.lifecycle.spec.tsx +1 -1
  984. package/src/FrappeForm.routedPage.spec.tsx +121 -0
  985. package/src/FrappeForm.stories.tsx +4 -4
  986. package/src/FrappeForm.tsx +117 -17
  987. package/src/FrappeFormActions.tsx +71 -18
  988. package/src/FrappeFormConnections.tsx +1 -1
  989. package/src/FrappeKPICard.tsx +2 -2
  990. package/src/FrappeLikedBy.tsx +1 -1
  991. package/src/FrappeListView.controls.spec.tsx +44 -1
  992. package/src/FrappeListView.sidebar.spec.tsx +225 -0
  993. package/src/FrappeListView.spec.tsx +11 -8
  994. package/src/FrappeListView.tsx +189 -43
  995. package/src/FrappeReconnectIndicator.stories.tsx +2 -2
  996. package/src/FrappeRecordView.spec.tsx +47 -14
  997. package/src/FrappeRecordView.tsx +18 -31
  998. package/src/FrappeReportBuilder.tsx +1 -1
  999. package/src/FrappeReportView.tsx +0 -4
  1000. package/src/FrappeTable.tsx +0 -5
  1001. package/src/SyncErrorNotice.stories.tsx +1 -1
  1002. package/src/components/timeline.stories.tsx +1 -1
  1003. package/src/desk/Awesomebar.stories.tsx +3 -3
  1004. package/src/desk/DeskFormSidebar.stories.tsx +3 -3
  1005. package/src/desk/DeskShell.tsx +17 -17
  1006. package/src/desk/awesomebar.tsx +5 -2
  1007. package/src/fieldRegistry.spec.tsx +1 -4
  1008. package/src/fieldRegistry.ts +23 -10
  1009. package/src/fields/Barcode/index.tsx +0 -2
  1010. package/src/fields/Check/Check.stories.tsx +1 -1
  1011. package/src/fields/Check/index.tsx +0 -2
  1012. package/src/fields/CodeEditor/CodeEditor.spec.tsx +2 -3
  1013. package/src/fields/CodeEditor/CodeEditor.stories.tsx +1 -2
  1014. package/src/fields/CodeEditor/index.tsx +9 -13
  1015. package/src/fields/Color/Color.stories.tsx +1 -1
  1016. package/src/fields/Color/index.tsx +0 -2
  1017. package/src/fields/Data/Data.stories.tsx +1 -1
  1018. package/src/fields/Data/index.tsx +0 -2
  1019. package/src/fields/Date/Date.stories.tsx +3 -3
  1020. package/src/fields/Date/catalog.tsx +0 -3
  1021. package/src/fields/Date/index.native.tsx +4 -5
  1022. package/src/fields/Date/types.ts +0 -1
  1023. package/src/fields/DateRange/DateRange.spec.tsx +1 -3
  1024. package/src/fields/DateRange/index.tsx +0 -2
  1025. package/src/fields/Duration/index.tsx +1 -4
  1026. package/src/fields/DynamicLink.tsx +0 -4
  1027. package/src/fields/FileUpload.tsx +4 -5
  1028. package/src/fields/FileUploadField/FileUploadField.spec.tsx +38 -0
  1029. package/src/fields/FileUploadField/index.tsx +20 -3
  1030. package/src/fields/Geolocation/index.tsx +0 -2
  1031. package/src/fields/HTML/Html.spec.tsx +1 -3
  1032. package/src/fields/HTML/Html.stories.tsx +1 -1
  1033. package/src/fields/HTML/index.tsx +18 -19
  1034. package/src/fields/Heading/Heading.stories.tsx +2 -2
  1035. package/src/fields/Heading/index.tsx +8 -9
  1036. package/src/fields/Icon/Icon.stories.tsx +2 -3
  1037. package/src/fields/Icon/index.tsx +0 -2
  1038. package/src/fields/Link.tsx +4 -5
  1039. package/src/fields/LinkTree.stories.tsx +3 -3
  1040. package/src/fields/LinkTree.tsx +0 -2
  1041. package/src/fields/LongText/index.tsx +0 -2
  1042. package/src/fields/MarkdownEditor/MarkdownEditor.spec.tsx +1 -3
  1043. package/src/fields/MarkdownEditor/MarkdownEditor.stories.tsx +1 -2
  1044. package/src/fields/MarkdownEditor/index.native.tsx +9 -13
  1045. package/src/fields/MarkdownEditor/index.tsx +4 -6
  1046. package/src/fields/MentionInput/index.tsx +0 -2
  1047. package/src/fields/Numeric/Numeric.hug.spec.tsx +54 -0
  1048. package/src/fields/Numeric/index.tsx +8 -2
  1049. package/src/fields/OTPInput/OTPInput.spec.tsx +2 -3
  1050. package/src/fields/OTPInput/index.tsx +0 -2
  1051. package/src/fields/Password/Password.errorTint.spec.tsx +39 -0
  1052. package/src/fields/Password/Password.spec.tsx +3 -3
  1053. package/src/fields/Password/index.tsx +2 -9
  1054. package/src/fields/Phone/index.tsx +0 -2
  1055. package/src/fields/Progress/Progress.spec.tsx +5 -7
  1056. package/src/fields/Progress/index.tsx +0 -2
  1057. package/src/fields/RadioGroup/index.tsx +0 -2
  1058. package/src/fields/Rating/index.tsx +0 -2
  1059. package/src/fields/ReadOnly/ReadOnly.stories.tsx +1 -1
  1060. package/src/fields/ReadOnly/index.tsx +6 -6
  1061. package/src/fields/Select/Select.stories.tsx +1 -1
  1062. package/src/fields/Select/index.tsx +0 -2
  1063. package/src/fields/Signature/index.tsx +0 -2
  1064. package/src/fields/Slider/index.tsx +0 -2
  1065. package/src/fields/SmallText/SmallText.spec.tsx +2 -3
  1066. package/src/fields/SmallText/index.tsx +0 -2
  1067. package/src/fields/Switch/index.tsx +0 -2
  1068. package/src/fields/TableMultiSelect.tsx +0 -3
  1069. package/src/fields/TextEditor/index.native.tsx +1 -3
  1070. package/src/fields/TextEditor/index.tsx +1 -3
  1071. package/src/fields/TextEditor/types.ts +1 -3
  1072. package/src/fields/TimePicker/index.tsx +1 -4
  1073. package/src/fields/ToggleGroup/index.tsx +0 -2
  1074. package/src/fields/shared/EditorPreviewPanes.tsx +6 -9
  1075. package/src/frappeEventColor.spec.ts +1 -0
  1076. package/src/index.ts +9 -0
  1077. package/src/insights/InsightsFacetTags.tsx +1 -2
  1078. package/src/insights/InsightsKpiBand.tsx +3 -3
  1079. package/src/insights/InsightsLeaders.tsx +7 -6
  1080. package/src/insights/InsightsRecords.tsx +2 -2
  1081. package/src/insights/InsightsTable.tsx +7 -6
  1082. package/src/list/BandFilters.tsx +32 -0
  1083. package/src/list/FacetBadge.tsx +11 -9
  1084. package/src/list/FacetList.tsx +172 -0
  1085. package/src/list/FacetRail.spec.tsx +61 -0
  1086. package/src/list/FacetRail.tsx +13 -9
  1087. package/src/list/ImageWell.tsx +2 -2
  1088. package/src/list/ListControls.spec.tsx +107 -0
  1089. package/src/list/ListControls.tsx +110 -62
  1090. package/src/list/ListControlsSheet.spec.tsx +42 -0
  1091. package/src/list/ListControlsSheet.tsx +342 -0
  1092. package/src/list/ListFilterPanel.tsx +140 -0
  1093. package/src/list/ListSidebarToolbar.tsx +193 -0
  1094. package/src/list/ListToolsSheet.spec.tsx +82 -0
  1095. package/src/list/ListToolsSheet.tsx +219 -0
  1096. package/src/list/RangeFilter.spec.tsx +88 -0
  1097. package/src/list/RangeFilter.tsx +125 -38
  1098. package/src/list/RecordCard.native.tsx +57 -48
  1099. package/src/list/RecordCard.spec.tsx +56 -0
  1100. package/src/list/RecordCard.tsx +51 -47
  1101. package/src/list/listColumns.spec.tsx +35 -2
  1102. package/src/list/listColumns.tsx +15 -2
  1103. package/src/list/listControls.fixture.ts +67 -0
  1104. package/src/list/listState.spec.ts +67 -0
  1105. package/src/list/listState.ts +65 -7
  1106. package/src/list/useListControls.tsx +26 -4
  1107. package/src/record/RecordBars.tsx +86 -147
  1108. package/src/record/RecordGallery.tsx +17 -10
  1109. package/src/record/RecordHero.tsx +82 -114
  1110. package/src/record/RecordPage.tsx +197 -170
  1111. package/src/record/RecordPager.tsx +2 -2
  1112. package/src/record/RecordRows.tsx +87 -46
  1113. package/src/report/ReportGrid.tsx +0 -1
  1114. package/src/report/ReportViewToolbar.tsx +0 -1
  1115. package/src/schemaForm/SchemaForm.flat.spec.tsx +192 -0
  1116. package/src/schemaForm/SchemaForm.spec.tsx +1 -1
  1117. package/src/schemaForm/SchemaWizard.tsx +0 -3
  1118. package/src/schemaForm/index.tsx +150 -31
  1119. package/src/useFrappePagination.ts +9 -7
  1120. package/types/FileBrowser/index.d.ts.map +1 -1
  1121. package/types/FrappeForm.d.ts +12 -0
  1122. package/types/FrappeForm.d.ts.map +1 -1
  1123. package/types/FrappeFormActions.d.ts +20 -1
  1124. package/types/FrappeFormActions.d.ts.map +1 -1
  1125. package/types/FrappeListView.d.ts +18 -1
  1126. package/types/FrappeListView.d.ts.map +1 -1
  1127. package/types/FrappeRecordView.d.ts +5 -5
  1128. package/types/FrappeRecordView.d.ts.map +1 -1
  1129. package/types/FrappeReportView.d.ts.map +1 -1
  1130. package/types/FrappeTable.d.ts +0 -5
  1131. package/types/FrappeTable.d.ts.map +1 -1
  1132. package/types/desk/DeskShell.d.ts.map +1 -1
  1133. package/types/desk/awesomebar.d.ts.map +1 -1
  1134. package/types/fieldRegistry.d.ts +8 -2
  1135. package/types/fieldRegistry.d.ts.map +1 -1
  1136. package/types/fields/Barcode/index.d.ts +0 -1
  1137. package/types/fields/Barcode/index.d.ts.map +1 -1
  1138. package/types/fields/Check/index.d.ts +0 -1
  1139. package/types/fields/Check/index.d.ts.map +1 -1
  1140. package/types/fields/CodeEditor/index.d.ts +1 -2
  1141. package/types/fields/CodeEditor/index.d.ts.map +1 -1
  1142. package/types/fields/Color/index.d.ts +0 -1
  1143. package/types/fields/Color/index.d.ts.map +1 -1
  1144. package/types/fields/Data/index.d.ts +0 -1
  1145. package/types/fields/Data/index.d.ts.map +1 -1
  1146. package/types/fields/Date/catalog.d.ts.map +1 -1
  1147. package/types/fields/Date/index.native.d.ts.map +1 -1
  1148. package/types/fields/Date/types.d.ts +0 -1
  1149. package/types/fields/Date/types.d.ts.map +1 -1
  1150. package/types/fields/DateRange/index.d.ts +0 -1
  1151. package/types/fields/DateRange/index.d.ts.map +1 -1
  1152. package/types/fields/Duration/index.d.ts.map +1 -1
  1153. package/types/fields/DynamicLink.d.ts +1 -2
  1154. package/types/fields/DynamicLink.d.ts.map +1 -1
  1155. package/types/fields/FileUpload.d.ts +1 -2
  1156. package/types/fields/FileUpload.d.ts.map +1 -1
  1157. package/types/fields/FileUploadField/index.d.ts +2 -1
  1158. package/types/fields/FileUploadField/index.d.ts.map +1 -1
  1159. package/types/fields/Geolocation/index.d.ts +0 -1
  1160. package/types/fields/Geolocation/index.d.ts.map +1 -1
  1161. package/types/fields/HTML/index.d.ts +1 -2
  1162. package/types/fields/HTML/index.d.ts.map +1 -1
  1163. package/types/fields/Heading/index.d.ts +1 -2
  1164. package/types/fields/Heading/index.d.ts.map +1 -1
  1165. package/types/fields/Icon/index.d.ts +0 -1
  1166. package/types/fields/Icon/index.d.ts.map +1 -1
  1167. package/types/fields/Link.d.ts +4 -3
  1168. package/types/fields/Link.d.ts.map +1 -1
  1169. package/types/fields/LinkTree.d.ts +1 -1
  1170. package/types/fields/LinkTree.d.ts.map +1 -1
  1171. package/types/fields/LongText/index.d.ts +0 -1
  1172. package/types/fields/LongText/index.d.ts.map +1 -1
  1173. package/types/fields/MarkdownEditor/index.d.ts +1 -2
  1174. package/types/fields/MarkdownEditor/index.d.ts.map +1 -1
  1175. package/types/fields/MarkdownEditor/index.native.d.ts +1 -2
  1176. package/types/fields/MarkdownEditor/index.native.d.ts.map +1 -1
  1177. package/types/fields/MentionInput/index.d.ts +0 -1
  1178. package/types/fields/MentionInput/index.d.ts.map +1 -1
  1179. package/types/fields/Numeric/index.d.ts +4 -1
  1180. package/types/fields/Numeric/index.d.ts.map +1 -1
  1181. package/types/fields/OTPInput/index.d.ts +0 -1
  1182. package/types/fields/OTPInput/index.d.ts.map +1 -1
  1183. package/types/fields/Password/index.d.ts +0 -1
  1184. package/types/fields/Password/index.d.ts.map +1 -1
  1185. package/types/fields/Phone/index.d.ts +0 -1
  1186. package/types/fields/Phone/index.d.ts.map +1 -1
  1187. package/types/fields/Progress/index.d.ts +0 -1
  1188. package/types/fields/Progress/index.d.ts.map +1 -1
  1189. package/types/fields/RadioGroup/index.d.ts +0 -1
  1190. package/types/fields/RadioGroup/index.d.ts.map +1 -1
  1191. package/types/fields/Rating/index.d.ts +0 -1
  1192. package/types/fields/Rating/index.d.ts.map +1 -1
  1193. package/types/fields/ReadOnly/index.d.ts +1 -2
  1194. package/types/fields/ReadOnly/index.d.ts.map +1 -1
  1195. package/types/fields/Select/index.d.ts +0 -1
  1196. package/types/fields/Select/index.d.ts.map +1 -1
  1197. package/types/fields/Signature/index.d.ts +0 -1
  1198. package/types/fields/Signature/index.d.ts.map +1 -1
  1199. package/types/fields/Slider/index.d.ts +0 -1
  1200. package/types/fields/Slider/index.d.ts.map +1 -1
  1201. package/types/fields/SmallText/index.d.ts +0 -1
  1202. package/types/fields/SmallText/index.d.ts.map +1 -1
  1203. package/types/fields/Switch/index.d.ts +0 -1
  1204. package/types/fields/Switch/index.d.ts.map +1 -1
  1205. package/types/fields/TableMultiSelect.d.ts +1 -2
  1206. package/types/fields/TableMultiSelect.d.ts.map +1 -1
  1207. package/types/fields/TextEditor/index.d.ts +1 -1
  1208. package/types/fields/TextEditor/index.d.ts.map +1 -1
  1209. package/types/fields/TextEditor/index.native.d.ts +1 -1
  1210. package/types/fields/TextEditor/index.native.d.ts.map +1 -1
  1211. package/types/fields/TextEditor/types.d.ts +1 -3
  1212. package/types/fields/TextEditor/types.d.ts.map +1 -1
  1213. package/types/fields/TimePicker/index.d.ts.map +1 -1
  1214. package/types/fields/ToggleGroup/index.d.ts +0 -1
  1215. package/types/fields/ToggleGroup/index.d.ts.map +1 -1
  1216. package/types/fields/shared/EditorPreviewPanes.d.ts +2 -4
  1217. package/types/fields/shared/EditorPreviewPanes.d.ts.map +1 -1
  1218. package/types/index.d.ts +2 -1
  1219. package/types/index.d.ts.map +1 -1
  1220. package/types/insights/InsightsFacetTags.d.ts.map +1 -1
  1221. package/types/insights/InsightsLeaders.d.ts.map +1 -1
  1222. package/types/insights/InsightsTable.d.ts.map +1 -1
  1223. package/types/list/BandFilters.d.ts +11 -0
  1224. package/types/list/BandFilters.d.ts.map +1 -0
  1225. package/types/list/FacetBadge.d.ts +5 -4
  1226. package/types/list/FacetBadge.d.ts.map +1 -1
  1227. package/types/list/FacetList.d.ts +20 -0
  1228. package/types/list/FacetList.d.ts.map +1 -0
  1229. package/types/list/FacetRail.d.ts.map +1 -1
  1230. package/types/list/ListControls.d.ts +12 -3
  1231. package/types/list/ListControls.d.ts.map +1 -1
  1232. package/types/list/ListControlsSheet.d.ts +19 -0
  1233. package/types/list/ListControlsSheet.d.ts.map +1 -0
  1234. package/types/list/ListFilterPanel.d.ts +18 -0
  1235. package/types/list/ListFilterPanel.d.ts.map +1 -0
  1236. package/types/list/ListSidebarToolbar.d.ts +35 -0
  1237. package/types/list/ListSidebarToolbar.d.ts.map +1 -0
  1238. package/types/list/ListToolsSheet.d.ts +19 -0
  1239. package/types/list/ListToolsSheet.d.ts.map +1 -0
  1240. package/types/list/RangeFilter.d.ts +7 -1
  1241. package/types/list/RangeFilter.d.ts.map +1 -1
  1242. package/types/list/RecordCard.d.ts.map +1 -1
  1243. package/types/list/RecordCard.native.d.ts.map +1 -1
  1244. package/types/list/listColumns.d.ts.map +1 -1
  1245. package/types/list/listControls.fixture.d.ts +6 -0
  1246. package/types/list/listControls.fixture.d.ts.map +1 -0
  1247. package/types/list/listState.d.ts +31 -3
  1248. package/types/list/listState.d.ts.map +1 -1
  1249. package/types/list/useListControls.d.ts +2 -0
  1250. package/types/list/useListControls.d.ts.map +1 -1
  1251. package/types/record/RecordBars.d.ts +7 -3
  1252. package/types/record/RecordBars.d.ts.map +1 -1
  1253. package/types/record/RecordGallery.d.ts +4 -6
  1254. package/types/record/RecordGallery.d.ts.map +1 -1
  1255. package/types/record/RecordHero.d.ts +9 -18
  1256. package/types/record/RecordHero.d.ts.map +1 -1
  1257. package/types/record/RecordPage.d.ts +12 -4
  1258. package/types/record/RecordPage.d.ts.map +1 -1
  1259. package/types/record/RecordRows.d.ts +12 -1
  1260. package/types/record/RecordRows.d.ts.map +1 -1
  1261. package/types/report/ReportGrid.d.ts.map +1 -1
  1262. package/types/report/ReportViewToolbar.d.ts.map +1 -1
  1263. package/types/schemaForm/SchemaWizard.d.ts +1 -2
  1264. package/types/schemaForm/SchemaWizard.d.ts.map +1 -1
  1265. package/types/schemaForm/index.d.ts +8 -1
  1266. package/types/schemaForm/index.d.ts.map +1 -1
  1267. package/types/useFrappePagination.d.ts +3 -3
  1268. package/types/useFrappePagination.d.ts.map +1 -1
@@ -1,9 +1,11 @@
1
+ import { getSize } from "@tamagui/get-token";
2
+ import { getVariableValue, type SizeTokens } from "tamagui";
1
3
  // FrappeListView toolbar refresh — LC-54 PRESS-FLOOR-CHANNEL (amendment
2
4
  // 2026-08-13, "the grown box NEVER PAINTS"): the refresh affordance used to
3
5
  // be a raw tamagui Button riding a grown transparent press target (negative
4
6
  // outsets escaping the toolbar slot) whose default hover fill painted the
5
7
  // whole escaped 44px floor. The fix migrates it to the house forms Button
6
- // with `circular` — the painted box ITSELF is the 44×44 control, so feedback
8
+ // with `circular` — the painted box itself follows the control token, so feedback
7
9
  // stays inside its own reserved layout slot (box-is-control mechanism).
8
10
  // Same atom-based assertions as FrappeDashboard.spec.tsx (jsdom can't apply
9
11
  // :hover; the positive control proving the detectors work lives there).
@@ -121,16 +123,17 @@ const refreshIn = async (container: HTMLElement) => {
121
123
  };
122
124
 
123
125
  describe("FrappeListView refresh press floor (LC-54 amendment)", () => {
124
- it("the refresh floor is its own box — no grown-target negative outset", async () => {
126
+ it("desktop refresh keeps its token box and restores the press floor with slop", async () => {
125
127
  const { container } = renderListView();
126
128
  const refresh = await refreshIn(container);
127
129
  expect(refresh.getAttribute("role")).toBe("button");
128
- // House circular Button: the 44px floor is REAL layout (box-is-control);
129
- // the escape mechanism (negative margins pulling the grown box over the
130
- // adjacent Add button) must be gone.
131
130
  expect(refresh.className).not.toMatch(negativeMarginAtom);
132
- expect(refresh.className).toMatch(/_mih-44px/);
133
- expect(refresh.className).toMatch(/_miw-44px/);
131
+ const token = refresh.getAttribute("data-size-token") as SizeTokens;
132
+ const px = Number(getVariableValue(getSize(token)));
133
+ expect(refresh.className).toContain(`_mih-${px}px`);
134
+ expect(refresh.className).toContain(`_miw-${px}px`);
135
+ const slop = Number(refresh.getAttribute("data-mp-press-slop") ?? 0);
136
+ expect(px + slop * 2).toBeGreaterThanOrEqual(44);
134
137
  });
135
138
 
136
139
  it("hover feedback rides the button's own in-slot box (house channel)", async () => {
@@ -169,7 +172,7 @@ describe("FrappeListView design-law (avatar + type)", () => {
169
172
  return node as HTMLElement;
170
173
  });
171
174
  expect(avatar.getAttribute("data-avatar-nested")).toBe("true");
172
- expect(Number(avatar.getAttribute("data-avatar-px"))).toBe(32);
175
+ expect(Number(avatar.getAttribute("data-avatar-px"))).toBe(29);
173
176
  expect(Number(avatar.getAttribute("data-avatar-px"))).not.toBe(40);
174
177
  });
175
178
 
@@ -2,6 +2,7 @@ import { useDocTypeMeta } from "@multiplatform.one/frappe";
2
2
  import type { DataTableColumn } from "@multiplatform.one/table";
3
3
  import {
4
4
  ArrowsClockwiseIcon,
5
+ DiceFiveIcon,
5
6
  HeartIcon,
6
7
  ImageIcon,
7
8
  ListIcon,
@@ -26,9 +27,15 @@ import {
26
27
  ViewSwitcher,
27
28
  componentColors,
28
29
  showToast,
30
+ type DropdownMenuEntry,
29
31
  type ImageGridProps,
30
32
  } from "@multiplatform.one/components";
31
- import { pressTargetStyle, useResolvedKnobs } from "@multiplatform.one/theme";
33
+ import {
34
+ containerCapProps,
35
+ pressTargetStyle,
36
+ useLayoutSizeClass,
37
+ useResolvedKnobs,
38
+ } from "@multiplatform.one/theme";
32
39
  import { storage } from "@multiplatform.one/store";
33
40
  import { useFrappeConfig } from "./FrappeProvider";
34
41
  import { FrappeList, type FrappeListProps } from "./FrappeList";
@@ -42,17 +49,21 @@ import { isPermissionError } from "./liveErrors";
42
49
  import { favoritesKey } from "./list/favorites";
43
50
  import { RecordCard } from "./list/RecordCard";
44
51
  import { recordTitle, type FrappeRecordLook } from "./list/recordLook";
45
- import { ListControls } from "./list/ListControls";
52
+ import { ListControls, type ListControlsProps } from "./list/ListControls";
53
+ import { ListControlsSheet } from "./list/ListControlsSheet";
46
54
  import {
47
55
  isListNarrowed,
48
56
  listStateFilters,
49
57
  listStateOrderBy,
50
58
  type FrappeListControls,
59
+ type FrappeListBand,
51
60
  type FrappeListFacet,
52
61
  type FrappeListFilter,
53
62
  type FrappeListRange,
54
63
  type FrappeListSort,
55
64
  } from "./list/listState";
65
+ import { ListFilterPanel } from "./list/ListFilterPanel";
66
+ import { ListSidebarToolbar } from "./list/ListSidebarToolbar";
56
67
  import { ListToastHost } from "./list/ListToastHost";
57
68
  import { ShufflePanel } from "./list/ShufflePanel";
58
69
  import { useListControls } from "./list/useListControls";
@@ -189,6 +200,15 @@ export interface FrappeListViewProps<TDoc extends { name: string; doctype: strin
189
200
  facets?: readonly FrappeListFacet[];
190
201
  /** One minimum-value slider per numeric field. */
191
202
  ranges?: readonly FrappeListRange[];
203
+ /** One choice of named spans per numeric field (a Pokédex generation). */
204
+ bands?: readonly FrappeListBand[];
205
+ /**
206
+ * Where a routed list's filters live. `band` (default): a band above the
207
+ * results. `sidebar`: the page's one sidebar beside the header and
208
+ * results from `md` up; below it a Filters button opens the same filters
209
+ * in a bottom sheet and the header's secondary actions move to a ⋯ menu.
210
+ */
211
+ filterPlacement?: "band" | "sidebar";
192
212
  /**
193
213
  * Star records on this device and filter to them: true keys the stars by
194
214
  * doctype, a string names the storage key.
@@ -201,6 +221,14 @@ export interface FrappeListViewProps<TDoc extends { name: string; doctype: strin
201
221
  * refresh or a shared link reproduces the list.
202
222
  */
203
223
  urlState?: boolean;
224
+ /**
225
+ * `sheet` folds sort, favorites, facets and ranges into a Filters sheet
226
+ * behind a counted button, with the view switch beside the active-filter
227
+ * chips instead of in the page header (the phone layout). A routed list
228
+ * with `filterPlacement="sidebar"` already opens its filters in a phone
229
+ * sheet, so the sidebar wins and this layout applies only without it.
230
+ */
231
+ controlsLayout?: "band" | "sheet";
204
232
  baseURL?: string;
205
233
  auth?: { useToken?: boolean; token?: string; type?: string };
206
234
  syncOptions?: Record<string, unknown>;
@@ -307,9 +335,12 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
307
335
  searchPlaceholder,
308
336
  facets,
309
337
  ranges,
338
+ bands,
339
+ filterPlacement = "band",
310
340
  favorites,
311
341
  shuffle,
312
342
  urlState = false,
343
+ controlsLayout = "band",
313
344
  baseURL,
314
345
  auth,
315
346
  syncOptions,
@@ -547,11 +578,12 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
547
578
  sorts,
548
579
  facets,
549
580
  ranges,
581
+ bands,
550
582
  views: hasCards ? ["grid", "list", "table"] : ["list", "table"],
551
583
  defaultView: defaultViewMode,
552
584
  };
553
585
  const hasControls = Boolean(
554
- sorts?.length || facets?.length || ranges?.length || favorites || shuffle,
586
+ sorts?.length || facets?.length || ranges?.length || bands?.length || favorites || shuffle,
555
587
  );
556
588
  const favoritesStorageKey = favorites
557
589
  ? typeof favorites === "string"
@@ -566,7 +598,7 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
566
598
  limit,
567
599
  favoritesKey: favoritesStorageKey,
568
600
  router: urlState ? router : undefined,
569
- readBase: Boolean(subtitle || facets?.length || ranges?.length),
601
+ readBase: Boolean(subtitle || facets?.length || ranges?.length || bands?.length),
570
602
  });
571
603
  const updateList = list.update;
572
604
 
@@ -592,6 +624,7 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
592
624
  const controlsKey = JSON.stringify({
593
625
  facets: facets?.map((facet) => [facet.param, facet.field, facet.doctype]),
594
626
  ranges: ranges?.map((range) => [range.param, range.field]),
627
+ bands: bands?.map((band) => [band.param, band.field, band.options]),
595
628
  sorts: sorts?.map((sort) => [sort.value, sort.orderBy]),
596
629
  });
597
630
  const controlFilters = useMemo(() => {
@@ -834,20 +867,70 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
834
867
  }, [searchId, showSearch]);
835
868
 
836
869
  const headerOwnsTools = route !== undefined && !showToolbar;
870
+ // responsive-parity: below md these actions move to ListSidebarToolbar's ⋯ menu.
871
+ const sidebarFilters = filterPlacement === "sidebar" && route !== undefined && hasControls;
872
+ const secondaryHidden = sidebarFilters ? { "$max-md": { display: "none" as const } } : {};
873
+ // The sidebar's phone sheet already folds the filters away, so the Filters
874
+ // sheet layout applies only to a list without one (one sheet per page).
875
+ const sheetControls = hasControls && controlsLayout === "sheet" && !sidebarFilters;
876
+ // On the house compact class the view switcher leaves the page header for
877
+ // the list's one control row, icon-only (§ ListControls rows).
878
+ const compact = useLayoutSizeClass() === "compact";
879
+ const switcherOnControls =
880
+ headerOwnsTools && compact && hasControls && !sidebarFilters && !sheetControls;
881
+ // The Filters sheet layout draws the view switch beside its chips instead.
882
+ const headerOwnsViews = headerOwnsTools && !switcherOnControls && !sheetControls;
837
883
  const pressFor = (action: FrappeListAction) =>
838
884
  action.onPress ?? (action.href && navigate ? () => navigate(action.href as string) : undefined);
885
+ const viewChoices: Array<{ type: ListViewMode; label: string; icon: typeof ImageIcon }> = [
886
+ ...(hasCards ? [{ type: "grid" as const, label: t("Cards"), icon: ImageIcon }] : []),
887
+ { type: "list", label: t("List"), icon: ListIcon },
888
+ { type: "table", label: t("Table"), icon: TableIcon },
889
+ ];
890
+ const menuItems: DropdownMenuEntry[] = sidebarFilters
891
+ ? [
892
+ ...(actions ?? []).map((action) => {
893
+ const Icon = action.icon;
894
+ return {
895
+ key: `action-${action.label}`,
896
+ label: action.label,
897
+ icon: Icon ? <Icon size={16} /> : undefined,
898
+ onSelect: pressFor(action),
899
+ };
900
+ }),
901
+ ...(shuffle
902
+ ? [
903
+ {
904
+ key: "shuffle",
905
+ label: t("Surprise me"),
906
+ icon: <DiceFiveIcon size={16} />,
907
+ onSelect: () => setShuffleOpen((open) => !open),
908
+ },
909
+ ]
910
+ : []),
911
+ ...(headerOwnsTools
912
+ ? [
913
+ ...((actions?.length ?? 0) > 0 || shuffle ? [{ separator: true as const }] : []),
914
+ ...viewChoices.map((view) => ({
915
+ key: `view-${view.type}`,
916
+ label: view.label,
917
+ icon: <view.icon size={16} />,
918
+ checked: viewMode === view.type,
919
+ closeOnSelect: true,
920
+ onSelect: () => setViewMode(view.type),
921
+ })),
922
+ ]
923
+ : []),
924
+ ]
925
+ : [];
839
926
  const headerActions =
840
- headerOwnsTools || headerAccessory || actions?.length ? (
927
+ headerOwnsViews || (headerOwnsTools && onAdd) || headerAccessory || actions?.length ? (
841
928
  <XStack {...knobProps.gap} alignItems="center" flexWrap="wrap" flexShrink={1} minWidth={0}>
842
- {headerOwnsTools ? (
929
+ {headerOwnsViews ? (
843
930
  <Tooltip content={t("Switch views")}>
844
- <XStack>
931
+ <XStack {...secondaryHidden}>
845
932
  <ViewSwitcher
846
- views={[
847
- ...(hasCards ? [{ type: "grid", label: t("Cards"), icon: ImageIcon }] : []),
848
- { type: "list", label: t("List"), icon: ListIcon },
849
- { type: "table", label: t("Table"), icon: TableIcon },
850
- ]}
933
+ views={viewChoices}
851
934
  currentView={viewMode}
852
935
  onViewChange={(v) => setViewMode(v as ListViewMode)}
853
936
  />
@@ -858,9 +941,26 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
858
941
  {actions?.map((action) => {
859
942
  const Icon = action.icon;
860
943
  const onPress = pressFor(action);
944
+ if (sidebarFilters) {
945
+ return (
946
+ <XStack key={action.label} {...secondaryHidden}>
947
+ <Tooltip content={action.hint ?? action.label}>
948
+ <Button
949
+ outlined
950
+ onPress={onPress}
951
+ icon={Icon ? <Icon size={16} /> : undefined}
952
+ testID={action.testID}
953
+ >
954
+ {action.label}
955
+ </Button>
956
+ </Tooltip>
957
+ </XStack>
958
+ );
959
+ }
861
960
  return (
862
961
  <React.Fragment key={action.label}>
863
962
  <Tooltip content={action.hint ?? action.label}>
963
+ {/* responsive-parity: the circular icon twin below carries this action on phones */}
864
964
  <Button
865
965
  outlined
866
966
  onPress={onPress}
@@ -885,6 +985,7 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
885
985
  })}
886
986
  {headerOwnsTools && onAdd ? (
887
987
  <>
988
+ {/* responsive-parity: the short "Add" twin below carries this action on phones */}
888
989
  <Button
889
990
  theme="accent"
890
991
  onPress={onAdd}
@@ -907,43 +1008,82 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
907
1008
  </XStack>
908
1009
  ) : undefined;
909
1010
 
910
- const controlsBand = hasControls ? (
911
- <ListControls
1011
+ const shufflePanel =
1012
+ shuffle && shuffleOpen && shuffleRows.length > 0 && drawCard ? (
1013
+ <ShufflePanel<Partial<TDoc>>
1014
+ id={`${slug}-shuffle-panel`}
1015
+ label={t("Surprise me")}
1016
+ rows={shuffleRows}
1017
+ itemLabel={shuffle.label}
1018
+ renderPick={(doc) => drawCard(doc, 0)}
1019
+ onGo={(doc) => {
1020
+ setShuffleOpen(false);
1021
+ onItemClick?.(doc);
1022
+ }}
1023
+ testID={`${slug}-shuffle-panel`}
1024
+ />
1025
+ ) : null;
1026
+ const shuffleToggle = shuffle
1027
+ ? {
1028
+ open: shuffleOpen,
1029
+ toggle: () => setShuffleOpen((open) => !open),
1030
+ panelId: `${slug}-shuffle-panel`,
1031
+ }
1032
+ : undefined;
1033
+ const controlsProps: ListControlsProps = {
1034
+ controls: listControls,
1035
+ list,
1036
+ searchId,
1037
+ searchPlaceholder,
1038
+ showSearch,
1039
+ showFavorites: Boolean(favoritesStorageKey),
1040
+ shuffle: shuffleToggle,
1041
+ shufflePanel,
1042
+ separator: !surface,
1043
+ testID: slug,
1044
+ };
1045
+ const filterSidebar = sidebarFilters ? (
1046
+ <ListFilterPanel
1047
+ controls={listControls}
1048
+ list={list}
1049
+ showFavorites={Boolean(favoritesStorageKey)}
1050
+ testID={`${slug}-sidebar`}
1051
+ />
1052
+ ) : undefined;
1053
+ const controlsBand = sidebarFilters ? (
1054
+ <ListSidebarToolbar
912
1055
  controls={listControls}
913
1056
  list={list}
914
1057
  searchId={searchId}
915
1058
  searchPlaceholder={searchPlaceholder}
916
1059
  showSearch={showSearch}
917
1060
  showFavorites={Boolean(favoritesStorageKey)}
918
- shuffle={
919
- shuffle
920
- ? {
921
- open: shuffleOpen,
922
- toggle: () => setShuffleOpen((open) => !open),
923
- panelId: `${slug}-shuffle-panel`,
924
- }
925
- : undefined
926
- }
927
- shufflePanel={
928
- shuffle && shuffleOpen && shuffleRows.length > 0 && drawCard ? (
929
- <ShufflePanel<Partial<TDoc>>
930
- id={`${slug}-shuffle-panel`}
931
- label={t("Surprise me")}
932
- rows={shuffleRows}
933
- itemLabel={shuffle.label}
934
- renderPick={(doc) => drawCard(doc, 0)}
935
- onGo={(doc) => {
936
- setShuffleOpen(false);
937
- onItemClick?.(doc);
938
- }}
939
- testID={`${slug}-shuffle-panel`}
1061
+ shuffle={shuffleToggle}
1062
+ shufflePanel={shufflePanel}
1063
+ menuItems={menuItems}
1064
+ testID={slug}
1065
+ />
1066
+ ) : !hasControls ? null : sheetControls ? (
1067
+ <ListControlsSheet
1068
+ {...controlsProps}
1069
+ view={{ current: viewMode, onChange: setViewMode }}
1070
+ noun={title ?? doctype}
1071
+ />
1072
+ ) : (
1073
+ <ListControls
1074
+ {...controlsProps}
1075
+ compactAccessory={
1076
+ switcherOnControls ? (
1077
+ <ViewSwitcher
1078
+ views={viewChoices.map((view) => ({ ...view, iconOnly: true }))}
1079
+ currentView={viewMode}
1080
+ onViewChange={(v) => setViewMode(v as ListViewMode)}
1081
+ testID={`${slug}-view-switcher`}
940
1082
  />
941
- ) : null
1083
+ ) : undefined
942
1084
  }
943
- separator={!surface}
944
- testID={slug}
945
1085
  />
946
- ) : null;
1086
+ );
947
1087
 
948
1088
  const asPage = (view: React.ReactElement) => {
949
1089
  const extras = (
@@ -974,9 +1114,13 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
974
1114
  </>
975
1115
  );
976
1116
  }
1117
+ // The page owns the scroll in both chromes: once the last page lands the
1118
+ // list hugs every row, so a non-scrolling page would strand the rows below
1119
+ // the fold (§ List scroll owner).
977
1120
  return (
978
1121
  <ListPageLayout
979
- scroll={!surface}
1122
+ sidebar={filterSidebar}
1123
+ sidebarLabel={t("Filters")}
980
1124
  header={
981
1125
  <>
982
1126
  {controlsBand ? <SkipLink targetId={resultsId}>{t("Skip to results")}</SkipLink> : null}
@@ -1187,7 +1331,6 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
1187
1331
  debounceMs={300}
1188
1332
  placeholder={t("Search...")}
1189
1333
  aria-label={t("Search {{doctype}}", { doctype })}
1190
- compact
1191
1334
  size="$3"
1192
1335
  />
1193
1336
  </View>
@@ -1280,7 +1423,10 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
1280
1423
  flex={viewMode === "grid" ? undefined : 1}
1281
1424
  {...(surface ? knobProps.surface : {})}
1282
1425
  {...(surface ? knobProps.containerRadius : {})}
1283
- overflow={surface ? "hidden" : undefined}
1426
+ // No overflow clip on the card: it would cut the rows the page scroll
1427
+ // must reach. The radius is the container cap — rows round only at the
1428
+ // group's outer corners, capped at the row padding (DG-RAD-04).
1429
+ {...(surface ? containerCapProps("PageSection", knobProps.borderRadius.borderRadius) : {})}
1284
1430
  testID={`${doctype.toLowerCase()}-list`}
1285
1431
  {...(hasControls ? { id: resultsId } : {})}
1286
1432
  {...stackProps}
@@ -23,7 +23,7 @@ const config: FrappeReconnectIndicatorProps["config"] = {
23
23
  };
24
24
 
25
25
  export const Default = () => (
26
- <YStack gap="$3" width={420}>
26
+ <YStack gap="$3" width={420} maxWidth="100%">
27
27
  <Text fontSize="$2" color="$color10">
28
28
  Never-connected (fixtures, SSR): paints nothing.
29
29
  </Text>
@@ -43,7 +43,7 @@ export const Reconnecting = () => (
43
43
  );
44
44
 
45
45
  export const Connected = () => (
46
- <YStack gap="$3" width={420}>
46
+ <YStack gap="$3" width={420} maxWidth="100%">
47
47
  <Text fontSize="$2" color="$color10">
48
48
  Socket up: the chip is gone.
49
49
  </Text>
@@ -173,19 +173,47 @@ function renderRecord(name: string, navigate = vi.fn()) {
173
173
  );
174
174
  }
175
175
 
176
+ /** Opens the top bar's menu and finds one of its items by its label. */
177
+ async function menuItem(label: string): Promise<HTMLElement> {
178
+ fireEvent.click(await screen.findByTestId("pokemon-detail-more", {}, { timeout: 5000 }));
179
+ return waitFor(() => {
180
+ const item = Array.from(document.querySelectorAll<HTMLElement>('[role="menuitem"]')).find(
181
+ (node) => node.textContent?.includes(label),
182
+ );
183
+ expect(item).toBeTruthy();
184
+ return item as HTMLElement;
185
+ });
186
+ }
187
+
176
188
  async function identity(): Promise<HTMLElement> {
177
189
  return screen.findByTestId("pokemon-hero-identity", {}, { timeout: 5000 });
178
190
  }
179
191
 
180
192
  describe("FrappeRecordView heads the record from its look and facet", () => {
181
- it("names the record by code, title and subtitle under the list's breadcrumb", async () => {
193
+ it("names the record by code, title and subtitle under Back to the list", async () => {
182
194
  renderRecord("bulbasaur");
183
195
  const hero = await identity();
196
+ expect(within(hero).getByRole("heading", { level: 1 }).textContent).toBe("BULBASAUR");
184
197
  expect(hero.textContent).toContain("#001");
185
- expect(hero.textContent).toContain("BULBASAUR");
186
198
  expect(hero.textContent).toContain("Seed Pokémon");
187
- expect(screen.getByText("Roster")).toBeTruthy();
188
- expect(screen.getByText("#001 BULBASAUR")).toBeTruthy();
199
+ const back = screen.getByTestId("pokemon-detail-back");
200
+ expect(screen.getByTestId("pokemon-detail-header").contains(back)).toBe(true);
201
+ expect(back.textContent).toContain("Roster");
202
+ expect(back.getAttribute("aria-label")).toBe("Back to Roster");
203
+ });
204
+
205
+ it("stacks the top bar, the art stage, the identity and the tabs in that order", async () => {
206
+ renderRecord("bulbasaur");
207
+ const hero = await identity();
208
+ const header = screen.getByTestId("pokemon-detail-header");
209
+ const stage = screen.getByTestId("pokemon-detail-stage");
210
+ const tabs = screen.getAllByRole("tab")[0];
211
+ const follows = (a: Node, b: Node) =>
212
+ Boolean(a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING);
213
+ expect(follows(header, stage)).toBe(true);
214
+ expect(follows(stage, hero)).toBe(true);
215
+ expect(follows(hero, tabs)).toBe(true);
216
+ expect(stage.contains(screen.getByTestId("pokemon-hero-art"))).toBe(true);
189
217
  });
190
218
 
191
219
  it("badges the facet's values in slot order and draws the first image", async () => {
@@ -198,12 +226,13 @@ describe("FrappeRecordView heads the record from its look and facet", () => {
198
226
  expect(art.querySelector("img")?.getAttribute("src")).toBe("https://art.spec.test/1.png");
199
227
  });
200
228
 
201
- it("tiles each metric, a max adding a bar", async () => {
229
+ it("states each metric as a label over its value, with no tile or bar", async () => {
202
230
  renderRecord("bulbasaur");
203
231
  const hero = await identity();
204
- expect(hero.textContent).toContain("Base XP");
205
- expect(hero.textContent).toContain("64");
206
- expect(within(hero).getByLabelText("Base XP")).toBeTruthy();
232
+ const fact = within(hero).getByTestId("record-vital-base_experience");
233
+ expect(fact.textContent).toBe("Base XP64");
234
+ expect(fact.getAttribute("data-record-metric")).toBe("base_experience");
235
+ expect(within(hero).queryByRole("progressbar")).toBeNull();
207
236
  });
208
237
  });
209
238
 
@@ -214,15 +243,19 @@ describe("FrappeRecordView tabs the record's rows", () => {
214
243
  expect(await screen.findByText("pikachu, the Mouse Pokémon.")).toBeTruthy();
215
244
  await waitFor(() => expect(screen.getByText("lightning rod")).toBeTruthy());
216
245
  expect(screen.getAllByText("Hidden")).toHaveLength(1);
217
- expect(screen.getByText("Record history")).toBeTruthy();
246
+ expect(screen.getByText("History")).toBeTruthy();
247
+ expect(screen.getByTestId("pokemon-history").textContent).toContain("Created by");
218
248
  });
219
249
 
220
250
  it("draws a child table as bars on a fixed scale with their total", async () => {
221
251
  renderRecord("pikachu");
222
252
  await identity();
223
- expect(await screen.findByTestId("pokemon-stats-chart")).toBeTruthy();
224
- expect(screen.getByText("Stat total")).toBeTruthy();
225
- expect(screen.getByText("125")).toBeTruthy();
253
+ const chart = await screen.findByTestId("pokemon-stats-chart");
254
+ expect(within(chart).getByText("Stat total")).toBeTruthy();
255
+ expect(within(chart).getByText("125")).toBeTruthy();
256
+ const meters = within(chart).getAllByRole("meter");
257
+ expect(meters.length).toBeGreaterThan(0);
258
+ for (const meter of meters) expect(meter.getAttribute("aria-valuemax")).toBe("255");
226
259
  });
227
260
 
228
261
  it("badges a tab with its rows' count and groups them, detailed", async () => {
@@ -249,7 +282,7 @@ describe("FrappeRecordView's controls", () => {
249
282
  expect(navigate).toHaveBeenCalledWith("/pokemon/gengar");
250
283
  fireEvent.click(screen.getByTestId("pokemon-prev"));
251
284
  expect(navigate).toHaveBeenCalledWith("/pokemon/squirtle");
252
- fireEvent.click(screen.getByTestId("pokemon-detail-edit"));
285
+ fireEvent.click(await menuItem("Edit"));
253
286
  expect(navigate).toHaveBeenCalledWith("/pokemon/pikachu/edit");
254
287
  });
255
288
 
@@ -262,7 +295,7 @@ describe("FrappeRecordView's controls", () => {
262
295
  expect(heart.getAttribute("aria-pressed")).toBe("false");
263
296
  fireEvent.click(heart);
264
297
  await waitFor(() => expect(favoritesStore(favoritesKey).state.names).toEqual(["pikachu"]));
265
- fireEvent.click(screen.getByTestId("hop"));
298
+ fireEvent.click(await menuItem("Open in backoffice"));
266
299
  expect(navigate).toHaveBeenCalledWith("/backoffice/pokemon/pikachu");
267
300
  });
268
301
 
@@ -1,8 +1,6 @@
1
- import { EmptyState, Screen, ScreenToolbar, YStack } from "@multiplatform.one/components";
1
+ import { EmptyState, Screen } from "@multiplatform.one/components";
2
2
  import { Button } from "@multiplatform.one/forms";
3
3
  import type { Order } from "@multiplatform.one/frappe";
4
- import { useResolvedKnobs } from "@multiplatform.one/theme";
5
- import { ArrowLeftIcon } from "@phosphor-icons/react";
6
4
  import { useMemo } from "react";
7
5
  import { useTranslation } from "react-i18next";
8
6
  import type { FrappeConnection } from "./frappeConnections";
@@ -15,8 +13,13 @@ import { orderRows } from "./insights/insightsData";
15
13
  import type { FrappeInsightsMetric } from "./insights/insightsRecord";
16
14
  import type { FrappeListFacet } from "./list/listState";
17
15
  import type { FrappeRecordLook } from "./list/recordLook";
18
- import { RecordBreadcrumbBone, RecordSkeleton } from "./record/RecordHero";
19
- import { RecordPage, type FrappeRecordAction, type RecordPageProps } from "./record/RecordPage";
16
+ import { RecordSkeleton } from "./record/RecordHero";
17
+ import {
18
+ RecordPage,
19
+ RecordTopBar,
20
+ type FrappeRecordAction,
21
+ type RecordPageProps,
22
+ } from "./record/RecordPage";
20
23
  import type { FrappeRecordTab } from "./record/recordSections";
21
24
  import { useFrappeConnection, useFrappeRows } from "./useFrappeRows";
22
25
 
@@ -70,11 +73,11 @@ export interface FrappeRecordViewProps<TDoc extends { name: string; doctype: str
70
73
  const noTabs: readonly FrappeRecordTab[] = [];
71
74
 
72
75
  /**
73
- * A doctype's record page, read first: the list's breadcrumb and Back, the
74
- * favorite heart, the record's hops and Edit under the write right; a hero
75
- * with the record's images, code, title, subtitle, facet badges and metric
76
- * tiles, tinted by the facet; tabs of linked rows and child-table bars with
77
- * the audit trail; and the records either side of it in the list's order.
76
+ * A doctype's record page, read first: Back to the list, the favorite heart
77
+ * and a menu of the record's hops and Edit under the write right; the art on
78
+ * a stage tinted by the facet, then the code, facet badges, title, subtitle
79
+ * and metric facts; tabs of linked rows and child-table bars with the audit
80
+ * trail; and the records either side of it in the list's order.
78
81
  * FrappeForm reads the record and its connections live; loading, not found
79
82
  * and error keep the page's wayfinding.
80
83
  */
@@ -101,7 +104,6 @@ export function FrappeRecordView<TDoc extends { name: string; doctype: string }>
101
104
  testID,
102
105
  }: FrappeRecordViewProps<TDoc>) {
103
106
  const { t } = useTranslation();
104
- const { knobProps } = useResolvedKnobs();
105
107
  const config = useFrappeConfig();
106
108
  const connection = useFrappeConnection();
107
109
  const router = useFrappeRouter();
@@ -126,19 +128,7 @@ export function FrappeRecordView<TDoc extends { name: string; doctype: string }>
126
128
  if (!config?.baseURL && !config?.fixtures) return <FrappeNotConfigured doctype={doctype} page />;
127
129
 
128
130
  const backButton = (
129
- <ScreenToolbar
130
- leading={
131
- <Button
132
- outlined
133
- minHeight={knobProps.sizeToken}
134
- onPress={() => navigate(route)}
135
- icon={<ArrowLeftIcon size={16} />}
136
- testID={`${slug}-detail-back`}
137
- >
138
- {t("Back")}
139
- </Button>
140
- }
141
- />
131
+ <RecordTopBar listName={listName} onBack={() => navigate(route)} slug={slug} />
142
132
  );
143
133
 
144
134
  return (
@@ -151,16 +141,13 @@ export function FrappeRecordView<TDoc extends { name: string; doctype: string }>
151
141
  showSidebar={false}
152
142
  showTimeline={false}
153
143
  loadingFallback={
154
- <Screen>
155
- <YStack gap="$2">
156
- <RecordBreadcrumbBone />
157
- {backButton}
158
- </YStack>
144
+ <Screen noPadding gap={0}>
145
+ {backButton}
159
146
  <RecordSkeleton testID={`${slug}-detail-skeleton`} />
160
147
  </Screen>
161
148
  }
162
149
  notFoundFallback={
163
- <Screen scroll={false}>
150
+ <Screen scroll={false} noPadding gap={0}>
164
151
  {backButton}
165
152
  <EmptyState
166
153
  title={t("{{doctype}} not found", { doctype })}
@@ -174,7 +161,7 @@ export function FrappeRecordView<TDoc extends { name: string; doctype: string }>
174
161
  </Screen>
175
162
  }
176
163
  errorFallback={
177
- <Screen scroll={false}>
164
+ <Screen scroll={false} noPadding gap={0}>
178
165
  {backButton}
179
166
  <EmptyState
180
167
  intent="error"
@@ -887,7 +887,7 @@ function FrappeReportBuilderBody({
887
887
  setPageSize(next.pageSize);
888
888
  }}
889
889
  pageSizeOptions={[...REPORT_PAGE_SIZES]}
890
- compact
890
+ size="$3"
891
891
  />
892
892
  </YStack>
893
893
  )}