@12-apps/ui 6.52.1 → 6.54.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 (298) hide show
  1. package/components-catalog.md +1 -1
  2. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +2 -1
  3. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.parts.js +9 -0
  4. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.parts.js.map +1 -0
  5. package/dist/_internal/components/data-display/Avatar/Avatar.js +3 -3
  6. package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
  7. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +7 -6
  8. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +7 -6
  9. package/dist/_internal/components/data-display/Chart/SpecChart.js +3 -3
  10. package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
  11. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +24 -24
  12. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +33 -32
  13. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +7 -6
  14. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +4 -4
  15. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +3 -3
  16. package/dist/_internal/components/data-display/DataViews/base-list-card.js +6 -6
  17. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +6 -6
  18. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +2 -2
  19. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +9 -9
  20. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +3 -3
  21. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +21 -21
  22. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +11 -11
  23. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +9 -9
  24. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +10 -10
  25. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
  26. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +6 -6
  27. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +9 -8
  28. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +5 -5
  29. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
  30. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
  31. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +4 -4
  32. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +3 -3
  33. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +2 -2
  34. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +5 -5
  35. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +2 -2
  36. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.hooks.js +3 -1
  37. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +2 -2
  38. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +3 -3
  39. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +2 -2
  40. package/dist/_internal/components/data-display/Progress/Progress.js +2 -2
  41. package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
  42. package/dist/_internal/components/data-display/Sheet/Sheet.js +4 -4
  43. package/dist/_internal/components/data-display/index.js +29 -28
  44. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +4 -3
  45. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +3 -2
  46. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +5 -4
  47. package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +4 -3
  48. package/dist/_internal/components/feedback/index.js +8 -7
  49. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +2 -2
  50. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +5 -5
  51. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
  52. package/dist/_internal/components/form/Calendar/Calendar.hooks.js +2 -2
  53. package/dist/_internal/components/form/Calendar/Calendar.js +3 -3
  54. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +1 -1
  55. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +4 -4
  56. package/dist/_internal/components/form/Command/Command.js +3 -3
  57. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +5 -5
  58. package/dist/_internal/components/form/UploadButton/UploadButton.js +2 -2
  59. package/dist/_internal/components/form/index.js +22 -22
  60. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +5 -5
  61. package/dist/_internal/components/form/total-form/Fields/index.js +9 -9
  62. package/dist/_internal/components/index.js +72 -70
  63. package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +2 -2
  64. package/dist/_internal/components/layout/SettingCard/SettingCard.js +9 -4
  65. package/dist/_internal/components/layout/SettingCard/SettingCard.metrics.js +1 -1
  66. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +3 -3
  67. package/dist/_internal/components/layout/SettingCard/SettingCard.styles.js +6 -2
  68. package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +63 -0
  69. package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js.map +1 -0
  70. package/dist/_internal/components/layout/SettingCard/SettingGrid.js +4 -4
  71. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +10 -5
  72. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +9 -4
  73. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +10 -5
  74. package/dist/_internal/components/layout/index.js +18 -13
  75. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +5 -5
  76. package/dist/_internal/components/navigation/index.js +5 -5
  77. package/dist/_internal/en-US.data-display.js +2 -2
  78. package/dist/_internal/en-US.layout.js +1 -1
  79. package/dist/_internal/pt-BR.data-display.js +2 -2
  80. package/dist/_internal/pt-BR.layout.js +1 -1
  81. package/dist/_internal/user-avatar/user-avatar.js +4 -4
  82. package/dist/charts.js +6 -6
  83. package/dist/{chunk-GXQDWHPN.js → chunk-2CJZLL5Y.js} +2 -2
  84. package/dist/{chunk-57VL5UX7.js → chunk-2JTZWQ25.js} +6 -4
  85. package/dist/chunk-2JTZWQ25.js.map +1 -0
  86. package/dist/{chunk-STTULW2K.js → chunk-2KVWOTEQ.js} +5 -5
  87. package/dist/{chunk-ISW5K72V.js → chunk-2ZRZTGWP.js} +5 -5
  88. package/dist/{chunk-QOLIBVGS.js → chunk-3CIIB74Y.js} +2 -2
  89. package/dist/{chunk-33L26P4J.js → chunk-3ZKGNEP2.js} +5 -3
  90. package/dist/{chunk-33L26P4J.js.map → chunk-3ZKGNEP2.js.map} +1 -1
  91. package/dist/{chunk-2OTBMU5Z.js → chunk-44LYXLW7.js} +7 -7
  92. package/dist/{chunk-OG6LYQ7C.js → chunk-4PFKMNLP.js} +8 -68
  93. package/dist/chunk-4PFKMNLP.js.map +1 -0
  94. package/dist/{chunk-LYVTJLCF.js → chunk-56JF5PZK.js} +4 -4
  95. package/dist/{chunk-5KGABAQB.js → chunk-5752357K.js} +4 -4
  96. package/dist/{chunk-SPZAEMGW.js → chunk-5WX6U34F.js} +4 -4
  97. package/dist/{chunk-QHXMNSOZ.js → chunk-6L6VXRLJ.js} +2 -2
  98. package/dist/{chunk-VVFASSFY.js → chunk-6VGB4OX2.js} +3 -3
  99. package/dist/{chunk-FRP7NM6X.js → chunk-6WZUKV55.js} +2 -2
  100. package/dist/{chunk-QEINKMMX.js → chunk-7C763T3K.js} +2 -2
  101. package/dist/{chunk-PARTZ7XI.js → chunk-7JKDB5J5.js} +4 -4
  102. package/dist/{chunk-G5XHAN56.js → chunk-7WWPKA7Y.js} +3 -3
  103. package/dist/{chunk-3U7WKBMH.js → chunk-AA2X5GOT.js} +5 -3
  104. package/dist/{chunk-3U7WKBMH.js.map → chunk-AA2X5GOT.js.map} +1 -1
  105. package/dist/{chunk-QYV7KLEN.js → chunk-ASGSC5UA.js} +5 -5
  106. package/dist/{chunk-7GQ2ZZBQ.js → chunk-BCTRC6AR.js} +2 -2
  107. package/dist/{chunk-XSHWEUDB.js → chunk-BE5Z36XZ.js} +4 -4
  108. package/dist/{chunk-IC7GHPMK.js → chunk-BFRVMCQM.js} +7 -2
  109. package/dist/chunk-BFRVMCQM.js.map +1 -0
  110. package/dist/{chunk-PM7SI4YT.js → chunk-BJOKL5PQ.js} +5 -5
  111. package/dist/{chunk-PGPPN63I.js → chunk-EMEXXAQI.js} +2 -2
  112. package/dist/{chunk-JUHNEYCH.js → chunk-GCH7CLM4.js} +2 -2
  113. package/dist/{chunk-R6SBP5M5.js → chunk-GOWBYHYW.js} +4 -4
  114. package/dist/{chunk-LZQQ4JXY.js → chunk-HGVPPJKE.js} +8 -8
  115. package/dist/{chunk-HCEJT65A.js → chunk-HKD4TDZP.js} +2 -2
  116. package/dist/{chunk-XNBX3M35.js → chunk-HLCEKWFS.js} +4 -4
  117. package/dist/{chunk-4MGFUPQT.js → chunk-HOJL2GKW.js} +4 -4
  118. package/dist/{chunk-V5ZLUJV7.js → chunk-HRMB72E4.js} +2 -2
  119. package/dist/{chunk-3GVMUASU.js → chunk-HV7HIMMY.js} +2 -2
  120. package/dist/{chunk-CSDVRHUX.js → chunk-HWBKMUMV.js} +4 -4
  121. package/dist/{chunk-KN3WYEH2.js → chunk-IA6F7DU6.js} +4 -4
  122. package/dist/{chunk-BE5FGUJS.js → chunk-IM5SR7G2.js} +2 -2
  123. package/dist/chunk-IQQX3NDO.js +96 -0
  124. package/dist/chunk-IQQX3NDO.js.map +1 -0
  125. package/dist/{chunk-PJVDIUT2.js → chunk-IRNKHHQM.js} +3 -3
  126. package/dist/{chunk-4XET5MWR.js → chunk-KKE4SHRS.js} +2 -2
  127. package/dist/{chunk-ZTTFLIPH.js → chunk-L624DFJV.js} +2 -2
  128. package/dist/{chunk-OYT7YXQL.js → chunk-MGPN5TZE.js} +5 -5
  129. package/dist/{chunk-ERY6D2OV.js → chunk-MWPXKZ7O.js} +4 -4
  130. package/dist/{chunk-SCCE6VWY.js → chunk-N2Z7NHD5.js} +2 -2
  131. package/dist/chunk-N4R6T5K7.js +95 -0
  132. package/dist/chunk-N4R6T5K7.js.map +1 -0
  133. package/dist/{chunk-GNHXFJRR.js → chunk-N6EEY7V3.js} +2 -2
  134. package/dist/{chunk-OEBHWQSX.js → chunk-OESAYTNG.js} +9 -4
  135. package/dist/chunk-OESAYTNG.js.map +1 -0
  136. package/dist/{chunk-4WCDMCIS.js → chunk-PI3GPLE2.js} +2 -2
  137. package/dist/{chunk-XAUKQZJK.js → chunk-QX4LMVL2.js} +2 -2
  138. package/dist/{chunk-S5UY5U73.js → chunk-QYJ25FWM.js} +20 -2
  139. package/dist/{chunk-S5UY5U73.js.map → chunk-QYJ25FWM.js.map} +1 -1
  140. package/dist/{chunk-6PYX6V3R.js → chunk-RJXVVLBO.js} +4 -4
  141. package/dist/{chunk-FRCBJLV5.js → chunk-RKKYSSAV.js} +5 -5
  142. package/dist/{chunk-WF7BZT6V.js → chunk-RR6BIHFX.js} +2 -2
  143. package/dist/{chunk-NGAU6PNB.js → chunk-RRVQVQF7.js} +5 -5
  144. package/dist/{chunk-FWPFCK4D.js → chunk-S6G3CJFP.js} +2 -2
  145. package/dist/{chunk-F33YKDO2.js → chunk-TEST2NBS.js} +5 -5
  146. package/dist/{chunk-BJZOBG24.js → chunk-UJHXEOU3.js} +2 -2
  147. package/dist/{chunk-NKJSYZEU.js → chunk-V32626FV.js} +4 -4
  148. package/dist/{chunk-MLDA44NW.js → chunk-VGXSPUTD.js} +3 -3
  149. package/dist/{chunk-U4QUDFPJ.js → chunk-VKVOP4OK.js} +2 -2
  150. package/dist/{chunk-CTXF22BU.js → chunk-VODKYDC4.js} +5 -5
  151. package/dist/{chunk-DWJH3KXN.js → chunk-WAKGVAOB.js} +4 -4
  152. package/dist/{chunk-3DO5AJCG.js → chunk-WE2LNTR6.js} +12 -5
  153. package/dist/chunk-WE2LNTR6.js.map +1 -0
  154. package/dist/{chunk-SZA44EFA.js → chunk-WOEVBEGJ.js} +4 -4
  155. package/dist/{chunk-EOTV5BLM.js → chunk-WOP2DRMC.js} +2 -2
  156. package/dist/{chunk-E6JRPGMN.js → chunk-X3DVZNZH.js} +2 -2
  157. package/dist/{chunk-MLQYIJTO.js → chunk-XM7QCNZQ.js} +9 -3
  158. package/dist/chunk-XM7QCNZQ.js.map +1 -0
  159. package/dist/{chunk-P35CTP6L.js → chunk-Y3WB66XT.js} +7 -7
  160. package/dist/{chunk-DI46ZEWP.js → chunk-Y5QDXG5N.js} +20 -4
  161. package/dist/chunk-Y5QDXG5N.js.map +1 -0
  162. package/dist/{chunk-TNQDSTIA.js → chunk-Y6C4MYZE.js} +7 -7
  163. package/dist/{chunk-TBZKUZNW.js → chunk-ZPWU7Z6O.js} +3 -3
  164. package/dist/{chunk-QQSRZUT4.js → chunk-ZXEDKRRT.js} +4 -4
  165. package/dist/data-display/AlertDialog.js +2 -1
  166. package/dist/data-display/Avatar.js +3 -3
  167. package/dist/data-display/CardKit.js +14 -13
  168. package/dist/data-display/Chart.js +6 -6
  169. package/dist/data-display/DataViews.js +42 -41
  170. package/dist/data-display/FleetMap.js +5 -5
  171. package/dist/data-display/HoverCard.js +2 -2
  172. package/dist/data-display/InteractiveTooltip.js +2 -2
  173. package/dist/data-display/Lightbox.js +3 -3
  174. package/dist/data-display/MapPreview.js +2 -2
  175. package/dist/data-display/Progress.js +2 -2
  176. package/dist/data-display/Sheet.js +4 -4
  177. package/dist/en-US.js +2 -2
  178. package/dist/feedback/ConfirmAction.js +8 -7
  179. package/dist/form/AddressAutocomplete.js +5 -5
  180. package/dist/form/Autocomplete.js +2 -2
  181. package/dist/form/Calendar.js +3 -3
  182. package/dist/form/CategorySelect.js +4 -4
  183. package/dist/form/Command.js +3 -3
  184. package/dist/form/DateRangePicker.js +10 -10
  185. package/dist/form/UploadButton.js +2 -2
  186. package/dist/form/total-form.js +7 -7
  187. package/dist/layout/ContentToolbar.js +3 -3
  188. package/dist/layout/ScrollArea.js +2 -2
  189. package/dist/layout/SettingCard.js +13 -8
  190. package/dist/locales.js +4 -4
  191. package/dist/navigation/AppHeader.js +5 -5
  192. package/dist/pt-BR.js +2 -2
  193. package/dist/types/components/data-display/AlertDialog/AlertDialog.d.ts.map +1 -1
  194. package/dist/types/components/data-display/AlertDialog/AlertDialog.parts.d.ts +13 -0
  195. package/dist/types/components/data-display/AlertDialog/AlertDialog.parts.d.ts.map +1 -0
  196. package/dist/types/components/data-display/AlertDialog/AlertDialog.types.d.ts +16 -3
  197. package/dist/types/components/data-display/AlertDialog/AlertDialog.types.d.ts.map +1 -1
  198. package/dist/types/components/data-display/InteractiveTooltip/InteractiveTooltip.d.ts.map +1 -1
  199. package/dist/types/components/data-display/InteractiveTooltip/InteractiveTooltip.hooks.d.ts +18 -0
  200. package/dist/types/components/data-display/InteractiveTooltip/InteractiveTooltip.hooks.d.ts.map +1 -1
  201. package/dist/types/components/layout/SettingCard/SettingCard.d.ts.map +1 -1
  202. package/dist/types/components/layout/SettingCard/SettingCard.metrics.d.ts +5 -0
  203. package/dist/types/components/layout/SettingCard/SettingCard.metrics.d.ts.map +1 -1
  204. package/dist/types/components/layout/SettingCard/SettingCard.parts.d.ts +2 -0
  205. package/dist/types/components/layout/SettingCard/SettingCard.parts.d.ts.map +1 -1
  206. package/dist/types/components/layout/SettingCard/SettingCard.styles.d.ts +9 -2
  207. package/dist/types/components/layout/SettingCard/SettingCard.styles.d.ts.map +1 -1
  208. package/dist/types/components/layout/SettingCard/SettingCard.summary.d.ts +33 -0
  209. package/dist/types/components/layout/SettingCard/SettingCard.summary.d.ts.map +1 -0
  210. package/dist/types/components/layout/SettingCard/SettingSwitch.d.ts.map +1 -1
  211. package/dist/types/copy/layout.d.ts +8 -0
  212. package/dist/types/copy/layout.d.ts.map +1 -1
  213. package/dist/types/en-US.layout.d.ts.map +1 -1
  214. package/dist/types/pt-BR.layout.d.ts.map +1 -1
  215. package/dist/user-avatar.js +4 -4
  216. package/package.json +1 -1
  217. package/src/components/data-display/AlertDialog/AlertDialog.md +30 -0
  218. package/src/components/data-display/AlertDialog/AlertDialog.parts.tsx +180 -0
  219. package/src/components/data-display/AlertDialog/AlertDialog.tsx +5 -85
  220. package/src/components/data-display/AlertDialog/AlertDialog.types.ts +17 -3
  221. package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.hooks.ts +36 -0
  222. package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.tsx +7 -2
  223. package/src/components/layout/SettingCard/SettingCard.md +1 -1
  224. package/src/components/layout/SettingCard/SettingCard.metrics.ts +5 -0
  225. package/src/components/layout/SettingCard/SettingCard.parts.tsx +4 -0
  226. package/src/components/layout/SettingCard/SettingCard.styles.ts +17 -5
  227. package/src/components/layout/SettingCard/SettingCard.summary.tsx +100 -0
  228. package/src/components/layout/SettingCard/SettingCard.tsx +6 -2
  229. package/src/components/layout/SettingCard/SettingSwitch.tsx +11 -2
  230. package/src/components/layout/SettingCard/SettingToggle.md +1 -1
  231. package/src/copy/layout.ts +8 -0
  232. package/src/en-US.layout.ts +2 -0
  233. package/src/pt-BR.layout.ts +2 -0
  234. package/dist/chunk-3DO5AJCG.js.map +0 -1
  235. package/dist/chunk-57VL5UX7.js.map +0 -1
  236. package/dist/chunk-DI46ZEWP.js.map +0 -1
  237. package/dist/chunk-IC7GHPMK.js.map +0 -1
  238. package/dist/chunk-MLQYIJTO.js.map +0 -1
  239. package/dist/chunk-OEBHWQSX.js.map +0 -1
  240. package/dist/chunk-OG6LYQ7C.js.map +0 -1
  241. /package/dist/{chunk-GXQDWHPN.js.map → chunk-2CJZLL5Y.js.map} +0 -0
  242. /package/dist/{chunk-STTULW2K.js.map → chunk-2KVWOTEQ.js.map} +0 -0
  243. /package/dist/{chunk-ISW5K72V.js.map → chunk-2ZRZTGWP.js.map} +0 -0
  244. /package/dist/{chunk-QOLIBVGS.js.map → chunk-3CIIB74Y.js.map} +0 -0
  245. /package/dist/{chunk-2OTBMU5Z.js.map → chunk-44LYXLW7.js.map} +0 -0
  246. /package/dist/{chunk-LYVTJLCF.js.map → chunk-56JF5PZK.js.map} +0 -0
  247. /package/dist/{chunk-5KGABAQB.js.map → chunk-5752357K.js.map} +0 -0
  248. /package/dist/{chunk-SPZAEMGW.js.map → chunk-5WX6U34F.js.map} +0 -0
  249. /package/dist/{chunk-QHXMNSOZ.js.map → chunk-6L6VXRLJ.js.map} +0 -0
  250. /package/dist/{chunk-VVFASSFY.js.map → chunk-6VGB4OX2.js.map} +0 -0
  251. /package/dist/{chunk-FRP7NM6X.js.map → chunk-6WZUKV55.js.map} +0 -0
  252. /package/dist/{chunk-QEINKMMX.js.map → chunk-7C763T3K.js.map} +0 -0
  253. /package/dist/{chunk-PARTZ7XI.js.map → chunk-7JKDB5J5.js.map} +0 -0
  254. /package/dist/{chunk-G5XHAN56.js.map → chunk-7WWPKA7Y.js.map} +0 -0
  255. /package/dist/{chunk-QYV7KLEN.js.map → chunk-ASGSC5UA.js.map} +0 -0
  256. /package/dist/{chunk-7GQ2ZZBQ.js.map → chunk-BCTRC6AR.js.map} +0 -0
  257. /package/dist/{chunk-XSHWEUDB.js.map → chunk-BE5Z36XZ.js.map} +0 -0
  258. /package/dist/{chunk-PM7SI4YT.js.map → chunk-BJOKL5PQ.js.map} +0 -0
  259. /package/dist/{chunk-PGPPN63I.js.map → chunk-EMEXXAQI.js.map} +0 -0
  260. /package/dist/{chunk-JUHNEYCH.js.map → chunk-GCH7CLM4.js.map} +0 -0
  261. /package/dist/{chunk-R6SBP5M5.js.map → chunk-GOWBYHYW.js.map} +0 -0
  262. /package/dist/{chunk-LZQQ4JXY.js.map → chunk-HGVPPJKE.js.map} +0 -0
  263. /package/dist/{chunk-HCEJT65A.js.map → chunk-HKD4TDZP.js.map} +0 -0
  264. /package/dist/{chunk-XNBX3M35.js.map → chunk-HLCEKWFS.js.map} +0 -0
  265. /package/dist/{chunk-4MGFUPQT.js.map → chunk-HOJL2GKW.js.map} +0 -0
  266. /package/dist/{chunk-V5ZLUJV7.js.map → chunk-HRMB72E4.js.map} +0 -0
  267. /package/dist/{chunk-3GVMUASU.js.map → chunk-HV7HIMMY.js.map} +0 -0
  268. /package/dist/{chunk-CSDVRHUX.js.map → chunk-HWBKMUMV.js.map} +0 -0
  269. /package/dist/{chunk-KN3WYEH2.js.map → chunk-IA6F7DU6.js.map} +0 -0
  270. /package/dist/{chunk-BE5FGUJS.js.map → chunk-IM5SR7G2.js.map} +0 -0
  271. /package/dist/{chunk-PJVDIUT2.js.map → chunk-IRNKHHQM.js.map} +0 -0
  272. /package/dist/{chunk-4XET5MWR.js.map → chunk-KKE4SHRS.js.map} +0 -0
  273. /package/dist/{chunk-ZTTFLIPH.js.map → chunk-L624DFJV.js.map} +0 -0
  274. /package/dist/{chunk-OYT7YXQL.js.map → chunk-MGPN5TZE.js.map} +0 -0
  275. /package/dist/{chunk-ERY6D2OV.js.map → chunk-MWPXKZ7O.js.map} +0 -0
  276. /package/dist/{chunk-SCCE6VWY.js.map → chunk-N2Z7NHD5.js.map} +0 -0
  277. /package/dist/{chunk-GNHXFJRR.js.map → chunk-N6EEY7V3.js.map} +0 -0
  278. /package/dist/{chunk-4WCDMCIS.js.map → chunk-PI3GPLE2.js.map} +0 -0
  279. /package/dist/{chunk-XAUKQZJK.js.map → chunk-QX4LMVL2.js.map} +0 -0
  280. /package/dist/{chunk-6PYX6V3R.js.map → chunk-RJXVVLBO.js.map} +0 -0
  281. /package/dist/{chunk-FRCBJLV5.js.map → chunk-RKKYSSAV.js.map} +0 -0
  282. /package/dist/{chunk-WF7BZT6V.js.map → chunk-RR6BIHFX.js.map} +0 -0
  283. /package/dist/{chunk-NGAU6PNB.js.map → chunk-RRVQVQF7.js.map} +0 -0
  284. /package/dist/{chunk-FWPFCK4D.js.map → chunk-S6G3CJFP.js.map} +0 -0
  285. /package/dist/{chunk-F33YKDO2.js.map → chunk-TEST2NBS.js.map} +0 -0
  286. /package/dist/{chunk-BJZOBG24.js.map → chunk-UJHXEOU3.js.map} +0 -0
  287. /package/dist/{chunk-NKJSYZEU.js.map → chunk-V32626FV.js.map} +0 -0
  288. /package/dist/{chunk-MLDA44NW.js.map → chunk-VGXSPUTD.js.map} +0 -0
  289. /package/dist/{chunk-U4QUDFPJ.js.map → chunk-VKVOP4OK.js.map} +0 -0
  290. /package/dist/{chunk-CTXF22BU.js.map → chunk-VODKYDC4.js.map} +0 -0
  291. /package/dist/{chunk-DWJH3KXN.js.map → chunk-WAKGVAOB.js.map} +0 -0
  292. /package/dist/{chunk-SZA44EFA.js.map → chunk-WOEVBEGJ.js.map} +0 -0
  293. /package/dist/{chunk-EOTV5BLM.js.map → chunk-WOP2DRMC.js.map} +0 -0
  294. /package/dist/{chunk-E6JRPGMN.js.map → chunk-X3DVZNZH.js.map} +0 -0
  295. /package/dist/{chunk-P35CTP6L.js.map → chunk-Y3WB66XT.js.map} +0 -0
  296. /package/dist/{chunk-TNQDSTIA.js.map → chunk-Y6C4MYZE.js.map} +0 -0
  297. /package/dist/{chunk-TBZKUZNW.js.map → chunk-ZPWU7Z6O.js.map} +0 -0
  298. /package/dist/{chunk-QQSRZUT4.js.map → chunk-ZXEDKRRT.js.map} +0 -0
@@ -1,3 +1,6 @@
1
+ import {
2
+ ToggleField
3
+ } from "./chunk-LYNZ3XAJ.js";
1
4
  import {
2
5
  TextField
3
6
  } from "./chunk-QJUOWOE4.js";
@@ -9,10 +12,7 @@ import {
9
12
  } from "./chunk-QIUDYFKA.js";
10
13
  import {
11
14
  CategoryField
12
- } from "./chunk-7GQ2ZZBQ.js";
13
- import {
14
- ToggleField
15
- } from "./chunk-LYNZ3XAJ.js";
15
+ } from "./chunk-BCTRC6AR.js";
16
16
  import {
17
17
  __export
18
18
  } from "./chunk-PZ5AY32C.js";
@@ -30,4 +30,4 @@ __export(Fields_exports, {
30
30
  export {
31
31
  Fields_exports
32
32
  };
33
- //# sourceMappingURL=chunk-OYT7YXQL.js.map
33
+ //# sourceMappingURL=chunk-MGPN5TZE.js.map
@@ -4,12 +4,12 @@ import {
4
4
  import {
5
5
  ScrollViewport
6
6
  } from "./chunk-BAZXVFLR.js";
7
- import {
8
- ScrollAreaContent
9
- } from "./chunk-4VMFS3VJ.js";
10
7
  import {
11
8
  sizeCss
12
9
  } from "./chunk-I7GSRTGQ.js";
10
+ import {
11
+ ScrollAreaContent
12
+ } from "./chunk-4VMFS3VJ.js";
13
13
  import {
14
14
  rem,
15
15
  remPx,
@@ -249,4 +249,4 @@ var ScrollArea = (componentProps) => {
249
249
  export {
250
250
  ScrollArea
251
251
  };
252
- //# sourceMappingURL=chunk-ERY6D2OV.js.map
252
+ //# sourceMappingURL=chunk-MWPXKZ7O.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  FleetCanvas
3
- } from "./chunk-WF7BZT6V.js";
3
+ } from "./chunk-RR6BIHFX.js";
4
4
  import {
5
5
  FleetRoster
6
6
  } from "./chunk-5JCGBCFJ.js";
@@ -79,4 +79,4 @@ function FleetBody({
79
79
  export {
80
80
  FleetBody
81
81
  };
82
- //# sourceMappingURL=chunk-SCCE6VWY.js.map
82
+ //# sourceMappingURL=chunk-N2Z7NHD5.js.map
@@ -0,0 +1,95 @@
1
+ import {
2
+ partTestId
3
+ } from "./chunk-2JTZWQ25.js";
4
+ import {
5
+ SETTING_CARD
6
+ } from "./chunk-BFRVMCQM.js";
7
+ import {
8
+ InteractiveTooltip
9
+ } from "./chunk-XM7QCNZQ.js";
10
+ import {
11
+ Icon
12
+ } from "./chunk-VEHMODO3.js";
13
+ import {
14
+ rem
15
+ } from "./chunk-YKCAJ2TN.js";
16
+
17
+ // src/components/layout/SettingCard/SettingCard.summary.tsx
18
+ import Box from "@mui/material/Box/index.js";
19
+ import { useTheme } from "@mui/material/styles/index.js";
20
+ import { useCallback, useLayoutEffect, useState } from "react";
21
+ import { jsx } from "react/jsx-runtime";
22
+ var useClamped = (content) => {
23
+ const [node, setNode] = useState(null);
24
+ const [clamped, setClamped] = useState(false);
25
+ const ref = useCallback((next) => setNode(next), []);
26
+ useLayoutEffect(() => {
27
+ if (!node) return void 0;
28
+ const measure = () => setClamped(node.scrollHeight > node.clientHeight + 1);
29
+ measure();
30
+ if (typeof ResizeObserver === "undefined") return void 0;
31
+ const observer = new ResizeObserver(measure);
32
+ observer.observe(node);
33
+ return () => observer.disconnect();
34
+ }, [node, content]);
35
+ return { ref, clamped };
36
+ };
37
+ var SummaryInfo = ({
38
+ label,
39
+ summary,
40
+ dataTestId
41
+ }) => {
42
+ const theme = useTheme();
43
+ return /* @__PURE__ */ jsx(
44
+ InteractiveTooltip,
45
+ {
46
+ variant: "light",
47
+ size: "sm",
48
+ maxWidth: SETTING_CARD.infoMaxWidth,
49
+ hoverContent: summary,
50
+ pinnedContent: summary,
51
+ dataTestId: partTestId(dataTestId, "info"),
52
+ children: /* @__PURE__ */ jsx(
53
+ Box,
54
+ {
55
+ component: "button",
56
+ type: "button",
57
+ "aria-label": label,
58
+ sx: {
59
+ display: "inline-flex",
60
+ alignItems: "center",
61
+ justifyContent: "center",
62
+ padding: 0,
63
+ border: 0,
64
+ background: "none",
65
+ color: theme.palette.text.secondary,
66
+ cursor: "pointer",
67
+ borderRadius: "50%",
68
+ "&:focus-visible": {
69
+ outline: `${rem(theme, SETTING_CARD.infoFocusRingWidth)} solid ${theme.palette.primary.main}`,
70
+ outlineOffset: rem(theme, SETTING_CARD.infoFocusRingOffset)
71
+ }
72
+ },
73
+ children: /* @__PURE__ */ jsx(Icon, { name: "InfoOutlined", size: "xs" })
74
+ }
75
+ )
76
+ }
77
+ );
78
+ };
79
+ var useSummaryInfo = ({
80
+ summary,
81
+ show = true,
82
+ label,
83
+ dataTestId
84
+ }) => {
85
+ const { ref, clamped } = useClamped(summary);
86
+ const visible = show && clamped && summary != null;
87
+ return { ref, info: visible ? /* @__PURE__ */ jsx(SummaryInfo, { label, summary, dataTestId }) : null };
88
+ };
89
+
90
+ export {
91
+ useClamped,
92
+ SummaryInfo,
93
+ useSummaryInfo
94
+ };
95
+ //# sourceMappingURL=chunk-N4R6T5K7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/layout/SettingCard/SettingCard.summary.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport React, { useCallback, useLayoutEffect, useState } from 'react';\n\nimport { Icon } from '../../../icons';\nimport { rem } from '../../../tokens/relative';\nimport { InteractiveTooltip } from '../../data-display/InteractiveTooltip';\n\nimport { SETTING_CARD } from './SettingCard.metrics';\nimport { partTestId } from './SettingCard.parts';\n\n/**\n * Whether a clamped element is hiding text — measured, never guessed from the\n * string's length, because what fits depends on the width the card is GIVEN.\n * Re-measured whenever the element resizes, so a card that widens drops its [i].\n */\nexport const useClamped = (content?: unknown): { ref: (node: HTMLElement | null) => void; clamped: boolean } => {\n const [node, setNode] = useState<HTMLElement | null>(null);\n const [clamped, setClamped] = useState(false);\n const ref = useCallback((next: HTMLElement | null) => setNode(next), []);\n\n useLayoutEffect(() => {\n if (!node) return undefined;\n const measure = (): void => setClamped(node.scrollHeight > node.clientHeight + 1);\n measure();\n if (typeof ResizeObserver === 'undefined') return undefined;\n const observer = new ResizeObserver(measure);\n observer.observe(node);\n return () => observer.disconnect();\n // `content` too: a summary that grows from two lines to three inside the\n // same clamped height fires no resize, so the text changing re-measures.\n }, [node, content]);\n\n return { ref, clamped };\n};\n\n/**\n * The [i] beside a card's title while its summary is cut: hover shows the whole\n * text, a click or tap pins it — so it works on a phone, where there is no hover.\n */\nexport const SummaryInfo: React.FC<{ label: string; summary: React.ReactNode; dataTestId?: string }> = ({\n label,\n summary,\n dataTestId,\n}) => {\n const theme = useTheme();\n return (\n <InteractiveTooltip\n variant=\"light\"\n size=\"sm\"\n maxWidth={SETTING_CARD.infoMaxWidth}\n hoverContent={summary}\n pinnedContent={summary}\n dataTestId={partTestId(dataTestId, 'info')}\n >\n <Box\n component=\"button\"\n type=\"button\"\n aria-label={label}\n sx={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 0,\n border: 0,\n background: 'none',\n color: theme.palette.text.secondary,\n cursor: 'pointer',\n borderRadius: '50%',\n '&:focus-visible': {\n outline: `${rem(theme, SETTING_CARD.infoFocusRingWidth)} solid ${theme.palette.primary.main}`,\n outlineOffset: rem(theme, SETTING_CARD.infoFocusRingOffset),\n },\n }}\n >\n <Icon name=\"InfoOutlined\" size=\"xs\" />\n </Box>\n </InteractiveTooltip>\n );\n};\n\n/**\n * The summary's measuring ref, and the [i] for the header while it is cut —\n * `null` when there is no summary, it fits, or `show` is false (an open card).\n */\nexport const useSummaryInfo = ({\n summary,\n show = true,\n label,\n dataTestId,\n}: {\n summary: React.ReactNode;\n show?: boolean;\n label: string;\n dataTestId?: string;\n}): { ref: (node: HTMLElement | null) => void; info: React.ReactNode } => {\n const { ref, clamped } = useClamped(summary);\n const visible = show && clamped && summary != null;\n return { ref, info: visible ? <SummaryInfo label={label} summary={summary} dataTestId={dataTestId} /> : null };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,OAAO,SAAS;AAChB,SAAS,gBAAgB;AACzB,SAAgB,aAAa,iBAAiB,gBAAgB;AAyEtD;AA3DD,IAAM,aAAa,CAAC,YAAqF;AAC9G,QAAM,CAAC,MAAM,OAAO,IAAI,SAA6B,IAAI;AACzD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,MAAM,YAAY,CAAC,SAA6B,QAAQ,IAAI,GAAG,CAAC,CAAC;AAEvE,kBAAgB,MAAM;AACpB,QAAI,CAAC,KAAM,QAAO;AAClB,UAAM,UAAU,MAAY,WAAW,KAAK,eAAe,KAAK,eAAe,CAAC;AAChF,YAAQ;AACR,QAAI,OAAO,mBAAmB,YAAa,QAAO;AAClD,UAAM,WAAW,IAAI,eAAe,OAAO;AAC3C,aAAS,QAAQ,IAAI;AACrB,WAAO,MAAM,SAAS,WAAW;AAAA,EAGnC,GAAG,CAAC,MAAM,OAAO,CAAC;AAElB,SAAO,EAAE,KAAK,QAAQ;AACxB;AAMO,IAAM,cAA0F,CAAC;AAAA,EACtG;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,QAAQ,SAAS;AACvB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,UAAU,aAAa;AAAA,MACvB,cAAc;AAAA,MACd,eAAe;AAAA,MACf,YAAY,WAAW,YAAY,MAAM;AAAA,MAEzC;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,MAAK;AAAA,UACL,cAAY;AAAA,UACZ,IAAI;AAAA,YACF,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,gBAAgB;AAAA,YAChB,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,YAAY;AAAA,YACZ,OAAO,MAAM,QAAQ,KAAK;AAAA,YAC1B,QAAQ;AAAA,YACR,cAAc;AAAA,YACd,mBAAmB;AAAA,cACjB,SAAS,GAAG,IAAI,OAAO,aAAa,kBAAkB,CAAC,UAAU,MAAM,QAAQ,QAAQ,IAAI;AAAA,cAC3F,eAAe,IAAI,OAAO,aAAa,mBAAmB;AAAA,YAC5D;AAAA,UACF;AAAA,UAEA,8BAAC,QAAK,MAAK,gBAAe,MAAK,MAAK;AAAA;AAAA,MACtC;AAAA;AAAA,EACF;AAEJ;AAMO,IAAM,iBAAiB,CAAC;AAAA,EAC7B;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AACF,MAK0E;AACxE,QAAM,EAAE,KAAK,QAAQ,IAAI,WAAW,OAAO;AAC3C,QAAM,UAAU,QAAQ,WAAW,WAAW;AAC9C,SAAO,EAAE,KAAK,MAAM,UAAU,oBAAC,eAAY,OAAc,SAAkB,YAAwB,IAAK,KAAK;AAC/G;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RAIL_GAP_PX
3
- } from "./chunk-XSHWEUDB.js";
3
+ } from "./chunk-BE5Z36XZ.js";
4
4
  import {
5
5
  DescriptionItem
6
6
  } from "./chunk-G6ZPQHBL.js";
@@ -226,4 +226,4 @@ export {
226
226
  ListCardActions,
227
227
  ListCardTail
228
228
  };
229
- //# sourceMappingURL=chunk-GNHXFJRR.js.map
229
+ //# sourceMappingURL=chunk-N6EEY7V3.js.map
@@ -1,20 +1,23 @@
1
1
  import {
2
2
  useSettingCard
3
3
  } from "./chunk-SALQ65SM.js";
4
+ import {
5
+ useSummaryInfo
6
+ } from "./chunk-N4R6T5K7.js";
4
7
  import {
5
8
  LearnMore,
6
9
  PendingSpinner,
7
10
  SaveError,
8
11
  SettingHeader,
9
12
  partTestId
10
- } from "./chunk-57VL5UX7.js";
13
+ } from "./chunk-2JTZWQ25.js";
11
14
  import {
12
15
  SETTING_CARD_OPEN_ATTR,
13
16
  actionsStyles,
14
17
  summaryStyles,
15
18
  surfaceStyles,
16
19
  withCallerSx
17
- } from "./chunk-3DO5AJCG.js";
20
+ } from "./chunk-WE2LNTR6.js";
18
21
  import {
19
22
  Icon
20
23
  } from "./chunk-VEHMODO3.js";
@@ -102,6 +105,7 @@ var SettingCard = forwardRef(function SettingCard2(props, ref) {
102
105
  const titleId = `${baseId}-title`;
103
106
  const card = useSettingCard(props);
104
107
  const { open } = card;
108
+ const clamp = useSummaryInfo({ summary, show: !open, label: copy.moreInfo ?? title, dataTestId });
105
109
  return /* @__PURE__ */ jsxs(
106
110
  Box,
107
111
  {
@@ -123,6 +127,7 @@ var SettingCard = forwardRef(function SettingCard2(props, ref) {
123
127
  headingLevel,
124
128
  icon,
125
129
  status,
130
+ info: clamp.info,
126
131
  trailing: open ? null : /* @__PURE__ */ jsx(
127
132
  EditTrigger,
128
133
  {
@@ -138,7 +143,7 @@ var SettingCard = forwardRef(function SettingCard2(props, ref) {
138
143
  dataTestId
139
144
  }
140
145
  ),
141
- !open && summary != null && /* @__PURE__ */ jsx(Box, { component: "p", sx: summaryStyles, "data-testid": partTestId(dataTestId, "summary"), children: summary }),
146
+ !open && summary != null && /* @__PURE__ */ jsx(Box, { component: "p", ref: clamp.ref, sx: summaryStyles, "data-testid": partTestId(dataTestId, "summary"), children: summary }),
142
147
  open && /* @__PURE__ */ jsx(
143
148
  OpenBody,
144
149
  {
@@ -165,4 +170,4 @@ SettingCard.displayName = "SettingCard";
165
170
  export {
166
171
  SettingCard
167
172
  };
168
- //# sourceMappingURL=chunk-OEBHWQSX.js.map
173
+ //# sourceMappingURL=chunk-OESAYTNG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/layout/SettingCard/SettingCard.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport React, { forwardRef, useId } from 'react';\n\nimport { Icon } from '../../../icons';\nimport { Button } from '../../form/Button';\n\nimport { useSettingCard } from './SettingCard.hooks';\nimport { LearnMore, PendingSpinner, SaveError, SettingHeader, partTestId } from './SettingCard.parts';\nimport { SETTING_CARD_OPEN_ATTR, actionsStyles, summaryStyles, surfaceStyles, withCallerSx } from './SettingCard.styles';\nimport { useSummaryInfo } from './SettingCard.summary';\nimport type { SettingCardCopy, SettingCardProps } from './SettingCard.types';\n\ninterface OpenBodyProps {\n bodyRef: React.RefObject<HTMLDivElement | null>;\n titleId: string;\n errorId: string;\n copy: SettingCardCopy;\n learnMore?: React.ReactNode;\n children: React.ReactNode;\n saving: boolean;\n error: string | null;\n saveDisabled: boolean;\n onSave: () => void;\n onCancel: () => void;\n dataTestId?: string;\n}\n\n/**\n * The open card: the host's form, the disclosure, the failure line, and the\n * two actions.\n *\n * Save is NOT `disabled` while it saves — it is `aria-disabled` and ignores\n * the click. A disabled button drops the focus it holds, so a keyboard user\n * who pressed Save would land on `<body>` and, if the save then failed, have\n * to find their way back to the form from the top of the page.\n */\nconst OpenBody: React.FC<OpenBodyProps> = ({\n bodyRef, titleId, errorId, copy, learnMore, children, saving, error, saveDisabled, onSave, onCancel, dataTestId,\n}) => {\n const onKeyDown = (event: React.KeyboardEvent) => {\n if (event.key !== 'Escape') return;\n event.stopPropagation();\n onCancel();\n };\n\n return (\n <Box\n ref={bodyRef}\n role=\"group\"\n aria-labelledby={titleId}\n onKeyDown={onKeyDown}\n sx={{ display: 'flex', flexDirection: 'column', gap: 2, flex: 1 }}\n data-testid={partTestId(dataTestId, 'body')}\n >\n <Box>{children}</Box>\n {learnMore && (\n <LearnMore label={copy.learnMore} dataTestId={dataTestId}>\n {learnMore}\n </LearnMore>\n )}\n <SaveError id={errorId} message={error} dataTestId={dataTestId} />\n <Box sx={(theme) => actionsStyles(theme)}>\n <Button variant=\"ghost\" color=\"neutral\" onClick={onCancel} disabled={saving} dataTestId={partTestId(dataTestId, 'cancel')}>\n {copy.cancel}\n </Button>\n <Button\n variant=\"solid\"\n onClick={onSave}\n disabled={saveDisabled}\n aria-disabled={saving || undefined}\n aria-describedby={error ? errorId : undefined}\n icon={saving ? <PendingSpinner dataTestId={dataTestId} /> : undefined}\n iconPosition=\"left\"\n dataTestId={partTestId(dataTestId, 'save')}\n >\n {saving ? copy.saving : copy.save}\n </Button>\n </Box>\n </Box>\n );\n};\n\n/**\n * A setting, summarised while closed and edited in place.\n *\n * Closed: title, status pill, a summary of at most two lines (an [i] beside the\n * title holds the rest) and Edit. Edit opens the card\n * where it is — no dialog, no route — around the host's form, a \"learn more\"\n * disclosure and Cancel / Save. Save may be async: the card holds its saving\n * state while the promise is pending, closes when it resolves, and stays open\n * with the error when it rejects. Focus moves into the card as it opens and\n * back to Edit as it closes.\n */\ninterface EditTriggerProps {\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n id: string;\n titleId: string;\n label: string;\n disabled: boolean;\n onOpen: () => void;\n dataTestId?: string;\n}\n\n/** Edit. Its accessible name is \"Edit\" AND the card's title, so a grid of them is not a list of \"Edit, Edit, Edit\". */\nconst EditTrigger: React.FC<EditTriggerProps> = ({ triggerRef, id, titleId, label, disabled, onOpen, dataTestId }) => (\n <Button\n ref={triggerRef}\n id={id}\n variant=\"outline\"\n color=\"neutral\"\n size=\"sm\"\n icon={<Icon name=\"Edit\" size=\"xs\" />}\n iconPosition=\"left\"\n disabled={disabled}\n aria-labelledby={`${id} ${titleId}`}\n onClick={onOpen}\n dataTestId={partTestId(dataTestId, 'edit')}\n >\n {label}\n </Button>\n);\n\n/**\n * A setting, summarised while closed and edited in place.\n *\n * Closed: title, status pill, a one-line summary and Edit. Edit opens the card\n * where it is — no dialog, no route — around the host's form, a \"learn more\"\n * disclosure and Cancel / Save. Save may be async: the card holds its saving\n * state while the promise is pending, closes when it resolves, and stays open\n * with the error when it rejects. Focus moves into the card as it opens and\n * back to Edit as it closes.\n */\nexport const SettingCard = forwardRef<HTMLElement, SettingCardProps>(function SettingCard(props, ref) {\n const { title, headingLevel = 'h3', icon, status, summary, children, learnMore, copy, dataTestId, className, sx } = props;\n const baseId = useId();\n const titleId = `${baseId}-title`;\n const card = useSettingCard(props);\n const { open } = card;\n const clamp = useSummaryInfo({ summary, show: !open, label: copy.moreInfo ?? title, dataTestId });\n\n return (\n <Box\n component=\"section\"\n ref={ref}\n aria-labelledby={titleId}\n aria-busy={card.saving || undefined}\n data-state={open ? 'open' : 'closed'}\n {...{ [SETTING_CARD_OPEN_ATTR]: open ? '' : undefined }}\n data-testid={dataTestId}\n className={className}\n sx={withCallerSx((theme) => surfaceStyles(theme, open), sx)}\n >\n <SettingHeader\n titleId={titleId}\n title={title}\n headingLevel={headingLevel}\n icon={icon}\n status={status}\n info={clamp.info}\n trailing={\n open ? null : (\n <EditTrigger\n triggerRef={card.editRef}\n id={`${baseId}-edit`}\n titleId={titleId}\n label={copy.edit}\n disabled={card.disabled}\n onOpen={card.openCard}\n dataTestId={dataTestId}\n />\n )\n }\n dataTestId={dataTestId}\n />\n {!open && summary != null && (\n <Box component=\"p\" ref={clamp.ref} sx={summaryStyles} data-testid={partTestId(dataTestId, 'summary')}>\n {summary}\n </Box>\n )}\n {open && (\n <OpenBody\n bodyRef={card.bodyRef}\n titleId={titleId}\n errorId={`${baseId}-error`}\n copy={copy}\n learnMore={learnMore}\n saving={card.saving}\n error={card.error}\n saveDisabled={card.saveDisabled}\n onSave={card.save}\n onCancel={card.cancel}\n dataTestId={dataTestId}\n >\n {children}\n </OpenBody>\n )}\n </Box>\n );\n});\n\nSettingCard.displayName = 'SettingCard';\n"],"mappings":"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","names":["SettingCard"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ConfirmActionDialog
3
- } from "./chunk-BJZOBG24.js";
3
+ } from "./chunk-UJHXEOU3.js";
4
4
  import {
5
5
  useConfirmAction
6
6
  } from "./chunk-EMYESBIT.js";
@@ -40,4 +40,4 @@ function withConfirmation(Wrapped, defaults) {
40
40
  export {
41
41
  withConfirmation
42
42
  };
43
- //# sourceMappingURL=chunk-4WCDMCIS.js.map
43
+ //# sourceMappingURL=chunk-PI3GPLE2.js.map
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-UWCMMK2T.js";
13
13
  import {
14
14
  ListCardGroup
15
- } from "./chunk-XSHWEUDB.js";
15
+ } from "./chunk-BE5Z36XZ.js";
16
16
  import {
17
17
  DENSITY_BOARD_SCALE,
18
18
  DENSITY_ROW_PADDING,
@@ -274,4 +274,4 @@ function GridMain(props) {
274
274
  export {
275
275
  GridMain
276
276
  };
277
- //# sourceMappingURL=chunk-XAUKQZJK.js.map
277
+ //# sourceMappingURL=chunk-QX4LMVL2.js.map
@@ -55,9 +55,27 @@ var usePinnedTooltip = ({ clickable, onPin, onUnpin }) => {
55
55
  );
56
56
  return { isPinned, isControlledOpen, wrapperRef, handleClick };
57
57
  };
58
+ var useHoverOpen = (isPinned, onOpen, onClose) => {
59
+ const [open, setOpen] = useState(false);
60
+ useEffect(() => {
61
+ if (!isPinned) setOpen(false);
62
+ }, [isPinned]);
63
+ return {
64
+ open,
65
+ onOpen: (event) => {
66
+ setOpen(true);
67
+ onOpen?.(event);
68
+ },
69
+ onClose: (event) => {
70
+ setOpen(false);
71
+ onClose?.(event);
72
+ }
73
+ };
74
+ };
58
75
 
59
76
  export {
60
77
  resolveTooltipProps,
61
- usePinnedTooltip
78
+ usePinnedTooltip,
79
+ useHoverOpen
62
80
  };
63
- //# sourceMappingURL=chunk-S5UY5U73.js.map
81
+ //# sourceMappingURL=chunk-QYJ25FWM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/data-display/InteractiveTooltip/InteractiveTooltip.hooks.ts"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type { InteractiveTooltipProps } from './InteractiveTooltip.types';\n\n// `maxWidth` defaults where it is read (`tooltipCap`), in design px through the theme.\ntype TooltipDefaultedKeys = 'variant' | 'size' | 'glow' | 'pulse' | 'clickable';\n\ntype ResolvedTooltipProps = InteractiveTooltipProps &\n Required<Pick<InteractiveTooltipProps, TooltipDefaultedKeys>>;\n\nconst TOOLTIP_DEFAULTS: Pick<InteractiveTooltipProps, TooltipDefaultedKeys> = {\n variant: 'default',\n size: 'md',\n glow: false,\n pulse: false,\n clickable: true,\n};\n\n// Strips explicitly-undefined props before the merge, so `size={undefined}` still\n// falls back to the default exactly as a destructuring default would.\nconst definedProps = (props: InteractiveTooltipProps): Partial<InteractiveTooltipProps> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<InteractiveTooltipProps>;\n\nexport const resolveTooltipProps = (\n props: InteractiveTooltipProps,\n): ResolvedTooltipProps =>\n ({ ...TOOLTIP_DEFAULTS, ...definedProps(props) }) as ResolvedTooltipProps;\n\ninterface PinOptions {\n clickable: boolean;\n onPin?: () => void;\n onUnpin?: () => void;\n}\n\n/**\n * Clicking the trigger pins the tooltip open; clicking anywhere that is neither\n * the tooltip nor the trigger unpins it. The listener only exists while pinned,\n * so an unpinned tooltip costs nothing on every document click.\n */\nexport const usePinnedTooltip = ({ clickable, onPin, onUnpin }: PinOptions) => {\n const [isPinned, setIsPinned] = useState(false);\n const [isControlledOpen, setIsControlledOpen] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!isPinned || !clickable) {\n return;\n }\n\n const handleClickOutside = (event: MouseEvent) => {\n const targetElement = event.target as Element;\n\n // Check if click was on tooltip or trigger\n const isClickOnTooltip = targetElement.closest('[role=\"tooltip\"]');\n const isClickOnTrigger = wrapperRef.current?.contains(targetElement);\n\n if (isClickOnTooltip || isClickOnTrigger) {\n return;\n }\n\n // Click was outside - unpin\n setIsPinned(false);\n setIsControlledOpen(false);\n onUnpin?.();\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isPinned, clickable, onUnpin]);\n\n const handleClick = useCallback(\n (e: React.MouseEvent) => {\n if (!clickable) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n setIsPinned((current) => {\n const newPinned = !current;\n setIsControlledOpen(newPinned);\n\n if (newPinned) {\n onPin?.();\n } else {\n onUnpin?.();\n }\n\n return newPinned;\n });\n },\n [clickable, onPin, onUnpin],\n );\n\n return { isPinned, isControlledOpen, wrapperRef, handleClick };\n};\n"],"mappings":";AAAA,SAAgB,aAAa,WAAW,QAAQ,gBAAgB;AAUhE,IAAM,mBAAwE;AAAA,EAC5E,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb;AAIA,IAAM,eAAe,CAAC,UACpB,OAAO;AAAA,EACL,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AACjE;AAEK,IAAM,sBAAsB,CACjC,WAEC,EAAE,GAAG,kBAAkB,GAAG,aAAa,KAAK,EAAE;AAa1C,IAAM,mBAAmB,CAAC,EAAE,WAAW,OAAO,QAAQ,MAAkB;AAC7E,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAS,KAAK;AAC9D,QAAM,aAAa,OAAuB,IAAI;AAE9C,YAAU,MAAM;AACd,QAAI,CAAC,YAAY,CAAC,WAAW;AAC3B;AAAA,IACF;AAEA,UAAM,qBAAqB,CAAC,UAAsB;AAChD,YAAM,gBAAgB,MAAM;AAG5B,YAAM,mBAAmB,cAAc,QAAQ,kBAAkB;AACjE,YAAM,mBAAmB,WAAW,SAAS,SAAS,aAAa;AAEnE,UAAI,oBAAoB,kBAAkB;AACxC;AAAA,MACF;AAGA,kBAAY,KAAK;AACjB,0BAAoB,KAAK;AACzB,gBAAU;AAAA,IACZ;AAEA,aAAS,iBAAiB,aAAa,kBAAkB;AACzD,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,kBAAkB;AAAA,IAC9D;AAAA,EACF,GAAG,CAAC,UAAU,WAAW,OAAO,CAAC;AAEjC,QAAM,cAAc;AAAA,IAClB,CAAC,MAAwB;AACvB,UAAI,CAAC,UAAW;AAEhB,QAAE,eAAe;AACjB,QAAE,gBAAgB;AAElB,kBAAY,CAAC,YAAY;AACvB,cAAM,YAAY,CAAC;AACnB,4BAAoB,SAAS;AAE7B,YAAI,WAAW;AACb,kBAAQ;AAAA,QACV,OAAO;AACL,oBAAU;AAAA,QACZ;AAEA,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAAC,WAAW,OAAO,OAAO;AAAA,EAC5B;AAEA,SAAO,EAAE,UAAU,kBAAkB,YAAY,YAAY;AAC/D;","names":[]}
1
+ {"version":3,"sources":["../src/components/data-display/InteractiveTooltip/InteractiveTooltip.hooks.ts"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type { InteractiveTooltipProps } from './InteractiveTooltip.types';\n\n// `maxWidth` defaults where it is read (`tooltipCap`), in design px through the theme.\ntype TooltipDefaultedKeys = 'variant' | 'size' | 'glow' | 'pulse' | 'clickable';\n\ntype ResolvedTooltipProps = InteractiveTooltipProps &\n Required<Pick<InteractiveTooltipProps, TooltipDefaultedKeys>>;\n\nconst TOOLTIP_DEFAULTS: Pick<InteractiveTooltipProps, TooltipDefaultedKeys> = {\n variant: 'default',\n size: 'md',\n glow: false,\n pulse: false,\n clickable: true,\n};\n\n// Strips explicitly-undefined props before the merge, so `size={undefined}` still\n// falls back to the default exactly as a destructuring default would.\nconst definedProps = (props: InteractiveTooltipProps): Partial<InteractiveTooltipProps> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<InteractiveTooltipProps>;\n\nexport const resolveTooltipProps = (\n props: InteractiveTooltipProps,\n): ResolvedTooltipProps =>\n ({ ...TOOLTIP_DEFAULTS, ...definedProps(props) }) as ResolvedTooltipProps;\n\ninterface PinOptions {\n clickable: boolean;\n onPin?: () => void;\n onUnpin?: () => void;\n}\n\n/**\n * Clicking the trigger pins the tooltip open; clicking anywhere that is neither\n * the tooltip nor the trigger unpins it. The listener only exists while pinned,\n * so an unpinned tooltip costs nothing on every document click.\n */\nexport const usePinnedTooltip = ({ clickable, onPin, onUnpin }: PinOptions) => {\n const [isPinned, setIsPinned] = useState(false);\n const [isControlledOpen, setIsControlledOpen] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!isPinned || !clickable) {\n return;\n }\n\n const handleClickOutside = (event: MouseEvent) => {\n const targetElement = event.target as Element;\n\n // Check if click was on tooltip or trigger\n const isClickOnTooltip = targetElement.closest('[role=\"tooltip\"]');\n const isClickOnTrigger = wrapperRef.current?.contains(targetElement);\n\n if (isClickOnTooltip || isClickOnTrigger) {\n return;\n }\n\n // Click was outside - unpin\n setIsPinned(false);\n setIsControlledOpen(false);\n onUnpin?.();\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isPinned, clickable, onUnpin]);\n\n const handleClick = useCallback(\n (e: React.MouseEvent) => {\n if (!clickable) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n setIsPinned((current) => {\n const newPinned = !current;\n setIsControlledOpen(newPinned);\n\n if (newPinned) {\n onPin?.();\n } else {\n onUnpin?.();\n }\n\n return newPinned;\n });\n },\n [clickable, onPin, onUnpin],\n );\n\n return { isPinned, isControlledOpen, wrapperRef, handleClick };\n};\n\ntype OnOpen = NonNullable<InteractiveTooltipProps['onOpen']>;\ntype OnClose = NonNullable<InteractiveTooltipProps['onClose']>;\n\n/**\n * The hover half of the tooltip's open state, so the MUI Tooltip is controlled\n * from its first render (FUT-3013). It used to receive `open={undefined}` while\n * hovering and a boolean once pinned, which MUI reports as a component switching\n * from uncontrolled to controlled on the first click. The caller's own\n * onOpen/onClose still run.\n *\n * Unpinning also closes it: the hover listeners are off while pinned, so a\n * hover state left `true` from before the pin would otherwise keep the tooltip\n * open after the click outside that unpinned it.\n */\nexport const useHoverOpen = (\n isPinned: boolean,\n onOpen?: OnOpen,\n onClose?: OnClose,\n): { open: boolean; onOpen: OnOpen; onClose: OnClose } => {\n const [open, setOpen] = useState(false);\n useEffect(() => {\n if (!isPinned) setOpen(false);\n }, [isPinned]);\n return {\n open,\n onOpen: (event) => {\n setOpen(true);\n onOpen?.(event);\n },\n onClose: (event) => {\n setOpen(false);\n onClose?.(event);\n },\n };\n};\n"],"mappings":";AAAA,SAAgB,aAAa,WAAW,QAAQ,gBAAgB;AAUhE,IAAM,mBAAwE;AAAA,EAC5E,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb;AAIA,IAAM,eAAe,CAAC,UACpB,OAAO;AAAA,EACL,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AACjE;AAEK,IAAM,sBAAsB,CACjC,WAEC,EAAE,GAAG,kBAAkB,GAAG,aAAa,KAAK,EAAE;AAa1C,IAAM,mBAAmB,CAAC,EAAE,WAAW,OAAO,QAAQ,MAAkB;AAC7E,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAS,KAAK;AAC9D,QAAM,aAAa,OAAuB,IAAI;AAE9C,YAAU,MAAM;AACd,QAAI,CAAC,YAAY,CAAC,WAAW;AAC3B;AAAA,IACF;AAEA,UAAM,qBAAqB,CAAC,UAAsB;AAChD,YAAM,gBAAgB,MAAM;AAG5B,YAAM,mBAAmB,cAAc,QAAQ,kBAAkB;AACjE,YAAM,mBAAmB,WAAW,SAAS,SAAS,aAAa;AAEnE,UAAI,oBAAoB,kBAAkB;AACxC;AAAA,MACF;AAGA,kBAAY,KAAK;AACjB,0BAAoB,KAAK;AACzB,gBAAU;AAAA,IACZ;AAEA,aAAS,iBAAiB,aAAa,kBAAkB;AACzD,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,kBAAkB;AAAA,IAC9D;AAAA,EACF,GAAG,CAAC,UAAU,WAAW,OAAO,CAAC;AAEjC,QAAM,cAAc;AAAA,IAClB,CAAC,MAAwB;AACvB,UAAI,CAAC,UAAW;AAEhB,QAAE,eAAe;AACjB,QAAE,gBAAgB;AAElB,kBAAY,CAAC,YAAY;AACvB,cAAM,YAAY,CAAC;AACnB,4BAAoB,SAAS;AAE7B,YAAI,WAAW;AACb,kBAAQ;AAAA,QACV,OAAO;AACL,oBAAU;AAAA,QACZ;AAEA,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAAC,WAAW,OAAO,OAAO;AAAA,EAC5B;AAEA,SAAO,EAAE,UAAU,kBAAkB,YAAY,YAAY;AAC/D;AAgBO,IAAM,eAAe,CAC1B,UACA,QACA,YACwD;AACxD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,YAAU,MAAM;AACd,QAAI,CAAC,SAAU,SAAQ,KAAK;AAAA,EAC9B,GAAG,CAAC,QAAQ,CAAC;AACb,SAAO;AAAA,IACL;AAAA,IACA,QAAQ,CAAC,UAAU;AACjB,cAAQ,IAAI;AACZ,eAAS,KAAK;AAAA,IAChB;AAAA,IACA,SAAS,CAAC,UAAU;AAClB,cAAQ,KAAK;AACb,gBAAU,KAAK;AAAA,IACjB;AAAA,EACF;AACF;","names":[]}
@@ -4,13 +4,13 @@ import {
4
4
  } from "./chunk-IC2M7O6A.js";
5
5
  import {
6
6
  MoreFilters
7
- } from "./chunk-ZTTFLIPH.js";
7
+ } from "./chunk-L624DFJV.js";
8
8
  import {
9
9
  PillControl
10
- } from "./chunk-4XET5MWR.js";
10
+ } from "./chunk-KKE4SHRS.js";
11
11
  import {
12
12
  RangePill
13
- } from "./chunk-2OTBMU5Z.js";
13
+ } from "./chunk-44LYXLW7.js";
14
14
  import {
15
15
  CollapsedSearch,
16
16
  InlineKeyword
@@ -220,4 +220,4 @@ function FilterSlots({
220
220
  export {
221
221
  InlineFilterControls
222
222
  };
223
- //# sourceMappingURL=chunk-6PYX6V3R.js.map
223
+ //# sourceMappingURL=chunk-RJXVVLBO.js.map
@@ -5,6 +5,10 @@ import {
5
5
  import {
6
6
  filterRows
7
7
  } from "./chunk-YGQX7BNI.js";
8
+ import {
9
+ serverDerived,
10
+ useServerQuery
11
+ } from "./chunk-IMLIIW77.js";
8
12
  import {
9
13
  useSelection
10
14
  } from "./chunk-LLZWB32X.js";
@@ -19,10 +23,6 @@ import {
19
23
  computeActiveFilterCount,
20
24
  defaultSortFields
21
25
  } from "./chunk-UWCMMK2T.js";
22
- import {
23
- serverDerived,
24
- useServerQuery
25
- } from "./chunk-IMLIIW77.js";
26
26
  import {
27
27
  emptyViewState
28
28
  } from "./chunk-LHHAYZ55.js";
@@ -172,4 +172,4 @@ function useDataViewsState({
172
172
  export {
173
173
  useDataViewsState
174
174
  };
175
- //# sourceMappingURL=chunk-FRCBJLV5.js.map
175
+ //# sourceMappingURL=chunk-RKKYSSAV.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MapPreview
3
- } from "./chunk-CTXF22BU.js";
3
+ } from "./chunk-VODKYDC4.js";
4
4
 
5
5
  // src/components/data-display/FleetMap/FleetCanvas.tsx
6
6
  import Box from "@mui/material/Box/index.js";
@@ -38,4 +38,4 @@ function FleetCanvas({
38
38
  export {
39
39
  FleetCanvas
40
40
  };
41
- //# sourceMappingURL=chunk-WF7BZT6V.js.map
41
+ //# sourceMappingURL=chunk-RR6BIHFX.js.map
@@ -1,3 +1,7 @@
1
+ import {
2
+ CommandEmpty,
3
+ CommandLoading
4
+ } from "./chunk-XLTHZI5W.js";
1
5
  import {
2
6
  resolveCommandProps,
3
7
  useCommandPalette
@@ -6,10 +10,6 @@ import {
6
10
  commandPaperStyles,
7
11
  commandSizeStyles
8
12
  } from "./chunk-NND4UTWS.js";
9
- import {
10
- CommandEmpty,
11
- CommandLoading
12
- } from "./chunk-XLTHZI5W.js";
13
13
  import {
14
14
  rem,
15
15
  sxRem
@@ -307,4 +307,4 @@ export {
307
307
  CommandList,
308
308
  CommandGroup
309
309
  };
310
- //# sourceMappingURL=chunk-NGAU6PNB.js.map
310
+ //# sourceMappingURL=chunk-RRVQVQF7.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ConfirmActionDialog
3
- } from "./chunk-BJZOBG24.js";
3
+ } from "./chunk-UJHXEOU3.js";
4
4
  import {
5
5
  useConfirmAction
6
6
  } from "./chunk-EMYESBIT.js";
@@ -23,4 +23,4 @@ ConfirmAction.displayName = "ConfirmAction";
23
23
  export {
24
24
  ConfirmAction
25
25
  };
26
- //# sourceMappingURL=chunk-FWPFCK4D.js.map
26
+ //# sourceMappingURL=chunk-S6G3CJFP.js.map
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  GridMain
3
- } from "./chunk-XAUKQZJK.js";
3
+ } from "./chunk-QX4LMVL2.js";
4
4
  import {
5
5
  FilterDialog,
6
6
  GridFilterPanel
7
- } from "./chunk-TBZKUZNW.js";
7
+ } from "./chunk-ZPWU7Z6O.js";
8
8
  import {
9
9
  DataViewsEmpty
10
10
  } from "./chunk-E3GOREEB.js";
11
11
  import {
12
12
  InlineFilterControls
13
- } from "./chunk-6PYX6V3R.js";
13
+ } from "./chunk-RJXVVLBO.js";
14
14
  import {
15
15
  GridHeaderRow
16
16
  } from "./chunk-KW3H5FUS.js";
@@ -29,7 +29,7 @@ import {
29
29
  } from "./chunk-QZY5NG5N.js";
30
30
  import {
31
31
  ShellToolbar
32
- } from "./chunk-BE5FGUJS.js";
32
+ } from "./chunk-IM5SR7G2.js";
33
33
  import {
34
34
  togglePillValues
35
35
  } from "./chunk-UWCMMK2T.js";
@@ -238,4 +238,4 @@ function GridShell(props) {
238
238
  export {
239
239
  GridShell
240
240
  };
241
- //# sourceMappingURL=chunk-F33YKDO2.js.map
241
+ //# sourceMappingURL=chunk-TEST2NBS.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AlertDialog
3
- } from "./chunk-OG6LYQ7C.js";
3
+ } from "./chunk-4PFKMNLP.js";
4
4
 
5
5
  // src/components/feedback/ConfirmAction/ConfirmAction.parts.tsx
6
6
  import Alert from "@mui/material/Alert/index.js";
@@ -104,4 +104,4 @@ function ConfirmActionDialog({
104
104
  export {
105
105
  ConfirmActionDialog
106
106
  };
107
- //# sourceMappingURL=chunk-BJZOBG24.js.map
107
+ //# sourceMappingURL=chunk-UJHXEOU3.js.map
@@ -4,6 +4,9 @@ import {
4
4
  import {
5
5
  CategoryPanel
6
6
  } from "./chunk-YVRLYDYN.js";
7
+ import {
8
+ useCategoryKeyHandler
9
+ } from "./chunk-USJPZ5Q7.js";
7
10
  import {
8
11
  useCategoryCommit
9
12
  } from "./chunk-XHHR6G35.js";
@@ -16,9 +19,6 @@ import {
16
19
  import {
17
20
  useCategorySelect
18
21
  } from "./chunk-RZVUY2MO.js";
19
- import {
20
- useCategoryKeyHandler
21
- } from "./chunk-USJPZ5Q7.js";
22
22
  import {
23
23
  categoryPath,
24
24
  summarizeSelection
@@ -155,4 +155,4 @@ function CategorySelect(props) {
155
155
  export {
156
156
  CategorySelect
157
157
  };
158
- //# sourceMappingURL=chunk-NKJSYZEU.js.map
158
+ //# sourceMappingURL=chunk-V32626FV.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  GridShell
3
- } from "./chunk-F33YKDO2.js";
3
+ } from "./chunk-TEST2NBS.js";
4
4
  import {
5
5
  useDataViewsState
6
- } from "./chunk-FRCBJLV5.js";
6
+ } from "./chunk-RKKYSSAV.js";
7
7
 
8
8
  // src/components/data-display/DataViews/DataViewsGrid.tsx
9
9
  import { useEffect, useRef } from "react";
@@ -27,4 +27,4 @@ function DataViewsGrid(props) {
27
27
  export {
28
28
  DataViewsGrid
29
29
  };
30
- //# sourceMappingURL=chunk-MLDA44NW.js.map
30
+ //# sourceMappingURL=chunk-VGXSPUTD.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ConfirmActionDialog
3
- } from "./chunk-BJZOBG24.js";
3
+ } from "./chunk-UJHXEOU3.js";
4
4
  import {
5
5
  useConfirmAction
6
6
  } from "./chunk-EMYESBIT.js";
@@ -43,4 +43,4 @@ function useRowConfirm({
43
43
  export {
44
44
  useRowConfirm
45
45
  };
46
- //# sourceMappingURL=chunk-U4QUDFPJ.js.map
46
+ //# sourceMappingURL=chunk-VKVOP4OK.js.map
@@ -1,3 +1,7 @@
1
+ import {
2
+ MapCoordinates,
3
+ MapMarkers
4
+ } from "./chunk-ODFJTEIL.js";
1
5
  import {
2
6
  MapLayers
3
7
  } from "./chunk-XW633XLR.js";
@@ -5,10 +9,6 @@ import {
5
9
  glassStyles,
6
10
  resolveMapPreviewProps
7
11
  } from "./chunk-4NQXHPQR.js";
8
- import {
9
- MapCoordinates,
10
- MapMarkers
11
- } from "./chunk-ODFJTEIL.js";
12
12
  import {
13
13
  useMapPreview
14
14
  } from "./chunk-QSRZOXQI.js";
@@ -108,4 +108,4 @@ export {
108
108
  MapPreview,
109
109
  MapPreview_default
110
110
  };
111
- //# sourceMappingURL=chunk-CTXF22BU.js.map
111
+ //# sourceMappingURL=chunk-VODKYDC4.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  partTestId
3
- } from "./chunk-57VL5UX7.js";
3
+ } from "./chunk-2JTZWQ25.js";
4
4
  import {
5
5
  SETTING_CARD_OPEN_ATTR,
6
6
  withCallerSx
7
- } from "./chunk-3DO5AJCG.js";
7
+ } from "./chunk-WE2LNTR6.js";
8
8
  import {
9
9
  SETTING_CARD,
10
10
  SETTING_GRID_GAP_UNITS
11
- } from "./chunk-IC7GHPMK.js";
11
+ } from "./chunk-BFRVMCQM.js";
12
12
  import {
13
13
  rem
14
14
  } from "./chunk-YKCAJ2TN.js";
@@ -79,4 +79,4 @@ export {
79
79
  settingGridStyles,
80
80
  SettingGrid
81
81
  };
82
- //# sourceMappingURL=chunk-DWJH3KXN.js.map
82
+ //# sourceMappingURL=chunk-WAKGVAOB.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SETTING_CARD,
3
3
  SETTING_GROUP_INACTIVE_OPACITY
4
- } from "./chunk-IC7GHPMK.js";
4
+ } from "./chunk-BFRVMCQM.js";
5
5
  import {
6
6
  CARD_BORDER_WIDTH,
7
7
  CARD_RADIUS_UNITS
@@ -51,13 +51,18 @@ var titleStyles = (theme) => ({
51
51
  minWidth: 0,
52
52
  overflowWrap: "anywhere"
53
53
  });
54
+ var SUMMARY_MAX_LINES = 2;
55
+ var clampStyles = {
56
+ display: "-webkit-box",
57
+ WebkitLineClamp: SUMMARY_MAX_LINES,
58
+ WebkitBoxOrient: "vertical",
59
+ overflow: "hidden"
60
+ };
54
61
  var summaryStyles = (theme) => ({
55
62
  ...theme.typography.body2,
56
63
  color: theme.palette.text.secondary,
57
64
  margin: 0,
58
- overflow: "hidden",
59
- textOverflow: "ellipsis",
60
- whiteSpace: "nowrap"
65
+ ...clampStyles
61
66
  });
62
67
  var descriptionStyles = (theme) => ({
63
68
  ...theme.typography.body2,
@@ -106,6 +111,8 @@ export {
106
111
  flatStyles,
107
112
  headerStyles,
108
113
  titleStyles,
114
+ SUMMARY_MAX_LINES,
115
+ clampStyles,
109
116
  summaryStyles,
110
117
  descriptionStyles,
111
118
  hintStyles,
@@ -114,4 +121,4 @@ export {
114
121
  iconStyles,
115
122
  dependentsStyles
116
123
  };
117
- //# sourceMappingURL=chunk-3DO5AJCG.js.map
124
+ //# sourceMappingURL=chunk-WE2LNTR6.js.map