@multiplatform.one/frappe-ui 7.23.2 → 7.24.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 (577) hide show
  1. package/dist/cjs/FrappeCalendar.cjs +1 -1
  2. package/dist/cjs/FrappeCalendar.native.js +1 -1
  3. package/dist/cjs/FrappeCalendar.native.js.map +1 -1
  4. package/dist/cjs/FrappeDashboard.cjs +1 -1
  5. package/dist/cjs/FrappeDashboard.native.js +1 -1
  6. package/dist/cjs/FrappeDashboard.native.js.map +1 -1
  7. package/dist/cjs/FrappeImageView.cjs +1 -1
  8. package/dist/cjs/FrappeImageView.native.js +1 -1
  9. package/dist/cjs/FrappeImageView.native.js.map +1 -1
  10. package/dist/cjs/FrappeInsights.cjs +380 -0
  11. package/dist/cjs/FrappeInsights.native.js +447 -0
  12. package/dist/cjs/FrappeInsights.native.js.map +1 -0
  13. package/dist/cjs/FrappeLikedBy.cjs +5 -2
  14. package/dist/cjs/FrappeLikedBy.native.js +5 -2
  15. package/dist/cjs/FrappeLikedBy.native.js.map +1 -1
  16. package/dist/cjs/FrappeListView.cjs +392 -38
  17. package/dist/cjs/FrappeListView.native.js +454 -41
  18. package/dist/cjs/FrappeListView.native.js.map +1 -1
  19. package/dist/cjs/FrappeRecordView.cjs +199 -0
  20. package/dist/cjs/FrappeRecordView.native.js +218 -0
  21. package/dist/cjs/FrappeRecordView.native.js.map +1 -0
  22. package/dist/cjs/FrappeReportBuilder.cjs +2 -2
  23. package/dist/cjs/FrappeReportBuilder.native.js +2 -2
  24. package/dist/cjs/FrappeReportBuilder.native.js.map +1 -1
  25. package/dist/cjs/FrappeTreeView.cjs +1 -1
  26. package/dist/cjs/FrappeTreeView.native.js +1 -1
  27. package/dist/cjs/desk/awesomebar.cjs +1 -1
  28. package/dist/cjs/desk/awesomebar.native.js +3 -3
  29. package/dist/cjs/desk/awesomebar.native.js.map +1 -1
  30. package/dist/cjs/fields/Heading/index.cjs +18 -11
  31. package/dist/cjs/fields/Heading/index.native.js +21 -12
  32. package/dist/cjs/fields/Heading/index.native.js.map +1 -1
  33. package/dist/cjs/frappeNavigation.cjs +12 -2
  34. package/dist/cjs/frappeNavigation.native.js +13 -2
  35. package/dist/cjs/frappeNavigation.native.js.map +1 -1
  36. package/dist/cjs/index.cjs +34 -0
  37. package/dist/cjs/index.native.js +34 -0
  38. package/dist/cjs/index.native.js.map +1 -1
  39. package/dist/cjs/insights/InsightsFacetTags.cjs +147 -0
  40. package/dist/cjs/insights/InsightsFacetTags.native.js +165 -0
  41. package/dist/cjs/insights/InsightsFacetTags.native.js.map +1 -0
  42. package/dist/cjs/insights/InsightsKpiBand.cjs +124 -0
  43. package/dist/cjs/insights/InsightsKpiBand.native.js +133 -0
  44. package/dist/cjs/insights/InsightsKpiBand.native.js.map +1 -0
  45. package/dist/cjs/insights/InsightsLeaders.cjs +150 -0
  46. package/dist/cjs/insights/InsightsLeaders.native.js +178 -0
  47. package/dist/cjs/insights/InsightsLeaders.native.js.map +1 -0
  48. package/dist/cjs/insights/InsightsRecords.cjs +105 -0
  49. package/dist/cjs/insights/InsightsRecords.native.js +109 -0
  50. package/dist/cjs/insights/InsightsRecords.native.js.map +1 -0
  51. package/dist/cjs/insights/InsightsTable.cjs +157 -0
  52. package/dist/cjs/insights/InsightsTable.native.js +194 -0
  53. package/dist/cjs/insights/InsightsTable.native.js.map +1 -0
  54. package/dist/cjs/insights/insightsData.cjs +114 -0
  55. package/dist/cjs/insights/insightsData.native.js +220 -0
  56. package/dist/cjs/insights/insightsData.native.js.map +1 -0
  57. package/dist/cjs/insights/insightsRecord.cjs +35 -0
  58. package/dist/cjs/insights/insightsRecord.native.js +38 -0
  59. package/dist/cjs/insights/insightsRecord.native.js.map +1 -0
  60. package/dist/cjs/list/FacetBadge.cjs +62 -0
  61. package/dist/cjs/list/FacetBadge.native.js +66 -0
  62. package/dist/cjs/list/FacetBadge.native.js.map +1 -0
  63. package/dist/cjs/list/FacetRail.cjs +199 -0
  64. package/dist/cjs/list/FacetRail.native.js +223 -0
  65. package/dist/cjs/list/FacetRail.native.js.map +1 -0
  66. package/dist/cjs/list/ImageWell.cjs +111 -0
  67. package/dist/cjs/list/ImageWell.native.js +126 -0
  68. package/dist/cjs/list/ImageWell.native.js.map +1 -0
  69. package/dist/cjs/list/ListControls.cjs +226 -0
  70. package/dist/cjs/list/ListControls.native.js +252 -0
  71. package/dist/cjs/list/ListControls.native.js.map +1 -0
  72. package/dist/cjs/list/ListToastHost.cjs +54 -0
  73. package/dist/cjs/list/ListToastHost.native.js +59 -0
  74. package/dist/cjs/list/ListToastHost.native.js.map +1 -0
  75. package/dist/cjs/list/RangeFilter.cjs +122 -0
  76. package/dist/cjs/list/RangeFilter.native.js +135 -0
  77. package/dist/cjs/list/RangeFilter.native.js.map +1 -0
  78. package/dist/cjs/list/RecordCard.cjs +233 -0
  79. package/dist/cjs/list/RecordCard.native.js +173 -0
  80. package/dist/cjs/list/RecordCard.native.js.map +1 -0
  81. package/dist/cjs/list/ShufflePanel.cjs +112 -0
  82. package/dist/cjs/list/ShufflePanel.native.js +139 -0
  83. package/dist/cjs/list/ShufflePanel.native.js.map +1 -0
  84. package/dist/cjs/list/facetReading.cjs +71 -0
  85. package/dist/cjs/list/facetReading.native.js +163 -0
  86. package/dist/cjs/list/facetReading.native.js.map +1 -0
  87. package/dist/cjs/list/favorites.cjs +79 -0
  88. package/dist/cjs/list/favorites.native.js +91 -0
  89. package/dist/cjs/list/favorites.native.js.map +1 -0
  90. package/dist/cjs/list/listState.cjs +100 -0
  91. package/dist/cjs/list/listState.native.js +234 -0
  92. package/dist/cjs/list/listState.native.js.map +1 -0
  93. package/dist/cjs/list/recordLook.cjs +35 -0
  94. package/dist/cjs/list/recordLook.native.js +39 -0
  95. package/dist/cjs/list/recordLook.native.js.map +1 -0
  96. package/dist/cjs/list/useListControls.cjs +189 -0
  97. package/dist/cjs/list/useListControls.native.js +272 -0
  98. package/dist/cjs/list/useListControls.native.js.map +1 -0
  99. package/dist/cjs/record/RecordBars.cjs +200 -0
  100. package/dist/cjs/record/RecordBars.native.js +225 -0
  101. package/dist/cjs/record/RecordBars.native.js.map +1 -0
  102. package/dist/cjs/record/RecordGallery.cjs +67 -0
  103. package/dist/cjs/record/RecordGallery.native.js +75 -0
  104. package/dist/cjs/record/RecordGallery.native.js.map +1 -0
  105. package/dist/cjs/record/RecordHero.cjs +239 -0
  106. package/dist/cjs/record/RecordHero.native.js +250 -0
  107. package/dist/cjs/record/RecordHero.native.js.map +1 -0
  108. package/dist/cjs/record/RecordPage.cjs +330 -0
  109. package/dist/cjs/record/RecordPage.native.js +364 -0
  110. package/dist/cjs/record/RecordPage.native.js.map +1 -0
  111. package/dist/cjs/record/RecordPager.cjs +125 -0
  112. package/dist/cjs/record/RecordPager.native.js +130 -0
  113. package/dist/cjs/record/RecordPager.native.js.map +1 -0
  114. package/dist/cjs/record/RecordRows.cjs +126 -0
  115. package/dist/cjs/record/RecordRows.native.js +140 -0
  116. package/dist/cjs/record/RecordRows.native.js.map +1 -0
  117. package/dist/cjs/record/recordData.cjs +122 -0
  118. package/dist/cjs/record/recordData.native.js +189 -0
  119. package/dist/cjs/record/recordData.native.js.map +1 -0
  120. package/dist/cjs/record/recordSections.cjs +30 -0
  121. package/dist/cjs/record/recordSections.native.js +33 -0
  122. package/dist/cjs/record/recordSections.native.js.map +1 -0
  123. package/dist/esm/FrappeCalendar.mjs +1 -1
  124. package/dist/esm/FrappeCalendar.mjs.map +1 -1
  125. package/dist/esm/FrappeCalendar.native.js +1 -1
  126. package/dist/esm/FrappeCalendar.native.js.map +1 -1
  127. package/dist/esm/FrappeDashboard.mjs +1 -1
  128. package/dist/esm/FrappeDashboard.mjs.map +1 -1
  129. package/dist/esm/FrappeDashboard.native.js +1 -1
  130. package/dist/esm/FrappeDashboard.native.js.map +1 -1
  131. package/dist/esm/FrappeImageView.mjs +1 -1
  132. package/dist/esm/FrappeImageView.mjs.map +1 -1
  133. package/dist/esm/FrappeImageView.native.js +1 -1
  134. package/dist/esm/FrappeImageView.native.js.map +1 -1
  135. package/dist/esm/FrappeInsights.mjs +355 -0
  136. package/dist/esm/FrappeInsights.mjs.map +1 -0
  137. package/dist/esm/FrappeInsights.native.js +419 -0
  138. package/dist/esm/FrappeInsights.native.js.map +1 -0
  139. package/dist/esm/FrappeLikedBy.mjs +6 -3
  140. package/dist/esm/FrappeLikedBy.mjs.map +1 -1
  141. package/dist/esm/FrappeLikedBy.native.js +6 -3
  142. package/dist/esm/FrappeLikedBy.native.js.map +1 -1
  143. package/dist/esm/FrappeListView.mjs +396 -42
  144. package/dist/esm/FrappeListView.mjs.map +1 -1
  145. package/dist/esm/FrappeListView.native.js +458 -45
  146. package/dist/esm/FrappeListView.native.js.map +1 -1
  147. package/dist/esm/FrappeRecordView.mjs +174 -0
  148. package/dist/esm/FrappeRecordView.mjs.map +1 -0
  149. package/dist/esm/FrappeRecordView.native.js +190 -0
  150. package/dist/esm/FrappeRecordView.native.js.map +1 -0
  151. package/dist/esm/FrappeReportBuilder.mjs +2 -2
  152. package/dist/esm/FrappeReportBuilder.mjs.map +1 -1
  153. package/dist/esm/FrappeReportBuilder.native.js +2 -2
  154. package/dist/esm/FrappeReportBuilder.native.js.map +1 -1
  155. package/dist/esm/FrappeTreeView.mjs +1 -1
  156. package/dist/esm/FrappeTreeView.mjs.map +1 -1
  157. package/dist/esm/FrappeTreeView.native.js +1 -1
  158. package/dist/esm/desk/awesomebar.mjs +1 -1
  159. package/dist/esm/desk/awesomebar.mjs.map +1 -1
  160. package/dist/esm/desk/awesomebar.native.js +3 -3
  161. package/dist/esm/desk/awesomebar.native.js.map +1 -1
  162. package/dist/esm/fields/Heading/index.mjs +19 -12
  163. package/dist/esm/fields/Heading/index.mjs.map +1 -1
  164. package/dist/esm/fields/Heading/index.native.js +22 -13
  165. package/dist/esm/fields/Heading/index.native.js.map +1 -1
  166. package/dist/esm/frappeNavigation.mjs +11 -2
  167. package/dist/esm/frappeNavigation.mjs.map +1 -1
  168. package/dist/esm/frappeNavigation.native.js +12 -2
  169. package/dist/esm/frappeNavigation.native.js.map +1 -1
  170. package/dist/esm/index.mjs +14 -2
  171. package/dist/esm/index.mjs.map +1 -1
  172. package/dist/esm/index.native.js +14 -2
  173. package/dist/esm/index.native.js.map +1 -1
  174. package/dist/esm/insights/InsightsFacetTags.mjs +122 -0
  175. package/dist/esm/insights/InsightsFacetTags.mjs.map +1 -0
  176. package/dist/esm/insights/InsightsFacetTags.native.js +137 -0
  177. package/dist/esm/insights/InsightsFacetTags.native.js.map +1 -0
  178. package/dist/esm/insights/InsightsKpiBand.mjs +99 -0
  179. package/dist/esm/insights/InsightsKpiBand.mjs.map +1 -0
  180. package/dist/esm/insights/InsightsKpiBand.native.js +105 -0
  181. package/dist/esm/insights/InsightsKpiBand.native.js.map +1 -0
  182. package/dist/esm/insights/InsightsLeaders.mjs +125 -0
  183. package/dist/esm/insights/InsightsLeaders.mjs.map +1 -0
  184. package/dist/esm/insights/InsightsLeaders.native.js +150 -0
  185. package/dist/esm/insights/InsightsLeaders.native.js.map +1 -0
  186. package/dist/esm/insights/InsightsRecords.mjs +80 -0
  187. package/dist/esm/insights/InsightsRecords.mjs.map +1 -0
  188. package/dist/esm/insights/InsightsRecords.native.js +81 -0
  189. package/dist/esm/insights/InsightsRecords.native.js.map +1 -0
  190. package/dist/esm/insights/InsightsTable.mjs +132 -0
  191. package/dist/esm/insights/InsightsTable.mjs.map +1 -0
  192. package/dist/esm/insights/InsightsTable.native.js +166 -0
  193. package/dist/esm/insights/InsightsTable.native.js.map +1 -0
  194. package/dist/esm/insights/insightsData.mjs +82 -0
  195. package/dist/esm/insights/insightsData.mjs.map +1 -0
  196. package/dist/esm/insights/insightsData.native.js +185 -0
  197. package/dist/esm/insights/insightsData.native.js.map +1 -0
  198. package/dist/esm/insights/insightsRecord.mjs +9 -0
  199. package/dist/esm/insights/insightsRecord.mjs.map +1 -0
  200. package/dist/esm/insights/insightsRecord.native.js +9 -0
  201. package/dist/esm/insights/insightsRecord.native.js.map +1 -0
  202. package/dist/esm/list/FacetBadge.mjs +37 -0
  203. package/dist/esm/list/FacetBadge.mjs.map +1 -0
  204. package/dist/esm/list/FacetBadge.native.js +38 -0
  205. package/dist/esm/list/FacetBadge.native.js.map +1 -0
  206. package/dist/esm/list/FacetRail.mjs +174 -0
  207. package/dist/esm/list/FacetRail.mjs.map +1 -0
  208. package/dist/esm/list/FacetRail.native.js +195 -0
  209. package/dist/esm/list/FacetRail.native.js.map +1 -0
  210. package/dist/esm/list/ImageWell.mjs +86 -0
  211. package/dist/esm/list/ImageWell.mjs.map +1 -0
  212. package/dist/esm/list/ImageWell.native.js +98 -0
  213. package/dist/esm/list/ImageWell.native.js.map +1 -0
  214. package/dist/esm/list/ListControls.mjs +201 -0
  215. package/dist/esm/list/ListControls.mjs.map +1 -0
  216. package/dist/esm/list/ListControls.native.js +224 -0
  217. package/dist/esm/list/ListControls.native.js.map +1 -0
  218. package/dist/esm/list/ListToastHost.mjs +18 -0
  219. package/dist/esm/list/ListToastHost.mjs.map +1 -0
  220. package/dist/esm/list/ListToastHost.native.js +20 -0
  221. package/dist/esm/list/ListToastHost.native.js.map +1 -0
  222. package/dist/esm/list/RangeFilter.mjs +85 -0
  223. package/dist/esm/list/RangeFilter.mjs.map +1 -0
  224. package/dist/esm/list/RangeFilter.native.js +95 -0
  225. package/dist/esm/list/RangeFilter.native.js.map +1 -0
  226. package/dist/esm/list/RecordCard.mjs +208 -0
  227. package/dist/esm/list/RecordCard.mjs.map +1 -0
  228. package/dist/esm/list/RecordCard.native.js +145 -0
  229. package/dist/esm/list/RecordCard.native.js.map +1 -0
  230. package/dist/esm/list/ShufflePanel.mjs +87 -0
  231. package/dist/esm/list/ShufflePanel.mjs.map +1 -0
  232. package/dist/esm/list/ShufflePanel.native.js +111 -0
  233. package/dist/esm/list/ShufflePanel.native.js.map +1 -0
  234. package/dist/esm/list/facetReading.mjs +45 -0
  235. package/dist/esm/list/facetReading.mjs.map +1 -0
  236. package/dist/esm/list/facetReading.native.js +134 -0
  237. package/dist/esm/list/facetReading.native.js.map +1 -0
  238. package/dist/esm/list/favorites.mjs +50 -0
  239. package/dist/esm/list/favorites.mjs.map +1 -0
  240. package/dist/esm/list/favorites.native.js +59 -0
  241. package/dist/esm/list/favorites.native.js.map +1 -0
  242. package/dist/esm/list/listState.mjs +71 -0
  243. package/dist/esm/list/listState.mjs.map +1 -0
  244. package/dist/esm/list/listState.native.js +202 -0
  245. package/dist/esm/list/listState.native.js.map +1 -0
  246. package/dist/esm/list/recordLook.mjs +10 -0
  247. package/dist/esm/list/recordLook.mjs.map +1 -0
  248. package/dist/esm/list/recordLook.native.js +11 -0
  249. package/dist/esm/list/recordLook.native.js.map +1 -0
  250. package/dist/esm/list/useListControls.mjs +164 -0
  251. package/dist/esm/list/useListControls.mjs.map +1 -0
  252. package/dist/esm/list/useListControls.native.js +244 -0
  253. package/dist/esm/list/useListControls.native.js.map +1 -0
  254. package/dist/esm/record/RecordBars.mjs +175 -0
  255. package/dist/esm/record/RecordBars.mjs.map +1 -0
  256. package/dist/esm/record/RecordBars.native.js +197 -0
  257. package/dist/esm/record/RecordBars.native.js.map +1 -0
  258. package/dist/esm/record/RecordGallery.mjs +42 -0
  259. package/dist/esm/record/RecordGallery.mjs.map +1 -0
  260. package/dist/esm/record/RecordGallery.native.js +47 -0
  261. package/dist/esm/record/RecordGallery.native.js.map +1 -0
  262. package/dist/esm/record/RecordHero.mjs +205 -0
  263. package/dist/esm/record/RecordHero.mjs.map +1 -0
  264. package/dist/esm/record/RecordHero.native.js +213 -0
  265. package/dist/esm/record/RecordHero.native.js.map +1 -0
  266. package/dist/esm/record/RecordPage.mjs +305 -0
  267. package/dist/esm/record/RecordPage.mjs.map +1 -0
  268. package/dist/esm/record/RecordPage.native.js +336 -0
  269. package/dist/esm/record/RecordPage.native.js.map +1 -0
  270. package/dist/esm/record/RecordPager.mjs +100 -0
  271. package/dist/esm/record/RecordPager.mjs.map +1 -0
  272. package/dist/esm/record/RecordPager.native.js +102 -0
  273. package/dist/esm/record/RecordPager.native.js.map +1 -0
  274. package/dist/esm/record/RecordRows.mjs +101 -0
  275. package/dist/esm/record/RecordRows.mjs.map +1 -0
  276. package/dist/esm/record/RecordRows.native.js +112 -0
  277. package/dist/esm/record/RecordRows.native.js.map +1 -0
  278. package/dist/esm/record/recordData.mjs +92 -0
  279. package/dist/esm/record/recordData.mjs.map +1 -0
  280. package/dist/esm/record/recordData.native.js +156 -0
  281. package/dist/esm/record/recordData.native.js.map +1 -0
  282. package/dist/esm/record/recordSections.mjs +5 -0
  283. package/dist/esm/record/recordSections.mjs.map +1 -0
  284. package/dist/esm/record/recordSections.native.js +5 -0
  285. package/dist/esm/record/recordSections.native.js.map +1 -0
  286. package/dist/jsx/FrappeCalendar.mjs +1 -1
  287. package/dist/jsx/FrappeCalendar.mjs.map +1 -1
  288. package/dist/jsx/FrappeCalendar.native.js +1 -1
  289. package/dist/jsx/FrappeCalendar.native.js.map +1 -1
  290. package/dist/jsx/FrappeDashboard.mjs +1 -1
  291. package/dist/jsx/FrappeDashboard.mjs.map +1 -1
  292. package/dist/jsx/FrappeDashboard.native.js +1 -1
  293. package/dist/jsx/FrappeDashboard.native.js.map +1 -1
  294. package/dist/jsx/FrappeImageView.mjs +1 -1
  295. package/dist/jsx/FrappeImageView.mjs.map +1 -1
  296. package/dist/jsx/FrappeImageView.native.js +1 -1
  297. package/dist/jsx/FrappeImageView.native.js.map +1 -1
  298. package/dist/jsx/FrappeInsights.mjs +355 -0
  299. package/dist/jsx/FrappeInsights.mjs.map +1 -0
  300. package/dist/jsx/FrappeInsights.native.js +447 -0
  301. package/dist/jsx/FrappeInsights.native.js.map +1 -0
  302. package/dist/jsx/FrappeLikedBy.mjs +6 -3
  303. package/dist/jsx/FrappeLikedBy.mjs.map +1 -1
  304. package/dist/jsx/FrappeLikedBy.native.js +5 -2
  305. package/dist/jsx/FrappeLikedBy.native.js.map +1 -1
  306. package/dist/jsx/FrappeListView.mjs +396 -42
  307. package/dist/jsx/FrappeListView.mjs.map +1 -1
  308. package/dist/jsx/FrappeListView.native.js +454 -41
  309. package/dist/jsx/FrappeListView.native.js.map +1 -1
  310. package/dist/jsx/FrappeRecordView.mjs +174 -0
  311. package/dist/jsx/FrappeRecordView.mjs.map +1 -0
  312. package/dist/jsx/FrappeRecordView.native.js +218 -0
  313. package/dist/jsx/FrappeRecordView.native.js.map +1 -0
  314. package/dist/jsx/FrappeReportBuilder.mjs +2 -2
  315. package/dist/jsx/FrappeReportBuilder.mjs.map +1 -1
  316. package/dist/jsx/FrappeReportBuilder.native.js +2 -2
  317. package/dist/jsx/FrappeReportBuilder.native.js.map +1 -1
  318. package/dist/jsx/FrappeTreeView.mjs +1 -1
  319. package/dist/jsx/FrappeTreeView.mjs.map +1 -1
  320. package/dist/jsx/FrappeTreeView.native.js +1 -1
  321. package/dist/jsx/desk/awesomebar.mjs +1 -1
  322. package/dist/jsx/desk/awesomebar.mjs.map +1 -1
  323. package/dist/jsx/desk/awesomebar.native.js +3 -3
  324. package/dist/jsx/desk/awesomebar.native.js.map +1 -1
  325. package/dist/jsx/fields/Heading/index.mjs +19 -12
  326. package/dist/jsx/fields/Heading/index.mjs.map +1 -1
  327. package/dist/jsx/fields/Heading/index.native.js +21 -12
  328. package/dist/jsx/fields/Heading/index.native.js.map +1 -1
  329. package/dist/jsx/frappeNavigation.mjs +11 -2
  330. package/dist/jsx/frappeNavigation.mjs.map +1 -1
  331. package/dist/jsx/frappeNavigation.native.js +13 -2
  332. package/dist/jsx/frappeNavigation.native.js.map +1 -1
  333. package/dist/jsx/index.js +14 -2
  334. package/dist/jsx/index.js.map +1 -1
  335. package/dist/jsx/index.mjs +14 -2
  336. package/dist/jsx/index.mjs.map +1 -1
  337. package/dist/jsx/index.native.js +34 -0
  338. package/dist/jsx/index.native.js.map +1 -1
  339. package/dist/jsx/insights/InsightsFacetTags.mjs +122 -0
  340. package/dist/jsx/insights/InsightsFacetTags.mjs.map +1 -0
  341. package/dist/jsx/insights/InsightsFacetTags.native.js +165 -0
  342. package/dist/jsx/insights/InsightsFacetTags.native.js.map +1 -0
  343. package/dist/jsx/insights/InsightsKpiBand.mjs +99 -0
  344. package/dist/jsx/insights/InsightsKpiBand.mjs.map +1 -0
  345. package/dist/jsx/insights/InsightsKpiBand.native.js +133 -0
  346. package/dist/jsx/insights/InsightsKpiBand.native.js.map +1 -0
  347. package/dist/jsx/insights/InsightsLeaders.mjs +125 -0
  348. package/dist/jsx/insights/InsightsLeaders.mjs.map +1 -0
  349. package/dist/jsx/insights/InsightsLeaders.native.js +178 -0
  350. package/dist/jsx/insights/InsightsLeaders.native.js.map +1 -0
  351. package/dist/jsx/insights/InsightsRecords.mjs +80 -0
  352. package/dist/jsx/insights/InsightsRecords.mjs.map +1 -0
  353. package/dist/jsx/insights/InsightsRecords.native.js +109 -0
  354. package/dist/jsx/insights/InsightsRecords.native.js.map +1 -0
  355. package/dist/jsx/insights/InsightsTable.mjs +132 -0
  356. package/dist/jsx/insights/InsightsTable.mjs.map +1 -0
  357. package/dist/jsx/insights/InsightsTable.native.js +194 -0
  358. package/dist/jsx/insights/InsightsTable.native.js.map +1 -0
  359. package/dist/jsx/insights/insightsData.mjs +82 -0
  360. package/dist/jsx/insights/insightsData.mjs.map +1 -0
  361. package/dist/jsx/insights/insightsData.native.js +220 -0
  362. package/dist/jsx/insights/insightsData.native.js.map +1 -0
  363. package/dist/jsx/insights/insightsRecord.mjs +9 -0
  364. package/dist/jsx/insights/insightsRecord.mjs.map +1 -0
  365. package/dist/jsx/insights/insightsRecord.native.js +38 -0
  366. package/dist/jsx/insights/insightsRecord.native.js.map +1 -0
  367. package/dist/jsx/list/FacetBadge.mjs +37 -0
  368. package/dist/jsx/list/FacetBadge.mjs.map +1 -0
  369. package/dist/jsx/list/FacetBadge.native.js +66 -0
  370. package/dist/jsx/list/FacetBadge.native.js.map +1 -0
  371. package/dist/jsx/list/FacetRail.mjs +174 -0
  372. package/dist/jsx/list/FacetRail.mjs.map +1 -0
  373. package/dist/jsx/list/FacetRail.native.js +223 -0
  374. package/dist/jsx/list/FacetRail.native.js.map +1 -0
  375. package/dist/jsx/list/ImageWell.mjs +86 -0
  376. package/dist/jsx/list/ImageWell.mjs.map +1 -0
  377. package/dist/jsx/list/ImageWell.native.js +126 -0
  378. package/dist/jsx/list/ImageWell.native.js.map +1 -0
  379. package/dist/jsx/list/ListControls.mjs +201 -0
  380. package/dist/jsx/list/ListControls.mjs.map +1 -0
  381. package/dist/jsx/list/ListControls.native.js +252 -0
  382. package/dist/jsx/list/ListControls.native.js.map +1 -0
  383. package/dist/jsx/list/ListToastHost.mjs +18 -0
  384. package/dist/jsx/list/ListToastHost.mjs.map +1 -0
  385. package/dist/jsx/list/ListToastHost.native.js +59 -0
  386. package/dist/jsx/list/ListToastHost.native.js.map +1 -0
  387. package/dist/jsx/list/RangeFilter.mjs +85 -0
  388. package/dist/jsx/list/RangeFilter.mjs.map +1 -0
  389. package/dist/jsx/list/RangeFilter.native.js +135 -0
  390. package/dist/jsx/list/RangeFilter.native.js.map +1 -0
  391. package/dist/jsx/list/RecordCard.mjs +208 -0
  392. package/dist/jsx/list/RecordCard.mjs.map +1 -0
  393. package/dist/jsx/list/RecordCard.native.js +173 -0
  394. package/dist/jsx/list/RecordCard.native.js.map +1 -0
  395. package/dist/jsx/list/ShufflePanel.mjs +87 -0
  396. package/dist/jsx/list/ShufflePanel.mjs.map +1 -0
  397. package/dist/jsx/list/ShufflePanel.native.js +139 -0
  398. package/dist/jsx/list/ShufflePanel.native.js.map +1 -0
  399. package/dist/jsx/list/facetReading.mjs +45 -0
  400. package/dist/jsx/list/facetReading.mjs.map +1 -0
  401. package/dist/jsx/list/facetReading.native.js +163 -0
  402. package/dist/jsx/list/facetReading.native.js.map +1 -0
  403. package/dist/jsx/list/favorites.mjs +50 -0
  404. package/dist/jsx/list/favorites.mjs.map +1 -0
  405. package/dist/jsx/list/favorites.native.js +91 -0
  406. package/dist/jsx/list/favorites.native.js.map +1 -0
  407. package/dist/jsx/list/listState.mjs +71 -0
  408. package/dist/jsx/list/listState.mjs.map +1 -0
  409. package/dist/jsx/list/listState.native.js +234 -0
  410. package/dist/jsx/list/listState.native.js.map +1 -0
  411. package/dist/jsx/list/recordLook.mjs +10 -0
  412. package/dist/jsx/list/recordLook.mjs.map +1 -0
  413. package/dist/jsx/list/recordLook.native.js +39 -0
  414. package/dist/jsx/list/recordLook.native.js.map +1 -0
  415. package/dist/jsx/list/useListControls.mjs +164 -0
  416. package/dist/jsx/list/useListControls.mjs.map +1 -0
  417. package/dist/jsx/list/useListControls.native.js +272 -0
  418. package/dist/jsx/list/useListControls.native.js.map +1 -0
  419. package/dist/jsx/record/RecordBars.mjs +175 -0
  420. package/dist/jsx/record/RecordBars.mjs.map +1 -0
  421. package/dist/jsx/record/RecordBars.native.js +225 -0
  422. package/dist/jsx/record/RecordBars.native.js.map +1 -0
  423. package/dist/jsx/record/RecordGallery.mjs +42 -0
  424. package/dist/jsx/record/RecordGallery.mjs.map +1 -0
  425. package/dist/jsx/record/RecordGallery.native.js +75 -0
  426. package/dist/jsx/record/RecordGallery.native.js.map +1 -0
  427. package/dist/jsx/record/RecordHero.mjs +205 -0
  428. package/dist/jsx/record/RecordHero.mjs.map +1 -0
  429. package/dist/jsx/record/RecordHero.native.js +250 -0
  430. package/dist/jsx/record/RecordHero.native.js.map +1 -0
  431. package/dist/jsx/record/RecordPage.mjs +305 -0
  432. package/dist/jsx/record/RecordPage.mjs.map +1 -0
  433. package/dist/jsx/record/RecordPage.native.js +364 -0
  434. package/dist/jsx/record/RecordPage.native.js.map +1 -0
  435. package/dist/jsx/record/RecordPager.mjs +100 -0
  436. package/dist/jsx/record/RecordPager.mjs.map +1 -0
  437. package/dist/jsx/record/RecordPager.native.js +130 -0
  438. package/dist/jsx/record/RecordPager.native.js.map +1 -0
  439. package/dist/jsx/record/RecordRows.mjs +101 -0
  440. package/dist/jsx/record/RecordRows.mjs.map +1 -0
  441. package/dist/jsx/record/RecordRows.native.js +140 -0
  442. package/dist/jsx/record/RecordRows.native.js.map +1 -0
  443. package/dist/jsx/record/recordData.mjs +92 -0
  444. package/dist/jsx/record/recordData.mjs.map +1 -0
  445. package/dist/jsx/record/recordData.native.js +189 -0
  446. package/dist/jsx/record/recordData.native.js.map +1 -0
  447. package/dist/jsx/record/recordSections.mjs +5 -0
  448. package/dist/jsx/record/recordSections.mjs.map +1 -0
  449. package/dist/jsx/record/recordSections.native.js +33 -0
  450. package/dist/jsx/record/recordSections.native.js.map +1 -0
  451. package/package.json +16 -16
  452. package/src/FrappeCalendar.tsx +2 -2
  453. package/src/FrappeDashboard.tsx +2 -2
  454. package/src/FrappeImageView.tsx +2 -1
  455. package/src/FrappeInsights.spec.tsx +171 -0
  456. package/src/FrappeInsights.tsx +422 -0
  457. package/src/FrappeLikedBy.tsx +7 -5
  458. package/src/FrappeListView.card.spec.tsx +157 -0
  459. package/src/FrappeListView.controls.spec.tsx +225 -0
  460. package/src/FrappeListView.seed.spec.tsx +30 -0
  461. package/src/FrappeListView.tsx +575 -44
  462. package/src/FrappeRecordView.spec.tsx +276 -0
  463. package/src/FrappeRecordView.tsx +231 -0
  464. package/src/FrappeReportBuilder.tsx +4 -5
  465. package/src/FrappeTreeView.tsx +1 -1
  466. package/src/desk/awesomebar.auth.spec.tsx +77 -0
  467. package/src/desk/awesomebar.tsx +1 -1
  468. package/src/fields/Heading/index.tsx +33 -15
  469. package/src/frappeNavigation.loader.spec.tsx +45 -0
  470. package/src/frappeNavigation.tsx +32 -1
  471. package/src/index.ts +53 -1
  472. package/src/insights/InsightsFacetTags.tsx +131 -0
  473. package/src/insights/InsightsKpiBand.tsx +114 -0
  474. package/src/insights/InsightsLeaders.tsx +146 -0
  475. package/src/insights/InsightsRecords.tsx +71 -0
  476. package/src/insights/InsightsTable.tsx +169 -0
  477. package/src/insights/insightsData.spec.ts +143 -0
  478. package/src/insights/insightsData.ts +122 -0
  479. package/src/insights/insightsRecord.ts +36 -0
  480. package/src/list/FacetBadge.tsx +41 -0
  481. package/src/list/FacetRail.tsx +235 -0
  482. package/src/list/ImageWell.tsx +110 -0
  483. package/src/list/ListControls.tsx +208 -0
  484. package/src/list/ListToastHost.tsx +27 -0
  485. package/src/list/RangeFilter.tsx +83 -0
  486. package/src/list/RecordCard.native.tsx +126 -0
  487. package/src/list/RecordCard.tsx +260 -0
  488. package/src/list/ShufflePanel.tsx +107 -0
  489. package/src/list/facetReading.ts +79 -0
  490. package/src/list/favorites.spec.ts +80 -0
  491. package/src/list/favorites.ts +79 -0
  492. package/src/list/listState.spec.ts +156 -0
  493. package/src/list/listState.ts +184 -0
  494. package/src/list/recordLook.ts +37 -0
  495. package/src/list/useListControls.tsx +223 -0
  496. package/src/record/RecordBars.tsx +187 -0
  497. package/src/record/RecordGallery.tsx +47 -0
  498. package/src/record/RecordHero.tsx +186 -0
  499. package/src/record/RecordPage.tsx +358 -0
  500. package/src/record/RecordPager.tsx +97 -0
  501. package/src/record/RecordRows.tsx +90 -0
  502. package/src/record/recordData.spec.ts +148 -0
  503. package/src/record/recordData.ts +124 -0
  504. package/src/record/recordSections.ts +62 -0
  505. package/src/schemaForm/SchemaForm.stories.tsx +2 -2
  506. package/types/FrappeImageView.d.ts.map +1 -1
  507. package/types/FrappeInsights.d.ts +55 -0
  508. package/types/FrappeInsights.d.ts.map +1 -0
  509. package/types/FrappeLikedBy.d.ts.map +1 -1
  510. package/types/FrappeListView.d.ts +82 -2
  511. package/types/FrappeListView.d.ts.map +1 -1
  512. package/types/FrappeRecordView.d.ts +69 -0
  513. package/types/FrappeRecordView.d.ts.map +1 -0
  514. package/types/FrappeReportBuilder.d.ts.map +1 -1
  515. package/types/fields/Heading/index.d.ts.map +1 -1
  516. package/types/frappeNavigation.d.ts +21 -0
  517. package/types/frappeNavigation.d.ts.map +1 -1
  518. package/types/index.d.ts +14 -2
  519. package/types/index.d.ts.map +1 -1
  520. package/types/insights/InsightsFacetTags.d.ts +11 -0
  521. package/types/insights/InsightsFacetTags.d.ts.map +1 -0
  522. package/types/insights/InsightsKpiBand.d.ts +22 -0
  523. package/types/insights/InsightsKpiBand.d.ts.map +1 -0
  524. package/types/insights/InsightsLeaders.d.ts +16 -0
  525. package/types/insights/InsightsLeaders.d.ts.map +1 -0
  526. package/types/insights/InsightsRecords.d.ts +19 -0
  527. package/types/insights/InsightsRecords.d.ts.map +1 -0
  528. package/types/insights/InsightsTable.d.ts +17 -0
  529. package/types/insights/InsightsTable.d.ts.map +1 -0
  530. package/types/insights/insightsData.d.ts +45 -0
  531. package/types/insights/insightsData.d.ts.map +1 -0
  532. package/types/insights/insightsRecord.d.ts +29 -0
  533. package/types/insights/insightsRecord.d.ts.map +1 -0
  534. package/types/list/FacetBadge.d.ts +13 -0
  535. package/types/list/FacetBadge.d.ts.map +1 -0
  536. package/types/list/FacetRail.d.ts +26 -0
  537. package/types/list/FacetRail.d.ts.map +1 -0
  538. package/types/list/ImageWell.d.ts +24 -0
  539. package/types/list/ImageWell.d.ts.map +1 -0
  540. package/types/list/ListControls.d.ts +30 -0
  541. package/types/list/ListControls.d.ts.map +1 -0
  542. package/types/list/ListToastHost.d.ts +7 -0
  543. package/types/list/ListToastHost.d.ts.map +1 -0
  544. package/types/list/RangeFilter.d.ts +14 -0
  545. package/types/list/RangeFilter.d.ts.map +1 -0
  546. package/types/list/RecordCard.d.ts +38 -0
  547. package/types/list/RecordCard.d.ts.map +1 -0
  548. package/types/list/RecordCard.native.d.ts +9 -0
  549. package/types/list/RecordCard.native.d.ts.map +1 -0
  550. package/types/list/ShufflePanel.d.ts +24 -0
  551. package/types/list/ShufflePanel.d.ts.map +1 -0
  552. package/types/list/facetReading.d.ts +33 -0
  553. package/types/list/facetReading.d.ts.map +1 -0
  554. package/types/list/favorites.d.ts +26 -0
  555. package/types/list/favorites.d.ts.map +1 -0
  556. package/types/list/listState.d.ts +94 -0
  557. package/types/list/listState.d.ts.map +1 -0
  558. package/types/list/recordLook.d.ts +25 -0
  559. package/types/list/recordLook.d.ts.map +1 -0
  560. package/types/list/useListControls.d.ts +48 -0
  561. package/types/list/useListControls.d.ts.map +1 -0
  562. package/types/record/RecordBars.d.ts +11 -0
  563. package/types/record/RecordBars.d.ts.map +1 -0
  564. package/types/record/RecordGallery.d.ts +17 -0
  565. package/types/record/RecordGallery.d.ts.map +1 -0
  566. package/types/record/RecordHero.d.ts +42 -0
  567. package/types/record/RecordHero.d.ts.map +1 -0
  568. package/types/record/RecordPage.d.ts +54 -0
  569. package/types/record/RecordPage.d.ts.map +1 -0
  570. package/types/record/RecordPager.d.ts +13 -0
  571. package/types/record/RecordPager.d.ts.map +1 -0
  572. package/types/record/RecordRows.d.ts +13 -0
  573. package/types/record/RecordRows.d.ts.map +1 -0
  574. package/types/record/recordData.d.ts +46 -0
  575. package/types/record/recordData.d.ts.map +1 -0
  576. package/types/record/recordSections.d.ts +67 -0
  577. package/types/record/recordSections.d.ts.map +1 -0
@@ -0,0 +1,11 @@
1
+ import type { InsightsCount } from "./insightsData";
2
+ export interface InsightsFacetTagsProps {
3
+ distribution: readonly InsightsCount[];
4
+ label: (value: string) => string;
5
+ tint?: (value: string) => string | undefined;
6
+ onSelect: (value: string) => void;
7
+ testID?: string;
8
+ }
9
+ /** A facet's values with their record counts, each opening the list narrowed to it. */
10
+ export declare function InsightsFacetTags({ distribution, label, tint, onSelect, testID, }: InsightsFacetTagsProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=InsightsFacetTags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InsightsFacetTags.d.ts","sourceRoot":"","sources":["../../src/insights/InsightsFacetTags.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAqFpD,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,SAAS,aAAa,EAAE,CAAC;IACvC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,EAChC,YAAY,EACZ,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,MAAM,GACP,EAAE,sBAAsB,2CAoBxB"}
@@ -0,0 +1,22 @@
1
+ import { type ChartConfig, type KPICardConfig } from "@multiplatform.one/components";
2
+ export interface InsightsTile {
3
+ id: string;
4
+ title: string;
5
+ value: string | number;
6
+ hint?: string;
7
+ spark?: number[];
8
+ }
9
+ export interface InsightsKpiBandProps {
10
+ hero: KPICardConfig;
11
+ tiles: readonly InsightsTile[];
12
+ charts: readonly ChartConfig[];
13
+ testID?: string;
14
+ }
15
+ /**
16
+ * The hero count with its denser companions, then the charts. Rows wrap on
17
+ * flexBasis rather than riding the catalog Dashboard grid, whose percent
18
+ * widths plus its gap overflow a row that sums to 100%. Every child shrinks
19
+ * so a line narrower than one tile stays inside its frame (LC-10).
20
+ */
21
+ export declare function InsightsKpiBand({ hero, tiles, charts, testID }: InsightsKpiBandProps): import("react/jsx-runtime").JSX.Element;
22
+ //# sourceMappingURL=InsightsKpiBand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InsightsKpiBand.d.ts","sourceRoot":"","sources":["../../src/insights/InsightsKpiBand.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,+BAA+B,CAAC;AAIvC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAwCD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CA0CpF"}
@@ -0,0 +1,16 @@
1
+ import { type FrappeInsightsMetric, type InsightsRecordView } from "./insightsRecord";
2
+ export interface InsightsLeadersProps<TDoc> {
3
+ rows: readonly TDoc[];
4
+ metrics: readonly FrappeInsightsMetric[];
5
+ record: InsightsRecordView<TDoc>;
6
+ /** Rows per metric. */
7
+ count?: number;
8
+ testID?: string;
9
+ }
10
+ /**
11
+ * The top records by a metric the reader picks on a contained tab strip,
12
+ * in one compact read-only DataTable; a row opens its record. Nested cell
13
+ * chrome uses the compact nestedControl and label type (LC-73).
14
+ */
15
+ export declare function InsightsLeaders<TDoc>({ rows, metrics, record, count, testID, }: InsightsLeadersProps<TDoc>): import("react/jsx-runtime").JSX.Element | null;
16
+ //# sourceMappingURL=InsightsLeaders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InsightsLeaders.d.ts","sourceRoot":"","sources":["../../src/insights/InsightsLeaders.tsx"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACxB,MAAM,kBAAkB,CAAC;AAS1B,MAAM,WAAW,oBAAoB,CAAC,IAAI;IACxC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;IACtB,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACzC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACjC,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,EACpC,IAAI,EACJ,OAAO,EACP,MAAM,EACN,KAAS,EACT,MAAM,GACP,EAAE,oBAAoB,CAAC,IAAI,CAAC,kDAwG5B"}
@@ -0,0 +1,19 @@
1
+ import type { InsightsRecordView } from "./insightsRecord";
2
+ export interface InsightsRecordTile<TDoc> {
3
+ id: string;
4
+ label: string;
5
+ doc: TDoc;
6
+ value: string;
7
+ }
8
+ export interface InsightsRecordsProps<TDoc> {
9
+ tiles: readonly InsightsRecordTile<TDoc>[];
10
+ record: InsightsRecordView<TDoc>;
11
+ testID?: string;
12
+ }
13
+ /**
14
+ * Record holders as quiet fact tiles: the holder's tinted image well, its
15
+ * title and code, and the value. Nested chrome steps with the compact
16
+ * nestedControl, not the page's 44px floor (LC-73).
17
+ */
18
+ export declare function InsightsRecords<TDoc>({ tiles, record, testID }: InsightsRecordsProps<TDoc>): import("react/jsx-runtime").JSX.Element;
19
+ //# sourceMappingURL=InsightsRecords.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InsightsRecords.d.ts","sourceRoot":"","sources":["../../src/insights/InsightsRecords.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,MAAM,WAAW,kBAAkB,CAAC,IAAI;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,IAAI,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB,CAAC,IAAI;IACxC,KAAK,EAAE,SAAS,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3C,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,oBAAoB,CAAC,IAAI,CAAC,2CA+C1F"}
@@ -0,0 +1,17 @@
1
+ import { type FrappeInsightsMetric, type InsightsRecordView } from "./insightsRecord";
2
+ export interface InsightsTableProps<TDoc> {
3
+ rows: readonly TDoc[];
4
+ metrics: readonly FrappeInsightsMetric[];
5
+ record: InsightsRecordView<TDoc>;
6
+ /** Header of the facet column; without it, no facet column. */
7
+ facetLabel?: string;
8
+ pageSize?: number;
9
+ label: string;
10
+ testID?: string;
11
+ }
12
+ /**
13
+ * Every record in the catalog DataTable: sortable metric columns, a pager,
14
+ * and the stacked card layout below `$sm`. A row opens its record.
15
+ */
16
+ export declare function InsightsTable<TDoc>({ rows, metrics, record, facetLabel, pageSize, label, testID, }: InsightsTableProps<TDoc>): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=InsightsTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InsightsTable.d.ts","sourceRoot":"","sources":["../../src/insights/InsightsTable.tsx"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACxB,MAAM,kBAAkB,CAAC;AAU1B,MAAM,WAAW,kBAAkB,CAAC,IAAI;IACtC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;IACtB,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACzC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACjC,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,EAClC,IAAI,EACJ,OAAO,EACP,MAAM,EACN,UAAU,EACV,QAAY,EACZ,KAAK,EACL,MAAM,GACP,EAAE,kBAAkB,CAAC,IAAI,CAAC,2CA4H1B"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * The aggregates an insights page draws from the rows one list reads and the
3
+ * values its facet reading found: no React, no IO.
4
+ */
5
+ type Row = {
6
+ name?: string;
7
+ } & Record<string, unknown>;
8
+ export interface InsightsCount {
9
+ value: string;
10
+ count: number;
11
+ /** The folded tail of a distribution. */
12
+ other?: boolean;
13
+ }
14
+ export interface InsightsBucket {
15
+ /** The bucket's range, "60–119". */
16
+ label: string;
17
+ value: number;
18
+ }
19
+ /** Records per facet value among `rows`, most common first, ties A to Z. */
20
+ export declare function facetDistribution(values: ReadonlyMap<string, readonly string[]>, rows: readonly Row[]): InsightsCount[];
21
+ /** At most `max` entries: the tail folds into one `other` entry holding its sum. */
22
+ export declare function foldDistribution(entries: readonly InsightsCount[], max: number): InsightsCount[];
23
+ /** Records among `rows` carrying more than one facet value. */
24
+ export declare function multiValued(values: ReadonlyMap<string, readonly string[]>, rows: readonly Row[]): number;
25
+ export declare function average(rows: readonly Row[], field: string): number;
26
+ /**
27
+ * The rows in an order-by's order, key by key: a collection does not promise
28
+ * it (a fixture corpus answers in insertion order), and ranks break their
29
+ * ties in this order.
30
+ */
31
+ export declare function orderRows<TRow extends Row>(rows: readonly TRow[], orderBy: ReadonlyArray<{
32
+ field: string;
33
+ order: string;
34
+ }> | undefined): TRow[];
35
+ /** The `n` rows with the largest `field`; ties keep the rows' order. */
36
+ export declare function topBy<TRow extends Row>(rows: readonly TRow[], field: string, n: number): TRow[];
37
+ /** A round bucket width (1, 2 or 5 times a power of ten) for about six buckets up to `max`. */
38
+ export declare function bucketWidth(max: number): number;
39
+ /**
40
+ * Counts of `field` in `width`-wide buckets from 0, empty buckets between
41
+ * occupied ones kept so a bar chart's axis reads as a scale.
42
+ */
43
+ export declare function histogram(rows: readonly Row[], field: string, width?: number): InsightsBucket[];
44
+ export {};
45
+ //# sourceMappingURL=insightsData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insightsData.d.ts","sourceRoot":"","sources":["../../src/insights/insightsData.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,KAAK,GAAG,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,EAC9C,IAAI,EAAE,SAAS,GAAG,EAAE,GACnB,aAAa,EAAE,CAUjB;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE,CAKhG;AAED,+DAA+D;AAC/D,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,EAC9C,IAAI,EAAE,SAAS,GAAG,EAAE,GACnB,MAAM,CAER;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGnE;AAUD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,SAAS,GAAG,EACxC,IAAI,EAAE,SAAS,IAAI,EAAE,EACrB,OAAO,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,GACnE,IAAI,EAAE,CASR;AAED,wEAAwE;AACxE,wBAAgB,KAAK,CAAC,IAAI,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,CAE/F;AAED,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE,CAe/F"}
@@ -0,0 +1,29 @@
1
+ /** A record as the insights sections draw it, resolved once by FrappeInsights. */
2
+ export interface InsightsRecordView<TDoc> {
3
+ title: (doc: TDoc) => string;
4
+ code: (doc: TDoc) => string | undefined;
5
+ images: (doc: TDoc) => string[];
6
+ /** The facet values' tints, first value first. */
7
+ tints: (doc: TDoc) => (string | undefined)[];
8
+ /** The record's facet values. */
9
+ values: (doc: TDoc) => string[];
10
+ valueLabel: (value: string) => string;
11
+ valueTint: (value: string) => string | undefined;
12
+ open: (doc: TDoc) => void;
13
+ }
14
+ export interface FrappeInsightsMetric {
15
+ /** A numeric field of the doctype. */
16
+ field: string;
17
+ label: string;
18
+ /** A value as shown (units, precision); defaults to the number. */
19
+ format?: (value: number) => string;
20
+ /** Names the metric's record-holder tile ("Tallest"); without it, no tile. */
21
+ record?: string;
22
+ /** Histogram bucket width; defaults to a round width for about six buckets. */
23
+ bucket?: number;
24
+ /** A record page fills a bar under the value to this ceiling. */
25
+ max?: number;
26
+ }
27
+ export declare function metricValue(doc: unknown, field: string): number;
28
+ export declare function formatMetric(metric: FrappeInsightsMetric, value: number): string;
29
+ //# sourceMappingURL=insightsRecord.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insightsRecord.d.ts","sourceRoot":"","sources":["../../src/insights/insightsRecord.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,WAAW,kBAAkB,CAAC,IAAI;IACtC,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC;IAC7B,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,GAAG,SAAS,CAAC;IACxC,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;IAChC,kDAAkD;IAClD,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC7C,iCAAiC;IACjC,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;IAChC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACjD,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhF"}
@@ -0,0 +1,13 @@
1
+ export interface FacetBadgeProps {
2
+ label: string;
3
+ /** Theme hue (`"grass"`) painting the badge from its ramp. */
4
+ tint?: string;
5
+ /** A step smaller, for image wells and table cells. */
6
+ compact?: boolean;
7
+ }
8
+ /**
9
+ * One facet value as a static badge: nested density (LC-73), the tint's
10
+ * step-4 fill, step-7 border and step-12 text (DF-04, AA in both schemes).
11
+ */
12
+ export declare function FacetBadge({ label, tint, compact }: FacetBadgeProps): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=FacetBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacetBadge.d.ts","sourceRoot":"","sources":["../../src/list/FacetBadge.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,IAAa,EAAE,OAAe,EAAE,EAAE,eAAe,2CAyBpF"}
@@ -0,0 +1,26 @@
1
+ export interface FacetRailOption {
2
+ /** Facet value; "" is the chip that clears the facet. */
3
+ value: string;
4
+ label: string;
5
+ /** Theme hue (`"grass"`) painting the chip from its ramp. */
6
+ tint?: string;
7
+ count?: number;
8
+ }
9
+ export interface FacetRailProps {
10
+ /** Names the radiogroup. */
11
+ label: string;
12
+ /** Active value, or "" for none. */
13
+ value: string;
14
+ options: readonly FacetRailOption[];
15
+ onChange: (value: string) => void;
16
+ testID?: string;
17
+ }
18
+ /**
19
+ * A single-select facet as a horizontally scrolling chip rail. One tap
20
+ * narrows, a second tap on the active chip clears. One tab stop (LC-49):
21
+ * arrows, Home and End move and select like a radiogroup, and the focused
22
+ * chip paints the only ring (LC-71). Scrolls on narrow viewports instead of
23
+ * wrapping into a wall of chips.
24
+ */
25
+ export declare function FacetRail({ label, value, options, onChange, testID }: FacetRailProps): import("react/jsx-runtime").JSX.Element;
26
+ //# sourceMappingURL=FacetRail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacetRail.d.ts","sourceRoot":"","sources":["../../src/list/FacetRail.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAqID;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,cAAc,2CAkEpF"}
@@ -0,0 +1,24 @@
1
+ import { type YStackProps } from "@multiplatform.one/components";
2
+ export interface ImageWellProps extends Omit<YStackProps, "children"> {
3
+ /** Candidate URLs in order; a failed load moves to the next. */
4
+ sources: readonly string[];
5
+ alt: string;
6
+ /**
7
+ * Theme hues (`"grass"`) painting the well from their ramps: one fills it,
8
+ * two split it down the middle.
9
+ */
10
+ tints?: readonly (string | undefined)[];
11
+ /** Nearest-neighbor upscaling, for pixel art. */
12
+ pixelated?: boolean;
13
+ /** Gap between the well's edge and the image, as a fraction of its width. */
14
+ inset?: number;
15
+ /** Fetch only as the image nears the viewport (web). */
16
+ lazy?: boolean;
17
+ }
18
+ /**
19
+ * A square image well: a tinted surface (the tint is data, from the theme's
20
+ * ramps) holding an image that walks its candidate list on error and fades
21
+ * in on web, with a "?" when every candidate fails.
22
+ */
23
+ export declare function ImageWell({ sources, alt, tints, pixelated, inset, lazy, ...wellProps }: ImageWellProps): import("react/jsx-runtime").JSX.Element;
24
+ //# sourceMappingURL=ImageWell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageWell.d.ts","sourceRoot":"","sources":["../../src/list/ImageWell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAC;AAIvC,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;IACnE,gEAAgE;IAChE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IACxC,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,GAAG,EACH,KAAK,EACL,SAAiB,EACjB,KAAY,EACZ,IAAY,EACZ,GAAG,SAAS,EACb,EAAE,cAAc,2CAoEhB"}
@@ -0,0 +1,30 @@
1
+ import type React from "react";
2
+ import { type FrappeListControls } from "./listState";
3
+ import type { ListControlsResult } from "./useListControls";
4
+ export interface ListControlsProps {
5
+ controls: FrappeListControls;
6
+ list: ListControlsResult;
7
+ /** DOM id of the search box's wrapper, which the "/" shortcut focuses. */
8
+ searchId: string;
9
+ searchPlaceholder?: string;
10
+ showSearch: boolean;
11
+ showFavorites: boolean;
12
+ /** Present when the list offers a random pick. */
13
+ shuffle?: {
14
+ open: boolean;
15
+ toggle: () => void;
16
+ panelId: string;
17
+ };
18
+ /** The random pick, under the search row while open. */
19
+ shufflePanel?: React.ReactNode;
20
+ /** A hairline under the band, when the list below paints no surface. */
21
+ separator: boolean;
22
+ testID: string;
23
+ }
24
+ /**
25
+ * The band above a list: search growing on the left, sort, favorites and
26
+ * shuffle anchored right; then one chip rail per facet; then the range
27
+ * sliders with Clear filters. Under sm the search takes its own row.
28
+ */
29
+ export declare function ListControls({ controls, list, searchId, searchPlaceholder, showSearch, showFavorites, shuffle, shufflePanel, separator, testID, }: ListControlsProps): import("react/jsx-runtime").JSX.Element;
30
+ //# sourceMappingURL=ListControls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListControls.d.ts","sourceRoot":"","sources":["../../src/list/ListControls.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,kDAAkD;IAClD,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,wDAAwD;IACxD,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,OAAO,EACP,YAAY,EACZ,SAAS,EACT,MAAM,GACP,EAAE,iBAAiB,2CA8JnB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * A list page's toast viewport, for its favorites feedback. `showToast`
3
+ * writes to a module store either way; a host without a root viewport (the
4
+ * One app mounts none) would otherwise never paint the entries.
5
+ */
6
+ export declare function ListToastHost(): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=ListToastHost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListToastHost.d.ts","sourceRoot":"","sources":["../../src/list/ListToastHost.tsx"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,wBAAgB,aAAa,4CAM5B"}
@@ -0,0 +1,14 @@
1
+ export interface RangeFilterProps {
2
+ label: string;
3
+ /** Current minimum; 0 is no minimum. */
4
+ value: number;
5
+ /** Upper bound of the slider. */
6
+ max: number;
7
+ step?: number;
8
+ onChange: (value: number) => void;
9
+ }
10
+ /** A "minimum value" filter for a numeric field: label, slider, readout. */
11
+ export declare function RangeFilter(props: RangeFilterProps): import("react/jsx-runtime").JSX.Element;
12
+ /** A slider ceiling that follows the data, rounded up to a tidy stop. */
13
+ export declare function rangeCeiling(highest: number, stop?: number, floor?: number): number;
14
+ //# sourceMappingURL=RangeFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangeFilter.d.ts","sourceRoot":"","sources":["../../src/list/RangeFilter.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAyDD,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,2CAMlD;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAK,EAAE,KAAK,SAAK,GAAG,MAAM,CAE3E"}
@@ -0,0 +1,38 @@
1
+ export interface RecordCardBadge {
2
+ value: string;
3
+ label: string;
4
+ tint?: string;
5
+ }
6
+ export interface RecordCardProps {
7
+ title: string;
8
+ subtitle?: string;
9
+ /** Stamped on the well's corner ("#025"). */
10
+ code?: string;
11
+ /** Image candidates in order; a failed load moves to the next. */
12
+ images: readonly string[];
13
+ /** Theme hues painting the well: one fills it, two split it. */
14
+ tints?: readonly (string | undefined)[];
15
+ /** Facet values stickered on the well. */
16
+ badges?: readonly RecordCardBadge[];
17
+ /** The record's page: the card becomes a real link (SSR, new tab). */
18
+ href?: string;
19
+ onPress?: () => void;
20
+ favorite?: {
21
+ active: boolean;
22
+ toggle: () => void;
23
+ };
24
+ /** Fetch the image only as it nears the viewport. */
25
+ lazy?: boolean;
26
+ testID?: string;
27
+ favoriteTestID?: string;
28
+ }
29
+ /**
30
+ * A record as a tile: the image well is the card (tinted by the record's
31
+ * facet, its values stickered on it, its code stamped in the corner) with
32
+ * the title and a muted subtitle under it. A routed card is a stretched
33
+ * link with the heart as its sibling button (LC-74), so a first-paint click
34
+ * on the heart never follows the link; modified clicks keep the browser's
35
+ * new-tab semantics.
36
+ */
37
+ export declare function RecordCard({ title, subtitle, code, images, tints, badges, href, onPress, favorite, lazy, testID, favoriteTestID, }: RecordCardProps): import("react/jsx-runtime").JSX.Element;
38
+ //# sourceMappingURL=RecordCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordCard.d.ts","sourceRoot":"","sources":["../../src/list/RecordCard.tsx"],"names":[],"mappings":"AAeA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,gEAAgE;IAChE,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IACxC,0CAA0C;IAC1C,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IACnD,qDAAqD;IACrD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAyBD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,KAAK,EACL,MAAW,EACX,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,IAAY,EACZ,MAAM,EACN,cAAc,GACf,EAAE,eAAe,2CA6KjB"}
@@ -0,0 +1,9 @@
1
+ import type { RecordCardProps } from "./RecordCard";
2
+ export type { RecordCardBadge, RecordCardProps } from "./RecordCard";
3
+ /**
4
+ * Native twin of RecordCard. On React Native an Anchor is a Text node whose
5
+ * press the Card (a View with its own responder) claims, so the card's
6
+ * press sits on the Card itself and the heart stops it from bubbling there.
7
+ */
8
+ export declare function RecordCard({ title, subtitle, code, images, tints, badges, onPress, favorite, testID, favoriteTestID, }: RecordCardProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=RecordCard.native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordCard.native.d.ts","sourceRoot":"","sources":["../../src/list/RecordCard.native.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAErE;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,KAAK,EACL,MAAW,EACX,OAAO,EACP,QAAQ,EACR,MAAM,EACN,cAAc,GACf,EAAE,eAAe,2CAkGjB"}
@@ -0,0 +1,24 @@
1
+ import type React from "react";
2
+ export interface ShufflePanelProps<TDoc extends {
3
+ name?: string;
4
+ }> {
5
+ /** DOM id the toggle names in aria-controls. */
6
+ id?: string;
7
+ label: string;
8
+ /** Records to pick from, in wheel order. */
9
+ rows: readonly TDoc[];
10
+ /** A record's wheel label. */
11
+ itemLabel: (doc: TDoc) => string;
12
+ /** Draws the current pick beside the wheel. */
13
+ renderPick: (doc: TDoc) => React.ReactNode;
14
+ onGo: (doc: TDoc) => void;
15
+ testID?: string;
16
+ }
17
+ /**
18
+ * Pick a random record: a wheel of record labels beside the current pick.
19
+ * Drag or flick the wheel, or Spin for a random jump, then Go opens it.
20
+ */
21
+ export declare function ShufflePanel<TDoc extends {
22
+ name?: string;
23
+ }>({ id, label, rows, itemLabel, renderPick, onGo, testID, }: ShufflePanelProps<TDoc>): import("react/jsx-runtime").JSX.Element | null;
24
+ //# sourceMappingURL=ShufflePanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShufflePanel.d.ts","sourceRoot":"","sources":["../../src/list/ShufflePanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,iBAAiB,CAAC,IAAI,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;IAC/D,gDAAgD;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;IACtB,8BAA8B;IAC9B,SAAS,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC;IACjC,+CAA+C;IAC/C,UAAU,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IAC3C,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EAC3D,EAAE,EACF,KAAK,EACL,IAAI,EACJ,SAAS,EACT,UAAU,EACV,IAAI,EACJ,MAAM,GACP,EAAE,iBAAiB,CAAC,IAAI,CAAC,kDAiEzB"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * How a facet's values are read: which rows, and how they fold into each
3
+ * record's values and each value's record count. Pure: no React, no IO.
4
+ */
5
+ import type { FrappeConnection } from "../frappeConnections";
6
+ import type { FrappeListFacet } from "./listState";
7
+ type Row = Record<string, unknown>;
8
+ export interface FacetReading {
9
+ /** Record name to its values, ordered by the facet's `orderBy`. */
10
+ values: ReadonlyMap<string, string[]>;
11
+ /** Value to the number of records carrying it. */
12
+ counts: Readonly<Record<string, number>>;
13
+ }
14
+ export interface FacetRead {
15
+ /** The doctype whose rows carry the facet's field. */
16
+ doctype: string;
17
+ /** The field of those rows naming the record; "name" on the list doctype. */
18
+ linkField: string;
19
+ options: {
20
+ fields: string[];
21
+ limit: number;
22
+ };
23
+ /** False while a connection doctype's link is still unknown. */
24
+ ready: boolean;
25
+ }
26
+ /**
27
+ * The read behind a facet. A connection doctype's read asks for the fields
28
+ * its declared connection reads too, so both share one collection.
29
+ */
30
+ export declare function facetRead(facet: FrappeListFacet, doctype: string, connections: readonly FrappeConnection[] | undefined, limit: number | undefined): FacetRead;
31
+ export declare function readFacet(facet: FrappeListFacet, linkField: string, rows: readonly Row[]): FacetReading;
32
+ export {};
33
+ //# sourceMappingURL=facetReading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facetReading.d.ts","sourceRoot":"","sources":["../../src/list/facetReading.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnC,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,kDAAkD;IAClD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,SAAS;IACxB,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,gEAAgE;IAChE,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,SAAS,gBAAgB,EAAE,GAAG,SAAS,EACpD,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,SAAS,CAeX;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,GAAG,EAAE,GACnB,YAAY,CAsBd"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * A list's favorites: the record names a reader starred, kept on the device
3
+ * (no bench write, so a guest can star too). One persistent store per
4
+ * storage key, following docs/standards/frontend/persistent-stores.md.
5
+ */
6
+ import { type PersistStore, type Storage } from "@multiplatform.one/store";
7
+ export interface FavoritesState {
8
+ /** Starred record names, in the order they were starred. */
9
+ names: string[];
10
+ }
11
+ export declare function createFavoritesStore(key: string, storageImpl?: Storage): PersistStore<FavoritesState>;
12
+ /** The shared store for a storage key. */
13
+ export declare function favoritesStore(key: string): PersistStore<FavoritesState>;
14
+ /** The storage key a doctype's favorites default to. */
15
+ export declare function favoritesKey(doctype: string): string;
16
+ export declare function toggleFavoriteIn(store: PersistStore<FavoritesState>, name: string): void;
17
+ export interface UseFavorites {
18
+ favorites: string[];
19
+ favoriteSet: ReadonlySet<string>;
20
+ isFavorite: (name: string) => boolean;
21
+ toggle: (name: string) => void;
22
+ count: number;
23
+ }
24
+ /** A key's favorites; without a key, none (and toggling does nothing). */
25
+ export declare function useFavorites(key: string | undefined): UseFavorites;
26
+ //# sourceMappingURL=favorites.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"favorites.d.ts","sourceRoot":"","sources":["../../src/list/favorites.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,OAAO,EACb,MAAM,0BAA0B,CAAC;AAGlC,MAAM,WAAW,cAAc;IAC7B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,OAAiB,GAC7B,YAAY,CAAC,cAAc,CAAC,CAE9B;AAID,0CAA0C;AAC1C,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAOxE;AAED,wDAAwD;AACxD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMxF;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAID,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAelE"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * The state of a list page's controls (search, sort, facets, ranges,
3
+ * favorites, view) and its two codecs: URL params, so a refresh or a shared
4
+ * link reproduces the list, and bench filters, so the list reads exactly
5
+ * the rows the controls describe. Pure: no React, no IO.
6
+ *
7
+ * Params: `q` search, `sort` the sort's value (absent for the first sort),
8
+ * one param per facet and per range (absent when unset), `fav=1` favorites
9
+ * only, `view` (absent for the default view).
10
+ */
11
+ import type { Order } from "@multiplatform.one/frappe";
12
+ export type FrappeListViewMode = "list" | "table" | "grid";
13
+ export interface FrappeListSort {
14
+ /** URL value. */
15
+ value: string;
16
+ label: string;
17
+ orderBy: ReadonlyArray<{
18
+ field: string;
19
+ order: Order;
20
+ }>;
21
+ }
22
+ /** Narrow the list to records carrying one value of a field. */
23
+ export interface FrappeListFacet {
24
+ /** URL param and state key. */
25
+ param: string;
26
+ /** Field whose value narrows. */
27
+ field: string;
28
+ /**
29
+ * A connection doctype whose rows carry `field` (Pokemon's types live on
30
+ * Pokemon Poke Type rows). Omitted, `field` is the list doctype's own.
31
+ */
32
+ doctype?: string;
33
+ /** Values offered, in display order. */
34
+ options: readonly string[];
35
+ /** Names the rail for assistive tech. */
36
+ label: string;
37
+ /** The chip that clears the facet. */
38
+ allLabel?: string;
39
+ optionLabel?: (value: string) => string;
40
+ /** A theme hue per value (`"grass"`), painting its chip from that ramp. */
41
+ tint?: (value: string) => string | undefined;
42
+ /** Connection field that orders one record's values (a `slot`). */
43
+ orderBy?: string;
44
+ }
45
+ /** Narrow the list to records whose numeric field is at least a value. */
46
+ export interface FrappeListRange {
47
+ param: string;
48
+ field: string;
49
+ label: string;
50
+ step?: number;
51
+ }
52
+ export interface FrappeListControls {
53
+ sorts?: readonly FrappeListSort[];
54
+ facets?: readonly FrappeListFacet[];
55
+ ranges?: readonly FrappeListRange[];
56
+ views?: readonly FrappeListViewMode[];
57
+ defaultView?: FrappeListViewMode;
58
+ }
59
+ export interface FrappeListState {
60
+ search: string;
61
+ /** The chosen sort's value; the first sort when none was chosen. */
62
+ sort: string | undefined;
63
+ /** Facet param to the value it narrows to. */
64
+ facets: Record<string, string>;
65
+ /** Range param to its minimum; absent or 0 is no minimum. */
66
+ ranges: Record<string, number>;
67
+ favoritesOnly: boolean;
68
+ view: FrappeListViewMode | undefined;
69
+ }
70
+ export type FrappeListParams = Record<string, string | undefined>;
71
+ export type FrappeListFilter = [string, string, unknown] | [string, string, string, unknown];
72
+ export declare function listStateFromParams(params: FrappeListParams, controls: FrappeListControls): FrappeListState;
73
+ /** A state patch as the URL params it changes; a default value drops its param. */
74
+ export declare function listStateParams(patch: Partial<FrappeListState>, controls: FrappeListControls): FrappeListParams;
75
+ /** Search, a facet, a range or favorites narrows the rows. */
76
+ export declare function isListNarrowed(state: FrappeListState): boolean;
77
+ export interface ListStateFilterOptions {
78
+ /** Filters that always apply, ahead of the controls'. */
79
+ base?: readonly FrappeListFilter[];
80
+ /** The bench filters a search query becomes. */
81
+ search?: (query: string) => readonly FrappeListFilter[];
82
+ /** Starred names, for favorites only. */
83
+ favorites?: ReadonlySet<string>;
84
+ }
85
+ /** The bench filters the state describes, or undefined when nothing filters. */
86
+ export declare function listStateFilters(state: FrappeListState, controls: FrappeListControls, options?: ListStateFilterOptions): FrappeListFilter[] | undefined;
87
+ export declare function listStateOrderBy(state: FrappeListState, controls: FrappeListControls, fallback?: ReadonlyArray<{
88
+ field: string;
89
+ order: Order;
90
+ }>): ReadonlyArray<{
91
+ field: string;
92
+ order: Order;
93
+ }> | undefined;
94
+ //# sourceMappingURL=listState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listState.d.ts","sourceRoot":"","sources":["../../src/list/listState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,aAAa,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;CACzD;AAED,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,2EAA2E;IAC3E,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC7C,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAClC,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACtC,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,kBAAkB,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAO7F,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,kBAAkB,GAC3B,eAAe,CAuBjB;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,EAC/B,QAAQ,EAAE,kBAAkB,GAC3B,gBAAgB,CAiBlB;AAED,8DAA8D;AAC9D,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAO9D;AAED,MAAM,WAAW,sBAAsB;IACrC,yDAAyD;IACzD,IAAI,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,gDAAgD;IAChD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,gBAAgB,EAAE,CAAC;IACxD,yCAAyC;IACzC,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACjC;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,GAAE,sBAA2B,GACnC,gBAAgB,EAAE,GAAG,SAAS,CAiBhC;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC,GACxD,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC,GAAG,SAAS,CAG5D"}