@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.
- package/README.md +36 -0
- package/dist/brand/Logo/logo.css +4 -1
- package/dist/form/Checkbox/checkbox.css +48 -34
- package/dist/form/Checkbox/checkbox.d.ts +5 -0
- package/dist/form/Checkbox/checkbox.d.ts.map +1 -1
- package/dist/form/Checkbox/checkbox.js +6 -55
- package/dist/form/Checkbox/checkbox.js.map +1 -1
- package/dist/form/Checkbox/checkbox.module.scss.js +1 -1
- package/dist/form/Combobox/combobox.css +35 -0
- package/dist/form/Combobox/combobox.d.ts +41 -0
- package/dist/form/Combobox/combobox.d.ts.map +1 -0
- package/dist/form/Combobox/combobox.js +152 -0
- package/dist/form/Combobox/combobox.js.map +1 -0
- package/dist/form/Combobox/combobox.module.scss.js +6 -0
- package/dist/form/Combobox/combobox.module.scss.js.map +1 -0
- package/dist/form/Combobox/index.d.ts +2 -0
- package/dist/form/Combobox/index.d.ts.map +1 -0
- package/dist/form/DatePicker/date-picker.d.ts.map +1 -1
- package/dist/form/DatePicker/date-picker.js +5 -53
- package/dist/form/DatePicker/date-picker.js.map +1 -1
- package/dist/form/Input/input.css +12 -0
- package/dist/form/Input/input.d.ts.map +1 -1
- package/dist/form/Input/input.js +23 -3
- package/dist/form/Input/input.js.map +1 -1
- package/dist/form/Select/select.css +54 -1
- package/dist/form/Select/select.d.ts +41 -3
- package/dist/form/Select/select.d.ts.map +1 -1
- package/dist/form/Select/select.js +43 -21
- package/dist/form/Select/select.js.map +1 -1
- package/dist/form/Select/select.module.scss.js +2 -2
- package/dist/form/index.d.ts +1 -0
- package/dist/form/index.d.ts.map +1 -1
- package/dist/form.d.ts +1 -1
- package/dist/form.js +2 -1
- package/dist/form.js.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/layout/index.d.ts +1 -0
- package/dist/hooks/layout/index.d.ts.map +1 -1
- package/dist/hooks/layout/use-flip.d.ts +37 -0
- package/dist/hooks/layout/use-flip.d.ts.map +1 -0
- package/dist/hooks/layout/use-flip.js +128 -0
- package/dist/hooks/layout/use-flip.js.map +1 -0
- package/dist/hooks/use-motion.d.ts +30 -0
- package/dist/hooks/use-motion.d.ts.map +1 -0
- package/dist/hooks/use-motion.js +93 -0
- package/dist/hooks/use-motion.js.map +1 -0
- package/dist/index-2nHZOukj.d.ts +200 -0
- package/dist/index-3Ui8TAHy.d.ts +200 -0
- package/dist/index-59JuNTZm.d.ts +537 -0
- package/dist/index-5QXWn0de.d.ts +200 -0
- package/dist/index-98ozinMf.d.ts +498 -0
- package/dist/index-Ah3YQTri.d.ts +566 -0
- package/dist/index-As2iBOIu.d.ts +527 -0
- package/dist/index-B1Vw0zoR.d.ts +566 -0
- package/dist/index-B25sLBMr.d.ts +498 -0
- package/dist/index-B4B8aA9X.d.ts +272 -0
- package/dist/index-B97hn7Xp.d.ts +514 -0
- package/dist/{index-BSSQnlm_.d.ts → index-B9B7JjTb.d.ts} +3 -1
- package/dist/index-BFWt_pYt.d.ts +566 -0
- package/dist/index-BFZp_Pu6.d.ts +566 -0
- package/dist/index-BGL4DvKQ.d.ts +293 -0
- package/dist/index-BGP_J4I2.d.ts +498 -0
- package/dist/index-BHhoIUD_.d.ts +354 -0
- package/dist/index-BI0iaWmp.d.ts +222 -0
- package/dist/index-BMSRpHb6.d.ts +273 -0
- package/dist/index-BRQWKmfq.d.ts +566 -0
- package/dist/index-BTARYt96.d.ts +537 -0
- package/dist/index-BTrpuZdU.d.ts +566 -0
- package/dist/index-BWTwKQsp.d.ts +354 -0
- package/dist/index-B_05Skyi.d.ts +566 -0
- package/dist/index-BcQqBGNu.d.ts +200 -0
- package/dist/index-Be23E9xD.d.ts +298 -0
- package/dist/index-Bf44Z8ak.d.ts +514 -0
- package/dist/index-Bg42sKjg.d.ts +498 -0
- package/dist/index-Bg_0OPMx.d.ts +566 -0
- package/dist/index-BgjRk9l7.d.ts +537 -0
- package/dist/index-BhLEMn3N.d.ts +537 -0
- package/dist/index-BiqECuUj.d.ts +204 -0
- package/dist/index-BjUQiAs1.d.ts +130 -0
- package/dist/index-BlKqvax0.d.ts +204 -0
- package/dist/index-Bnb0JFqx.d.ts +514 -0
- package/dist/index-BpSD6t7A.d.ts +566 -0
- package/dist/index-BpxKwrv_.d.ts +537 -0
- package/dist/index-Brh7JZAQ.d.ts +514 -0
- package/dist/index-C-n7hM4G.d.ts +354 -0
- package/dist/index-C0wKb28S.d.ts +514 -0
- package/dist/index-C129uthr.d.ts +566 -0
- package/dist/index-C1ef0QtQ.d.ts +204 -0
- package/dist/index-C4BACHGE.d.ts +272 -0
- package/dist/index-C5JU8WTE.d.ts +514 -0
- package/dist/index-C63UYi-T.d.ts +195 -0
- package/dist/index-C8LoYkC7.d.ts +250 -0
- package/dist/index-C9-ECLyr.d.ts +566 -0
- package/dist/index-C9B1F-mr.d.ts +293 -0
- package/dist/index-CAVmbwa8.d.ts +514 -0
- package/dist/index-CBz-v5eM.d.ts +184 -0
- package/dist/index-CCpdo0n4.d.ts +130 -0
- package/dist/index-CDC_ZncW.d.ts +566 -0
- package/dist/index-CFQj-KtR.d.ts +184 -0
- package/dist/index-CFaxW5hv.d.ts +184 -0
- package/dist/index-CG9DKbG9.d.ts +498 -0
- package/dist/index-CGhG7YeI.d.ts +354 -0
- package/dist/index-CHC6kRbR.d.ts +537 -0
- package/dist/index-CH_q-5fk.d.ts +537 -0
- package/dist/index-CIK_SmBm.d.ts +200 -0
- package/dist/index-CJ1KPFOf.d.ts +537 -0
- package/dist/index-CJ5FEGRG.d.ts +537 -0
- package/dist/index-CKX2VNKk.d.ts +240 -0
- package/dist/index-CL7kYZ90.d.ts +231 -0
- package/dist/index-CNl03fCW.d.ts +498 -0
- package/dist/index-CO8Jq0pz.d.ts +298 -0
- package/dist/index-CQ-aS-rp.d.ts +566 -0
- package/dist/index-CQjzBv4q.d.ts +537 -0
- package/dist/index-CRVO4SlF.d.ts +537 -0
- package/dist/{index-ibcvWtdH.d.ts → index-CRrCqjAW.d.ts} +11 -1
- package/dist/index-CSQFy2xe.d.ts +195 -0
- package/dist/index-CWM2ewRz.d.ts +566 -0
- package/dist/index-CY6Xq36O.d.ts +204 -0
- package/dist/index-CYGOs6JT.d.ts +273 -0
- package/dist/index-CYPFkjfk.d.ts +204 -0
- package/dist/index-C_hJJ1fH.d.ts +527 -0
- package/dist/index-CcM-XHTL.d.ts +273 -0
- package/dist/index-CdGF_eEO.d.ts +514 -0
- package/dist/index-CdJTE9Lh.d.ts +566 -0
- package/dist/index-CdOt-pqR.d.ts +537 -0
- package/dist/index-CgeR_2Gi.d.ts +220 -0
- package/dist/index-CjUoZbDi.d.ts +354 -0
- package/dist/index-CjV6KsFc.d.ts +263 -0
- package/dist/index-Ck8LtgBW.d.ts +557 -0
- package/dist/index-Cknm9FUU.d.ts +299 -0
- package/dist/index-Clv3CnXv.d.ts +184 -0
- package/dist/index-Cm4wnJ29.d.ts +514 -0
- package/dist/index-Cmz3q-CI.d.ts +273 -0
- package/dist/index-CnMBzCft.d.ts +514 -0
- package/dist/index-CnVW0FnZ.d.ts +272 -0
- package/dist/index-CpIHT-uo.d.ts +231 -0
- package/dist/index-CtBEDM0b.d.ts +514 -0
- package/dist/index-CtVSiQeY.d.ts +130 -0
- package/dist/index-Cu107rOs.d.ts +293 -0
- package/dist/index-CxyTd3Ag.d.ts +354 -0
- package/dist/index-CywSNvOU.d.ts +200 -0
- package/dist/index-CzJL7Lro.d.ts +566 -0
- package/dist/index-CzJnKY3r.d.ts +272 -0
- package/dist/index-D-R9eOxe.d.ts +354 -0
- package/dist/index-D-hdgIbs.d.ts +273 -0
- package/dist/index-D-slQ9w4.d.ts +537 -0
- package/dist/index-D0jdNDaH.d.ts +204 -0
- package/dist/index-D1ir--Li.d.ts +566 -0
- package/dist/index-D29_-MCZ.d.ts +354 -0
- package/dist/index-D2glATpo.d.ts +273 -0
- package/dist/index-D6ATtbor.d.ts +298 -0
- package/dist/index-D6HktSlo.d.ts +514 -0
- package/dist/index-DB4UBCvy.d.ts +537 -0
- package/dist/index-DBd0PU9y.d.ts +222 -0
- package/dist/index-DE2Nm-iT.d.ts +354 -0
- package/dist/index-DEeJuuvm.d.ts +231 -0
- package/dist/index-DHhzBSfL.d.ts +498 -0
- package/dist/index-DKpWNCb6.d.ts +204 -0
- package/dist/index-DMewi97i.d.ts +566 -0
- package/dist/index-DN0gtpck.d.ts +354 -0
- package/dist/index-DO23vZ-R.d.ts +514 -0
- package/dist/index-DTb2-z6E.d.ts +130 -0
- package/dist/index-DV-CN7c0.d.ts +231 -0
- package/dist/index-DWgCs62z.d.ts +566 -0
- package/dist/index-D_6Qu6ia.d.ts +200 -0
- package/dist/index-D_vn8O-I.d.ts +293 -0
- package/dist/index-Daq4m4Rf.d.ts +514 -0
- package/dist/index-Db6cXpr6.d.ts +537 -0
- package/dist/index-DbZ1s2E-.d.ts +514 -0
- package/dist/index-DbevJPuY.d.ts +354 -0
- package/dist/index-DepmPwP7.d.ts +537 -0
- package/dist/index-DfnTWQCz.d.ts +514 -0
- package/dist/index-Dfu8WhiS.d.ts +273 -0
- package/dist/index-DggMYd7c.d.ts +298 -0
- package/dist/index-DhS2nQjt.d.ts +200 -0
- package/dist/index-Dn3bC8Ki.d.ts +222 -0
- package/dist/index-Dn9bGZvU.d.ts +195 -0
- package/dist/index-DnDt7A4Y.d.ts +354 -0
- package/dist/index-DpdYKBP2.d.ts +498 -0
- package/dist/index-DunP9qIK.d.ts +537 -0
- package/dist/index-DxO6-qt5.d.ts +498 -0
- package/dist/index-ESQ8WM_8.d.ts +130 -0
- package/dist/index-GVz409cm.d.ts +222 -0
- package/dist/index-HAx-aLZ0.d.ts +273 -0
- package/dist/{index-CkQ6wNCc.d.ts → index-Iuzs6nt9.d.ts} +3 -3
- package/dist/index-LnEpnlTq.d.ts +566 -0
- package/dist/index-Mihuyg_o.d.ts +204 -0
- package/dist/index-Mm1i2OdU.d.ts +537 -0
- package/dist/index-P0oxVi77.d.ts +537 -0
- package/dist/index-Q5JuPFoN.d.ts +293 -0
- package/dist/index-RJviLtvo.d.ts +566 -0
- package/dist/index-SnQCbfte.d.ts +498 -0
- package/dist/index-Th9It0ZT.d.ts +354 -0
- package/dist/index-UHHmyQM5.d.ts +272 -0
- package/dist/index-VyGmJYQZ.d.ts +537 -0
- package/dist/index-WYH70le_.d.ts +195 -0
- package/dist/index-Wj9RYtTX.d.ts +273 -0
- package/dist/index-Y-wMZeUG.d.ts +298 -0
- package/dist/index-ZgohDspB.d.ts +498 -0
- package/dist/index-Zo2rSdXz.d.ts +273 -0
- package/dist/index-ZwpWgV4n.d.ts +272 -0
- package/dist/index-_oZ4knIl.d.ts +272 -0
- package/dist/index-an222nAK.d.ts +354 -0
- package/dist/index-daV0QTe0.d.ts +537 -0
- package/dist/index-eGZu2HLC.d.ts +231 -0
- package/dist/index-eswPA0Un.d.ts +204 -0
- package/dist/index-gf6-wf_1.d.ts +566 -0
- package/dist/index-hdVr9Wrv.d.ts +566 -0
- package/dist/index-iygiXYw2.d.ts +537 -0
- package/dist/index-jR29ZGLD.d.ts +514 -0
- package/dist/index-kHgI28TP.d.ts +272 -0
- package/dist/index-lY4_UCOs.d.ts +566 -0
- package/dist/index-miXK87yJ.d.ts +231 -0
- package/dist/index-mwbGtZkk.d.ts +273 -0
- package/dist/index-ru2DFXcm.d.ts +195 -0
- package/dist/index-uj1ll_u-.d.ts +204 -0
- package/dist/index-vfq-aH7U.d.ts +537 -0
- package/dist/index-xqUz9XjP.d.ts +537 -0
- package/dist/index.css +74 -18
- package/dist/index.d.ts +78 -12
- package/dist/index.js +34 -28
- package/dist/index.js.map +1 -1
- package/dist/internal/use-scroll-lock.d.ts +15 -0
- package/dist/internal/use-scroll-lock.d.ts.map +1 -1
- package/dist/internal/use-scroll-lock.js +26 -8
- package/dist/internal/use-scroll-lock.js.map +1 -1
- package/dist/layout/AppContent/app-content.css +1 -1
- package/dist/layout/AppContentBands/app-content-bands.css +21 -0
- package/dist/layout/AppContentBands/app-content-bands.d.ts +26 -0
- package/dist/layout/AppContentBands/app-content-bands.d.ts.map +1 -0
- package/dist/layout/AppContentBands/app-content-bands.js +65 -0
- package/dist/layout/AppContentBands/app-content-bands.js.map +1 -0
- package/dist/layout/AppContentBands/app-content-bands.module.scss.js +6 -0
- package/dist/layout/AppContentBands/app-content-bands.module.scss.js.map +1 -0
- package/dist/layout/AppContentBands/index.d.ts +2 -0
- package/dist/layout/AppContentBands/index.d.ts.map +1 -0
- package/dist/layout/AppContentFooter/app-content-footer.css +9 -0
- package/dist/layout/AppContentFooter/app-content-footer.d.ts +38 -0
- package/dist/layout/AppContentFooter/app-content-footer.d.ts.map +1 -0
- package/dist/layout/AppContentFooter/app-content-footer.js +42 -0
- package/dist/layout/AppContentFooter/app-content-footer.js.map +1 -0
- package/dist/layout/AppContentFooter/app-content-footer.module.scss.js +6 -0
- package/dist/layout/AppContentFooter/app-content-footer.module.scss.js.map +1 -0
- package/dist/layout/AppContentFooter/index.d.ts +2 -0
- package/dist/layout/AppContentFooter/index.d.ts.map +1 -0
- package/dist/layout/AppContentMain/app-content-main.css +6 -0
- package/dist/layout/AppContentMain/app-content-main.d.ts +37 -0
- package/dist/layout/AppContentMain/app-content-main.d.ts.map +1 -0
- package/dist/layout/AppContentMain/app-content-main.js +41 -0
- package/dist/layout/AppContentMain/app-content-main.js.map +1 -0
- package/dist/layout/AppContentMain/app-content-main.module.scss.js +6 -0
- package/dist/layout/AppContentMain/app-content-main.module.scss.js.map +1 -0
- package/dist/layout/AppContentMain/index.d.ts +2 -0
- package/dist/layout/AppContentMain/index.d.ts.map +1 -0
- package/dist/layout/AppFooter/app-footer.js +1 -1
- package/dist/layout/AppSidebar/app-sidebar.js +1 -1
- package/dist/layout/AppSidebarHeader/app-sidebar-header.css +2 -3
- package/dist/layout/AppSidebarHeader/app-sidebar-header.d.ts +10 -2
- package/dist/layout/AppSidebarHeader/app-sidebar-header.d.ts.map +1 -1
- package/dist/layout/AppSidebarHeader/app-sidebar-header.js +12 -32
- package/dist/layout/AppSidebarHeader/app-sidebar-header.js.map +1 -1
- package/dist/layout/Collapse/collapse.css +4 -1
- package/dist/layout/Column/column.css +6 -0
- package/dist/layout/Column/column.d.ts.map +1 -1
- package/dist/layout/Column/column.js +3 -1
- package/dist/layout/Column/column.js.map +1 -1
- package/dist/layout/Column/column.module.scss.js +1 -1
- package/dist/layout/Container/container.css +43 -1
- package/dist/layout/Container/container.d.ts.map +1 -1
- package/dist/layout/Container/container.js +38 -7
- package/dist/layout/Container/container.js.map +1 -1
- package/dist/layout/Container/container.module.scss.js +1 -1
- package/dist/layout/Grid/grid.css +28 -0
- package/dist/layout/Grid/grid.d.ts.map +1 -1
- package/dist/layout/Grid/grid.js +40 -4
- package/dist/layout/Grid/grid.js.map +1 -1
- package/dist/layout/Grid/grid.module.scss.js +1 -1
- package/dist/layout/Row/row.css +42 -0
- package/dist/layout/Row/row.d.ts.map +1 -1
- package/dist/layout/Row/row.js +5 -3
- package/dist/layout/Row/row.js.map +1 -1
- package/dist/layout/Row/row.module.scss.js +1 -1
- package/dist/layout/Sidebar/sidebar.css +4 -2
- package/dist/layout/Sidebar/sidebar.d.ts.map +1 -1
- package/dist/layout/Sidebar/sidebar.js +1 -1
- package/dist/layout/Sidebar/sidebar.js.map +1 -1
- package/dist/layout/index.d.ts +2 -0
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout.d.ts +3 -3
- package/dist/layout.js +2 -0
- package/dist/layout.js.map +1 -1
- package/dist/navigation/DropdownMenu/dropdown-menu.d.ts.map +1 -1
- package/dist/navigation/DropdownMenu/dropdown-menu.js +1 -1
- package/dist/navigation/DropdownMenu/dropdown-menu.js.map +1 -1
- package/dist/navigation/NavUser/nav-user.js +2 -2
- package/dist/navigation/Sheet/sheet.css +40 -6
- package/dist/navigation/Sheet/sheet.d.ts +22 -0
- package/dist/navigation/Sheet/sheet.d.ts.map +1 -1
- package/dist/navigation/Sheet/sheet.js +5 -30
- package/dist/navigation/Sheet/sheet.js.map +1 -1
- package/dist/navigation/Sheet/sheet.module.scss.js +1 -1
- package/dist/navigation.d.ts +22 -0
- package/dist/row-CuhTBQhK.d.ts +21 -0
- package/dist/settings/AppearanceDropdown/appearance-dropdown.js +1 -1
- package/dist/settings/AppearanceTabs/appearance-tabs.js +2 -27
- package/dist/settings/AppearanceTabs/appearance-tabs.js.map +1 -1
- package/dist/tokens.css +59 -17
- package/dist/tooltip-1qYeAGE9.d.ts +45 -0
- package/dist/tooltip-3IOkYFQ-.d.ts +45 -0
- package/dist/tooltip-540OmbEG.d.ts +46 -0
- package/dist/tooltip-91Nq_Hl8.d.ts +46 -0
- package/dist/tooltip-B56sWYK0.d.ts +46 -0
- package/dist/tooltip-BIrIF-4z.d.ts +45 -0
- package/dist/tooltip-BOipKW5l.d.ts +46 -0
- package/dist/tooltip-BPC0RH8i.d.ts +46 -0
- package/dist/tooltip-BST1BOCn.d.ts +45 -0
- package/dist/tooltip-BhuxNQwX.d.ts +45 -0
- package/dist/tooltip-BpAJwi3K.d.ts +46 -0
- package/dist/tooltip-C0LBu2Iu.d.ts +45 -0
- package/dist/tooltip-C1ZwALiG.d.ts +45 -0
- package/dist/tooltip-C55-HA0w.d.ts +45 -0
- package/dist/tooltip-CHn6WuDv.d.ts +46 -0
- package/dist/tooltip-CNjH7zKO.d.ts +45 -0
- package/dist/tooltip-CSBby1OT.d.ts +45 -0
- package/dist/tooltip-CXFRzR0L.d.ts +45 -0
- package/dist/tooltip-ChpsbkOU.d.ts +46 -0
- package/dist/tooltip-CspTy2ZW.d.ts +46 -0
- package/dist/tooltip-CvComAZD.d.ts +46 -0
- package/dist/tooltip-D19vhhRn.d.ts +45 -0
- package/dist/tooltip-D32S1g-7.d.ts +46 -0
- package/dist/tooltip-DAvBN683.d.ts +45 -0
- package/dist/tooltip-DQz4_i4m.d.ts +45 -0
- package/dist/tooltip-DVYPUAb1.d.ts +46 -0
- package/dist/tooltip-DXoSckt9.d.ts +46 -0
- package/dist/tooltip-Dtoq3bn_.d.ts +46 -0
- package/dist/tooltip-DxO_DWMO.d.ts +46 -0
- package/dist/tooltip-DxdGb3dX.d.ts +45 -0
- package/dist/tooltip-DzAzC0d7.d.ts +45 -0
- package/dist/tooltip-Lk4RpuSh.d.ts +45 -0
- package/dist/tooltip-ReFyHDhU.d.ts +45 -0
- package/dist/tooltip-_wdlSYAb.d.ts +46 -0
- package/dist/{tooltip-XagXjWLB.d.ts → tooltip-cjwkBINy.d.ts} +4 -0
- package/dist/tooltip-nKcM19C9.d.ts +45 -0
- package/dist/types/layout/container.d.ts +30 -1
- package/dist/types/layout/container.d.ts.map +1 -1
- package/dist/types/layout/grid.d.ts +42 -0
- package/dist/types/layout/grid.d.ts.map +1 -1
- package/dist/types/layout/row.d.ts +7 -0
- package/dist/types/layout/row.d.ts.map +1 -1
- package/dist/typography/Typography/typography-variants.d.ts +3 -0
- package/dist/typography/Typography/typography-variants.d.ts.map +1 -1
- package/dist/typography/Typography/typography-variants.js +25 -0
- package/dist/typography/Typography/typography-variants.js.map +1 -1
- package/dist/typography/Typography/typography.css +105 -41
- package/dist/typography/Typography/typography.d.ts +20 -0
- package/dist/typography/Typography/typography.d.ts.map +1 -1
- package/dist/typography/Typography/typography.js +11 -2
- package/dist/typography/Typography/typography.js.map +1 -1
- package/dist/typography/Typography/typography.module.scss.js +1 -1
- package/dist/typography-CTGVc_Gg.d.ts +41 -0
- package/dist/typography.d.ts +2 -2
- package/dist/ui/Alert/alert-provider.d.ts.map +1 -1
- package/dist/ui/Alert/alert-provider.js +1 -1
- package/dist/ui/Alert/alert-provider.js.map +1 -1
- package/dist/ui/Button/button-variants.d.ts +1 -0
- package/dist/ui/Button/button-variants.d.ts.map +1 -1
- package/dist/ui/Button/button-variants.js +3 -0
- package/dist/ui/Button/button-variants.js.map +1 -1
- package/dist/ui/Button/button.css +146 -77
- package/dist/ui/Button/button.d.ts +4 -0
- package/dist/ui/Button/button.d.ts.map +1 -1
- package/dist/ui/Button/button.js +8 -2
- package/dist/ui/Button/button.js.map +1 -1
- package/dist/ui/Button/button.module.scss.js +1 -1
- package/dist/ui/Chip/chip.css +32 -11
- package/dist/ui/Chip/chip.d.ts +16 -0
- package/dist/ui/Chip/chip.d.ts.map +1 -1
- package/dist/ui/Chip/chip.js +4 -2
- package/dist/ui/Chip/chip.js.map +1 -1
- package/dist/ui/CodeBlock/code-block.css +8 -3
- package/dist/ui/Dialog/dialog.css +70 -0
- package/dist/ui/Dialog/dialog.d.ts +45 -2
- package/dist/ui/Dialog/dialog.d.ts.map +1 -1
- package/dist/ui/Dialog/dialog.js +256 -7
- package/dist/ui/Dialog/dialog.js.map +1 -1
- package/dist/ui/Dialog/dialog.module.scss.js +1 -1
- package/dist/ui/Icon/icon.css +14 -7
- package/dist/ui/ProgressBar/progress-bar.css +10 -3
- package/dist/ui/StatCard/stat-card.css +13 -0
- package/dist/ui/StatCard/stat-card.d.ts +9 -0
- package/dist/ui/StatCard/stat-card.d.ts.map +1 -1
- package/dist/ui/StatCard/stat-card.js +2 -2
- package/dist/ui/StatCard/stat-card.js.map +1 -1
- package/dist/ui/StatusDot/status-dot.css +4 -1
- package/dist/ui/StepProgress/step-progress.css +12 -4
- package/dist/ui/Switch/switch.css +6 -2
- package/dist/ui/Tooltip/tooltip.d.ts.map +1 -1
- package/dist/ui/Tooltip/tooltip.js +1 -1
- package/dist/ui/Tooltip/tooltip.js.map +1 -1
- package/dist/ui.d.ts +3 -3
- package/dist/user/UserInfo/user-info.js +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/portal.d.ts +34 -0
- package/dist/utils/portal.d.ts.map +1 -0
- package/dist/utils/portal.js +40 -0
- package/dist/utils/portal.js.map +1 -0
- package/dist/utils.d.ts +35 -1
- package/dist/utils.js +1 -0
- package/dist/utils.js.map +1 -1
- package/package.json +3 -2
- package/src/styles/_mixins.scss +30 -0
- 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
|
-
|
|
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.
|
|
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: #
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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: #
|
|
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: #
|
|
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.
|
|
520
|
-
|
|
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.
|
|
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:
|
|
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,
|
|
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
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export { R as
|
|
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
|
|
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-
|
|
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
|
-
|
|
55
|
-
|
|
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 {
|
|
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
|
-
|
|
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,
|
|
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
|
|
8
|
-
const prevOverflow =
|
|
9
|
-
const prevPaddingRight =
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
16
|
-
|
|
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
|
|
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;;"}
|
|
@@ -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
|