@servicetitan/anvil2 3.14.0 → 3.15.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 +13 -0
- package/dist/{AiMark-CWufA6pV.js → AiMark-D57s1e0T.js} +3 -3
- package/dist/AiMark-D57s1e0T.js.map +1 -0
- package/dist/AiMark.js +1 -1
- package/dist/{Alert-RkvFtmRP.js → Alert-DExHiAbM.js} +2 -2
- package/dist/Alert-DExHiAbM.js.map +1 -0
- package/dist/Alert.js +1 -1
- package/dist/Announcement-CGTv6M31.js.map +1 -1
- package/dist/Avatar-Ba662b3z.js +17 -0
- package/dist/Avatar-Ba662b3z.js.map +1 -0
- package/dist/{Avatar-DZxHhMTP.js → Avatar-CwnLhw9m.js} +1 -20
- package/dist/Avatar-CwnLhw9m.js.map +1 -0
- package/dist/Avatar.js +2 -2
- package/dist/Badge-BNrYBFiU.js.map +1 -1
- package/dist/{Breadcrumbs-DbOrdao2.js → Breadcrumbs-DtLSS0PJ.js} +3 -16
- package/dist/Breadcrumbs-DtLSS0PJ.js.map +1 -0
- package/dist/Breadcrumbs.js +1 -1
- package/dist/Button-Dwh_Nd4l.js.map +1 -1
- package/dist/ButtonCompound-D7kA0qXr.js.map +1 -1
- package/dist/ButtonLink-DOFAxNvC.js.map +1 -1
- package/dist/ButtonToggle-DKDBD1g3.js.map +1 -1
- package/dist/{Calendar-DLnn6dJE.js → Calendar-BUFPc5UN.js} +2 -2
- package/dist/{Calendar-DLnn6dJE.js.map → Calendar-BUFPc5UN.js.map} +1 -1
- package/dist/{Calendar-CK-AAaSG.js → Calendar-CEf7ke8X.js} +11 -79
- package/dist/Calendar-CEf7ke8X.js.map +1 -0
- package/dist/Calendar.js +2 -2
- package/dist/Card-Bt0F6RTq.js.map +1 -1
- package/dist/{Checkbox-Cn4iNLW_.js → Checkbox-DBE35nMv.js} +3 -23
- package/dist/Checkbox-DBE35nMv.js.map +1 -0
- package/dist/{Checkbox-CboZhOtU.js → Checkbox-DVy-QESI.js} +3 -3
- package/dist/Checkbox-DVy-QESI.js.map +1 -0
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-UbrxYEqs.js → Chip-B4G4zaP-.js} +3 -3
- package/dist/Chip-B4G4zaP-.js.map +1 -0
- package/dist/Chip.js +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-COExZbOC.js → DataTable-DbuXfDNJ.js} +8 -8
- package/dist/{DataTable-COExZbOC.js.map → DataTable-DbuXfDNJ.js.map} +1 -1
- package/dist/{DateFieldRange-CpTxlASD.js → DateFieldRange-nyj8mtUP.js} +7 -15
- package/dist/DateFieldRange-nyj8mtUP.js.map +1 -0
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-DR2kfrzh.js → DateFieldSingle-BmCghXba.js} +6 -9
- package/dist/DateFieldSingle-BmCghXba.js.map +1 -0
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-4mS_2Mgw.js → DateFieldYearless-Df7fA85i.js} +4 -4
- package/dist/DateFieldYearless-Df7fA85i.js.map +1 -0
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-C-yvKBkJ.js → DateFieldYearlessRange-DYpY4K1c.js} +3 -3
- package/dist/DateFieldYearlessRange-DYpY4K1c.js.map +1 -0
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-Bo4w8SsT.js → DaysOfTheWeek-CyWGRqFG.js} +3 -3
- package/dist/DaysOfTheWeek-CyWGRqFG.js.map +1 -0
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Details-CVA5zbrR.js → Details-oM-nR4ju.js} +3 -1
- package/dist/Details-oM-nR4ju.js.map +1 -0
- package/dist/Details.js +1 -1
- package/dist/{Dialog-Ds25dKQp.js → Dialog-vSiZAR1y.js} +44 -102
- package/dist/Dialog-vSiZAR1y.js.map +1 -0
- package/dist/Dialog.js +1 -1
- package/dist/DialogCancelButton-DBL0aKTK.js.map +1 -1
- package/dist/DialogContext-DBgtApl9.js.map +1 -1
- package/dist/Divider-C7fp5Xb6.js.map +1 -1
- package/dist/Dnd.js +1 -1
- package/dist/DndHandleButton-BRlodkDO.js.map +1 -1
- package/dist/DndSort.js +4 -6
- package/dist/DndSort.js.map +1 -1
- package/dist/{Drawer-Da-bj_6o.js → Drawer-B4pxj_2P.js} +33 -103
- package/dist/Drawer-B4pxj_2P.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-1VBKDZRA.js.map +1 -1
- package/dist/{EditCard-CocV93gS.js → EditCard-CX1G7G2Q.js} +2 -2
- package/dist/EditCard-CX1G7G2Q.js.map +1 -0
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-6aFKQfyD.js → FieldLabel-CAusaqUY.js} +3 -4
- package/dist/FieldLabel-CAusaqUY.js.map +1 -0
- package/dist/FieldLabel.js +1 -1
- package/dist/FieldMessage-8c9yA_kw.js.map +1 -1
- package/dist/{FilterBar-CZT1ryz_.js → FilterBar-CKYf-1oU.js} +5 -5
- package/dist/{FilterBar-CZT1ryz_.js.map → FilterBar-CKYf-1oU.js.map} +1 -1
- package/dist/FilterBar.js +1 -1
- package/dist/Flex-CRF7gj0_.js.map +1 -1
- package/dist/{Grid-CvGQrIhE.js → Grid-BPCDtqoT.js} +2 -20
- package/dist/Grid-BPCDtqoT.js.map +1 -0
- package/dist/Grid.js +1 -1
- package/dist/Icon-B5zwN7GD.js.map +1 -1
- package/dist/{InputMask-CNV0Ucli.js → InputMask-xMpquXPU.js} +3 -3
- package/dist/{InputMask-CNV0Ucli.js.map → InputMask-xMpquXPU.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{Layout-C2Q2hyLG.js → Layout-C8fKY7Eh.js} +2 -1
- package/dist/Layout-C8fKY7Eh.js.map +1 -0
- package/dist/Layout.js +1 -1
- package/dist/Link-D7ycmfQ_.js.map +1 -1
- package/dist/LinkButton-C0wps8r1.js.map +1 -1
- package/dist/{List-BvzfZ9TW.js → List-CTr2fk7l.js} +2 -11
- package/dist/List-CTr2fk7l.js.map +1 -0
- package/dist/List.js +1 -1
- package/dist/{ListView-DFAWrwzi.js → ListView-D6l1KY92.js} +4 -26
- package/dist/ListView-D6l1KY92.js.map +1 -0
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-BErqErNN.js → Listbox-Dep1eJ3u.js} +4 -30
- package/dist/Listbox-Dep1eJ3u.js.map +1 -0
- package/dist/Listbox.js +1 -1
- package/dist/{Menu-BjPE_ODh.js → Menu-eLxQwmZk.js} +2 -22
- package/dist/Menu-eLxQwmZk.js.map +1 -0
- package/dist/Menu.js +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-CqWUidCm.js → MultiSelectFieldSync-ZNoNOm6d.js} +6 -13
- package/dist/MultiSelectFieldSync-ZNoNOm6d.js.map +1 -0
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-DG3rKyQc.js → MultiSelectMenuSync-DrgqaUJj.js} +4 -4
- package/dist/MultiSelectMenuSync-DrgqaUJj.js.map +1 -0
- package/dist/{NumberField-DRYYJHec.js → NumberField-D5ZzEHg1.js} +3 -3
- package/dist/NumberField-D5ZzEHg1.js.map +1 -0
- package/dist/NumberField.js +1 -1
- package/dist/Overflow.js +1 -1
- package/dist/Overflow.js.map +1 -1
- package/dist/{Page-BmpojvuI.js → Page-B2HZzNGP.js} +12 -12
- package/dist/Page-B2HZzNGP.js.map +1 -0
- package/dist/Page.js +1 -1
- package/dist/{Pagination-Bc4fhdNm.js → Pagination-CAgXtt9t.js} +13 -9
- package/dist/Pagination-CAgXtt9t.js.map +1 -0
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-BgVOsP4J.js → Popover-CjL2ixjB.js} +6 -74
- package/dist/Popover-CjL2ixjB.js.map +1 -0
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-Chb0uKfL.js → ProgressBar-ClKcOcXq.js} +2 -2
- package/dist/ProgressBar-ClKcOcXq.js.map +1 -0
- package/dist/ProgressBar.js +1 -1
- package/dist/Radio-C2BJqWlV.js +31 -0
- package/dist/Radio-C2BJqWlV.js.map +1 -0
- package/dist/{Radio-DcNlFfSu.js → Radio-_ftIQSru.js} +3 -3
- package/dist/Radio-_ftIQSru.js.map +1 -0
- package/dist/Radio.js +1 -1
- package/dist/{RichTextEditor-DeO4p-S-.js → RichTextEditor-TcZUnqcp.js} +9 -9
- package/dist/{RichTextEditor-DeO4p-S-.js.map → RichTextEditor-TcZUnqcp.js.map} +1 -1
- package/dist/RichTextEditor.js +1 -1
- package/dist/{SavedFiltersButton-Cvf1mJk8.js → SavedFiltersButton-B8lf3L2T.js} +9 -9
- package/dist/{SavedFiltersButton-Cvf1mJk8.js.map → SavedFiltersButton-B8lf3L2T.js.map} +1 -1
- package/dist/SavedFiltersButton.js +1 -1
- package/dist/SearchField-ChoNtw8w.js.map +1 -1
- package/dist/SearchField-DX8hZyo2.js.map +1 -1
- package/dist/{SegmentedControl-CQ6DrbDc.js → SegmentedControl-CtKoYHoO.js} +2 -17
- package/dist/SegmentedControl-CtKoYHoO.js.map +1 -0
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCard-bp5hRyHK.js → SelectCard-BwIbfore.js} +4 -28
- package/dist/SelectCard-BwIbfore.js.map +1 -0
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldLabel-DZqxaZsp.js → SelectFieldLabel-7VTZ83QJ.js} +2 -2
- package/dist/SelectFieldLabel-7VTZ83QJ.js.map +1 -0
- package/dist/{SelectFieldSync-Wkx6DGpg.js → SelectFieldSync-CB75kkka.js} +7 -6
- package/dist/SelectFieldSync-CB75kkka.js.map +1 -0
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-O55TODxn.js → SelectMenuSync-DIMfovCI.js} +4 -4
- package/dist/SelectMenuSync-DIMfovCI.js.map +1 -0
- package/dist/{SelectOptions-0A8BYx1q.js → SelectOptions-si_rVLEZ.js} +2 -2
- package/dist/{SelectOptions-0A8BYx1q.js.map → SelectOptions-si_rVLEZ.js.map} +1 -1
- package/dist/{SelectTrigger-BfJ7DWYq.js → SelectTrigger-C3-Cne3D.js} +3 -3
- package/dist/SelectTrigger-C3-Cne3D.js.map +1 -0
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-DvsI-kSG.js → SelectTriggerBase-BnsTYWVb.js} +3 -5
- package/dist/SelectTriggerBase-BnsTYWVb.js.map +1 -0
- package/dist/{SideNav-BLXgM918.js → SideNav-CHG7i8Dy.js} +4 -57
- package/dist/SideNav-CHG7i8Dy.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-CCKHWlUr.js → Stepper-C-QC9QHx.js} +10 -178
- package/dist/Stepper-C-QC9QHx.js.map +1 -0
- package/dist/Stepper.js +1 -1
- package/dist/{Switch-CrDmBj4D.js → Switch-DWq4QI8M.js} +2 -2
- package/dist/Switch-DWq4QI8M.js.map +1 -0
- package/dist/Switch.js +1 -1
- package/dist/{Tab-Bqfvg8Ce.js → Tab-mXEQ0ifM.js} +4 -58
- package/dist/Tab-mXEQ0ifM.js.map +1 -0
- package/dist/Tab.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-CZccJAnm.js → Text-dONmlARH.js} +2 -2
- package/dist/Text-dONmlARH.js.map +1 -0
- package/dist/Text.js +1 -1
- package/dist/{TextField-D0f9LwgQ.js → TextField-CQ7e3mC4.js} +3 -3
- package/dist/TextField-CQ7e3mC4.js.map +1 -0
- package/dist/{TextField-DX5qyWPo.js → TextField-CtXjbtqa.js} +2 -2
- package/dist/TextField-CtXjbtqa.js.map +1 -0
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-CdTcekFd.js → Textarea-DGVHQktZ.js} +3 -3
- package/dist/Textarea-DGVHQktZ.js.map +1 -0
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-BxNglWQt.js → TimeField-AttXPsQw.js} +5 -9
- package/dist/TimeField-AttXPsQw.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-C-Z_FMbW.js → Toaster-CNtAl-tF.js} +6 -18
- package/dist/Toaster-CNtAl-tF.js.map +1 -0
- package/dist/{Toaster-nyQgF9Ki.js → Toaster-DYO8NLTo.js} +3 -6
- package/dist/Toaster-DYO8NLTo.js.map +1 -0
- package/dist/{Toolbar-BUbMtBVz.js → Toolbar-BIbbaCxh.js} +8 -77
- package/dist/Toolbar-BIbbaCxh.js.map +1 -0
- package/dist/{Toolbar-BxAFPvbn.js → Toolbar-B_lHD0c2.js} +5 -5
- package/dist/{Toolbar-BxAFPvbn.js.map → Toolbar-B_lHD0c2.js.map} +1 -1
- package/dist/Toolbar.js +2 -2
- package/dist/{ToolbarButtonToggle-NSJ2XfXT.js → ToolbarButtonToggle-BMBmBdw1.js} +2 -2
- package/dist/{ToolbarButtonToggle-NSJ2XfXT.js.map → ToolbarButtonToggle-BMBmBdw1.js.map} +1 -1
- package/dist/{Tooltip-B4MSqIpg.js → Tooltip-C_VcYS9P.js} +3 -37
- package/dist/Tooltip-C_VcYS9P.js.map +1 -0
- package/dist/Tooltip.js +1 -1
- package/dist/TreeSelectField.js +1 -1
- package/dist/{TreeSelectFieldSync-DpvwlM7B.js → TreeSelectFieldSync-CKnFwROC.js} +5 -5
- package/dist/{TreeSelectFieldSync-DpvwlM7B.js.map → TreeSelectFieldSync-CKnFwROC.js.map} +1 -1
- package/dist/TreeSelectMenu.js +1 -1
- package/dist/{TreeSelectMenuSync-BDitYX_k.js → TreeSelectMenuSync-CK-x2_ne.js} +3 -3
- package/dist/{TreeSelectMenuSync-BDitYX_k.js.map → TreeSelectMenuSync-CK-x2_ne.js.map} +1 -1
- package/dist/{TypeaheadTextField-Cj09sEji.js → TypeaheadTextField-DqnUGXj0.js} +3 -3
- package/dist/{TypeaheadTextField-Cj09sEji.js.map → TypeaheadTextField-DqnUGXj0.js.map} +1 -1
- package/dist/TypeaheadTextField.js +1 -1
- package/dist/{YearlessDateInputWithPicker-CoomgSEK.js → YearlessDateInputWithPicker-aI4UIyMD.js} +5 -7
- package/dist/YearlessDateInputWithPicker-aI4UIyMD.js.map +1 -0
- package/dist/assets/icons/st/gnav_analytics_active.svg +1 -0
- package/dist/assets/icons/st/gnav_analytics_inactive.svg +1 -0
- package/dist/assets/icons/st.ts +3 -1
- package/dist/beta.js +17 -17
- package/dist/{bulkActionTypes-DAo3_ECS.js → bulkActionTypes-sbwWLsDi.js} +2 -2
- package/dist/{bulkActionTypes-DAo3_ECS.js.map → bulkActionTypes-sbwWLsDi.js.map} +1 -1
- package/dist/{filter-state-CZcczj37.js → filter-state-DW8YmRHb.js} +20 -20
- package/dist/{filter-state-CZcczj37.js.map → filter-state-DW8YmRHb.js.map} +1 -1
- package/dist/{index-BwV_Pz7v.js → index-Bldaza5t.js} +5 -1
- package/dist/index-Bldaza5t.js.map +1 -0
- package/dist/{index-BFxzUzoz.js → index-Cw2HFh0a.js} +2 -2
- package/dist/{index-BFxzUzoz.js.map → index-Cw2HFh0a.js.map} +1 -1
- package/dist/index.js +61 -171
- package/dist/index.js.map +1 -1
- package/dist/{makeZeroShortcutPreprocessor-CxsiGTRW.js → makeZeroShortcutPreprocessor-D5KWcgUA.js} +2 -4
- package/dist/makeZeroShortcutPreprocessor-D5KWcgUA.js.map +1 -0
- package/dist/src/beta/components/Page/Page.d.ts +1 -1
- package/dist/src/beta/components/Page/PageHeader.d.ts +7 -3
- package/dist/src/components/AiMark/AiMark.d.ts +9 -69
- package/dist/src/components/AiMark/internal/AiMarkIconAnimated.d.ts +2 -20
- package/dist/src/components/AiMark/internal/AiMarkInteractive.d.ts +4 -0
- package/dist/src/components/Alert/Alert.d.ts +10 -54
- package/dist/src/components/Announcement/Announcement.d.ts +7 -49
- package/dist/src/components/Avatar/Avatar.d.ts +5 -41
- package/dist/src/components/Avatar/AvatarGroup.d.ts +4 -25
- package/dist/src/components/Avatar/internal/Avatar.d.ts +1 -44
- package/dist/src/components/Avatar/internal/AvatarBase.d.ts +13 -53
- package/dist/src/components/Badge/Badge.d.ts +9 -42
- package/dist/src/components/Breadcrumbs/Breadcrumbs.d.ts +6 -33
- package/dist/src/components/Breadcrumbs/BreadcrumbsLink.d.ts +1 -15
- package/dist/src/components/Button/Button.d.ts +19 -41
- package/dist/src/components/Button/internal/buttonAiMarkUtils.d.ts +2 -5
- package/dist/src/components/ButtonCompound/ButtonCompound.d.ts +5 -28
- package/dist/src/components/ButtonLink/ButtonLink.d.ts +23 -59
- package/dist/src/components/ButtonToggle/ButtonToggle.d.ts +14 -51
- package/dist/src/components/Calendar/Calendar.d.ts +43 -239
- package/dist/src/components/Calendar/CalendarContext.d.ts +32 -102
- package/dist/src/components/Calendar/CalendarMonth.d.ts +1 -6
- package/dist/src/components/Calendar/CalendarMonthButton.d.ts +2 -11
- package/dist/src/components/Calendar/CalendarNextButton.d.ts +1 -8
- package/dist/src/components/Calendar/CalendarNowButton.d.ts +5 -12
- package/dist/src/components/Calendar/CalendarPrevButton.d.ts +1 -8
- package/dist/src/components/Calendar/CalendarYearButton.d.ts +2 -10
- package/dist/src/components/Calendar/internal/CalendarDay.d.ts +3 -13
- package/dist/src/components/Calendar/internal/CalendarMonthSelection.d.ts +3 -17
- package/dist/src/components/Calendar/internal/CalendarWeek.d.ts +5 -18
- package/dist/src/components/Calendar/internal/utils.d.ts +1 -0
- package/dist/src/components/Card/Card.d.ts +9 -33
- package/dist/src/components/Checkbox/Checkbox.d.ts +3 -50
- package/dist/src/components/Checkbox/CheckboxGroup.d.ts +21 -65
- package/dist/src/components/Checkbox/internal/Checkbox.d.ts +32 -90
- package/dist/src/components/Checkbox/internal/CheckboxGroupContext.d.ts +2 -14
- package/dist/src/components/Checkbox/types.d.ts +2 -0
- package/dist/src/components/Chip/Chip.d.ts +5 -41
- package/dist/src/components/Chip/internal/Chip.d.ts +13 -84
- package/dist/src/components/DateFieldRange/DateFieldRange.d.ts +27 -44
- package/dist/src/components/DateFieldRange/internal/DateFieldRangeCalendar.d.ts +7 -0
- package/dist/src/components/DateFieldRange/internal/MaskedDateRangeInput.d.ts +18 -11
- package/dist/src/components/DateFieldRange/internal/maskito/dateRangePlaceholderMask.d.ts +2 -0
- package/dist/src/components/DateFieldRange/internal/useDateFieldRangeConversion.d.ts +1 -7
- package/dist/src/components/DateFieldRange/internal/useDateFieldRangeState.d.ts +11 -33
- package/dist/src/components/DateFieldRange/internal/utils.d.ts +4 -0
- package/dist/src/components/DateFieldRange/parts.d.ts +2 -7
- package/dist/src/components/DateFieldSingle/DateFieldSingle.d.ts +24 -46
- package/dist/src/components/DateFieldSingle/internal/DateFieldSingleCalendar.d.ts +4 -0
- package/dist/src/components/DateFieldSingle/internal/MaskedDateInput.d.ts +15 -8
- package/dist/src/components/DateFieldSingle/internal/TimezoneMessage.d.ts +2 -0
- package/dist/src/components/DateFieldSingle/internal/maskito/datePlaceholderMask.d.ts +1 -0
- package/dist/src/components/DateFieldSingle/internal/maskito/makeZeroShortcutPreprocessor.d.ts +3 -5
- package/dist/src/components/DateFieldSingle/internal/useDateFieldSingleConversion.d.ts +3 -29
- package/dist/src/components/DateFieldSingle/internal/useDateFieldSingleState.d.ts +13 -22
- package/dist/src/components/DateFieldSingle/internal/utils.d.ts +6 -16
- package/dist/src/components/DateFieldSingle/parts.d.ts +2 -7
- package/dist/src/components/DateFieldSingle/types.d.ts +1 -0
- package/dist/src/components/DateFieldYearless/DateFieldYearless.d.ts +31 -96
- package/dist/src/components/DateFieldYearless/internal/PickerList.d.ts +12 -40
- package/dist/src/components/DateFieldYearless/internal/PickerListOption.d.ts +5 -22
- package/dist/src/components/DateFieldYearless/internal/YearlessDateInput.d.ts +23 -8
- package/dist/src/components/DateFieldYearless/internal/YearlessDateInputWithPicker.d.ts +31 -90
- package/dist/src/components/DateFieldYearless/internal/YearlessDateSelectionPopover.d.ts +6 -8
- package/dist/src/components/DateFieldYearless/internal/maskito/yearlessDatePlaceholderMask.d.ts +1 -0
- package/dist/src/components/DateFieldYearless/internal/maskito/yearlessDateSegmentsStepping.d.ts +3 -5
- package/dist/src/components/DateFieldYearless/internal/utils.d.ts +7 -36
- package/dist/src/components/DateFieldYearless/parts.d.ts +2 -4
- package/dist/src/components/DateFieldYearless/types.d.ts +3 -0
- package/dist/src/components/DateFieldYearlessRange/DateFieldYearlessRange.d.ts +32 -48
- package/dist/src/components/DateFieldYearlessRange/parts.d.ts +2 -4
- package/dist/src/components/DaysOfTheWeek/DaysOfTheWeek.d.ts +32 -93
- package/dist/src/components/Details/Details.d.ts +10 -38
- package/dist/src/components/Details/DetailsContent.d.ts +6 -30
- package/dist/src/components/Details/DetailsSummary.d.ts +2 -18
- package/dist/src/components/Details/internal/DetailsArrow.d.ts +1 -17
- package/dist/src/components/Dialog/Dialog.d.ts +41 -218
- package/dist/src/components/Dialog/DialogCancelButton.d.ts +2 -17
- package/dist/src/components/Dialog/DialogContent.d.ts +4 -35
- package/dist/src/components/Dialog/DialogFooter.d.ts +4 -26
- package/dist/src/components/Dialog/DialogHeader.d.ts +2 -17
- package/dist/src/components/Dialog/internal/DialogContext.d.ts +0 -3
- package/dist/src/components/Dialog/internal/useInitialFocus.d.ts +3 -14
- package/dist/src/components/Divider/Divider.d.ts +8 -44
- package/dist/src/components/Dnd/DndHandle.d.ts +1 -18
- package/dist/src/components/Dnd/DndHandleButton.d.ts +2 -26
- package/dist/src/components/Dnd/DndSortLine.d.ts +4 -31
- package/dist/src/components/Dnd/DndZone.d.ts +6 -43
- package/dist/src/components/Dnd/index.d.ts +8 -0
- package/dist/src/components/DndSort/DndSort.d.ts +2 -34
- package/dist/src/components/DndSort/DndSortCard.d.ts +7 -51
- package/dist/src/components/DndSort/DndSortZone.d.ts +17 -99
- package/dist/src/components/DndSort/index.d.ts +6 -0
- package/dist/src/components/DndSort/internal/DndSortContextProvider.d.ts +1 -3
- package/dist/src/components/DndSort/internal/DndSortItem.d.ts +0 -11
- package/dist/src/components/DndSort/internal/DndSortOverlay.d.ts +0 -4
- package/dist/src/components/DndSort/internal/DndSortZoneContextProvider.d.ts +1 -9
- package/dist/src/components/DndSort/internal/test-utils.d.ts +2 -9
- package/dist/src/components/DndSort/internal/utils.d.ts +6 -32
- package/dist/src/components/DndSort/types.d.ts +14 -35
- package/dist/src/components/Drawer/Drawer.d.ts +25 -151
- package/dist/src/components/Drawer/DrawerCancelButton.d.ts +2 -21
- package/dist/src/components/Drawer/DrawerContent.d.ts +4 -38
- package/dist/src/components/Drawer/DrawerFooter.d.ts +4 -30
- package/dist/src/components/Drawer/DrawerHeader.d.ts +9 -41
- package/dist/src/components/Drawer/index.d.ts +1 -1
- package/dist/src/components/Drawer/internal/DrawerContext.d.ts +0 -15
- package/dist/src/components/Drawer/internal/useDrawerContext.d.ts +1 -6
- package/dist/src/components/DrillDown/DrillDown.d.ts +20 -48
- package/dist/src/components/DrillDown/DrillDownContent.d.ts +1 -21
- package/dist/src/components/DrillDown/DrillDownFooter.d.ts +1 -25
- package/dist/src/components/DrillDown/DrillDownHeader.d.ts +3 -25
- package/dist/src/components/DrillDown/DrillDownNextButton.d.ts +2 -22
- package/dist/src/components/DrillDown/DrillDownPrevButton.d.ts +2 -22
- package/dist/src/components/DrillDown/internal/DrillDownContext.d.ts +3 -0
- package/dist/src/components/DrillDown/internal/useDrillDownContext.d.ts +1 -0
- package/dist/src/components/DrillDown/internal/useDrillDownContextState.d.ts +4 -0
- package/dist/src/components/DrillDown/useDrilldown.d.ts +4 -23
- package/dist/src/components/EditCard/EditCard.d.ts +21 -77
- package/dist/src/components/FieldLabel/FieldLabel.d.ts +13 -46
- package/dist/src/components/FieldLabel/internal/FieldLabelButton.d.ts +1 -20
- package/dist/src/components/FieldLabel/internal/FieldLabelMoreInfoIcon.d.ts +2 -5
- package/dist/src/components/FieldMessage/FieldMessage.d.ts +18 -56
- package/dist/src/components/FieldMessage/utils.d.ts +2 -3
- package/dist/src/components/Flex/Flex.d.ts +12 -63
- package/dist/src/components/Flex/internal/FlexSpecificProps.d.ts +6 -22
- package/dist/src/components/Grid/Grid.d.ts +15 -92
- package/dist/src/components/Grid/internal/GridItem.d.ts +0 -23
- package/dist/src/components/Grid/internal/GridSpecificProps.d.ts +5 -19
- package/dist/src/components/Icon/Icon.d.ts +10 -58
- package/dist/src/components/Layout/Layout.d.ts +75 -127
- package/dist/src/components/Link/Link.d.ts +12 -38
- package/dist/src/components/Link/internal/Link.d.ts +7 -52
- package/dist/src/components/Link/internal/LinkHeadless.d.ts +3 -19
- package/dist/src/components/Link/useLinkStyles.d.ts +3 -8
- package/dist/src/components/LinkButton/LinkButton.d.ts +9 -28
- package/dist/src/components/List/List.d.ts +10 -48
- package/dist/src/components/List/ListItem.d.ts +1 -4
- package/dist/src/components/ListView/ListView.d.ts +4 -46
- package/dist/src/components/ListView/ListViewOption.d.ts +9 -20
- package/dist/src/components/ListView/ListViewOptionCell.d.ts +1 -11
- package/dist/src/components/ListView/internal/ListViewContext.d.ts +2 -13
- package/dist/src/components/ListView/internal/types.d.ts +17 -35
- package/dist/src/components/Listbox/Listbox.d.ts +32 -99
- package/dist/src/components/Listbox/ListboxOption.d.ts +7 -28
- package/dist/src/components/Listbox/ListboxOptionGroup.d.ts +6 -23
- package/dist/src/components/Listbox/internal/ListboxContext.d.ts +2 -20
- package/dist/src/components/Menu/Menu.d.ts +8 -48
- package/dist/src/components/Menu/MenuItem.d.ts +8 -41
- package/dist/src/components/Menu/internal/MenuContext.d.ts +0 -9
- package/dist/src/components/Menu/internal/MenuNested.d.ts +2 -35
- package/dist/src/components/Menu/internal/menuSelectors.d.ts +0 -3
- package/dist/src/components/Menu/types.d.ts +32 -40
- package/dist/src/components/MultiSelectField/MultiSelectField.d.ts +1 -19
- package/dist/src/components/MultiSelectField/MultiSelectFieldSync.d.ts +10 -65
- package/dist/src/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -3
- package/dist/src/components/MultiSelectField/internal/MultiSelectFieldInput.d.ts +1 -49
- package/dist/src/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -4
- package/dist/src/components/MultiSelectField/internal/MultiSelectFieldTrigger.d.ts +1 -4
- package/dist/src/components/MultiSelectField/internal/types.d.ts +0 -2
- package/dist/src/components/MultiSelectField/internal/useChipLayout.d.ts +1 -7
- package/dist/src/components/MultiSelectField/internal/useComboMultiple.d.ts +3 -20
- package/dist/src/components/MultiSelectField/internal/useSelectModeMultiple.d.ts +1 -6
- package/dist/src/components/MultiSelectField/parts.d.ts +0 -12
- package/dist/src/components/MultiSelectField/types.d.ts +97 -215
- package/dist/src/components/MultiSelectMenu/MultiSelectMenu.d.ts +1 -30
- package/dist/src/components/MultiSelectMenu/MultiSelectMenuSync.d.ts +10 -34
- package/dist/src/components/MultiSelectMenu/types.d.ts +75 -98
- package/dist/src/components/NumberField/NumberField.d.ts +76 -40
- package/dist/src/components/Overflow/Overflow.d.ts +17 -61
- package/dist/src/components/Overflow/OverflowText.d.ts +10 -60
- package/dist/src/components/Overflow/index.d.ts +4 -21
- package/dist/src/components/Page/Page.d.ts +8 -156
- package/dist/src/components/Page/PageContent.d.ts +4 -19
- package/dist/src/components/Page/PageContext.d.ts +9 -0
- package/dist/src/components/Page/PageFooter.d.ts +2 -15
- package/dist/src/components/Page/PageHeader.d.ts +40 -87
- package/dist/src/components/Page/PagePanel.d.ts +13 -52
- package/dist/src/components/Page/PageSidebar.d.ts +8 -41
- package/dist/src/components/Page/PageSidebarHeader.d.ts +2 -20
- package/dist/src/components/Page/pageBreakpoint.d.ts +6 -19
- package/dist/src/components/Pagination/Pagination.d.ts +44 -31
- package/dist/src/components/Pagination/internal/Pagination.d.ts +6 -23
- package/dist/src/components/Pagination/internal/PaginationItem.d.ts +5 -38
- package/dist/src/components/Pagination/internal/PaginationItemsPerPageMenu.d.ts +5 -35
- package/dist/src/components/Pagination/internal/PaginationOverflowMenu.d.ts +12 -52
- package/dist/src/components/Pagination/internal/usePaginationArray.d.ts +4 -19
- package/dist/src/components/Pagination/parts.d.ts +3 -14
- package/dist/src/components/Popover/Popover.d.ts +55 -296
- package/dist/src/components/Popover/PopoverButton.d.ts +2 -29
- package/dist/src/components/Popover/PopoverClose.d.ts +2 -28
- package/dist/src/components/Popover/PopoverContent.d.ts +8 -38
- package/dist/src/components/Popover/PopoverTrigger.d.ts +6 -32
- package/dist/src/components/Popover/internal/compareElements.d.ts +1 -0
- package/dist/src/components/Popover/internal/usePopoverContext.d.ts +1 -0
- package/dist/src/components/ProgressBar/ProgressBar.d.ts +17 -69
- package/dist/src/components/Radio/Radio.d.ts +3 -82
- package/dist/src/components/Radio/RadioGroup.d.ts +21 -73
- package/dist/src/components/Radio/internal/Radio.d.ts +22 -117
- package/dist/src/components/Radio/internal/RadioGroupContext.d.ts +2 -14
- package/dist/src/components/Radio/types.d.ts +2 -9
- package/dist/src/components/SearchField/SearchField.d.ts +5 -43
- package/dist/src/components/SearchField/internal/SearchField.d.ts +6 -53
- package/dist/src/components/SegmentedControl/SegmentedControl.d.ts +12 -82
- package/dist/src/components/SegmentedControl/SegmentedControlSegment.d.ts +12 -43
- package/dist/src/components/SegmentedControl/internal/SegmentedControlContext.d.ts +0 -15
- package/dist/src/components/SelectCard/SelectCard.d.ts +13 -78
- package/dist/src/components/SelectCard/SelectCardGroup.d.ts +13 -47
- package/dist/src/components/SelectCard/internal/SelectCardContext.d.ts +14 -51
- package/dist/src/components/SelectCard/internal/SelectCardProvider.d.ts +3 -29
- package/dist/src/components/SelectField/SelectField.d.ts +1 -21
- package/dist/src/components/SelectField/SelectFieldSync.d.ts +6 -44
- package/dist/src/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -4
- package/dist/src/components/SelectField/internal/SelectFieldInput.d.ts +1 -41
- package/dist/src/components/SelectField/internal/SelectFieldLabel.d.ts +3 -30
- package/dist/src/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -4
- package/dist/src/components/SelectField/internal/SelectFieldTrigger.d.ts +2 -5
- package/dist/src/components/SelectField/internal/useCombo.d.ts +1 -3
- package/dist/src/components/SelectField/internal/useSelectMode.d.ts +1 -4
- package/dist/src/components/SelectField/types.d.ts +95 -171
- package/dist/src/components/SelectMenu/SelectMenu.d.ts +1 -26
- package/dist/src/components/SelectMenu/SelectMenuSync.d.ts +6 -30
- package/dist/src/components/SelectMenu/internal/useMenuInteraction.d.ts +2 -0
- package/dist/src/components/SelectMenu/types.d.ts +65 -64
- package/dist/src/components/SelectTrigger/SelectTrigger.d.ts +19 -11
- package/dist/src/components/SelectTrigger/internal/SelectTriggerBase.d.ts +18 -2
- package/dist/src/components/SideNav/SideNav.d.ts +10 -77
- package/dist/src/components/SideNav/SideNavCollapsible.d.ts +14 -49
- package/dist/src/components/SideNav/SideNavContext.d.ts +0 -18
- package/dist/src/components/SideNav/SideNavGroup.d.ts +2 -27
- package/dist/src/components/SideNav/SideNavLink.d.ts +8 -35
- package/dist/src/components/SideNav/internal/SideNavContext.d.ts +1 -13
- package/dist/src/components/SideNav/internal/SideNavLink.d.ts +14 -50
- package/dist/src/components/SideNav/internal/SideNavProvider.d.ts +1 -17
- package/dist/src/components/SideNav/internal/utils.d.ts +1 -13
- package/dist/src/components/SideNav/useSideNav.d.ts +2 -3
- package/dist/src/components/Skeleton/SkeletonCircle.d.ts +5 -39
- package/dist/src/components/Skeleton/SkeletonPill.d.ts +5 -39
- package/dist/src/components/Skeleton/SkeletonRectangle.d.ts +5 -40
- package/dist/src/components/Skeleton/SkeletonText.d.ts +6 -43
- package/dist/src/components/Skeleton/index.d.ts +5 -0
- package/dist/src/components/Spinner/Spinner.d.ts +5 -34
- package/dist/src/components/SrOnly/SrOnly.d.ts +2 -13
- package/dist/src/components/Stepper/Stepper.d.ts +34 -210
- package/dist/src/components/Stepper/StepperFinalPanel.d.ts +2 -23
- package/dist/src/components/Stepper/StepperList.d.ts +1 -22
- package/dist/src/components/Stepper/StepperNextButton.d.ts +12 -52
- package/dist/src/components/Stepper/StepperPanel.d.ts +6 -37
- package/dist/src/components/Stepper/StepperPrevButton.d.ts +6 -32
- package/dist/src/components/Stepper/StepperStep.d.ts +8 -43
- package/dist/src/components/Stepper/base/StepperBase.d.ts +18 -67
- package/dist/src/components/Stepper/base/StepperBaseList.d.ts +1 -15
- package/dist/src/components/Stepper/base/StepperBasePanel.d.ts +6 -23
- package/dist/src/components/Stepper/base/StepperBaseStep.d.ts +14 -37
- package/dist/src/components/Stepper/internal/StepperWizardBootstrap.d.ts +4 -0
- package/dist/src/components/Stepper/internal/countRegisteredSteps.d.ts +1 -0
- package/dist/src/components/Switch/Switch.d.ts +14 -61
- package/dist/src/components/Tab/Tab.d.ts +14 -115
- package/dist/src/components/Tab/TabButton.d.ts +7 -39
- package/dist/src/components/Tab/TabList.d.ts +1 -20
- package/dist/src/components/Tab/TabPanel.d.ts +3 -24
- package/dist/src/components/Text/Text.d.ts +3 -32
- package/dist/src/components/Text/types.d.ts +13 -69
- package/dist/src/components/TextField/TextField.d.ts +6 -14
- package/dist/src/components/TextField/internal/TextField.d.ts +21 -11
- package/dist/src/components/Textarea/Textarea.d.ts +18 -57
- package/dist/src/components/Textarea/types.d.ts +7 -20
- package/dist/src/components/TimeField/TimeField.d.ts +14 -65
- package/dist/src/components/TimeField/internal/MaskedTimeInput.d.ts +10 -64
- package/dist/src/components/TimeField/internal/constants.d.ts +2 -12
- package/dist/src/components/TimeField/internal/maskito/timePlaceholderMask.d.ts +1 -13
- package/dist/src/components/TimeField/internal/types.d.ts +9 -14
- package/dist/src/components/TimeField/internal/utils/timeFormatting.d.ts +1 -8
- package/dist/src/components/TimeField/internal/utils/timeOptions.d.ts +2 -16
- package/dist/src/components/TimeField/internal/utils/timeParsing.d.ts +3 -29
- package/dist/src/components/TimeField/internal/utils/timeRounding.d.ts +5 -47
- package/dist/src/components/TimeField/internal/utils/timeValidation.d.ts +4 -22
- package/dist/src/components/Toast/Toaster.d.ts +2 -40
- package/dist/src/components/Toast/internal/Toast.d.ts +14 -75
- package/dist/src/components/Toast/internal/ToastProvider.d.ts +2 -64
- package/dist/src/components/Toast/internal/ToastStack.d.ts +13 -59
- package/dist/src/components/Toast/internal/Toaster.d.ts +18 -61
- package/dist/src/components/Toast/internal/ToasterPopover.d.ts +1 -16
- package/dist/src/components/Toast/internal/addOrUpdateToastHeight.d.ts +1 -6
- package/dist/src/components/Toast/internal/constants.d.ts +0 -15
- package/dist/src/components/Toast/internal/types.d.ts +1 -0
- package/dist/src/components/Toast/internal/useCloseToast.d.ts +1 -5
- package/dist/src/components/Toast/internal/useHotkeyFocus.d.ts +2 -10
- package/dist/src/components/Toast/internal/useShowMoreButtonPositionStyles.d.ts +1 -4
- package/dist/src/components/Toast/internal/useToastPositionStyles.d.ts +1 -5
- package/dist/src/components/Toast/internal/useToasts.d.ts +1 -5
- package/dist/src/components/Toast/toast.d.ts +14 -63
- package/dist/src/components/Toolbar/Toolbar.d.ts +16 -138
- package/dist/src/components/Toolbar/ToolbarButton.d.ts +4 -29
- package/dist/src/components/Toolbar/ToolbarButtonLink.d.ts +3 -28
- package/dist/src/components/Toolbar/ToolbarButtonToggle.d.ts +2 -24
- package/dist/src/components/Toolbar/ToolbarSelect.d.ts +12 -65
- package/dist/src/components/Toolbar/internal/ToolbarContext.d.ts +0 -31
- package/dist/src/components/Toolbar/internal/ToolbarItemOverflowContext.d.ts +0 -13
- package/dist/src/components/Toolbar/internal/ToolbarItemWrapper.d.ts +1 -24
- package/dist/src/components/Toolbar/internal/ToolbarOverflowMenu.d.ts +1 -23
- package/dist/src/components/Toolbar/internal/utils/accessibility.d.ts +4 -15
- package/dist/src/components/Toolbar/types.d.ts +7 -21
- package/dist/src/components/Tooltip/Tooltip.d.ts +17 -96
- package/dist/src/components/Tooltip/TooltipContent.d.ts +1 -23
- package/dist/src/components/Tooltip/TooltipTrigger.d.ts +3 -22
- package/dist/src/components/Tooltip/internal/TooltipContext.d.ts +0 -66
- package/dist/src/components/Tooltip/internal/useTooltipContext.d.ts +1 -14
- package/dist/{stripInlineMarkdown-CosQSmBr.js → stripInlineMarkdown-DmU2adBb.js} +2 -2
- package/dist/{stripInlineMarkdown-CosQSmBr.js.map → stripInlineMarkdown-DmU2adBb.js.map} +1 -1
- package/dist/{syncFilterUtils-_uwyt6FD.js → syncFilterUtils-CP4dhWVs.js} +3 -3
- package/dist/{syncFilterUtils-_uwyt6FD.js.map → syncFilterUtils-CP4dhWVs.js.map} +1 -1
- package/dist/token/core/component-variables.scss +145 -67
- package/dist/token/core/component.d.ts +39 -0
- package/dist/token/core/component.js +574 -67
- package/dist/token/core/component.scss +96 -57
- package/dist/token.js +613 -67
- package/dist/token.js.map +1 -1
- package/dist/{treeSync-Bp80Xduj.js → treeSync-CDrgjuw8.js} +3 -3
- package/dist/{treeSync-Bp80Xduj.js.map → treeSync-CDrgjuw8.js.map} +1 -1
- package/dist/useChipLayout-BBe6Tzyl.js.map +1 -1
- package/dist/useDrillDownContext-D5_NjqY4.js.map +1 -1
- package/dist/{useDrilldown-D5XGfAUT.js → useDrilldown-DV4qyVOI.js} +8 -3
- package/dist/{useDrilldown-D5XGfAUT.js.map → useDrilldown-DV4qyVOI.js.map} +1 -1
- package/dist/{useInfiniteCombobox-ORhH44Rp.js → useInfiniteCombobox-DvyQpdwv.js} +5 -5
- package/dist/{useInfiniteCombobox-ORhH44Rp.js.map → useInfiniteCombobox-DvyQpdwv.js.map} +1 -1
- package/dist/{useInitialFocus-CGybEc6x.js → useInitialFocus-0TZ78bPz.js} +2 -2
- package/dist/useInitialFocus-0TZ78bPz.js.map +1 -0
- package/dist/{useInvalidateOnOptionsChange-ieSgbkwT.js → useInvalidateOnOptionsChange-D3KWg4qK.js} +5 -5
- package/dist/{useInvalidateOnOptionsChange-ieSgbkwT.js.map → useInvalidateOnOptionsChange-D3KWg4qK.js.map} +1 -1
- package/dist/useMenuInteraction-nNF1dsrp.js.map +1 -1
- package/dist/{usePopoverTransitionStates-CDXCdyKa.js → usePopoverTransitionStates-B1opfxxn.js} +1 -2
- package/dist/{usePopoverTransitionStates-CDXCdyKa.js.map → usePopoverTransitionStates-B1opfxxn.js.map} +1 -1
- package/dist/utils-CM48ODEJ.js.map +1 -1
- package/package.json +2 -2
- package/dist/AiMark-CWufA6pV.js.map +0 -1
- package/dist/Alert-RkvFtmRP.js.map +0 -1
- package/dist/Avatar-DZxHhMTP.js.map +0 -1
- package/dist/Avatar-DkWoRhJu.js +0 -35
- package/dist/Avatar-DkWoRhJu.js.map +0 -1
- package/dist/Breadcrumbs-DbOrdao2.js.map +0 -1
- package/dist/Calendar-CK-AAaSG.js.map +0 -1
- package/dist/Checkbox-CboZhOtU.js.map +0 -1
- package/dist/Checkbox-Cn4iNLW_.js.map +0 -1
- package/dist/Chip-UbrxYEqs.js.map +0 -1
- package/dist/DateFieldRange-CpTxlASD.js.map +0 -1
- package/dist/DateFieldSingle-DR2kfrzh.js.map +0 -1
- package/dist/DateFieldYearless-4mS_2Mgw.js.map +0 -1
- package/dist/DateFieldYearlessRange-C-yvKBkJ.js.map +0 -1
- package/dist/DaysOfTheWeek-Bo4w8SsT.js.map +0 -1
- package/dist/Details-CVA5zbrR.js.map +0 -1
- package/dist/Dialog-Ds25dKQp.js.map +0 -1
- package/dist/Drawer-Da-bj_6o.js.map +0 -1
- package/dist/EditCard-CocV93gS.js.map +0 -1
- package/dist/FieldLabel-6aFKQfyD.js.map +0 -1
- package/dist/Grid-CvGQrIhE.js.map +0 -1
- package/dist/Layout-C2Q2hyLG.js.map +0 -1
- package/dist/List-BvzfZ9TW.js.map +0 -1
- package/dist/ListView-DFAWrwzi.js.map +0 -1
- package/dist/Listbox-BErqErNN.js.map +0 -1
- package/dist/Menu-BjPE_ODh.js.map +0 -1
- package/dist/MultiSelectFieldSync-CqWUidCm.js.map +0 -1
- package/dist/MultiSelectMenuSync-DG3rKyQc.js.map +0 -1
- package/dist/NumberField-DRYYJHec.js.map +0 -1
- package/dist/Page-BmpojvuI.js.map +0 -1
- package/dist/Pagination-Bc4fhdNm.js.map +0 -1
- package/dist/Popover-BgVOsP4J.js.map +0 -1
- package/dist/ProgressBar-Chb0uKfL.js.map +0 -1
- package/dist/Radio-DcNlFfSu.js.map +0 -1
- package/dist/Radio-gpMEsFss.js +0 -60
- package/dist/Radio-gpMEsFss.js.map +0 -1
- package/dist/SegmentedControl-CQ6DrbDc.js.map +0 -1
- package/dist/SelectCard-bp5hRyHK.js.map +0 -1
- package/dist/SelectFieldLabel-DZqxaZsp.js.map +0 -1
- package/dist/SelectFieldSync-Wkx6DGpg.js.map +0 -1
- package/dist/SelectMenuSync-O55TODxn.js.map +0 -1
- package/dist/SelectTrigger-BfJ7DWYq.js.map +0 -1
- package/dist/SelectTriggerBase-DvsI-kSG.js.map +0 -1
- package/dist/SideNav-BLXgM918.js.map +0 -1
- package/dist/Stepper-CCKHWlUr.js.map +0 -1
- package/dist/Switch-CrDmBj4D.js.map +0 -1
- package/dist/Tab-Bqfvg8Ce.js.map +0 -1
- package/dist/Text-CZccJAnm.js.map +0 -1
- package/dist/TextField-D0f9LwgQ.js.map +0 -1
- package/dist/TextField-DX5qyWPo.js.map +0 -1
- package/dist/Textarea-CdTcekFd.js.map +0 -1
- package/dist/TimeField-BxNglWQt.js.map +0 -1
- package/dist/Toaster-C-Z_FMbW.js.map +0 -1
- package/dist/Toaster-nyQgF9Ki.js.map +0 -1
- package/dist/Toolbar-BUbMtBVz.js.map +0 -1
- package/dist/Tooltip-B4MSqIpg.js.map +0 -1
- package/dist/YearlessDateInputWithPicker-CoomgSEK.js.map +0 -1
- package/dist/index-BwV_Pz7v.js.map +0 -1
- package/dist/makeZeroShortcutPreprocessor-CxsiGTRW.js.map +0 -1
- package/dist/useInitialFocus-CGybEc6x.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectTriggerBase-DvsI-kSG.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 [styles[\"is-disabled\"]]: disabled,\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 aria-disabled={disabled || undefined}\n onClick={disabled ? undefined : inputWrapperProps.onClick}\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":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SideNav-BLXgM918.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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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Stepper-CCKHWlUr.js","sources":["../src/components/Stepper/base/internal/StepperBaseContext.ts","../src/components/Stepper/base/internal/StepperStepIndexScope.tsx","../src/components/Stepper/base/StepperBaseList.tsx","../src/components/Stepper/base/StepperBaseStep.tsx","../src/components/Stepper/base/StepperBasePanel.tsx","../src/components/Stepper/base/StepperBase.tsx","../src/components/Stepper/StepperList.tsx","../src/components/Stepper/internal/StepperContext.ts","../src/components/Stepper/StepperStep.tsx","../src/components/Stepper/StepperPanel.tsx","../src/components/Stepper/StepperFinalPanel.tsx","../src/components/Stepper/internal/countRegisteredSteps.ts","../src/components/Stepper/StepperNextButton.tsx","../src/components/Stepper/StepperPrevButton.tsx","../src/components/Stepper/internal/StepperWizardBootstrap.tsx","../src/components/Stepper/Stepper.tsx"],"sourcesContent":["import { createContext, useContext, useRef, type RefObject } from \"react\";\n\n/** Per-step outcome. Independent of whether the step is current. */\nexport type StepperBaseStepState = \"not started\" | \"started\" | \"complete\";\n\nexport type StepperBaseStepInfo = {\n index: number;\n id?: string;\n label: string;\n disabled: boolean;\n node: RefObject<HTMLButtonElement | null>;\n};\n\nexport type StepperBaseContextValue = {\n currentIndex: number;\n interactive: boolean;\n focusIndex: number;\n setFocusIndex: (index: number) => void;\n requestIndexChange: (index: number) => void;\n registerStep: (info: StepperBaseStepInfo) => () => void;\n getStep: (index: number) => StepperBaseStepInfo | undefined;\n getCurrentStep: () => StepperBaseStepInfo | undefined;\n getPanelId: (stepId: string) => string | undefined;\n registerPanel: (stepId: string, panelId: string) => () => void;\n};\n\nexport const StepperBaseContext = createContext<StepperBaseContextValue>({\n currentIndex: 0,\n interactive: false,\n focusIndex: 0,\n setFocusIndex: () => undefined,\n requestIndexChange: () => undefined,\n registerStep: () => () => undefined,\n getStep: () => undefined,\n getCurrentStep: () => undefined,\n getPanelId: () => undefined,\n registerPanel: () => () => undefined,\n});\n\n/**\n * Hands out 0-based indices in render order, so steps work inside fragments and\n * wrapper components rather than only as direct List children. Each render of\n * StepperStepIndexScope starts a new pass.\n */\nexport type StepperBaseStepIndexPass = {\n allocate: () => number;\n};\n\nexport const StepperBaseStepIndexPassContext =\n createContext<StepperBaseStepIndexPass | null>(null);\n\ntype AllocatedIndex = {\n pass: StepperBaseStepIndexPass;\n index: number;\n};\n\n/**\n * Index of the calling step, or undefined when it renders outside a List.\n *\n * A step allocates at most once per pass, so it keeps its index when it\n * re-renders alone and when StrictMode renders it twice.\n */\nexport function useStepperStepIndex() {\n const pass = useContext(StepperBaseStepIndexPassContext);\n const allocated = useRef<AllocatedIndex | null>(null);\n\n if (!pass) return undefined;\n\n if (allocated.current?.pass !== pass) {\n allocated.current = { pass, index: pass.allocate() };\n }\n\n return allocated.current.index;\n}\n","import type { ReactNode } from \"react\";\n\nimport {\n StepperBaseStepIndexPassContext,\n type StepperBaseStepIndexPass,\n} from \"./StepperBaseContext\";\n\nfunction startIndexPass(): StepperBaseStepIndexPass {\n let nextIndex = 0;\n\n return {\n allocate: () => {\n const index = nextIndex;\n nextIndex += 1;\n return index;\n },\n };\n}\n\nexport function StepperStepIndexScope({ children }: { children: ReactNode }) {\n return (\n <StepperBaseStepIndexPassContext.Provider value={startIndexPass()}>\n {children}\n </StepperBaseStepIndexPassContext.Provider>\n );\n}\n","import { type ComponentPropsWithoutRef, forwardRef, useContext } from \"react\";\nimport cx from \"classnames\";\n\nimport { StepperBaseContext } from \"./internal/StepperBaseContext\";\nimport { StepperStepIndexScope } from \"./internal/StepperStepIndexScope\";\n\nimport styles from \"../StepperList.module.scss\";\n\n/**\n * Props for the StepperBase.List component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type StepperBaseListProps = ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Container for StepperBase steps.\n *\n * Features:\n * - Groups steps in the track\n * - Shows the current step label on small widths\n * - Accessible tablist\n *\n * @example\n * <StepperBase.List>\n * <StepperBase.Step>One</StepperBase.Step>\n * <StepperBase.Step>Two</StepperBase.Step>\n * </StepperBase.List>\n */\nexport const StepperBaseList = forwardRef<HTMLDivElement, StepperBaseListProps>(\n (props, ref) => {\n const { className, children, ...rest } = props;\n const { getCurrentStep } = useContext(StepperBaseContext);\n const currentLabel = getCurrentStep()?.label;\n\n return (\n <div\n {...rest}\n className={cx(styles[\"stepper-list\"], className)}\n data-anv=\"stepper-base-list\"\n ref={ref}\n role=\"tablist\"\n >\n <div className={styles[\"stepper-steps\"]}>\n <StepperStepIndexScope>{children}</StepperStepIndexScope>\n </div>\n <span className={styles.label}>{currentLabel}</span>\n </div>\n );\n },\n);\n\nStepperBaseList.displayName = \"StepperBaseList\";\n","import {\n forwardRef,\n useContext,\n useLayoutEffect,\n useRef,\n type KeyboardEvent,\n type MouseEvent,\n type ComponentPropsWithoutRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\n\nimport { Icon } from \"../../Icon\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport {\n StepperBaseContext,\n useStepperStepIndex,\n type StepperBaseStepState,\n} from \"./internal/StepperBaseContext\";\n\nimport styles from \"../StepperStep.module.scss\";\n\nexport type { StepperBaseStepState };\n\n/**\n * Props for the StepperBase.Step component\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type StepperBaseStepProps = Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"onClick\" | \"disabled\"\n> & {\n /**\n * Outcome of this step. Independent of whether it is current (index).\n * Current + any state is legal.\n * @default \"not started\"\n */\n state?: StepperBaseStepState;\n\n /**\n * Stable id. Required when a Panel points at this step.\n */\n id?: string;\n\n /**\n * When true, this step cannot become current via click or keyboard.\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Notify only. Does not replace onIndexChange.\n * @param e Mouse event\n * @param index Index of the step in the list\n */\n onClick?: (e: MouseEvent<HTMLButtonElement>, index?: number) => void;\n};\n\n/**\n * Individual step for StepperBase.\n *\n * Features:\n * - Outcome independent of the current step\n * - Check icon when complete\n * - Optional id for panel pairing\n *\n * @example\n * <StepperBase.Step id=\"approved\" state=\"complete\">\n * Approved\n * </StepperBase.Step>\n */\nexport const StepperBaseStep = forwardRef<\n HTMLButtonElement,\n StepperBaseStepProps\n>((props, ref) => {\n const stepRef = useRef<HTMLButtonElement>(null);\n const index = useStepperStepIndex();\n const {\n currentIndex,\n interactive,\n focusIndex,\n setFocusIndex,\n requestIndexChange,\n registerStep,\n getStep,\n getPanelId,\n } = useContext(StepperBaseContext);\n const {\n state = \"not started\",\n id,\n disabled = false,\n onClick,\n children,\n onKeyDown,\n className,\n \"aria-label\": ariaLabel,\n ...rest\n } = props;\n\n const childrenText =\n typeof children === \"string\"\n ? children\n : typeof children === \"number\"\n ? String(children)\n : undefined;\n const label = childrenText || ariaLabel || \"\";\n\n useLayoutEffect(() => {\n if (index === undefined) return;\n return registerStep({\n index,\n id,\n label,\n disabled,\n node: stepRef,\n });\n }, [disabled, id, index, label, registerStep]);\n\n const selected = index === currentIndex;\n const completed = state === \"complete\";\n const panelId = id ? getPanelId(id) : undefined;\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e, index);\n if (index === undefined) return;\n requestIndexChange(index);\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (!interactive || index === undefined) return;\n\n const activatable: number[] = [];\n for (let i = 0; ; i += 1) {\n const step = getStep(i);\n if (!step) break;\n if (!step.disabled) activatable.push(i);\n }\n if (activatable.length === 0) return;\n\n const currentPos = activatable.indexOf(focusIndex);\n const safePos = currentPos === -1 ? 0 : currentPos;\n\n switch (e.code) {\n case \"Enter\":\n case \"Space\":\n e.preventDefault();\n requestIndexChange(focusIndex);\n break;\n case \"ArrowRight\": {\n e.preventDefault();\n const next = activatable[(safePos + 1) % activatable.length];\n setFocusIndex(next);\n getStep(next)?.node.current?.focus();\n break;\n }\n case \"ArrowLeft\": {\n e.preventDefault();\n const prev =\n activatable[(safePos - 1 + activatable.length) % activatable.length];\n setFocusIndex(prev);\n getStep(prev)?.node.current?.focus();\n break;\n }\n default:\n break;\n }\n };\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n data-anv=\"stepper-base-step\"\n data-state={state}\n data-completed={completed}\n className={cx(styles[\"stepper-step\"], className, {\n [styles[\"can-navigate\"]]: interactive,\n })}\n aria-selected={selected}\n aria-controls={panelId}\n aria-disabled={disabled || undefined}\n aria-label={childrenText || ariaLabel}\n tabIndex={interactive && index === focusIndex && !disabled ? 0 : -1}\n onClick={onClickHandler}\n onKeyDown={interactive ? onKeyDownHandler : onKeyDown}\n {...rest}\n id={id}\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 {children}\n </span>\n </button>\n );\n});\n\nStepperBaseStep.displayName = \"StepperBaseStep\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useContext,\n useId,\n useLayoutEffect,\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 { StepperBaseContext } from \"./internal/StepperBaseContext\";\n\nimport styles from \"../StepperPanel.module.scss\";\n\n/**\n * Props for the StepperBase.Panel component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type StepperBasePanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps & {\n /**\n * id of the controlling Step.\n */\n step: string;\n\n /**\n * Panel element id. Generated when omitted (used for aria-controls).\n */\n id?: string;\n };\n\n/**\n * Content panel for a StepperBase step.\n *\n * Features:\n * - Shown only when the named step is current\n * - Fade-in animation\n * - Overflow scrolling for long content\n *\n * @example\n * <StepperBase.Panel step=\"approved\">\n * Details\n * </StepperBase.Panel>\n */\nexport const StepperBasePanel = forwardRef<\n HTMLDivElement,\n StepperBasePanelProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n step,\n id: idProp,\n className,\n style,\n children,\n ...rest\n } = componentProps;\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const { getCurrentStep, registerPanel } = useContext(StepperBaseContext);\n const currentStep = getCurrentStep();\n const isCurrent = currentStep?.id === step;\n\n useLayoutEffect(() => {\n return registerPanel(step, id);\n }, [id, registerPanel, step]);\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n if (!isCurrent) {\n return null;\n }\n\n return (\n <motion.div\n style={styleCombined}\n className={cx(styles[\"stepper-panel\"], className)}\n transition={{\n opacity: {\n duration: +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-base-panel\"\n id={id}\n ref={ref}\n >\n <Overflow flexGrow={1}>{children}</Overflow>\n </motion.div>\n );\n});\n\nStepperBasePanel.displayName = \"StepperBasePanel\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\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 {\n useLayoutPropsUtil,\n useOptionallyControlledState,\n} from \"../../../internal/hooks\";\n\nimport { StepperBaseList } from \"./StepperBaseList\";\nimport { StepperBaseStep } from \"./StepperBaseStep\";\nimport { StepperBasePanel } from \"./StepperBasePanel\";\nimport {\n StepperBaseContext,\n type StepperBaseContextValue,\n type StepperBaseStepInfo,\n} from \"./internal/StepperBaseContext\";\n\nimport styles from \"../Stepper.module.scss\";\n\n/**\n * Props for the StepperBase component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type StepperBaseProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps & {\n /**\n * Controlled current step (0-based). Pair with onIndexChange.\n */\n index?: number;\n\n /**\n * Uncontrolled start. Ignored when index is set.\n * @default 0\n */\n defaultIndex?: number;\n\n /**\n * Fired when a step is activated.\n * @param index The index of the newly current step\n */\n onIndexChange?: (index: number) => void;\n\n /**\n * When true, click and keyboard can change the current step.\n * @default false\n */\n interactive?: boolean;\n };\n\n/**\n * StepperBase is a controllable stepper primitive. The caller sets the current\n * step and each step's outcome. Use Stepper for the linear wizard.\n *\n * Features:\n * - Controlled or uncontrolled current step via index / defaultIndex / onIndexChange\n * - Per-step outcome (not started, started, complete) independent of current\n * - Optional panels; a panel names its step, steps do not require panels\n * - Display-only by default; opt into click/keyboard with interactive\n * - Same track, circle, and compact-label chrome as Stepper\n *\n * @example\n * <StepperBase index={2}>\n * <StepperBase.List>\n * <StepperBase.Step state=\"complete\">Approved</StepperBase.Step>\n * <StepperBase.Step state=\"complete\">Approved & Reconciled</StepperBase.Step>\n * <StepperBase.Step>Scheduled</StepperBase.Step>\n * </StepperBase.List>\n * </StepperBase>\n */\nexport const StepperBase = Object.assign(\n forwardRef<HTMLDivElement, StepperBaseProps>(\n function StepperBaseInner(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n index,\n defaultIndex = 0,\n onIndexChange,\n interactive = false,\n className,\n children,\n style,\n ...rest\n } = componentProps;\n\n const rootRef = useRef<HTMLDivElement>(null);\n const [currentIndex, setCurrentIndex] = useOptionallyControlledState({\n controlledValue: index,\n defaultValue: defaultIndex,\n onChange: onIndexChange,\n });\n const [focusIndex, setFocusIndex] = useState(index ?? defaultIndex);\n\n useEffect(() => {\n setFocusIndex(currentIndex);\n }, [currentIndex]);\n const stepsRef = useRef<Map<number, StepperBaseStepInfo>>(new Map());\n const [stepsVersion, setStepsVersion] = useState(0);\n const panelsRef = useRef<Map<string, string>>(new Map());\n const [panelsVersion, setPanelsVersion] = useState(0);\n\n const bumpSteps = useCallback(() => {\n setStepsVersion((value) => value + 1);\n }, []);\n\n const bumpPanels = useCallback(() => {\n setPanelsVersion((value) => value + 1);\n }, []);\n\n const registerStep = useCallback(\n (info: StepperBaseStepInfo) => {\n stepsRef.current.set(info.index, info);\n bumpSteps();\n return () => {\n const current = stepsRef.current.get(info.index);\n if (current === info) {\n stepsRef.current.delete(info.index);\n bumpSteps();\n }\n };\n },\n [bumpSteps],\n );\n\n const getStep = useCallback((stepIndex: number) => {\n return stepsRef.current.get(stepIndex);\n }, []);\n\n const getCurrentStep = useCallback(() => {\n return stepsRef.current.get(currentIndex);\n }, [currentIndex]);\n\n const requestIndexChange = useCallback(\n (nextIndex: number) => {\n if (!interactive) return;\n const target = stepsRef.current.get(nextIndex);\n if (target?.disabled) return;\n setCurrentIndex(nextIndex);\n setFocusIndex(nextIndex);\n },\n [interactive, setCurrentIndex],\n );\n\n const registerPanel = useCallback(\n (stepId: string, panelId: string) => {\n panelsRef.current.set(stepId, panelId);\n bumpPanels();\n return () => {\n if (panelsRef.current.get(stepId) === panelId) {\n panelsRef.current.delete(stepId);\n bumpPanels();\n }\n };\n },\n [bumpPanels],\n );\n\n const getPanelId = useCallback((stepId: string) => {\n return panelsRef.current.get(stepId);\n }, []);\n\n const value = useMemo<StepperBaseContextValue>(\n () => ({\n currentIndex,\n interactive,\n focusIndex,\n setFocusIndex,\n requestIndexChange,\n registerStep,\n getStep,\n getCurrentStep,\n getPanelId,\n registerPanel,\n }),\n [\n currentIndex,\n interactive,\n focusIndex,\n requestIndexChange,\n registerStep,\n getStep,\n getCurrentStep,\n getPanelId,\n registerPanel,\n stepsVersion,\n panelsVersion,\n ],\n );\n\n const styleCombined = { ...style, ...layoutStyles };\n\n return (\n <StepperBaseContext.Provider value={value}>\n <motion.div\n transition={{ duration: 0 }}\n layout\n className={cx(styles.stepper, className)}\n data-anv=\"stepper-base\"\n style={styleCombined}\n {...rest}\n ref={useMergeRefs([rootRef, ref])}\n >\n {children}\n </motion.div>\n </StepperBaseContext.Provider>\n );\n },\n ),\n {\n /**\n * Individual step. Outcome is independent of whether the step is current.\n *\n * Features:\n * - state: not started, started, or complete\n * - Optional id when a panel points at this step\n * - Check icon when complete\n *\n * @example\n * <StepperBase.Step state=\"complete\">Approved</StepperBase.Step>\n */\n Step: StepperBaseStep,\n\n /**\n * Track of steps plus the compact label on small widths.\n *\n * Features:\n * - Lays out StepperBase.Step children\n * - Shows the current step label when the track is narrow\n *\n * @example\n * <StepperBase.List>\n * <StepperBase.Step>Scheduled</StepperBase.Step>\n * </StepperBase.List>\n */\n List: StepperBaseList,\n\n /**\n * Content for one step. Visible when that step is current.\n *\n * Features:\n * - step is required and must match a Step id\n * - id is optional and generated when omitted\n *\n * @example\n * <StepperBase.Panel step=\"approved\">Details</StepperBase.Panel>\n */\n Panel: StepperBasePanel,\n },\n);\nStepperBase.displayName = \"StepperBase\";\n","import { type ComponentPropsWithoutRef, forwardRef, useContext } from \"react\";\nimport cx from \"classnames\";\n\nimport { StepperBaseContext } from \"./base/internal/StepperBaseContext\";\nimport { StepperStepIndexScope } from \"./base/internal/StepperStepIndexScope\";\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: _onKeyDown, ...rest } = props;\n const { getCurrentStep } = useContext(StepperBaseContext);\n const currentLabel = getCurrentStep()?.label;\n\n const tabListClassNames = cx(styles[\"stepper-list\"], className);\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\"]}>\n <StepperStepIndexScope>{children}</StepperStepIndexScope>\n </div>\n <span className={styles.label}>{currentLabel}</span>\n </div>\n );\n },\n);\n\nStepperList.displayName = \"StepperList\";\n","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 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 {\n forwardRef,\n useContext,\n useLayoutEffect,\n useRef,\n type KeyboardEvent,\n type MouseEvent,\n type ComponentPropsWithoutRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\n\nimport { Icon } from \"../Icon\";\nimport { useMergeRefs } from \"../../hooks\";\nimport {\n StepperBaseContext,\n useStepperStepIndex,\n} from \"./base/internal/StepperBaseContext\";\nimport { StepperContext } from \"./internal/StepperContext\";\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 index = useStepperStepIndex();\n const { registerStep, getStep } = useContext(StepperBaseContext);\n const {\n current,\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 childrenText =\n typeof children === \"string\"\n ? children\n : typeof children === \"number\"\n ? String(children)\n : undefined;\n const label = childrenText || ariaLabel || \"\";\n\n useLayoutEffect(() => {\n if (index === undefined) return;\n return registerStep({\n index,\n id: controls,\n label,\n disabled: false,\n node: stepRef,\n });\n }, [controls, index, label, registerStep]);\n\n const selected = index === current;\n const completed = index !== undefined && index < current;\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);\n if (\n !allowNavigateToPrevStep ||\n selected ||\n index === undefined ||\n index > current\n ) {\n return;\n }\n setCurrent(index);\n setFocus(index);\n stepRef.current?.focus();\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n const focusableItems: HTMLElement[] = [];\n for (let i = 0; i <= current; i += 1) {\n const node = getStep(i)?.node.current;\n if (node) focusableItems.push(node);\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 return;\n }\n setFocus(nextFocus);\n focusableItems[nextFocus].focus();\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 return;\n }\n setFocus(prevFocus);\n focusableItems[prevFocus].focus();\n break;\n }\n };\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={\n allowNavigateToPrevStep && index === focus && !allCompleted ? 0 : -1\n }\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 { StepperBaseContext } from \"./base/internal/StepperBaseContext\";\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 { allCompleted, setCurrentId } = useContext(StepperContext);\n const { getCurrentStep } = useContext(StepperBaseContext);\n\n const currentStepId = getCurrentStep()?.id;\n const isCurrent = currentStepId === id;\n\n useEffect(() => {\n if (isCurrent && !allCompleted) {\n setCurrentId(currentStepId ?? \"\");\n }\n }, [allCompleted, isCurrent, currentStepId, 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 type { StepperBaseContextValue } from \"../base/internal/StepperBaseContext\";\n\nexport function countRegisteredSteps(\n getStep: StepperBaseContextValue[\"getStep\"],\n): number {\n let count = 0;\n while (getStep(count)) count += 1;\n return count;\n}\n","import { forwardRef, useContext, type MouseEvent } from \"react\";\n\nimport { Button, type ButtonProps } from \"../Button\";\nimport type { DataTrackingId } from \"../../types\";\nimport { useTrackingId } from \"../../hooks\";\nimport { StepperBaseContext } from \"./base/internal/StepperBaseContext\";\n\nimport { StepperContext } from \"./internal/StepperContext\";\nimport { countRegisteredSteps } from \"./internal/countRegisteredSteps\";\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 current,\n allCompleted,\n } = useContext(StepperContext);\n const { getStep } = useContext(StepperBaseContext);\n const stepCount = countRegisteredSteps(getStep);\n const isLastStep = stepCount > 0 && current === stepCount - 1;\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 (isLastStep) {\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 {isLastStep ? 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 { setCurrent, setFocus, allCompleted, setAllCompleted, current } =\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 } 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 { useContext, useEffect, useRef } from \"react\";\n\nimport { StepperBaseContext } from \"../base/internal/StepperBaseContext\";\n\nimport { countRegisteredSteps } from \"./countRegisteredSteps\";\nimport { StepperContext } from \"./StepperContext\";\n\nexport function StepperWizardBootstrap({\n defaultIndex,\n}: {\n defaultIndex?: number;\n}) {\n const { getStep } = useContext(StepperBaseContext);\n const { setAllCompleted, setCurrent, setFocus } = useContext(StepperContext);\n const didBootstrap = useRef(false);\n const hasSteps = !!getStep(0);\n\n useEffect(() => {\n if (didBootstrap.current || !hasSteps) return;\n didBootstrap.current = true;\n\n const stepCount = countRegisteredSteps(getStep);\n if (defaultIndex !== undefined && defaultIndex >= stepCount) {\n const lastIndex = stepCount - 1;\n setAllCompleted?.(true);\n setCurrent(lastIndex);\n setFocus(lastIndex);\n }\n }, [defaultIndex, getStep, hasSteps, setAllCompleted, setCurrent, setFocus]);\n\n return null;\n}\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\nimport type { LayoutUtilProps } from \"../../types\";\nimport { StepperBase } from \"./base\";\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\";\nimport { StepperWizardBootstrap } from \"./internal/StepperWizardBootstrap\";\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 {\n defaultIndex,\n allowNavigateToPrevStep,\n children,\n onChange,\n onComplete,\n ...rest\n } = props;\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\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 value = useMemo(\n () => ({\n current,\n setCurrent,\n currentId,\n setCurrentId,\n focus,\n setFocus,\n onComplete,\n allCompleted,\n setAllCompleted,\n allowNavigateToPrevStep,\n }),\n [\n current,\n currentId,\n focus,\n onComplete,\n allCompleted,\n allowNavigateToPrevStep,\n ],\n );\n\n return (\n <StepperBase\n index={current}\n interactive={false}\n data-anv=\"stepper\"\n {...rest}\n ref={ref}\n >\n <StepperContext.Provider value={value}>\n <StepperWizardBootstrap defaultIndex={defaultIndex} />\n {children}\n </StepperContext.Provider>\n </StepperBase>\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","value"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Switch-CrDmBj4D.js","sources":["../src/components/Switch/Switch.tsx"],"sourcesContent":["import {\n type ChangeEvent,\n type ComponentPropsWithoutRef,\n type ReactElement,\n type Ref,\n forwardRef,\n useId,\n} from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport type {\n AiMarkWithTooltipOrPopoverProps,\n DataTrackingId,\n LayoutUtilProps,\n} from \"../../types\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport Icon from \"../Icon\";\nimport Flex from \"../Flex\";\nimport { Helper } from \"../../internal/components\";\nimport { AiMark } from \"../../components/AiMark\";\n\nimport cx from \"classnames\";\nimport styles from \"./Switch.module.scss\";\n\n/**\n * State object returned by the Switch onChange callback\n */\nexport type SwitchState = {\n /**\n * Whether the switch is currently checked\n */\n checked: boolean;\n /**\n * The value of the switch input\n */\n value?: string | number | readonly string[];\n};\n\n/**\n * Props for the Switch component\n * @extends ComponentPropsWithoutRef<\"input\">\n * @extends LayoutUtilProps\n */\nexport type SwitchProps = Omit<ComponentPropsWithoutRef<\"input\">, \"onChange\"> &\n LayoutUtilProps & {\n /**\n * Callback when switch is changed.\n * @param e Change event object\n * @param state Current switch state with checked status and value\n */\n onChange?: (e: ChangeEvent<HTMLInputElement>, state: SwitchState) => void;\n\n /**\n * Label for the switch.\n * @remarks This should either be a string or have text content inside for accessibility\n */\n label?: ReactElement | string;\n\n /**\n * AI mark configuration to display next to the label.\n * Can be a boolean to show a simple AI mark, or an object with tooltip/popover configuration.\n */\n labelAiMark?: AiMarkWithTooltipOrPopoverProps[\"aiMark\"];\n\n /**\n * Description text to display below the label\n */\n description?: string;\n } & DataTrackingId;\n\n/**\n * Switch component for toggling between on/off states.\n *\n * Features:\n * - Toggle switch with smooth animations\n * - Check icon indicator when active\n * - Accessible with proper ARIA roles and attributes\n * - Keyboard navigation support (Space/Enter)\n * - Controlled and uncontrolled state management\n * - Customizable label and styling\n * - Layout utilities for positioning and spacing\n * - Focus management with visible focus indicators\n * - Hover states and visual feedback\n * - Disabled state support\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Switch\n * label=\"Enable notifications\"\n * onChange={(e, state) => console.log('Switch toggled:', state.checked)}\n * />\n */\nexport const Switch = forwardRef(\n (props: SwitchProps, ref: Ref<HTMLInputElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n label,\n labelAiMark,\n description,\n className,\n onChange,\n checked,\n defaultChecked,\n value,\n style,\n \"aria-label\": ariaLabel,\n ...rest\n } = componentProps;\n\n const helperUid = useId();\n\n const onChangeHandler = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(e, { value, checked: e.target.checked });\n };\n\n const data = {\n label: childrenToString(label),\n ariaLabel: ariaLabel || \"Toggle option\",\n ariaLabelledBy: rest[\"aria-labelledby\"],\n value,\n };\n\n const trackingId = useTrackingId({\n name: \"Switch\",\n data,\n hasOverride: !!rest[\"data-tracking-id\"],\n });\n\n const switchClassNames = cx(styles[\"switch\"], className);\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n alignItems: description ? \"flex-start\" : \"center\",\n };\n\n return (\n <label className={switchClassNames} style={styleCombined}>\n <input\n className={styles[\"input\"]}\n data-tracking-id={trackingId}\n data-anv=\"switch\"\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n value={value}\n aria-checked={checked ?? defaultChecked}\n aria-label={label ? undefined : ariaLabel || \"Toggle option\"}\n checked={checked}\n defaultChecked={defaultChecked}\n onChange={onChangeHandler}\n {...rest}\n />\n <span aria-hidden className={styles[\"toggle\"]}>\n <span className={styles[\"thumb\"]}>\n <Icon svg={Check} className={styles[\"check\"]} />\n </span>\n </span>\n {label || description ? (\n <Flex direction=\"column\" gap={1}>\n <Flex alignItems=\"center\" gap={2}>\n {label}\n {labelAiMark && (\n <AiMark\n className={styles[\"ai-mark-icon\"]}\n type=\"gradient\"\n popoverOrTooltipConfig={\n typeof labelAiMark === \"object\" ? labelAiMark : undefined\n }\n />\n )}\n </Flex>\n {description && <Helper id={helperUid} description={description} />}\n </Flex>\n ) : null}\n </label>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n"],"names":["Check"],"mappings":"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"}
|
package/dist/Tab-Bqfvg8Ce.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tab-Bqfvg8Ce.js","sources":["../../../node_modules/.pnpm/framer-motion@12.23.12_@emotion+is-prop-valid@1.4.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","../../../node_modules/.pnpm/framer-motion@12.23.12_@emotion+is-prop-valid@1.4.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","../../../node_modules/.pnpm/framer-motion@12.23.12_@emotion+is-prop-valid@1.4.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs","../../../node_modules/.pnpm/framer-motion@12.23.12_@emotion+is-prop-valid@1.4.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs","../src/components/Tab/internal/TabContext.tsx","../src/components/Tab/TabButton.tsx","../../hammer-icon/mdi/round/arrow_back.svg","../../hammer-icon/mdi/round/arrow_forward.svg","../src/components/Tab/TabList.tsx","../src/components/Tab/TabPanel.tsx","../src/components/Tab/Tab.tsx"],"sourcesContent":["\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { isHTMLElement } from 'motion-dom';\nimport * as React from 'react';\nimport { useId, useRef, useContext, useInsertionEffect } from 'react';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n getSnapshotBeforeUpdate(prevProps) {\n const element = this.props.childRef.current;\n if (element && prevProps.isPresent && !this.props.isPresent) {\n const parent = element.offsetParent;\n const parentWidth = isHTMLElement(parent)\n ? parent.offsetWidth || 0\n : 0;\n const size = this.props.sizeRef.current;\n size.height = element.offsetHeight || 0;\n size.width = element.offsetWidth || 0;\n size.top = element.offsetTop;\n size.left = element.offsetLeft;\n size.right = parentWidth - size.width - size.left;\n }\n return null;\n }\n /**\n * Required with getSnapshotBeforeUpdate to stop React complaining.\n */\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\nfunction PopChild({ children, isPresent, anchorX, root }) {\n const id = useId();\n const ref = useRef(null);\n const size = useRef({\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n right: 0,\n });\n const { nonce } = useContext(MotionConfigContext);\n /**\n * We create and inject a style block so we can apply this explicit\n * sizing in a non-destructive manner by just deleting the style block.\n *\n * We can't apply size via render as the measurement happens\n * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n * styles directly on the DOM node, we might be overwriting\n * styles set via the style prop.\n */\n useInsertionEffect(() => {\n const { width, height, top, left, right } = size.current;\n if (isPresent || !ref.current || !width || !height)\n return;\n const x = anchorX === \"left\" ? `left: ${left}` : `right: ${right}`;\n ref.current.dataset.motionPopId = id;\n const style = document.createElement(\"style\");\n if (nonce)\n style.nonce = nonce;\n const parent = root ?? document.head;\n parent.appendChild(style);\n if (style.sheet) {\n style.sheet.insertRule(`\n [data-motion-pop-id=\"${id}\"] {\n position: absolute !important;\n width: ${width}px !important;\n height: ${height}px !important;\n ${x}px !important;\n top: ${top}px !important;\n }\n `);\n }\n return () => {\n if (parent.contains(style)) {\n parent.removeChild(style);\n }\n };\n }, [isPresent]);\n return (jsx(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) }));\n}\n\nexport { PopChild };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, anchorX, root }) => {\n const presenceChildren = useConstant(newChildrenMap);\n const id = useId();\n let isReusedContext = true;\n let context = useMemo(() => {\n isReusedContext = false;\n return {\n id,\n initial,\n isPresent,\n custom,\n onExitComplete: (childId) => {\n presenceChildren.set(childId, true);\n for (const isComplete of presenceChildren.values()) {\n if (!isComplete)\n return; // can stop searching when any is incomplete\n }\n onExitComplete && onExitComplete();\n },\n register: (childId) => {\n presenceChildren.set(childId, false);\n return () => presenceChildren.delete(childId);\n },\n };\n }, [isPresent, presenceChildren, onExitComplete]);\n /**\n * If the presence of a child affects the layout of the components around it,\n * we want to make a new context value to ensure they get re-rendered\n * so they can detect that layout change.\n */\n if (presenceAffectsLayout && isReusedContext) {\n context = { ...context };\n }\n useMemo(() => {\n presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n React.useEffect(() => {\n !isPresent &&\n !presenceChildren.size &&\n onExitComplete &&\n onExitComplete();\n }, [isPresent]);\n if (mode === \"popLayout\") {\n children = (jsx(PopChild, { isPresent: isPresent, anchorX: anchorX, root: root, children: children }));\n }\n return (jsx(PresenceContext.Provider, { value: context, children: children }));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import { Children, isValidElement } from 'react';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction onlyElements(children) {\n const filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, (child) => {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n\nexport { getChildKey, onlyElements };\n","\"use client\";\nimport { jsx, Fragment } from 'react/jsx-runtime';\nimport { useMemo, useRef, useState, useContext } from 'react';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { usePresence } from './use-presence.mjs';\nimport { onlyElements, getChildKey } from './utils.mjs';\n\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * <AnimatePresence>\n * {items.map(item => (\n * <motion.div\n * key={item.id}\n * initial={{ opacity: 0 }}\n * animate={{ opacity: 1 }}\n * exit={{ opacity: 0 }}\n * />\n * ))}\n * </AnimatePresence>\n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = \"sync\", propagate = false, anchorX = \"left\", root }) => {\n const [isParentPresent, safeToRemove] = usePresence(propagate);\n /**\n * Filter any children that aren't ReactElements. We can only track components\n * between renders with a props.key.\n */\n const presentChildren = useMemo(() => onlyElements(children), [children]);\n /**\n * Track the keys of the currently rendered children. This is used to\n * determine which children are exiting.\n */\n const presentKeys = propagate && !isParentPresent ? [] : presentChildren.map(getChildKey);\n /**\n * If `initial={false}` we only want to pass this to components in the first render.\n */\n const isInitialRender = useRef(true);\n /**\n * A ref containing the currently present children. When all exit animations\n * are complete, we use this to re-render the component with the latest children\n * *committed* rather than the latest children *rendered*.\n */\n const pendingPresentChildren = useRef(presentChildren);\n /**\n * Track which exiting children have finished animating out.\n */\n const exitComplete = useConstant(() => new Map());\n /**\n * Save children to render as React state. To ensure this component is concurrent-safe,\n * we check for exiting children via an effect.\n */\n const [diffedChildren, setDiffedChildren] = useState(presentChildren);\n const [renderedChildren, setRenderedChildren] = useState(presentChildren);\n useIsomorphicLayoutEffect(() => {\n isInitialRender.current = false;\n pendingPresentChildren.current = presentChildren;\n /**\n * Update complete status of exiting children.\n */\n for (let i = 0; i < renderedChildren.length; i++) {\n const key = getChildKey(renderedChildren[i]);\n if (!presentKeys.includes(key)) {\n if (exitComplete.get(key) !== true) {\n exitComplete.set(key, false);\n }\n }\n else {\n exitComplete.delete(key);\n }\n }\n }, [renderedChildren, presentKeys.length, presentKeys.join(\"-\")]);\n const exitingChildren = [];\n if (presentChildren !== diffedChildren) {\n let nextChildren = [...presentChildren];\n /**\n * Loop through all the currently rendered components and decide which\n * are exiting.\n */\n for (let i = 0; i < renderedChildren.length; i++) {\n const child = renderedChildren[i];\n const key = getChildKey(child);\n if (!presentKeys.includes(key)) {\n nextChildren.splice(i, 0, child);\n exitingChildren.push(child);\n }\n }\n /**\n * If we're in \"wait\" mode, and we have exiting children, we want to\n * only render these until they've all exited.\n */\n if (mode === \"wait\" && exitingChildren.length) {\n nextChildren = exitingChildren;\n }\n setRenderedChildren(onlyElements(nextChildren));\n setDiffedChildren(presentChildren);\n /**\n * Early return to ensure once we've set state with the latest diffed\n * children, we can immediately re-render.\n */\n return null;\n }\n if (process.env.NODE_ENV !== \"production\" &&\n mode === \"wait\" &&\n renderedChildren.length > 1) {\n console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n }\n /**\n * If we've been provided a forceRender function by the LayoutGroupContext,\n * we can use it to force a re-render amongst all surrounding components once\n * all components have finished animating out.\n */\n const { forceRender } = useContext(LayoutGroupContext);\n return (jsx(Fragment, { children: renderedChildren.map((child) => {\n const key = getChildKey(child);\n const isPresent = propagate && !isParentPresent\n ? false\n : presentChildren === renderedChildren ||\n presentKeys.includes(key);\n const onExit = () => {\n if (exitComplete.has(key)) {\n exitComplete.set(key, true);\n }\n else {\n return;\n }\n let isEveryExitComplete = true;\n exitComplete.forEach((isExitComplete) => {\n if (!isExitComplete)\n isEveryExitComplete = false;\n });\n if (isEveryExitComplete) {\n forceRender?.();\n setRenderedChildren(pendingPresentChildren.current);\n propagate && safeToRemove?.();\n onExitComplete && onExitComplete();\n }\n };\n return (jsx(PresenceChild, { isPresent: isPresent, initial: !isInitialRender.current || initial\n ? undefined\n : false, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode, root: root, onExitComplete: isPresent ? undefined : onExit, anchorX: anchorX, children: child }, key));\n }) }));\n};\n\nexport { AnimatePresence };\n","import {\n createContext,\n type Dispatch,\n type KeyboardEvent,\n type SetStateAction,\n} from \"react\";\n\ntype TabContextProps = {\n current: number; // id of tabpanel\n setCurrent?: Dispatch<SetStateAction<number | undefined>>;\n focus: number; // id of tabpanel\n setFocus?: Dispatch<SetStateAction<number>>;\n items?: NodeListOf<HTMLElement>;\n uid?: string;\n onKeyDownHandler?: (e: KeyboardEvent<HTMLButtonElement>) => void;\n gotoNext?: (refocus?: boolean) => void;\n goToPrev?: (refocus?: boolean) => void;\n dir?: string;\n};\n\nconst initialValue = {\n current: 0,\n focus: 0,\n};\n\nexport const TabContext = createContext<TabContextProps>(initialValue);\n","import {\n forwardRef,\n useContext,\n type MouseEvent,\n useRef,\n type ComponentPropsWithoutRef,\n type KeyboardEvent,\n} from \"react\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\nimport { motion, useReducedMotion } from \"motion/react\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport type { DataTrackingId } from \"../../types\";\nimport { TabContext } from \"./internal/TabContext\";\n\nimport styles from \"./Tab.module.scss\";\nimport cx from \"classnames\";\n/**\n * Props for the TabButton component\n * @extends Omit<ComponentPropsWithoutRef<\"button\">, \"onClick\" | \"disabled\">\n */\nexport type TabButtonProps = Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"onClick\" | \"disabled\"\n> & {\n /**\n * Unique identifier for the tab button.\n */\n id: string;\n /**\n * ID of the tab panel that this button controls.\n */\n controls: string;\n /**\n * Callback function called when the tab button is clicked.\n * @param e The mouse event\n * @param index The index of the tab button\n */\n onClick?: (e: MouseEvent<HTMLButtonElement>, index?: number) => void;\n} & DataTrackingId;\n\n/**\n * TabButton component for individual tab navigation buttons.\n *\n * Features:\n * - Automatic ARIA attributes for accessibility\n * - Visual indicator for active state\n * - Keyboard navigation support\n * - Smooth animations with reduced motion support\n * - Proper focus management\n * - RTL language support\n *\n * @example\n * <Tab.Button id=\"tab1\" controls=\"panel1\" onClick={(e, index) => console.log('Tab clicked:', index)}>\n * First Tab\n * </Tab.Button>\n */\nexport const TabButton = forwardRef<HTMLButtonElement, TabButtonProps>(\n (props, ref) => {\n const buttonRef = useRef<HTMLButtonElement>(null);\n const shouldReduceMotion = useReducedMotion();\n const {\n current,\n items,\n setCurrent,\n focus,\n setFocus,\n onKeyDownHandler: focusController,\n uid,\n } = useContext(TabContext);\n\n const {\n onClick,\n children,\n onFocus,\n onKeyDown,\n controls,\n id,\n className,\n style,\n ...rest\n } = props;\n\n const index =\n items && Array.prototype.indexOf.call(items, buttonRef.current);\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (index === undefined) return;\n onClick?.(e, index);\n\n setCurrent?.(index);\n\n setFocus?.(index);\n items?.[index].focus();\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n focusController?.(e);\n onKeyDown?.(e);\n };\n\n const data = {\n id,\n controls,\n };\n\n const trackingId = useTrackingId({\n name: \"TabButton\",\n data,\n hasOverride: !!rest[\"data-tracking-id\"],\n });\n\n const tabButtonClassNames = cx(styles[\"tab-button\"], className);\n\n return (\n <button\n data-tracking-id={trackingId}\n type=\"button\"\n role=\"tab\"\n data-anv=\"tab-button\"\n id={id}\n className={tabButtonClassNames}\n aria-selected={items?.[current].id === id}\n aria-controls={controls}\n onClick={onClickHandler}\n onKeyDown={onKeyDownHandler}\n tabIndex={items?.[focus].id === id ? 0 : -1}\n {...rest}\n ref={useMergeRefs([buttonRef, ref])}\n >\n <span className={styles[\"inner\"]}>{children}</span>\n {items?.[current].id === id && (\n <motion.span\n layoutId={uid}\n className={styles[\"indicator\"]}\n transition={{\n duration: shouldReduceMotion\n ? 0\n : +core.primitive.DurationDefault.value.replace(\"ms\", \"\") /\n 1000,\n }}\n />\n )}\n </button>\n );\n },\n);\n\nTabButton.displayName = \"TabButton\";\n","import * as React from \"react\";\nconst SvgArrowBack = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M19 11H7.83l4.88-4.88c.39-.39.39-1.03 0-1.42a.996.996 0 0 0-1.41 0l-6.59 6.59a.996.996 0 0 0 0 1.41l6.59 6.59a.996.996 0 1 0 1.41-1.41L7.83 13H19c.55 0 1-.45 1-1s-.45-1-1-1z\" }));\nexport default SvgArrowBack;\n","import * as React from \"react\";\nconst SvgArrowForward = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M5 13h11.17l-4.88 4.88c-.39.39-.39 1.03 0 1.42.39.39 1.02.39 1.41 0l6.59-6.59a.996.996 0 0 0 0-1.41l-6.58-6.6a.996.996 0 1 0-1.41 1.41L16.17 11H5c-.55 0-1 .45-1 1s.45 1 1 1z\" }));\nexport default SvgArrowForward;\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useState,\n type UIEvent,\n useContext,\n useLayoutEffect,\n useRef,\n useCallback,\n} from \"react\";\nimport ArrowBack from \"@servicetitan/hammer-icon/mdi/round/arrow_back.svg\";\nimport ArrowForward from \"@servicetitan/hammer-icon/mdi/round/arrow_forward.svg\";\nimport { Icon } from \"../Icon\";\n\nimport cx from \"classnames\";\nimport styles from \"./Tab.module.scss\";\nimport { TabContext } from \"./internal/TabContext\";\n\n/**\n * Props for the TabList component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TabListProps = ComponentPropsWithoutRef<\"div\">;\n\n/**\n * TabList component for containing and managing tab buttons.\n *\n * Features:\n * - Horizontal scrolling for overflow tabs\n * - Navigation arrows for overflow content\n * - RTL language support\n * - Automatic overflow detection\n * - Proper ARIA roles for accessibility\n * - Smooth scrolling behavior\n * - Visual indicator positioning\n *\n * @example\n * <Tab.List>\n * <Tab.Button id=\"tab1\" controls=\"panel1\">First Tab</Tab.Button>\n * <Tab.Button id=\"tab2\" controls=\"panel2\">Second Tab</Tab.Button>\n * <Tab.Button id=\"tab3\" controls=\"panel3\">Third Tab</Tab.Button>\n * </Tab.List>\n */\nexport const TabList = forwardRef<HTMLDivElement, TabListProps>(\n (props, ref) => {\n const {\n className,\n children,\n onKeyDown,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...rest\n } = props;\n const { dir } = useContext(TabContext);\n const [leftOverflow, setLeftOverflow] = useState(false);\n const [rightOverflow, setRightOverflow] = useState(false);\n const scrollRef = useRef<HTMLDivElement>(null);\n const hasMeasuredPaddingDeps = useRef(false);\n const startOverflow = dir === \"ltr\" ? leftOverflow : rightOverflow;\n const endOverflow = dir === \"ltr\" ? rightOverflow : leftOverflow;\n\n const calculateOverflow = useCallback(\n (el: HTMLElement) => {\n const leftOverflows =\n dir === \"ltr\"\n ? el.scrollLeft > 0\n : el.scrollLeft > el.offsetWidth - el.scrollWidth + 1;\n const rightOverflows =\n dir === \"ltr\"\n ? el.scrollLeft < el.scrollWidth - el.offsetWidth\n : el.scrollLeft < 0;\n setLeftOverflow(leftOverflows);\n setRightOverflow(rightOverflows);\n },\n [dir],\n );\n\n useLayoutEffect(() => {\n const scroller = scrollRef.current;\n if (!scroller) return;\n\n calculateOverflow(scroller);\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n calculateOverflow(entry.target as HTMLElement);\n }\n });\n\n observer.observe(scroller);\n\n return () => {\n observer.disconnect();\n };\n }, [calculateOverflow]);\n\n // Re-measure after inset padding toggles (skip mount; the effect above covers that).\n useLayoutEffect(() => {\n if (!hasMeasuredPaddingDeps.current) {\n hasMeasuredPaddingDeps.current = true;\n return;\n }\n const scroller = scrollRef.current;\n if (!scroller) return;\n calculateOverflow(scroller);\n }, [calculateOverflow, startOverflow, endOverflow]);\n\n const scrollOverflow = (direction: \"prev\" | \"next\") => {\n const scroller = scrollRef.current;\n if (!scroller) return;\n\n const scrollAmount = scroller.clientWidth * 0.75;\n const forward = direction === \"next\" ? scrollAmount : -scrollAmount;\n const delta = dir === \"ltr\" ? forward : -forward;\n\n scroller.scrollBy({ left: delta, behavior: \"smooth\" });\n };\n\n // update overflow position on scroll\n const overflowPosition = (e: UIEvent<HTMLDivElement>) => {\n const target = e.target as HTMLElement;\n calculateOverflow(target);\n };\n\n const tabListClassNames = cx(styles[\"tab-list\"], className);\n\n // Logical start/end drive inset padding (with the chevrons). Physical\n // left/right drive the mask fades, which use physical gradient directions.\n const scrollerClassNames = cx(styles[\"scroller\"], {\n [styles[\"start\"]]: startOverflow,\n [styles[\"end\"]]: endOverflow,\n [styles[\"left\"]]: leftOverflow,\n [styles[\"right\"]]: rightOverflow,\n });\n\n return (\n <div\n {...rest}\n className={tabListClassNames}\n data-anv=\"tab-list\"\n ref={ref}\n >\n {startOverflow && (\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={() => scrollOverflow(\"prev\")}\n className={styles[\"overflow-prev\"]}\n aria-label=\"Scroll tabs back\"\n >\n <Icon svg={ArrowBack} aria-hidden size=\"medium\" />\n </button>\n )}\n <div\n onScroll={overflowPosition}\n onKeyDown={onKeyDown}\n className={scrollerClassNames}\n role=\"tablist\"\n tabIndex={-1}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n ref={scrollRef}\n >\n {children}\n </div>\n {endOverflow && (\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={() => scrollOverflow(\"next\")}\n className={styles[\"overflow-next\"]}\n aria-label=\"Scroll tabs forward\"\n >\n <Icon svg={ArrowForward} aria-hidden size=\"medium\" />\n </button>\n )}\n </div>\n );\n },\n);\n\nTabList.displayName = \"TabList\";\n","import { type ComponentPropsWithoutRef, forwardRef, useContext } from \"react\";\nimport { motion } from \"motion/react\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport { TabContext } from \"./internal/TabContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./Tab.module.scss\";\n\n/**\n * Props for the TabPanel component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\">\n */\nexport type TabPanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> & {\n /**\n * Unique identifier for the tab panel.\n */\n id: string;\n};\n\n/**\n * TabPanel component for displaying tab content.\n *\n * Features:\n * - Automatic visibility based on active tab\n * - Smooth fade animations\n * - Proper ARIA attributes for accessibility\n * - Automatic association with tab buttons\n * - Focus management\n * - Layout animations\n *\n * @example\n * <Tab.Panel id=\"panel1\">\n * <h2>First Tab Content</h2>\n * <p>This is the content for the first tab.</p>\n * </Tab.Panel>\n */\nexport const TabPanel = forwardRef<HTMLDivElement, TabPanelProps>(\n (props, ref) => {\n const { id, className, ...rest } = props;\n const { current, items } = useContext(TabContext);\n\n let labelledby;\n\n items?.forEach((el) => {\n const controlId = el.getAttribute(\"aria-controls\");\n if (controlId === id) {\n labelledby = el.id;\n }\n });\n const currentId = items?.[current]?.getAttribute(\"aria-controls\");\n const isCurrent = currentId === id;\n\n const tabPanelClassNames = cx(styles[\"tab-panel\"], className);\n\n if (!isCurrent) return null;\n return (\n <motion.div\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=\"tab-panel\"\n id={id}\n aria-labelledby={labelledby}\n tabIndex={0}\n ref={ref}\n />\n );\n },\n);\n\nTabPanel.displayName = \"TabPanel\";\n","import {\n type ComponentPropsWithoutRef,\n type KeyboardEvent,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { LayoutUtilProps } from \"../../types\";\nimport { TabButton } from \"./TabButton\";\nimport { TabList } from \"./TabList\";\nimport { TabPanel } from \"./TabPanel\";\nimport {\n useLayoutPropsUtil,\n useOptionallyControlledState,\n} from \"../../internal/hooks\";\nimport { TabContext } from \"./internal/TabContext\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { useMergeRefs } from \"../../hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./Tab.module.scss\";\n\n/**\n * Props for the Tab component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\">\n * @extends LayoutUtilProps\n */\nexport type TabProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps & {\n /**\n * The index of the tab that should be active by default.\n * Use for uncontrolled usage. For controlled usage, use `index` instead.\n * @default 0\n */\n defaultIndex?: number;\n /**\n * The index of the currently active tab.\n * Use for controlled usage. For uncontrolled usage, use `defaultIndex` instead.\n */\n index?: number;\n /**\n * Callback fired when the active tab changes.\n * Use with `index` for controlled usage.\n * @param index The index of the newly active tab\n */\n onIndexChange?: (index: number) => void;\n /**\n * Whether the tabs should fill the available width.\n * @default false\n */\n fill?: boolean;\n };\n\n/**\n * Tab component: a tabbed navigation control for switching between panels, sections, or views using a horizontal row of tabs.\n *\n * Features:\n * - Keyboard navigation support (arrow keys, Enter, Space)\n * - Accessible with proper ARIA roles and attributes\n * - Smooth animations and transitions\n * - RTL language support\n * - Automatic focus management\n * - Scroll behavior for overflow tabs\n * - Compound component pattern with Tab.Button, Tab.List, and Tab.Panel\n * - Supports controlled state via `index` and `onIndexChange` props\n * - Supports layout utilities for positioning and spacing\n *\n * @example\n * // Uncontrolled\n * <Tab defaultIndex={0}>\n * <Tab.List>\n * <Tab.Button id=\"tab1\" controls=\"panel1\">First Tab</Tab.Button>\n * <Tab.Button id=\"tab2\" controls=\"panel2\">Second Tab</Tab.Button>\n * </Tab.List>\n * <Tab.Panel id=\"panel1\">Content for first tab</Tab.Panel>\n * <Tab.Panel id=\"panel2\">Content for second tab</Tab.Panel>\n * </Tab>\n *\n * @example\n * // Controlled\n * <Tab index={activeIndex} onIndexChange={setActiveIndex}>\n * <Tab.List>\n * <Tab.Button id=\"tab1\" controls=\"panel1\">First Tab</Tab.Button>\n * <Tab.Button id=\"tab2\" controls=\"panel2\">Second Tab</Tab.Button>\n * </Tab.List>\n * <Tab.Panel id=\"panel1\">Content for first tab</Tab.Panel>\n * <Tab.Panel id=\"panel2\">Content for second tab</Tab.Panel>\n * </Tab>\n */\nexport const Tab = Object.assign(\n forwardRef<HTMLDivElement, TabProps>(function TabInner(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n defaultIndex,\n index,\n onIndexChange,\n className,\n style,\n fill,\n ...rest\n } = componentProps;\n const tabRef = useRef<HTMLDivElement>(null);\n const [items, setItems] = useState<NodeListOf<HTMLElement>>();\n const [current, setCurrent] = useOptionallyControlledState<number>({\n controlledValue: index,\n defaultValue: defaultIndex ?? 0,\n onChange: onIndexChange,\n });\n // Controlled mode is determined at render time; switching between controlled and uncontrolled at runtime is not supported.\n const isControlled = index !== undefined;\n const [focus, setFocus] = useState<number>(defaultIndex ?? 0);\n const [dir, setDir] = useState(\"ltr\");\n const uid = useId();\n\n useEffect(() => {\n setItems(tabRef.current?.querySelectorAll(\"[role=tab]:not([disabled])\"));\n }, [tabRef]);\n\n useEffect(() => {\n if (tabRef.current?.closest(\"[dir]\")?.getAttribute(\"dir\") === \"rtl\") {\n setDir(\"rtl\");\n } else {\n setDir(\"ltr\");\n }\n }, []);\n\n useEffect(() => {\n if (!isControlled) return;\n const tablistEl = tabRef.current?.querySelector(\"[role=tablist]\");\n const hasFocusInTablist =\n tablistEl?.contains(document.activeElement) ?? false;\n if (!hasFocusInTablist) setFocus(index!);\n }, [index, isControlled]);\n\n useEffect(() => {\n if (!tabRef.current) return;\n\n const mutationCallback = () => {\n setItems(\n tabRef.current?.querySelectorAll(\"[role=tab]:not([disabled])\"),\n );\n };\n\n const observer = new MutationObserver(mutationCallback);\n observer.observe(tabRef.current, {\n childList: true, // Observe changes to child elements\n subtree: true, // Observe changes to descendants of the target\n attributes: true, // Observe changes to attributes\n characterData: true, // Observe changes to text content\n });\n return () => {\n observer.disconnect();\n };\n }, []);\n\n // scroll behavior of the focus tab item\n const focusScroller = (node: HTMLElement | undefined) => {\n node?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"center\",\n });\n };\n\n const gotoNext = useCallback(\n (_refocus = true) => {\n if (focus + 1 === items?.length) {\n setFocus?.(0);\n items?.[0].focus();\n focusScroller(items?.[0]);\n return;\n }\n setFocus?.(focus + 1);\n items?.[focus + 1].focus();\n focusScroller(items?.[focus + 1]);\n },\n [focus, items],\n );\n\n const goToPrev = useCallback(\n (_refocus = true) => {\n if (focus === 0) {\n const lastItemIndex = items ? items?.length - 1 : 0;\n setFocus?.(lastItemIndex);\n items?.[lastItemIndex].focus();\n focusScroller(items?.[lastItemIndex]);\n return;\n }\n setFocus?.(focus - 1);\n items?.[focus - 1].focus();\n focusScroller(items?.[focus - 1]);\n },\n [focus, items],\n );\n\n const onKeyDownHandler = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n switch (e.code) {\n case \"Enter\":\n case \"Space\":\n setCurrent?.(focus);\n break;\n case \"ArrowRight\":\n e.preventDefault();\n if (dir === \"ltr\") {\n gotoNext();\n } else {\n goToPrev();\n }\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n if (dir === \"ltr\") {\n goToPrev();\n } else {\n gotoNext();\n }\n break;\n default:\n break;\n }\n },\n [dir, focus, goToPrev, gotoNext, setCurrent],\n );\n\n const value = useMemo(\n () => ({\n current,\n setCurrent,\n focus,\n setFocus,\n items,\n uid,\n onKeyDownHandler,\n gotoNext,\n goToPrev,\n dir,\n }),\n [\n current,\n setCurrent,\n focus,\n goToPrev,\n gotoNext,\n items,\n onKeyDownHandler,\n uid,\n dir,\n ],\n );\n\n const tabClassNames = cx(styles[\"tab\"], className, {\n [styles[\"fill\"]]: fill,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <TabContext.Provider value={value}>\n <AnimatePresence initial={false}>\n <motion.div\n transition={{ duration: 0 }}\n layout\n className={tabClassNames}\n data-anv=\"tab\"\n style={styleCombined}\n {...rest}\n ref={useMergeRefs([tabRef, ref])}\n />\n </AnimatePresence>\n </TabContext.Provider>\n );\n }),\n {\n /**\n * TabButton component for individual tab navigation buttons.\n *\n * Features:\n * - Automatic ARIA attributes for accessibility\n * - Visual indicator for active state\n * - Keyboard navigation support\n * - Smooth animations with reduced motion support\n * - Proper focus management\n * - RTL language support\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Tab.Button id=\"tab1\" controls=\"panel1\" onClick={(e, index) => console.log('Tab clicked:', index)}>\n * First Tab\n * </Tab.Button>\n */\n Button: TabButton,\n /**\n * TabList component for containing and managing tab buttons.\n *\n * Features:\n * - Horizontal scrolling for overflow tabs\n * - Navigation arrows for overflow content\n * - RTL language support\n * - Automatic overflow detection\n * - Proper ARIA roles for accessibility\n * - Smooth scrolling behavior\n * - Visual indicator positioning\n *\n * @example\n * <Tab.List>\n * <Tab.Button id=\"tab1\" controls=\"panel1\">First Tab</Tab.Button>\n * <Tab.Button id=\"tab2\" controls=\"panel2\">Second Tab</Tab.Button>\n * <Tab.Button id=\"tab3\" controls=\"panel3\">Third Tab</Tab.Button>\n * </Tab.List>\n */\n List: TabList,\n /**\n * TabPanel component for displaying tab content.\n *\n * Features:\n * - Automatic visibility based on active tab\n * - Smooth fade animations\n * - Proper ARIA attributes for accessibility\n * - Automatic association with tab buttons\n * - Focus management\n * - Layout animations\n *\n * @example\n * <Tab.Panel id=\"panel1\">\n * <h2>First Tab Content</h2>\n * <p>This is the content for the first tab.</p>\n * </Tab.Panel>\n */\n Panel: TabPanel,\n },\n);\nTab.displayName = \"Tab\";\n"],"names":["index","core.primitive.DurationDefault","ArrowBack","ArrowForward","core.primitive.DurationSlow"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Text-CZccJAnm.js","sources":["../src/components/Text/Text.tsx"],"sourcesContent":["import classnames from \"classnames\";\nimport { forwardRef, type LegacyRef } from \"react\";\nimport styles from \"./Text.module.scss\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { AiMark } from \"../AiMark\";\nimport type {\n BodyTextInlineProps,\n BodyTextProps,\n EyebrowProps,\n HeadlineProps,\n} from \"./types\";\n\n/**\n * Props for the Text component\n * @extends HeadlineProps<\"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\">\n * @extends EyebrowProps\n * @extends BodyTextProps\n * @extends BodyTextInlineProps\n */\nexport type TextProps =\n | HeadlineProps<\"h1\">\n | HeadlineProps<\"h2\">\n | HeadlineProps<\"h3\">\n | HeadlineProps<\"h4\">\n | HeadlineProps<\"h5\">\n | HeadlineProps<\"h6\">\n | EyebrowProps\n | BodyTextProps\n | BodyTextInlineProps;\n\n/**\n * Text component for displaying various types of text content with consistent styling.\n *\n * Features:\n * - Multiple text variants (headline, eyebrow, body)\n * - Semantic HTML elements (h1-h6, p, span)\n * - Multiple size options for each variant\n *\n * @example\n * <Text variant=\"headline\" el=\"h1\" size=\"large\">Main Heading</Text>\n * <Text variant=\"headline\" el=\"h2\" size=\"medium\">Sub Heading</Text>\n *\n * @example\n * // Drop the trailing margin when aligning a headline against a sibling\n * <Flex alignItems=\"center\" gap=\"2\">\n * <Text variant=\"headline\" el=\"h2\" noMargin>Invoices</Text>\n * <Chip>Draft</Chip>\n * </Flex>\n *\n * @example\n * <Text variant=\"eyebrow\" size=\"small\">Category Label</Text>\n *\n * @example\n * <Text size=\"large\">Large body text</Text>\n * <Text subdued>Deemphasized text</Text>\n * <Text inline>Inline text within other text</Text>\n */\nexport const Text = forwardRef<\n HTMLHeadingElement | HTMLSpanElement | HTMLParagraphElement,\n TextProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n if (props.variant === \"headline\") {\n const {\n variant: _,\n children,\n className,\n el: HeadlineElement,\n size = \"medium\",\n style,\n aiMark,\n noMargin,\n ...rest\n } = componentProps;\n\n const TextClasses = classnames(styles[\"headline\"], className, {\n [styles[`${size}`]]: size !== \"medium\",\n [styles[\"no-margin\"]]: noMargin,\n });\n\n const styleCombined = { ...style, ...layoutStyles };\n\n const aiMarkSize = size === \"small\" ? \"medium\" : size;\n\n const aiMarkNode = aiMark && (\n <span className={styles[\"headline-ai-mark\"]}>\n <AiMark\n type=\"gradient\"\n collapsePadding=\"block\"\n size={aiMarkSize}\n popoverOrTooltipConfig={\n typeof aiMark === \"object\" ? aiMark : undefined\n }\n />\n </span>\n );\n\n return (\n // @ts-expect-error ts(2604) HeadlineElement will work as element tag\n <HeadlineElement\n ref={ref as LegacyRef<HTMLHeadingElement>}\n className={TextClasses}\n data-anv=\"text\"\n style={styleCombined}\n {...rest}\n >\n {aiMarkNode ? (\n <span className={styles[\"headline-with-ai-mark\"]}>\n {children}\n {aiMarkNode}\n </span>\n ) : (\n children\n )}\n </HeadlineElement>\n );\n } else if (props.variant === \"eyebrow\") {\n const {\n variant: _,\n children,\n className,\n size = \"medium\",\n style,\n ...rest\n } = componentProps;\n\n const TextClasses = classnames(styles[\"eyebrow\"], className, {\n [styles[`${size}`]]: size !== \"medium\",\n });\n\n const styleCombined = { ...style, ...layoutStyles };\n\n return (\n <span\n ref={ref as LegacyRef<HTMLSpanElement>}\n className={TextClasses}\n data-anv=\"text\"\n style={styleCombined}\n {...rest}\n >\n {children}\n </span>\n );\n } else {\n const {\n variant: _,\n children,\n className,\n subdued,\n inline,\n style,\n size = \"medium\",\n ...rest\n } = componentProps;\n\n const TextClasses = classnames(styles[\"bodytext\"], className, {\n [styles[`${size}`]]: size !== \"medium\",\n [styles[\"subdued\"]]: subdued,\n [styles[\"inline\"]]: inline,\n });\n\n const styleCombined = { ...style, ...layoutStyles };\n\n if (inline) {\n return (\n <span\n ref={ref as LegacyRef<HTMLSpanElement>}\n className={TextClasses}\n data-anv=\"text\"\n style={styleCombined}\n {...rest}\n >\n {children}\n </span>\n );\n } else {\n return (\n <p\n ref={ref as LegacyRef<HTMLParagraphElement>}\n className={TextClasses}\n data-anv=\"text\"\n style={styleCombined}\n {...rest}\n >\n {children}\n </p>\n );\n }\n }\n});\n\nText.displayName = \"Text\";\n"],"names":["classnames","styles"],"mappings":"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"}
|