@multiplatform.one/frappe-ui 7.4.1 → 7.5.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 (722) hide show
  1. package/dist/cjs/FileBrowser/AttachLibrary.cjs +111 -0
  2. package/dist/cjs/FileBrowser/AttachLibrary.native.js +115 -0
  3. package/dist/cjs/FileBrowser/AttachLibrary.native.js.map +1 -0
  4. package/dist/cjs/FileBrowser/folderTree.cjs +84 -0
  5. package/dist/cjs/FileBrowser/folderTree.native.js +94 -0
  6. package/dist/cjs/FileBrowser/folderTree.native.js.map +1 -0
  7. package/dist/cjs/FileBrowser/index.cjs +661 -0
  8. package/dist/cjs/FileBrowser/index.native.js +735 -0
  9. package/dist/cjs/FileBrowser/index.native.js.map +1 -0
  10. package/dist/cjs/FileBrowser/types.cjs +18 -0
  11. package/dist/cjs/FileBrowser/types.native.js +21 -0
  12. package/dist/cjs/FileBrowser/types.native.js.map +1 -0
  13. package/dist/cjs/FileBrowser/viewPersistence.cjs +55 -0
  14. package/dist/cjs/FileBrowser/viewPersistence.native.js +60 -0
  15. package/dist/cjs/FileBrowser/viewPersistence.native.js.map +1 -0
  16. package/dist/cjs/FormSidebar.cjs +47 -47
  17. package/dist/cjs/FormSidebar.native.js +48 -50
  18. package/dist/cjs/FormSidebar.native.js.map +1 -1
  19. package/dist/cjs/FrappeAssignment.cjs +18 -13
  20. package/dist/cjs/FrappeAssignment.native.js +19 -13
  21. package/dist/cjs/FrappeAssignment.native.js.map +1 -1
  22. package/dist/cjs/FrappeCalendar.cjs +11 -10
  23. package/dist/cjs/FrappeCalendar.native.js +11 -10
  24. package/dist/cjs/FrappeCalendar.native.js.map +1 -1
  25. package/dist/cjs/FrappeChartCard.cjs +6 -15
  26. package/dist/cjs/FrappeChartCard.native.js +6 -15
  27. package/dist/cjs/FrappeChartCard.native.js.map +1 -1
  28. package/dist/cjs/FrappeDashboard.cjs +12 -9
  29. package/dist/cjs/FrappeDashboard.native.js +12 -9
  30. package/dist/cjs/FrappeDashboard.native.js.map +1 -1
  31. package/dist/cjs/FrappeForm.cjs +36 -25
  32. package/dist/cjs/FrappeForm.native.js +36 -25
  33. package/dist/cjs/FrappeForm.native.js.map +1 -1
  34. package/dist/cjs/FrappeGantt.cjs +7 -5
  35. package/dist/cjs/FrappeGantt.native.js +7 -5
  36. package/dist/cjs/FrappeGantt.native.js.map +1 -1
  37. package/dist/cjs/FrappeImageView.cjs +22 -22
  38. package/dist/cjs/FrappeImageView.native.js +24 -22
  39. package/dist/cjs/FrappeImageView.native.js.map +1 -1
  40. package/dist/cjs/FrappeKPICard.cjs +7 -29
  41. package/dist/cjs/FrappeKPICard.native.js +7 -29
  42. package/dist/cjs/FrappeKPICard.native.js.map +1 -1
  43. package/dist/cjs/FrappeKanban.cjs +11 -13
  44. package/dist/cjs/FrappeKanban.native.js +11 -13
  45. package/dist/cjs/FrappeKanban.native.js.map +1 -1
  46. package/dist/cjs/FrappeLikedBy.cjs +5 -5
  47. package/dist/cjs/FrappeLikedBy.native.js +6 -6
  48. package/dist/cjs/FrappeLikedBy.native.js.map +1 -1
  49. package/dist/cjs/FrappeListView.cjs +32 -33
  50. package/dist/cjs/FrappeListView.native.js +37 -39
  51. package/dist/cjs/FrappeListView.native.js.map +1 -1
  52. package/dist/cjs/FrappeReportBuilder.cjs +30 -46
  53. package/dist/cjs/FrappeReportBuilder.native.js +30 -42
  54. package/dist/cjs/FrappeReportBuilder.native.js.map +1 -1
  55. package/dist/cjs/FrappeReportView.cjs +5 -5
  56. package/dist/cjs/FrappeReportView.native.js +5 -5
  57. package/dist/cjs/FrappeReportView.native.js.map +1 -1
  58. package/dist/cjs/FrappeTreeView.cjs +9 -6
  59. package/dist/cjs/FrappeTreeView.native.js +10 -6
  60. package/dist/cjs/FrappeTreeView.native.js.map +1 -1
  61. package/dist/cjs/desk/DeskFormPage.cjs +3 -3
  62. package/dist/cjs/desk/DeskFormPage.native.js +3 -3
  63. package/dist/cjs/desk/DeskFormPage.native.js.map +1 -1
  64. package/dist/cjs/desk/DeskListPage.cjs +2 -2
  65. package/dist/cjs/desk/DeskListPage.native.js +2 -2
  66. package/dist/cjs/desk/DeskListPage.native.js.map +1 -1
  67. package/dist/cjs/desk/DeskShell.cjs +58 -38
  68. package/dist/cjs/desk/DeskShell.native.js +63 -44
  69. package/dist/cjs/desk/DeskShell.native.js.map +1 -1
  70. package/dist/cjs/desk/awesomebar.cjs +28 -16
  71. package/dist/cjs/desk/awesomebar.native.js +28 -16
  72. package/dist/cjs/desk/awesomebar.native.js.map +1 -1
  73. package/dist/cjs/fieldRegistry.cjs +15 -3
  74. package/dist/cjs/fieldRegistry.native.js +15 -3
  75. package/dist/cjs/fieldRegistry.native.js.map +1 -1
  76. package/dist/cjs/fields/Check/index.cjs +1 -1
  77. package/dist/cjs/fields/Check/index.native.js +1 -1
  78. package/dist/cjs/fields/Check/index.native.js.map +1 -1
  79. package/dist/cjs/fields/Color/index.cjs +1 -1
  80. package/dist/cjs/fields/Color/index.native.js +1 -1
  81. package/dist/cjs/fields/Color/index.native.js.map +1 -1
  82. package/dist/cjs/fields/Data/index.native.js.map +1 -1
  83. package/dist/cjs/fields/Date/index.native.js +47 -34
  84. package/dist/cjs/fields/Date/index.native.js.map +1 -1
  85. package/dist/cjs/fields/Date/sheetKeyboard.cjs +54 -0
  86. package/dist/cjs/fields/Date/sheetKeyboard.native.js +57 -0
  87. package/dist/cjs/fields/Date/sheetKeyboard.native.js.map +1 -0
  88. package/dist/cjs/fields/DynamicLink.cjs +37 -128
  89. package/dist/cjs/fields/DynamicLink.native.js +40 -138
  90. package/dist/cjs/fields/DynamicLink.native.js.map +1 -1
  91. package/dist/cjs/fields/FileUpload.cjs +233 -50
  92. package/dist/cjs/fields/FileUpload.native.js +242 -51
  93. package/dist/cjs/fields/FileUpload.native.js.map +1 -1
  94. package/dist/cjs/fields/FileUploadField/index.cjs +53 -20
  95. package/dist/cjs/fields/FileUploadField/index.native.js +56 -20
  96. package/dist/cjs/fields/FileUploadField/index.native.js.map +1 -1
  97. package/dist/cjs/fields/HTML/index.cjs +30 -51
  98. package/dist/cjs/fields/HTML/index.native.js +30 -51
  99. package/dist/cjs/fields/HTML/index.native.js.map +1 -1
  100. package/dist/cjs/fields/Icon/index.cjs +73 -0
  101. package/dist/cjs/fields/Icon/index.native.js +76 -0
  102. package/dist/cjs/fields/Icon/index.native.js.map +1 -0
  103. package/dist/cjs/fields/Link.cjs +34 -8
  104. package/dist/cjs/fields/Link.native.js +35 -9
  105. package/dist/cjs/fields/Link.native.js.map +1 -1
  106. package/dist/cjs/fields/LinkTree.cjs +114 -0
  107. package/dist/cjs/fields/LinkTree.native.js +125 -0
  108. package/dist/cjs/fields/LinkTree.native.js.map +1 -0
  109. package/dist/cjs/fields/LongText/index.cjs +6 -4
  110. package/dist/cjs/fields/LongText/index.native.js +6 -4
  111. package/dist/cjs/fields/LongText/index.native.js.map +1 -1
  112. package/dist/cjs/fields/Numeric/index.native.js.map +1 -1
  113. package/dist/cjs/fields/Password/index.cjs +178 -16
  114. package/dist/cjs/fields/Password/index.native.js +197 -16
  115. package/dist/cjs/fields/Password/index.native.js.map +1 -1
  116. package/dist/cjs/fields/Phone/index.native.js.map +1 -1
  117. package/dist/cjs/fields/ReadOnly/index.cjs +34 -48
  118. package/dist/cjs/fields/ReadOnly/index.native.js +34 -46
  119. package/dist/cjs/fields/ReadOnly/index.native.js.map +1 -1
  120. package/dist/cjs/fields/Select/index.cjs +1 -1
  121. package/dist/cjs/fields/Select/index.native.js +1 -1
  122. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  123. package/dist/cjs/fields/SmallText/index.cjs +4 -3
  124. package/dist/cjs/fields/SmallText/index.native.js +4 -3
  125. package/dist/cjs/fields/SmallText/index.native.js.map +1 -1
  126. package/dist/cjs/fields/TableMultiSelect.cjs +39 -150
  127. package/dist/cjs/fields/TableMultiSelect.native.js +44 -171
  128. package/dist/cjs/fields/TableMultiSelect.native.js.map +1 -1
  129. package/dist/cjs/fields/TextEditor/index.cjs +26 -293
  130. package/dist/cjs/index.cjs +9 -0
  131. package/dist/cjs/index.native.js +9 -0
  132. package/dist/cjs/index.native.js.map +1 -1
  133. package/dist/cjs/schemaForm/SchemaWizard.cjs +182 -0
  134. package/dist/cjs/schemaForm/SchemaWizard.native.js +232 -0
  135. package/dist/cjs/schemaForm/SchemaWizard.native.js.map +1 -0
  136. package/dist/cjs/schemaForm/index.cjs +1 -1
  137. package/dist/cjs/schemaForm/index.native.js +1 -1
  138. package/dist/cjs/schemaForm/index.native.js.map +1 -1
  139. package/dist/cjs/shared/useKeyboardInset.cjs +48 -0
  140. package/dist/cjs/shared/useKeyboardInset.native.js +53 -0
  141. package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -0
  142. package/dist/esm/FileBrowser/AttachLibrary.mjs +86 -0
  143. package/dist/esm/FileBrowser/AttachLibrary.mjs.map +1 -0
  144. package/dist/esm/FileBrowser/AttachLibrary.native.js +87 -0
  145. package/dist/esm/FileBrowser/AttachLibrary.native.js.map +1 -0
  146. package/dist/esm/FileBrowser/folderTree.mjs +52 -0
  147. package/dist/esm/FileBrowser/folderTree.mjs.map +1 -0
  148. package/dist/esm/FileBrowser/folderTree.native.js +59 -0
  149. package/dist/esm/FileBrowser/folderTree.native.js.map +1 -0
  150. package/dist/esm/FileBrowser/index.mjs +636 -0
  151. package/dist/esm/FileBrowser/index.mjs.map +1 -0
  152. package/dist/esm/FileBrowser/index.native.js +707 -0
  153. package/dist/esm/FileBrowser/index.native.js.map +1 -0
  154. package/dist/esm/FileBrowser/types.mjs +2 -0
  155. package/dist/esm/FileBrowser/types.mjs.map +1 -0
  156. package/dist/esm/FileBrowser/types.native.js +2 -0
  157. package/dist/esm/FileBrowser/types.native.js.map +1 -0
  158. package/dist/esm/FileBrowser/viewPersistence.mjs +29 -0
  159. package/dist/esm/FileBrowser/viewPersistence.mjs.map +1 -0
  160. package/dist/esm/FileBrowser/viewPersistence.native.js +31 -0
  161. package/dist/esm/FileBrowser/viewPersistence.native.js.map +1 -0
  162. package/dist/esm/FormSidebar.mjs +46 -46
  163. package/dist/esm/FormSidebar.mjs.map +1 -1
  164. package/dist/esm/FormSidebar.native.js +47 -49
  165. package/dist/esm/FormSidebar.native.js.map +1 -1
  166. package/dist/esm/FrappeAssignment.mjs +19 -14
  167. package/dist/esm/FrappeAssignment.mjs.map +1 -1
  168. package/dist/esm/FrappeAssignment.native.js +20 -14
  169. package/dist/esm/FrappeAssignment.native.js.map +1 -1
  170. package/dist/esm/FrappeCalendar.mjs +12 -11
  171. package/dist/esm/FrappeCalendar.mjs.map +1 -1
  172. package/dist/esm/FrappeCalendar.native.js +12 -11
  173. package/dist/esm/FrappeCalendar.native.js.map +1 -1
  174. package/dist/esm/FrappeChartCard.mjs +7 -16
  175. package/dist/esm/FrappeChartCard.mjs.map +1 -1
  176. package/dist/esm/FrappeChartCard.native.js +7 -16
  177. package/dist/esm/FrappeChartCard.native.js.map +1 -1
  178. package/dist/esm/FrappeDashboard.mjs +12 -9
  179. package/dist/esm/FrappeDashboard.mjs.map +1 -1
  180. package/dist/esm/FrappeDashboard.native.js +12 -9
  181. package/dist/esm/FrappeDashboard.native.js.map +1 -1
  182. package/dist/esm/FrappeForm.mjs +35 -24
  183. package/dist/esm/FrappeForm.mjs.map +1 -1
  184. package/dist/esm/FrappeForm.native.js +35 -24
  185. package/dist/esm/FrappeForm.native.js.map +1 -1
  186. package/dist/esm/FrappeGantt.mjs +7 -5
  187. package/dist/esm/FrappeGantt.mjs.map +1 -1
  188. package/dist/esm/FrappeGantt.native.js +7 -5
  189. package/dist/esm/FrappeGantt.native.js.map +1 -1
  190. package/dist/esm/FrappeImageView.mjs +23 -23
  191. package/dist/esm/FrappeImageView.mjs.map +1 -1
  192. package/dist/esm/FrappeImageView.native.js +25 -23
  193. package/dist/esm/FrappeImageView.native.js.map +1 -1
  194. package/dist/esm/FrappeKPICard.mjs +7 -29
  195. package/dist/esm/FrappeKPICard.mjs.map +1 -1
  196. package/dist/esm/FrappeKPICard.native.js +7 -29
  197. package/dist/esm/FrappeKPICard.native.js.map +1 -1
  198. package/dist/esm/FrappeKanban.mjs +13 -15
  199. package/dist/esm/FrappeKanban.mjs.map +1 -1
  200. package/dist/esm/FrappeKanban.native.js +13 -15
  201. package/dist/esm/FrappeKanban.native.js.map +1 -1
  202. package/dist/esm/FrappeLikedBy.mjs +6 -6
  203. package/dist/esm/FrappeLikedBy.mjs.map +1 -1
  204. package/dist/esm/FrappeLikedBy.native.js +7 -7
  205. package/dist/esm/FrappeLikedBy.native.js.map +1 -1
  206. package/dist/esm/FrappeListView.mjs +33 -34
  207. package/dist/esm/FrappeListView.mjs.map +1 -1
  208. package/dist/esm/FrappeListView.native.js +38 -40
  209. package/dist/esm/FrappeListView.native.js.map +1 -1
  210. package/dist/esm/FrappeReportBuilder.mjs +27 -43
  211. package/dist/esm/FrappeReportBuilder.mjs.map +1 -1
  212. package/dist/esm/FrappeReportBuilder.native.js +27 -39
  213. package/dist/esm/FrappeReportBuilder.native.js.map +1 -1
  214. package/dist/esm/FrappeReportView.mjs +6 -6
  215. package/dist/esm/FrappeReportView.mjs.map +1 -1
  216. package/dist/esm/FrappeReportView.native.js +6 -6
  217. package/dist/esm/FrappeReportView.native.js.map +1 -1
  218. package/dist/esm/FrappeTreeView.mjs +9 -6
  219. package/dist/esm/FrappeTreeView.mjs.map +1 -1
  220. package/dist/esm/FrappeTreeView.native.js +10 -6
  221. package/dist/esm/FrappeTreeView.native.js.map +1 -1
  222. package/dist/esm/desk/DeskFormPage.mjs +3 -3
  223. package/dist/esm/desk/DeskFormPage.mjs.map +1 -1
  224. package/dist/esm/desk/DeskFormPage.native.js +3 -3
  225. package/dist/esm/desk/DeskFormPage.native.js.map +1 -1
  226. package/dist/esm/desk/DeskListPage.mjs +2 -2
  227. package/dist/esm/desk/DeskListPage.mjs.map +1 -1
  228. package/dist/esm/desk/DeskListPage.native.js +2 -2
  229. package/dist/esm/desk/DeskListPage.native.js.map +1 -1
  230. package/dist/esm/desk/DeskShell.mjs +48 -28
  231. package/dist/esm/desk/DeskShell.mjs.map +1 -1
  232. package/dist/esm/desk/DeskShell.native.js +52 -33
  233. package/dist/esm/desk/DeskShell.native.js.map +1 -1
  234. package/dist/esm/desk/awesomebar.mjs +29 -17
  235. package/dist/esm/desk/awesomebar.mjs.map +1 -1
  236. package/dist/esm/desk/awesomebar.native.js +29 -17
  237. package/dist/esm/desk/awesomebar.native.js.map +1 -1
  238. package/dist/esm/fieldRegistry.mjs +16 -4
  239. package/dist/esm/fieldRegistry.mjs.map +1 -1
  240. package/dist/esm/fieldRegistry.native.js +16 -4
  241. package/dist/esm/fieldRegistry.native.js.map +1 -1
  242. package/dist/esm/fields/Check/index.mjs +1 -1
  243. package/dist/esm/fields/Check/index.mjs.map +1 -1
  244. package/dist/esm/fields/Check/index.native.js +1 -1
  245. package/dist/esm/fields/Check/index.native.js.map +1 -1
  246. package/dist/esm/fields/Color/index.mjs +1 -1
  247. package/dist/esm/fields/Color/index.mjs.map +1 -1
  248. package/dist/esm/fields/Color/index.native.js +1 -1
  249. package/dist/esm/fields/Color/index.native.js.map +1 -1
  250. package/dist/esm/fields/Data/index.mjs.map +1 -1
  251. package/dist/esm/fields/Data/index.native.js.map +1 -1
  252. package/dist/esm/fields/Date/index.native.js +46 -33
  253. package/dist/esm/fields/Date/index.native.js.map +1 -1
  254. package/dist/esm/fields/Date/sheetKeyboard.mjs +21 -0
  255. package/dist/esm/fields/Date/sheetKeyboard.mjs.map +1 -0
  256. package/dist/esm/fields/Date/sheetKeyboard.native.js +21 -0
  257. package/dist/esm/fields/Date/sheetKeyboard.native.js.map +1 -0
  258. package/dist/esm/fields/DynamicLink.mjs +37 -128
  259. package/dist/esm/fields/DynamicLink.mjs.map +1 -1
  260. package/dist/esm/fields/DynamicLink.native.js +40 -138
  261. package/dist/esm/fields/DynamicLink.native.js.map +1 -1
  262. package/dist/esm/fields/FileUpload.mjs +234 -51
  263. package/dist/esm/fields/FileUpload.mjs.map +1 -1
  264. package/dist/esm/fields/FileUpload.native.js +243 -52
  265. package/dist/esm/fields/FileUpload.native.js.map +1 -1
  266. package/dist/esm/fields/FileUploadField/index.mjs +55 -22
  267. package/dist/esm/fields/FileUploadField/index.mjs.map +1 -1
  268. package/dist/esm/fields/FileUploadField/index.native.js +58 -22
  269. package/dist/esm/fields/FileUploadField/index.native.js.map +1 -1
  270. package/dist/esm/fields/HTML/index.mjs +33 -54
  271. package/dist/esm/fields/HTML/index.mjs.map +1 -1
  272. package/dist/esm/fields/HTML/index.native.js +33 -54
  273. package/dist/esm/fields/HTML/index.native.js.map +1 -1
  274. package/dist/esm/fields/Icon/index.mjs +48 -0
  275. package/dist/esm/fields/Icon/index.mjs.map +1 -0
  276. package/dist/esm/fields/Icon/index.native.js +48 -0
  277. package/dist/esm/fields/Icon/index.native.js.map +1 -0
  278. package/dist/esm/fields/Link.mjs +35 -9
  279. package/dist/esm/fields/Link.mjs.map +1 -1
  280. package/dist/esm/fields/Link.native.js +36 -10
  281. package/dist/esm/fields/Link.native.js.map +1 -1
  282. package/dist/esm/fields/LinkTree.mjs +89 -0
  283. package/dist/esm/fields/LinkTree.mjs.map +1 -0
  284. package/dist/esm/fields/LinkTree.native.js +97 -0
  285. package/dist/esm/fields/LinkTree.native.js.map +1 -0
  286. package/dist/esm/fields/LongText/index.mjs +7 -5
  287. package/dist/esm/fields/LongText/index.mjs.map +1 -1
  288. package/dist/esm/fields/LongText/index.native.js +7 -5
  289. package/dist/esm/fields/LongText/index.native.js.map +1 -1
  290. package/dist/esm/fields/Numeric/index.mjs.map +1 -1
  291. package/dist/esm/fields/Numeric/index.native.js.map +1 -1
  292. package/dist/esm/fields/Password/index.mjs +180 -18
  293. package/dist/esm/fields/Password/index.mjs.map +1 -1
  294. package/dist/esm/fields/Password/index.native.js +199 -18
  295. package/dist/esm/fields/Password/index.native.js.map +1 -1
  296. package/dist/esm/fields/Phone/index.mjs.map +1 -1
  297. package/dist/esm/fields/Phone/index.native.js.map +1 -1
  298. package/dist/esm/fields/ReadOnly/index.mjs +36 -50
  299. package/dist/esm/fields/ReadOnly/index.mjs.map +1 -1
  300. package/dist/esm/fields/ReadOnly/index.native.js +36 -48
  301. package/dist/esm/fields/ReadOnly/index.native.js.map +1 -1
  302. package/dist/esm/fields/Select/index.mjs +1 -1
  303. package/dist/esm/fields/Select/index.mjs.map +1 -1
  304. package/dist/esm/fields/Select/index.native.js +1 -1
  305. package/dist/esm/fields/Select/index.native.js.map +1 -1
  306. package/dist/esm/fields/SmallText/index.mjs +5 -4
  307. package/dist/esm/fields/SmallText/index.mjs.map +1 -1
  308. package/dist/esm/fields/SmallText/index.native.js +5 -4
  309. package/dist/esm/fields/SmallText/index.native.js.map +1 -1
  310. package/dist/esm/fields/TableMultiSelect.mjs +41 -152
  311. package/dist/esm/fields/TableMultiSelect.mjs.map +1 -1
  312. package/dist/esm/fields/TableMultiSelect.native.js +46 -173
  313. package/dist/esm/fields/TableMultiSelect.native.js.map +1 -1
  314. package/dist/esm/fields/TextEditor/index.mjs +28 -284
  315. package/dist/esm/fields/TextEditor/index.mjs.map +1 -1
  316. package/dist/esm/index.mjs +5 -1
  317. package/dist/esm/index.mjs.map +1 -1
  318. package/dist/esm/index.native.js +5 -1
  319. package/dist/esm/index.native.js.map +1 -1
  320. package/dist/esm/schemaForm/SchemaWizard.mjs +156 -0
  321. package/dist/esm/schemaForm/SchemaWizard.mjs.map +1 -0
  322. package/dist/esm/schemaForm/SchemaWizard.native.js +203 -0
  323. package/dist/esm/schemaForm/SchemaWizard.native.js.map +1 -0
  324. package/dist/esm/schemaForm/index.mjs +1 -1
  325. package/dist/esm/schemaForm/index.mjs.map +1 -1
  326. package/dist/esm/schemaForm/index.native.js +1 -1
  327. package/dist/esm/schemaForm/index.native.js.map +1 -1
  328. package/dist/esm/shared/useKeyboardInset.mjs +23 -0
  329. package/dist/esm/shared/useKeyboardInset.mjs.map +1 -0
  330. package/dist/esm/shared/useKeyboardInset.native.js +25 -0
  331. package/dist/esm/shared/useKeyboardInset.native.js.map +1 -0
  332. package/dist/jsx/FileBrowser/AttachLibrary.mjs +86 -0
  333. package/dist/jsx/FileBrowser/AttachLibrary.mjs.map +1 -0
  334. package/dist/jsx/FileBrowser/AttachLibrary.native.js +115 -0
  335. package/dist/jsx/FileBrowser/AttachLibrary.native.js.map +1 -0
  336. package/dist/jsx/FileBrowser/folderTree.mjs +52 -0
  337. package/dist/jsx/FileBrowser/folderTree.mjs.map +1 -0
  338. package/dist/jsx/FileBrowser/folderTree.native.js +94 -0
  339. package/dist/jsx/FileBrowser/folderTree.native.js.map +1 -0
  340. package/dist/jsx/FileBrowser/index.mjs +636 -0
  341. package/dist/jsx/FileBrowser/index.mjs.map +1 -0
  342. package/dist/jsx/FileBrowser/index.native.js +735 -0
  343. package/dist/jsx/FileBrowser/index.native.js.map +1 -0
  344. package/dist/jsx/FileBrowser/types.mjs +2 -0
  345. package/dist/jsx/FileBrowser/types.mjs.map +1 -0
  346. package/dist/jsx/FileBrowser/types.native.js +21 -0
  347. package/dist/jsx/FileBrowser/types.native.js.map +1 -0
  348. package/dist/jsx/FileBrowser/viewPersistence.mjs +29 -0
  349. package/dist/jsx/FileBrowser/viewPersistence.mjs.map +1 -0
  350. package/dist/jsx/FileBrowser/viewPersistence.native.js +60 -0
  351. package/dist/jsx/FileBrowser/viewPersistence.native.js.map +1 -0
  352. package/dist/jsx/FormSidebar.mjs +46 -46
  353. package/dist/jsx/FormSidebar.mjs.map +1 -1
  354. package/dist/jsx/FormSidebar.native.js +48 -50
  355. package/dist/jsx/FormSidebar.native.js.map +1 -1
  356. package/dist/jsx/FrappeAssignment.mjs +19 -14
  357. package/dist/jsx/FrappeAssignment.mjs.map +1 -1
  358. package/dist/jsx/FrappeAssignment.native.js +19 -13
  359. package/dist/jsx/FrappeAssignment.native.js.map +1 -1
  360. package/dist/jsx/FrappeCalendar.mjs +12 -11
  361. package/dist/jsx/FrappeCalendar.mjs.map +1 -1
  362. package/dist/jsx/FrappeCalendar.native.js +11 -10
  363. package/dist/jsx/FrappeCalendar.native.js.map +1 -1
  364. package/dist/jsx/FrappeChartCard.mjs +7 -16
  365. package/dist/jsx/FrappeChartCard.mjs.map +1 -1
  366. package/dist/jsx/FrappeChartCard.native.js +6 -15
  367. package/dist/jsx/FrappeChartCard.native.js.map +1 -1
  368. package/dist/jsx/FrappeDashboard.mjs +12 -9
  369. package/dist/jsx/FrappeDashboard.mjs.map +1 -1
  370. package/dist/jsx/FrappeDashboard.native.js +12 -9
  371. package/dist/jsx/FrappeDashboard.native.js.map +1 -1
  372. package/dist/jsx/FrappeForm.mjs +35 -24
  373. package/dist/jsx/FrappeForm.mjs.map +1 -1
  374. package/dist/jsx/FrappeForm.native.js +36 -25
  375. package/dist/jsx/FrappeForm.native.js.map +1 -1
  376. package/dist/jsx/FrappeGantt.mjs +7 -5
  377. package/dist/jsx/FrappeGantt.mjs.map +1 -1
  378. package/dist/jsx/FrappeGantt.native.js +7 -5
  379. package/dist/jsx/FrappeGantt.native.js.map +1 -1
  380. package/dist/jsx/FrappeImageView.mjs +23 -23
  381. package/dist/jsx/FrappeImageView.mjs.map +1 -1
  382. package/dist/jsx/FrappeImageView.native.js +24 -22
  383. package/dist/jsx/FrappeImageView.native.js.map +1 -1
  384. package/dist/jsx/FrappeKPICard.mjs +7 -29
  385. package/dist/jsx/FrappeKPICard.mjs.map +1 -1
  386. package/dist/jsx/FrappeKPICard.native.js +7 -29
  387. package/dist/jsx/FrappeKPICard.native.js.map +1 -1
  388. package/dist/jsx/FrappeKanban.mjs +13 -15
  389. package/dist/jsx/FrappeKanban.mjs.map +1 -1
  390. package/dist/jsx/FrappeKanban.native.js +11 -13
  391. package/dist/jsx/FrappeKanban.native.js.map +1 -1
  392. package/dist/jsx/FrappeLikedBy.mjs +6 -6
  393. package/dist/jsx/FrappeLikedBy.mjs.map +1 -1
  394. package/dist/jsx/FrappeLikedBy.native.js +6 -6
  395. package/dist/jsx/FrappeLikedBy.native.js.map +1 -1
  396. package/dist/jsx/FrappeListView.mjs +33 -34
  397. package/dist/jsx/FrappeListView.mjs.map +1 -1
  398. package/dist/jsx/FrappeListView.native.js +37 -39
  399. package/dist/jsx/FrappeListView.native.js.map +1 -1
  400. package/dist/jsx/FrappeReportBuilder.mjs +27 -43
  401. package/dist/jsx/FrappeReportBuilder.mjs.map +1 -1
  402. package/dist/jsx/FrappeReportBuilder.native.js +30 -42
  403. package/dist/jsx/FrappeReportBuilder.native.js.map +1 -1
  404. package/dist/jsx/FrappeReportView.mjs +6 -6
  405. package/dist/jsx/FrappeReportView.mjs.map +1 -1
  406. package/dist/jsx/FrappeReportView.native.js +5 -5
  407. package/dist/jsx/FrappeReportView.native.js.map +1 -1
  408. package/dist/jsx/FrappeTreeView.mjs +9 -6
  409. package/dist/jsx/FrappeTreeView.mjs.map +1 -1
  410. package/dist/jsx/FrappeTreeView.native.js +10 -6
  411. package/dist/jsx/FrappeTreeView.native.js.map +1 -1
  412. package/dist/jsx/desk/DeskFormPage.mjs +3 -3
  413. package/dist/jsx/desk/DeskFormPage.mjs.map +1 -1
  414. package/dist/jsx/desk/DeskFormPage.native.js +3 -3
  415. package/dist/jsx/desk/DeskFormPage.native.js.map +1 -1
  416. package/dist/jsx/desk/DeskListPage.mjs +2 -2
  417. package/dist/jsx/desk/DeskListPage.mjs.map +1 -1
  418. package/dist/jsx/desk/DeskListPage.native.js +2 -2
  419. package/dist/jsx/desk/DeskListPage.native.js.map +1 -1
  420. package/dist/jsx/desk/DeskShell.mjs +48 -28
  421. package/dist/jsx/desk/DeskShell.mjs.map +1 -1
  422. package/dist/jsx/desk/DeskShell.native.js +63 -44
  423. package/dist/jsx/desk/DeskShell.native.js.map +1 -1
  424. package/dist/jsx/desk/awesomebar.mjs +29 -17
  425. package/dist/jsx/desk/awesomebar.mjs.map +1 -1
  426. package/dist/jsx/desk/awesomebar.native.js +28 -16
  427. package/dist/jsx/desk/awesomebar.native.js.map +1 -1
  428. package/dist/jsx/fieldRegistry.mjs +16 -4
  429. package/dist/jsx/fieldRegistry.mjs.map +1 -1
  430. package/dist/jsx/fieldRegistry.native.js +15 -3
  431. package/dist/jsx/fieldRegistry.native.js.map +1 -1
  432. package/dist/jsx/fields/Check/index.mjs +1 -1
  433. package/dist/jsx/fields/Check/index.mjs.map +1 -1
  434. package/dist/jsx/fields/Check/index.native.js +1 -1
  435. package/dist/jsx/fields/Check/index.native.js.map +1 -1
  436. package/dist/jsx/fields/Color/index.mjs +1 -1
  437. package/dist/jsx/fields/Color/index.mjs.map +1 -1
  438. package/dist/jsx/fields/Color/index.native.js +1 -1
  439. package/dist/jsx/fields/Color/index.native.js.map +1 -1
  440. package/dist/jsx/fields/Data/index.mjs.map +1 -1
  441. package/dist/jsx/fields/Data/index.native.js.map +1 -1
  442. package/dist/jsx/fields/Date/index.native.js +47 -34
  443. package/dist/jsx/fields/Date/index.native.js.map +1 -1
  444. package/dist/jsx/fields/Date/sheetKeyboard.mjs +21 -0
  445. package/dist/jsx/fields/Date/sheetKeyboard.mjs.map +1 -0
  446. package/dist/jsx/fields/Date/sheetKeyboard.native.js +57 -0
  447. package/dist/jsx/fields/Date/sheetKeyboard.native.js.map +1 -0
  448. package/dist/jsx/fields/DynamicLink.mjs +37 -128
  449. package/dist/jsx/fields/DynamicLink.mjs.map +1 -1
  450. package/dist/jsx/fields/DynamicLink.native.js +40 -138
  451. package/dist/jsx/fields/DynamicLink.native.js.map +1 -1
  452. package/dist/jsx/fields/FileUpload.mjs +234 -51
  453. package/dist/jsx/fields/FileUpload.mjs.map +1 -1
  454. package/dist/jsx/fields/FileUpload.native.js +242 -51
  455. package/dist/jsx/fields/FileUpload.native.js.map +1 -1
  456. package/dist/jsx/fields/FileUploadField/index.mjs +55 -22
  457. package/dist/jsx/fields/FileUploadField/index.mjs.map +1 -1
  458. package/dist/jsx/fields/FileUploadField/index.native.js +56 -20
  459. package/dist/jsx/fields/FileUploadField/index.native.js.map +1 -1
  460. package/dist/jsx/fields/HTML/index.mjs +33 -54
  461. package/dist/jsx/fields/HTML/index.mjs.map +1 -1
  462. package/dist/jsx/fields/HTML/index.native.js +30 -51
  463. package/dist/jsx/fields/HTML/index.native.js.map +1 -1
  464. package/dist/jsx/fields/Icon/index.mjs +48 -0
  465. package/dist/jsx/fields/Icon/index.mjs.map +1 -0
  466. package/dist/jsx/fields/Icon/index.native.js +76 -0
  467. package/dist/jsx/fields/Icon/index.native.js.map +1 -0
  468. package/dist/jsx/fields/Link.mjs +35 -9
  469. package/dist/jsx/fields/Link.mjs.map +1 -1
  470. package/dist/jsx/fields/Link.native.js +35 -9
  471. package/dist/jsx/fields/Link.native.js.map +1 -1
  472. package/dist/jsx/fields/LinkTree.mjs +89 -0
  473. package/dist/jsx/fields/LinkTree.mjs.map +1 -0
  474. package/dist/jsx/fields/LinkTree.native.js +125 -0
  475. package/dist/jsx/fields/LinkTree.native.js.map +1 -0
  476. package/dist/jsx/fields/LongText/index.mjs +7 -5
  477. package/dist/jsx/fields/LongText/index.mjs.map +1 -1
  478. package/dist/jsx/fields/LongText/index.native.js +6 -4
  479. package/dist/jsx/fields/LongText/index.native.js.map +1 -1
  480. package/dist/jsx/fields/Numeric/index.mjs.map +1 -1
  481. package/dist/jsx/fields/Numeric/index.native.js.map +1 -1
  482. package/dist/jsx/fields/Password/index.mjs +180 -18
  483. package/dist/jsx/fields/Password/index.mjs.map +1 -1
  484. package/dist/jsx/fields/Password/index.native.js +197 -16
  485. package/dist/jsx/fields/Password/index.native.js.map +1 -1
  486. package/dist/jsx/fields/Phone/index.mjs.map +1 -1
  487. package/dist/jsx/fields/Phone/index.native.js.map +1 -1
  488. package/dist/jsx/fields/ReadOnly/index.mjs +36 -50
  489. package/dist/jsx/fields/ReadOnly/index.mjs.map +1 -1
  490. package/dist/jsx/fields/ReadOnly/index.native.js +34 -46
  491. package/dist/jsx/fields/ReadOnly/index.native.js.map +1 -1
  492. package/dist/jsx/fields/Select/index.mjs +1 -1
  493. package/dist/jsx/fields/Select/index.mjs.map +1 -1
  494. package/dist/jsx/fields/Select/index.native.js +1 -1
  495. package/dist/jsx/fields/Select/index.native.js.map +1 -1
  496. package/dist/jsx/fields/SmallText/index.mjs +5 -4
  497. package/dist/jsx/fields/SmallText/index.mjs.map +1 -1
  498. package/dist/jsx/fields/SmallText/index.native.js +4 -3
  499. package/dist/jsx/fields/SmallText/index.native.js.map +1 -1
  500. package/dist/jsx/fields/TableMultiSelect.mjs +41 -152
  501. package/dist/jsx/fields/TableMultiSelect.mjs.map +1 -1
  502. package/dist/jsx/fields/TableMultiSelect.native.js +44 -171
  503. package/dist/jsx/fields/TableMultiSelect.native.js.map +1 -1
  504. package/dist/jsx/fields/TextEditor/index.mjs +28 -284
  505. package/dist/jsx/fields/TextEditor/index.mjs.map +1 -1
  506. package/dist/jsx/index.js +5 -1
  507. package/dist/jsx/index.js.map +1 -1
  508. package/dist/jsx/index.mjs +5 -1
  509. package/dist/jsx/index.mjs.map +1 -1
  510. package/dist/jsx/index.native.js +9 -0
  511. package/dist/jsx/index.native.js.map +1 -1
  512. package/dist/jsx/schemaForm/SchemaWizard.mjs +156 -0
  513. package/dist/jsx/schemaForm/SchemaWizard.mjs.map +1 -0
  514. package/dist/jsx/schemaForm/SchemaWizard.native.js +232 -0
  515. package/dist/jsx/schemaForm/SchemaWizard.native.js.map +1 -0
  516. package/dist/jsx/schemaForm/index.mjs +1 -1
  517. package/dist/jsx/schemaForm/index.mjs.map +1 -1
  518. package/dist/jsx/schemaForm/index.native.js +1 -1
  519. package/dist/jsx/schemaForm/index.native.js.map +1 -1
  520. package/dist/jsx/shared/useKeyboardInset.mjs +23 -0
  521. package/dist/jsx/shared/useKeyboardInset.mjs.map +1 -0
  522. package/dist/jsx/shared/useKeyboardInset.native.js +53 -0
  523. package/dist/jsx/shared/useKeyboardInset.native.js.map +1 -0
  524. package/package.json +16 -16
  525. package/src/FileBrowser/AttachLibrary.tsx +90 -0
  526. package/src/FileBrowser/FileBrowser.spec.tsx +268 -0
  527. package/src/FileBrowser/FileBrowser.stories.tsx +93 -0
  528. package/src/FileBrowser/folderTree.ts +62 -0
  529. package/src/FileBrowser/index.tsx +724 -0
  530. package/src/FileBrowser/types.ts +61 -0
  531. package/src/FileBrowser/viewPersistence.ts +37 -0
  532. package/src/FormSidebar.stories.tsx +82 -25
  533. package/src/FormSidebar.tsx +51 -37
  534. package/src/FrappeAssignment.stories.tsx +158 -12
  535. package/src/FrappeAssignment.tsx +11 -9
  536. package/src/FrappeCalendar.stories.tsx +85 -9
  537. package/src/FrappeCalendar.tsx +9 -9
  538. package/src/FrappeChartCard.stories.tsx +107 -14
  539. package/src/FrappeChartCard.tsx +5 -12
  540. package/src/FrappeDashboard.stories.tsx +79 -9
  541. package/src/FrappeDashboard.tsx +8 -8
  542. package/src/FrappeForm.tsx +36 -24
  543. package/src/FrappeGantt.stories.tsx +73 -4
  544. package/src/FrappeGantt.tsx +7 -4
  545. package/src/FrappeImageView.tsx +23 -22
  546. package/src/FrappeKPICard.stories.tsx +110 -10
  547. package/src/FrappeKPICard.tsx +6 -22
  548. package/src/FrappeKanban.stories.tsx +115 -9
  549. package/src/FrappeKanban.tsx +10 -9
  550. package/src/FrappeLikedBy.stories.tsx +82 -10
  551. package/src/FrappeLikedBy.tsx +6 -6
  552. package/src/FrappeList.stories.tsx +85 -8
  553. package/src/FrappeListView.spec.tsx +59 -0
  554. package/src/FrappeListView.tsx +27 -30
  555. package/src/FrappeProvider.stories.tsx +53 -2
  556. package/src/FrappeReportBuilder.tsx +21 -34
  557. package/src/FrappeReportView.tsx +4 -4
  558. package/src/FrappeTreeView.tsx +8 -4
  559. package/src/components/attachments.stories.tsx +79 -7
  560. package/src/components/tags.stories.tsx +131 -6
  561. package/src/components/timeline.stories.tsx +128 -7
  562. package/src/desk/Awesomebar.stories.tsx +3 -2
  563. package/src/desk/DeskFormPage.tsx +3 -2
  564. package/src/desk/DeskListPage.tsx +2 -1
  565. package/src/desk/DeskShell.stories.tsx +21 -2
  566. package/src/desk/DeskShell.tsx +56 -39
  567. package/src/desk/awesomebar.tsx +33 -22
  568. package/src/fieldRegistry.spec.tsx +17 -1
  569. package/src/fieldRegistry.ts +14 -4
  570. package/src/fields/Barcode/Barcode.stories.tsx +32 -0
  571. package/src/fields/Check/Check.spec.tsx +27 -0
  572. package/src/fields/Check/Check.stories.tsx +58 -0
  573. package/src/fields/Check/index.tsx +7 -1
  574. package/src/fields/CodeEditor/CodeEditor.stories.tsx +32 -0
  575. package/src/fields/Color/Color.spec.tsx +21 -0
  576. package/src/fields/Color/Color.stories.tsx +33 -0
  577. package/src/fields/Color/index.tsx +7 -1
  578. package/src/fields/Data/Data.spec.tsx +26 -0
  579. package/src/fields/Data/Data.stories.tsx +58 -0
  580. package/src/fields/Data/index.tsx +6 -0
  581. package/src/fields/Date/Date.stories.tsx +32 -0
  582. package/src/fields/Date/Datetime.stories.tsx +32 -0
  583. package/src/fields/Date/index.native.tsx +45 -33
  584. package/src/fields/Date/nativePresentation.spec.tsx +20 -0
  585. package/src/fields/Date/sheetKeyboard.spec.ts +51 -0
  586. package/src/fields/Date/sheetKeyboard.ts +37 -0
  587. package/src/fields/DateRange/DateRange.stories.tsx +41 -0
  588. package/src/fields/Duration/Duration.stories.tsx +32 -0
  589. package/src/fields/DynamicLink.stories.tsx +115 -14
  590. package/src/fields/DynamicLink.tsx +43 -125
  591. package/src/fields/FileUpload.tsx +273 -54
  592. package/src/fields/FileUploadField/FileUploadField.stories.tsx +87 -0
  593. package/src/fields/FileUploadField/index.tsx +73 -25
  594. package/src/fields/FrappeFileUpload.stories.tsx +32 -0
  595. package/src/fields/Geolocation/Geolocation.stories.tsx +33 -0
  596. package/src/fields/HTML/Html.stories.tsx +59 -0
  597. package/src/fields/HTML/index.tsx +25 -34
  598. package/src/fields/Heading/Heading.stories.tsx +63 -2
  599. package/src/fields/Icon/index.tsx +90 -0
  600. package/src/fields/Link.spec.tsx +10 -0
  601. package/src/fields/Link.stories.tsx +161 -2
  602. package/src/fields/Link.tree.spec.tsx +111 -0
  603. package/src/fields/Link.tsx +36 -19
  604. package/src/fields/LinkTree.tsx +102 -0
  605. package/src/fields/LongText/LongText.stories.tsx +66 -0
  606. package/src/fields/LongText/index.tsx +13 -5
  607. package/src/fields/MarkdownEditor/MarkdownEditor.stories.tsx +36 -0
  608. package/src/fields/MentionInput/MentionInput.stories.tsx +44 -0
  609. package/src/fields/Numeric/Numeric.spec.tsx +7 -0
  610. package/src/fields/Numeric/Numeric.stories.tsx +32 -0
  611. package/src/fields/Numeric/index.tsx +7 -0
  612. package/src/fields/OTPInput/OTPInput.stories.tsx +33 -0
  613. package/src/fields/Password/Password.spec.tsx +119 -0
  614. package/src/fields/Password/Password.stories.tsx +58 -0
  615. package/src/fields/Password/index.tsx +243 -23
  616. package/src/fields/Phone/Phone.stories.tsx +33 -0
  617. package/src/fields/Phone/index.tsx +4 -0
  618. package/src/fields/Progress/Progress.stories.tsx +32 -0
  619. package/src/fields/RadioGroup/RadioGroup.stories.tsx +37 -0
  620. package/src/fields/Rating/Rating.stories.tsx +33 -0
  621. package/src/fields/ReadOnly/ReadOnly.stories.tsx +54 -0
  622. package/src/fields/ReadOnly/index.tsx +41 -55
  623. package/src/fields/Select/Select.stories.tsx +43 -0
  624. package/src/fields/Select/index.tsx +5 -1
  625. package/src/fields/Signature/Signature.stories.tsx +32 -0
  626. package/src/fields/Slider/Slider.stories.tsx +32 -0
  627. package/src/fields/SmallText/SmallText.stories.tsx +58 -0
  628. package/src/fields/SmallText/index.tsx +9 -4
  629. package/src/fields/Switch/Switch.stories.tsx +33 -0
  630. package/src/fields/TableMultiSelect.spec.tsx +26 -5
  631. package/src/fields/TableMultiSelect.stories.tsx +90 -14
  632. package/src/fields/TableMultiSelect.tsx +55 -177
  633. package/src/fields/TextEditor/TextEditor.spec.tsx +5 -3
  634. package/src/fields/TextEditor/TextEditor.stories.tsx +66 -0
  635. package/src/fields/TextEditor/index.tsx +32 -299
  636. package/src/fields/TimePicker/TimePicker.stories.tsx +32 -0
  637. package/src/fields/ToggleGroup/ToggleGroup.stories.tsx +35 -0
  638. package/src/frappeRemainder.designLaw.spec.ts +176 -0
  639. package/src/frappeViews.designLaw.spec.ts +94 -0
  640. package/src/index.ts +18 -1
  641. package/src/schemaForm/SchemaForm.spec.tsx +154 -0
  642. package/src/schemaForm/SchemaForm.stories.tsx +27 -0
  643. package/src/schemaForm/SchemaWizard.spec.tsx +134 -0
  644. package/src/schemaForm/SchemaWizard.stories.tsx +94 -0
  645. package/src/schemaForm/SchemaWizard.tsx +192 -0
  646. package/src/schemaForm/index.tsx +3 -4
  647. package/src/shared/useKeyboardInset.ts +45 -0
  648. package/types/FileBrowser/AttachLibrary.d.ts +13 -0
  649. package/types/FileBrowser/AttachLibrary.d.ts.map +1 -0
  650. package/types/FileBrowser/folderTree.d.ts +15 -0
  651. package/types/FileBrowser/folderTree.d.ts.map +1 -0
  652. package/types/FileBrowser/index.d.ts +4 -0
  653. package/types/FileBrowser/index.d.ts.map +1 -0
  654. package/types/FileBrowser/types.d.ts +59 -0
  655. package/types/FileBrowser/types.d.ts.map +1 -0
  656. package/types/FileBrowser/viewPersistence.d.ts +4 -0
  657. package/types/FileBrowser/viewPersistence.d.ts.map +1 -0
  658. package/types/FormSidebar.d.ts.map +1 -1
  659. package/types/FrappeAssignment.d.ts.map +1 -1
  660. package/types/FrappeChartCard.d.ts.map +1 -1
  661. package/types/FrappeDashboard.d.ts.map +1 -1
  662. package/types/FrappeForm.d.ts.map +1 -1
  663. package/types/FrappeGantt.d.ts.map +1 -1
  664. package/types/FrappeImageView.d.ts.map +1 -1
  665. package/types/FrappeKPICard.d.ts.map +1 -1
  666. package/types/FrappeKanban.d.ts.map +1 -1
  667. package/types/FrappeListView.d.ts.map +1 -1
  668. package/types/FrappeReportBuilder.d.ts.map +1 -1
  669. package/types/FrappeReportView.d.ts.map +1 -1
  670. package/types/FrappeTreeView.d.ts.map +1 -1
  671. package/types/desk/DeskFormPage.d.ts.map +1 -1
  672. package/types/desk/DeskListPage.d.ts.map +1 -1
  673. package/types/desk/DeskShell.d.ts +4 -2
  674. package/types/desk/DeskShell.d.ts.map +1 -1
  675. package/types/desk/awesomebar.d.ts.map +1 -1
  676. package/types/fieldRegistry.d.ts.map +1 -1
  677. package/types/fields/Check/index.d.ts +6 -0
  678. package/types/fields/Check/index.d.ts.map +1 -1
  679. package/types/fields/Color/index.d.ts +6 -0
  680. package/types/fields/Color/index.d.ts.map +1 -1
  681. package/types/fields/Data/index.d.ts +6 -0
  682. package/types/fields/Data/index.d.ts.map +1 -1
  683. package/types/fields/Date/index.native.d.ts +5 -0
  684. package/types/fields/Date/index.native.d.ts.map +1 -1
  685. package/types/fields/Date/sheetKeyboard.d.ts +19 -0
  686. package/types/fields/Date/sheetKeyboard.d.ts.map +1 -0
  687. package/types/fields/DynamicLink.d.ts.map +1 -1
  688. package/types/fields/FileUpload.d.ts +11 -1
  689. package/types/fields/FileUpload.d.ts.map +1 -1
  690. package/types/fields/FileUploadField/index.d.ts +8 -1
  691. package/types/fields/FileUploadField/index.d.ts.map +1 -1
  692. package/types/fields/HTML/index.d.ts.map +1 -1
  693. package/types/fields/Icon/index.d.ts +15 -0
  694. package/types/fields/Icon/index.d.ts.map +1 -0
  695. package/types/fields/Link.d.ts +6 -1
  696. package/types/fields/Link.d.ts.map +1 -1
  697. package/types/fields/LinkTree.d.ts +3 -0
  698. package/types/fields/LinkTree.d.ts.map +1 -0
  699. package/types/fields/LongText/index.d.ts +4 -0
  700. package/types/fields/LongText/index.d.ts.map +1 -1
  701. package/types/fields/Numeric/index.d.ts +7 -0
  702. package/types/fields/Numeric/index.d.ts.map +1 -1
  703. package/types/fields/Password/index.d.ts +1 -0
  704. package/types/fields/Password/index.d.ts.map +1 -1
  705. package/types/fields/Phone/index.d.ts +4 -0
  706. package/types/fields/Phone/index.d.ts.map +1 -1
  707. package/types/fields/ReadOnly/index.d.ts.map +1 -1
  708. package/types/fields/Select/index.d.ts +4 -0
  709. package/types/fields/Select/index.d.ts.map +1 -1
  710. package/types/fields/SmallText/index.d.ts +4 -0
  711. package/types/fields/SmallText/index.d.ts.map +1 -1
  712. package/types/fields/TableMultiSelect.d.ts +2 -1
  713. package/types/fields/TableMultiSelect.d.ts.map +1 -1
  714. package/types/fields/TextEditor/index.d.ts +2 -3
  715. package/types/fields/TextEditor/index.d.ts.map +1 -1
  716. package/types/index.d.ts +7 -1
  717. package/types/index.d.ts.map +1 -1
  718. package/types/schemaForm/SchemaWizard.d.ts +20 -0
  719. package/types/schemaForm/SchemaWizard.d.ts.map +1 -0
  720. package/types/schemaForm/index.d.ts.map +1 -1
  721. package/types/shared/useKeyboardInset.d.ts +18 -0
  722. package/types/shared/useKeyboardInset.d.ts.map +1 -0
@@ -7,14 +7,16 @@ import {
7
7
  import { downloadBlob } from "@multiplatform.one/platform";
8
8
  import {
9
9
  ReportBuilder,
10
+ PopoverContent,
11
+ Separator,
10
12
  type ReportColumn,
11
13
  type GroupByConfig,
12
14
  } from "@multiplatform.one/components";
13
- import { Spinner } from "@multiplatform.one/forms";
15
+ import { Button, Input, Spinner, formCommonColors } from "@multiplatform.one/forms";
14
16
  import { storage } from "@multiplatform.one/store";
15
17
  import React, { useMemo, useState, useCallback, useEffect, useRef } from "react";
16
18
  import { useTranslation } from "react-i18next";
17
- import { Button, Popover, Separator, Text, XStack, YStack, type YStackProps, Input } from "tamagui";
19
+ import { Popover, Text, XStack, YStack, type YStackProps } from "tamagui";
18
20
  import { FloppyDiskIcon, FolderOpenIcon, TrashIcon } from "@phosphor-icons/react";
19
21
  import { useResolvedKnobs } from "@multiplatform.one/theme";
20
22
  import { useFrappeConfig } from "./FrappeProvider";
@@ -389,14 +391,14 @@ export function FrappeReportBuilder({
389
391
  borderBottomColor="$borderColor"
390
392
  >
391
393
  {/* Subtle stale affordance while a post-event refresh reconciles */}
392
- {isLiveStale && (
394
+ {isLiveStale ? (
393
395
  <XStack gap="$2" alignItems="center">
394
396
  <Spinner size="small" aria-label={t("Updating")} />
395
- <Text fontSize="$1" color="$color10">
397
+ <Text {...knobProps.label} color={formCommonColors.muted}>
396
398
  {t("Updating...")}
397
399
  </Text>
398
400
  </XStack>
399
- )}
401
+ ) : null}
400
402
  <XStack flex={1} />
401
403
  {/* Save */}
402
404
  <Popover placement="bottom-end" open={saveDialogOpen} onOpenChange={setSaveDialogOpen}>
@@ -405,34 +407,24 @@ export function FrappeReportBuilder({
405
407
  {t("Save")}
406
408
  </Button>
407
409
  </Popover.Trigger>
408
- <Popover.Content
409
- {...{ backgroundColor: "$background" }}
410
- {...knobProps.borderRadius}
411
- {...knobProps.panelPadding}
412
- borderColor="$borderColor"
413
- >
414
- <Popover.Arrow borderWidth={1} borderColor="$borderColor" />
410
+ <PopoverContent>
415
411
  <YStack {...knobProps.gap} minWidth={220}>
416
- <Text fontWeight="600" fontSize="$2">
412
+ <Text {...knobProps.label} fontWeight="400">
417
413
  {t("Save Report")}
418
414
  </Text>
419
415
  <Input
420
- size="$3"
416
+ label={t("Report name")}
417
+ labelHidden
421
418
  placeholder={t("Report name")}
422
419
  value={saveReportName}
423
420
  onChangeText={setSaveReportName}
424
- onSubmitEditing={handleSaveReport}
421
+ inputProps={{ onSubmitEditing: handleSaveReport } as any}
425
422
  />
426
- <Button
427
- size="$2"
428
- theme="active"
429
- onPress={handleSaveReport}
430
- disabled={!saveReportName.trim()}
431
- >
423
+ <Button size="$2" onPress={handleSaveReport} disabled={!saveReportName.trim()}>
432
424
  {t("Save")}
433
425
  </Button>
434
426
  </YStack>
435
- </Popover.Content>
427
+ </PopoverContent>
436
428
  </Popover>
437
429
 
438
430
  {/* Load */}
@@ -443,15 +435,9 @@ export function FrappeReportBuilder({
443
435
  {t("Load")}
444
436
  </Button>
445
437
  </Popover.Trigger>
446
- <Popover.Content
447
- {...{ backgroundColor: "$background" }}
448
- {...knobProps.borderRadius}
449
- {...knobProps.panelPadding}
450
- borderColor="$borderColor"
451
- >
452
- <Popover.Arrow borderWidth={1} borderColor="$borderColor" />
453
- <YStack gap="$1" minWidth={180}>
454
- <Text fontWeight="600" fontSize="$2" color="$color10" padding="$1">
438
+ <PopoverContent>
439
+ <YStack {...knobProps.gap} minWidth={180}>
440
+ <Text {...knobProps.label} fontWeight="400" color={formCommonColors.muted}>
455
441
  {t("Saved Reports")}
456
442
  </Text>
457
443
  <Separator />
@@ -466,11 +452,12 @@ export function FrappeReportBuilder({
466
452
  cursor="pointer"
467
453
  onPress={() => handleLoadReport(report)}
468
454
  >
469
- <Text fontSize="$2" flex={1}>
455
+ <Text {...knobProps.body} flex={1}>
470
456
  {report.name}
471
457
  </Text>
472
458
  <Button
473
- size="$1"
459
+ size="$2"
460
+ circular
474
461
  chromeless
475
462
  icon={TrashIcon}
476
463
  onPress={(e) => {
@@ -482,7 +469,7 @@ export function FrappeReportBuilder({
482
469
  </XStack>
483
470
  ))}
484
471
  </YStack>
485
- </Popover.Content>
472
+ </PopoverContent>
486
473
  </Popover>
487
474
  )}
488
475
  </XStack>
@@ -39,7 +39,7 @@
39
39
  */
40
40
  import { AsyncDebouncer, CallModule, HttpClient, type AuthConfig } from "@multiplatform.one/frappe";
41
41
  import { AsyncBoundary } from "@multiplatform.one/components";
42
- import { DatePicker, Spinner } from "@multiplatform.one/forms";
42
+ import { Button, DatePicker, Spinner, formCommonColors } from "@multiplatform.one/forms";
43
43
  import {
44
44
  DataTable,
45
45
  DataTableExport,
@@ -52,7 +52,7 @@ import { formatCalendarDate, useResolvedKnobs } from "@multiplatform.one/theme";
52
52
  import { ArrowClockwiseIcon } from "@phosphor-icons/react";
53
53
  import { useCallback, useEffect, useMemo, useRef, useState, type ReactNode } from "react";
54
54
  import { useTranslation } from "react-i18next";
55
- import { Button, Text, XStack, YStack, type YStackProps } from "tamagui";
55
+ import { Text, XStack, YStack, type YStackProps } from "tamagui";
56
56
  import { useFrappeConfig } from "./FrappeProvider";
57
57
  import { Check } from "./fields/Check";
58
58
  import { Data } from "./fields/Data";
@@ -804,7 +804,7 @@ export function FrappeReportView({
804
804
  {isFetching && !isLoading && (
805
805
  <XStack gap="$2" alignItems="center" paddingBottom="$2">
806
806
  <Spinner size="small" aria-label={t("Updating")} />
807
- <Text fontSize="$1" color="$color10">
807
+ <Text {...knobProps.label} color={formCommonColors.muted}>
808
808
  {t("Updating...")}
809
809
  </Text>
810
810
  </XStack>
@@ -851,7 +851,7 @@ export function FrappeReportView({
851
851
 
852
852
  {/* Server-side report message (already user-facing). */}
853
853
  {payload?.message && (
854
- <Text fontSize="$2" color="$color10">
854
+ <Text {...knobProps.label} color={formCommonColors.muted}>
855
855
  {payload.message}
856
856
  </Text>
857
857
  )}
@@ -5,6 +5,7 @@ import React, { useCallback, useEffect, useMemo, useState } from "react";
5
5
  import { useTranslation } from "react-i18next";
6
6
  import { Text, YStack, type YStackProps } from "tamagui";
7
7
  import { useResolvedKnobs } from "@multiplatform.one/theme";
8
+ import { formCommonColors } from "@multiplatform.one/forms";
8
9
  import { useFrappeConfig } from "./FrappeProvider";
9
10
  import { FrappeReconnectIndicator } from "./FrappeReconnectIndicator";
10
11
  import { toLiveLoadError } from "./liveErrors";
@@ -238,10 +239,13 @@ export function FrappeTreeView<TDoc extends { name: string; doctype: string }>({
238
239
  }
239
240
 
240
241
  if (isKnownNotTree) {
242
+ const iconSize = Number(knobProps.controlIcon?.width) || 16;
241
243
  return (
242
244
  <YStack {...knobProps.panelPadding} alignItems="center" {...knobProps.gap} {...stackProps}>
243
- <TreeStructureIcon size={48} color="$color8" />
244
- <Text color="$color10">{t("This DocType does not support tree view")}</Text>
245
+ <TreeStructureIcon size={iconSize * 2} color={formCommonColors.muted} />
246
+ <Text color={formCommonColors.muted} {...knobProps.body}>
247
+ {t("This DocType does not support tree view")}
248
+ </Text>
245
249
  </YStack>
246
250
  );
247
251
  }
@@ -277,12 +281,12 @@ export function FrappeTreeView<TDoc extends { name: string; doctype: string }>({
277
281
  showExpansionArrows
278
282
  selectedId={selectedId}
279
283
  renderNode={(node) => (
280
- <Text fontSize={display === "compressed" ? 12 : 14} numberOfLines={1}>
284
+ <Text {...knobProps.label} numberOfLines={1}>
281
285
  {node.label}
282
286
  {valueField &&
283
287
  node.data &&
284
288
  (node.data as Record<string, unknown>)[valueField] != null && (
285
- <Text color="$color10" fontSize="$2" marginInlineStart="$2">
289
+ <Text color={formCommonColors.muted} {...knobProps.label} marginInlineStart="$2">
286
290
  {String((node.data as Record<string, unknown>)[valueField])}
287
291
  </Text>
288
292
  )}
@@ -13,12 +13,84 @@ export default {
13
13
  docs: {
14
14
  description: {
15
15
  component:
16
- "Frappe bridge for the generic Attachments component: maps File documents (filtered by attached_to_doctype/name) into AttachmentItem[] and forwards every other prop.",
16
+ "Frappe bridge for the generic Attachments component: maps File documents (filtered by attached_to_doctype/name) into AttachmentItem[] and forwards every other prop. Fixture stories are network-hermetic (G-15/D-05): documents come from InMemoryFixtureProvider and DocType meta from an in-story fetch mock, so nothing leaves the machine. The separately-named Live story is the live-bench arm — it targets STORYBOOK_FRAPPE_URL when reachable and falls back to fixtures otherwise.",
17
17
  },
18
18
  },
19
19
  },
20
20
  };
21
21
 
22
+ // ---------------------------------------------------------------------------
23
+ // Hermetic story host (G-15 story honesty / D-05, closes UX-P18).
24
+ //
25
+ // Fixture-backed stories previously pointed at https://demo.frappe.cloud. The
26
+ // fixture provider serves the *collection*, but DocType meta still resolves
27
+ // over HTTP — so those stories fired a real cross-origin request the browser
28
+ // rejected with CORS. MOCK_HOST keeps the same code path (real fetch, real
29
+ // meta shape) without leaving the machine.
30
+ // ---------------------------------------------------------------------------
31
+
32
+ const MOCK_HOST = "https://frappeattachments.mock.test";
33
+
34
+ function fileMetaRaw(name: string) {
35
+ return {
36
+ name,
37
+ module: "Core",
38
+ title_field: "file_name",
39
+ fields: [
40
+ { fieldname: "file_name", fieldtype: "Data", label: "File Name", in_list_view: 1 },
41
+ { fieldname: "file_url", fieldtype: "Attach", label: "File URL" },
42
+ { fieldname: "file_size", fieldtype: "Int", label: "File Size", in_list_view: 1 },
43
+ { fieldname: "file_type", fieldtype: "Data", label: "File Type" },
44
+ { fieldname: "is_private", fieldtype: "Check", label: "Is Private" },
45
+ {
46
+ fieldname: "attached_to_doctype",
47
+ fieldtype: "Link",
48
+ label: "Attached To DocType",
49
+ options: "DocType",
50
+ },
51
+ { fieldname: "attached_to_name", fieldtype: "Data", label: "Attached To Name" },
52
+ { fieldname: "attached_to_field", fieldtype: "Data", label: "Attached To Field" },
53
+ { fieldname: "creation", fieldtype: "Datetime", label: "Created On" },
54
+ { fieldname: "modified", fieldtype: "Datetime", label: "Last Modified" },
55
+ ],
56
+ permissions: [{ role: "All", read: 1, write: 1, create: 1 }],
57
+ };
58
+ }
59
+
60
+ function jsonResponse(body: unknown, status = 200): Response {
61
+ return new Response(JSON.stringify(body), {
62
+ status,
63
+ headers: { "Content-Type": "application/json" },
64
+ });
65
+ }
66
+
67
+ (() => {
68
+ if (typeof window === "undefined") return;
69
+ const w = window as unknown as Record<string, unknown>;
70
+ if (w.__frappeAttachmentsMockFetch) return;
71
+ w.__frappeAttachmentsMockFetch = true;
72
+ const realFetch = window.fetch.bind(window);
73
+ window.fetch = async (input: RequestInfo | URL, init?: RequestInit): Promise<Response> => {
74
+ const urlStr =
75
+ typeof input === "string" ? input : input instanceof URL ? input.toString() : input.url;
76
+ if (urlStr.startsWith(MOCK_HOST)) {
77
+ const url = new URL(urlStr);
78
+ if (url.pathname === "/api/method/frappe.desk.form.load.getdoctype") {
79
+ const doctype = url.searchParams.get("doctype") || "File";
80
+ return jsonResponse({ docs: [fileMetaRaw(doctype)] });
81
+ }
82
+ const metaMatch = url.pathname.match(/^\/api\/resource\/DocType\/(.+)$/);
83
+ if (metaMatch) return jsonResponse({ data: fileMetaRaw(decodeURIComponent(metaMatch[1])) });
84
+ if (url.pathname === "/api/resource/DocType") {
85
+ return jsonResponse({ data: [{ name: "File", module: "Core" }] });
86
+ }
87
+ // Everything else (guest field-peek, counts): empty, never the network.
88
+ return jsonResponse({ data: [] });
89
+ }
90
+ return realFetch(input as RequestInfo, init);
91
+ };
92
+ })();
93
+
22
94
  const fileFixtures: FrappeFile[] = [
23
95
  {
24
96
  name: "FILE-001",
@@ -59,7 +131,7 @@ const fileFixtures: FrappeFile[] = [
59
131
  const makeFixtures = () => new InMemoryFixtureProvider({ File: fileFixtures });
60
132
 
61
133
  export const Main = () => (
62
- <FrappeProvider baseURL="https://demo.frappe.cloud" fixtures={makeFixtures()}>
134
+ <FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
63
135
  <Attachments
64
136
  doctype="Task"
65
137
  docname="TASK-001"
@@ -75,21 +147,21 @@ Main.storyName = "Main";
75
147
 
76
148
  /** fieldname filter must narrow to files attached to that specific field. */
77
149
  export const FieldScoped = () => (
78
- <FrappeProvider baseURL="https://demo.frappe.cloud" fixtures={makeFixtures()}>
150
+ <FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
79
151
  <Attachments doctype="Task" docname="TASK-001" fieldname="design_attachment" label="Design" />
80
152
  </FrappeProvider>
81
153
  );
82
154
 
83
155
  /** No files match: the base component's empty state must show. */
84
156
  export const Empty = () => (
85
- <FrappeProvider baseURL="https://demo.frappe.cloud" fixtures={makeFixtures()}>
157
+ <FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
86
158
  <Attachments doctype="Task" docname="TASK-NO-FILES" label="Attachments" />
87
159
  </FrappeProvider>
88
160
  );
89
161
 
90
162
  /** disabled forwards to the base component (no add/remove affordances). */
91
163
  export const Disabled = () => (
92
- <FrappeProvider baseURL="https://demo.frappe.cloud" fixtures={makeFixtures()}>
164
+ <FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
93
165
  <Attachments doctype="Task" docname="TASK-001" label="Attachments" disabled />
94
166
  </FrappeProvider>
95
167
  );
@@ -111,7 +183,7 @@ class PendingFixtureProvider extends InMemoryFixtureProvider {
111
183
  * twin, never empty chrome (LC-20 / DG-ST-02).
112
184
  */
113
185
  export const Loading = () => (
114
- <FrappeProvider baseURL="https://demo.frappe.cloud" fixtures={new PendingFixtureProvider()}>
186
+ <FrappeProvider baseURL={MOCK_HOST} fixtures={new PendingFixtureProvider()}>
115
187
  <Attachments doctype="Task" docname="TASK-001" label="Attachments" />
116
188
  </FrappeProvider>
117
189
  );
@@ -134,7 +206,7 @@ class FailingFixtureProvider extends InMemoryFixtureProvider {
134
206
  * re-runs the initial sync (recovery is covered by tests/attachments.spec).
135
207
  */
136
208
  export const LoadError = () => (
137
- <FrappeProvider baseURL="https://demo.frappe.cloud" fixtures={new FailingFixtureProvider()}>
209
+ <FrappeProvider baseURL={MOCK_HOST} fixtures={new FailingFixtureProvider()}>
138
210
  <Attachments doctype="Task" docname="TASK-001" label="Attachments" onAdd={action("onAdd")} />
139
211
  </FrappeProvider>
140
212
  );
@@ -1,6 +1,7 @@
1
1
  import { InMemoryFixtureProvider } from "@multiplatform.one/frappe";
2
2
  import { action } from "@multiplatform.one/storybook";
3
3
  import { FrappeProvider } from "../FrappeProvider";
4
+ import { FrappeStoryProvider, LiveToDoGate, LIVE_TODO_NAME } from "../frappeStoryTarget";
4
5
  import { Tags, type FrappeTag, type FrappeTagLink } from "./tags";
5
6
 
6
7
  export default {
@@ -12,12 +13,98 @@ export default {
12
13
  docs: {
13
14
  description: {
14
15
  component:
15
- "Frappe bridge for the generic Tags component: Tag Link documents become the assigned tags, all Tag documents become suggestions.",
16
+ "Frappe bridge for the generic Tags component: Tag Link documents become the assigned tags, all Tag documents become suggestions. Fixture stories are network-hermetic (G-15/D-05): documents come from InMemoryFixtureProvider and DocType meta from an in-story fetch mock, so nothing leaves the machine. The separately-named Live story is the live-bench arm — it targets STORYBOOK_FRAPPE_URL when reachable and falls back to fixtures otherwise.",
16
17
  },
17
18
  },
18
19
  },
19
20
  };
20
21
 
22
+ // ---------------------------------------------------------------------------
23
+ // Hermetic story host (G-15 story honesty / D-05).
24
+ //
25
+ // Fixture-backed stories previously pointed at https://demo.frappe.cloud. The
26
+ // fixture provider serves Tag / Tag Link *documents*, but collection setup
27
+ // still resolves DocType meta over HTTP — so those stories fired a real
28
+ // cross-origin request that the browser rejected with a CORS error. MOCK_HOST
29
+ // keeps the same code path (real fetch, real meta shape) without leaving the
30
+ // machine.
31
+ // ---------------------------------------------------------------------------
32
+
33
+ const MOCK_HOST = "https://frappetags.mock.test";
34
+
35
+ function tagMetaRaw(name: string) {
36
+ if (name === "Tag Link") {
37
+ return {
38
+ name: "Tag Link",
39
+ module: "Desk",
40
+ fields: [
41
+ { fieldname: "tag", fieldtype: "Link", label: "Tag", options: "Tag", in_list_view: 1 },
42
+ {
43
+ fieldname: "document_type",
44
+ fieldtype: "Link",
45
+ label: "Document Type",
46
+ options: "DocType",
47
+ in_list_view: 1,
48
+ },
49
+ {
50
+ fieldname: "document_name",
51
+ fieldtype: "Dynamic Link",
52
+ label: "Document Name",
53
+ options: "document_type",
54
+ in_list_view: 1,
55
+ },
56
+ ],
57
+ permissions: [{ role: "All", read: 1, write: 1, create: 1 }],
58
+ };
59
+ }
60
+ return {
61
+ name,
62
+ module: "Desk",
63
+ title_field: "name",
64
+ fields: [{ fieldname: "name", fieldtype: "Data", label: "Tag", in_list_view: 1 }],
65
+ permissions: [{ role: "All", read: 1, write: 1, create: 1 }],
66
+ };
67
+ }
68
+
69
+ function jsonResponse(body: unknown, status = 200): Response {
70
+ return new Response(JSON.stringify(body), {
71
+ status,
72
+ headers: { "Content-Type": "application/json" },
73
+ });
74
+ }
75
+
76
+ (() => {
77
+ if (typeof window === "undefined") return;
78
+ const w = window as unknown as Record<string, unknown>;
79
+ if (w.__frappeTagsMockFetch) return;
80
+ w.__frappeTagsMockFetch = true;
81
+ const realFetch = window.fetch.bind(window);
82
+ window.fetch = async (input: RequestInfo | URL, init?: RequestInit): Promise<Response> => {
83
+ const urlStr =
84
+ typeof input === "string" ? input : input instanceof URL ? input.toString() : input.url;
85
+ if (urlStr.startsWith(MOCK_HOST)) {
86
+ const url = new URL(urlStr);
87
+ if (url.pathname === "/api/method/frappe.desk.form.load.getdoctype") {
88
+ const doctype = url.searchParams.get("doctype") || "Tag";
89
+ return jsonResponse({ docs: [tagMetaRaw(doctype)] });
90
+ }
91
+ const metaMatch = url.pathname.match(/^\/api\/resource\/DocType\/(.+)$/);
92
+ if (metaMatch) return jsonResponse({ data: tagMetaRaw(decodeURIComponent(metaMatch[1])) });
93
+ if (url.pathname === "/api/resource/DocType") {
94
+ return jsonResponse({
95
+ data: [
96
+ { name: "Tag", module: "Desk" },
97
+ { name: "Tag Link", module: "Desk" },
98
+ ],
99
+ });
100
+ }
101
+ // Everything else (guest field-peek, counts): empty, never the network.
102
+ return jsonResponse({ data: [] });
103
+ }
104
+ return realFetch(input as RequestInfo, init);
105
+ };
106
+ })();
107
+
21
108
  const tagFixtures: FrappeTag[] = [
22
109
  { name: "urgent", doctype: "Tag" },
23
110
  { name: "follow-up", doctype: "Tag" },
@@ -47,13 +134,20 @@ const tagLinkFixtures: FrappeTagLink[] = [
47
134
  document_type: "Task",
48
135
  document_name: "TASK-OTHER",
49
136
  },
137
+ {
138
+ name: "TL-LIVE-001",
139
+ doctype: "Tag Link",
140
+ tag: "urgent",
141
+ document_type: "ToDo",
142
+ document_name: LIVE_TODO_NAME,
143
+ },
50
144
  ];
51
145
 
52
146
  const makeFixtures = () =>
53
147
  new InMemoryFixtureProvider({ Tag: tagFixtures, "Tag Link": tagLinkFixtures });
54
148
 
55
149
  export const Main = () => (
56
- <FrappeProvider baseURL="https://demo.frappe.cloud" fixtures={makeFixtures()}>
150
+ <FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
57
151
  <Tags
58
152
  doctype="Task"
59
153
  docname="TASK-001"
@@ -68,28 +162,28 @@ Main.storyName = "Main";
68
162
 
69
163
  /** Document with no tag links: empty state plus suggestions available via Add. */
70
164
  export const Empty = () => (
71
- <FrappeProvider baseURL="https://demo.frappe.cloud" fixtures={makeFixtures()}>
165
+ <FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
72
166
  <Tags doctype="Task" docname="TASK-NO-TAGS" label="Tags" onAdd={action("onAdd")} />
73
167
  </FrappeProvider>
74
168
  );
75
169
 
76
170
  /** enableAdd=false must hide the add affordance entirely. */
77
171
  export const NoAdd = () => (
78
- <FrappeProvider baseURL="https://demo.frappe.cloud" fixtures={makeFixtures()}>
172
+ <FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
79
173
  <Tags doctype="Task" docname="TASK-001" label="Tags" enableAdd={false} />
80
174
  </FrappeProvider>
81
175
  );
82
176
 
83
177
  /** Without onRemove the chips must not offer a remove affordance. */
84
178
  export const NoRemove = () => (
85
- <FrappeProvider baseURL="https://demo.frappe.cloud" fixtures={makeFixtures()}>
179
+ <FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
86
180
  <Tags doctype="Task" docname="TASK-001" label="Tags" />
87
181
  </FrappeProvider>
88
182
  );
89
183
 
90
184
  /** disabled forwards to the base component. */
91
185
  export const Disabled = () => (
92
- <FrappeProvider baseURL="https://demo.frappe.cloud" fixtures={makeFixtures()}>
186
+ <FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
93
187
  <Tags
94
188
  doctype="Task"
95
189
  docname="TASK-001"
@@ -100,3 +194,34 @@ export const Disabled = () => (
100
194
  />
101
195
  </FrappeProvider>
102
196
  );
197
+
198
+ /**
199
+ * Live tags against the real bench (STORYBOOK_FRAPPE_URL, default the local
200
+ * dev bench proxied by the Storybook dev server) on a stock ToDo. Tag /
201
+ * Tag Link are core doctypes. Falls back to fixtures when the bench is
202
+ * unreachable.
203
+ */
204
+ export const Live = () => (
205
+ <FrappeStoryProvider fixtures={makeFixtures()}>
206
+ <LiveToDoGate>
207
+ {(name) => (
208
+ <Tags
209
+ doctype="ToDo"
210
+ docname={name}
211
+ label="Tags"
212
+ onAdd={action("onAdd")}
213
+ onRemove={action("onRemove")}
214
+ onTagClick={action("onTagClick")}
215
+ />
216
+ )}
217
+ </LiveToDoGate>
218
+ </FrappeStoryProvider>
219
+ );
220
+ Live.parameters = {
221
+ docs: {
222
+ description: {
223
+ story:
224
+ "Live Tag / Tag Link collections over a stock ToDo: assigned tags and suggestions come from the bench when STORYBOOK_FRAPPE_URL is reachable; fixture fallback (ToDo/TODO-LIVE-001 + Tag Link) when it is not.",
225
+ },
226
+ },
227
+ };