@servicetitan/anvil2 3.8.0 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/dist/{AiMark-voHPSerQ.js → AiMark-2_O4tKv_.js} +4 -4
- package/dist/AiMark-2_O4tKv_.js.map +1 -0
- package/dist/AiMark.js +1 -1
- package/dist/{Alert-CPe0yh6A.js → Alert-DtM7NDN9.js} +3 -3
- package/dist/Alert-DtM7NDN9.js.map +1 -0
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-DU0J4111.js → Announcement-CGglhMfd.js} +3 -3
- package/dist/Announcement-CGglhMfd.js.map +1 -0
- package/dist/Announcement.js +1 -1
- package/dist/AnvilProvider-b3gvW6Md.js.map +1 -1
- package/dist/Avatar-CoQcOHWU.js.map +1 -1
- package/dist/Avatar-DX96Mxe7.js.map +1 -1
- package/dist/Badge-BNrYBFiU.js.map +1 -1
- package/dist/Badge.css +2 -3
- package/dist/{Breadcrumbs-VzOM2nBU.js → Breadcrumbs-Bmqmw5F5.js} +4 -4
- package/dist/Breadcrumbs-Bmqmw5F5.js.map +1 -0
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Button-BNzCI47m.js → Button-Dwh_Nd4l.js} +6 -8
- package/dist/Button-Dwh_Nd4l.js.map +1 -0
- package/dist/Button.js +1 -1
- package/dist/ButtonCompound-D7kA0qXr.js.map +1 -1
- package/dist/{ButtonLink-PlW08u41.js → ButtonLink-DOFAxNvC.js} +2 -2
- package/dist/ButtonLink-DOFAxNvC.js.map +1 -0
- package/dist/ButtonLink.js +1 -1
- package/dist/{ButtonToggle-DBGc7dIn.js → ButtonToggle-DKDBD1g3.js} +2 -2
- package/dist/ButtonToggle-DKDBD1g3.js.map +1 -0
- package/dist/ButtonToggle.js +1 -1
- package/dist/{Calendar-MRUB0XU7.js → Calendar-CUgFbnKj.js} +2 -2
- package/dist/Calendar-CUgFbnKj.js.map +1 -0
- package/dist/{Calendar-CekTYzdT.js → Calendar-D_fqe0-J.js} +11 -4
- package/dist/Calendar-D_fqe0-J.js.map +1 -0
- package/dist/Calendar.js +2 -2
- package/dist/Card-Bt0F6RTq.js.map +1 -1
- package/dist/{Checkbox-zz9TyZWn.js → Checkbox-4wRmrann.js} +2 -2
- package/dist/Checkbox-4wRmrann.js.map +1 -0
- package/dist/{Checkbox-C3rtd-Xe.js → Checkbox-DoxWcbfv.js} +5 -5
- package/dist/Checkbox-DoxWcbfv.js.map +1 -0
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-CxgryK86.js → Chip-D6Q0J0Xe.js} +3 -3
- package/dist/Chip-D6Q0J0Xe.js.map +1 -0
- package/dist/Chip.js +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-Bvsijiqn.js → DataTable-D-SKKt5w.js} +60 -23
- package/dist/DataTable-D-SKKt5w.js.map +1 -0
- package/dist/DataTable.css +2 -3
- package/dist/{DateFieldRange-CP7QgS6P.js → DateFieldRange-DUFfyknZ.js} +62 -35
- package/dist/DateFieldRange-DUFfyknZ.js.map +1 -0
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-CgMPTi1v.js → DateFieldSingle-BZjlO0hX.js} +60 -32
- package/dist/DateFieldSingle-BZjlO0hX.js.map +1 -0
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-BDSbVQx0.js → DateFieldYearless-TcKb9jE2.js} +7 -5
- package/dist/DateFieldYearless-TcKb9jE2.js.map +1 -0
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-Dk7HVYTA.js → DateFieldYearlessRange-D9XtRNWi.js} +19 -7
- package/dist/DateFieldYearlessRange-D9XtRNWi.js.map +1 -0
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-Ci-SKebP.js → DaysOfTheWeek--FBi44iw.js} +5 -5
- package/dist/DaysOfTheWeek--FBi44iw.js.map +1 -0
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Details-DkteVZbk.js → Details-CVA5zbrR.js} +2 -2
- package/dist/Details-CVA5zbrR.js.map +1 -0
- package/dist/Details.js +1 -1
- package/dist/{Dialog-BxulNN8n.js → Dialog-Clh3jaX8.js} +4 -4
- package/dist/Dialog-Clh3jaX8.js.map +1 -0
- package/dist/Dialog.js +1 -1
- package/dist/{DialogCancelButton-DmSUPuCR.js → DialogCancelButton-DBL0aKTK.js} +2 -2
- package/dist/DialogCancelButton-DBL0aKTK.js.map +1 -0
- package/dist/DialogContext-DBgtApl9.js.map +1 -1
- package/dist/Divider-C7fp5Xb6.js.map +1 -1
- package/dist/Dnd.js +2 -2
- package/dist/{DndHandleButton-Ck5nc8w2.js → DndHandleButton-BRlodkDO.js} +2 -2
- package/dist/{DndHandleButton-Ck5nc8w2.js.map → DndHandleButton-BRlodkDO.js.map} +1 -1
- package/dist/DndSort.js +4 -4
- package/dist/DndSort.js.map +1 -1
- package/dist/{Drawer-DzvM9MRB.js → Drawer-h2Mut1lB.js} +5 -5
- package/dist/Drawer-h2Mut1lB.js.map +1 -0
- package/dist/Drawer.js +1 -1
- package/dist/DrawerContext-BSpnzXVZ.js.map +1 -1
- package/dist/DrillDown.js +1 -1
- package/dist/DrillDown.module-D1Bf9_yP.js.map +1 -1
- package/dist/{EditCard-ZpF032WP.js → EditCard-QohYSylF.js} +4 -4
- package/dist/EditCard-QohYSylF.js.map +1 -0
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-Cm5A1Jcx.js → FieldLabel-SzH61hCb.js} +3 -3
- package/dist/FieldLabel-SzH61hCb.js.map +1 -0
- package/dist/FieldLabel.js +1 -1
- package/dist/{FilterBar-DBVW3LL3.js → FilterBar-luqnJzAK.js} +32 -11
- package/dist/FilterBar-luqnJzAK.js.map +1 -0
- package/dist/FilterBar.js +1 -1
- package/dist/{Flex-Bb3iHExM.js → Flex-CRF7gj0_.js} +3 -3
- package/dist/Flex-CRF7gj0_.js.map +1 -0
- package/dist/Flex.css +2 -4
- package/dist/Flex.js +1 -1
- package/dist/{Grid-ho1pGJ5L.js → Grid-CvGQrIhE.js} +4 -4
- package/dist/Grid-CvGQrIhE.js.map +1 -0
- package/dist/Grid.css +3 -5
- package/dist/Grid.js +1 -1
- package/dist/{Helper-B_VAFgGd.js → Helper-Bq6Npkgh.js} +2 -2
- package/dist/Helper-Bq6Npkgh.js.map +1 -0
- package/dist/{Icon-B4uCvMU9.js → Icon-B5zwN7GD.js} +4 -4
- package/dist/Icon-B5zwN7GD.js.map +1 -0
- package/dist/Icon.js +1 -1
- package/dist/{InputMask-CX6XiOOm.js → InputMask-CQONHcTq.js} +3 -3
- package/dist/InputMask-CQONHcTq.js.map +1 -0
- package/dist/InputMask.js +1 -1
- package/dist/InteractiveCard-C0g5PxB6.js.map +1 -1
- package/dist/Layout-C2Q2hyLG.js.map +1 -1
- package/dist/{Link-C7dtI5K6.js → Link-D7ycmfQ_.js} +2 -2
- package/dist/Link-D7ycmfQ_.js.map +1 -0
- package/dist/Link.css +2 -4
- package/dist/Link.js +1 -1
- package/dist/LinkButton-C0wps8r1.js.map +1 -1
- package/dist/List-BvzfZ9TW.js.map +1 -1
- package/dist/{ListView-DpveXOsN.js → ListView-BgGEwal3.js} +3 -3
- package/dist/ListView-BgGEwal3.js.map +1 -0
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-Cdwaofd2.js → Listbox-Cw_2W62S.js} +4 -4
- package/dist/Listbox-Cw_2W62S.js.map +1 -0
- package/dist/Listbox.js +1 -1
- package/dist/LocalizationContext-UsmB5mnR.js.map +1 -1
- package/dist/LocalizationProvider-BPcOU7YX.js.map +1 -1
- package/dist/{Menu-DmEXQLXt.js → Menu-DNOOmDQC.js} +3 -3
- package/dist/Menu-DNOOmDQC.js.map +1 -0
- package/dist/Menu.js +1 -1
- package/dist/{MenuFooter-Ck9L599M.js → MenuFooter--lBF8OjJ.js} +6 -2
- package/dist/MenuFooter--lBF8OjJ.js.map +1 -0
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-B1tkEtft.js → MultiSelectFieldSync-HhFKGtQM.js} +74 -19
- package/dist/MultiSelectFieldSync-HhFKGtQM.js.map +1 -0
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-Deki_z-0.js → MultiSelectMenuSync-C3Y7jnJQ.js} +26 -10
- package/dist/MultiSelectMenuSync-C3Y7jnJQ.js.map +1 -0
- package/dist/{NumberField-CjC6KHKl.js → NumberField-B1761jkf.js} +7 -7
- package/dist/NumberField-B1761jkf.js.map +1 -0
- package/dist/NumberField.css +2 -3
- package/dist/NumberField.js +1 -1
- package/dist/Overflow.js +1 -1
- package/dist/Overflow.js.map +1 -1
- package/dist/{Page-BreBQ3pG.js → Page-Pk0-Sxf_.js} +22 -21
- package/dist/Page-Pk0-Sxf_.js.map +1 -0
- package/dist/Page.js +1 -1
- package/dist/{Pagination-CmqAut6y.js → Pagination-Bx_u6Uea.js} +37 -11
- package/dist/Pagination-Bx_u6Uea.js.map +1 -0
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-CdRuNv3C.js → Popover-CjsE5FG0.js} +2 -2
- package/dist/Popover-CjsE5FG0.js.map +1 -0
- package/dist/Popover.js +1 -1
- package/dist/PortalProvider-Cj_y3gbC.js.map +1 -1
- package/dist/{ProgressBar-065vjsQ0.js → ProgressBar-Coh2nTJ1.js} +6 -6
- package/dist/ProgressBar-Coh2nTJ1.js.map +1 -0
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-D9w_-JYw.js → Radio-BxSL1PoP.js} +2 -2
- package/dist/Radio-BxSL1PoP.js.map +1 -0
- package/dist/{Radio-dyLcVmUw.js → Radio-J4Iv3wbJ.js} +5 -5
- package/dist/Radio-J4Iv3wbJ.js.map +1 -0
- package/dist/Radio.js +1 -1
- package/dist/{RichTextEditor-byoMZaJy.js → RichTextEditor-CTIGe6xA.js} +13 -13
- package/dist/RichTextEditor-CTIGe6xA.js.map +1 -0
- package/dist/RichTextEditor.css +1 -2
- package/dist/RichTextEditor.js +1 -1
- package/dist/{SavedFiltersButton-BHgS4akL.js → SavedFiltersButton-CpnoAIrw.js} +256 -170
- package/dist/SavedFiltersButton-CpnoAIrw.js.map +1 -0
- package/dist/SavedFiltersButton.js +1 -1
- package/dist/{SearchField-B7fIOJf-.js → SearchField-ChoNtw8w.js} +2 -2
- package/dist/SearchField-ChoNtw8w.js.map +1 -0
- package/dist/{SearchField-X4B7f23E.js → SearchField-DX8hZyo2.js} +2 -2
- package/dist/SearchField-DX8hZyo2.js.map +1 -0
- package/dist/SearchField.js +1 -1
- package/dist/{SegmentedControl-Be6jCglV.js → SegmentedControl-CQ6DrbDc.js} +2 -2
- package/dist/SegmentedControl-CQ6DrbDc.js.map +1 -0
- package/dist/SegmentedControl.css +2 -3
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCard-CMSG_ba1.js → SelectCard-BTfhPyHH.js} +4 -4
- package/dist/SelectCard-BTfhPyHH.js.map +1 -0
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldLabel-dKVBaki2.js → SelectFieldLabel-CjY6zFJA.js} +2 -2
- package/dist/SelectFieldLabel-CjY6zFJA.js.map +1 -0
- package/dist/{SelectFieldSync-VShqP5J0.js → SelectFieldSync-Dyug8Fgk.js} +48 -10
- package/dist/SelectFieldSync-Dyug8Fgk.js.map +1 -0
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-BDx1yhZT.js → SelectMenuSync-BkC0FD5P.js} +23 -9
- package/dist/SelectMenuSync-BkC0FD5P.js.map +1 -0
- package/dist/{SelectOptions-BIVTviOh.js → SelectOptions-B3Vmtb_k.js} +2 -2
- package/dist/SelectOptions-B3Vmtb_k.js.map +1 -0
- package/dist/{SelectTrigger-APxYfL3V.js → SelectTrigger-Do1puyA_.js} +4 -4
- package/dist/SelectTrigger-Do1puyA_.js.map +1 -0
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-lYieONTb.js → SelectTriggerBase-rxHXMSb4.js} +12 -14
- package/dist/SelectTriggerBase-rxHXMSb4.js.map +1 -0
- package/dist/SelectTriggerBase.css +2 -3
- package/dist/{SideNav-DoxX8Vi-.js → SideNav-DZRXOYHs.js} +2 -2
- package/dist/SideNav-DZRXOYHs.js.map +1 -0
- package/dist/SideNav.js +1 -1
- package/dist/Skeleton.js.map +1 -1
- package/dist/Spinner-B7tTWcP6.js.map +1 -1
- package/dist/SrOnly-pnf8ajnh.js.map +1 -1
- package/dist/{Stepper-CvaR7OoT.js → Stepper-BX_gDWLE.js} +4 -4
- package/dist/Stepper-BX_gDWLE.js.map +1 -0
- package/dist/Stepper.css +1 -2
- package/dist/Stepper.js +1 -1
- package/dist/{Switch-Bm3qqjd6.js → Switch-BpjBYm-U.js} +5 -5
- package/dist/Switch-BpjBYm-U.js.map +1 -0
- package/dist/Switch.js +1 -1
- package/dist/{Tab-Cy4G562A.js → Tab-Bqfvg8Ce.js} +53 -23
- package/dist/Tab-Bqfvg8Ce.js.map +1 -0
- package/dist/Tab.css +35 -31
- package/dist/Tab.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-mDcQHC2U.js → Text-CIoD_RK4.js} +2 -2
- package/dist/Text-CIoD_RK4.js.map +1 -0
- package/dist/Text.js +1 -1
- package/dist/{TextField-CUVsDfWo.js → TextField-CzzvLI5_.js} +4 -4
- package/dist/TextField-CzzvLI5_.js.map +1 -0
- package/dist/{TextField-WQTlqKso.js → TextField-D3sRS5q1.js} +2 -2
- package/dist/TextField-D3sRS5q1.js.map +1 -0
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-CW3KGuB9.js → Textarea-B3C7AkPj.js} +4 -4
- package/dist/Textarea-B3C7AkPj.js.map +1 -0
- package/dist/Textarea.js +1 -1
- package/dist/ThemeProvider-Sd8LK0A9.js.map +1 -1
- package/dist/ThemeProviderContext-l52GohYT.js.map +1 -1
- package/dist/{TimeField-JA3gXyS7.js → TimeField-L9B_X6-H.js} +31 -9
- package/dist/TimeField-L9B_X6-H.js.map +1 -0
- package/dist/TimeField.js +1 -1
- package/dist/TimezoneMessage-BrKB_psP.js.map +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-DMZng3Im.js → Toaster-CAI7tX8q.js} +4 -4
- package/dist/Toaster-CAI7tX8q.js.map +1 -0
- package/dist/{Toaster-fPcgIF7Q.js → Toaster-DZxf0N9g.js} +2 -2
- package/dist/Toaster-DZxf0N9g.js.map +1 -0
- package/dist/{Toolbar-BfGcDXgC.js → Toolbar-BOgHhw7K.js} +19 -10
- package/dist/Toolbar-BOgHhw7K.js.map +1 -0
- package/dist/{Toolbar-Dlu39v69.js → Toolbar-DDWUuQm_.js} +30 -8
- package/dist/Toolbar-DDWUuQm_.js.map +1 -0
- package/dist/Toolbar.js +2 -2
- package/dist/{ToolbarButtonToggle-3xbnm1Qr.js → ToolbarButtonToggle-BbtKfezH.js} +19 -3
- package/dist/ToolbarButtonToggle-BbtKfezH.js.map +1 -0
- package/dist/Tooltip-BC8lnFhe.js.map +1 -1
- package/dist/TrackingProvider-Co4lyoI9.js.map +1 -1
- package/dist/TrackingProviderContext-CrVA7KHv.js.map +1 -1
- package/dist/TreeSelectField.js +1 -1
- package/dist/{TreeSelectFieldSync-CdtC8d3Q.js → TreeSelectFieldSync-Cd87uR6b.js} +51 -17
- package/dist/TreeSelectFieldSync-Cd87uR6b.js.map +1 -0
- package/dist/TreeSelectMenu.js +1 -1
- package/dist/{TreeSelectMenuSync-CPuQWUNU.js → TreeSelectMenuSync-88q0ydo5.js} +22 -10
- package/dist/TreeSelectMenuSync-88q0ydo5.js.map +1 -0
- package/dist/{TypeaheadTextField-BkLECKZY.js → TypeaheadTextField-9Nkkd4c4.js} +3 -3
- package/dist/TypeaheadTextField-9Nkkd4c4.js.map +1 -0
- package/dist/TypeaheadTextField.js +1 -1
- package/dist/{YearlessDateInputWithPicker-DLtMQhDw.js → YearlessDateInputWithPicker-BquY4bCd.js} +29 -8
- package/dist/YearlessDateInputWithPicker-BquY4bCd.js.map +1 -0
- package/dist/anvParts-BGg5dgfl.js +43 -0
- package/dist/anvParts-BGg5dgfl.js.map +1 -0
- package/dist/beta.js +16 -16
- package/dist/{bulkActionTypes-CTKwMpO7.js → bulkActionTypes-CWcUhKFS.js} +2 -2
- package/dist/bulkActionTypes-CWcUhKFS.js.map +1 -0
- package/dist/childrenToString-Bz9MqbHb.js.map +1 -1
- package/dist/{filter-state-DKXF5MeW.js → filter-state-BQOX7_rO.js} +177 -101
- package/dist/filter-state-BQOX7_rO.js.map +1 -0
- package/dist/{index-SZMmvI3D.js → index-BwV_Pz7v.js} +2 -2
- package/dist/index-BwV_Pz7v.js.map +1 -0
- package/dist/{index-B7BIlotN.js → index-DjirBR0l.js} +2 -2
- package/dist/{index-B7BIlotN.js.map → index-DjirBR0l.js.map} +1 -1
- package/dist/index.js +56 -56
- package/dist/makeZeroShortcutPreprocessor-CxsiGTRW.js.map +1 -1
- package/dist/src/beta/components/FilterBar/FilterBar.d.ts +3 -3
- package/dist/src/beta/components/FilterBar/index.d.ts +1 -1
- package/dist/src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.d.ts +17 -3
- package/dist/src/beta/components/FilterBar/parts.d.ts +38 -0
- package/dist/src/beta/components/SavedFiltersButton/parts.d.ts +37 -0
- package/dist/src/beta/components/SavedFiltersButton/types.d.ts +2 -1
- package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +3 -2
- package/dist/src/beta/components/Table/DataTable/parts.d.ts +30 -0
- package/dist/src/beta/components/Table/internal/ResizeHandle.d.ts +3 -2
- package/dist/src/beta/components/Toolbar/Toolbar.d.ts +4 -4
- package/dist/src/beta/components/Toolbar/index.d.ts +1 -1
- package/dist/src/beta/components/Toolbar/parts.d.ts +19 -0
- package/dist/src/beta/components/TreeSelectField/TreeSelectField.d.ts +6 -5
- package/dist/src/beta/components/TreeSelectField/parts.d.ts +23 -0
- package/dist/src/beta/components/TreeSelectField/types.d.ts +11 -4
- package/dist/src/beta/components/TreeSelectMenu/TreeSelectMenu.d.ts +33 -2
- package/dist/src/beta/components/TreeSelectMenu/parts.d.ts +12 -0
- package/dist/src/beta/components/TreeSelectMenu/types.d.ts +3 -2
- package/dist/src/components/Alert/Alert.d.ts +2 -4
- package/dist/src/components/Announcement/Announcement.d.ts +2 -4
- package/dist/src/components/Breadcrumbs/index.d.ts +1 -1
- package/dist/src/components/ButtonCompound/ButtonCompound.d.ts +2 -4
- package/dist/src/components/ButtonLink/ButtonLink.d.ts +2 -4
- package/dist/src/components/ButtonToggle/ButtonToggle.d.ts +2 -4
- package/dist/src/components/Calendar/Calendar.d.ts +3 -1
- package/dist/src/components/Calendar/index.d.ts +1 -1
- package/dist/src/components/Checkbox/index.d.ts +2 -2
- package/dist/src/components/Combobox/Combobox.d.ts +2 -2
- package/dist/src/components/Combobox/ComboboxEmpty.d.ts +1 -1
- package/dist/src/components/Combobox/ComboboxTypes.d.ts +2 -2
- package/dist/src/components/Combobox/index.d.ts +2 -2
- package/dist/src/components/Combobox/parts.d.ts +19 -0
- package/dist/src/components/DateFieldRange/DateFieldRange.d.ts +2 -2
- package/dist/src/components/DateFieldRange/parts.d.ts +16 -0
- package/dist/src/components/DateFieldSingle/DateFieldSingle.d.ts +2 -2
- package/dist/src/components/DateFieldSingle/index.d.ts +1 -1
- package/dist/src/components/DateFieldSingle/parts.d.ts +16 -0
- package/dist/src/components/DateFieldYearless/DateFieldYearless.d.ts +2 -2
- package/dist/src/components/DateFieldYearless/index.d.ts +1 -1
- package/dist/src/components/DateFieldYearless/parts.d.ts +15 -0
- package/dist/src/components/DateFieldYearlessRange/DateFieldYearlessRange.d.ts +2 -2
- package/dist/src/components/DateFieldYearlessRange/parts.d.ts +12 -0
- package/dist/src/components/Details/index.d.ts +2 -2
- package/dist/src/components/Dialog/index.d.ts +4 -4
- package/dist/src/components/DndSort/index.d.ts +3 -3
- package/dist/src/components/Drawer/index.d.ts +4 -4
- package/dist/src/components/DrillDown/DrillDown.d.ts +11 -0
- package/dist/src/components/Grid/index.d.ts +1 -1
- package/dist/src/components/List/index.d.ts +1 -1
- package/dist/src/components/Listbox/index.d.ts +2 -2
- package/dist/src/components/Menu/index.d.ts +1 -1
- package/dist/src/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
- package/dist/src/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
- package/dist/src/components/MultiSelectField/internal/types.d.ts +3 -1
- package/dist/src/components/MultiSelectField/parts.d.ts +20 -0
- package/dist/src/components/MultiSelectField/types.d.ts +2 -2
- package/dist/src/components/MultiSelectMenu/parts.d.ts +12 -0
- package/dist/src/components/MultiSelectMenu/types.d.ts +3 -2
- package/dist/src/components/Overflow/index.d.ts +1 -1
- package/dist/src/components/Pagination/Pagination.d.ts +4 -3
- package/dist/src/components/Pagination/parts.d.ts +28 -0
- package/dist/src/components/Popover/index.d.ts +4 -4
- package/dist/src/components/Radio/index.d.ts +2 -2
- package/dist/src/components/SelectCard/index.d.ts +1 -1
- package/dist/src/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
- package/dist/src/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
- package/dist/src/components/SelectField/parts.d.ts +18 -0
- package/dist/src/components/SelectField/types.d.ts +7 -2
- package/dist/src/components/SelectMenu/internal/useMenuInteraction.d.ts +15 -7
- package/dist/src/components/SelectMenu/parts.d.ts +12 -0
- package/dist/src/components/SelectMenu/types.d.ts +3 -2
- package/dist/src/components/SelectTrigger/internal/SelectTriggerBase.d.ts +6 -5
- package/dist/src/components/SideNav/index.d.ts +3 -3
- package/dist/src/components/Stepper/index.d.ts +6 -6
- package/dist/src/components/Tab/index.d.ts +3 -3
- package/dist/src/components/TimeField/index.d.ts +1 -1
- package/dist/src/components/Toolbar/Toolbar.d.ts +3 -3
- package/dist/src/components/Toolbar/index.d.ts +5 -5
- package/dist/src/components/Toolbar/parts.d.ts +18 -0
- package/dist/src/components/Tooltip/index.d.ts +2 -2
- package/dist/src/internal/components/Popover/index.d.ts +4 -4
- package/dist/src/internal/constants/anvParts.d.ts +81 -0
- package/dist/src/internal/testing/anvPartsContract.d.ts +24 -0
- package/dist/src/internal/types/selectFieldInternalTypes.d.ts +3 -1
- package/dist/src/providers/ThemeProvider/index.d.ts +2 -2
- package/dist/src/providers/TrackingProvider/index.d.ts +1 -1
- package/dist/src/types/index.d.ts +3 -3
- package/dist/{stripInlineMarkdown-BZzgG-Zm.js → stripInlineMarkdown-BfNNOWPk.js} +2 -2
- package/dist/{stripInlineMarkdown-BZzgG-Zm.js.map → stripInlineMarkdown-BfNNOWPk.js.map} +1 -1
- package/dist/{syncFilterUtils-BVclVovw.js → syncFilterUtils-YB6gRuuR.js} +14 -7
- package/dist/syncFilterUtils-YB6gRuuR.js.map +1 -0
- package/dist/{treeSync-oC-VZpP0.js → treeSync-DOen59wP.js} +26 -6
- package/dist/treeSync-DOen59wP.js.map +1 -0
- package/dist/{useAdaptiveView-AvsDkChF.js → useAdaptiveView-DmhhcX-B.js} +8 -6
- package/dist/useAdaptiveView-DmhhcX-B.js.map +1 -0
- package/dist/useChipLayout-BWZfKDgd.js.map +1 -1
- package/dist/{useDrilldown-PmrZ4BXn.js → useDrilldown-UAm0-l1l.js} +13 -6
- package/dist/{useDrilldown-PmrZ4BXn.js.map → useDrilldown-UAm0-l1l.js.map} +1 -1
- package/dist/useFocusWithin-hi77jsrB.js.map +1 -1
- package/dist/{useInfiniteCombobox-C78WQZx4.js → useInfiniteCombobox-V94SoOiU.js} +128 -79
- package/dist/useInfiniteCombobox-V94SoOiU.js.map +1 -0
- package/dist/useInitialFocus-BUxEDMEG.js.map +1 -1
- package/dist/useLayoutPropsUtil-DjqeAJZ9.js.map +1 -1
- package/dist/{useMenuInteraction-NEJXUD4I.js → useMenuInteraction-nNF1dsrp.js} +14 -5
- package/dist/useMenuInteraction-nNF1dsrp.js.map +1 -0
- package/dist/{useNumberField-D_ic9i2q.js → useNumberField-CXFYUZ_n.js} +4 -2
- package/dist/useNumberField-CXFYUZ_n.js.map +1 -0
- package/dist/useOptionallyControlledState-DbDuos5L.js.map +1 -1
- package/dist/useSize.js.map +1 -1
- package/dist/useSwipe-Cp-CJxLU.js.map +1 -1
- package/package.json +8 -6
- package/dist/AiMark-voHPSerQ.js.map +0 -1
- package/dist/Alert-CPe0yh6A.js.map +0 -1
- package/dist/Announcement-DU0J4111.js.map +0 -1
- package/dist/Breadcrumbs-VzOM2nBU.js.map +0 -1
- package/dist/Button-BNzCI47m.js.map +0 -1
- package/dist/ButtonLink-PlW08u41.js.map +0 -1
- package/dist/ButtonToggle-DBGc7dIn.js.map +0 -1
- package/dist/Calendar-CekTYzdT.js.map +0 -1
- package/dist/Calendar-MRUB0XU7.js.map +0 -1
- package/dist/Checkbox-C3rtd-Xe.js.map +0 -1
- package/dist/Checkbox-zz9TyZWn.js.map +0 -1
- package/dist/Chip-CxgryK86.js.map +0 -1
- package/dist/DataTable-Bvsijiqn.js.map +0 -1
- package/dist/DateFieldRange-CP7QgS6P.js.map +0 -1
- package/dist/DateFieldSingle-CgMPTi1v.js.map +0 -1
- package/dist/DateFieldYearless-BDSbVQx0.js.map +0 -1
- package/dist/DateFieldYearlessRange-Dk7HVYTA.js.map +0 -1
- package/dist/DaysOfTheWeek-Ci-SKebP.js.map +0 -1
- package/dist/Details-DkteVZbk.js.map +0 -1
- package/dist/Dialog-BxulNN8n.js.map +0 -1
- package/dist/DialogCancelButton-DmSUPuCR.js.map +0 -1
- package/dist/Drawer-DzvM9MRB.js.map +0 -1
- package/dist/EditCard-ZpF032WP.js.map +0 -1
- package/dist/FieldLabel-Cm5A1Jcx.js.map +0 -1
- package/dist/FilterBar-DBVW3LL3.js.map +0 -1
- package/dist/Flex-Bb3iHExM.js.map +0 -1
- package/dist/Grid-ho1pGJ5L.js.map +0 -1
- package/dist/Helper-B_VAFgGd.js.map +0 -1
- package/dist/Icon-B4uCvMU9.js.map +0 -1
- package/dist/InputMask-CX6XiOOm.js.map +0 -1
- package/dist/Link-C7dtI5K6.js.map +0 -1
- package/dist/ListView-DpveXOsN.js.map +0 -1
- package/dist/Listbox-Cdwaofd2.js.map +0 -1
- package/dist/Menu-DmEXQLXt.js.map +0 -1
- package/dist/MenuFooter-Ck9L599M.js.map +0 -1
- package/dist/MultiSelectFieldSync-B1tkEtft.js.map +0 -1
- package/dist/MultiSelectMenuSync-Deki_z-0.js.map +0 -1
- package/dist/NumberField-CjC6KHKl.js.map +0 -1
- package/dist/Page-BreBQ3pG.js.map +0 -1
- package/dist/Pagination-CmqAut6y.js.map +0 -1
- package/dist/Popover-CdRuNv3C.js.map +0 -1
- package/dist/ProgressBar-065vjsQ0.js.map +0 -1
- package/dist/Radio-D9w_-JYw.js.map +0 -1
- package/dist/Radio-dyLcVmUw.js.map +0 -1
- package/dist/RichTextEditor-byoMZaJy.js.map +0 -1
- package/dist/SavedFiltersButton-BHgS4akL.js.map +0 -1
- package/dist/SearchField-B7fIOJf-.js.map +0 -1
- package/dist/SearchField-X4B7f23E.js.map +0 -1
- package/dist/SegmentedControl-Be6jCglV.js.map +0 -1
- package/dist/SelectCard-CMSG_ba1.js.map +0 -1
- package/dist/SelectFieldLabel-dKVBaki2.js.map +0 -1
- package/dist/SelectFieldSync-VShqP5J0.js.map +0 -1
- package/dist/SelectMenuSync-BDx1yhZT.js.map +0 -1
- package/dist/SelectOptions-BIVTviOh.js.map +0 -1
- package/dist/SelectTrigger-APxYfL3V.js.map +0 -1
- package/dist/SelectTriggerBase-lYieONTb.js.map +0 -1
- package/dist/SideNav-DoxX8Vi-.js.map +0 -1
- package/dist/Stepper-CvaR7OoT.js.map +0 -1
- package/dist/Switch-Bm3qqjd6.js.map +0 -1
- package/dist/Tab-Cy4G562A.js.map +0 -1
- package/dist/Text-mDcQHC2U.js.map +0 -1
- package/dist/TextField-CUVsDfWo.js.map +0 -1
- package/dist/TextField-WQTlqKso.js.map +0 -1
- package/dist/Textarea-CW3KGuB9.js.map +0 -1
- package/dist/TimeField-JA3gXyS7.js.map +0 -1
- package/dist/Toaster-DMZng3Im.js.map +0 -1
- package/dist/Toaster-fPcgIF7Q.js.map +0 -1
- package/dist/Toolbar-BfGcDXgC.js.map +0 -1
- package/dist/Toolbar-Dlu39v69.js.map +0 -1
- package/dist/ToolbarButtonToggle-3xbnm1Qr.js.map +0 -1
- package/dist/TreeSelectFieldSync-CdtC8d3Q.js.map +0 -1
- package/dist/TreeSelectMenuSync-CPuQWUNU.js.map +0 -1
- package/dist/TypeaheadTextField-BkLECKZY.js.map +0 -1
- package/dist/YearlessDateInputWithPicker-DLtMQhDw.js.map +0 -1
- package/dist/bulkActionTypes-CTKwMpO7.js.map +0 -1
- package/dist/filter-state-DKXF5MeW.js.map +0 -1
- package/dist/index-SZMmvI3D.js.map +0 -1
- package/dist/syncFilterUtils-BVclVovw.js.map +0 -1
- package/dist/treeSync-oC-VZpP0.js.map +0 -1
- package/dist/useAdaptiveView-AvsDkChF.js.map +0 -1
- package/dist/useInfiniteCombobox-C78WQZx4.js.map +0 -1
- package/dist/useMenuInteraction-NEJXUD4I.js.map +0 -1
- package/dist/useNumberField-D_ic9i2q.js.map +0 -1
|
@@ -3,22 +3,18 @@ import { useId, useRef, useMemo, useState, useLayoutEffect, isValidElement } fro
|
|
|
3
3
|
import { c as cx } from './index-De1g9FRV.js';
|
|
4
4
|
import { S as SvgClose } from './close-DZj38AEh.js';
|
|
5
5
|
import { S as SvgChevronRight } from './chevron_right-BdpsxX7x.js';
|
|
6
|
-
import { B as Button } from './Button-
|
|
7
|
-
import { C as Chip } from './Chip-
|
|
8
|
-
import { F as Flex } from './Flex-
|
|
9
|
-
import { F as FieldLabel } from './FieldLabel-
|
|
6
|
+
import { B as Button } from './Button-Dwh_Nd4l.js';
|
|
7
|
+
import { C as Chip } from './Chip-D6Q0J0Xe.js';
|
|
8
|
+
import { F as Flex } from './Flex-CRF7gj0_.js';
|
|
9
|
+
import { F as FieldLabel } from './FieldLabel-SzH61hCb.js';
|
|
10
10
|
import { w as warnDeprecatedErrorUsage } from './utils-CM48ODEJ.js';
|
|
11
11
|
import { s as styles } from './SelectTriggerBase.module-Brmw1nYG.js';
|
|
12
|
-
import { H as Helper } from './Helper-
|
|
12
|
+
import { H as Helper } from './Helper-Bq6Npkgh.js';
|
|
13
13
|
|
|
14
14
|
const ADD_NEW = Symbol.for("add-new");
|
|
15
15
|
const SELECT_ALL = Symbol.for("select-all");
|
|
16
|
-
const defaultItemToString =
|
|
17
|
-
|
|
18
|
-
};
|
|
19
|
-
const defaultItemToKey = function(item) {
|
|
20
|
-
return item;
|
|
21
|
-
};
|
|
16
|
+
const defaultItemToString = (item) => item != null ? String(item) : "";
|
|
17
|
+
const defaultItemToKey = (item) => item;
|
|
22
18
|
function isMultiple(props) {
|
|
23
19
|
return Object.hasOwn(props, "multiple") && props.multiple === true;
|
|
24
20
|
}
|
|
@@ -96,7 +92,7 @@ function mergeChipProps(...propSets) {
|
|
|
96
92
|
);
|
|
97
93
|
return merged;
|
|
98
94
|
}
|
|
99
|
-
const SelectTriggerBase =
|
|
95
|
+
const SelectTriggerBase = ({
|
|
100
96
|
className,
|
|
101
97
|
label,
|
|
102
98
|
size,
|
|
@@ -123,13 +119,14 @@ const SelectTriggerBase = function({
|
|
|
123
119
|
labelProps,
|
|
124
120
|
inputWrapperProps = {},
|
|
125
121
|
toggleButtonProps = {},
|
|
122
|
+
clearButtonProps = {},
|
|
126
123
|
inputProps = {},
|
|
127
124
|
chipProps = (_item, _index) => ({}),
|
|
128
125
|
disableToggleButton = false,
|
|
129
126
|
warning,
|
|
130
127
|
placeholder,
|
|
131
128
|
...rest
|
|
132
|
-
}) {
|
|
129
|
+
}) => {
|
|
133
130
|
const itemToString = itemToStringProp ?? defaultItemToString;
|
|
134
131
|
const ComboboxTriggerClassNames = cx(styles["search-field"], {
|
|
135
132
|
[styles["select"]]: variant === "select"
|
|
@@ -290,6 +287,7 @@ const SelectTriggerBase = function({
|
|
|
290
287
|
(inputValue || selectedItem || selectedItems.length) && !noClearButton ? /* @__PURE__ */ jsx("div", { className: styles["close-button-wrapper"], children: /* @__PURE__ */ jsx(
|
|
291
288
|
Button,
|
|
292
289
|
{
|
|
290
|
+
...clearButtonProps,
|
|
293
291
|
"aria-label": "clear selection",
|
|
294
292
|
appearance: "ghost",
|
|
295
293
|
size: "small",
|
|
@@ -410,4 +408,4 @@ const SelectTriggerBase = function({
|
|
|
410
408
|
};
|
|
411
409
|
|
|
412
410
|
export { ADD_NEW as A, SelectTriggerBase as S, defaultItemToKey as a, SELECT_ALL as b, defaultItemToString as d, getScrollParent as g, isMultiple as i };
|
|
413
|
-
//# sourceMappingURL=SelectTriggerBase-
|
|
411
|
+
//# sourceMappingURL=SelectTriggerBase-rxHXMSb4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectTriggerBase-rxHXMSb4.js","sources":["../src/components/Combobox/internal/ComboboxUtils.ts","../src/components/SelectTrigger/internal/SelectTriggerBase.tsx"],"sourcesContent":["import type {\n ComboboxMultipleProps,\n ComboboxProps,\n ComboboxSelectProps,\n SelectMultipleProps,\n} from \"../ComboboxTypes\";\n\nexport const ADD_NEW = Symbol.for(\"add-new\");\nexport const SELECT_ALL = Symbol.for(\"select-all\");\n\n/**\n * Default function to convert an item to a string representation\n * @template Item - The type of the item\n * @param item - The item to convert to string\n * @returns String representation of the item or empty string if null/undefined\n */\nexport const defaultItemToString = <Item>(item: Item | null) =>\n item != null ? String(item) : \"\";\n\n/**\n * Default function to generate a unique key for an item\n * @template Item - The type of the item\n * @param item - The item to generate a key for\n * @returns The item itself as the key\n */\nexport const defaultItemToKey = <Item>(item: Item | null) => item;\n\nexport function isMultiple<Item>(\n props: ComboboxProps<Item> | ComboboxSelectProps<Item>,\n): props is ComboboxMultipleProps<Item> | SelectMultipleProps<Item> {\n return Object.hasOwn(props, \"multiple\") && props.multiple === true;\n}\n\nexport function getScrollParent(node: HTMLElement | null) {\n if (node == null) {\n return null;\n }\n\n if (node.scrollHeight > node.clientHeight) {\n return node;\n } else {\n if (node.parentNode instanceof HTMLElement) {\n return getScrollParent(node.parentNode);\n }\n return null;\n }\n}\n","import {\n useState,\n useId,\n useRef,\n useLayoutEffect,\n useMemo,\n isValidElement,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type MutableRefObject,\n type MouseEventHandler,\n type ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport Chevron_Right from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\n\nimport { Button } from \"../../Button\";\nimport { Chip, type ChipProps } from \"../../Chip\";\nimport { Flex } from \"../../Flex\";\nimport { FieldLabel, type FieldLabelProps } from \"../../FieldLabel\";\nimport { Helper } from \"../../../internal/components\";\nimport { warnDeprecatedErrorUsage } from \"../../FieldMessage\";\nimport type { TextFieldProps } from \"../../TextField\";\n\nimport styles from \"./SelectTriggerBase.module.scss\";\nimport type { DataAttributes, DistributiveOmit } from \"../../../types\";\nimport { defaultItemToString } from \"../../Combobox/internal/ComboboxUtils\";\n\ntype PartialChipProps = Partial<Omit<ChipProps, \"icon\" | \"avatar\">> &\n DataAttributes &\n (\n | { icon?: ChipProps[\"icon\"]; avatar?: never }\n | { icon?: never; avatar?: ChipProps[\"avatar\"] }\n );\n\ntype CollapseSearchStatus = \"done\" | \"measuring\" | \"searching\";\n\ntype CollapseSearchState = {\n status: CollapseSearchStatus;\n key: string | null;\n collapsedChips: boolean;\n visibleChipsCount: number | null;\n low: number;\n high: number;\n candidate: number | null;\n bestFit: number | null;\n iterations: number;\n};\n\nconst COLLAPSE_SEARCH_ITERATION_MARGIN = 4;\n\nfunction getDoneCollapseSearchState(\n key: string | null,\n collapsedChips = false,\n visibleChipsCount: number | null = null,\n): CollapseSearchState {\n return {\n status: \"done\",\n key,\n collapsedChips,\n visibleChipsCount,\n low: 0,\n high: 0,\n candidate: null,\n bestFit: visibleChipsCount,\n iterations: 0,\n };\n}\n\nfunction getMaxCollapseSearchIterations(selectedItemsCount: number): number {\n // Allows one full binary-search pass plus a small buffer for measurement rerenders.\n return (\n Math.ceil(Math.log2(Math.max(selectedItemsCount, 2))) +\n COLLAPSE_SEARCH_ITERATION_MARGIN\n );\n}\n\nconst FNV_1A_OFFSET_BASIS = 0x811c9dc5;\nconst FNV_1A_PRIME = 0x01000193;\n\nfunction addByteToCollapseHash(hash: number, byte: number): number {\n return Math.imul(hash ^ byte, FNV_1A_PRIME) >>> 0;\n}\n\nfunction addNumberToCollapseHash(hash: number, value: number): number {\n let nextHash = hash;\n\n nextHash = addByteToCollapseHash(nextHash, value & 0xff);\n nextHash = addByteToCollapseHash(nextHash, (value >>> 8) & 0xff);\n nextHash = addByteToCollapseHash(nextHash, (value >>> 16) & 0xff);\n nextHash = addByteToCollapseHash(nextHash, (value >>> 24) & 0xff);\n\n return nextHash;\n}\n\nfunction addLabelToCollapseHash(hash: number, label: string): number {\n let nextHash = addNumberToCollapseHash(hash, label.length);\n\n for (let index = 0; index < label.length; index += 1) {\n const codeUnit = label.charCodeAt(index);\n\n nextHash = addByteToCollapseHash(nextHash, codeUnit & 0xff);\n nextHash = addByteToCollapseHash(nextHash, codeUnit >>> 8);\n }\n\n return nextHash;\n}\n\nfunction getCollapseKey<Item>(\n maxRows: number | undefined,\n selectedItems: Item[],\n itemToString: (item: Item) => string,\n): string | null {\n if (maxRows === undefined) return null;\n\n let selectedItemsHash = FNV_1A_OFFSET_BASIS;\n\n for (const item of selectedItems) {\n selectedItemsHash = addLabelToCollapseHash(\n selectedItemsHash,\n itemToString(item),\n );\n }\n\n return `${maxRows}:${selectedItems.length}:${selectedItemsHash.toString(36)}`;\n}\n\nfunction getCollapseSearchCandidate(low: number, high: number): number {\n return Math.floor((low + high) / 2);\n}\n\nfunction mergeChipProps(\n ...propSets: (PartialChipProps | Partial<ChipProps>)[]\n): ChipProps {\n const merged = propSets.reduce(\n (acc, props) => ({ ...acc, ...props }),\n {} as Record<string, unknown>,\n );\n\n return merged as ChipProps;\n}\n\nexport type SelectTriggerBaseProps<Item = unknown> = DistributiveOmit<\n TextFieldProps,\n \"showCounter\" | \"prefix\"\n> & {\n /**\n * Should be a positive integer.\n */\n maxRows?: number;\n\n /** Allows Combobox/Select to display custom-colored Chips */\n selectedItemProps?: (item: Item, index: number) => PartialChipProps;\n} & {\n itemToString?: (item: Item) => string;\n removeSelectedItem?: (item: Item) => void;\n disableClearSelection?: boolean;\n selectedItem: Item | null;\n selectedItems: Item[];\n\n inputValue?: string;\n referenceRef?: MutableRefObject<HTMLDivElement | null>;\n} & {\n variant?: \"select\" | \"combobox\";\n onClearButtonClick?: MouseEventHandler<HTMLButtonElement>;\n labelProps?: Partial<FieldLabelProps>;\n inputWrapperProps?: ComponentPropsWithoutRef<\"div\">;\n toggleButtonProps?: ComponentPropsWithoutRef<\"button\"> & DataAttributes;\n clearButtonProps?: ComponentPropsWithoutRef<\"button\"> & DataAttributes;\n chipProps?: (item: Item, index: number) => PartialChipProps;\n inputProps?: ComponentPropsWithoutRef<\"input\" | \"div\"> & DataAttributes;\n disableToggleButton?: boolean;\n} & {\n prefix?: string | ReactNode;\n};\n\nexport const SelectTriggerBase = <Item,>({\n className,\n label,\n size,\n error,\n hint,\n description,\n prefix,\n suffix,\n maxRows,\n selectedItemProps = (_item: Item, _index: number): PartialChipProps => ({}),\n disabled,\n readOnly,\n /** ======== */\n disableClearSelection,\n itemToString: itemToStringProp,\n selectedItem,\n selectedItems,\n removeSelectedItem,\n inputValue,\n referenceRef,\n /** ======== */\n variant = \"select\",\n onClearButtonClick,\n labelProps,\n inputWrapperProps = {},\n toggleButtonProps = {},\n clearButtonProps = {},\n inputProps = {},\n chipProps = (_item: Item, _index: number): PartialChipProps => ({}),\n disableToggleButton = false,\n warning,\n placeholder,\n ...rest\n}: SelectTriggerBaseProps<Item>) => {\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n\n const ComboboxTriggerClassNames = cx(styles[\"search-field\"], {\n [styles[\"select\"]]: variant === \"select\",\n });\n\n const noClearButton = disabled || readOnly || disableClearSelection;\n\n const ComboboxInputWrapperClassNames = cx(\n styles[\"input-wrapper\"],\n className\n ? {\n [className]: variant === \"select\",\n }\n : {},\n {\n [styles[\"small\"]]: size === \"small\",\n [styles[\"large\"]]: size === \"large\",\n [styles[\"no-clear-button\"]]: noClearButton,\n [styles[\"no-toggle-button\"]]: disableToggleButton,\n },\n );\n\n const ComboboxInputClassNames = cx(\n styles[\"input\"],\n className\n ? {\n [className]: variant === \"combobox\",\n }\n : {},\n {\n [styles[\"error\"]]: error,\n },\n );\n\n const helperUid = \"helper\" + useId();\n const placeholderUid = \"placeholder\" + useId();\n const ariaDescribedBy = `${helperUid} ${placeholderUid}`;\n\n warnDeprecatedErrorUsage(\"SelectTrigger\", error);\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n\n const rowsRef = useRef<HTMLDivElement>(null);\n const collapseKey = useMemo(\n () => getCollapseKey(maxRows, selectedItems, itemToString),\n [maxRows, selectedItems, itemToString],\n );\n const [collapseSearch, setCollapseSearch] = useState<CollapseSearchState>(\n () => getDoneCollapseSearchState(null),\n );\n const stillCalculating = collapseSearch.status !== \"done\";\n\n useLayoutEffect(() => {\n // we only need to do this nonsense if maxRows is set\n if (maxRows === undefined) {\n if (\n collapseSearch.status !== \"done\" ||\n collapseSearch.collapsedChips ||\n collapseSearch.visibleChipsCount !== null ||\n collapseSearch.key !== null\n ) {\n setCollapseSearch(getDoneCollapseSearchState(null));\n }\n\n return;\n }\n\n if (collapseSearch.key !== collapseKey) {\n setCollapseSearch({\n status: \"measuring\",\n key: collapseKey,\n collapsedChips: false,\n visibleChipsCount: null,\n low: 0,\n high: Math.max(selectedItems.length - 1, 0),\n candidate: null,\n bestFit: null,\n iterations: 0,\n });\n\n return;\n }\n\n if (collapseSearch.status === \"done\") return;\n\n if (rowsRef?.current?.children) {\n const children = rowsRef?.current?.children;\n\n // Exclude the input-flex element from row counting so the algorithm\n // only considers chip elements when deciding whether to collapse.\n // The input will naturally fit alongside chips thanks to its\n // reduced min-width.\n const chipChildren = Array.from(children).filter(\n (child) =>\n !(child as HTMLElement).classList?.contains(styles[\"input-flex\"]),\n );\n\n const rowData = chipChildren.reduce(\n (acc, child) => {\n const top = child.getBoundingClientRect().top;\n\n if (!acc.length) {\n return [{ count: 1, top }];\n } else if (acc[acc.length - 1].top === top) {\n return [\n ...acc.slice(0, -1),\n { count: acc[acc.length - 1].count + 1, top },\n ];\n } else if (acc[acc.length - 1].top !== top) {\n return [...acc, { count: 1, top }];\n } else {\n return acc;\n }\n },\n [] as { count: number; top: number }[],\n );\n\n const fitsWithinMaxRows = !rowData[maxRows];\n\n // Call it a day if:\n // Selected items fit within the configured rows OR\n // There's only one item selected\n if (collapseSearch.status === \"measuring\") {\n if (fitsWithinMaxRows || selectedItems.length === 1) {\n setCollapseSearch(getDoneCollapseSearchState(collapseKey));\n\n return;\n }\n\n const quickGuess = Math.max(\n rowData.slice(0, maxRows).reduce((sum, row) => sum + row.count, -1),\n 0,\n );\n\n setCollapseSearch({\n status: \"searching\",\n key: collapseKey,\n collapsedChips: true,\n visibleChipsCount: quickGuess,\n low: 0,\n high: Math.max(selectedItems.length - 1, 0),\n candidate: quickGuess,\n bestFit: null,\n iterations: 0,\n });\n\n return;\n }\n\n if (collapseSearch.candidate === null) return;\n\n const iterations = collapseSearch.iterations + 1;\n const bestFit = fitsWithinMaxRows\n ? collapseSearch.candidate\n : collapseSearch.bestFit;\n const low = fitsWithinMaxRows\n ? collapseSearch.candidate + 1\n : collapseSearch.low;\n const high = fitsWithinMaxRows\n ? collapseSearch.high\n : collapseSearch.candidate - 1;\n const maxIterations = getMaxCollapseSearchIterations(\n selectedItems.length,\n );\n\n if (low > high || iterations >= maxIterations) {\n setCollapseSearch(\n getDoneCollapseSearchState(collapseKey, true, bestFit ?? 0),\n );\n\n return;\n }\n\n const candidate = getCollapseSearchCandidate(low, high);\n\n setCollapseSearch({\n status: \"searching\",\n key: collapseKey,\n collapsedChips: true,\n visibleChipsCount: candidate,\n low,\n high,\n candidate,\n bestFit,\n iterations,\n });\n }\n }, [collapseKey, collapseSearch, maxRows, selectedItems.length]);\n\n const selectedItemsDisplayCount =\n collapseSearch.collapsedChips &&\n maxRows != null &&\n collapseSearch.visibleChipsCount !== null\n ? collapseSearch.visibleChipsCount\n : selectedItems.length;\n\n // TODO: Update this to use a TextField component once we can pass props\n // directly to both the label and the text input\n return (\n <div {...rest} className={ComboboxTriggerClassNames} ref={referenceRef}>\n {label ? (\n <FieldLabel\n {...labelProps}\n className={cx(styles[\"label\"], labelProps?.className)}\n >\n {label}\n </FieldLabel>\n ) : null}\n\n <div\n {...inputWrapperProps}\n className={ComboboxInputWrapperClassNames}\n {...(variant === \"select\"\n ? {\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": labelProps?.id,\n }\n : {})}\n >\n <div className={styles[\"buttons-wrapper\"]}>\n {(inputValue || selectedItem || selectedItems.length) &&\n !noClearButton ? (\n <div className={styles[\"close-button-wrapper\"]}>\n <Button\n {...clearButtonProps}\n aria-label=\"clear selection\"\n appearance=\"ghost\"\n size=\"small\"\n icon={Close}\n className={styles[\"close-button\"]}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onClearButtonClick?.(e);\n }}\n tabIndex={-1}\n />\n </div>\n ) : null}\n\n {disableToggleButton ? null : (\n <div className={styles[\"toggle-button-wrapper\"]}>\n <Button\n {...toggleButtonProps}\n {...(variant === \"select\"\n ? { tabIndex: -1, inert: \"true\" }\n : {})}\n className={styles[\"toggle-button\"]}\n aria-label=\"toggle menu\"\n icon={Chevron_Right}\n appearance=\"ghost\"\n size=\"small\"\n disabled={disabled}\n />\n </div>\n )}\n </div>\n\n <div className={styles[\"prefix-wrapper\"]}>\n {prefix ? <div className={styles[\"prefix\"]}>{prefix}</div> : null}\n </div>\n\n <div\n className={cx(styles[\"rows-wrapper\"], {\n [styles[\"max-rows\"]]: maxRows !== undefined,\n [styles[\"single-row\"]]: maxRows === 1 && !stillCalculating,\n })}\n ref={rowsRef}\n >\n {selectedItems.length && removeSelectedItem != null\n ? selectedItems\n .slice(0, selectedItemsDisplayCount)\n .map((item, index) => {\n return (\n <div\n key={`selected-item-${index}`}\n className={styles[\"chip-wrapper\"]}\n >\n <Chip\n {...mergeChipProps(\n chipProps(item, index),\n selectedItemProps(item, index),\n {\n label: itemToString(item),\n onClose:\n disabled || readOnly\n ? undefined\n : (_e) => {\n removeSelectedItem(item);\n },\n className: styles[\"chip\"],\n title: itemToString(item),\n },\n )}\n />\n </div>\n );\n })\n : null}\n\n {collapseSearch.collapsedChips && maxRows != null ? (\n <div className={styles[\"chip-wrapper\"]}>\n <Chip\n label={`+${selectedItems.length - selectedItemsDisplayCount}`}\n className={styles[\"chip\"]}\n title={selectedItems\n .slice(selectedItemsDisplayCount)\n .map((item) => itemToString(item))\n .join(\", \")}\n />\n </div>\n ) : null}\n\n <Flex className={styles[\"input-flex\"]} alignItems=\"center\">\n {variant === \"select\" ? (\n <div\n {...inputProps}\n className={cx(ComboboxInputClassNames, inputProps.className)}\n >\n {selectedItems.length ? null : selectedItem ? (\n itemToString(selectedItem)\n ) : (\n <span\n className={styles[\"fake-placeholder\"]}\n id={placeholderUid}\n >\n {placeholder}\n </span>\n )}\n </div>\n ) : (\n <input\n type=\"text\"\n {...inputProps}\n placeholder={placeholder}\n className={cx(ComboboxInputClassNames, inputProps.className)}\n {...(inputProps[\"aria-expanded\"] != null &&\n inputProps[\"aria-controls\"] != null\n ? {\n role: \"combobox\",\n }\n : {})}\n />\n )}\n\n {suffix ? <div className={styles[\"suffix\"]}>{suffix}</div> : null}\n </Flex>\n </div>\n </div>\n\n {hint || errorMessages || warning || description ? (\n <Helper\n id={helperUid}\n error={\n typeof errorMessages === \"string\" || Array.isArray(errorMessages)\n ? errorMessages\n : undefined\n }\n warning={warning}\n errorMessage={\n isValidElement(errorMessages) ? errorMessages : undefined\n }\n hint={hint}\n description={description}\n />\n ) : null}\n </div>\n );\n};\n"],"names":["Close","Chevron_Right"],"mappings":";;;;;;;;;;;;;AAOO,MAAM,OAAA,GAAU,MAAA,CAAO,GAAA,CAAI,SAAS;AACpC,MAAM,UAAA,GAAa,MAAA,CAAO,GAAA,CAAI,YAAY;AAQ1C,MAAM,sBAAsB,CAAO,IAAA,KACxC,QAAQ,IAAA,GAAO,MAAA,CAAO,IAAI,CAAA,GAAI;AAQzB,MAAM,gBAAA,GAAmB,CAAO,IAAA,KAAsB;AAEtD,SAAS,WACd,KAAA,EACkE;AAClE,EAAA,OAAO,OAAO,MAAA,CAAO,KAAA,EAAO,UAAU,CAAA,IAAK,MAAM,QAAA,KAAa,IAAA;AAChE;AAEO,SAAS,gBAAgB,IAAA,EAA0B;AACxD,EAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,IAAA,CAAK,YAAA,GAAe,IAAA,CAAK,YAAA,EAAc;AACzC,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,MAAO;AACL,IAAA,IAAI,IAAA,CAAK,sBAAsB,WAAA,EAAa;AAC1C,MAAA,OAAO,eAAA,CAAgB,KAAK,UAAU,CAAA;AAAA,IACxC;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACF;;ACIA,MAAM,gCAAA,GAAmC,CAAA;AAEzC,SAAS,0BAAA,CACP,GAAA,EACA,cAAA,GAAiB,KAAA,EACjB,oBAAmC,IAAA,EACd;AACrB,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,MAAA;AAAA,IACR,GAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,GAAA,EAAK,CAAA;AAAA,IACL,IAAA,EAAM,CAAA;AAAA,IACN,SAAA,EAAW,IAAA;AAAA,IACX,OAAA,EAAS,iBAAA;AAAA,IACT,UAAA,EAAY;AAAA,GACd;AACF;AAEA,SAAS,+BAA+B,kBAAA,EAAoC;AAE1E,EAAA,OACE,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAI,kBAAA,EAAoB,CAAC,CAAC,CAAC,CAAA,GACpD,gCAAA;AAEJ;AAEA,MAAM,mBAAA,GAAsB,UAAA;AAC5B,MAAM,YAAA,GAAe,QAAA;AAErB,SAAS,qBAAA,CAAsB,MAAc,IAAA,EAAsB;AACjE,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,IAAA,GAAO,IAAA,EAAM,YAAY,CAAA,KAAM,CAAA;AAClD;AAEA,SAAS,uBAAA,CAAwB,MAAc,KAAA,EAAuB;AACpE,EAAA,IAAI,QAAA,GAAW,IAAA;AAEf,EAAA,QAAA,GAAW,qBAAA,CAAsB,QAAA,EAAU,KAAA,GAAQ,GAAI,CAAA;AACvD,EAAA,QAAA,GAAW,qBAAA,CAAsB,QAAA,EAAW,KAAA,KAAU,CAAA,GAAK,GAAI,CAAA;AAC/D,EAAA,QAAA,GAAW,qBAAA,CAAsB,QAAA,EAAW,KAAA,KAAU,EAAA,GAAM,GAAI,CAAA;AAChE,EAAA,QAAA,GAAW,qBAAA,CAAsB,QAAA,EAAW,KAAA,KAAU,EAAA,GAAM,GAAI,CAAA;AAEhE,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,sBAAA,CAAuB,MAAc,KAAA,EAAuB;AACnE,EAAA,IAAI,QAAA,GAAW,uBAAA,CAAwB,IAAA,EAAM,KAAA,CAAM,MAAM,CAAA;AAEzD,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,KAAA,CAAM,MAAA,EAAQ,SAAS,CAAA,EAAG;AACpD,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,UAAA,CAAW,KAAK,CAAA;AAEvC,IAAA,QAAA,GAAW,qBAAA,CAAsB,QAAA,EAAU,QAAA,GAAW,GAAI,CAAA;AAC1D,IAAA,QAAA,GAAW,qBAAA,CAAsB,QAAA,EAAU,QAAA,KAAa,CAAC,CAAA;AAAA,EAC3D;AAEA,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,cAAA,CACP,OAAA,EACA,aAAA,EACA,YAAA,EACe;AACf,EAAA,IAAI,OAAA,KAAY,QAAW,OAAO,IAAA;AAElC,EAAA,IAAI,iBAAA,GAAoB,mBAAA;AAExB,EAAA,KAAA,MAAW,QAAQ,aAAA,EAAe;AAChC,IAAA,iBAAA,GAAoB,sBAAA;AAAA,MAClB,iBAAA;AAAA,MACA,aAAa,IAAI;AAAA,KACnB;AAAA,EACF;AAEA,EAAA,OAAO,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,aAAA,CAAc,MAAM,CAAA,CAAA,EAAI,iBAAA,CAAkB,QAAA,CAAS,EAAE,CAAC,CAAA,CAAA;AAC7E;AAEA,SAAS,0BAAA,CAA2B,KAAa,IAAA,EAAsB;AACrE,EAAA,OAAO,IAAA,CAAK,KAAA,CAAA,CAAO,GAAA,GAAM,IAAA,IAAQ,CAAC,CAAA;AACpC;AAEA,SAAS,kBACJ,QAAA,EACQ;AACX,EAAA,MAAM,SAAS,QAAA,CAAS,MAAA;AAAA,IACtB,CAAC,GAAA,EAAK,KAAA,MAAW,EAAE,GAAG,GAAA,EAAK,GAAG,KAAA,EAAM,CAAA;AAAA,IACpC;AAAC,GACH;AAEA,EAAA,OAAO,MAAA;AACT;AAoCO,MAAM,oBAAoB,CAAQ;AAAA,EACvC,SAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,iBAAA,GAAoB,CAAC,KAAA,EAAa,MAAA,MAAsC,EAAC,CAAA;AAAA,EACzE,QAAA;AAAA,EACA,QAAA;AAAA;AAAA,EAEA,qBAAA;AAAA,EACA,YAAA,EAAc,gBAAA;AAAA,EACd,YAAA;AAAA,EACA,aAAA;AAAA,EACA,kBAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA;AAAA,EAEA,OAAA,GAAU,QAAA;AAAA,EACV,kBAAA;AAAA,EACA,UAAA;AAAA,EACA,oBAAoB,EAAC;AAAA,EACrB,oBAAoB,EAAC;AAAA,EACrB,mBAAmB,EAAC;AAAA,EACpB,aAAa,EAAC;AAAA,EACd,SAAA,GAAY,CAAC,KAAA,EAAa,MAAA,MAAsC,EAAC,CAAA;AAAA,EACjE,mBAAA,GAAsB,KAAA;AAAA,EACtB,OAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAoC;AAClC,EAAA,MAAM,eAAe,gBAAA,IAAoB,mBAAA;AAEzC,EAAA,MAAM,yBAAA,GAA4B,EAAA,CAAG,MAAA,CAAO,cAAc,CAAA,EAAG;AAAA,IAC3D,CAAC,MAAA,CAAO,QAAQ,CAAC,GAAG,OAAA,KAAY;AAAA,GACjC,CAAA;AAED,EAAA,MAAM,aAAA,GAAgB,YAAY,QAAA,IAAY,qBAAA;AAE9C,EAAA,MAAM,8BAAA,GAAiC,EAAA;AAAA,IACrC,OAAO,eAAe,CAAA;AAAA,IACtB,SAAA,GACI;AAAA,MACE,CAAC,SAAS,GAAG,OAAA,KAAY;AAAA,QAE3B,EAAC;AAAA,IACL;AAAA,MACE,CAAC,MAAA,CAAO,OAAO,CAAC,GAAG,IAAA,KAAS,OAAA;AAAA,MAC5B,CAAC,MAAA,CAAO,OAAO,CAAC,GAAG,IAAA,KAAS,OAAA;AAAA,MAC5B,CAAC,MAAA,CAAO,iBAAiB,CAAC,GAAG,aAAA;AAAA,MAC7B,CAAC,MAAA,CAAO,kBAAkB,CAAC,GAAG;AAAA;AAChC,GACF;AAEA,EAAA,MAAM,uBAAA,GAA0B,EAAA;AAAA,IAC9B,OAAO,OAAO,CAAA;AAAA,IACd,SAAA,GACI;AAAA,MACE,CAAC,SAAS,GAAG,OAAA,KAAY;AAAA,QAE3B,EAAC;AAAA,IACL;AAAA,MACE,CAAC,MAAA,CAAO,OAAO,CAAC,GAAG;AAAA;AACrB,GACF;AAEA,EAAA,MAAM,SAAA,GAAY,WAAW,KAAA,EAAM;AACnC,EAAA,MAAM,cAAA,GAAiB,gBAAgB,KAAA,EAAM;AAC7C,EAAA,MAAM,eAAA,GAAkB,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,cAAc,CAAA,CAAA;AAEtD,EAAA,wBAAA,CAAyB,iBAAiB,KAAK,CAAA;AAE/C,EAAA,MAAM,gBACJ,OAAO,KAAA,KAAU,SAAA,IAAa,KAAA,KAAU,SAAY,MAAA,GAAY,KAAA;AAElE,EAAA,MAAM,OAAA,GAAU,OAAuB,IAAI,CAAA;AAC3C,EAAA,MAAM,WAAA,GAAc,OAAA;AAAA,IAClB,MAAM,cAAA,CAAe,OAAA,EAAS,aAAA,EAAe,YAAY,CAAA;AAAA,IACzD,CAAC,OAAA,EAAS,aAAA,EAAe,YAAY;AAAA,GACvC;AACA,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,QAAA;AAAA,IAC1C,MAAM,2BAA2B,IAAI;AAAA,GACvC;AACA,EAAA,MAAM,gBAAA,GAAmB,eAAe,MAAA,KAAW,MAAA;AAEnD,EAAA,eAAA,CAAgB,MAAM;AAEpB,IAAA,IAAI,YAAY,MAAA,EAAW;AACzB,MAAA,IACE,cAAA,CAAe,MAAA,KAAW,MAAA,IAC1B,cAAA,CAAe,cAAA,IACf,eAAe,iBAAA,KAAsB,IAAA,IACrC,cAAA,CAAe,GAAA,KAAQ,IAAA,EACvB;AACA,QAAA,iBAAA,CAAkB,0BAAA,CAA2B,IAAI,CAAC,CAAA;AAAA,MACpD;AAEA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,cAAA,CAAe,QAAQ,WAAA,EAAa;AACtC,MAAA,iBAAA,CAAkB;AAAA,QAChB,MAAA,EAAQ,WAAA;AAAA,QACR,GAAA,EAAK,WAAA;AAAA,QACL,cAAA,EAAgB,KAAA;AAAA,QAChB,iBAAA,EAAmB,IAAA;AAAA,QACnB,GAAA,EAAK,CAAA;AAAA,QACL,MAAM,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,MAAA,GAAS,GAAG,CAAC,CAAA;AAAA,QAC1C,SAAA,EAAW,IAAA;AAAA,QACX,OAAA,EAAS,IAAA;AAAA,QACT,UAAA,EAAY;AAAA,OACb,CAAA;AAED,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,cAAA,CAAe,WAAW,MAAA,EAAQ;AAEtC,IAAA,IAAI,OAAA,EAAS,SAAS,QAAA,EAAU;AAC9B,MAAA,MAAM,QAAA,GAAW,SAAS,OAAA,EAAS,QAAA;AAMnC,MAAA,MAAM,YAAA,GAAe,KAAA,CAAM,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAA;AAAA,QACxC,CAAC,UACC,CAAE,KAAA,CAAsB,WAAW,QAAA,CAAS,MAAA,CAAO,YAAY,CAAC;AAAA,OACpE;AAEA,MAAA,MAAM,UAAU,YAAA,CAAa,MAAA;AAAA,QAC3B,CAAC,KAAK,KAAA,KAAU;AACd,UAAA,MAAM,GAAA,GAAM,KAAA,CAAM,qBAAA,EAAsB,CAAE,GAAA;AAE1C,UAAA,IAAI,CAAC,IAAI,MAAA,EAAQ;AACf,YAAA,OAAO,CAAC,EAAE,KAAA,EAAO,CAAA,EAAG,KAAK,CAAA;AAAA,UAC3B,WAAW,GAAA,CAAI,GAAA,CAAI,SAAS,CAAC,CAAA,CAAE,QAAQ,GAAA,EAAK;AAC1C,YAAA,OAAO;AAAA,cACL,GAAG,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAAA,cAClB,EAAE,OAAO,GAAA,CAAI,GAAA,CAAI,SAAS,CAAC,CAAA,CAAE,KAAA,GAAQ,CAAA,EAAG,GAAA;AAAI,aAC9C;AAAA,UACF,WAAW,GAAA,CAAI,GAAA,CAAI,SAAS,CAAC,CAAA,CAAE,QAAQ,GAAA,EAAK;AAC1C,YAAA,OAAO,CAAC,GAAG,GAAA,EAAK,EAAE,KAAA,EAAO,CAAA,EAAG,KAAK,CAAA;AAAA,UACnC,CAAA,MAAO;AACL,YAAA,OAAO,GAAA;AAAA,UACT;AAAA,QACF,CAAA;AAAA,QACA;AAAC,OACH;AAEA,MAAA,MAAM,iBAAA,GAAoB,CAAC,OAAA,CAAQ,OAAO,CAAA;AAK1C,MAAA,IAAI,cAAA,CAAe,WAAW,WAAA,EAAa;AACzC,QAAA,IAAI,iBAAA,IAAqB,aAAA,CAAc,MAAA,KAAW,CAAA,EAAG;AACnD,UAAA,iBAAA,CAAkB,0BAAA,CAA2B,WAAW,CAAC,CAAA;AAEzD,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,aAAa,IAAA,CAAK,GAAA;AAAA,UACtB,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,OAAO,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,EAAK,GAAA,KAAQ,GAAA,GAAM,GAAA,CAAI,KAAA,EAAO,EAAE,CAAA;AAAA,UAClE;AAAA,SACF;AAEA,QAAA,iBAAA,CAAkB;AAAA,UAChB,MAAA,EAAQ,WAAA;AAAA,UACR,GAAA,EAAK,WAAA;AAAA,UACL,cAAA,EAAgB,IAAA;AAAA,UAChB,iBAAA,EAAmB,UAAA;AAAA,UACnB,GAAA,EAAK,CAAA;AAAA,UACL,MAAM,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,MAAA,GAAS,GAAG,CAAC,CAAA;AAAA,UAC1C,SAAA,EAAW,UAAA;AAAA,UACX,OAAA,EAAS,IAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACb,CAAA;AAED,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,cAAA,CAAe,cAAc,IAAA,EAAM;AAEvC,MAAA,MAAM,UAAA,GAAa,eAAe,UAAA,GAAa,CAAA;AAC/C,MAAA,MAAM,OAAA,GAAU,iBAAA,GACZ,cAAA,CAAe,SAAA,GACf,cAAA,CAAe,OAAA;AACnB,MAAA,MAAM,GAAA,GAAM,iBAAA,GACR,cAAA,CAAe,SAAA,GAAY,IAC3B,cAAA,CAAe,GAAA;AACnB,MAAA,MAAM,IAAA,GAAO,iBAAA,GACT,cAAA,CAAe,IAAA,GACf,eAAe,SAAA,GAAY,CAAA;AAC/B,MAAA,MAAM,aAAA,GAAgB,8BAAA;AAAA,QACpB,aAAA,CAAc;AAAA,OAChB;AAEA,MAAA,IAAI,GAAA,GAAM,IAAA,IAAQ,UAAA,IAAc,aAAA,EAAe;AAC7C,QAAA,iBAAA;AAAA,UACE,0BAAA,CAA2B,WAAA,EAAa,IAAA,EAAM,OAAA,IAAW,CAAC;AAAA,SAC5D;AAEA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,SAAA,GAAY,0BAAA,CAA2B,GAAA,EAAK,IAAI,CAAA;AAEtD,MAAA,iBAAA,CAAkB;AAAA,QAChB,MAAA,EAAQ,WAAA;AAAA,QACR,GAAA,EAAK,WAAA;AAAA,QACL,cAAA,EAAgB,IAAA;AAAA,QAChB,iBAAA,EAAmB,SAAA;AAAA,QACnB,GAAA;AAAA,QACA,IAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH;AAAA,EACF,GAAG,CAAC,WAAA,EAAa,gBAAgB,OAAA,EAAS,aAAA,CAAc,MAAM,CAAC,CAAA;AAE/D,EAAA,MAAM,yBAAA,GACJ,cAAA,CAAe,cAAA,IACf,OAAA,IAAW,IAAA,IACX,eAAe,iBAAA,KAAsB,IAAA,GACjC,cAAA,CAAe,iBAAA,GACf,aAAA,CAAc,MAAA;AAIpB,EAAA,4BACG,KAAA,EAAA,EAAK,GAAG,MAAM,SAAA,EAAW,yBAAA,EAA2B,KAAK,YAAA,EACvD,QAAA,EAAA;AAAA,IAAA,KAAA,mBACC,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACE,GAAG,UAAA;AAAA,QACJ,WAAW,EAAA,CAAG,MAAA,CAAO,OAAO,CAAA,EAAG,YAAY,SAAS,CAAA;AAAA,QAEnD,QAAA,EAAA;AAAA;AAAA,KACH,GACE,IAAA;AAAA,oBAEJ,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,iBAAA;AAAA,QACJ,SAAA,EAAW,8BAAA;AAAA,QACV,GAAI,YAAY,QAAA,GACb;AAAA,UACE,kBAAA,EAAoB,eAAA;AAAA,UACpB,mBAAmB,UAAA,EAAY;AAAA,YAEjC,EAAC;AAAA,QAEL,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,iBAAiB,CAAA,EACpC,QAAA,EAAA;AAAA,YAAA,CAAA,UAAA,IAAc,YAAA,IAAgB,aAAA,CAAc,MAAA,KAC9C,CAAC,aAAA,uBACE,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,sBAAsB,CAAA,EAC3C,QAAA,kBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACE,GAAG,gBAAA;AAAA,gBACJ,YAAA,EAAW,iBAAA;AAAA,gBACX,UAAA,EAAW,OAAA;AAAA,gBACX,IAAA,EAAK,OAAA;AAAA,gBACL,IAAA,EAAMA,QAAA;AAAA,gBACN,SAAA,EAAW,OAAO,cAAc,CAAA;AAAA,gBAChC,OAAA,EAAS,CAAC,CAAA,KAAqC;AAC7C,kBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,kBAAA,kBAAA,GAAqB,CAAC,CAAA;AAAA,gBACxB,CAAA;AAAA,gBACA,QAAA,EAAU;AAAA;AAAA,eAEd,CAAA,GACE,IAAA;AAAA,YAEH,sBAAsB,IAAA,mBACrB,GAAA,CAAC,SAAI,SAAA,EAAW,MAAA,CAAO,uBAAuB,CAAA,EAC5C,QAAA,kBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACE,GAAG,iBAAA;AAAA,gBACH,GAAI,YAAY,QAAA,GACb,EAAE,UAAU,EAAA,EAAI,KAAA,EAAO,MAAA,EAAO,GAC9B,EAAC;AAAA,gBACL,SAAA,EAAW,OAAO,eAAe,CAAA;AAAA,gBACjC,YAAA,EAAW,aAAA;AAAA,gBACX,IAAA,EAAMC,eAAA;AAAA,gBACN,UAAA,EAAW,OAAA;AAAA,gBACX,IAAA,EAAK,OAAA;AAAA,gBACL;AAAA;AAAA,aACF,EACF;AAAA,WAAA,EAEJ,CAAA;AAAA,0BAEA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,gBAAgB,CAAA,EACpC,QAAA,EAAA,MAAA,mBAAS,GAAA,CAAC,KAAA,EAAA,EAAI,WAAW,MAAA,CAAO,QAAQ,CAAA,EAAI,QAAA,EAAA,MAAA,EAAO,IAAS,IAAA,EAC/D,CAAA;AAAA,0BAEA,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA,CAAG,MAAA,CAAO,cAAc,CAAA,EAAG;AAAA,gBACpC,CAAC,MAAA,CAAO,UAAU,CAAC,GAAG,OAAA,KAAY,MAAA;AAAA,gBAClC,CAAC,MAAA,CAAO,YAAY,CAAC,GAAG,OAAA,KAAY,KAAK,CAAC;AAAA,eAC3C,CAAA;AAAA,cACD,GAAA,EAAK,OAAA;AAAA,cAEJ,QAAA,EAAA;AAAA,gBAAA,aAAA,CAAc,MAAA,IAAU,kBAAA,IAAsB,IAAA,GAC3C,aAAA,CACG,KAAA,CAAM,CAAA,EAAG,yBAAyB,CAAA,CAClC,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AACpB,kBAAA,uBACE,GAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBAEC,SAAA,EAAW,OAAO,cAAc,CAAA;AAAA,sBAEhC,QAAA,kBAAA,GAAA;AAAA,wBAAC,IAAA;AAAA,wBAAA;AAAA,0BACE,GAAG,cAAA;AAAA,4BACF,SAAA,CAAU,MAAM,KAAK,CAAA;AAAA,4BACrB,iBAAA,CAAkB,MAAM,KAAK,CAAA;AAAA,4BAC7B;AAAA,8BACE,KAAA,EAAO,aAAa,IAAI,CAAA;AAAA,8BACxB,OAAA,EACE,QAAA,IAAY,QAAA,GACR,MAAA,GACA,CAAC,EAAA,KAAO;AACN,gCAAA,kBAAA,CAAmB,IAAI,CAAA;AAAA,8BACzB,CAAA;AAAA,8BACN,SAAA,EAAW,OAAO,MAAM,CAAA;AAAA,8BACxB,KAAA,EAAO,aAAa,IAAI;AAAA;AAC1B;AACF;AAAA;AACF,qBAAA;AAAA,oBAnBK,iBAAiB,KAAK,CAAA;AAAA,mBAoB7B;AAAA,gBAEJ,CAAC,CAAA,GACH,IAAA;AAAA,gBAEH,cAAA,CAAe,kBAAkB,OAAA,IAAW,IAAA,uBAC1C,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,cAAc,CAAA,EACnC,QAAA,kBAAA,GAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO,CAAA,CAAA,EAAI,aAAA,CAAc,MAAA,GAAS,yBAAyB,CAAA,CAAA;AAAA,oBAC3D,SAAA,EAAW,OAAO,MAAM,CAAA;AAAA,oBACxB,KAAA,EAAO,aAAA,CACJ,KAAA,CAAM,yBAAyB,CAAA,CAC/B,GAAA,CAAI,CAAC,IAAA,KAAS,YAAA,CAAa,IAAI,CAAC,CAAA,CAChC,KAAK,IAAI;AAAA;AAAA,mBAEhB,CAAA,GACE,IAAA;AAAA,qCAEH,IAAA,EAAA,EAAK,SAAA,EAAW,OAAO,YAAY,CAAA,EAAG,YAAW,QAAA,EAC/C,QAAA,EAAA;AAAA,kBAAA,OAAA,KAAY,QAAA,mBACX,GAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACE,GAAG,UAAA;AAAA,sBACJ,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,UAAA,CAAW,SAAS,CAAA;AAAA,sBAE1D,wBAAc,MAAA,GAAS,IAAA,GAAO,YAAA,GAC7B,YAAA,CAAa,YAAY,CAAA,mBAEzB,GAAA;AAAA,wBAAC,MAAA;AAAA,wBAAA;AAAA,0BACC,SAAA,EAAW,OAAO,kBAAkB,CAAA;AAAA,0BACpC,EAAA,EAAI,cAAA;AAAA,0BAEH,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,mBAEJ,mBAEA,GAAA;AAAA,oBAAC,OAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,MAAA;AAAA,sBACJ,GAAG,UAAA;AAAA,sBACJ,WAAA;AAAA,sBACA,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,UAAA,CAAW,SAAS,CAAA;AAAA,sBAC1D,GAAI,WAAW,eAAe,CAAA,IAAK,QACpC,UAAA,CAAW,eAAe,KAAK,IAAA,GAC3B;AAAA,wBACE,IAAA,EAAM;AAAA,0BAER;AAAC;AAAA,mBACP;AAAA,kBAGD,MAAA,uBAAU,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,QAAQ,CAAA,EAAI,kBAAO,CAAA,GAAS;AAAA,iBAAA,EAC/D;AAAA;AAAA;AAAA;AACF;AAAA;AAAA,KACF;AAAA,IAEC,IAAA,IAAQ,aAAA,IAAiB,OAAA,IAAW,WAAA,mBACnC,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,KAAA,EACE,OAAO,aAAA,KAAkB,QAAA,IAAY,MAAM,OAAA,CAAQ,aAAa,IAC5D,aAAA,GACA,MAAA;AAAA,QAEN,OAAA;AAAA,QACA,YAAA,EACE,cAAA,CAAe,aAAa,CAAA,GAAI,aAAA,GAAgB,MAAA;AAAA,QAElD,IAAA;AAAA,QACA;AAAA;AAAA,KACF,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;;;;"}
|
|
@@ -106,9 +106,8 @@
|
|
|
106
106
|
background-color: var(--a2-background-color-strong, light-dark(var(--a2-color-neutral-20, #f9f9f9), var(--a2-color-neutral-800, #292929)));
|
|
107
107
|
}._fake-placeholder_2c5gw_123 {
|
|
108
108
|
color: var(--a2-foreground-color-subdued, light-dark(var(--a2-color-neutral-500, #707070), var(--a2-color-neutral-200, #c4c4c4)));
|
|
109
|
-
-
|
|
110
|
-
|
|
111
|
-
user-select: none;
|
|
109
|
+
-moz-user-select: none;
|
|
110
|
+
user-select: none;
|
|
112
111
|
}._no-clear-button_2c5gw_128 {
|
|
113
112
|
padding-inline-end: var(--a2-size-8, 2rem);
|
|
114
113
|
}._no-toggle-button_2c5gw_132 {
|
|
@@ -2,7 +2,7 @@ import { jsx, jsxs } from 'react/jsx-runtime';
|
|
|
2
2
|
import { createContext, useContext, forwardRef, useRef, useEffect, useCallback, useState, useId, useMemo, Children, useLayoutEffect } from 'react';
|
|
3
3
|
import { c as cx } from './index-De1g9FRV.js';
|
|
4
4
|
import { S as SvgKeyboardArrowDown } from './keyboard_arrow_down-C8WQ38p1.js';
|
|
5
|
-
import { I as Icon } from './Icon-
|
|
5
|
+
import { I as Icon } from './Icon-B5zwN7GD.js';
|
|
6
6
|
import { t as textStyles } from './Text.module-BcVew1AQ.js';
|
|
7
7
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
|
|
8
8
|
import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
@@ -461,4 +461,4 @@ const SideNav = Object.assign(
|
|
|
461
461
|
SideNav.displayName = "SideNav";
|
|
462
462
|
|
|
463
463
|
export { SideNav as S };
|
|
464
|
-
//# sourceMappingURL=SideNav-
|
|
464
|
+
//# sourceMappingURL=SideNav-DZRXOYHs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNav-DZRXOYHs.js","sources":["../src/components/SideNav/internal/utils.ts","../src/components/SideNav/SideNavContext.tsx","../src/components/SideNav/useSideNav.tsx","../src/components/SideNav/internal/SideNavLink.tsx","../src/components/SideNav/internal/SideNavContext.tsx","../src/components/SideNav/SideNavLink.tsx","../src/components/SideNav/SideNavCollapsible.tsx","../src/components/SideNav/SideNavGroup.tsx","../src/components/SideNav/internal/SideNavProvider.tsx","../src/components/SideNav/SideNav.tsx"],"sourcesContent":["import type { KeyboardEvent, RefObject } from \"react\";\nimport type { SideNavContextProps } from \"../SideNavContext\";\n\n/**\n * Handles keyboard navigation for SideNav components using arrow keys.\n *\n * This function manages focus movement between navigable elements in a SideNav,\n * providing circular navigation (wrapping from last to first and vice versa).\n * It updates tabindex attributes to maintain proper focus management and\n * prevents default browser behavior for arrow key navigation.\n *\n * @param e - The keyboard event that triggered the navigation\n * @param links - NodeList of all navigable elements in the SideNav\n * @param current - Ref object pointing to the currently focused element\n * @returns void\n */\nexport const sideNavKeyboardNavigation = (\n e: KeyboardEvent<HTMLAnchorElement | HTMLButtonElement>,\n links: SideNavContextProps[\"links\"],\n current: RefObject<HTMLAnchorElement | HTMLButtonElement>,\n) => {\n const currentIndex = Array.prototype.indexOf.call(links, current.current);\n\n switch (e.key) {\n case \"ArrowDown\":\n if (!links) return;\n e.preventDefault();\n links[currentIndex].setAttribute(\"tabindex\", \"-1\");\n if (currentIndex === links.length - 1) {\n links[0].setAttribute(\"tabindex\", \"0\");\n (links[0] as HTMLAnchorElement | HTMLButtonElement).focus();\n break;\n }\n links[currentIndex + 1].setAttribute(\"tabindex\", \"0\");\n (\n links[currentIndex + 1] as HTMLAnchorElement | HTMLButtonElement\n ).focus();\n break;\n case \"ArrowUp\":\n e.preventDefault();\n if (!links) return;\n links[currentIndex].setAttribute(\"tabindex\", \"-1\");\n if (currentIndex === 0) {\n links[links.length - 1].setAttribute(\"tabindex\", \"0\");\n (\n links[links.length - 1] as HTMLAnchorElement | HTMLButtonElement\n ).focus();\n break;\n }\n links[currentIndex - 1].setAttribute(\"tabindex\", \"0\");\n (\n links[currentIndex - 1] as HTMLAnchorElement | HTMLButtonElement\n ).focus();\n break;\n default:\n break;\n }\n};\n","import { createContext } from \"react\";\n\n/**\n * Context props for the SideNav component\n */\nexport type SideNavContextProps = {\n /**\n * List of navigable elements in the side navigation\n */\n links: NodeListOf<Element> | undefined;\n /**\n * Function to recalculate the list of navigable links\n */\n reCalculateLinks: () => void;\n /**\n * Set of currently active link IDs\n */\n activeIds: Set<string>;\n /**\n * Function to add an ID to the active set\n */\n addActiveId: (id: string) => void;\n /**\n * Function to remove an ID from the active set\n */\n removeActiveId: (id: string) => void;\n};\n\nexport const SideNavContext = createContext<SideNavContextProps | null>(null);\n","import { useContext } from \"react\";\nimport { SideNavContext } from \"./SideNavContext\";\n\n/**\n * Custom hook for accessing the SideNav context.\n * @returns The SideNav context with links, activeIds, and utility functions\n * @throws Error if used outside of a SideNav component\n */\nexport const useSideNav = () => {\n const context = useContext(SideNavContext);\n\n if (context == null) {\n throw new Error(\"useSideNav must be wrapped in <SideNav />\");\n }\n\n return context;\n};\n","import {\n type ComponentPropsWithoutRef,\n type KeyboardEvent,\n type MouseEvent,\n forwardRef,\n useRef,\n useEffect,\n} from \"react\";\nimport styles from \"../SideNav.module.scss\";\nimport { sideNavKeyboardNavigation } from \"./utils\";\nimport { useSideNav } from \"../useSideNav\";\n\n/**\n * Props for the SideNavLink component\n * @extends Omit<ComponentPropsWithoutRef<\"a\">, \"id\" | \"onClick\" | \"onKeyDown\" | \"onKeyUp\">\n */\nexport type SideNavLinkProps = Omit<\n ComponentPropsWithoutRef<\"a\">,\n \"id\" | \"onClick\" | \"onKeyDown\" | \"onKeyUp\"\n> & {\n /**\n * Unique identifier for the navigation link\n */\n id: string;\n /**\n * When true, marks the link as the current active page\n */\n active?: boolean;\n /**\n * When true, disables the link and prevents interaction\n */\n disabled?: boolean;\n /**\n * Function called when the link is clicked\n */\n onClick?: (\n e: MouseEvent<HTMLAnchorElement>,\n id: SideNavLinkProps[\"id\"],\n ) => void;\n /**\n * Function called when a key is pressed down on the link\n */\n onKeyDown?: (\n e: KeyboardEvent<HTMLAnchorElement>,\n id: SideNavLinkProps[\"id\"],\n ) => void;\n /**\n * Function called when a key is released on the link\n */\n onKeyUp?: (\n e: KeyboardEvent<HTMLAnchorElement>,\n id: SideNavLinkProps[\"id\"],\n ) => void;\n};\n\n/**\n * SideNavLink component for individual navigation links within a SideNav.\n *\n * Features:\n * - Individual navigation links with active state support\n * - Keyboard navigation integration with arrow keys\n * - Focus management and tabindex handling\n * - Accessible with proper ARIA attributes\n * - Click and keyboard event handling\n * - Disabled state support\n * - Automatic active state tracking through context\n *\n * @example\n * <SideNav.Link id=\"intro\" href=\"/intro\" active>\n * Introduction\n * </SideNav.Link>\n */\nexport const SideNavLink = forwardRef<HTMLLIElement, SideNavLinkProps>(\n (props, ref) => {\n const {\n className,\n children,\n href,\n id,\n active,\n onClick,\n onKeyDown,\n onKeyUp,\n style,\n disabled,\n ...rest\n } = props;\n const { links } = useSideNav();\n\n const linkRef = useRef<HTMLAnchorElement>(null);\n const { activeIds, addActiveId, removeActiveId } = useSideNav();\n\n useEffect(() => {\n if (!activeIds.has(id) && active) {\n addActiveId(id);\n return;\n }\n if (activeIds.has(id) && !active) {\n removeActiveId(id);\n }\n }, [active, activeIds, addActiveId, removeActiveId, id]);\n\n function onKeyDownHandler(e: KeyboardEvent<HTMLAnchorElement>) {\n sideNavKeyboardNavigation(e, links, linkRef);\n onKeyDown?.(e, id);\n }\n\n function onKeyUpHandler(e: KeyboardEvent<HTMLAnchorElement>) {\n if (disabled) return;\n if (e.code === \"Space\" || e.code === \"Enter\") {\n e.preventDefault();\n if (onClick) {\n e.currentTarget.click();\n }\n }\n\n onKeyUp?.(e, id);\n }\n\n function onClickHandler(e: MouseEvent<HTMLAnchorElement>) {\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n // find current item that has tabindex 0\n const current = Array.prototype.slice\n .call(links)\n .filter((child) => (child as HTMLElement).tabIndex === 0)[0];\n\n // remove above from tabbable\n if (current) current.setAttribute(\"tabindex\", \"-1\");\n\n // make label button tabbable\n linkRef.current?.setAttribute(\"tabindex\", \"0\");\n linkRef.current?.focus();\n\n onClick?.(e, id);\n }\n\n return (\n <li className={className} data-anv=\"sidenav-link\" style={style} ref={ref}>\n <a\n className={styles[\"sidenav-link\"]}\n aria-current={active ? \"page\" : undefined}\n href={href}\n ref={linkRef}\n onClick={onClickHandler}\n onKeyDown={onKeyDownHandler}\n onKeyUp={onKeyUpHandler}\n id={id}\n aria-disabled={disabled}\n tabIndex={active ? 0 : -1}\n {...rest}\n >\n {children}\n </a>\n </li>\n );\n },\n);\n\nSideNavLink.displayName = \"SideNavLink\";\n","import { createContext, useContext } from \"react\";\n\n/**\n * Interface for the side navigation context\n */\ninterface ISideNavContext {\n /**\n * Current location pathname for routing\n */\n location: string;\n /**\n * Function to update the current location\n */\n setLocation: (location: string) => void;\n}\n\nconst defaultContext = {\n location: \"\",\n setLocation: (_location: string) => {},\n};\n\nexport const SideNavContext: React.Context<ISideNavContext> =\n createContext(defaultContext);\n\n/**\n * Custom hook for accessing the SideNav context.\n * @returns The SideNav context with location and setLocation\n */\n\nexport const useSideNavContext = () => useContext(SideNavContext);\n","import {\n type SideNavLinkProps as CoreSideNavLinkProps,\n SideNavLink as CoreSideNavLink,\n} from \"./internal/SideNavLink\";\nimport { type Ref, forwardRef, useCallback } from \"react\";\nimport { useSideNavContext } from \"./internal/SideNavContext\";\n\n/**\n * Props for SideNavLink with routing support\n * @property {string} [href] - URL for the link (used when pathname is not provided)\n * @property {string} pathname - Pathname for client-side routing\n * @property {string} [search] - Optional search parameters for the URL\n * @property {boolean} [active] - When true, marks the link as the current active page\n * @property {boolean} [disabled] - When true, disables the link and prevents interaction\n * @extends CoreSideNavLinkProps\n */\ntype SideNavLinkWithRoutingProps = CoreSideNavLinkProps & {\n /**\n * Pathname for client-side routing\n */\n pathname: string;\n /**\n * Optional search parameters for the URL\n */\n search?: string;\n};\n\n/**\n * SideNavLink component with routing support\n */\nconst SideNavLinkWithRouting = forwardRef(\n (\n { href, pathname, search, onClick, ...rest }: SideNavLinkWithRoutingProps,\n ref: Ref<HTMLLIElement>,\n ) => {\n const { location, setLocation } = useSideNavContext();\n const to = pathname + (search ?? \"\");\n\n const handleClick = useCallback(\n (...args: Parameters<NonNullable<CoreSideNavLinkProps[\"onClick\"]>>) => {\n args[0].preventDefault();\n history.pushState(null, \"\", to);\n setLocation(to);\n return onClick?.(...args);\n },\n [onClick, to, setLocation],\n );\n\n return (\n <CoreSideNavLink\n href={pathname != null ? to : href}\n active={pathname === location}\n onClick={pathname != null ? handleClick : onClick}\n ref={ref}\n {...rest}\n />\n );\n },\n);\nSideNavLinkWithRouting.displayName = CoreSideNavLink.displayName;\n\nexport type SideNavLinkProps =\n | CoreSideNavLinkProps\n | SideNavLinkWithRoutingProps;\n\n/**\n * SideNavLink component for individual navigation links within a SideNav.\n *\n * Features:\n * - Individual navigation links with active state support\n * - Keyboard navigation integration with arrow keys\n * - Focus management and tabindex handling\n * - Accessible with proper ARIA attributes\n * - Click and keyboard event handling\n * - Disabled state support\n * - Automatic active state tracking through context\n * - Client-side routing support with pathname prop\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <SideNav.Link id=\"intro\" href=\"/intro\" active>\n * Introduction\n * </SideNav.Link>\n *\n * <SideNav.Link id=\"intro\" pathname=\"/intro\" active>\n * Introduction (with routing)\n * </SideNav.Link>\n */\nexport const SideNavLink = forwardRef(\n (rest: SideNavLinkProps, ref: Ref<HTMLLIElement>) => {\n if (\"pathname\" in rest) {\n return <SideNavLinkWithRouting ref={ref} {...rest} />;\n } else {\n return <CoreSideNavLink ref={ref} {...rest} />;\n }\n },\n);\nSideNavLink.displayName = CoreSideNavLink.displayName;\n","import cx from \"classnames\";\nimport {\n Children,\n type ComponentPropsWithoutRef,\n type KeyboardEvent,\n type MouseEvent,\n type ReactElement,\n forwardRef,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styles from \"./SideNav.module.scss\";\nimport ArrowDown from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_down.svg\";\nimport { Icon } from \"../Icon\";\nimport { sideNavKeyboardNavigation } from \"./internal/utils\";\nimport { useSideNav } from \"./useSideNav\";\n\n/**\n * Props for the SideNavCollapsible component\n * @extends Omit<ComponentPropsWithoutRef<\"li\">, \"onClick\">\n */\nexport type SideNavCollapsibleProps = Omit<\n ComponentPropsWithoutRef<\"li\">,\n \"onClick\"\n> & {\n /**\n * The label text displayed for the collapsible section\n */\n label: string;\n /**\n * Function called when the collapsible button is clicked\n */\n onClick?: ComponentPropsWithoutRef<\"button\">[\"onClick\"];\n /**\n * Function called when a key is pressed on the collapsible button\n */\n onKeyDown?: ComponentPropsWithoutRef<\"button\">[\"onKeyDown\"];\n /**\n * Initial expansion state for uncontrolled usage\n * @default false\n */\n defaultExpanded?: boolean;\n /**\n * Controlled expansion state\n */\n expanded?: boolean;\n};\n\n/**\n * SideNavCollapsible component for expandable navigation sections within a SideNav.\n *\n * Features:\n * - Expandable/collapsible navigation sections\n * - Controlled and uncontrolled expansion states\n * - Keyboard navigation with arrow keys for expansion\n * - Automatic expansion when child links are active\n * - Accessible with proper ARIA expanded states\n * - Visual indicators for active children\n * - Integration with SideNav keyboard navigation\n *\n * @example\n * <SideNav.Collapsible label=\"Components\">\n * <SideNav.Link id=\"button\" href=\"/components/button\">\n * Button\n * </SideNav.Link>\n * <SideNav.Link id=\"input\" href=\"/components/input\">\n * Input\n * </SideNav.Link>\n * </SideNav.Collapsible>\n */\nexport const SideNavCollapsible = forwardRef<\n HTMLLIElement,\n SideNavCollapsibleProps\n>((props, ref) => {\n const {\n className,\n children,\n label,\n onClick,\n onKeyDown,\n defaultExpanded = false,\n expanded: expandedControlled,\n ...rest\n } = props;\n const [expanded, setExpanded] = useState<boolean>(defaultExpanded);\n const [hasSelected, setHasSelected] = useState<boolean>(false);\n const sideNavGroupLabelRef = useRef<HTMLButtonElement>(null);\n const groupRef = useRef<HTMLUListElement>(null);\n const sideNavGroupClassNames = cx(styles[\"sidenav-collapsible\"], className);\n const { links, reCalculateLinks } = useSideNav();\n const groupId = useId();\n\n const setExpandedUncontrolled = (newState?: boolean) => {\n if (expandedControlled === undefined)\n setExpanded((prev) => {\n if (newState !== undefined) return newState;\n return !prev;\n });\n };\n\n useEffect(() => {\n if (expandedControlled !== undefined) {\n setExpanded(expandedControlled);\n }\n }, [expandedControlled]);\n const { activeIds } = useSideNav();\n\n const childIds: string[] = useMemo(\n () =>\n Children.map(children, (child) => (child as ReactElement).props)?.map(\n (item) => item.id,\n ) || [],\n [children],\n );\n\n function handleOnClick(e: MouseEvent<HTMLButtonElement>) {\n setExpandedUncontrolled();\n setTimeout(() => reCalculateLinks(), 0);\n\n // find current item that has tabindex 0\n const current = Array.prototype.slice\n .call(links)\n .filter((child) => (child as HTMLElement).tabIndex === 0)[0];\n\n // remove above from tabbable\n if (current) current.setAttribute(\"tabindex\", \"-1\");\n\n // make label button tabbable\n sideNavGroupLabelRef.current?.setAttribute(\"tabindex\", \"0\");\n sideNavGroupLabelRef.current?.focus();\n onClick?.(e);\n }\n\n function handleKeyDown(e: KeyboardEvent<HTMLButtonElement>) {\n sideNavKeyboardNavigation(e, links, sideNavGroupLabelRef);\n switch (e.key) {\n case \"ArrowRight\":\n setExpanded(true);\n setTimeout(() => reCalculateLinks(), 0);\n break;\n case \"ArrowLeft\":\n setExpanded(false);\n setTimeout(() => reCalculateLinks(), 0);\n break;\n\n default:\n break;\n }\n onKeyDown?.(e);\n }\n\n useLayoutEffect(() => {\n const hasActiveChildren = childIds.some((id) => activeIds.has(id));\n if (hasActiveChildren) {\n setExpandedUncontrolled(true);\n setHasSelected(true);\n setTimeout(() => {\n const selectedChild =\n groupRef.current?.querySelector(`[active='true']`);\n selectedChild?.setAttribute(\"tabindex\", \"0\");\n reCalculateLinks();\n }, 0);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (!activeIds.size || !childIds.some((id) => activeIds.has(id))) {\n setHasSelected(false);\n return;\n }\n setHasSelected(true);\n }, [activeIds, childIds]);\n\n return (\n <li\n ref={ref}\n data-anv=\"sidenav-collapsible\"\n {...rest}\n className={sideNavGroupClassNames}\n >\n <button\n aria-expanded={expanded}\n aria-controls={groupId}\n type=\"button\"\n tabIndex={-1}\n onClick={handleOnClick}\n ref={sideNavGroupLabelRef}\n className={cx(styles[\"sidenav-link\"], {\n [styles[\"has-indicator\"]]: hasSelected && !expanded,\n })}\n onKeyDown={handleKeyDown}\n >\n {label}\n <Icon className={styles[\"arrow\"]} inherit svg={ArrowDown} aria-hidden />\n </button>\n <ul\n id={groupId}\n ref={groupRef}\n className={cx(styles[\"group\"], !expanded && styles.hidden)}\n >\n {children}\n </ul>\n </li>\n );\n});\n\nSideNavCollapsible.displayName = \"SideNavCollapsible\";\n","import { type ComponentPropsWithoutRef, forwardRef, useId } from \"react\";\nimport textStyles from \"../Text/Text.module.scss\";\nimport styles from \"./SideNav.module.scss\";\nimport cx from \"classnames\";\n\n/**\n * Props for the SideNavGroup component\n * @extends ComponentPropsWithoutRef<\"li\">\n */\nexport type SideNavGroupProps = ComponentPropsWithoutRef<\"li\"> & {\n /**\n * The label text displayed for the navigation group\n */\n label: string;\n};\n\n/**\n * SideNavGroup component for grouping related navigation links within a SideNav.\n *\n * Features:\n * - Groups related navigation links with labels\n * - Accessible with proper ARIA labeling\n * - Semantic grouping for screen readers\n * - Consistent styling and spacing\n * - Unique ID generation for accessibility\n *\n * @example\n * <SideNav.Group label=\"Getting Started\">\n * <SideNav.Link id=\"intro\" href=\"/intro\">\n * Introduction\n * </SideNav.Link>\n * <SideNav.Link id=\"installation\" href=\"/installation\">\n * Installation\n * </SideNav.Link>\n * </SideNav.Group>\n */\nexport const SideNavGroup = forwardRef<HTMLLIElement, SideNavGroupProps>(\n (props, ref) => {\n const { children, label, ...rest } = props;\n\n const sideNavGroupClassNames = cx(styles[\"sidenav-group\"]);\n const groupLabelClassNames = cx(\n textStyles[\"eyebrow\"],\n styles[\"group-label\"],\n );\n\n const groupLabelId = useId();\n return (\n <li ref={ref} data-anv=\"sidenav-group\" {...rest}>\n <label id={groupLabelId} className={groupLabelClassNames}>\n {label}\n </label>\n <ul aria-labelledby={groupLabelId} className={sideNavGroupClassNames}>\n {children}\n </ul>\n </li>\n );\n },\n);\n\nSideNavGroup.displayName = \"SideNavGroup\";\n","import { type PropsWithChildren, useEffect, useState } from \"react\";\nimport { SideNavContext } from \"./SideNavContext\";\n\n/**\n * SideNavProvider component for managing routing state in SideNav components.\n *\n * Features:\n * - Provides routing context for SideNav components\n * - Manages current location state\n * - Enables client-side routing without page reloads\n * - Integrates with browser history API\n * - Context provider for child components\n *\n * @example\n * <SideNavProvider>\n * <SideNav>\n * <SideNav.Link pathname=\"/intro\">Introduction</SideNav.Link>\n * </SideNav>\n * </SideNavProvider>\n */\nexport const SideNavProvider = ({ children }: PropsWithChildren) => {\n const [location, setLocation] = useState(\"\");\n\n // Read the real pathname after mount instead of during the initial render so\n // server and client agree on the first render, avoiding a hydration mismatch.\n useEffect(() => {\n setLocation(window.location.pathname);\n }, []);\n\n const sideNavContext = {\n location,\n setLocation,\n };\n\n return (\n <SideNavContext.Provider value={sideNavContext}>\n {children}\n </SideNavContext.Provider>\n );\n};\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport type { LayoutUtilProps } from \"../../types\";\nimport { useMergeRefs } from \"../../hooks\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport styles from \"./SideNav.module.scss\";\nimport { SideNavLink } from \"./SideNavLink\";\nimport { SideNavCollapsible } from \"./SideNavCollapsible\";\nimport { SideNavGroup } from \"./SideNavGroup\";\nimport { SideNavProvider } from \"./internal/SideNavProvider\";\nimport type { DataTrackingId } from \"../../types\";\nimport { SideNavContext, type SideNavContextProps } from \"./SideNavContext\";\n\n/**\n * Props for the SideNav component\n * @extends ComponentPropsWithoutRef<\"nav\">\n * @extends LayoutUtilProps\n */\nexport type SideNavProps = ComponentPropsWithoutRef<\"nav\"> &\n LayoutUtilProps &\n DataTrackingId;\n\n/**\n * SideNav component for creating hierarchical navigation menus.\n *\n * Features:\n * - Hierarchical navigation structure with links, groups, and collapsible sections\n * - Keyboard navigation support with arrow keys and focus management\n * - Active state tracking for current page/section\n * - Accessible with proper ARIA roles and labels\n * - Automatic link recalculation for dynamic content\n * - Context provider for child components\n * - Layout utility props for positioning and spacing\n *\n * @example\n * <SideNav>\n * <SideNav.Group label=\"Getting Started\">\n * <SideNav.Link id=\"intro\" href=\"/intro\" active>\n * Introduction\n * </SideNav.Link>\n * <SideNav.Link id=\"installation\" href=\"/installation\">\n * Installation\n * </SideNav.Link>\n * </SideNav.Group>\n * <SideNav.Collapsible label=\"Components\">\n * <SideNav.Link id=\"button\" href=\"/components/button\">\n * Button\n * </SideNav.Link>\n * <SideNav.Link id=\"input\" href=\"/components/input\">\n * Input\n * </SideNav.Link>\n * </SideNav.Collapsible>\n * </SideNav>\n */\nexport const SideNav = Object.assign(\n forwardRef<HTMLElement, SideNavProps>(function SideNavInner(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const [activeIds, setActiveIds] = useState<Set<string>>(new Set());\n const { className, children, style, ...rest } = componentProps;\n\n const addActiveId = useCallback(\n (id: string) => {\n if (activeIds.has(id)) return;\n const newIds = new Set(activeIds);\n newIds.add(id);\n setActiveIds(newIds);\n },\n [activeIds],\n );\n\n const removeActiveId = useCallback(\n (id: string) => {\n if (!activeIds.has(id)) return;\n const newIds = new Set(activeIds);\n newIds.delete(id);\n setActiveIds(newIds);\n },\n [activeIds],\n );\n\n const sideNavRef = useRef<HTMLElement>(null);\n const [links, setLinks] = useState<SideNavContextProps[\"links\"]>();\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const reCalculateLinks = useCallback(() => {\n if (sideNavRef.current) {\n const items = sideNavRef.current.querySelectorAll(\n \"li[data-anv='sidenav-link'] a:not([aria-disabled='true']), li[data-anv='sidenav-collapsible'] button[aria-expanded]:not([aria-disabled='true'])\",\n );\n setLinks(items);\n }\n }, [sideNavRef]);\n\n useEffect(() => {\n reCalculateLinks();\n }, [reCalculateLinks]);\n\n const sidenavClassNames = cx([styles[\"sidenav\"]], className);\n\n const value = useMemo(\n () => ({\n links,\n reCalculateLinks,\n activeIds,\n addActiveId,\n removeActiveId,\n }),\n [links, activeIds, addActiveId, removeActiveId, reCalculateLinks],\n );\n\n return (\n <SideNavProvider>\n <SideNavContext.Provider value={value}>\n <nav\n ref={useMergeRefs([sideNavRef, ref])}\n className={sidenavClassNames}\n style={styleCombined}\n data-anv=\"sidenav\"\n {...rest}\n >\n <ul className={styles[\"root\"]}>{children}</ul>\n </nav>\n </SideNavContext.Provider>\n </SideNavProvider>\n );\n }),\n {\n /**\n * SideNavLink component for individual navigation links.\n *\n * Features:\n * - Individual navigation links with active state support\n * - Keyboard navigation integration with arrow keys\n * - Focus management and tabindex handling\n * - Accessible with proper ARIA attributes\n * - Click and keyboard event handling\n * - Disabled state support\n *\n * @example\n * <SideNav.Link id=\"intro\" href=\"/intro\" active>\n * Introduction\n * </SideNav.Link>\n */\n Link: SideNavLink,\n /**\n * SideNavCollapsible component for expandable navigation sections.\n *\n * Features:\n * - Expandable/collapsible navigation sections\n * - Controlled and uncontrolled expansion states\n * - Keyboard navigation with arrow keys for expansion\n * - Automatic expansion when child links are active\n * - Accessible with proper ARIA expanded states\n * - Visual indicators for active children\n *\n * @example\n * <SideNav.Collapsible label=\"Components\">\n * <SideNav.Link id=\"button\" href=\"/components/button\">\n * Button\n * </SideNav.Link>\n * <SideNav.Link id=\"input\" href=\"/components/input\">\n * Input\n * </SideNav.Link>\n * </SideNav.Collapsible>\n */\n Collapsible: SideNavCollapsible,\n /**\n * SideNavGroup component for grouping related navigation links.\n *\n * Features:\n * - Groups related navigation links with labels\n * - Accessible with proper ARIA labeling\n * - Semantic grouping for screen readers\n * - Consistent styling and spacing\n *\n * @example\n * <SideNav.Group label=\"Getting Started\">\n * <SideNav.Link id=\"intro\" href=\"/intro\">\n * Introduction\n * </SideNav.Link>\n * <SideNav.Link id=\"installation\" href=\"/installation\">\n * Installation\n * </SideNav.Link>\n * </SideNav.Group>\n */\n Group: SideNavGroup,\n },\n);\nSideNav.displayName = \"SideNav\";\n"],"names":["SideNavContext","SideNavLink","CoreSideNavLink","ArrowDown"],"mappings":"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"}
|
package/dist/SideNav.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { S as SideNav, S as default } from './SideNav-
|
|
1
|
+
export { S as SideNav, S as default } from './SideNav-DZRXOYHs.js';
|
|
2
2
|
//# sourceMappingURL=SideNav.js.map
|
package/dist/Skeleton.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Skeleton.js","sources":["../src/components/Skeleton/SkeletonCircle.tsx","../src/components/Skeleton/SkeletonPill.tsx","../src/components/Skeleton/SkeletonRectangle.tsx","../src/components/Skeleton/SkeletonText.tsx","../src/components/Skeleton/index.ts"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonCircle component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonCircleProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * The diameter of the circular skeleton in CSS units.\n * @default 32px\n */\n diameter?: string;\n /**\n * Enables the AI visual style with blue gradient colors.\n */\n ai?: boolean;\n };\n\n/**\n * SkeletonCircle component for displaying circular loading placeholders.\n *\n * Features:\n * - Circular skeleton placeholder with customizable diameter\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n *\n * @example\n * <Skeleton.Circle diameter=\"40px\" />\n *\n * <Skeleton.Circle\n * diameter=\"60px\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading avatar\"\n * />\n */\nexport const SkeletonCircle = forwardRef<HTMLDivElement, SkeletonCircleProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n diameter,\n ai,\n \"aria-label\": ariaLabel = \"Loading content\",\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"circle\"]],\n styles[\"shade\"],\n ai && styles[\"ai\"],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n \"--a2-inline-skeleton-diameter\": diameter,\n };\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-circle\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n />\n );\n },\n);\n\nSkeletonCircle.displayName = \"SkeletonCircle\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonPill component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonPillProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * The width of the pill skeleton in CSS units.\n */\n width?: string;\n /**\n * Enables the AI visual style with blue gradient colors.\n */\n ai?: boolean;\n };\n\n/**\n * SkeletonPill component for displaying pill-shaped loading placeholders.\n *\n * Features:\n * - Pill-shaped skeleton placeholder with customizable width\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n * - Large border radius for pill appearance\n * - Fixed height for consistent styling\n *\n * @example\n * <Skeleton.Pill width=\"120px\" />\n *\n * <Skeleton.Pill\n * width=\"8rem\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading tag\"\n * />\n */\nexport const SkeletonPill = forwardRef<HTMLDivElement, SkeletonPillProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n width,\n ai,\n \"aria-label\": ariaLabel = \"Loading content\",\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"pill\"]],\n styles[\"shade\"],\n ai && styles[\"ai\"],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n \"--a2-inline-skeleton-width\": width,\n };\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-pill\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n />\n );\n },\n);\n\nSkeletonPill.displayName = \"SkeletonPill\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonRectangle component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonRectangleProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * The height of the rectangular skeleton in CSS units.\n * @default 56px\n */\n height?: string;\n /**\n * Enables the AI visual style with blue gradient colors.\n */\n ai?: boolean;\n };\n\n/**\n * SkeletonRectangle component for displaying rectangular loading placeholders.\n *\n * Features:\n * - Rectangular skeleton placeholder with customizable height\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n * - Medium border radius for consistent styling\n *\n * @example\n * <Skeleton.Rectangle height=\"100px\" />\n *\n * <Skeleton.Rectangle\n * height=\"2rem\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading image\"\n * />\n */\nexport const SkeletonRectangle = forwardRef<\n HTMLDivElement,\n SkeletonRectangleProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n height,\n ai,\n \"aria-label\": ariaLabel = \"Loading content\",\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"rectangle\"]],\n styles[\"shade\"],\n ai && styles[\"ai\"],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n \"--a2-inline-skeleton-height\": height,\n };\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-rectangle\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n />\n );\n});\n\nSkeletonRectangle.displayName = \"SkeletonRectangle\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonText component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonTextProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * Enables the AI visual style with blue gradient colors.\n */\n ai?: boolean;\n } & (\n | {\n /**\n * Text variant for body text skeleton.\n * @default body\n */\n variant?: \"body\";\n /**\n * Number of text lines to display.\n * @default 1\n */\n rows?: number;\n }\n | {\n /**\n * Text variant for headline text skeleton.\n */\n variant?: \"headline\";\n /**\n * Rows prop is not available for headline variant.\n */\n rows?: never;\n }\n );\n\n/**\n * SkeletonText component for displaying text loading placeholders.\n *\n * Features:\n * - Text skeleton placeholder with body and headline variants\n * - Configurable number of rows for body variant\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n * - Different line heights for body vs headline variants\n * - Last line shorter for body variant to simulate natural text\n *\n * @example\n * <Skeleton.Text variant=\"body\" rows={3} />\n *\n * <Skeleton.Text\n * variant=\"headline\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading title\"\n * />\n */\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n \"aria-label\": ariaLabel = \"Loading content\",\n variant = \"body\",\n ai,\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"text\"]],\n [styles[variant]],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const ShaderClassName = cx(\n styles[\"line\"],\n styles[\"shade\"],\n ai && styles[\"ai\"],\n );\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-text\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n >\n {\"rows\" in rest ? (\n Array.from({ length: rest.rows ?? 1 }, (_, i) => i).map((i) => (\n <div key={`line-${i}`} className={ShaderClassName} />\n ))\n ) : (\n <div className={ShaderClassName} />\n )}\n </div>\n );\n },\n);\n\nSkeletonText.displayName = \"SkeletonText\";\n","import { SkeletonCircle } from \"./SkeletonCircle\";\nimport { SkeletonPill } from \"./SkeletonPill\";\nimport { SkeletonRectangle } from \"./SkeletonRectangle\";\nimport { SkeletonText } from \"./SkeletonText\";\n\nexport * from \"./SkeletonCircle\";\nexport * from \"./SkeletonPill\";\nexport * from \"./SkeletonRectangle\";\nexport * from \"./SkeletonText\";\n\nexport const Skeleton = Object.assign(\n {},\n {\n Circle: SkeletonCircle,\n Pill: SkeletonPill,\n Rectangle: SkeletonRectangle,\n Text: SkeletonText,\n },\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDO,MAAM,cAAA,GAAiB,UAAA;AAAA,EAC5B,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,SAAA;AAAA,MACA,QAAA;AAAA,MACA,EAAA;AAAA,MACA,cAAc,SAAA,GAAY,iBAAA;AAAA,MAC1B,KAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,kBAAA,GAAqB,EAAA;AAAA,MACzB,CAAC,MAAA,CAAO,UAAU,CAAC,CAAA;AAAA,MACnB,CAAC,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,MACjB,OAAO,OAAO,CAAA;AAAA,MACd,EAAA,IAAM,OAAO,IAAI,CAAA;AAAA,MACjB;AAAA,KACF;AAEA,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG,YAAA;AAAA,MACH,+BAAA,EAAiC;AAAA,KACnC;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,UAAA,EAAS,iBAAA;AAAA,QACT,IAAA,EAAK,aAAA;AAAA,QACL,WAAA,EAAU,MAAA;AAAA,QACV,SAAA,EAAW,kBAAA;AAAA,QACX,KAAA,EAAO,aAAA;AAAA,QACP,YAAA,EAAY,SAAA;AAAA,QACZ;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;;ACxCtB,MAAM,YAAA,GAAe,UAAA;AAAA,EAC1B,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,cAAc,SAAA,GAAY,iBAAA;AAAA,MAC1B,KAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,kBAAA,GAAqB,EAAA;AAAA,MACzB,CAAC,MAAA,CAAO,UAAU,CAAC,CAAA;AAAA,MACnB,CAAC,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,MACf,OAAO,OAAO,CAAA;AAAA,MACd,EAAA,IAAM,OAAO,IAAI,CAAA;AAAA,MACjB;AAAA,KACF;AAEA,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG,YAAA;AAAA,MACH,4BAAA,EAA8B;AAAA,KAChC;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,UAAA,EAAS,eAAA;AAAA,QACT,IAAA,EAAK,aAAA;AAAA,QACL,WAAA,EAAU,MAAA;AAAA,QACV,SAAA,EAAW,kBAAA;AAAA,QACX,KAAA,EAAO,aAAA;AAAA,QACP,YAAA,EAAY,SAAA;AAAA,QACZ;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;;ACzCpB,MAAM,iBAAA,GAAoB,UAAA,CAG/B,CAAC,KAAA,EAAO,GAAA,KAAQ;AAChB,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,MAAA;AAAA,IACA,EAAA;AAAA,IACA,cAAc,SAAA,GAAY,iBAAA;AAAA,IAC1B,KAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,cAAA;AAEJ,EAAA,MAAM,kBAAA,GAAqB,EAAA;AAAA,IACzB,CAAC,MAAA,CAAO,UAAU,CAAC,CAAA;AAAA,IACnB,CAAC,MAAA,CAAO,WAAW,CAAC,CAAA;AAAA,IACpB,OAAO,OAAO,CAAA;AAAA,IACd,EAAA,IAAM,OAAO,IAAI,CAAA;AAAA,IACjB;AAAA,GACF;AAEA,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,GAAG,KAAA;AAAA,IACH,GAAG,YAAA;AAAA,IACH,6BAAA,EAA+B;AAAA,GACjC;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,UAAA,EAAS,oBAAA;AAAA,MACT,IAAA,EAAK,aAAA;AAAA,MACL,WAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAW,kBAAA;AAAA,MACX,KAAA,EAAO,aAAA;AAAA,MACP,YAAA,EAAY,SAAA;AAAA,MACZ;AAAA;AAAA,GACF;AAEJ,CAAC;AAED,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;ACtBzB,MAAM,YAAA,GAAe,UAAA;AAAA,EAC1B,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,SAAA;AAAA,MACA,cAAc,SAAA,GAAY,iBAAA;AAAA,MAC1B,OAAA,GAAU,MAAA;AAAA,MACV,EAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,kBAAA,GAAqB,EAAA;AAAA,MACzB,CAAC,MAAA,CAAO,UAAU,CAAC,CAAA;AAAA,MACnB,CAAC,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,MACf,CAAC,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,MAChB;AAAA,KACF;AAEA,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,MAAM,eAAA,GAAkB,EAAA;AAAA,MACtB,OAAO,MAAM,CAAA;AAAA,MACb,OAAO,OAAO,CAAA;AAAA,MACd,EAAA,IAAM,OAAO,IAAI;AAAA,KACnB;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,UAAA,EAAS,eAAA;AAAA,QACT,IAAA,EAAK,aAAA;AAAA,QACL,WAAA,EAAU,MAAA;AAAA,QACV,SAAA,EAAW,kBAAA;AAAA,QACX,KAAA,EAAO,aAAA;AAAA,QACP,YAAA,EAAY,SAAA;AAAA,QACZ,GAAA;AAAA,QAEC,QAAA,EAAA,MAAA,IAAU,IAAA,GACT,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,IAAA,CAAK,IAAA,IAAQ,CAAA,EAAE,EAAG,CAAC,CAAA,EAAG,MAAM,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,qBACvD,GAAA,CAAC,KAAA,EAAA,EAAsB,SAAA,EAAW,eAAA,EAAA,EAAxB,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAgC,CACpD,CAAA,mBAED,GAAA,CAAC,KAAA,EAAA,EAAI,WAAW,eAAA,EAAiB;AAAA;AAAA,KAErC;AAAA,EAEJ;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;;AChHpB,MAAM,WAAW,MAAA,CAAO,MAAA;AAAA,EAC7B,EAAC;AAAA,EACD;AAAA,IACE,MAAA,EAAQ,cAAA;AAAA,IACR,IAAA,EAAM,YAAA;AAAA,IACN,SAAA,EAAW,iBAAA;AAAA,IACX,IAAA,EAAM;AAAA;AAEV;;;;"}
|
|
1
|
+
{"version":3,"file":"Skeleton.js","sources":["../src/components/Skeleton/SkeletonCircle.tsx","../src/components/Skeleton/SkeletonPill.tsx","../src/components/Skeleton/SkeletonRectangle.tsx","../src/components/Skeleton/SkeletonText.tsx","../src/components/Skeleton/index.ts"],"sourcesContent":["import { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport type { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonCircle component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonCircleProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * The diameter of the circular skeleton in CSS units.\n * @default 32px\n */\n diameter?: string;\n /**\n * Enables the AI visual style with blue gradient colors.\n */\n ai?: boolean;\n };\n\n/**\n * SkeletonCircle component for displaying circular loading placeholders.\n *\n * Features:\n * - Circular skeleton placeholder with customizable diameter\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n *\n * @example\n * <Skeleton.Circle diameter=\"40px\" />\n *\n * <Skeleton.Circle\n * diameter=\"60px\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading avatar\"\n * />\n */\nexport const SkeletonCircle = forwardRef<HTMLDivElement, SkeletonCircleProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n diameter,\n ai,\n \"aria-label\": ariaLabel = \"Loading content\",\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"circle\"]],\n styles[\"shade\"],\n ai && styles[\"ai\"],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n \"--a2-inline-skeleton-diameter\": diameter,\n };\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-circle\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n />\n );\n },\n);\n\nSkeletonCircle.displayName = \"SkeletonCircle\";\n","import { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport type { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonPill component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonPillProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * The width of the pill skeleton in CSS units.\n */\n width?: string;\n /**\n * Enables the AI visual style with blue gradient colors.\n */\n ai?: boolean;\n };\n\n/**\n * SkeletonPill component for displaying pill-shaped loading placeholders.\n *\n * Features:\n * - Pill-shaped skeleton placeholder with customizable width\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n * - Large border radius for pill appearance\n * - Fixed height for consistent styling\n *\n * @example\n * <Skeleton.Pill width=\"120px\" />\n *\n * <Skeleton.Pill\n * width=\"8rem\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading tag\"\n * />\n */\nexport const SkeletonPill = forwardRef<HTMLDivElement, SkeletonPillProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n width,\n ai,\n \"aria-label\": ariaLabel = \"Loading content\",\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"pill\"]],\n styles[\"shade\"],\n ai && styles[\"ai\"],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n \"--a2-inline-skeleton-width\": width,\n };\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-pill\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n />\n );\n },\n);\n\nSkeletonPill.displayName = \"SkeletonPill\";\n","import { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport type { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonRectangle component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonRectangleProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * The height of the rectangular skeleton in CSS units.\n * @default 56px\n */\n height?: string;\n /**\n * Enables the AI visual style with blue gradient colors.\n */\n ai?: boolean;\n };\n\n/**\n * SkeletonRectangle component for displaying rectangular loading placeholders.\n *\n * Features:\n * - Rectangular skeleton placeholder with customizable height\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n * - Medium border radius for consistent styling\n *\n * @example\n * <Skeleton.Rectangle height=\"100px\" />\n *\n * <Skeleton.Rectangle\n * height=\"2rem\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading image\"\n * />\n */\nexport const SkeletonRectangle = forwardRef<\n HTMLDivElement,\n SkeletonRectangleProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n height,\n ai,\n \"aria-label\": ariaLabel = \"Loading content\",\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"rectangle\"]],\n styles[\"shade\"],\n ai && styles[\"ai\"],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n \"--a2-inline-skeleton-height\": height,\n };\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-rectangle\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n />\n );\n});\n\nSkeletonRectangle.displayName = \"SkeletonRectangle\";\n","import { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport type { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonText component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonTextProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * Enables the AI visual style with blue gradient colors.\n */\n ai?: boolean;\n } & (\n | {\n /**\n * Text variant for body text skeleton.\n * @default body\n */\n variant?: \"body\";\n /**\n * Number of text lines to display.\n * @default 1\n */\n rows?: number;\n }\n | {\n /**\n * Text variant for headline text skeleton.\n */\n variant?: \"headline\";\n /**\n * Rows prop is not available for headline variant.\n */\n rows?: never;\n }\n );\n\n/**\n * SkeletonText component for displaying text loading placeholders.\n *\n * Features:\n * - Text skeleton placeholder with body and headline variants\n * - Configurable number of rows for body variant\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n * - Different line heights for body vs headline variants\n * - Last line shorter for body variant to simulate natural text\n *\n * @example\n * <Skeleton.Text variant=\"body\" rows={3} />\n *\n * <Skeleton.Text\n * variant=\"headline\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading title\"\n * />\n */\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n \"aria-label\": ariaLabel = \"Loading content\",\n variant = \"body\",\n ai,\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"text\"]],\n [styles[variant]],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const ShaderClassName = cx(\n styles[\"line\"],\n styles[\"shade\"],\n ai && styles[\"ai\"],\n );\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-text\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n >\n {\"rows\" in rest ? (\n Array.from({ length: rest.rows ?? 1 }, (_, i) => i).map((i) => (\n <div key={`line-${i}`} className={ShaderClassName} />\n ))\n ) : (\n <div className={ShaderClassName} />\n )}\n </div>\n );\n },\n);\n\nSkeletonText.displayName = \"SkeletonText\";\n","import { SkeletonCircle } from \"./SkeletonCircle\";\nimport { SkeletonPill } from \"./SkeletonPill\";\nimport { SkeletonRectangle } from \"./SkeletonRectangle\";\nimport { SkeletonText } from \"./SkeletonText\";\n\nexport * from \"./SkeletonCircle\";\nexport * from \"./SkeletonPill\";\nexport * from \"./SkeletonRectangle\";\nexport * from \"./SkeletonText\";\n\nexport const Skeleton = Object.assign(\n {},\n {\n Circle: SkeletonCircle,\n Pill: SkeletonPill,\n Rectangle: SkeletonRectangle,\n Text: SkeletonText,\n },\n);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner-B7tTWcP6.js","sources":["../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useMergeRefs } from \"../../hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./Spinner.module.scss\";\n\n/**\n * Props for the Spinner component\n * @extends ComponentPropsWithoutRef<\"span\">\n */\nexport type SpinnerProps = ComponentPropsWithoutRef<\"span\"> & {\n /**\n * When true, the spinner inherits the current text color instead of using the default primary background color\n */\n inherit?: boolean;\n\n /**\n * The size of the spinner.\n * @default medium\n */\n size?: \"small\" | \"medium\" | \"large\";\n};\n\n/**\n * A loading spinner component that displays an animated circular indicator.\n *\n * The Spinner component provides a visual indication that content is loading or processing.\n * It renders as a circular animation that continuously rotates to show activity.\n *\n * Features:\n * - Animated circular loading indicator\n * - Configurable color inheritance\n * - Accessible with proper ARIA attributes\n * - Customizable styling through className and style props\n * - Forwarded ref support\n *\n * @example\n * <Spinner />\n *\n * <Spinner inherit />\n */\nexport const Spinner = forwardRef<HTMLSpanElement, SpinnerProps>(\n (props, ref) => {\n const { className, inherit, size = \"medium\", ...rest } = props;\n\n const containerRef = useRef<HTMLSpanElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n // Merge the forwarded ref with our internal ref\n const mergedRef = useMergeRefs([containerRef, ref]);\n\n useEffect(() => {\n let rafId: number;\n let lastWidth = 0;\n\n const updateWidth = () => {\n if (containerRef.current) {\n const width = containerRef.current.offsetWidth;\n if (width !== lastWidth) {\n setContainerWidth(width);\n lastWidth = width;\n }\n }\n };\n\n const continuousUpdate = () => {\n updateWidth();\n rafId = requestAnimationFrame(continuousUpdate);\n };\n\n // Initial measurement\n updateWidth();\n\n // Set up ResizeObserver for efficiency when not animating\n const resizeObserver = new ResizeObserver(updateWidth);\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n // Also run continuous updates to catch CSS transitions\n rafId = requestAnimationFrame(continuousUpdate);\n\n return () => {\n resizeObserver.disconnect();\n cancelAnimationFrame(rafId);\n };\n }, []);\n\n const classNames = cx(styles[\"spinner\"], className, {\n [styles[\"inherit\"]]: inherit,\n [styles[\"size-small\"]]: size === \"small\",\n [styles[\"size-medium\"]]: size === \"medium\",\n [styles[\"size-large\"]]: size === \"large\",\n });\n\n // Calculate strokeWidth using sqrt((width - 8px) / 2) - use direct value for smooth animation\n const strokeWidth =\n containerWidth > 0 ? Math.sqrt((containerWidth - 8) / 2) : 2;\n\n // Keep radius consistent - let the stroke width be the variable part\n // Use a fixed radius that gives good proportions\n const radius = 10;\n\n return (\n <span\n data-anv=\"spinner\"\n className={classNames}\n ref={mergedRef}\n role=\"status\"\n {...rest}\n >\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle\n className={styles[\"track\"]}\n cx=\"12\"\n cy=\"12\"\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n vectorEffect=\"non-scaling-stroke\"\n stroke=\"currentColor\"\n shapeRendering=\"geometricPrecision\"\n />\n <path\n className={styles[\"arc\"]}\n d={`M${12 + radius} 12a${radius} ${radius} 0 1 0-${radius * 2} 0`}\n fill=\"none\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n stroke=\"currentColor\"\n shapeRendering=\"geometricPrecision\"\n >\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 12 12\"\n to=\"360 12 12\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </svg>\n </span>\n );\n },\n);\n\nSpinner.displayName = \"Spinner\";\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Spinner-B7tTWcP6.js","sources":["../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useMergeRefs } from \"../../hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./Spinner.module.scss\";\n\n/**\n * Props for the Spinner component\n * @extends ComponentPropsWithoutRef<\"span\">\n */\nexport type SpinnerProps = ComponentPropsWithoutRef<\"span\"> & {\n /**\n * When true, the spinner inherits the current text color instead of using the default primary background color\n */\n inherit?: boolean;\n\n /**\n * The size of the spinner.\n * @default medium\n */\n size?: \"small\" | \"medium\" | \"large\";\n};\n\n/**\n * A loading spinner component that displays an animated circular indicator.\n *\n * The Spinner component provides a visual indication that content is loading or processing.\n * It renders as a circular animation that continuously rotates to show activity.\n *\n * Features:\n * - Animated circular loading indicator\n * - Configurable color inheritance\n * - Accessible with proper ARIA attributes\n * - Customizable styling through className and style props\n * - Forwarded ref support\n *\n * @example\n * <Spinner />\n *\n * <Spinner inherit />\n */\nexport const Spinner = forwardRef<HTMLSpanElement, SpinnerProps>(\n (props, ref) => {\n const { className, inherit, size = \"medium\", ...rest } = props;\n\n const containerRef = useRef<HTMLSpanElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n // Merge the forwarded ref with our internal ref\n const mergedRef = useMergeRefs([containerRef, ref]);\n\n useEffect(() => {\n let rafId: number;\n let lastWidth = 0;\n\n const updateWidth = () => {\n if (containerRef.current) {\n const width = containerRef.current.offsetWidth;\n if (width !== lastWidth) {\n setContainerWidth(width);\n lastWidth = width;\n }\n }\n };\n\n const continuousUpdate = () => {\n updateWidth();\n rafId = requestAnimationFrame(continuousUpdate);\n };\n\n // Initial measurement\n updateWidth();\n\n // Set up ResizeObserver for efficiency when not animating\n const resizeObserver = new ResizeObserver(updateWidth);\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n // Also run continuous updates to catch CSS transitions\n rafId = requestAnimationFrame(continuousUpdate);\n\n return () => {\n resizeObserver.disconnect();\n cancelAnimationFrame(rafId);\n };\n }, []);\n\n const classNames = cx(styles[\"spinner\"], className, {\n [styles[\"inherit\"]]: inherit,\n [styles[\"size-small\"]]: size === \"small\",\n [styles[\"size-medium\"]]: size === \"medium\",\n [styles[\"size-large\"]]: size === \"large\",\n });\n\n // Calculate strokeWidth using sqrt((width - 8px) / 2) - use direct value for smooth animation\n const strokeWidth =\n containerWidth > 0 ? Math.sqrt((containerWidth - 8) / 2) : 2;\n\n // Keep radius consistent - let the stroke width be the variable part\n // Use a fixed radius that gives good proportions\n const radius = 10;\n\n return (\n <span\n data-anv=\"spinner\"\n className={classNames}\n ref={mergedRef}\n role=\"status\"\n {...rest}\n >\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle\n className={styles[\"track\"]}\n cx=\"12\"\n cy=\"12\"\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n vectorEffect=\"non-scaling-stroke\"\n stroke=\"currentColor\"\n shapeRendering=\"geometricPrecision\"\n />\n <path\n className={styles[\"arc\"]}\n d={`M${12 + radius} 12a${radius} ${radius} 0 1 0-${radius * 2} 0`}\n fill=\"none\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n stroke=\"currentColor\"\n shapeRendering=\"geometricPrecision\"\n >\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 12 12\"\n to=\"360 12 12\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </svg>\n </span>\n );\n },\n);\n\nSpinner.displayName = \"Spinner\";\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SrOnly-pnf8ajnh.js","sources":["../src/components/SrOnly/SrOnly.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef } from \"react\";\nimport styles from \"./SrOnly.module.scss\";\nimport cx from \"classnames\";\n\n/**\n * Screen reader only component for providing accessible content that is visually hidden.\n *\n * Features:\n * - Visually hidden content that remains accessible to screen readers\n * - Preserves all standard span element functionality and attributes\n * - Maintains proper semantic structure\n * - Essential for accessibility compliance\n *\n * @example\n * <div>\n * <span aria-hidden=\"true\">$100</span>\n * <SrOnly>One hundred dollars</SrOnly>\n * </div>\n */\nexport const SrOnly = (props: ComponentPropsWithoutRef<\"span\">) => {\n const { className, ...rest } = props;\n const classNames = cx(styles[\"sr-only\"], className);\n return <span data-anv=\"sr-only\" className={classNames} {...rest} />;\n};\n"],"names":[],"mappings":";;;;;;;AAmBO,MAAM,MAAA,GAAS,CAAC,KAAA,KAA4C;AACjE,EAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,GAAI,KAAA;AAC/B,EAAA,MAAM,UAAA,GAAa,EAAA,CAAG,MAAA,CAAO,SAAS,GAAG,SAAS,CAAA;AAClD,EAAA,2BAAQ,MAAA,EAAA,EAAK,UAAA,EAAS,WAAU,SAAA,EAAW,UAAA,EAAa,GAAG,IAAA,EAAM,CAAA;AACnE;;;;"}
|
|
1
|
+
{"version":3,"file":"SrOnly-pnf8ajnh.js","sources":["../src/components/SrOnly/SrOnly.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef } from \"react\";\nimport styles from \"./SrOnly.module.scss\";\nimport cx from \"classnames\";\n\n/**\n * Screen reader only component for providing accessible content that is visually hidden.\n *\n * Features:\n * - Visually hidden content that remains accessible to screen readers\n * - Preserves all standard span element functionality and attributes\n * - Maintains proper semantic structure\n * - Essential for accessibility compliance\n *\n * @example\n * <div>\n * <span aria-hidden=\"true\">$100</span>\n * <SrOnly>One hundred dollars</SrOnly>\n * </div>\n */\nexport const SrOnly = (props: ComponentPropsWithoutRef<\"span\">) => {\n const { className, ...rest } = props;\n const classNames = cx(styles[\"sr-only\"], className);\n return <span data-anv=\"sr-only\" className={classNames} {...rest} />;\n};\n"],"names":[],"mappings":";;;;;;;AAmBO,MAAM,MAAA,GAAS,CAAC,KAAA,KAA4C;AACjE,EAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,GAAI,KAAA;AAC/B,EAAA,MAAM,UAAA,GAAa,EAAA,CAAG,MAAA,CAAO,SAAS,GAAG,SAAS,CAAA;AAClD,EAAA,2BAAQ,MAAA,EAAA,EAAK,UAAA,EAAS,WAAU,SAAA,EAAW,UAAA,EAAa,GAAG,IAAA,EAAM,CAAA;AACnE;;;;"}
|
|
@@ -2,13 +2,13 @@ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
|
2
2
|
import { createContext, forwardRef, useContext, useRef, useState, useEffect, useMemo } from 'react';
|
|
3
3
|
import { c as cx } from './index-De1g9FRV.js';
|
|
4
4
|
import { S as SvgCheck } from './check-Cf67OWrZ.js';
|
|
5
|
-
import { I as Icon } from './Icon-
|
|
5
|
+
import { I as Icon } from './Icon-B5zwN7GD.js';
|
|
6
6
|
import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
7
7
|
import { e as DurationSlow } from './primitive-BXgYQTTw.js';
|
|
8
8
|
import { Overflow } from './Overflow.js';
|
|
9
9
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
|
|
10
10
|
import { m as motion } from './proxy-DEehATlA.js';
|
|
11
|
-
import { B as Button } from './Button-
|
|
11
|
+
import { B as Button } from './Button-Dwh_Nd4l.js';
|
|
12
12
|
import { useTrackingId } from './useTrackingId.js';
|
|
13
13
|
|
|
14
14
|
import './Stepper.css';const StepperContext = createContext({
|
|
@@ -309,7 +309,7 @@ const StepperNextButton = forwardRef((props, ref) => {
|
|
|
309
309
|
};
|
|
310
310
|
const onClickHandler = (e) => {
|
|
311
311
|
const onClickResult = onClick?.(e);
|
|
312
|
-
if (onClickResult !== void 0 &&
|
|
312
|
+
if (onClickResult !== void 0 && onClickResult && onClickResult instanceof Promise) {
|
|
313
313
|
onClickResult.then((result) => {
|
|
314
314
|
if (result === false) return;
|
|
315
315
|
proceedToNextStep();
|
|
@@ -627,4 +627,4 @@ const Stepper = Object.assign(
|
|
|
627
627
|
Stepper.displayName = "Stepper";
|
|
628
628
|
|
|
629
629
|
export { Stepper as S };
|
|
630
|
-
//# sourceMappingURL=Stepper-
|
|
630
|
+
//# sourceMappingURL=Stepper-BX_gDWLE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stepper-BX_gDWLE.js","sources":["../src/components/Stepper/internal/StepperContext.ts","../src/components/Stepper/StepperList.tsx","../src/components/Stepper/StepperStep.tsx","../src/components/Stepper/StepperPanel.tsx","../src/components/Stepper/StepperFinalPanel.tsx","../src/components/Stepper/StepperNextButton.tsx","../src/components/Stepper/StepperPrevButton.tsx","../src/components/Stepper/Stepper.tsx"],"sourcesContent":["import { type Dispatch, type SetStateAction, createContext } from \"react\";\n\nexport type StepperContextProps = {\n current: number;\n setCurrent: Dispatch<SetStateAction<number>>;\n currentId: string;\n setCurrentId: Dispatch<SetStateAction<string>>;\n focus: number;\n setFocus: Dispatch<SetStateAction<number>>;\n onComplete?: () => void;\n items?: NodeListOf<HTMLElement>;\n allCompleted?: boolean;\n setAllCompleted?: Dispatch<SetStateAction<boolean>>;\n allowNavigateToPrevStep?: boolean;\n};\n\nexport const StepperContext = createContext<StepperContextProps>({\n current: 0,\n currentId: \"\",\n focus: 0,\n setFocus: () => undefined,\n setCurrent: () => undefined,\n setCurrentId: () => undefined,\n});\n","import { type ComponentPropsWithoutRef, forwardRef, useContext } from \"react\";\nimport cx from \"classnames\";\n\nimport { StepperContext } from \"./internal/StepperContext\";\n\nimport styles from \"./StepperList.module.scss\";\n\n/**\n * Props for the StepperList component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type StepperListProps = ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Container component for organizing and displaying stepper steps.\n *\n * Features:\n * - Groups multiple stepper steps together\n * - Displays current step label\n * - Responsive design with mobile-friendly layout\n * - Accessible with proper ARIA roles\n * - Automatic step organization\n * - Visual step indicators\n * - Context-based current step display\n * - Flexible layout with CSS Grid/Flexbox\n * - Container queries for responsive behavior\n *\n * @example\n * <Stepper.List>\n * <Stepper.Step controls=\"step1\">Step 1</Stepper.Step>\n * <Stepper.Step controls=\"step2\">Step 2</Stepper.Step>\n * <Stepper.Step controls=\"step3\">Step 3</Stepper.Step>\n * </Stepper.List>\n */\nexport const StepperList = forwardRef<HTMLDivElement, StepperListProps>(\n (props, ref) => {\n const { className, children, onKeyDown, ...rest } = props;\n const { current, items } = useContext(StepperContext);\n\n const tabListClassNames = cx(styles[\"stepper-list\"], className);\n const currentLabel =\n items?.[current].querySelectorAll(\"span\")[1].textContent;\n\n return (\n <div\n {...rest}\n className={tabListClassNames}\n data-anv=\"stepper-list\"\n ref={ref}\n role=\"tablist\"\n >\n <div className={styles[\"stepper-steps\"]}>{children}</div>\n <span className={styles.label}>{currentLabel}</span>\n </div>\n );\n },\n);\n\nStepperList.displayName = \"StepperList\";\n","import {\n forwardRef,\n useContext,\n type MouseEvent,\n useRef,\n type ComponentPropsWithoutRef,\n useEffect,\n useState,\n type KeyboardEvent,\n} from \"react\";\nimport cx from \"classnames\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\n\nimport { Icon } from \"../Icon\";\nimport { StepperContext } from \"./internal/StepperContext\";\nimport { useMergeRefs } from \"../../hooks\";\n\nimport styles from \"./StepperStep.module.scss\";\n\n/**\n * Props for the StepperStep component\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type StepperStepProps = Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"onClick\" | \"disabled\"\n> & {\n /**\n * ID of the panel that this step is controlling.\n * Must match the id prop of the corresponding Stepper.Panel.\n */\n controls: string;\n\n /**\n * Called when the step is clicked.\n * @param e Mouse event object\n * @param index Index of the step in the stepper\n */\n onClick?: (e: MouseEvent<HTMLButtonElement>, index?: number) => void;\n};\n\n/**\n * Individual step component for the Stepper.\n *\n * Features:\n * - Visual progress indicator with animated bar\n * - Check icon for completed steps\n * - Keyboard navigation support\n * - Accessible with proper ARIA attributes\n * - Click handling for step navigation\n * - Visual states for current, completed, and future steps\n * - Responsive design with mobile-friendly layout\n * - Focus management for keyboard users\n * - Custom styling support\n *\n * @example\n * <Stepper.Step controls=\"step1\">\n * Personal Information\n * </Stepper.Step>\n *\n * @example\n * <Stepper.Step\n * controls=\"step2\"\n * onClick={(e, index) => console.log(`Clicked step ${index}`)}\n * >\n * Contact Details\n * </Stepper.Step>\n */\nexport const StepperStep = forwardRef<HTMLButtonElement, StepperStepProps>(\n (props, ref) => {\n const stepRef = useRef<HTMLButtonElement>(null);\n const {\n current,\n items,\n setCurrent,\n focus,\n setFocus,\n allCompleted,\n allowNavigateToPrevStep,\n } = useContext(StepperContext);\n const {\n onClick,\n children,\n onFocus,\n onKeyDown,\n controls,\n className,\n \"aria-label\": ariaLabel,\n ...rest\n } = props;\n\n const index = useRef<number>();\n const [selected, setSelected] = useState(false);\n const [completed, setCompleted] = useState(\n // Below is to be used for custom overriding\n // completed state for a step\n // Check Stepper.stories.tsx#103 for the use case\n stepRef.current?.getAttribute(\"data-completed\") === \"true\"\n ? true\n : undefined,\n );\n\n useEffect(() => {\n if (!items) return;\n index.current = Array.prototype.indexOf.call(items, stepRef.current);\n\n setCompleted(index.current < current);\n setSelected(index.current === current);\n }, [current, items]);\n\n const stepClassNames = cx(styles[\"stepper-step\"], className, {\n [styles[\"can-navigate\"]]: allowNavigateToPrevStep,\n [styles[\"all-completed\"]]: allCompleted,\n });\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e, index.current);\n if (\n !allowNavigateToPrevStep ||\n selected ||\n index.current === undefined ||\n !items ||\n index.current > current\n ) {\n return;\n }\n setCurrent(index.current ?? 0);\n setFocus(index.current);\n items[index.current].focus();\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n const focusableItems = Array.prototype.filter.call(\n items,\n (item) =>\n item.getAttribute(\"data-completed\") === \"true\" ||\n item.getAttribute(\"aria-selected\") === \"true\",\n );\n const prevFocus = focus - 1;\n const nextFocus = focus + 1;\n switch (e.code) {\n case \"Enter\":\n case \"Space\":\n e.preventDefault();\n setCurrent(focus);\n break;\n case \"ArrowRight\":\n e.preventDefault();\n if (nextFocus === focusableItems.length) {\n setFocus(0);\n focusableItems[0].focus();\n focusableItems[0].setAttribute(\"tabindex\", \"0\");\n stepRef.current?.setAttribute(\"tabindex\", \"-1\");\n return;\n }\n stepRef.current?.setAttribute(\"tabindex\", \"-1\");\n setFocus(nextFocus);\n focusableItems[nextFocus].focus();\n focusableItems[nextFocus].setAttribute(\"tabindex\", \"0\");\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n if (focus === 0) {\n const lastItemIndex = focusableItems.length - 1;\n setFocus(lastItemIndex);\n focusableItems[lastItemIndex].focus();\n focusableItems[lastItemIndex].setAttribute(\"tabindex\", \"0\");\n stepRef.current?.setAttribute(\"tabindex\", \"-1\");\n return;\n }\n stepRef.current?.setAttribute(\"tabindex\", \"-1\");\n setFocus(prevFocus);\n focusableItems[prevFocus].focus();\n focusableItems[prevFocus].setAttribute(\"tabindex\", \"0\");\n break;\n }\n };\n\n // Extract text content from children for aria-label fallback\n const childrenText =\n typeof children === \"string\"\n ? children\n : typeof children === \"number\"\n ? String(children)\n : undefined;\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n data-anv=\"stepper-step\"\n className={stepClassNames}\n aria-selected={selected}\n aria-controls={controls}\n aria-label={childrenText || ariaLabel}\n tabIndex={allowNavigateToPrevStep && selected ? 0 : -1}\n data-completed={completed}\n onClick={onClickHandler}\n onKeyDown={allowNavigateToPrevStep ? onKeyDownHandler : onKeyDown}\n {...rest}\n ref={useMergeRefs([stepRef, ref])}\n >\n <span className={styles.bar} />\n <span className={styles.label}>\n <span className={styles.circle}>\n <Icon svg={Check} inherit aria-hidden />\n </span>\n\n {children}\n </span>\n </button>\n );\n },\n);\n\nStepperStep.displayName = \"StepperStep\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useContext,\n useEffect,\n} from \"react\";\nimport cx from \"classnames\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport { motion } from \"motion/react\";\n\nimport type { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { Overflow } from \"../Overflow\";\nimport { StepperContext } from \"./internal/StepperContext\";\n\nimport styles from \"./StepperPanel.module.scss\";\n\n/**\n * Props for the StepperPanel component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type StepperPanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps & {\n /**\n * Unique identifier for the panel.\n * Must match the controls prop of the corresponding Stepper.Step.\n */\n id: string;\n };\n\n/**\n * Content panel component for displaying step content in the Stepper.\n *\n * Features:\n * - Displays content for the current step only\n * - Smooth fade-in/fade-out animations\n * - Automatic overflow handling with scroll support\n * - Accessible with proper ARIA roles\n * - Layout utilities for positioning and spacing\n * - Motion animations for smooth transitions\n * - Focus management for keyboard navigation\n * - Responsive design with flexible layout\n * - Context-based visibility control\n *\n * @example\n * <Stepper.Panel id=\"step1\">\n * <h2>Personal Information</h2>\n * <form>\n * <label htmlFor=\"name\">Name:</label>\n * <input id=\"name\" type=\"text\" />\n * </form>\n * </Stepper.Panel>\n *\n * @example\n * <Stepper.Panel id=\"step2\" className=\"custom-panel\">\n * <div className=\"step-content\">\n * <h2>Contact Details</h2>\n * <p>Please provide your contact information.</p>\n * </div>\n * </Stepper.Panel>\n */\nexport const StepperPanel = forwardRef<HTMLDivElement, StepperPanelProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { id, className, style, children, ...rest } = componentProps;\n const { current, items, allCompleted, setCurrentId } =\n useContext(StepperContext);\n\n const currentId = items?.[current].getAttribute(\"aria-controls\");\n const isCurrent = currentId === id;\n\n useEffect(() => {\n if (isCurrent && !allCompleted) {\n setCurrentId(currentId ?? \"\");\n }\n }, [allCompleted, isCurrent, currentId, setCurrentId]);\n\n const tabPanelClassNames = cx(styles[\"stepper-panel\"], className);\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n if (isCurrent && !allCompleted) {\n return (\n <motion.div\n style={styleCombined}\n className={tabPanelClassNames}\n transition={{\n opacity: {\n duration:\n +core.primitive.DurationSlow.value.replace(\"ms\", \"\") / 1000,\n },\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n layout\n {...rest}\n role=\"tabpanel\"\n data-anv=\"stepper-panel\"\n id={id}\n ref={ref}\n >\n <Overflow flexGrow={1}>{children}</Overflow>\n </motion.div>\n );\n }\n return <></>;\n },\n);\n\nStepperPanel.displayName = \"StepperPanel\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useContext,\n useEffect,\n} from \"react\";\nimport cx from \"classnames\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport { motion } from \"motion/react\";\n\nimport type { LayoutUtilProps } from \"../../types\";\nimport { Overflow } from \"../Overflow\";\nimport { StepperContext } from \"./internal/StepperContext\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport styles from \"./StepperPanel.module.scss\";\n\n/**\n * Props for the StepperFinalPanel component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type StepperFinalPanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps;\n\n/**\n * Final panel component displayed when all stepper steps are completed.\n *\n * Features:\n * - Displays only when all steps are completed\n * - Smooth fade-in animation on completion\n * - Automatic overflow handling with scroll support\n * - Accessible with proper ARIA roles\n * - Layout utilities for positioning and spacing\n * - Motion animations for smooth transitions\n * - Focus management for keyboard navigation\n * - Responsive design with flexible layout\n * - Context-based visibility control\n *\n * @example\n * <Stepper.FinalPanel>\n * <h2>Congratulations!</h2>\n * <p>You have successfully completed all steps.</p>\n * <Button onClick={handleSubmit}>Submit</Button>\n * </Stepper.FinalPanel>\n */\nexport const StepperFinalPanel = forwardRef<\n HTMLDivElement,\n StepperFinalPanelProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { id, className, style, children, ...rest } = componentProps;\n const { allCompleted, setCurrentId } = useContext(StepperContext);\n\n useEffect(() => {\n if (allCompleted) {\n setCurrentId(\"final-panel\");\n }\n }, [allCompleted, setCurrentId]);\n\n const tabPanelClassNames = cx(styles[\"stepper-panel\"], className);\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n if (allCompleted) {\n return (\n <motion.div\n style={styleCombined}\n className={tabPanelClassNames}\n transition={{\n opacity: {\n duration:\n +core.primitive.DurationSlow.value.replace(\"ms\", \"\") / 1000,\n },\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n layout\n {...rest}\n role=\"tabpanel\"\n data-anv=\"stepper-final-panel\"\n tabIndex={0}\n ref={ref}\n >\n <Overflow>{children}</Overflow>\n </motion.div>\n );\n }\n return null;\n});\n\nStepperFinalPanel.displayName = \"StepperFinalPanel\";\n","import { forwardRef, useContext, type MouseEvent } from \"react\";\n\nimport { Button, type ButtonProps } from \"../Button\";\nimport type { DataTrackingId } from \"../../types\";\nimport { useTrackingId } from \"../../hooks\";\n\nimport { StepperContext } from \"./internal/StepperContext\";\n\n/**\n * Props for the StepperNextButton component\n * @extends ButtonProps\n */\nexport type StepperNextButtonProps = Omit<ButtonProps, \"children\"> & {\n /**\n * Label for the next button.\n * @default \"Next\"\n */\n nextLabel?: string;\n\n /**\n * Label for the complete button (shown on the last step).\n * @default \"Complete\"\n */\n completeLabel?: string;\n\n /**\n * Called when the \"Next\" button is clicked.\n * @param e MouseEvent<HTMLButtonElement>\n * @returns If the function returns `false`, or a Promise that resolves to `false`, the next step will not be executed.\n */\n onClick?: (\n e: MouseEvent<HTMLButtonElement>,\n ) => void | boolean | Promise<boolean>;\n} & DataTrackingId;\n\n/**\n * Next button component for navigating to the next step in the Stepper.\n *\n * Features:\n * - Automatically advances to the next step\n * - Changes label to \"Complete\" on the final step\n * - Supports async validation with Promise return\n * - Prevents navigation when validation fails\n * - Hides when all steps are completed\n * - Accessible with proper button semantics\n * - Customizable appearance and styling\n * - Integration with stepper context\n * - Automatic completion handling\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Stepper.NextButton\n * nextLabel=\"Continue\"\n * completeLabel=\"Finish\"\n * />\n *\n * @example\n * <Stepper.NextButton\n * onClick={async (e) => {\n * const isValid = await validateForm();\n * return isValid;\n * }}\n * appearance=\"primary\"\n * />\n */\nexport const StepperNextButton = forwardRef<\n HTMLButtonElement,\n StepperNextButtonProps\n>((props, ref) => {\n const {\n setAllCompleted,\n onComplete,\n setCurrent,\n setFocus,\n items,\n current,\n allCompleted,\n } = useContext(StepperContext);\n const {\n onClick,\n onFocus,\n nextLabel = \"Next\",\n completeLabel = \"Complete\",\n appearance = \"primary\",\n ...rest\n } = props;\n\n const proceedToNextStep = () => {\n if (items && current === items.length - 1) {\n items.forEach((item) => item.setAttribute(\"tabindex\", \"-1\"));\n setAllCompleted?.(true);\n onComplete?.();\n return;\n }\n setCurrent(current + 1);\n setFocus(current + 1);\n };\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n const onClickResult = onClick?.(e);\n\n // check if onClick returns a Promise\n if (\n onClickResult !== undefined &&\n onClickResult &&\n (onClickResult as unknown) instanceof Promise\n ) {\n (onClickResult as unknown as Promise<boolean>).then((result) => {\n if (result === false) return;\n proceedToNextStep();\n });\n\n // otherwise, onClick returns a boolean or void\n } else {\n if ((onClickResult as void | boolean) === false) return;\n proceedToNextStep();\n }\n };\n\n const data = {\n nextLabel: props.nextLabel,\n completeLabel: props.completeLabel,\n };\n\n const trackingId = useTrackingId({\n name: \"StepperNextButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return allCompleted ? null : (\n <Button\n data-anv=\"stepper-next-button\"\n data-tracking-id={trackingId}\n onClick={onClickHandler}\n appearance={appearance}\n ref={ref}\n {...rest}\n >\n {items && current === items.length - 1 ? completeLabel : nextLabel}\n </Button>\n );\n});\n\nStepperNextButton.displayName = \"StepperNextButton\";\n","import { forwardRef, useContext, type MouseEvent } from \"react\";\n\nimport type { DataTrackingId } from \"../../types\";\nimport { Button, type ButtonProps } from \"../Button\";\nimport { useTrackingId } from \"../../hooks\";\n\nimport { StepperContext } from \"./internal/StepperContext\";\n\n/**\n * Props for the StepperPrevButton component\n * @extends ButtonProps\n */\nexport type StepperPrevButtonProps = Omit<ButtonProps, \"children\"> & {\n /**\n * Label for the previous button.\n * @default \"Previous\"\n */\n label?: string;\n} & DataTrackingId;\n\n/**\n * Previous button component for navigating to the previous step in the Stepper.\n *\n * Features:\n * - Navigates to the previous step when available\n * - Hides when on the first step\n * - Restores navigation when returning from completion\n * - Accessible with proper button semantics\n * - Customizable label and styling\n * - Integration with stepper context\n * - Automatic focus management\n * - Support for completion state handling\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Stepper.PrevButton label=\"Go Back\" />\n *\n * @example\n * <Stepper.PrevButton\n * label=\"Previous Step\"\n * appearance=\"secondary\"\n * onClick={(e) => console.log('Going back')}\n * />\n */\nexport const StepperPrevButton = forwardRef<\n HTMLButtonElement,\n StepperPrevButtonProps\n>((props, ref) => {\n const {\n setCurrent,\n setFocus,\n allCompleted,\n setAllCompleted,\n items,\n current,\n allowNavigateToPrevStep,\n } = useContext(StepperContext);\n const { onClick, label = \"Previous\", onFocus, ...rest } = props;\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (allCompleted) {\n setAllCompleted?.(false);\n if (allowNavigateToPrevStep) {\n items?.[current].setAttribute(\"tabindex\", \"0\");\n }\n } else {\n setCurrent(current - 1);\n setFocus(current - 1);\n }\n\n onClick?.(e);\n };\n\n const data = {\n label: props.label,\n };\n\n const trackingId = useTrackingId({\n name: \"StepperPrevButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return current === 0 ? null : (\n <Button\n data-anv=\"stepper-prev-button\"\n data-tracking-id={trackingId}\n onClick={onClickHandler}\n ref={ref}\n {...rest}\n >\n {label}\n </Button>\n );\n});\n\nStepperPrevButton.displayName = \"StepperPrevButton\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\nimport { motion } from \"motion/react\";\n\nimport { useMergeRefs } from \"../../hooks\";\nimport type { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport { StepperList } from \"./StepperList\";\nimport { StepperStep } from \"./StepperStep\";\nimport { StepperPanel } from \"./StepperPanel\";\nimport { StepperFinalPanel } from \"./StepperFinalPanel\";\nimport { StepperNextButton } from \"./StepperNextButton\";\nimport { StepperPrevButton } from \"./StepperPrevButton\";\nimport { StepperContext } from \"./internal/StepperContext\";\n\nimport styles from \"./Stepper.module.scss\";\n\n/**\n * Props for the Stepper component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type StepperProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\" | \"onChange\"\n> &\n LayoutUtilProps & {\n /**\n * Default step to start on (0-based index).\n * To start in the completed state (showing FinalPanel with all steps marked complete),\n * set this to the total number of steps (e.g. `items.length`).\n * @default undefined\n */\n defaultIndex?: number;\n\n /**\n * Allows users to navigate to previous steps.\n * @default undefined\n */\n allowNavigateToPrevStep?: boolean;\n\n /**\n * Returns current step data when step changes.\n * @param data Object containing currentStepId and currentStepIndex\n * @param data.currentStepId ID given to Stepper.Panel, or \"final-panel\"\n * @param data.currentStepIndex Index of current step, or undefined on final panel\n */\n onChange?: (data: {\n currentStepId: string | \"final-panel\";\n currentStepIndex?: number;\n }) => void;\n\n /**\n * Called when all steps are completed.\n */\n onComplete?: () => void;\n };\n\n/**\n * Stepper component for creating multi-step workflows and forms.\n *\n * Features:\n * - Multi-step navigation with visual progress indicators\n * - Keyboard navigation support with arrow keys\n * - Optional navigation to previous steps\n * - Smooth animations and transitions\n * - Accessible with proper ARIA roles and attributes\n * - Customizable step labels and content\n * - Completion state handling\n * - Layout utilities for positioning and spacing\n * - Motion animations for step transitions\n * - Context-based state management\n *\n * @example\n * <Stepper defaultIndex={0} allowNavigateToPrevStep>\n * <Stepper.List>\n * <Stepper.Step controls=\"step1\">Step 1</Stepper.Step>\n * <Stepper.Step controls=\"step2\">Step 2</Stepper.Step>\n * <Stepper.Step controls=\"step3\">Step 3</Stepper.Step>\n * </Stepper.List>\n *\n * <Stepper.Panel id=\"step1\">\n * <h2>Step 1 Content</h2>\n * <p>This is the first step content.</p>\n * </Stepper.Panel>\n *\n * <Stepper.Panel id=\"step2\">\n * <h2>Step 2 Content</h2>\n * <p>This is the second step content.</p>\n * </Stepper.Panel>\n *\n * <Stepper.Panel id=\"step3\">\n * <h2>Step 3 Content</h2>\n * <p>This is the final step content.</p>\n * </Stepper.Panel>\n *\n * <Stepper.FinalPanel>\n * <h2>Completed!</h2>\n * <p>All steps have been completed successfully.</p>\n * </Stepper.FinalPanel>\n *\n * <Stepper.PrevButton />\n * <Stepper.NextButton />\n * </Stepper>\n */\nexport const Stepper = Object.assign(\n forwardRef<HTMLDivElement, StepperProps>(function StepperInner(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n defaultIndex,\n className,\n allowNavigateToPrevStep,\n children,\n onChange,\n onComplete,\n style,\n ...rest\n } = componentProps;\n const tabRef = useRef<HTMLDivElement>(null);\n const [items, setItems] = useState<NodeListOf<HTMLElement>>();\n const [allCompleted, setAllCompleted] = useState(false);\n const [current, setCurrent] = useState<number>(defaultIndex ?? 0);\n const [currentId, setCurrentId] = useState<string>(\"\");\n const [focus, setFocus] = useState<number>(defaultIndex ?? 0);\n const stepperClassNames = cx(styles[\"stepper\"], className);\n\n useEffect(() => {\n const newItems = tabRef.current?.querySelectorAll<HTMLElement>(\n \"[role=tab]:not([disabled])\",\n );\n setItems(newItems);\n if (\n defaultIndex !== undefined &&\n newItems &&\n newItems.length > 0 &&\n defaultIndex >= newItems.length\n ) {\n const lastIndex = newItems.length - 1;\n setAllCompleted(true);\n setCurrent(lastIndex);\n setFocus(lastIndex);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n onChange?.({\n currentStepId: currentId,\n currentStepIndex: allCompleted ? undefined : current,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allCompleted, currentId, onChange]);\n\n const styleCombined = { ...style, ...layoutStyles };\n\n const value = useMemo(\n () => ({\n current,\n setCurrent,\n currentId,\n setCurrentId,\n focus,\n setFocus,\n onComplete,\n items,\n allCompleted,\n setAllCompleted,\n allowNavigateToPrevStep,\n }),\n [\n current,\n currentId,\n focus,\n onComplete,\n items,\n allCompleted,\n setAllCompleted,\n allowNavigateToPrevStep,\n ],\n );\n\n return (\n <StepperContext.Provider value={value}>\n <motion.div\n transition={{ duration: 0 }}\n layout\n className={stepperClassNames}\n data-anv=\"stepper\"\n style={styleCombined}\n {...rest}\n ref={useMergeRefs([tabRef, ref])}\n >\n {children}\n </motion.div>\n </StepperContext.Provider>\n );\n }),\n {\n /**\n * Individual step component for the Stepper.\n *\n * Features:\n * - Visual progress indicator with animated bar\n * - Check icon for completed steps\n * - Keyboard navigation support\n * - Accessible with proper ARIA attributes\n * - Click handling for step navigation\n * - Visual states for current, completed, and future steps\n * - Responsive design with mobile-friendly layout\n * - Focus management for keyboard users\n * - Custom styling support\n *\n * @example\n * <Stepper.Step controls=\"step1\">\n * Personal Information\n * </Stepper.Step>\n *\n * @example\n * <Stepper.Step\n * controls=\"step2\"\n * onClick={(e, index) => console.log(`Clicked step ${index}`)}\n * >\n * Contact Details\n * </Stepper.Step>\n */\n Step: StepperStep,\n\n /**\n * Container component for organizing and displaying stepper steps.\n *\n * Features:\n * - Groups multiple stepper steps together\n * - Displays current step label\n * - Responsive design with mobile-friendly layout\n * - Accessible with proper ARIA roles\n * - Automatic step organization\n * - Visual step indicators\n * - Context-based current step display\n * - Flexible layout with CSS Grid/Flexbox\n * - Container queries for responsive behavior\n *\n * @example\n * <Stepper.List>\n * <Stepper.Step controls=\"step1\">Step 1</Stepper.Step>\n * <Stepper.Step controls=\"step2\">Step 2</Stepper.Step>\n * <Stepper.Step controls=\"step3\">Step 3</Stepper.Step>\n * </Stepper.List>\n */\n List: StepperList,\n\n /**\n * Content panel component for displaying step content in the Stepper.\n *\n * Features:\n * - Displays content for the current step only\n * - Smooth fade-in/fade-out animations\n * - Automatic overflow handling with scroll support\n * - Accessible with proper ARIA roles\n * - Layout utilities for positioning and spacing\n * - Motion animations for smooth transitions\n * - Focus management for keyboard navigation\n * - Responsive design with flexible layout\n * - Context-based visibility control\n *\n * @example\n * <Stepper.Panel id=\"step1\">\n * <h2>Personal Information</h2>\n * <form>\n * <label htmlFor=\"name\">Name:</label>\n * <input id=\"name\" type=\"text\" />\n * </form>\n * </Stepper.Panel>\n */\n Panel: StepperPanel,\n\n /**\n * Next button component for navigating to the next step in the Stepper.\n *\n * Features:\n * - Automatically advances to the next step\n * - Changes label to \"Complete\" on the final step\n * - Supports async validation with Promise return\n * - Prevents navigation when validation fails\n * - Hides when all steps are completed\n * - Accessible with proper button semantics\n * - Customizable appearance and styling\n * - Integration with stepper context\n * - Automatic completion handling\n *\n * @example\n * <Stepper.NextButton\n * nextLabel=\"Continue\"\n * completeLabel=\"Finish\"\n * />\n *\n * @example\n * <Stepper.NextButton\n * onClick={async (e) => {\n * const isValid = await validateForm();\n * return isValid;\n * }}\n * appearance=\"primary\"\n * />\n */\n NextButton: StepperNextButton,\n\n /**\n * Previous button component for navigating to the previous step in the Stepper.\n *\n * Features:\n * - Navigates to the previous step when available\n * - Hides when on the first step\n * - Restores navigation when returning from completion\n * - Accessible with proper button semantics\n * - Customizable label and styling\n * - Integration with stepper context\n * - Automatic focus management\n * - Support for completion state handling\n *\n * @example\n * <Stepper.PrevButton label=\"Go Back\" />\n *\n * @example\n * <Stepper.PrevButton\n * label=\"Previous Step\"\n * appearance=\"secondary\"\n * onClick={(e) => console.log('Going back')}\n * />\n */\n PrevButton: StepperPrevButton,\n\n /**\n * Final panel component displayed when all stepper steps are completed.\n *\n * Features:\n * - Displays only when all steps are completed\n * - Smooth fade-in animation on completion\n * - Automatic overflow handling with scroll support\n * - Accessible with proper ARIA roles\n * - Layout utilities for positioning and spacing\n * - Motion animations for smooth transitions\n * - Focus management for keyboard navigation\n * - Responsive design with flexible layout\n * - Context-based visibility control\n *\n * @example\n * <Stepper.FinalPanel>\n * <h2>Congratulations!</h2>\n * <p>You have successfully completed all steps.</p>\n * <Button onClick={handleSubmit}>Submit</Button>\n * </Stepper.FinalPanel>\n */\n FinalPanel: StepperFinalPanel,\n },\n);\nStepper.displayName = \"Stepper\";\n"],"names":["styles","Check","core.primitive.DurationSlow"],"mappings":"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"}
|
package/dist/Stepper.css
CHANGED
|
@@ -81,8 +81,7 @@
|
|
|
81
81
|
outline: var(--a2-mod-stepper-step-label-outline, none);
|
|
82
82
|
outline-offset: var(--a2-mod-stepper-step-label-outline-offset, 0);
|
|
83
83
|
position: static;
|
|
84
|
-
|
|
85
|
-
text-decoration: var(--a2-mod-stepper-step-label-text-decoration, none);
|
|
84
|
+
text-decoration: var(--a2-mod-stepper-step-label-text-decoration, none);
|
|
86
85
|
}._circle_1l4p4_62 {
|
|
87
86
|
align-items: center;
|
|
88
87
|
background-color: var(--a2-mod-stepper-step-circle-background-color, var(--a2-stepper-step-default-circle-background-color, var(--a2-background-color-default, light-dark(var(--a2-color-neutral-0, #ffffff), var(--a2-color-neutral-900, #1a1a1a)))));
|
package/dist/Stepper.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { S as Stepper, S as default } from './Stepper-
|
|
1
|
+
export { S as Stepper, S as default } from './Stepper-BX_gDWLE.js';
|
|
2
2
|
//# sourceMappingURL=Stepper.js.map
|