@multiplatform.one/frappe-ui 7.66.0 → 7.67.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 (290) hide show
  1. package/dist/cjs/FormSidebar.cjs +95 -194
  2. package/dist/cjs/FormSidebar.native.js +107 -217
  3. package/dist/cjs/FormSidebar.native.js.map +1 -1
  4. package/dist/cjs/FrappeConnectionIndicator.cjs +5 -24
  5. package/dist/cjs/FrappeConnectionIndicator.native.js +5 -24
  6. package/dist/cjs/FrappeConnectionIndicator.native.js.map +1 -1
  7. package/dist/cjs/FrappeImageView.cjs +46 -65
  8. package/dist/cjs/FrappeImageView.native.js +46 -68
  9. package/dist/cjs/FrappeImageView.native.js.map +1 -1
  10. package/dist/cjs/FrappeListView.cjs +24 -67
  11. package/dist/cjs/FrappeListView.native.js +25 -71
  12. package/dist/cjs/FrappeListView.native.js.map +1 -1
  13. package/dist/cjs/FrappeRecordView.cjs +4 -0
  14. package/dist/cjs/FrappeRecordView.native.js +4 -0
  15. package/dist/cjs/FrappeRecordView.native.js.map +1 -1
  16. package/dist/cjs/FrappeReportBuilder.cjs +21 -18
  17. package/dist/cjs/FrappeReportBuilder.native.js +21 -18
  18. package/dist/cjs/FrappeReportBuilder.native.js.map +1 -1
  19. package/dist/cjs/SyncErrorNotice.cjs +8 -36
  20. package/dist/cjs/SyncErrorNotice.native.js +8 -36
  21. package/dist/cjs/SyncErrorNotice.native.js.map +1 -1
  22. package/dist/cjs/desk/DeskFormSidebar.cjs +1 -6
  23. package/dist/cjs/desk/DeskFormSidebar.native.js +1 -6
  24. package/dist/cjs/desk/DeskFormSidebar.native.js.map +1 -1
  25. package/dist/cjs/desk/DeskShell.native.js.map +1 -1
  26. package/dist/cjs/fields/Date/catalog.native.js +0 -1
  27. package/dist/cjs/fields/Date/catalog.native.js.map +1 -1
  28. package/dist/cjs/fields/Date/index.native.js +4 -363
  29. package/dist/cjs/fields/Date/index.native.js.map +1 -1
  30. package/dist/cjs/insights/InsightsFacetTags.cjs +16 -92
  31. package/dist/cjs/insights/InsightsFacetTags.native.js +15 -97
  32. package/dist/cjs/insights/InsightsFacetTags.native.js.map +1 -1
  33. package/dist/cjs/list/FacetBadge.cjs +4 -28
  34. package/dist/cjs/list/FacetBadge.native.js +4 -28
  35. package/dist/cjs/list/FacetBadge.native.js.map +1 -1
  36. package/dist/cjs/list/FacetRail.cjs +37 -128
  37. package/dist/cjs/list/FacetRail.native.js +32 -130
  38. package/dist/cjs/list/FacetRail.native.js.map +1 -1
  39. package/dist/cjs/list/RecordCard.cjs +107 -127
  40. package/dist/cjs/list/RecordCard.native.js +86 -96
  41. package/dist/cjs/list/RecordCard.native.js.map +1 -1
  42. package/dist/cjs/list/ShufflePanel.cjs +57 -36
  43. package/dist/cjs/list/ShufflePanel.native.js +64 -39
  44. package/dist/cjs/list/ShufflePanel.native.js.map +1 -1
  45. package/dist/cjs/record/RecordHero.cjs +7 -85
  46. package/dist/cjs/record/RecordHero.native.js +7 -85
  47. package/dist/cjs/record/RecordHero.native.js.map +1 -1
  48. package/dist/cjs/record/RecordPage.cjs +1 -0
  49. package/dist/cjs/record/RecordPage.native.js +1 -0
  50. package/dist/cjs/record/RecordPage.native.js.map +1 -1
  51. package/dist/cjs/report/ReportViewToolbar.cjs +70 -39
  52. package/dist/cjs/report/ReportViewToolbar.native.js +73 -40
  53. package/dist/cjs/report/ReportViewToolbar.native.js.map +1 -1
  54. package/dist/esm/FormSidebar.mjs +98 -197
  55. package/dist/esm/FormSidebar.mjs.map +1 -1
  56. package/dist/esm/FormSidebar.native.js +110 -220
  57. package/dist/esm/FormSidebar.native.js.map +1 -1
  58. package/dist/esm/FrappeConnectionIndicator.mjs +7 -26
  59. package/dist/esm/FrappeConnectionIndicator.mjs.map +1 -1
  60. package/dist/esm/FrappeConnectionIndicator.native.js +7 -26
  61. package/dist/esm/FrappeConnectionIndicator.native.js.map +1 -1
  62. package/dist/esm/FrappeImageView.mjs +48 -67
  63. package/dist/esm/FrappeImageView.mjs.map +1 -1
  64. package/dist/esm/FrappeImageView.native.js +48 -70
  65. package/dist/esm/FrappeImageView.native.js.map +1 -1
  66. package/dist/esm/FrappeListView.mjs +25 -68
  67. package/dist/esm/FrappeListView.mjs.map +1 -1
  68. package/dist/esm/FrappeListView.native.js +26 -72
  69. package/dist/esm/FrappeListView.native.js.map +1 -1
  70. package/dist/esm/FrappeRecordView.mjs +4 -0
  71. package/dist/esm/FrappeRecordView.mjs.map +1 -1
  72. package/dist/esm/FrappeRecordView.native.js +4 -0
  73. package/dist/esm/FrappeRecordView.native.js.map +1 -1
  74. package/dist/esm/FrappeReportBuilder.mjs +21 -18
  75. package/dist/esm/FrappeReportBuilder.mjs.map +1 -1
  76. package/dist/esm/FrappeReportBuilder.native.js +21 -18
  77. package/dist/esm/FrappeReportBuilder.native.js.map +1 -1
  78. package/dist/esm/SyncErrorNotice.mjs +10 -38
  79. package/dist/esm/SyncErrorNotice.mjs.map +1 -1
  80. package/dist/esm/SyncErrorNotice.native.js +10 -38
  81. package/dist/esm/SyncErrorNotice.native.js.map +1 -1
  82. package/dist/esm/desk/DeskFormSidebar.mjs +1 -6
  83. package/dist/esm/desk/DeskFormSidebar.mjs.map +1 -1
  84. package/dist/esm/desk/DeskFormSidebar.native.js +1 -6
  85. package/dist/esm/desk/DeskFormSidebar.native.js.map +1 -1
  86. package/dist/esm/desk/DeskShell.mjs.map +1 -1
  87. package/dist/esm/desk/DeskShell.native.js.map +1 -1
  88. package/dist/esm/fields/Date/catalog.mjs.map +1 -1
  89. package/dist/esm/fields/Date/catalog.native.js +0 -1
  90. package/dist/esm/fields/Date/catalog.native.js.map +1 -1
  91. package/dist/esm/fields/Date/index.native.js +2 -361
  92. package/dist/esm/fields/Date/index.native.js.map +1 -1
  93. package/dist/esm/insights/InsightsFacetTags.mjs +18 -94
  94. package/dist/esm/insights/InsightsFacetTags.mjs.map +1 -1
  95. package/dist/esm/insights/InsightsFacetTags.native.js +17 -99
  96. package/dist/esm/insights/InsightsFacetTags.native.js.map +1 -1
  97. package/dist/esm/list/FacetBadge.mjs +5 -29
  98. package/dist/esm/list/FacetBadge.mjs.map +1 -1
  99. package/dist/esm/list/FacetBadge.native.js +5 -29
  100. package/dist/esm/list/FacetBadge.native.js.map +1 -1
  101. package/dist/esm/list/FacetRail.mjs +40 -131
  102. package/dist/esm/list/FacetRail.mjs.map +1 -1
  103. package/dist/esm/list/FacetRail.native.js +35 -133
  104. package/dist/esm/list/FacetRail.native.js.map +1 -1
  105. package/dist/esm/list/RecordCard.mjs +107 -127
  106. package/dist/esm/list/RecordCard.mjs.map +1 -1
  107. package/dist/esm/list/RecordCard.native.js +86 -96
  108. package/dist/esm/list/RecordCard.native.js.map +1 -1
  109. package/dist/esm/list/ShufflePanel.mjs +59 -38
  110. package/dist/esm/list/ShufflePanel.mjs.map +1 -1
  111. package/dist/esm/list/ShufflePanel.native.js +66 -41
  112. package/dist/esm/list/ShufflePanel.native.js.map +1 -1
  113. package/dist/esm/record/RecordHero.mjs +8 -86
  114. package/dist/esm/record/RecordHero.mjs.map +1 -1
  115. package/dist/esm/record/RecordHero.native.js +8 -86
  116. package/dist/esm/record/RecordHero.native.js.map +1 -1
  117. package/dist/esm/record/RecordPage.mjs +2 -1
  118. package/dist/esm/record/RecordPage.mjs.map +1 -1
  119. package/dist/esm/record/RecordPage.native.js +2 -1
  120. package/dist/esm/record/RecordPage.native.js.map +1 -1
  121. package/dist/esm/report/ReportViewToolbar.mjs +72 -41
  122. package/dist/esm/report/ReportViewToolbar.mjs.map +1 -1
  123. package/dist/esm/report/ReportViewToolbar.native.js +75 -42
  124. package/dist/esm/report/ReportViewToolbar.native.js.map +1 -1
  125. package/dist/jsx/FormSidebar.mjs +98 -197
  126. package/dist/jsx/FormSidebar.mjs.map +1 -1
  127. package/dist/jsx/FormSidebar.native.js +107 -217
  128. package/dist/jsx/FormSidebar.native.js.map +1 -1
  129. package/dist/jsx/FrappeConnectionIndicator.mjs +7 -26
  130. package/dist/jsx/FrappeConnectionIndicator.mjs.map +1 -1
  131. package/dist/jsx/FrappeConnectionIndicator.native.js +5 -24
  132. package/dist/jsx/FrappeConnectionIndicator.native.js.map +1 -1
  133. package/dist/jsx/FrappeImageView.mjs +48 -67
  134. package/dist/jsx/FrappeImageView.mjs.map +1 -1
  135. package/dist/jsx/FrappeImageView.native.js +46 -68
  136. package/dist/jsx/FrappeImageView.native.js.map +1 -1
  137. package/dist/jsx/FrappeListView.mjs +25 -68
  138. package/dist/jsx/FrappeListView.mjs.map +1 -1
  139. package/dist/jsx/FrappeListView.native.js +25 -71
  140. package/dist/jsx/FrappeListView.native.js.map +1 -1
  141. package/dist/jsx/FrappeRecordView.mjs +4 -0
  142. package/dist/jsx/FrappeRecordView.mjs.map +1 -1
  143. package/dist/jsx/FrappeRecordView.native.js +4 -0
  144. package/dist/jsx/FrappeRecordView.native.js.map +1 -1
  145. package/dist/jsx/FrappeReportBuilder.mjs +21 -18
  146. package/dist/jsx/FrappeReportBuilder.mjs.map +1 -1
  147. package/dist/jsx/FrappeReportBuilder.native.js +21 -18
  148. package/dist/jsx/FrappeReportBuilder.native.js.map +1 -1
  149. package/dist/jsx/SyncErrorNotice.mjs +10 -38
  150. package/dist/jsx/SyncErrorNotice.mjs.map +1 -1
  151. package/dist/jsx/SyncErrorNotice.native.js +8 -36
  152. package/dist/jsx/SyncErrorNotice.native.js.map +1 -1
  153. package/dist/jsx/desk/DeskFormSidebar.mjs +1 -6
  154. package/dist/jsx/desk/DeskFormSidebar.mjs.map +1 -1
  155. package/dist/jsx/desk/DeskFormSidebar.native.js +1 -6
  156. package/dist/jsx/desk/DeskFormSidebar.native.js.map +1 -1
  157. package/dist/jsx/desk/DeskShell.mjs.map +1 -1
  158. package/dist/jsx/desk/DeskShell.native.js.map +1 -1
  159. package/dist/jsx/fields/Date/catalog.mjs.map +1 -1
  160. package/dist/jsx/fields/Date/catalog.native.js +0 -1
  161. package/dist/jsx/fields/Date/catalog.native.js.map +1 -1
  162. package/dist/jsx/fields/Date/index.native.js +4 -363
  163. package/dist/jsx/fields/Date/index.native.js.map +1 -1
  164. package/dist/jsx/insights/InsightsFacetTags.mjs +18 -94
  165. package/dist/jsx/insights/InsightsFacetTags.mjs.map +1 -1
  166. package/dist/jsx/insights/InsightsFacetTags.native.js +15 -97
  167. package/dist/jsx/insights/InsightsFacetTags.native.js.map +1 -1
  168. package/dist/jsx/list/FacetBadge.mjs +5 -29
  169. package/dist/jsx/list/FacetBadge.mjs.map +1 -1
  170. package/dist/jsx/list/FacetBadge.native.js +4 -28
  171. package/dist/jsx/list/FacetBadge.native.js.map +1 -1
  172. package/dist/jsx/list/FacetRail.mjs +40 -131
  173. package/dist/jsx/list/FacetRail.mjs.map +1 -1
  174. package/dist/jsx/list/FacetRail.native.js +32 -130
  175. package/dist/jsx/list/FacetRail.native.js.map +1 -1
  176. package/dist/jsx/list/RecordCard.mjs +107 -127
  177. package/dist/jsx/list/RecordCard.mjs.map +1 -1
  178. package/dist/jsx/list/RecordCard.native.js +86 -96
  179. package/dist/jsx/list/RecordCard.native.js.map +1 -1
  180. package/dist/jsx/list/ShufflePanel.mjs +59 -38
  181. package/dist/jsx/list/ShufflePanel.mjs.map +1 -1
  182. package/dist/jsx/list/ShufflePanel.native.js +64 -39
  183. package/dist/jsx/list/ShufflePanel.native.js.map +1 -1
  184. package/dist/jsx/record/RecordHero.mjs +8 -86
  185. package/dist/jsx/record/RecordHero.mjs.map +1 -1
  186. package/dist/jsx/record/RecordHero.native.js +7 -85
  187. package/dist/jsx/record/RecordHero.native.js.map +1 -1
  188. package/dist/jsx/record/RecordPage.mjs +2 -1
  189. package/dist/jsx/record/RecordPage.mjs.map +1 -1
  190. package/dist/jsx/record/RecordPage.native.js +1 -0
  191. package/dist/jsx/record/RecordPage.native.js.map +1 -1
  192. package/dist/jsx/report/ReportViewToolbar.mjs +72 -41
  193. package/dist/jsx/report/ReportViewToolbar.mjs.map +1 -1
  194. package/dist/jsx/report/ReportViewToolbar.native.js +73 -40
  195. package/dist/jsx/report/ReportViewToolbar.native.js.map +1 -1
  196. package/package.json +16 -16
  197. package/src/FormSidebar.stories.tsx +1 -1
  198. package/src/FormSidebar.tsx +128 -253
  199. package/src/FrappeConnectionIndicator.tsx +6 -28
  200. package/src/FrappeImageView.stories.tsx +1 -6
  201. package/src/FrappeImageView.tsx +52 -66
  202. package/src/FrappeListView.controls.spec.tsx +3 -2
  203. package/src/FrappeListView.tsx +23 -55
  204. package/src/FrappeRecordView.tsx +16 -3
  205. package/src/FrappeReportBuilder.tsx +21 -19
  206. package/src/SyncErrorNotice.spec.tsx +7 -12
  207. package/src/SyncErrorNotice.stories.tsx +2 -4
  208. package/src/SyncErrorNotice.tsx +13 -41
  209. package/src/desk/DeskFormSidebar.tsx +1 -2
  210. package/src/desk/DeskShell.tsx +1 -0
  211. package/src/fields/Date/catalog.tsx +6 -7
  212. package/src/fields/Date/nativeIsCatalog.spec.tsx +26 -0
  213. package/src/fields/Date/typeParity.spec.tsx +20 -98
  214. package/src/frappeRemainder.designLaw.spec.ts +8 -7
  215. package/src/insights/InsightsFacetTags.tsx +21 -102
  216. package/src/list/FacetBadge.tsx +7 -29
  217. package/src/list/FacetRail.spec.tsx +11 -10
  218. package/src/list/FacetRail.tsx +49 -161
  219. package/src/list/RecordCard.native.tsx +63 -64
  220. package/src/list/RecordCard.spec.tsx +8 -5
  221. package/src/list/RecordCard.tsx +116 -129
  222. package/src/list/ShufflePanel.tsx +65 -38
  223. package/src/record/RecordHero.tsx +11 -51
  224. package/src/record/RecordPage.tsx +6 -1
  225. package/src/report/ReportViewToolbar.spec.tsx +45 -3
  226. package/src/report/ReportViewToolbar.tsx +109 -56
  227. package/types/FormSidebar.d.ts +13 -3
  228. package/types/FormSidebar.d.ts.map +1 -1
  229. package/types/FrappeConnectionIndicator.d.ts +2 -1
  230. package/types/FrappeConnectionIndicator.d.ts.map +1 -1
  231. package/types/FrappeImageView.d.ts.map +1 -1
  232. package/types/FrappeListView.d.ts.map +1 -1
  233. package/types/FrappeRecordView.d.ts.map +1 -1
  234. package/types/FrappeReportBuilder.d.ts.map +1 -1
  235. package/types/SyncErrorNotice.d.ts +4 -6
  236. package/types/SyncErrorNotice.d.ts.map +1 -1
  237. package/types/desk/DeskFormSidebar.d.ts.map +1 -1
  238. package/types/desk/DeskShell.d.ts.map +1 -1
  239. package/types/fields/Date/catalog.d.ts +5 -4
  240. package/types/fields/Date/catalog.d.ts.map +1 -1
  241. package/types/insights/InsightsFacetTags.d.ts +4 -1
  242. package/types/insights/InsightsFacetTags.d.ts.map +1 -1
  243. package/types/list/FacetBadge.d.ts +3 -3
  244. package/types/list/FacetBadge.d.ts.map +1 -1
  245. package/types/list/FacetRail.d.ts +7 -5
  246. package/types/list/FacetRail.d.ts.map +1 -1
  247. package/types/list/RecordCard.d.ts +6 -6
  248. package/types/list/RecordCard.d.ts.map +1 -1
  249. package/types/list/RecordCard.native.d.ts +4 -3
  250. package/types/list/RecordCard.native.d.ts.map +1 -1
  251. package/types/list/ShufflePanel.d.ts +8 -3
  252. package/types/list/ShufflePanel.d.ts.map +1 -1
  253. package/types/record/RecordHero.d.ts +5 -1
  254. package/types/record/RecordHero.d.ts.map +1 -1
  255. package/types/record/RecordPage.d.ts.map +1 -1
  256. package/types/report/ReportViewToolbar.d.ts.map +1 -1
  257. package/dist/cjs/fields/Date/dateTimePickerLoader.cjs +0 -38
  258. package/dist/cjs/fields/Date/dateTimePickerLoader.native.js +0 -42
  259. package/dist/cjs/fields/Date/dateTimePickerLoader.native.js.map +0 -1
  260. package/dist/cjs/fields/Date/sheetKeyboard.cjs +0 -54
  261. package/dist/cjs/fields/Date/sheetKeyboard.native.js +0 -57
  262. package/dist/cjs/fields/Date/sheetKeyboard.native.js.map +0 -1
  263. package/dist/esm/fields/Date/dateTimePickerLoader.mjs +0 -13
  264. package/dist/esm/fields/Date/dateTimePickerLoader.mjs.map +0 -1
  265. package/dist/esm/fields/Date/dateTimePickerLoader.native.js +0 -14
  266. package/dist/esm/fields/Date/dateTimePickerLoader.native.js.map +0 -1
  267. package/dist/esm/fields/Date/sheetKeyboard.mjs +0 -21
  268. package/dist/esm/fields/Date/sheetKeyboard.mjs.map +0 -1
  269. package/dist/esm/fields/Date/sheetKeyboard.native.js +0 -21
  270. package/dist/esm/fields/Date/sheetKeyboard.native.js.map +0 -1
  271. package/dist/jsx/fields/Date/dateTimePickerLoader.mjs +0 -13
  272. package/dist/jsx/fields/Date/dateTimePickerLoader.mjs.map +0 -1
  273. package/dist/jsx/fields/Date/dateTimePickerLoader.native.js +0 -42
  274. package/dist/jsx/fields/Date/dateTimePickerLoader.native.js.map +0 -1
  275. package/dist/jsx/fields/Date/sheetKeyboard.mjs +0 -21
  276. package/dist/jsx/fields/Date/sheetKeyboard.mjs.map +0 -1
  277. package/dist/jsx/fields/Date/sheetKeyboard.native.js +0 -57
  278. package/dist/jsx/fields/Date/sheetKeyboard.native.js.map +0 -1
  279. package/src/fields/Date/dateTimePickerLoader.ts +0 -25
  280. package/src/fields/Date/index.native.tsx +0 -445
  281. package/src/fields/Date/nativeFallback.spec.tsx +0 -21
  282. package/src/fields/Date/nativePresentation.spec.tsx +0 -278
  283. package/src/fields/Date/sheetKeyboard.spec.ts +0 -60
  284. package/src/fields/Date/sheetKeyboard.ts +0 -45
  285. package/types/fields/Date/dateTimePickerLoader.d.ts +0 -11
  286. package/types/fields/Date/dateTimePickerLoader.d.ts.map +0 -1
  287. package/types/fields/Date/index.native.d.ts +0 -14
  288. package/types/fields/Date/index.native.d.ts.map +0 -1
  289. package/types/fields/Date/sheetKeyboard.d.ts +0 -20
  290. package/types/fields/Date/sheetKeyboard.d.ts.map +0 -1
@@ -44,14 +44,6 @@ var import_react2 = __toESM(require("react"));
44
44
  var import_react_i18next = require("react-i18next");
45
45
  var import_tamagui = require("tamagui");
46
46
  var import_jsx_runtime = require("react/jsx-runtime");
47
- const avatarColors = ["$orange4", "$blue4", "$purple4", "$pink4"];
48
- function avatarColor(index) {
49
- return avatarColors[index % avatarColors.length];
50
- }
51
- const textColors = ["$orange11", "$blue11", "$purple11", "$pink11"];
52
- function textColor(index) {
53
- return textColors[index % textColors.length];
54
- }
55
47
  function FormSidebar({
56
48
  imageUrl,
57
49
  imageLabel,
@@ -59,7 +51,9 @@ function FormSidebar({
59
51
  onImageRemove,
60
52
  sections = [],
61
53
  metadata = [],
62
- ...stackProps
54
+ width = 280,
55
+ divider = true,
56
+ "data-testid": testID
63
57
  }) {
64
58
  const {
65
59
  t
@@ -73,194 +67,101 @@ function FormSidebar({
73
67
  const [erroredUrl, setErroredUrl] = import_react2.default.useState();
74
68
  const imageBroken = Boolean(imageUrl) && erroredUrl === imageUrl;
75
69
  const sz = knobProps.sizeToken;
76
- const avatarSize = sz === "$3" ? "$1" : sz === "$5" ? "$3" : "$2";
77
70
  const imageSize = sz === "$3" ? 160 : sz === "$5" ? 240 : 200;
78
71
  const resolvedImageLabel = imageLabel ?? t("Document image");
79
- const showImageBlock = Boolean(imageUrl) || Boolean(onImageAdd);
80
- return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
81
- ...knobProps.containerRadius,
82
- ...knobProps.panelPadding,
83
- ...knobProps.gapLg,
84
- width: 280,
85
- ...(import_tamagui.isWeb ? {
86
- borderInlineEndWidth: 1,
87
- borderInlineEndStyle: "solid",
88
- borderInlineEndColor: "$borderColor"
72
+ const imageBlock = imageUrl || onImageAdd ? /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
73
+ alignItems: "center",
74
+ gap: "$2",
75
+ children: [imageUrl ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Image, {
76
+ ...knobProps.containerRadius,
77
+ src: imageBroken ? void 0 : imageUrl,
78
+ alt: resolvedImageLabel,
79
+ width: imageSize,
80
+ height: imageSize,
81
+ objectFit: "contain",
82
+ onError: () => setErroredUrl(imageUrl)
83
+ }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
84
+ chromeless: true,
85
+ icon: import_react.ImageSquareIcon,
86
+ "aria-label": t("Add image"),
87
+ onPress: onImageAdd
88
+ }), imageBroken ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Text, {
89
+ color: knobProps.textAccentColor,
90
+ ...knobProps.label,
91
+ children: t("Image failed to load")
92
+ }) : null, imageUrl && (onImageAdd || onImageRemove) ? /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
93
+ gap: "$2",
94
+ children: [onImageAdd ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
95
+ size: "$2",
96
+ chromeless: true,
97
+ icon: import_react.UploadIcon,
98
+ "aria-label": t("Replace image"),
99
+ onPress: onImageAdd
100
+ }) : null, onImageRemove ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
101
+ size: "$2",
102
+ chromeless: true,
103
+ icon: import_react.XIcon,
104
+ "aria-label": t("Remove image"),
105
+ onPress: onImageRemove
106
+ }) : null]
107
+ }) : null]
108
+ }) : null;
109
+ const railSections = [...(imageBlock ? [{
110
+ items: [],
111
+ content: imageBlock
112
+ }] : []), ...sections.map(section => ({
113
+ title: section.title,
114
+ icon: section.icon,
115
+ action: section.onAdd ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
116
+ size: "$2",
117
+ chromeless: true,
118
+ icon: import_react.PlusIcon,
119
+ "aria-label": t("Add {{section}}", {
120
+ section: section.title
121
+ }),
122
+ onPress: section.onAdd
123
+ }) : void 0,
124
+ ...(section.render ? {
125
+ items: [],
126
+ content: section.render()
89
127
  } : {
90
- borderEndWidth: 1,
91
- borderEndColor: "$borderColor"
92
- }),
93
- ...stackProps,
94
- children: [showImageBlock && /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
95
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
96
- alignItems: "center",
97
- gap: "$2",
98
- children: [imageUrl && !imageBroken ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Image, {
99
- ...knobProps.containerRadius,
100
- src: imageUrl,
101
- alt: resolvedImageLabel,
102
- width: imageSize,
103
- height: imageSize,
104
- objectFit: "contain",
105
- onError: () => setErroredUrl(imageUrl)
106
- }) : imageUrl && imageBroken ? /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
107
- ...knobProps.containerRadius,
108
- width: imageSize,
109
- height: imageSize,
110
- alignItems: "center",
111
- justifyContent: "center",
112
- gap: "$2",
113
- borderWidth: 1,
114
- borderStyle: "dashed",
115
- borderColor: "$borderColor",
116
- "aria-label": resolvedImageLabel,
117
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.ImageSquareIcon, {
118
- size: iconSize * 2,
119
- color: placeholderIconColor
120
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
121
- color: knobProps.textAccentColor,
122
- ...knobProps.label,
123
- children: t("Image failed to load")
124
- })]
125
- }) : /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
126
- role: "button",
127
- tabIndex: 0,
128
- onPress: onImageAdd,
129
- "aria-label": t("Add image"),
130
- width: imageSize,
131
- height: imageSize,
132
- alignItems: "center",
133
- justifyContent: "center",
134
- cursor: "pointer",
135
- gap: "$2",
136
- ...knobProps.containerRadius,
137
- borderWidth: 1,
138
- borderStyle: "dashed",
139
- borderColor: "$borderColor",
140
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.ImageSquareIcon, {
141
- size: iconSize * 2,
142
- color: placeholderIconColor
143
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
144
- color: knobProps.textAccentColor,
145
- ...knobProps.label,
146
- children: t("Add image")
147
- })]
148
- }), imageUrl && (onImageAdd || onImageRemove) && /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
149
- gap: "$2",
150
- children: [onImageAdd && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
151
- size: "$2",
152
- chromeless: true,
153
- icon: import_react.UploadIcon,
154
- "aria-label": t("Replace image"),
155
- onPress: onImageAdd,
156
- children: t("Replace")
157
- }), onImageRemove && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
158
- size: "$2",
159
- chromeless: true,
160
- icon: import_react.XIcon,
161
- "aria-label": t("Remove image"),
162
- onPress: onImageRemove,
163
- children: t("Remove")
164
- })]
165
- })]
166
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Separator, {})]
167
- }), sections.map((section, sectionIdx) => /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_react2.default.Fragment, {
168
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
169
- ...knobProps.gap,
170
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
171
- alignItems: "center",
172
- justifyContent: "space-between",
173
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
174
- alignItems: "center",
175
- gap: "$2",
176
- children: [section.icon, /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
177
- color: knobProps.textAccentColor,
178
- ...knobProps.label,
179
- fontWeight: "400",
180
- children: section.title
181
- })]
182
- }), section.onAdd && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
183
- size: "$2",
184
- circular: true,
185
- chromeless: true,
186
- icon: import_react.PlusIcon,
187
- "aria-label": t("Add {{section}}", {
188
- section: section.title
189
- }),
190
- onPress: section.onAdd
191
- })]
192
- }), section.render ? section.render() : section.items && section.items.length > 0 ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
193
- ...knobProps.gap,
194
- children: section.items.map(item => /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
195
- gap: "$2",
196
- alignItems: "center",
197
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Avatar, {
198
- circular: true,
199
- size: avatarSize,
200
- backgroundColor: avatarColor(sectionIdx),
201
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Avatar.Fallback, {
202
- backgroundColor: avatarColor(sectionIdx),
203
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
204
- color: textColor(sectionIdx),
205
- ...knobProps.label,
206
- fontWeight: "700",
207
- children: (0, import_components.getInitials)(item.label)
208
- })
209
- })
210
- }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
211
- flex: 1,
212
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
213
- color: import_components.componentColors.text.primary,
214
- numberOfLines: 1,
215
- ...knobProps.label,
216
- children: item.label
217
- }), item.sublabel && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
218
- color: knobProps.textAccentColor,
219
- ...knobProps.label,
220
- children: item.sublabel
221
- })]
222
- }), section.onRemoveItem && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
223
- size: "$2",
224
- circular: true,
225
- chromeless: true,
226
- icon: import_react.XIcon,
227
- "aria-label": t("Remove {{name}}", {
228
- name: item.label
229
- }),
230
- onPress: () => section.onRemoveItem?.(item)
231
- })]
232
- }, item.id))
233
- }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
234
- color: knobProps.textAccentColor,
235
- ...knobProps.label,
236
- children: section.emptyText ?? t("None")
237
- })]
238
- }), sectionIdx < sections.length - 1 && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Separator, {})]
239
- }, section.key)), metadata.length > 0 && sections.length > 0 && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Separator, {}), metadata.length > 0 && /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
240
- gap: "$1",
241
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
242
- color: knobProps.textAccentColor,
243
- paddingHorizontal: "$2",
244
- ...knobProps.label,
245
- fontWeight: "400",
246
- children: t("Info")
247
- }), metadata.map(entry => /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.ListItem, {
248
- size: knobProps.sizeToken,
249
- icon: entry.icon ?? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.UserIcon, {
250
- size: iconSize,
251
- color: placeholderIconColor,
252
- style: {
253
- flexShrink: 0
254
- }
128
+ items: (section.items ?? []).map(item => ({
129
+ label: item.label,
130
+ value: item.id,
131
+ subTitle: item.sublabel,
132
+ icon: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Avatar, {
133
+ name: item.label,
134
+ nested: true
255
135
  }),
256
- title: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
257
- color: knobProps.textAccentColor,
258
- ...knobProps.label,
259
- children: entry.label
260
- }),
261
- backgroundColor: "transparent",
262
- paddingVertical: "$1"
263
- }, entry.label))]
264
- })]
136
+ trailing: section.onRemoveItem ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
137
+ size: "$2",
138
+ chromeless: true,
139
+ icon: import_react.XIcon,
140
+ "aria-label": t("Remove {{name}}", {
141
+ name: item.label
142
+ }),
143
+ onPress: () => section.onRemoveItem?.(item)
144
+ }) : void 0
145
+ })),
146
+ emptyText: section.emptyText ?? t("None")
147
+ })
148
+ })), ...(metadata.length > 0 ? [{
149
+ title: t("Info"),
150
+ items: metadata.map(entry => ({
151
+ label: entry.label,
152
+ value: entry.label,
153
+ icon: entry.icon ?? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.UserIcon, {
154
+ size: iconSize,
155
+ color: placeholderIconColor
156
+ })
157
+ }))
158
+ }] : [])];
159
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Sidebar, {
160
+ role: "complementary",
161
+ "aria-label": t("Document details"),
162
+ width,
163
+ divider,
164
+ sections: railSections,
165
+ testID
265
166
  });
266
167
  }
@@ -46,14 +46,6 @@ var import_react = require("@phosphor-icons/react");
46
46
  var import_react2 = __toESM(require("react"));
47
47
  var import_react_i18next = require("react-i18next");
48
48
  var import_tamagui = require("tamagui");
49
- var avatarColors = ["$orange4", "$blue4", "$purple4", "$pink4"];
50
- function avatarColor(index) {
51
- return avatarColors[index % avatarColors.length];
52
- }
53
- var textColors = ["$orange11", "$blue11", "$purple11", "$pink11"];
54
- function textColor(index) {
55
- return textColors[index % textColors.length];
56
- }
57
49
  function FormSidebar(param) {
58
50
  var {
59
51
  imageUrl,
@@ -62,7 +54,9 @@ function FormSidebar(param) {
62
54
  onImageRemove,
63
55
  sections = [],
64
56
  metadata = [],
65
- ...stackProps
57
+ width = 280,
58
+ divider = true,
59
+ "data-testid": testID
66
60
  } = param;
67
61
  var _ref;
68
62
  var _theme_color11, _knobProps_controlIcon;
@@ -78,219 +72,115 @@ function FormSidebar(param) {
78
72
  var [erroredUrl, setErroredUrl] = import_react2.default.useState();
79
73
  var imageBroken = Boolean(imageUrl) && erroredUrl === imageUrl;
80
74
  var sz = knobProps.sizeToken;
81
- var avatarSize = sz === "$3" ? "$1" : sz === "$5" ? "$3" : "$2";
82
75
  var imageSize = sz === "$3" ? 160 : sz === "$5" ? 240 : 200;
83
76
  var resolvedImageLabel = imageLabel !== null && imageLabel !== void 0 ? imageLabel : t("Document image");
84
- var showImageBlock = Boolean(imageUrl) || Boolean(onImageAdd);
85
- return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
86
- // Radius-only fragment: the full borderRadius fragment carries
87
- // borderWidth and drew an unintended box border around the whole rail
88
- // (rtl-audit U6); the panel border is the logical end rail below.
89
- ...knobProps.containerRadius,
90
- ...knobProps.panelPadding,
91
- ...knobProps.gapLg,
92
- width: 280,
93
- // Logical end edge so the rail mirrors in RTL; tamagui borderEndWidth
94
- // does not compile to working CSS on web (SB-M-1215)
95
- ...(import_tamagui.isWeb ? {
96
- borderInlineEndWidth: 1,
97
- borderInlineEndStyle: "solid",
98
- borderInlineEndColor: "$borderColor"
99
- } : {
100
- borderEndWidth: 1,
101
- borderEndColor: "$borderColor"
102
- }),
103
- ...stackProps,
104
- children: [/* -- Image section -- */
105
- showImageBlock && /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
106
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
107
- alignItems: "center",
108
- gap: "$2",
109
- children: [imageUrl && !imageBroken ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Image, {
110
- ...knobProps.containerRadius,
111
- // src (string), not source: the RN source object leaks onto
112
- // the DOM <img> as source="[object Object]" on web
113
- src: imageUrl,
114
- alt: resolvedImageLabel,
115
- width: imageSize,
116
- height: imageSize,
117
- objectFit: "contain",
118
- onError: function onError() {
119
- return setErroredUrl(imageUrl);
120
- }
121
- }) : imageUrl && imageBroken ? /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
122
- ...knobProps.containerRadius,
123
- width: imageSize,
124
- height: imageSize,
125
- alignItems: "center",
126
- justifyContent: "center",
127
- gap: "$2",
128
- borderWidth: 1,
129
- borderStyle: "dashed",
130
- borderColor: "$borderColor",
131
- "aria-label": resolvedImageLabel,
132
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.ImageSquareIcon, {
133
- size: iconSize * 2,
134
- color: placeholderIconColor
135
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
136
- color: knobProps.textAccentColor,
137
- ...knobProps.label,
138
- children: t("Image failed to load")
139
- })]
140
- }) : /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
141
- role: "button",
142
- tabIndex: 0,
143
- onPress: onImageAdd,
144
- "aria-label": t("Add image"),
145
- width: imageSize,
146
- height: imageSize,
147
- alignItems: "center",
148
- justifyContent: "center",
149
- cursor: "pointer",
150
- gap: "$2",
151
- ...knobProps.containerRadius,
152
- borderWidth: 1,
153
- borderStyle: "dashed",
154
- borderColor: "$borderColor",
155
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.ImageSquareIcon, {
156
- size: iconSize * 2,
157
- color: placeholderIconColor
158
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
159
- color: knobProps.textAccentColor,
160
- ...knobProps.label,
161
- children: t("Add image")
162
- })]
163
- }), imageUrl && (onImageAdd || onImageRemove) && /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
164
- gap: "$2",
165
- children: [onImageAdd && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
166
- size: "$2",
167
- chromeless: true,
168
- icon: import_react.UploadIcon,
169
- "aria-label": t("Replace image"),
170
- onPress: onImageAdd,
171
- children: t("Replace")
172
- }), onImageRemove && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
173
- size: "$2",
174
- chromeless: true,
175
- icon: import_react.XIcon,
176
- "aria-label": t("Remove image"),
177
- onPress: onImageRemove,
178
- children: t("Remove")
179
- })]
180
- })]
181
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Separator, {})]
182
- }), /* -- Dynamic sections -- */
183
- sections.map(function (section, sectionIdx) {
184
- var _section_emptyText;
185
- return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_react2.default.Fragment, {
186
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
187
- ...knobProps.gap,
188
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
189
- alignItems: "center",
190
- justifyContent: "space-between",
191
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
192
- alignItems: "center",
193
- gap: "$2",
194
- children: [section.icon, /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
195
- color: knobProps.textAccentColor,
196
- ...knobProps.label,
197
- fontWeight: "400",
198
- children: section.title
199
- })]
200
- }), section.onAdd && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
77
+ var imageBlock = imageUrl || onImageAdd ? /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
78
+ alignItems: "center",
79
+ gap: "$2",
80
+ children: [imageUrl ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Image, {
81
+ ...knobProps.containerRadius,
82
+ src: imageBroken ? void 0 : imageUrl,
83
+ alt: resolvedImageLabel,
84
+ width: imageSize,
85
+ height: imageSize,
86
+ objectFit: "contain",
87
+ onError: function onError() {
88
+ return setErroredUrl(imageUrl);
89
+ }
90
+ }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
91
+ chromeless: true,
92
+ icon: import_react.ImageSquareIcon,
93
+ "aria-label": t("Add image"),
94
+ onPress: onImageAdd
95
+ }), imageBroken ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Text, {
96
+ color: knobProps.textAccentColor,
97
+ ...knobProps.label,
98
+ children: t("Image failed to load")
99
+ }) : null, imageUrl && (onImageAdd || onImageRemove) ? /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
100
+ gap: "$2",
101
+ children: [onImageAdd ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
102
+ size: "$2",
103
+ chromeless: true,
104
+ icon: import_react.UploadIcon,
105
+ "aria-label": t("Replace image"),
106
+ onPress: onImageAdd
107
+ }) : null, onImageRemove ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
108
+ size: "$2",
109
+ chromeless: true,
110
+ icon: import_react.XIcon,
111
+ "aria-label": t("Remove image"),
112
+ onPress: onImageRemove
113
+ }) : null]
114
+ }) : null]
115
+ }) : null;
116
+ var railSections = [...(imageBlock ? [{
117
+ items: [],
118
+ content: imageBlock
119
+ }] : []), ...sections.map(function (section) {
120
+ var _section_items, _section_emptyText;
121
+ return {
122
+ title: section.title,
123
+ icon: section.icon,
124
+ action: section.onAdd ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
125
+ size: "$2",
126
+ chromeless: true,
127
+ icon: import_react.PlusIcon,
128
+ "aria-label": t("Add {{section}}", {
129
+ section: section.title
130
+ }),
131
+ onPress: section.onAdd
132
+ }) : void 0,
133
+ ...(section.render ? {
134
+ items: [],
135
+ content: section.render()
136
+ } : {
137
+ items: ((_section_items = section.items) !== null && _section_items !== void 0 ? _section_items : []).map(function (item) {
138
+ return {
139
+ label: item.label,
140
+ value: item.id,
141
+ subTitle: item.sublabel,
142
+ icon: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Avatar, {
143
+ name: item.label,
144
+ nested: true
145
+ }),
146
+ trailing: section.onRemoveItem ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
201
147
  size: "$2",
202
- circular: true,
203
148
  chromeless: true,
204
- icon: import_react.PlusIcon,
205
- "aria-label": t("Add {{section}}", {
206
- section: section.title
149
+ icon: import_react.XIcon,
150
+ "aria-label": t("Remove {{name}}", {
151
+ name: item.label
207
152
  }),
208
- onPress: section.onAdd
209
- })]
210
- }), section.render ? section.render() : section.items && section.items.length > 0 ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
211
- ...knobProps.gap,
212
- children: section.items.map(function (item) {
213
- return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
214
- gap: "$2",
215
- alignItems: "center",
216
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Avatar, {
217
- circular: true,
218
- size: avatarSize,
219
- backgroundColor: avatarColor(sectionIdx),
220
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Avatar.Fallback, {
221
- backgroundColor: avatarColor(sectionIdx),
222
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
223
- color: textColor(sectionIdx),
224
- ...knobProps.label,
225
- fontWeight: "700",
226
- children: (0, import_components.getInitials)(item.label)
227
- })
228
- })
229
- }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
230
- flex: 1,
231
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
232
- color: import_components.componentColors.text.primary,
233
- numberOfLines: 1,
234
- ...knobProps.label,
235
- children: item.label
236
- }), item.sublabel && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
237
- color: knobProps.textAccentColor,
238
- ...knobProps.label,
239
- children: item.sublabel
240
- })]
241
- }), section.onRemoveItem && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
242
- size: "$2",
243
- circular: true,
244
- chromeless: true,
245
- icon: import_react.XIcon,
246
- "aria-label": t("Remove {{name}}", {
247
- name: item.label
248
- }),
249
- onPress: function onPress() {
250
- var _section_onRemoveItem;
251
- return (_section_onRemoveItem = section.onRemoveItem) === null || _section_onRemoveItem === void 0 ? void 0 : _section_onRemoveItem.call(section, item);
252
- }
253
- })]
254
- }, item.id);
255
- })
256
- }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
257
- color: knobProps.textAccentColor,
258
- ...knobProps.label,
259
- children: (_section_emptyText = section.emptyText) !== null && _section_emptyText !== void 0 ? _section_emptyText : t("None")
260
- })]
261
- }), sectionIdx < sections.length - 1 && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Separator, {})]
262
- }, section.key);
263
- }), /* -- Separator before metadata -- */
264
- metadata.length > 0 && sections.length > 0 && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Separator, {}), /* -- Info / Metadata -- */
265
- metadata.length > 0 && /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
266
- gap: "$1",
267
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
268
- color: knobProps.textAccentColor,
269
- paddingHorizontal: "$2",
270
- ...knobProps.label,
271
- fontWeight: "400",
272
- children: t("Info")
273
- }), metadata.map(function (entry) {
274
- var _entry_icon;
275
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.ListItem, {
276
- size: knobProps.sizeToken,
277
- icon: (_entry_icon = entry.icon) !== null && _entry_icon !== void 0 ? _entry_icon : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.UserIcon, {
278
- size: iconSize,
279
- color: placeholderIconColor,
280
- style: {
281
- flexShrink: 0
282
- }
283
- }),
284
- title: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
285
- color: knobProps.textAccentColor,
286
- ...knobProps.label,
287
- children: entry.label
288
- }),
289
- backgroundColor: "transparent",
290
- paddingVertical: "$1"
291
- }, entry.label);
292
- })]
293
- })]
153
+ onPress: function onPress() {
154
+ var _section_onRemoveItem;
155
+ return (_section_onRemoveItem = section.onRemoveItem) === null || _section_onRemoveItem === void 0 ? void 0 : _section_onRemoveItem.call(section, item);
156
+ }
157
+ }) : void 0
158
+ };
159
+ }),
160
+ emptyText: (_section_emptyText = section.emptyText) !== null && _section_emptyText !== void 0 ? _section_emptyText : t("None")
161
+ })
162
+ };
163
+ }), ...(metadata.length > 0 ? [{
164
+ title: t("Info"),
165
+ items: metadata.map(function (entry) {
166
+ var _entry_icon;
167
+ return {
168
+ label: entry.label,
169
+ value: entry.label,
170
+ icon: (_entry_icon = entry.icon) !== null && _entry_icon !== void 0 ? _entry_icon : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.UserIcon, {
171
+ size: iconSize,
172
+ color: placeholderIconColor
173
+ })
174
+ };
175
+ })
176
+ }] : [])];
177
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Sidebar, {
178
+ role: "complementary",
179
+ "aria-label": t("Document details"),
180
+ width,
181
+ divider,
182
+ sections: railSections,
183
+ testID
294
184
  });
295
185
  }
296
186
  //# sourceMappingURL=FormSidebar.native.js.map