@kuzenbo/core 0.0.1-alpha.3 → 0.0.1-alpha.5
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 +77 -27
- package/dist/accordion-trigger-P3yAXC9X.d.ts +35 -0
- package/dist/accordion-trigger-P3yAXC9X.d.ts.map +1 -0
- package/dist/accordion.d.ts +19 -11
- package/dist/accordion.d.ts.map +1 -1
- package/dist/accordion.js +25 -13
- package/dist/accordion.js.map +1 -1
- package/dist/affix.js +1 -1
- package/dist/alert-dialog-trigger-Bh4pSvCf.js +142 -0
- package/dist/alert-dialog-trigger-Bh4pSvCf.js.map +1 -0
- package/dist/alert-dialog-viewport-CIjRyI-y.d.ts +120 -0
- package/dist/alert-dialog-viewport-CIjRyI-y.d.ts.map +1 -0
- package/dist/alert-dialog.d.ts +30 -75
- package/dist/alert-dialog.d.ts.map +1 -1
- package/dist/alert-dialog.js +6 -2
- package/dist/alert-dialog.js.map +1 -1
- package/dist/{alert-title-sXI11YPI.js → alert-title-B1q_D7US.js} +3 -3
- package/dist/alert-title-B1q_D7US.js.map +1 -0
- package/dist/alert-title-BzrwvCBs.d.ts +26 -0
- package/dist/alert-title-BzrwvCBs.d.ts.map +1 -0
- package/dist/alert.d.ts +71 -21
- package/dist/alert.d.ts.map +1 -1
- package/dist/alert.js +198 -38
- package/dist/alert.js.map +1 -1
- package/dist/{announcement-title-ByuSJud1.js → announcement-title-CZ-xxuBs.js} +1 -1
- package/dist/{announcement-title-ByuSJud1.js.map → announcement-title-CZ-xxuBs.js.map} +1 -1
- package/dist/{announcement-title-3cikJ44S.d.ts → announcement-title-DQAqY8lM.d.ts} +1 -1
- package/dist/{announcement-title-3cikJ44S.d.ts.map → announcement-title-DQAqY8lM.d.ts.map} +1 -1
- package/dist/announcement.d.ts +1 -1
- package/dist/announcement.js +1 -1
- package/dist/aspect-ratio.d.ts +5 -4
- package/dist/aspect-ratio.d.ts.map +1 -1
- package/dist/aspect-ratio.js.map +1 -1
- package/dist/autocomplete-value-CE4htlBI.js +296 -0
- package/dist/autocomplete-value-CE4htlBI.js.map +1 -0
- package/dist/autocomplete-value-DZvfXD_j.d.ts +320 -0
- package/dist/autocomplete-value-DZvfXD_j.d.ts.map +1 -0
- package/dist/autocomplete.d.ts +26 -5
- package/dist/autocomplete.d.ts.map +1 -1
- package/dist/autocomplete.js +18 -7
- package/dist/autocomplete.js.map +1 -1
- package/dist/avatar-image-BpYCNLxP.d.ts +41 -0
- package/dist/avatar-image-BpYCNLxP.d.ts.map +1 -0
- package/dist/{avatar-image-BAVOtujm.js → avatar-image-QGDvWzq_.js} +6 -5
- package/dist/avatar-image-QGDvWzq_.js.map +1 -0
- package/dist/avatar.d.ts +13 -12
- package/dist/avatar.d.ts.map +1 -1
- package/dist/avatar.js +12 -8
- package/dist/avatar.js.map +1 -1
- package/dist/badge.d.ts +26 -9
- package/dist/badge.d.ts.map +1 -1
- package/dist/badge.js +43 -21
- package/dist/badge.js.map +1 -1
- package/dist/breadcrumb-separator-BxPVg1Je.js +172 -0
- package/dist/breadcrumb-separator-BxPVg1Je.js.map +1 -0
- package/dist/breadcrumb-separator-Cn5BAhvD.d.ts +228 -0
- package/dist/breadcrumb-separator-Cn5BAhvD.d.ts.map +1 -0
- package/dist/breadcrumb.d.ts +20 -10
- package/dist/breadcrumb.d.ts.map +1 -1
- package/dist/breadcrumb.js +15 -7
- package/dist/breadcrumb.js.map +1 -1
- package/dist/button-group-size-context-BAqIdusJ.js +8 -0
- package/dist/button-group-size-context-BAqIdusJ.js.map +1 -0
- package/dist/button-group-text-B2_MmlIc.d.ts +85 -0
- package/dist/button-group-text-B2_MmlIc.d.ts.map +1 -0
- package/dist/button-group-text-JA0xMSnb.js +62 -0
- package/dist/button-group-text-JA0xMSnb.js.map +1 -0
- package/dist/button-group.d.ts +35 -55
- package/dist/button-group.d.ts.map +1 -1
- package/dist/button-group.js +38 -13
- package/dist/button-group.js.map +1 -1
- package/dist/button.d.ts +15 -29
- package/dist/button.d.ts.map +1 -1
- package/dist/button.js +74 -29
- package/dist/button.js.map +1 -1
- package/dist/card-title-BaHIF8-E.d.ts +47 -0
- package/dist/card-title-BaHIF8-E.d.ts.map +1 -0
- package/dist/card.d.ts +13 -15
- package/dist/card.d.ts.map +1 -1
- package/dist/card.js +12 -7
- package/dist/card.js.map +1 -1
- package/dist/{carousel-previous-BE0u96g1.js → carousel-previous-OcdvvI1k.js} +1 -1
- package/dist/carousel-previous-OcdvvI1k.js.map +1 -0
- package/dist/carousel.d.ts +6 -65
- package/dist/carousel.d.ts.map +1 -1
- package/dist/carousel.js +1 -1
- package/dist/carousel.js.map +1 -1
- package/dist/checkbox-group.d.ts.map +1 -1
- package/dist/checkbox-group.js +2 -2
- package/dist/checkbox-group.js.map +1 -1
- package/dist/checkbox-indicator-D9X12aCq.d.ts +44 -0
- package/dist/checkbox-indicator-D9X12aCq.d.ts.map +1 -0
- package/dist/checkbox-indicator-DMjot9eq.js +31 -0
- package/dist/checkbox-indicator-DMjot9eq.js.map +1 -0
- package/dist/checkbox.d.ts +48 -7
- package/dist/checkbox.d.ts.map +1 -1
- package/dist/checkbox.js +36 -18
- package/dist/checkbox.js.map +1 -1
- package/dist/code.d.ts +15 -0
- package/dist/code.d.ts.map +1 -0
- package/dist/code.js +22 -0
- package/dist/code.js.map +1 -0
- package/dist/collapsible-trigger-CvIq1bXq.d.ts +19 -0
- package/dist/collapsible-trigger-CvIq1bXq.d.ts.map +1 -0
- package/dist/{collapsible-trigger-COktdQ2E.js → collapsible-trigger-DCw3swj8.js} +4 -4
- package/dist/collapsible-trigger-DCw3swj8.js.map +1 -0
- package/dist/collapsible.d.ts +10 -5
- package/dist/collapsible.d.ts.map +1 -1
- package/dist/collapsible.js +4 -3
- package/dist/collapsible.js.map +1 -1
- package/dist/combobox.d.ts +79 -26
- package/dist/combobox.d.ts.map +1 -1
- package/dist/combobox.js +25 -7
- package/dist/combobox.js.map +1 -1
- package/dist/command-shortcut-B42eSLXJ.d.ts +268 -0
- package/dist/command-shortcut-B42eSLXJ.d.ts.map +1 -0
- package/dist/command-shortcut-fALFGGNB.js +226 -0
- package/dist/command-shortcut-fALFGGNB.js.map +1 -0
- package/dist/command.d.ts +24 -103
- package/dist/command.d.ts.map +1 -1
- package/dist/command.js +14 -6
- package/dist/command.js.map +1 -1
- package/dist/container.js +1 -1
- package/dist/container.js.map +1 -1
- package/dist/context-menu-trigger-D1yfnhtH.d.ts +632 -0
- package/dist/context-menu-trigger-D1yfnhtH.d.ts.map +1 -0
- package/dist/context-menu-trigger-Db8Hnkac.js +471 -0
- package/dist/context-menu-trigger-Db8Hnkac.js.map +1 -0
- package/dist/context-menu.d.ts +81 -25
- package/dist/context-menu.d.ts.map +1 -1
- package/dist/context-menu.js +19 -6
- package/dist/context-menu.js.map +1 -1
- package/dist/{dialog-trigger-ptlomR_n.js → dialog-trigger-Qa2UBwDK.js} +33 -9
- package/dist/dialog-trigger-Qa2UBwDK.js.map +1 -0
- package/dist/{dialog-trigger-B5HeOikl.d.ts → dialog-viewport-_iN9a_OF.d.ts} +25 -4
- package/dist/dialog-viewport-_iN9a_OF.d.ts.map +1 -0
- package/dist/dialog.d.ts +14 -2
- package/dist/dialog.d.ts.map +1 -1
- package/dist/dialog.js +5 -2
- package/dist/dialog.js.map +1 -1
- package/dist/drawer-size-context-TrNk8sne.d.ts +377 -0
- package/dist/drawer-size-context-TrNk8sne.d.ts.map +1 -0
- package/dist/drawer-viewport-CXCkzSjL.js +261 -0
- package/dist/drawer-viewport-CXCkzSjL.js.map +1 -0
- package/dist/drawer.d.ts +26 -3
- package/dist/drawer.d.ts.map +1 -1
- package/dist/drawer.js +9 -2
- package/dist/drawer.js.map +1 -1
- package/dist/dropdown-menu-trigger-BzJ8E29P.d.ts +646 -0
- package/dist/dropdown-menu-trigger-BzJ8E29P.d.ts.map +1 -0
- package/dist/dropdown-menu-trigger-PvBaqoOj.js +488 -0
- package/dist/dropdown-menu-trigger-PvBaqoOj.js.map +1 -0
- package/dist/dropdown-menu.d.ts +80 -25
- package/dist/dropdown-menu.d.ts.map +1 -1
- package/dist/dropdown-menu.js +19 -6
- package/dist/dropdown-menu.js.map +1 -1
- package/dist/{dropzone-context-DNiJThhB.d.ts → dropzone-context-PCTXy62j.d.ts} +1 -1
- package/dist/{dropzone-context-DNiJThhB.d.ts.map → dropzone-context-PCTXy62j.d.ts.map} +1 -1
- package/dist/{dropzone-status-B9Axvf9M.js → dropzone-status-BziqO77U.js} +1 -1
- package/dist/{dropzone-status-B9Axvf9M.js.map → dropzone-status-BziqO77U.js.map} +1 -1
- package/dist/dropzone.d.ts +1 -1
- package/dist/dropzone.js +5 -5
- package/dist/dropzone.js.map +1 -1
- package/dist/emoji-picker-size-context-gu6mLjuf.d.ts +315 -0
- package/dist/emoji-picker-size-context-gu6mLjuf.d.ts.map +1 -0
- package/dist/emoji-picker-skin-tone-selector-DAJcO_Ue.js +308 -0
- package/dist/emoji-picker-skin-tone-selector-DAJcO_Ue.js.map +1 -0
- package/dist/emoji-picker.d.ts +49 -4
- package/dist/emoji-picker.d.ts.map +1 -1
- package/dist/emoji-picker.js +25 -6
- package/dist/emoji-picker.js.map +1 -1
- package/dist/empty-title-C9hHuBz8.d.ts +211 -0
- package/dist/empty-title-C9hHuBz8.d.ts.map +1 -0
- package/dist/empty-title-DjJj4k34.js +178 -0
- package/dist/empty-title-DjJj4k34.js.map +1 -0
- package/dist/empty.d.ts +49 -23
- package/dist/empty.d.ts.map +1 -1
- package/dist/empty.js +27 -7
- package/dist/empty.js.map +1 -1
- package/dist/fieldset-BvbNkZWm.d.ts +151 -0
- package/dist/fieldset-BvbNkZWm.d.ts.map +1 -0
- package/dist/fieldset-fXftcr4b.js +109 -0
- package/dist/fieldset-fXftcr4b.js.map +1 -0
- package/dist/form-field.d.ts +94 -71
- package/dist/form-field.d.ts.map +1 -1
- package/dist/form-field.js +110 -8
- package/dist/form-field.js.map +1 -1
- package/dist/index.d.ts +1217 -82
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1433 -58
- package/dist/index.js.map +1 -0
- package/dist/input-group-textarea-C6-pPujg.d.ts +121 -0
- package/dist/input-group-textarea-C6-pPujg.d.ts.map +1 -0
- package/dist/input-group-textarea-C6ixncHC.js +120 -0
- package/dist/input-group-textarea-C6ixncHC.js.map +1 -0
- package/dist/input-group.d.ts +16 -109
- package/dist/input-group.d.ts.map +1 -1
- package/dist/input-group.js +16 -7
- package/dist/input-group.js.map +1 -1
- package/dist/input-otp-slot-BA8DE3oz.js +116 -0
- package/dist/input-otp-slot-BA8DE3oz.js.map +1 -0
- package/dist/input-otp-slot-BxEhjqR5.d.ts +173 -0
- package/dist/input-otp-slot-BxEhjqR5.d.ts.map +1 -0
- package/dist/input-otp.d.ts +18 -10
- package/dist/input-otp.d.ts.map +1 -1
- package/dist/input-otp.js +16 -8
- package/dist/input-otp.js.map +1 -1
- package/dist/input.d.ts +40 -7
- package/dist/input.d.ts.map +1 -1
- package/dist/input.js +28 -6
- package/dist/input.js.map +1 -1
- package/dist/item-title-BEt0xgK_.d.ts +91 -0
- package/dist/item-title-BEt0xgK_.d.ts.map +1 -0
- package/dist/{item-title-BQFoYDpd.js → item-title-DL4BlZUJ.js} +3 -3
- package/dist/item-title-DL4BlZUJ.js.map +1 -0
- package/dist/item.d.ts +26 -84
- package/dist/item.d.ts.map +1 -1
- package/dist/item.js +23 -17
- package/dist/item.js.map +1 -1
- package/dist/kbd-group-3GbsGHQf.d.ts +19 -0
- package/dist/kbd-group-3GbsGHQf.d.ts.map +1 -0
- package/dist/kbd-group-BmHYZhQr.js +30 -0
- package/dist/kbd-group-BmHYZhQr.js.map +1 -0
- package/dist/kbd.d.ts +8 -4
- package/dist/kbd.d.ts.map +1 -1
- package/dist/kbd.js +21 -6
- package/dist/kbd.js.map +1 -1
- package/dist/{marquee-item-B_yei6_k.js → marquee-item-B0TLvHgC.js} +1 -1
- package/dist/{marquee-item-B_yei6_k.js.map → marquee-item-B0TLvHgC.js.map} +1 -1
- package/dist/{marquee-item-BCswidMf.d.ts → marquee-item-CF7L5m2C.d.ts} +1 -1
- package/dist/{marquee-item-BCswidMf.d.ts.map → marquee-item-CF7L5m2C.d.ts.map} +1 -1
- package/dist/marquee.d.ts +1 -1
- package/dist/marquee.js +1 -1
- package/dist/menubar-trigger-BSEAK4Hv.js +427 -0
- package/dist/menubar-trigger-BSEAK4Hv.js.map +1 -0
- package/dist/menubar-trigger-Cg8h_R-F.d.ts +633 -0
- package/dist/menubar-trigger-Cg8h_R-F.d.ts.map +1 -0
- package/dist/menubar.d.ts +79 -163
- package/dist/menubar.d.ts.map +1 -1
- package/dist/menubar.js +31 -7
- package/dist/menubar.js.map +1 -1
- package/dist/merge-base-ui-class-name-u6eS5MaQ.js +11 -0
- package/dist/merge-base-ui-class-name-u6eS5MaQ.js.map +1 -0
- package/dist/{meter-value-FRDEI8VE.d.ts → meter-value-BBRupvEw.d.ts} +5 -2
- package/dist/meter-value-BBRupvEw.d.ts.map +1 -0
- package/dist/{meter-value-CJjAfKID.js → meter-value-DTvav35V.js} +7 -7
- package/dist/meter-value-DTvav35V.js.map +1 -0
- package/dist/meter.d.ts +5 -2
- package/dist/meter.d.ts.map +1 -1
- package/dist/meter.js +3 -3
- package/dist/meter.js.map +1 -1
- package/dist/navigation-menu-viewport-B1zGz9H_.d.ts +401 -0
- package/dist/navigation-menu-viewport-B1zGz9H_.d.ts.map +1 -0
- package/dist/navigation-menu-viewport-MCTpmOhX.js +284 -0
- package/dist/navigation-menu-viewport-MCTpmOhX.js.map +1 -0
- package/dist/navigation-menu.d.ts +73 -7
- package/dist/navigation-menu.d.ts.map +1 -1
- package/dist/navigation-menu.js +34 -8
- package/dist/navigation-menu.js.map +1 -1
- package/dist/number-field-scrub-area-cursor-DJPffFNk.d.ts +137 -0
- package/dist/number-field-scrub-area-cursor-DJPffFNk.d.ts.map +1 -0
- package/dist/number-field-scrub-area-cursor-h-iB-JHz.js +136 -0
- package/dist/number-field-scrub-area-cursor-h-iB-JHz.js.map +1 -0
- package/dist/number-field.d.ts +10 -2
- package/dist/number-field.d.ts.map +1 -1
- package/dist/number-field.js +16 -8
- package/dist/number-field.js.map +1 -1
- package/dist/{optional-portal-BAOgHNvi.js → optional-portal-BnKabTYx.js} +1 -1
- package/dist/optional-portal-BnKabTYx.js.map +1 -0
- package/dist/pagination-previous-B-zSBsti.d.ts +226 -0
- package/dist/pagination-previous-B-zSBsti.d.ts.map +1 -0
- package/dist/pagination-previous-g-wCDo--.js +194 -0
- package/dist/pagination-previous-g-wCDo--.js.map +1 -0
- package/dist/pagination.d.ts +18 -8
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js +15 -7
- package/dist/pagination.js.map +1 -1
- package/dist/{pill-status-BS75xd9Z.d.ts → pill-status-B0H8oDjy.d.ts} +2 -2
- package/dist/{pill-status-BS75xd9Z.d.ts.map → pill-status-B0H8oDjy.d.ts.map} +1 -1
- package/dist/pill-status-CZugGAo0.js +75 -0
- package/dist/pill-status-CZugGAo0.js.map +1 -0
- package/dist/pill.d.ts +2 -2
- package/dist/pill.js +2 -2
- package/dist/pill.js.map +1 -1
- package/dist/popover-trigger-YoOfFIQY.js +131 -0
- package/dist/popover-trigger-YoOfFIQY.js.map +1 -0
- package/dist/popover-viewport-D0OLhge2.d.ts +130 -0
- package/dist/popover-viewport-D0OLhge2.d.ts.map +1 -0
- package/dist/popover.d.ts +41 -9
- package/dist/popover.d.ts.map +1 -1
- package/dist/popover.js +21 -6
- package/dist/popover.js.map +1 -1
- package/dist/portal.d.ts +2 -2
- package/dist/portal.d.ts.map +1 -1
- package/dist/portal.js.map +1 -1
- package/dist/preview-card-trigger-CbF-WF9d.js +75 -0
- package/dist/preview-card-trigger-CbF-WF9d.js.map +1 -0
- package/dist/preview-card-viewport-DyigXVot.d.ts +67 -0
- package/dist/preview-card-viewport-DyigXVot.d.ts.map +1 -0
- package/dist/preview-card.d.ts +52 -0
- package/dist/preview-card.d.ts.map +1 -0
- package/dist/preview-card.js +25 -0
- package/dist/preview-card.js.map +1 -0
- package/dist/{progress-value-gJOcGICf.js → progress-value-C2beGR4l.js} +6 -6
- package/dist/progress-value-C2beGR4l.js.map +1 -0
- package/dist/progress-value-DdW3JCEx.d.ts +33 -0
- package/dist/progress-value-DdW3JCEx.d.ts.map +1 -0
- package/dist/progress.d.ts +8 -7
- package/dist/progress.d.ts.map +1 -1
- package/dist/progress.js +3 -3
- package/dist/progress.js.map +1 -1
- package/dist/radio-group-item-By6KUGFQ.js +65 -0
- package/dist/radio-group-item-By6KUGFQ.js.map +1 -0
- package/dist/radio-group-item-DvfY629D.d.ts +81 -0
- package/dist/radio-group-item-DvfY629D.d.ts.map +1 -0
- package/dist/radio-group.d.ts +12 -5
- package/dist/radio-group.d.ts.map +1 -1
- package/dist/radio-group.js +5 -4
- package/dist/radio-group.js.map +1 -1
- package/dist/{rating-star-CxVJUZmc.d.ts → rating-star-Bg5AgFfI.d.ts} +7 -1
- package/dist/rating-star-Bg5AgFfI.d.ts.map +1 -0
- package/dist/{rating-star-BZCtD00E.js → rating-star-CT7E88Vb.js} +10 -6
- package/dist/rating-star-CT7E88Vb.js.map +1 -0
- package/dist/rating.d.ts +14 -2
- package/dist/rating.d.ts.map +1 -1
- package/dist/rating.js +7 -3
- package/dist/rating.js.map +1 -1
- package/dist/{resizable-panel-D4Brid-G.d.ts → resizable-panel-BSRzFmQT.d.ts} +8 -6
- package/dist/resizable-panel-BSRzFmQT.d.ts.map +1 -0
- package/dist/{resizable-panel-DbWIMjJZ.js → resizable-panel-Qs_va758.js} +1 -1
- package/dist/resizable-panel-Qs_va758.js.map +1 -0
- package/dist/resizable.d.ts +6 -8
- package/dist/resizable.d.ts.map +1 -1
- package/dist/resizable.js +1 -1
- package/dist/resizable.js.map +1 -1
- package/dist/scroll-area.d.ts +28 -4
- package/dist/scroll-area.d.ts.map +1 -1
- package/dist/scroll-area.js +20 -14
- package/dist/scroll-area.js.map +1 -1
- package/dist/scroll-bar-Ms5-vqAH.js +26 -0
- package/dist/scroll-bar-Ms5-vqAH.js.map +1 -0
- package/dist/scroll-viewport-02SiMbYg.d.ts +42 -0
- package/dist/scroll-viewport-02SiMbYg.d.ts.map +1 -0
- package/dist/scroll-viewport-Bv90eZWC.js +30 -0
- package/dist/scroll-viewport-Bv90eZWC.js.map +1 -0
- package/dist/select-value-DCLmCbND.d.ts +413 -0
- package/dist/select-value-DCLmCbND.d.ts.map +1 -0
- package/dist/select.d.ts +90 -16
- package/dist/select.d.ts.map +1 -1
- package/dist/select.js +30 -6
- package/dist/select.js.map +1 -1
- package/dist/separator.d.ts.map +1 -1
- package/dist/separator.js +2 -2
- package/dist/separator.js.map +1 -1
- package/dist/{sheet-trigger-CkQbW5Y7.js → sheet-trigger-CBnNmAyv.js} +35 -10
- package/dist/sheet-trigger-CBnNmAyv.js.map +1 -0
- package/dist/sheet-viewport-PgLs2Dbp.d.ts +99 -0
- package/dist/sheet-viewport-PgLs2Dbp.d.ts.map +1 -0
- package/dist/sheet.d.ts +26 -16
- package/dist/sheet.d.ts.map +1 -1
- package/dist/sheet.js +5 -2
- package/dist/sheet.js.map +1 -1
- package/dist/{sidebar-trigger-C_fOu1p2.js → sidebar-trigger-DpUDeyoo.js} +157 -61
- package/dist/sidebar-trigger-DpUDeyoo.js.map +1 -0
- package/dist/sidebar.d.ts +38 -144
- package/dist/sidebar.d.ts.map +1 -1
- package/dist/sidebar.js +2 -2
- package/dist/sidebar.js.map +1 -1
- package/dist/size-context-CPoCTRTV.d.ts +16 -0
- package/dist/size-context-CPoCTRTV.d.ts.map +1 -0
- package/dist/size-context-rJNE33WZ.js +25 -0
- package/dist/size-context-rJNE33WZ.js.map +1 -0
- package/dist/size-provider-D2Fy00Ky.js +128 -0
- package/dist/size-provider-D2Fy00Ky.js.map +1 -0
- package/dist/size-system-BNfPN2hb.js +47 -0
- package/dist/size-system-BNfPN2hb.js.map +1 -0
- package/dist/size-system-CMU68sQY.d.ts +6 -0
- package/dist/size-system-CMU68sQY.d.ts.map +1 -0
- package/dist/slider-CqapJ6Pa.js +544 -0
- package/dist/slider-CqapJ6Pa.js.map +1 -0
- package/dist/slider-types-BejlapyA.d.ts +192 -0
- package/dist/slider-types-BejlapyA.d.ts.map +1 -0
- package/dist/slider.d.ts +2 -16
- package/dist/slider.js +2 -47
- package/dist/spinner.d.ts +5 -1
- package/dist/spinner.d.ts.map +1 -1
- package/dist/spinner.js +13 -8
- package/dist/spinner.js.map +1 -1
- package/dist/switch-thumb-B1oq_Il-.d.ts +12 -0
- package/dist/switch-thumb-B1oq_Il-.d.ts.map +1 -0
- package/dist/switch-thumb-BcrfgKM7.js +14 -0
- package/dist/switch-thumb-BcrfgKM7.js.map +1 -0
- package/dist/switch.d.ts +45 -8
- package/dist/switch.d.ts.map +1 -1
- package/dist/switch.js +26 -11
- package/dist/switch.js.map +1 -1
- package/dist/table-row-oLfiQvkD.js +161 -0
- package/dist/table-row-oLfiQvkD.js.map +1 -0
- package/dist/table-size-context-CIwmKalf.d.ts +206 -0
- package/dist/table-size-context-CIwmKalf.d.ts.map +1 -0
- package/dist/table.d.ts +50 -10
- package/dist/table.d.ts.map +1 -1
- package/dist/table.js +39 -19
- package/dist/table.js.map +1 -1
- package/dist/tabs-trigger-CzOTnpSV.js +155 -0
- package/dist/tabs-trigger-CzOTnpSV.js.map +1 -0
- package/dist/tabs-trigger-DIAd8cRQ.d.ts +91 -0
- package/dist/tabs-trigger-DIAd8cRQ.d.ts.map +1 -0
- package/dist/tabs.d.ts +18 -23
- package/dist/tabs.d.ts.map +1 -1
- package/dist/tabs.js +5 -3
- package/dist/tabs.js.map +1 -1
- package/dist/textarea.d.ts +29 -6
- package/dist/textarea.d.ts.map +1 -1
- package/dist/textarea.js +27 -6
- package/dist/textarea.js.map +1 -1
- package/dist/theme-icon.d.ts +6 -3
- package/dist/theme-icon.d.ts.map +1 -1
- package/dist/theme-icon.js +7 -5
- package/dist/theme-icon.js.map +1 -1
- package/dist/{timeline-title-BvyeNanK.js → timeline-title-DPQkU32C.js} +1 -1
- package/dist/{timeline-title-BvyeNanK.js.map → timeline-title-DPQkU32C.js.map} +1 -1
- package/dist/timeline.d.ts +2 -2
- package/dist/timeline.js +1 -1
- package/dist/timeline.js.map +1 -1
- package/dist/toggle-group-item-BNfDa9G7.js +46 -0
- package/dist/toggle-group-item-BNfDa9G7.js.map +1 -0
- package/dist/toggle-group-item-GtR1C20m.d.ts +111 -0
- package/dist/toggle-group-item-GtR1C20m.d.ts.map +1 -0
- package/dist/toggle-group.d.ts +11 -11
- package/dist/toggle-group.d.ts.map +1 -1
- package/dist/toggle-group.js +25 -20
- package/dist/toggle-group.js.map +1 -1
- package/dist/toggle.d.ts +12 -6
- package/dist/toggle.d.ts.map +1 -1
- package/dist/toggle.js +19 -13
- package/dist/toggle.js.map +1 -1
- package/dist/toolbar-separator-B2h6uLOE.d.ts +169 -0
- package/dist/toolbar-separator-B2h6uLOE.d.ts.map +1 -0
- package/dist/toolbar-separator-DenKrCUv.js +124 -0
- package/dist/toolbar-separator-DenKrCUv.js.map +1 -0
- package/dist/toolbar.d.ts +43 -4
- package/dist/toolbar.d.ts.map +1 -1
- package/dist/toolbar.js +26 -6
- package/dist/toolbar.js.map +1 -1
- package/dist/tooltip-trigger-Bh-4uwB1.js +101 -0
- package/dist/tooltip-trigger-Bh-4uwB1.js.map +1 -0
- package/dist/tooltip-viewport-bfS0ERim.d.ts +103 -0
- package/dist/tooltip-viewport-bfS0ERim.d.ts.map +1 -0
- package/dist/tooltip.d.ts +31 -6
- package/dist/tooltip.d.ts.map +1 -1
- package/dist/tooltip.js +19 -6
- package/dist/tooltip.js.map +1 -1
- package/dist/{typography-ul-D1HgC8fT.js → typography-ul-CQPMwh0l.js} +2 -11
- package/dist/typography-ul-CQPMwh0l.js.map +1 -0
- package/dist/{typography-ul-Dy8wQB_p.d.ts → typography-ul-DdbLy4uP.d.ts} +118 -110
- package/dist/typography-ul-DdbLy4uP.d.ts.map +1 -0
- package/dist/typography.d.ts +19 -23
- package/dist/typography.d.ts.map +1 -1
- package/dist/typography.js +2 -3
- package/dist/typography.js.map +1 -1
- package/dist/use-accordion-default-props-C4qiSPdy.js +276 -0
- package/dist/use-accordion-default-props-C4qiSPdy.js.map +1 -0
- package/dist/use-badge-default-props-aiDsN2ec.js +8 -0
- package/dist/use-badge-default-props-aiDsN2ec.js.map +1 -0
- package/dist/use-card-default-props-D7h5DKMA.js +58 -0
- package/dist/use-card-default-props-D7h5DKMA.js.map +1 -0
- package/dist/use-carousel-BP1JcA8B.d.ts +60 -0
- package/dist/use-carousel-BP1JcA8B.d.ts.map +1 -0
- package/dist/use-combobox-anchor-CR11U_ns.js +524 -0
- package/dist/use-combobox-anchor-CR11U_ns.js.map +1 -0
- package/dist/use-combobox-anchor-_uR3C1ZZ.d.ts +541 -0
- package/dist/use-combobox-anchor-_uR3C1ZZ.d.ts.map +1 -0
- package/dist/use-input-default-props-DSeo88je.js +8 -0
- package/dist/use-input-default-props-DSeo88je.js.map +1 -0
- package/dist/use-select-default-props-xp2KqlMr.js +384 -0
- package/dist/use-select-default-props-xp2KqlMr.js.map +1 -0
- package/dist/use-sidebar-C9Nj2_Hm.d.ts +389 -0
- package/dist/use-sidebar-C9Nj2_Hm.d.ts.map +1 -0
- package/dist/use-textarea-default-props-DEDcVuHi.js +8 -0
- package/dist/use-textarea-default-props-DEDcVuHi.js.map +1 -0
- package/dist/{use-timeline-Dcj9DR0I.d.ts → use-timeline-C1sQqHU_.d.ts} +1 -1
- package/dist/{use-timeline-Dcj9DR0I.d.ts.map → use-timeline-C1sQqHU_.d.ts.map} +1 -1
- package/package.json +433 -56
- package/dist/accordion-trigger-B51W3Rdg.d.ts +0 -25
- package/dist/accordion-trigger-B51W3Rdg.d.ts.map +0 -1
- package/dist/accordion-trigger-DxGzqkOC.js +0 -72
- package/dist/accordion-trigger-DxGzqkOC.js.map +0 -1
- package/dist/alert-dialog-trigger-CIUFlkzO.js +0 -99
- package/dist/alert-dialog-trigger-CIUFlkzO.js.map +0 -1
- package/dist/alert-title-W1oau4D6.d.ts +0 -23
- package/dist/alert-title-W1oau4D6.d.ts.map +0 -1
- package/dist/alert-title-sXI11YPI.js.map +0 -1
- package/dist/autocomplete-value-DUN1Jprs.d.ts +0 -112
- package/dist/autocomplete-value-DUN1Jprs.d.ts.map +0 -1
- package/dist/autocomplete-value-DZnj2U0-.js +0 -142
- package/dist/autocomplete-value-DZnj2U0-.js.map +0 -1
- package/dist/avatar-image-BAVOtujm.js.map +0 -1
- package/dist/avatar-image-DPunh5Hd.d.ts +0 -36
- package/dist/avatar-image-DPunh5Hd.d.ts.map +0 -1
- package/dist/breadcrumb-separator-Bp5VXfQ8.js +0 -75
- package/dist/breadcrumb-separator-Bp5VXfQ8.js.map +0 -1
- package/dist/breadcrumb-separator-C6zfQJ5p.d.ts +0 -45
- package/dist/breadcrumb-separator-C6zfQJ5p.d.ts.map +0 -1
- package/dist/button-group-text-bzlQC1Fa.js +0 -26
- package/dist/button-group-text-bzlQC1Fa.js.map +0 -1
- package/dist/card-title-BBu0T37s.js +0 -53
- package/dist/card-title-BBu0T37s.js.map +0 -1
- package/dist/card-title-Dk0akcFR.d.ts +0 -41
- package/dist/card-title-Dk0akcFR.d.ts.map +0 -1
- package/dist/carousel-previous-BE0u96g1.js.map +0 -1
- package/dist/collapsible-trigger-COktdQ2E.js.map +0 -1
- package/dist/collapsible-trigger-DjL8pGgf.d.ts +0 -17
- package/dist/collapsible-trigger-DjL8pGgf.d.ts.map +0 -1
- package/dist/command-shortcut-Dpx3liOF.js +0 -98
- package/dist/command-shortcut-Dpx3liOF.js.map +0 -1
- package/dist/context-menu-trigger-C5Li6wJg.js +0 -148
- package/dist/context-menu-trigger-C5Li6wJg.js.map +0 -1
- package/dist/context-menu-trigger-DHPhlnvV.d.ts +0 -104
- package/dist/context-menu-trigger-DHPhlnvV.d.ts.map +0 -1
- package/dist/dialog-trigger-B5HeOikl.d.ts.map +0 -1
- package/dist/dialog-trigger-ptlomR_n.js.map +0 -1
- package/dist/drawer-viewport-DYTvcTF3.js +0 -122
- package/dist/drawer-viewport-DYTvcTF3.js.map +0 -1
- package/dist/drawer-viewport-DejmWgmc.d.ts +0 -109
- package/dist/drawer-viewport-DejmWgmc.d.ts.map +0 -1
- package/dist/dropdown-menu-trigger-Buq3CW_D.js +0 -153
- package/dist/dropdown-menu-trigger-Buq3CW_D.js.map +0 -1
- package/dist/dropdown-menu-trigger-DEdnOFwc.d.ts +0 -109
- package/dist/dropdown-menu-trigger-DEdnOFwc.d.ts.map +0 -1
- package/dist/emoji-picker-skin-tone-selector-amzh0Wk6.d.ts +0 -68
- package/dist/emoji-picker-skin-tone-selector-amzh0Wk6.d.ts.map +0 -1
- package/dist/emoji-picker-skin-tone-selector-ioOHy5cv.js +0 -118
- package/dist/emoji-picker-skin-tone-selector-ioOHy5cv.js.map +0 -1
- package/dist/empty-title-CGGk8sMF.js +0 -54
- package/dist/empty-title-CGGk8sMF.js.map +0 -1
- package/dist/empty-title-CcQlXOlP.d.ts +0 -54
- package/dist/empty-title-CcQlXOlP.d.ts.map +0 -1
- package/dist/form-field-title-KqTd5is7.js +0 -102
- package/dist/form-field-title-KqTd5is7.js.map +0 -1
- package/dist/hover-card-trigger-BJyHUOUc.js +0 -32
- package/dist/hover-card-trigger-BJyHUOUc.js.map +0 -1
- package/dist/hover-card-trigger-CRzFaoL4.d.ts +0 -21
- package/dist/hover-card-trigger-CRzFaoL4.d.ts.map +0 -1
- package/dist/hover-card.d.ts +0 -25
- package/dist/hover-card.d.ts.map +0 -1
- package/dist/hover-card.js +0 -17
- package/dist/hover-card.js.map +0 -1
- package/dist/input-group-textarea-ntvRL1EK.js +0 -80
- package/dist/input-group-textarea-ntvRL1EK.js.map +0 -1
- package/dist/input-otp-slot-B19cyjk_.d.ts +0 -25
- package/dist/input-otp-slot-B19cyjk_.d.ts.map +0 -1
- package/dist/input-otp-slot-BPkvsGjg.js +0 -46
- package/dist/input-otp-slot-BPkvsGjg.js.map +0 -1
- package/dist/item-title-BQFoYDpd.js.map +0 -1
- package/dist/kbd-group-BcPiHwLr.js +0 -13
- package/dist/kbd-group-BcPiHwLr.js.map +0 -1
- package/dist/kbd-group-PUw0yaIv.d.ts +0 -11
- package/dist/kbd-group-PUw0yaIv.d.ts.map +0 -1
- package/dist/menubar-trigger-BCZfHmqs.js +0 -147
- package/dist/menubar-trigger-BCZfHmqs.js.map +0 -1
- package/dist/menubar-trigger-Gx-lmpr9.d.ts +0 -105
- package/dist/menubar-trigger-Gx-lmpr9.d.ts.map +0 -1
- package/dist/meter-value-CJjAfKID.js.map +0 -1
- package/dist/meter-value-FRDEI8VE.d.ts.map +0 -1
- package/dist/navigation-menu-trigger-DG0JCv-9.js +0 -83
- package/dist/navigation-menu-trigger-DG0JCv-9.js.map +0 -1
- package/dist/navigation-menu-trigger-ryYftbUl.d.ts +0 -54
- package/dist/navigation-menu-trigger-ryYftbUl.d.ts.map +0 -1
- package/dist/number-field-scrub-area-cursor-6AFnR-wB.js +0 -69
- package/dist/number-field-scrub-area-cursor-6AFnR-wB.js.map +0 -1
- package/dist/number-field-scrub-area-cursor-BIS4ObSL.d.ts +0 -52
- package/dist/number-field-scrub-area-cursor-BIS4ObSL.d.ts.map +0 -1
- package/dist/optional-portal-BAOgHNvi.js.map +0 -1
- package/dist/pagination-previous-DPVkNRn0.js +0 -89
- package/dist/pagination-previous-DPVkNRn0.js.map +0 -1
- package/dist/pagination-previous-NpFopV3e.d.ts +0 -46
- package/dist/pagination-previous-NpFopV3e.d.ts.map +0 -1
- package/dist/pill-status-BIPaa4o3.js +0 -75
- package/dist/pill-status-BIPaa4o3.js.map +0 -1
- package/dist/popover-trigger-C8pR26Xp.d.ts +0 -40
- package/dist/popover-trigger-C8pR26Xp.d.ts.map +0 -1
- package/dist/popover-trigger-ChgU6NfZ.js +0 -53
- package/dist/popover-trigger-ChgU6NfZ.js.map +0 -1
- package/dist/progress-value-BGhNh_xb.d.ts +0 -29
- package/dist/progress-value-BGhNh_xb.d.ts.map +0 -1
- package/dist/progress-value-gJOcGICf.js.map +0 -1
- package/dist/radio-group-item-DCXseC2o.d.ts +0 -11
- package/dist/radio-group-item-DCXseC2o.d.ts.map +0 -1
- package/dist/radio-group-item-kWYh-tp8.js +0 -25
- package/dist/radio-group-item-kWYh-tp8.js.map +0 -1
- package/dist/rating-star-BZCtD00E.js.map +0 -1
- package/dist/rating-star-CxVJUZmc.d.ts.map +0 -1
- package/dist/resizable-panel-D4Brid-G.d.ts.map +0 -1
- package/dist/resizable-panel-DbWIMjJZ.js.map +0 -1
- package/dist/scroll-bar-KWm27Sfb.js +0 -20
- package/dist/scroll-bar-KWm27Sfb.js.map +0 -1
- package/dist/scroll-bar-L-sXig2v.d.ts +0 -12
- package/dist/scroll-bar-L-sXig2v.d.ts.map +0 -1
- package/dist/select-value-D8pFrPKG.d.ts +0 -71
- package/dist/select-value-D8pFrPKG.d.ts.map +0 -1
- package/dist/select-value-Dudr8w5H.js +0 -118
- package/dist/select-value-Dudr8w5H.js.map +0 -1
- package/dist/sheet-trigger-B_N_tXmj.d.ts +0 -65
- package/dist/sheet-trigger-B_N_tXmj.d.ts.map +0 -1
- package/dist/sheet-trigger-CkQbW5Y7.js.map +0 -1
- package/dist/sidebar-trigger-C_fOu1p2.js.map +0 -1
- package/dist/slider.d.ts.map +0 -1
- package/dist/slider.js.map +0 -1
- package/dist/table-row-BRPt8Kcx.js +0 -61
- package/dist/table-row-BRPt8Kcx.js.map +0 -1
- package/dist/table-row-BSEIkZEJ.d.ts +0 -47
- package/dist/table-row-BSEIkZEJ.d.ts.map +0 -1
- package/dist/tabs-trigger-ChutNdGI.d.ts +0 -48
- package/dist/tabs-trigger-ChutNdGI.d.ts.map +0 -1
- package/dist/tabs-trigger-eCZA0-cA.js +0 -58
- package/dist/tabs-trigger-eCZA0-cA.js.map +0 -1
- package/dist/toggle-group-item-CrPxpOF5.d.ts +0 -54
- package/dist/toggle-group-item-CrPxpOF5.d.ts.map +0 -1
- package/dist/toggle-group-item-D2z6INUa.js +0 -35
- package/dist/toggle-group-item-D2z6INUa.js.map +0 -1
- package/dist/toolbar-separator-D5v-xesm.js +0 -42
- package/dist/toolbar-separator-D5v-xesm.js.map +0 -1
- package/dist/toolbar-separator-DbkRIfIA.d.ts +0 -41
- package/dist/toolbar-separator-DbkRIfIA.d.ts.map +0 -1
- package/dist/tooltip-trigger-B43yfWhK.d.ts +0 -28
- package/dist/tooltip-trigger-B43yfWhK.d.ts.map +0 -1
- package/dist/tooltip-trigger-iOUSgHR_.js +0 -38
- package/dist/tooltip-trigger-iOUSgHR_.js.map +0 -1
- package/dist/typography-ul-D1HgC8fT.js.map +0 -1
- package/dist/typography-ul-Dy8wQB_p.d.ts.map +0 -1
- package/dist/use-combobox-anchor-DEMIerKX.js +0 -199
- package/dist/use-combobox-anchor-DEMIerKX.js.map +0 -1
- package/dist/use-combobox-anchor-DKwvfnFx.d.ts +0 -121
- package/dist/use-combobox-anchor-DKwvfnFx.d.ts.map +0 -1
- package/dist/use-sidebar-CYBPR0ue.d.ts +0 -639
- package/dist/use-sidebar-CYBPR0ue.d.ts.map +0 -1
|
@@ -0,0 +1,544 @@
|
|
|
1
|
+
import { t as mergeBaseUIClassName } from "./merge-base-ui-class-name-u6eS5MaQ.js";
|
|
2
|
+
import { cn } from "tailwind-variants";
|
|
3
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { Slider } from "@base-ui/react/slider";
|
|
6
|
+
|
|
7
|
+
//#region src/ui/slider/math/slider-math-utils.ts
|
|
8
|
+
const EPSILON = 1e-9;
|
|
9
|
+
const clampNumber = (value, min, max) => Math.min(Math.max(value, min), max);
|
|
10
|
+
const getPrecisionFromStep = (step) => {
|
|
11
|
+
if (!Number.isFinite(step) || step <= 0) return 0;
|
|
12
|
+
const [, decimals] = step.toString().split(".");
|
|
13
|
+
return decimals?.length ?? 0;
|
|
14
|
+
};
|
|
15
|
+
const toFloatingValue = (value, precision) => Number.parseFloat(value.toFixed(precision));
|
|
16
|
+
const getPositionPercent = (value, min, max) => {
|
|
17
|
+
if (min === max) return 0;
|
|
18
|
+
return clampNumber((value - min) / (max - min) * 100, 0, 100);
|
|
19
|
+
};
|
|
20
|
+
const getSortedSelectableMarks = (marks, min, max) => {
|
|
21
|
+
if (!marks?.length) return [];
|
|
22
|
+
const uniqueMarks = /* @__PURE__ */ new Set();
|
|
23
|
+
for (const mark of marks) {
|
|
24
|
+
if (!Number.isFinite(mark.value)) continue;
|
|
25
|
+
if (mark.value < min || mark.value > max) continue;
|
|
26
|
+
uniqueMarks.add(mark.value);
|
|
27
|
+
}
|
|
28
|
+
const sortedMarks = [...uniqueMarks];
|
|
29
|
+
sortedMarks.sort((a, b) => a - b);
|
|
30
|
+
return sortedMarks;
|
|
31
|
+
};
|
|
32
|
+
const getNearestMarkValue = (value, marks) => {
|
|
33
|
+
if (!marks.length) return value;
|
|
34
|
+
let nearest = marks[0] ?? value;
|
|
35
|
+
let nearestDistance = Math.abs(value - nearest);
|
|
36
|
+
for (const mark of marks) {
|
|
37
|
+
const distance = Math.abs(value - mark);
|
|
38
|
+
if (distance + EPSILON < nearestDistance) {
|
|
39
|
+
nearest = mark;
|
|
40
|
+
nearestDistance = distance;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return nearest;
|
|
44
|
+
};
|
|
45
|
+
const getNextMarkValue = (current, marks) => {
|
|
46
|
+
for (const mark of marks) if (mark > current + EPSILON) return mark;
|
|
47
|
+
return current;
|
|
48
|
+
};
|
|
49
|
+
const getPreviousMarkValue = (current, marks) => {
|
|
50
|
+
for (let index = marks.length - 1; index >= 0; index -= 1) {
|
|
51
|
+
const mark = marks[index];
|
|
52
|
+
if (mark !== void 0 && mark < current - EPSILON) return mark;
|
|
53
|
+
}
|
|
54
|
+
return current;
|
|
55
|
+
};
|
|
56
|
+
const getFirstMarkValue = (marks, fallback) => marks[0] ?? fallback;
|
|
57
|
+
const getLastMarkValue = (marks, fallback) => marks.at(-1) ?? fallback;
|
|
58
|
+
const isMarkFilled = ({ inverted = false, mark, values }) => {
|
|
59
|
+
if (!values.length) return false;
|
|
60
|
+
if (values.length === 1) {
|
|
61
|
+
const [singleValue] = values;
|
|
62
|
+
if (singleValue === void 0) return false;
|
|
63
|
+
return inverted ? mark >= singleValue : mark <= singleValue;
|
|
64
|
+
}
|
|
65
|
+
const sortedValues = [...values];
|
|
66
|
+
sortedValues.sort((a, b) => a - b);
|
|
67
|
+
const [from = 0, to = 0] = sortedValues;
|
|
68
|
+
if (inverted) return mark <= from || mark >= to;
|
|
69
|
+
return mark >= from && mark <= to;
|
|
70
|
+
};
|
|
71
|
+
const isKeyboardLikeReason = (reason) => reason === "input-change" || reason === "keyboard";
|
|
72
|
+
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/ui/slider/primitives/slider-control.tsx
|
|
75
|
+
const SliderControl = ({ className, ...props }) => /* @__PURE__ */ jsx(Slider.Control, {
|
|
76
|
+
className: mergeBaseUIClassName("group/control relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:w-auto data-[orientation=vertical]:min-h-40 data-[orientation=vertical]:flex-col", className),
|
|
77
|
+
"data-slot": "slider-control",
|
|
78
|
+
...props
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
//#endregion
|
|
82
|
+
//#region src/ui/slider/primitives/slider-indicator.tsx
|
|
83
|
+
const SliderIndicator = ({ className, ...props }) => /* @__PURE__ */ jsx(Slider.Indicator, {
|
|
84
|
+
className: mergeBaseUIClassName("rounded-[var(--slider-radius,var(--radius-sm))] bg-[var(--slider-color,var(--color-primary))] select-none group-data-[invalid]/slider:bg-danger data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full transition-[background-color,inset-inline-start,inset-inline-end,inset-block-start,inset-block-end,width,height] duration-150 ease-out group-data-[dragging]/slider:duration-0 motion-reduce:transition-none", className),
|
|
85
|
+
...props,
|
|
86
|
+
"data-slot": "slider-range"
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
//#endregion
|
|
90
|
+
//#region src/ui/slider/primitives/slider-mark.tsx
|
|
91
|
+
const SliderMark = ({ disabled, filled, label, orientation = "horizontal", position }) => {
|
|
92
|
+
const isHorizontal = orientation === "horizontal";
|
|
93
|
+
const wrapperStyle = isHorizontal ? { insetInlineStart: `${position}%` } : { bottom: `${position}%` };
|
|
94
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
95
|
+
className: cn("pointer-events-none absolute z-20", isHorizontal ? "top-1/2 -translate-x-1/2 -translate-y-1/2" : "left-1/2 -translate-x-1/2 translate-y-1/2"),
|
|
96
|
+
"data-filled": filled ? "true" : "false",
|
|
97
|
+
"data-slot": "slider-mark",
|
|
98
|
+
style: wrapperStyle,
|
|
99
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
100
|
+
"aria-hidden": "true",
|
|
101
|
+
className: cn("block h-[var(--slider-mark-size,0.5rem)] w-[var(--slider-mark-size,0.5rem)] rounded-full border transition-[border-color,background-color] duration-150 ease-out group-data-[dragging]/slider:duration-0 motion-reduce:transition-none", filled ? "border-[var(--slider-color,var(--color-primary))] bg-[var(--slider-color,var(--color-primary))]" : "border-border bg-background", disabled && "border-muted bg-muted"),
|
|
102
|
+
"data-slot": "slider-mark-dot"
|
|
103
|
+
}), label ? /* @__PURE__ */ jsx("span", {
|
|
104
|
+
className: cn("pointer-events-none absolute whitespace-nowrap text-xs text-muted-foreground", isHorizontal ? "left-1/2 top-[calc(var(--slider-mark-size,0.5rem)+0.5rem)] -translate-x-1/2" : "left-[calc(var(--slider-mark-size,0.5rem)+0.5rem)] top-1/2 -translate-y-1/2"),
|
|
105
|
+
"data-slot": "slider-mark-label",
|
|
106
|
+
children: label
|
|
107
|
+
}) : null]
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
//#endregion
|
|
112
|
+
//#region src/ui/slider/primitives/slider-marks.tsx
|
|
113
|
+
const SliderMarks = ({ disabled, inverted, marks, max, min, orientation = "horizontal", values }) => {
|
|
114
|
+
const normalizedMarks = useMemo(() => {
|
|
115
|
+
if (!marks?.length) return [];
|
|
116
|
+
return marks.filter((mark) => Number.isFinite(mark.value)).map((mark) => ({
|
|
117
|
+
...mark,
|
|
118
|
+
position: getPositionPercent(mark.value, min, max)
|
|
119
|
+
}));
|
|
120
|
+
}, [
|
|
121
|
+
marks,
|
|
122
|
+
max,
|
|
123
|
+
min
|
|
124
|
+
]);
|
|
125
|
+
if (!normalizedMarks.length) return null;
|
|
126
|
+
return /* @__PURE__ */ jsx(Fragment, { children: normalizedMarks.map((mark) => /* @__PURE__ */ jsx(SliderMark, {
|
|
127
|
+
disabled,
|
|
128
|
+
filled: isMarkFilled({
|
|
129
|
+
inverted,
|
|
130
|
+
mark: mark.value,
|
|
131
|
+
values
|
|
132
|
+
}),
|
|
133
|
+
label: mark.label,
|
|
134
|
+
orientation,
|
|
135
|
+
position: mark.position
|
|
136
|
+
}, `${mark.value}-${String(mark.label)}`)) });
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
//#endregion
|
|
140
|
+
//#region src/ui/slider/primitives/slider-thumb.tsx
|
|
141
|
+
const SliderThumb = ({ className, ...props }) => /* @__PURE__ */ jsx(Slider.Thumb, {
|
|
142
|
+
className: mergeBaseUIClassName("group/thumb relative block h-[var(--slider-thumb-size,1.25rem)] w-[var(--slider-thumb-size,1.25rem)] shrink-0 cursor-pointer rounded-[var(--slider-radius,var(--radius-sm))] border border-border bg-background shadow-sm ring-ring/50 select-none hover:ring-[3px] has-[:focus-visible]:ring-[3px] has-[:focus-visible]:ring-ring/50 focus-visible:ring-[3px] focus-visible:outline-hidden active:ring-[3px] disabled:pointer-events-none disabled:opacity-50 group-data-[invalid]/slider:border-danger group-data-[invalid]/slider:ring-danger/20 dark:group-data-[invalid]/slider:ring-danger/40 transition-[color,box-shadow,border-color,background-color] duration-150 ease-out group-data-[dragging]/slider:duration-0 motion-reduce:transition-none", className),
|
|
143
|
+
...props,
|
|
144
|
+
"data-slot": "slider-thumb"
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
//#endregion
|
|
148
|
+
//#region src/ui/slider/shared/slider-transition.ts
|
|
149
|
+
const defaultSliderLabelTransitionProps = {
|
|
150
|
+
delay: 0,
|
|
151
|
+
duration: 0,
|
|
152
|
+
timingFunction: "linear"
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
//#endregion
|
|
156
|
+
//#region src/ui/slider/primitives/slider-thumb-label.tsx
|
|
157
|
+
const toMilliseconds = (value) => `${value}ms`;
|
|
158
|
+
const SliderThumbLabel = ({ className, label, labelAlwaysOn, orientation = "horizontal", showLabelOnHover, style, transitionProps, ...props }) => {
|
|
159
|
+
if (label === null || label === void 0) return null;
|
|
160
|
+
const transitionDelay = transitionProps?.delay ?? defaultSliderLabelTransitionProps.delay;
|
|
161
|
+
const transitionDuration = transitionProps?.duration ?? defaultSliderLabelTransitionProps.duration;
|
|
162
|
+
const transitionTimingFunction = transitionProps?.timingFunction ?? defaultSliderLabelTransitionProps.timingFunction;
|
|
163
|
+
return /* @__PURE__ */ jsx("span", {
|
|
164
|
+
...props,
|
|
165
|
+
"aria-hidden": "true",
|
|
166
|
+
className: cn("pointer-events-none absolute z-30 whitespace-nowrap rounded-sm bg-foreground px-1.5 py-0.5 text-xs text-background shadow-sm transition-opacity group-data-[dragging]/slider:duration-0 motion-reduce:transition-none", orientation === "horizontal" ? "-top-[var(--slider-thumb-label-offset,2rem)] left-1/2 -translate-x-1/2" : "left-[var(--slider-thumb-label-offset-vertical,2rem)] top-1/2 -translate-y-1/2", labelAlwaysOn ? "opacity-100" : "opacity-0 group-data-[dragging]/slider:opacity-100 group-has-[:focus]/thumb:opacity-100", showLabelOnHover ? "group-hover/slider:opacity-100" : void 0, className),
|
|
167
|
+
"data-slot": "slider-thumb-label",
|
|
168
|
+
style: {
|
|
169
|
+
...style,
|
|
170
|
+
transitionDelay: toMilliseconds(transitionDelay),
|
|
171
|
+
transitionDuration: toMilliseconds(transitionDuration),
|
|
172
|
+
transitionTimingFunction
|
|
173
|
+
},
|
|
174
|
+
children: label
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
//#endregion
|
|
179
|
+
//#region src/ui/slider/primitives/slider-track.tsx
|
|
180
|
+
const SliderTrack = ({ className, ...props }) => /* @__PURE__ */ jsx(Slider.Track, {
|
|
181
|
+
className: mergeBaseUIClassName("relative overflow-visible rounded-[var(--slider-radius,var(--radius-sm))] bg-[var(--slider-track-color,var(--color-muted))] select-none group-data-[invalid]/slider:bg-danger/15 data-[orientation=horizontal]:h-[var(--slider-size,var(--slider-track-size,0.5rem))] data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-[var(--slider-size,var(--slider-track-size,0.5rem))] transition-[background-color] duration-150 ease-out group-data-[dragging]/slider:duration-0 motion-reduce:transition-none", className),
|
|
182
|
+
...props,
|
|
183
|
+
"data-slot": "slider-track"
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
//#endregion
|
|
187
|
+
//#region src/ui/slider/primitives/slider-value.tsx
|
|
188
|
+
const SliderValue = ({ className, ...props }) => /* @__PURE__ */ jsx(Slider.Value, {
|
|
189
|
+
className: mergeBaseUIClassName(void 0, className),
|
|
190
|
+
"data-slot": "slider-value",
|
|
191
|
+
...props
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
//#endregion
|
|
195
|
+
//#region src/ui/slider/shared/slider-bounds.ts
|
|
196
|
+
const resolveSliderBounds = ({ domain, max, min, precision, step }) => {
|
|
197
|
+
const normalizedMin = Math.min(min, max);
|
|
198
|
+
const normalizedMax = Math.max(min, max);
|
|
199
|
+
const domainMin = Math.min(domain?.[0] ?? normalizedMin, domain?.[1] ?? normalizedMax);
|
|
200
|
+
return {
|
|
201
|
+
domainMax: Math.max(domain?.[0] ?? normalizedMin, domain?.[1] ?? normalizedMax),
|
|
202
|
+
domainMin,
|
|
203
|
+
max: normalizedMax,
|
|
204
|
+
min: normalizedMin,
|
|
205
|
+
precision: precision ?? getPrecisionFromStep(step)
|
|
206
|
+
};
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
//#endregion
|
|
210
|
+
//#region src/ui/slider/shared/slider-label.ts
|
|
211
|
+
const resolveSliderLabel = (label, value) => {
|
|
212
|
+
if (typeof label === "function") return label(value);
|
|
213
|
+
return label;
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
//#endregion
|
|
217
|
+
//#region src/ui/slider/shared/slider-style-tokens.ts
|
|
218
|
+
const PIXEL_UNIT = "px";
|
|
219
|
+
const sliderStyleTokens = {
|
|
220
|
+
color: "--slider-color",
|
|
221
|
+
markSize: "--slider-mark-size",
|
|
222
|
+
radius: "--slider-radius",
|
|
223
|
+
size: "--slider-size",
|
|
224
|
+
thumbLabelOffset: "--slider-thumb-label-offset",
|
|
225
|
+
thumbLabelOffsetVertical: "--slider-thumb-label-offset-vertical",
|
|
226
|
+
thumbSize: "--slider-thumb-size",
|
|
227
|
+
trackColor: "--slider-track-color",
|
|
228
|
+
trackSize: "--slider-track-size"
|
|
229
|
+
};
|
|
230
|
+
const sliderSemanticSizes = {
|
|
231
|
+
xs: {
|
|
232
|
+
thumbSize: "0.875rem",
|
|
233
|
+
trackSize: "0.25rem"
|
|
234
|
+
},
|
|
235
|
+
sm: {
|
|
236
|
+
thumbSize: "1rem",
|
|
237
|
+
trackSize: "0.375rem"
|
|
238
|
+
},
|
|
239
|
+
md: {
|
|
240
|
+
thumbSize: "1.25rem",
|
|
241
|
+
trackSize: "0.5rem"
|
|
242
|
+
},
|
|
243
|
+
lg: {
|
|
244
|
+
thumbSize: "1.5rem",
|
|
245
|
+
trackSize: "0.625rem"
|
|
246
|
+
},
|
|
247
|
+
xl: {
|
|
248
|
+
thumbSize: "1.75rem",
|
|
249
|
+
trackSize: "0.75rem"
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
const sliderSemanticRadii = {
|
|
253
|
+
xs: "calc(var(--radius-sm) - 2px)",
|
|
254
|
+
sm: "var(--radius-sm)",
|
|
255
|
+
md: "var(--radius-md)",
|
|
256
|
+
lg: "var(--radius-lg)",
|
|
257
|
+
xl: "var(--radius-xl)"
|
|
258
|
+
};
|
|
259
|
+
const semanticSliderColorNames = new Set([
|
|
260
|
+
"background",
|
|
261
|
+
"border",
|
|
262
|
+
"danger",
|
|
263
|
+
"foreground",
|
|
264
|
+
"info",
|
|
265
|
+
"muted",
|
|
266
|
+
"primary",
|
|
267
|
+
"secondary",
|
|
268
|
+
"success",
|
|
269
|
+
"warning"
|
|
270
|
+
]);
|
|
271
|
+
const isSemanticSliderSize = (value) => typeof value === "string" && value in sliderSemanticSizes;
|
|
272
|
+
const isSemanticSliderRadius = (value) => typeof value === "string" && value in sliderSemanticRadii;
|
|
273
|
+
const toSliderStyleTokenValue = (value) => {
|
|
274
|
+
if (value === void 0) return;
|
|
275
|
+
return typeof value === "number" ? `${value}${PIXEL_UNIT}` : value;
|
|
276
|
+
};
|
|
277
|
+
const resolveSliderColorValue = (color) => {
|
|
278
|
+
if (color === void 0) return "var(--color-primary)";
|
|
279
|
+
return semanticSliderColorNames.has(color) ? `var(--color-${color})` : color;
|
|
280
|
+
};
|
|
281
|
+
const resolveSliderRadiusValue = (value) => {
|
|
282
|
+
if (value === void 0) return "var(--radius-sm)";
|
|
283
|
+
if (isSemanticSliderRadius(value)) return sliderSemanticRadii[value];
|
|
284
|
+
return toSliderStyleTokenValue(value);
|
|
285
|
+
};
|
|
286
|
+
const resolveSliderTrackSizeValue = (value, fallbackValue) => {
|
|
287
|
+
if (value !== void 0) return isSemanticSliderSize(value) ? sliderSemanticSizes[value].trackSize : toSliderStyleTokenValue(value);
|
|
288
|
+
if (fallbackValue !== void 0) return isSemanticSliderSize(fallbackValue) ? sliderSemanticSizes[fallbackValue].trackSize : toSliderStyleTokenValue(fallbackValue);
|
|
289
|
+
return sliderSemanticSizes.md.trackSize;
|
|
290
|
+
};
|
|
291
|
+
const resolveSliderThumbSizeValue = (value, fallbackValue) => {
|
|
292
|
+
if (value !== void 0) return isSemanticSliderSize(value) ? sliderSemanticSizes[value].thumbSize : toSliderStyleTokenValue(value);
|
|
293
|
+
if (fallbackValue !== void 0) return isSemanticSliderSize(fallbackValue) ? sliderSemanticSizes[fallbackValue].thumbSize : toSliderStyleTokenValue(fallbackValue);
|
|
294
|
+
return sliderSemanticSizes.md.thumbSize;
|
|
295
|
+
};
|
|
296
|
+
const resolveSliderRootStyleTokens = ({ color, markSize, radius, size, thumbLabelOffset, thumbLabelOffsetVertical, thumbSize, trackSize }) => {
|
|
297
|
+
const markSizeValue = toSliderStyleTokenValue(markSize);
|
|
298
|
+
const thumbLabelOffsetValue = toSliderStyleTokenValue(thumbLabelOffset);
|
|
299
|
+
const thumbLabelOffsetVerticalValue = toSliderStyleTokenValue(thumbLabelOffsetVertical);
|
|
300
|
+
const trackSizeValue = resolveSliderTrackSizeValue(trackSize, size);
|
|
301
|
+
const thumbSizeValue = resolveSliderThumbSizeValue(thumbSize, size);
|
|
302
|
+
return {
|
|
303
|
+
[sliderStyleTokens.color]: resolveSliderColorValue(color),
|
|
304
|
+
[sliderStyleTokens.radius]: resolveSliderRadiusValue(radius),
|
|
305
|
+
[sliderStyleTokens.size]: trackSizeValue,
|
|
306
|
+
[sliderStyleTokens.thumbSize]: thumbSizeValue,
|
|
307
|
+
[sliderStyleTokens.trackColor]: "var(--color-muted)",
|
|
308
|
+
[sliderStyleTokens.trackSize]: trackSizeValue,
|
|
309
|
+
...markSizeValue === void 0 ? {} : { [sliderStyleTokens.markSize]: markSizeValue },
|
|
310
|
+
...thumbLabelOffsetValue === void 0 ? {} : { [sliderStyleTokens.thumbLabelOffset]: thumbLabelOffsetValue },
|
|
311
|
+
...thumbLabelOffsetVerticalValue === void 0 ? {} : { [sliderStyleTokens.thumbLabelOffsetVertical]: thumbLabelOffsetVerticalValue }
|
|
312
|
+
};
|
|
313
|
+
};
|
|
314
|
+
|
|
315
|
+
//#endregion
|
|
316
|
+
//#region src/ui/slider/shared/slider-root-presentation.ts
|
|
317
|
+
const resolveSliderRootClassName = (className, inverted) => mergeBaseUIClassName("group/slider data-[orientation=horizontal]:w-full data-[orientation=horizontal]:px-[calc(var(--slider-thumb-size,1.25rem)/2)] data-[orientation=vertical]:h-full data-[orientation=vertical]:py-[calc(var(--slider-thumb-size,1.25rem)/2)]", typeof className === "function" ? (state) => [inverted ? "[&_[data-slot=slider-track]]:bg-[var(--slider-color,var(--color-primary))] [&_[data-slot=slider-range]]:bg-[var(--slider-track-color,var(--color-muted))]" : void 0, className(state)].filter(Boolean).join(" ") : [inverted ? "[&_[data-slot=slider-track]]:bg-[var(--slider-color,var(--color-primary))] [&_[data-slot=slider-range]]:bg-[var(--slider-track-color,var(--color-muted))]" : void 0, className].filter(Boolean).join(" "));
|
|
318
|
+
const mergeSliderRootStyle = (styleTokens, style) => {
|
|
319
|
+
const baseStyle = resolveSliderRootStyleTokens(styleTokens);
|
|
320
|
+
if (typeof style === "function") return (state) => {
|
|
321
|
+
const resolvedStyle = style(state);
|
|
322
|
+
return baseStyle ? {
|
|
323
|
+
...baseStyle,
|
|
324
|
+
...resolvedStyle
|
|
325
|
+
} : resolvedStyle;
|
|
326
|
+
};
|
|
327
|
+
if (!baseStyle) return style;
|
|
328
|
+
return {
|
|
329
|
+
...baseStyle,
|
|
330
|
+
...style
|
|
331
|
+
};
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
//#endregion
|
|
335
|
+
//#region src/ui/slider/math/normalize-single-slider-value.ts
|
|
336
|
+
const normalizeSingleSliderValue = ({ current, domainMax, domainMin, marks, max, min, precision, raw, reason, restrictToMarks }) => {
|
|
337
|
+
const clampedRaw = clampNumber(raw, domainMin, domainMax);
|
|
338
|
+
const clampedCurrent = clampNumber(current, min, max);
|
|
339
|
+
if (!restrictToMarks) return toFloatingValue(clampNumber(clampedRaw, min, max), precision);
|
|
340
|
+
const selectableMarks = getSortedSelectableMarks(marks, min, max);
|
|
341
|
+
if (!selectableMarks.length) return toFloatingValue(clampNumber(clampedRaw, min, max), precision);
|
|
342
|
+
if (!isKeyboardLikeReason(reason)) return toFloatingValue(getNearestMarkValue(clampedRaw, selectableMarks), precision);
|
|
343
|
+
if (clampedRaw <= min) return toFloatingValue(getFirstMarkValue(selectableMarks, min), precision);
|
|
344
|
+
if (clampedRaw >= max) return toFloatingValue(getLastMarkValue(selectableMarks, max), precision);
|
|
345
|
+
if (clampedRaw > clampedCurrent) return toFloatingValue(getNextMarkValue(clampedCurrent, selectableMarks), precision);
|
|
346
|
+
if (clampedRaw < clampedCurrent) return toFloatingValue(getPreviousMarkValue(clampedCurrent, selectableMarks), precision);
|
|
347
|
+
return toFloatingValue(getNearestMarkValue(clampedRaw, selectableMarks), precision);
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
//#endregion
|
|
351
|
+
//#region src/ui/slider/single/use-single-slider-state.ts
|
|
352
|
+
const useSingleSliderState = ({ defaultValue, domainMax, domainMin, marks, max, min, onChange, onChangeEnd, precision, restrictToMarks, value }) => {
|
|
353
|
+
const [uncontrolledValue, setUncontrolledValue] = useState(useMemo(() => normalizeSingleSliderValue({
|
|
354
|
+
current: min,
|
|
355
|
+
domainMax,
|
|
356
|
+
domainMin,
|
|
357
|
+
marks,
|
|
358
|
+
max,
|
|
359
|
+
min,
|
|
360
|
+
precision,
|
|
361
|
+
raw: defaultValue ?? min,
|
|
362
|
+
restrictToMarks
|
|
363
|
+
}), [
|
|
364
|
+
defaultValue,
|
|
365
|
+
domainMax,
|
|
366
|
+
domainMin,
|
|
367
|
+
marks,
|
|
368
|
+
max,
|
|
369
|
+
min,
|
|
370
|
+
precision,
|
|
371
|
+
restrictToMarks
|
|
372
|
+
]));
|
|
373
|
+
const sliderValue = useMemo(() => {
|
|
374
|
+
if (value === void 0) return;
|
|
375
|
+
return normalizeSingleSliderValue({
|
|
376
|
+
current: uncontrolledValue,
|
|
377
|
+
domainMax,
|
|
378
|
+
domainMin,
|
|
379
|
+
marks,
|
|
380
|
+
max,
|
|
381
|
+
min,
|
|
382
|
+
precision,
|
|
383
|
+
raw: value,
|
|
384
|
+
restrictToMarks
|
|
385
|
+
});
|
|
386
|
+
}, [
|
|
387
|
+
domainMax,
|
|
388
|
+
domainMin,
|
|
389
|
+
marks,
|
|
390
|
+
max,
|
|
391
|
+
min,
|
|
392
|
+
precision,
|
|
393
|
+
restrictToMarks,
|
|
394
|
+
uncontrolledValue,
|
|
395
|
+
value
|
|
396
|
+
]) ?? uncontrolledValue;
|
|
397
|
+
const valueRef = useRef(sliderValue);
|
|
398
|
+
useEffect(() => {
|
|
399
|
+
valueRef.current = sliderValue;
|
|
400
|
+
}, [sliderValue]);
|
|
401
|
+
useEffect(() => {
|
|
402
|
+
if (value !== void 0) return;
|
|
403
|
+
setUncontrolledValue((previous) => normalizeSingleSliderValue({
|
|
404
|
+
current: previous,
|
|
405
|
+
domainMax,
|
|
406
|
+
domainMin,
|
|
407
|
+
marks,
|
|
408
|
+
max,
|
|
409
|
+
min,
|
|
410
|
+
precision,
|
|
411
|
+
raw: previous,
|
|
412
|
+
restrictToMarks
|
|
413
|
+
}));
|
|
414
|
+
}, [
|
|
415
|
+
domainMax,
|
|
416
|
+
domainMin,
|
|
417
|
+
marks,
|
|
418
|
+
max,
|
|
419
|
+
min,
|
|
420
|
+
precision,
|
|
421
|
+
restrictToMarks,
|
|
422
|
+
value
|
|
423
|
+
]);
|
|
424
|
+
return {
|
|
425
|
+
handleValueChange: useCallback((nextValue, eventDetails) => {
|
|
426
|
+
const rawValue = Array.isArray(nextValue) ? nextValue[0] ?? valueRef.current : nextValue;
|
|
427
|
+
const normalizedValue = normalizeSingleSliderValue({
|
|
428
|
+
current: valueRef.current,
|
|
429
|
+
domainMax,
|
|
430
|
+
domainMin,
|
|
431
|
+
marks,
|
|
432
|
+
max,
|
|
433
|
+
min,
|
|
434
|
+
precision,
|
|
435
|
+
raw: rawValue,
|
|
436
|
+
reason: eventDetails.reason,
|
|
437
|
+
restrictToMarks
|
|
438
|
+
});
|
|
439
|
+
valueRef.current = normalizedValue;
|
|
440
|
+
if (value === void 0) setUncontrolledValue(normalizedValue);
|
|
441
|
+
onChange?.(normalizedValue);
|
|
442
|
+
}, [
|
|
443
|
+
domainMax,
|
|
444
|
+
domainMin,
|
|
445
|
+
marks,
|
|
446
|
+
max,
|
|
447
|
+
min,
|
|
448
|
+
onChange,
|
|
449
|
+
precision,
|
|
450
|
+
restrictToMarks,
|
|
451
|
+
value
|
|
452
|
+
]),
|
|
453
|
+
handleValueCommitted: useCallback(() => {
|
|
454
|
+
onChangeEnd?.(valueRef.current);
|
|
455
|
+
}, [onChangeEnd]),
|
|
456
|
+
sliderValue
|
|
457
|
+
};
|
|
458
|
+
};
|
|
459
|
+
|
|
460
|
+
//#endregion
|
|
461
|
+
//#region src/ui/slider/single/slider.tsx
|
|
462
|
+
const Slider$1 = (({ className, children, color, defaultValue, domain, hiddenInputProps, inverted = false, label = (value) => value, labelAlwaysOn = false, labelTransitionProps, marks, max = 100, min = 0, name, onChange, onChangeEnd, precision: precisionProp, radius, restrictToMarks = false, scale = (value) => value, size, showLabelOnHover = true, step = 1, style, thumbChildren, thumbLabel, thumbLabelOffset, thumbLabelOffsetVertical, thumbProps, thumbSize, trackSize, markSize, value, ...props }) => {
|
|
463
|
+
const { domainMax, domainMin, max: normalizedMax, min: normalizedMin, precision } = resolveSliderBounds({
|
|
464
|
+
domain,
|
|
465
|
+
max,
|
|
466
|
+
min,
|
|
467
|
+
precision: precisionProp,
|
|
468
|
+
step
|
|
469
|
+
});
|
|
470
|
+
const { handleValueChange, handleValueCommitted, sliderValue } = useSingleSliderState({
|
|
471
|
+
defaultValue,
|
|
472
|
+
domainMax,
|
|
473
|
+
domainMin,
|
|
474
|
+
marks,
|
|
475
|
+
max: normalizedMax,
|
|
476
|
+
min: normalizedMin,
|
|
477
|
+
onChange,
|
|
478
|
+
onChangeEnd,
|
|
479
|
+
precision,
|
|
480
|
+
restrictToMarks,
|
|
481
|
+
value
|
|
482
|
+
});
|
|
483
|
+
const displayedValue = toFloatingValue(scale(sliderValue), precision);
|
|
484
|
+
const resolvedLabel = resolveSliderLabel(label, displayedValue);
|
|
485
|
+
const defaultThumbProps = thumbProps ?? {};
|
|
486
|
+
return /* @__PURE__ */ jsxs(Slider.Root, {
|
|
487
|
+
...props,
|
|
488
|
+
className: resolveSliderRootClassName(className, inverted),
|
|
489
|
+
"data-slot": "slider",
|
|
490
|
+
max: domainMax,
|
|
491
|
+
min: domainMin,
|
|
492
|
+
onValueChange: handleValueChange,
|
|
493
|
+
onValueCommitted: handleValueCommitted,
|
|
494
|
+
step,
|
|
495
|
+
style: mergeSliderRootStyle({
|
|
496
|
+
color,
|
|
497
|
+
markSize,
|
|
498
|
+
radius,
|
|
499
|
+
size,
|
|
500
|
+
thumbLabelOffset,
|
|
501
|
+
thumbLabelOffsetVertical,
|
|
502
|
+
thumbSize,
|
|
503
|
+
trackSize
|
|
504
|
+
}, style),
|
|
505
|
+
thumbAlignment: "center",
|
|
506
|
+
value: sliderValue,
|
|
507
|
+
children: [children ?? /* @__PURE__ */ jsxs(SliderControl, { children: [/* @__PURE__ */ jsxs(SliderTrack, { children: [/* @__PURE__ */ jsx(SliderIndicator, {}), /* @__PURE__ */ jsx(SliderMarks, {
|
|
508
|
+
disabled: props.disabled,
|
|
509
|
+
inverted,
|
|
510
|
+
marks,
|
|
511
|
+
max: domainMax,
|
|
512
|
+
min: domainMin,
|
|
513
|
+
orientation: props.orientation,
|
|
514
|
+
values: [sliderValue]
|
|
515
|
+
})] }), /* @__PURE__ */ jsxs(SliderThumb, {
|
|
516
|
+
...defaultThumbProps,
|
|
517
|
+
"aria-label": thumbLabel,
|
|
518
|
+
children: [thumbChildren, /* @__PURE__ */ jsx(SliderThumbLabel, {
|
|
519
|
+
label: resolvedLabel,
|
|
520
|
+
labelAlwaysOn,
|
|
521
|
+
orientation: props.orientation,
|
|
522
|
+
showLabelOnHover,
|
|
523
|
+
transitionProps: labelTransitionProps
|
|
524
|
+
})]
|
|
525
|
+
})] }), name ? /* @__PURE__ */ jsx("input", {
|
|
526
|
+
...hiddenInputProps,
|
|
527
|
+
name,
|
|
528
|
+
type: "hidden",
|
|
529
|
+
value: String(displayedValue)
|
|
530
|
+
}) : null]
|
|
531
|
+
});
|
|
532
|
+
});
|
|
533
|
+
Slider$1.Control = SliderControl;
|
|
534
|
+
Slider$1.Indicator = SliderIndicator;
|
|
535
|
+
Slider$1.Mark = SliderMark;
|
|
536
|
+
Slider$1.Marks = SliderMarks;
|
|
537
|
+
Slider$1.Thumb = SliderThumb;
|
|
538
|
+
Slider$1.ThumbLabel = SliderThumbLabel;
|
|
539
|
+
Slider$1.Track = SliderTrack;
|
|
540
|
+
Slider$1.Value = SliderValue;
|
|
541
|
+
|
|
542
|
+
//#endregion
|
|
543
|
+
export { toFloatingValue as S, getNearestMarkValue as _, resolveSliderBounds as a, getSortedSelectableMarks as b, SliderThumbLabel as c, SliderMark as d, SliderIndicator as f, getLastMarkValue as g, getFirstMarkValue as h, resolveSliderLabel as i, SliderThumb as l, clampNumber as m, mergeSliderRootStyle as n, SliderValue as o, SliderControl as p, resolveSliderRootClassName as r, SliderTrack as s, Slider$1 as t, SliderMarks as u, getNextMarkValue as v, isKeyboardLikeReason as x, getPreviousMarkValue as y };
|
|
544
|
+
//# sourceMappingURL=slider-CqapJ6Pa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-CqapJ6Pa.js","names":["SliderPrimitive","SliderPrimitive","SliderPrimitive","SliderPrimitive","SliderPrimitive","Slider","SliderPrimitive","SliderValuePrimitive"],"sources":["../src/ui/slider/math/slider-math-utils.ts","../src/ui/slider/primitives/slider-control.tsx","../src/ui/slider/primitives/slider-indicator.tsx","../src/ui/slider/primitives/slider-mark.tsx","../src/ui/slider/primitives/slider-marks.tsx","../src/ui/slider/primitives/slider-thumb.tsx","../src/ui/slider/shared/slider-transition.ts","../src/ui/slider/primitives/slider-thumb-label.tsx","../src/ui/slider/primitives/slider-track.tsx","../src/ui/slider/primitives/slider-value.tsx","../src/ui/slider/shared/slider-bounds.ts","../src/ui/slider/shared/slider-label.ts","../src/ui/slider/shared/slider-style-tokens.ts","../src/ui/slider/shared/slider-root-presentation.ts","../src/ui/slider/math/normalize-single-slider-value.ts","../src/ui/slider/single/use-single-slider-state.ts","../src/ui/slider/single/slider.tsx"],"sourcesContent":["import type { SliderMark } from \"../shared/slider-types\";\n\nconst EPSILON = 1e-9;\n\nexport const clampNumber = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max);\n\nexport const getPrecisionFromStep = (step: number) => {\n if (!Number.isFinite(step) || step <= 0) {\n return 0;\n }\n\n const [, decimals] = step.toString().split(\".\");\n return decimals?.length ?? 0;\n};\n\nexport const toFloatingValue = (value: number, precision: number) =>\n Number.parseFloat(value.toFixed(precision));\n\nexport const getPositionPercent = (value: number, min: number, max: number) => {\n if (min === max) {\n return 0;\n }\n\n const percent = ((value - min) / (max - min)) * 100;\n return clampNumber(percent, 0, 100);\n};\n\nexport const getSortedSelectableMarks = (\n marks: readonly SliderMark[] | undefined,\n min: number,\n max: number\n) => {\n if (!marks?.length) {\n return [] as number[];\n }\n\n const uniqueMarks = new Set<number>();\n for (const mark of marks) {\n if (!Number.isFinite(mark.value)) {\n continue;\n }\n\n if (mark.value < min || mark.value > max) {\n continue;\n }\n\n uniqueMarks.add(mark.value);\n }\n\n const sortedMarks = [...uniqueMarks];\n sortedMarks.sort((a, b) => a - b);\n return sortedMarks;\n};\n\nexport const getNearestMarkValue = (\n value: number,\n marks: readonly number[]\n) => {\n if (!marks.length) {\n return value;\n }\n\n let nearest = marks[0] ?? value;\n let nearestDistance = Math.abs(value - nearest);\n\n for (const mark of marks) {\n const distance = Math.abs(value - mark);\n if (distance + EPSILON < nearestDistance) {\n nearest = mark;\n nearestDistance = distance;\n }\n }\n\n return nearest;\n};\n\nexport const getNextMarkValue = (current: number, marks: readonly number[]) => {\n for (const mark of marks) {\n if (mark > current + EPSILON) {\n return mark;\n }\n }\n\n return current;\n};\n\nexport const getPreviousMarkValue = (\n current: number,\n marks: readonly number[]\n) => {\n for (let index = marks.length - 1; index >= 0; index -= 1) {\n const mark = marks[index];\n if (mark !== undefined && mark < current - EPSILON) {\n return mark;\n }\n }\n\n return current;\n};\n\nexport const getFirstMarkValue = (marks: readonly number[], fallback: number) =>\n marks[0] ?? fallback;\n\nexport const getLastMarkValue = (marks: readonly number[], fallback: number) =>\n marks.at(-1) ?? fallback;\n\nexport const isMarkFilled = ({\n inverted = false,\n mark,\n values,\n}: {\n inverted?: boolean;\n mark: number;\n values: readonly number[];\n}) => {\n if (!values.length) {\n return false;\n }\n\n if (values.length === 1) {\n const [singleValue] = values;\n if (singleValue === undefined) {\n return false;\n }\n\n return inverted ? mark >= singleValue : mark <= singleValue;\n }\n\n const sortedValues = [...values];\n sortedValues.sort((a, b) => a - b);\n const [from = 0, to = 0] = sortedValues;\n\n if (inverted) {\n return mark <= from || mark >= to;\n }\n\n return mark >= from && mark <= to;\n};\n\nexport const isKeyboardLikeReason = (reason: string | null | undefined) =>\n reason === \"input-change\" || reason === \"keyboard\";\n","\"use client\";\n\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\";\n\nimport { mergeBaseUIClassName } from \"../../../utils/merge-base-ui-class-name\";\n\nexport type SliderControlProps = SliderPrimitive.Control.Props;\n\nconst SliderControl = ({ className, ...props }: SliderControlProps) => (\n <SliderPrimitive.Control\n className={mergeBaseUIClassName<SliderPrimitive.Root.State>(\n \"group/control relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:w-auto data-[orientation=vertical]:min-h-40 data-[orientation=vertical]:flex-col\",\n className\n )}\n data-slot=\"slider-control\"\n {...props}\n />\n);\n\nexport { SliderControl };\n","\"use client\";\n\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\";\n\nimport { mergeBaseUIClassName } from \"../../../utils/merge-base-ui-class-name\";\n\nexport type SliderIndicatorProps = SliderPrimitive.Indicator.Props;\n\nconst SliderIndicator = ({ className, ...props }: SliderIndicatorProps) => (\n <SliderPrimitive.Indicator\n className={mergeBaseUIClassName<SliderPrimitive.Root.State>(\n \"rounded-[var(--slider-radius,var(--radius-sm))] bg-[var(--slider-color,var(--color-primary))] select-none group-data-[invalid]/slider:bg-danger data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full transition-[background-color,inset-inline-start,inset-inline-end,inset-block-start,inset-block-end,width,height] duration-150 ease-out group-data-[dragging]/slider:duration-0 motion-reduce:transition-none\",\n className\n )}\n {...props}\n data-slot=\"slider-range\"\n />\n);\n\nexport { SliderIndicator };\n","\"use client\";\n\nimport type { CSSProperties, ReactNode } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\n\nexport interface SliderMarkProps {\n disabled?: boolean;\n filled?: boolean;\n label?: ReactNode;\n orientation?: \"horizontal\" | \"vertical\";\n position: number;\n}\n\nconst SliderMark = ({\n disabled,\n filled,\n label,\n orientation = \"horizontal\",\n position,\n}: SliderMarkProps) => {\n const isHorizontal = orientation === \"horizontal\";\n\n const wrapperStyle = isHorizontal\n ? ({ insetInlineStart: `${position}%` } satisfies CSSProperties)\n : ({ bottom: `${position}%` } satisfies CSSProperties);\n\n return (\n <div\n className={cn(\n \"pointer-events-none absolute z-20\",\n isHorizontal\n ? \"top-1/2 -translate-x-1/2 -translate-y-1/2\"\n : \"left-1/2 -translate-x-1/2 translate-y-1/2\"\n )}\n data-filled={filled ? \"true\" : \"false\"}\n data-slot=\"slider-mark\"\n style={wrapperStyle}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n \"block h-[var(--slider-mark-size,0.5rem)] w-[var(--slider-mark-size,0.5rem)] rounded-full border transition-[border-color,background-color] duration-150 ease-out group-data-[dragging]/slider:duration-0 motion-reduce:transition-none\",\n filled\n ? \"border-[var(--slider-color,var(--color-primary))] bg-[var(--slider-color,var(--color-primary))]\"\n : \"border-border bg-background\",\n disabled && \"border-muted bg-muted\"\n )}\n data-slot=\"slider-mark-dot\"\n />\n {label ? (\n <span\n className={cn(\n \"pointer-events-none absolute whitespace-nowrap text-xs text-muted-foreground\",\n isHorizontal\n ? \"left-1/2 top-[calc(var(--slider-mark-size,0.5rem)+0.5rem)] -translate-x-1/2\"\n : \"left-[calc(var(--slider-mark-size,0.5rem)+0.5rem)] top-1/2 -translate-y-1/2\"\n )}\n data-slot=\"slider-mark-label\"\n >\n {label}\n </span>\n ) : null}\n </div>\n );\n};\n\nexport { SliderMark };\n","\"use client\";\n\nimport { useMemo } from \"react\";\n\nimport type { SliderMark as SliderMarkType } from \"../shared/slider-types\";\n\nimport { getPositionPercent, isMarkFilled } from \"../math/slider-math-utils\";\nimport { SliderMark } from \"./slider-mark\";\n\nexport interface SliderMarksProps {\n disabled?: boolean;\n inverted?: boolean;\n marks?: readonly SliderMarkType[];\n max: number;\n min: number;\n orientation?: \"horizontal\" | \"vertical\";\n values: readonly number[];\n}\n\nconst SliderMarks = ({\n disabled,\n inverted,\n marks,\n max,\n min,\n orientation = \"horizontal\",\n values,\n}: SliderMarksProps) => {\n const normalizedMarks = useMemo(() => {\n if (!marks?.length) {\n return [];\n }\n\n return marks\n .filter((mark) => Number.isFinite(mark.value))\n .map((mark) => ({\n ...mark,\n position: getPositionPercent(mark.value, min, max),\n }));\n }, [marks, max, min]);\n\n if (!normalizedMarks.length) {\n return null;\n }\n\n return (\n <>\n {normalizedMarks.map((mark) => (\n <SliderMark\n disabled={disabled}\n filled={isMarkFilled({\n inverted,\n mark: mark.value,\n values,\n })}\n key={`${mark.value}-${String(mark.label)}`}\n label={mark.label}\n orientation={orientation}\n position={mark.position}\n />\n ))}\n </>\n );\n};\n\nexport { SliderMarks };\n","\"use client\";\n\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\";\n\nimport { mergeBaseUIClassName } from \"../../../utils/merge-base-ui-class-name\";\n\nexport type SliderThumbProps = SliderPrimitive.Thumb.Props;\n\nconst SliderThumb = ({ className, ...props }: SliderThumbProps) => (\n <SliderPrimitive.Thumb\n className={mergeBaseUIClassName<SliderPrimitive.Thumb.State>(\n \"group/thumb relative block h-[var(--slider-thumb-size,1.25rem)] w-[var(--slider-thumb-size,1.25rem)] shrink-0 cursor-pointer rounded-[var(--slider-radius,var(--radius-sm))] border border-border bg-background shadow-sm ring-ring/50 select-none hover:ring-[3px] has-[:focus-visible]:ring-[3px] has-[:focus-visible]:ring-ring/50 focus-visible:ring-[3px] focus-visible:outline-hidden active:ring-[3px] disabled:pointer-events-none disabled:opacity-50 group-data-[invalid]/slider:border-danger group-data-[invalid]/slider:ring-danger/20 dark:group-data-[invalid]/slider:ring-danger/40 transition-[color,box-shadow,border-color,background-color] duration-150 ease-out group-data-[dragging]/slider:duration-0 motion-reduce:transition-none\",\n className\n )}\n {...props}\n data-slot=\"slider-thumb\"\n />\n);\n\nexport { SliderThumb };\n","export interface SliderLabelTransitionProps {\n delay?: number;\n duration?: number;\n timingFunction?: string;\n}\n\nexport const defaultSliderLabelTransitionProps = {\n delay: 0,\n duration: 0,\n timingFunction: \"linear\",\n} as const satisfies Required<SliderLabelTransitionProps>;\n","\"use client\";\n\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\n\nimport {\n defaultSliderLabelTransitionProps,\n type SliderLabelTransitionProps,\n} from \"../shared/slider-transition\";\n\nexport interface SliderThumbLabelProps extends Omit<\n ComponentPropsWithoutRef<\"span\">,\n \"children\"\n> {\n label: ReactNode;\n labelAlwaysOn?: boolean;\n orientation?: \"horizontal\" | \"vertical\";\n showLabelOnHover?: boolean;\n transitionProps?: SliderLabelTransitionProps;\n}\n\nconst toMilliseconds = (value: number) => `${value}ms`;\n\nconst SliderThumbLabel = ({\n className,\n label,\n labelAlwaysOn,\n orientation = \"horizontal\",\n showLabelOnHover,\n style,\n transitionProps,\n ...props\n}: SliderThumbLabelProps) => {\n if (label === null || label === undefined) {\n return null;\n }\n\n const transitionDelay =\n transitionProps?.delay ?? defaultSliderLabelTransitionProps.delay;\n const transitionDuration =\n transitionProps?.duration ?? defaultSliderLabelTransitionProps.duration;\n const transitionTimingFunction =\n transitionProps?.timingFunction ??\n defaultSliderLabelTransitionProps.timingFunction;\n\n return (\n <span\n {...props}\n aria-hidden=\"true\"\n className={cn(\n \"pointer-events-none absolute z-30 whitespace-nowrap rounded-sm bg-foreground px-1.5 py-0.5 text-xs text-background shadow-sm transition-opacity group-data-[dragging]/slider:duration-0 motion-reduce:transition-none\",\n orientation === \"horizontal\"\n ? \"-top-[var(--slider-thumb-label-offset,2rem)] left-1/2 -translate-x-1/2\"\n : \"left-[var(--slider-thumb-label-offset-vertical,2rem)] top-1/2 -translate-y-1/2\",\n labelAlwaysOn\n ? \"opacity-100\"\n : \"opacity-0 group-data-[dragging]/slider:opacity-100 group-has-[:focus]/thumb:opacity-100\",\n showLabelOnHover ? \"group-hover/slider:opacity-100\" : undefined,\n className\n )}\n data-slot=\"slider-thumb-label\"\n style={{\n ...style,\n transitionDelay: toMilliseconds(transitionDelay),\n transitionDuration: toMilliseconds(transitionDuration),\n transitionTimingFunction,\n }}\n >\n {label}\n </span>\n );\n};\n\nexport { SliderThumbLabel };\n","\"use client\";\n\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\";\n\nimport { mergeBaseUIClassName } from \"../../../utils/merge-base-ui-class-name\";\n\nexport type SliderTrackProps = SliderPrimitive.Track.Props;\n\nconst SliderTrack = ({ className, ...props }: SliderTrackProps) => (\n <SliderPrimitive.Track\n className={mergeBaseUIClassName<SliderPrimitive.Root.State>(\n \"relative overflow-visible rounded-[var(--slider-radius,var(--radius-sm))] bg-[var(--slider-track-color,var(--color-muted))] select-none group-data-[invalid]/slider:bg-danger/15 data-[orientation=horizontal]:h-[var(--slider-size,var(--slider-track-size,0.5rem))] data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-[var(--slider-size,var(--slider-track-size,0.5rem))] transition-[background-color] duration-150 ease-out group-data-[dragging]/slider:duration-0 motion-reduce:transition-none\",\n className\n )}\n {...props}\n data-slot=\"slider-track\"\n />\n);\n\nexport { SliderTrack };\n","\"use client\";\n\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\";\n\nimport { mergeBaseUIClassName } from \"../../../utils/merge-base-ui-class-name\";\n\nexport type SliderValueProps = SliderPrimitive.Value.Props;\n\nconst SliderValue = ({ className, ...props }: SliderValueProps) => (\n <SliderPrimitive.Value\n className={mergeBaseUIClassName<SliderPrimitive.Root.State>(\n undefined,\n className\n )}\n data-slot=\"slider-value\"\n {...props}\n />\n);\n\nexport { SliderValue };\n","import { getPrecisionFromStep } from \"../math/slider-math-utils\";\n\ninterface ResolveSliderBoundsOptions {\n domain?: [number, number];\n max: number;\n min: number;\n precision?: number;\n step: number;\n}\n\ninterface ResolvedSliderBounds {\n domainMax: number;\n domainMin: number;\n max: number;\n min: number;\n precision: number;\n}\n\nexport const resolveSliderBounds = ({\n domain,\n max,\n min,\n precision,\n step,\n}: ResolveSliderBoundsOptions): ResolvedSliderBounds => {\n const normalizedMin = Math.min(min, max);\n const normalizedMax = Math.max(min, max);\n\n const domainMin = Math.min(\n domain?.[0] ?? normalizedMin,\n domain?.[1] ?? normalizedMax\n );\n const domainMax = Math.max(\n domain?.[0] ?? normalizedMin,\n domain?.[1] ?? normalizedMax\n );\n\n return {\n domainMax,\n domainMin,\n max: normalizedMax,\n min: normalizedMin,\n precision: precision ?? getPrecisionFromStep(step),\n };\n};\n","import type { SliderLabel } from \"./slider-types\";\n\nexport const resolveSliderLabel = (\n label: SliderLabel | undefined,\n value: number\n) => {\n if (typeof label === \"function\") {\n return label(value);\n }\n\n return label;\n};\n","import type { CSSProperties } from \"react\";\n\nconst PIXEL_UNIT = \"px\";\n\nexport const sliderStyleTokens = {\n color: \"--slider-color\",\n markSize: \"--slider-mark-size\",\n radius: \"--slider-radius\",\n size: \"--slider-size\",\n thumbLabelOffset: \"--slider-thumb-label-offset\",\n thumbLabelOffsetVertical: \"--slider-thumb-label-offset-vertical\",\n thumbSize: \"--slider-thumb-size\",\n trackColor: \"--slider-track-color\",\n trackSize: \"--slider-track-size\",\n} as const;\n\nconst sliderSemanticSizes = {\n xs: { thumbSize: \"0.875rem\", trackSize: \"0.25rem\" },\n sm: { thumbSize: \"1rem\", trackSize: \"0.375rem\" },\n md: { thumbSize: \"1.25rem\", trackSize: \"0.5rem\" },\n lg: { thumbSize: \"1.5rem\", trackSize: \"0.625rem\" },\n xl: { thumbSize: \"1.75rem\", trackSize: \"0.75rem\" },\n} as const;\n\nconst sliderSemanticRadii = {\n xs: \"calc(var(--radius-sm) - 2px)\",\n sm: \"var(--radius-sm)\",\n md: \"var(--radius-md)\",\n lg: \"var(--radius-lg)\",\n xl: \"var(--radius-xl)\",\n} as const;\n\nconst semanticSliderColorNames = new Set([\n \"background\",\n \"border\",\n \"danger\",\n \"foreground\",\n \"info\",\n \"muted\",\n \"primary\",\n \"secondary\",\n \"success\",\n \"warning\",\n]);\n\nexport type SliderSemanticSize = keyof typeof sliderSemanticSizes;\nexport type SliderSemanticRadius = keyof typeof sliderSemanticRadii;\nexport type SliderStyleTokenLength = number | string | undefined;\nexport type SliderSize = SliderSemanticSize | number | string;\nexport type SliderRadius = SliderSemanticRadius | number | string;\n\nexport interface SliderRootStyleTokenOptions {\n color?: string;\n markSize?: SliderStyleTokenLength;\n radius?: SliderRadius | undefined;\n size?: SliderSize | undefined;\n thumbLabelOffset?: SliderStyleTokenLength;\n thumbLabelOffsetVertical?: SliderStyleTokenLength;\n thumbSize?: SliderSize | undefined;\n trackSize?: SliderSize | undefined;\n}\n\nconst isSemanticSliderSize = (value: unknown): value is SliderSemanticSize =>\n typeof value === \"string\" && value in sliderSemanticSizes;\n\nconst isSemanticSliderRadius = (\n value: unknown\n): value is SliderSemanticRadius =>\n typeof value === \"string\" && value in sliderSemanticRadii;\n\nconst toSliderStyleTokenValue = (value: SliderStyleTokenLength) => {\n if (value === undefined) {\n return;\n }\n\n return typeof value === \"number\" ? `${value}${PIXEL_UNIT}` : value;\n};\n\nconst resolveSliderColorValue = (color: string | undefined) => {\n if (color === undefined) {\n return \"var(--color-primary)\";\n }\n\n return semanticSliderColorNames.has(color) ? `var(--color-${color})` : color;\n};\n\nconst resolveSliderRadiusValue = (value: SliderRadius | undefined) => {\n if (value === undefined) {\n return \"var(--radius-sm)\";\n }\n\n if (isSemanticSliderRadius(value)) {\n return sliderSemanticRadii[value];\n }\n\n return toSliderStyleTokenValue(value);\n};\n\nconst resolveSliderTrackSizeValue = (\n value: SliderSize | undefined,\n fallbackValue: SliderSize | undefined\n) => {\n if (value !== undefined) {\n return isSemanticSliderSize(value)\n ? sliderSemanticSizes[value].trackSize\n : toSliderStyleTokenValue(value);\n }\n\n if (fallbackValue !== undefined) {\n return isSemanticSliderSize(fallbackValue)\n ? sliderSemanticSizes[fallbackValue].trackSize\n : toSliderStyleTokenValue(fallbackValue);\n }\n\n return sliderSemanticSizes.md.trackSize;\n};\n\nconst resolveSliderThumbSizeValue = (\n value: SliderSize | undefined,\n fallbackValue: SliderSize | undefined\n) => {\n if (value !== undefined) {\n return isSemanticSliderSize(value)\n ? sliderSemanticSizes[value].thumbSize\n : toSliderStyleTokenValue(value);\n }\n\n if (fallbackValue !== undefined) {\n return isSemanticSliderSize(fallbackValue)\n ? sliderSemanticSizes[fallbackValue].thumbSize\n : toSliderStyleTokenValue(fallbackValue);\n }\n\n return sliderSemanticSizes.md.thumbSize;\n};\n\nexport const resolveSliderRootStyleTokens = ({\n color,\n markSize,\n radius,\n size,\n thumbLabelOffset,\n thumbLabelOffsetVertical,\n thumbSize,\n trackSize,\n}: SliderRootStyleTokenOptions): CSSProperties => {\n const markSizeValue = toSliderStyleTokenValue(markSize);\n const thumbLabelOffsetValue = toSliderStyleTokenValue(thumbLabelOffset);\n const thumbLabelOffsetVerticalValue = toSliderStyleTokenValue(\n thumbLabelOffsetVertical\n );\n const trackSizeValue = resolveSliderTrackSizeValue(trackSize, size);\n const thumbSizeValue = resolveSliderThumbSizeValue(thumbSize, size);\n\n return {\n [sliderStyleTokens.color]: resolveSliderColorValue(color),\n [sliderStyleTokens.radius]: resolveSliderRadiusValue(radius),\n [sliderStyleTokens.size]: trackSizeValue,\n [sliderStyleTokens.thumbSize]: thumbSizeValue,\n [sliderStyleTokens.trackColor]: \"var(--color-muted)\",\n [sliderStyleTokens.trackSize]: trackSizeValue,\n ...(markSizeValue === undefined\n ? {}\n : { [sliderStyleTokens.markSize]: markSizeValue }),\n ...(thumbLabelOffsetValue === undefined\n ? {}\n : { [sliderStyleTokens.thumbLabelOffset]: thumbLabelOffsetValue }),\n ...(thumbLabelOffsetVerticalValue === undefined\n ? {}\n : {\n [sliderStyleTokens.thumbLabelOffsetVertical]:\n thumbLabelOffsetVerticalValue,\n }),\n } as CSSProperties;\n};\n","import type { Slider as SliderPrimitive } from \"@base-ui/react/slider\";\nimport type { CSSProperties } from \"react\";\n\nimport type { SliderRootStyleTokenOptions } from \"./slider-style-tokens\";\n\nimport {\n type BaseUIClassName,\n mergeBaseUIClassName,\n} from \"../../../utils/merge-base-ui-class-name\";\nimport { resolveSliderRootStyleTokens } from \"./slider-style-tokens\";\n\nexport const resolveSliderRootClassName = (\n className: BaseUIClassName<SliderPrimitive.Root.State>,\n inverted: boolean\n) =>\n mergeBaseUIClassName<SliderPrimitive.Root.State>(\n \"group/slider data-[orientation=horizontal]:w-full data-[orientation=horizontal]:px-[calc(var(--slider-thumb-size,1.25rem)/2)] data-[orientation=vertical]:h-full data-[orientation=vertical]:py-[calc(var(--slider-thumb-size,1.25rem)/2)]\",\n typeof className === \"function\"\n ? (state) =>\n [\n inverted\n ? \"[&_[data-slot=slider-track]]:bg-[var(--slider-color,var(--color-primary))] [&_[data-slot=slider-range]]:bg-[var(--slider-track-color,var(--color-muted))]\"\n : undefined,\n className(state),\n ]\n .filter(Boolean)\n .join(\" \")\n : [\n inverted\n ? \"[&_[data-slot=slider-track]]:bg-[var(--slider-color,var(--color-primary))] [&_[data-slot=slider-range]]:bg-[var(--slider-track-color,var(--color-muted))]\"\n : undefined,\n className,\n ]\n .filter(Boolean)\n .join(\" \")\n );\n\ntype SliderRootStyle<TValue extends number | number[]> =\n SliderPrimitive.Root.Props<TValue>[\"style\"];\n\nexport const mergeSliderRootStyle = <TValue extends number | number[]>(\n styleTokens: SliderRootStyleTokenOptions,\n style: SliderRootStyle<TValue>\n): SliderRootStyle<TValue> => {\n const baseStyle = resolveSliderRootStyleTokens(styleTokens);\n\n if (typeof style === \"function\") {\n return (state) => {\n const resolvedStyle = style(state);\n return baseStyle ? { ...baseStyle, ...resolvedStyle } : resolvedStyle;\n };\n }\n\n if (!baseStyle) {\n return style;\n }\n\n return { ...baseStyle, ...(style as CSSProperties | undefined) };\n};\n","import type { SliderMark } from \"../shared/slider-types\";\n\nimport {\n clampNumber,\n getFirstMarkValue,\n getLastMarkValue,\n getNearestMarkValue,\n getNextMarkValue,\n getPreviousMarkValue,\n getSortedSelectableMarks,\n isKeyboardLikeReason,\n toFloatingValue,\n} from \"./slider-math-utils\";\n\ninterface NormalizeSliderValueOptions {\n current: number;\n domainMax: number;\n domainMin: number;\n marks?: readonly SliderMark[];\n max: number;\n min: number;\n precision: number;\n raw: number;\n reason?: string;\n restrictToMarks?: boolean;\n}\n\nexport const normalizeSingleSliderValue = ({\n current,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw,\n reason,\n restrictToMarks,\n}: NormalizeSliderValueOptions) => {\n const clampedRaw = clampNumber(raw, domainMin, domainMax);\n const clampedCurrent = clampNumber(current, min, max);\n\n if (!restrictToMarks) {\n return toFloatingValue(clampNumber(clampedRaw, min, max), precision);\n }\n\n const selectableMarks = getSortedSelectableMarks(marks, min, max);\n if (!selectableMarks.length) {\n return toFloatingValue(clampNumber(clampedRaw, min, max), precision);\n }\n\n if (!isKeyboardLikeReason(reason)) {\n return toFloatingValue(\n getNearestMarkValue(clampedRaw, selectableMarks),\n precision\n );\n }\n\n if (clampedRaw <= min) {\n return toFloatingValue(getFirstMarkValue(selectableMarks, min), precision);\n }\n\n if (clampedRaw >= max) {\n return toFloatingValue(getLastMarkValue(selectableMarks, max), precision);\n }\n\n if (clampedRaw > clampedCurrent) {\n return toFloatingValue(\n getNextMarkValue(clampedCurrent, selectableMarks),\n precision\n );\n }\n\n if (clampedRaw < clampedCurrent) {\n return toFloatingValue(\n getPreviousMarkValue(clampedCurrent, selectableMarks),\n precision\n );\n }\n\n return toFloatingValue(\n getNearestMarkValue(clampedRaw, selectableMarks),\n precision\n );\n};\n","\"use client\";\n\nimport type { Slider as SliderPrimitive } from \"@base-ui/react/slider\";\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport type { SliderMark, SliderValue } from \"../shared/slider-types\";\n\nimport { normalizeSingleSliderValue } from \"../math/normalize-single-slider-value\";\n\ninterface UseSingleSliderStateOptions {\n defaultValue?: number;\n domainMax: number;\n domainMin: number;\n marks?: readonly SliderMark[];\n max: number;\n min: number;\n onChange?: ((value: SliderValue) => void) | undefined;\n onChangeEnd?: ((value: SliderValue) => void) | undefined;\n precision: number;\n restrictToMarks: boolean;\n value?: number;\n}\n\nexport const useSingleSliderState = ({\n defaultValue,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n onChange,\n onChangeEnd,\n precision,\n restrictToMarks,\n value,\n}: UseSingleSliderStateOptions) => {\n const initialValue = useMemo(\n () =>\n normalizeSingleSliderValue({\n current: min,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw: defaultValue ?? min,\n restrictToMarks,\n }),\n [\n defaultValue,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n restrictToMarks,\n ]\n );\n\n const [uncontrolledValue, setUncontrolledValue] = useState(initialValue);\n\n const controlledValue = useMemo(() => {\n if (value === undefined) {\n return;\n }\n\n return normalizeSingleSliderValue({\n current: uncontrolledValue,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw: value,\n restrictToMarks,\n });\n }, [\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n restrictToMarks,\n uncontrolledValue,\n value,\n ]);\n\n const sliderValue = controlledValue ?? uncontrolledValue;\n const valueRef = useRef(sliderValue);\n\n useEffect(() => {\n valueRef.current = sliderValue;\n }, [sliderValue]);\n\n useEffect(() => {\n if (value !== undefined) {\n return;\n }\n\n setUncontrolledValue((previous: number) =>\n normalizeSingleSliderValue({\n current: previous,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw: previous,\n restrictToMarks,\n })\n );\n }, [\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n restrictToMarks,\n value,\n ]);\n\n const handleValueChange = useCallback(\n (\n nextValue: number | number[],\n eventDetails: SliderPrimitive.Root.ChangeEventDetails\n ) => {\n const rawValue = Array.isArray(nextValue)\n ? (nextValue[0] ?? valueRef.current)\n : nextValue;\n\n const normalizedValue = normalizeSingleSliderValue({\n current: valueRef.current,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw: rawValue,\n reason: eventDetails.reason,\n restrictToMarks,\n });\n\n valueRef.current = normalizedValue;\n\n if (value === undefined) {\n setUncontrolledValue(normalizedValue);\n }\n\n onChange?.(normalizedValue);\n },\n [\n domainMax,\n domainMin,\n marks,\n max,\n min,\n onChange,\n precision,\n restrictToMarks,\n value,\n ]\n );\n\n const handleValueCommitted = useCallback(() => {\n onChangeEnd?.(valueRef.current);\n }, [onChangeEnd]);\n\n return {\n handleValueChange,\n handleValueCommitted,\n sliderValue,\n };\n};\n","\"use client\";\n\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\";\n\nimport type { SliderRadius, SliderSize } from \"../shared/slider-style-tokens\";\nimport type { SliderLabelTransitionProps } from \"../shared/slider-transition\";\nimport type {\n SliderLabel,\n SliderMark as SliderMarkType,\n SliderValue,\n} from \"../shared/slider-types\";\n\nimport { toFloatingValue } from \"../math/slider-math-utils\";\nimport {\n SliderControl,\n type SliderControlProps,\n} from \"../primitives/slider-control\";\nimport {\n SliderIndicator,\n type SliderIndicatorProps,\n} from \"../primitives/slider-indicator\";\nimport { SliderMark, type SliderMarkProps } from \"../primitives/slider-mark\";\nimport { SliderMarks, type SliderMarksProps } from \"../primitives/slider-marks\";\nimport { SliderThumb, type SliderThumbProps } from \"../primitives/slider-thumb\";\nimport {\n SliderThumbLabel,\n type SliderThumbLabelProps,\n} from \"../primitives/slider-thumb-label\";\nimport { SliderTrack, type SliderTrackProps } from \"../primitives/slider-track\";\nimport {\n SliderValue as SliderValuePrimitive,\n type SliderValueProps,\n} from \"../primitives/slider-value\";\nimport { resolveSliderBounds } from \"../shared/slider-bounds\";\nimport { resolveSliderLabel } from \"../shared/slider-label\";\nimport {\n mergeSliderRootStyle,\n resolveSliderRootClassName,\n} from \"../shared/slider-root-presentation\";\nimport { useSingleSliderState } from \"./use-single-slider-state\";\n\ntype SliderRootProps = Omit<\n SliderPrimitive.Root.Props<number>,\n | \"defaultValue\"\n | \"max\"\n | \"min\"\n | \"name\"\n | \"onChange\"\n | \"onValueChange\"\n | \"onValueCommitted\"\n | \"minStepsBetweenValues\"\n | \"thumbCollisionBehavior\"\n | \"thumbAlignment\"\n | \"value\"\n>;\n\nexport interface SliderProps extends SliderRootProps {\n color?: string;\n defaultValue?: number;\n domain?: [number, number];\n hiddenInputProps?: Omit<\n ComponentPropsWithoutRef<\"input\">,\n \"name\" | \"type\" | \"value\"\n >;\n inverted?: boolean;\n label?: SliderLabel;\n labelAlwaysOn?: boolean;\n labelTransitionProps?: SliderLabelTransitionProps;\n marks?: readonly SliderMarkType[];\n max?: number;\n min?: number;\n name?: string;\n onChange?: ((value: SliderValue) => void) | undefined;\n onChangeEnd?: ((value: SliderValue) => void) | undefined;\n precision?: number;\n radius?: SliderRadius;\n restrictToMarks?: boolean;\n scale?: ((value: number) => number) | undefined;\n size?: SliderSize;\n showLabelOnHover?: boolean;\n step?: number;\n thumbChildren?: ReactNode;\n thumbLabel?: string;\n thumbLabelOffset?: number | string;\n thumbLabelOffsetVertical?: number | string;\n thumbProps?: Omit<SliderThumbProps, \"aria-label\" | \"children\" | \"index\">;\n thumbSize?: number | string;\n trackSize?: number | string;\n markSize?: number | string;\n value?: number;\n}\n\ntype SliderComponent = ((props: SliderProps) => ReactNode) & {\n Control: typeof SliderControl;\n Indicator: typeof SliderIndicator;\n Mark: typeof SliderMark;\n Marks: typeof SliderMarks;\n Thumb: typeof SliderThumb;\n ThumbLabel: typeof SliderThumbLabel;\n Track: typeof SliderTrack;\n Value: typeof SliderValuePrimitive;\n};\n\nconst Slider = (({\n className,\n children,\n color,\n defaultValue,\n domain,\n hiddenInputProps,\n inverted = false,\n label = (value) => value,\n labelAlwaysOn = false,\n labelTransitionProps,\n marks,\n max = 100,\n min = 0,\n name,\n onChange,\n onChangeEnd,\n precision: precisionProp,\n radius,\n restrictToMarks = false,\n scale = (value) => value,\n size,\n showLabelOnHover = true,\n step = 1,\n style,\n thumbChildren,\n thumbLabel,\n thumbLabelOffset,\n thumbLabelOffsetVertical,\n thumbProps,\n thumbSize,\n trackSize,\n markSize,\n value,\n ...props\n}: SliderProps) => {\n const resolvedBounds = resolveSliderBounds({\n domain,\n max,\n min,\n precision: precisionProp,\n step,\n });\n\n const {\n domainMax,\n domainMin,\n max: normalizedMax,\n min: normalizedMin,\n precision,\n } = resolvedBounds;\n\n const { handleValueChange, handleValueCommitted, sliderValue } =\n useSingleSliderState({\n defaultValue,\n domainMax,\n domainMin,\n marks,\n max: normalizedMax,\n min: normalizedMin,\n onChange,\n onChangeEnd,\n precision,\n restrictToMarks,\n value,\n });\n\n const displayedValue = toFloatingValue(scale(sliderValue), precision);\n const resolvedLabel = resolveSliderLabel(label, displayedValue);\n const defaultThumbProps = thumbProps ?? {};\n\n return (\n <SliderPrimitive.Root\n {...props}\n className={resolveSliderRootClassName(className, inverted)}\n data-slot=\"slider\"\n max={domainMax}\n min={domainMin}\n onValueChange={handleValueChange}\n onValueCommitted={handleValueCommitted}\n step={step}\n style={mergeSliderRootStyle(\n {\n color,\n markSize,\n radius,\n size,\n thumbLabelOffset,\n thumbLabelOffsetVertical,\n thumbSize,\n trackSize,\n },\n style\n )}\n thumbAlignment=\"center\"\n value={sliderValue}\n >\n {children ?? (\n <SliderControl>\n <SliderTrack>\n <SliderIndicator />\n <SliderMarks\n disabled={props.disabled}\n inverted={inverted}\n marks={marks}\n max={domainMax}\n min={domainMin}\n orientation={props.orientation}\n values={[sliderValue]}\n />\n </SliderTrack>\n <SliderThumb {...defaultThumbProps} aria-label={thumbLabel}>\n {thumbChildren}\n <SliderThumbLabel\n label={resolvedLabel}\n labelAlwaysOn={labelAlwaysOn}\n orientation={props.orientation}\n showLabelOnHover={showLabelOnHover}\n transitionProps={labelTransitionProps}\n />\n </SliderThumb>\n </SliderControl>\n )}\n {name ? (\n <input\n {...hiddenInputProps}\n name={name}\n type=\"hidden\"\n value={String(displayedValue)}\n />\n ) : null}\n </SliderPrimitive.Root>\n );\n}) as SliderComponent;\n\nSlider.Control = SliderControl;\nSlider.Indicator = SliderIndicator;\nSlider.Mark = SliderMark;\nSlider.Marks = SliderMarks;\nSlider.Thumb = SliderThumb;\nSlider.ThumbLabel = SliderThumbLabel;\nSlider.Track = SliderTrack;\nSlider.Value = SliderValuePrimitive;\n\nexport type { SliderControlProps };\nexport type { SliderIndicatorProps };\nexport type { SliderMarkProps };\nexport type { SliderMarksProps };\nexport type { SliderThumbProps };\nexport type { SliderThumbLabelProps };\nexport type { SliderTrackProps };\nexport type { SliderValueProps };\nexport type { SliderMarkType as SliderMarkDefinition };\n\nexport {\n Slider,\n SliderControl,\n SliderIndicator,\n SliderMark,\n SliderMarks,\n SliderThumb,\n SliderThumbLabel,\n SliderTrack,\n SliderValuePrimitive as SliderValue,\n};\n"],"mappings":"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CA;EACA;EACA;EACA;EACA;EACA,KAAK,gBAAgB;EACrB;EACD,CAAC,EACJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF,CAEuE;CA8BxE,MAAM,cA5BkB,cAAc;AACpC,MAAI,UAAU,OACZ;AAGF,SAAO,2BAA2B;GAChC,SAAS;GACT;GACA;GACA;GACA;GACA;GACA;GACA,KAAK;GACL;GACD,CAAC;IACD;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,IAEqC;CACvC,MAAM,WAAW,OAAO,YAAY;AAEpC,iBAAgB;AACd,WAAS,UAAU;IAClB,CAAC,YAAY,CAAC;AAEjB,iBAAgB;AACd,MAAI,UAAU,OACZ;AAGF,wBAAsB,aACpB,2BAA2B;GACzB,SAAS;GACT;GACA;GACA;GACA;GACA;GACA;GACA,KAAK;GACL;GACD,CAAC,CACH;IACA;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAiDF,QAAO;EACL,mBAhDwB,aAEtB,WACA,iBACG;GACH,MAAM,WAAW,MAAM,QAAQ,UAAU,GACpC,UAAU,MAAM,SAAS,UAC1B;GAEJ,MAAM,kBAAkB,2BAA2B;IACjD,SAAS,SAAS;IAClB;IACA;IACA;IACA;IACA;IACA;IACA,KAAK;IACL,QAAQ,aAAa;IACrB;IACD,CAAC;AAEF,YAAS,UAAU;AAEnB,OAAI,UAAU,OACZ,sBAAqB,gBAAgB;AAGvC,cAAW,gBAAgB;KAE7B;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CACF;EAQC,sBAN2B,kBAAkB;AAC7C,iBAAc,SAAS,QAAQ;KAC9B,CAAC,YAAY,CAAC;EAKf;EACD;;;;;AC1EH,MAAMC,aAAW,EACf,WACA,UACA,OACA,cACA,QACA,kBACA,WAAW,OACX,SAAS,UAAU,OACnB,gBAAgB,OAChB,sBACA,OACA,MAAM,KACN,MAAM,GACN,MACA,UACA,aACA,WAAW,eACX,QACA,kBAAkB,OAClB,SAAS,UAAU,OACnB,MACA,mBAAmB,MACnB,OAAO,GACP,OACA,eACA,YACA,kBACA,0BACA,YACA,WACA,WACA,UACA,OACA,GAAG,YACc;CASjB,MAAM,EACJ,WACA,WACA,KAAK,eACL,KAAK,eACL,cAbqB,oBAAoB;EACzC;EACA;EACA;EACA,WAAW;EACX;EACD,CAAC;CAUF,MAAM,EAAE,mBAAmB,sBAAsB,gBAC/C,qBAAqB;EACnB;EACA;EACA;EACA;EACA,KAAK;EACL,KAAK;EACL;EACA;EACA;EACA;EACA;EACD,CAAC;CAEJ,MAAM,iBAAiB,gBAAgB,MAAM,YAAY,EAAE,UAAU;CACrE,MAAM,gBAAgB,mBAAmB,OAAO,eAAe;CAC/D,MAAM,oBAAoB,cAAc,EAAE;AAE1C,QACE,qBAACC,OAAgB;EACf,GAAI;EACJ,WAAW,2BAA2B,WAAW,SAAS;EAC1D,aAAU;EACV,KAAK;EACL,KAAK;EACL,eAAe;EACf,kBAAkB;EACZ;EACN,OAAO,qBACL;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,EACD,MACD;EACD,gBAAe;EACf,OAAO;aAEN,YACC,qBAAC,4BACC,qBAAC,0BACC,oBAAC,oBAAkB,EACnB,oBAAC;GACC,UAAU,MAAM;GACN;GACH;GACP,KAAK;GACL,KAAK;GACL,aAAa,MAAM;GACnB,QAAQ,CAAC,YAAY;IACrB,IACU,EACd,qBAAC;GAAY,GAAI;GAAmB,cAAY;cAC7C,eACD,oBAAC;IACC,OAAO;IACQ;IACf,aAAa,MAAM;IACD;IAClB,iBAAiB;KACjB;IACU,IACA,EAEjB,OACC,oBAAC;GACC,GAAI;GACE;GACN,MAAK;GACL,OAAO,OAAO,eAAe;IAC7B,GACA;GACiB;;AAI3B,SAAO,UAAU;AACjB,SAAO,YAAY;AACnB,SAAO,OAAO;AACd,SAAO,QAAQ;AACf,SAAO,QAAQ;AACf,SAAO,aAAa;AACpB,SAAO,QAAQ;AACf,SAAO,QAAQC"}
|