@servicetitan/anvil2 2.7.0 → 2.8.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 +60 -0
- package/dist/{floating-ui.react-C_s3_nEb.js → AiMark-Cwc9KoyE.js} +767 -5
- package/dist/AiMark-Cwc9KoyE.js.map +1 -0
- package/dist/AiMark.css +260 -0
- package/dist/AiMark.d.ts +2 -0
- package/dist/AiMark.js +2 -0
- package/dist/AiMark.js.map +1 -0
- package/dist/{Alert-C_o2f78C.js → Alert-5qhkSUN3.js} +27 -13
- package/dist/Alert-5qhkSUN3.js.map +1 -0
- package/dist/Alert.css +23 -15
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-CyrTvgP4.js → Announcement-fQmFNysn.js} +2 -2
- package/dist/{Announcement-CyrTvgP4.js.map → Announcement-fQmFNysn.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/{Avatar-CCnbKkCm.js → Avatar-BckUfs1N.js} +48 -46
- package/dist/{Avatar-CCnbKkCm.js.map → Avatar-BckUfs1N.js.map} +1 -1
- package/dist/Avatar-ChybzixS.js +35 -0
- package/dist/Avatar-ChybzixS.js.map +1 -0
- package/dist/Avatar.js +2 -2
- package/dist/Breadcrumbs-BXo2FO2n.js +107 -0
- package/dist/Breadcrumbs-BXo2FO2n.js.map +1 -0
- package/dist/Breadcrumbs.js +1 -1
- package/dist/Button-a_D7tUgM.js +4517 -0
- package/dist/Button-a_D7tUgM.js.map +1 -0
- package/dist/Button.js +1 -1
- package/dist/{ButtonToggle-DaYJWso_.js → ButtonToggle-CmY77gUp.js} +2 -2
- package/dist/{ButtonToggle-DaYJWso_.js.map → ButtonToggle-CmY77gUp.js.map} +1 -1
- package/dist/ButtonToggle.js +1 -1
- package/dist/{Calendar-SGlTt-bs.js → Calendar-Bd_WELZC.js} +130 -119
- package/dist/Calendar-Bd_WELZC.js.map +1 -0
- package/dist/{Calendar-C1U2npPP.js → Calendar-d2owsYe9.js} +2 -2
- package/dist/{Calendar-C1U2npPP.js.map → Calendar-d2owsYe9.js.map} +1 -1
- package/dist/Calendar.css +51 -51
- package/dist/Calendar.js +2 -2
- package/dist/Card-wz71dEVA.js.map +1 -1
- package/dist/{Checkbox-CtKUNeyu.js → Checkbox-BlFc6ZWy.js} +25 -14
- package/dist/Checkbox-BlFc6ZWy.js.map +1 -0
- package/dist/Checkbox-DbaZrUE2.js +52 -0
- package/dist/Checkbox-DbaZrUE2.js.map +1 -0
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-DjTAR0va.js → Chip-BnofwIUN.js} +43 -13
- package/dist/Chip-BnofwIUN.js.map +1 -0
- package/dist/Chip.css +44 -28
- package/dist/Chip.js +1 -1
- package/dist/{Combobox-By8-34bw.js → Combobox-BOxAzG9v.js} +186 -183
- package/dist/{Combobox-By8-34bw.js.map → Combobox-BOxAzG9v.js.map} +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-BYOS6icI.js → DataTable-DK9xRjnq.js} +762 -651
- package/dist/DataTable-DK9xRjnq.js.map +1 -0
- package/dist/DataTable.css +84 -74
- package/dist/{DateFieldRange-C8Uzrboc.js → DateFieldRange-5Jrz6dLl.js} +20 -6
- package/dist/DateFieldRange-5Jrz6dLl.js.map +1 -0
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-DrhLIjlK.js → DateFieldSingle-DWFr6Ew4.js} +8 -8
- package/dist/{DateFieldSingle-DrhLIjlK.js.map → DateFieldSingle-DWFr6Ew4.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-DbivK4Hm.js → DateFieldYearless-UU22A5-E.js} +22 -6
- package/dist/DateFieldYearless-UU22A5-E.js.map +1 -0
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-BEqJe4Uf.js → DateFieldYearlessRange-BoPLxm6t.js} +3 -3
- package/dist/DateFieldYearlessRange-BoPLxm6t.js.map +1 -0
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-BR32AA32.js → DaysOfTheWeek-4cfTmjzm.js} +4 -4
- package/dist/{DaysOfTheWeek-BR32AA32.js.map → DaysOfTheWeek-4cfTmjzm.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Details-Dxq_v3Qg.js → Details-CZOIpNP_.js} +8 -8
- package/dist/Details-CZOIpNP_.js.map +1 -0
- package/dist/Details.js +1 -1
- package/dist/{Dialog-CGhwkwvq.js → Dialog-Dn836WQM.js} +73 -73
- package/dist/Dialog-Dn836WQM.js.map +1 -0
- package/dist/Dialog.js +1 -1
- package/dist/{DialogCancelButton-DQDMzGeT.js → DialogCancelButton-B-jfihJr.js} +2 -2
- package/dist/{DialogCancelButton-DQDMzGeT.js.map → DialogCancelButton-B-jfihJr.js.map} +1 -1
- package/dist/{Drawer-DA4iAgt-.js → Drawer-CdDWt_Ba.js} +86 -86
- package/dist/Drawer-CdDWt_Ba.js.map +1 -0
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.js +1 -1
- package/dist/{EditCard-CLN0GBN_.js → EditCard-CZibhEfS.js} +3 -3
- package/dist/{EditCard-CLN0GBN_.js.map → EditCard-CZibhEfS.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/FieldLabel-Dr41PRxH.js +180 -0
- package/dist/FieldLabel-Dr41PRxH.js.map +1 -0
- package/dist/FieldLabel.css +33 -73
- package/dist/FieldLabel.js +1 -1
- package/dist/Grid-DeYIx5k4.js +149 -0
- package/dist/Grid-DeYIx5k4.js.map +1 -0
- package/dist/Grid.js +1 -1
- package/dist/{InputMask-HjaNCb73.js → InputMask-CcXqzqdx.js} +3 -3
- package/dist/{InputMask-HjaNCb73.js.map → InputMask-CcXqzqdx.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{Layout-VfhlilMG.js → Layout-CISAxILX.js} +34 -33
- package/dist/Layout-CISAxILX.js.map +1 -0
- package/dist/Layout.js +1 -1
- package/dist/List--KhCpjZn.js +103 -0
- package/dist/List--KhCpjZn.js.map +1 -0
- package/dist/List.js +1 -1
- package/dist/{ListView-mujFK6mQ.js → ListView-D9cZUVer.js} +6 -6
- package/dist/ListView-D9cZUVer.js.map +1 -0
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-BtAgBDRS.js → Listbox-CgDwzRfz.js} +6 -5
- package/dist/Listbox-CgDwzRfz.js.map +1 -0
- package/dist/Listbox.js +1 -1
- package/dist/{Menu-BXsmCP20.js → Menu-CPbuIsqC.js} +367 -367
- package/dist/Menu-CPbuIsqC.js.map +1 -0
- package/dist/Menu.js +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-DGpGgu8q.js → MultiSelectFieldSync-Ei7DXzvs.js} +31 -18
- package/dist/MultiSelectFieldSync-Ei7DXzvs.js.map +1 -0
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-DiLddJDw.js → MultiSelectMenuSync-B_mXpTEe.js} +29 -9
- package/dist/MultiSelectMenuSync-B_mXpTEe.js.map +1 -0
- package/dist/{NumberField-svhZp1kB.js → NumberField-C5t47Obp.js} +16 -5
- package/dist/NumberField-C5t47Obp.js.map +1 -0
- package/dist/NumberField.js +1 -1
- package/dist/Overflow.css +27 -26
- package/dist/Overflow.js +11 -11
- package/dist/{Page-Be029Dij.js → Page-2hbQxUj6.js} +223 -207
- package/dist/Page-2hbQxUj6.js.map +1 -0
- package/dist/Page.css +78 -76
- package/dist/Page.js +1 -1
- package/dist/{Pagination-BAwqfl_2.js → Pagination-CjGmJ_rU.js} +20 -18
- package/dist/Pagination-CjGmJ_rU.js.map +1 -0
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-D0qSKZ1J.js → Popover-CpU9VAcb.js} +356 -358
- package/dist/Popover-CpU9VAcb.js.map +1 -0
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-JpRDW5vG.js → ProgressBar-FMuK8viJ.js} +2 -2
- package/dist/{ProgressBar-JpRDW5vG.js.map → ProgressBar-FMuK8viJ.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-BQg7exDG.js → Radio-CZZd8phn.js} +25 -14
- package/dist/Radio-CZZd8phn.js.map +1 -0
- package/dist/Radio-DmtVWAmN.js +60 -0
- package/dist/Radio-DmtVWAmN.js.map +1 -0
- package/dist/Radio.js +1 -1
- package/dist/{SegmentedControl-7fDLhgvh.js → SegmentedControl-B9NWUF7s.js} +81 -77
- package/dist/{SegmentedControl-7fDLhgvh.js.map → SegmentedControl-B9NWUF7s.js.map} +1 -1
- package/dist/SegmentedControl.js +1 -1
- package/dist/SelectCard-8OmIDl1m.js +352 -0
- package/dist/SelectCard-8OmIDl1m.js.map +1 -0
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldLabel-Dr8HeW3N.js → SelectFieldLabel-C8PrXxDU.js} +5 -4
- package/dist/SelectFieldLabel-C8PrXxDU.js.map +1 -0
- package/dist/{SelectFieldSync-CJ2Ie_v1.js → SelectFieldSync-DGK8F2G9.js} +13 -13
- package/dist/SelectFieldSync-DGK8F2G9.js.map +1 -0
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-CJA_coqD.js → SelectMenuSync-CuZp9mnt.js} +29 -9
- package/dist/SelectMenuSync-CuZp9mnt.js.map +1 -0
- package/dist/{SelectOptions-Bf4xsFek.js → SelectOptions-CmElsiTd.js} +2 -2
- package/dist/{SelectOptions-Bf4xsFek.js.map → SelectOptions-CmElsiTd.js.map} +1 -1
- package/dist/{SelectTrigger-ObsnAKNp.js → SelectTrigger-KF8w6Ynk.js} +8 -6
- package/dist/SelectTrigger-KF8w6Ynk.js.map +1 -0
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-DKfOL2RJ.js → SelectTriggerBase-Bxmv6oXk.js} +4 -4
- package/dist/{SelectTriggerBase-DKfOL2RJ.js.map → SelectTriggerBase-Bxmv6oXk.js.map} +1 -1
- package/dist/{SideNav-KksbSQn7.js → SideNav-CrxYExjh.js} +137 -135
- package/dist/{SideNav-KksbSQn7.js.map → SideNav-CrxYExjh.js.map} +1 -1
- package/dist/SideNav.css +72 -55
- package/dist/SideNav.js +1 -1
- package/dist/Skeleton.css +18 -12
- package/dist/Skeleton.js +24 -11
- package/dist/Skeleton.js.map +1 -1
- package/dist/{Stepper-Dt8_ImvJ.js → Stepper-_27Lmm2K.js} +158 -158
- package/dist/{Stepper-Dt8_ImvJ.js.map → Stepper-_27Lmm2K.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/{Switch-DpPHr3G3.js → Switch-DPGz7wC_.js} +14 -2
- package/dist/Switch-DPGz7wC_.js.map +1 -0
- package/dist/Switch.js +1 -1
- package/dist/{Tab-DO7LaUbw.js → Tab-BZpTCG0i.js} +227 -223
- package/dist/Tab-BZpTCG0i.js.map +1 -0
- package/dist/Tab.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-BJo4oMI2.js → Text-MVxRo6yx.js} +30 -12
- package/dist/Text-MVxRo6yx.js.map +1 -0
- package/dist/Text.css +37 -20
- package/dist/Text.js +1 -1
- package/dist/{TextField-DeHpgPag.js → TextField-BpSxZa0z.js} +21 -5
- package/dist/TextField-BpSxZa0z.js.map +1 -0
- package/dist/{TextField-BW8sJAls.js → TextField-D93iv_pk.js} +2 -2
- package/dist/{TextField-BW8sJAls.js.map → TextField-D93iv_pk.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-DyqdMTvQ.js → Textarea-1u2fSMTh.js} +21 -5
- package/dist/Textarea-1u2fSMTh.js.map +1 -0
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-Dc0Y1JD-.js → TimeField-B4gLlBQJ.js} +6 -5
- package/dist/{TimeField-Dc0Y1JD-.js.map → TimeField-B4gLlBQJ.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-b0-Ub3yt.js → Toaster-CSJfSOHx.js} +5 -5
- package/dist/Toaster-CSJfSOHx.js.map +1 -0
- package/dist/{Toaster-DikGo_hR.js → Toaster-DbWYnF_t.js} +2 -2
- package/dist/{Toaster-DikGo_hR.js.map → Toaster-DbWYnF_t.js.map} +1 -1
- package/dist/{Toolbar-DAuz4Gs2.js → Toolbar-CWRk523l.js} +150 -149
- package/dist/{Toolbar-DAuz4Gs2.js.map → Toolbar-CWRk523l.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-Bupqao9B.js → Tooltip-C1PBRnJv.js} +225 -228
- package/dist/Tooltip-C1PBRnJv.js.map +1 -0
- package/dist/Tooltip.js +1 -1
- package/dist/{YearlessDateInputWithPicker-DFi08TLG.js → YearlessDateInputWithPicker-BSl5z2zo.js} +2 -3
- package/dist/{YearlessDateInputWithPicker-DFi08TLG.js.map → YearlessDateInputWithPicker-BSl5z2zo.js.map} +1 -1
- package/dist/assets/icons/st/ai_mark_gradient.svg +1 -1
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldInput.d.ts +3 -2
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldTrigger.d.ts +3 -2
- package/dist/beta/components/MultiSelectField/internal/types.d.ts +4 -3
- package/dist/beta/components/MultiSelectField/types.d.ts +28 -7
- package/dist/beta/components/MultiSelectMenu/types.d.ts +15 -0
- package/dist/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
- package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +4 -4
- package/dist/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
- package/dist/beta/components/SelectField/types.d.ts +5 -5
- package/dist/beta/components/SelectMenu/internal/useMenuInteraction.d.ts +3 -1
- package/dist/beta/components/SelectMenu/types.d.ts +15 -0
- package/dist/beta/components/Table/DataTable/DataTable.d.ts +2 -15
- package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectAsyncCell.d.ts +35 -0
- package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectCell.d.ts +4 -3
- package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectAsyncCell.d.ts +7 -0
- package/dist/beta/components/Table/DataTable/internal/editable-cells/useEditableMenuCell.d.ts +34 -0
- package/dist/beta/components/Table/DataTable/internal/usePageDataCache.d.ts +29 -0
- package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +2 -4
- package/dist/beta/components/Table/DataTable/types.d.ts +48 -1
- package/dist/beta/components/Table/createColumnHelper.d.ts +23 -68
- package/dist/beta/components/Table/types.d.ts +218 -42
- package/dist/beta/components/Toolbar/Toolbar.d.ts +175 -44
- package/dist/beta/components/Toolbar/ToolbarSelect.d.ts +5 -3
- package/dist/beta.js +9 -9
- package/dist/components/AiMark/AiMark.d.ts +87 -0
- package/dist/components/AiMark/index.d.ts +1 -0
- package/dist/components/AiMark/internal/AiMarkIconAnimated.d.ts +30 -0
- package/dist/components/AiMark/internal/AiMarkInteractive.d.ts +10 -0
- package/dist/components/AiMark/stories/aiMarkStoryArgTypes.d.ts +16 -0
- package/dist/components/Alert/Alert.d.ts +12 -0
- package/dist/components/Avatar/Avatar.d.ts +14 -0
- package/dist/components/Button/Button.d.ts +14 -6
- package/dist/components/Button/internal/buttonAiMarkUtils.d.ts +18 -0
- package/dist/components/Button/internal/index.d.ts +1 -0
- package/dist/components/Calendar/Calendar.d.ts +84 -26
- package/dist/components/Card/Card.d.ts +6 -1
- package/dist/components/Checkbox/Checkbox.d.ts +2 -0
- package/dist/components/Checkbox/CheckboxGroup.d.ts +27 -6
- package/dist/components/Chip/Chip.d.ts +10 -1
- package/dist/components/Chip/internal/Chip.d.ts +4 -0
- package/dist/components/Combobox/Combobox.d.ts +172 -1
- package/dist/components/DateFieldRange/internal/MaskedDateRangeInput.d.ts +1 -1
- package/dist/components/DateFieldRange/internal/useDateFieldRangeConversion.d.ts +1 -1
- package/dist/components/DateFieldSingle/internal/MaskedDateInput.d.ts +1 -1
- package/dist/components/DateFieldYearless/DateFieldYearless.d.ts +8 -1
- package/dist/components/DateFieldYearless/internal/YearlessDateInput.d.ts +1 -1
- package/dist/components/DateFieldYearless/internal/YearlessDateInputWithPicker.d.ts +1 -1
- package/dist/components/DateFieldYearlessRange/DateFieldYearlessRange.d.ts +7 -0
- package/dist/components/Dialog/Dialog.d.ts +96 -28
- package/dist/components/DrillDown/DrillDown.d.ts +7 -1
- package/dist/components/FieldLabel/FieldLabel.d.ts +2 -1
- package/dist/components/FieldLabel/internal/FieldLabelButton.d.ts +3 -2
- package/dist/components/Layout/Layout.d.ts +52 -44
- package/dist/components/ListView/ListView.d.ts +5 -5
- package/dist/components/Listbox/Listbox.d.ts +5 -23
- package/dist/components/Menu/Menu.d.ts +1 -4
- package/dist/components/NumberField/NumberField.d.ts +29 -2
- package/dist/components/Radio/Radio.d.ts +2 -0
- package/dist/components/Radio/RadioGroup.d.ts +27 -6
- package/dist/components/SelectCard/SelectCard.d.ts +1 -1
- package/dist/components/SelectCard/SelectCardGroup.d.ts +18 -1
- package/dist/components/SelectCard/internal/SelectCardContext.d.ts +11 -0
- package/dist/components/SelectCard/internal/SelectCardProvider.d.ts +11 -1
- package/dist/components/Skeleton/SkeletonCircle.d.ts +8 -0
- package/dist/components/Skeleton/SkeletonPill.d.ts +8 -0
- package/dist/components/Skeleton/SkeletonRectangle.d.ts +8 -0
- package/dist/components/Skeleton/SkeletonText.d.ts +6 -1
- package/dist/components/Skeleton/index.d.ts +3 -0
- package/dist/components/Switch/Switch.d.ts +11 -1
- package/dist/components/Text/types.d.ts +9 -0
- package/dist/components/TextField/internal/TextField.d.ts +11 -0
- package/dist/components/Textarea/Textarea.d.ts +9 -2
- package/dist/components/Toast/internal/Toast.d.ts +5 -0
- package/dist/components/Toast/toast.d.ts +1 -1
- package/dist/components/Toolbar/Toolbar.d.ts +8 -4
- package/dist/components/Toolbar/ToolbarSelect.d.ts +5 -3
- package/dist/components/index.d.ts +1 -0
- package/dist/{floating-ui.react-dom-imrk9N49.js → floating-ui.react-dom-CHrYz13o.js} +17 -2
- package/dist/floating-ui.react-dom-CHrYz13o.js.map +1 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/usePrefersReducedMotion/index.d.ts +1 -0
- package/dist/hooks/usePrefersReducedMotion/usePrefersReducedMotion.d.ts +15 -0
- package/dist/index.js +135 -133
- package/dist/index.js.map +1 -1
- package/dist/internal/components/InlineMarkdown/InlineMarkdown.d.ts +23 -0
- package/dist/internal/components/InlineMarkdown/index.d.ts +1 -0
- package/dist/internal/components/Label/Label.d.ts +1 -1
- package/dist/internal/components/Popover/Popover.d.ts +3 -1
- package/dist/internal/components/index.d.ts +2 -1
- package/dist/internal/functions/index.d.ts +2 -0
- package/dist/internal/functions/inlineMarkdown.d.ts +20 -0
- package/dist/internal/functions/stripInlineMarkdown.d.ts +8 -0
- package/dist/internal/types/props.d.ts +2 -1
- package/dist/internal/types/selectFieldInternalTypes.d.ts +2 -2
- package/dist/internal/utils/index.d.ts +1 -0
- package/dist/internal/utils/inlineMarkdownRegex.d.ts +5 -0
- package/dist/{proxy-BbFHSE6L.js → proxy-DEehATlA.js} +8 -2
- package/dist/{proxy-BbFHSE6L.js.map → proxy-DEehATlA.js.map} +1 -1
- package/dist/stripInlineMarkdown-DyqLAQnf.js +25 -0
- package/dist/stripInlineMarkdown-DyqLAQnf.js.map +1 -0
- package/dist/{syncFilterUtils-vt8ldsES.js → syncFilterUtils-CsbCnI1-.js} +194 -194
- package/dist/{syncFilterUtils-vt8ldsES.js.map → syncFilterUtils-CsbCnI1-.js.map} +1 -1
- package/dist/types/ai-marks.d.ts +72 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/{use-reduced-motion-DSpxmqyT.js → use-reduced-motion-CqjZZ5QB.js} +2 -2
- package/dist/{use-reduced-motion-DSpxmqyT.js.map → use-reduced-motion-CqjZZ5QB.js.map} +1 -1
- package/dist/{useDrilldown-wwXRpNgb.js → useDrilldown-C7eMBl68.js} +43 -41
- package/dist/{useDrilldown-wwXRpNgb.js.map → useDrilldown-C7eMBl68.js.map} +1 -1
- package/dist/{useInitialFocus-CdoVwSbr.js → useInitialFocus-DbaB-x5T.js} +2 -3
- package/dist/{useInitialFocus-CdoVwSbr.js.map → useInitialFocus-DbaB-x5T.js.map} +1 -1
- package/dist/{useMenuInteraction-zR_78KQC.js → useMenuInteraction-BwZ2ORo9.js} +8 -3
- package/dist/useMenuInteraction-BwZ2ORo9.js.map +1 -0
- package/dist/{index.esm-BZV0wNKZ.js → usePopoverTransitionStates-B1opfxxn.js} +88 -2
- package/dist/usePopoverTransitionStates-B1opfxxn.js.map +1 -0
- package/dist/usePrefersReducedMotion-DR9B_D6w.js +37 -0
- package/dist/usePrefersReducedMotion-DR9B_D6w.js.map +1 -0
- package/dist/usePrefersReducedMotion.d.ts +2 -0
- package/dist/usePrefersReducedMotion.js +2 -0
- package/dist/usePrefersReducedMotion.js.map +1 -0
- package/dist/{useToggleSelection-BdXW3Zg3.js → useToggleSelection-BM8asdFj.js} +2 -2
- package/dist/{useToggleSelection-BdXW3Zg3.js.map → useToggleSelection-BM8asdFj.js.map} +1 -1
- package/package.json +4 -2
- package/dist/Alert-C_o2f78C.js.map +0 -1
- package/dist/Avatar--CnTAnfD.js +0 -35
- package/dist/Avatar--CnTAnfD.js.map +0 -1
- package/dist/Breadcrumbs-3Y7jnj-F.js +0 -105
- package/dist/Breadcrumbs-3Y7jnj-F.js.map +0 -1
- package/dist/Button-CVsGhVJz.js +0 -113
- package/dist/Button-CVsGhVJz.js.map +0 -1
- package/dist/Calendar-SGlTt-bs.js.map +0 -1
- package/dist/Checkbox-CjEKa5Iv.js +0 -50
- package/dist/Checkbox-CjEKa5Iv.js.map +0 -1
- package/dist/Checkbox-CtKUNeyu.js.map +0 -1
- package/dist/Chip-DjTAR0va.js.map +0 -1
- package/dist/DataTable-BYOS6icI.js.map +0 -1
- package/dist/DateFieldRange-C8Uzrboc.js.map +0 -1
- package/dist/DateFieldYearless-DbivK4Hm.js.map +0 -1
- package/dist/DateFieldYearlessRange-BEqJe4Uf.js.map +0 -1
- package/dist/Details-Dxq_v3Qg.js.map +0 -1
- package/dist/Dialog-CGhwkwvq.js.map +0 -1
- package/dist/Drawer-DA4iAgt-.js.map +0 -1
- package/dist/FieldLabel-DbMosKtd.js +0 -125
- package/dist/FieldLabel-DbMosKtd.js.map +0 -1
- package/dist/Grid-ONcUpb__.js +0 -147
- package/dist/Grid-ONcUpb__.js.map +0 -1
- package/dist/Layout-VfhlilMG.js.map +0 -1
- package/dist/List-CJZjElAQ.js +0 -101
- package/dist/List-CJZjElAQ.js.map +0 -1
- package/dist/ListView-mujFK6mQ.js.map +0 -1
- package/dist/Listbox-BtAgBDRS.js.map +0 -1
- package/dist/Menu-BXsmCP20.js.map +0 -1
- package/dist/MultiSelectFieldSync-DGpGgu8q.js.map +0 -1
- package/dist/MultiSelectMenuSync-DiLddJDw.js.map +0 -1
- package/dist/NumberField-svhZp1kB.js.map +0 -1
- package/dist/Page-Be029Dij.js.map +0 -1
- package/dist/Pagination-BAwqfl_2.js.map +0 -1
- package/dist/Popover-D0qSKZ1J.js.map +0 -1
- package/dist/Popover-DxZF6lbJ.js +0 -535
- package/dist/Popover-DxZF6lbJ.js.map +0 -1
- package/dist/Popover2.css +0 -68
- package/dist/Radio-BOq9UkpC.js +0 -60
- package/dist/Radio-BOq9UkpC.js.map +0 -1
- package/dist/Radio-BQg7exDG.js.map +0 -1
- package/dist/SelectCard-cu4MBuh8.js +0 -320
- package/dist/SelectCard-cu4MBuh8.js.map +0 -1
- package/dist/SelectFieldLabel-Dr8HeW3N.js.map +0 -1
- package/dist/SelectFieldSync-CJ2Ie_v1.js.map +0 -1
- package/dist/SelectMenuSync-CJA_coqD.js.map +0 -1
- package/dist/SelectTrigger-ObsnAKNp.js.map +0 -1
- package/dist/Switch-DpPHr3G3.js.map +0 -1
- package/dist/Tab-DO7LaUbw.js.map +0 -1
- package/dist/Text-BJo4oMI2.js.map +0 -1
- package/dist/TextField-DeHpgPag.js.map +0 -1
- package/dist/Textarea-DyqdMTvQ.js.map +0 -1
- package/dist/Toaster-b0-Ub3yt.js.map +0 -1
- package/dist/Tooltip-Bupqao9B.js.map +0 -1
- package/dist/floating-ui.react-C_s3_nEb.js.map +0 -1
- package/dist/floating-ui.react-dom-imrk9N49.js.map +0 -1
- package/dist/index.esm-BZV0wNKZ.js.map +0 -1
- package/dist/safePopover-BDso-xSH.js +0 -17
- package/dist/safePopover-BDso-xSH.js.map +0 -1
- package/dist/useMenuInteraction-zR_78KQC.js.map +0 -1
- package/dist/useOpenCloseTransitionStates-CiTYrLGi.js +0 -68
- package/dist/useOpenCloseTransitionStates-CiTYrLGi.js.map +0 -1
- package/dist/usePopoverTransitionStates-CDIoNUuf.js +0 -24
- package/dist/usePopoverTransitionStates-CDIoNUuf.js.map +0 -1
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { forwardRef, Children, cloneElement } from 'react';
|
|
4
|
-
import { c as cx } from './index-De1g9FRV.js';
|
|
5
|
-
import { L as Link } from './Link-jTvzyXca.js';
|
|
6
|
-
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DMDdfIah.js';
|
|
7
|
-
import { T as Text } from './Text-BJo4oMI2.js';
|
|
8
|
-
import { I as Icon } from './Icon-DuIlne4x.js';
|
|
9
|
-
|
|
10
|
-
import './Breadcrumbs.css';const SvgChevronRight = (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: "M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" }));
|
|
11
|
-
|
|
12
|
-
const breadcrumbs = "_breadcrumbs_1c7ez_2";
|
|
13
|
-
const styles = {
|
|
14
|
-
breadcrumbs: breadcrumbs,
|
|
15
|
-
"breadcrumbs-link": "_breadcrumbs-link_1c7ez_18"
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
const BreadcrumbsLink = forwardRef((props, ref) => {
|
|
19
|
-
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
20
|
-
const { children, className, style, ...rest } = componentProps;
|
|
21
|
-
const classes = cx([styles["breadcrumbs-link"]], className, {});
|
|
22
|
-
const styleCombined = {
|
|
23
|
-
...style,
|
|
24
|
-
...layoutStyles
|
|
25
|
-
};
|
|
26
|
-
return /* @__PURE__ */ jsx(
|
|
27
|
-
Link,
|
|
28
|
-
{
|
|
29
|
-
tabIndex: 0,
|
|
30
|
-
"data-anv": "breadcrumbs-link",
|
|
31
|
-
style: styleCombined,
|
|
32
|
-
appearance: "secondary",
|
|
33
|
-
className: classes,
|
|
34
|
-
...rest,
|
|
35
|
-
ref,
|
|
36
|
-
children: /* @__PURE__ */ jsx(Text, { size: "small", inline: true, children })
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
});
|
|
40
|
-
BreadcrumbsLink.displayName = "BreadcrumbsLink";
|
|
41
|
-
|
|
42
|
-
const BreadcrumbsElement = forwardRef(
|
|
43
|
-
(props, ref) => {
|
|
44
|
-
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
45
|
-
const { children, className, style, ...rest } = componentProps;
|
|
46
|
-
const classes = cx([styles["breadcrumbs"]], className, {});
|
|
47
|
-
const styleCombined = {
|
|
48
|
-
...style,
|
|
49
|
-
...layoutStyles
|
|
50
|
-
};
|
|
51
|
-
const linkCount = Children.count(children);
|
|
52
|
-
return /* @__PURE__ */ jsx(
|
|
53
|
-
"nav",
|
|
54
|
-
{
|
|
55
|
-
"data-anv": "breadcrumbs",
|
|
56
|
-
style: styleCombined,
|
|
57
|
-
className: classes,
|
|
58
|
-
"aria-label": "Breadcrumb",
|
|
59
|
-
...rest,
|
|
60
|
-
ref,
|
|
61
|
-
children: Children.map(children, (link, i) => {
|
|
62
|
-
if (i + 1 === linkCount) {
|
|
63
|
-
return /* @__PURE__ */ jsx(
|
|
64
|
-
Text,
|
|
65
|
-
{
|
|
66
|
-
inline: true,
|
|
67
|
-
size: "small",
|
|
68
|
-
style: {
|
|
69
|
-
fontWeight: "bold"
|
|
70
|
-
},
|
|
71
|
-
children: link.props.children
|
|
72
|
-
}
|
|
73
|
-
);
|
|
74
|
-
} else {
|
|
75
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
76
|
-
cloneElement(link),
|
|
77
|
-
/* @__PURE__ */ jsx(Icon, { svg: SvgChevronRight, "aria-hidden": "true" })
|
|
78
|
-
] });
|
|
79
|
-
}
|
|
80
|
-
})
|
|
81
|
-
}
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
);
|
|
85
|
-
BreadcrumbsElement.displayName = "Breadcrumbs";
|
|
86
|
-
const Breadcrumbs = Object.assign(BreadcrumbsElement, {
|
|
87
|
-
/**
|
|
88
|
-
* BreadcrumbsLink component for individual breadcrumb navigation items.
|
|
89
|
-
*
|
|
90
|
-
* Features:
|
|
91
|
-
* - Renders as a clickable link with secondary appearance
|
|
92
|
-
* - Supports all standard anchor element props
|
|
93
|
-
* - Includes layout utilities for positioning and spacing
|
|
94
|
-
* - Uses small text size for consistent styling
|
|
95
|
-
* - Fully accessible with proper focus management
|
|
96
|
-
* - Automatically applies secondary link styling
|
|
97
|
-
*
|
|
98
|
-
* @example
|
|
99
|
-
* <Breadcrumbs.Link href="/dashboard">Dashboard</Breadcrumbs.Link>
|
|
100
|
-
*/
|
|
101
|
-
Link: BreadcrumbsLink
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
export { Breadcrumbs as B };
|
|
105
|
-
//# sourceMappingURL=Breadcrumbs-3Y7jnj-F.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Breadcrumbs-3Y7jnj-F.js","sources":["../../hammer-icon/mdi/filled/chevron_right.svg","../src/components/Breadcrumbs/BreadcrumbsLink.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgChevronRight = (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: \"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\" }));\nexport default SvgChevronRight;\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { Link, Text } from \"../\";\n\nimport styles from \"./Breadcrumbs.module.scss\";\n\n/**\n * Props for the BreadcrumbsLink component\n * @extends ComponentPropsWithoutRef<\"a\">\n * @extends LayoutUtilProps\n */\nexport type BreadcrumbsLinkProps = ComponentPropsWithoutRef<\"a\"> &\n LayoutUtilProps;\n\n/**\n * BreadcrumbsLink component for individual breadcrumb navigation items.\n *\n * Features:\n * - Renders as a clickable link with secondary appearance\n * - Supports all standard anchor element props\n * - Includes layout utilities for positioning and spacing\n * - Uses small text size for consistent styling\n * - Fully accessible with proper focus management\n * - Automatically applies secondary link styling\n *\n * @example\n * <BreadcrumbsLink href=\"/dashboard\">Dashboard</BreadcrumbsLink>\n */\nexport const BreadcrumbsLink = forwardRef<\n HTMLAnchorElement,\n BreadcrumbsLinkProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { children, className, style, ...rest } = componentProps;\n\n const classes = cx([styles[\"breadcrumbs-link\"]], className, {});\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <Link\n tabIndex={0}\n data-anv=\"breadcrumbs-link\"\n style={styleCombined}\n appearance=\"secondary\"\n className={classes}\n {...rest}\n ref={ref}\n >\n <Text size=\"small\" inline>\n {children}\n </Text>\n </Link>\n );\n});\n\nBreadcrumbsLink.displayName = \"BreadcrumbsLink\";\n","import {\n Children,\n ComponentPropsWithoutRef,\n ReactElement,\n cloneElement,\n forwardRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport ChevronRight from \"@servicetitan/hammer-icon/mdi/filled/chevron_right.svg\";\n\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { Icon, Text } from \"../\";\n\nimport styles from \"./Breadcrumbs.module.scss\";\nimport { BreadcrumbsLink, BreadcrumbsLinkProps } from \"./BreadcrumbsLink\";\n\n/**\n * Props for the Breadcrumbs component\n * @extends ComponentPropsWithoutRef<\"nav\">\n * @extends LayoutUtilProps\n */\nexport type BreadcrumbsProps = ComponentPropsWithoutRef<\"nav\"> &\n LayoutUtilProps & {\n /**\n * Breadcrumb links to display. The last child will be rendered as non-clickable text.\n */\n children:\n | ReactElement<BreadcrumbsLinkProps>\n | ReactElement<BreadcrumbsLinkProps>[];\n };\n\nconst BreadcrumbsElement = forwardRef<HTMLElement, BreadcrumbsProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { children, className, style, ...rest } = componentProps;\n\n const classes = cx([styles[\"breadcrumbs\"]], className, {});\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const linkCount = Children.count(children);\n\n return (\n <nav\n data-anv=\"breadcrumbs\"\n style={styleCombined}\n className={classes}\n aria-label=\"Breadcrumb\"\n {...rest}\n ref={ref}\n >\n {Children.map(children, (link, i) => {\n if (i + 1 === linkCount) {\n return (\n <Text\n inline\n size=\"small\"\n style={{\n fontWeight: \"bold\",\n }}\n >\n {link.props.children}\n </Text>\n );\n } else {\n return (\n <>\n {cloneElement(link as ReactElement)}\n <Icon svg={ChevronRight} aria-hidden=\"true\" />\n </>\n );\n }\n })}\n </nav>\n );\n },\n);\n\nBreadcrumbsElement.displayName = \"Breadcrumbs\";\n\n/**\n * Breadcrumbs component for displaying navigation hierarchy.\n *\n * Features:\n * - Displays a series of navigation links with chevron separators\n * - Automatically renders the last item as non-clickable text\n * - Includes proper ARIA labeling for accessibility\n * - Supports layout utilities for positioning and spacing\n * - Uses chevron icons as visual separators between links\n * - Responsive design with flexbox layout\n *\n * @example\n * <Breadcrumbs>\n * <Breadcrumbs.Link href=\"/home\">Home</Breadcrumbs.Link>\n * <Breadcrumbs.Link href=\"/products\">Products</Breadcrumbs.Link>\n * <Breadcrumbs.Link href=\"/electronics\">Electronics</Breadcrumbs.Link>\n * </Breadcrumbs>\n */\nexport const Breadcrumbs = Object.assign(BreadcrumbsElement, {\n /**\n * BreadcrumbsLink component for individual breadcrumb navigation items.\n *\n * Features:\n * - Renders as a clickable link with secondary appearance\n * - Supports all standard anchor element props\n * - Includes layout utilities for positioning and spacing\n * - Uses small text size for consistent styling\n * - Fully accessible with proper focus management\n * - Automatically applies secondary link styling\n *\n * @example\n * <Breadcrumbs.Link href=\"/dashboard\">Dashboard</Breadcrumbs.Link>\n */\n Link: BreadcrumbsLink,\n});\n"],"names":["ChevronRight"],"mappings":"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"}
|
package/dist/Button-CVsGhVJz.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { forwardRef } from 'react';
|
|
3
|
-
import { I as Icon } from './Icon-DuIlne4x.js';
|
|
4
|
-
import { S as Spinner } from './Spinner-BqmcE2pb.js';
|
|
5
|
-
import { c as cx } from './index-De1g9FRV.js';
|
|
6
|
-
import { s as styles } from './Button.module-wCtFYGVD.js';
|
|
7
|
-
import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
|
|
8
|
-
import { useTrackingId } from './useTrackingId.js';
|
|
9
|
-
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DMDdfIah.js';
|
|
10
|
-
|
|
11
|
-
const Button = forwardRef(
|
|
12
|
-
(props, ref) => {
|
|
13
|
-
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
14
|
-
const {
|
|
15
|
-
children,
|
|
16
|
-
className,
|
|
17
|
-
appearance = "secondary",
|
|
18
|
-
size = "medium",
|
|
19
|
-
icon,
|
|
20
|
-
loading = false,
|
|
21
|
-
disabled,
|
|
22
|
-
style,
|
|
23
|
-
type = "button",
|
|
24
|
-
...rest
|
|
25
|
-
} = componentProps;
|
|
26
|
-
const data = {
|
|
27
|
-
children: childrenToString(props.children),
|
|
28
|
-
appearance,
|
|
29
|
-
icon,
|
|
30
|
-
size,
|
|
31
|
-
type
|
|
32
|
-
};
|
|
33
|
-
const trackingId = useTrackingId({
|
|
34
|
-
name: "Button",
|
|
35
|
-
data,
|
|
36
|
-
hasOverride: !!props["data-tracking-id"]
|
|
37
|
-
});
|
|
38
|
-
const iconBefore = (icon2) => {
|
|
39
|
-
if (typeof icon2 === "object" && "before" in icon2) {
|
|
40
|
-
return /* @__PURE__ */ jsx(
|
|
41
|
-
Icon,
|
|
42
|
-
{
|
|
43
|
-
className: styles["icon"],
|
|
44
|
-
inherit: true,
|
|
45
|
-
"aria-hidden": true,
|
|
46
|
-
svg: icon2.before
|
|
47
|
-
}
|
|
48
|
-
);
|
|
49
|
-
}
|
|
50
|
-
if (icon2 && typeof icon2 !== "object") {
|
|
51
|
-
return /* @__PURE__ */ jsx(
|
|
52
|
-
Icon,
|
|
53
|
-
{
|
|
54
|
-
className: styles["icon"],
|
|
55
|
-
inherit: true,
|
|
56
|
-
"aria-hidden": true,
|
|
57
|
-
svg: icon2,
|
|
58
|
-
size: !children && !size.includes("small") ? "large" : "medium"
|
|
59
|
-
}
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
return;
|
|
63
|
-
};
|
|
64
|
-
const buttonClassNames = cx(className, styles["button"], {
|
|
65
|
-
[styles["appearance-primary"]]: appearance === "primary",
|
|
66
|
-
[styles["appearance-secondary"]]: appearance === "secondary",
|
|
67
|
-
[styles["appearance-ghost"]]: appearance === "ghost",
|
|
68
|
-
[styles["danger-secondary"]]: appearance === "danger-secondary",
|
|
69
|
-
[styles["danger-primary"]]: appearance === "danger",
|
|
70
|
-
[styles["size-xsmall"]]: size === "xsmall",
|
|
71
|
-
[styles["size-small"]]: size === "small",
|
|
72
|
-
[styles["size-medium"]]: size === "medium",
|
|
73
|
-
[styles["size-large"]]: size === "large",
|
|
74
|
-
[styles["type-icon"]]: !children,
|
|
75
|
-
[styles["loading"]]: loading
|
|
76
|
-
});
|
|
77
|
-
const styleCombined = {
|
|
78
|
-
...style,
|
|
79
|
-
...layoutStyles
|
|
80
|
-
};
|
|
81
|
-
return /* @__PURE__ */ jsxs(
|
|
82
|
-
"button",
|
|
83
|
-
{
|
|
84
|
-
"data-tracking-id": trackingId,
|
|
85
|
-
className: buttonClassNames,
|
|
86
|
-
type,
|
|
87
|
-
disabled: disabled || loading,
|
|
88
|
-
"aria-busy": loading ? true : void 0,
|
|
89
|
-
"data-anv": "button",
|
|
90
|
-
style: styleCombined,
|
|
91
|
-
ref,
|
|
92
|
-
...rest,
|
|
93
|
-
children: [
|
|
94
|
-
loading ? /* @__PURE__ */ jsx(Spinner, { inherit: true, size: "small", className: styles["loading-spinner"] }) : icon ? iconBefore(icon) : null,
|
|
95
|
-
children,
|
|
96
|
-
typeof icon === "object" && "after" in icon ? /* @__PURE__ */ jsx(
|
|
97
|
-
Icon,
|
|
98
|
-
{
|
|
99
|
-
className: styles["icon"],
|
|
100
|
-
inherit: true,
|
|
101
|
-
"aria-hidden": true,
|
|
102
|
-
svg: icon.after
|
|
103
|
-
}
|
|
104
|
-
) : null
|
|
105
|
-
]
|
|
106
|
-
}
|
|
107
|
-
);
|
|
108
|
-
}
|
|
109
|
-
);
|
|
110
|
-
Button.displayName = "Button";
|
|
111
|
-
|
|
112
|
-
export { Button as B };
|
|
113
|
-
//# sourceMappingURL=Button-CVsGhVJz.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Button-CVsGhVJz.js","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import { ButtonAppearance, Size } from \"../../types\";\nimport { ComponentPropsWithoutRef, Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId, LayoutUtilProps } from \"../../types\";\nimport { Icon, IconProps } from \"../Icon\";\nimport { childrenToString } from \"../../internal/functions\";\nimport Spinner from \"../Spinner\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./Button.module.scss\";\n\n/**\n * Props for the Button component\n * @extends Omit<ComponentPropsWithoutRef<\"button\">, \"children\">\n * @extends LayoutUtilProps\n */\nexport type ButtonProps = Omit<ComponentPropsWithoutRef<\"button\">, \"children\"> &\n LayoutUtilProps & {\n /**\n * The visual variant of the button.\n * @default secondary\n */\n appearance?: ButtonAppearance;\n\n /**\n * The size of the button.\n * @default medium\n */\n size?: Extract<Size, \"xsmall\" | \"small\" | \"medium\" | \"large\">;\n\n /**\n * The loading state of the button.\n * If true, it will show infinite state of the loading.\n * @default false\n */\n loading?: boolean;\n } & (\n | {\n children?: ComponentPropsWithoutRef<\"button\">[\"children\"];\n /**\n * The icons of the button.\n */\n icon?:\n | IconProps[\"svg\"]\n | {\n after: IconProps[\"svg\"];\n }\n | {\n before: IconProps[\"svg\"];\n };\n }\n | {\n children?: never;\n /**\n * The icon of the icon only button.\n */\n icon?: IconProps[\"svg\"];\n }\n ) &\n /**\n * Data tracking id\n */\n DataTrackingId;\n\n/**\n * Button component for triggering actions and user interactions.\n *\n * Features:\n * - Multiple visual appearances (primary, secondary, ghost, danger variants)\n * - Four size options (xsmall, small, medium, large)\n * - Loading state with spinner animation\n * - Icon support (before, after, or icon-only)\n * - Full accessibility support with ARIA attributes\n * - Supports layout utilities for positioning and spacing\n * - Automatic disabled state when loading\n * - Flexible content with text and/or icons\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Button appearance=\"primary\" size=\"medium\" onClick={() => console.log('clicked')}>\n * Click Me\n * </Button>\n */\nexport const Button = forwardRef(\n (props: ButtonProps, ref: Ref<HTMLButtonElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n children,\n className,\n appearance = \"secondary\",\n size = \"medium\",\n icon,\n loading = false,\n disabled,\n style,\n type = \"button\",\n ...rest\n } = componentProps;\n\n const data = {\n children: childrenToString(props.children),\n appearance,\n icon,\n size,\n type,\n };\n\n const trackingId = useTrackingId({\n name: \"Button\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const iconBefore = (icon: ButtonProps[\"icon\"]) => {\n if (typeof icon === \"object\" && \"before\" in icon) {\n return (\n <Icon\n className={styles[\"icon\"]}\n inherit\n aria-hidden\n svg={icon.before}\n />\n );\n }\n if (icon && typeof icon !== \"object\") {\n return (\n <Icon\n className={styles[\"icon\"]}\n inherit\n aria-hidden\n svg={icon}\n size={!children && !size.includes(\"small\") ? \"large\" : \"medium\"}\n />\n );\n }\n return;\n };\n\n const buttonClassNames = cx(className, styles[\"button\"], {\n [styles[\"appearance-primary\"]]: appearance === \"primary\",\n [styles[\"appearance-secondary\"]]: appearance === \"secondary\",\n [styles[\"appearance-ghost\"]]: appearance === \"ghost\",\n [styles[\"danger-secondary\"]]: appearance === \"danger-secondary\",\n [styles[\"danger-primary\"]]: appearance === \"danger\",\n [styles[\"size-xsmall\"]]: size === \"xsmall\",\n [styles[\"size-small\"]]: size === \"small\",\n [styles[\"size-medium\"]]: size === \"medium\",\n [styles[\"size-large\"]]: size === \"large\",\n [styles[\"type-icon\"]]: !children,\n [styles[\"loading\"]]: loading,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <button\n data-tracking-id={trackingId}\n className={buttonClassNames}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading ? true : undefined}\n data-anv=\"button\"\n style={styleCombined}\n ref={ref}\n {...rest}\n >\n {loading ? (\n <Spinner inherit size=\"small\" className={styles[\"loading-spinner\"]} />\n ) : icon ? (\n iconBefore(icon)\n ) : null}\n {children}\n {typeof icon === \"object\" && \"after\" in icon ? (\n <Icon\n className={styles[\"icon\"]}\n inherit\n aria-hidden\n svg={icon.after}\n />\n ) : null}\n </button>\n );\n },\n);\n\nButton.displayName = \"Button\";\n"],"names":["icon"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar-SGlTt-bs.js","sources":["../src/components/Calendar/CalendarContext.tsx","../src/components/Calendar/internal/utils.ts","../src/components/Calendar/CalendarNowButton.tsx","../src/components/Calendar/CalendarYearButton.tsx","../src/components/Calendar/CalendarPrevButton.tsx","../src/components/Calendar/CalendarNextButton.tsx","../src/components/Calendar/CalendarMonthButton.tsx","../src/components/Calendar/internal/CalendarDay.tsx","../src/components/Calendar/internal/CalendarWeek.tsx","../src/components/Calendar/CalendarMonth.tsx","../src/internal/components/YearSelector/internal/useYearSelectorKeys.ts","../src/internal/components/YearSelector/internal/YearItem.tsx","../src/internal/components/YearSelector/YearSelector.tsx","../src/components/Calendar/internal/CalendarMonthSelection.tsx","../src/beta/components/Calendar/CalendarBetaPropsContext.tsx","../src/beta/components/Calendar/useCalendarBetaProps.tsx","../src/components/Calendar/Calendar.tsx"],"sourcesContent":["import { createContext, Dispatch, SetStateAction, useContext } from \"react\";\nimport { CalendarProps, CalendarRangeValue, CalendarValue } from \"./Calendar\";\nimport { DateTime } from \"luxon\";\nimport { IanaZone } from \"../../types\";\n\ntype CalendarContextCommonProps = {\n /**\n * Whether the calendar should focus on the focused date.\n */\n disableAutofocus: boolean;\n /**\n * The focused date. Used to determine what month and year is currently selected.\n */\n focusedDate: DateTime;\n /**\n * The function to call when the focused date changes.\n *\n * @param date - The date that is focused.\n */\n setFocusedDate: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"focusedDate\"]>\n >;\n /**\n * The selected month. Used to determine what month is currently selected in the month button.\n */\n selectedMonth: DateTime[\"month\"];\n /**\n * The function to call when the selected month changes.\n *\n * @param month - The month that is selected.\n */\n setSelectedMonth: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"selectedMonth\"]>\n >;\n /**\n * The selected year. Used to determine what year is currently selected in the year button.\n */\n selectedYear: DateTime[\"year\"];\n /**\n * The function to call when the selected year changes.\n *\n * @param year - The year that is selected.\n */\n setSelectedYear: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"selectedYear\"]>\n >;\n /**\n * The hovered date. Used to determine what date is currently hovered over.\n */\n hoveredDate: DateTime;\n setHoveredDate: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"hoveredDate\"] | undefined>\n >;\n /**\n * The default time zone to use for the calendar.\n */\n defaultTimeZone: IanaZone;\n /**\n * The minimum date allowed.\n */\n minDate: DateTime | null;\n /**\n * The maximum date allowed.\n */\n maxDate: DateTime | null;\n /**\n * The days of the week and dates that are unavailable.\n */\n unavailable: {\n /**\n * The specific dates that are unavailable.\n */\n dates: Set<string>;\n /**\n * The days of the week that are unavailable.\n */\n daysOfWeek: Set<number>;\n };\n /**\n * The locale to use for the calendar.\n */\n locale: Exclude<CalendarProps[\"locale\"], undefined>;\n /**\n * The id of the calendar.\n */\n id: string;\n /**\n * The date format to use for the calendar.\n */\n dateFormat: Intl.DateTimeFormatOptions;\n /**\n * The day of the week to start the calendar on.\n */\n startDay: \"Sunday\" | \"Monday\";\n /**\n * Whether the calendar is controlled.\n */\n controlled?: boolean;\n /**\n * The date metadata to determine if a date has a pip associated with it.\n */\n dateMetadata?: Map<string, string>;\n};\n\nexport type CalendarSingleContextProps = CalendarContextCommonProps & {\n /**\n * The value of the calendar.\n */\n value: DateTime | null;\n /**\n * The function to call when the value changes.\n */\n setValue: Dispatch<SetStateAction<CalendarSingleContextProps[\"value\"]>>;\n /**\n * The function to call when the selection changes.\n *\n * @param data - The data to pass to the function.\n */\n onSelection?: (data: { value: CalendarValue }) => void;\n /**\n * Whether the calendar is in range mode.\n */\n range?: false;\n};\nexport type CalendarRangeContextProps = CalendarContextCommonProps & {\n /**\n * The value of the calendar.\n */\n value: { start?: DateTime | null; end?: DateTime | null };\n /**\n * The function to call when the value changes.\n */\n setValue: Dispatch<SetStateAction<CalendarRangeContextProps[\"value\"]>>;\n /**\n * The function to call when the selection changes.\n *\n * @param data - The data to pass to the function.\n */\n onSelection?: (data: { value: CalendarRangeValue }) => void;\n /**\n * Whether the calendar is in range mode.\n */\n range: true;\n};\n\nexport type CalendarContextProps =\n | CalendarSingleContextProps\n | CalendarRangeContextProps;\n\n/**\n * The context for the calendar.\n */\nexport const CalendarContext = createContext<CalendarContextProps | null>(null);\n\n/**\n * A hook to access the calendar context.\n *\n * @returns The calendar context.\n */\nexport function useCalendar(): CalendarContextProps {\n const context = useContext(CalendarContext);\n if (!context) {\n throw new Error(\"useCalendar must be used within a <Calendar>\");\n }\n return context;\n}\n","import {\n CalendarContextProps,\n CalendarRangeContextProps,\n} from \"../CalendarContext\";\nimport { DateTime } from \"luxon\";\n\nexport const isSameDay = (d1?: DateTime | null, d2?: DateTime | null) => {\n if (!d1 || !d2) return undefined;\n try {\n if (\n d1.hasSame(d2, \"month\") &&\n d1.hasSame(d2, \"year\") &&\n d1.hasSame(d2, \"day\")\n ) {\n return true;\n }\n return false;\n } catch {\n return false;\n }\n};\n\nexport const isSameMonth = (d1?: DateTime | null, d2?: DateTime | null) => {\n if (!d1 || !d2) return undefined;\n if (d1.hasSame(d2, \"month\") && d1.hasSame(d2, \"year\")) return true;\n return false;\n};\n\nexport const isSameYear = (d1?: DateTime | null, d2?: DateTime | null) => {\n if (!d1 || !d2) return undefined;\n if (d1.hasSame(d2, \"year\")) return true;\n return false;\n};\n\nexport const isUnavailableDate = (\n n: DateTime,\n unavailable: CalendarContextProps[\"unavailable\"],\n timeZone: string,\n) => {\n const tmpSet = new Set();\n unavailable.dates?.forEach((date) => {\n tmpSet.add(toDateString(DateTime.fromISO(date, { zone: timeZone })));\n });\n if (unavailable.daysOfWeek?.has(n.weekday)) {\n return true;\n }\n const dateISO = n.toISO();\n if (!dateISO) return;\n return tmpSet.has(\n toDateString(DateTime.fromISO(dateISO, { zone: timeZone })),\n );\n};\n\nexport const isBeyondMinDate = (\n n: DateTime,\n minDate: CalendarContextProps[\"minDate\"],\n) => minDate && minDate.toMillis() > n.toMillis();\n\nexport const isBeyondMaxDate = (\n n: DateTime,\n maxDate: CalendarContextProps[\"maxDate\"],\n) => maxDate && maxDate.toMillis() < n.toMillis();\n\nexport const isValidDate = (\n n: DateTime | undefined,\n minDate = \"\",\n maxDate = \"\",\n unavailable: CalendarContextProps[\"unavailable\"],\n timeZone: string,\n) => {\n if (!n) return false;\n const normalizedMinDate = normalizeDate(minDate, timeZone);\n const normalizedMaxDate = normalizeDate(maxDate, timeZone);\n if (normalizedMinDate && isBeyondMinDate(n, normalizedMinDate)) return false;\n if (normalizedMaxDate && isBeyondMaxDate(n, normalizedMaxDate)) return false;\n return !isUnavailableDate(n, unavailable, timeZone);\n};\n\nexport const normalizeDate = (date: string, defaultTimeZone: string) => {\n return DateTime.fromISO(date, { zone: defaultTimeZone }).startOf(\"day\");\n};\n\nexport const toDateString = (date: DateTime<boolean>) =>\n date.startOf(\"day\").toISO();\n\nexport function rangeUpdater(\n value: CalendarRangeContextProps[\"value\"],\n newDate: DateTime,\n setValue: CalendarRangeContextProps[\"setValue\"],\n onSelection: CalendarRangeContextProps[\"onSelection\"],\n) {\n if (value.start && isSameDay(value.start, newDate) && !value.end) {\n setValue((prev) => {\n return { ...prev, end: newDate };\n });\n onSelection?.({\n value: {\n start: toDateString(value.start) ?? undefined,\n end: toDateString(newDate) ?? undefined,\n },\n });\n return;\n }\n if (\n (!value.start && !value.end) ||\n (value.start && value.end) ||\n (value.start &&\n !value.end &&\n value.start.startOf(\"day\").toMillis() > newDate.startOf(\"day\").toMillis())\n ) {\n setValue({ start: newDate, end: null });\n onSelection?.({\n value: {\n start: toDateString(newDate) ?? undefined,\n end: undefined,\n },\n });\n return;\n }\n if (\n value.start &&\n !value.end &&\n value.start.startOf(\"day\").toMillis() < newDate.startOf(\"day\").toMillis()\n ) {\n setValue((prev) => {\n return { ...prev, end: newDate };\n });\n onSelection?.({\n value: {\n start: toDateString(value.start) ?? undefined,\n end: toDateString(newDate) ?? undefined,\n },\n });\n return;\n }\n if (!value.start && value.end) {\n setValue((prev) => {\n return { ...prev, start: newDate };\n });\n onSelection?.({\n value: {\n start: toDateString(newDate) ?? undefined,\n end: toDateString(value.end) ?? undefined,\n },\n });\n return;\n }\n}\n\nexport const getDateMetadata = (\n date: DateTime,\n dateMetadata: Map<string, string> | undefined,\n): string | undefined => {\n if (!dateMetadata) return undefined;\n const dateString = date.toISODate(); // Returns \"2024-01-15\" format\n return dateString ? dateMetadata.get(dateString) : undefined;\n};\n","import { DateTime } from \"luxon\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { MouseEvent, MouseEventHandler, forwardRef } from \"react\";\nimport {\n isBeyondMaxDate,\n isBeyondMinDate,\n isUnavailableDate,\n rangeUpdater,\n toDateString,\n} from \"./internal/utils\";\n\nexport type CalendarNowProps = {\n /**\n * @deprecated This is overridden internally\n */\n onClick?: (e: MouseEvent<HTMLButtonElement>, date: string | null) => void;\n onClickFixed?: MouseEventHandler<HTMLButtonElement> | undefined;\n} & Omit<ButtonProps, \"onClick\">;\n\n/**\n * A button that displays the current date and allows the user to select it.\n *\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the current date and allows the user to select it.\n */\nexport const CalendarNow = forwardRef<HTMLButtonElement, CalendarNowProps>(\n (props, ref) => {\n const { onClick, onClickFixed, ...rest } = props;\n const {\n setFocusedDate,\n setSelectedMonth,\n setSelectedYear,\n value,\n setValue,\n defaultTimeZone,\n unavailable,\n onSelection,\n minDate,\n maxDate,\n controlled,\n range,\n } = useCalendar();\n\n const nToday = DateTime.fromISO(DateTime.now().toISO(), {\n zone: defaultTimeZone,\n }).startOf(\"day\");\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClickFixed?.(e);\n setFocusedDate(nToday);\n setSelectedMonth(nToday.month);\n setSelectedYear(nToday.year);\n if (!range) {\n onSelection?.({\n value: toDateString(nToday) ?? undefined,\n });\n if (!controlled) {\n setValue(nToday);\n }\n return;\n }\n rangeUpdater(value, nToday, setValue, onSelection);\n };\n\n const isDisabled =\n isBeyondMaxDate(nToday, maxDate) ||\n isBeyondMinDate(nToday, minDate) ||\n isUnavailableDate(nToday, unavailable, defaultTimeZone);\n\n return (\n <Button\n ref={ref}\n onClick={onClickHandler}\n appearance=\"ghost\"\n disabled={isDisabled}\n data-anv=\"calendar-now\"\n size=\"small\"\n {...rest}\n >\n Today\n </Button>\n );\n },\n);\n\nCalendarNow.displayName = \"CalendarNowButton\";\n","import { Button, ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { forwardRef } from \"react\";\nimport IconKeyboardArrowDown from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_down.svg\";\nimport IconKeyboardArrowUp from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_up.svg\";\nimport { DateTime } from \"luxon\";\n\nexport type CalendarYearButtonProps = ButtonProps & {\n /**\n * The current selection state of the calendar.\n */\n calendarSelectionState: \"day\" | \"month\" | \"year\";\n};\n\n/**\n * A button that displays the current year and allows the user to select a different year.\n *\n * @param props.calendarSelectionState - The current selection state of the calendar.\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the current year and allows the user to select a different year.\n */\nexport const CalendarYearButton = forwardRef<\n HTMLButtonElement,\n CalendarYearButtonProps\n>((props, ref) => {\n const { calendarSelectionState, ...rest } = props;\n const { selectedYear, locale } = useCalendar();\n\n const currentYear = DateTime.fromObject({ year: selectedYear })\n .setLocale(locale)\n .toLocaleString({ year: \"numeric\" });\n\n return (\n <Button\n ref={ref}\n appearance=\"ghost\"\n size=\"small\"\n icon={{\n after:\n calendarSelectionState === \"year\"\n ? IconKeyboardArrowUp\n : IconKeyboardArrowDown,\n }}\n {...rest}\n >\n {currentYear}\n </Button>\n );\n});\n\nCalendarYearButton.displayName = \"CalendarYearButton\";\n","import { Button, ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { MouseEvent, forwardRef, useEffect, useState } from \"react\";\nimport Prev from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_left.svg\";\nimport styles from \"./Calendar.module.scss\";\nimport { isSameMonth } from \"./internal/utils\";\nimport cx from \"classnames\";\n\nexport type CalendarPrevProps = ButtonProps;\n\n/**\n * A button that displays the previous month and allows the user to select a different month.\n *\n * @param props.onClick - The function to call when the button is clicked.\n * @param props.className - The class name to apply to the button.\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the previous month and allows the user to select a different month.\n */\nexport const CalendarPrev = forwardRef<HTMLButtonElement, CalendarPrevProps>(\n (props, ref) => {\n const { onClick, className, ...rest } = props;\n const {\n focusedDate,\n setFocusedDate,\n minDate,\n setSelectedMonth,\n setSelectedYear,\n } = useCalendar();\n\n const [disabled, setDisabled] = useState(false);\n\n useEffect(() => {\n setDisabled(\n minDate != null &&\n focusedDate.minus({ month: 1 }).endOf(\"month\") < minDate,\n );\n }, [minDate, focusedDate]);\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n\n const targetMonth = focusedDate.minus({ month: 1 }).endOf(\"month\");\n const targetDate = focusedDate.minus({ month: 1 });\n\n // Check if we're crossing year boundary (January to December)\n const isCrossingYearBoundary =\n focusedDate.month === 1 && targetDate.month === 12;\n\n if (minDate !== null) {\n if (targetDate.toMillis() >= minDate?.toMillis()) {\n setFocusedDate(targetDate);\n setSelectedMonth(targetDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(targetDate.year);\n }\n return;\n }\n\n if (!isSameMonth(targetMonth, focusedDate)) {\n setFocusedDate(minDate);\n setSelectedMonth(minDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(minDate.year);\n }\n }\n return;\n }\n setFocusedDate(targetDate);\n setSelectedMonth(targetDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(targetDate.year);\n }\n };\n\n return (\n <Button\n ref={ref}\n onClick={onClickHandler}\n className={cx(styles[\"controller-button\"], className)}\n appearance=\"ghost\"\n size=\"small\"\n icon={Prev}\n data-anv=\"calendar-prev\"\n aria-label=\"Previous Month\"\n {...rest}\n disabled={disabled}\n />\n );\n },\n);\n\nCalendarPrev.displayName = \"CalendarPrevButton\";\n","import { Button, ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { MouseEvent, forwardRef, useEffect, useState } from \"react\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_right.svg\";\nimport { isSameMonth } from \"./internal/utils\";\nimport cx from \"classnames\";\nimport styles from \"./Calendar.module.scss\";\n\nexport type CalendarNextProps = ButtonProps;\n\n/**\n * A button that displays the next month and allows the user to select a different month.\n *\n * @param props.onClick - The function to call when the button is clicked.\n * @param props.className - The class name to apply to the button.\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the next month and allows the user to select a different month.\n */\nexport const CalendarNext = forwardRef<HTMLButtonElement, CalendarNextProps>(\n (props, ref) => {\n const { onClick, className, ...rest } = props;\n const {\n focusedDate,\n setFocusedDate,\n maxDate,\n setSelectedMonth,\n setSelectedYear,\n } = useCalendar();\n\n const [disabled, setDisabled] = useState(false);\n\n useEffect(() => {\n setDisabled(\n maxDate != null &&\n focusedDate.plus({ month: 1 }).startOf(\"month\") > maxDate,\n );\n }, [maxDate, focusedDate]);\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n\n const targetMonth = focusedDate.plus({ month: 1 }).startOf(\"month\");\n const targetDate = focusedDate.plus({ month: 1 });\n\n // Check if we're crossing year boundary (December to January)\n const isCrossingYearBoundary =\n focusedDate.month === 12 && targetDate.month === 1;\n\n if (maxDate !== null) {\n if (targetDate.toMillis() <= maxDate?.toMillis()) {\n setFocusedDate(targetDate);\n setSelectedMonth(targetDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(targetDate.year);\n }\n return;\n }\n\n if (!isSameMonth(targetMonth, focusedDate)) {\n setFocusedDate(maxDate);\n setSelectedMonth(maxDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(maxDate.year);\n }\n }\n return;\n }\n setFocusedDate(targetDate);\n setSelectedMonth(targetDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(targetDate.year);\n }\n };\n\n return (\n <Button\n onClick={onClickHandler}\n appearance=\"ghost\"\n size=\"small\"\n className={cx(styles[\"controller-button\"], className)}\n icon={Next}\n aria-label=\"Next Month\"\n data-anv=\"calendar-next\"\n ref={ref}\n {...rest}\n disabled={disabled}\n />\n );\n },\n);\n\nCalendarNext.displayName = \"CalendarNextButton\";\n","import { Button, ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { forwardRef } from \"react\";\nimport IconKeyboardArrowDown from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_down.svg\";\nimport IconKeyboardArrowUp from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_up.svg\";\nimport { DateTime } from \"luxon\";\n\nexport type CalendarMonthButtonProps = ButtonProps & {\n /**\n * The current selection state of the calendar.\n */\n calendarSelectionState: \"day\" | \"month\" | \"year\";\n};\n\n/**\n * A button that displays the current month and allows the user to select a different month.\n *\n * @param props.calendarSelectionState - The current selection state of the calendar.\n * @param props.onClick - The function to call when the button is clicked.\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the current month and allows the user to select a different month.\n */\nexport const CalendarMonthButton = forwardRef<\n HTMLButtonElement,\n CalendarMonthButtonProps\n>((props, ref) => {\n const { calendarSelectionState, onClick, ...rest } = props;\n const { selectedMonth, locale } = useCalendar();\n\n const currentMonth = DateTime.fromObject({ month: selectedMonth })\n .setLocale(locale)\n .toFormat(\"MMM\");\n\n return (\n <Button\n ref={ref}\n appearance=\"ghost\"\n size=\"small\"\n onClick={onClick}\n icon={{\n after:\n calendarSelectionState === \"month\"\n ? IconKeyboardArrowUp\n : IconKeyboardArrowDown,\n }}\n {...rest}\n >\n {currentMonth}\n </Button>\n );\n});\n\nCalendarMonthButton.displayName = \"CalendarMonthButton\";\n","import { useCalendar } from \"../CalendarContext\";\nimport {\n ComponentPropsWithoutRef,\n KeyboardEvent,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"../Calendar.module.scss\";\nimport { DateTime, Info } from \"luxon\";\nimport {\n isBeyondMaxDate,\n isBeyondMinDate,\n isSameDay,\n isSameMonth,\n isUnavailableDate,\n rangeUpdater,\n toDateString,\n getDateMetadata,\n} from \"./utils\";\n\nexport type CalendarDayProps = ComponentPropsWithoutRef<\"td\"> & {\n /**\n * The date to display.\n */\n date: DateTime;\n};\n\n/**\n * A component that displays a day in the calendar.\n *\n * @param props.date - The date to display.\n * @param props - The rest of the props for the td element.\n * @returns A component that displays a day in the calendar.\n */\nexport const CalendarDay = forwardRef<HTMLTableCellElement, CalendarDayProps>(\n (props, ref) => {\n const { className, date, ...rest } = props;\n const context = useCalendar();\n const {\n disableAutofocus,\n value,\n setValue,\n focusedDate,\n setFocusedDate,\n hoveredDate,\n setHoveredDate,\n onSelection,\n locale,\n minDate,\n maxDate,\n unavailable,\n defaultTimeZone,\n controlled,\n id: uid,\n range,\n dateFormat,\n startDay,\n setSelectedMonth,\n setSelectedYear,\n dateMetadata,\n } = context;\n\n const initialized = useRef(false);\n\n const futureDateSelection = useCallback(\n (targetDate: DateTime) => {\n if (maxDate !== null && targetDate.toMillis() > maxDate?.toMillis()) {\n return;\n }\n\n if (isUnavailableDate(targetDate, unavailable, defaultTimeZone)) {\n let nextFocusDate = targetDate.plus({ days: 1 });\n for (let i = 0; i < 365; i++) {\n if (\n maxDate !== null &&\n nextFocusDate.toMillis() > maxDate?.toMillis()\n ) {\n break;\n }\n if (\n isUnavailableDate(nextFocusDate, unavailable, defaultTimeZone)\n ) {\n nextFocusDate = nextFocusDate.plus({ days: 1 });\n } else {\n // setHoveredDate(nextFocusDate);\n setFocusedDate(nextFocusDate);\n break;\n }\n }\n return;\n }\n\n setFocusedDate(targetDate);\n\n if (targetDate.month !== focusedDate.month) {\n setSelectedMonth(targetDate.month);\n if (targetDate.year !== focusedDate.year) {\n setSelectedYear(targetDate.year);\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps -- we don't need to re-render when the selected month or year changes\n [maxDate, setFocusedDate, defaultTimeZone, unavailable],\n );\n\n const pastDateSelection = (targetDate: DateTime) => {\n if (minDate !== null && targetDate.toMillis() < minDate?.toMillis()) {\n return;\n }\n\n if (isUnavailableDate(targetDate, unavailable, defaultTimeZone)) {\n let prevFocusDate = targetDate.minus({ days: 1 });\n for (let i = 0; i < 365; i++) {\n if (\n minDate !== null &&\n prevFocusDate.toMillis() < minDate?.toMillis()\n ) {\n break;\n }\n if (isUnavailableDate(prevFocusDate, unavailable, defaultTimeZone)) {\n prevFocusDate = prevFocusDate.minus({ days: 1 });\n } else {\n // setHoveredDate(prevFocusDate);\n setFocusedDate(prevFocusDate);\n break;\n }\n }\n return;\n }\n\n setFocusedDate(targetDate);\n\n if (targetDate.month !== focusedDate.month) {\n setSelectedMonth(targetDate.month);\n if (targetDate.year !== focusedDate.year) {\n setSelectedYear(targetDate.year);\n }\n }\n };\n\n const isSelectedDate = (date: DateTime, compareDate?: DateTime) => {\n if (!range) {\n return isSameDay(date, compareDate ?? value);\n }\n if (value.start && value.end) {\n return (\n date.toMillis() >= value.start.startOf(\"day\").toMillis() &&\n date.toMillis() <= value.end.endOf(\"day\").toMillis()\n );\n }\n\n return isSameDay(date, value.start);\n };\n\n const isRange = (date: DateTime) => {\n if (!range) {\n return false;\n }\n if (value.start && value.end) {\n return (\n date.toMillis() >= value.start.startOf(\"day\").toMillis() &&\n date.toMillis() <= value.end.endOf(\"day\").toMillis() &&\n !isSameDay(value.start, date) &&\n !isSameDay(value.end, date)\n );\n }\n\n return false;\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n switch (e.code) {\n case \"Space\":\n case \"Enter\":\n e.preventDefault();\n if (!range) {\n if (!controlled) {\n setValue(isSameDay(value, focusedDate) ? null : focusedDate);\n }\n onSelection?.({\n value: isSameDay(value, focusedDate)\n ? undefined\n : (focusedDate\n .setZone(defaultTimeZone)\n .startOf(\"day\")\n .toISO() ?? undefined),\n });\n break;\n }\n rangeUpdater(value, focusedDate, setValue, onSelection);\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n pastDateSelection(focusedDate.minus({ days: 1 }));\n break;\n case \"ArrowRight\":\n e.preventDefault();\n futureDateSelection(focusedDate.plus({ days: 1 }));\n break;\n case \"ArrowUp\":\n e.preventDefault();\n pastDateSelection(focusedDate.minus({ days: 7 }));\n break;\n case \"ArrowDown\":\n e.preventDefault();\n futureDateSelection(focusedDate.plus({ days: 7 }));\n break;\n case \"PageUp\":\n e.preventDefault();\n if (e.shiftKey) {\n pastDateSelection(focusedDate.minus({ years: 1 }));\n break;\n }\n pastDateSelection(focusedDate.minus({ months: 1 }));\n break;\n case \"PageDown\":\n e.preventDefault();\n if (e.shiftKey) {\n futureDateSelection(focusedDate.plus({ years: 1 }));\n break;\n }\n futureDateSelection(focusedDate.plus({ months: 1 }));\n break;\n\n default:\n break;\n }\n };\n\n let startDayIndex = 6;\n switch (startDay) {\n case \"Monday\":\n startDayIndex = 0;\n break;\n case \"Sunday\":\n default:\n startDayIndex = 6;\n }\n\n const weekdaysArr: string[] = [];\n for (let i = 0; i < 7; i++) {\n const dayIndex = (startDayIndex + i) % 7;\n weekdaysArr.push(Info.weekdays(\"narrow\", { locale })[dayIndex]);\n }\n\n const firstDay = focusedDate.startOf(\"month\");\n\n const prevArr: DateTime<boolean>[] = [];\n if (firstDay.weekday !== startDayIndex + 1) {\n // Complete the first row with the previous month's dates.\n for (let i = 1; i < 8; i++) {\n const prevDay = firstDay.minus({ days: i });\n prevArr.push(prevDay);\n if (prevDay.weekday === startDayIndex + 1) break;\n }\n }\n prevArr.reverse();\n\n const onClickHandler = (d: DateTime) => {\n setFocusedDate(d);\n if (!range) {\n onSelection?.({\n value: toDateString(d.setZone(defaultTimeZone)) ?? undefined,\n });\n if (!controlled) {\n setValue(d);\n }\n return;\n }\n\n rangeUpdater(value, d, setValue, onSelection);\n };\n\n const onFocusHandler = (d: DateTime) => {\n setHoveredDate(d);\n };\n const onBlurHandler = () => {\n setHoveredDate(undefined);\n };\n\n const onMouseEnterHandler = (d: DateTime) => {\n setHoveredDate(d);\n };\n\n useEffect(() => {\n if (!initialized.current) {\n initialized.current = true;\n return;\n }\n if (!disableAutofocus) {\n requestAnimationFrame(() => {\n const targetElement =\n document.getElementById(`${uid}-${focusedDate.toISODate()}`) ||\n document.activeElement?.shadowRoot?.getElementById(\n `${uid}-${focusedDate.toISODate()}`,\n );\n targetElement?.focus();\n });\n }\n }, [focusedDate, uid, disableAutofocus]);\n\n useEffect(() => {\n if (!isUnavailableDate(focusedDate, unavailable, defaultTimeZone)) return;\n futureDateSelection(focusedDate.plus({ days: 1 }));\n }, [focusedDate, futureDateSelection, defaultTimeZone, unavailable]);\n\n const isDisabled =\n !isSameMonth(date, focusedDate) ||\n isBeyondMinDate(date, minDate) ||\n isBeyondMaxDate(date, maxDate) ||\n isUnavailableDate(date, unavailable, defaultTimeZone);\n const isUnavailable = isUnavailableDate(date, unavailable, defaultTimeZone);\n\n const hasMetadata = getDateMetadata(date, dateMetadata);\n\n const hoverRange =\n range &&\n hoveredDate &&\n value.start &&\n !value.end &&\n date.toMillis() > value.start.toMillis() &&\n date.toMillis() <= hoveredDate.toMillis();\n\n const cellCx = cx(styles[\"cell\"], {\n [styles[\"selected\"]]: !isUnavailable && isSelectedDate(date),\n [styles[\"range-first\"]]:\n range &&\n value.start &&\n (value.end || hoveredDate) &&\n isSameDay(date, value.start),\n [styles[\"range-last\"]]:\n range &&\n ((value.start && value.end && isSameDay(date, value.end)) ||\n (hoverRange && isSameDay(date, hoveredDate))),\n [styles[\"range\"]]: isRange(date) || hoverRange,\n [styles[\"is-unavailable\"]]: isUnavailable,\n [styles[\"overflow\"]]: !isSameMonth(date, focusedDate),\n [styles[\"hover-last\"]]: hoverRange && isSameDay(date, hoveredDate),\n [styles[\"has-metadata\"]]: hasMetadata,\n });\n const isMinDate =\n minDate !== null && date.toMillis() <= minDate?.toMillis();\n const isMaxDate =\n maxDate !== null && date.toMillis() >= maxDate?.toMillis();\n\n return (\n <td key={date.toISODate()} role=\"gridcell\" {...rest} ref={ref}>\n {!isUnavailable && (isRange(date) || hoverRange) ? (\n <div\n role=\"presentation\"\n className={cx(styles[\"range-fill\"], {\n [styles[\"range-disabled\"]]: isDisabled,\n [styles[\"hover-last\"]]:\n hoverRange && isSameDay(date, hoveredDate),\n })}\n />\n ) : null}\n <button\n onClick={() => onClickHandler(date)}\n onFocus={() => onFocusHandler(date)}\n onBlur={() => onBlurHandler()}\n className={cellCx}\n onKeyDown={onKeyDownHandler}\n onMouseEnter={() => onMouseEnterHandler(date)}\n tabIndex={\n disableAutofocus ? -1 : isSameDay(date, focusedDate) ? 0 : -1\n }\n disabled={isDisabled ? true : undefined}\n aria-label={`${date.toLocaleString(dateFormat)}${isSelectedDate(date) ? \" selected\" : \"\"}${hasMetadata ? `, ${hasMetadata}` : \"\"}${isMinDate ? \", You are on the first available date\" : \"\"}${isMaxDate ? \", You are on the last available date\" : \"\"}`}\n id={`${uid}-${date.toISODate()}`}\n >\n {date.day}\n {hasMetadata && <span className={styles[\"pip\"]} aria-hidden=\"true\" />}\n </button>\n </td>\n );\n },\n);\n\nCalendarDay.displayName = \"CalendarDay\";\n","import { useCalendar } from \"../CalendarContext\";\nimport {\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { DateTime, Info } from \"luxon\";\nimport { isUnavailableDate } from \"./utils\";\nimport { CalendarDay } from \"./CalendarDay\";\n\nexport type CalendarWeekProps = ComponentPropsWithoutRef<\"tr\"> & {\n /**\n * @deprecated This is overridden internally\n */\n className?: ComponentPropsWithoutRef<\"tr\">[\"className\"];\n /**\n * The dates for the week.\n */\n week: DateTime[];\n};\n\n/**\n * A component that displays a week in the calendar.\n *\n * @param props - The props for the tr element.\n * @returns A component that displays a week in the calendar.\n */\nexport const CalendarWeek = forwardRef<HTMLTableRowElement, CalendarWeekProps>(\n (props, ref) => {\n const { className, week, ...rest } = props;\n const context = useCalendar();\n const {\n focusedDate,\n setFocusedDate,\n locale,\n maxDate,\n unavailable,\n defaultTimeZone,\n id: uid,\n startDay,\n } = context;\n\n const initialized = useRef(false);\n\n const futureDateSelection = useCallback(\n (targetDate: DateTime) => {\n if (maxDate !== null && targetDate.toMillis() > maxDate?.toMillis()) {\n return;\n }\n\n if (isUnavailableDate(targetDate, unavailable, defaultTimeZone)) {\n let nextFocusDate = targetDate.plus({ days: 1 });\n for (let i = 0; i < 365; i++) {\n if (\n maxDate !== null &&\n nextFocusDate.toMillis() > maxDate?.toMillis()\n ) {\n break;\n }\n if (\n isUnavailableDate(nextFocusDate, unavailable, defaultTimeZone)\n ) {\n nextFocusDate = nextFocusDate.plus({ days: 1 });\n } else {\n // setHoveredDate(nextFocusDate);\n setFocusedDate(nextFocusDate);\n break;\n }\n }\n return;\n }\n\n setFocusedDate(targetDate);\n },\n [maxDate, setFocusedDate, defaultTimeZone, unavailable],\n );\n\n let startDayIndex = 6;\n switch (startDay) {\n case \"Monday\":\n startDayIndex = 0;\n break;\n case \"Sunday\":\n default:\n startDayIndex = 6;\n }\n\n const weekdaysArr: string[] = [];\n for (let i = 0; i < 7; i++) {\n const dayIndex = (startDayIndex + i) % 7;\n weekdaysArr.push(Info.weekdays(\"narrow\", { locale })[dayIndex]);\n }\n\n const firstDay = focusedDate.startOf(\"month\");\n\n const prevArr: DateTime<boolean>[] = [];\n if (firstDay.weekday !== startDayIndex + 1) {\n // Complete the first row with the previous month's dates.\n for (let i = 1; i < 8; i++) {\n const prevDay = firstDay.minus({ days: i });\n prevArr.push(prevDay);\n if (prevDay.weekday === startDayIndex + 1) break;\n }\n }\n prevArr.reverse();\n\n useEffect(() => {\n if (!initialized.current) return;\n setTimeout(() => {\n const targetElement = document.getElementById(\n `${uid}-${focusedDate.toISODate()}`,\n );\n targetElement?.focus();\n }, 100);\n }, [focusedDate, uid]);\n\n useEffect(() => {\n if (!isUnavailableDate(focusedDate, unavailable, defaultTimeZone)) return;\n futureDateSelection(focusedDate.plus({ days: 1 }));\n }, [focusedDate, futureDateSelection, defaultTimeZone, unavailable]);\n\n return (\n <tr {...rest} ref={ref}>\n {week.map((n) => {\n return <CalendarDay date={n} key={n.toISODate()} />;\n })}\n </tr>\n );\n },\n);\n\nCalendarWeek.displayName = \"CalendarWeek\";\n","import { useCalendar } from \"./CalendarContext\";\nimport {\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Calendar.module.scss\";\nimport { DateTime, Info } from \"luxon\";\nimport {\n isBeyondMaxDate,\n isBeyondMinDate,\n isUnavailableDate,\n} from \"./internal/utils\";\nimport { useSwipe, UseSwipeFn } from \"../../hooks\";\nimport { SrOnly } from \"../SrOnly\";\nimport { CalendarWeek } from \"./internal/CalendarWeek\";\n\nexport type CalendarMonthProps = ComponentPropsWithoutRef<\"table\">;\n\n/**\n * A component that displays a month in the calendar.\n *\n * @param props - The props for the table element.\n * @returns A component that displays a month in the calendar.\n */\nexport const CalendarMonth = forwardRef<HTMLTableElement, CalendarMonthProps>(\n (props, ref) => {\n const { className, ...rest } = props;\n const context = useCalendar();\n const {\n value,\n focusedDate,\n setFocusedDate,\n setHoveredDate,\n locale,\n minDate,\n maxDate,\n unavailable,\n defaultTimeZone,\n id: uid,\n range,\n dateFormat,\n startDay,\n } = context;\n\n const initialized = useRef(false);\n\n const ViewCX = cx(styles[\"grid\"], className);\n const futureDateSelection = useCallback(\n (targetDate: DateTime) => {\n if (maxDate !== null && targetDate.toMillis() > maxDate?.toMillis()) {\n return;\n }\n\n if (isUnavailableDate(targetDate, unavailable, defaultTimeZone)) {\n let nextFocusDate = targetDate.plus({ days: 1 });\n for (let i = 0; i < 365; i++) {\n if (\n maxDate !== null &&\n nextFocusDate.toMillis() > maxDate?.toMillis()\n ) {\n break;\n }\n if (\n isUnavailableDate(nextFocusDate, unavailable, defaultTimeZone)\n ) {\n nextFocusDate = nextFocusDate.plus({ days: 1 });\n } else {\n // setHoveredDate(nextFocusDate);\n setFocusedDate(nextFocusDate);\n break;\n }\n }\n return;\n }\n\n setFocusedDate(targetDate);\n },\n [maxDate, setFocusedDate, defaultTimeZone, unavailable],\n );\n\n let startDayIndex = 6;\n switch (startDay) {\n case \"Monday\":\n startDayIndex = 0;\n break;\n case \"Sunday\":\n default:\n startDayIndex = 6;\n }\n\n const weekdaysArr: string[] = [];\n for (let i = 0; i < 7; i++) {\n const dayIndex = (startDayIndex + i) % 7;\n weekdaysArr.push(Info.weekdays(\"narrow\", { locale })[dayIndex]);\n }\n\n const firstDay = focusedDate.startOf(\"month\");\n const lastDay = focusedDate.endOf(\"month\");\n\n const monthArr = Array.from(new Array(firstDay.daysInMonth)).map((_, i) => {\n return firstDay.plus({ days: i });\n });\n\n const prevArr: DateTime<boolean>[] = [];\n if (firstDay.weekday !== startDayIndex + 1) {\n // Complete the first row with the previous month's dates.\n for (let i = 1; i < 8; i++) {\n const prevDay = firstDay.minus({ days: i });\n prevArr.push(prevDay);\n if (prevDay.weekday === startDayIndex + 1) break;\n }\n }\n prevArr.reverse();\n\n const nextArr = Array.from(new Array(14)).map((_, i) => {\n return lastDay.plus({ days: i + 1 });\n });\n\n const fullArr: DateTime[] = [...prevArr, ...monthArr, ...nextArr];\n\n const splitArr = [...Array(Math.ceil(fullArr.length / 7))]\n .map((_, i) => fullArr.slice(7 * i, 7 + 7 * i))\n .slice(0, 6);\n\n const onMouseLeaveHandler = () => {\n setHoveredDate(undefined);\n };\n\n const onSwipe = (dir: UseSwipeFn[\"direction\"]) => {\n if (dir === \"left\") {\n const targetMonth = focusedDate.plus({ month: 1 });\n if (\n isBeyondMinDate(targetMonth, minDate) ||\n isBeyondMaxDate(targetMonth, maxDate)\n )\n return;\n setFocusedDate(targetMonth);\n return;\n }\n if (dir === \"right\") {\n const targetMonth = focusedDate.minus({ month: 1 });\n if (\n isBeyondMinDate(targetMonth, minDate) ||\n isBeyondMaxDate(targetMonth, maxDate)\n )\n return;\n setFocusedDate(targetMonth);\n return;\n }\n };\n\n const { direction, ...touchProps } = useSwipe(onSwipe);\n\n useEffect(() => {\n if (!initialized.current) return;\n setTimeout(() => {\n const targetElement = document.getElementById(\n `${uid}-${focusedDate.toISODate()}`,\n );\n targetElement?.focus();\n }, 100);\n }, [focusedDate, uid]);\n\n useEffect(() => {\n if (!isUnavailableDate(focusedDate, unavailable, defaultTimeZone)) return;\n futureDateSelection(focusedDate.plus({ days: 1 }));\n }, [focusedDate, futureDateSelection, defaultTimeZone, unavailable]);\n\n return (\n <>\n <table\n ref={ref}\n data-anv=\"calendar-month\"\n onFocus={() => {\n initialized.current = true;\n }}\n onBlur={() => {\n initialized.current = false;\n }}\n className={ViewCX}\n onMouseLeave={onMouseLeaveHandler}\n role=\"grid\"\n {...rest}\n {...touchProps}\n >\n <thead aria-hidden className={styles[\"weekdays\"]}>\n <tr>\n {weekdaysArr.map((weekday, i) => {\n return (\n <th\n scope=\"col\"\n key={`${weekday}${i}`}\n className={styles[\"weekday\"]}\n >\n {weekday}\n </th>\n );\n })}\n </tr>\n <tr className={styles[\"spacer\"]}>\n <td colSpan={7} />\n </tr>\n </thead>\n <tbody\n className={styles[\"day-grid\"]}\n key={focusedDate.startOf(\"month\").toMillis()}\n >\n {splitArr.map((week, i) => {\n return <CalendarWeek week={week} key={i} />;\n })}\n </tbody>\n </table>\n {range && value ? (\n <SrOnly aria-live=\"polite\">\n {`Range starts at ${\n value.start && value.start.toLocaleString(dateFormat)\n }, ${\n value.end\n ? `ends at ${value.end.toLocaleString(dateFormat)}`\n : \"select an end date\"\n }`}\n </SrOnly>\n ) : null}\n </>\n );\n },\n);\n\nCalendarMonth.displayName = \"CalendarMonth\";\n","import { useEffect, useRef } from \"react\";\n\nexport type UseYearSelectorKeysParams = {\n columns: number;\n scrollToYear: (year: number, { focus }: { focus?: boolean }) => void;\n initialFocus: number;\n onSelect: (year: number | null) => void;\n onConfirm: () => void;\n min: number;\n max: number;\n disabled: boolean;\n pseudoFocused: number;\n setPseudoFocused: (year: number) => void;\n required: boolean;\n};\n\nexport type UseYearSelectorKeysReturn = {\n listRef: React.RefObject<HTMLDivElement>;\n};\n\nexport const useYearSelectorKeys = ({\n columns,\n scrollToYear,\n initialFocus,\n onSelect,\n onConfirm,\n pseudoFocused,\n setPseudoFocused,\n min,\n max,\n disabled,\n required,\n}: UseYearSelectorKeysParams): UseYearSelectorKeysReturn => {\n const listRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const list = listRef.current;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (pseudoFocused === null) return;\n if (\n [\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"Home\",\n \"PageUp\",\n \"PageDown\",\n \"Enter\",\n \" \",\n \"Backspace\",\n \"Delete\",\n ].includes(e.key)\n ) {\n e.preventDefault();\n if (\n e.key === \"ArrowLeft\" ||\n e.key === \"ArrowRight\" ||\n e.key === \"ArrowUp\" ||\n e.key === \"ArrowDown\"\n ) {\n const newYear =\n e.key === \"ArrowLeft\" || e.key === \"ArrowUp\"\n ? pseudoFocused - 1\n : pseudoFocused + 1;\n const clampedYear = Math.min(Math.max(newYear, min), max);\n scrollToYear(newYear, { focus: true });\n setPseudoFocused(newYear);\n if (!disabled) {\n onSelect(clampedYear);\n }\n return;\n }\n if (!required && (e.key === \"Backspace\" || e.key === \"Delete\")) {\n onSelect(null);\n return;\n }\n if (e.key === \"PageUp\" || e.key === \"PageDown\") {\n const newYear = e.key === \"PageUp\" ? min : max;\n scrollToYear(newYear, { focus: true });\n setPseudoFocused(newYear);\n if (!disabled) {\n onSelect(newYear);\n }\n return;\n }\n if (e.key === \"Home\") {\n scrollToYear(initialFocus, { focus: true });\n setPseudoFocused(initialFocus);\n if (!disabled) {\n onSelect(initialFocus);\n }\n return;\n }\n if (e.key === \"Enter\" || e.key === \" \") {\n if (!disabled) {\n onConfirm();\n }\n return;\n }\n }\n };\n list?.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n list?.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [\n pseudoFocused,\n columns,\n scrollToYear,\n onSelect,\n min,\n max,\n initialFocus,\n disabled,\n setPseudoFocused,\n required,\n onConfirm,\n ]);\n\n return { listRef };\n};\n","import styles from \"../YearSelector.module.scss\";\nimport cx from \"classnames\";\nimport { ComponentPropsWithoutRef } from \"react\";\nimport SelectCard from \"../../../../components/SelectCard\";\n\ntype YearItemProps = Omit<ComponentPropsWithoutRef<\"div\">, \"onChange\"> & {\n year: number;\n onChange: (year: number) => void;\n selected: boolean;\n pseudoFocused: boolean;\n disabled: boolean;\n};\nexport const YearItem = ({\n year,\n onChange,\n selected,\n pseudoFocused,\n disabled,\n onFocus,\n ...rest\n}: YearItemProps) => {\n return (\n <SelectCard\n disabled={disabled}\n id={year}\n onChange={!disabled ? () => onChange(year) : () => {}}\n checked={selected}\n checkboxProps={{\n tabIndex: -1,\n onFocus,\n }}\n flexGrow={1}\n className={cx(styles[\"year-item\"], {\n [styles[\"pseudo-focused\"]]: pseudoFocused,\n })}\n data-year={year}\n tabIndex={-1}\n {...rest}\n >\n {year}\n </SelectCard>\n );\n};\n","import { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { forwardRef, useCallback, useEffect, useRef, useState } from \"react\";\nimport styles from \"./YearSelector.module.scss\";\nimport cx from \"classnames\";\nimport { useYearSelectorKeys } from \"./internal/useYearSelectorKeys\";\nimport { useOptionallyControlledState, usePrevious } from \"../../hooks\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport { YearItem } from \"./internal/YearItem\";\nimport { PassThroughProps } from \"../../../types\";\n\nconst DEFAULT_MIN = 1900;\nconst DEFAULT_MAX = 2200;\n\nexport interface YearSelectorProps {\n /**\n * The minimum selectable year\n * Defaults to 1900.\n */\n min?: number;\n /**\n * The maximum selectable year.\n * Defaults to 2200.\n */\n max?: number;\n /**\n * The currently selected year\n */\n value?: number | null;\n /**\n * The default value of the selected year\n */\n defaultValue?: number;\n /**\n * The function to call when the selected year changes\n *\n * @param year - The year that is selected.\n */\n onChange?: (year: number | null) => void;\n /**\n * The function to call when the selected year is affirmatively changed.\n * This is called when the user confirms the selection by pressing Enter, pressing Space, or clicking.\n *\n * @param year - The year that is selected.\n */\n onConfirm?: (year: number | null) => void;\n /**\n * If a `value` or `defaultValue` is not provided, this will be used as the starting scroll position (and initial focus for accessibility).\n */\n startingYear?: number;\n /**\n * The number of columns to display.\n * @default 2\n */\n columns?: number;\n /**\n * The class name to apply to the component.\n */\n className?: string;\n /**\n * Controls whether a year can be deselected, i.e. set to null.\n * @default false\n */\n required?: boolean;\n /**\n * Controls whether the component allows the user to select a year.\n * @default false\n */\n disabled?: boolean;\n /**\n * The aria-label for the component.\n * @default \"Year selection\"\n */\n ariaLabel?: string;\n /**\n * Props forwarded onto the root element of the component.\n */\n rootProps?: PassThroughProps<\"div\">;\n}\nconst currentYear = new Date().getFullYear();\n\nexport const YearSelector = forwardRef<HTMLDivElement, YearSelectorProps>(\n (\n {\n min = DEFAULT_MIN,\n max = DEFAULT_MAX,\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange,\n onConfirm,\n startingYear = currentYear,\n columns: columnsProp,\n className,\n required = false,\n disabled = false,\n ariaLabel = \"Year selection\",\n rootProps,\n },\n ref,\n ) => {\n const columns = Math.max(columnsProp ?? 2, 1);\n const [value, setValue] = useOptionallyControlledState<number | null>({\n controlledValue: valueProp,\n defaultValue: defaultValueProp ?? null,\n onChange,\n });\n const previousValue = usePrevious(value);\n const initialFocusYear = value ?? startingYear;\n const [pseudoFocused, setPseudoFocused] =\n useState<number>(initialFocusYear);\n\n const handleChange = (year: number | null) => {\n if (!required && value === year) {\n setValue(null);\n return;\n }\n setValue(year);\n if (year !== null) {\n setPseudoFocused(year);\n }\n };\n\n const handleItemChange = (year: number) => {\n handleChange(year);\n onConfirm?.(year);\n };\n\n const gap = 12;\n const rowHeight = 58;\n const rowCount = Math.ceil((max - min + 1) / columns);\n const initialOffset =\n ((initialFocusYear - min) * (rowHeight + gap)) / columns + gap / 2;\n\n // The virtualizer\n const rowVirtualizer = useVirtualizer({\n count: rowCount,\n getScrollElement: () => parentRef.current,\n estimateSize: () => rowHeight,\n gap,\n initialOffset,\n paddingEnd: gap / 2,\n });\n\n const scrollToYear = useCallback(\n (year: number, { focus }: { focus?: boolean } = {}) => {\n const index = Math.floor((year - min) / columns);\n rowVirtualizer.scrollToIndex(index, { align: \"center\" });\n if (focus) {\n setPseudoFocused(year);\n }\n },\n [min, columns, rowVirtualizer, setPseudoFocused],\n );\n\n const parentRef = useRef(null);\n const { listRef } = useYearSelectorKeys({\n columns,\n scrollToYear,\n initialFocus: initialFocusYear,\n onSelect: handleChange,\n onConfirm: () => onConfirm?.(value),\n min,\n max,\n disabled,\n pseudoFocused,\n setPseudoFocused,\n required,\n });\n\n useEffect(() => {\n if (value !== null && previousValue !== value) {\n scrollToYear(value, { focus: true });\n }\n }, [value, previousValue, scrollToYear, listRef]);\n\n const jointRef = useMergeRefs([parentRef, listRef, ref]);\n\n return (\n <>\n {/* The scrollable element */}\n <div\n ref={jointRef}\n aria-label={ariaLabel}\n tabIndex={0}\n className={cx(styles[\"year-selector\"], className)}\n role=\"spinbutton\"\n aria-valuenow={value ?? undefined}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuetext={value ? `${value}` : \"No year selected\"}\n data-test={rowVirtualizer.options.paddingEnd}\n style={{\n maxHeight: `${\n rowVirtualizer.getTotalSize() + 8 // Accounts for the padding of the container\n }px`,\n }}\n {...rootProps}\n >\n {/* The large inner element to hold all of the items */}\n <div\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n width: \"100%\",\n position: \"relative\",\n }}\n >\n {/* Only the visible items in the virtualizer, manually positioned to be in view */}\n {rowVirtualizer.getVirtualItems().map((virtualItem) => {\n const years = Array.from(\n { length: columns },\n (_, i) => virtualItem.index * columns + i + min,\n );\n return (\n <div\n key={virtualItem.key}\n data-testid=\"v-row\"\n className={styles[\"year-grid\"]}\n style={{\n transform: `translateY(${virtualItem.start}px)`,\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n }}\n >\n {years.map((year) => {\n if (year > max) return <div key={year} />;\n return (\n <YearItem\n key={year}\n disabled={disabled}\n year={year}\n onChange={handleItemChange}\n selected={value === year}\n pseudoFocused={pseudoFocused === year}\n onFocus={() => {\n listRef.current?.focus();\n setPseudoFocused(year);\n }}\n />\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n </>\n );\n },\n);\n\nYearSelector.displayName = \"YearSelector\";\n","import { DateTime } from \"luxon\";\nimport {\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Grid } from \"../../Grid\";\nimport { SelectCard } from \"../../SelectCard\";\nimport { useCalendar } from \"../CalendarContext\";\nimport styles from \"../Calendar.module.scss\";\nimport cx from \"classnames\";\nimport { useMergeRefs } from \"../../../hooks\";\n\nexport type CalendarMonthSelectionProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * The function to call when a month is selected.\n *\n * @param month - The month that is selected.\n */\n onMonthSelection: (month: DateTime[\"month\"]) => void;\n};\n\n/**\n * A component that displays a grid of month cards and allows the user to select a month.\n *\n * @param props.onMonthSelection - The function to call when a month is selected.\n * @param props - The rest of the props for the div wrapper.\n * @returns A component that displays a grid of month cards and allows the user to select a month.\n */\nexport const CalendarMonthSelection = forwardRef<\n HTMLDivElement,\n CalendarMonthSelectionProps\n>(({ onMonthSelection, ...props }, ref) => {\n const { defaultTimeZone, maxDate, minDate, selectedMonth, selectedYear } =\n useCalendar();\n\n const monthSelectionRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([ref, monthSelectionRef]);\n\n const currentDate = useMemo(\n () =>\n DateTime.fromObject({ year: selectedYear, month: selectedMonth })\n .setZone(defaultTimeZone)\n .startOf(\"day\"),\n [defaultTimeZone, selectedYear, selectedMonth],\n );\n\n const dates = useMemo(\n () =>\n Array.from({ length: 12 }, (_, i) => {\n const date = DateTime.fromObject({\n year: selectedYear,\n month: 1,\n }).plus({\n month: i,\n });\n\n // disable the select card if outside the min or max date\n const disabled =\n (minDate && date < minDate && !date.hasSame(minDate, \"month\")) ||\n (maxDate && date > maxDate && !date.hasSame(maxDate, \"month\"));\n\n return {\n month: date.month,\n disabled: disabled ?? false,\n };\n }),\n [maxDate, minDate, selectedYear],\n );\n\n const classes = cx(styles[\"month-selection\"], props.className);\n\n const [focusedIndex, setFocusedIndex] = useState(selectedMonth - 1);\n\n // reset focused index when current date changes\n useEffect(() => {\n if (minDate || maxDate) {\n // find the next enabled month\n let index = dates.findIndex(({ month }) => month === selectedMonth);\n while (dates[index].disabled && index < 11) {\n index++;\n }\n setFocusedIndex(index);\n } else {\n setFocusedIndex(selectedMonth - 1);\n }\n }, [selectedMonth, minDate, maxDate, dates]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n const target = e.target as HTMLElement;\n const cards = monthSelectionRef.current?.querySelectorAll(\n \"input[type='checkbox']\",\n );\n if (!cards || cards.length === 0) {\n return;\n }\n\n const cardArray = Array.from(cards);\n const currentIndex = cardArray.indexOf(target as HTMLButtonElement);\n\n if (currentIndex === -1) return;\n\n const updateFocusedIndex = (index: number) => {\n e.preventDefault();\n (cardArray[index] as HTMLButtonElement).focus();\n setFocusedIndex(index);\n };\n\n let newIndex: number;\n switch (e.key) {\n case \"ArrowLeft\":\n newIndex = currentIndex > 0 ? currentIndex - 1 : 11;\n while (dates[newIndex].disabled) {\n newIndex = newIndex > 0 ? newIndex - 1 : 11;\n }\n updateFocusedIndex(newIndex);\n break;\n\n case \"ArrowRight\":\n newIndex = currentIndex < 11 ? currentIndex + 1 : 0;\n while (dates[newIndex].disabled) {\n newIndex = newIndex < 11 ? newIndex + 1 : 0;\n }\n updateFocusedIndex(newIndex);\n break;\n\n case \"ArrowUp\":\n if (currentIndex < 3) {\n newIndex = currentIndex + 9;\n } else {\n newIndex = currentIndex - 3;\n }\n while (dates[newIndex].disabled) {\n if (newIndex > 2) {\n newIndex -= 3;\n } else {\n newIndex += 9;\n }\n }\n updateFocusedIndex(newIndex);\n break;\n\n case \"ArrowDown\":\n if (currentIndex > 8) {\n newIndex = currentIndex - 9;\n } else {\n newIndex = currentIndex + 3;\n }\n while (dates[newIndex].disabled) {\n if (newIndex < 9) {\n newIndex += 3;\n } else {\n newIndex -= 9;\n }\n }\n updateFocusedIndex(newIndex);\n break;\n\n case \"Enter\":\n case \" \":\n e.preventDefault();\n if (!dates[currentIndex].disabled) {\n onMonthSelection(dates[currentIndex].month);\n }\n break;\n }\n },\n [dates, onMonthSelection],\n );\n\n return (\n <div\n ref={combinedRef}\n data-anv=\"calendar-month-selection\"\n className={classes}\n {...props}\n >\n <div role=\"grid\" aria-label=\"Calendar month selection\">\n <Grid\n templateColumns=\"repeat(3, minmax(0, 1fr))\"\n gap={3}\n onKeyDown={handleKeyDown}\n role=\"row\"\n >\n {dates.map(({ month, disabled }, index) => (\n <div role=\"gridcell\" key={month.toString()}>\n <SelectCard\n id={month.toString()}\n disabled={disabled}\n onChange={() => onMonthSelection(month)}\n checked={\n selectedMonth === month && selectedYear === currentDate.year\n }\n checkboxProps={{\n className: styles[\"selection-checkbox\"],\n tabIndex: focusedIndex === index ? 0 : -1,\n }}\n className={styles[\"selection-card\"]}\n >\n {DateTime.fromObject({ month }).toFormat(\"MMMM\")}\n </SelectCard>\n </div>\n ))}\n </Grid>\n </div>\n </div>\n );\n});\n\nCalendarMonthSelection.displayName = \"CalendarMonthSelection\";\n","import { createContext } from \"react\";\nimport { CalendarBetaProps } from \"./Calendar\";\n\nexport const CalendarBetaPropsContext = createContext<CalendarBetaProps>({});\n","import { useContext } from \"react\";\nimport { CalendarBetaPropsContext } from \"./CalendarBetaPropsContext\";\n\nexport const useCalendarBetaProps = () => {\n return useContext(CalendarBetaPropsContext);\n};\n","import { DateTime, type WeekdayNumbers } from \"luxon\";\nimport {\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { IanaZone, LayoutUtilProps, Locale } from \"../../types\";\nimport { CalendarNow } from \"./CalendarNowButton\";\nimport { CalendarYearButton } from \"./CalendarYearButton\";\nimport { CalendarPrev } from \"./CalendarPrevButton\";\nimport { CalendarNext } from \"./CalendarNextButton\";\nimport { CalendarMonthButton } from \"./CalendarMonthButton\";\nimport { CalendarMonth } from \"./CalendarMonth\";\nimport {\n CalendarContext,\n CalendarContextProps,\n CalendarRangeContextProps,\n} from \"./CalendarContext\";\nimport { useMergeRefs } from \"../../hooks\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport styles from \"./Calendar.module.scss\";\nimport cx from \"classnames\";\nimport { normalizeDate } from \"./internal/utils\";\nimport { CalendarMonthSelection } from \"./internal/CalendarMonthSelection\";\nimport { YearSelector } from \"../../internal/components/YearSelector\";\nimport { useCalendarBetaProps } from \"../../beta\";\n\nexport type CalendarValue = string | undefined;\n\nexport type CalendarRangeValue = { start?: string; end?: string } | undefined;\n\nconst toolbarFocusStates = [\"month\", \"year\", \"next\", \"prev\", \"now\"] as const;\n\n/**\n * Props for the Calendar component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"value\" | \"defaultValue\">\n * @extends LayoutUtilProps\n */\ntype CalendarCommonProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"value\" | \"defaultValue\"\n> & {\n /**\n * @deprecated children will be overridden internally\n */\n children?: ComponentPropsWithoutRef<\"div\">[\"children\"];\n /**\n * The default focused date. Used to determine what month and year is shown.\n */\n defaultFocusedDate?: string | null;\n /**\n * The focused date. Used to determine what month and year is currently shown.\n */\n focusedDate?: string | null;\n /**\n * The minimum date allowed.\n */\n minDate?: string;\n /**\n * The maximum date allowed.\n */\n maxDate?: string;\n /**\n * The days of the week and dates that are unavailable.\n */\n unavailable?: {\n /**\n * The days of the week that are unavailable.\n */\n daysOfWeek?: WeekdayNumbers[];\n /**\n * The specific dates that are unavailable.\n */\n dates?: string[];\n };\n /**\n * The locale to use for the calendar.\n */\n locale?: Locale;\n /**\n * The time zone to use for the calendar.\n */\n defaultTimeZone?: IanaZone;\n /**\n * The day of the week to start the calendar on.\n */\n startDay?: \"Sunday\" | \"Monday\";\n\n /**\n * Whether the calendar should focus on the focused date.\n * @internal - Do not use this prop directly.\n */\n _disableAutofocus?: boolean;\n /** Whether the calendar should set all tab indexes to -1.\n * @internal - Do not use this prop directly.\n */\n _disableFocus?: boolean;\n};\n\ntype CalendarSingleProps = CalendarCommonProps & {\n /**\n * The function to call when the value changes.\n *\n * @param data - The data to pass to the function.\n */\n onSelection?: (data: { value: CalendarValue }) => void;\n /**\n * The default date value for uncontrolled mode.\n */\n defaultValue?: string | false;\n /**\n * The value for controlled mode.\n */\n value?: string;\n /**\n * Whether the calendar is in range mode.\n */\n range?: false;\n};\n\ntype CalendarRangeProps = CalendarCommonProps & {\n /**\n * The function to call when the value changes.\n *\n * @param data.value - The date value that is selected.\n */\n onSelection?: (data: { value: CalendarRangeValue }) => void;\n /**\n * The default date value for uncontrolled mode.\n */\n defaultValue?: { start?: string; end?: string };\n /**\n * The date value for controlled mode.\n */\n value?: { start?: string; end?: string };\n /**\n * Whether the calendar is in range mode.\n */\n range: true;\n};\n\nexport type CalendarProps = LayoutUtilProps &\n (CalendarSingleProps | CalendarRangeProps);\n\n/**\n * Calendar component for viewing and selecting a date or range of dates.\n *\n * Features:\n * - Single date and date range selection modes\n * - Month and year navigation with header buttons\n * - Configurable start day (Sunday or Monday)\n * - Date range restrictions with min/max dates\n * - Unavailable dates and days of week support\n * - Locale and timezone customization\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Responsive design with automatic width detection\n * - Month and year selection views\n * - Today button for quick navigation\n *\n * @example\n * <Calendar\n * value=\"2024-01-15\"\n * onSelection={({ value }) => console.log('Selected:', value)}\n * minDate=\"2024-01-01\"\n * maxDate=\"2024-12-31\"\n * />\n */\nexport const CalendarElement = forwardRef<HTMLDivElement, CalendarProps>(\n (props, ref) => {\n const uid = useId();\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n children,\n focusedDate: focusProp,\n defaultFocusedDate,\n locale = Intl.DateTimeFormat().resolvedOptions().locale as Locale,\n defaultTimeZone = Intl.DateTimeFormat().resolvedOptions()\n .timeZone as IanaZone,\n startDay = \"Sunday\",\n minDate,\n maxDate,\n unavailable = {\n dates: [],\n daysOfWeek: [],\n },\n id,\n style,\n value: iValue,\n defaultValue: iDefaultValue,\n onSelection,\n range,\n className,\n _disableAutofocus,\n _disableFocus,\n ...remainingProps\n } = componentProps;\n\n const { dateMetadata, onMonthView } = useCalendarBetaProps();\n\n const calendarRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([ref, calendarRef]);\n const lastIValue = useRef(iValue);\n const yearButtonRef = useRef<HTMLButtonElement>(null);\n const monthButtonRef = useRef<HTMLButtonElement>(null);\n const headerRef = useRef<HTMLSpanElement>(null);\n const [toolbarFocus, setToolbarFocus] = useState<\n (typeof toolbarFocusStates)[number]\n >(toolbarFocusStates[0]);\n\n const [calendarWidth, setCalendarWidth] = useState<number | undefined>(\n undefined,\n );\n\n const [calendarSelectionState, setCalendarSelectionState] = useState<\n \"day\" | \"month\" | \"year\"\n >(\"day\");\n\n const visibleHeaderButtons = useMemo(() => {\n if (calendarSelectionState !== \"day\") {\n return toolbarFocusStates.slice(0, 2);\n }\n return toolbarFocusStates;\n }, [calendarSelectionState]);\n\n useEffect(() => {\n if (!calendarRef.current || style?.width != null) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const width = entry.contentRect.width;\n if (calendarSelectionState === \"day\" && width > 100) {\n setCalendarWidth(width);\n }\n }\n });\n\n resizeObserver.observe(calendarRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [calendarSelectionState, style?.width]);\n\n // Common\n const styleCombined = {\n width: calendarWidth,\n ...style,\n ...layoutStyles,\n };\n\n const classNameCombined = cx(styles[\"calendar\"], className);\n\n const { nDate, nDefaultDate, nToday } = useMemo(\n () => ({\n nDate: iValue\n ? typeof iValue === \"string\"\n ? normalizeDate(iValue, defaultTimeZone)\n : {\n start: iValue.start\n ? normalizeDate(iValue.start, defaultTimeZone)\n : null,\n end: iValue.end\n ? normalizeDate(iValue.end, defaultTimeZone)\n : null,\n }\n : null,\n nDefaultDate: iDefaultValue\n ? typeof iDefaultValue === \"string\"\n ? normalizeDate(iDefaultValue, defaultTimeZone)\n : {\n start: iDefaultValue.start\n ? normalizeDate(iDefaultValue.start, defaultTimeZone)\n : null,\n end: iDefaultValue?.end\n ? normalizeDate(iDefaultValue.end, defaultTimeZone)\n : null,\n }\n : null,\n nToday:\n typeof iValue === \"string\"\n ? normalizeDate(DateTime.now().toISO(), defaultTimeZone)\n : {\n start: normalizeDate(DateTime.now().toISO(), defaultTimeZone),\n end: normalizeDate(DateTime.now().toISO(), defaultTimeZone),\n },\n }),\n [iValue, iDefaultValue, defaultTimeZone],\n );\n\n const [value, setValue] = useState<\n | CalendarContextProps[\"value\"]\n | CalendarRangeContextProps[\"value\"]\n | undefined\n >(nDate ?? nDefaultDate ?? nToday);\n\n const getInitialDate = useMemo(() => {\n if (defaultFocusedDate) {\n return normalizeDate(defaultFocusedDate, defaultTimeZone);\n }\n if (iDefaultValue) {\n const date =\n typeof iDefaultValue === \"string\"\n ? normalizeDate(iDefaultValue, defaultTimeZone)\n : normalizeDate(\n iDefaultValue.start ?? iDefaultValue.end ?? \"\",\n defaultTimeZone,\n );\n return date;\n }\n if (\n !DateTime.isDateTime(nDate) &&\n !DateTime.isDateTime(nDefaultDate) &&\n !DateTime.isDateTime(nToday)\n ) {\n return nDate?.start ?? nDefaultDate?.start ?? nToday?.start;\n }\n\n return (nDate ?? nDefaultDate ?? nToday) as DateTime;\n }, [\n defaultFocusedDate,\n iDefaultValue,\n nDate,\n nDefaultDate,\n nToday,\n defaultTimeZone,\n ]);\n\n const initialDate = getInitialDate ?? DateTime.now();\n\n const [focusedDate, setFocusedDate] = useState<\n | CalendarContextProps[\"focusedDate\"]\n | CalendarRangeContextProps[\"focusedDate\"]\n | undefined\n >(initialDate);\n\n const [hoveredDate, setHoveredDate] = useState<\n | CalendarContextProps[\"hoveredDate\"]\n | CalendarRangeContextProps[\"hoveredDate\"]\n >();\n\n const [selectedMonth, setSelectedMonth] = useState<DateTime[\"month\"]>(\n initialDate.month,\n );\n const [selectedYear, setSelectedYear] = useState<DateTime[\"year\"]>(\n initialDate.year,\n );\n\n const currentVisibleMonth = useMemo(() => {\n return {\n year: focusedDate?.year ?? selectedYear,\n month: focusedDate?.month ?? selectedMonth,\n };\n }, [focusedDate?.month, focusedDate?.year, selectedYear, selectedMonth]);\n\n useEffect(\n () => onMonthView?.(currentVisibleMonth),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- omit onMonthView from deps because we don't want to trigger infinite re-renders\n [currentVisibleMonth],\n );\n\n useEffect(() => {\n if (!focusProp && !defaultFocusedDate) return;\n if (focusProp) {\n setFocusedDate(normalizeDate(focusProp, defaultTimeZone));\n } else if (defaultFocusedDate) {\n setFocusedDate(normalizeDate(defaultFocusedDate, defaultTimeZone));\n setSelectedMonth(\n normalizeDate(defaultFocusedDate, defaultTimeZone).month,\n );\n setSelectedYear(\n normalizeDate(defaultFocusedDate, defaultTimeZone).year,\n );\n }\n // defaultTimeZone should not rerender\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [focusProp, defaultFocusedDate]);\n\n useEffect(() => {\n if (!iValue) {\n lastIValue.current = iValue;\n return;\n }\n if (typeof iValue === \"string\") {\n setValue(normalizeDate(iValue, defaultTimeZone));\n setFocusedDate(normalizeDate(iValue, defaultTimeZone));\n } else if (\n iValue.end &&\n (typeof lastIValue.current !== \"object\" ||\n lastIValue?.current?.end !== iValue.end)\n ) {\n setValue({\n start: iValue.start\n ? normalizeDate(iValue.start, defaultTimeZone)\n : null,\n end: iValue.end ? normalizeDate(iValue.end, defaultTimeZone) : null,\n });\n setFocusedDate(normalizeDate(iValue.end, defaultTimeZone));\n } else if (\n iValue.start &&\n (typeof lastIValue.current !== \"object\" ||\n lastIValue?.current?.start !== iValue.start)\n ) {\n setFocusedDate(normalizeDate(iValue.start, defaultTimeZone));\n }\n lastIValue.current = iValue;\n // defaultTimeZone should not rerender\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [iValue]);\n\n // Memoize normalized minDate and maxDate to avoid new references on every render\n const normalizedMinDate = useMemo(\n () => (minDate ? normalizeDate(minDate, defaultTimeZone) : null),\n [minDate, defaultTimeZone],\n );\n const normalizedMaxDate = useMemo(\n () => (maxDate ? normalizeDate(maxDate, defaultTimeZone) : null),\n [maxDate, defaultTimeZone],\n );\n\n const dateMetadataMap = useMemo(() => {\n if (!dateMetadata) return undefined;\n return new Map(dateMetadata.map((item) => [item.date, item.context]));\n }, [dateMetadata]);\n\n const providerValue = useMemo(() => {\n // TODO FUTURE: Hookup with dateformat from localization provider\n const format = {\n weekday: \"long\",\n month: \"long\",\n day: \"2-digit\",\n year: \"numeric\",\n } as const;\n\n return {\n disableAutofocus: _disableAutofocus ?? false,\n focusedDate,\n setFocusedDate,\n selectedMonth,\n setSelectedMonth,\n selectedYear,\n setSelectedYear,\n hoveredDate,\n setHoveredDate,\n value,\n setValue,\n defaultTimeZone,\n id: id ?? uid,\n onSelection,\n controlled: !!iValue,\n range,\n minDate: normalizedMinDate,\n maxDate: normalizedMaxDate,\n unavailable: {\n dates: new Set(unavailable.dates),\n daysOfWeek: new Set(unavailable.daysOfWeek),\n },\n locale,\n dateFormat: format,\n startDay,\n dateMetadata: dateMetadataMap,\n };\n }, [\n focusedDate,\n selectedMonth,\n selectedYear,\n hoveredDate,\n id,\n locale,\n normalizedMaxDate,\n normalizedMinDate,\n iValue,\n onSelection,\n range,\n defaultTimeZone,\n uid,\n unavailable,\n value,\n startDay,\n dateMetadataMap,\n _disableAutofocus,\n ]);\n\n const handleHeaderKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n switch (e.key) {\n case \"ArrowLeft\":\n e.preventDefault();\n setToolbarFocus((previousToolbarFocus) => {\n const newToolbarFocus =\n previousToolbarFocus === visibleHeaderButtons[0]\n ? visibleHeaderButtons[visibleHeaderButtons.length - 1]\n : (visibleHeaderButtons[\n visibleHeaderButtons.indexOf(previousToolbarFocus) - 1\n ] ?? visibleHeaderButtons[visibleHeaderButtons.length - 1]);\n const button = headerRef.current?.querySelector(\n `[data-calendar-header-button-name=\"${newToolbarFocus}\"]`,\n );\n if (\n button &&\n \"focus\" in button &&\n typeof (button as HTMLElement).focus === \"function\"\n ) {\n (button as HTMLElement).focus();\n }\n return newToolbarFocus;\n });\n\n break;\n case \"ArrowRight\":\n e.preventDefault();\n setToolbarFocus((previousToolbarFocus) => {\n const newToolbarFocus =\n previousToolbarFocus ===\n visibleHeaderButtons[visibleHeaderButtons.length - 1]\n ? visibleHeaderButtons[0]\n : (visibleHeaderButtons[\n visibleHeaderButtons.indexOf(previousToolbarFocus) + 1\n ] ?? visibleHeaderButtons[0]);\n const button = headerRef.current?.querySelector(\n `[data-calendar-header-button-name=\"${newToolbarFocus}\"]`,\n );\n if (\n button &&\n \"focus\" in button &&\n typeof (button as HTMLElement).focus === \"function\"\n ) {\n (button as HTMLElement).focus();\n }\n return newToolbarFocus;\n });\n }\n },\n [visibleHeaderButtons],\n );\n\n const handleMonthSelection = useCallback(\n (month: DateTime[\"month\"]) => {\n monthButtonRef.current?.focus();\n setToolbarFocus(toolbarFocusStates[0]);\n setSelectedMonth(month);\n setFocusedDate(\n DateTime.fromObject(\n {\n year: focusedDate?.year ?? 1,\n month: month,\n day: 1,\n },\n { zone: defaultTimeZone },\n ).startOf(\"day\"),\n );\n setCalendarSelectionState(\"day\");\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [focusedDate],\n );\n\n const handleYearSelection = useCallback(\n (year: number | null) => {\n if (year === null) return;\n yearButtonRef.current?.focus();\n setToolbarFocus(toolbarFocusStates[1]);\n setSelectedYear(year);\n setFocusedDate(\n DateTime.fromObject(\n {\n year: year,\n month: focusedDate?.month ?? 1,\n day: 1,\n },\n { zone: defaultTimeZone },\n ).startOf(\"day\"),\n );\n setCalendarSelectionState(\"day\");\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [focusedDate?.month],\n );\n\n return (\n <CalendarContext.Provider value={providerValue as CalendarContextProps}>\n <div\n ref={combinedRef}\n id={id ?? uid}\n style={styleCombined}\n className={classNameCombined}\n data-anv=\"calendar\"\n {...remainingProps}\n >\n <div className={styles[\"header\"]}>\n <span\n ref={headerRef}\n aria-label=\"Calendar navigation\"\n role=\"toolbar\"\n onKeyDown={handleHeaderKeyDown}\n className={styles[\"controller\"]}\n >\n <CalendarMonthButton\n ref={monthButtonRef}\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[0]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[0]}\n calendarSelectionState={calendarSelectionState}\n onClick={() => {\n setCalendarSelectionState((prev) =>\n prev === \"month\" ? \"day\" : \"month\",\n );\n setToolbarFocus(toolbarFocusStates[0]);\n }}\n />\n <CalendarYearButton\n ref={yearButtonRef}\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[1]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[1]}\n calendarSelectionState={calendarSelectionState}\n onClick={() => {\n setCalendarSelectionState((prev) =>\n prev === \"year\" ? \"day\" : \"year\",\n );\n setToolbarFocus(toolbarFocusStates[1]);\n }}\n />\n {calendarSelectionState === \"day\" && (\n <>\n <CalendarPrev\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[2]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[2]}\n onClick={() => setToolbarFocus(toolbarFocusStates[2])}\n />\n <CalendarNext\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[3]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[3]}\n onClick={() => setToolbarFocus(toolbarFocusStates[3])}\n />\n <CalendarNow\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[4]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[4]}\n onClickFixed={() => setToolbarFocus(toolbarFocusStates[4])}\n />\n </>\n )}\n </span>\n </div>\n {calendarSelectionState === \"day\" && <CalendarMonth />}\n {calendarSelectionState === \"month\" && (\n <CalendarMonthSelection onMonthSelection={handleMonthSelection} />\n )}\n {calendarSelectionState === \"year\" && (\n // Wrapper div provides some manual offsetting to account for internal padding of the year selector\n <div className={styles[\"year-selector\"]}>\n <YearSelector\n onConfirm={handleYearSelection}\n required\n defaultValue={selectedYear}\n min={normalizedMinDate?.year}\n max={normalizedMaxDate?.year}\n />\n </div>\n )}\n </div>\n </CalendarContext.Provider>\n );\n },\n);\n\nCalendarElement.displayName = \"Calendar\";\n\n// export const useCalendar = useCoreCalendar;\n\n/**\n * Calendar component for viewing and selecting a date or range of dates.\n *\n * Features:\n * - Single date and date range selection modes\n * - Month and year navigation with header buttons\n * - Configurable start day (Sunday or Monday)\n * - Date range restrictions with min/max dates\n * - Unavailable dates and days of week support\n * - Locale and timezone customization\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Responsive design with automatic width detection\n * - Month and year selection views\n * - Today button for quick navigation\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar\n * value=\"2024-01-15\"\n * onSelection={({ value }) => console.log('Selected:', value)}\n * minDate=\"2024-01-01\"\n * maxDate=\"2024-12-31\"\n * />\n */\nexport const Calendar = Object.assign(CalendarElement, {\n /**\n * Calendar.Now component for navigating to today's date.\n *\n * Features:\n * - Quick navigation to current date\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.Now />\n */\n Now: CalendarNow,\n /**\n * Calendar.Month component for displaying the month grid.\n *\n * Features:\n * - Displays calendar days in a table format\n * - Handles day selection and navigation\n * - Supports range selection mode\n * - Accessible with proper ARIA attributes\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.Month />\n */\n Month: CalendarMonth,\n /**\n * Calendar.Next component for navigating to the next month.\n *\n * Features:\n * - Navigation to next month\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.Next />\n */\n Next: CalendarNext,\n /**\n * Calendar.Prev component for navigating to the previous month.\n *\n * Features:\n * - Navigation to previous month\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.Prev />\n */\n Prev: CalendarPrev,\n /**\n * Calendar.MonthButton component for switching to month selection view.\n *\n * Features:\n * - Switches calendar to month selection mode\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.MonthButton />\n */\n MonthButton: CalendarMonthButton,\n /**\n * Calendar.YearButton component for switching to year selection view.\n *\n * Features:\n * - Switches calendar to year selection mode\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.YearButton />\n */\n YearButton: CalendarYearButton,\n});\n"],"names":["IconKeyboardArrowUp","IconKeyboardArrowDown","styles","Prev","Next","date"],"mappings":"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"}
|