@kismet-ux/constellation 1.8.0 → 1.11.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 (414) hide show
  1. package/README.md +36 -0
  2. package/dist/brand/Logo/logo.css +4 -1
  3. package/dist/form/Checkbox/checkbox.css +48 -34
  4. package/dist/form/Checkbox/checkbox.d.ts +5 -0
  5. package/dist/form/Checkbox/checkbox.d.ts.map +1 -1
  6. package/dist/form/Checkbox/checkbox.js +6 -55
  7. package/dist/form/Checkbox/checkbox.js.map +1 -1
  8. package/dist/form/Checkbox/checkbox.module.scss.js +1 -1
  9. package/dist/form/Combobox/combobox.css +35 -0
  10. package/dist/form/Combobox/combobox.d.ts +41 -0
  11. package/dist/form/Combobox/combobox.d.ts.map +1 -0
  12. package/dist/form/Combobox/combobox.js +152 -0
  13. package/dist/form/Combobox/combobox.js.map +1 -0
  14. package/dist/form/Combobox/combobox.module.scss.js +6 -0
  15. package/dist/form/Combobox/combobox.module.scss.js.map +1 -0
  16. package/dist/form/Combobox/index.d.ts +2 -0
  17. package/dist/form/Combobox/index.d.ts.map +1 -0
  18. package/dist/form/DatePicker/date-picker.d.ts.map +1 -1
  19. package/dist/form/DatePicker/date-picker.js +5 -53
  20. package/dist/form/DatePicker/date-picker.js.map +1 -1
  21. package/dist/form/Input/input.css +12 -0
  22. package/dist/form/Input/input.d.ts.map +1 -1
  23. package/dist/form/Input/input.js +23 -3
  24. package/dist/form/Input/input.js.map +1 -1
  25. package/dist/form/Select/select.css +54 -1
  26. package/dist/form/Select/select.d.ts +41 -3
  27. package/dist/form/Select/select.d.ts.map +1 -1
  28. package/dist/form/Select/select.js +43 -21
  29. package/dist/form/Select/select.js.map +1 -1
  30. package/dist/form/Select/select.module.scss.js +2 -2
  31. package/dist/form/index.d.ts +1 -0
  32. package/dist/form/index.d.ts.map +1 -1
  33. package/dist/form.d.ts +1 -1
  34. package/dist/form.js +2 -1
  35. package/dist/form.js.map +1 -1
  36. package/dist/hooks/index.d.ts +1 -0
  37. package/dist/hooks/index.d.ts.map +1 -1
  38. package/dist/hooks/layout/index.d.ts +1 -0
  39. package/dist/hooks/layout/index.d.ts.map +1 -1
  40. package/dist/hooks/layout/use-flip.d.ts +37 -0
  41. package/dist/hooks/layout/use-flip.d.ts.map +1 -0
  42. package/dist/hooks/layout/use-flip.js +128 -0
  43. package/dist/hooks/layout/use-flip.js.map +1 -0
  44. package/dist/hooks/use-motion.d.ts +30 -0
  45. package/dist/hooks/use-motion.d.ts.map +1 -0
  46. package/dist/hooks/use-motion.js +93 -0
  47. package/dist/hooks/use-motion.js.map +1 -0
  48. package/dist/index-2nHZOukj.d.ts +200 -0
  49. package/dist/index-3Ui8TAHy.d.ts +200 -0
  50. package/dist/index-59JuNTZm.d.ts +537 -0
  51. package/dist/index-5QXWn0de.d.ts +200 -0
  52. package/dist/index-98ozinMf.d.ts +498 -0
  53. package/dist/index-Ah3YQTri.d.ts +566 -0
  54. package/dist/index-As2iBOIu.d.ts +527 -0
  55. package/dist/index-B1Vw0zoR.d.ts +566 -0
  56. package/dist/index-B25sLBMr.d.ts +498 -0
  57. package/dist/index-B4B8aA9X.d.ts +272 -0
  58. package/dist/index-B97hn7Xp.d.ts +514 -0
  59. package/dist/{index-BSSQnlm_.d.ts → index-B9B7JjTb.d.ts} +3 -1
  60. package/dist/index-BFWt_pYt.d.ts +566 -0
  61. package/dist/index-BFZp_Pu6.d.ts +566 -0
  62. package/dist/index-BGL4DvKQ.d.ts +293 -0
  63. package/dist/index-BGP_J4I2.d.ts +498 -0
  64. package/dist/index-BHhoIUD_.d.ts +354 -0
  65. package/dist/index-BI0iaWmp.d.ts +222 -0
  66. package/dist/index-BMSRpHb6.d.ts +273 -0
  67. package/dist/index-BRQWKmfq.d.ts +566 -0
  68. package/dist/index-BTARYt96.d.ts +537 -0
  69. package/dist/index-BTrpuZdU.d.ts +566 -0
  70. package/dist/index-BWTwKQsp.d.ts +354 -0
  71. package/dist/index-B_05Skyi.d.ts +566 -0
  72. package/dist/index-BcQqBGNu.d.ts +200 -0
  73. package/dist/index-Be23E9xD.d.ts +298 -0
  74. package/dist/index-Bf44Z8ak.d.ts +514 -0
  75. package/dist/index-Bg42sKjg.d.ts +498 -0
  76. package/dist/index-Bg_0OPMx.d.ts +566 -0
  77. package/dist/index-BgjRk9l7.d.ts +537 -0
  78. package/dist/index-BhLEMn3N.d.ts +537 -0
  79. package/dist/index-BiqECuUj.d.ts +204 -0
  80. package/dist/index-BjUQiAs1.d.ts +130 -0
  81. package/dist/index-BlKqvax0.d.ts +204 -0
  82. package/dist/index-Bnb0JFqx.d.ts +514 -0
  83. package/dist/index-BpSD6t7A.d.ts +566 -0
  84. package/dist/index-BpxKwrv_.d.ts +537 -0
  85. package/dist/index-Brh7JZAQ.d.ts +514 -0
  86. package/dist/index-C-n7hM4G.d.ts +354 -0
  87. package/dist/index-C0wKb28S.d.ts +514 -0
  88. package/dist/index-C129uthr.d.ts +566 -0
  89. package/dist/index-C1ef0QtQ.d.ts +204 -0
  90. package/dist/index-C4BACHGE.d.ts +272 -0
  91. package/dist/index-C5JU8WTE.d.ts +514 -0
  92. package/dist/index-C63UYi-T.d.ts +195 -0
  93. package/dist/index-C8LoYkC7.d.ts +250 -0
  94. package/dist/index-C9-ECLyr.d.ts +566 -0
  95. package/dist/index-C9B1F-mr.d.ts +293 -0
  96. package/dist/index-CAVmbwa8.d.ts +514 -0
  97. package/dist/index-CBz-v5eM.d.ts +184 -0
  98. package/dist/index-CCpdo0n4.d.ts +130 -0
  99. package/dist/index-CDC_ZncW.d.ts +566 -0
  100. package/dist/index-CFQj-KtR.d.ts +184 -0
  101. package/dist/index-CFaxW5hv.d.ts +184 -0
  102. package/dist/index-CG9DKbG9.d.ts +498 -0
  103. package/dist/index-CGhG7YeI.d.ts +354 -0
  104. package/dist/index-CHC6kRbR.d.ts +537 -0
  105. package/dist/index-CH_q-5fk.d.ts +537 -0
  106. package/dist/index-CIK_SmBm.d.ts +200 -0
  107. package/dist/index-CJ1KPFOf.d.ts +537 -0
  108. package/dist/index-CJ5FEGRG.d.ts +537 -0
  109. package/dist/index-CKX2VNKk.d.ts +240 -0
  110. package/dist/index-CL7kYZ90.d.ts +231 -0
  111. package/dist/index-CNl03fCW.d.ts +498 -0
  112. package/dist/index-CO8Jq0pz.d.ts +298 -0
  113. package/dist/index-CQ-aS-rp.d.ts +566 -0
  114. package/dist/index-CQjzBv4q.d.ts +537 -0
  115. package/dist/index-CRVO4SlF.d.ts +537 -0
  116. package/dist/{index-ibcvWtdH.d.ts → index-CRrCqjAW.d.ts} +11 -1
  117. package/dist/index-CSQFy2xe.d.ts +195 -0
  118. package/dist/index-CWM2ewRz.d.ts +566 -0
  119. package/dist/index-CY6Xq36O.d.ts +204 -0
  120. package/dist/index-CYGOs6JT.d.ts +273 -0
  121. package/dist/index-CYPFkjfk.d.ts +204 -0
  122. package/dist/index-C_hJJ1fH.d.ts +527 -0
  123. package/dist/index-CcM-XHTL.d.ts +273 -0
  124. package/dist/index-CdGF_eEO.d.ts +514 -0
  125. package/dist/index-CdJTE9Lh.d.ts +566 -0
  126. package/dist/index-CdOt-pqR.d.ts +537 -0
  127. package/dist/index-CgeR_2Gi.d.ts +220 -0
  128. package/dist/index-CjUoZbDi.d.ts +354 -0
  129. package/dist/index-CjV6KsFc.d.ts +263 -0
  130. package/dist/index-Ck8LtgBW.d.ts +557 -0
  131. package/dist/index-Cknm9FUU.d.ts +299 -0
  132. package/dist/index-Clv3CnXv.d.ts +184 -0
  133. package/dist/index-Cm4wnJ29.d.ts +514 -0
  134. package/dist/index-Cmz3q-CI.d.ts +273 -0
  135. package/dist/index-CnMBzCft.d.ts +514 -0
  136. package/dist/index-CnVW0FnZ.d.ts +272 -0
  137. package/dist/index-CpIHT-uo.d.ts +231 -0
  138. package/dist/index-CtBEDM0b.d.ts +514 -0
  139. package/dist/index-CtVSiQeY.d.ts +130 -0
  140. package/dist/index-Cu107rOs.d.ts +293 -0
  141. package/dist/index-CxyTd3Ag.d.ts +354 -0
  142. package/dist/index-CywSNvOU.d.ts +200 -0
  143. package/dist/index-CzJL7Lro.d.ts +566 -0
  144. package/dist/index-CzJnKY3r.d.ts +272 -0
  145. package/dist/index-D-R9eOxe.d.ts +354 -0
  146. package/dist/index-D-hdgIbs.d.ts +273 -0
  147. package/dist/index-D-slQ9w4.d.ts +537 -0
  148. package/dist/index-D0jdNDaH.d.ts +204 -0
  149. package/dist/index-D1ir--Li.d.ts +566 -0
  150. package/dist/index-D29_-MCZ.d.ts +354 -0
  151. package/dist/index-D2glATpo.d.ts +273 -0
  152. package/dist/index-D6ATtbor.d.ts +298 -0
  153. package/dist/index-D6HktSlo.d.ts +514 -0
  154. package/dist/index-DB4UBCvy.d.ts +537 -0
  155. package/dist/index-DBd0PU9y.d.ts +222 -0
  156. package/dist/index-DE2Nm-iT.d.ts +354 -0
  157. package/dist/index-DEeJuuvm.d.ts +231 -0
  158. package/dist/index-DHhzBSfL.d.ts +498 -0
  159. package/dist/index-DKpWNCb6.d.ts +204 -0
  160. package/dist/index-DMewi97i.d.ts +566 -0
  161. package/dist/index-DN0gtpck.d.ts +354 -0
  162. package/dist/index-DO23vZ-R.d.ts +514 -0
  163. package/dist/index-DTb2-z6E.d.ts +130 -0
  164. package/dist/index-DV-CN7c0.d.ts +231 -0
  165. package/dist/index-DWgCs62z.d.ts +566 -0
  166. package/dist/index-D_6Qu6ia.d.ts +200 -0
  167. package/dist/index-D_vn8O-I.d.ts +293 -0
  168. package/dist/index-Daq4m4Rf.d.ts +514 -0
  169. package/dist/index-Db6cXpr6.d.ts +537 -0
  170. package/dist/index-DbZ1s2E-.d.ts +514 -0
  171. package/dist/index-DbevJPuY.d.ts +354 -0
  172. package/dist/index-DepmPwP7.d.ts +537 -0
  173. package/dist/index-DfnTWQCz.d.ts +514 -0
  174. package/dist/index-Dfu8WhiS.d.ts +273 -0
  175. package/dist/index-DggMYd7c.d.ts +298 -0
  176. package/dist/index-DhS2nQjt.d.ts +200 -0
  177. package/dist/index-Dn3bC8Ki.d.ts +222 -0
  178. package/dist/index-Dn9bGZvU.d.ts +195 -0
  179. package/dist/index-DnDt7A4Y.d.ts +354 -0
  180. package/dist/index-DpdYKBP2.d.ts +498 -0
  181. package/dist/index-DunP9qIK.d.ts +537 -0
  182. package/dist/index-DxO6-qt5.d.ts +498 -0
  183. package/dist/index-ESQ8WM_8.d.ts +130 -0
  184. package/dist/index-GVz409cm.d.ts +222 -0
  185. package/dist/index-HAx-aLZ0.d.ts +273 -0
  186. package/dist/{index-CkQ6wNCc.d.ts → index-Iuzs6nt9.d.ts} +3 -3
  187. package/dist/index-LnEpnlTq.d.ts +566 -0
  188. package/dist/index-Mihuyg_o.d.ts +204 -0
  189. package/dist/index-Mm1i2OdU.d.ts +537 -0
  190. package/dist/index-P0oxVi77.d.ts +537 -0
  191. package/dist/index-Q5JuPFoN.d.ts +293 -0
  192. package/dist/index-RJviLtvo.d.ts +566 -0
  193. package/dist/index-SnQCbfte.d.ts +498 -0
  194. package/dist/index-Th9It0ZT.d.ts +354 -0
  195. package/dist/index-UHHmyQM5.d.ts +272 -0
  196. package/dist/index-VyGmJYQZ.d.ts +537 -0
  197. package/dist/index-WYH70le_.d.ts +195 -0
  198. package/dist/index-Wj9RYtTX.d.ts +273 -0
  199. package/dist/index-Y-wMZeUG.d.ts +298 -0
  200. package/dist/index-ZgohDspB.d.ts +498 -0
  201. package/dist/index-Zo2rSdXz.d.ts +273 -0
  202. package/dist/index-ZwpWgV4n.d.ts +272 -0
  203. package/dist/index-_oZ4knIl.d.ts +272 -0
  204. package/dist/index-an222nAK.d.ts +354 -0
  205. package/dist/index-daV0QTe0.d.ts +537 -0
  206. package/dist/index-eGZu2HLC.d.ts +231 -0
  207. package/dist/index-eswPA0Un.d.ts +204 -0
  208. package/dist/index-gf6-wf_1.d.ts +566 -0
  209. package/dist/index-hdVr9Wrv.d.ts +566 -0
  210. package/dist/index-iygiXYw2.d.ts +537 -0
  211. package/dist/index-jR29ZGLD.d.ts +514 -0
  212. package/dist/index-kHgI28TP.d.ts +272 -0
  213. package/dist/index-lY4_UCOs.d.ts +566 -0
  214. package/dist/index-miXK87yJ.d.ts +231 -0
  215. package/dist/index-mwbGtZkk.d.ts +273 -0
  216. package/dist/index-ru2DFXcm.d.ts +195 -0
  217. package/dist/index-uj1ll_u-.d.ts +204 -0
  218. package/dist/index-vfq-aH7U.d.ts +537 -0
  219. package/dist/index-xqUz9XjP.d.ts +537 -0
  220. package/dist/index.css +74 -18
  221. package/dist/index.d.ts +78 -12
  222. package/dist/index.js +34 -28
  223. package/dist/index.js.map +1 -1
  224. package/dist/internal/use-scroll-lock.d.ts +15 -0
  225. package/dist/internal/use-scroll-lock.d.ts.map +1 -1
  226. package/dist/internal/use-scroll-lock.js +26 -8
  227. package/dist/internal/use-scroll-lock.js.map +1 -1
  228. package/dist/layout/AppContent/app-content.css +1 -1
  229. package/dist/layout/AppContentBands/app-content-bands.css +21 -0
  230. package/dist/layout/AppContentBands/app-content-bands.d.ts +26 -0
  231. package/dist/layout/AppContentBands/app-content-bands.d.ts.map +1 -0
  232. package/dist/layout/AppContentBands/app-content-bands.js +65 -0
  233. package/dist/layout/AppContentBands/app-content-bands.js.map +1 -0
  234. package/dist/layout/AppContentBands/app-content-bands.module.scss.js +6 -0
  235. package/dist/layout/AppContentBands/app-content-bands.module.scss.js.map +1 -0
  236. package/dist/layout/AppContentBands/index.d.ts +2 -0
  237. package/dist/layout/AppContentBands/index.d.ts.map +1 -0
  238. package/dist/layout/AppContentFooter/app-content-footer.css +9 -0
  239. package/dist/layout/AppContentFooter/app-content-footer.d.ts +38 -0
  240. package/dist/layout/AppContentFooter/app-content-footer.d.ts.map +1 -0
  241. package/dist/layout/AppContentFooter/app-content-footer.js +42 -0
  242. package/dist/layout/AppContentFooter/app-content-footer.js.map +1 -0
  243. package/dist/layout/AppContentFooter/app-content-footer.module.scss.js +6 -0
  244. package/dist/layout/AppContentFooter/app-content-footer.module.scss.js.map +1 -0
  245. package/dist/layout/AppContentFooter/index.d.ts +2 -0
  246. package/dist/layout/AppContentFooter/index.d.ts.map +1 -0
  247. package/dist/layout/AppContentMain/app-content-main.css +6 -0
  248. package/dist/layout/AppContentMain/app-content-main.d.ts +37 -0
  249. package/dist/layout/AppContentMain/app-content-main.d.ts.map +1 -0
  250. package/dist/layout/AppContentMain/app-content-main.js +41 -0
  251. package/dist/layout/AppContentMain/app-content-main.js.map +1 -0
  252. package/dist/layout/AppContentMain/app-content-main.module.scss.js +6 -0
  253. package/dist/layout/AppContentMain/app-content-main.module.scss.js.map +1 -0
  254. package/dist/layout/AppContentMain/index.d.ts +2 -0
  255. package/dist/layout/AppContentMain/index.d.ts.map +1 -0
  256. package/dist/layout/AppFooter/app-footer.js +1 -1
  257. package/dist/layout/AppSidebar/app-sidebar.js +1 -1
  258. package/dist/layout/AppSidebarHeader/app-sidebar-header.css +2 -3
  259. package/dist/layout/AppSidebarHeader/app-sidebar-header.d.ts +10 -2
  260. package/dist/layout/AppSidebarHeader/app-sidebar-header.d.ts.map +1 -1
  261. package/dist/layout/AppSidebarHeader/app-sidebar-header.js +12 -32
  262. package/dist/layout/AppSidebarHeader/app-sidebar-header.js.map +1 -1
  263. package/dist/layout/Collapse/collapse.css +4 -1
  264. package/dist/layout/Column/column.css +6 -0
  265. package/dist/layout/Column/column.d.ts.map +1 -1
  266. package/dist/layout/Column/column.js +3 -1
  267. package/dist/layout/Column/column.js.map +1 -1
  268. package/dist/layout/Column/column.module.scss.js +1 -1
  269. package/dist/layout/Container/container.css +43 -1
  270. package/dist/layout/Container/container.d.ts.map +1 -1
  271. package/dist/layout/Container/container.js +38 -7
  272. package/dist/layout/Container/container.js.map +1 -1
  273. package/dist/layout/Container/container.module.scss.js +1 -1
  274. package/dist/layout/Grid/grid.css +28 -0
  275. package/dist/layout/Grid/grid.d.ts.map +1 -1
  276. package/dist/layout/Grid/grid.js +40 -4
  277. package/dist/layout/Grid/grid.js.map +1 -1
  278. package/dist/layout/Grid/grid.module.scss.js +1 -1
  279. package/dist/layout/Row/row.css +42 -0
  280. package/dist/layout/Row/row.d.ts.map +1 -1
  281. package/dist/layout/Row/row.js +5 -3
  282. package/dist/layout/Row/row.js.map +1 -1
  283. package/dist/layout/Row/row.module.scss.js +1 -1
  284. package/dist/layout/Sidebar/sidebar.css +4 -2
  285. package/dist/layout/Sidebar/sidebar.d.ts.map +1 -1
  286. package/dist/layout/Sidebar/sidebar.js +1 -1
  287. package/dist/layout/Sidebar/sidebar.js.map +1 -1
  288. package/dist/layout/index.d.ts +2 -0
  289. package/dist/layout/index.d.ts.map +1 -1
  290. package/dist/layout.d.ts +3 -3
  291. package/dist/layout.js +2 -0
  292. package/dist/layout.js.map +1 -1
  293. package/dist/navigation/DropdownMenu/dropdown-menu.d.ts.map +1 -1
  294. package/dist/navigation/DropdownMenu/dropdown-menu.js +1 -1
  295. package/dist/navigation/DropdownMenu/dropdown-menu.js.map +1 -1
  296. package/dist/navigation/NavUser/nav-user.js +2 -2
  297. package/dist/navigation/Sheet/sheet.css +40 -6
  298. package/dist/navigation/Sheet/sheet.d.ts +22 -0
  299. package/dist/navigation/Sheet/sheet.d.ts.map +1 -1
  300. package/dist/navigation/Sheet/sheet.js +5 -30
  301. package/dist/navigation/Sheet/sheet.js.map +1 -1
  302. package/dist/navigation/Sheet/sheet.module.scss.js +1 -1
  303. package/dist/navigation.d.ts +22 -0
  304. package/dist/row-CuhTBQhK.d.ts +21 -0
  305. package/dist/settings/AppearanceDropdown/appearance-dropdown.js +1 -1
  306. package/dist/settings/AppearanceTabs/appearance-tabs.js +2 -27
  307. package/dist/settings/AppearanceTabs/appearance-tabs.js.map +1 -1
  308. package/dist/tokens.css +59 -17
  309. package/dist/tooltip-1qYeAGE9.d.ts +45 -0
  310. package/dist/tooltip-3IOkYFQ-.d.ts +45 -0
  311. package/dist/tooltip-540OmbEG.d.ts +46 -0
  312. package/dist/tooltip-91Nq_Hl8.d.ts +46 -0
  313. package/dist/tooltip-B56sWYK0.d.ts +46 -0
  314. package/dist/tooltip-BIrIF-4z.d.ts +45 -0
  315. package/dist/tooltip-BOipKW5l.d.ts +46 -0
  316. package/dist/tooltip-BPC0RH8i.d.ts +46 -0
  317. package/dist/tooltip-BST1BOCn.d.ts +45 -0
  318. package/dist/tooltip-BhuxNQwX.d.ts +45 -0
  319. package/dist/tooltip-BpAJwi3K.d.ts +46 -0
  320. package/dist/tooltip-C0LBu2Iu.d.ts +45 -0
  321. package/dist/tooltip-C1ZwALiG.d.ts +45 -0
  322. package/dist/tooltip-C55-HA0w.d.ts +45 -0
  323. package/dist/tooltip-CHn6WuDv.d.ts +46 -0
  324. package/dist/tooltip-CNjH7zKO.d.ts +45 -0
  325. package/dist/tooltip-CSBby1OT.d.ts +45 -0
  326. package/dist/tooltip-CXFRzR0L.d.ts +45 -0
  327. package/dist/tooltip-ChpsbkOU.d.ts +46 -0
  328. package/dist/tooltip-CspTy2ZW.d.ts +46 -0
  329. package/dist/tooltip-CvComAZD.d.ts +46 -0
  330. package/dist/tooltip-D19vhhRn.d.ts +45 -0
  331. package/dist/tooltip-D32S1g-7.d.ts +46 -0
  332. package/dist/tooltip-DAvBN683.d.ts +45 -0
  333. package/dist/tooltip-DQz4_i4m.d.ts +45 -0
  334. package/dist/tooltip-DVYPUAb1.d.ts +46 -0
  335. package/dist/tooltip-DXoSckt9.d.ts +46 -0
  336. package/dist/tooltip-Dtoq3bn_.d.ts +46 -0
  337. package/dist/tooltip-DxO_DWMO.d.ts +46 -0
  338. package/dist/tooltip-DxdGb3dX.d.ts +45 -0
  339. package/dist/tooltip-DzAzC0d7.d.ts +45 -0
  340. package/dist/tooltip-Lk4RpuSh.d.ts +45 -0
  341. package/dist/tooltip-ReFyHDhU.d.ts +45 -0
  342. package/dist/tooltip-_wdlSYAb.d.ts +46 -0
  343. package/dist/{tooltip-XagXjWLB.d.ts → tooltip-cjwkBINy.d.ts} +4 -0
  344. package/dist/tooltip-nKcM19C9.d.ts +45 -0
  345. package/dist/types/layout/container.d.ts +30 -1
  346. package/dist/types/layout/container.d.ts.map +1 -1
  347. package/dist/types/layout/grid.d.ts +42 -0
  348. package/dist/types/layout/grid.d.ts.map +1 -1
  349. package/dist/types/layout/row.d.ts +7 -0
  350. package/dist/types/layout/row.d.ts.map +1 -1
  351. package/dist/typography/Typography/typography-variants.d.ts +3 -0
  352. package/dist/typography/Typography/typography-variants.d.ts.map +1 -1
  353. package/dist/typography/Typography/typography-variants.js +25 -0
  354. package/dist/typography/Typography/typography-variants.js.map +1 -1
  355. package/dist/typography/Typography/typography.css +105 -41
  356. package/dist/typography/Typography/typography.d.ts +20 -0
  357. package/dist/typography/Typography/typography.d.ts.map +1 -1
  358. package/dist/typography/Typography/typography.js +11 -2
  359. package/dist/typography/Typography/typography.js.map +1 -1
  360. package/dist/typography/Typography/typography.module.scss.js +1 -1
  361. package/dist/typography-CTGVc_Gg.d.ts +41 -0
  362. package/dist/typography.d.ts +2 -2
  363. package/dist/ui/Alert/alert-provider.d.ts.map +1 -1
  364. package/dist/ui/Alert/alert-provider.js +1 -1
  365. package/dist/ui/Alert/alert-provider.js.map +1 -1
  366. package/dist/ui/Button/button-variants.d.ts +1 -0
  367. package/dist/ui/Button/button-variants.d.ts.map +1 -1
  368. package/dist/ui/Button/button-variants.js +3 -0
  369. package/dist/ui/Button/button-variants.js.map +1 -1
  370. package/dist/ui/Button/button.css +146 -77
  371. package/dist/ui/Button/button.d.ts +4 -0
  372. package/dist/ui/Button/button.d.ts.map +1 -1
  373. package/dist/ui/Button/button.js +8 -2
  374. package/dist/ui/Button/button.js.map +1 -1
  375. package/dist/ui/Button/button.module.scss.js +1 -1
  376. package/dist/ui/Chip/chip.css +32 -11
  377. package/dist/ui/Chip/chip.d.ts +16 -0
  378. package/dist/ui/Chip/chip.d.ts.map +1 -1
  379. package/dist/ui/Chip/chip.js +4 -2
  380. package/dist/ui/Chip/chip.js.map +1 -1
  381. package/dist/ui/CodeBlock/code-block.css +8 -3
  382. package/dist/ui/Dialog/dialog.css +70 -0
  383. package/dist/ui/Dialog/dialog.d.ts +45 -2
  384. package/dist/ui/Dialog/dialog.d.ts.map +1 -1
  385. package/dist/ui/Dialog/dialog.js +256 -7
  386. package/dist/ui/Dialog/dialog.js.map +1 -1
  387. package/dist/ui/Dialog/dialog.module.scss.js +1 -1
  388. package/dist/ui/Icon/icon.css +14 -7
  389. package/dist/ui/ProgressBar/progress-bar.css +10 -3
  390. package/dist/ui/StatCard/stat-card.css +13 -0
  391. package/dist/ui/StatCard/stat-card.d.ts +9 -0
  392. package/dist/ui/StatCard/stat-card.d.ts.map +1 -1
  393. package/dist/ui/StatCard/stat-card.js +2 -2
  394. package/dist/ui/StatCard/stat-card.js.map +1 -1
  395. package/dist/ui/StatusDot/status-dot.css +4 -1
  396. package/dist/ui/StepProgress/step-progress.css +12 -4
  397. package/dist/ui/Switch/switch.css +6 -2
  398. package/dist/ui/Tooltip/tooltip.d.ts.map +1 -1
  399. package/dist/ui/Tooltip/tooltip.js +1 -1
  400. package/dist/ui/Tooltip/tooltip.js.map +1 -1
  401. package/dist/ui.d.ts +3 -3
  402. package/dist/user/UserInfo/user-info.js +1 -1
  403. package/dist/utils/index.d.ts +1 -0
  404. package/dist/utils/index.d.ts.map +1 -1
  405. package/dist/utils/portal.d.ts +34 -0
  406. package/dist/utils/portal.d.ts.map +1 -0
  407. package/dist/utils/portal.js +40 -0
  408. package/dist/utils/portal.js.map +1 -0
  409. package/dist/utils.d.ts +35 -1
  410. package/dist/utils.js +1 -0
  411. package/dist/utils.js.map +1 -1
  412. package/package.json +3 -2
  413. package/src/styles/_mixins.scss +30 -0
  414. package/vite-plugin.mjs +7 -2
package/dist/index.css CHANGED
@@ -1,3 +1,4 @@
1
+ @charset "UTF-8";
1
2
  a,
2
3
  abbr,
3
4
  acronym,
@@ -252,7 +253,12 @@ svg {
252
253
  --warning-selected: rgba(255, 176, 32, 0.075);
253
254
  --success-main: #0d9467;
254
255
  --success-dark: #085c40;
255
- --success-emphasis: #0d9467;
256
+ /*
257
+ * 700, not 600. Emphasis is INK, and green is the family where the 600 step
258
+ * is still too light to carry it: $emerald-600 measures 3.85:1 on white
259
+ * against AA's 4.5, where every other family's 600 clears it. 700 is 8.0:1.
260
+ */
261
+ --success-emphasis: #085c40;
256
262
  --success-light: rgba(16, 185, 129, 0.75);
257
263
  --success-contrast: #ffffff;
258
264
  --success-focus: rgba(16, 185, 129, 0.25);
@@ -284,7 +290,7 @@ svg {
284
290
  --action-disabled: rgba(94, 106, 125, 0.5);
285
291
  --action-disabled-background: rgba(94, 106, 125, 0.1);
286
292
  --action-focus: rgba(94, 106, 125, 0.25);
287
- --action-hover: rgba(94, 106, 125, 0.075);
293
+ --action-hover: rgba(94, 106, 125, 0.125);
288
294
  --action-selected: rgba(94, 106, 125, 0.25);
289
295
  --avatar-fallback: rgba(94, 106, 125, 0.25);
290
296
  --common-black-main: #151a23;
@@ -412,6 +418,33 @@ svg {
412
418
  --size-10: 5rem;
413
419
  --size-11: 5.5rem;
414
420
  --size-12: 6rem;
421
+ /*
422
+ * Half steps, for dense UI.
423
+ *
424
+ * A list row, a chip strip or a badge cluster wants 4-6px between things,
425
+ * and the whole-number scale starts at 8px — which is why callers kept
426
+ * reaching past `gap` for a hand-written `gap: 0.3rem`. Named with a dash
427
+ * because `--size-0.5` is not a usable identifier.
428
+ */
429
+ --size-0-5: 0.25rem;
430
+ --size-1-5: 0.75rem;
431
+ /*
432
+ * ── Measure ────────────────────────────────────────────────────────────
433
+ *
434
+ * How wide content is allowed to get, as opposed to how wide it CAN get.
435
+ * A layout that only answers "fill the space" reads fine on a laptop and
436
+ * badly on a 27-inch monitor, where a row of one-line items stretches its
437
+ * last column a metre from its first.
438
+ *
439
+ * `text` — a single column of prose. Character-based, so it follows the
440
+ * font rather than a guess in pixels.
441
+ * `content`— the default working width for forms, lists and cards.
442
+ * `wide` — dense, tabular or multi-column work that earns the room: a
443
+ * till, a dashboard, an inventory grid.
444
+ */
445
+ --measure-text: 68ch;
446
+ --measure-content: 1100px;
447
+ --measure-wide: 1600px;
415
448
  --appbar-height: 64px;
416
449
  --footer-height: 52px;
417
450
  --main-body-height: calc(100vh - var(--appbar-height) - var(--footer-height));
@@ -451,63 +484,70 @@ PALETTE - DARK MODE
451
484
  --inherit-selected: rgba(255, 255, 255, 0.12);
452
485
  --primary-main: #0ea5e9;
453
486
  --primary-dark: #0369a1;
454
- --primary-emphasis: #7dd3fc;
487
+ --primary-emphasis: #0ea5e9;
455
488
  --primary-light: #38bdf8;
456
489
  --primary-contrast: #0d1017;
457
490
  --primary-focus: #38bdf8;
458
491
  --primary-focus-visible: #38bdf8;
459
492
  --primary-hover: rgba(125, 211, 252, 0.16);
460
- --primary-outlined-border: #7dd3fc;
493
+ /*
494
+ * SOLID 500, not the 300 tint. 25-400 are alpha shades of the same hue, so
495
+ * `$rose-300` is `rgba(#f43f5e, .5)` — as a border it composites fine, but
496
+ * these tokens are also the INK of every outlined Button and Chip, and half
497
+ * an opacity over the dark ground measured 2.0:1 against AA's 4.5. The 500s
498
+ * are the bright solids these were always meant to be: rose lands at 4.6:1.
499
+ */
500
+ --primary-outlined-border: #0ea5e9;
461
501
  --primary-selected: rgba(125, 211, 252, 0.12);
462
502
  --secondary-main: #8b5cf6;
463
503
  --secondary-dark: #462e7b;
464
- --secondary-emphasis: rgba(139, 92, 246, 0.5);
504
+ --secondary-emphasis: #9970f7;
465
505
  --secondary-light: rgba(139, 92, 246, 0.75);
466
506
  --secondary-contrast: #ffffff;
467
507
  --secondary-focus: rgba(139, 92, 246, 0.5);
468
508
  --secondary-focus-visible: rgba(139, 92, 246, 0.5);
469
509
  --secondary-hover: rgba(139, 92, 246, 0.1);
470
- --secondary-outlined-border: rgba(139, 92, 246, 0.5);
510
+ --secondary-outlined-border: #9970f7;
471
511
  --secondary-selected: rgba(139, 92, 246, 0.075);
472
512
  --destructive-main: #f43f5e;
473
513
  --destructive-dark: #7a202f;
474
- --destructive-emphasis: rgba(244, 63, 94, 0.5);
514
+ --destructive-emphasis: #f43f5e;
475
515
  --destructive-light: rgba(244, 63, 94, 0.75);
476
516
  --destructive-contrast: #ffffff;
477
517
  --destructive-focus: rgba(244, 63, 94, 0.5);
478
518
  --destructive-focus-visible: rgba(244, 63, 94, 0.5);
479
519
  --destructive-hover: rgba(244, 63, 94, 0.1);
480
- --destructive-outlined-border: rgba(244, 63, 94, 0.5);
520
+ --destructive-outlined-border: #f43f5e;
481
521
  --destructive-selected: rgba(244, 63, 94, 0.075);
482
522
  --warning-main: #ffb020;
483
523
  --warning-dark: #805810;
484
- --warning-emphasis: rgba(255, 176, 32, 0.5);
524
+ --warning-emphasis: #ffb020;
485
525
  --warning-light: rgba(255, 176, 32, 0.75);
486
526
  --warning-contrast: #0d1017;
487
527
  --warning-focus: rgba(255, 176, 32, 0.5);
488
528
  --warning-focus-visible: rgba(255, 176, 32, 0.5);
489
529
  --warning-hover: rgba(255, 176, 32, 0.1);
490
- --warning-outlined-border: rgba(255, 176, 32, 0.5);
530
+ --warning-outlined-border: #ffb020;
491
531
  --warning-selected: rgba(255, 176, 32, 0.075);
492
532
  --success-main: #10b981;
493
533
  --success-dark: #085c40;
494
- --success-emphasis: rgba(16, 185, 129, 0.5);
534
+ --success-emphasis: #10b981;
495
535
  --success-light: rgba(16, 185, 129, 0.75);
496
536
  --success-contrast: #0d1017;
497
537
  --success-focus: rgba(16, 185, 129, 0.5);
498
538
  --success-focus-visible: rgba(16, 185, 129, 0.5);
499
539
  --success-hover: rgba(16, 185, 129, 0.1);
500
- --success-outlined-border: rgba(16, 185, 129, 0.5);
540
+ --success-outlined-border: #10b981;
501
541
  --success-selected: rgba(16, 185, 129, 0.075);
502
542
  --info-main: #3688b3;
503
543
  --info-dark: #1b5276;
504
- --info-emphasis: #96c4dd;
544
+ --info-emphasis: #4a94bb;
505
545
  --info-light: #7bb6d4;
506
546
  --info-contrast: #ffffff;
507
547
  --info-focus: #5fa6cb;
508
548
  --info-focus-visible: #5fa6cb;
509
549
  --info-hover: rgba(54, 136, 179, 0.1);
510
- --info-outlined-border: #96c4dd;
550
+ --info-outlined-border: #3688b3;
511
551
  --info-selected: rgba(54, 136, 179, 0.075);
512
552
  --slate-main: #5e6a7d;
513
553
  --slate-dark: #333c4a;
@@ -516,14 +556,16 @@ PALETTE - DARK MODE
516
556
  --slate-contrast: #0d1017;
517
557
  --slate-focus: rgba(255, 255, 255, 0.24);
518
558
  --slate-focus-visible: rgba(255, 255, 255, 0.32);
519
- --slate-hover: rgba(255, 255, 255, 0.08);
520
- --slate-outlined-border: rgba(255, 255, 255, 0.4);
559
+ --slate-hover: rgba(255, 255, 255, 0.12);
560
+ /* $white-40 composited to 3.82:1 as button ink; 56% clears AA and still
561
+ reads as the quiet neutral rather than as primary text. */
562
+ --slate-outlined-border: rgba(255, 255, 255, 0.56);
521
563
  --slate-selected: rgba(255, 255, 255, 0.08);
522
564
  --action-active: rgba(255, 255, 255, 0.64);
523
565
  --action-disabled: rgba(255, 255, 255, 0.32);
524
566
  --action-disabled-background: rgba(255, 255, 255, 0.08);
525
567
  --action-focus: rgba(255, 255, 255, 0.24);
526
- --action-hover: rgba(255, 255, 255, 0.08);
568
+ --action-hover: rgba(255, 255, 255, 0.12);
527
569
  --action-selected: rgba(255, 255, 255, 0.16);
528
570
  --avatar-fallback: rgba(255, 255, 255, 0.16);
529
571
  --background-default: #0d1017;
@@ -655,7 +697,7 @@ main {
655
697
  flex-direction: column;
656
698
  gap: var(--size-4);
657
699
  height: 100%;
658
- overflow: hidden;
700
+ overflow-y: scroll;
659
701
  padding: var(--main-padding-width) var(--main-padding-height);
660
702
  position: relative;
661
703
  }
@@ -708,6 +750,20 @@ a {
708
750
  button {
709
751
  -webkit-appearance: button;
710
752
  background-image: none;
753
+ }
754
+
755
+ /*
756
+ * `display` is a DEFAULT, so it ships at zero specificity through `:where()`.
757
+ *
758
+ * It used to live in the rule above, where `[type='button']:not([role='checkbox'])`
759
+ * scores 0,2,0 — enough to beat a component's own `.item { display: flex }` at
760
+ * 0,1,0. So every Constellation button that set its own display was silently
761
+ * forced back to `inline-flex`. That LOOKED correct anywhere the button was a
762
+ * flex or grid child, because those layouts blockify their items; drop one into
763
+ * a plain block container — a SelectGroup, say — and the items flow inline
764
+ * instead of stacking.
765
+ */
766
+ :where([type=button]:not([role=checkbox]), [type=reset], [type=submit], button) {
711
767
  display: inline-flex;
712
768
  }
713
769
 
package/dist/index.d.ts CHANGED
@@ -1,21 +1,21 @@
1
1
  export { Logo, LogoProps } from './brand.js';
2
- export { C as Checkbox, a as CheckboxProps, D as DatePicker, b as DatePickerProps, F as FormTheme, L as Label, c as LabelProps, S as Select, d as SelectAlign, e as SelectContent, f as SelectContentProps, g as SelectField, h as SelectFieldProps, i as SelectGroup, j as SelectItem, k as SelectPosition, l as SelectProps, m as SelectSeparator, n as SelectSide, o as SelectTrigger, p as SelectValue } from './index-ibcvWtdH.js';
2
+ export { C as Checkbox, a as CheckboxProps, b as Combobox, c as ComboboxOption, d as ComboboxProps, D as DatePicker, e as DatePickerProps, F as FormTheme, L as Label, f as LabelProps, S as Select, g as SelectAlign, h as SelectContent, i as SelectContentProps, j as SelectField, k as SelectFieldProps, l as SelectGroup, m as SelectItem, n as SelectPosition, o as SelectProps, p as SelectSeparator, q as SelectSide, r as SelectTrigger, s as SelectValue, t as __Surface } from './index-2nHZOukj.js';
3
3
  export { I as Input, a as InputBaseProps } from './input-Cp5LET5i.js';
4
- import { S as SidebarContextValue } from './index-BSSQnlm_.js';
5
- export { A as AppContent, a as AppFooter, b as AppFooterProps, c as AppShell, d as AppShellProps, e as AppSidebar, f as AppSidebarHeader, g as AppSidebarHeaderProps, h as AppSidebarProps, C as Collapse, i as CollapseProps, j as Column, k as ColumnProps, l as Container, m as ContainerProps, G as Grid, n as GridColumns, o as GridProps, R as Row, p as Sidebar, q as SidebarContent, r as SidebarFooter, s as SidebarGroup, t as SidebarGroupAction, u as SidebarGroupContent, v as SidebarGroupLabel, w as SidebarHeader, x as SidebarInput, y as SidebarInset, z as SidebarMenu, B as SidebarMenuAction, D as SidebarMenuBadge, E as SidebarMenuButton, F as SidebarMenuItem, H as SidebarMenuSkeleton, I as SidebarMenuSub, J as SidebarMenuSubButton, K as SidebarMenuSubItem, L as SidebarProvider, M as SidebarRail, N as SidebarTrigger, O as SidebarVariant, P as Skeleton } from './index-BSSQnlm_.js';
6
- import { A as AlertContextValue, S as SortState } from './index-CkQ6wNCc.js';
7
- export { a as Alert, b as AlertBanner, c as AlertBannerProps, d as AlertDescription, e as AlertMessage, f as AlertProps, g as AlertProvider, h as AlertTheme, i as AlertTitle, j as Avatar, k as AvatarFallback, l as AvatarFallbackProps, m as AvatarImage, n as AvatarImageProps, o as AvatarProps, C as Chip, p as ChipProps, q as CodeBlock, r as CodeBlockProps, D as DevIndicator, s as DevIndicatorProps, t as Dialog, u as DialogClose, v as DialogCloseProps, w as DialogContent, x as DialogContentProps, y as DialogDescription, z as DialogFooter, B as DialogHeader, E as DialogOverlay, F as DialogPortal, G as DialogProps, H as DialogTitle, I as DialogTrigger, J as DialogTriggerProps, K as EmptyState, L as EmptyStateProps, M as Icon, N as IconProps, O as List, P as ListItem, Q as ListItemProps, R as ListProps, T as Pagination, U as PaginationProps, V as ProgressBar, W as ProgressBarProps, X as PushAlertInput, Y as Separator, Z as SeparatorProps, _ as SortContextValue, $ as SortDirection, a0 as StatCard, a1 as StatCardDirection, a2 as StatCardProps, a3 as StatCardSize, a4 as StatCardTheme, a5 as StatCardVariant, a6 as StatusDot, a7 as StatusDotProps, a8 as Step, a9 as StepProgress, aa as StepProgressProps, ab as Switch, ac as SwitchProps, ad as Table, ae as TableActionCell, af as TableActionCellProps, ag as TableActionItem, ah as TableBody, ai as TableBodyProps, aj as TableCard, ak as TableCell, al as TableFooter, am as TableHead, an as TableHeader, ao as TableRow, ap as TableSortableHeader, aq as TableSortableHeaderProps, ar as TableToolbar, as as TableToolbarProps, at as Toggle, au as ToggleGroup, av as ToggleGroupProps, aw as ToggleProps, ax as TrendDirection, ay as persistAlert, az as statusDotVariants } from './index-CkQ6wNCc.js';
8
- export { R as RowProps } from './row-CS9-talZ.js';
4
+ import * as React from 'react';
5
+ import { S as SidebarContextValue } from './index-BWTwKQsp.js';
6
+ export { A as AppContent, a as AppContentFooter, b as AppContentFooterProps, c as AppContentMain, d as AppContentMainProps, e as AppFooter, f as AppFooterProps, g as AppShell, h as AppShellProps, i as AppSidebar, j as AppSidebarHeader, k as AppSidebarHeaderProps, l as AppSidebarProps, C as Collapse, m as CollapseProps, n as Column, o as ColumnProps, p as Container, q as ContainerProps, G as Grid, r as GridColumns, s as GridProps, R as Row, t as Sidebar, u as SidebarContent, v as SidebarFooter, w as SidebarGroup, x as SidebarGroupAction, y as SidebarGroupContent, z as SidebarGroupLabel, B as SidebarHeader, D as SidebarInput, E as SidebarInset, F as SidebarMenu, H as SidebarMenuAction, I as SidebarMenuBadge, J as SidebarMenuButton, K as SidebarMenuItem, L as SidebarMenuSkeleton, M as SidebarMenuSub, N as SidebarMenuSubButton, O as SidebarMenuSubItem, P as SidebarProvider, Q as SidebarRail, T as SidebarTrigger, U as SidebarVariant, V as Skeleton } from './index-BWTwKQsp.js';
7
+ import { A as AlertContextValue, S as SortState } from './index-CWM2ewRz.js';
8
+ export { a as Alert, b as AlertBanner, c as AlertBannerProps, d as AlertDescription, e as AlertMessage, f as AlertProps, g as AlertProvider, h as AlertTheme, i as AlertTitle, j as Avatar, k as AvatarFallback, l as AvatarFallbackProps, m as AvatarImage, n as AvatarImageProps, o as AvatarProps, C as Chip, p as ChipProps, q as CodeBlock, r as CodeBlockProps, D as DevIndicator, s as DevIndicatorProps, t as Dialog, u as DialogClose, v as DialogCloseProps, w as DialogContent, x as DialogContentProps, y as DialogDescription, z as DialogFooter, B as DialogHeader, E as DialogOverlay, F as DialogPortal, G as DialogProps, H as DialogTitle, I as DialogTrigger, J as DialogTriggerProps, K as EmptyState, L as EmptyStateProps, M as Icon, N as IconProps, O as List, P as ListItem, Q as ListItemProps, R as ListProps, T as Pagination, U as PaginationProps, V as ProgressBar, W as ProgressBarProps, X as PushAlertInput, Y as Separator, Z as SeparatorProps, _ as SortContextValue, $ as SortDirection, a0 as StatCard, a1 as StatCardDirection, a2 as StatCardProps, a3 as StatCardSize, a4 as StatCardTheme, a5 as StatCardVariant, a6 as StatusDot, a7 as StatusDotProps, a8 as Step, a9 as StepProgress, aa as StepProgressProps, ab as Switch, ac as SwitchProps, ad as Table, ae as TableActionCell, af as TableActionCellProps, ag as TableActionItem, ah as TableBody, ai as TableBodyProps, aj as TableCard, ak as TableCell, al as TableFooter, am as TableHead, an as TableHeader, ao as TableRow, ap as TableSortableHeader, aq as TableSortableHeaderProps, ar as TableToolbar, as as TableToolbarProps, at as Toggle, au as ToggleGroup, av as ToggleGroupProps, aw as ToggleProps, ax as TrendDirection, ay as persistAlert, az as statusDotVariants } from './index-CWM2ewRz.js';
9
+ export { R as RowProps } from './row-CuhTBQhK.js';
9
10
  export { Breadcrumbs, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, DropdownMenuItemProps, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuProps, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DropdownMenuTriggerProps, Link, LinkProps, RouterAdapter, RouterProvider, Sheet, SheetBody, SheetClose, SheetCloseProps, SheetContent, SheetContentProps, SheetDescription, SheetFooter, SheetHeader, SheetProps, SheetTitle, SheetTrigger, SheetTriggerProps, useRouterAdapter } from './navigation.js';
10
11
  export { B as BreadcrumbItemData, N as NavGroup, a as NavItem, b as NavUser, c as NavUserProps, S as SidebarNavItem, d as SidebarSection } from './nav-user-CJIcWKyY.js';
11
12
  export { AppearanceTabs, AppearanceToggleDropdown } from './settings.js';
12
13
  export { a as User, b as UserMenuContent, U as UserMenuContentProps, c as UserMenuItem } from './user-menu-content-D0Ldzigm.js';
13
14
  export { Heading, TruncatedText, TruncatedTextProps } from './typography.js';
14
- export { T as Typography, a as TypographyAlign, b as TypographyProps, c as TypographyTheme, d as TypographyTransform, e as TypographyVariant, f as TypographyWeight } from './typography-DOZHFR5A.js';
15
- export { B as Button, a as ButtonProps, T as Tooltip, b as TooltipContent, c as TooltipContentProps, d as TooltipProps, e as TooltipProvider, f as TooltipTrigger, g as TooltipTriggerProps } from './tooltip-XagXjWLB.js';
15
+ export { T as Typography, a as TypographyAlign, b as TypographyProps, c as TypographySize, d as TypographyTheme, e as TypographyTransform, f as TypographyVariant, g as TypographyWeight } from './typography-CTGVc_Gg.js';
16
+ export { B as Button, a as ButtonProps, T as Tooltip, b as TooltipContent, c as TooltipContentProps, d as TooltipProps, e as TooltipProvider, f as TooltipTrigger, g as TooltipTriggerProps } from './tooltip-BpAJwi3K.js';
16
17
  export { UserInfo } from './user.js';
17
- export { getCsrfToken } from './utils.js';
18
- import 'react';
18
+ export { CONSTELLATION_PORTAL_SELECTOR, getCsrfToken, isInConstellationPortal } from './utils.js';
19
19
  import 'class-variance-authority';
20
20
  import 'class-variance-authority/types';
21
21
  import 'lucide-react';
@@ -24,6 +24,42 @@ interface DragDropRef {
24
24
  open: () => void;
25
25
  }
26
26
 
27
+ interface UseFlipOptions {
28
+ /** Milliseconds for a child to travel to its new place. */
29
+ duration?: number;
30
+ /** Easing for that travel. Defaults to the theme's standard curve. */
31
+ easing?: string;
32
+ /** Animate children that appear, as well as ones that move. */
33
+ animateEntry?: boolean;
34
+ /** Turn the whole thing off without unmounting the hook. */
35
+ enabled?: boolean;
36
+ }
37
+ /**
38
+ * FLIP-animate the direct children of a container so they never teleport.
39
+ *
40
+ * Layout is instantaneous by default: a card that reflows into a new column
41
+ * when the window narrows, or that is pushed down because a sibling expanded,
42
+ * simply IS somewhere else on the next frame. The eye reads that as a glitch
43
+ * rather than as movement, and in a masonry — where one change can restack a
44
+ * whole column — it is disorienting.
45
+ *
46
+ * FLIP is the standard answer: measure where things were (First), let the
47
+ * browser lay them out (Last), transform them back to where they came from
48
+ * (Invert), then release the transform (Play). Only `transform` is animated,
49
+ * so it runs on the compositor and does not re-lay-out anything per frame.
50
+ *
51
+ * Positions are read in a layout effect after every commit, which is why this
52
+ * catches expansion, insertion, removal and re-ordering without being told
53
+ * about them; a ResizeObserver covers the reflows that no render accompanies,
54
+ * such as the window being dragged wider.
55
+ *
56
+ * Honours the app's motion preference (`useMotion`), which defaults to
57
+ * `prefers-reduced-motion` but can be overridden — someone who has asked for
58
+ * less movement gets the instant layout, and someone whose OS says so but who
59
+ * wants it anyway can have it.
60
+ */
61
+ declare function useFlip<T extends HTMLElement>(ref: React.RefObject<T | null>, { duration, easing, animateEntry, enabled, }?: UseFlipOptions): void;
62
+
27
63
  declare function useSidebar(): SidebarContextValue;
28
64
 
29
65
  declare function useAlerts(): AlertContextValue;
@@ -51,5 +87,35 @@ declare function useBreakpoint(): {
51
87
  };
52
88
  declare function useIsMobile(breakpoint?: number): boolean;
53
89
 
54
- export { AlertContextValue, SidebarContextValue, SortState, initializeTheme, useAlerts, useAppearance, useBreakpoint, useInitials, useIsMobile, useSidebar, useTableSorting };
55
- export type { Appearance, DragDropRef, ResolvedAppearance };
90
+ /**
91
+ * `system` follows `prefers-reduced-motion`; the other two override it.
92
+ *
93
+ * The OS setting is the right DEFAULT and the wrong prison. Someone may have
94
+ * switched Windows animations off years ago for a laptop that no longer
95
+ * exists, or turned them off for one badly-behaved app; either way they are
96
+ * then told, silently, that this app cannot animate. Equally, someone who
97
+ * genuinely needs less movement must be able to keep it off in an app that
98
+ * otherwise ignores them. So it is a real preference, defaulting to the
99
+ * system's answer.
100
+ */
101
+ type Motion = 'system' | 'full' | 'reduced';
102
+ /** Set once before render so the first frame is already correct. */
103
+ declare function initializeMotion(): void;
104
+ /**
105
+ * Whether motion should be suppressed, and how to change that.
106
+ *
107
+ * Prefer this over reading `prefers-reduced-motion` directly: a component that
108
+ * asks the media query cannot be overridden by the app's own setting.
109
+ */
110
+ declare function useMotion(): {
111
+ setMotion: (motion: Motion) => void;
112
+ motion: Motion;
113
+ reduced: boolean;
114
+ };
115
+ /** The question most callers actually have. */
116
+ declare function useReducedMotion(): boolean;
117
+ /** For the non-React paths — animation helpers that run outside a component. */
118
+ declare function prefersReducedMotion(): boolean;
119
+
120
+ export { AlertContextValue, SidebarContextValue, SortState, initializeMotion, initializeTheme, prefersReducedMotion, useAlerts, useAppearance, useBreakpoint, useFlip, useInitials, useIsMobile, useMotion, useReducedMotion, useSidebar, useTableSorting };
121
+ export type { Appearance, DragDropRef, Motion, ResolvedAppearance, UseFlipOptions };
package/dist/index.js CHANGED
@@ -1,57 +1,59 @@
1
- export { Logo } from './brand/Logo/logo.js';
2
- export { Checkbox } from './form/Checkbox/checkbox.js';
3
- export { DatePicker } from './form/DatePicker/date-picker.js';
4
- export { Input } from './form/Input/input.js';
5
- export { Label } from './form/Label/label.js';
6
- export { Select, SelectContent, SelectField, SelectGroup, SelectItem, SelectSeparator, SelectTrigger, SelectValue } from './form/Select/select.js';
1
+ export { useFlip } from './hooks/layout/use-flip.js';
7
2
  export { useSidebar } from './hooks/layout/use-sidebar.js';
8
3
  export { useAlerts } from './hooks/ui/use-alerts.js';
9
4
  export { useTableSorting } from './hooks/ui/use-table-sorting.js';
10
5
  export { initializeTheme, useAppearance } from './hooks/use-appearance.js';
11
6
  export { useInitials } from './hooks/use-initials.js';
12
7
  export { useBreakpoint, useIsMobile } from './hooks/use-mobile.js';
8
+ export { initializeMotion, prefersReducedMotion, useMotion, useReducedMotion } from './hooks/use-motion.js';
9
+ import './index.css';
10
+ export { Alert, AlertBanner, AlertDescription, AlertTitle } from './ui/Alert/alert.js';
11
+ export { AlertProvider } from './ui/Alert/alert-provider.js';
13
12
  export { AppContent } from './layout/AppContent/app-content.js';
13
+ export { AppContentFooter } from './layout/AppContentFooter/app-content-footer.js';
14
+ export { AppContentMain } from './layout/AppContentMain/app-content-main.js';
14
15
  export { AppFooter } from './layout/AppFooter/app-footer.js';
15
16
  export { AppShell } from './layout/AppShell/app-shell.js';
16
17
  export { AppSidebar } from './layout/AppSidebar/app-sidebar.js';
17
18
  export { AppSidebarHeader } from './layout/AppSidebarHeader/app-sidebar-header.js';
18
- export { Collapse } from './layout/Collapse/collapse.js';
19
- export { Column } from './layout/Column/column.js';
20
- export { Container } from './layout/Container/container.js';
21
- export { Grid } from './layout/Grid/grid.js';
22
- export { Row } from './layout/Row/row.js';
23
- export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarTrigger } from './layout/Sidebar/sidebar.js';
24
- export { Skeleton } from './layout/Skeleton/skeleton.js';
25
- export { Breadcrumbs } from './navigation/Breadcrumbs/breadcrumbs.js';
26
- export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from './navigation/DropdownMenu/dropdown-menu.js';
27
- export { Link } from './navigation/Link/link.js';
28
- export { NavUser } from './navigation/NavUser/nav-user.js';
29
- export { RouterProvider, useRouterAdapter } from './navigation/Router/router-context.js';
30
- export { Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger } from './navigation/Sheet/sheet.js';
31
- export { AppearanceToggleDropdown } from './settings/AppearanceDropdown/appearance-dropdown.js';
32
19
  export { AppearanceTabs } from './settings/AppearanceTabs/appearance-tabs.js';
33
- import './index.css';
34
- export { Heading } from './typography/Heading/heading.js';
35
- export { TruncatedText } from './typography/TruncatedText/truncated-text.js';
36
- export { Typography } from './typography/Typography/typography.js';
37
- export { Alert, AlertBanner, AlertDescription, AlertTitle } from './ui/Alert/alert.js';
38
- export { persistAlert } from './ui/Alert/alert-persist.js';
39
- export { AlertProvider } from './ui/Alert/alert-provider.js';
20
+ export { AppearanceToggleDropdown } from './settings/AppearanceDropdown/appearance-dropdown.js';
40
21
  export { Avatar, AvatarFallback, AvatarImage } from './ui/Avatar/avatar.js';
22
+ export { Breadcrumbs } from './navigation/Breadcrumbs/breadcrumbs.js';
41
23
  export { Button } from './ui/Button/button.js';
24
+ export { CONSTELLATION_PORTAL_SELECTOR, isInConstellationPortal } from './utils/portal.js';
25
+ export { Checkbox } from './form/Checkbox/checkbox.js';
42
26
  export { Chip } from './ui/Chip/chip.js';
43
27
  export { CodeBlock } from './ui/CodeBlock/code-block.js';
28
+ export { Collapse } from './layout/Collapse/collapse.js';
29
+ export { Column } from './layout/Column/column.js';
30
+ export { Combobox } from './form/Combobox/combobox.js';
31
+ export { Container } from './layout/Container/container.js';
32
+ export { DatePicker } from './form/DatePicker/date-picker.js';
44
33
  export { DevIndicator } from './ui/DevIndicator/dev-indicator.js';
45
34
  export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from './ui/Dialog/dialog.js';
35
+ export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from './navigation/DropdownMenu/dropdown-menu.js';
46
36
  export { EmptyState } from './ui/EmptyState/empty-state.js';
37
+ export { Grid } from './layout/Grid/grid.js';
38
+ export { Heading } from './typography/Heading/heading.js';
47
39
  export { Icon } from './ui/Icon/icon.js';
40
+ export { Input } from './form/Input/input.js';
41
+ export { Label } from './form/Label/label.js';
42
+ export { Link } from './navigation/Link/link.js';
48
43
  export { List, ListItem } from './ui/List/list.js';
44
+ export { Logo } from './brand/Logo/logo.js';
45
+ export { NavUser } from './navigation/NavUser/nav-user.js';
49
46
  export { Pagination } from './ui/Pagination/pagination.js';
50
47
  export { ProgressBar } from './ui/ProgressBar/progress-bar.js';
48
+ export { RouterProvider, useRouterAdapter } from './navigation/Router/router-context.js';
49
+ export { Row } from './layout/Row/row.js';
50
+ export { Select, SelectContent, SelectField, SelectGroup, SelectItem, SelectSeparator, SelectTrigger, SelectValue, __Surface } from './form/Select/select.js';
51
51
  export { Separator } from './ui/Separator/separator.js';
52
+ export { Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger } from './navigation/Sheet/sheet.js';
53
+ export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarTrigger } from './layout/Sidebar/sidebar.js';
54
+ export { Skeleton } from './layout/Skeleton/skeleton.js';
52
55
  export { StatCard } from './ui/StatCard/stat-card.js';
53
56
  export { StatusDot } from './ui/StatusDot/status-dot.js';
54
- export { statusDotVariants } from './ui/StatusDot/status-dot-variants.js';
55
57
  export { StepProgress } from './ui/StepProgress/step-progress.js';
56
58
  export { Switch } from './ui/Switch/switch.js';
57
59
  export { Table, TableBody, TableCard, TableCell, TableFooter, TableHead, TableHeader, TableRow, TableSortableHeader } from './ui/Table/table.js';
@@ -60,7 +62,11 @@ export { TableToolbar } from './ui/TableToolbar/table-toolbar.js';
60
62
  export { Toggle } from './ui/Toggle/toggle.js';
61
63
  export { ToggleGroup } from './ui/ToggleGroup/toggle-group.js';
62
64
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './ui/Tooltip/tooltip.js';
65
+ export { TruncatedText } from './typography/TruncatedText/truncated-text.js';
66
+ export { Typography } from './typography/Typography/typography.js';
63
67
  export { UserInfo } from './user/UserInfo/user-info.js';
64
68
  export { UserMenuContent } from './user/UserMenuContent/user-menu-content.js';
65
69
  export { getCsrfToken } from './utils/csrf.js';
70
+ export { persistAlert } from './ui/Alert/alert-persist.js';
71
+ export { statusDotVariants } from './ui/StatusDot/status-dot-variants.js';
66
72
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,2 +1,17 @@
1
+ /**
2
+ * Hold the page still while something modal is open.
3
+ *
4
+ * The compensation is MEASURED rather than assumed. Hiding the overflow can
5
+ * take the scrollbar away, which widens the content by its width and shifts
6
+ * everything under the dialog; padding the body back out cancels that. But it
7
+ * only needs cancelling when it actually happened — with
8
+ * `scrollbar-gutter: stable` the gutter is reserved whether or not a bar is
9
+ * drawn in it, so nothing moves and adding padding anyway NARROWS the content
10
+ * instead. That showed up as a masonry twitching a few pixels every time a
11
+ * modal opened and closed.
12
+ *
13
+ * So: hide the overflow, look at what the page width actually did, and pad by
14
+ * exactly that.
15
+ */
1
16
  export declare function useScrollLock(active: boolean): void;
2
17
  //# sourceMappingURL=use-scroll-lock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-scroll-lock.d.ts","sourceRoot":"","sources":["../../src/internal/use-scroll-lock.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,QAkB5C"}
1
+ {"version":3,"file":"use-scroll-lock.d.ts","sourceRoot":"","sources":["../../src/internal/use-scroll-lock.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,QAsB5C"}
@@ -1,19 +1,37 @@
1
1
  import * as React from 'react';
2
2
 
3
+ /**
4
+ * Hold the page still while something modal is open.
5
+ *
6
+ * The compensation is MEASURED rather than assumed. Hiding the overflow can
7
+ * take the scrollbar away, which widens the content by its width and shifts
8
+ * everything under the dialog; padding the body back out cancels that. But it
9
+ * only needs cancelling when it actually happened — with
10
+ * `scrollbar-gutter: stable` the gutter is reserved whether or not a bar is
11
+ * drawn in it, so nothing moves and adding padding anyway NARROWS the content
12
+ * instead. That showed up as a masonry twitching a few pixels every time a
13
+ * modal opened and closed.
14
+ *
15
+ * So: hide the overflow, look at what the page width actually did, and pad by
16
+ * exactly that.
17
+ */
3
18
  function useScrollLock(active) {
4
19
  React.useEffect(() => {
5
20
  if (!active)
6
21
  return;
7
- const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
8
- const prevOverflow = document.body.style.overflow;
9
- const prevPaddingRight = document.body.style.paddingRight;
10
- document.body.style.overflow = 'hidden';
11
- if (scrollbarWidth > 0) {
12
- document.body.style.paddingRight = `${scrollbarWidth}px`;
22
+ const { body, documentElement: html } = document;
23
+ const prevOverflow = body.style.overflow;
24
+ const prevPaddingRight = body.style.paddingRight;
25
+ const widthBefore = html.clientWidth;
26
+ body.style.overflow = 'hidden';
27
+ const gained = html.clientWidth - widthBefore;
28
+ if (gained > 0) {
29
+ const current = parseFloat(window.getComputedStyle(body).paddingRight) || 0;
30
+ body.style.paddingRight = `${current + gained}px`;
13
31
  }
14
32
  return () => {
15
- document.body.style.overflow = prevOverflow;
16
- document.body.style.paddingRight = prevPaddingRight;
33
+ body.style.overflow = prevOverflow;
34
+ body.style.paddingRight = prevPaddingRight;
17
35
  };
18
36
  }, [active]);
19
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-scroll-lock.js","sources":["../../src/internal/use-scroll-lock.ts"],"sourcesContent":["import * as React from 'react';\n\nexport function useScrollLock(active: boolean) {\n React.useEffect(() => {\n if (!active) return;\n\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n const prevOverflow = document.body.style.overflow;\n const prevPaddingRight = document.body.style.paddingRight;\n\n document.body.style.overflow = 'hidden';\n if (scrollbarWidth > 0) {\n document.body.style.paddingRight = `${scrollbarWidth}px`;\n }\n\n return () => {\n document.body.style.overflow = prevOverflow;\n document.body.style.paddingRight = prevPaddingRight;\n };\n }, [active]);\n}\n"],"names":[],"mappings":";;AAEM,SAAU,aAAa,CAAC,MAAe,EAAA;AAC3C,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,IAAI,CAAC,MAAM;YAAE;QAEb,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,WAAW;QAC/E,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;QACjD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY;QAEzD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;AACvC,QAAA,IAAI,cAAc,GAAG,CAAC,EAAE;YACtB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAA,EAAG,cAAc,CAAA,EAAA,CAAI;QAC1D;AAEA,QAAA,OAAO,MAAK;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY;YAC3C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,gBAAgB;AACrD,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACd;;"}
1
+ {"version":3,"file":"use-scroll-lock.js","sources":["../../src/internal/use-scroll-lock.ts"],"sourcesContent":["import * as React from 'react';\n\n/**\n * Hold the page still while something modal is open.\n *\n * The compensation is MEASURED rather than assumed. Hiding the overflow can\n * take the scrollbar away, which widens the content by its width and shifts\n * everything under the dialog; padding the body back out cancels that. But it\n * only needs cancelling when it actually happened — with\n * `scrollbar-gutter: stable` the gutter is reserved whether or not a bar is\n * drawn in it, so nothing moves and adding padding anyway NARROWS the content\n * instead. That showed up as a masonry twitching a few pixels every time a\n * modal opened and closed.\n *\n * So: hide the overflow, look at what the page width actually did, and pad by\n * exactly that.\n */\nexport function useScrollLock(active: boolean) {\n React.useEffect(() => {\n if (!active) return;\n\n const { body, documentElement: html } = document;\n const prevOverflow = body.style.overflow;\n const prevPaddingRight = body.style.paddingRight;\n\n const widthBefore = html.clientWidth;\n body.style.overflow = 'hidden';\n const gained = html.clientWidth - widthBefore;\n\n if (gained > 0) {\n const current = parseFloat(window.getComputedStyle(body).paddingRight) || 0;\n body.style.paddingRight = `${current + gained}px`;\n }\n\n return () => {\n body.style.overflow = prevOverflow;\n body.style.paddingRight = prevPaddingRight;\n };\n }, [active]);\n}\n"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;;;AAcG;AACG,SAAU,aAAa,CAAC,MAAe,EAAA;AAC3C,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,IAAI,CAAC,MAAM;YAAE;QAEb,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,QAAQ;AAChD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;AACxC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY;AAEhD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;AACpC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;AAC9B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG,WAAW;AAE7C,QAAA,IAAI,MAAM,GAAG,CAAC,EAAE;AACd,YAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;YAC3E,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,OAAO,GAAG,MAAM,CAAA,EAAA,CAAI;QACnD;AAEA,QAAA,OAAO,MAAK;AACV,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY;AAClC,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,gBAAgB;AAC5C,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACd;;"}
@@ -1,3 +1,3 @@
1
1
  .app-content-module_app-sidebar-content__Tl-lJ {
2
- overflow-x: clip;
2
+ overflow: hidden;
3
3
  }
@@ -0,0 +1,21 @@
1
+ .app-content-bands-module_app-content-header__BUehL {
2
+ background-color: var(--background-default);
3
+ position: sticky;
4
+ top: 0;
5
+ z-index: var(--z-sticky);
6
+ }
7
+
8
+ .app-content-bands-module_app-content-footer__aQGGo {
9
+ backdrop-filter: blur(12px);
10
+ background-color: color-mix(in srgb, var(--background-default) 88%, transparent);
11
+ border-top: 1px solid var(--divider);
12
+ bottom: 0;
13
+ margin-top: auto;
14
+ padding-bottom: env(safe-area-inset-bottom);
15
+ position: sticky;
16
+ z-index: var(--z-sticky);
17
+ }
18
+
19
+ .app-content-bands-module_band-static__qgY7r {
20
+ position: static;
21
+ }
@@ -0,0 +1,26 @@
1
+ import * as React from 'react';
2
+ export interface AppContentBandProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ /** The element to render. Defaults to `header` / `footer` respectively. */
4
+ el?: React.ElementType<React.HTMLAttributes<HTMLDivElement>>;
5
+ }
6
+ /**
7
+ * The band at the top of a content area, pinned while the page scrolls.
8
+ *
9
+ * Opaque on purpose: it paints over the content passing beneath it, and a
10
+ * translucent one shows the list sliding through the title.
11
+ */
12
+ export declare function AppContentHeader({ children, className, el, sticky, ...props }: AppContentBandProps & {
13
+ sticky?: boolean;
14
+ }): React.JSX.Element;
15
+ /**
16
+ * The band at the foot of a content area — a search field, a toolbar, the
17
+ * action that commits the page.
18
+ *
19
+ * Sticky, not fixed: fixed is measured against the viewport, so in an app with
20
+ * a sidebar the band runs underneath it and has to be inset by hand for every
21
+ * layout the sidebar can be in. Sticky is measured against this content area,
22
+ * which is where it belongs, and it costs real space at the end of the scroll
23
+ * instead of needing the page padded to clear it.
24
+ */
25
+ export declare function AppContentFooter({ children, className, el, ...props }: AppContentBandProps): React.JSX.Element;
26
+ //# sourceMappingURL=app-content-bands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-content-bands.d.ts","sourceRoot":"","sources":["../../../src/layout/AppContentBands/app-content-bands.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC/E,2EAA2E;IAC3E,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;CAC9D;AAkDD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,MAAa,EAAE,GAAG,KAAK,EACjD,EAAE,mBAAmB,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,qBAe5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,KAAK,EAClC,EAAE,mBAAmB,qBAYrB"}
@@ -0,0 +1,65 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import cn from 'clsx';
3
+ import * as React from 'react';
4
+ import s from './app-content-bands.module.scss.js';
5
+
6
+ /**
7
+ * Publish the band's height on the content area, as a CSS custom property.
8
+ *
9
+ * Anything else that sticks to the top of the same scrollport has to clear the
10
+ * header, and its height is not a constant — it grows with a wrapped toolbar,
11
+ * an error line, an environment banner. So it is measured and written where
12
+ * CSS can read it: `--app-content-header-height`, on the nearest content area
13
+ * (or the document, if the band is used outside one).
14
+ *
15
+ * This is the one part of a sticky band that cannot be CSS: a rendered height
16
+ * is a number the stylesheet has no way to ask for.
17
+ */
18
+ function usePublishedHeight(ref, property, enabled) {
19
+ React.useLayoutEffect(() => {
20
+ const el = ref.current;
21
+ if (!el || !enabled)
22
+ return undefined;
23
+ const target = el.closest('[data-slot="app-content"]') ??
24
+ document.documentElement;
25
+ const write = () => {
26
+ target.style.setProperty(property, `${el.getBoundingClientRect().height}px`);
27
+ };
28
+ write();
29
+ const observer = new ResizeObserver(write);
30
+ observer.observe(el);
31
+ return () => {
32
+ observer.disconnect();
33
+ target.style.removeProperty(property);
34
+ };
35
+ }, [ref, property, enabled]);
36
+ }
37
+ /**
38
+ * The band at the top of a content area, pinned while the page scrolls.
39
+ *
40
+ * Opaque on purpose: it paints over the content passing beneath it, and a
41
+ * translucent one shows the list sliding through the title.
42
+ */
43
+ function AppContentHeader({ children, className, el, sticky = true, ...props }) {
44
+ const ref = React.useRef(null);
45
+ usePublishedHeight(ref, '--app-content-header-height', sticky);
46
+ const El = (el ?? 'header');
47
+ return (jsx(El, { ref: ref, "data-slot": 'app-content-header', className: cn(s['app-content-header'], !sticky && s['band-static'], className), ...props, children: children }));
48
+ }
49
+ /**
50
+ * The band at the foot of a content area — a search field, a toolbar, the
51
+ * action that commits the page.
52
+ *
53
+ * Sticky, not fixed: fixed is measured against the viewport, so in an app with
54
+ * a sidebar the band runs underneath it and has to be inset by hand for every
55
+ * layout the sidebar can be in. Sticky is measured against this content area,
56
+ * which is where it belongs, and it costs real space at the end of the scroll
57
+ * instead of needing the page padded to clear it.
58
+ */
59
+ function AppContentFooter({ children, className, el, ...props }) {
60
+ const El = (el ?? 'footer');
61
+ return (jsx(El, { "data-slot": 'app-content-footer', className: cn(s['app-content-footer'], className), ...props, children: children }));
62
+ }
63
+
64
+ export { AppContentFooter, AppContentHeader };
65
+ //# sourceMappingURL=app-content-bands.js.map