efficient-shell 10.22.0 → 10.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 (290) hide show
  1. package/README.md +16 -4
  2. package/dist/{Browser-XQ5GO3LJ.js → Browser-KUFFOGYK.js} +14 -14
  3. package/dist/Calculator-LENRW34X.js +29 -0
  4. package/dist/CurrencyConverter-7UMHQS2V.js +21 -0
  5. package/dist/{Documents-7GOEAIJ6.js → Documents-ODZ4AAOY.js} +20 -20
  6. package/dist/{Files-MMVUWO5F.js → Files-BRGTTI2J.js} +46 -46
  7. package/dist/Notepad-RMRDEGGU.js +24 -0
  8. package/dist/PomodoroTimer-4566W4F7.js +91 -0
  9. package/dist/{Preview-DEK7WTAU.js → Preview-7POJP7PB.js} +33 -33
  10. package/dist/Sidebar-TU4QCKYJ.js +44 -0
  11. package/dist/Spreadsheet-7T4VT5IO.js +37 -0
  12. package/dist/{Stock-XHMTFEOL.js → Stock-H73C4R3N.js} +4 -4
  13. package/dist/{Weather-X5WAHYQ3.js → Weather-WF56QCBI.js} +20 -20
  14. package/dist/{WorldClock-ARU7PMVZ.js → WorldClock-5QJNZYYS.js} +6 -6
  15. package/dist/ai/index.js +91 -91
  16. package/dist/api/shellHttp.d.ts +52 -0
  17. package/dist/api/shellHttp.js +1 -0
  18. package/dist/apps/index.js +1 -1
  19. package/dist/bin/media-host-check.js +1 -1
  20. package/dist/bin/ui-check.js +1 -1
  21. package/dist/charts/BoxPlotChart.js +1 -1
  22. package/dist/charts/CandlestickChart.js +1 -1
  23. package/dist/charts/ChartTooltip.js +1 -1
  24. package/dist/charts/ChordChart.js +1 -1
  25. package/dist/charts/ColumnChart.js +1 -1
  26. package/dist/charts/FunnelChart.js +1 -1
  27. package/dist/charts/HeatmapChart.js +1 -1
  28. package/dist/charts/HistogramChart.js +1 -1
  29. package/dist/charts/PieChart.js +1 -1
  30. package/dist/charts/RadarChart.js +1 -1
  31. package/dist/charts/RadialBarChart.js +1 -1
  32. package/dist/charts/RangeChart.js +1 -1
  33. package/dist/charts/SankeyChart.js +1 -1
  34. package/dist/charts/ScatterChart.js +1 -1
  35. package/dist/charts/SpecChart.js +1 -1
  36. package/dist/charts/SunburstChart.js +1 -1
  37. package/dist/charts/TimeSeriesChart.js +1 -1
  38. package/dist/charts/TreemapChart.js +1 -1
  39. package/dist/charts/WaterfallChart.js +1 -1
  40. package/dist/chunk-2QY5BJLA.js +2 -0
  41. package/dist/{chunk-3PO4D32J.js → chunk-36PJGT4W.js} +1 -1
  42. package/dist/{chunk-AGPPZHAH.js → chunk-36VIGB6J.js} +1 -1
  43. package/dist/{chunk-C4CAPG3D.js → chunk-3BFZVVAT.js} +1 -1
  44. package/dist/chunk-3C5NKOVF.js +1 -0
  45. package/dist/chunk-3FBDLIQW.js +99 -0
  46. package/dist/chunk-4BCFBF3C.js +9 -0
  47. package/dist/chunk-4EBJO7ER.js +15 -0
  48. package/dist/chunk-4LXCCZDM.js +1 -0
  49. package/dist/{chunk-YICFH5KO.js → chunk-4P3324KU.js} +1 -1
  50. package/dist/chunk-4P57TIFK.js +2 -0
  51. package/dist/{chunk-QDJQ43N4.js → chunk-4RGMRXYH.js} +1 -1
  52. package/dist/{chunk-6V4INP7J.js → chunk-4TYIYL56.js} +4 -4
  53. package/dist/{chunk-P22NWAFW.js → chunk-55AEZX6K.js} +1 -1
  54. package/dist/chunk-5DIGYJHD.js +1 -0
  55. package/dist/{chunk-BB6A5MGA.js → chunk-5FYDNH4Y.js} +1 -1
  56. package/dist/{chunk-U2RFKQVA.js → chunk-5H4SWQGM.js} +1 -1
  57. package/dist/{chunk-KABWJIY4.js → chunk-5PP435FL.js} +1 -1
  58. package/dist/{chunk-BWTK3NUD.js → chunk-6IOFNPR6.js} +4 -4
  59. package/dist/{chunk-OBNA7GF5.js → chunk-6M5O2P64.js} +9 -9
  60. package/dist/{chunk-P3LKCOB4.js → chunk-7FW2BQTV.js} +2 -2
  61. package/dist/{chunk-SRYX6AQ6.js → chunk-7JVGF555.js} +1 -1
  62. package/dist/{chunk-ARSOETMP.js → chunk-7KWYVQMX.js} +1 -1
  63. package/dist/chunk-7LU3H72S.js +7 -0
  64. package/dist/chunk-7RP7QTRF.js +12 -0
  65. package/dist/{chunk-AKBGUMLI.js → chunk-A6FR2D46.js} +5 -5
  66. package/dist/{chunk-RAMJFT3D.js → chunk-AFG34RBV.js} +5 -5
  67. package/dist/{chunk-5JCHYQYI.js → chunk-ALTBTO3Z.js} +3 -3
  68. package/dist/chunk-ATMJ5ZPK.js +1 -0
  69. package/dist/{chunk-PWUPLXSS.js → chunk-BBXFIBXB.js} +1 -1
  70. package/dist/{chunk-EE56C2JH.js → chunk-BMXTPJ7T.js} +5 -5
  71. package/dist/{chunk-O64PY7ZJ.js → chunk-BUO7XCYR.js} +11 -11
  72. package/dist/{chunk-LJHVEISA.js → chunk-CH3JQUDW.js} +6 -6
  73. package/dist/{chunk-DLOJSJWL.js → chunk-CIHR5ZKF.js} +1 -1
  74. package/dist/{chunk-E5H5OU3A.js → chunk-COF33H6J.js} +5 -5
  75. package/dist/{chunk-GGRD2JLB.js → chunk-CQEVJG43.js} +1 -1
  76. package/dist/{chunk-WHISJI5L.js → chunk-CX4XR4HO.js} +1 -1
  77. package/dist/{chunk-XDCHB6JA.js → chunk-DGWS4GTI.js} +1 -1
  78. package/dist/{chunk-RXO2LNIB.js → chunk-DIEH76MB.js} +1 -1
  79. package/dist/{chunk-PJBZ5B54.js → chunk-DOF56HTO.js} +5 -5
  80. package/dist/{chunk-CGP2QCIA.js → chunk-DRUQH4ZE.js} +2 -2
  81. package/dist/{chunk-KGVNRLWT.js → chunk-DVYIBJ3S.js} +2 -2
  82. package/dist/{chunk-5DIBDRB6.js → chunk-DWAA4YZV.js} +3 -3
  83. package/dist/{chunk-4BPIGS2D.js → chunk-DZOJQURG.js} +6 -6
  84. package/dist/{chunk-7SMDYBQX.js → chunk-E3EJWNNK.js} +8 -8
  85. package/dist/chunk-E6FDUFPH.js +1 -0
  86. package/dist/chunk-EH2BNSG3.js +13 -0
  87. package/dist/chunk-EOVXFXVV.js +2 -0
  88. package/dist/chunk-EXLHFM3V.js +6 -0
  89. package/dist/chunk-F3ZOO23R.js +1 -0
  90. package/dist/{chunk-L67WTASI.js → chunk-FUDUQ44A.js} +1 -1
  91. package/dist/{chunk-N2RIQ2OU.js → chunk-FZM3ZPW3.js} +1 -1
  92. package/dist/{chunk-VQIG5N6D.js → chunk-G66SG6JN.js} +9 -9
  93. package/dist/{chunk-GCC2OZDG.js → chunk-GC3DA6D6.js} +1 -1
  94. package/dist/{chunk-QA3EAJ5H.js → chunk-GOXQJCXG.js} +17 -17
  95. package/dist/{chunk-XAPHUSOR.js → chunk-H475WZPF.js} +16 -16
  96. package/dist/{chunk-53DO72B2.js → chunk-H5NIW2KS.js} +1 -1
  97. package/dist/chunk-HNVSVTNC.js +16 -0
  98. package/dist/{chunk-ET4726WV.js → chunk-IHNOWRTP.js} +2 -2
  99. package/dist/{chunk-QZMGWRZ4.js → chunk-IPO4LHSB.js} +6 -6
  100. package/dist/{chunk-E5QPXEKN.js → chunk-JFBL4PR3.js} +1 -1
  101. package/dist/chunk-JPOYR5AO.js +7 -0
  102. package/dist/{chunk-BJRJODRZ.js → chunk-LCSMBVMU.js} +1 -1
  103. package/dist/{chunk-WVCX2Y3S.js → chunk-LE5LWALR.js} +1 -1
  104. package/dist/chunk-LNXBTK7Q.js +1 -0
  105. package/dist/{chunk-HC2AM2DT.js → chunk-MCAPJSB6.js} +1 -1
  106. package/dist/{chunk-REWKL7MX.js → chunk-MDYJVXWD.js} +2 -2
  107. package/dist/chunk-MHPFBVDD.js +8 -0
  108. package/dist/{chunk-NS2HY4NL.js → chunk-N5KO2IHG.js} +4 -4
  109. package/dist/{chunk-22LRMKLV.js → chunk-NJN5IKWO.js} +6 -6
  110. package/dist/{chunk-HWKAFISI.js → chunk-NRALUW6P.js} +7 -7
  111. package/dist/{chunk-SETRKP7W.js → chunk-NWC6YCIJ.js} +10 -10
  112. package/dist/{chunk-WE3HINW3.js → chunk-NZ34BQKH.js} +1 -1
  113. package/dist/{chunk-H2C5SZKO.js → chunk-NZ7BFYCM.js} +1 -1
  114. package/dist/chunk-O3MBPAWZ.js +2 -0
  115. package/dist/{chunk-6XYGA252.js → chunk-O7RR2ZZ2.js} +6 -6
  116. package/dist/{chunk-SAGI7AWC.js → chunk-OKHKY3ZZ.js} +1 -1
  117. package/dist/{chunk-KLAKLVKE.js → chunk-OTITQ3IH.js} +12 -12
  118. package/dist/{chunk-WSMRVWWK.js → chunk-P7H2DXJB.js} +10 -10
  119. package/dist/chunk-PSR6SXCC.js +14 -0
  120. package/dist/{chunk-AFBBNGVO.js → chunk-PVDZG2U2.js} +7 -7
  121. package/dist/{chunk-Q5WPHBDB.js → chunk-QGWKM7C3.js} +5 -5
  122. package/dist/{chunk-GEDS6QO7.js → chunk-QRU55BUS.js} +2 -2
  123. package/dist/{chunk-A46WK67X.js → chunk-QWCEKHAP.js} +4 -4
  124. package/dist/{chunk-DOWE3ZQR.js → chunk-RDKIYORS.js} +1 -1
  125. package/dist/{chunk-D6ZXMKW2.js → chunk-RSOBUPLK.js} +1 -1
  126. package/dist/{chunk-F3ZH6UCW.js → chunk-RZQGPWSN.js} +1 -1
  127. package/dist/{chunk-NWUAATIX.js → chunk-S4FPYCUU.js} +3 -3
  128. package/dist/chunk-S5DYR75A.js +29 -0
  129. package/dist/chunk-STKJA4PV.js +1 -0
  130. package/dist/{chunk-OAVU46YG.js → chunk-TDAI4J27.js} +4 -4
  131. package/dist/{chunk-WJ6ZJVAX.js → chunk-TE6R53YD.js} +1 -1
  132. package/dist/{chunk-GIK62TW6.js → chunk-TFSLPAGB.js} +3 -3
  133. package/dist/chunk-TNJ2VCH4.js +8 -0
  134. package/dist/{chunk-7XNDWW3Y.js → chunk-U44DVPGB.js} +1 -1
  135. package/dist/{chunk-ZTV2BA3P.js → chunk-U6LKNGC6.js} +1 -1
  136. package/dist/chunk-UKBXQXDZ.js +1 -0
  137. package/dist/chunk-ULJQYXHB.js +1 -0
  138. package/dist/{chunk-CIYMGVZC.js → chunk-UNQ54QOF.js} +1 -1
  139. package/dist/chunk-UPXDDO3U.js +1 -0
  140. package/dist/{chunk-C2ZUYCIM.js → chunk-USVL5SLG.js} +1 -1
  141. package/dist/chunk-USWA6YNZ.js +3 -0
  142. package/dist/{chunk-CIXGYZCF.js → chunk-V2J2AHDW.js} +4 -4
  143. package/dist/chunk-VX4COEWP.js +4 -0
  144. package/dist/{chunk-VXQQQDJ3.js → chunk-VX6TKEEK.js} +1 -1
  145. package/dist/{chunk-NTVOQHRS.js → chunk-WDQEUNGE.js} +1 -1
  146. package/dist/{chunk-GLE4F5FT.js → chunk-WGLHB6WE.js} +1 -1
  147. package/dist/{chunk-MW3FT4WI.js → chunk-WL4U4MTQ.js} +3 -3
  148. package/dist/{chunk-NPGFCIHB.js → chunk-WLYYC3AP.js} +1 -1
  149. package/dist/{chunk-GCP3LGRG.js → chunk-WOAMPTZI.js} +14 -14
  150. package/dist/{chunk-FHYETY4V.js → chunk-XBHXGBJR.js} +1 -1
  151. package/dist/{chunk-VKP2WRJJ.js → chunk-XCAUDTCC.js} +8 -8
  152. package/dist/chunk-XFH64VIG.js +19 -0
  153. package/dist/chunk-XXL5RLNM.js +22 -0
  154. package/dist/{chunk-6CICYVCK.js → chunk-YQOVUH5W.js} +8 -8
  155. package/dist/{chunk-WUMPTKOG.js → chunk-Z3SLQKE6.js} +1 -1
  156. package/dist/{chunk-4UHAQMOT.js → chunk-Z44JWU75.js} +2 -2
  157. package/dist/{chunk-UXPKCDEF.js → chunk-Z6GQFTLJ.js} +1 -1
  158. package/dist/{chunk-TBQLPMW5.js → chunk-ZRLWE3JM.js} +1 -1
  159. package/dist/data/DataTable.js +1 -1
  160. package/dist/data/EntityList.d.ts +125 -0
  161. package/dist/data/EntityList.js +2 -0
  162. package/dist/data/ListLoadError.js +1 -1
  163. package/dist/data/ResizableTable.d.ts +31 -0
  164. package/dist/data/ResizableTable.js +2 -0
  165. package/dist/data/useColumnConfig.d.ts +68 -0
  166. package/dist/data/useColumnConfig.js +2 -0
  167. package/dist/data/useSort.d.ts +55 -0
  168. package/dist/data/useSort.js +2 -0
  169. package/dist/data/useTableNav.d.ts +28 -0
  170. package/dist/data/useTableNav.js +2 -0
  171. package/dist/format/index.d.ts +1 -1
  172. package/dist/format/index.js +1 -1
  173. package/dist/forms/AlignmentGrid.js +1 -1
  174. package/dist/forms/BorderInput.js +1 -1
  175. package/dist/forms/BrandAssetEditor.js +1 -1
  176. package/dist/forms/Button.js +1 -1
  177. package/dist/forms/ColorPicker.js +1 -1
  178. package/dist/forms/ComposerAttachments.js +1 -1
  179. package/dist/forms/CornersInput.js +1 -1
  180. package/dist/forms/DateRangePicker.js +1 -1
  181. package/dist/forms/DisplayChips.js +1 -1
  182. package/dist/forms/FilePicker.js +1 -1
  183. package/dist/forms/IconButton.js +1 -1
  184. package/dist/forms/IconPicker.js +1 -1
  185. package/dist/forms/InputNumber.js +1 -1
  186. package/dist/forms/LinkPicker.js +1 -1
  187. package/dist/forms/MediaLibrary.js +1 -1
  188. package/dist/forms/MediaUploadField.js +1 -1
  189. package/dist/forms/MediaUploadGrid.js +1 -1
  190. package/dist/forms/MediaUsedInList.js +1 -1
  191. package/dist/forms/NumericKeypad.js +1 -1
  192. package/dist/forms/PictureTiles.js +1 -1
  193. package/dist/forms/PositionInput.js +1 -1
  194. package/dist/forms/Segmented.js +1 -1
  195. package/dist/forms/Select.js +1 -1
  196. package/dist/forms/SidesInput.js +1 -1
  197. package/dist/forms/Slider.js +1 -1
  198. package/dist/forms/Snippet.js +1 -1
  199. package/dist/forms/SplitButton.js +1 -1
  200. package/dist/forms/TagInput.js +1 -1
  201. package/dist/forms/TextToolbar.js +1 -1
  202. package/dist/forms/WidthsBar.js +1 -1
  203. package/dist/hooks/useRootIsDark.d.ts +3 -0
  204. package/dist/hooks/useRootIsDark.js +1 -1
  205. package/dist/icons/efficient-glyphs.js +1 -1
  206. package/dist/icons/efficient-looks.js +1 -1
  207. package/dist/icons/efficient.js +1 -1
  208. package/dist/icons/index.js +1 -1
  209. package/dist/icons/looks/map.js +1 -1
  210. package/dist/icons/payment.js +1 -1
  211. package/dist/icons/sets.js +1 -1
  212. package/dist/index.d.ts +13 -317
  213. package/dist/index.js +667 -694
  214. package/dist/map/index.js +3 -3
  215. package/dist/page-tabs/index.js +5 -5
  216. package/dist/shell/AppUpdateBanner.js +1 -1
  217. package/dist/shell/ColoredBadge.js +1 -1
  218. package/dist/shell/ContextMenu.js +1 -1
  219. package/dist/shell/DropdownMenu.js +1 -1
  220. package/dist/shell/EditableGrid.js +1 -1
  221. package/dist/shell/FloatingBar.js +1 -1
  222. package/dist/shell/GlobalSearch.js +1 -1
  223. package/dist/shell/HelpCenter.js +1 -1
  224. package/dist/shell/IconRail.js +1 -1
  225. package/dist/shell/ImageLightbox.js +1 -1
  226. package/dist/shell/ItemCount.js +1 -1
  227. package/dist/shell/LanguageSelect.js +1 -1
  228. package/dist/shell/Markdown.js +1 -1
  229. package/dist/shell/PopupMenu.js +1 -1
  230. package/dist/shell/ResizeHandle.js +1 -1
  231. package/dist/shell/SearchableSelect.js +1 -1
  232. package/dist/shell/SettingReset.js +1 -1
  233. package/dist/shell/SettingRow.js +1 -1
  234. package/dist/shell/SidebarLayout.js +1 -1
  235. package/dist/shell/SidebarNav.js +1 -1
  236. package/dist/shell/SortableList.js +1 -1
  237. package/dist/shell/StatusBadge.js +1 -1
  238. package/dist/shell/Tabs.js +1 -1
  239. package/dist/shell/Tooltip.js +1 -1
  240. package/dist/shell/TopNav.js +1 -1
  241. package/dist/shell/TransferProgress.js +1 -1
  242. package/dist/shell/Tree.js +1 -1
  243. package/dist/telemetry/index.js +1 -1
  244. package/dist/templates/AuthScreen.js +1 -1
  245. package/dist/templates/ChatTemplate.js +1 -1
  246. package/dist/templates/CheckoutTemplate.js +1 -1
  247. package/dist/templates/DashboardTemplate.js +1 -1
  248. package/dist/templates/DataTablePage.js +1 -1
  249. package/dist/templates/EmailTemplate.js +1 -1
  250. package/dist/templates/ErrorBoundary.js +1 -1
  251. package/dist/templates/FormLayoutPage.js +1 -1
  252. package/dist/templates/GalleryTemplate.js +1 -1
  253. package/dist/theme/index.d.ts +2 -0
  254. package/dist/theme/index.js +2 -0
  255. package/dist/ui/index.d.ts +6 -0
  256. package/dist/ui/index.js +1 -1
  257. package/dist/utils/glass.js +1 -1
  258. package/dist/utils/rootTheme.d.ts +13 -1
  259. package/dist/utils/rootTheme.js +1 -1
  260. package/dist/version.js +1 -1
  261. package/package.json +6 -1
  262. package/dist/Calculator-X62IAKQY.js +0 -29
  263. package/dist/CurrencyConverter-PSOBQ6K2.js +0 -21
  264. package/dist/Notepad-FAQBAF36.js +0 -24
  265. package/dist/PomodoroTimer-ZLS6XCTN.js +0 -91
  266. package/dist/Sidebar-JF2KEJT2.js +0 -44
  267. package/dist/Spreadsheet-6C7Q6OQA.js +0 -37
  268. package/dist/chunk-4DO47TT5.js +0 -1
  269. package/dist/chunk-5532S4RN.js +0 -4
  270. package/dist/chunk-5R4X7MFQ.js +0 -1
  271. package/dist/chunk-5XKCOKYJ.js +0 -1
  272. package/dist/chunk-CY5N5OA3.js +0 -2
  273. package/dist/chunk-F7U5MVNH.js +0 -2
  274. package/dist/chunk-FX4KK5GE.js +0 -3
  275. package/dist/chunk-GCMCXRIN.js +0 -19
  276. package/dist/chunk-H43BVPNN.js +0 -7
  277. package/dist/chunk-IWOVB4WI.js +0 -9
  278. package/dist/chunk-LIULEXWE.js +0 -14
  279. package/dist/chunk-LQVW3SW4.js +0 -6
  280. package/dist/chunk-NGRTW6Y7.js +0 -2
  281. package/dist/chunk-PBFFKRQF.js +0 -12
  282. package/dist/chunk-QFJIMX4A.js +0 -15
  283. package/dist/chunk-QIMFBARF.js +0 -8
  284. package/dist/chunk-RRGMXY46.js +0 -29
  285. package/dist/chunk-TLJWBRLI.js +0 -8
  286. package/dist/chunk-URQWWOHM.js +0 -7
  287. package/dist/chunk-WBJ6KNUF.js +0 -1
  288. package/dist/chunk-WEPQU5W6.js +0 -22
  289. package/dist/chunk-ZT45XXIB.js +0 -100
  290. /package/dist/{chunk-CSA6CGXS.js → chunk-RKLZDVAO.js} +0 -0
@@ -0,0 +1,19 @@
1
+ import{firstEnabledIndex as e,matchTypeahead as t,lastEnabledIndex as r,nextEnabledIndex as i}from"./chunk-EO5RLFRX.js";import{flattenOptionItems as n,groupedRows as a,isOptionGroup as l,OptionCheck as o}from"./chunk-LJN77RG6.js";import{useSettingAuto as d}from"./chunk-2NMW66P5.js";import{inputClasses as s,PLACEHOLDER_INK as c}from"./chunk-AYZY3YNC.js";import{useIsMobile as u}from"./chunk-UGTRSRIW.js";import{optionNoteClass as p}from"./chunk-URHGHXDN.js";import{Icon as m}from"./chunk-2UO47XB4.js";import{onOverlayOpen as v}from"./chunk-PGN5ME7B.js";import{Z_LAYERS as h}from"./chunk-62LW225J.js";import{useDropdownPosition as f,MENU_MAX_HEIGHT as b}from"./chunk-GLUJS42B.js";import{useBrowserLayoutEffect as g}from"./chunk-D65T4H6J.js";import{solidSurfaceStyle as y}from"./chunk-5FYDNH4Y.js";import{registerModalEscapeInterceptor as x}from"./chunk-TWVUQUUD.js";import{useShellStrings as k}from"./chunk-GDQJBQ5B.js";import{forwardRef as N,useId as w,useState as $,useRef as D,useMemo as j,useCallback as H,useEffect as S}from"react";import{createPortal as T}from"react-dom";import{jsxs as C,jsx as E,Fragment as O}from"react/jsx-runtime";var I=e=>e.labelStyle?{lineHeight:1.25,...e.labelStyle}:void 0,z=N(function({value:e,onChange:t,options:r,placeholder:i,invalid:n,className:a="",size:l,touchSize:o,renderOption:c,renderValue:u,valueText:p,readOnly:m,footer:v,changed:h,auto:f,multiple:b,"aria-describedby":g,...y},x){const N=t,$=k(),D=d(),j=f??D,H=w(),S=/* @__PURE__ */C("select",{ref:x,value:e,multiple:b||void 0,onChange:e=>N(b?Array.from(e.target.selectedOptions,e=>e.value):e.target.value),"aria-invalid":n||void 0,"aria-describedby":[g,j?H:void 0].filter(Boolean).join(" ")||void 0,className:s({invalid:n,size:l,auto:j,className:`pr-8 ${a}`.trim()}),...y,children:[void 0!==i&&!b&&/* @__PURE__ */E("option",{value:"",disabled:!0,children:i}),
2
+ /* @__PURE__ */E(B,{items:r})]});return j?/* @__PURE__ */C(O,{children:[S,
3
+ /* @__PURE__ */E("span",{id:H,hidden:!0,children:$.settingView.auto})]}):S});function B({items:e}){const t=e=>/* @__PURE__ */E("option",{value:e.value,disabled:e.disabled,lang:e.lang,children:e.label},e.value);/* @__PURE__ */
4
+ return E(O,{children:e.map((e,r)=>(e=>l(e))(e)?/* @__PURE__ */E("optgroup",{label:e.label,children:e.options.map(t)},`group-${r}`):t(e))})}var U=N(function({value:l,onChange:u,options:N,placeholder:z,invalid:U,className:A="",id:R,disabled:K,size:V,touchSize:G,title:L,multiple:P,renderOption:W,renderValue:Y,valueText:F,readOnly:J=!1,footer:M,changed:Q=!1,auto:X,"aria-describedby":q,"aria-label":Z,"aria-labelledby":_,...ee},te){const[re,ie]=$(!1),[ne,ae]=$(-1),le=D(null),oe=D(null),de=D(null),se=D(null),ce=D([]),ue=()=>se.current??de.current,pe=!!M?.length,me="sm"===V,ve=me?"min-h-7 px-3 py-1 text-xs leading-4":"min-h-(--row-height-menu) px-3 py-2 text-sm leading-5",he=p(me),[fe,be]=$(null),ge=k(),ye=D(re);ye.current=re;const xe=D({buffer:"",timer:null}),ke=w(),Ne=`${ke}-listbox`,we=R??`${ke}-trigger`,$e=e=>`${ke}-opt-${e}`,De=`${ke}-changed`,je=d(),He=X??je,Se=`${ke}-auto`,Te=[q,Q?De:void 0,He?Se:void 0].filter(Boolean).join(" ")||void 0,Ce=j(()=>n(N),[N]),Ee=P?l:[],Oe=u,Ie=f(oe,re,{matchTriggerWidth:!0,...M?.length?{preferredMaxHeight:Number.POSITIVE_INFINITY}:{}}),ze=`${re}|${Ie?.top}|${Ie?.bottom}|${Ie?.maxHeight}|${N.length}`;g(()=>{be(null)},[ze]),g(()=>{const e=de.current;if(!re||!e||null!==fe)return;if(e.scrollHeight<=e.clientHeight+1)return;const t=getComputedStyle(e),r=parseFloat(t.paddingTop)||0;parseFloat(t.paddingBottom);const i=e.getBoundingClientRect().top;let n=0;for(const t of e.querySelectorAll('[role="option"]')){const r=t.getBoundingClientRect().bottom-i+e.scrollTop;if(!(r<=e.clientHeight+.5))break;n=r}n>r&&be(Math.floor(n))},[re,fe,ze]);const Be=P?Ce.findIndex(e=>Ee.includes(e.value)):Ce.findIndex(e=>e.value===l),Ue=P?Ce.filter(e=>Ee.includes(e.value)).map(e=>e.label).join(", ")||void 0:Be>=0?Ce[Be].label:void 0,Ae=!P&&Be>=0?Ce[Be].lang:void 0,Re=P?Ce.filter(e=>Ee.includes(e.value)):Be>=0?[Ce[Be]]:[],Ke=Y&&Re.length?Y(Re):void 0,Ve=void 0!==Ke&&F?F(Re):void 0,Ge=H((e=!0)=>{ie(!1),ae(-1),e&&oe.current?.focus()},[]),Le=H(()=>{K||J||(ae(Be>=0?Be:e(Ce)),ie(!0))},[K,J,Ce,Be]),Pe=H(e=>{const t=Ce[e];if(t&&!t.disabled){if(P){const r=l;return Oe(r.includes(t.value)?r.filter(e=>e!==t.value):[...r,t.value]),void ae(e)}Oe(t.value),Ge()}},[Ce,P,l,Oe,Ge]);S(()=>{if(!re)return;return x(e=>!("Escape"!==e.key||!ye.current)&&(Ge(),!0),ue)},[re,Ge]),S(()=>{if(!re)return;const e=e=>{const t=e.target;le.current?.contains(t)||ue()?.contains(t)||Ge(!1)};document.addEventListener("pointerdown",e);const t=v(()=>Ge(!1));return()=>{document.removeEventListener("pointerdown",e),t()}},[re,Ge]),S(()=>{!re||ne<0||de.current?.querySelector(`#${CSS.escape($e(ne))}`)?.scrollIntoView({block:"nearest"})},[re,ne]);const We=H(e=>{const r=xe.current;r.timer&&clearTimeout(r.timer),r.buffer+=e,r.timer=setTimeout(()=>{r.buffer="",r.timer=null},500);const i=re?ne:Be,n=t(Ce,r.buffer,i);n<0||(re?ae(n):P?(ae(n),ie(!0)):Pe(n))},[re,ne,Be,Ce,Pe,P]),Ye=re?a(N,(e,t)=>{const r=(i=e.value,P?Ee.includes(i):l===i);var i;const n=t===ne;/* @__PURE__ */
5
+ return C("div",{id:$e(t),role:"option",lang:e.description||e.labelStyle||W?void 0:e.lang,"aria-selected":r,"aria-disabled":e.disabled||void 0,onPointerEnter:()=>{e.disabled||ae(t)},onClick:()=>Pe(t),className:`mx-1 cursor-pointer truncate rounded-lg ${ve}${P?" flex items-center gap-2":""}\n ${e.disabled?"cursor-not-allowed text-gray-400":n?"bg-blue-50 text-blue-700":r?"font-medium text-blue-600":"text-gray-700"}`,children:[P&&/* @__PURE__ */E(o,{selected:r}),W?/* @__PURE__ */E("span",{className:"block min-w-0 flex-1 truncate",children:W(e,{selected:r,active:n})}):P?/* @__PURE__ */C("span",{className:"block min-w-0 flex-1",children:[
6
+ /* @__PURE__ */E("span",{lang:e.lang,className:"block truncate",style:I(e),children:e.label}),e.description&&/* @__PURE__ */E("span",{className:he,children:e.description})]}):e.description||e.labelStyle?
7
+ /* @__PURE__ */C(O,{children:[
8
+ /* @__PURE__ */E("span",{lang:e.lang,className:"block truncate",style:I(e),children:e.label}),e.description&&/* @__PURE__ */E("span",{className:he,children:e.description})]}):e.label]},e.value)},ke,"mx-1"):null,Fe=void 0!==Ke?
9
+ /* @__PURE__ */C("span",{className:"relative block min-w-0 truncate",children:[
10
+ /* @__PURE__ */E("span",{"aria-hidden":"true","data-select-value":"",className:"flex min-w-0 items-center gap-2 truncate",children:Ke}),
11
+ /* @__PURE__ */E("span",{lang:void 0===Ve?Ae:void 0,className:"sr-only",children:Ve??Ue})]}):/* @__PURE__ */E("span",{lang:Ae,className:`block truncate ${void 0===Ue?c:""}`,children:Ue??z??" "}),Je={zIndex:h.popup,left:Ie?.left,top:Ie?.top,bottom:Ie?.bottom,width:Ie?.width,maxHeight:Ie?.maxHeight??b,visibility:Ie?void 0:"hidden",...y()},Me=/* @__PURE__ */E("div",{ref:de,id:Ne,role:"listbox","aria-labelledby":_??(Z?void 0:we),"aria-label":_?void 0:Z,"aria-multiselectable":P||void 0,className:pe?"min-h-0 shrink overflow-y-auto py-1":"fixed overflow-y-auto rounded-(--radius-popup) py-1",style:pe?null!==fe?{maxHeight:fe}:void 0:null!==fe?{...Je,maxHeight:fe}:Je,children:Ye}),Qe=pe?/* @__PURE__ */C("div",{ref:se,className:"fixed flex flex-col overflow-hidden rounded-(--radius-popup)",style:Je,children:[Me,
12
+ /* @__PURE__ */E("div",{className:"shrink-0 border-t border-(--rosh-glass-solid-border) px-1 py-1",children:M.map((e,t)=>/* @__PURE__ */C("button",{ref:e=>{ce.current[t]=e},type:"button","data-select-action":"","aria-disabled":e.disabled||void 0,onClick:()=>(e=>{e.disabled||(Ge(),e.onSelect())})(e),onKeyDown:e=>((e,t)=>{const r=(M?.length??0)-1,i=t=>{e.preventDefault(),ce.current[t]?.focus()},n=()=>{e.preventDefault(),oe.current?.focus()};switch(e.key){case"ArrowDown":return void i(Math.min(t+1,r));case"ArrowUp":return void(0===t?n():i(t-1));case"Home":return void i(0);case"End":return void i(r);case"Tab":return e.shiftKey?void(0===t?n():i(t-1)):t<r?void i(t+1):(e.preventDefault(),void Ge());case"Escape":return e.preventDefault(),e.stopPropagation(),void Ge()}})(e,t),className:`flex w-full items-center gap-2 rounded-lg ${ve} text-left rosh-focus-ring focus-visible:ring-2 focus-visible:ring-[color:var(--rosh-focus-ring-solid)] ${e.disabled?"cursor-not-allowed text-ink-faintest":"cursor-pointer text-ink hover:bg-accent-tint hover:text-blue-700"}`,children:[e.icon&&/* @__PURE__ */E(m,{name:e.icon,"aria-hidden":"true",className:"h-4 w-4 shrink-0"}),
13
+ /* @__PURE__ */E("span",{className:"min-w-0 flex-1 truncate",children:e.label})]},e.label))})]}):Me;/* @__PURE__ */
14
+ return C("div",{ref:le,className:"relative",children:[
15
+ /* @__PURE__ */E("button",{ref:oe,id:we,type:"button",role:"combobox","aria-haspopup":"listbox","aria-expanded":re,"aria-controls":re?Ne:void 0,"aria-activedescendant":re&&ne>=0?$e(ne):void 0,"aria-invalid":U||void 0,"aria-describedby":Te,"aria-label":Z,"aria-labelledby":_,title:L,disabled:K,"aria-readonly":J||void 0,onClick:()=>re?Ge():Le(),onKeyDown:t=>{if(!K&&!J)switch(t.key){case"ArrowDown":return t.preventDefault(),void(re?ae(e=>i(Ce,e,1)):Le());case"ArrowUp":return t.preventDefault(),void(re?ae(e=>i(Ce,e,-1)):Le());case"Home":return void(re&&(t.preventDefault(),ae(e(Ce))));case"End":return void(re&&(t.preventDefault(),ae(r(Ce))));case"Enter":return void(re&&(t.preventDefault(),Pe(ne)));case" ":return t.preventDefault(),void(re?Pe(ne):Le());case"Escape":return void(re&&(t.preventDefault(),t.stopPropagation(),Ge()));case"Tab":return re&&pe&&!t.shiftKey?(t.preventDefault(),void ce.current[0]?.focus()):void(re&&Ge(!1));default:1!==t.key.length||t.metaKey||t.ctrlKey||t.altKey||(t.preventDefault(),We(t.key))}},className:s({invalid:U,size:V,readOnly:J,auto:He,className:`${J?"":"pr-8 "}text-left ${A}`.trim()}),children:Q?
16
+ /* @__PURE__ */C("span",{className:"flex min-w-0 items-center gap-1",children:[Fe,
17
+ /* @__PURE__ */E("span",{"aria-hidden":"true","data-select-changed":"",className:"shrink-0",children:"*"})]}):Fe}),Q&&/* @__PURE__ */E("span",{id:De,hidden:!0,children:ge.select.changed}),He&&/* @__PURE__ */E("span",{id:Se,hidden:!0,children:ge.settingView.auto}),!J&&/* @__PURE__ */E(m,{name:"chevron-up-down","aria-hidden":"true",className:`pointer-events-none absolute right-2.5 top-1/2 h-4 w-4 -translate-y-1/2 ${c}`,strokeWidth:2}),
18
+ /* @__PURE__ */C("select",{ref:te,value:l,multiple:P||void 0,onChange:e=>Oe(P?Array.from(e.target.selectedOptions,e=>e.value):e.target.value),disabled:K,"aria-hidden":"true",tabIndex:-1,className:"sr-only",...ee,children:[void 0!==z&&!P&&/* @__PURE__ */E("option",{value:"",disabled:!0,children:z}),
19
+ /* @__PURE__ */E(B,{items:N})]}),re&&T(Qe,document.body)]})}),A=N(function({touchSize:e,...t},r){const i=u(),n=e??"touch";return!i||void 0===t.footer&&void 0===t.changed||t.readOnly?i&&!t.readOnly?/* @__PURE__ */E(z,{ref:r,...t,size:n}):/* @__PURE__ */E(U,{ref:r,...t}):/* @__PURE__ */E(U,{ref:r,...t,size:n})});export{z as NativeSelect,A as Select_default};
@@ -0,0 +1,22 @@
1
+ import{ChartBrush as t}from"./chunk-E6GDAV5R.js";import{ChartDot as e}from"./chunk-CK2YOGUS.js";import{stepPath as a,curvePath as r,areaBetween as o,areaFrom as l}from"./chunk-VFC6QUEN.js";import{ChartDefs as n,MOTION as i,stagger as s,fillFor as c,dashFor as d,maskId as m}from"./chunk-465RRWBY.js";import{ChartSkeleton as h}from"./chunk-3IUPYCW3.js";import{useHighlight as u,highlightOpacity as f}from"./chunk-CNYAHYE6.js";import{ChartTooltip as p}from"./chunk-36VIGB6J.js";import{useDragZoom as g,DragBand as y,ChartZoomSummary as k,tooltipBesideBand as x}from"./chunk-C764JODK.js";import{pairedAxes as v,niceAxis as b,niceMax as M,linearScale as N,axisGutter as w,bandScale as j,ladderScale as $}from"./chunk-2JWPNR2U.js";import{usePlotWidth as V}from"./chunk-MAFUXCPZ.js";import{resolveSeriesColor as z,CHART_INK as A,STATUS_VARS as C}from"./chunk-TZFACUMR.js";import{registerModalEscapeInterceptor as D}from"./chunk-TWVUQUUD.js";import{useShellStrings as R,useShellLocale as W}from"./chunk-GDQJBQ5B.js";import{formatPercent as E,formatPlain as L}from"./chunk-C3QOHMR6.js";import{useRef as S,useState as U,useId as I,useEffect as T}from"react";import{jsx as P,jsxs as B}from"react/jsx-runtime";var O=12,F=16,Q=26,Y=52,G=t=>"number"==typeof t&&Number.isFinite(t);function J({series:J,labels:K,height:H=200,stacked:Z=!1,stackMode:X="value",levels:q,curve:_="linear",tension:tt=0,max:et,yTickCount:at=4,formatValue:rt,formatTooltipValue:ot,tooltipLabels:lt,yAxisLabel:nt,referenceLines:it,labelEndpoints:st=!1,dots:ct,dotVariant:dt="border",pulse:mt=!1,brush:ht=!1,range:ut,onRangeChange:ft,zoomable:pt=!0,columnStrip:gt,onSelect:yt,loading:kt=!1,animate:xt=!0,reveal:vt="left-to-right",fillVariant:bt="gradient",gridStyle:Mt="solid",width:Nt,className:wt,emptyLabel:jt}){const $t=R().charts,Vt=W(),zt=rt??(t=>L(t,Vt)),At=ot??zt,Ct=jt??$t.noData,Dt=S(null),Rt=V(Dt),Wt=Nt??Rt,[Et,Lt]=U(null),[St,Ut]=U(null),{highlighted:It}=u(),Tt=I(),Pt=ut??St,Bt=g(ht&&Pt?Pt[1]-Pt[0]+1:K.length,pt);if(T(()=>{if(null!==Et)return D(t=>"Escape"===t.key&&(Lt(null),!0))},[Et]),kt)/* @__PURE__ */
2
+ return P("div",{className:wt,ref:Dt,children:/* @__PURE__ */P(h,{height:H,width:Nt??Rt})});const Ot=K,Ft=ut??St??[0,Math.max(0,Ot.length-1)],[Qt,Yt]=Ft,Gt=t=>Bt.slice(ht?t.slice(Qt,Yt+1):t),Jt=lt?Gt(lt):void 0,Kt=J.map((t,e)=>({...t,slot:e})).filter(t=>t.data.some(G)).map(t=>({...t,data:Gt(t.data),pointTones:t.pointTones?Gt(t.pointTones):void 0})),Ht=t=>(ht?Qt:0)+(Bt.view?.[0]??0)+t;if(K=Gt(Ot),0===Kt.length||0===K.length)/* @__PURE__ */
3
+ return P("div",{className:wt,ref:Dt,children:/* @__PURE__ */P("p",{className:"flex items-center justify-center text-sm text-gray-500",style:{height:H},children:Ct})});const Zt=K.map((t,e)=>Kt.reduce((t,a)=>t+(G(a.data[e])?a.data[e]:0),0)),Xt=(t,e)=>Zt[e]>0?t/Zt[e]:null,qt=[];if(Z){let t=K.map(()=>0);for(const e of Kt)t=t.map((t,a)=>t+(G(e.data[a])?e.data[a]:0)),qt.push("percent"===X?t.map((t,e)=>Xt(t,e)):[...t])}const _t=!!q&&q.length>0,te=t=>"right"===t.axis,ee=!Z&&!_t&&void 0===et&&Kt.some(te)&&Kt.some(t=>!te(t)),ae=gt&&!Z?gt:null,re=t=>!!ae&&"column"===t.mode,oe=(ee?Kt.filter(t=>!te(t)):Kt).filter(t=>!re(t)),le=ee?Kt.filter(te).flatMap(t=>t.data.filter(G)):[],ne=Z?(qt.at(-1)??[]).filter(G):oe.flatMap(t=>t.data.filter(G)),ie=ee?v([Math.min(0,...ne),Math.max(0,...ne)],[Math.min(0,...le),Math.max(0,...le)],{intervals:at+1,integerLeft:ne.every(Number.isInteger),integerRight:le.every(Number.isInteger)}):null,se=ie?ie.left:Z&&"percent"===X||_t||void 0!==et?null:b(Z?0:Math.min(0,...ne),Math.max(0,...ne),{intervals:at+1,integer:ne.every(Number.isInteger)}),ce=se?se.lo:0,de=Z&&"percent"===X?1:se?se.hi:et??M(Math.max(...ne,0)),me=Z&&"percent"===X?t=>E(Math.round(100*t),0,Vt):zt,he=_t?q:se?se.ticks:N([ce,de],{from:0,to:1}).ticks(at+1),ue=w(he.map(me),Y),fe=ie?w(ie.right.ticks.map(zt),F):F,pe={left:ue,right:Math.max(ue+1,Wt-fe),top:O,bottom:H-Q},ge=j(K.length,{from:pe.left,to:pe.right}),ye=_t?$(q,{from:pe.bottom,to:pe.top}):null,ke=N([ce,de],{from:pe.bottom,to:pe.top}),xe=ke(Math.max(ce,0)),ve=t=>ye?ye(t):ke(t),be=Kt.filter(re),Me=Math.max(0,...K.map((t,e)=>be.reduce((t,a)=>t+Math.max(0,G(a.data[e])?a.data[e]:0),0))),Ne=t=>xe-(Me>0?t/Me:0)*(pe.bottom-pe.top)*(ae??0),we=ie?N([ie.right.lo,ie.right.hi],{from:pe.bottom,to:pe.top}):null,je=t=>we&&te(t)?we:ve,$e=ye?ye.levels.map(t=>({value:t,y:ye(t)})):he.map(t=>({value:t,y:ke(t)})),Ve=t=>e=>{e.preventDefault(),Lt(e=>{const a=(e??0)+t;return Math.min(K.length-1,Math.max(0,a))})},ze=Math.max(1,Math.ceil(K.length/Math.max(1,Math.floor(Wt/96))));/* @__PURE__ */
4
+ return B("div",{className:`relative ${wt??""}`,ref:Dt,children:[
5
+ /* @__PURE__ */B("svg",{width:"100%",height:H,viewBox:`0 0 ${Wt} ${H}`,role:"img","aria-label":$t.overIntervals(Kt.map(t=>t.label),K.length),tabIndex:0,className:"rosh-focus-ring focus-visible:ring-2 focus-visible:ring-[color:var(--rosh-focus-ring-deep)]",onMouseLeave:()=>Lt(null),onBlur:()=>Lt(null),style:pt?{userSelect:"none",touchAction:"pan-y"}:void 0,onKeyDown:t=>{if(yt&&null!==Et&&("Enter"===t.key||" "===t.key))return t.preventDefault(),void yt(Ht(Et));"ArrowRight"===t.key&&Ve(1)(t),"ArrowLeft"===t.key&&Ve(-1)(t)},children:[
6
+ /* @__PURE__ */P("defs",{children:/* @__PURE__ */P("clipPath",{id:Tt,children:/* @__PURE__ */P("rect",{x:pe.left,y:pe.top,width:pe.right-pe.left,height:pe.bottom-pe.top})})}),
7
+ /* @__PURE__ */P(n,{id:Tt,fills:Kt.map((t,e)=>({color:z(t.slot,t.color,t.tone),variant:t.fillVariant??bt})),fadeFrom:Z?.42:.3,reveal:!!xt&&vt}),$e.map(t=>/* @__PURE__ */P("line",{x1:pe.left,y1:t.y,x2:pe.right,y2:t.y,stroke:A.grid,strokeWidth:1,shapeRendering:"crispEdges",strokeDasharray:"dashed"===Mt?"3 3":void 0},`grid-${t.value}`)),
8
+ /* @__PURE__ */P("line",{x1:pe.left,y1:xe,x2:pe.right,y2:xe,stroke:A.axis,strokeWidth:1,shapeRendering:"crispEdges"}),$e.map(t=>/* @__PURE__ */P("text",{x:pe.left-8,y:t.y+4,textAnchor:"end","data-axis-tick":"true",fontSize:11,fill:A.label,style:{fontVariantNumeric:"tabular-nums"},children:me(t.value)},`ytick-${t.value}`)),ie&&$e.map((t,e)=>/* @__PURE__ */P("text",{x:pe.right+8,y:t.y+4,textAnchor:"start","data-axis-tick":"true",fontSize:11,fill:A.label,style:{fontVariantNumeric:"tabular-nums"},children:zt(ie.right.ticks[e])},`ytick-r-${t.value}`)),nt&&/* @__PURE__ */P("text",{x:12,y:(pe.top+pe.bottom)/2,transform:`rotate(-90 12 ${(pe.top+pe.bottom)/2})`,textAnchor:"middle",fontSize:11,fill:A.label,children:nt}),
9
+ /* @__PURE__ */P("g",{clipPath:`url(#${Tt})`,mask:xt&&vt?`url(#${m(Tt)})`:void 0,children:Kt.map((t,e)=>{const n=z(t.slot,t.color,t.tone),m=t.mode??(Z?"area":"line"),h=f(t.key,It);if("step"===m){const e=K.map((e,a)=>({start:ge(a),end:ge.end(a),value:t.data[a]})).filter(t=>G(t.value)).map(e=>({start:e.start,end:e.end,y:je(t)(e.value)}));/* @__PURE__ */
10
+ return P("path",{d:a(e),fill:"none",stroke:n,strokeWidth:2.5,strokeLinecap:"butt",strokeLinejoin:"miter",opacity:h??void 0,className:"rosh-viz-mark"},t.key)}const u=K.map((a,r)=>{const o=Z?qt[e]?.[r]:t.data[r];return G(o)?[ge.center(r),je(t)(o)]:null}).filter(t=>null!==t);if(0===u.length)return null;if("column"===m){const a=Math.max(1,.62*ge.bandwidth),r="solid"===t.fillVariant,o=je(t);return re(t)?/* @__PURE__ */P("g",{opacity:h??void 0,className:"rosh-viz-mark",children:K.map((o,l)=>{const i=t.data[l];if(!G(i)||i<=0)return null;const s=((t,e)=>be.slice(0,be.findIndex(e=>e.key===Kt[t]?.key)).reduce((t,a)=>t+Math.max(0,G(a.data[e])?a.data[e]:0),0))(e,l),c=Ne(s+i),d=Ne(s)-(s>0?1:0);/* @__PURE__ */
11
+ return P("rect",{x:ge.center(l)-a/2,y:c,width:a,height:Math.max(0,d-c),rx:2,fill:t.pointTones?.[l]?C[t.pointTones[l]]:n,fillOpacity:r?1:.55},l)})},t.key):/* @__PURE__ */P("g",{opacity:h??void 0,className:"rosh-viz-mark",children:K.map((l,c)=>{const d=Z?qt[e]?.[c]:t.data[c];if(!G(d))return null;const m=o(d);/* @__PURE__ */
12
+ return P("rect",{x:ge.center(c)-a/2,y:Math.min(m,xe),width:a,height:Math.abs(xe-m),rx:2,fill:n,fillOpacity:r?1:.35,className:xt?i.rise:void 0,style:xt?s(c,26):void 0},c)})},t.key)}const p=r(u,_,tt),g=Z&&e>0?K.map((t,a)=>[ge.center(a),ve(qt[e-1]?.[a]??0)-2]):null,y=g?o(p,g):l(p,u,xe);/* @__PURE__ */
13
+ return B("g",{opacity:h??void 0,className:"rosh-viz-mark",children:[("area"===m||Z)&&
14
+ /* @__PURE__ */P("path",{d:y,fill:c(Tt,e,t.fillVariant??bt,n),stroke:"none"}),
15
+ /* @__PURE__ */P("path",{d:p,fill:"none",stroke:n,strokeWidth:2,strokeLinejoin:"round",strokeLinecap:"round",strokeDasharray:d(t.stroke??(t.forecast?"animated-dashed":"solid")),className:xt&&("animated-dashed"===t.stroke||t.forecast&&!t.stroke)?i.march:void 0})]},t.key)})}),it?.map((t,e)=>{const a=t.color??C[t.tone??"critical"],r=ve(t.value);/* @__PURE__ */
16
+ return B("g",{children:[
17
+ /* @__PURE__ */P("line",{x1:pe.left,y1:r,x2:pe.right,y2:r,stroke:a,strokeWidth:1,strokeDasharray:"5 4"}),t.label&&/* @__PURE__ */P("text",{x:pe.right-4,y:r-5,textAnchor:"end",fontSize:11,fontWeight:600,fill:a,children:t.label})]},`rule-${e}`)}),"none"!==(ct??(st?"last":"none"))&&Kt.map((t,a)=>{if("column"===t.mode)return null;const r=ct??(st?"last":"none"),o=z(t.slot,t.color,t.tone),l=[...t.data].map(G).lastIndexOf(!0),n="all"===r?K.map((t,e)=>e).filter(e=>G(Z?qt[a]?.[e]:t.data[e])):l>=0?[l]:[];/* @__PURE__ */
18
+ return B("g",{children:[n.map(r=>{const n=Z?qt[a]?.[r]:t.data[r];return G(n)?/* @__PURE__ */P(e,{cx:ge.center(r),cy:je(t)(n),color:o,variant:dt,pulse:mt&&r===l,title:`${K[r]}: ${t.label} ${zt(n)}`},r):null}),st&&l>=0&&G(Z?qt[a]?.[l]:t.data[l])&&/* @__PURE__ */P("text",{x:ge.center(l)-10,y:je(t)(Z?qt[a]?.[l]:t.data[l])-9,textAnchor:"end",fontSize:12,fontWeight:600,fill:A.label,style:{fontVariantNumeric:"tabular-nums"},children:zt(Z?qt[a]?.[l]:t.data[l])})]},`dots-${t.key}`)}),K.map((t,e)=>e%ze===0?/* @__PURE__ */P("text",{x:ge.center(e),y:H-8,textAnchor:"middle",fontSize:11,fill:A.label,style:{fontVariantNumeric:"tabular-nums"},children:t},`xtick-${e}`):null),null!==Et&&/* @__PURE__ */P("line",{x1:ge.center(Et),y1:pe.top,x2:ge.center(Et),y2:pe.bottom,stroke:A.axis,strokeWidth:1}),ae&&Me>0&&
19
+ /* @__PURE__ */B("g",{pointerEvents:"none","data-column-strip":"true",children:[
20
+ /* @__PURE__ */P("line",{x1:pe.left,y1:Ne(Me),x2:pe.right,y2:Ne(Me),stroke:A.grid,strokeWidth:1,strokeDasharray:"2 3",shapeRendering:"crispEdges"}),
21
+ /* @__PURE__ */P("text",{x:pe.left+4,y:Ne(Me)-4,fontSize:11,fill:A.label,style:{fontVariantNumeric:"tabular-nums"},children:zt(Me)})]}),Bt.drag&&/* @__PURE__ */P(y,{x0:ge(Bt.drag[0]),x1:ge(Bt.drag[1])+ge.bandwidth,top:pe.top,bottom:pe.bottom}),K.map((t,e)=>/* @__PURE__ */P("rect",{x:ge(e),y:pe.top,width:Math.max(1,ge.bandwidth),height:pe.bottom-pe.top,fill:"transparent",onMouseEnter:()=>Lt(e),onPointerDown:()=>Bt.press(e),onPointerEnter:()=>Bt.over(e),onPointerUp:Bt.release,onClick:yt?()=>yt(Ht(e)):void 0,style:yt?{cursor:"pointer"}:void 0},`hit-${e}`))]}),Bt.view&&/* @__PURE__ */P(k,{from:Jt?.[0]??K[0],to:Jt?.at(-1)??K[K.length-1],count:K.length,total:Z&&"percent"!==X?At(Zt.reduce((t,e)=>t+e,0)):ae?At(be.reduce((t,e)=>t+e.data.filter(G).reduce((t,e)=>t+e,0),0)):void 0,rows:(ae?be:Kt).filter(t=>t.data.some(G)).map(t=>{const e=t.data.filter(G),a=z(t.slot,t.color,t.tone);if(0===e.length)return{key:t.key,label:t.label,color:a,value:"—"};const r=e.reduce((t,e)=>t+e,0),o=Z||"column"===t.mode?At(r):$t.zoomLevel(At(r/e.length),At(Math.max(...e)));return{key:t.key,label:t.label,color:a,value:o}}),onClear:Bt.clear}),ht&&Ot.length>2&&/* @__PURE__ */P(t,{className:"mt-1",labels:Ot,width:Wt,data:J[0]?.data??[],range:Ft,onRangeChange:t=>{ft?ft(t):Ut(t)}}),null!==Et&&
22
+ /* @__PURE__ */P("div",{className:"pointer-events-none absolute top-2 z-10",style:x(ge.center(Et),ge.bandwidth,Wt),children:/* @__PURE__ */P(p,{title:Jt?.[Et]??K[Et],rows:Kt.map((t,e)=>({key:t.key,label:t.label,color:z(t.slot,t.color,t.tone),value:G(t.data[Et])?Z&&"percent"===X?`${E(100*(Xt(t.data[Et],Et)??0),1,Vt)} · ${At(t.data[Et])}`:At(t.data[Et]):void 0})),footnote:Z&&"percent"===X?$t.inBucket(At(Zt[Et])):void 0})})]})}export{J as TimeSeriesChart};
@@ -1,12 +1,12 @@
1
- import{arcPath as e}from"./chunk-VFC6QUEN.js";import{MOTION as t,stagger as a}from"./chunk-465RRWBY.js";import{useHighlight as l}from"./chunk-CNYAHYE6.js";import{ChartTooltip as r}from"./chunk-AGPPZHAH.js";import{angleScale as n}from"./chunk-2JWPNR2U.js";import{resolveSeriesColor as o,CHART_INK as i}from"./chunk-TZFACUMR.js";import{useShellStrings as s,useShellLocale as c}from"./chunk-GDQJBQ5B.js";import{formatPlain as m}from"./chunk-C3QOHMR6.js";import{useId as h,useState as u}from"react";import{jsx as p,jsxs as d}from"react/jsx-runtime";var f=300*Math.PI/180;function g({rows:g,variant:k="track",size:v=300,max:x,formatValue:y,animate:M=!0,className:N,emptyLabel:b,trackGap:j=6}){const C=s().charts,w=c(),P=y??(e=>m(e,w)),R=b??C.nothingToPlot,A=h(),[B,E]=u(null),{highlighted:H}=l();if(0===g.length)/* @__PURE__ */return p("p",{className:`text-sm text-gray-500 ${N??""}`,children:R});const Q=v/2,T=v/2,$=v/2-10,G=x??Math.max(...g.map(e=>e.value),1),U="track"===k?Math.max(6,($-.16*v)/g.length):0,Y=Math.max(1,Math.floor(($-.16*v)/U||1)),z="track"===k?g.slice(0,Y):g,F=Math.min(j,Math.max(1,U-2)),I=n(z.length,.03),J=null!==B?z[B]:void 0;/* @__PURE__ */
1
+ import{arcPath as e}from"./chunk-VFC6QUEN.js";import{MOTION as t,stagger as a}from"./chunk-465RRWBY.js";import{useHighlight as l}from"./chunk-CNYAHYE6.js";import{ChartTooltip as r}from"./chunk-36VIGB6J.js";import{angleScale as n}from"./chunk-2JWPNR2U.js";import{resolveSeriesColor as o,CHART_INK as i}from"./chunk-TZFACUMR.js";import{useShellStrings as s,useShellLocale as c}from"./chunk-GDQJBQ5B.js";import{formatPlain as m}from"./chunk-C3QOHMR6.js";import{useId as h,useState as u}from"react";import{jsx as p,jsxs as d}from"react/jsx-runtime";var f=300*Math.PI/180;function g({rows:g,variant:k="track",size:v=300,max:x,formatValue:y,animate:M=!0,className:N,emptyLabel:b,trackGap:j=6}){const C=s().charts,w=c(),B=y??(e=>m(e,w)),R=b??C.nothingToPlot,E=h(),[P,Q]=u(null),{highlighted:T}=l();if(0===g.length)/* @__PURE__ */return p("p",{className:`text-sm text-gray-500 ${N??""}`,children:R});const $=v/2,G=v/2,I=v/2-10,J=x??Math.max(...g.map(e=>e.value),1),U="track"===k?Math.max(6,(I-.16*v)/g.length):0,V=Math.max(1,Math.floor((I-.16*v)/U||1)),Y="track"===k?g.slice(0,V):g,z=Math.min(j,Math.max(1,U-2)),A=n(Y.length,.03),F=null!==P?Y[P]:void 0;/* @__PURE__ */
2
2
  return d("div",{className:`relative ${N??""}`,children:[
3
- /* @__PURE__ */d("svg",{width:"100%",height:v,viewBox:`0 0 ${v} ${v}`,role:"img","aria-labelledby":A,onMouseLeave:()=>E(null),children:[
4
- /* @__PURE__ */p("title",{id:A,children:"track"===k?C.radialTrack(z.length):C.radialCycle(z.length)}),z.map((l,r)=>{const n=o(r,l.color,l.tone),s=Math.max(0,Math.min(1,l.value/G)),c=((e,t)=>null!==B?B!==e:null!==H&&H!==t)(r,l.key);if("track"===k){const o=$-r*U,m=o-U+F,h=-Math.PI/2;/* @__PURE__ */
5
- return d("g",{opacity:c?.4:1,onMouseEnter:()=>E(r),className:M?t.sweep:void 0,style:M?a(r,70):void 0,children:[
6
- /* @__PURE__ */p("path",{d:e(Q,T,m,o,h,h+f),fill:i.grid}),
7
- /* @__PURE__ */p("path",{d:e(Q,T,m,o,h,h+f*s),fill:n})]},l.key)}const m=.14*v;/* @__PURE__ */
8
- return p("g",{opacity:c?.4:1,onMouseEnter:()=>E(r),children:/* @__PURE__ */p("path",{d:e(Q,T,m,m+($-m)*s,I(r),I(r)+I.step),fill:n})},l.key)})]}),J&&null!==B&&/* @__PURE__ */p("div",{className:"pointer-events-none absolute top-2 left-2 z-10",children:/* @__PURE__ */p(r,{title:J.label,rows:[{key:"value",label:C.value,color:o(B,J.color,J.tone),value:P(J.value)}]})}),
3
+ /* @__PURE__ */d("svg",{width:"100%",height:v,viewBox:`0 0 ${v} ${v}`,role:"img","aria-labelledby":E,onMouseLeave:()=>Q(null),children:[
4
+ /* @__PURE__ */p("title",{id:E,children:"track"===k?C.radialTrack(Y.length):C.radialCycle(Y.length)}),Y.map((l,r)=>{const n=o(r,l.color,l.tone),s=Math.max(0,Math.min(1,l.value/J)),c=((e,t)=>null!==P?P!==e:null!==T&&T!==t)(r,l.key);if("track"===k){const o=I-r*U,m=o-U+z,h=-Math.PI/2;/* @__PURE__ */
5
+ return d("g",{opacity:c?.4:1,onMouseEnter:()=>Q(r),className:M?t.sweep:void 0,style:M?a(r,70):void 0,children:[
6
+ /* @__PURE__ */p("path",{d:e($,G,m,o,h,h+f),fill:i.grid}),
7
+ /* @__PURE__ */p("path",{d:e($,G,m,o,h,h+f*s),fill:n})]},l.key)}const m=.14*v;/* @__PURE__ */
8
+ return p("g",{opacity:c?.4:1,onMouseEnter:()=>Q(r),children:/* @__PURE__ */p("path",{d:e($,G,m,m+(I-m)*s,A(r),A(r)+A.step),fill:n})},l.key)})]}),F&&null!==P&&/* @__PURE__ */p("div",{className:"pointer-events-none absolute top-2 left-2 z-10",children:/* @__PURE__ */p(r,{title:F.label,rows:[{key:"value",label:C.value,color:o(P,F.color,F.tone),value:B(F.value)}]})}),
9
9
  /* @__PURE__ */p("ul",{className:"m-0 mt-3 grid gap-1 p-0",style:{gridTemplateColumns:"repeat(auto-fit,minmax(150px,1fr))"},children:g.map((e,t)=>/* @__PURE__ */d("li",{className:"flex list-none items-center gap-2 text-xs text-gray-600",children:[
10
10
  /* @__PURE__ */p("span",{className:"h-2.5 w-2.5 shrink-0 rounded-sm",style:{backgroundColor:o(t,e.color,e.tone)}}),
11
11
  /* @__PURE__ */p("span",{className:"flex-1 truncate",children:e.label}),
12
- /* @__PURE__ */p("span",{className:"tabular-nums text-gray-800",children:P(e.value)})]},e.key))})]})}export{g as RadialBarChart};
12
+ /* @__PURE__ */p("span",{className:"tabular-nums text-gray-800",children:B(e.value)})]},e.key))})]})}export{g as RadialBarChart};
@@ -1,4 +1,4 @@
1
- import{Card as e}from"./chunk-P3RXXWXN.js";import{Textarea_default as a}from"./chunk-PB7G6CJ7.js";import{Radio_default as l}from"./chunk-NI5FXWK5.js";import{Select_default as r}from"./chunk-GCMCXRIN.js";import{FormField as n}from"./chunk-6KBDNYRW.js";import{Checkbox_default as i}from"./chunk-CGZBDI6C.js";import{Input_default as c}from"./chunk-MAMWQCJ6.js";import{Button_default as o}from"./chunk-NGRTW6Y7.js";import{useState as t}from"react";import{jsx as m,jsxs as d}from"react/jsx-runtime";function s(){const[s,h]=t("pro"),[u,p]=t(!0),[f,g]=t("us");/* @__PURE__ */
1
+ import{Card as e}from"./chunk-P3RXXWXN.js";import{Textarea_default as a}from"./chunk-PB7G6CJ7.js";import{Radio_default as l}from"./chunk-NI5FXWK5.js";import{Select_default as r}from"./chunk-XFH64VIG.js";import{FormField as n}from"./chunk-6KBDNYRW.js";import{Checkbox_default as i}from"./chunk-CGZBDI6C.js";import{Input_default as c}from"./chunk-MAMWQCJ6.js";import{Button_default as o}from"./chunk-EOVXFXVV.js";import{useState as t}from"react";import{jsx as m,jsxs as d}from"react/jsx-runtime";function s(){const[s,h]=t("pro"),[u,p]=t(!0),[f,g]=t("us");/* @__PURE__ */
2
2
  return m("div",{className:"h-full overflow-auto bg-gray-50 p-6",children:/* @__PURE__ */d("form",{className:"mx-auto max-w-2xl space-y-5",onSubmit:e=>e.preventDefault(),children:[
3
3
  /* @__PURE__ */d("div",{children:[
4
4
  /* @__PURE__ */m("h1",{className:"text-xl font-semibold text-gray-900",children:"Account settings"}),
@@ -1,2 +1,2 @@
1
- import{Tooltip as e}from"./chunk-22LRMKLV.js";import{useBrowserLayoutEffect as r}from"./chunk-D65T4H6J.js";import{useShellStrings as t}from"./chunk-GDQJBQ5B.js";import{useRef as o,useEffect as n,useCallback as i}from"react";import{jsx as s}from"react/jsx-runtime";var a=(e,r,t)=>Math.min(t,Math.max(r,e));function l(e,r,t,o,n){return Math.round(a("left"===t||"top"===t?e+r:e-r,o,n))}function u(e,r,t){let o=null;try{o=window.localStorage.getItem(e)}catch{return null}const n=o?parseInt(o,10):NaN;return Number.isNaN(n)?null:a(n,r,t)}function c({width:c,onResize:d,orientation:h="vertical",side:m,min:f,max:p,defaultWidth:v=f,step:g=16,storageKey:b,label:w,hint:z,controls:y,className:x=""}){const P="horizontal"===h,k=t().resizeHandle,N=o(null),D=o({onResize:d,min:f,max:p,side:m});D.current={onResize:d,min:f,max:p,side:m},r(()=>{if(!b)return;const e=u(b,f,p);null!==e&&e!==c&&d(e)},[b]),n(()=>{if(!b)return;const e=window.setTimeout(()=>{try{window.localStorage.setItem(b,String(Math.round(c)))}catch{}},200);return()=>window.clearTimeout(e)},[c,b]);const M=i(()=>{N.current=null,document.body.style.removeProperty("cursor"),document.body.style.removeProperty("user-select")},[]);n(()=>M,[M]);const C=e=>{N.current&&(e.currentTarget.hasPointerCapture?.(N.current.pointer)&&e.currentTarget.releasePointerCapture(N.current.pointer),M())},I="left"===m?"right-0":"right"===m?"left-0":"top"===m?"bottom-0":"top-0",R="left"===m?"right":"right"===m?"left":"top"===m?"bottom":"top",T=P?`absolute inset-x-0 ${I} z-10 flex h-2`:`absolute inset-y-0 ${I} z-10 flex w-2`;/* @__PURE__ */
2
- return s(e,{content:z??k.hint,side:R,delay:600,className:`${T} ${x}`.trim(),children:/* @__PURE__ */s("div",{role:"separator",tabIndex:0,"aria-orientation":h,"aria-label":w??k.label,"aria-valuenow":Math.round(c),"aria-valuemin":f,"aria-valuemax":p,"aria-controls":y,"data-resize-handle":m,onPointerDown:e=>{0===e.button&&(e.preventDefault(),N.current={x:P?e.clientY:e.clientX,width:c,moved:!1,pointer:e.pointerId},e.currentTarget.setPointerCapture?.(e.pointerId),document.body.style.cursor=P?"row-resize":"col-resize",document.body.style.userSelect="none")},onPointerMove:e=>{const r=N.current;if(!r)return;if(0===e.buttons)return void M();const t=(P?e.clientY:e.clientX)-r.x;if(!r.moved){if(Math.abs(t)<3)return;r.moved=!0}const{onResize:o,min:n,max:i,side:s}=D.current;o(l(r.width,t,s,n,i))},onPointerUp:C,onPointerCancel:C,onLostPointerCapture:()=>{N.current&&M()},onDoubleClick:()=>d(a(v,f,p)),onKeyDown:e=>{const r=P?"ArrowDown":"ArrowRight",t=P?"ArrowUp":"ArrowLeft",o=e.key===r?g:e.key===t?-g:null,n=null!==o?l(c,o,m,f,p):"Home"===e.key?f:"End"===e.key?p:"Enter"===e.key?a(v,f,p):null;null!==n&&(e.preventDefault(),n!==c&&d(n))},className:P?"group/resize relative h-full w-full cursor-row-resize touch-none rosh-focus-ring focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[color:var(--rosh-focus-ring-solid)]":"group/resize relative h-full w-full cursor-col-resize touch-none rosh-focus-ring focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[color:var(--rosh-focus-ring-solid)]",children:/* @__PURE__ */s("div",{"aria-hidden":"true",className:P?`absolute inset-x-0 ${I} h-px bg-transparent transition-colors group-hover/resize:bg-[var(--accent-500,var(--rosh-resize-handle))] group-focus-visible/resize:h-0.5 group-focus-visible/resize:bg-[var(--accent-500,var(--rosh-resize-handle))]`:`absolute inset-y-0 ${I} w-px bg-transparent transition-colors group-hover/resize:bg-[var(--accent-500,var(--rosh-resize-handle))] group-focus-visible/resize:w-0.5 group-focus-visible/resize:bg-[var(--accent-500,var(--rosh-resize-handle))]`})})})}export{c as ResizeHandle,u as readStoredWidth,l as resizedWidth};
1
+ import{Tooltip as e}from"./chunk-NJN5IKWO.js";import{useBrowserLayoutEffect as r}from"./chunk-D65T4H6J.js";import{useShellStrings as t}from"./chunk-GDQJBQ5B.js";import{useRef as o,useEffect as n,useCallback as i}from"react";import{jsx as s}from"react/jsx-runtime";var a=(e,r,t)=>Math.min(t,Math.max(r,e));function l(e,r,t,o,n){return Math.round(a("left"===t||"top"===t?e+r:e-r,o,n))}function u(e,r,t){let o=null;try{o=window.localStorage.getItem(e)}catch{return null}const n=o?parseInt(o,10):NaN;return Number.isNaN(n)?null:a(n,r,t)}function c({width:c,onResize:d,orientation:h="vertical",side:m,min:f,max:p,defaultWidth:v=f,step:g=16,storageKey:b,label:w,hint:z,controls:y,className:x=""}){const N="horizontal"===h,P=t().resizeHandle,k=o(null),D=o({onResize:d,min:f,max:p,side:m});D.current={onResize:d,min:f,max:p,side:m},r(()=>{if(!b)return;const e=u(b,f,p);null!==e&&e!==c&&d(e)},[b]),n(()=>{if(!b)return;const e=window.setTimeout(()=>{try{window.localStorage.setItem(b,String(Math.round(c)))}catch{}},200);return()=>window.clearTimeout(e)},[c,b]);const I=i(()=>{k.current=null,document.body.style.removeProperty("cursor"),document.body.style.removeProperty("user-select")},[]);n(()=>I,[I]);const M=e=>{k.current&&(e.currentTarget.hasPointerCapture?.(k.current.pointer)&&e.currentTarget.releasePointerCapture(k.current.pointer),I())},C="left"===m?"right-0":"right"===m?"left-0":"top"===m?"bottom-0":"top-0",T="left"===m?"right":"right"===m?"left":"top"===m?"bottom":"top",$=N?`absolute inset-x-0 ${C} z-10 flex h-2`:`absolute inset-y-0 ${C} z-10 flex w-2`;/* @__PURE__ */
2
+ return s(e,{content:z??P.hint,side:T,delay:600,className:`${$} ${x}`.trim(),children:/* @__PURE__ */s("div",{role:"separator",tabIndex:0,"aria-orientation":h,"aria-label":w??P.label,"aria-valuenow":Math.round(c),"aria-valuemin":f,"aria-valuemax":p,"aria-controls":y,"data-resize-handle":m,onPointerDown:e=>{0===e.button&&(e.preventDefault(),k.current={x:N?e.clientY:e.clientX,width:c,moved:!1,pointer:e.pointerId},e.currentTarget.setPointerCapture?.(e.pointerId),document.body.style.cursor=N?"row-resize":"col-resize",document.body.style.userSelect="none")},onPointerMove:e=>{const r=k.current;if(!r)return;if(0===e.buttons)return void I();const t=(N?e.clientY:e.clientX)-r.x;if(!r.moved){if(Math.abs(t)<3)return;r.moved=!0}const{onResize:o,min:n,max:i,side:s}=D.current;o(l(r.width,t,s,n,i))},onPointerUp:M,onPointerCancel:M,onLostPointerCapture:()=>{k.current&&I()},onDoubleClick:()=>d(a(v,f,p)),onKeyDown:e=>{const r=N?"ArrowDown":"ArrowRight",t=N?"ArrowUp":"ArrowLeft",o=e.key===r?g:e.key===t?-g:null,n=null!==o?l(c,o,m,f,p):"Home"===e.key?f:"End"===e.key?p:"Enter"===e.key?a(v,f,p):null;null!==n&&(e.preventDefault(),n!==c&&d(n))},className:N?"group/resize relative h-full w-full cursor-row-resize touch-none rosh-focus-ring focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[color:var(--rosh-focus-ring-solid)]":"group/resize relative h-full w-full cursor-col-resize touch-none rosh-focus-ring focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[color:var(--rosh-focus-ring-solid)]",children:/* @__PURE__ */s("div",{"aria-hidden":"true",className:N?`absolute inset-x-0 ${C} h-px bg-transparent transition-colors group-hover/resize:bg-[var(--accent-500,var(--rosh-resize-handle))] group-focus-visible/resize:h-0.5 group-focus-visible/resize:bg-[var(--accent-500,var(--rosh-resize-handle))]`:`absolute inset-y-0 ${C} w-px bg-transparent transition-colors group-hover/resize:bg-[var(--accent-500,var(--rosh-resize-handle))] group-focus-visible/resize:w-0.5 group-focus-visible/resize:bg-[var(--accent-500,var(--rosh-resize-handle))]`})})})}export{c as ResizeHandle,u as readStoredWidth,l as resizedWidth};
@@ -1 +1 @@
1
- import{client_default as a}from"./chunk-ZT45XXIB.js";var t=()=>a.get("/auth/numbering-configs/").then(a=>a.data?.results??a.data??[]),e="uploaded:wallpaper";function r(a,t){return"string"!=typeof a||!a||"none"===a||a.startsWith("#")?"":a===e?t||"":a}var l=()=>a.get("/auth/me/wallpaper/").then(a=>a.data),n=(t,e)=>{const r=new FormData;r.append("wallpaper",t);const l=e?{onUploadProgress:a=>e(a.total?Math.round(a.loaded/a.total*100):null)}:void 0;return a.post("/auth/me/wallpaper/",r,l).then(a=>a.data)},p=()=>a.delete("/auth/me/wallpaper/").then(a=>a.data);function o(a){const t=a?.response?.status,e=a?.response?.data,r=Array.isArray(e?.wallpaper)?e.wallpaper[0]:void 0;return r||(413===t?"That picture is too large to use as a wallpaper.":415===t?"That file is not a picture this can use as a wallpaper.":"The wallpaper could not be saved. Please try again.")}export{e as WALLPAPER_PREF_TOKEN,p as deleteWallpaper,t as getNumberingConfigs,l as getWallpaper,n as uploadWallpaper,r as wallpaperSrc,o as wallpaperUploadError};
1
+ import{client_default as a}from"./chunk-3FBDLIQW.js";var t=()=>a.get("/auth/numbering-configs/").then(a=>a.data?.results??a.data??[]),e="uploaded:wallpaper";function r(a,t){return"string"!=typeof a||!a||"none"===a||a.startsWith("#")?"":a===e?t||"":a}var l=()=>a.get("/auth/me/wallpaper/").then(a=>a.data),n=(t,e)=>{const r=new FormData;r.append("wallpaper",t);const l=e?{onUploadProgress:a=>e(a.total?Math.round(a.loaded/a.total*100):null)}:void 0;return a.post("/auth/me/wallpaper/",r,l).then(a=>a.data)},p=()=>a.delete("/auth/me/wallpaper/").then(a=>a.data);function o(a){const t=a?.response?.status,e=a?.response?.data,r=Array.isArray(e?.wallpaper)?e.wallpaper[0]:void 0;return r||(413===t?"That picture is too large to use as a wallpaper.":415===t?"That file is not a picture this can use as a wallpaper.":"The wallpaper could not be saved. Please try again.")}export{e as WALLPAPER_PREF_TOKEN,p as deleteWallpaper,t as getNumberingConfigs,l as getWallpaper,n as uploadWallpaper,r as wallpaperSrc,o as wallpaperUploadError};
@@ -1,2 +1,2 @@
1
- import{Tooltip as e}from"./chunk-22LRMKLV.js";import{jsx as a,jsxs as l}from"react/jsx-runtime";function r({options:r,value:i,onChange:o,onClear:s,columns:n,captions:t=!1,label:c,className:d="","aria-labelledby":u}){/* @__PURE__ */
1
+ import{Tooltip as e}from"./chunk-NJN5IKWO.js";import{jsx as a,jsxs as l}from"react/jsx-runtime";function r({options:r,value:i,onChange:o,onClear:s,columns:n,captions:t=!1,label:c,className:d="","aria-labelledby":u}){/* @__PURE__ */
2
2
  return a("div",{role:"group","aria-label":u?void 0:c,"aria-labelledby":u,style:n?{gridTemplateColumns:`repeat(${n}, minmax(0, 1fr))`}:void 0,className:`grid gap-(--space-8) ${n?"":"grid-cols-[repeat(auto-fill,minmax(58px,1fr))]"} ${d}`.replace(/\s+/g," ").trim(),children:r.map(r=>{const n=r.value===i,c=/* @__PURE__ */l("button",{type:"button","aria-pressed":n,"aria-label":t?void 0:r.label,disabled:r.disabled||void 0,onClick:()=>{n?s?.():o(r.value)},className:`flex w-full min-w-0 flex-col items-center justify-center gap-(--space-4) rounded-(--radius-control) border transition-colors rosh-focus-ring focus-visible:ring-2 focus-visible:ring-[color:var(--rosh-focus-ring-strong)] disabled:cursor-not-allowed disabled:opacity-50 ${t?"px-(--space-4) py-(--space-8)":"p-(--space-4)"} ${n?"border-blue-600 bg-surface text-blue-600 ring-2 ring-blue-400/40":"border-line bg-surface text-ink-faint hover:bg-row-hover hover:text-ink"}`,children:[r.picture,t&&/* @__PURE__ */a("span",{className:"max-w-full truncate text-2xs leading-4",children:r.label})]});return t?/* @__PURE__ */a("div",{className:"flex min-w-0",children:c},r.value):/* @__PURE__ */a(e,{content:r.label,describe:!1,className:"relative flex min-w-0",children:c},r.value)})})}export{r as PictureTiles};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{DataTable as default}from"../chunk-GCP3LGRG.js";import"../chunk-CGZBDI6C.js";import"../chunk-LXL2UCUR.js";import"../chunk-R2VKEMZH.js";import"../chunk-MRJKZWWV.js";import"../chunk-GLE4F5FT.js";import"../chunk-22LRMKLV.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-BB6A5MGA.js";import"../chunk-5R4X7MFQ.js";import"../chunk-TWVUQUUD.js";import"../chunk-GDQJBQ5B.js";import"../chunk-C3QOHMR6.js";
2
+ export{DataTable as default}from"../chunk-WOAMPTZI.js";import"../chunk-LXL2UCUR.js";import"../chunk-CGZBDI6C.js";import"../chunk-R2VKEMZH.js";import"../chunk-MRJKZWWV.js";import"../chunk-WGLHB6WE.js";import"../chunk-NJN5IKWO.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-5FYDNH4Y.js";import"../chunk-LNXBTK7Q.js";import"../chunk-TWVUQUUD.js";import"../chunk-GDQJBQ5B.js";import"../chunk-C3QOHMR6.js";
@@ -0,0 +1,125 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode, Dispatch, SetStateAction, RefObject } from 'react';
3
+
4
+ interface EntityListColumn {
5
+ key: string;
6
+ label: string;
7
+ /** The heading this column takes in a CSV export, when it should differ
8
+ * from what the grid shows. The export request carries a heading per
9
+ * column; a host whose interface is translated but whose exported files
10
+ * stay in one language for whoever opens them passes that language's
11
+ * heading here. Omitted, the export uses `label`. */
12
+ exportLabel?: string;
13
+ defaultWidth?: number;
14
+ minWidth?: number;
15
+ defaultHidden?: boolean;
16
+ sortField?: string;
17
+ headerNode?: ReactNode;
18
+ }
19
+ /** A page-supplied entry in the right-click bulk menu (e.g. invoice Post /
20
+ * Cancel). `onClick` receives the currently-selected rows. Set `divider` to
21
+ * render a separator above the item, `danger` for a destructive tint. */
22
+ interface EntityListContextAction<T = unknown> {
23
+ label: string;
24
+ onClick: (items: T[]) => void;
25
+ danger?: boolean;
26
+ disabled?: boolean;
27
+ divider?: boolean;
28
+ }
29
+ interface EntityListProps<T> {
30
+ items: T[];
31
+ isLoading: boolean;
32
+ emptyState: ReactNode;
33
+ totalCount?: number;
34
+ /** When true and no rows have loaded yet, render {@link ListLoadError}
35
+ * (with a retry) instead of `emptyState` — so a failed fetch reads as an
36
+ * error, not "nothing here". Wire `useInfiniteScroll`'s `isError`. A
37
+ * mid-scroll next-page failure (rows already loaded) keeps the list.
38
+ * Defaults to unset → behaviour unchanged for existing callers. */
39
+ isError?: boolean;
40
+ /** Retry handler for the error state — wire the data source's `refetch`.
41
+ * It also backs the row menu's Refresh item. */
42
+ onRetry?: () => void;
43
+ /** Heading for the error state, e.g. "Couldn't load candidates". Omit for
44
+ * {@link ListLoadError}'s generic "Couldn't load this list" — name the
45
+ * entity where the list has one, so an outage reads as *this* list failing. */
46
+ errorTitle?: string;
47
+ /** Explanatory line under {@link EntityListProps.errorTitle}. Omit for
48
+ * ListLoadError's generic connection/retry message. */
49
+ errorMessage?: string;
50
+ tableId: string;
51
+ columns: EntityListColumn[];
52
+ renderCell: (item: T, colKey: string) => ReactNode;
53
+ getRowId?: (item: T) => string | number;
54
+ sort?: {
55
+ field: string;
56
+ direction: 'asc' | 'desc';
57
+ };
58
+ onSort?: (field: string) => void;
59
+ /** The ticked row ids. The set is the caller's, and it may hold ids that are
60
+ * not among `items`: rows ticked before a search or a filter changed. The
61
+ * list keeps those. The header box, Ctrl/Cmd+A and Select all move only the
62
+ * rows on screen, the count says how many are not shown, and every row
63
+ * action — Copy rows, the export, `contextActions` — gets the ticked rows
64
+ * on screen. Clear selection, and a right-click on an unticked row, drop
65
+ * them. */
66
+ selected: Set<string | number>;
67
+ setSelected: Dispatch<SetStateAction<Set<string | number>>>;
68
+ onRowClick: (item: T) => void;
69
+ onRowHover?: (item: T) => void;
70
+ getRowClassName?: (item: T) => string;
71
+ footerLabel: string;
72
+ footerExtra?: ReactNode;
73
+ sentinelRef?: RefObject<any>;
74
+ isFetchingNextPage?: boolean;
75
+ /** Perm codenames that gate "Save as default for all users" in the column
76
+ * picker. Defaults to `['change_numberingconfig']` (admin-portal's proxy
77
+ * for admin access). Pass `[]` to hide the link entirely. */
78
+ saveDefaultPerms?: string[];
79
+ /** Right-click row menu. Every list has one, with nothing to wire: Open (the
80
+ * row right-clicked), Copy for text selected under the pointer, Copy
81
+ * `<first column>` and Copy rows (the ticked rows as a table of the visible
82
+ * columns in their on-screen order, which pastes into a spreadsheet as
83
+ * cells), Select all, Clear selection, and Refresh when `onRetry` is wired.
84
+ * Provide `exportEndpoint` (a list's `<base>/export_csv/` path, relative to
85
+ * the api base) to add "Export selected to CSV", which downloads just the
86
+ * ticked rows on screen (`?ids=`, honouring the visible/ordered columns),
87
+ * the same rows `contextActions` receives. Provide
88
+ * `contextActions` for domain actions (e.g. invoice Post / Cancel); they sit
89
+ * between the copy items and the selection items. */
90
+ exportEndpoint?: string;
91
+ exportFilename?: string;
92
+ contextActions?: (items: T[]) => EntityListContextAction<T>[];
93
+ }
94
+ /**
95
+ * The canonical pageless data grid for both portals. Wraps `<ResizableTable>`
96
+ * with selection-checkbox logic, keyboard navigation, the standardized list
97
+ * footer, an infinite-scroll sentinel hook-up, and a right-click row menu.
98
+ *
99
+ * Usage:
100
+ *
101
+ * const { sort, onSort } = useSort('mid', 'asc', 'suppliers');
102
+ * const { items, totalCount, isLoading, isFetchingNextPage, sentinelRef } =
103
+ * useInfiniteScroll<Supplier>({ queryKey: ['suppliers', filters],
104
+ * fetchFn: (p) => getSuppliers(p) });
105
+ *
106
+ * <EntityList
107
+ * items={items}
108
+ * totalCount={totalCount}
109
+ * isLoading={isLoading}
110
+ * sentinelRef={sentinelRef}
111
+ * isFetchingNextPage={isFetchingNextPage}
112
+ * tableId="suppliers"
113
+ * columns={SUPPLIER_COLUMNS}
114
+ * renderCell={(s, k) => …}
115
+ * sort={sort} onSort={onSort}
116
+ * selected={selected} setSelected={setSelected}
117
+ * onRowClick={(s) => openEntity('supplier', s.id, s, s.mid, '/suppliers')}
118
+ * exportEndpoint="/suppliers/export_csv/" exportFilename="Suppliers.csv"
119
+ * footerLabel="suppliers"
120
+ * emptyState={<EmptyState message="No suppliers yet." />}
121
+ * />
122
+ */
123
+ declare function EntityList<T>(props: EntityListProps<T>): react_jsx_runtime.JSX.Element;
124
+
125
+ export { type EntityListColumn, type EntityListContextAction, type EntityListProps, EntityList as default };
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ export{EntityList as default}from"../chunk-EH2BNSG3.js";import"../chunk-TMMNCXQT.js";import"../chunk-HNVSVTNC.js";import"../chunk-SI26KESU.js";import"../chunk-UKBXQXDZ.js";import"../chunk-ULJQYXHB.js";import"../chunk-ATMJ5ZPK.js";import"../chunk-G6DKCCWH.js";import"../chunk-CGZBDI6C.js";import"../chunk-4ULRP4Y4.js";import"../chunk-UNQ54QOF.js";import"../chunk-O3MBPAWZ.js";import"../chunk-7ELJQL7J.js";import"../chunk-2QY5BJLA.js";import"../chunk-UGTRSRIW.js";import"../chunk-KC3EX26K.js";import"../chunk-F3ZOO23R.js";import"../chunk-OTITQ3IH.js";import"../chunk-5QFPTDQF.js";import"../chunk-URHGHXDN.js";import"../chunk-EOVXFXVV.js";import"../chunk-UQYNPYF4.js";import"../chunk-TE6R53YD.js";import"../chunk-2UO47XB4.js";import"../chunk-J75ZT2JQ.js";import"../chunk-R2VKEMZH.js";import"../chunk-MRJKZWWV.js";import"../chunk-WGLHB6WE.js";import"../chunk-NJN5IKWO.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-STKJA4PV.js";import"../chunk-5FYDNH4Y.js";import"../chunk-LNXBTK7Q.js";import"../chunk-TWVUQUUD.js";import"../chunk-GDQJBQ5B.js";import"../chunk-C3QOHMR6.js";
@@ -1 +1 @@
1
- export{ListLoadError as default}from"../chunk-CIYMGVZC.js";import"../chunk-NGRTW6Y7.js";import"../chunk-UQYNPYF4.js";import"../chunk-WJ6ZJVAX.js";import"../chunk-2UO47XB4.js";import"../chunk-J75ZT2JQ.js";import"../chunk-R2VKEMZH.js";import"../chunk-MRJKZWWV.js";import"../chunk-22LRMKLV.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-BB6A5MGA.js";import"../chunk-5R4X7MFQ.js";import"../chunk-TWVUQUUD.js";import"../chunk-GDQJBQ5B.js";import"../chunk-C3QOHMR6.js";
1
+ export{ListLoadError as default}from"../chunk-UNQ54QOF.js";import"../chunk-EOVXFXVV.js";import"../chunk-UQYNPYF4.js";import"../chunk-TE6R53YD.js";import"../chunk-2UO47XB4.js";import"../chunk-J75ZT2JQ.js";import"../chunk-R2VKEMZH.js";import"../chunk-MRJKZWWV.js";import"../chunk-NJN5IKWO.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-5FYDNH4Y.js";import"../chunk-LNXBTK7Q.js";import"../chunk-TWVUQUUD.js";import"../chunk-GDQJBQ5B.js";import"../chunk-C3QOHMR6.js";
@@ -0,0 +1,31 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ColumnDef, SortState } from './types.js';
3
+
4
+ interface ResizableTableProps {
5
+ tableId: string;
6
+ columns: ColumnDef[];
7
+ sort?: SortState;
8
+ onSort?: (field: string) => void;
9
+ footer?: React.ReactNode;
10
+ afterBody?: React.ReactNode;
11
+ /** Permission codename(s) that gate the "Save as default for all users" link
12
+ * in the column picker. The shell's `useShellAuth().hasAnyPerm` is queried
13
+ * against this list. Defaults to a single placeholder permission; consumers
14
+ * with no admin gate can pass `[]` to hide the link entirely. */
15
+ saveDefaultPerms?: string[];
16
+ children: (orderedColumns: (ColumnDef & {
17
+ width: number;
18
+ })[]) => React.ReactNode;
19
+ }
20
+ /**
21
+ * Sticky-header, scrollable-body table primitive with:
22
+ * - drag-to-reorder columns (with a blue drop-indicator line)
23
+ * - resize columns by the right-edge handle
24
+ * - hide/show columns via a glass popover picker
25
+ * - admin-only "Save as default for all users" link in the picker
26
+ * - per-user persistence (via the shell-registered apiClient)
27
+ * - mobile-aware selection mode toggle
28
+ */
29
+ declare function ResizableTable({ tableId, columns, sort, onSort, footer, afterBody, saveDefaultPerms, children, }: ResizableTableProps): react_jsx_runtime.JSX.Element;
30
+
31
+ export { ResizableTable as default };
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ export{ResizableTable as default}from"../chunk-HNVSVTNC.js";import"../chunk-SI26KESU.js";import"../chunk-UKBXQXDZ.js";import"../chunk-ULJQYXHB.js";import"../chunk-2QY5BJLA.js";import"../chunk-UGTRSRIW.js";import"../chunk-KC3EX26K.js";import"../chunk-2UO47XB4.js";import"../chunk-J75ZT2JQ.js";import"../chunk-WGLHB6WE.js";import"../chunk-NJN5IKWO.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-STKJA4PV.js";import"../chunk-5FYDNH4Y.js";import"../chunk-LNXBTK7Q.js";import"../chunk-TWVUQUUD.js";import"../chunk-GDQJBQ5B.js";import"../chunk-C3QOHMR6.js";
@@ -0,0 +1,68 @@
1
+ import react__default from 'react';
2
+ import { ColumnDef } from './types.js';
3
+
4
+ /**
5
+ * Resizable + reorderable + hideable column state for `<ResizableTable>`.
6
+ *
7
+ * Reads and persists per-user through the `<ShellPrefsProvider>` adapter
8
+ * (`prefs.columns_{tableId}`), with a 1-second debounce on the save, and reads
9
+ * per-viewport admin defaults through the shared
10
+ * `GET /auth/default-columns/{tableId}?viewport=…` probe.
11
+ *
12
+ * The prefs half used to be a raw `GET /auth/me/` fired from a `[tableId]`
13
+ * effect, outside react-query — so every list mount re-fetched the whole user
14
+ * profile (~1.5 MB on prod), on a client with no cache adapter and no in-flight
15
+ * dedupe, and a screen that also renders a column-aware CSV export paid for it
16
+ * twice. The adapter already holds that profile in one cached query, which is
17
+ * the same object the raw GET was reading `preferences` off (SG#00590).
18
+ *
19
+ * Three consequences worth knowing, because this is NOT behaviour-preserving:
20
+ *
21
+ * - **A `<ShellPrefsProvider>` is now required for server-side persistence.**
22
+ * Without one, `useShellPrefs()` reads empty and drops saves, so column
23
+ * config degrades to localStorage-only. All three consumers that render
24
+ * `<EntityList>`/`<ResizableTable>` mount the provider.
25
+ * - **Prefs and admin defaults resolve independently**, where the raw pair was
26
+ * a single `Promise.all`. If the admin default lands while prefs are still
27
+ * loading it applies first and the user's own config replaces it a beat
28
+ * later, rather than never showing. `useSort` has always behaved this way;
29
+ * the two hooks now agree. The precedence that used to be one `if/else if`
30
+ * is now the `userSavedRef` guard below plus the order the two effects fire
31
+ * in — `tests/columnConfigDefaultsPrecedence.test.tsx` pins both directions.
32
+ * - **A failed save is silent here.** The old `useMutation` let a rejected
33
+ * `PATCH` reach a consumer's global `MutationCache({ onError })` — the admin
34
+ * portal toasted it. The adapter's `save` owns its own failures now, so a
35
+ * consumer that wants that toast raises it inside the adapter.
36
+ *
37
+ * What it does NOT require is a `<QueryClientProvider>` — it used to, for the
38
+ * `useMutation`. `useDefaultColumnConfig` falls back to a client the package
39
+ * owns when no provider is mounted.
40
+ */
41
+ declare function useColumnConfig(tableId: string, defaultColumns: ColumnDef[]): {
42
+ orderedColumns: {
43
+ width: number;
44
+ key: string;
45
+ label: string;
46
+ defaultWidth?: number;
47
+ minWidth?: number;
48
+ defaultHidden?: boolean;
49
+ headerNode?: react__default.ReactNode;
50
+ sortField?: string;
51
+ }[];
52
+ allColumns: {
53
+ key: string;
54
+ label: string;
55
+ hidden: boolean;
56
+ }[];
57
+ onResizeStart: (idx: number, e: react__default.MouseEvent) => void;
58
+ onDragStart: (idx: number) => void;
59
+ onDragOver: (visIdx: number, e: react__default.DragEvent) => void;
60
+ onDrop: (_visIdx: number, e: react__default.DragEvent) => void;
61
+ onDragEnd: () => void;
62
+ toggleColumn: (key: string) => void;
63
+ resetColumns: () => void;
64
+ draggedIdx: number | null;
65
+ dropGap: number | null;
66
+ };
67
+
68
+ export { useColumnConfig };
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ export{useColumnConfig}from"../chunk-UKBXQXDZ.js";import"../chunk-ULJQYXHB.js";import"../chunk-KC3EX26K.js";import"../chunk-D65T4H6J.js";import"../chunk-STKJA4PV.js";
@@ -0,0 +1,55 @@
1
+ import { SortState } from './types.js';
2
+
3
+ /** The part of a column `useSort` reads — `ColumnDef` and `EntityList`'s own
4
+ * column both fit.
5
+ *
6
+ * Not `DataTable`: its columns nest inside groups and it offers a sort on
7
+ * `sortable`, not on `sortField ?? key`. `DataTableColumn` satisfies this
8
+ * interface structurally, so passing one typechecks and then drops sorts the
9
+ * table does offer. `DataTable` owns its own sort state through
10
+ * `onSortChange`. */
11
+ interface SortableColumn {
12
+ key: string;
13
+ sortField?: string;
14
+ }
15
+ /**
16
+ * Sort-state hook used by list pages. Returns:
17
+ * - `sort` — current `{ field, direction }`
18
+ * - `onSort(field)` — toggle direction if same field, else activate asc
19
+ * - `ordering` — DRF-style string (`'-mid'` for desc, `'mid'` for asc) ready
20
+ * to drop into a query-string param.
21
+ *
22
+ * Pass `tableId` (the same id the list gives `<ResizableTable>`/`<EntityList>`)
23
+ * to persist the user's choice alongside their column config. Restore order:
24
+ * per-user pref (`prefs.sort_{tableId}` via the ShellPrefs adapter) → the
25
+ * admin-saved default on `/auth/default-columns/{tableId}/` → the page's
26
+ * `defaultField`/`defaultDir`. localStorage mirrors the last-applied value so
27
+ * the first render (before async prefs arrive) already uses the last-known
28
+ * sort instead of flashing the default and refetching. Without `tableId` the
29
+ * hook is pure in-memory state, exactly as before.
30
+ *
31
+ * The admin default is read through `useDefaultColumnConfig`, shared with
32
+ * `useColumnConfig` so a list page fetches that row once rather than twice
33
+ * (SG#00590). That probe is a react-query query, but this hook still needs no
34
+ * `<QueryClientProvider>` in either form: with no provider above it the probe
35
+ * falls back to a client the package owns (see `useDefaultColumnConfig`), and
36
+ * the `tableId`-less form issues no request at all, as before.
37
+ *
38
+ * Pass `options.columns` (the same array the table gets) and a sort the
39
+ * columns do not offer is replaced by the page default in `sort` and
40
+ * `ordering` — a save on a column since given `sortField: ''`, or on a key
41
+ * whose column now sorts on another `sortField`. Without it that stale save
42
+ * goes out as `?ordering=` on every open; DRF drops a term it cannot order by,
43
+ * so the list comes back unsorted for good. Without `columns` — or while the
44
+ * array is still empty, which is a list page whose columns are not built yet
45
+ * rather than a table that offers no sort — nothing is checked, as before.
46
+ */
47
+ declare function useSort(defaultField: string, defaultDir?: 'asc' | 'desc', tableId?: string, options?: {
48
+ columns?: ReadonlyArray<SortableColumn>;
49
+ }): {
50
+ sort: SortState;
51
+ onSort: (field: string) => void;
52
+ ordering: string;
53
+ };
54
+
55
+ export { type SortableColumn, useSort };
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ export{useSort}from"../chunk-E6FDUFPH.js";import"../chunk-ULJQYXHB.js";import"../chunk-KC3EX26K.js";import"../chunk-D65T4H6J.js";import"../chunk-STKJA4PV.js";
@@ -0,0 +1,28 @@
1
+ import { RefObject } from 'react';
2
+
3
+ /**
4
+ * Keyboard + shift-click navigation for table rows.
5
+ *
6
+ * - J/K or Arrow keys to move focus
7
+ * - Enter to open the focused row (calls `onSelect`)
8
+ * - Space to toggle the focused row's checkbox (calls `onToggle`)
9
+ * — neither while the keyboard focus is on a button or a link the user moved
10
+ * it to: there the key is that control's. One the focus was only left on by
11
+ * a mouse click gives both keys back to the row at the next J/K; see the
12
+ * key handler
13
+ * - Shift+J/K to extend selection while moving
14
+ * - Shift+click to range-select (calls `onSelectRange`, which must ADD the range
15
+ * rather than toggle it — the clicked checkbox is ticked on that assumption)
16
+ * - Cmd/Ctrl+A to select/deselect all (calls `onSelectAll`)
17
+ *
18
+ * Each list instance gates its document-level listeners on `useModalActive`
19
+ * so two open lists don't both react to the same shift-click.
20
+ *
21
+ * `container` is the element that holds this list's rows. Row indices repeat
22
+ * from one list to the next, so without it the row J/K scrolls into view is the
23
+ * first `data-row-idx` match in the document — with two lists open, a row of
24
+ * the one behind.
25
+ */
26
+ declare function useTableNav<T>(items: T[], onSelect: (item: T) => void, onToggle?: (item: T) => void, onSelectAll?: () => void, onSelectRange?: (from: number, to: number) => void, container?: RefObject<HTMLElement | null>): number;
27
+
28
+ export { useTableNav as default };
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ export{useTableNav as default}from"../chunk-ATMJ5ZPK.js";import"../chunk-F3ZOO23R.js";
@@ -4,7 +4,7 @@ export { CurrencyFormat, EMPTY_VALUE, FormatMoneyOptions, TimeAgoOptions, curren
4
4
  export { slugify } from '../utils/slugify.js';
5
5
  export { escapeHtml } from '../utils/escapeHtml.js';
6
6
  export { Rgb, contrastRatio, hexToRgb, parseHexColor, readableInk, relativeLuminance } from '../forms/color.js';
7
- export { ROOT_THEME_ATTRIBUTES, RootThemeOptions, rootIsDark } from '../utils/rootTheme.js';
7
+ export { ROOT_THEME_ATTRIBUTES, RootThemeOptions, rootIsDark, watchRootTheme } from '../utils/rootTheme.js';
8
8
  export { FOCAL_DEFAULT, FOCAL_NUDGE_COARSE, FOCAL_NUDGE_STEP, FocalPoint, focalFromRect, formatFocal, nudgeFocal, parseFocal } from '../forms/imageFocus.js';
9
9
  export { PAGE_MOTION_DURATIONS, PAGE_MOTION_EASING, PAGE_MOTION_STEPS, PageMotion, PageMotionEasing, PageMotionStep, pageMotionMs } from '../tokens/type.js';
10
10
  export { RowRule, ShowWhenCheck, ShowWhenContext, ShowWhenFactData, ShowWhenFacts, ShowWhenRule, ShowWhenValue, WithShowWhen, WithShowWhenFacts, addShowWhenFacts, isShown, lazyShowWhenContext, showWhenFactReaders, showWhenFactsContext, showWhenOf, shownForOption, truthy, withRowRules, withRowsShownWhen, withShowWhen, withShowWhenFacts } from '../forms/showWhenRule.js';
@@ -1 +1 @@
1
- export{slugify}from"../chunk-24AL3CDS.js";export{PAGE_MOTION_DURATIONS,PAGE_MOTION_EASING,PAGE_MOTION_STEPS,pageMotionMs}from"../chunk-DHKRXHJN.js";export{escapeHtml}from"../chunk-G6DKCCWH.js";export{addShowWhenFacts,isShown,lazyShowWhenContext,showWhenFactReaders,showWhenFactsContext,showWhenOf,shownForOption,truthy,withRowRules,withRowsShownWhen,withShowWhen,withShowWhenFacts}from"../chunk-HCP7WOAL.js";export{contrastRatio,hexToRgb,parseHexColor,readableInk,relativeLuminance}from"../chunk-S6OB6HJB.js";export{FOCAL_DEFAULT,FOCAL_NUDGE_COARSE,FOCAL_NUDGE_STEP,focalFromRect,formatFocal,nudgeFocal,parseFocal}from"../chunk-25RR3GQW.js";export{fromDateKey,toDateKey}from"../chunk-2HMNOLKX.js";export{currencyDecimals,currencySymbol,formatBytes,formatMoney,setCurrencyFormats,timeAgo}from"../chunk-GEYM4WN3.js";export{DATE_FORMAT_OPTIONS,TZ_AUTO,formatDate,formatDateTime,formatTime,getUserDateFormat,getUserTimezone,setUserDateFormat,setUserTimezone,syncTimezoneFromProfile}from"../chunk-Y3JW2GW5.js";export{EMPTY_VALUE}from"../chunk-36BRD5J3.js";import"../chunk-LF27WIN2.js";export{ROOT_THEME_ATTRIBUTES,rootIsDark}from"../chunk-5R4X7MFQ.js";
1
+ export{slugify}from"../chunk-24AL3CDS.js";export{PAGE_MOTION_DURATIONS,PAGE_MOTION_EASING,PAGE_MOTION_STEPS,pageMotionMs}from"../chunk-DHKRXHJN.js";export{addShowWhenFacts,isShown,lazyShowWhenContext,showWhenFactReaders,showWhenFactsContext,showWhenOf,shownForOption,truthy,withRowRules,withRowsShownWhen,withShowWhen,withShowWhenFacts}from"../chunk-HCP7WOAL.js";export{FOCAL_DEFAULT,FOCAL_NUDGE_COARSE,FOCAL_NUDGE_STEP,focalFromRect,formatFocal,nudgeFocal,parseFocal}from"../chunk-25RR3GQW.js";export{fromDateKey,toDateKey}from"../chunk-2HMNOLKX.js";export{contrastRatio,hexToRgb,parseHexColor,readableInk,relativeLuminance}from"../chunk-S6OB6HJB.js";export{escapeHtml}from"../chunk-G6DKCCWH.js";export{currencyDecimals,currencySymbol,formatBytes,formatMoney,setCurrencyFormats,timeAgo}from"../chunk-GEYM4WN3.js";export{DATE_FORMAT_OPTIONS,TZ_AUTO,formatDate,formatDateTime,formatTime,getUserDateFormat,getUserTimezone,setUserDateFormat,setUserTimezone,syncTimezoneFromProfile}from"../chunk-Y3JW2GW5.js";export{EMPTY_VALUE}from"../chunk-36BRD5J3.js";import"../chunk-LF27WIN2.js";export{ROOT_THEME_ATTRIBUTES,rootIsDark,watchRootTheme}from"../chunk-LNXBTK7Q.js";
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{AlignmentGrid as default}from"../chunk-DOWE3ZQR.js";import"../chunk-WJ6ZJVAX.js";import"../chunk-22LRMKLV.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-BB6A5MGA.js";import"../chunk-5R4X7MFQ.js";import"../chunk-TWVUQUUD.js";
2
+ export{AlignmentGrid as default}from"../chunk-RDKIYORS.js";import"../chunk-TE6R53YD.js";import"../chunk-NJN5IKWO.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-5FYDNH4Y.js";import"../chunk-LNXBTK7Q.js";import"../chunk-TWVUQUUD.js";
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{BORDER_LINE_STYLES,borderSides,borderStartEach,BorderInput as default}from"../chunk-5JCHYQYI.js";import"../chunk-O64PY7ZJ.js";import"../chunk-7JGR7WPD.js";import"../chunk-GEDS6QO7.js";import"../chunk-2NMW66P5.js";import"../chunk-S6OB6HJB.js";import"../chunk-NWUAATIX.js";import"../chunk-JDQGHQ2C.js";import"../chunk-WVCX2Y3S.js";import"../chunk-AYZY3YNC.js";import"../chunk-CDAJKLGL.js";import"../chunk-UQYNPYF4.js";import"../chunk-WJ6ZJVAX.js";import"../chunk-2UO47XB4.js";import"../chunk-J75ZT2JQ.js";import"../chunk-22LRMKLV.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-BB6A5MGA.js";import"../chunk-5R4X7MFQ.js";import"../chunk-TWVUQUUD.js";import"../chunk-GDQJBQ5B.js";import"../chunk-C3QOHMR6.js";
2
+ export{BORDER_LINE_STYLES,borderSides,borderStartEach,BorderInput as default}from"../chunk-ALTBTO3Z.js";import"../chunk-S4FPYCUU.js";import"../chunk-JDQGHQ2C.js";import"../chunk-BUO7XCYR.js";import"../chunk-7JGR7WPD.js";import"../chunk-QRU55BUS.js";import"../chunk-2NMW66P5.js";import"../chunk-S6OB6HJB.js";import"../chunk-AYZY3YNC.js";import"../chunk-LE5LWALR.js";import"../chunk-CDAJKLGL.js";import"../chunk-UQYNPYF4.js";import"../chunk-TE6R53YD.js";import"../chunk-2UO47XB4.js";import"../chunk-J75ZT2JQ.js";import"../chunk-NJN5IKWO.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-5FYDNH4Y.js";import"../chunk-LNXBTK7Q.js";import"../chunk-TWVUQUUD.js";import"../chunk-GDQJBQ5B.js";import"../chunk-C3QOHMR6.js";
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{BrandAssetEditor as default}from"../chunk-6XYGA252.js";import"../chunk-Q5WPHBDB.js";import"../chunk-6KBDNYRW.js";import"../chunk-XQZL6JDD.js";import"../chunk-25RR3GQW.js";import"../chunk-NWUAATIX.js";import"../chunk-JDQGHQ2C.js";import"../chunk-MI67DI3H.js";import"../chunk-53DO72B2.js";import"../chunk-OAVU46YG.js";import"../chunk-JTMEFXRL.js";import"../chunk-N2RIQ2OU.js";import"../chunk-NGRTW6Y7.js";import"../chunk-UQYNPYF4.js";import"../chunk-WJ6ZJVAX.js";import"../chunk-2UO47XB4.js";import"../chunk-J75ZT2JQ.js";import"../chunk-R2VKEMZH.js";import"../chunk-MRJKZWWV.js";import"../chunk-GLE4F5FT.js";import"../chunk-22LRMKLV.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-BB6A5MGA.js";import"../chunk-5R4X7MFQ.js";import"../chunk-TWVUQUUD.js";import"../chunk-GDQJBQ5B.js";import"../chunk-C3QOHMR6.js";
2
+ export{BrandAssetEditor as default}from"../chunk-O7RR2ZZ2.js";import"../chunk-QGWKM7C3.js";import"../chunk-XQZL6JDD.js";import"../chunk-6KBDNYRW.js";import"../chunk-MI67DI3H.js";import"../chunk-S4FPYCUU.js";import"../chunk-JDQGHQ2C.js";import"../chunk-25RR3GQW.js";import"../chunk-H5NIW2KS.js";import"../chunk-TDAI4J27.js";import"../chunk-JTMEFXRL.js";import"../chunk-FZM3ZPW3.js";import"../chunk-EOVXFXVV.js";import"../chunk-UQYNPYF4.js";import"../chunk-TE6R53YD.js";import"../chunk-2UO47XB4.js";import"../chunk-J75ZT2JQ.js";import"../chunk-R2VKEMZH.js";import"../chunk-MRJKZWWV.js";import"../chunk-WGLHB6WE.js";import"../chunk-NJN5IKWO.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-5FYDNH4Y.js";import"../chunk-LNXBTK7Q.js";import"../chunk-TWVUQUUD.js";import"../chunk-GDQJBQ5B.js";import"../chunk-C3QOHMR6.js";
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{Button_default as default}from"../chunk-NGRTW6Y7.js";import"../chunk-UQYNPYF4.js";import"../chunk-WJ6ZJVAX.js";import"../chunk-R2VKEMZH.js";import"../chunk-MRJKZWWV.js";import"../chunk-22LRMKLV.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-BB6A5MGA.js";import"../chunk-5R4X7MFQ.js";import"../chunk-TWVUQUUD.js";
2
+ export{Button_default as default}from"../chunk-EOVXFXVV.js";import"../chunk-UQYNPYF4.js";import"../chunk-TE6R53YD.js";import"../chunk-R2VKEMZH.js";import"../chunk-MRJKZWWV.js";import"../chunk-NJN5IKWO.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-5FYDNH4Y.js";import"../chunk-LNXBTK7Q.js";import"../chunk-TWVUQUUD.js";
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{ColorPickerPanel,ColorSwatch,HexInput,NO_COLOR_FILL,clampOpacity,colorFill,colorSwatchClasses,ColorPicker as default,stepHue,stepOpacity,stepSquare}from"../chunk-O64PY7ZJ.js";import"../chunk-7JGR7WPD.js";import"../chunk-GEDS6QO7.js";import"../chunk-2NMW66P5.js";import"../chunk-S6OB6HJB.js";import"../chunk-WVCX2Y3S.js";import"../chunk-AYZY3YNC.js";import"../chunk-CDAJKLGL.js";import"../chunk-UQYNPYF4.js";import"../chunk-WJ6ZJVAX.js";import"../chunk-2UO47XB4.js";import"../chunk-J75ZT2JQ.js";import"../chunk-22LRMKLV.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-BB6A5MGA.js";import"../chunk-5R4X7MFQ.js";import"../chunk-TWVUQUUD.js";import"../chunk-GDQJBQ5B.js";import"../chunk-C3QOHMR6.js";
2
+ export{ColorPickerPanel,ColorSwatch,HexInput,NO_COLOR_FILL,clampOpacity,colorFill,colorSwatchClasses,ColorPicker as default,stepHue,stepOpacity,stepSquare}from"../chunk-BUO7XCYR.js";import"../chunk-7JGR7WPD.js";import"../chunk-QRU55BUS.js";import"../chunk-2NMW66P5.js";import"../chunk-S6OB6HJB.js";import"../chunk-AYZY3YNC.js";import"../chunk-LE5LWALR.js";import"../chunk-CDAJKLGL.js";import"../chunk-UQYNPYF4.js";import"../chunk-TE6R53YD.js";import"../chunk-2UO47XB4.js";import"../chunk-J75ZT2JQ.js";import"../chunk-NJN5IKWO.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-5FYDNH4Y.js";import"../chunk-LNXBTK7Q.js";import"../chunk-TWVUQUUD.js";import"../chunk-GDQJBQ5B.js";import"../chunk-C3QOHMR6.js";