@fanvue/ui 0.1.0-alpha.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/utils/cn.ts","../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.2_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-slot@1.2.4_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-slot/dist/index.mjs","../src/components/Icons/SpinnerIcon.tsx","../src/components/Button/Button.tsx","../src/components/Icons/CrossIcon.tsx","../src/components/Alert/Alert.tsx","../node_modules/.pnpm/@radix-ui+react-context@1.1.3_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.1.1_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.1_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-primitive@2.1.4_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react@19._d2mbbgwomto2u4xwgalmnayrae/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.3/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.3/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.3/node_modules/use-sync-external-store/shim/index.js","../node_modules/.pnpm/@radix-ui+react-use-is-hydrated@0.1.0_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-use-is-hydrated/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-avatar@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react@19.2._5qbw44aeegm3qhn5blyfzwlsvy/node_modules/@radix-ui/react-avatar/dist/index.mjs","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../node_modules/.pnpm/@radix-ui+react-context@1.1.2_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/.pnpm/@radix-ui+primitive@1.1.3/node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.2_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-previous@1.1.1_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-use-previous/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-size@1.1.1_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-use-size/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-presence@1.1.5_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react@19.2_vxszomp4jt7xd7ti6rlx4jypfq/node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-slot@1.2.3_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-primitive@2.1.3_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react@19._gsiol2hcpd6qizfnjc77drzehq/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-checkbox@1.3.3_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react@19.2_vqjzdkdvyfsabiry4onywkwqkm/node_modules/@radix-ui/react-checkbox/dist/index.mjs","../src/components/Icons/CheckIcon.tsx","../src/components/Icons/MinusIcon.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Count/Count.tsx","../node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/tzName/index.js","../node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/tzOffset/index.js","../node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/date/mini.js","../node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/date/index.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constants.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructFrom.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/toDate.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addDays.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addMonths.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/defaultOptions.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeek.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeek.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeekYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeDates.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfDay.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarDays.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeekYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addWeeks.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addYears.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/max.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/min.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isSameDay.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isDate.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isValid.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarMonths.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfMonth.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeInterval.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachMonthOfInterval.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfMonth.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachYearOfInterval.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfWeek.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfISOWeek.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatLong.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/localize.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchFn.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/match.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDayOfYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeek.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeekYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeekYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeek.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/addLeadingZeros.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/lightFormatters.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/formatters.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/longFormatters.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/protectedTokens.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/format.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDaysInMonth.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getMonth.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isAfter.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isBefore.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isSameMonth.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isSameYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setMonth.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setYear.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/locale/en-US.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/classes/DateLib.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/classes/CalendarDay.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Button.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/CaptionLabel.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Chevron.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Day.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/DayButton.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/UI.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Dropdown.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/DropdownNav.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Footer.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Month.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/MonthCaption.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/MonthGrid.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Months.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/useDayPicker.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Nav.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/NextMonthButton.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Option.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Root.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Select.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Week.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Weekday.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Weekdays.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/WeekNumber.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/Weeks.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/components/YearsDropdown.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/utils/typeguards.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getComponents.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/formatters/formatCaption.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/formatters/formatDay.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getFormatters.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/labels/labelDayButton.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/labels/labelGrid.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/labels/labelGridcell.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/labels/labelNav.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/labels/labelNext.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/labels/labelPrevious.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/labels/labelWeekday.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getLabels.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/noonDateLib.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/useAnimation.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getDates.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getDays.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getMonths.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getWeeks.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/useCalendar.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/useFocus.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/selection/useMulti.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/utils/addToRange.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/selection/useRange.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/selection/useSingle.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/useSelection.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/utils/toTimeZone.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.js","../node_modules/.pnpm/react-day-picker@9.13.1_react@19.2.3/node_modules/react-day-picker/dist/esm/DayPicker.js","../src/components/Icons/ChevronLeftIcon.tsx","../src/components/Icons/ChevronRightIcon.tsx","../src/components/DatePicker/DatePicker.tsx","../node_modules/.pnpm/@radix-ui+react-separator@1.1.8_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react@19._ugr2sypxoo3w6bh57furhpco5m/node_modules/@radix-ui/react-separator/dist/index.mjs","../src/components/Divider/Divider.tsx","../src/components/IconButton/IconButton.tsx","../src/components/Icons/ArrowRightIcon.tsx","../src/components/Icons/ArrowUpRightIcon.tsx","../src/components/Icons/CheckCircleIcon.tsx","../src/components/Icons/CrownIcon.tsx","../src/components/Icons/ErrorCircleIcon.tsx","../src/components/Icons/FireIcon.tsx","../src/components/Icons/HomeIcon.tsx","../src/components/Icons/InfoCircleIcon.tsx","../src/components/Icons/PlusIcon.tsx","../src/components/Icons/VipBadgeIcon.tsx","../src/components/Icons/WarningTriangleIcon.tsx","../src/components/Logo/Logo.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Pill/Pill.tsx","../src/components/ProgressBar/ProgressBar.tsx","../node_modules/.pnpm/@radix-ui+react-collection@1.1.7_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react@19_aqbloo75wukq4oiqf2nfnf7fqm/node_modules/@radix-ui/react-collection/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-id@1.1.1_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-id/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-direction@1.1.1_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-direction/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react_wj32kjz3sqrxs5a56mjrydvzx4/node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-radio-group@1.3.8_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react@1_7iaibzpue4m6vmkyhy6osaamca/node_modules/@radix-ui/react-radio-group/dist/index.mjs","../src/components/Radio/Radio.tsx","../src/components/RadioGroup/RadioGroup.tsx","../node_modules/.pnpm/@radix-ui+number@1.1.1/node_modules/@radix-ui/number/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-slider@1.3.6_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react@19.2.9_j4jqkj4wodlzl4n6bspfd24ycq/node_modules/@radix-ui/react-slider/dist/index.mjs","../src/components/Slider/SliderLayout.tsx","../src/components/Slider/SliderThumb.tsx","../src/components/Slider/Slider.tsx","../src/components/Snackbar/Snackbar.tsx","../node_modules/.pnpm/@radix-ui+react-switch@1.2.6_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react@19.2.9_37fjcaigdeoiks4bkk2jp5faaa/node_modules/@radix-ui/react-switch/dist/index.mjs","../src/components/Switch/Switch.tsx","../src/components/SwitchField/SwitchField.tsx","../src/components/SwitchToggle/SwitchToggle.tsx","../node_modules/.pnpm/@radix-ui+react-tabs@1.1.13_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react@19.2.9__bkgantnut7derjitihqgbsaj64/node_modules/@radix-ui/react-tabs/dist/index.mjs","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/TabsContent.tsx","../src/components/Tabs/TabsList.tsx","../src/components/Tabs/TabsTrigger.tsx","../node_modules/.pnpm/@radix-ui+react-use-escape-keydown@1.1.1_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-dismissable-layer@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.9__@types+_ibhfsyo6t6zt76khfyzt7lbbq4/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-portal@1.1.9_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react@19.2.9_a2vhfobmg2rqexwxy4r74ynlqm/node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-visually-hidden@1.2.3_@types+react-dom@19.2.3_@types+react@19.2.9__@types+rea_xe64s7cc2fbkwxawx7ejudwycu/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-toast@1.2.15_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react@19.2.9_jrcjijubdktz55xpfc7qqbtbjm/node_modules/@radix-ui/react-toast/dist/index.mjs","../src/components/Icons/CloseIcon.tsx","../src/components/Icons/ErrorIcon.tsx","../src/components/Icons/InfoIcon.tsx","../src/components/Icons/SuccessIcon.tsx","../src/components/Icons/WarningIcon.tsx","../src/components/Toast/Toast.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = React[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const SpinnerIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <circle cx=\"10\" cy=\"10\" r=\"8\" stroke=\"currentColor\" strokeOpacity=\".25\" strokeWidth=\"2\" />\n <path d=\"M10 2a8 8 0 0 1 8 8\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n ),\n);\n\nSpinnerIcon.displayName = \"SpinnerIcon\";\n","import { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { SpinnerIcon } from \"../Icons/SpinnerIcon\";\n\nexport type ButtonVariant =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"link\"\n | \"brand\"\n | \"destructive\"\n | \"white\"\n | \"tertiaryDestructive\"\n | \"text\";\n\nexport type ButtonSize = \"48\" | \"40\" | \"32\" | \"24\";\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Visual style variant of the button */\n variant?: ButtonVariant;\n /** Size of the button in pixels */\n size?: ButtonSize;\n /** Left icon element */\n leftIcon?: React.ReactNode;\n /** Right icon element */\n rightIcon?: React.ReactNode;\n /** Show loading spinner */\n loading?: boolean;\n /** Render as a different element using Radix Slot */\n asChild?: boolean;\n /** Old price shown with strikethrough before the current price */\n discount?: string;\n /** Current price shown inside the button after the label/icons */\n price?: string;\n}\n\nconst SIZE_CLASSES: Record<ButtonSize, string> = {\n \"48\": \"h-12 px-4 py-3 typography-button-large\",\n \"40\": \"h-10 px-4 py-2 typography-button-small\",\n \"32\": \"h-8 px-3 py-2 typography-body-2-semibold\",\n \"24\": \"h-6 px-0 py-1 typography-body-2-semibold\",\n};\n\nconst ICON_SIZE_CLASS: Record<ButtonSize, string> = {\n \"48\": \"size-5\",\n \"40\": \"size-5\",\n \"32\": \"size-4\",\n \"24\": \"size-3.5\",\n};\n\nconst VARIANT_CLASSES: Record<ButtonVariant, string> = {\n primary:\n \"bg-neutral-400 text-body-300 hover:bg-brand-green-500 hover:text-body-black-solid-constant\",\n secondary:\n \"border-body-100 border border-1 border-body-100 bg-transparent text-body-100 hover:bg-brand-green-50\",\n tertiary: \"bg-transparent text-body-100 hover:bg-brand-green-50\",\n link: \"bg-transparent text-body-100 underline decoration-solid hover:bg-brand-green-50\",\n brand: \"bg-brand-green-500 text-body-black-solid-constant hover:bg-brand-pink-500\",\n destructive:\n \"bg-error-500 text-body-white-solid-constant hover:bg-background-solid dark:hover:bg-background-white-solid-constant dark:hover:text-error-500\",\n white:\n \"bg-background-white-solid-constant text-body-black-solid-constant hover:bg-brand-green-500\",\n tertiaryDestructive: \"bg-transparent text-error-500 hover:bg-error-50\",\n text: \"bg-transparent text-body-100 hover:underline\",\n};\n\n/** Recursively extract text content from React nodes for accessible labels */\nfunction getTextContent(node: React.ReactNode): string | undefined {\n if (typeof node === \"string\") return node;\n if (typeof node === \"number\") return String(node);\n if (React.isValidElement(node)) {\n return getTextContent((node.props as { children?: React.ReactNode }).children);\n }\n if (Array.isArray(node)) {\n const text = node.map(getTextContent).filter(Boolean).join(\"\");\n return text || undefined;\n }\n return undefined;\n}\n\nconst LoadingSpinner = ({ size }: { size: ButtonSize }) => {\n return (\n <span className=\"animate-spin\" aria-hidden=\"true\">\n <SpinnerIcon className={ICON_SIZE_CLASS[size]}>\n <title>Loading</title>\n </SpinnerIcon>\n </span>\n );\n};\n\nfunction renderContent({\n loading,\n asChild,\n children,\n size,\n leftIcon,\n rightIcon,\n iconSizeClass,\n discount,\n price,\n}: {\n loading: boolean;\n asChild: boolean;\n children: React.ReactNode;\n size: ButtonSize;\n leftIcon: React.ReactNode;\n rightIcon: React.ReactNode;\n iconSizeClass: string;\n discount?: string;\n price?: string;\n}) {\n if (loading) {\n // When asChild, clone the child element with spinner content instead of\n // wrapping in sr-only span (which would nest interactive elements)\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(\n children as React.ReactElement<{ children?: React.ReactNode }>,\n undefined,\n <LoadingSpinner size={size} />,\n );\n }\n return (\n <>\n <LoadingSpinner size={size} />\n <span className=\"sr-only\">{children}</span>\n </>\n );\n }\n\n if (asChild) return children;\n\n return (\n <>\n {leftIcon && (\n <span\n className={cn(\"flex shrink-0 items-center justify-center\", iconSizeClass)}\n aria-hidden=\"true\"\n >\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span\n className={cn(\"flex shrink-0 items-center justify-center\", iconSizeClass)}\n aria-hidden=\"true\"\n >\n {rightIcon}\n </span>\n )}\n {discount != null && (\n <span className=\"typography-body-1-regular line-through\" aria-hidden=\"true\">\n {discount}\n </span>\n )}\n {price != null && <span aria-hidden=\"true\">{price}</span>}\n </>\n );\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n size = \"48\",\n leftIcon,\n rightIcon,\n loading = false,\n asChild = false,\n disabled,\n children,\n discount,\n price,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const isDisabled = disabled || loading;\n const iconSizeClass = ICON_SIZE_CLASS[size];\n\n const buttonSpecificProps = !asChild\n ? { \"data-testid\": \"button\", disabled: isDisabled }\n : isDisabled\n ? { \"aria-disabled\": true }\n : {};\n\n // When asChild + loading, extract text from children for aria-label since we\n // can't wrap element children in an sr-only span (creates invalid nested markup)\n const loadingLabelProps = loading && asChild ? { \"aria-label\": getTextContent(children) } : {};\n\n const content = renderContent({\n loading,\n asChild,\n children,\n size,\n leftIcon,\n rightIcon,\n iconSizeClass,\n discount,\n price,\n });\n\n return (\n <Comp\n ref={ref}\n {...buttonSpecificProps}\n aria-busy={loading}\n {...loadingLabelProps}\n className={cn(\n // Base styles\n \"inline-flex cursor-pointer items-center justify-center gap-2 rounded-full transition-colors\",\n // Focus ring\n \"focus:shadow-focus focus-visible:outline-none\",\n // Disabled state\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"aria-disabled:pointer-events-none aria-disabled:opacity-50\",\n // Size styles\n SIZE_CLASSES[size],\n // Variant styles\n VARIANT_CLASSES[variant],\n // Manual CSS overrides\n className,\n )}\n {...props}\n >\n {content}\n </Comp>\n );\n },\n);\n\nButton.displayName = \"Button\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const CrossIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path d=\"M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z\" />\n </svg>\n ),\n);\n\nCrossIcon.displayName = \"CrossIcon\";\n","import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Button } from \"../Button/Button\";\nimport { CrossIcon } from \"../Icons/CrossIcon\";\n\nexport type AlertVariant = \"info\" | \"success\" | \"warning\" | \"error\";\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Visual style variant of the alert (matches Figma \"Variant\" property) */\n variant?: AlertVariant;\n /** Optional title text (bold) */\n title?: string;\n /** Left icon element */\n icon?: React.ReactNode;\n /** Show close button */\n closable?: boolean;\n /** Callback when close button is clicked */\n onClose?: () => void;\n}\n\nexport const Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n { className, variant = \"info\", title, icon, closable = false, onClose, children, ...props },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n role=\"alert\"\n data-testid=\"alert\"\n className={cn(\n \"grid gap-x-3 rounded-lg p-4 text-sm leading-[18px]\",\n icon && closable && \"grid-cols-[auto_1fr_auto]\",\n icon && !closable && \"grid-cols-[auto_1fr]\",\n !icon && closable && \"grid-cols-[1fr_auto]\",\n !icon && !closable && \"grid-cols-[1fr]\",\n title && children ? \"items-start\" : \"items-center\",\n variant === \"info\" && \"bg-info-50 text-info-500\",\n variant === \"success\" && \"bg-success-50 text-success-500\",\n variant === \"warning\" && \"bg-warning-50 text-warning-500\",\n variant === \"error\" && \"bg-error-50 text-error-500\",\n className,\n )}\n {...props}\n >\n {icon && (\n <span className=\"flex shrink-0 items-start\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n\n <div className=\"flex min-w-0 flex-col gap-2\">\n {title && <div className=\"typography-body-2-semibold text-body-100\">{title}</div>}\n <div className=\"typography-body-2-regular text-body-200\">{children}</div>\n </div>\n\n {closable && (\n <Button\n variant=\"tertiary\"\n size=\"24\"\n onClick={onClose}\n className=\"self-start\"\n aria-label=\"Close alert\"\n >\n <CrossIcon />\n </Button>\n )}\n </div>\n );\n },\n);\n\nAlert.displayName = \"Alert\";\n","// src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n Context.displayName = rootComponentName + \"Context\";\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n BaseContext.displayName = rootComponentName + \"Context\";\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n function useSyncExternalStore$2(subscribe, getSnapshot) {\n didWarnOld18Alpha ||\n void 0 === React.startTransition ||\n ((didWarnOld18Alpha = !0),\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\"\n ));\n var value = getSnapshot();\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n objectIs(value, cachedValue) ||\n (console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n ),\n (didWarnUncachedGetSnapshot = !0));\n }\n cachedValue = useState({\n inst: { value: value, getSnapshot: getSnapshot }\n });\n var inst = cachedValue[0].inst,\n forceUpdate = cachedValue[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n }\n function checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n }\n function useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue,\n didWarnOld18Alpha = !1,\n didWarnUncachedGetSnapshot = !1,\n shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\n exports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","// src/use-is-hydrated.tsx\nimport { useSyncExternalStore } from \"use-sync-external-store/shim\";\nfunction useIsHydrated() {\n return useSyncExternalStore(\n subscribe,\n () => true,\n () => false\n );\n}\nfunction subscribe() {\n return () => {\n };\n}\nexport {\n useIsHydrated\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/avatar.tsx\nimport * as React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useIsHydrated } from \"@radix-ui/react-use-is-hydrated\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AVATAR_NAME = \"Avatar\";\nvar [createAvatarContext, createAvatarScope] = createContextScope(AVATAR_NAME);\nvar [AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME);\nvar Avatar = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAvatar, ...avatarProps } = props;\n const [imageLoadingStatus, setImageLoadingStatus] = React.useState(\"idle\");\n return /* @__PURE__ */ jsx(\n AvatarProvider,\n {\n scope: __scopeAvatar,\n imageLoadingStatus,\n onImageLoadingStatusChange: setImageLoadingStatus,\n children: /* @__PURE__ */ jsx(Primitive.span, { ...avatarProps, ref: forwardedRef })\n }\n );\n }\n);\nAvatar.displayName = AVATAR_NAME;\nvar IMAGE_NAME = \"AvatarImage\";\nvar AvatarImage = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAvatar, src, onLoadingStatusChange = () => {\n }, ...imageProps } = props;\n const context = useAvatarContext(IMAGE_NAME, __scopeAvatar);\n const imageLoadingStatus = useImageLoadingStatus(src, imageProps);\n const handleLoadingStatusChange = useCallbackRef((status) => {\n onLoadingStatusChange(status);\n context.onImageLoadingStatusChange(status);\n });\n useLayoutEffect(() => {\n if (imageLoadingStatus !== \"idle\") {\n handleLoadingStatusChange(imageLoadingStatus);\n }\n }, [imageLoadingStatus, handleLoadingStatusChange]);\n return imageLoadingStatus === \"loaded\" ? /* @__PURE__ */ jsx(Primitive.img, { ...imageProps, ref: forwardedRef, src }) : null;\n }\n);\nAvatarImage.displayName = IMAGE_NAME;\nvar FALLBACK_NAME = \"AvatarFallback\";\nvar AvatarFallback = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAvatar, delayMs, ...fallbackProps } = props;\n const context = useAvatarContext(FALLBACK_NAME, __scopeAvatar);\n const [canRender, setCanRender] = React.useState(delayMs === void 0);\n React.useEffect(() => {\n if (delayMs !== void 0) {\n const timerId = window.setTimeout(() => setCanRender(true), delayMs);\n return () => window.clearTimeout(timerId);\n }\n }, [delayMs]);\n return canRender && context.imageLoadingStatus !== \"loaded\" ? /* @__PURE__ */ jsx(Primitive.span, { ...fallbackProps, ref: forwardedRef }) : null;\n }\n);\nAvatarFallback.displayName = FALLBACK_NAME;\nfunction resolveLoadingStatus(image, src) {\n if (!image) {\n return \"idle\";\n }\n if (!src) {\n return \"error\";\n }\n if (image.src !== src) {\n image.src = src;\n }\n return image.complete && image.naturalWidth > 0 ? \"loaded\" : \"loading\";\n}\nfunction useImageLoadingStatus(src, { referrerPolicy, crossOrigin }) {\n const isHydrated = useIsHydrated();\n const imageRef = React.useRef(null);\n const image = (() => {\n if (!isHydrated) return null;\n if (!imageRef.current) {\n imageRef.current = new window.Image();\n }\n return imageRef.current;\n })();\n const [loadingStatus, setLoadingStatus] = React.useState(\n () => resolveLoadingStatus(image, src)\n );\n useLayoutEffect(() => {\n setLoadingStatus(resolveLoadingStatus(image, src));\n }, [image, src]);\n useLayoutEffect(() => {\n const updateStatus = (status) => () => {\n setLoadingStatus(status);\n };\n if (!image) return;\n const handleLoad = updateStatus(\"loaded\");\n const handleError = updateStatus(\"error\");\n image.addEventListener(\"load\", handleLoad);\n image.addEventListener(\"error\", handleError);\n if (referrerPolicy) {\n image.referrerPolicy = referrerPolicy;\n }\n if (typeof crossOrigin === \"string\") {\n image.crossOrigin = crossOrigin;\n }\n return () => {\n image.removeEventListener(\"load\", handleLoad);\n image.removeEventListener(\"error\", handleError);\n };\n }, [image, crossOrigin, referrerPolicy]);\n return loadingStatus;\n}\nvar Root = Avatar;\nvar Image = AvatarImage;\nvar Fallback = AvatarFallback;\nexport {\n Avatar,\n AvatarFallback,\n AvatarImage,\n Fallback,\n Image,\n Root,\n createAvatarScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport type AvatarSize = 16 | 24 | 32 | 40 | 48 | 64 | 88 | 148;\n\nconst AvatarContext = React.createContext<{ size: AvatarSize; NSFWShow: boolean }>({\n size: 40,\n NSFWShow: false,\n});\n\nconst STATUS_POSITIONS: Record<AvatarSize, { top: number; right: number }> = {\n 16: { top: -4, right: -4 },\n 24: { top: -3, right: -3 },\n 32: { top: -2, right: -2 },\n 40: { top: -1, right: -1 },\n 48: { top: 0, right: 0 },\n 64: { top: 2, right: 2 },\n 88: { top: 6, right: 6 },\n 148: { top: 15, right: 15 },\n};\n\n/** Shared avatar styling props */\ninterface AvatarStyleProps {\n /** Size variant of the avatar (matches Figma \"Size\" property) */\n size?: AvatarSize;\n /** Show online status indicator */\n onlineIndicator?: boolean;\n /** Show platinum gradient border (matches Figma \"Platinum show\" property) */\n platinumShow?: boolean;\n /** Show NSFW blur filter (matches Figma \"NSFW show\" property) */\n NSFWShow?: boolean;\n}\n\nexport interface AvatarRootProps\n extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>,\n AvatarStyleProps {}\n\nconst AvatarRoot = React.forwardRef<\n React.ComponentRef<typeof AvatarPrimitive.Root>,\n AvatarRootProps\n>(\n (\n {\n className,\n size = 40,\n onlineIndicator = false,\n platinumShow = false,\n NSFWShow = false,\n children,\n ...props\n },\n ref,\n ) => {\n const statusPosition = STATUS_POSITIONS[size];\n\n return (\n <AvatarContext.Provider value={{ size, NSFWShow }}>\n <div className=\"relative inline-flex\">\n <AvatarPrimitive.Root\n ref={ref}\n data-testid=\"avatar\"\n className={cn(\n \"relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full bg-neutral-100\",\n size === 16 && \"typography-caption-semibold size-4\",\n size === 24 && \"typography-caption-semibold size-6\",\n size === 32 && \"typography-body-2-semibold size-8\",\n size === 40 && \"typography-body-1-semibold size-10\",\n size === 48 && \"typography-heading-4 size-12\",\n size === 64 && \"typography-heading-3 size-16\",\n size === 88 && \"typography-heading-2 size-[88px]\",\n size === 148 && \"typography-heading-1 size-[148px]\",\n className,\n )}\n {...props}\n >\n {children}\n </AvatarPrimitive.Root>\n {platinumShow && (\n <div\n className=\"pointer-events-none absolute inset-0 rounded-full\"\n style={{\n background: `linear-gradient(143deg, #504F54 0%, #B1B1B1 20.3154%, #13181C 37.3727%, #C6C6C8 58.8154%, #FFFFFF 69.3154%, #0C0F14 81.3154%, #696A6E 100%)`,\n WebkitMask: \"radial-gradient(circle closest-side, transparent 96%, black 96%)\",\n mask: \"radial-gradient(circle closest-side, transparent 96%, black 96%)\",\n }}\n aria-hidden=\"true\"\n />\n )}\n {onlineIndicator && (\n <span\n className=\"absolute size-3 rounded-full border-2 border-background-150 bg-brand-green-500\"\n style={{\n top: `${statusPosition.top}px`,\n right: `${statusPosition.right}px`,\n }}\n aria-hidden=\"true\"\n />\n )}\n </div>\n </AvatarContext.Provider>\n );\n },\n);\n\nAvatarRoot.displayName = \"AvatarRoot\";\n\nexport interface AvatarImageProps\n extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image> {}\n\nconst AvatarImage = React.forwardRef<\n React.ComponentRef<typeof AvatarPrimitive.Image>,\n AvatarImageProps\n>(({ className, ...props }, ref) => {\n const { NSFWShow } = React.useContext(AvatarContext);\n return (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"size-full bg-neutral-200 object-cover\", NSFWShow && \"blur-md\", className)}\n {...props}\n />\n );\n});\n\nAvatarImage.displayName = \"AvatarImage\";\n\nexport interface AvatarFallbackProps\n extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback> {}\n\nconst AvatarFallback = React.forwardRef<\n React.ComponentRef<typeof AvatarPrimitive.Fallback>,\n AvatarFallbackProps\n>(({ className, children, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex size-full items-center justify-center bg-neutral-200 text-neutral-400 uppercase leading-none\",\n className,\n )}\n delayMs={0}\n {...props}\n >\n {children}\n </AvatarPrimitive.Fallback>\n));\n\nAvatarFallback.displayName = \"AvatarFallback\";\n\nexport interface AvatarProps\n extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>,\n AvatarStyleProps {\n /** URL of the avatar image */\n src?: string;\n /** Alt text for the avatar image */\n alt?: string;\n /** Fallback content (initials, icon, etc.) */\n fallback?: React.ReactNode;\n}\n\nexport const Avatar = React.forwardRef<\n React.ComponentRef<typeof AvatarPrimitive.Root>,\n AvatarProps\n>(\n (\n {\n className,\n size = 40,\n src,\n alt,\n fallback,\n onlineIndicator = false,\n platinumShow = false,\n NSFWShow = false,\n children,\n ...props\n },\n ref,\n ) => {\n const rootProps = {\n ref,\n size,\n onlineIndicator,\n platinumShow,\n NSFWShow,\n className,\n ...props,\n };\n\n if (children) {\n return <AvatarRoot {...rootProps}>{children}</AvatarRoot>;\n }\n\n return (\n <AvatarRoot {...rootProps}>\n {src && <AvatarImage src={src} alt={alt ?? \"Avatar\"} />}\n <AvatarFallback>{fallback}</AvatarFallback>\n </AvatarRoot>\n );\n },\n);\n\nAvatar.displayName = \"Avatar\";\n\nexport { AvatarRoot, AvatarImage, AvatarFallback };\n","import { Slot, Slottable } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nconst badgeVariants = {\n variant: {\n default: \"bg-neutral-100 text-neutral-400\",\n dark: \"bg-background-800 text-body-300 dark:text-body-white-solid-constant\",\n success: \"bg-neutral-100 text-neutral-400\",\n warning: \"bg-neutral-100 text-neutral-400\",\n error: \"bg-neutral-100 text-neutral-400\",\n special: \"bg-neutral-100 text-neutral-400\",\n info: \"bg-neutral-100 text-neutral-400\",\n online: \"bg-background-200 text-brand-green-500\",\n brand: \"bg-brand-green-500 text-body-black-solid-constant\",\n pink: \"bg-brand-pink-500 text-body-black-solid-constant\",\n brandLight: \"bg-brand-green-50 text-body-black-solid-constant\",\n pinkLight: \"bg-brand-pink-50 text-body-black-solid-constant\",\n },\n dotColor: {\n default: \"bg-body-black-solid-constant\",\n dark: \"bg-body-300 dark:bg-body-white-solid-constant\",\n success: \"bg-success-500\",\n warning: \"bg-warning-500\",\n error: \"bg-error-500\",\n special: \"bg-special-500\",\n info: \"bg-info-500\",\n online: \"bg-brand-green-500\",\n brand: \"bg-body-black-solid-constant\",\n pink: \"bg-body-black-solid-constant\",\n brandLight: \"bg-body-black-solid-constant\",\n pinkLight: \"bg-body-black-solid-constant\",\n },\n} as const;\n\nexport type BadgeVariant = keyof typeof badgeVariants.variant;\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Visual style variant of the badge */\n variant?: BadgeVariant;\n /** Show left status indicator dot */\n leftDot?: boolean;\n /** Left icon element */\n leftIcon?: React.ReactNode;\n /** Right icon element */\n rightIcon?: React.ReactNode;\n /** Render as a different element using Radix Slot */\n asChild?: boolean;\n}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n className,\n variant = \"default\",\n leftDot = true,\n leftIcon,\n rightIcon,\n asChild = false,\n children,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"span\";\n\n return (\n <Comp\n ref={ref}\n data-testid=\"badge\"\n className={cn(\n // Base styles\n \"typography-caption-semibold inline-flex h-5 items-center gap-2 rounded-full px-2\",\n // Variant styles\n badgeVariants.variant[variant],\n // Manual CSS overrides\n className,\n )}\n {...props}\n >\n {leftIcon && (\n <span className=\"flex\" aria-hidden=\"true\">\n {leftIcon}\n </span>\n )}\n {leftDot && (\n <span\n className={cn(\"size-1 shrink-0 rounded-full\", badgeVariants.dotColor[variant])}\n aria-hidden=\"true\"\n />\n )}\n <Slottable>{children}</Slottable>\n {rightIcon && (\n <span className=\"flex\" aria-hidden=\"true\">\n {rightIcon}\n </span>\n )}\n </Comp>\n );\n },\n);\n\nBadge.displayName = \"Badge\";\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/checkbox.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\nvar [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nfunction CheckboxProvider(props) {\n const {\n __scopeCheckbox,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = \"on\",\n // @ts-expect-error\n internal_do_not_use_render\n } = props;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: CHECKBOX_NAME\n });\n const [control, setControl] = React.useState(null);\n const [bubbleInput, setBubbleInput] = React.useState(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n // We set this to true by default so that events bubble to forms without JS (SSR)\n true\n );\n const context = {\n checked,\n disabled,\n setChecked,\n control,\n setControl,\n name,\n form,\n value,\n hasConsumerStoppedPropagationRef,\n required,\n defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n isFormControl,\n bubbleInput,\n setBubbleInput\n };\n return /* @__PURE__ */ jsx(\n CheckboxProviderImpl,\n {\n scope: __scopeCheckbox,\n ...context,\n children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children\n }\n );\n}\nvar TRIGGER_NAME = \"CheckboxTrigger\";\nvar CheckboxTrigger = React.forwardRef(\n ({ __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }, forwardedRef) => {\n const {\n control,\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n isFormControl,\n bubbleInput\n } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form = control?.form;\n if (form) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form.addEventListener(\"reset\", reset);\n return () => form.removeEventListener(\"reset\", reset);\n }\n }, [control, setChecked]);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"checkbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...checkboxProps,\n ref: composedRefs,\n onKeyDown: composeEventHandlers(onKeyDown, (event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onClick: composeEventHandlers(onClick, (event) => {\n setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n );\n }\n);\nCheckboxTrigger.displayName = TRIGGER_NAME;\nvar Checkbox = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...checkboxProps\n } = props;\n return /* @__PURE__ */ jsx(\n CheckboxProvider,\n {\n __scopeCheckbox,\n checked,\n defaultChecked,\n disabled,\n required,\n onCheckedChange,\n name,\n form,\n value,\n internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n CheckboxTrigger,\n {\n ...checkboxProps,\n ref: forwardedRef,\n __scopeCheckbox\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n CheckboxBubbleInput,\n {\n __scopeCheckbox\n }\n )\n ] })\n }\n );\n }\n);\nCheckbox.displayName = CHECKBOX_NAME;\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return /* @__PURE__ */ jsx(\n Presence,\n {\n present: forceMount || isIndeterminate(context.checked) || context.checked === true,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef,\n style: { pointerEvents: \"none\", ...props.style }\n }\n )\n }\n );\n }\n);\nCheckboxIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"CheckboxBubbleInput\";\nvar CheckboxBubbleInput = React.forwardRef(\n ({ __scopeCheckbox, ...props }, forwardedRef) => {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput\n } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n required,\n disabled,\n name,\n value,\n form,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: \"translateX(-100%)\"\n }\n }\n );\n }\n);\nCheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nexport {\n Checkbox,\n CheckboxIndicator,\n CheckboxIndicator as Indicator,\n Checkbox as Root,\n createCheckboxScope,\n CheckboxBubbleInput as unstable_BubbleInput,\n CheckboxBubbleInput as unstable_CheckboxBubbleInput,\n CheckboxProvider as unstable_CheckboxProvider,\n CheckboxTrigger as unstable_CheckboxTrigger,\n CheckboxProvider as unstable_Provider,\n CheckboxTrigger as unstable_Trigger\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\n/** Small checkmark icon for use in checkbox/toggle components (12x12 viewBox) */\nexport const CheckIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n aria-hidden=\"true\"\n className={cn(\"size-3\", className)}\n {...props}\n >\n <path\n d=\"M10 3 4.5 8.5 2 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ),\n);\n\nCheckIcon.displayName = \"CheckIcon\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\n/** Small minus/indeterminate icon for use in checkbox components (12x12 viewBox) */\nexport const MinusIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n aria-hidden=\"true\"\n className={cn(\"size-3\", className)}\n {...props}\n >\n <path d=\"M2 6h8\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n ),\n);\n\nMinusIcon.displayName = \"MinusIcon\";\n","import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { CheckIcon } from \"../Icons/CheckIcon\";\nimport { MinusIcon } from \"../Icons/MinusIcon\";\n\nexport type CheckboxSize = \"default\" | \"small\";\n\nexport interface CheckboxProps\n extends Omit<React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, \"asChild\"> {\n /** Size variant for label and helper text */\n size?: CheckboxSize;\n /** Label text displayed next to the checkbox */\n label?: string;\n /** Helper text displayed below the label */\n helperText?: string;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, size = \"default\", label, helperText, disabled, name, ...props }, ref) => {\n const id = React.useId();\n const helperTextId = helperText ? `${id}-helper` : undefined;\n const hasLabel = Boolean(label || helperText);\n\n // Hidden input for form library compatibility (e.g. react-hook-form register)\n const inputRef = React.useRef<HTMLInputElement>(null);\n React.useImperativeHandle(ref, () => inputRef.current as HTMLInputElement);\n\n const handleCheckedChange = (value: boolean | \"indeterminate\") => {\n const checked = value === true;\n if (inputRef.current) {\n inputRef.current.checked = checked;\n inputRef.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n props.onCheckedChange?.(value);\n };\n\n const checkboxElement = (\n <span\n className={cn(\n \"relative inline-flex size-5 shrink-0\",\n // Alignment when used with label\n label && (helperText ? \"mt-1\" : \"mt-0.5\"),\n )}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n name={name}\n disabled={disabled}\n aria-hidden\n tabIndex={-1}\n onChange={() => {}}\n className=\"pointer-events-none absolute size-px overflow-hidden opacity-0\"\n style={{ clip: \"rect(0,0,0,0)\" }}\n />\n <CheckboxPrimitive.Root\n id={id}\n disabled={disabled}\n aria-describedby={helperTextId}\n data-testid=\"checkbox\"\n {...props}\n onCheckedChange={handleCheckedChange}\n className={cn(\n // Base styles\n \"flex size-5 items-center justify-center rounded border-2\",\n \"transition-[border-color,background-color,color,box-shadow] duration-150\",\n // Default state\n \"border-body-100 bg-transparent text-transparent\",\n // Checked state\n \"data-[state=checked]:border-body-100 data-[state=checked]:bg-body-100 data-[state=checked]:text-body-300\",\n // Indeterminate state\n \"data-[state=indeterminate]:border-body-100 data-[state=indeterminate]:bg-body-100 data-[state=indeterminate]:text-body-300\",\n // Hover state\n \"hover:ring-2 hover:ring-brand-green-500 group-hover:ring-2 group-hover:ring-brand-green-500\",\n // Focus state\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-purple-500 focus-visible:ring-offset-2 focus-visible:ring-offset-background-inverse-solid\",\n // Disabled state\n \"disabled:cursor-not-allowed disabled:border-disabled-400 disabled:ring-0 disabled:group-hover:ring-0\",\n \"disabled:data-[state=checked]:border-disabled-400 disabled:data-[state=checked]:bg-disabled-400 disabled:data-[state=checked]:text-disabled-100\",\n !hasLabel && className,\n )}\n >\n <CheckboxPrimitive.Indicator\n forceMount\n className={cn(\n \"flex size-3 items-center justify-center text-body-300\",\n \"data-[state=unchecked]:invisible\",\n )}\n >\n {props.checked === \"indeterminate\" ? <MinusIcon /> : <CheckIcon />}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n </span>\n );\n\n if (!hasLabel) {\n return checkboxElement;\n }\n\n return (\n <div\n className={cn(\n \"inline-flex flex-col gap-0.5\",\n disabled && \"is-disabled cursor-not-allowed\",\n className,\n )}\n >\n <div className=\"group inline-flex items-start gap-2\">\n {checkboxElement}\n {label && (\n <label\n htmlFor={id}\n className={cn(\n \"cursor-pointer select-none text-body-100\",\n \"group-has-disabled:cursor-not-allowed group-has-disabled:text-disabled-100\",\n size === \"small\" ? \"typography-body-2-semibold\" : \"typography-body-1-semibold\",\n )}\n >\n {label}\n </label>\n )}\n </div>\n {helperText && (\n <span\n id={helperTextId}\n className={cn(\n \"ml-7 text-body-200\",\n \"in-[.is-disabled]:cursor-not-allowed in-[.is-disabled]:text-disabled-100\",\n size === \"small\" ? \"typography-caption-regular\" : \"typography-body-2-regular\",\n )}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n },\n);\n\nCheckbox.displayName = \"Checkbox\";\n","import { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport type CountVariant = \"Default\" | \"Brand\" | \"Pink\" | \"Info\" | \"Success\" | \"Warning\";\n\nfunction getDisplayValue(value: number, max: number): string {\n return value > max ? `${max}+` : value.toString();\n}\n\nexport interface CountProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Visual style variant of the count */\n variant?: CountVariant;\n /** The count value to display */\n value?: number;\n /** Maximum value to display before showing overflow (e.g., \"99+\") */\n max?: number;\n /** Render as a different element using Radix Slot */\n asChild?: boolean;\n}\n\nexport const Count = React.forwardRef<HTMLSpanElement, CountProps>(\n (\n { className, variant = \"Default\", value = 0, max = 99, asChild = false, children, ...props },\n ref,\n ) => {\n if (value === 0 && !children) {\n return null;\n }\n\n const Comp = asChild ? Slot : \"span\";\n\n return (\n <Comp\n ref={ref}\n className={cn(\n \"typography-caption-semibold inline-flex h-5 min-w-5 shrink-0 items-center justify-center rounded-full px-1.5 tabular-nums leading-none\",\n variant === \"Default\" && \"bg-error-500 text-body-white-solid-constant\",\n variant === \"Brand\" && \"bg-brand-green-500 text-body-black-solid-constant\",\n variant === \"Pink\" && \"bg-brand-pink-500 text-body-black-solid-constant\",\n variant === \"Info\" && \"bg-info-500 text-body-white-solid-constant\",\n variant === \"Success\" && \"bg-success-500 text-body-white-solid-constant\",\n variant === \"Warning\" && \"bg-warning-500 text-body-black-solid-constant\",\n className,\n )}\n {...props}\n >\n {children ?? getDisplayValue(value, max)}\n </Comp>\n );\n },\n);\n\nCount.displayName = \"Count\";\n","/**\n * Time zone name format.\n */\n\n/**\n * The function returns the time zone name for the given date in the specified\n * time zone.\n *\n * It uses the `Intl.DateTimeFormat` API and by default outputs the time zone\n * name in a long format, e.g. \"Pacific Standard Time\" or\n * \"Singapore Standard Time\".\n *\n * It is possible to specify the format as the third argument using one of the following options\n *\n * - \"short\": e.g. \"EDT\" or \"GMT+8\".\n * - \"long\": e.g. \"Eastern Daylight Time\".\n * - \"shortGeneric\": e.g. \"ET\" or \"Singapore Time\".\n * - \"longGeneric\": e.g. \"Eastern Time\" or \"Singapore Standard Time\".\n *\n * These options correspond to TR35 tokens `z..zzz`, `zzzz`, `v`, and `vvvv` respectively: https://www.unicode.org/reports/tr35/tr35-dates.html#dfst-zone\n *\n * @param timeZone - Time zone name (IANA or UTC offset)\n * @param date - Date object to get the time zone name for\n * @param format - Optional format of the time zone name. Defaults to \"long\". Can be \"short\", \"long\", \"shortGeneric\", or \"longGeneric\".\n *\n * @returns Time zone name (e.g. \"Singapore Standard Time\")\n */\nexport function tzName(timeZone, date, format = \"long\") {\n return new Intl.DateTimeFormat(\"en-US\", {\n // Enforces engine to render the time. Without the option JavaScriptCore omits it.\n hour: \"numeric\",\n timeZone: timeZone,\n timeZoneName: format\n }).format(date).split(/\\s/g) // Format.JS uses non-breaking spaces\n .slice(2) // Skip the hour and AM/PM parts\n .join(\" \");\n}","const offsetFormatCache = {};\nconst offsetCache = {};\n\n/**\n * The function extracts UTC offset in minutes from the given date in specified\n * time zone.\n *\n * Unlike `Date.prototype.getTimezoneOffset`, this function returns the value\n * mirrored to the sign of the offset in the time zone. For Asia/Singapore\n * (UTC+8), `tzOffset` returns 480, while `getTimezoneOffset` returns -480.\n *\n * @param timeZone - Time zone name (IANA or UTC offset)\n * @param date - Date to check the offset for\n *\n * @returns UTC offset in minutes\n */\nexport function tzOffset(timeZone, date) {\n try {\n const format = offsetFormatCache[timeZone] ||= new Intl.DateTimeFormat(\"en-US\", {\n timeZone,\n timeZoneName: \"longOffset\"\n }).format;\n const offsetStr = format(date).split(\"GMT\")[1];\n if (offsetStr in offsetCache) return offsetCache[offsetStr];\n return calcOffset(offsetStr, offsetStr.split(\":\"));\n } catch {\n // Fallback to manual parsing if the runtime doesn't support ±HH:MM/±HHMM/±HH\n // See: https://github.com/nodejs/node/issues/53419\n if (timeZone in offsetCache) return offsetCache[timeZone];\n const captures = timeZone?.match(offsetRe);\n if (captures) return calcOffset(timeZone, captures.slice(1));\n return NaN;\n }\n}\nconst offsetRe = /([+-]\\d\\d):?(\\d\\d)?/;\nfunction calcOffset(cacheStr, values) {\n const hours = +(values[0] || 0);\n const minutes = +(values[1] || 0);\n // Convert seconds to minutes by dividing by 60 to keep the function return in minutes.\n const seconds = +(values[2] || 0) / 60;\n return offsetCache[cacheStr] = hours * 60 + minutes > 0 ? hours * 60 + minutes + seconds : hours * 60 - minutes - seconds;\n}","import { tzOffset } from \"../tzOffset/index.js\";\nexport class TZDateMini extends Date {\n //#region static\n\n constructor(...args) {\n super();\n if (args.length > 1 && typeof args[args.length - 1] === \"string\") {\n this.timeZone = args.pop();\n }\n this.internal = new Date();\n if (isNaN(tzOffset(this.timeZone, this))) {\n this.setTime(NaN);\n } else {\n if (!args.length) {\n this.setTime(Date.now());\n } else if (typeof args[0] === \"number\" && (args.length === 1 || args.length === 2 && typeof args[1] !== \"number\")) {\n this.setTime(args[0]);\n } else if (typeof args[0] === \"string\") {\n this.setTime(+new Date(args[0]));\n } else if (args[0] instanceof Date) {\n this.setTime(+args[0]);\n } else {\n this.setTime(+new Date(...args));\n adjustToSystemTZ(this, NaN);\n syncToInternal(this);\n }\n }\n }\n static tz(tz, ...args) {\n return args.length ? new TZDateMini(...args, tz) : new TZDateMini(Date.now(), tz);\n }\n\n //#endregion\n\n //#region time zone\n\n withTimeZone(timeZone) {\n return new TZDateMini(+this, timeZone);\n }\n getTimezoneOffset() {\n const offset = -tzOffset(this.timeZone, this);\n // Remove the seconds offset\n // use Math.floor for negative GMT timezones and Math.ceil for positive GMT timezones.\n return offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n }\n\n //#endregion\n\n //#region time\n\n setTime(time) {\n Date.prototype.setTime.apply(this, arguments);\n syncToInternal(this);\n return +this;\n }\n\n //#endregion\n\n //#region date-fns integration\n\n [Symbol.for(\"constructDateFrom\")](date) {\n return new TZDateMini(+new Date(date), this.timeZone);\n }\n\n //#endregion\n}\n\n// Assign getters and setters\nconst re = /^(get|set)(?!UTC)/;\nObject.getOwnPropertyNames(Date.prototype).forEach(method => {\n if (!re.test(method)) return;\n const utcMethod = method.replace(re, \"$1UTC\");\n // Filter out methods without UTC counterparts\n if (!TZDateMini.prototype[utcMethod]) return;\n if (method.startsWith(\"get\")) {\n // Delegate to internal date's UTC method\n TZDateMini.prototype[method] = function () {\n return this.internal[utcMethod]();\n };\n } else {\n // Assign regular setter\n TZDateMini.prototype[method] = function () {\n Date.prototype[utcMethod].apply(this.internal, arguments);\n syncFromInternal(this);\n return +this;\n };\n\n // Assign UTC setter\n TZDateMini.prototype[utcMethod] = function () {\n Date.prototype[utcMethod].apply(this, arguments);\n syncToInternal(this);\n return +this;\n };\n }\n});\n\n/**\n * Function syncs time to internal date, applying the time zone offset.\n *\n * @param {Date} date - Date to sync\n */\nfunction syncToInternal(date) {\n date.internal.setTime(+date);\n date.internal.setUTCSeconds(date.internal.getUTCSeconds() - Math.round(-tzOffset(date.timeZone, date) * 60));\n}\n\n/**\n * Function syncs the internal date UTC values to the date. It allows to get\n * accurate timestamp value.\n *\n * @param {Date} date - The date to sync\n */\nfunction syncFromInternal(date) {\n // First we transpose the internal values\n Date.prototype.setFullYear.call(date, date.internal.getUTCFullYear(), date.internal.getUTCMonth(), date.internal.getUTCDate());\n Date.prototype.setHours.call(date, date.internal.getUTCHours(), date.internal.getUTCMinutes(), date.internal.getUTCSeconds(), date.internal.getUTCMilliseconds());\n\n // Now we have to adjust the date to the system time zone\n adjustToSystemTZ(date);\n}\n\n/**\n * Function adjusts the date to the system time zone. It uses the time zone\n * differences to calculate the offset and adjust the date.\n *\n * @param {Date} date - Date to adjust\n */\nfunction adjustToSystemTZ(date) {\n // Save the time zone offset before all the adjustments\n const baseOffset = tzOffset(date.timeZone, date);\n // Remove the seconds offset\n // use Math.floor for negative GMT timezones and Math.ceil for positive GMT timezones.\n const offset = baseOffset > 0 ? Math.floor(baseOffset) : Math.ceil(baseOffset);\n //#region System DST adjustment\n\n // The biggest problem with using the system time zone is that when we create\n // a date from internal values stored in UTC, the system time zone might end\n // up on the DST hour:\n //\n // $ TZ=America/New_York node\n // > new Date(2020, 2, 8, 1).toString()\n // 'Sun Mar 08 2020 01:00:00 GMT-0500 (Eastern Standard Time)'\n // > new Date(2020, 2, 8, 2).toString()\n // 'Sun Mar 08 2020 03:00:00 GMT-0400 (Eastern Daylight Time)'\n // > new Date(2020, 2, 8, 3).toString()\n // 'Sun Mar 08 2020 03:00:00 GMT-0400 (Eastern Daylight Time)'\n // > new Date(2020, 2, 8, 4).toString()\n // 'Sun Mar 08 2020 04:00:00 GMT-0400 (Eastern Daylight Time)'\n //\n // Here we get the same hour for both 2 and 3, because the system time zone\n // has DST beginning at 8 March 2020, 2 a.m. and jumps to 3 a.m. So we have\n // to adjust the internal date to reflect that.\n //\n // However we want to adjust only if that's the DST hour the change happenes,\n // not the hour where DST moves to.\n\n // We calculate the previous hour to see if the time zone offset has changed\n // and we have landed on the DST hour.\n const prevHour = new Date(+date);\n // We use UTC methods here as we don't want to land on the same hour again\n // in case of DST.\n prevHour.setUTCHours(prevHour.getUTCHours() - 1);\n\n // Calculate if we are on the system DST hour.\n const systemOffset = -new Date(+date).getTimezoneOffset();\n const prevHourSystemOffset = -new Date(+prevHour).getTimezoneOffset();\n const systemDSTChange = systemOffset - prevHourSystemOffset;\n // Detect the DST shift. System DST change will occur both on\n const dstShift = Date.prototype.getHours.apply(date) !== date.internal.getUTCHours();\n\n // Move the internal date when we are on the system DST hour.\n if (systemDSTChange && dstShift) date.internal.setUTCMinutes(date.internal.getUTCMinutes() + systemDSTChange);\n\n //#endregion\n\n //#region System diff adjustment\n\n // Now we need to adjust the date, since we just applied internal values.\n // We need to calculate the difference between the system and date time zones\n // and apply it to the date.\n\n const offsetDiff = systemOffset - offset;\n if (offsetDiff) Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetDiff);\n\n //#endregion\n\n //#region Seconds System diff adjustment\n\n const systemDate = new Date(+date);\n // Set the UTC seconds to 0 to isolate the timezone offset in seconds.\n systemDate.setUTCSeconds(0);\n // For negative systemOffset, invert the seconds.\n const systemSecondsOffset = systemOffset > 0 ? systemDate.getSeconds() : (systemDate.getSeconds() - 60) % 60;\n\n // Calculate the seconds offset based on the timezone offset.\n const secondsOffset = Math.round(-(tzOffset(date.timeZone, date) * 60)) % 60;\n if (secondsOffset || systemSecondsOffset) {\n date.internal.setUTCSeconds(date.internal.getUTCSeconds() + secondsOffset);\n Date.prototype.setUTCSeconds.call(date, Date.prototype.getUTCSeconds.call(date) + secondsOffset + systemSecondsOffset);\n }\n\n //#endregion\n\n //#region Post-adjustment DST fix\n\n const postBaseOffset = tzOffset(date.timeZone, date);\n // Remove the seconds offset\n // use Math.floor for negative GMT timezones and Math.ceil for positive GMT timezones.\n const postOffset = postBaseOffset > 0 ? Math.floor(postBaseOffset) : Math.ceil(postBaseOffset);\n const postSystemOffset = -new Date(+date).getTimezoneOffset();\n const postOffsetDiff = postSystemOffset - postOffset;\n const offsetChanged = postOffset !== offset;\n const postDiff = postOffsetDiff - offsetDiff;\n if (offsetChanged && postDiff) {\n Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + postDiff);\n\n // Now we need to check if got offset change during the post-adjustment.\n // If so, we also need both dates to reflect that.\n\n const newBaseOffset = tzOffset(date.timeZone, date);\n // Remove the seconds offset\n // use Math.floor for negative GMT timezones and Math.ceil for positive GMT timezones.\n const newOffset = newBaseOffset > 0 ? Math.floor(newBaseOffset) : Math.ceil(newBaseOffset);\n const offsetChange = postOffset - newOffset;\n if (offsetChange) {\n date.internal.setUTCMinutes(date.internal.getUTCMinutes() + offsetChange);\n Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetChange);\n }\n }\n\n //#endregion\n}","import { tzName } from \"../tzName/index.js\";\nimport { TZDateMini } from \"./mini.js\";\nexport class TZDate extends TZDateMini {\n //#region static\n\n static tz(tz, ...args) {\n return args.length ? new TZDate(...args, tz) : new TZDate(Date.now(), tz);\n }\n\n //#endregion\n\n //#region representation\n\n toISOString() {\n const [sign, hours, minutes] = this.tzComponents();\n const tz = `${sign}${hours}:${minutes}`;\n return this.internal.toISOString().slice(0, -1) + tz;\n }\n toString() {\n // \"Tue Aug 13 2024 07:50:19 GMT+0800 (Singapore Standard Time)\";\n return `${this.toDateString()} ${this.toTimeString()}`;\n }\n toDateString() {\n // toUTCString returns RFC 7231 (\"Mon, 12 Aug 2024 23:36:08 GMT\")\n const [day, date, month, year] = this.internal.toUTCString().split(\" \");\n // \"Tue Aug 13 2024\"\n return `${day?.slice(0, -1) /* Remove \",\" */} ${month} ${date} ${year}`;\n }\n toTimeString() {\n // toUTCString returns RFC 7231 (\"Mon, 12 Aug 2024 23:36:08 GMT\")\n const time = this.internal.toUTCString().split(\" \")[4];\n const [sign, hours, minutes] = this.tzComponents();\n // \"07:42:23 GMT+0800 (Singapore Standard Time)\"\n return `${time} GMT${sign}${hours}${minutes} (${tzName(this.timeZone, this)})`;\n }\n toLocaleString(locales, options) {\n return Date.prototype.toLocaleString.call(this, locales, {\n ...options,\n timeZone: options?.timeZone || this.timeZone\n });\n }\n toLocaleDateString(locales, options) {\n return Date.prototype.toLocaleDateString.call(this, locales, {\n ...options,\n timeZone: options?.timeZone || this.timeZone\n });\n }\n toLocaleTimeString(locales, options) {\n return Date.prototype.toLocaleTimeString.call(this, locales, {\n ...options,\n timeZone: options?.timeZone || this.timeZone\n });\n }\n\n //#endregion\n\n //#region private\n\n tzComponents() {\n const offset = this.getTimezoneOffset();\n const sign = offset > 0 ? \"-\" : \"+\";\n const hours = String(Math.floor(Math.abs(offset) / 60)).padStart(2, \"0\");\n const minutes = String(Math.abs(offset) % 60).padStart(2, \"0\");\n return [sign, hours, minutes];\n }\n\n //#endregion\n\n withTimeZone(timeZone) {\n return new TZDate(+this, timeZone);\n }\n\n //#region date-fns integration\n\n [Symbol.for(\"constructDateFrom\")](date) {\n return new TZDate(+new Date(date), this.timeZone);\n }\n\n //#endregion\n}","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link addWeeks} function options.\n */\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of weeks to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be added.\n * @param options - An object with options\n *\n * @returns The new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport function addWeeks(date, amount, options) {\n return addDays(date, amount * 7, options);\n}\n\n// Fallback for modularized imports:\nexport default addWeeks;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addYears} function options.\n */\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n * @param options - The options\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount, options) {\n return addMonths(date, amount * 12, options);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link max} function options.\n */\n\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param dates - The dates to compare\n *\n * @returns The latest of the dates\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport function max(dates, options) {\n let result;\n let context = options?.in;\n\n dates.forEach((date) => {\n // Use the first date object as the context function\n if (!context && typeof date === \"object\")\n context = constructFrom.bind(null, date);\n\n const date_ = toDate(date, context);\n if (!result || result < date_ || isNaN(+date_)) result = date_;\n });\n\n return constructFrom(context, result || NaN);\n}\n\n// Fallback for modularized imports:\nexport default max;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link min} function options.\n */\n\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param dates - The dates to compare\n *\n * @returns The earliest of the dates\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport function min(dates, options) {\n let result;\n let context = options?.in;\n\n dates.forEach((date) => {\n // Use the first date object as the context function\n if (!context && typeof date === \"object\")\n context = constructFrom.bind(null, date);\n\n const date_ = toDate(date, context);\n if (!result || result > date_ || isNaN(+date_)) result = date_;\n });\n\n return constructFrom(context, result || NaN);\n}\n\n// Fallback for modularized imports:\nexport default min;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link isSameDay} function options.\n */\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(laterDate, earlierDate, options) {\n const [dateLeft_, dateRight_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return +startOfDay(dateLeft_) === +startOfDay(dateRight_);\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\n */\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { normalizeDates } from \"./normalizeDates.js\";\n\nexport function normalizeInterval(context, interval) {\n const [start, end] = normalizeDates(context, interval.start, interval.end);\n return { start, end };\n}\n","import { normalizeInterval } from \"./_lib/normalizeInterval.js\";\nimport { constructFrom } from \"./constructFrom.js\";\n\n/**\n * The {@link eachMonthOfInterval} function options.\n */\n\n/**\n * The {@link eachMonthOfInterval} function result type. It resolves the proper data type.\n */\n\n/**\n * @name eachMonthOfInterval\n * @category Interval Helpers\n * @summary Return the array of months within the specified time interval.\n *\n * @description\n * Return the array of months within the specified time interval.\n *\n * @typeParam IntervalType - Interval type.\n * @typeParam Options - Options type.\n *\n * @param interval - The interval.\n * @param options - An object with options.\n *\n * @returns The array with starts of months from the month of the interval start to the month of the interval end\n *\n * @example\n * // Each month between 6 February 2014 and 10 August 2014:\n * const result = eachMonthOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2014, 7, 10)\n * })\n * //=> [\n * // Sat Feb 01 2014 00:00:00,\n * // Sat Mar 01 2014 00:00:00,\n * // Tue Apr 01 2014 00:00:00,\n * // Thu May 01 2014 00:00:00,\n * // Sun Jun 01 2014 00:00:00,\n * // Tue Jul 01 2014 00:00:00,\n * // Fri Aug 01 2014 00:00:00\n * // ]\n */\nexport function eachMonthOfInterval(interval, options) {\n const { start, end } = normalizeInterval(options?.in, interval);\n\n let reversed = +start > +end;\n const endTime = reversed ? +start : +end;\n const date = reversed ? end : start;\n date.setHours(0, 0, 0, 0);\n date.setDate(1);\n\n let step = options?.step ?? 1;\n if (!step) return [];\n if (step < 0) {\n step = -step;\n reversed = !reversed;\n }\n\n const dates = [];\n\n while (+date <= endTime) {\n dates.push(constructFrom(start, date));\n date.setMonth(date.getMonth() + step);\n }\n\n return reversed ? dates.reverse() : dates;\n}\n\n// Fallback for modularized imports:\nexport default eachMonthOfInterval;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMonth} function options.\n */\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date. The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments.\n * Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed,\n * or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n _date.setDate(1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfYear} function options.\n */\n\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The end of a year\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport function endOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n _date.setFullYear(year + 1, 0, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfYear;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { normalizeInterval } from \"./_lib/normalizeInterval.js\";\nimport { constructFrom } from \"./constructFrom.js\";\n\n/**\n * The {@link eachYearOfInterval} function options.\n */\n\n/**\n * The {@link eachYearOfInterval} function result type. It resolves the proper data type.\n * It uses the first argument date object type, starting from the date argument,\n * then the start interval date, and finally the end interval date. If\n * a context function is passed, it uses the context function return type.\n */\n\n/**\n * @name eachYearOfInterval\n * @category Interval Helpers\n * @summary Return the array of yearly timestamps within the specified time interval.\n *\n * @description\n * Return the array of yearly timestamps within the specified time interval.\n *\n * @typeParam IntervalType - Interval type.\n * @typeParam Options - Options type.\n *\n * @param interval - The interval.\n * @param options - An object with options.\n *\n * @returns The array with starts of yearly timestamps from the month of the interval start to the month of the interval end\n *\n * @example\n * // Each year between 6 February 2014 and 10 August 2017:\n * const result = eachYearOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2017, 7, 10)\n * })\n * //=> [\n * // Wed Jan 01 2014 00:00:00,\n * // Thu Jan 01 2015 00:00:00,\n * // Fri Jan 01 2016 00:00:00,\n * // Sun Jan 01 2017 00:00:00\n * // ]\n */\nexport function eachYearOfInterval(interval, options) {\n const { start, end } = normalizeInterval(options?.in, interval);\n\n let reversed = +start > +end;\n const endTime = reversed ? +start : +end;\n const date = reversed ? end : start;\n date.setHours(0, 0, 0, 0);\n date.setMonth(0, 1);\n\n let step = options?.step ?? 1;\n if (!step) return [];\n if (step < 0) {\n step = -step;\n reversed = !reversed;\n }\n\n const dates = [];\n\n while (+date <= endTime) {\n dates.push(constructFrom(start, date));\n date.setFullYear(date.getFullYear() + step);\n }\n\n return reversed ? dates.reverse() : dates;\n}\n\n// Fallback for modularized imports:\nexport default eachYearOfInterval;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfWeek} function options.\n */\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n _date.setDate(_date.getDate() + diff);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfWeek;\n","import { endOfWeek } from \"./endOfWeek.js\";\n\n/**\n * The {@link endOfISOWeek} function options.\n */\n\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of an ISO week\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * const result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfISOWeek(date, options) {\n return endOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default endOfISOWeek;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDaysInMonth} function options.\n */\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date, considering the context if provided.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport function getDaysInMonth(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n const monthIndex = _date.getMonth();\n const lastDayOfMonth = constructFrom(_date, 0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}\n\n// Fallback for modularized imports:\nexport default getDaysInMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getMonth} function options.\n */\n\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The month index (0-11)\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport function getMonth(date, options) {\n return toDate(date, options?.in).getMonth();\n}\n\n// Fallback for modularized imports:\nexport default getMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getYear} function options.\n */\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The year\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport function getYear(date, options) {\n return toDate(date, options?.in).getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default getYear;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport function isAfter(date, dateToCompare) {\n return +toDate(date) > +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isAfter;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link isSameMonth} function options.\n */\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same month (and year)\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport function isSameMonth(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return (\n laterDate_.getFullYear() === earlierDate_.getFullYear() &&\n laterDate_.getMonth() === earlierDate_.getMonth()\n );\n}\n\n// Fallback for modularized imports:\nexport default isSameMonth;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link isSameYear} function options.\n */\n\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same year\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport function isSameYear(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return laterDate_.getFullYear() === earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default isSameYear;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getDaysInMonth } from \"./getDaysInMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setMonth} function options.\n */\n\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param month - The month index to set (0-11)\n * @param options - The options\n *\n * @returns The new date with the month set\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport function setMonth(date, month, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n const day = _date.getDate();\n\n const midMonth = constructFrom(options?.in || date, 0);\n midMonth.setFullYear(year, month, 15);\n midMonth.setHours(0, 0, 0, 0);\n const daysInMonth = getDaysInMonth(midMonth);\n\n // Set the earlier date, allows to wrap Jan 31 to Feb 28\n _date.setMonth(month, Math.min(day, daysInMonth));\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setMonth;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setYear} function options.\n */\n\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param year - The year of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the year set\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport function setYear(date, year, options) {\n const date_ = toDate(date, options?.in);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(+date_)) return constructFrom(options?.in || date, NaN);\n\n date_.setFullYear(year);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default setYear;\n","const FIVE_WEEKS = 5;\nconst FOUR_WEEKS = 4;\n/**\n * Returns the number of weeks to display in the broadcast calendar for a given\n * month.\n *\n * The broadcast calendar may have either 4 or 5 weeks in a month, depending on\n * the start and end dates of the broadcast weeks.\n *\n * @since 9.4.0\n * @param month The month for which to calculate the number of weeks.\n * @param dateLib The date library to use for date manipulation.\n * @returns The number of weeks in the broadcast calendar (4 or 5).\n */\nexport function getBroadcastWeeksInMonth(month, dateLib) {\n // Get the first day of the month\n const firstDayOfMonth = dateLib.startOfMonth(month);\n // Get the day of the week for the first day of the month (1-7, where 1 is Monday)\n const firstDayOfWeek = firstDayOfMonth.getDay() > 0 ? firstDayOfMonth.getDay() : 7;\n const broadcastStartDate = dateLib.addDays(month, -firstDayOfWeek + 1);\n const lastDateOfLastWeek = dateLib.addDays(broadcastStartDate, FIVE_WEEKS * 7 - 1);\n const numberOfWeeks = dateLib.getMonth(month) === dateLib.getMonth(lastDateOfLastWeek)\n ? FIVE_WEEKS\n : FOUR_WEEKS;\n return numberOfWeeks;\n}\n","/**\n * Returns the start date of the week in the broadcast calendar.\n *\n * The broadcast week starts on Monday. If the first day of the month is not a\n * Monday, this function calculates the previous Monday as the start of the\n * broadcast week.\n *\n * @since 9.4.0\n * @param date The date for which to calculate the start of the broadcast week.\n * @param dateLib The date library to use for date manipulation.\n * @returns The start date of the broadcast week.\n */\nexport function startOfBroadcastWeek(date, dateLib) {\n const firstOfMonth = dateLib.startOfMonth(date);\n const dayOfWeek = firstOfMonth.getDay();\n if (dayOfWeek === 1) {\n return firstOfMonth;\n }\n else if (dayOfWeek === 0) {\n return dateLib.addDays(firstOfMonth, -1 * 6);\n }\n else {\n return dateLib.addDays(firstOfMonth, -1 * (dayOfWeek - 1));\n }\n}\n","import { getBroadcastWeeksInMonth } from \"./getBroadcastWeeksInMonth.js\";\nimport { startOfBroadcastWeek } from \"./startOfBroadcastWeek.js\";\n/**\n * Returns the end date of the week in the broadcast calendar.\n *\n * The broadcast week ends on the last day of the last broadcast week for the\n * given date.\n *\n * @since 9.4.0\n * @param date The date for which to calculate the end of the broadcast week.\n * @param dateLib The date library to use for date manipulation.\n * @returns The end date of the broadcast week.\n */\nexport function endOfBroadcastWeek(date, dateLib) {\n const startDate = startOfBroadcastWeek(date, dateLib);\n const numberOfWeeks = getBroadcastWeeksInMonth(date, dateLib);\n const endDate = dateLib.addDays(startDate, numberOfWeeks * 7 - 1);\n return endDate;\n}\n","import { format } from \"date-fns\";\nimport { enUS as dateFnsEnUS } from \"date-fns/locale\";\n/** English (United States) locale extended with DayPicker-specific translations. */\nexport const enUS = {\n ...dateFnsEnUS,\n labels: {\n labelDayButton: (date, modifiers, options, dateLib) => {\n let formatDate;\n if (dateLib && typeof dateLib.format === \"function\") {\n formatDate = dateLib.format.bind(dateLib);\n }\n else {\n formatDate = (d, pattern) => format(d, pattern, { locale: dateFnsEnUS, ...options });\n }\n let label = formatDate(date, \"PPPP\");\n if (modifiers.today)\n label = `Today, ${label}`;\n if (modifiers.selected)\n label = `${label}, selected`;\n return label;\n },\n labelMonthDropdown: \"Choose the Month\",\n labelNext: \"Go to the Next Month\",\n labelPrevious: \"Go to the Previous Month\",\n labelWeekNumber: (weekNumber) => `Week ${weekNumber}`,\n labelYearDropdown: \"Choose the Year\",\n labelGrid: (date, options, dateLib) => {\n let formatDate;\n if (dateLib && typeof dateLib.format === \"function\") {\n formatDate = dateLib.format.bind(dateLib);\n }\n else {\n formatDate = (d, pattern) => format(d, pattern, { locale: dateFnsEnUS, ...options });\n }\n return formatDate(date, \"LLLL yyyy\");\n },\n labelGridcell: (date, modifiers, options, dateLib) => {\n let formatDate;\n if (dateLib && typeof dateLib.format === \"function\") {\n formatDate = dateLib.format.bind(dateLib);\n }\n else {\n formatDate = (d, pattern) => format(d, pattern, { locale: dateFnsEnUS, ...options });\n }\n let label = formatDate(date, \"PPPP\");\n if (modifiers?.today) {\n label = `Today, ${label}`;\n }\n return label;\n },\n labelNav: \"Navigation bar\",\n labelWeekNumberHeader: \"Week Number\",\n labelWeekday: (date, options, dateLib) => {\n let formatDate;\n if (dateLib && typeof dateLib.format === \"function\") {\n formatDate = dateLib.format.bind(dateLib);\n }\n else {\n formatDate = (d, pattern) => format(d, pattern, { locale: dateFnsEnUS, ...options });\n }\n return formatDate(date, \"cccc\");\n },\n },\n};\n","import { TZDate } from \"@date-fns/tz\";\nimport { addDays, addMonths, addWeeks, addYears, differenceInCalendarDays, differenceInCalendarMonths, eachMonthOfInterval, eachYearOfInterval, endOfISOWeek, endOfMonth, endOfWeek, endOfYear, format, getISOWeek, getMonth, getWeek, getYear, isAfter, isBefore, isDate, isSameDay, isSameMonth, isSameYear, max, min, setMonth, setYear, startOfDay, startOfISOWeek, startOfMonth, startOfWeek, startOfYear, } from \"date-fns\";\nimport { endOfBroadcastWeek } from \"../helpers/endOfBroadcastWeek.js\";\nimport { startOfBroadcastWeek } from \"../helpers/startOfBroadcastWeek.js\";\nimport { enUS } from \"../locale/en-US.js\";\n/**\n * A wrapper class around [date-fns](http://date-fns.org) that provides utility\n * methods for date manipulation and formatting.\n *\n * @since 9.2.0\n * @example\n * const dateLib = new DateLib({ locale: es });\n * const newDate = dateLib.addDays(new Date(), 5);\n */\nexport class DateLib {\n /**\n * Creates an instance of `DateLib`.\n *\n * @param options Configuration options for the date library.\n * @param overrides Custom overrides for the date library functions.\n */\n constructor(options, overrides) {\n /**\n * Reference to the built-in Date constructor.\n *\n * @deprecated Use `newDate()` or `today()`.\n */\n this.Date = Date;\n /**\n * Creates a new `Date` object representing today's date.\n *\n * @since 9.5.0\n * @returns A `Date` object for today's date.\n */\n this.today = () => {\n if (this.overrides?.today) {\n return this.overrides.today();\n }\n if (this.options.timeZone) {\n return TZDate.tz(this.options.timeZone);\n }\n return new this.Date();\n };\n /**\n * Creates a new `Date` object with the specified year, month, and day.\n *\n * @since 9.5.0\n * @param year The year.\n * @param monthIndex The month (0-11).\n * @param date The day of the month.\n * @returns A new `Date` object.\n */\n this.newDate = (year, monthIndex, date) => {\n if (this.overrides?.newDate) {\n return this.overrides.newDate(year, monthIndex, date);\n }\n if (this.options.timeZone) {\n return new TZDate(year, monthIndex, date, this.options.timeZone);\n }\n return new Date(year, monthIndex, date);\n };\n /**\n * Adds the specified number of days to the given date.\n *\n * @param date The date to add days to.\n * @param amount The number of days to add.\n * @returns The new date with the days added.\n */\n this.addDays = (date, amount) => {\n return this.overrides?.addDays\n ? this.overrides.addDays(date, amount)\n : addDays(date, amount);\n };\n /**\n * Adds the specified number of months to the given date.\n *\n * @param date The date to add months to.\n * @param amount The number of months to add.\n * @returns The new date with the months added.\n */\n this.addMonths = (date, amount) => {\n return this.overrides?.addMonths\n ? this.overrides.addMonths(date, amount)\n : addMonths(date, amount);\n };\n /**\n * Adds the specified number of weeks to the given date.\n *\n * @param date The date to add weeks to.\n * @param amount The number of weeks to add.\n * @returns The new date with the weeks added.\n */\n this.addWeeks = (date, amount) => {\n return this.overrides?.addWeeks\n ? this.overrides.addWeeks(date, amount)\n : addWeeks(date, amount);\n };\n /**\n * Adds the specified number of years to the given date.\n *\n * @param date The date to add years to.\n * @param amount The number of years to add.\n * @returns The new date with the years added.\n */\n this.addYears = (date, amount) => {\n return this.overrides?.addYears\n ? this.overrides.addYears(date, amount)\n : addYears(date, amount);\n };\n /**\n * Returns the number of calendar days between the given dates.\n *\n * @param dateLeft The later date.\n * @param dateRight The earlier date.\n * @returns The number of calendar days between the dates.\n */\n this.differenceInCalendarDays = (dateLeft, dateRight) => {\n return this.overrides?.differenceInCalendarDays\n ? this.overrides.differenceInCalendarDays(dateLeft, dateRight)\n : differenceInCalendarDays(dateLeft, dateRight);\n };\n /**\n * Returns the number of calendar months between the given dates.\n *\n * @param dateLeft The later date.\n * @param dateRight The earlier date.\n * @returns The number of calendar months between the dates.\n */\n this.differenceInCalendarMonths = (dateLeft, dateRight) => {\n return this.overrides?.differenceInCalendarMonths\n ? this.overrides.differenceInCalendarMonths(dateLeft, dateRight)\n : differenceInCalendarMonths(dateLeft, dateRight);\n };\n /**\n * Returns the months between the given dates.\n *\n * @param interval The interval to get the months for.\n */\n this.eachMonthOfInterval = (interval) => {\n return this.overrides?.eachMonthOfInterval\n ? this.overrides.eachMonthOfInterval(interval)\n : eachMonthOfInterval(interval);\n };\n /**\n * Returns the years between the given dates.\n *\n * @since 9.11.1\n * @param interval The interval to get the years for.\n * @returns The array of years in the interval.\n */\n this.eachYearOfInterval = (interval) => {\n const years = this.overrides?.eachYearOfInterval\n ? this.overrides.eachYearOfInterval(interval)\n : eachYearOfInterval(interval);\n // Remove duplicates that may happen across DST transitions (e.g., \"America/Sao_Paulo\")\n // See https://github.com/date-fns/tz/issues/72\n const uniqueYears = new Set(years.map((d) => this.getYear(d)));\n if (uniqueYears.size === years.length) {\n // No duplicates, return as is\n return years;\n }\n // Rebuild the array to ensure one date per year\n const yearsArray = [];\n uniqueYears.forEach((y) => {\n yearsArray.push(new Date(y, 0, 1));\n });\n return yearsArray;\n };\n /**\n * Returns the end of the broadcast week for the given date.\n *\n * @param date The original date.\n * @returns The end of the broadcast week.\n */\n this.endOfBroadcastWeek = (date) => {\n return this.overrides?.endOfBroadcastWeek\n ? this.overrides.endOfBroadcastWeek(date)\n : endOfBroadcastWeek(date, this);\n };\n /**\n * Returns the end of the ISO week for the given date.\n *\n * @param date The original date.\n * @returns The end of the ISO week.\n */\n this.endOfISOWeek = (date) => {\n return this.overrides?.endOfISOWeek\n ? this.overrides.endOfISOWeek(date)\n : endOfISOWeek(date);\n };\n /**\n * Returns the end of the month for the given date.\n *\n * @param date The original date.\n * @returns The end of the month.\n */\n this.endOfMonth = (date) => {\n return this.overrides?.endOfMonth\n ? this.overrides.endOfMonth(date)\n : endOfMonth(date);\n };\n /**\n * Returns the end of the week for the given date.\n *\n * @param date The original date.\n * @returns The end of the week.\n */\n this.endOfWeek = (date, options) => {\n return this.overrides?.endOfWeek\n ? this.overrides.endOfWeek(date, options)\n : endOfWeek(date, this.options);\n };\n /**\n * Returns the end of the year for the given date.\n *\n * @param date The original date.\n * @returns The end of the year.\n */\n this.endOfYear = (date) => {\n return this.overrides?.endOfYear\n ? this.overrides.endOfYear(date)\n : endOfYear(date);\n };\n /**\n * Formats the given date using the specified format string.\n *\n * @param date The date to format.\n * @param formatStr The format string.\n * @returns The formatted date string.\n */\n this.format = (date, formatStr, _options) => {\n const formatted = this.overrides?.format\n ? this.overrides.format(date, formatStr, this.options)\n : format(date, formatStr, this.options);\n if (this.options.numerals && this.options.numerals !== \"latn\") {\n return this.replaceDigits(formatted);\n }\n return formatted;\n };\n /**\n * Returns the ISO week number for the given date.\n *\n * @param date The date to get the ISO week number for.\n * @returns The ISO week number.\n */\n this.getISOWeek = (date) => {\n return this.overrides?.getISOWeek\n ? this.overrides.getISOWeek(date)\n : getISOWeek(date);\n };\n /**\n * Returns the month of the given date.\n *\n * @param date The date to get the month for.\n * @returns The month.\n */\n this.getMonth = (date, _options) => {\n return this.overrides?.getMonth\n ? this.overrides.getMonth(date, this.options)\n : getMonth(date, this.options);\n };\n /**\n * Returns the year of the given date.\n *\n * @param date The date to get the year for.\n * @returns The year.\n */\n this.getYear = (date, _options) => {\n return this.overrides?.getYear\n ? this.overrides.getYear(date, this.options)\n : getYear(date, this.options);\n };\n /**\n * Returns the local week number for the given date.\n *\n * @param date The date to get the week number for.\n * @returns The week number.\n */\n this.getWeek = (date, _options) => {\n return this.overrides?.getWeek\n ? this.overrides.getWeek(date, this.options)\n : getWeek(date, this.options);\n };\n /**\n * Checks if the first date is after the second date.\n *\n * @param date The date to compare.\n * @param dateToCompare The date to compare with.\n * @returns True if the first date is after the second date.\n */\n this.isAfter = (date, dateToCompare) => {\n return this.overrides?.isAfter\n ? this.overrides.isAfter(date, dateToCompare)\n : isAfter(date, dateToCompare);\n };\n /**\n * Checks if the first date is before the second date.\n *\n * @param date The date to compare.\n * @param dateToCompare The date to compare with.\n * @returns True if the first date is before the second date.\n */\n this.isBefore = (date, dateToCompare) => {\n return this.overrides?.isBefore\n ? this.overrides.isBefore(date, dateToCompare)\n : isBefore(date, dateToCompare);\n };\n /**\n * Checks if the given value is a Date object.\n *\n * @param value The value to check.\n * @returns True if the value is a Date object.\n */\n this.isDate = (value) => {\n return this.overrides?.isDate\n ? this.overrides.isDate(value)\n : isDate(value);\n };\n /**\n * Checks if the given dates are on the same day.\n *\n * @param dateLeft The first date to compare.\n * @param dateRight The second date to compare.\n * @returns True if the dates are on the same day.\n */\n this.isSameDay = (dateLeft, dateRight) => {\n return this.overrides?.isSameDay\n ? this.overrides.isSameDay(dateLeft, dateRight)\n : isSameDay(dateLeft, dateRight);\n };\n /**\n * Checks if the given dates are in the same month.\n *\n * @param dateLeft The first date to compare.\n * @param dateRight The second date to compare.\n * @returns True if the dates are in the same month.\n */\n this.isSameMonth = (dateLeft, dateRight) => {\n return this.overrides?.isSameMonth\n ? this.overrides.isSameMonth(dateLeft, dateRight)\n : isSameMonth(dateLeft, dateRight);\n };\n /**\n * Checks if the given dates are in the same year.\n *\n * @param dateLeft The first date to compare.\n * @param dateRight The second date to compare.\n * @returns True if the dates are in the same year.\n */\n this.isSameYear = (dateLeft, dateRight) => {\n return this.overrides?.isSameYear\n ? this.overrides.isSameYear(dateLeft, dateRight)\n : isSameYear(dateLeft, dateRight);\n };\n /**\n * Returns the latest date in the given array of dates.\n *\n * @param dates The array of dates to compare.\n * @returns The latest date.\n */\n this.max = (dates) => {\n return this.overrides?.max ? this.overrides.max(dates) : max(dates);\n };\n /**\n * Returns the earliest date in the given array of dates.\n *\n * @param dates The array of dates to compare.\n * @returns The earliest date.\n */\n this.min = (dates) => {\n return this.overrides?.min ? this.overrides.min(dates) : min(dates);\n };\n /**\n * Sets the month of the given date.\n *\n * @param date The date to set the month on.\n * @param month The month to set (0-11).\n * @returns The new date with the month set.\n */\n this.setMonth = (date, month) => {\n return this.overrides?.setMonth\n ? this.overrides.setMonth(date, month)\n : setMonth(date, month);\n };\n /**\n * Sets the year of the given date.\n *\n * @param date The date to set the year on.\n * @param year The year to set.\n * @returns The new date with the year set.\n */\n this.setYear = (date, year) => {\n return this.overrides?.setYear\n ? this.overrides.setYear(date, year)\n : setYear(date, year);\n };\n /**\n * Returns the start of the broadcast week for the given date.\n *\n * @param date The original date.\n * @returns The start of the broadcast week.\n */\n this.startOfBroadcastWeek = (date, _dateLib) => {\n return this.overrides?.startOfBroadcastWeek\n ? this.overrides.startOfBroadcastWeek(date, this)\n : startOfBroadcastWeek(date, this);\n };\n /**\n * Returns the start of the day for the given date.\n *\n * @param date The original date.\n * @returns The start of the day.\n */\n this.startOfDay = (date) => {\n return this.overrides?.startOfDay\n ? this.overrides.startOfDay(date)\n : startOfDay(date);\n };\n /**\n * Returns the start of the ISO week for the given date.\n *\n * @param date The original date.\n * @returns The start of the ISO week.\n */\n this.startOfISOWeek = (date) => {\n return this.overrides?.startOfISOWeek\n ? this.overrides.startOfISOWeek(date)\n : startOfISOWeek(date);\n };\n /**\n * Returns the start of the month for the given date.\n *\n * @param date The original date.\n * @returns The start of the month.\n */\n this.startOfMonth = (date) => {\n return this.overrides?.startOfMonth\n ? this.overrides.startOfMonth(date)\n : startOfMonth(date);\n };\n /**\n * Returns the start of the week for the given date.\n *\n * @param date The original date.\n * @returns The start of the week.\n */\n this.startOfWeek = (date, _options) => {\n return this.overrides?.startOfWeek\n ? this.overrides.startOfWeek(date, this.options)\n : startOfWeek(date, this.options);\n };\n /**\n * Returns the start of the year for the given date.\n *\n * @param date The original date.\n * @returns The start of the year.\n */\n this.startOfYear = (date) => {\n return this.overrides?.startOfYear\n ? this.overrides.startOfYear(date)\n : startOfYear(date);\n };\n this.options = { locale: enUS, ...options };\n this.overrides = overrides;\n }\n /**\n * Generates a mapping of Arabic digits (0-9) to the target numbering system\n * digits.\n *\n * @since 9.5.0\n * @returns A record mapping Arabic digits to the target numerals.\n */\n getDigitMap() {\n const { numerals = \"latn\" } = this.options;\n // Use Intl.NumberFormat to create a formatter with the specified numbering system\n const formatter = new Intl.NumberFormat(\"en-US\", {\n numberingSystem: numerals,\n });\n // Map Arabic digits (0-9) to the target numerals\n const digitMap = {};\n for (let i = 0; i < 10; i++) {\n digitMap[i.toString()] = formatter.format(i);\n }\n return digitMap;\n }\n /**\n * Replaces Arabic digits in a string with the target numbering system digits.\n *\n * @since 9.5.0\n * @param input The string containing Arabic digits.\n * @returns The string with digits replaced.\n */\n replaceDigits(input) {\n const digitMap = this.getDigitMap();\n return input.replace(/\\d/g, (digit) => digitMap[digit] || digit);\n }\n /**\n * Formats a number using the configured numbering system.\n *\n * @since 9.5.0\n * @param value The number to format.\n * @returns The formatted number as a string.\n */\n formatNumber(value) {\n return this.replaceDigits(value.toString());\n }\n /**\n * Returns the preferred ordering for month and year labels for the current\n * locale.\n */\n getMonthYearOrder() {\n const code = this.options.locale?.code;\n if (!code) {\n return \"month-first\";\n }\n return DateLib.yearFirstLocales.has(code) ? \"year-first\" : \"month-first\";\n }\n /**\n * Formats the month/year pair respecting locale conventions.\n *\n * @since 9.11.0\n */\n formatMonthYear(date) {\n const { locale, timeZone, numerals } = this.options;\n const localeCode = locale?.code;\n if (localeCode && DateLib.yearFirstLocales.has(localeCode)) {\n try {\n const intl = new Intl.DateTimeFormat(localeCode, {\n month: \"long\",\n year: \"numeric\",\n timeZone,\n numberingSystem: numerals,\n });\n const formatted = intl.format(date);\n return formatted;\n }\n catch {\n // Fallback to date-fns formatting below.\n }\n }\n const pattern = this.getMonthYearOrder() === \"year-first\" ? \"y LLLL\" : \"LLLL y\";\n return this.format(date, pattern);\n }\n}\nDateLib.yearFirstLocales = new Set([\n \"eu\",\n \"hu\",\n \"ja\",\n \"ja-Hira\",\n \"ja-JP\",\n \"ko\",\n \"ko-KR\",\n \"lt\",\n \"lt-LT\",\n \"lv\",\n \"lv-LV\",\n \"mn\",\n \"mn-MN\",\n \"zh\",\n \"zh-CN\",\n \"zh-HK\",\n \"zh-TW\",\n]);\n/** The default locale (English). */\nexport { enUS as defaultLocale } from \"../locale/en-US.js\";\n/**\n * The default date library with English locale.\n *\n * @since 9.2.0\n */\nexport const defaultDateLib = new DateLib();\n/**\n * @ignore\n * @deprecated Use `defaultDateLib`.\n */\nexport const dateLib = defaultDateLib;\n","import { defaultDateLib } from \"./DateLib.js\";\n/**\n * Represents a day displayed in the calendar.\n *\n * In DayPicker, a `CalendarDay` is a wrapper around a `Date` object that\n * provides additional information about the day, such as whether it belongs to\n * the displayed month.\n */\nexport class CalendarDay {\n constructor(date, displayMonth, dateLib = defaultDateLib) {\n this.date = date;\n this.displayMonth = displayMonth;\n this.outside = Boolean(displayMonth && !dateLib.isSameMonth(date, displayMonth));\n this.dateLib = dateLib;\n this.isoDate = dateLib.format(date, \"yyyy-MM-dd\");\n this.displayMonthId = dateLib.format(displayMonth, \"yyyy-MM\");\n this.dateMonthId = dateLib.format(date, \"yyyy-MM\");\n }\n /**\n * Checks if this day is equal to another `CalendarDay`, considering both the\n * date and the displayed month.\n *\n * @param day The `CalendarDay` to compare with.\n * @returns `true` if the days are equal, otherwise `false`.\n */\n isEqualTo(day) {\n return (this.dateLib.isSameDay(day.date, this.date) &&\n this.dateLib.isSameMonth(day.displayMonth, this.displayMonth));\n }\n}\n","/**\n * Represents a month in a calendar year.\n *\n * A `CalendarMonth` contains the weeks within the month and the date of the\n * month.\n */\nexport class CalendarMonth {\n constructor(month, weeks) {\n this.date = month;\n this.weeks = weeks;\n }\n}\n","/**\n * Represents a week in a calendar month.\n *\n * A `CalendarWeek` contains the days within the week and the week number.\n */\nexport class CalendarWeek {\n constructor(weekNumber, days) {\n this.days = days;\n this.weekNumber = weekNumber;\n }\n}\n","import React from \"react\";\n/**\n * Render the button elements in the calendar.\n *\n * @private\n * @deprecated Use `PreviousMonthButton` or `@link NextMonthButton` instead.\n */\nexport function Button(props) {\n return React.createElement(\"button\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the label in the month caption.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function CaptionLabel(props) {\n return React.createElement(\"span\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the chevron icon used in the navigation buttons and dropdowns.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Chevron(props) {\n const { size = 24, orientation = \"left\", className } = props;\n return (\n // biome-ignore lint/a11y/noSvgWithoutTitle: handled by the parent component\n React.createElement(\"svg\", { className: className, width: size, height: size, viewBox: \"0 0 24 24\" },\n orientation === \"up\" && (React.createElement(\"polygon\", { points: \"6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28\" })),\n orientation === \"down\" && (React.createElement(\"polygon\", { points: \"6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72\" })),\n orientation === \"left\" && (React.createElement(\"polygon\", { points: \"16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20\" })),\n orientation === \"right\" && (React.createElement(\"polygon\", { points: \"8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20\" }))));\n}\n","import React from \"react\";\n/**\n * Render a grid cell for a specific day in the calendar.\n *\n * Handles interaction and focus for the day. If you only need to change the\n * content of the day cell, consider swapping the `DayButton` component\n * instead.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Day(props) {\n const { day, modifiers, ...tdProps } = props;\n return React.createElement(\"td\", { ...tdProps });\n}\n","import React from \"react\";\n/**\n * Render a button for a specific day in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function DayButton(props) {\n const { day, modifiers, ...buttonProps } = props;\n const ref = React.useRef(null);\n React.useEffect(() => {\n if (modifiers.focused)\n ref.current?.focus();\n }, [modifiers.focused]);\n return React.createElement(\"button\", { ref: ref, ...buttonProps });\n}\n","/**\n * Enum representing the UI elements composing DayPicker. These elements are\n * mapped to {@link CustomComponents}, {@link ClassNames}, and {@link Styles}.\n *\n * Some elements are extended by flags and modifiers.\n */\nexport var UI;\n(function (UI) {\n /** The root component displaying the months and the navigation bar. */\n UI[\"Root\"] = \"root\";\n /** The Chevron SVG element used by navigation buttons and dropdowns. */\n UI[\"Chevron\"] = \"chevron\";\n /**\n * The grid cell with the day's date. Extended by {@link DayFlag} and\n * {@link SelectionState}.\n */\n UI[\"Day\"] = \"day\";\n /** The button containing the formatted day's date, inside the grid cell. */\n UI[\"DayButton\"] = \"day_button\";\n /** The caption label of the month (when not showing the dropdown navigation). */\n UI[\"CaptionLabel\"] = \"caption_label\";\n /** The container of the dropdown navigation (when enabled). */\n UI[\"Dropdowns\"] = \"dropdowns\";\n /** The dropdown element to select for years and months. */\n UI[\"Dropdown\"] = \"dropdown\";\n /** The container element of the dropdown. */\n UI[\"DropdownRoot\"] = \"dropdown_root\";\n /** The root element of the footer. */\n UI[\"Footer\"] = \"footer\";\n /** The month grid. */\n UI[\"MonthGrid\"] = \"month_grid\";\n /** Contains the dropdown navigation or the caption label. */\n UI[\"MonthCaption\"] = \"month_caption\";\n /** The dropdown with the months. */\n UI[\"MonthsDropdown\"] = \"months_dropdown\";\n /** Wrapper of the month grid. */\n UI[\"Month\"] = \"month\";\n /** The container of the displayed months. */\n UI[\"Months\"] = \"months\";\n /** The navigation bar with the previous and next buttons. */\n UI[\"Nav\"] = \"nav\";\n /**\n * The next month button in the navigation. *\n *\n * @since 9.1.0\n */\n UI[\"NextMonthButton\"] = \"button_next\";\n /**\n * The previous month button in the navigation.\n *\n * @since 9.1.0\n */\n UI[\"PreviousMonthButton\"] = \"button_previous\";\n /** The row containing the week. */\n UI[\"Week\"] = \"week\";\n /** The group of row weeks in a month (`tbody`). */\n UI[\"Weeks\"] = \"weeks\";\n /** The column header with the weekday. */\n UI[\"Weekday\"] = \"weekday\";\n /** The row grouping the weekdays in the column headers. */\n UI[\"Weekdays\"] = \"weekdays\";\n /** The cell containing the week number. */\n UI[\"WeekNumber\"] = \"week_number\";\n /** The cell header of the week numbers column. */\n UI[\"WeekNumberHeader\"] = \"week_number_header\";\n /** The dropdown with the years. */\n UI[\"YearsDropdown\"] = \"years_dropdown\";\n})(UI || (UI = {}));\n/** Enum representing flags for the {@link UI | UI.Day} element. */\nexport var DayFlag;\n(function (DayFlag) {\n /** The day is disabled. */\n DayFlag[\"disabled\"] = \"disabled\";\n /** The day is hidden. */\n DayFlag[\"hidden\"] = \"hidden\";\n /** The day is outside the current month. */\n DayFlag[\"outside\"] = \"outside\";\n /** The day is focused. */\n DayFlag[\"focused\"] = \"focused\";\n /** The day is today. */\n DayFlag[\"today\"] = \"today\";\n})(DayFlag || (DayFlag = {}));\n/**\n * Enum representing selection states that can be applied to the {@link UI | UI.Day}\n * element in selection mode.\n */\nexport var SelectionState;\n(function (SelectionState) {\n /** The day is at the end of a selected range. */\n SelectionState[\"range_end\"] = \"range_end\";\n /** The day is at the middle of a selected range. */\n SelectionState[\"range_middle\"] = \"range_middle\";\n /** The day is at the start of a selected range. */\n SelectionState[\"range_start\"] = \"range_start\";\n /** The day is selected. */\n SelectionState[\"selected\"] = \"selected\";\n})(SelectionState || (SelectionState = {}));\n/**\n * Enum representing different animation states for transitioning between\n * months.\n */\nexport var Animation;\n(function (Animation) {\n /** The entering weeks when they appear before the exiting month. */\n Animation[\"weeks_before_enter\"] = \"weeks_before_enter\";\n /** The exiting weeks when they disappear before the entering month. */\n Animation[\"weeks_before_exit\"] = \"weeks_before_exit\";\n /** The entering weeks when they appear after the exiting month. */\n Animation[\"weeks_after_enter\"] = \"weeks_after_enter\";\n /** The exiting weeks when they disappear after the entering month. */\n Animation[\"weeks_after_exit\"] = \"weeks_after_exit\";\n /** The entering caption when it appears after the exiting month. */\n Animation[\"caption_after_enter\"] = \"caption_after_enter\";\n /** The exiting caption when it disappears after the entering month. */\n Animation[\"caption_after_exit\"] = \"caption_after_exit\";\n /** The entering caption when it appears before the exiting month. */\n Animation[\"caption_before_enter\"] = \"caption_before_enter\";\n /** The exiting caption when it disappears before the entering month. */\n Animation[\"caption_before_exit\"] = \"caption_before_exit\";\n})(Animation || (Animation = {}));\n","import React from \"react\";\nimport { UI } from \"../UI.js\";\n/**\n * Render a dropdown component for navigation in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Dropdown(props) {\n const { options, className, components, classNames, ...selectProps } = props;\n const cssClassSelect = [classNames[UI.Dropdown], className].join(\" \");\n const selectedOption = options?.find(({ value }) => value === selectProps.value);\n return (React.createElement(\"span\", { \"data-disabled\": selectProps.disabled, className: classNames[UI.DropdownRoot] },\n React.createElement(components.Select, { className: cssClassSelect, ...selectProps }, options?.map(({ value, label, disabled }) => (React.createElement(components.Option, { key: value, value: value, disabled: disabled }, label)))),\n React.createElement(\"span\", { className: classNames[UI.CaptionLabel], \"aria-hidden\": true },\n selectedOption?.label,\n React.createElement(components.Chevron, { orientation: \"down\", size: 18, className: classNames[UI.Chevron] }))));\n}\n","import React from \"react\";\n/**\n * Render the navigation dropdowns for the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function DropdownNav(props) {\n return React.createElement(\"div\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the footer of the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Footer(props) {\n return React.createElement(\"div\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the grid with the weekday header row and the weeks for a specific\n * month.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Month(props) {\n const { calendarMonth, displayIndex, ...divProps } = props;\n return React.createElement(\"div\", { ...divProps }, props.children);\n}\n","import React from \"react\";\n/**\n * Render the caption for a month in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthCaption(props) {\n const { calendarMonth, displayIndex, ...divProps } = props;\n return React.createElement(\"div\", { ...divProps });\n}\n","import React from \"react\";\n/**\n * Render the grid of days for a specific month.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthGrid(props) {\n return React.createElement(\"table\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render a container wrapping the month grids.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Months(props) {\n return React.createElement(\"div\", { ...props });\n}\n","import { createContext, useContext } from \"react\";\n/** @ignore */\nexport const dayPickerContext = createContext(undefined);\n/**\n * Provides access to the DayPicker context, which includes properties and\n * methods to interact with the DayPicker component. This hook must be used\n * within a custom component.\n *\n * @template T - Use this type to refine the returned context type with a\n * specific selection mode.\n * @returns The context to work with DayPicker.\n * @throws {Error} If the hook is used outside of a DayPicker provider.\n * @group Hooks\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function useDayPicker() {\n const context = useContext(dayPickerContext);\n if (context === undefined) {\n throw new Error(\"useDayPicker() must be used within a custom component.\");\n }\n return context;\n}\n","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render a dropdown to navigate between months in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthsDropdown(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Dropdown, { ...props });\n}\n","import React, { useCallback, } from \"react\";\nimport { UI } from \"../UI.js\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the navigation toolbar with buttons to navigate between months.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Nav(props) {\n const { onPreviousClick, onNextClick, previousMonth, nextMonth, ...navProps } = props;\n const { components, classNames, labels: { labelPrevious, labelNext }, } = useDayPicker();\n const handleNextClick = useCallback((e) => {\n if (nextMonth) {\n onNextClick?.(e);\n }\n }, [nextMonth, onNextClick]);\n const handlePreviousClick = useCallback((e) => {\n if (previousMonth) {\n onPreviousClick?.(e);\n }\n }, [previousMonth, onPreviousClick]);\n return (React.createElement(\"nav\", { ...navProps },\n React.createElement(components.PreviousMonthButton, { type: \"button\", className: classNames[UI.PreviousMonthButton], tabIndex: previousMonth ? undefined : -1, \"aria-disabled\": previousMonth ? undefined : true, \"aria-label\": labelPrevious(previousMonth), onClick: handlePreviousClick },\n React.createElement(components.Chevron, { disabled: previousMonth ? undefined : true, className: classNames[UI.Chevron], orientation: \"left\" })),\n React.createElement(components.NextMonthButton, { type: \"button\", className: classNames[UI.NextMonthButton], tabIndex: nextMonth ? undefined : -1, \"aria-disabled\": nextMonth ? undefined : true, \"aria-label\": labelNext(nextMonth), onClick: handleNextClick },\n React.createElement(components.Chevron, { disabled: nextMonth ? undefined : true, orientation: \"right\", className: classNames[UI.Chevron] }))));\n}\n","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the button to navigate to the next month in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function NextMonthButton(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Button, { ...props });\n}\n","import React from \"react\";\n/**\n * Render an `option` element.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Option(props) {\n return React.createElement(\"option\", { ...props });\n}\n","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the button to navigate to the previous month in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function PreviousMonthButton(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Button, { ...props });\n}\n","import React from \"react\";\n/**\n * Render the root element of the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Root(props) {\n const { rootRef, ...rest } = props;\n return React.createElement(\"div\", { ...rest, ref: rootRef });\n}\n","import React from \"react\";\n/**\n * Render a `select` element.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Select(props) {\n return React.createElement(\"select\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render a table row representing a week in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Week(props) {\n const { week, ...trProps } = props;\n return React.createElement(\"tr\", { ...trProps });\n}\n","import React from \"react\";\n/**\n * Render a table header cell with the name of a weekday (e.g., \"Mo\", \"Tu\").\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weekday(props) {\n return React.createElement(\"th\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the table row containing the weekday names.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weekdays(props) {\n return (React.createElement(\"thead\", { \"aria-hidden\": true },\n React.createElement(\"tr\", { ...props })));\n}\n","import React from \"react\";\n/**\n * Render a table cell displaying the number of the week.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function WeekNumber(props) {\n const { week, ...thProps } = props;\n return React.createElement(\"th\", { ...thProps });\n}\n","import React from \"react\";\n/**\n * Render the header cell for the week numbers column.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function WeekNumberHeader(props) {\n return React.createElement(\"th\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the container for the weeks in the month grid.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weeks(props) {\n return React.createElement(\"tbody\", { ...props });\n}\n","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render a dropdown to navigate between years in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function YearsDropdown(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Dropdown, { ...props });\n}\n","import { defaultDateLib } from \"../classes/index.js\";\n/**\n * Checks if a given date is within a specified date range.\n *\n * @since 9.0.0\n * @param range - The date range to check against.\n * @param date - The date to check.\n * @param excludeEnds - If `true`, the range's start and end dates are excluded.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the date is within the range, otherwise `false`.\n * @group Utilities\n */\nexport function rangeIncludesDate(range, date, excludeEnds = false, dateLib = defaultDateLib) {\n let { from, to } = range;\n const { differenceInCalendarDays, isSameDay } = dateLib;\n if (from && to) {\n const isRangeInverted = differenceInCalendarDays(to, from) < 0;\n if (isRangeInverted) {\n [from, to] = [to, from];\n }\n const isInRange = differenceInCalendarDays(date, from) >= (excludeEnds ? 1 : 0) &&\n differenceInCalendarDays(to, date) >= (excludeEnds ? 1 : 0);\n return isInRange;\n }\n if (!excludeEnds && to) {\n return isSameDay(to, date);\n }\n if (!excludeEnds && from) {\n return isSameDay(from, date);\n }\n return false;\n}\n/**\n * @private\n * @deprecated Use {@link rangeIncludesDate} instead.\n */\nexport const isDateInRange = (range, date) => rangeIncludesDate(range, date, false, defaultDateLib);\n","/**\n * Checks if the given value is of type {@link DateInterval}.\n *\n * @param matcher - The value to check.\n * @returns `true` if the value is a {@link DateInterval}, otherwise `false`.\n * @group Utilities\n */\nexport function isDateInterval(matcher) {\n return Boolean(matcher &&\n typeof matcher === \"object\" &&\n \"before\" in matcher &&\n \"after\" in matcher);\n}\n/**\n * Checks if the given value is of type {@link DateRange}.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a {@link DateRange}, otherwise `false`.\n * @group Utilities\n */\nexport function isDateRange(value) {\n return Boolean(value && typeof value === \"object\" && \"from\" in value);\n}\n/**\n * Checks if the given value is of type {@link DateAfter}.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a {@link DateAfter}, otherwise `false`.\n * @group Utilities\n */\nexport function isDateAfterType(value) {\n return Boolean(value && typeof value === \"object\" && \"after\" in value);\n}\n/**\n * Checks if the given value is of type {@link DateBefore}.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a {@link DateBefore}, otherwise `false`.\n * @group Utilities\n */\nexport function isDateBeforeType(value) {\n return Boolean(value && typeof value === \"object\" && \"before\" in value);\n}\n/**\n * Checks if the given value is of type {@link DayOfWeek}.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a {@link DayOfWeek}, otherwise `false`.\n * @group Utilities\n */\nexport function isDayOfWeekType(value) {\n return Boolean(value && typeof value === \"object\" && \"dayOfWeek\" in value);\n}\n/**\n * Checks if the given value is an array of valid dates.\n *\n * @private\n * @param value - The value to check.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the value is an array of valid dates, otherwise `false`.\n */\nexport function isDatesArray(value, dateLib) {\n return Array.isArray(value) && value.every(dateLib.isDate);\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\nimport { isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, isDatesArray, isDayOfWeekType, } from \"./typeguards.js\";\n/**\n * Checks if a given date matches at least one of the specified {@link Matcher}.\n *\n * @param date - The date to check.\n * @param matchers - The matchers to check against.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the date matches any of the matchers, otherwise `false`.\n * @group Utilities\n */\nexport function dateMatchModifiers(date, matchers, dateLib = defaultDateLib) {\n const matchersArr = !Array.isArray(matchers) ? [matchers] : matchers;\n const { isSameDay, differenceInCalendarDays, isAfter } = dateLib;\n return matchersArr.some((matcher) => {\n if (typeof matcher === \"boolean\") {\n return matcher;\n }\n if (dateLib.isDate(matcher)) {\n return isSameDay(date, matcher);\n }\n if (isDatesArray(matcher, dateLib)) {\n return matcher.some((matcherDate) => isSameDay(date, matcherDate));\n }\n if (isDateRange(matcher)) {\n return rangeIncludesDate(matcher, date, false, dateLib);\n }\n if (isDayOfWeekType(matcher)) {\n if (!Array.isArray(matcher.dayOfWeek)) {\n return matcher.dayOfWeek === date.getDay();\n }\n return matcher.dayOfWeek.includes(date.getDay());\n }\n if (isDateInterval(matcher)) {\n const diffBefore = differenceInCalendarDays(matcher.before, date);\n const diffAfter = differenceInCalendarDays(matcher.after, date);\n const isDayBefore = diffBefore > 0;\n const isDayAfter = diffAfter < 0;\n const isClosedInterval = isAfter(matcher.before, matcher.after);\n if (isClosedInterval) {\n return isDayAfter && isDayBefore;\n }\n else {\n return isDayBefore || isDayAfter;\n }\n }\n if (isDateAfterType(matcher)) {\n return differenceInCalendarDays(date, matcher.after) > 0;\n }\n if (isDateBeforeType(matcher)) {\n return differenceInCalendarDays(matcher.before, date) > 0;\n }\n if (typeof matcher === \"function\") {\n return matcher(date);\n }\n return false;\n });\n}\n/**\n * @private\n * @deprecated Use {@link dateMatchModifiers} instead.\n */\nexport const isMatch = dateMatchModifiers;\n","import { DayFlag } from \"../UI.js\";\nimport { dateMatchModifiers } from \"../utils/dateMatchModifiers.js\";\n/**\n * Creates a function to retrieve the modifiers for a given day.\n *\n * This function calculates both internal and custom modifiers for each day\n * based on the provided calendar days and DayPicker props.\n *\n * @private\n * @param days The array of `CalendarDay` objects to process.\n * @param props The DayPicker props, including modifiers and configuration\n * options.\n * @param dateLib The date library to use for date manipulation.\n * @returns A function that retrieves the modifiers for a given `CalendarDay`.\n */\nexport function createGetModifiers(days, props, navStart, navEnd, dateLib) {\n const { disabled, hidden, modifiers, showOutsideDays, broadcastCalendar, today = dateLib.today(), } = props;\n const { isSameDay, isSameMonth, startOfMonth, isBefore, endOfMonth, isAfter, } = dateLib;\n const computedNavStart = navStart && startOfMonth(navStart);\n const computedNavEnd = navEnd && endOfMonth(navEnd);\n const internalModifiersMap = {\n [DayFlag.focused]: [],\n [DayFlag.outside]: [],\n [DayFlag.disabled]: [],\n [DayFlag.hidden]: [],\n [DayFlag.today]: [],\n };\n const customModifiersMap = {};\n for (const day of days) {\n const { date, displayMonth } = day;\n const isOutside = Boolean(displayMonth && !isSameMonth(date, displayMonth));\n const isBeforeNavStart = Boolean(computedNavStart && isBefore(date, computedNavStart));\n const isAfterNavEnd = Boolean(computedNavEnd && isAfter(date, computedNavEnd));\n const isDisabled = Boolean(disabled && dateMatchModifiers(date, disabled, dateLib));\n const isHidden = Boolean(hidden && dateMatchModifiers(date, hidden, dateLib)) ||\n isBeforeNavStart ||\n isAfterNavEnd ||\n // Broadcast calendar will show outside days as default\n (!broadcastCalendar && !showOutsideDays && isOutside) ||\n (broadcastCalendar && showOutsideDays === false && isOutside);\n const isToday = isSameDay(date, today);\n if (isOutside)\n internalModifiersMap.outside.push(day);\n if (isDisabled)\n internalModifiersMap.disabled.push(day);\n if (isHidden)\n internalModifiersMap.hidden.push(day);\n if (isToday)\n internalModifiersMap.today.push(day);\n // Add custom modifiers\n if (modifiers) {\n Object.keys(modifiers).forEach((name) => {\n const modifierValue = modifiers?.[name];\n const isMatch = modifierValue\n ? dateMatchModifiers(date, modifierValue, dateLib)\n : false;\n if (!isMatch)\n return;\n if (customModifiersMap[name]) {\n customModifiersMap[name].push(day);\n }\n else {\n customModifiersMap[name] = [day];\n }\n });\n }\n }\n return (day) => {\n // Initialize all the modifiers to false\n const dayFlags = {\n [DayFlag.focused]: false,\n [DayFlag.disabled]: false,\n [DayFlag.hidden]: false,\n [DayFlag.outside]: false,\n [DayFlag.today]: false,\n };\n const customModifiers = {};\n // Find the modifiers for the given day\n for (const name in internalModifiersMap) {\n const days = internalModifiersMap[name];\n dayFlags[name] = days.some((d) => d === day);\n }\n for (const name in customModifiersMap) {\n customModifiers[name] = customModifiersMap[name].some((d) => d === day);\n }\n return {\n ...dayFlags,\n // custom modifiers should override all the previous ones\n ...customModifiers,\n };\n };\n}\n","import { DayFlag, SelectionState, UI } from \"../UI.js\";\n/**\n * Returns the class names for a day based on its modifiers.\n *\n * This function combines the base class name for the day with any class names\n * associated with active modifiers.\n *\n * @param modifiers The modifiers applied to the day.\n * @param classNames The base class names for the calendar elements.\n * @param modifiersClassNames The class names associated with specific\n * modifiers.\n * @returns An array of class names for the day.\n */\nexport function getClassNamesForModifiers(modifiers, classNames, modifiersClassNames = {}) {\n const modifierClassNames = Object.entries(modifiers)\n .filter(([, active]) => active === true)\n .reduce((previousValue, [key]) => {\n if (modifiersClassNames[key]) {\n previousValue.push(modifiersClassNames[key]);\n }\n else if (classNames[DayFlag[key]]) {\n previousValue.push(classNames[DayFlag[key]]);\n }\n else if (classNames[SelectionState[key]]) {\n previousValue.push(classNames[SelectionState[key]]);\n }\n return previousValue;\n }, [classNames[UI.Day]]);\n return modifierClassNames;\n}\n","import * as components from \"../components/custom-components.js\";\n/**\n * Merges custom components from the props with the default components.\n *\n * This function ensures that any custom components provided in the props\n * override the default components.\n *\n * @param customComponents The custom components provided in the DayPicker\n * props.\n * @returns An object containing the merged components.\n */\nexport function getComponents(customComponents) {\n return {\n ...components,\n ...customComponents,\n };\n}\n","/**\n * Extracts `data-` attributes from the DayPicker props.\n *\n * This function collects all `data-` attributes from the props and adds\n * additional attributes based on the DayPicker configuration.\n *\n * @param props The DayPicker props.\n * @returns An object containing the `data-` attributes.\n */\nexport function getDataAttributes(props) {\n const dataAttributes = {\n \"data-mode\": props.mode ?? undefined,\n \"data-required\": \"required\" in props ? props.required : undefined,\n \"data-multiple-months\": (props.numberOfMonths && props.numberOfMonths > 1) || undefined,\n \"data-week-numbers\": props.showWeekNumber || undefined,\n \"data-broadcast-calendar\": props.broadcastCalendar || undefined,\n \"data-nav-layout\": props.navLayout || undefined,\n };\n Object.entries(props).forEach(([key, val]) => {\n if (key.startsWith(\"data-\")) {\n dataAttributes[key] = val;\n }\n });\n return dataAttributes;\n}\n","import { Animation, DayFlag, SelectionState, UI } from \"../UI.js\";\n/**\n * Returns the default class names for the UI elements.\n *\n * This function generates a mapping of default class names for various UI\n * elements, day flags, selection states, and animations.\n *\n * @returns An object containing the default class names.\n * @group Utilities\n */\nexport function getDefaultClassNames() {\n const classNames = {};\n for (const key in UI) {\n classNames[UI[key]] =\n `rdp-${UI[key]}`;\n }\n for (const key in DayFlag) {\n classNames[DayFlag[key]] =\n `rdp-${DayFlag[key]}`;\n }\n for (const key in SelectionState) {\n classNames[SelectionState[key]] =\n `rdp-${SelectionState[key]}`;\n }\n for (const key in Animation) {\n classNames[Animation[key]] =\n `rdp-${Animation[key]}`;\n }\n return classNames;\n}\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the caption of the month.\n *\n * @defaultValue Locale-specific month/year order (e.g., \"November 2022\").\n * @param month The date representing the month.\n * @param options Configuration options for the date library.\n * @param dateLib The date library to use for formatting. If not provided, a new\n * instance is created.\n * @returns The formatted caption as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatCaption(month, options, dateLib) {\n const lib = dateLib ?? new DateLib(options);\n return lib.formatMonthYear(month);\n}\n/**\n * @private\n * @deprecated Use {@link formatCaption} instead.\n * @group Formatters\n */\nexport const formatMonthCaption = formatCaption;\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the day date shown in the day cell.\n *\n * @defaultValue `d` (e.g., \"1\").\n * @param date The date to format.\n * @param options Configuration options for the date library.\n * @param dateLib The date library to use for formatting. If not provided, a new\n * instance is created.\n * @returns The formatted day as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatDay(date, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(date, \"d\");\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the month for the dropdown option label.\n *\n * @defaultValue The localized full month name.\n * @param month The date representing the month.\n * @param dateLib The date library to use for formatting. Defaults to\n * `defaultDateLib`.\n * @returns The formatted month name as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatMonthDropdown(month, dateLib = defaultDateLib) {\n return dateLib.format(month, \"LLLL\");\n}\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the name of a weekday to be displayed in the weekdays header.\n *\n * @defaultValue `cccccc` (e.g., \"Mo\" for Monday).\n * @param weekday The date representing the weekday.\n * @param options Configuration options for the date library.\n * @param dateLib The date library to use for formatting. If not provided, a new\n * instance is created.\n * @returns The formatted weekday name as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekdayName(weekday, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(weekday, \"cccccc\");\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the week number.\n *\n * @defaultValue The week number as a string, with a leading zero for single-digit numbers.\n * @param weekNumber The week number to format.\n * @param dateLib The date library to use for formatting. Defaults to\n * `defaultDateLib`.\n * @returns The formatted week number as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekNumber(weekNumber, dateLib = defaultDateLib) {\n if (weekNumber < 10) {\n return dateLib.formatNumber(`0${weekNumber.toLocaleString()}`);\n }\n return dateLib.formatNumber(`${weekNumber.toLocaleString()}`);\n}\n","/**\n * Formats the header for the week number column.\n *\n * @defaultValue An empty string `\"\"`.\n * @returns The formatted week number header as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekNumberHeader() {\n return ``;\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the year for the dropdown option label.\n *\n * @param year The year to format.\n * @param dateLib The date library to use for formatting. Defaults to\n * `defaultDateLib`.\n * @returns The formatted year as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatYearDropdown(year, dateLib = defaultDateLib) {\n return dateLib.format(year, \"yyyy\");\n}\n/**\n * @private\n * @deprecated Use `formatYearDropdown` instead.\n * @group Formatters\n */\nexport const formatYearCaption = formatYearDropdown;\n","import * as defaultFormatters from \"../formatters/index.js\";\n/**\n * Merges custom formatters from the props with the default formatters.\n *\n * @param customFormatters The custom formatters provided in the DayPicker\n * props.\n * @returns The merged formatters object.\n */\nexport function getFormatters(customFormatters) {\n if (customFormatters?.formatMonthCaption && !customFormatters.formatCaption) {\n customFormatters.formatCaption = customFormatters.formatMonthCaption;\n }\n if (customFormatters?.formatYearCaption &&\n !customFormatters.formatYearDropdown) {\n customFormatters.formatYearDropdown = customFormatters.formatYearCaption;\n }\n return {\n ...defaultFormatters,\n ...customFormatters,\n };\n}\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Generates the ARIA label for a day button.\n *\n * Use the `modifiers` argument to provide additional context for the label,\n * such as indicating if the day is \"today\" or \"selected.\"\n *\n * @defaultValue The formatted date.\n * @param date - The date to format.\n * @param modifiers - The modifiers providing context for the day.\n * @param options - Optional configuration for the date formatting library.\n * @param dateLib - An optional instance of the date formatting library.\n * @returns The ARIA label for the day button.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelDayButton(date, modifiers, options, dateLib) {\n let label = (dateLib ?? new DateLib(options)).format(date, \"PPPP\");\n if (modifiers.today)\n label = `Today, ${label}`;\n if (modifiers.selected)\n label = `${label}, selected`;\n return label;\n}\n/**\n * @ignore\n * @deprecated Use `labelDayButton` instead.\n */\nexport const labelDay = labelDayButton;\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Generates the ARIA label for the month grid, which is announced when entering\n * the grid.\n *\n * @defaultValue Locale-specific month/year order (e.g., \"November 2022\").\n * @param date - The date representing the month.\n * @param options - Optional configuration for the date formatting library.\n * @param dateLib - An optional instance of the date formatting library.\n * @returns The ARIA label for the month grid.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelGrid(date, options, dateLib) {\n const lib = dateLib ?? new DateLib(options);\n return lib.formatMonthYear(date);\n}\n/**\n * @ignore\n * @deprecated Use {@link labelGrid} instead.\n */\nexport const labelCaption = labelGrid;\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Generates the label for a day grid cell when the calendar is not interactive.\n *\n * @param date - The date to format.\n * @param modifiers - Optional modifiers providing context for the day.\n * @param options - Optional configuration for the date formatting library.\n * @param dateLib - An optional instance of the date formatting library.\n * @returns The label for the day grid cell.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelGridcell(date, modifiers, options, dateLib) {\n let label = (dateLib ?? new DateLib(options)).format(date, \"PPPP\");\n if (modifiers?.today) {\n label = `Today, ${label}`;\n }\n return label;\n}\n","/**\n * Generates the ARIA label for the months dropdown.\n *\n * @defaultValue `\"Choose the Month\"`\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the months dropdown.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelMonthDropdown(_options) {\n return \"Choose the Month\";\n}\n","/**\n * Generates the ARIA label for the navigation toolbar.\n *\n * @defaultValue `\"\"`\n * @returns The ARIA label for the navigation toolbar.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelNav() {\n return \"\";\n}\n","const defaultLabel = \"Go to the Next Month\";\n/**\n * Generates the ARIA label for the \"next month\" button.\n *\n * @defaultValue `\"Go to the Next Month\"`\n * @param month - The date representing the next month, or `undefined` if there\n * is no next month.\n * @returns The ARIA label for the \"next month\" button.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelNext(_month, _options) {\n return defaultLabel;\n}\n","/**\n * Generates the ARIA label for the \"previous month\" button.\n *\n * @defaultValue `\"Go to the Previous Month\"`\n * @param month - The date representing the previous month, or `undefined` if\n * there is no previous month.\n * @returns The ARIA label for the \"previous month\" button.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelPrevious(_month) {\n return \"Go to the Previous Month\";\n}\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Generates the ARIA label for a weekday column header.\n *\n * @defaultValue `\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"`\n * @param date - The date representing the weekday.\n * @param options - Optional configuration for the date formatting library.\n * @param dateLib - An optional instance of the date formatting library.\n * @returns The ARIA label for the weekday column header.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekday(date, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(date, \"cccc\");\n}\n","/**\n * Generates the ARIA label for the week number cell (the first cell in a row).\n *\n * @defaultValue `Week ${weekNumber}`\n * @param weekNumber - The number of the week.\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the week number cell.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekNumber(weekNumber, _options) {\n return `Week ${weekNumber}`;\n}\n","/**\n * Generates the ARIA label for the week number header element.\n *\n * @defaultValue `\"Week Number\"`\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the week number header.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekNumberHeader(_options) {\n return \"Week Number\";\n}\n","/**\n * Generates the ARIA label for the years dropdown.\n *\n * @defaultValue `\"Choose the Year\"`\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the years dropdown.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelYearDropdown(_options) {\n return \"Choose the Year\";\n}\n","import * as defaultLabels from \"../labels/index.js\";\nconst resolveLabel = (defaultLabel, customLabel, localeLabel) => {\n if (customLabel)\n return customLabel;\n if (localeLabel) {\n return (typeof localeLabel === \"function\"\n ? localeLabel\n : (..._args) => localeLabel);\n }\n return defaultLabel;\n};\n/**\n * Merges custom labels from the props with the default labels.\n *\n * When available, uses the locale-provided translation for `labelNext`.\n *\n * @param customLabels The custom labels provided in the DayPicker props.\n * @param options Options from the date library, used to resolve locale\n * translations.\n * @returns The merged labels object with locale-aware defaults.\n */\nexport function getLabels(customLabels, options) {\n const localeLabels = options.locale?.labels ?? {};\n return {\n ...defaultLabels,\n ...(customLabels ?? {}),\n labelDayButton: resolveLabel(defaultLabels.labelDayButton, customLabels?.labelDayButton, localeLabels.labelDayButton),\n labelMonthDropdown: resolveLabel(defaultLabels.labelMonthDropdown, customLabels?.labelMonthDropdown, localeLabels.labelMonthDropdown),\n labelNext: resolveLabel(defaultLabels.labelNext, customLabels?.labelNext, localeLabels.labelNext),\n labelPrevious: resolveLabel(defaultLabels.labelPrevious, customLabels?.labelPrevious, localeLabels.labelPrevious),\n labelWeekNumber: resolveLabel(defaultLabels.labelWeekNumber, customLabels?.labelWeekNumber, localeLabels.labelWeekNumber),\n labelYearDropdown: resolveLabel(defaultLabels.labelYearDropdown, customLabels?.labelYearDropdown, localeLabels.labelYearDropdown),\n labelGrid: resolveLabel(defaultLabels.labelGrid, customLabels?.labelGrid, localeLabels.labelGrid),\n labelGridcell: resolveLabel(defaultLabels.labelGridcell, customLabels?.labelGridcell, localeLabels.labelGridcell),\n labelNav: resolveLabel(defaultLabels.labelNav, customLabels?.labelNav, localeLabels.labelNav),\n labelWeekNumberHeader: resolveLabel(defaultLabels.labelWeekNumberHeader, customLabels?.labelWeekNumberHeader, localeLabels.labelWeekNumberHeader),\n labelWeekday: resolveLabel(defaultLabels.labelWeekday, customLabels?.labelWeekday, localeLabels.labelWeekday),\n };\n}\n","/**\n * Returns the months to show in the dropdown.\n *\n * This function generates a list of months for the current year, formatted\n * using the provided formatter, and determines whether each month should be\n * disabled based on the navigation range.\n *\n * @param displayMonth The currently displayed month.\n * @param navStart The start date for navigation.\n * @param navEnd The end date for navigation.\n * @param formatters The formatters to use for formatting the month labels.\n * @param dateLib The date library to use for date manipulation.\n * @returns An array of dropdown options representing the months, or `undefined`\n * if no months are available.\n */\nexport function getMonthOptions(displayMonth, navStart, navEnd, formatters, dateLib) {\n const { startOfMonth, startOfYear, endOfYear, eachMonthOfInterval, getMonth, } = dateLib;\n const months = eachMonthOfInterval({\n start: startOfYear(displayMonth),\n end: endOfYear(displayMonth),\n });\n const options = months.map((month) => {\n const label = formatters.formatMonthDropdown(month, dateLib);\n const value = getMonth(month);\n const disabled = (navStart && month < startOfMonth(navStart)) ||\n (navEnd && month > startOfMonth(navEnd)) ||\n false;\n return { value, label, disabled };\n });\n return options;\n}\n","import { UI } from \"../UI.js\";\n/**\n * Returns the computed style for a day based on its modifiers.\n *\n * This function merges the base styles for the day with any styles associated\n * with active modifiers.\n *\n * @param dayModifiers The modifiers applied to the day.\n * @param styles The base styles for the calendar elements.\n * @param modifiersStyles The styles associated with specific modifiers.\n * @returns The computed style for the day.\n */\nexport function getStyleForModifiers(dayModifiers, styles = {}, modifiersStyles = {}) {\n let style = { ...styles?.[UI.Day] };\n Object.entries(dayModifiers)\n .filter(([, active]) => active === true)\n .forEach(([modifier]) => {\n style = {\n ...style,\n ...modifiersStyles?.[modifier],\n };\n });\n return style;\n}\n","/**\n * Generates a series of 7 days, starting from the beginning of the week, to use\n * for formatting weekday names (e.g., Monday, Tuesday, etc.).\n *\n * @param dateLib The date library to use for date manipulation.\n * @param ISOWeek Whether to use ISO week numbering (weeks start on Monday).\n * @param broadcastCalendar Whether to use the broadcast calendar (weeks start\n * on Monday, but may include adjustments for broadcast-specific rules).\n * @returns An array of 7 dates representing the weekdays.\n */\nexport function getWeekdays(dateLib, ISOWeek, broadcastCalendar, today) {\n const referenceToday = today ?? dateLib.today();\n const start = broadcastCalendar\n ? dateLib.startOfBroadcastWeek(referenceToday, dateLib)\n : ISOWeek\n ? dateLib.startOfISOWeek(referenceToday)\n : dateLib.startOfWeek(referenceToday);\n const days = [];\n for (let i = 0; i < 7; i++) {\n const day = dateLib.addDays(start, i);\n days.push(day);\n }\n return days;\n}\n","/**\n * Returns the years to display in the dropdown.\n *\n * This function generates a list of years between the navigation start and end\n * dates, formatted using the provided formatter.\n *\n * @param navStart The start date for navigation.\n * @param navEnd The end date for navigation.\n * @param formatters The formatters to use for formatting the year labels.\n * @param dateLib The date library to use for date manipulation.\n * @param reverse If true, reverses the order of the years (descending).\n * @returns An array of dropdown options representing the years, or `undefined`\n * if `navStart` or `navEnd` is not provided.\n */\nexport function getYearOptions(navStart, navEnd, formatters, dateLib, reverse = false) {\n if (!navStart)\n return undefined;\n if (!navEnd)\n return undefined;\n const { startOfYear, endOfYear, eachYearOfInterval, getYear } = dateLib;\n const firstNavYear = startOfYear(navStart);\n const lastNavYear = endOfYear(navEnd);\n const years = eachYearOfInterval({ start: firstNavYear, end: lastNavYear });\n if (reverse)\n years.reverse();\n return years.map((year) => {\n const label = formatters.formatYearDropdown(year, dateLib);\n return {\n value: getYear(year),\n label,\n disabled: false,\n };\n });\n}\n","import { TZDate } from \"@date-fns/tz\";\nimport { differenceInCalendarDays as differenceInCalendarDaysFn, differenceInCalendarMonths as differenceInCalendarMonthsFn, getISOWeek as getISOWeekFn, getWeek as getWeekFn, } from \"date-fns\";\n/**\n * Creates `dateLib` overrides that keep all calendar math at noon in the target\n * time zone. This avoids second-level offset changes (e.g., historical zones\n * with +03:41:12) from pushing dates backward across midnight.\n */\nexport function createNoonOverrides(timeZone, options = {}) {\n const { weekStartsOn, locale } = options;\n const fallbackWeekStartsOn = (weekStartsOn ??\n locale?.options?.weekStartsOn ??\n 0);\n // Keep all internal math anchored at noon in the target zone to avoid\n // historical second-level offsets from crossing midnight.\n const toNoonTZDate = (date) => {\n const normalizedDate = typeof date === \"number\" || typeof date === \"string\"\n ? new Date(date)\n : date;\n return new TZDate(normalizedDate.getFullYear(), normalizedDate.getMonth(), normalizedDate.getDate(), 12, 0, 0, timeZone);\n };\n // Convert a value into a host `Date` that represents the same calendar day\n // as the target-zone noon. This is useful for helpers (e.g., date-fns week\n // utilities) that expect local `Date` instances rather than `TZDate`s.\n const toCalendarDate = (date) => {\n const zoned = toNoonTZDate(date);\n return new Date(zoned.getFullYear(), zoned.getMonth(), zoned.getDate(), 0, 0, 0, 0);\n };\n return {\n today: () => {\n return toNoonTZDate(TZDate.tz(timeZone));\n },\n newDate: (year, monthIndex, date) => {\n return new TZDate(year, monthIndex, date, 12, 0, 0, timeZone);\n },\n startOfDay: (date) => {\n return toNoonTZDate(date);\n },\n startOfWeek: (date, options) => {\n const base = toNoonTZDate(date);\n const weekStartsOnValue = (options?.weekStartsOn ??\n fallbackWeekStartsOn);\n const diff = (base.getDay() - weekStartsOnValue + 7) % 7;\n base.setDate(base.getDate() - diff);\n return base;\n },\n startOfISOWeek: (date) => {\n const base = toNoonTZDate(date);\n const diff = (base.getDay() - 1 + 7) % 7;\n base.setDate(base.getDate() - diff);\n return base;\n },\n startOfMonth: (date) => {\n const base = toNoonTZDate(date);\n base.setDate(1);\n return base;\n },\n startOfYear: (date) => {\n const base = toNoonTZDate(date);\n base.setMonth(0, 1);\n return base;\n },\n endOfWeek: (date, options) => {\n const base = toNoonTZDate(date);\n const weekStartsOnValue = (options?.weekStartsOn ??\n fallbackWeekStartsOn);\n const endDow = (weekStartsOnValue + 6) % 7;\n const diff = (endDow - base.getDay() + 7) % 7;\n base.setDate(base.getDate() + diff);\n return base;\n },\n endOfISOWeek: (date) => {\n const base = toNoonTZDate(date);\n const diff = (7 - base.getDay()) % 7;\n base.setDate(base.getDate() + diff);\n return base;\n },\n endOfMonth: (date) => {\n const base = toNoonTZDate(date);\n base.setMonth(base.getMonth() + 1, 0);\n return base;\n },\n endOfYear: (date) => {\n const base = toNoonTZDate(date);\n base.setMonth(11, 31);\n return base;\n },\n eachMonthOfInterval: (interval) => {\n const start = toNoonTZDate(interval.start);\n const end = toNoonTZDate(interval.end);\n const result = [];\n const cursor = new TZDate(start.getFullYear(), start.getMonth(), 1, 12, 0, 0, timeZone);\n const endKey = end.getFullYear() * 12 + end.getMonth();\n while (cursor.getFullYear() * 12 + cursor.getMonth() <= endKey) {\n result.push(new TZDate(cursor, timeZone));\n cursor.setMonth(cursor.getMonth() + 1, 1);\n }\n return result;\n },\n // Normalize to noon once before arithmetic (avoid DST/midnight edge cases),\n // mutate the same TZDate, and return it.\n addDays: (date, amount) => {\n const base = toNoonTZDate(date);\n base.setDate(base.getDate() + amount);\n return base;\n },\n addWeeks: (date, amount) => {\n const base = toNoonTZDate(date);\n base.setDate(base.getDate() + amount * 7);\n return base;\n },\n addMonths: (date, amount) => {\n const base = toNoonTZDate(date);\n base.setMonth(base.getMonth() + amount);\n return base;\n },\n addYears: (date, amount) => {\n const base = toNoonTZDate(date);\n base.setFullYear(base.getFullYear() + amount);\n return base;\n },\n eachYearOfInterval: (interval) => {\n const start = toNoonTZDate(interval.start);\n const end = toNoonTZDate(interval.end);\n const years = [];\n const cursor = new TZDate(start.getFullYear(), 0, 1, 12, 0, 0, timeZone);\n while (cursor.getFullYear() <= end.getFullYear()) {\n years.push(new TZDate(cursor, timeZone));\n cursor.setFullYear(cursor.getFullYear() + 1, 0, 1);\n }\n return years;\n },\n getWeek: (date, options) => {\n const base = toCalendarDate(date);\n return getWeekFn(base, {\n weekStartsOn: options?.weekStartsOn ?? fallbackWeekStartsOn,\n firstWeekContainsDate: options?.firstWeekContainsDate ??\n locale?.options?.firstWeekContainsDate ??\n 1,\n });\n },\n getISOWeek: (date) => {\n const base = toCalendarDate(date);\n return getISOWeekFn(base);\n },\n differenceInCalendarDays: (dateLeft, dateRight) => {\n const left = toCalendarDate(dateLeft);\n const right = toCalendarDate(dateRight);\n return differenceInCalendarDaysFn(left, right);\n },\n differenceInCalendarMonths: (dateLeft, dateRight) => {\n const left = toCalendarDate(dateLeft);\n const right = toCalendarDate(dateRight);\n return differenceInCalendarMonthsFn(left, right);\n },\n };\n}\n","import { useLayoutEffect, useRef } from \"react\";\nimport { Animation } from \"./UI.js\";\nconst asHtmlElement = (element) => {\n if (element instanceof HTMLElement)\n return element;\n return null;\n};\nconst queryMonthEls = (element) => [\n ...(element.querySelectorAll(\"[data-animated-month]\") ?? []),\n];\nconst queryMonthEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-month]\"));\nconst queryCaptionEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-caption]\"));\nconst queryWeeksEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-weeks]\"));\nconst queryNavEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-nav]\"));\nconst queryWeekdaysEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-weekdays]\"));\n/**\n * Handles animations for transitioning between months in the DayPicker\n * component.\n *\n * @private\n * @param rootElRef - A reference to the root element of the DayPicker\n * component.\n * @param enabled - Whether animations are enabled.\n * @param options - Configuration options for the animation, including class\n * names, months, focused day, and the date utility library.\n */\nexport function useAnimation(rootElRef, enabled, { classNames, months, focused, dateLib, }) {\n const previousRootElSnapshotRef = useRef(null);\n const previousMonthsRef = useRef(months);\n const animatingRef = useRef(false);\n useLayoutEffect(() => {\n // get previous months before updating the previous months ref\n const previousMonths = previousMonthsRef.current;\n // update previous months ref for next effect trigger\n previousMonthsRef.current = months;\n if (!enabled ||\n !rootElRef.current ||\n // safety check because the ref can be set to anything by consumers\n !(rootElRef.current instanceof HTMLElement) ||\n // validation required for the animation to work as expected\n months.length === 0 ||\n previousMonths.length === 0 ||\n months.length !== previousMonths.length) {\n return;\n }\n const isSameMonth = dateLib.isSameMonth(months[0].date, previousMonths[0].date);\n const isAfterPreviousMonth = dateLib.isAfter(months[0].date, previousMonths[0].date);\n const captionAnimationClass = isAfterPreviousMonth\n ? classNames[Animation.caption_after_enter]\n : classNames[Animation.caption_before_enter];\n const weeksAnimationClass = isAfterPreviousMonth\n ? classNames[Animation.weeks_after_enter]\n : classNames[Animation.weeks_before_enter];\n // get previous root element snapshot before updating the snapshot ref\n const previousRootElSnapshot = previousRootElSnapshotRef.current;\n // update snapshot for next effect trigger\n const rootElSnapshot = rootElRef.current.cloneNode(true);\n if (rootElSnapshot instanceof HTMLElement) {\n // if this effect is triggered while animating, we need to clean up the new root snapshot\n // to put it in the same state as when not animating, to correctly animate the next month change\n const currentMonthElsSnapshot = queryMonthEls(rootElSnapshot);\n currentMonthElsSnapshot.forEach((currentMonthElSnapshot) => {\n if (!(currentMonthElSnapshot instanceof HTMLElement))\n return;\n // remove the old month snapshots from the new root snapshot\n const previousMonthElSnapshot = queryMonthEl(currentMonthElSnapshot);\n if (previousMonthElSnapshot &&\n currentMonthElSnapshot.contains(previousMonthElSnapshot)) {\n currentMonthElSnapshot.removeChild(previousMonthElSnapshot);\n }\n // remove animation classes from the new month snapshots\n const captionEl = queryCaptionEl(currentMonthElSnapshot);\n if (captionEl) {\n captionEl.classList.remove(captionAnimationClass);\n }\n const weeksEl = queryWeeksEl(currentMonthElSnapshot);\n if (weeksEl) {\n weeksEl.classList.remove(weeksAnimationClass);\n }\n });\n previousRootElSnapshotRef.current = rootElSnapshot;\n }\n else {\n previousRootElSnapshotRef.current = null;\n }\n if (animatingRef.current ||\n isSameMonth ||\n // skip animation if a day is focused because it can cause issues to the animation and is better for a11y\n focused) {\n return;\n }\n const previousMonthEls = previousRootElSnapshot instanceof HTMLElement\n ? queryMonthEls(previousRootElSnapshot)\n : [];\n const currentMonthEls = queryMonthEls(rootElRef.current);\n if (currentMonthEls?.every((el) => el instanceof HTMLElement) &&\n previousMonthEls &&\n previousMonthEls.every((el) => el instanceof HTMLElement)) {\n animatingRef.current = true;\n const cleanUpFunctions = [];\n // set isolation to isolate to isolate the stacking context during animation\n rootElRef.current.style.isolation = \"isolate\";\n // set z-index to 1 to ensure the nav is clickable over the other elements being animated\n const navEl = queryNavEl(rootElRef.current);\n if (navEl) {\n navEl.style.zIndex = \"1\";\n }\n currentMonthEls.forEach((currentMonthEl, index) => {\n const previousMonthEl = previousMonthEls[index];\n if (!previousMonthEl) {\n return;\n }\n // animate new displayed month\n currentMonthEl.style.position = \"relative\";\n currentMonthEl.style.overflow = \"hidden\";\n const captionEl = queryCaptionEl(currentMonthEl);\n if (captionEl) {\n captionEl.classList.add(captionAnimationClass);\n }\n const weeksEl = queryWeeksEl(currentMonthEl);\n if (weeksEl) {\n weeksEl.classList.add(weeksAnimationClass);\n }\n // animate new displayed month end\n const cleanUp = () => {\n animatingRef.current = false;\n if (rootElRef.current) {\n rootElRef.current.style.isolation = \"\";\n }\n if (navEl) {\n navEl.style.zIndex = \"\";\n }\n if (captionEl) {\n captionEl.classList.remove(captionAnimationClass);\n }\n if (weeksEl) {\n weeksEl.classList.remove(weeksAnimationClass);\n }\n currentMonthEl.style.position = \"\";\n currentMonthEl.style.overflow = \"\";\n if (currentMonthEl.contains(previousMonthEl)) {\n currentMonthEl.removeChild(previousMonthEl);\n }\n };\n cleanUpFunctions.push(cleanUp);\n // animate old displayed month\n previousMonthEl.style.pointerEvents = \"none\";\n previousMonthEl.style.position = \"absolute\";\n previousMonthEl.style.overflow = \"hidden\";\n previousMonthEl.setAttribute(\"aria-hidden\", \"true\");\n // hide the weekdays container of the old month and only the new one\n const previousWeekdaysEl = queryWeekdaysEl(previousMonthEl);\n if (previousWeekdaysEl) {\n previousWeekdaysEl.style.opacity = \"0\";\n }\n const previousCaptionEl = queryCaptionEl(previousMonthEl);\n if (previousCaptionEl) {\n previousCaptionEl.classList.add(isAfterPreviousMonth\n ? classNames[Animation.caption_before_exit]\n : classNames[Animation.caption_after_exit]);\n previousCaptionEl.addEventListener(\"animationend\", cleanUp);\n }\n const previousWeeksEl = queryWeeksEl(previousMonthEl);\n if (previousWeeksEl) {\n previousWeeksEl.classList.add(isAfterPreviousMonth\n ? classNames[Animation.weeks_before_exit]\n : classNames[Animation.weeks_after_exit]);\n }\n currentMonthEl.insertBefore(previousMonthEl, currentMonthEl.firstChild);\n });\n }\n });\n}\n","/**\n * Returns all the dates to display in the calendar.\n *\n * This function calculates the range of dates to display based on the provided\n * display months, constraints, and calendar configuration.\n *\n * @param displayMonths The months to display in the calendar.\n * @param maxDate The maximum date to include in the range.\n * @param props The DayPicker props, including calendar configuration options.\n * @param dateLib The date library to use for date manipulation.\n * @returns An array of dates to display in the calendar.\n */\nexport function getDates(displayMonths, maxDate, props, dateLib) {\n const firstMonth = displayMonths[0];\n const lastMonth = displayMonths[displayMonths.length - 1];\n const { ISOWeek, fixedWeeks, broadcastCalendar } = props ?? {};\n const { addDays, differenceInCalendarDays, differenceInCalendarMonths, endOfBroadcastWeek, endOfISOWeek, endOfMonth, endOfWeek, isAfter, startOfBroadcastWeek, startOfISOWeek, startOfWeek, } = dateLib;\n const startWeekFirstDate = broadcastCalendar\n ? startOfBroadcastWeek(firstMonth, dateLib)\n : ISOWeek\n ? startOfISOWeek(firstMonth)\n : startOfWeek(firstMonth);\n const displayMonthsWeekEnd = broadcastCalendar\n ? endOfBroadcastWeek(lastMonth)\n : ISOWeek\n ? endOfISOWeek(endOfMonth(lastMonth))\n : endOfWeek(endOfMonth(lastMonth));\n // If maxDate is set, clamp the grid to the end of that week.\n const constraintWeekEnd = maxDate &&\n (broadcastCalendar\n ? endOfBroadcastWeek(maxDate)\n : ISOWeek\n ? endOfISOWeek(maxDate)\n : endOfWeek(maxDate));\n // Pick the earliest week end between the displayed months and the constraint.\n const gridEndDate = constraintWeekEnd && isAfter(displayMonthsWeekEnd, constraintWeekEnd)\n ? constraintWeekEnd\n : displayMonthsWeekEnd;\n const nOfDays = differenceInCalendarDays(gridEndDate, startWeekFirstDate);\n const nOfMonths = differenceInCalendarMonths(lastMonth, firstMonth) + 1;\n const dates = [];\n for (let i = 0; i <= nOfDays; i++) {\n const date = addDays(startWeekFirstDate, i);\n dates.push(date);\n }\n // If fixed weeks is enabled, add the extra dates to the array\n const nrOfDaysWithFixedWeeks = broadcastCalendar ? 35 : 42;\n const extraDates = nrOfDaysWithFixedWeeks * nOfMonths;\n if (fixedWeeks && dates.length < extraDates) {\n const daysToAdd = extraDates - dates.length;\n for (let i = 0; i < daysToAdd; i++) {\n const date = addDays(dates[dates.length - 1], 1);\n dates.push(date);\n }\n }\n return dates;\n}\n","/**\n * Returns all the days belonging to the calendar by merging the days in the\n * weeks for each month.\n *\n * @param calendarMonths The array of calendar months.\n * @returns An array of `CalendarDay` objects representing all the days in the\n * calendar.\n */\nexport function getDays(calendarMonths) {\n const initialDays = [];\n return calendarMonths.reduce((days, month) => {\n const weekDays = month.weeks.reduce((weekDays, week) => {\n return weekDays.concat(week.days.slice());\n }, initialDays.slice());\n return days.concat(weekDays.slice());\n }, initialDays.slice());\n}\n","/**\n * Returns the months to display in the calendar.\n *\n * @param firstDisplayedMonth The first month currently displayed in the\n * calendar.\n * @param calendarEndMonth The latest month the user can navigate to.\n * @param props The DayPicker props, including `numberOfMonths`.\n * @param dateLib The date library to use for date manipulation.\n * @returns An array of dates representing the months to display.\n */\nexport function getDisplayMonths(firstDisplayedMonth, calendarEndMonth, props, dateLib) {\n const { numberOfMonths = 1 } = props;\n const months = [];\n for (let i = 0; i < numberOfMonths; i++) {\n const month = dateLib.addMonths(firstDisplayedMonth, i);\n if (calendarEndMonth && month > calendarEndMonth) {\n break;\n }\n months.push(month);\n }\n return months;\n}\n","/**\n * Determines the initial month to display in the calendar based on the provided\n * props.\n *\n * This function calculates the starting month, considering constraints such as\n * `startMonth`, `endMonth`, and the number of months to display.\n *\n * @param props The DayPicker props, including navigation and date constraints.\n * @param dateLib The date library to use for date manipulation.\n * @returns The initial month to display.\n */\nexport function getInitialMonth(props, navStart, navEnd, dateLib) {\n const { month, defaultMonth, today = dateLib.today(), numberOfMonths = 1, } = props;\n let initialMonth = month || defaultMonth || today;\n const { differenceInCalendarMonths, addMonths, startOfMonth } = dateLib;\n if (navEnd &&\n differenceInCalendarMonths(navEnd, initialMonth) < numberOfMonths - 1) {\n const offset = -1 * (numberOfMonths - 1);\n initialMonth = addMonths(navEnd, offset);\n }\n if (navStart && differenceInCalendarMonths(initialMonth, navStart) < 0) {\n initialMonth = navStart;\n }\n return startOfMonth(initialMonth);\n}\n","import { CalendarDay, CalendarMonth, CalendarWeek } from \"../classes/index.js\";\n/**\n * Returns the months to display in the calendar.\n *\n * This function generates `CalendarMonth` objects for each month to be\n * displayed, including their weeks and days, based on the provided display\n * months and dates.\n *\n * @param displayMonths The months (as dates) to display in the calendar.\n * @param dates The dates to display in the calendar.\n * @param props Options from the DayPicker props context.\n * @param dateLib The date library to use for date manipulation.\n * @returns An array of `CalendarMonth` objects representing the months to\n * display.\n */\nexport function getMonths(displayMonths, dates, props, dateLib) {\n const { addDays, endOfBroadcastWeek, endOfISOWeek, endOfMonth, endOfWeek, getISOWeek, getWeek, startOfBroadcastWeek, startOfISOWeek, startOfWeek, } = dateLib;\n const dayPickerMonths = displayMonths.reduce((months, month) => {\n const firstDateOfFirstWeek = props.broadcastCalendar\n ? startOfBroadcastWeek(month, dateLib)\n : props.ISOWeek\n ? startOfISOWeek(month)\n : startOfWeek(month);\n const lastDateOfLastWeek = props.broadcastCalendar\n ? endOfBroadcastWeek(month)\n : props.ISOWeek\n ? endOfISOWeek(endOfMonth(month))\n : endOfWeek(endOfMonth(month));\n /** The dates to display in the month. */\n const monthDates = dates.filter((date) => {\n return date >= firstDateOfFirstWeek && date <= lastDateOfLastWeek;\n });\n const nrOfDaysWithFixedWeeks = props.broadcastCalendar ? 35 : 42;\n if (props.fixedWeeks && monthDates.length < nrOfDaysWithFixedWeeks) {\n const extraDates = dates.filter((date) => {\n const daysToAdd = nrOfDaysWithFixedWeeks - monthDates.length;\n return (date > lastDateOfLastWeek &&\n date <= addDays(lastDateOfLastWeek, daysToAdd));\n });\n monthDates.push(...extraDates);\n }\n const weeks = monthDates.reduce((weeks, date) => {\n const weekNumber = props.ISOWeek ? getISOWeek(date) : getWeek(date);\n const week = weeks.find((week) => week.weekNumber === weekNumber);\n const day = new CalendarDay(date, month, dateLib);\n if (!week) {\n weeks.push(new CalendarWeek(weekNumber, [day]));\n }\n else {\n week.days.push(day);\n }\n return weeks;\n }, []);\n const dayPickerMonth = new CalendarMonth(month, weeks);\n months.push(dayPickerMonth);\n return months;\n }, []);\n if (!props.reverseMonths) {\n return dayPickerMonths;\n }\n else {\n return dayPickerMonths.reverse();\n }\n}\n","/**\n * Returns the start and end months for calendar navigation.\n *\n * @param props The DayPicker props, including navigation and layout options.\n * @param dateLib The date library to use for date manipulation.\n * @returns A tuple containing the start and end months for navigation.\n */\nexport function getNavMonths(props, dateLib) {\n let { startMonth, endMonth } = props;\n const { startOfYear, startOfDay, startOfMonth, endOfMonth, addYears, endOfYear, newDate, today, } = dateLib;\n // Handle deprecated code\n const { fromYear, toYear, fromMonth, toMonth } = props;\n if (!startMonth && fromMonth) {\n startMonth = fromMonth;\n }\n if (!startMonth && fromYear) {\n startMonth = dateLib.newDate(fromYear, 0, 1);\n }\n if (!endMonth && toMonth) {\n endMonth = toMonth;\n }\n if (!endMonth && toYear) {\n endMonth = newDate(toYear, 11, 31);\n }\n const hasYearDropdown = props.captionLayout === \"dropdown\" ||\n props.captionLayout === \"dropdown-years\";\n if (startMonth) {\n startMonth = startOfMonth(startMonth);\n }\n else if (fromYear) {\n startMonth = newDate(fromYear, 0, 1);\n }\n else if (!startMonth && hasYearDropdown) {\n startMonth = startOfYear(addYears(props.today ?? today(), -100));\n }\n if (endMonth) {\n endMonth = endOfMonth(endMonth);\n }\n else if (toYear) {\n endMonth = newDate(toYear, 11, 31);\n }\n else if (!endMonth && hasYearDropdown) {\n endMonth = endOfYear(props.today ?? today());\n }\n return [\n startMonth ? startOfDay(startMonth) : startMonth,\n endMonth ? startOfDay(endMonth) : endMonth,\n ];\n}\n","/**\n * Returns the next month the user can navigate to, based on the given options.\n *\n * The next month is not always the next calendar month:\n *\n * - If it is after the `calendarEndMonth`, it returns `undefined`.\n * - If paged navigation is enabled, it skips forward by the number of displayed\n * months.\n *\n * @param firstDisplayedMonth The first month currently displayed in the\n * calendar.\n * @param calendarEndMonth The latest month the user can navigate to.\n * @param options Navigation options, including `numberOfMonths` and\n * `pagedNavigation`.\n * @param dateLib The date library to use for date manipulation.\n * @returns The next month, or `undefined` if navigation is not possible.\n */\nexport function getNextMonth(firstDisplayedMonth, calendarEndMonth, options, dateLib) {\n if (options.disableNavigation) {\n return undefined;\n }\n const { pagedNavigation, numberOfMonths = 1 } = options;\n const { startOfMonth, addMonths, differenceInCalendarMonths } = dateLib;\n const offset = pagedNavigation ? numberOfMonths : 1;\n const month = startOfMonth(firstDisplayedMonth);\n if (!calendarEndMonth) {\n return addMonths(month, offset);\n }\n const monthsDiff = differenceInCalendarMonths(calendarEndMonth, firstDisplayedMonth);\n if (monthsDiff < numberOfMonths) {\n return undefined;\n }\n return addMonths(month, offset);\n}\n","/**\n * Returns the previous month the user can navigate to, based on the given\n * options.\n *\n * The previous month is not always the previous calendar month:\n *\n * - If it is before the `calendarStartMonth`, it returns `undefined`.\n * - If paged navigation is enabled, it skips back by the number of displayed\n * months.\n *\n * @param firstDisplayedMonth The first month currently displayed in the\n * calendar.\n * @param calendarStartMonth The earliest month the user can navigate to.\n * @param options Navigation options, including `numberOfMonths` and\n * `pagedNavigation`.\n * @param dateLib The date library to use for date manipulation.\n * @returns The previous month, or `undefined` if navigation is not possible.\n */\nexport function getPreviousMonth(firstDisplayedMonth, calendarStartMonth, options, dateLib) {\n if (options.disableNavigation) {\n return undefined;\n }\n const { pagedNavigation, numberOfMonths } = options;\n const { startOfMonth, addMonths, differenceInCalendarMonths } = dateLib;\n const offset = pagedNavigation ? (numberOfMonths ?? 1) : 1;\n const month = startOfMonth(firstDisplayedMonth);\n if (!calendarStartMonth) {\n return addMonths(month, -offset);\n }\n const monthsDiff = differenceInCalendarMonths(month, calendarStartMonth);\n if (monthsDiff <= 0) {\n return undefined;\n }\n return addMonths(month, -offset);\n}\n","/**\n * Returns an array of calendar weeks from an array of calendar months.\n *\n * @param months The array of calendar months.\n * @returns An array of calendar weeks.\n */\nexport function getWeeks(months) {\n const initialWeeks = [];\n return months.reduce((weeks, month) => {\n return weeks.concat(month.weeks.slice());\n }, initialWeeks.slice());\n}\n","import { useState } from \"react\";\n/**\n * A custom hook for managing both controlled and uncontrolled component states.\n *\n * This hook allows a component to support both controlled and uncontrolled\n * states by determining whether the `controlledValue` is provided. If it is\n * undefined, the hook falls back to using the internal state.\n *\n * @example\n * // Uncontrolled usage\n * const [value, setValue] = useControlledValue(0, undefined);\n *\n * // Controlled usage\n * const [value, setValue] = useControlledValue(0, props.value);\n *\n * @template T - The type of the value.\n * @param defaultValue The initial value for the uncontrolled state.\n * @param controlledValue The value for the controlled state. If undefined, the\n * component will use the uncontrolled state.\n * @returns A tuple where the first element is the current value (either\n * controlled or uncontrolled) and the second element is a setter function to\n * update the value.\n */\nexport function useControlledValue(defaultValue, controlledValue) {\n const [uncontrolledValue, setValue] = useState(defaultValue);\n const value = controlledValue === undefined ? uncontrolledValue : controlledValue;\n return [value, setValue];\n}\n","import { useEffect, useMemo } from \"react\";\nimport { getDates } from \"./helpers/getDates.js\";\nimport { getDays } from \"./helpers/getDays.js\";\nimport { getDisplayMonths } from \"./helpers/getDisplayMonths.js\";\nimport { getInitialMonth } from \"./helpers/getInitialMonth.js\";\nimport { getMonths } from \"./helpers/getMonths.js\";\nimport { getNavMonths } from \"./helpers/getNavMonth.js\";\nimport { getNextMonth } from \"./helpers/getNextMonth.js\";\nimport { getPreviousMonth } from \"./helpers/getPreviousMonth.js\";\nimport { getWeeks } from \"./helpers/getWeeks.js\";\nimport { useControlledValue } from \"./helpers/useControlledValue.js\";\n/**\n * Provides the calendar object to work with the calendar in custom components.\n *\n * @private\n * @param props - The DayPicker props related to calendar configuration.\n * @param dateLib - The date utility library instance.\n * @returns The calendar object containing displayed days, weeks, months, and\n * navigation methods.\n */\nexport function useCalendar(props, dateLib) {\n const [navStart, navEnd] = getNavMonths(props, dateLib);\n const { startOfMonth, endOfMonth } = dateLib;\n const initialMonth = getInitialMonth(props, navStart, navEnd, dateLib);\n const [firstMonth, setFirstMonth] = useControlledValue(initialMonth, \n // initialMonth is always computed from props.month if provided\n props.month ? initialMonth : undefined);\n // biome-ignore lint/correctness/useExhaustiveDependencies: change the initial month when the time zone changes.\n useEffect(() => {\n const newInitialMonth = getInitialMonth(props, navStart, navEnd, dateLib);\n setFirstMonth(newInitialMonth);\n }, [props.timeZone]);\n /** The months displayed in the calendar. */\n // biome-ignore lint/correctness/useExhaustiveDependencies: We want to recompute only when specific props change.\n const { months, weeks, days, previousMonth, nextMonth } = useMemo(() => {\n const displayMonths = getDisplayMonths(firstMonth, navEnd, { numberOfMonths: props.numberOfMonths }, dateLib);\n const dates = getDates(displayMonths, props.endMonth ? endOfMonth(props.endMonth) : undefined, {\n ISOWeek: props.ISOWeek,\n fixedWeeks: props.fixedWeeks,\n broadcastCalendar: props.broadcastCalendar,\n }, dateLib);\n const months = getMonths(displayMonths, dates, {\n broadcastCalendar: props.broadcastCalendar,\n fixedWeeks: props.fixedWeeks,\n ISOWeek: props.ISOWeek,\n reverseMonths: props.reverseMonths,\n }, dateLib);\n const weeks = getWeeks(months);\n const days = getDays(months);\n const previousMonth = getPreviousMonth(firstMonth, navStart, props, dateLib);\n const nextMonth = getNextMonth(firstMonth, navEnd, props, dateLib);\n return {\n months,\n weeks,\n days,\n previousMonth,\n nextMonth,\n };\n }, [\n dateLib,\n firstMonth.getTime(),\n navEnd?.getTime(),\n navStart?.getTime(),\n props.disableNavigation,\n props.broadcastCalendar,\n props.endMonth?.getTime(),\n props.fixedWeeks,\n props.ISOWeek,\n props.numberOfMonths,\n props.pagedNavigation,\n props.reverseMonths,\n ]);\n const { disableNavigation, onMonthChange } = props;\n const isDayInCalendar = (day) => weeks.some((week) => week.days.some((d) => d.isEqualTo(day)));\n const goToMonth = (date) => {\n if (disableNavigation) {\n return;\n }\n let newMonth = startOfMonth(date);\n // if month is before start, use the first month instead\n if (navStart && newMonth < startOfMonth(navStart)) {\n newMonth = startOfMonth(navStart);\n }\n // if month is after endMonth, use the last month instead\n if (navEnd && newMonth > startOfMonth(navEnd)) {\n newMonth = startOfMonth(navEnd);\n }\n setFirstMonth(newMonth);\n onMonthChange?.(newMonth);\n };\n const goToDay = (day) => {\n // is this check necessary?\n if (isDayInCalendar(day)) {\n return;\n }\n goToMonth(day.date);\n };\n const calendar = {\n months,\n weeks,\n days,\n navStart,\n navEnd,\n previousMonth,\n nextMonth,\n goToMonth,\n goToDay,\n };\n return calendar;\n}\n","import { DayFlag } from \"../UI.js\";\nvar FocusTargetPriority;\n(function (FocusTargetPriority) {\n FocusTargetPriority[FocusTargetPriority[\"Today\"] = 0] = \"Today\";\n FocusTargetPriority[FocusTargetPriority[\"Selected\"] = 1] = \"Selected\";\n FocusTargetPriority[FocusTargetPriority[\"LastFocused\"] = 2] = \"LastFocused\";\n FocusTargetPriority[FocusTargetPriority[\"FocusedModifier\"] = 3] = \"FocusedModifier\";\n})(FocusTargetPriority || (FocusTargetPriority = {}));\n/**\n * Determines if a day is focusable based on its modifiers.\n *\n * A day is considered focusable if it is not disabled, hidden, or outside the\n * displayed month.\n *\n * @param modifiers The modifiers applied to the day.\n * @returns `true` if the day is focusable, otherwise `false`.\n */\nfunction isFocusableDay(modifiers) {\n return (!modifiers[DayFlag.disabled] &&\n !modifiers[DayFlag.hidden] &&\n !modifiers[DayFlag.outside]);\n}\n/**\n * Calculates the focus target day based on priority.\n *\n * This function determines the day that should receive focus in the calendar,\n * prioritizing days with specific modifiers (e.g., \"focused\", \"today\") or\n * selection states.\n *\n * @param days The array of `CalendarDay` objects to evaluate.\n * @param getModifiers A function to retrieve the modifiers for a given day.\n * @param isSelected A function to determine if a day is selected.\n * @param lastFocused The last focused day, if any.\n * @returns The `CalendarDay` that should receive focus, or `undefined` if no\n * focusable day is found.\n */\nexport function calculateFocusTarget(days, getModifiers, isSelected, lastFocused) {\n let focusTarget;\n let foundFocusTargetPriority = -1;\n for (const day of days) {\n const modifiers = getModifiers(day);\n if (isFocusableDay(modifiers)) {\n if (modifiers[DayFlag.focused] &&\n foundFocusTargetPriority < FocusTargetPriority.FocusedModifier) {\n focusTarget = day;\n foundFocusTargetPriority = FocusTargetPriority.FocusedModifier;\n }\n else if (lastFocused?.isEqualTo(day) &&\n foundFocusTargetPriority < FocusTargetPriority.LastFocused) {\n focusTarget = day;\n foundFocusTargetPriority = FocusTargetPriority.LastFocused;\n }\n else if (isSelected(day.date) &&\n foundFocusTargetPriority < FocusTargetPriority.Selected) {\n focusTarget = day;\n foundFocusTargetPriority = FocusTargetPriority.Selected;\n }\n else if (modifiers[DayFlag.today] &&\n foundFocusTargetPriority < FocusTargetPriority.Today) {\n focusTarget = day;\n foundFocusTargetPriority = FocusTargetPriority.Today;\n }\n }\n }\n if (!focusTarget) {\n // Return the first day that is focusable\n focusTarget = days.find((day) => isFocusableDay(getModifiers(day)));\n }\n return focusTarget;\n}\n","/**\n * Calculates the next date that should be focused in the calendar.\n *\n * This function determines the next focusable date based on the movement\n * direction, constraints, and calendar configuration.\n *\n * @param moveBy The unit of movement (e.g., \"day\", \"week\").\n * @param moveDir The direction of movement (\"before\" or \"after\").\n * @param refDate The reference date from which to calculate the next focusable\n * date.\n * @param navStart The earliest date the user can navigate to.\n * @param navEnd The latest date the user can navigate to.\n * @param props The DayPicker props, including calendar configuration options.\n * @param dateLib The date library to use for date manipulation.\n * @returns The next focusable date.\n */\nexport function getFocusableDate(moveBy, moveDir, refDate, navStart, navEnd, props, dateLib) {\n const { ISOWeek, broadcastCalendar } = props;\n const { addDays, addMonths, addWeeks, addYears, endOfBroadcastWeek, endOfISOWeek, endOfWeek, max, min, startOfBroadcastWeek, startOfISOWeek, startOfWeek, } = dateLib;\n const moveFns = {\n day: addDays,\n week: addWeeks,\n month: addMonths,\n year: addYears,\n startOfWeek: (date) => broadcastCalendar\n ? startOfBroadcastWeek(date, dateLib)\n : ISOWeek\n ? startOfISOWeek(date)\n : startOfWeek(date),\n endOfWeek: (date) => broadcastCalendar\n ? endOfBroadcastWeek(date)\n : ISOWeek\n ? endOfISOWeek(date)\n : endOfWeek(date),\n };\n let focusableDate = moveFns[moveBy](refDate, moveDir === \"after\" ? 1 : -1);\n if (moveDir === \"before\" && navStart) {\n focusableDate = max([navStart, focusableDate]);\n }\n else if (moveDir === \"after\" && navEnd) {\n focusableDate = min([navEnd, focusableDate]);\n }\n return focusableDate;\n}\n","import { CalendarDay } from \"../classes/index.js\";\nimport { dateMatchModifiers } from \"../utils/dateMatchModifiers.js\";\nimport { getFocusableDate } from \"./getFocusableDate.js\";\n/**\n * Determines the next focusable day in the calendar.\n *\n * This function recursively calculates the next focusable day based on the\n * movement direction and modifiers applied to the days.\n *\n * @param moveBy The unit of movement (e.g., \"day\", \"week\").\n * @param moveDir The direction of movement (\"before\" or \"after\").\n * @param refDay The currently focused day.\n * @param calendarStartMonth The earliest month the user can navigate to.\n * @param calendarEndMonth The latest month the user can navigate to.\n * @param props The DayPicker props, including modifiers and configuration\n * options.\n * @param dateLib The date library to use for date manipulation.\n * @param attempt The current recursion attempt (used to limit recursion depth).\n * @returns The next focusable day, or `undefined` if no focusable day is found.\n */\nexport function getNextFocus(moveBy, moveDir, refDay, calendarStartMonth, calendarEndMonth, props, dateLib, attempt = 0) {\n if (attempt > 365) {\n // Limit the recursion to 365 attempts\n return undefined;\n }\n const focusableDate = getFocusableDate(moveBy, moveDir, refDay.date, calendarStartMonth, calendarEndMonth, props, dateLib);\n const isDisabled = Boolean(props.disabled &&\n dateMatchModifiers(focusableDate, props.disabled, dateLib));\n const isHidden = Boolean(props.hidden && dateMatchModifiers(focusableDate, props.hidden, dateLib));\n const targetMonth = focusableDate;\n const focusDay = new CalendarDay(focusableDate, targetMonth, dateLib);\n if (!isDisabled && !isHidden) {\n return focusDay;\n }\n // Recursively attempt to find the next focusable date\n return getNextFocus(moveBy, moveDir, focusDay, calendarStartMonth, calendarEndMonth, props, dateLib, attempt + 1);\n}\n","import { useState } from \"react\";\nimport { calculateFocusTarget } from \"./helpers/calculateFocusTarget.js\";\nimport { getNextFocus } from \"./helpers/getNextFocus.js\";\n/**\n * Manages focus behavior for the DayPicker component, including setting,\n * moving, and blurring focus on calendar days.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param calendar - The calendar object containing the displayed days and\n * months.\n * @param getModifiers - A function to retrieve modifiers for a given day.\n * @param isSelected - A function to check if a date is selected.\n * @param dateLib - The date utility library instance.\n * @returns An object containing focus-related methods and the currently focused\n * day.\n */\nexport function useFocus(props, calendar, getModifiers, isSelected, dateLib) {\n const { autoFocus } = props;\n const [lastFocused, setLastFocused] = useState();\n const focusTarget = calculateFocusTarget(calendar.days, getModifiers, isSelected || (() => false), lastFocused);\n const [focusedDay, setFocused] = useState(autoFocus ? focusTarget : undefined);\n const blur = () => {\n setLastFocused(focusedDay);\n setFocused(undefined);\n };\n const moveFocus = (moveBy, moveDir) => {\n if (!focusedDay)\n return;\n const nextFocus = getNextFocus(moveBy, moveDir, focusedDay, calendar.navStart, calendar.navEnd, props, dateLib);\n if (!nextFocus)\n return;\n if (props.disableNavigation) {\n const isNextInCalendar = calendar.days.some((day) => day.isEqualTo(nextFocus));\n if (!isNextInCalendar) {\n return;\n }\n }\n calendar.goToDay(nextFocus);\n setFocused(nextFocus);\n };\n const isFocusTarget = (day) => {\n return Boolean(focusTarget?.isEqualTo(day));\n };\n const useFocus = {\n isFocusTarget,\n setFocused,\n focused: focusedDay,\n blur,\n moveFocus,\n };\n return useFocus;\n}\n","import { useControlledValue } from \"../helpers/useControlledValue.js\";\n/**\n * Hook to manage multiple-date selection in the DayPicker component.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param dateLib - The date utility library instance.\n * @returns An object containing the selected dates, a function to select dates,\n * and a function to check if a date is selected.\n */\nexport function useMulti(props, dateLib) {\n const { selected: initiallySelected, required, onSelect, } = props;\n const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n const selected = !onSelect ? internallySelected : initiallySelected;\n const { isSameDay } = dateLib;\n const isSelected = (date) => {\n return selected?.some((d) => isSameDay(d, date)) ?? false;\n };\n const { min, max } = props;\n const select = (triggerDate, modifiers, e) => {\n let newDates = [...(selected ?? [])];\n if (isSelected(triggerDate)) {\n if (selected?.length === min) {\n // Min value reached, do nothing\n return;\n }\n if (required && selected?.length === 1) {\n // Required value already selected do nothing\n return;\n }\n newDates = selected?.filter((d) => !isSameDay(d, triggerDate));\n }\n else {\n if (selected?.length === max) {\n // Max value reached, reset the selection to date\n newDates = [triggerDate];\n }\n else {\n // Add the date to the selection\n newDates = [...newDates, triggerDate];\n }\n }\n if (!onSelect) {\n setSelected(newDates);\n }\n onSelect?.(newDates, triggerDate, modifiers, e);\n return newDates;\n };\n return {\n selected,\n select,\n isSelected,\n };\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Adds a date to an existing range, considering constraints like minimum and\n * maximum range size.\n *\n * @param date - The date to add to the range.\n * @param initialRange - The initial range to which the date will be added.\n * @param min - The minimum number of days in the range.\n * @param max - The maximum number of days in the range.\n * @param required - Whether the range must always include at least one date.\n * @param dateLib - The date utility library instance.\n * @returns The updated date range, or `undefined` if the range is cleared.\n * @group Utilities\n */\nexport function addToRange(date, initialRange, min = 0, max = 0, required = false, dateLib = defaultDateLib) {\n const { from, to } = initialRange || {};\n const { isSameDay, isAfter, isBefore } = dateLib;\n let range;\n if (!from && !to) {\n // the range is empty, add the date\n range = { from: date, to: min > 0 ? undefined : date };\n }\n else if (from && !to) {\n // adding date to an incomplete range\n if (isSameDay(from, date)) {\n // adding a date equal to the start of the range\n if (min === 0) {\n range = { from, to: date };\n }\n else if (required) {\n range = { from, to: undefined };\n }\n else {\n range = undefined;\n }\n }\n else if (isBefore(date, from)) {\n // adding a date before the start of the range\n range = { from: date, to: from };\n }\n else {\n // adding a date after the start of the range\n range = { from, to: date };\n }\n }\n else if (from && to) {\n // adding date to a complete range\n if (isSameDay(from, date) && isSameDay(to, date)) {\n // adding a date that is equal to both start and end of the range\n if (required) {\n range = { from, to };\n }\n else {\n range = undefined;\n }\n }\n else if (isSameDay(from, date)) {\n // adding a date equal to the the start of the range\n range = { from, to: min > 0 ? undefined : date };\n }\n else if (isSameDay(to, date)) {\n // adding a dare equal to the end of the range\n range = { from: date, to: min > 0 ? undefined : date };\n }\n else if (isBefore(date, from)) {\n // adding a date before the start of the range\n range = { from: date, to: to };\n }\n else if (isAfter(date, from)) {\n // adding a date after the start of the range\n range = { from, to: date };\n }\n else if (isAfter(date, to)) {\n // adding a date after the end of the range\n range = { from, to: date };\n }\n else {\n throw new Error(\"Invalid range\");\n }\n }\n // check for min / max\n if (range?.from && range?.to) {\n const diff = dateLib.differenceInCalendarDays(range.to, range.from);\n if (max > 0 && diff > max) {\n range = { from: date, to: undefined };\n }\n else if (min > 1 && diff < min) {\n range = { from: date, to: undefined };\n }\n }\n return range;\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Checks if a date range contains one or more specified days of the week.\n *\n * @since 9.2.2\n * @param range - The date range to check.\n * @param dayOfWeek - The day(s) of the week to check for (`0-6`, where `0` is\n * Sunday).\n * @param dateLib - The date utility library instance.\n * @returns `true` if the range contains the specified day(s) of the week,\n * otherwise `false`.\n * @group Utilities\n */\nexport function rangeContainsDayOfWeek(range, dayOfWeek, dateLib = defaultDateLib) {\n const dayOfWeekArr = !Array.isArray(dayOfWeek) ? [dayOfWeek] : dayOfWeek;\n let date = range.from;\n const totalDays = dateLib.differenceInCalendarDays(range.to, range.from);\n // iterate at maximum one week or the total days if the range is shorter than one week\n const totalDaysLimit = Math.min(totalDays, 6);\n for (let i = 0; i <= totalDaysLimit; i++) {\n if (dayOfWeekArr.includes(date.getDay())) {\n return true;\n }\n date = dateLib.addDays(date, 1);\n }\n return false;\n}\n","import { defaultDateLib } from \"../classes/index.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\n/**\n * Determines if two date ranges overlap.\n *\n * @since 9.2.2\n * @param rangeLeft - The first date range.\n * @param rangeRight - The second date range.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the ranges overlap, otherwise `false`.\n * @group Utilities\n */\nexport function rangeOverlaps(rangeLeft, rangeRight, dateLib = defaultDateLib) {\n return (rangeIncludesDate(rangeLeft, rangeRight.from, false, dateLib) ||\n rangeIncludesDate(rangeLeft, rangeRight.to, false, dateLib) ||\n rangeIncludesDate(rangeRight, rangeLeft.from, false, dateLib) ||\n rangeIncludesDate(rangeRight, rangeLeft.to, false, dateLib));\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\nimport { dateMatchModifiers } from \"./dateMatchModifiers.js\";\nimport { rangeContainsDayOfWeek } from \"./rangeContainsDayOfWeek.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\nimport { rangeOverlaps } from \"./rangeOverlaps.js\";\nimport { isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, isDatesArray, isDayOfWeekType, } from \"./typeguards.js\";\n/**\n * Checks if a date range contains dates that match the given modifiers.\n *\n * @since 9.2.2\n * @param range - The date range to check.\n * @param modifiers - The modifiers to match against.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the range contains matching dates, otherwise `false`.\n * @group Utilities\n */\nexport function rangeContainsModifiers(range, modifiers, dateLib = defaultDateLib) {\n const matchers = Array.isArray(modifiers) ? modifiers : [modifiers];\n // Defer function matchers evaluation as they are the least performant.\n const nonFunctionMatchers = matchers.filter((matcher) => typeof matcher !== \"function\");\n const nonFunctionMatchersResult = nonFunctionMatchers.some((matcher) => {\n if (typeof matcher === \"boolean\")\n return matcher;\n if (dateLib.isDate(matcher)) {\n return rangeIncludesDate(range, matcher, false, dateLib);\n }\n if (isDatesArray(matcher, dateLib)) {\n return matcher.some((date) => rangeIncludesDate(range, date, false, dateLib));\n }\n if (isDateRange(matcher)) {\n if (matcher.from && matcher.to) {\n return rangeOverlaps(range, { from: matcher.from, to: matcher.to }, dateLib);\n }\n return false;\n }\n if (isDayOfWeekType(matcher)) {\n return rangeContainsDayOfWeek(range, matcher.dayOfWeek, dateLib);\n }\n if (isDateInterval(matcher)) {\n const isClosedInterval = dateLib.isAfter(matcher.before, matcher.after);\n if (isClosedInterval) {\n return rangeOverlaps(range, {\n from: dateLib.addDays(matcher.after, 1),\n to: dateLib.addDays(matcher.before, -1),\n }, dateLib);\n }\n return (dateMatchModifiers(range.from, matcher, dateLib) ||\n dateMatchModifiers(range.to, matcher, dateLib));\n }\n if (isDateAfterType(matcher) || isDateBeforeType(matcher)) {\n return (dateMatchModifiers(range.from, matcher, dateLib) ||\n dateMatchModifiers(range.to, matcher, dateLib));\n }\n return false;\n });\n if (nonFunctionMatchersResult) {\n return true;\n }\n const functionMatchers = matchers.filter((matcher) => typeof matcher === \"function\");\n if (functionMatchers.length) {\n let date = range.from;\n const totalDays = dateLib.differenceInCalendarDays(range.to, range.from);\n for (let i = 0; i <= totalDays; i++) {\n if (functionMatchers.some((matcher) => matcher(date))) {\n return true;\n }\n date = dateLib.addDays(date, 1);\n }\n }\n return false;\n}\n","import { useControlledValue } from \"../helpers/useControlledValue.js\";\nimport { addToRange, rangeContainsModifiers } from \"../utils/index.js\";\nimport { rangeIncludesDate } from \"../utils/rangeIncludesDate.js\";\n/**\n * Hook to manage range selection in the DayPicker component.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param dateLib - The date utility library instance.\n * @returns An object containing the selected range, a function to select a\n * range, and a function to check if a date is within the range.\n */\nexport function useRange(props, dateLib) {\n const { disabled, excludeDisabled, selected: initiallySelected, required, onSelect, } = props;\n const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n const selected = !onSelect ? internallySelected : initiallySelected;\n const isSelected = (date) => selected && rangeIncludesDate(selected, date, false, dateLib);\n const select = (triggerDate, modifiers, e) => {\n const { min, max } = props;\n const newRange = triggerDate\n ? addToRange(triggerDate, selected, min, max, required, dateLib)\n : undefined;\n if (excludeDisabled && disabled && newRange?.from && newRange.to) {\n if (rangeContainsModifiers({ from: newRange.from, to: newRange.to }, disabled, dateLib)) {\n // if a disabled days is found, the range is reset\n newRange.from = triggerDate;\n newRange.to = undefined;\n }\n }\n if (!onSelect) {\n setSelected(newRange);\n }\n onSelect?.(newRange, triggerDate, modifiers, e);\n return newRange;\n };\n return {\n selected,\n select,\n isSelected,\n };\n}\n","import { useControlledValue } from \"../helpers/useControlledValue.js\";\n/**\n * Hook to manage single-date selection in the DayPicker component.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param dateLib - The date utility library instance.\n * @returns An object containing the selected date, a function to select a date,\n * and a function to check if a date is selected.\n */\nexport function useSingle(props, dateLib) {\n const { selected: initiallySelected, required, onSelect, } = props;\n const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n const selected = !onSelect ? internallySelected : initiallySelected;\n const { isSameDay } = dateLib;\n const isSelected = (compareDate) => {\n return selected ? isSameDay(selected, compareDate) : false;\n };\n const select = (triggerDate, modifiers, e) => {\n let newDate = triggerDate;\n if (!required && selected && selected && isSameDay(triggerDate, selected)) {\n // If the date is the same, clear the selection.\n newDate = undefined;\n }\n if (!onSelect) {\n setSelected(newDate);\n }\n if (required) {\n onSelect?.(newDate, triggerDate, modifiers, e);\n }\n else {\n onSelect?.(newDate, triggerDate, modifiers, e);\n }\n return newDate;\n };\n return {\n selected,\n select,\n isSelected,\n };\n}\n","import { useMulti } from \"./selection/useMulti.js\";\nimport { useRange } from \"./selection/useRange.js\";\nimport { useSingle } from \"./selection/useSingle.js\";\n/**\n * Determines the appropriate selection hook to use based on the selection mode\n * and returns the corresponding selection object.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param dateLib - The date utility library instance.\n * @returns The selection object for the specified mode, or `undefined` if no\n * mode is set.\n */\nexport function useSelection(props, dateLib) {\n const single = useSingle(props, dateLib);\n const multi = useMulti(props, dateLib);\n const range = useRange(props, dateLib);\n switch (props.mode) {\n case \"single\":\n return single;\n case \"multiple\":\n return multi;\n case \"range\":\n return range;\n default:\n return undefined;\n }\n}\n","import { TZDate } from \"@date-fns/tz\";\n/**\n * Convert a {@link Date} or {@link TZDate} instance to the given time zone.\n * Reuses the same instance when it is already a {@link TZDate} using the target\n * time zone to avoid extra allocations.\n */\nexport function toTimeZone(date, timeZone) {\n if (date instanceof TZDate && date.timeZone === timeZone) {\n return date;\n }\n return new TZDate(date, timeZone);\n}\n","import { TZDate } from \"@date-fns/tz\";\nimport { toTimeZone } from \"./toTimeZone.js\";\nimport { isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, } from \"./typeguards.js\";\nfunction toZoneNoon(date, timeZone, noonSafe) {\n if (!noonSafe)\n return toTimeZone(date, timeZone);\n const zoned = toTimeZone(date, timeZone);\n const noonZoned = new TZDate(zoned.getFullYear(), zoned.getMonth(), zoned.getDate(), 12, 0, 0, timeZone);\n return new Date(noonZoned.getTime());\n}\nfunction convertMatcher(matcher, timeZone, noonSafe) {\n if (typeof matcher === \"boolean\" || typeof matcher === \"function\") {\n return matcher;\n }\n if (matcher instanceof Date) {\n return toZoneNoon(matcher, timeZone, noonSafe);\n }\n if (Array.isArray(matcher)) {\n return matcher.map((value) => value instanceof Date ? toZoneNoon(value, timeZone, noonSafe) : value);\n }\n if (isDateRange(matcher)) {\n return {\n ...matcher,\n from: matcher.from ? toTimeZone(matcher.from, timeZone) : matcher.from,\n to: matcher.to ? toTimeZone(matcher.to, timeZone) : matcher.to,\n };\n }\n if (isDateInterval(matcher)) {\n return {\n before: toZoneNoon(matcher.before, timeZone, noonSafe),\n after: toZoneNoon(matcher.after, timeZone, noonSafe),\n };\n }\n if (isDateAfterType(matcher)) {\n return {\n after: toZoneNoon(matcher.after, timeZone, noonSafe),\n };\n }\n if (isDateBeforeType(matcher)) {\n return {\n before: toZoneNoon(matcher.before, timeZone, noonSafe),\n };\n }\n return matcher;\n}\n/**\n * Convert any {@link Matcher} or array of matchers to the specified time zone.\n *\n * @param matchers - The matcher or matchers to convert.\n * @param timeZone - The target IANA time zone.\n * @returns The converted matcher(s).\n * @group Utilities\n */\nexport function convertMatchersToTimeZone(matchers, timeZone, noonSafe) {\n if (!matchers) {\n return matchers;\n }\n if (Array.isArray(matchers)) {\n return matchers.map((matcher) => convertMatcher(matcher, timeZone, noonSafe));\n }\n return convertMatcher(matchers, timeZone, noonSafe);\n}\n","import React, { useCallback, useMemo, useRef } from \"react\";\nimport { DateLib, defaultLocale } from \"./classes/DateLib.js\";\nimport { createGetModifiers } from \"./helpers/createGetModifiers.js\";\nimport { getClassNamesForModifiers } from \"./helpers/getClassNamesForModifiers.js\";\nimport { getComponents } from \"./helpers/getComponents.js\";\nimport { getDataAttributes } from \"./helpers/getDataAttributes.js\";\nimport { getDefaultClassNames } from \"./helpers/getDefaultClassNames.js\";\nimport { getFormatters } from \"./helpers/getFormatters.js\";\nimport { getLabels } from \"./helpers/getLabels.js\";\nimport { getMonthOptions } from \"./helpers/getMonthOptions.js\";\nimport { getStyleForModifiers } from \"./helpers/getStyleForModifiers.js\";\nimport { getWeekdays } from \"./helpers/getWeekdays.js\";\nimport { getYearOptions } from \"./helpers/getYearOptions.js\";\nimport { createNoonOverrides } from \"./noonDateLib.js\";\nimport { DayFlag, SelectionState, UI } from \"./UI.js\";\nimport { useAnimation } from \"./useAnimation.js\";\nimport { useCalendar } from \"./useCalendar.js\";\nimport { dayPickerContext } from \"./useDayPicker.js\";\nimport { useFocus } from \"./useFocus.js\";\nimport { useSelection } from \"./useSelection.js\";\nimport { convertMatchersToTimeZone } from \"./utils/convertMatchersToTimeZone.js\";\nimport { rangeIncludesDate } from \"./utils/rangeIncludesDate.js\";\nimport { toTimeZone } from \"./utils/toTimeZone.js\";\nimport { isDateRange } from \"./utils/typeguards.js\";\n/**\n * Renders the DayPicker calendar component.\n *\n * @param initialProps - The props for the DayPicker component.\n * @returns The rendered DayPicker component.\n * @group DayPicker\n * @see https://daypicker.dev\n */\nexport function DayPicker(initialProps) {\n let props = initialProps;\n const timeZone = props.timeZone;\n if (timeZone) {\n props = {\n ...initialProps,\n timeZone,\n };\n if (props.today) {\n props.today = toTimeZone(props.today, timeZone);\n }\n if (props.month) {\n props.month = toTimeZone(props.month, timeZone);\n }\n if (props.defaultMonth) {\n props.defaultMonth = toTimeZone(props.defaultMonth, timeZone);\n }\n if (props.startMonth) {\n props.startMonth = toTimeZone(props.startMonth, timeZone);\n }\n if (props.endMonth) {\n props.endMonth = toTimeZone(props.endMonth, timeZone);\n }\n if (props.mode === \"single\" && props.selected) {\n props.selected = toTimeZone(props.selected, timeZone);\n }\n else if (props.mode === \"multiple\" && props.selected) {\n props.selected = props.selected?.map((date) => toTimeZone(date, timeZone));\n }\n else if (props.mode === \"range\" && props.selected) {\n props.selected = {\n from: props.selected.from\n ? toTimeZone(props.selected.from, timeZone)\n : props.selected.from,\n to: props.selected.to\n ? toTimeZone(props.selected.to, timeZone)\n : props.selected.to,\n };\n }\n if (props.disabled !== undefined) {\n props.disabled = convertMatchersToTimeZone(props.disabled, timeZone);\n }\n if (props.hidden !== undefined) {\n props.hidden = convertMatchersToTimeZone(props.hidden, timeZone);\n }\n if (props.modifiers) {\n const nextModifiers = {};\n Object.keys(props.modifiers).forEach((key) => {\n nextModifiers[key] = convertMatchersToTimeZone(props.modifiers?.[key], timeZone);\n });\n props.modifiers = nextModifiers;\n }\n }\n const { components, formatters, labels, dateLib, locale, classNames } = useMemo(() => {\n const locale = { ...defaultLocale, ...props.locale };\n const weekStartsOn = props.broadcastCalendar ? 1 : props.weekStartsOn;\n const noonOverrides = props.noonSafe && props.timeZone\n ? createNoonOverrides(props.timeZone, {\n weekStartsOn,\n locale,\n })\n : undefined;\n const overrides = props.dateLib && noonOverrides\n ? { ...noonOverrides, ...props.dateLib }\n : (props.dateLib ?? noonOverrides);\n const dateLib = new DateLib({\n locale,\n weekStartsOn,\n firstWeekContainsDate: props.firstWeekContainsDate,\n useAdditionalWeekYearTokens: props.useAdditionalWeekYearTokens,\n useAdditionalDayOfYearTokens: props.useAdditionalDayOfYearTokens,\n timeZone: props.timeZone,\n numerals: props.numerals,\n }, overrides);\n return {\n dateLib,\n components: getComponents(props.components),\n formatters: getFormatters(props.formatters),\n labels: getLabels(props.labels, dateLib.options),\n locale,\n classNames: { ...getDefaultClassNames(), ...props.classNames },\n };\n }, [\n props.locale,\n props.broadcastCalendar,\n props.weekStartsOn,\n props.firstWeekContainsDate,\n props.useAdditionalWeekYearTokens,\n props.useAdditionalDayOfYearTokens,\n props.timeZone,\n props.numerals,\n props.dateLib,\n props.noonSafe,\n props.components,\n props.formatters,\n props.labels,\n props.classNames,\n ]);\n if (!props.today) {\n props = { ...props, today: dateLib.today() };\n }\n const { captionLayout, mode, navLayout, numberOfMonths = 1, onDayBlur, onDayClick, onDayFocus, onDayKeyDown, onDayMouseEnter, onDayMouseLeave, onNextClick, onPrevClick, showWeekNumber, styles, } = props;\n const { formatCaption, formatDay, formatMonthDropdown, formatWeekNumber, formatWeekNumberHeader, formatWeekdayName, formatYearDropdown, } = formatters;\n const calendar = useCalendar(props, dateLib);\n const { days, months, navStart, navEnd, previousMonth, nextMonth, goToMonth, } = calendar;\n const getModifiers = createGetModifiers(days, props, navStart, navEnd, dateLib);\n const { isSelected, select, selected: selectedValue, } = useSelection(props, dateLib) ?? {};\n const { blur, focused, isFocusTarget, moveFocus, setFocused } = useFocus(props, calendar, getModifiers, isSelected ?? (() => false), dateLib);\n const { labelDayButton, labelGridcell, labelGrid, labelMonthDropdown, labelNav, labelPrevious, labelNext, labelWeekday, labelWeekNumber, labelWeekNumberHeader, labelYearDropdown, } = labels;\n const weekdays = useMemo(() => getWeekdays(dateLib, props.ISOWeek, props.broadcastCalendar, props.today), [dateLib, props.ISOWeek, props.broadcastCalendar, props.today]);\n const isInteractive = mode !== undefined || onDayClick !== undefined;\n const handlePreviousClick = useCallback(() => {\n if (!previousMonth)\n return;\n goToMonth(previousMonth);\n onPrevClick?.(previousMonth);\n }, [previousMonth, goToMonth, onPrevClick]);\n const handleNextClick = useCallback(() => {\n if (!nextMonth)\n return;\n goToMonth(nextMonth);\n onNextClick?.(nextMonth);\n }, [goToMonth, nextMonth, onNextClick]);\n const handleDayClick = useCallback((day, m) => (e) => {\n e.preventDefault();\n e.stopPropagation();\n setFocused(day);\n if (m.disabled) {\n return;\n }\n select?.(day.date, m, e);\n onDayClick?.(day.date, m, e);\n }, [select, onDayClick, setFocused]);\n const handleDayFocus = useCallback((day, m) => (e) => {\n setFocused(day);\n onDayFocus?.(day.date, m, e);\n }, [onDayFocus, setFocused]);\n const handleDayBlur = useCallback((day, m) => (e) => {\n blur();\n onDayBlur?.(day.date, m, e);\n }, [blur, onDayBlur]);\n const handleDayKeyDown = useCallback((day, modifiers) => (e) => {\n const keyMap = {\n ArrowLeft: [\n e.shiftKey ? \"month\" : \"day\",\n props.dir === \"rtl\" ? \"after\" : \"before\",\n ],\n ArrowRight: [\n e.shiftKey ? \"month\" : \"day\",\n props.dir === \"rtl\" ? \"before\" : \"after\",\n ],\n ArrowDown: [e.shiftKey ? \"year\" : \"week\", \"after\"],\n ArrowUp: [e.shiftKey ? \"year\" : \"week\", \"before\"],\n PageUp: [e.shiftKey ? \"year\" : \"month\", \"before\"],\n PageDown: [e.shiftKey ? \"year\" : \"month\", \"after\"],\n Home: [\"startOfWeek\", \"before\"],\n End: [\"endOfWeek\", \"after\"],\n };\n if (keyMap[e.key]) {\n e.preventDefault();\n e.stopPropagation();\n const [moveBy, moveDir] = keyMap[e.key];\n moveFocus(moveBy, moveDir);\n }\n onDayKeyDown?.(day.date, modifiers, e);\n }, [moveFocus, onDayKeyDown, props.dir]);\n const handleDayMouseEnter = useCallback((day, modifiers) => (e) => {\n onDayMouseEnter?.(day.date, modifiers, e);\n }, [onDayMouseEnter]);\n const handleDayMouseLeave = useCallback((day, modifiers) => (e) => {\n onDayMouseLeave?.(day.date, modifiers, e);\n }, [onDayMouseLeave]);\n const handleMonthChange = useCallback((date) => (e) => {\n const selectedMonth = Number(e.target.value);\n const month = dateLib.setMonth(dateLib.startOfMonth(date), selectedMonth);\n goToMonth(month);\n }, [dateLib, goToMonth]);\n const handleYearChange = useCallback((date) => (e) => {\n const selectedYear = Number(e.target.value);\n const month = dateLib.setYear(dateLib.startOfMonth(date), selectedYear);\n goToMonth(month);\n }, [dateLib, goToMonth]);\n const { className, style } = useMemo(() => ({\n className: [classNames[UI.Root], props.className]\n .filter(Boolean)\n .join(\" \"),\n style: { ...styles?.[UI.Root], ...props.style },\n }), [classNames, props.className, props.style, styles]);\n const dataAttributes = getDataAttributes(props);\n const rootElRef = useRef(null);\n useAnimation(rootElRef, Boolean(props.animate), {\n classNames,\n months,\n focused,\n dateLib,\n });\n const contextValue = {\n dayPickerProps: props,\n selected: selectedValue,\n select: select,\n isSelected,\n months,\n nextMonth,\n previousMonth,\n goToMonth,\n getModifiers,\n components,\n classNames,\n styles,\n labels,\n formatters,\n };\n return (React.createElement(dayPickerContext.Provider, { value: contextValue },\n React.createElement(components.Root, { rootRef: props.animate ? rootElRef : undefined, className: className, style: style, dir: props.dir, id: props.id, lang: props.lang, nonce: props.nonce, title: props.title, role: props.role, \"aria-label\": props[\"aria-label\"], \"aria-labelledby\": props[\"aria-labelledby\"], ...dataAttributes },\n React.createElement(components.Months, { className: classNames[UI.Months], style: styles?.[UI.Months] },\n !props.hideNavigation && !navLayout && (React.createElement(components.Nav, { \"data-animated-nav\": props.animate ? \"true\" : undefined, className: classNames[UI.Nav], style: styles?.[UI.Nav], \"aria-label\": labelNav(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth: previousMonth, nextMonth: nextMonth })),\n months.map((calendarMonth, displayIndex) => {\n return (React.createElement(components.Month, { \"data-animated-month\": props.animate ? \"true\" : undefined, className: classNames[UI.Month], style: styles?.[UI.Month], \n // biome-ignore lint/suspicious/noArrayIndexKey: breaks animation\n key: displayIndex, displayIndex: displayIndex, calendarMonth: calendarMonth },\n navLayout === \"around\" &&\n !props.hideNavigation &&\n displayIndex === 0 && (React.createElement(components.PreviousMonthButton, { type: \"button\", className: classNames[UI.PreviousMonthButton], tabIndex: previousMonth ? undefined : -1, \"aria-disabled\": previousMonth ? undefined : true, \"aria-label\": labelPrevious(previousMonth), onClick: handlePreviousClick, \"data-animated-button\": props.animate ? \"true\" : undefined },\n React.createElement(components.Chevron, { disabled: previousMonth ? undefined : true, className: classNames[UI.Chevron], orientation: props.dir === \"rtl\" ? \"right\" : \"left\" }))),\n React.createElement(components.MonthCaption, { \"data-animated-caption\": props.animate ? \"true\" : undefined, className: classNames[UI.MonthCaption], style: styles?.[UI.MonthCaption], calendarMonth: calendarMonth, displayIndex: displayIndex }, captionLayout?.startsWith(\"dropdown\") ? (React.createElement(components.DropdownNav, { className: classNames[UI.Dropdowns], style: styles?.[UI.Dropdowns] },\n (() => {\n const monthControl = captionLayout === \"dropdown\" ||\n captionLayout === \"dropdown-months\" ? (React.createElement(components.MonthsDropdown, { key: \"month\", className: classNames[UI.MonthsDropdown], \"aria-label\": labelMonthDropdown(), classNames: classNames, components: components, disabled: Boolean(props.disableNavigation), onChange: handleMonthChange(calendarMonth.date), options: getMonthOptions(calendarMonth.date, navStart, navEnd, formatters, dateLib), style: styles?.[UI.Dropdown], value: dateLib.getMonth(calendarMonth.date) })) : (React.createElement(\"span\", { key: \"month\" }, formatMonthDropdown(calendarMonth.date, dateLib)));\n const yearControl = captionLayout === \"dropdown\" ||\n captionLayout === \"dropdown-years\" ? (React.createElement(components.YearsDropdown, { key: \"year\", className: classNames[UI.YearsDropdown], \"aria-label\": labelYearDropdown(dateLib.options), classNames: classNames, components: components, disabled: Boolean(props.disableNavigation), onChange: handleYearChange(calendarMonth.date), options: getYearOptions(navStart, navEnd, formatters, dateLib, Boolean(props.reverseYears)), style: styles?.[UI.Dropdown], value: dateLib.getYear(calendarMonth.date) })) : (React.createElement(\"span\", { key: \"year\" }, formatYearDropdown(calendarMonth.date, dateLib)));\n const controls = dateLib.getMonthYearOrder() === \"year-first\"\n ? [yearControl, monthControl]\n : [monthControl, yearControl];\n return controls;\n })(),\n React.createElement(\"span\", { role: \"status\", \"aria-live\": \"polite\", style: {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\",\n } }, formatCaption(calendarMonth.date, dateLib.options, dateLib)))) : (React.createElement(components.CaptionLabel, { className: classNames[UI.CaptionLabel], role: \"status\", \"aria-live\": \"polite\" }, formatCaption(calendarMonth.date, dateLib.options, dateLib)))),\n navLayout === \"around\" &&\n !props.hideNavigation &&\n displayIndex === numberOfMonths - 1 && (React.createElement(components.NextMonthButton, { type: \"button\", className: classNames[UI.NextMonthButton], tabIndex: nextMonth ? undefined : -1, \"aria-disabled\": nextMonth ? undefined : true, \"aria-label\": labelNext(nextMonth), onClick: handleNextClick, \"data-animated-button\": props.animate ? \"true\" : undefined },\n React.createElement(components.Chevron, { disabled: nextMonth ? undefined : true, className: classNames[UI.Chevron], orientation: props.dir === \"rtl\" ? \"left\" : \"right\" }))),\n displayIndex === numberOfMonths - 1 &&\n navLayout === \"after\" &&\n !props.hideNavigation && (React.createElement(components.Nav, { \"data-animated-nav\": props.animate ? \"true\" : undefined, className: classNames[UI.Nav], style: styles?.[UI.Nav], \"aria-label\": labelNav(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth: previousMonth, nextMonth: nextMonth })),\n React.createElement(components.MonthGrid, { role: \"grid\", \"aria-multiselectable\": mode === \"multiple\" || mode === \"range\", \"aria-label\": labelGrid(calendarMonth.date, dateLib.options, dateLib) ||\n undefined, className: classNames[UI.MonthGrid], style: styles?.[UI.MonthGrid] },\n !props.hideWeekdays && (React.createElement(components.Weekdays, { \"data-animated-weekdays\": props.animate ? \"true\" : undefined, className: classNames[UI.Weekdays], style: styles?.[UI.Weekdays] },\n showWeekNumber && (React.createElement(components.WeekNumberHeader, { \"aria-label\": labelWeekNumberHeader(dateLib.options), className: classNames[UI.WeekNumberHeader], style: styles?.[UI.WeekNumberHeader], scope: \"col\" }, formatWeekNumberHeader())),\n weekdays.map((weekday) => (React.createElement(components.Weekday, { \"aria-label\": labelWeekday(weekday, dateLib.options, dateLib), className: classNames[UI.Weekday], key: String(weekday), style: styles?.[UI.Weekday], scope: \"col\" }, formatWeekdayName(weekday, dateLib.options, dateLib)))))),\n React.createElement(components.Weeks, { \"data-animated-weeks\": props.animate ? \"true\" : undefined, className: classNames[UI.Weeks], style: styles?.[UI.Weeks] }, calendarMonth.weeks.map((week) => {\n return (React.createElement(components.Week, { className: classNames[UI.Week], key: week.weekNumber, style: styles?.[UI.Week], week: week },\n showWeekNumber && (React.createElement(components.WeekNumber, { week: week, style: styles?.[UI.WeekNumber], \"aria-label\": labelWeekNumber(week.weekNumber, {\n locale,\n }), className: classNames[UI.WeekNumber], scope: \"row\", role: \"rowheader\" }, formatWeekNumber(week.weekNumber, dateLib))),\n week.days.map((day) => {\n const { date } = day;\n const modifiers = getModifiers(day);\n modifiers[DayFlag.focused] =\n !modifiers.hidden &&\n Boolean(focused?.isEqualTo(day));\n modifiers[SelectionState.selected] =\n isSelected?.(date) || modifiers.selected;\n if (isDateRange(selectedValue)) {\n // add range modifiers\n const { from, to } = selectedValue;\n modifiers[SelectionState.range_start] = Boolean(from && to && dateLib.isSameDay(date, from));\n modifiers[SelectionState.range_end] = Boolean(from && to && dateLib.isSameDay(date, to));\n modifiers[SelectionState.range_middle] =\n rangeIncludesDate(selectedValue, date, true, dateLib);\n }\n const style = getStyleForModifiers(modifiers, styles, props.modifiersStyles);\n const className = getClassNamesForModifiers(modifiers, classNames, props.modifiersClassNames);\n const ariaLabel = !isInteractive && !modifiers.hidden\n ? labelGridcell(date, modifiers, dateLib.options, dateLib)\n : undefined;\n return (React.createElement(components.Day, { key: `${day.isoDate}_${day.displayMonthId}`, day: day, modifiers: modifiers, className: className.join(\" \"), style: style, role: \"gridcell\", \"aria-selected\": modifiers.selected || undefined, \"aria-label\": ariaLabel, \"data-day\": day.isoDate, \"data-month\": day.outside ? day.dateMonthId : undefined, \"data-selected\": modifiers.selected || undefined, \"data-disabled\": modifiers.disabled || undefined, \"data-hidden\": modifiers.hidden || undefined, \"data-outside\": day.outside || undefined, \"data-focused\": modifiers.focused || undefined, \"data-today\": modifiers.today || undefined }, !modifiers.hidden && isInteractive ? (React.createElement(components.DayButton, { className: classNames[UI.DayButton], style: styles?.[UI.DayButton], type: \"button\", day: day, modifiers: modifiers, disabled: (!modifiers.focused &&\n modifiers.disabled) ||\n undefined, \"aria-disabled\": (modifiers.focused &&\n modifiers.disabled) ||\n undefined, tabIndex: isFocusTarget(day) ? 0 : -1, \"aria-label\": labelDayButton(date, modifiers, dateLib.options, dateLib), onClick: handleDayClick(day, modifiers), onBlur: handleDayBlur(day, modifiers), onFocus: handleDayFocus(day, modifiers), onKeyDown: handleDayKeyDown(day, modifiers), onMouseEnter: handleDayMouseEnter(day, modifiers), onMouseLeave: handleDayMouseLeave(day, modifiers) }, formatDay(date, dateLib.options, dateLib))) : (!modifiers.hidden &&\n formatDay(day.date, dateLib.options, dateLib))));\n })));\n })))));\n })),\n props.footer && (React.createElement(components.Footer, { className: classNames[UI.Footer], style: styles?.[UI.Footer], role: \"status\", \"aria-live\": \"polite\" }, props.footer)))));\n}\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const ChevronLeftIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n d=\"M12.5 15L7.5 10L12.5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.67\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ),\n);\n\nChevronLeftIcon.displayName = \"ChevronLeftIcon\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const ChevronRightIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n d=\"M7.5 15L12.5 10L7.5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.67\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ),\n);\n\nChevronRightIcon.displayName = \"ChevronRightIcon\";\n","import { forwardRef, useEffect, useRef } from \"react\";\nimport {\n type ChevronProps,\n type DateRange,\n type DayButtonProps,\n DayPicker,\n type DayPickerProps,\n type DayProps,\n type MonthGridProps,\n type WeekdayProps,\n type WeekdaysProps,\n type WeekProps,\n type WeeksProps,\n} from \"react-day-picker\";\nimport { cn } from \"../../utils/cn\";\nimport type { OmitDistributed } from \"../../utils/types\";\nimport { Button } from \"../Button/Button\";\nimport { ChevronLeftIcon } from \"../Icons/ChevronLeftIcon\";\nimport { ChevronRightIcon } from \"../Icons/ChevronRightIcon\";\n\nexport type { DateRange }; // Needed by consumers when passing props\n\nexport type DatePickerType = \"single\" | \"double\";\n\nexport interface DatePickerOwnProps {\n /** Display one month or two side-by-side. @default \"single\" */\n type?: DatePickerType;\n /** Called when the Apply button is clicked. */\n onApply?: () => void;\n /** Called when the Cancel button is clicked. */\n onCancel?: () => void;\n /** Label for the cancel button. @default \"Cancel\" */\n cancelLabel?: string;\n /** Label for the apply button. @default \"Apply\" */\n applyLabel?: string;\n /** Whether to render cancel / apply footer buttons. @default true */\n showFooter?: boolean;\n /** Additional className for the outer container. */\n className?: string;\n}\n\nfunction Day({ day, modifiers, className, ...divProps }: DayProps) {\n const { range_start, range_end } = modifiers;\n const isSingleDayRange = range_start && range_end;\n\n return (\n <div\n className={cn(\n className,\n (range_start || range_end) && !isSingleDayRange && \"from-50% from-transparent to-50%\",\n range_start && !isSingleDayRange && \"bg-linear-to-r to-brand-green-50\",\n range_end && !isSingleDayRange && \"bg-linear-to-l to-brand-green-50\",\n )}\n {...divProps}\n />\n );\n}\n\nfunction DayButton({ day, modifiers, className, ...buttonProps }: DayButtonProps) {\n const ref = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n \"relative z-10 inline-flex size-10 cursor-pointer items-center justify-center rounded-lg\",\n \"typography-body-2-regular\",\n \"transition-colors hover:bg-brand-green-50\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-purple-500\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n modifiers.today && !modifiers.selected && \"border border-brand-green-500\",\n modifiers.selected && !modifiers.range_middle\n ? \"bg-brand-green-500 text-body-black-solid-constant hover:bg-brand-green-500\"\n : \"text-body-100\",\n modifiers.range_middle && \"rounded-none bg-transparent\",\n modifiers.outside && \"pointer-events-none opacity-50\",\n )}\n {...buttonProps}\n />\n );\n}\n\nexport type DatePickerProps = DatePickerOwnProps &\n OmitDistributed<DayPickerProps, \"numberOfMonths\">;\n\nexport const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n type = \"single\",\n onApply,\n onCancel,\n cancelLabel = \"Cancel\",\n applyLabel = \"Apply\",\n showFooter = true,\n className,\n formatters,\n ...dayPickerProps\n },\n ref,\n ) => {\n const numberOfMonths = type === \"double\" ? 2 : 1;\n const isMulti = numberOfMonths > 1;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"inline-flex flex-col rounded-2xl border border-neutral-200 bg-background-inverse-solid shadow-[0px_6px_12px_0px_rgba(0,0,0,0.1)] backdrop-blur-sm\",\n className,\n )}\n >\n <DayPicker\n showOutsideDays\n numberOfMonths={numberOfMonths}\n formatters={{\n formatCaption: (date: Date) =>\n date.toLocaleDateString(\"en-US\", { month: \"short\", year: \"numeric\" }),\n ...formatters,\n }}\n classNames={{\n root: \"w-full\",\n months: \"relative flex\",\n month: \"flex flex-1 flex-col\",\n month_caption: cn(\"flex items-center py-4\", isMulti ? \"justify-center px-2\" : \"px-5\"),\n caption_label: \"typography-body-1-semibold text-body-100\",\n nav: cn(\n \"absolute top-4 z-20 flex\",\n isMulti ? \"pointer-events-none inset-x-3 justify-between\" : \"right-3 gap-1\",\n ),\n button_previous:\n \"pointer-events-auto inline-flex size-8 cursor-pointer items-center justify-center rounded-full text-body-100 transition-colors hover:bg-brand-green-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-purple-500 disabled:cursor-not-allowed disabled:opacity-50\", // !TODO https://linear.app/fanvue/issue/ENG-7301/swap-out-typography-tailwind-utility-classes\n button_next:\n \"pointer-events-auto inline-flex size-8 cursor-pointer items-center justify-center rounded-full text-body-100 transition-colors hover:bg-brand-green-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-purple-500 disabled:cursor-not-allowed disabled:opacity-50\", // !TODO https://linear.app/fanvue/issue/ENG-7301/swap-out-typography-tailwind-utility-classes\n month_grid: cn(\"mb-4\", isMulti ? \"mx-2\" : \"mx-4\"),\n weekdays: \"flex\",\n weekday:\n \"flex h-[30px] w-10 flex-1 items-center justify-center typography-body-2-regular text-body-200\",\n week: \"flex overflow-hidden rounded-lg\",\n day: \"relative flex w-10 flex-1 items-center justify-center\",\n range_middle: \"bg-brand-green-50\",\n hidden: \"hidden\",\n }}\n components={{\n /**\n * !NOTE: We're unable to use semantic elements for the grid due to rdp, as such we've disabled the a11y lint rules for these elements in biome.json.\n */\n Chevron: ({ orientation }: ChevronProps) =>\n orientation === \"left\" ? <ChevronLeftIcon /> : <ChevronRightIcon />,\n MonthGrid: (props: MonthGridProps) => <div role=\"grid\" {...props} />,\n Weekdays: (props: WeekdaysProps) => <div role=\"row\" {...props} />,\n Weekday: (props: WeekdayProps) => <div role=\"columnheader\" {...props} />,\n Weeks: (props: WeeksProps) => <div role=\"rowgroup\" {...props} />,\n Week: ({ week, ...props }: WeekProps) => <div role=\"row\" {...props} />,\n Day,\n DayButton,\n }}\n {...dayPickerProps}\n />\n\n {showFooter && (\n <div className=\"flex gap-4 px-5 pb-4\">\n <Button variant=\"secondary\" size=\"40\" className=\"flex-1\" onClick={onCancel}>\n {cancelLabel}\n </Button>\n <Button variant=\"primary\" size=\"40\" className=\"flex-1\" onClick={onApply}>\n {applyLabel}\n </Button>\n </div>\n )}\n </div>\n );\n },\n);\n\nDatePicker.displayName = \"DatePicker\";\n","// src/separator.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Separator\";\nvar DEFAULT_ORIENTATION = \"horizontal\";\nvar ORIENTATIONS = [\"horizontal\", \"vertical\"];\nvar Separator = React.forwardRef((props, forwardedRef) => {\n const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;\n const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;\n const ariaOrientation = orientation === \"vertical\" ? orientation : void 0;\n const semanticProps = decorative ? { role: \"none\" } : { \"aria-orientation\": ariaOrientation, role: \"separator\" };\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-orientation\": orientation,\n ...semanticProps,\n ...domProps,\n ref: forwardedRef\n }\n );\n});\nSeparator.displayName = NAME;\nfunction isValidOrientation(orientation) {\n return ORIENTATIONS.includes(orientation);\n}\nvar Root = Separator;\nexport {\n Root,\n Separator\n};\n//# sourceMappingURL=index.mjs.map\n","import * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\nexport type DividerType = \"default\" | \"text\";\n\nexport interface DividerProps\n extends React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root> {\n /** Custom label to display*/\n label?: string;\n}\n\nexport const Divider = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n DividerProps\n>(({ label, className, ...props }, ref) => {\n if (label !== undefined) {\n return (\n <div\n ref={ref}\n className={cn(`my-2 flex w-full items-center justify-center gap-2`, className)}\n >\n <SeparatorPrimitive.Root\n decorative\n orientation=\"horizontal\"\n className=\"h-px flex-1 bg-neutral-200\"\n {...props}\n />\n <span className=\"typography-body-2-regular shrink-0 text-body-100\">{label}</span>\n <SeparatorPrimitive.Root\n decorative\n orientation=\"horizontal\"\n className=\"h-px flex-1 bg-neutral-200\"\n />\n </div>\n );\n }\n\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative\n orientation=\"horizontal\"\n className={cn(`mx-auto my-2 h-px w-full bg-neutral-200`, className)}\n {...props}\n />\n );\n});\n\nDivider.displayName = \"Divider\";\n","import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Count } from \"../Count/Count\";\n\nconst iconButtonVariants = {\n primary:\n \"bg-neutral-400 text-body-300 hover:bg-hover-100 disabled:opacity-50 focus:shadow-focus-ring\",\n secondary: `bg-neutral-100 text-neutral-400 hover:bg-neutral-200 disabled:opacity-50 focus:focus:shadow-focus-ring`,\n tertiary: `bg-transparent text-neutral-400 hover:bg-hover-300 disabled:opacity-50 focus:shadow-focus-ring active:bg-brand-green-50`,\n brand: `bg-body-black-solid-constant text-brand-green-500 hover:bg-brand-green-500 hover:text-body-black-solid-constant disabled:opacity-50 focus:shadow-focus-ring`,\n contrast: `bg-transparent text-body-white-solid-constant disabled:opacity-50 focus:shadow-focus-ring`,\n messaging: `bg-body-black-solid-constant text-brand-green-500 hover:bg-brand-green-500 hover:text-body-black-solid-constant disabled:opacity-50 focus:shadow-focus-ring`,\n navTray: `bg-transparent text-neutral-400 disabled:opacity-50 focus:shadow-focus-ring active:bg-brand-green-50`,\n tertiaryDestructive: `bg-transparent text-error-500 hover:bg-hover-300 disabled:opacity-50 focus:shadow-focus-ring`,\n stop: `bg-neutral-400 text-body-300 hover:bg-brand-green-500 hover:text-body-black-solid-constant`,\n microphone: `bg-neutral-400 text-body-300 hover:bg-brand-green-500 hover:text-body-black-solid-constant`,\n};\n\nconst iconSizeVariants = {\n 24: \"size-4\",\n 32: \"size-5\",\n 40: \"size-6\",\n 52: \"size-7\",\n 72: \"size-8\",\n} as const;\n\nconst sizeVariants = {\n 24: \"p-1\",\n 32: \"p-1.5\",\n 40: \"p-[10px]\",\n 52: \"p-2\",\n 72: \"p-4\",\n} as const;\n\nexport type IconButtonVariant =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"brand\"\n | \"contrast\"\n | \"messaging\"\n | \"navTray\"\n | \"tertiaryDestructive\"\n | \"stop\"\n | \"microphone\";\n\nexport type IconButtonSize = \"24\" | \"32\" | \"40\" | \"52\" | \"72\";\n\nexport interface IconButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"style\"> {\n /** Visual style variant of the icon button */\n variant?: IconButtonVariant;\n /** Size of the button */\n size?: IconButtonSize;\n /** Icon element to display */\n icon: React.ReactNode;\n /** Counter value to display */\n counterValue?: number;\n}\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n { className, variant = \"primary\", size = \"40\", icon, counterValue, disabled = false, ...props },\n ref,\n ) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n data-testid=\"icon-button\"\n disabled={disabled}\n className={cn(\n // Base styles\n \"relative inline-flex shrink-0 items-center justify-center focus-visible:outline-none\",\n \"cursor-pointer rounded-full transition-all duration-150 ease-in-out disabled:cursor-default\",\n // Size variants\n sizeVariants[size],\n // Variant styles\n iconButtonVariants[variant],\n // Manual CSS overrides\n className,\n )}\n {...props}\n >\n <span\n className={cn(\n \"flex shrink-0 items-center justify-center overflow-clip\",\n iconSizeVariants[size],\n )}\n aria-hidden=\"true\"\n >\n {icon}\n </span>\n\n {counterValue !== undefined && (variant === \"tertiary\" || variant === \"navTray\") && (\n <div className=\"absolute top-0 right-0\">\n <Count value={counterValue} />\n </div>\n )}\n </button>\n );\n },\n);\n\nIconButton.displayName = \"IconButton\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const ArrowRightIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M3 10a.75.75 0 0 1 .75-.75h10.638L10.23 5.29a.75.75 0 1 1 1.04-1.08l5.5 5.25a.75.75 0 0 1 0 1.08l-5.5 5.25a.75.75 0 1 1-1.04-1.08l4.158-3.96H3.75A.75.75 0 0 1 3 10Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n);\n\nArrowRightIcon.displayName = \"ArrowRightIcon\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const ArrowUpRightIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.22 14.78a.75.75 0 0 0 1.06 0l7.22-7.22v5.69a.75.75 0 0 0 1.5 0v-7.5a.75.75 0 0 0-.75-.75h-7.5a.75.75 0 0 0 0 1.5h5.69l-7.22 7.22a.75.75 0 0 0 0 1.06Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n);\n\nArrowUpRightIcon.displayName = \"ArrowUpRightIcon\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const CheckCircleIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm3.857-9.809a.75.75 0 0 0-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 1 0-1.06 1.061l2.5 2.5a.75.75 0 0 0 1.137-.089l4-5.5Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n);\n\nCheckCircleIcon.displayName = \"CheckCircleIcon\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const CrownIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path d=\"M3.848 13.913 2 3.91l5.081 4.548L10.315 3l3.234 5.457 5.081-4.548-1.848 10.004H3.848Zm12.934 2.729c0 .546-.37.91-.924.91H4.772c-.555 0-.924-.364-.924-.91v-.91h12.934v.91Z\" />\n </svg>\n ),\n);\n\nCrownIcon.displayName = \"CrownIcon\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const ErrorCircleIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16ZM8.28 7.22a.75.75 0 0 0-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 1 0 1.06 1.06L10 11.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L11.06 10l1.72-1.72a.75.75 0 0 0-1.06-1.06L10 8.94 8.28 7.22Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n);\n\nErrorCircleIcon.displayName = \"ErrorCircleIcon\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const FireIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M13.5 4.938a7 7 0 1 1-9.006 1.737c.202-.257.59-.218.793.039.278.352.594.672.943.954.332.269.786-.049.773-.476a5.977 5.977 0 0 1 .572-2.759 6.026 6.026 0 0 1 2.486-2.665c.247-.14.55-.016.677.238A6.967 6.967 0 0 0 13.5 4.938ZM14 12a4 4 0 0 1-4 4c-1.913 0-3.52-1.398-3.91-3.182-.093-.429.44-.643.814-.413a4.043 4.043 0 0 0 1.601.564c.303.038.531-.24.51-.544a5.975 5.975 0 0 1 1.315-4.192.447.447 0 0 1 .431-.16A4.001 4.001 0 0 1 14 12Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n);\n\nFireIcon.displayName = \"FireIcon\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const HomeIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path d=\"M9.293 2.293a1 1 0 0 1 1.414 0l7 7A1 1 0 0 1 17 11h-1v6a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-6H3a1 1 0 0 1-.707-1.707l7-7Z\" />\n </svg>\n ),\n);\n\nHomeIcon.displayName = \"HomeIcon\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const InfoCircleIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-7-4a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM9 9a.75.75 0 0 0 0 1.5h.253a.25.25 0 0 1 .244.304l-.459 2.066A1.75 1.75 0 0 0 10.747 15H11a.75.75 0 0 0 0-1.5h-.253a.25.25 0 0 1-.244-.304l.459-2.066A1.75 1.75 0 0 0 9.253 9H9Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n);\n\nInfoCircleIcon.displayName = \"InfoCircleIcon\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const PlusIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path d=\"M10.75 4.75a.75.75 0 0 0-1.5 0v4.5h-4.5a.75.75 0 0 0 0 1.5h4.5v4.5a.75.75 0 0 0 1.5 0v-4.5h4.5a.75.75 0 0 0 0-1.5h-4.5v-4.5Z\" />\n </svg>\n ),\n);\n\nPlusIcon.displayName = \"PlusIcon\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\n/** VIP badge icon with metallic gradient background and crown symbol */\nexport const VipBadgeIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => {\n const id = React.useId();\n const bgId = `${id}-bg`;\n const borderId = `${id}-border`;\n\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n aria-hidden=\"true\"\n className={cn(\"size-10\", className)}\n {...props}\n >\n <rect x=\".5\" y=\".5\" width=\"39\" height=\"39\" rx=\"19.5\" fill={`url(#${bgId})`} />\n <rect x=\".5\" y=\".5\" width=\"39\" height=\"39\" rx=\"19.5\" stroke={`url(#${borderId})`} />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12.51 29.524c-.82 0-1.218-.644-1.05-1.32.217-.92 1.35-3.65.498-4.876-1.254-1.795-4.373-1.534-5.075-2.454-.506-.676-.055-1.333.645-1.718 1.571-.92 4.613-.66 7.572-2.469 1.638-.981 3.142-2.975 3.995-4.171 1.203-1.687 1.722-2.04 4.246-2.04h8.84c1.392 0 1.828 2.167-.444 2.405-.585.062-2.145.276-4.368.522-2.123.245-6.837.831-4.981 3.607 1.387 1.457 4.312 1.273 4.981 2.147.484.605.056 1.249-.47 1.558-1.588.92-4.979.819-7.937 2.614-2.006 1.227-3.637 3.957-4.306 4.877-.485.675-1.31 1.319-2.13 1.319h-.016Z\"\n fill=\"#151515\"\n />\n <defs>\n <linearGradient\n id={bgId}\n x1=\"42.37\"\n y1=\"56.63\"\n x2=\"13.3\"\n y2=\"3.28\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#A8A8A6\" />\n <stop offset=\".385\" stopColor=\"#696969\" />\n <stop offset=\".665\" stopColor=\"#F9F8F6\" />\n <stop offset=\".892\" stopColor=\"#D4D4D4\" />\n <stop offset=\"1\" stopColor=\"#7F7F7F\" />\n </linearGradient>\n <linearGradient\n id={borderId}\n x1=\"6.62\"\n y1=\"53.95\"\n x2=\"39.76\"\n y2=\"-.15\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#504F54\" />\n <stop offset=\".203\" stopColor=\"#B1B1B1\" />\n <stop offset=\".388\" stopColor=\"#13181C\" />\n <stop offset=\".588\" stopColor=\"#C6C6C8\" />\n <stop offset=\".693\" stopColor=\"#fff\" />\n <stop offset=\".813\" stopColor=\"#0C0F14\" />\n <stop offset=\"1\" stopColor=\"#696A6E\" />\n </linearGradient>\n </defs>\n </svg>\n );\n },\n);\n\nVipBadgeIcon.displayName = \"VipBadgeIcon\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const WarningTriangleIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625l6.28-10.875ZM10 5a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 10 5Zm0 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n);\n\nWarningTriangleIcon.displayName = \"WarningTriangleIcon\";\n","import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nconst getLogoColors = (color: LogoColor, type: LogoType) => {\n if (color === \"Full colour\") {\n return {\n icon: \"var(--color-brand-green-500)\",\n iconInner: \"var(--color-body-black-solid-constant)\",\n textClass: \"\", // Uses parent's text-body-900 dark:text-body-100\n };\n }\n\n if (color === \"Decolour\") {\n return {\n iconClass: \"fill-[#151515] dark:fill-[#ffffff]\",\n iconInnerClass: \"fill-[#ffffff] dark:fill-[#151515]\",\n textClass: \"\", // Uses parent's text-body-900 dark:text-body-100\n };\n }\n\n if (color === \"White Always\") {\n return {\n icon:\n type === \"Icon\" ? \"var(--color-body-white-solid-constant)\" : \"var(--color-brand-green-500)\",\n iconInner: \"var(--color-body-black-solid-constant)\",\n textClass: \"text-body-white-solid-constant\",\n };\n }\n\n if (color === \"Black Always\") {\n return {\n icon:\n type === \"Icon\" ? \"var(--color-body-black-solid-constant)\" : \"var(--color-brand-green-500)\",\n iconInner:\n type === \"Icon\"\n ? \"var(--color-body-white-solid-constant)\"\n : \"var(--color-body-black-solid-constant)\",\n textClass: \"text-body-black-solid-constant\",\n };\n }\n\n return {\n icon: \"var(--color-brand-green-500)\",\n iconInner: \"var(--color-body-black-solid-constant)\",\n textClass: \"\", // Default to adaptive color\n };\n};\n\nexport type LogoType = \"Full\" | \"Icon\" | \"Wordmark\" | \"Portrait\";\nexport type LogoColor = \"Full colour\" | \"Decolour\" | \"White Always\" | \"Black Always\";\n\nexport interface LogoProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Logo layout type (matches Figma \"Type\" property) */\n type?: LogoType;\n /** Logo color scheme (matches Figma \"Colour\" property) */\n color?: LogoColor;\n /**\n * Accessible label for the logo.\n * Required when type=\"Icon\" and used in interactive contexts (links, buttons).\n * @example \"Fanvue home\" or \"Go to homepage\"\n */\n \"aria-label\"?: string;\n}\n\nconst WordmarkSVG = ({ className }: { className?: string }) => {\n return (\n <svg\n width=\"128\"\n height=\"30\"\n viewBox=\"0 0 128 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n className={className}\n data-testid=\"logo-wordmark\"\n >\n <path\n d=\"M4.29144 15.2807V29.5588H10.4278V15.2807H16.0428V10.0668H10.4278V8.18181C10.4278 7.35294 10.6684 6.69786 11.1497 6.21658C11.631 5.73529 12.2861 5.49465 13.115 5.49465C13.5695 5.49465 13.9572 5.57486 14.2781 5.73529C14.6257 5.86898 14.9331 6.06951 15.2005 6.33689L19.0508 2.48663C18.3021 1.71123 17.4198 1.10963 16.4037 0.681819C15.4144 0.227273 14.2513 0 12.9144 0C11.1497 0 9.62566 0.374331 8.34224 1.12299C7.05882 1.84492 6.05615 2.84759 5.33422 4.13102C4.63903 5.3877 4.29144 6.80481 4.29144 8.38235V10.0668H0V15.2807H4.29144Z\"\n fill=\"currentColor\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M112.349 28.7166C114.006 29.5722 115.891 30 118.004 30C119.635 30 121.132 29.7193 122.496 29.1578C123.859 28.5963 125.022 27.754 125.985 26.631L122.616 23.262C122.028 23.9305 121.346 24.4385 120.571 24.7861C119.795 25.107 118.926 25.2674 117.964 25.2674C116.921 25.2674 116.012 25.0535 115.236 24.6257C114.488 24.1711 113.899 23.5428 113.472 22.7406C113.337 22.4624 113.225 22.166 113.135 21.8515L127.108 21.8182C127.215 21.3102 127.282 20.869 127.308 20.4947C127.362 20.0936 127.389 19.7193 127.389 19.3717C127.389 17.4733 126.961 15.7888 126.105 14.3182C125.276 12.8476 124.127 11.6979 122.656 10.869C121.185 10.0401 119.488 9.62568 117.562 9.62568C115.584 9.62568 113.806 10.0669 112.228 10.9492C110.651 11.8316 109.394 13.0481 108.458 14.5989C107.549 16.123 107.095 17.861 107.095 19.8128C107.095 21.7647 107.562 23.516 108.498 25.0668C109.434 26.6176 110.718 27.8342 112.349 28.7166ZM113.138 17.6391C113.218 17.3577 113.316 17.093 113.431 16.8449C113.833 16.0428 114.381 15.4278 115.076 15C115.798 14.5455 116.64 14.3182 117.603 14.3182C118.512 14.3182 119.274 14.5187 119.889 14.9198C120.53 15.2941 121.012 15.8556 121.333 16.6043C121.467 16.9061 121.575 17.243 121.658 17.615L113.138 17.6391Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M90.6482 28.9171C92.0386 29.639 93.6295 30 95.421 30C97.2124 30 98.7899 29.639 100.154 28.9171C101.517 28.1684 102.587 27.1524 103.362 25.869C104.138 24.5588 104.525 23.0481 104.525 21.3369V10.0668H98.3889V21.2968C98.3889 22.3128 98.1215 23.115 97.5867 23.7032C97.052 24.2647 96.33 24.5454 95.421 24.5454C94.7792 24.5454 94.2311 24.4118 93.7766 24.1444C93.322 23.877 92.9744 23.5027 92.7338 23.0214C92.5199 22.5401 92.4129 21.9652 92.4129 21.2968V10.0668H86.2766V21.377C86.2766 23.0615 86.6643 24.5588 87.4397 25.869C88.2151 27.1524 89.2846 28.1684 90.6482 28.9171Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M71.3524 29.5588L63.0904 10.0668H69.708L73.8792 22.1333L78.0503 10.0668H84.5476L76.2856 29.5588H71.3524Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M55.1386 18.4492V29.5588H61.2749V17.0855C61.2749 15.7486 60.9541 14.5187 60.3124 13.3957C59.6707 12.2727 58.7883 11.377 57.6653 10.7085C56.5691 10.0134 55.299 9.66576 53.8552 9.66576C52.3578 9.66576 51.0076 9.98662 49.8044 10.6283C49.2874 10.8986 48.8195 11.2204 48.4006 11.5939V10.0668H42.2642V29.5588H48.4006V18.4492C48.4006 17.7807 48.5477 17.1925 48.8418 16.6845C49.1359 16.1497 49.537 15.7486 50.045 15.4813C50.553 15.1872 51.1413 15.0401 51.8097 15.0401C52.7723 15.0401 53.561 15.3609 54.176 16.0027C54.8177 16.6176 55.1386 17.4331 55.1386 18.4492Z\"\n fill=\"currentColor\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M26.5533 29.9599C24.7619 29.9599 23.1576 29.5187 21.7405 28.6363C20.3501 27.754 19.2405 26.5508 18.4116 25.0267C17.6094 23.5027 17.2084 21.7647 17.2084 19.8128C17.2084 17.8609 17.6094 16.123 18.4116 14.5989C19.2405 13.0749 20.3501 11.8716 21.7405 10.9893C23.1576 10.1069 24.7619 9.66576 26.5533 9.66576C27.8635 9.66576 29.0399 9.91977 30.0827 10.4278C30.7839 10.7608 31.3988 11.1801 31.9276 11.6855V10.0668H37.9437V29.5588H31.9276V27.9791C31.4153 28.4634 30.8137 28.8697 30.1228 29.1978C29.0533 29.7059 27.8635 29.9599 26.5533 29.9599ZM27.7966 24.4251C29.1068 24.4251 30.1629 23.9973 30.9651 23.1417C31.7672 22.2593 32.1683 21.1497 32.1683 19.8128C32.1683 18.9037 31.9811 18.1016 31.6068 17.4064C31.2592 16.7112 30.7512 16.1765 30.0827 15.8021C29.441 15.4011 28.6923 15.2005 27.8367 15.2005C26.9811 15.2005 26.2191 15.4011 25.5506 15.8021C24.9089 16.1765 24.3875 16.7112 23.9865 17.4064C23.6121 18.1016 23.425 18.9037 23.425 19.8128C23.425 20.6952 23.6121 21.4839 23.9865 22.1791C24.3608 22.8743 24.8822 23.4224 25.5506 23.8235C26.2191 24.2246 26.9677 24.4251 27.7966 24.4251Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n\nexport const Logo = React.forwardRef<HTMLDivElement, LogoProps>(\n ({ className, type = \"Full\", color = \"Full colour\", ...props }, ref) => {\n const colors = getLogoColors(color, type);\n const showIcon = type === \"Full\" || type === \"Icon\" || type === \"Portrait\";\n const showWordmark = type === \"Full\" || type === \"Wordmark\" || type === \"Portrait\";\n\n // When aria-label is provided, add role=\"img\" for proper accessibility\n const ariaProps = props[\"aria-label\"] ? { role: \"img\" as const } : {};\n\n return (\n <div\n ref={ref}\n data-testid=\"logo\"\n className={cn(\n \"inline-flex items-center text-body-900 dark:text-body-100\",\n type === \"Portrait\" ? \"flex-col\" : \"flex-row\",\n type === \"Full\" && \"gap-2\",\n className,\n )}\n {...ariaProps}\n {...props}\n >\n {showIcon && (\n <svg\n viewBox=\"0 0 39 39\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\"shrink-0\", type === \"Icon\" ? \"h-10 w-10\" : \"h-8 w-8\")}\n aria-hidden=\"true\"\n data-testid=\"logo-icon\"\n >\n <path\n d=\"M0 11.2339C0 5.02957 5.02957 0 11.2339 0H27.7661C33.9704 0 39 5.02957 39 11.2339V27.7661C39 33.9704 33.9704 39 27.7661 39H11.2339C5.02957 39 0 33.9704 0 27.7661V11.2339Z\"\n {...(color === \"Decolour\" ? { className: colors.iconClass } : { fill: colors.icon })}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12.277 30.5825C11.4418 30.5825 11.0355 29.8659 11.2059 29.1153C11.4275 28.0916 12.5838 25.0548 11.7145 23.6899C10.4361 21.6938 7.25562 21.9838 6.5397 20.9602C6.02371 20.2089 6.48355 19.478 7.19738 19.0493C8.79967 18.0257 11.902 18.3157 14.9191 16.3025C16.5895 15.2106 18.1237 12.9927 18.993 11.662C20.2203 9.78527 20.7487 9.39287 23.3226 9.39287H32.3376C33.7574 9.39287 34.202 11.8036 31.8852 12.0686C31.2886 12.1368 29.6977 12.3757 27.4306 12.6487C25.2658 12.9216 20.4589 13.5728 22.351 16.6608C23.7658 18.2816 26.7488 18.0769 27.4306 19.0493C27.9238 19.7225 27.4875 20.4384 26.9505 20.7824C25.3311 21.8061 21.8737 21.6938 18.8566 23.6899C16.8111 25.0548 15.1478 28.0916 14.4659 29.1153C13.9716 29.8659 13.1293 30.5825 12.294 30.5825H12.277Z\"\n {...(color === \"Decolour\"\n ? { className: colors.iconInnerClass }\n : { fill: colors.iconInner })}\n />\n </svg>\n )}\n {showWordmark && <WordmarkSVG className={cn(colors.textClass)} />}\n </div>\n );\n },\n);\n\nLogo.displayName = \"Logo\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { IconButton } from \"../IconButton/IconButton\";\nimport { ChevronLeftIcon } from \"../Icons/ChevronLeftIcon\";\nimport { ChevronRightIcon } from \"../Icons/ChevronRightIcon\";\n\nexport type PaginationVariant = \"default\" | \"dots\";\n\nexport interface PaginationProps extends Omit<React.HTMLAttributes<HTMLElement>, \"onChange\"> {\n /** Visual style variant */\n variant?: PaginationVariant;\n /** Total number of pages */\n totalPages: number;\n /** Current active page (1-indexed) */\n currentPage: number;\n /** Called when the page changes */\n onPageChange?: (page: number) => void;\n /** Label for the nav landmark. @default \"Pagination\" */\n ariaLabel?: string;\n /** Label for the previous button. @default \"Previous page\" */\n previousLabel?: string;\n /** Label for the next button. @default \"Next page\" */\n nextLabel?: string;\n /** Generates the aria-label for each page button. @default (page) => \\`Page ${page}\\` */\n getPageLabel?: (page: number) => string;\n}\n\ntype PageItem = number | \"ellipsis-start\" | \"ellipsis-end\";\n\nfunction getVisiblePages(currentPage: number, totalPages: number): PageItem[] {\n if (totalPages <= 7) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const pages: PageItem[] = [1];\n\n if (currentPage <= 4) {\n pages.push(2, 3, 4, 5, \"ellipsis-end\");\n } else if (currentPage >= totalPages - 3) {\n pages.push(\"ellipsis-start\", totalPages - 4, totalPages - 3, totalPages - 2, totalPages - 1);\n } else {\n pages.push(\"ellipsis-start\", currentPage - 1, currentPage, currentPage + 1, \"ellipsis-end\");\n }\n\n pages.push(totalPages);\n return pages;\n}\n\nexport const Pagination = React.forwardRef<HTMLElement, PaginationProps>(\n (\n {\n variant = \"default\",\n totalPages,\n currentPage,\n onPageChange,\n ariaLabel = \"Pagination\",\n previousLabel = \"Previous page\",\n nextLabel = \"Next page\",\n getPageLabel = (page: number) => `Page ${page}`,\n className,\n ...props\n },\n ref,\n ) => {\n const isFirstPage = currentPage <= 1;\n const isLastPage = currentPage >= totalPages;\n\n const handlePrevious = () => {\n if (!isFirstPage) onPageChange?.(currentPage - 1);\n };\n\n const handleNext = () => {\n if (!isLastPage) onPageChange?.(currentPage + 1);\n };\n\n return (\n <nav\n ref={ref}\n aria-label={ariaLabel}\n className={cn(\n \"inline-flex items-center\",\n variant === \"default\" && \"gap-3\",\n variant === \"dots\" && \"gap-4\",\n className,\n )}\n {...props}\n >\n <IconButton\n variant=\"tertiary\"\n size=\"32\"\n icon={<ChevronLeftIcon />}\n aria-label={previousLabel}\n disabled={isFirstPage}\n onClick={handlePrevious}\n />\n\n {variant === \"default\" && (\n <div className=\"flex items-center gap-3\">\n {getVisiblePages(currentPage, totalPages).map((page) =>\n typeof page === \"string\" ? (\n <span\n key={page}\n className=\"flex size-4 items-center justify-center text-body-200 text-xs\"\n aria-hidden=\"true\"\n >\n &hellip;\n </span>\n ) : (\n <button\n key={page}\n type=\"button\"\n aria-label={getPageLabel(page)}\n aria-current={page === currentPage ? \"page\" : undefined}\n onClick={() => onPageChange?.(page)}\n className={cn(\n \"flex size-4 cursor-pointer items-center justify-center rounded-full text-xs transition-colors\",\n page === currentPage\n ? \"bg-neutral-400 text-body-300\"\n : \"bg-neutral-100 text-body-100 hover:bg-neutral-200\",\n )}\n >\n {page}\n </button>\n ),\n )}\n </div>\n )}\n\n {variant === \"dots\" && (\n <div className=\"flex items-center gap-2\">\n {Array.from({ length: totalPages }, (_, i) => i + 1).map((page) => (\n <button\n key={page}\n type=\"button\"\n aria-label={getPageLabel(page)}\n aria-current={page === currentPage ? \"page\" : undefined}\n onClick={() => onPageChange?.(page)}\n className={cn(\n \"cursor-pointer rounded-full transition-all\",\n page === currentPage\n ? \"size-2 bg-neutral-400\"\n : \"size-1.5 bg-neutral-200 hover:bg-neutral-250\",\n )}\n />\n ))}\n </div>\n )}\n\n <IconButton\n variant=\"tertiary\"\n size=\"32\"\n icon={<ChevronRightIcon />}\n aria-label={nextLabel}\n disabled={isLastPage}\n onClick={handleNext}\n />\n </nav>\n );\n },\n);\n\nPagination.displayName = \"Pagination\";\n","import { Slot, Slottable } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nconst pillVariants = {\n variant: {\n green: \"bg-success-50 text-success-500\",\n grey: \"bg-neutral-100 text-body-200\",\n blue: \"bg-info-50 text-info-500\",\n gold: \"bg-warning-50 text-warning-500\",\n pinkLight: \"bg-brand-pink-50 text-body-100\",\n base: \"bg-neutral-400 text-body-300\",\n brand: \"bg-brand-green-500 text-body-black-solid-constant\",\n brandLight: \"bg-brand-green-50 text-body-black-solid-constant\",\n beta: \"bg-brand-pink-500 text-body-black-solid-constant\",\n error: \"bg-error-500 text-error-50\",\n },\n} as const;\n\nexport type PillVariant = keyof typeof pillVariants.variant;\n\nexport interface PillProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Visual style variant of the pill */\n variant?: PillVariant;\n /** Left icon element */\n leftIcon?: React.ReactNode;\n /** Right icon element */\n rightIcon?: React.ReactNode;\n /** Render as a different element using Radix Slot */\n asChild?: boolean;\n}\n\nexport const Pill = React.forwardRef<HTMLSpanElement, PillProps>(\n (\n { className, variant = \"green\", leftIcon, rightIcon, asChild = false, children, ...props },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"span\";\n\n return (\n <Comp\n ref={ref}\n data-testid=\"pill\"\n className={cn(\n // Base styles\n \"inline-flex items-center justify-center gap-2 rounded-full px-3 py-1\",\n // Typography\n \"typography-caption-semibold\",\n // Variant styles\n pillVariants.variant[variant],\n // Manual CSS overrides\n className,\n )}\n {...props}\n >\n {leftIcon && (\n <span className=\"flex\" aria-hidden=\"true\">\n {leftIcon}\n </span>\n )}\n <Slottable>{children}</Slottable>\n {rightIcon && (\n <span className=\"flex\" aria-hidden=\"true\">\n {rightIcon}\n </span>\n )}\n </Comp>\n );\n },\n);\n\nPill.displayName = \"Pill\";\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\n\nexport type ProgressBarSize = \"default\" | \"small\";\nexport type ProgressBarVariant = \"default\" | \"generic\";\n\nexport interface ProgressBarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Current progress value (0-100) */\n value: number;\n /** Size variant - \"default\" (12px track) or \"small\" (6px track) */\n size?: ProgressBarSize;\n /** Color variant - \"default\" uses color-coded progress, \"generic\" always green */\n variant?: ProgressBarVariant;\n /** Title content shown at top left */\n title?: React.ReactNode;\n /** Show the completion percentage at top */\n showCompletion?: boolean;\n /** Steps label shown at top right (e.g. \"2/8 steps\") */\n stepsLabel?: React.ReactNode;\n /** Helper content at bottom left */\n helperLeft?: React.ReactNode;\n /** Helper content at bottom right */\n helperRight?: React.ReactNode;\n /** Icon shown at bottom left before helper text */\n leftIcon?: React.ReactNode;\n /** Accessible label for the progress bar (defaults to \"Progress\"). Use this for i18n. */\n ariaLabel?: string;\n}\n\nconst TRACK_HEIGHT: Record<ProgressBarSize, string> = {\n default: \"h-3\",\n small: \"h-1.5\",\n};\n\nconst GAP: Record<ProgressBarSize, string> = {\n default: \"gap-3\",\n small: \"gap-1\",\n};\n\nfunction getDefaultBarColor(value: number): string {\n if (value >= 100) return \"bg-success-500\";\n if (value >= 40) return \"bg-warning-500\";\n return \"bg-error-500\";\n}\n\nfunction getDefaultTextColor(value: number): string {\n if (value >= 100) return \"text-success-500\";\n if (value >= 40) return \"text-warning-500\";\n return \"text-error-500\";\n}\n\nexport const ProgressBar = React.forwardRef<HTMLDivElement, ProgressBarProps>(\n (\n {\n value,\n size = \"default\",\n variant = \"default\",\n title,\n showCompletion = false,\n stepsLabel,\n helperLeft,\n helperRight,\n leftIcon,\n ariaLabel,\n className,\n ...props\n },\n ref,\n ) => {\n const clampedValue = Math.min(100, Math.max(0, value));\n const isGeneric = variant === \"generic\";\n const isSmall = size === \"small\";\n\n const barColor = isGeneric ? \"bg-brand-green-500\" : getDefaultBarColor(clampedValue);\n const textColor = isGeneric ? \"text-brand-green-500\" : getDefaultTextColor(clampedValue);\n\n const showHeader = title != null || showCompletion || stepsLabel != null;\n const showFooter = leftIcon != null || helperLeft != null || helperRight != null;\n\n return (\n <div ref={ref} className={cn(\"flex w-full flex-col\", GAP[size], className)} {...props}>\n {showHeader && (\n <div className=\"flex w-full items-end justify-between\">\n {title != null && <p className=\"typography-caption-semibold text-body-100\">{title}</p>}\n {showCompletion && (\n <span\n className={cn(textColor, isSmall ? \"typography-heading-3\" : \"typography-heading-1\")}\n >\n {Math.round(clampedValue)}%\n </span>\n )}\n {stepsLabel != null && (\n <span className=\"typography-caption-regular text-body-100\">{stepsLabel}</span>\n )}\n </div>\n )}\n\n <div\n role=\"progressbar\"\n aria-label={ariaLabel ?? \"Progress\"}\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={100}\n className={cn(\"relative w-full rounded-full bg-neutral-100\", TRACK_HEIGHT[size])}\n >\n <div\n className={cn(\n \"absolute inset-y-0 left-0 rounded-full transition-[width] duration-300 ease-in-out\",\n barColor,\n )}\n style={{ width: `${clampedValue}%` }}\n />\n </div>\n\n {showFooter && (\n <div className=\"flex w-full items-center justify-between\">\n <div className=\"flex items-center gap-1\">\n {leftIcon != null && (\n <span className=\"flex size-5 items-center justify-center\" aria-hidden=\"true\">\n {leftIcon}\n </span>\n )}\n {helperLeft != null && (\n <span className=\"typography-caption-regular text-primary-500\">{helperLeft}</span>\n )}\n </div>\n {helperRight != null && (\n <span className=\"typography-caption-regular text-primary-500\">{helperRight}</span>\n )}\n </div>\n )}\n </div>\n );\n },\n);\n\nProgressBar.displayName = \"ProgressBar\";\n","\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProvider, useRadioContext] = createRadioContext(RADIO_NAME);\nvar Radio = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadio,\n name,\n checked = false,\n required,\n disabled,\n value = \"on\",\n onCheck,\n form,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n return /* @__PURE__ */ jsxs(RadioProvider, { scope: __scopeRadio, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"radio\",\n \"aria-checked\": checked,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...radioProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n RadioBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nRadio.displayName = RADIO_NAME;\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef\n }\n ) });\n }\n);\nRadioIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"RadioBubbleInput\";\nvar RadioBubbleInput = React.forwardRef(\n ({\n __scopeRadio,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"radio\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nRadioBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\n\n// src/radio-group.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n onChange: onValueChange,\n caller: RADIO_GROUP_NAME\n });\n return /* @__PURE__ */ jsx2(\n RadioGroupProvider,\n {\n scope: __scopeRadioGroup,\n name,\n required,\n disabled,\n value,\n onValueChange: setValue,\n children: /* @__PURE__ */ jsx2(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx2(\n Primitive2.div,\n {\n role: \"radiogroup\",\n \"aria-required\": required,\n \"aria-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : void 0,\n dir: direction,\n ...groupProps,\n ref: forwardedRef\n }\n )\n }\n )\n }\n );\n }\n);\nRadioGroup.displayName = RADIO_GROUP_NAME;\nvar ITEM_NAME = \"RadioGroupItem\";\nvar RadioGroupItem = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React2.useRef(false);\n React2.useEffect(() => {\n const handleKeyDown = (event) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => isArrowKeyPressedRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"keyup\", handleKeyUp);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"keyup\", handleKeyUp);\n };\n }, []);\n return /* @__PURE__ */ jsx2(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !isDisabled,\n active: checked,\n children: /* @__PURE__ */ jsx2(\n Radio,\n {\n disabled: isDisabled,\n required: context.required,\n checked,\n ...radioScope,\n ...itemProps,\n name: context.name,\n ref: composedRefs,\n onCheck: () => context.onValueChange(itemProps.value),\n onKeyDown: composeEventHandlers2((event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onFocus: composeEventHandlers2(itemProps.onFocus, () => {\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })\n }\n )\n }\n );\n }\n);\nRadioGroupItem.displayName = ITEM_NAME;\nvar INDICATOR_NAME2 = \"RadioGroupIndicator\";\nvar RadioGroupIndicator = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n }\n);\nRadioGroupIndicator.displayName = INDICATOR_NAME2;\nvar Root2 = RadioGroup;\nvar Item2 = RadioGroupItem;\nvar Indicator = RadioGroupIndicator;\nexport {\n Indicator,\n Item2 as Item,\n RadioGroup,\n RadioGroupIndicator,\n RadioGroupItem,\n Root2 as Root,\n createRadioGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface RadioProps\n extends Omit<React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>, \"asChild\"> {\n /** Size variant of the radio button */\n size?: \"default\" | \"small\";\n /** Label text for the radio button */\n label?: string;\n /** Optional helper text displayed below the label */\n helperText?: string;\n}\n\nexport const Radio = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Item>,\n RadioProps\n>(({ className, size = \"default\", label, helperText, id, ...props }, ref) => {\n const generatedId = React.useId();\n const inputId = id || generatedId;\n const helperTextId = `${inputId}-helper`;\n\n return (\n <div className={cn(\"group inline-flex items-center gap-2\", className)}>\n <RadioGroupPrimitive.Item\n ref={ref}\n id={inputId}\n data-testid=\"radio\"\n aria-describedby={helperText ? helperTextId : undefined}\n className={cn(\n \"relative h-4 w-4 shrink-0 cursor-pointer appearance-none rounded-full border border-body-100 bg-transparent outline-brand-purple-500 transition-colors hover:bg-brand-green-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:border-disabled-400 disabled:bg-transparent data-[state=checked]:border-body-100 data-[state=checked]:bg-transparent dark:border-body-100 dark:disabled:border-disabled-400\",\n helperText && \"mt-1 self-start\",\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"absolute inset-0 flex items-center justify-center\">\n <span className=\"size-2 rounded-full bg-body-100 group-has-disabled:bg-disabled-400 dark:bg-body-100 dark:group-has-disabled:bg-disabled-400\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n {(label || helperText) && (\n <div className=\"flex flex-col gap-0.5\">\n {label && (\n <label\n htmlFor={inputId}\n className={cn(\n \"cursor-pointer select-none text-body-100 group-has-disabled:cursor-not-allowed group-has-disabled:text-disabled-100\",\n size === \"small\" ? \"typography-body-2-semibold\" : \"typography-body-1-semibold\",\n )}\n >\n {label}\n </label>\n )}\n {helperText && (\n <span\n id={helperTextId}\n className={cn(\n \"text-body-200 group-has-disabled:cursor-not-allowed group-has-disabled:text-disabled-100\",\n size === \"small\" ? \"typography-body-2-semibold\" : \"typography-caption-regular\",\n )}\n >\n {helperText}\n </span>\n )}\n </div>\n )}\n </div>\n );\n});\n\nRadio.displayName = \"Radio\";\n","import * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport * as React from \"react\";\n\nexport type RadioGroupProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>;\n\nexport const RadioGroup = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>((props, ref) => {\n return <RadioGroupPrimitive.Root ref={ref} {...props} />;\n});\n\nRadioGroup.displayName = \"RadioGroup\";\n","// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\nexport {\n clamp\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/slider.tsx\nimport * as React from \"react\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar PAGE_KEYS = [\"PageUp\", \"PageDown\"];\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar BACK_KEYS = {\n \"from-left\": [\"Home\", \"PageDown\", \"ArrowDown\", \"ArrowLeft\"],\n \"from-right\": [\"Home\", \"PageDown\", \"ArrowDown\", \"ArrowRight\"],\n \"from-bottom\": [\"Home\", \"PageDown\", \"ArrowDown\", \"ArrowLeft\"],\n \"from-top\": [\"Home\", \"PageDown\", \"ArrowUp\", \"ArrowLeft\"]\n};\nvar SLIDER_NAME = \"Slider\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SLIDER_NAME);\nvar [createSliderContext, createSliderScope] = createContextScope(SLIDER_NAME, [\n createCollectionScope\n]);\nvar [SliderProvider, useSliderContext] = createSliderContext(SLIDER_NAME);\nvar Slider = React.forwardRef(\n (props, forwardedRef) => {\n const {\n name,\n min = 0,\n max = 100,\n step = 1,\n orientation = \"horizontal\",\n disabled = false,\n minStepsBetweenThumbs = 0,\n defaultValue = [min],\n value,\n onValueChange = () => {\n },\n onValueCommit = () => {\n },\n inverted = false,\n form,\n ...sliderProps\n } = props;\n const thumbRefs = React.useRef(/* @__PURE__ */ new Set());\n const valueIndexToChangeRef = React.useRef(0);\n const isHorizontal = orientation === \"horizontal\";\n const SliderOrientation = isHorizontal ? SliderHorizontal : SliderVertical;\n const [values = [], setValues] = useControllableState({\n prop: value,\n defaultProp: defaultValue,\n onChange: (value2) => {\n const thumbs = [...thumbRefs.current];\n thumbs[valueIndexToChangeRef.current]?.focus();\n onValueChange(value2);\n }\n });\n const valuesBeforeSlideStartRef = React.useRef(values);\n function handleSlideStart(value2) {\n const closestIndex = getClosestValueIndex(values, value2);\n updateValues(value2, closestIndex);\n }\n function handleSlideMove(value2) {\n updateValues(value2, valueIndexToChangeRef.current);\n }\n function handleSlideEnd() {\n const prevValue = valuesBeforeSlideStartRef.current[valueIndexToChangeRef.current];\n const nextValue = values[valueIndexToChangeRef.current];\n const hasChanged = nextValue !== prevValue;\n if (hasChanged) onValueCommit(values);\n }\n function updateValues(value2, atIndex, { commit } = { commit: false }) {\n const decimalCount = getDecimalCount(step);\n const snapToStep = roundValue(Math.round((value2 - min) / step) * step + min, decimalCount);\n const nextValue = clamp(snapToStep, [min, max]);\n setValues((prevValues = []) => {\n const nextValues = getNextSortedValues(prevValues, nextValue, atIndex);\n if (hasMinStepsBetweenValues(nextValues, minStepsBetweenThumbs * step)) {\n valueIndexToChangeRef.current = nextValues.indexOf(nextValue);\n const hasChanged = String(nextValues) !== String(prevValues);\n if (hasChanged && commit) onValueCommit(nextValues);\n return hasChanged ? nextValues : prevValues;\n } else {\n return prevValues;\n }\n });\n }\n return /* @__PURE__ */ jsx(\n SliderProvider,\n {\n scope: props.__scopeSlider,\n name,\n disabled,\n min,\n max,\n valueIndexToChangeRef,\n thumbs: thumbRefs.current,\n values,\n orientation,\n form,\n children: /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeSlider, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeSlider, children: /* @__PURE__ */ jsx(\n SliderOrientation,\n {\n \"aria-disabled\": disabled,\n \"data-disabled\": disabled ? \"\" : void 0,\n ...sliderProps,\n ref: forwardedRef,\n onPointerDown: composeEventHandlers(sliderProps.onPointerDown, () => {\n if (!disabled) valuesBeforeSlideStartRef.current = values;\n }),\n min,\n max,\n inverted,\n onSlideStart: disabled ? void 0 : handleSlideStart,\n onSlideMove: disabled ? void 0 : handleSlideMove,\n onSlideEnd: disabled ? void 0 : handleSlideEnd,\n onHomeKeyDown: () => !disabled && updateValues(min, 0, { commit: true }),\n onEndKeyDown: () => !disabled && updateValues(max, values.length - 1, { commit: true }),\n onStepKeyDown: ({ event, direction: stepDirection }) => {\n if (!disabled) {\n const isPageKey = PAGE_KEYS.includes(event.key);\n const isSkipKey = isPageKey || event.shiftKey && ARROW_KEYS.includes(event.key);\n const multiplier = isSkipKey ? 10 : 1;\n const atIndex = valueIndexToChangeRef.current;\n const value2 = values[atIndex];\n const stepInDirection = step * multiplier * stepDirection;\n updateValues(value2 + stepInDirection, atIndex, { commit: true });\n }\n }\n }\n ) }) })\n }\n );\n }\n);\nSlider.displayName = SLIDER_NAME;\nvar [SliderOrientationProvider, useSliderOrientationContext] = createSliderContext(SLIDER_NAME, {\n startEdge: \"left\",\n endEdge: \"right\",\n size: \"width\",\n direction: 1\n});\nvar SliderHorizontal = React.forwardRef(\n (props, forwardedRef) => {\n const {\n min,\n max,\n dir,\n inverted,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onStepKeyDown,\n ...sliderProps\n } = props;\n const [slider, setSlider] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setSlider(node));\n const rectRef = React.useRef(void 0);\n const direction = useDirection(dir);\n const isDirectionLTR = direction === \"ltr\";\n const isSlidingFromLeft = isDirectionLTR && !inverted || !isDirectionLTR && inverted;\n function getValueFromPointer(pointerPosition) {\n const rect = rectRef.current || slider.getBoundingClientRect();\n const input = [0, rect.width];\n const output = isSlidingFromLeft ? [min, max] : [max, min];\n const value = linearScale(input, output);\n rectRef.current = rect;\n return value(pointerPosition - rect.left);\n }\n return /* @__PURE__ */ jsx(\n SliderOrientationProvider,\n {\n scope: props.__scopeSlider,\n startEdge: isSlidingFromLeft ? \"left\" : \"right\",\n endEdge: isSlidingFromLeft ? \"right\" : \"left\",\n direction: isSlidingFromLeft ? 1 : -1,\n size: \"width\",\n children: /* @__PURE__ */ jsx(\n SliderImpl,\n {\n dir: direction,\n \"data-orientation\": \"horizontal\",\n ...sliderProps,\n ref: composedRefs,\n style: {\n ...sliderProps.style,\n [\"--radix-slider-thumb-transform\"]: \"translateX(-50%)\"\n },\n onSlideStart: (event) => {\n const value = getValueFromPointer(event.clientX);\n onSlideStart?.(value);\n },\n onSlideMove: (event) => {\n const value = getValueFromPointer(event.clientX);\n onSlideMove?.(value);\n },\n onSlideEnd: () => {\n rectRef.current = void 0;\n onSlideEnd?.();\n },\n onStepKeyDown: (event) => {\n const slideDirection = isSlidingFromLeft ? \"from-left\" : \"from-right\";\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n onStepKeyDown?.({ event, direction: isBackKey ? -1 : 1 });\n }\n }\n )\n }\n );\n }\n);\nvar SliderVertical = React.forwardRef(\n (props, forwardedRef) => {\n const {\n min,\n max,\n inverted,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onStepKeyDown,\n ...sliderProps\n } = props;\n const sliderRef = React.useRef(null);\n const ref = useComposedRefs(forwardedRef, sliderRef);\n const rectRef = React.useRef(void 0);\n const isSlidingFromBottom = !inverted;\n function getValueFromPointer(pointerPosition) {\n const rect = rectRef.current || sliderRef.current.getBoundingClientRect();\n const input = [0, rect.height];\n const output = isSlidingFromBottom ? [max, min] : [min, max];\n const value = linearScale(input, output);\n rectRef.current = rect;\n return value(pointerPosition - rect.top);\n }\n return /* @__PURE__ */ jsx(\n SliderOrientationProvider,\n {\n scope: props.__scopeSlider,\n startEdge: isSlidingFromBottom ? \"bottom\" : \"top\",\n endEdge: isSlidingFromBottom ? \"top\" : \"bottom\",\n size: \"height\",\n direction: isSlidingFromBottom ? 1 : -1,\n children: /* @__PURE__ */ jsx(\n SliderImpl,\n {\n \"data-orientation\": \"vertical\",\n ...sliderProps,\n ref,\n style: {\n ...sliderProps.style,\n [\"--radix-slider-thumb-transform\"]: \"translateY(50%)\"\n },\n onSlideStart: (event) => {\n const value = getValueFromPointer(event.clientY);\n onSlideStart?.(value);\n },\n onSlideMove: (event) => {\n const value = getValueFromPointer(event.clientY);\n onSlideMove?.(value);\n },\n onSlideEnd: () => {\n rectRef.current = void 0;\n onSlideEnd?.();\n },\n onStepKeyDown: (event) => {\n const slideDirection = isSlidingFromBottom ? \"from-bottom\" : \"from-top\";\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n onStepKeyDown?.({ event, direction: isBackKey ? -1 : 1 });\n }\n }\n )\n }\n );\n }\n);\nvar SliderImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSlider,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onHomeKeyDown,\n onEndKeyDown,\n onStepKeyDown,\n ...sliderProps\n } = props;\n const context = useSliderContext(SLIDER_NAME, __scopeSlider);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...sliderProps,\n ref: forwardedRef,\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Home\") {\n onHomeKeyDown(event);\n event.preventDefault();\n } else if (event.key === \"End\") {\n onEndKeyDown(event);\n event.preventDefault();\n } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(event.key)) {\n onStepKeyDown(event);\n event.preventDefault();\n }\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n const target = event.target;\n target.setPointerCapture(event.pointerId);\n event.preventDefault();\n if (context.thumbs.has(target)) {\n target.focus();\n } else {\n onSlideStart(event);\n }\n }),\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) onSlideMove(event);\n }),\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n onSlideEnd(event);\n }\n })\n }\n );\n }\n);\nvar TRACK_NAME = \"SliderTrack\";\nvar SliderTrack = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSlider, ...trackProps } = props;\n const context = useSliderContext(TRACK_NAME, __scopeSlider);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-disabled\": context.disabled ? \"\" : void 0,\n \"data-orientation\": context.orientation,\n ...trackProps,\n ref: forwardedRef\n }\n );\n }\n);\nSliderTrack.displayName = TRACK_NAME;\nvar RANGE_NAME = \"SliderRange\";\nvar SliderRange = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSlider, ...rangeProps } = props;\n const context = useSliderContext(RANGE_NAME, __scopeSlider);\n const orientation = useSliderOrientationContext(RANGE_NAME, __scopeSlider);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const valuesCount = context.values.length;\n const percentages = context.values.map(\n (value) => convertValueToPercentage(value, context.min, context.max)\n );\n const offsetStart = valuesCount > 1 ? Math.min(...percentages) : 0;\n const offsetEnd = 100 - Math.max(...percentages);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-orientation\": context.orientation,\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...rangeProps,\n ref: composedRefs,\n style: {\n ...props.style,\n [orientation.startEdge]: offsetStart + \"%\",\n [orientation.endEdge]: offsetEnd + \"%\"\n }\n }\n );\n }\n);\nSliderRange.displayName = RANGE_NAME;\nvar THUMB_NAME = \"SliderThumb\";\nvar SliderThumb = React.forwardRef(\n (props, forwardedRef) => {\n const getItems = useCollection(props.__scopeSlider);\n const [thumb, setThumb] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setThumb(node));\n const index = React.useMemo(\n () => thumb ? getItems().findIndex((item) => item.ref.current === thumb) : -1,\n [getItems, thumb]\n );\n return /* @__PURE__ */ jsx(SliderThumbImpl, { ...props, ref: composedRefs, index });\n }\n);\nvar SliderThumbImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSlider, index, name, ...thumbProps } = props;\n const context = useSliderContext(THUMB_NAME, __scopeSlider);\n const orientation = useSliderOrientationContext(THUMB_NAME, __scopeSlider);\n const [thumb, setThumb] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setThumb(node));\n const isFormControl = thumb ? context.form || !!thumb.closest(\"form\") : true;\n const size = useSize(thumb);\n const value = context.values[index];\n const percent = value === void 0 ? 0 : convertValueToPercentage(value, context.min, context.max);\n const label = getLabel(index, context.values.length);\n const orientationSize = size?.[orientation.size];\n const thumbInBoundsOffset = orientationSize ? getThumbInBoundsOffset(orientationSize, percent, orientation.direction) : 0;\n React.useEffect(() => {\n if (thumb) {\n context.thumbs.add(thumb);\n return () => {\n context.thumbs.delete(thumb);\n };\n }\n }, [thumb, context.thumbs]);\n return /* @__PURE__ */ jsxs(\n \"span\",\n {\n style: {\n transform: \"var(--radix-slider-thumb-transform)\",\n position: \"absolute\",\n [orientation.startEdge]: `calc(${percent}% + ${thumbInBoundsOffset}px)`\n },\n children: [\n /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: props.__scopeSlider, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n role: \"slider\",\n \"aria-label\": props[\"aria-label\"] || label,\n \"aria-valuemin\": context.min,\n \"aria-valuenow\": value,\n \"aria-valuemax\": context.max,\n \"aria-orientation\": context.orientation,\n \"data-orientation\": context.orientation,\n \"data-disabled\": context.disabled ? \"\" : void 0,\n tabIndex: context.disabled ? void 0 : 0,\n ...thumbProps,\n ref: composedRefs,\n style: value === void 0 ? { display: \"none\" } : props.style,\n onFocus: composeEventHandlers(props.onFocus, () => {\n context.valueIndexToChangeRef.current = index;\n })\n }\n ) }),\n isFormControl && /* @__PURE__ */ jsx(\n SliderBubbleInput,\n {\n name: name ?? (context.name ? context.name + (context.values.length > 1 ? \"[]\" : \"\") : void 0),\n form: context.form,\n value\n },\n index\n )\n ]\n }\n );\n }\n);\nSliderThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"RadioBubbleInput\";\nvar SliderBubbleInput = React.forwardRef(\n ({ __scopeSlider, value, ...props }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevValue = usePrevious(value);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"value\");\n const setValue = descriptor.set;\n if (prevValue !== value && setValue) {\n const event = new Event(\"input\", { bubbles: true });\n setValue.call(input, value);\n input.dispatchEvent(event);\n }\n }, [prevValue, value]);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n style: { display: \"none\" },\n ...props,\n ref: composedRefs,\n defaultValue: value\n }\n );\n }\n);\nSliderBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getNextSortedValues(prevValues = [], nextValue, atIndex) {\n const nextValues = [...prevValues];\n nextValues[atIndex] = nextValue;\n return nextValues.sort((a, b) => a - b);\n}\nfunction convertValueToPercentage(value, min, max) {\n const maxSteps = max - min;\n const percentPerStep = 100 / maxSteps;\n const percentage = percentPerStep * (value - min);\n return clamp(percentage, [0, 100]);\n}\nfunction getLabel(index, totalValues) {\n if (totalValues > 2) {\n return `Value ${index + 1} of ${totalValues}`;\n } else if (totalValues === 2) {\n return [\"Minimum\", \"Maximum\"][index];\n } else {\n return void 0;\n }\n}\nfunction getClosestValueIndex(values, nextValue) {\n if (values.length === 1) return 0;\n const distances = values.map((value) => Math.abs(value - nextValue));\n const closestDistance = Math.min(...distances);\n return distances.indexOf(closestDistance);\n}\nfunction getThumbInBoundsOffset(width, left, direction) {\n const halfWidth = width / 2;\n const halfPercent = 50;\n const offset = linearScale([0, halfPercent], [0, halfWidth]);\n return (halfWidth - offset(left) * direction) * direction;\n}\nfunction getStepsBetweenValues(values) {\n return values.slice(0, -1).map((value, index) => values[index + 1] - value);\n}\nfunction hasMinStepsBetweenValues(values, minStepsBetweenValues) {\n if (minStepsBetweenValues > 0) {\n const stepsBetweenValues = getStepsBetweenValues(values);\n const actualMinStepsBetweenValues = Math.min(...stepsBetweenValues);\n return actualMinStepsBetweenValues >= minStepsBetweenValues;\n }\n return true;\n}\nfunction linearScale(input, output) {\n return (value) => {\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\nfunction getDecimalCount(value) {\n return (String(value).split(\".\")[1] || \"\").length;\n}\nfunction roundValue(value, decimalCount) {\n const rounder = Math.pow(10, decimalCount);\n return Math.round(value * rounder) / rounder;\n}\nvar Root = Slider;\nvar Track = SliderTrack;\nvar Range = SliderRange;\nvar Thumb = SliderThumb;\nexport {\n Range,\n Root,\n Slider,\n SliderRange,\n SliderThumb,\n SliderTrack,\n Thumb,\n Track,\n createSliderScope\n};\n//# sourceMappingURL=index.mjs.map\n","import type * as React from \"react\";\nimport type { SliderLabelPosition } from \"./Slider\";\n\ninterface SliderLayoutProps {\n label?: string;\n labelId: string;\n labelPosition: SliderLabelPosition;\n minLabel?: string;\n maxLabel?: string;\n children: React.ReactNode;\n}\n\nexport function SliderLayout({\n label,\n labelId,\n labelPosition,\n minLabel,\n maxLabel,\n children,\n}: SliderLayoutProps) {\n if (labelPosition === \"left\") {\n return (\n <div className=\"flex items-center gap-3\">\n {label && (\n <span id={labelId} className=\"typography-body-1-semibold shrink-0 text-body-100\">\n {label}\n </span>\n )}\n {minLabel && (\n <span className=\"typography-body-2-regular shrink-0 text-body-200\">{minLabel}</span>\n )}\n {children}\n {maxLabel && (\n <span className=\"typography-body-2-regular shrink-0 text-body-200\">{maxLabel}</span>\n )}\n </div>\n );\n }\n\n return (\n <div className=\"flex w-full flex-col gap-3\">\n {label && (\n <span id={labelId} className=\"typography-body-1-semibold text-body-100\">\n {label}\n </span>\n )}\n {(minLabel || maxLabel) && (\n <div className=\"flex w-full items-start justify-between text-body-200 text-sm leading-[18px]\">\n {minLabel && <span>{minLabel}</span>}\n {maxLabel && <span className=\"ml-auto\">{maxLabel}</span>}\n </div>\n )}\n {children}\n </div>\n );\n}\n","import * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\ninterface SliderThumbProps {\n showTooltip: boolean;\n formatTooltip?: (value: number) => string;\n index: number;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n}\n\nexport function SliderThumb({\n showTooltip,\n formatTooltip,\n index,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n}: SliderThumbProps) {\n const thumbRef = React.useCallback(\n (el: HTMLSpanElement | null) => {\n if (!el || !showTooltip) return;\n syncTooltipText(el, formatTooltip);\n },\n [showTooltip, formatTooltip],\n );\n\n return (\n <SliderPrimitive.Thumb\n ref={thumbRef}\n data-index={index}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n onPointerDown={(e) => {\n if (showTooltip) syncTooltipText(e.currentTarget, formatTooltip);\n }}\n onPointerMove={(e) => {\n if (showTooltip) syncTooltipText(e.currentTarget, formatTooltip);\n }}\n onKeyDown={(e) => {\n if (showTooltip) {\n requestAnimationFrame(() => syncTooltipText(e.currentTarget, formatTooltip));\n }\n }}\n className={cn(\n \"flex size-6 items-center justify-center rounded-full border border-neutral-100 bg-background-inverse-solid shadow-sm\",\n \"transition-shadow duration-150\",\n \"hover:ring-2 hover:ring-brand-green-500\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-purple-500 focus-visible:ring-offset-2 focus-visible:ring-offset-background-inverse-solid\",\n \"data-disabled:cursor-not-allowed\",\n )}\n >\n <span className=\"block size-3 rounded-full bg-brand-green-500 shadow-[inset_0px_1px_2px_0px_rgba(0,0,0,0.1)]\" />\n\n {showTooltip && (\n <span\n role=\"tooltip\"\n data-slider-tooltip\n className=\"typography-caption-semibold pointer-events-none absolute bottom-full mb-2 rounded-3xl bg-background-solid px-2 py-1 text-background-inverse-solid shadow-sm\"\n />\n )}\n </SliderPrimitive.Thumb>\n );\n}\n\nfunction syncTooltipText(thumb: HTMLElement, formatTooltip?: (value: number) => string) {\n const raw = thumb.getAttribute(\"aria-valuenow\");\n const tooltip = thumb.querySelector<HTMLSpanElement>(\"[data-slider-tooltip]\");\n if (raw == null || !tooltip) return;\n const num = Number(raw);\n tooltip.textContent = formatTooltip ? formatTooltip(num) : String(num);\n}\n","import * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { SliderLayout } from \"./SliderLayout\";\nimport { SliderThumb } from \"./SliderThumb\";\n\nexport type SliderLabelPosition = \"top\" | \"left\";\n\nexport interface SliderProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>,\n \"asChild\" | \"children\"\n > {\n /** Label text displayed alongside the slider */\n label?: string;\n /** Position of the label relative to the slider track */\n labelPosition?: SliderLabelPosition;\n /** Text shown at the minimum end of the track */\n minLabel?: string;\n /** Text shown at the maximum end of the track */\n maxLabel?: string;\n /** Whether to show a tooltip with the current value above the thumb */\n showTooltip?: boolean;\n /** Override the displayed tooltip value (e.g. for formatting) */\n formatTooltip?: (value: number) => string;\n}\n\nexport const Slider = React.forwardRef<\n React.ComponentRef<typeof SliderPrimitive.Root>,\n SliderProps\n>(\n (\n {\n className,\n label,\n labelPosition = \"top\",\n minLabel,\n maxLabel,\n showTooltip = false,\n formatTooltip,\n disabled,\n value,\n defaultValue,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...props\n },\n ref,\n ) => {\n const labelId = React.useId();\n const thumbCount = value?.length ?? defaultValue?.length ?? 1;\n const resolvedLabelledBy = ariaLabelledBy ?? (label ? labelId : undefined);\n const resolvedAriaLabel = !resolvedLabelledBy ? ariaLabel : undefined;\n\n const sliderTrack = (\n <SliderPrimitive.Root\n ref={ref}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n aria-label={resolvedAriaLabel}\n aria-labelledby={resolvedLabelledBy}\n className={cn(\n \"group/slider relative flex w-full touch-none select-none items-center\",\n disabled && \"pointer-events-none opacity-50\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-3 w-full overflow-hidden rounded-full border border-neutral-100 bg-neutral-100\">\n <SliderPrimitive.Range className=\"absolute h-full rounded-full bg-brand-green-500\" />\n </SliderPrimitive.Track>\n\n {Array.from({ length: thumbCount }, (_, i) => (\n <SliderThumb\n // biome-ignore lint/suspicious/noArrayIndexKey: thumbs are fixed-count and never reorder\n key={i}\n showTooltip={showTooltip}\n formatTooltip={formatTooltip}\n index={i}\n aria-label={resolvedAriaLabel}\n aria-labelledby={resolvedLabelledBy}\n />\n ))}\n </SliderPrimitive.Root>\n );\n\n const hasLayout = Boolean(label || minLabel || maxLabel);\n\n if (!hasLayout) return sliderTrack;\n\n return (\n <SliderLayout\n label={label}\n labelId={labelId}\n labelPosition={labelPosition}\n minLabel={minLabel}\n maxLabel={maxLabel}\n >\n {sliderTrack}\n </SliderLayout>\n );\n },\n);\n\nSlider.displayName = \"Slider\";\n","import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Button } from \"../Button/Button\";\nimport { CrossIcon } from \"../Icons/CrossIcon\";\n\nexport type SnackbarVariant = \"default\" | \"vipEarn\" | \"welcome\";\n\nexport interface SnackbarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Snackbar layout variant */\n variant?: SnackbarVariant;\n /** Left icon element */\n icon?: React.ReactNode;\n /** Title text */\n title?: React.ReactNode;\n /** Description text */\n description?: React.ReactNode;\n /** Whether to show the actions section */\n showActions?: boolean;\n /** Primary CTA label (renders a default Button) */\n primaryLabel?: string;\n /** Primary CTA click handler (used with primaryLabel) */\n primaryOnClick?: () => void;\n /** Custom element to render as primary CTA (overrides primaryLabel/primaryOnClick) */\n primarySlot?: React.ReactNode;\n /** Secondary CTA label (renders a default Button) */\n secondaryLabel?: string;\n /** Secondary CTA click handler (used with secondaryLabel) */\n secondaryOnClick?: () => void;\n /** Custom element to render as secondary CTA (overrides secondaryLabel/secondaryOnClick) */\n secondarySlot?: React.ReactNode;\n /** Show close button */\n closable?: boolean;\n /** Close button click handler */\n onClose?: () => void;\n}\n\nfunction CloseButton({ onClose, className }: { onClose?: () => void; className?: string }) {\n return (\n <Button\n variant=\"tertiary\"\n size=\"24\"\n onClick={onClose}\n className={cn(\"h-auto shrink-0\", className)}\n aria-label=\"Close snackbar\"\n >\n <CrossIcon />\n </Button>\n );\n}\n\n/**\n * Resolves a CTA slot. If a custom slot is provided it takes precedence,\n * otherwise a default Button is rendered from label + onClick.\n */\nfunction resolveCtaSlot(\n slot: React.ReactNode | undefined,\n label: string | undefined,\n onClick: (() => void) | undefined,\n buttonProps: React.ComponentProps<typeof Button>,\n): React.ReactNode | null {\n if (slot) return slot;\n if (label) {\n return (\n <Button onClick={onClick} {...buttonProps}>\n {label}\n </Button>\n );\n }\n return null;\n}\n\nfunction VipEarnContent({\n icon,\n title,\n description,\n showActions,\n primarySlot,\n primaryLabel,\n primaryOnClick,\n}: Pick<\n SnackbarProps,\n | \"icon\"\n | \"title\"\n | \"description\"\n | \"showActions\"\n | \"primarySlot\"\n | \"primaryLabel\"\n | \"primaryOnClick\"\n>) {\n const primary = resolveCtaSlot(primarySlot, primaryLabel, primaryOnClick, {\n variant: \"text\",\n size: \"24\",\n });\n\n return (\n <>\n {icon && (\n <span className=\"flex shrink-0\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <div className=\"flex min-w-0 flex-1 flex-col gap-4\">\n <div className=\"flex flex-col\">\n {title && <p className=\"typography-body-1-semibold text-body-100 leading-6\">{title}</p>}\n {description && <p className=\"typography-body-2-regular text-body-200\">{description}</p>}\n </div>\n {showActions && primary && <div className=\"self-start\">{primary}</div>}\n </div>\n </>\n );\n}\n\nfunction WelcomeContent({\n title,\n description,\n showActions,\n primarySlot,\n primaryLabel,\n primaryOnClick,\n secondarySlot,\n secondaryLabel,\n secondaryOnClick,\n}: Pick<\n SnackbarProps,\n | \"title\"\n | \"description\"\n | \"showActions\"\n | \"primarySlot\"\n | \"primaryLabel\"\n | \"primaryOnClick\"\n | \"secondarySlot\"\n | \"secondaryLabel\"\n | \"secondaryOnClick\"\n>) {\n const primary = resolveCtaSlot(primarySlot, primaryLabel, primaryOnClick, {\n variant: \"primary\",\n });\n const secondary = resolveCtaSlot(secondarySlot, secondaryLabel, secondaryOnClick, {\n variant: \"secondary\",\n });\n\n return (\n <>\n <div className=\"flex flex-col items-center gap-2 px-8 text-center text-body-100\">\n {title && <p className=\"typography-heading-4 text-body-100\">{title}</p>}\n {description && <p className=\"typography-body-2-regular text-body-200\">{description}</p>}\n </div>\n {showActions && (primary || secondary) && (\n <div className=\"flex w-full flex-col gap-4 px-8 sm:flex-row sm:*:flex-1\">\n {secondary}\n {primary}\n </div>\n )}\n </>\n );\n}\n\nfunction DefaultContent({\n children,\n showActions,\n primarySlot,\n primaryLabel,\n primaryOnClick,\n secondarySlot,\n secondaryLabel,\n secondaryOnClick,\n}: Pick<\n SnackbarProps,\n | \"children\"\n | \"showActions\"\n | \"primarySlot\"\n | \"primaryLabel\"\n | \"primaryOnClick\"\n | \"secondarySlot\"\n | \"secondaryLabel\"\n | \"secondaryOnClick\"\n>) {\n const primary = resolveCtaSlot(primarySlot, primaryLabel, primaryOnClick, {\n variant: \"primary\",\n size: \"40\",\n });\n const secondary = resolveCtaSlot(secondarySlot, secondaryLabel, secondaryOnClick, {\n variant: \"tertiary\",\n size: \"40\",\n });\n\n return (\n <>\n <div className=\"typography-body-1-medium flex min-w-0 flex-1 items-center self-stretch text-body-100\">\n {children}\n </div>\n {showActions && (primary || secondary) && (\n <div className=\"flex shrink-0 items-start gap-2\">\n {primary}\n {secondary}\n </div>\n )}\n </>\n );\n}\n\nexport const Snackbar = React.forwardRef<HTMLDivElement, SnackbarProps>(\n (\n {\n className,\n variant = \"default\",\n icon,\n title,\n description,\n showActions = true,\n primaryLabel,\n primaryOnClick,\n primarySlot,\n secondaryLabel,\n secondaryOnClick,\n secondarySlot,\n closable = false,\n onClose,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n /* biome-ignore lint/a11y/useSemanticElements: output cannot contain div children; browsers would break the wrapper. */\n <div\n ref={ref}\n role=\"status\"\n data-testid=\"snackbar\"\n className={cn(\n \"flex gap-4 rounded-2xl\",\n (variant === \"default\" || variant === \"vipEarn\") &&\n \"border border-neutral-50 bg-background-200 p-4 backdrop-blur-md\",\n variant === \"default\" && \"flex-wrap items-start\",\n variant === \"vipEarn\" && \"items-start\",\n variant === \"welcome\" &&\n \"relative flex-col items-center bg-background-inverse-solid py-6\",\n className,\n )}\n {...props}\n >\n {variant === \"vipEarn\" && (\n <VipEarnContent\n icon={icon}\n title={title}\n description={description}\n showActions={showActions}\n primarySlot={primarySlot}\n primaryLabel={primaryLabel}\n primaryOnClick={primaryOnClick}\n />\n )}\n {variant === \"welcome\" && (\n <WelcomeContent\n title={title}\n description={description}\n showActions={showActions}\n primarySlot={primarySlot}\n primaryLabel={primaryLabel}\n primaryOnClick={primaryOnClick}\n secondarySlot={secondarySlot}\n secondaryLabel={secondaryLabel}\n secondaryOnClick={secondaryOnClick}\n />\n )}\n {variant === \"default\" && (\n <DefaultContent\n showActions={showActions}\n primarySlot={primarySlot}\n primaryLabel={primaryLabel}\n primaryOnClick={primaryOnClick}\n secondarySlot={secondarySlot}\n secondaryLabel={secondaryLabel}\n secondaryOnClick={secondaryOnClick}\n >\n {children}\n </DefaultContent>\n )}\n {closable && (\n <CloseButton\n onClose={onClose}\n className={variant === \"welcome\" ? \"absolute top-2 right-2\" : undefined}\n />\n )}\n </div>\n );\n },\n);\n\nSnackbar.displayName = \"Snackbar\";\n","\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport type SwitchSize = \"default\" | \"small\";\n\nexport interface SwitchProps\n extends Omit<React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>, \"asChild\"> {\n /** Size variant of the switch */\n size?: SwitchSize;\n}\n\nexport const Switch = React.forwardRef<\n React.ComponentRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(({ className, size = \"default\", ...props }, ref) => {\n const thumbSizeClass =\n size === \"default\"\n ? \"size-4.5 translate-x-0.75 data-[state=checked]:translate-x-4.75\"\n : \"size-4 translate-x-0.5 data-[state=checked]:translate-x-4.25\";\n\n return (\n <SwitchPrimitive.Root\n ref={ref}\n className={cn(\n \"inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors duration-150\",\n \"focus-visible:shadow-focus-ring focus-visible:outline-none\",\n \"data-[state=checked]:border-neutral-200 data-[state=checked]:bg-brand-green-500\",\n \"data-[state=unchecked]:bg-neutral-400\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n size === \"default\" && \"h-6 w-10.5\",\n size === \"small\" && \"h-5 w-9\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none rounded-full bg-body-white-solid-constant shadow-sm transition-transform duration-150 dark:bg-body-black-solid-constant\",\n thumbSizeClass,\n )}\n />\n </SwitchPrimitive.Root>\n );\n});\n\nSwitch.displayName = \"Switch\";\n","import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { InfoCircleIcon } from \"../Icons/InfoCircleIcon\";\nimport { Switch, type SwitchSize } from \"../Switch/Switch\";\n\nexport type SwitchFieldOrientation = \"right\" | \"left\";\n\nexport interface SwitchFieldProps\n extends Omit<React.ComponentPropsWithoutRef<typeof Switch>, \"size\" | \"className\"> {\n /** Position of the switch relative to the label */\n orientation?: SwitchFieldOrientation;\n /** Size variant of the switch and text */\n size?: SwitchSize;\n /** Label text displayed next to the switch */\n label?: string;\n /** Helper text displayed below the label */\n helperText?: string;\n /** Info tooltip text displayed on hover of the info icon */\n infoText?: string;\n /** Additional className for the wrapper */\n className?: string;\n}\n\nexport const SwitchField = React.forwardRef<React.ComponentRef<typeof Switch>, SwitchFieldProps>(\n (\n {\n className,\n orientation = \"right\",\n size = \"default\",\n label,\n helperText,\n infoText,\n disabled,\n id: propId,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const id = propId ?? generatedId;\n const helperTextId = helperText ? `${id}-helper` : undefined;\n\n const switchElement = (\n <Switch\n ref={ref}\n id={id}\n size={size}\n disabled={disabled}\n aria-describedby={helperTextId}\n {...props}\n />\n );\n\n const labelContent = (label || helperText) && (\n <div\n className={cn(\n \"flex min-w-0 flex-1 flex-col items-start\",\n size === \"default\" ? \"gap-1\" : \"gap-0.5\",\n )}\n >\n {label && (\n <div className=\"flex items-center gap-1\">\n <label\n htmlFor={id}\n className={cn(\n \"cursor-pointer select-none text-body-100\",\n disabled && \"cursor-not-allowed text-disabled-100\",\n size === \"default\" ? \"typography-body-1-semibold\" : \"typography-body-2-semibold\",\n )}\n >\n {label}\n </label>\n {infoText && (\n <span className=\"group relative flex shrink-0 pt-0.5\">\n <InfoCircleIcon className=\"size-5 text-body-200\" />\n <span className=\"pointer-events-none absolute top-full left-1/2 mt-1 -translate-x-1/2 rounded-lg bg-neutral-400 px-3 py-1.5 text-body-white-solid-constant text-xs leading-none opacity-0 transition-opacity group-hover:opacity-100\">\n {/*!TODO Replace with Tooltip once built\n https://linear.app/fanvue/issue/ENG-7226/component-library-tooltip-component */}\n {infoText}\n </span>\n </span>\n )}\n </div>\n )}\n {helperText && (\n <span\n id={helperTextId}\n className={cn(\n \"text-body-200\", // !TODO https://linear.app/fanvue/issue/ENG-7301/swap-out-typography-tailwind-utility-classes\n disabled && \"text-disabled-100\",\n size === \"default\" ? \"typography-body-2-regular\" : \"typography-caption-regular\",\n )}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n\n return (\n <div className={cn(\"flex items-start gap-2\", disabled && \"cursor-not-allowed\", className)}>\n {orientation === \"left\" && switchElement}\n {labelContent}\n {orientation === \"right\" && switchElement}\n </div>\n );\n },\n);\n\nSwitchField.displayName = \"SwitchField\";\n","import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport type SwitchToggleSize = \"24\" | \"32\" | \"40\";\n\nexport interface SwitchToggleOption {\n /** Display label for the option */\n label: string;\n /** Value identifier for the option */\n value: string;\n}\n\nexport interface SwitchToggleProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Size variant */\n size?: SwitchToggleSize;\n /** The two options to toggle between */\n options: [SwitchToggleOption, SwitchToggleOption];\n /** Currently selected value */\n value?: string;\n /** Default selected value (uncontrolled) */\n defaultValue?: string;\n /** Callback when the selected value changes */\n onChange?: (value: string) => void;\n /** Whether the toggle is disabled */\n disabled?: boolean;\n}\n\nexport const SwitchToggle = React.forwardRef<HTMLDivElement, SwitchToggleProps>(\n (\n {\n className,\n size = \"24\",\n options,\n value: controlledValue,\n defaultValue,\n onChange,\n disabled = false,\n ...props\n },\n ref,\n ) => {\n const groupName = React.useId();\n // Tracks selection for uncontrolled usage; ignored when `value` prop is provided\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? options[0].value);\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n const isSecondSelected = currentValue === options[1].value;\n\n const sizeClass =\n size === \"24\"\n ? \"px-2 py-1 typography-caption-semibold\"\n : size === \"32\"\n ? \"px-3 py-1.75 typography-body-2-semibold\"\n : \"h-10 px-4 py-2.25 typography-button-small\";\n\n const handleSelect = (optionValue: string) => {\n if (disabled) return;\n if (!isControlled) {\n setInternalValue(optionValue);\n }\n onChange?.(optionValue);\n };\n\n return (\n <div\n ref={ref}\n role=\"radiogroup\"\n className={cn(\n \"relative inline-grid grid-cols-2 rounded-full border border-neutral-200 p-1\",\n disabled && \"cursor-not-allowed opacity-50\",\n className,\n )}\n {...props}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n \"absolute inset-y-1 left-1 w-[calc(50%-4px)] rounded-full border border-brand-green-500 bg-brand-green-50\",\n \"motion-safe:transition-transform motion-safe:duration-200 motion-safe:ease-in-out\",\n isSecondSelected && \"translate-x-full\",\n )}\n />\n {options.map((option) => {\n const optionId = `${groupName}-${option.value}`;\n return (\n <label\n key={option.value}\n htmlFor={optionId}\n className={cn(\n \"relative z-10 inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full border border-transparent text-body-100\",\n \"has-focus-visible:shadow-focus-ring has-focus-visible:outline-none\",\n disabled && \"pointer-events-none\",\n sizeClass,\n )}\n >\n <input\n id={optionId}\n type=\"radio\"\n name={groupName}\n value={option.value}\n checked={currentValue === option.value}\n disabled={disabled}\n onChange={() => handleSelect(option.value)}\n className=\"sr-only\"\n />\n {option.label}\n </label>\n );\n })}\n </div>\n );\n },\n);\n\nSwitchToggle.displayName = \"SwitchToggle\";\n","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport type * as React from \"react\";\n\nexport type TabsProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root>;\n\nexport const Tabs = TabsPrimitive.Root;\n","import * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport type TabsContentProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>;\n\nexport const TabsContent = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Content>,\n TabsContentProps\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\"focus-visible:outline-none\", className)}\n {...props}\n />\n));\n\nTabsContent.displayName = \"TabsContent\";\n","import * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport type TabsListProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>;\n\nexport const TabsList = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex\", // !TODO setup shadows tokens https://linear.app/fanvue/issue/ENG-7368/setup-shadow-tokens\n \"data-[orientation=horizontal]:items-center data-[orientation=horizontal]:shadow-[inset_0_-1px_0_0_var(--color-neutral-200)]\",\n \"data-[orientation=vertical]:flex-col data-[orientation=vertical]:shadow-[inset_-1px_0_0_0_var(--color-neutral-200)]\",\n className,\n )}\n {...props}\n />\n));\n\nTabsList.displayName = \"TabsList\";\n","import * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport type TabsTriggerProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>;\n\nexport const TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center\",\n \"rounded-xs border-transparent\",\n \"typography-body-1-semibold cursor-pointer text-body-100\",\n \"data-[orientation=horizontal]:border-b-4 data-[orientation=horizontal]:px-3 data-[orientation=horizontal]:pb-4\",\n \"data-[orientation=vertical]:justify-start data-[orientation=vertical]:border-r-4 data-[orientation=vertical]:px-4 data-[orientation=vertical]:py-3\",\n \"data-[state=active]:border-brand-green-500\",\n \"data-[state=active]:hover:text-hover-100\",\n \"data-[state=inactive]:hover:text-hover-200\",\n \"data-disabled:pointer-events-none\",\n \"data-disabled:data-[state=active]:text-disabled-100\",\n \"data-disabled:data-[state=inactive]:text-disabled-400\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-purple-500 focus-visible:ring-offset-2 focus-visible:ring-offset-background-inverse-solid\",\n className,\n )}\n {...props}\n />\n));\n\nTabsTrigger.displayName = \"TabsTrigger\";\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...props,\n ref: forwardedRef,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n }\n );\n }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n Root,\n VISUALLY_HIDDEN_STYLES,\n VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/toast.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport * as DismissableLayer from \"@radix-ui/react-dismissable-layer\";\nimport { Portal } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar PROVIDER_NAME = \"ToastProvider\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(\"Toast\");\nvar [createToastContext, createToastScope] = createContextScope(\"Toast\", [createCollectionScope]);\nvar [ToastProviderProvider, useToastProviderContext] = createToastContext(PROVIDER_NAME);\nvar ToastProvider = (props) => {\n const {\n __scopeToast,\n label = \"Notification\",\n duration = 5e3,\n swipeDirection = \"right\",\n swipeThreshold = 50,\n children\n } = props;\n const [viewport, setViewport] = React.useState(null);\n const [toastCount, setToastCount] = React.useState(0);\n const isFocusedToastEscapeKeyDownRef = React.useRef(false);\n const isClosePausedRef = React.useRef(false);\n if (!label.trim()) {\n console.error(\n `Invalid prop \\`label\\` supplied to \\`${PROVIDER_NAME}\\`. Expected non-empty \\`string\\`.`\n );\n }\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeToast, children: /* @__PURE__ */ jsx(\n ToastProviderProvider,\n {\n scope: __scopeToast,\n label,\n duration,\n swipeDirection,\n swipeThreshold,\n toastCount,\n viewport,\n onViewportChange: setViewport,\n onToastAdd: React.useCallback(() => setToastCount((prevCount) => prevCount + 1), []),\n onToastRemove: React.useCallback(() => setToastCount((prevCount) => prevCount - 1), []),\n isFocusedToastEscapeKeyDownRef,\n isClosePausedRef,\n children\n }\n ) });\n};\nToastProvider.displayName = PROVIDER_NAME;\nvar VIEWPORT_NAME = \"ToastViewport\";\nvar VIEWPORT_DEFAULT_HOTKEY = [\"F8\"];\nvar VIEWPORT_PAUSE = \"toast.viewportPause\";\nvar VIEWPORT_RESUME = \"toast.viewportResume\";\nvar ToastViewport = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeToast,\n hotkey = VIEWPORT_DEFAULT_HOTKEY,\n label = \"Notifications ({hotkey})\",\n ...viewportProps\n } = props;\n const context = useToastProviderContext(VIEWPORT_NAME, __scopeToast);\n const getItems = useCollection(__scopeToast);\n const wrapperRef = React.useRef(null);\n const headFocusProxyRef = React.useRef(null);\n const tailFocusProxyRef = React.useRef(null);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n const hotkeyLabel = hotkey.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\");\n const hasToasts = context.toastCount > 0;\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n const isHotkeyPressed = hotkey.length !== 0 && hotkey.every((key) => event[key] || event.code === key);\n if (isHotkeyPressed) ref.current?.focus();\n };\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [hotkey]);\n React.useEffect(() => {\n const wrapper = wrapperRef.current;\n const viewport = ref.current;\n if (hasToasts && wrapper && viewport) {\n const handlePause = () => {\n if (!context.isClosePausedRef.current) {\n const pauseEvent = new CustomEvent(VIEWPORT_PAUSE);\n viewport.dispatchEvent(pauseEvent);\n context.isClosePausedRef.current = true;\n }\n };\n const handleResume = () => {\n if (context.isClosePausedRef.current) {\n const resumeEvent = new CustomEvent(VIEWPORT_RESUME);\n viewport.dispatchEvent(resumeEvent);\n context.isClosePausedRef.current = false;\n }\n };\n const handleFocusOutResume = (event) => {\n const isFocusMovingOutside = !wrapper.contains(event.relatedTarget);\n if (isFocusMovingOutside) handleResume();\n };\n const handlePointerLeaveResume = () => {\n const isFocusInside = wrapper.contains(document.activeElement);\n if (!isFocusInside) handleResume();\n };\n wrapper.addEventListener(\"focusin\", handlePause);\n wrapper.addEventListener(\"focusout\", handleFocusOutResume);\n wrapper.addEventListener(\"pointermove\", handlePause);\n wrapper.addEventListener(\"pointerleave\", handlePointerLeaveResume);\n window.addEventListener(\"blur\", handlePause);\n window.addEventListener(\"focus\", handleResume);\n return () => {\n wrapper.removeEventListener(\"focusin\", handlePause);\n wrapper.removeEventListener(\"focusout\", handleFocusOutResume);\n wrapper.removeEventListener(\"pointermove\", handlePause);\n wrapper.removeEventListener(\"pointerleave\", handlePointerLeaveResume);\n window.removeEventListener(\"blur\", handlePause);\n window.removeEventListener(\"focus\", handleResume);\n };\n }\n }, [hasToasts, context.isClosePausedRef]);\n const getSortedTabbableCandidates = React.useCallback(\n ({ tabbingDirection }) => {\n const toastItems = getItems();\n const tabbableCandidates = toastItems.map((toastItem) => {\n const toastNode = toastItem.ref.current;\n const toastTabbableCandidates = [toastNode, ...getTabbableCandidates(toastNode)];\n return tabbingDirection === \"forwards\" ? toastTabbableCandidates : toastTabbableCandidates.reverse();\n });\n return (tabbingDirection === \"forwards\" ? tabbableCandidates.reverse() : tabbableCandidates).flat();\n },\n [getItems]\n );\n React.useEffect(() => {\n const viewport = ref.current;\n if (viewport) {\n const handleKeyDown = (event) => {\n const isMetaKey = event.altKey || event.ctrlKey || event.metaKey;\n const isTabKey = event.key === \"Tab\" && !isMetaKey;\n if (isTabKey) {\n const focusedElement = document.activeElement;\n const isTabbingBackwards = event.shiftKey;\n const targetIsViewport = event.target === viewport;\n if (targetIsViewport && isTabbingBackwards) {\n headFocusProxyRef.current?.focus();\n return;\n }\n const tabbingDirection = isTabbingBackwards ? \"backwards\" : \"forwards\";\n const sortedCandidates = getSortedTabbableCandidates({ tabbingDirection });\n const index = sortedCandidates.findIndex((candidate) => candidate === focusedElement);\n if (focusFirst(sortedCandidates.slice(index + 1))) {\n event.preventDefault();\n } else {\n isTabbingBackwards ? headFocusProxyRef.current?.focus() : tailFocusProxyRef.current?.focus();\n }\n }\n };\n viewport.addEventListener(\"keydown\", handleKeyDown);\n return () => viewport.removeEventListener(\"keydown\", handleKeyDown);\n }\n }, [getItems, getSortedTabbableCandidates]);\n return /* @__PURE__ */ jsxs(\n DismissableLayer.Branch,\n {\n ref: wrapperRef,\n role: \"region\",\n \"aria-label\": label.replace(\"{hotkey}\", hotkeyLabel),\n tabIndex: -1,\n style: { pointerEvents: hasToasts ? void 0 : \"none\" },\n children: [\n hasToasts && /* @__PURE__ */ jsx(\n FocusProxy,\n {\n ref: headFocusProxyRef,\n onFocusFromOutsideViewport: () => {\n const tabbableCandidates = getSortedTabbableCandidates({\n tabbingDirection: \"forwards\"\n });\n focusFirst(tabbableCandidates);\n }\n }\n ),\n /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeToast, children: /* @__PURE__ */ jsx(Primitive.ol, { tabIndex: -1, ...viewportProps, ref: composedRefs }) }),\n hasToasts && /* @__PURE__ */ jsx(\n FocusProxy,\n {\n ref: tailFocusProxyRef,\n onFocusFromOutsideViewport: () => {\n const tabbableCandidates = getSortedTabbableCandidates({\n tabbingDirection: \"backwards\"\n });\n focusFirst(tabbableCandidates);\n }\n }\n )\n ]\n }\n );\n }\n);\nToastViewport.displayName = VIEWPORT_NAME;\nvar FOCUS_PROXY_NAME = \"ToastFocusProxy\";\nvar FocusProxy = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, onFocusFromOutsideViewport, ...proxyProps } = props;\n const context = useToastProviderContext(FOCUS_PROXY_NAME, __scopeToast);\n return /* @__PURE__ */ jsx(\n VisuallyHidden,\n {\n tabIndex: 0,\n ...proxyProps,\n ref: forwardedRef,\n style: { position: \"fixed\" },\n onFocus: (event) => {\n const prevFocusedElement = event.relatedTarget;\n const isFocusFromOutsideViewport = !context.viewport?.contains(prevFocusedElement);\n if (isFocusFromOutsideViewport) onFocusFromOutsideViewport();\n }\n }\n );\n }\n);\nFocusProxy.displayName = FOCUS_PROXY_NAME;\nvar TOAST_NAME = \"Toast\";\nvar TOAST_SWIPE_START = \"toast.swipeStart\";\nvar TOAST_SWIPE_MOVE = \"toast.swipeMove\";\nvar TOAST_SWIPE_CANCEL = \"toast.swipeCancel\";\nvar TOAST_SWIPE_END = \"toast.swipeEnd\";\nvar Toast = React.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, open: openProp, defaultOpen, onOpenChange, ...toastProps } = props;\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? true,\n onChange: onOpenChange,\n caller: TOAST_NAME\n });\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || open, children: /* @__PURE__ */ jsx(\n ToastImpl,\n {\n open,\n ...toastProps,\n ref: forwardedRef,\n onClose: () => setOpen(false),\n onPause: useCallbackRef(props.onPause),\n onResume: useCallbackRef(props.onResume),\n onSwipeStart: composeEventHandlers(props.onSwipeStart, (event) => {\n event.currentTarget.setAttribute(\"data-swipe\", \"start\");\n }),\n onSwipeMove: composeEventHandlers(props.onSwipeMove, (event) => {\n const { x, y } = event.detail.delta;\n event.currentTarget.setAttribute(\"data-swipe\", \"move\");\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-move-x\", `${x}px`);\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-move-y\", `${y}px`);\n }),\n onSwipeCancel: composeEventHandlers(props.onSwipeCancel, (event) => {\n event.currentTarget.setAttribute(\"data-swipe\", \"cancel\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-x\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-y\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-end-x\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-end-y\");\n }),\n onSwipeEnd: composeEventHandlers(props.onSwipeEnd, (event) => {\n const { x, y } = event.detail.delta;\n event.currentTarget.setAttribute(\"data-swipe\", \"end\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-x\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-y\");\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-end-x\", `${x}px`);\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-end-y\", `${y}px`);\n setOpen(false);\n })\n }\n ) });\n }\n);\nToast.displayName = TOAST_NAME;\nvar [ToastInteractiveProvider, useToastInteractiveContext] = createToastContext(TOAST_NAME, {\n onClose() {\n }\n});\nvar ToastImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeToast,\n type = \"foreground\",\n duration: durationProp,\n open,\n onClose,\n onEscapeKeyDown,\n onPause,\n onResume,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n ...toastProps\n } = props;\n const context = useToastProviderContext(TOAST_NAME, __scopeToast);\n const [node, setNode] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const pointerStartRef = React.useRef(null);\n const swipeDeltaRef = React.useRef(null);\n const duration = durationProp || context.duration;\n const closeTimerStartTimeRef = React.useRef(0);\n const closeTimerRemainingTimeRef = React.useRef(duration);\n const closeTimerRef = React.useRef(0);\n const { onToastAdd, onToastRemove } = context;\n const handleClose = useCallbackRef(() => {\n const isFocusInToast = node?.contains(document.activeElement);\n if (isFocusInToast) context.viewport?.focus();\n onClose();\n });\n const startTimer = React.useCallback(\n (duration2) => {\n if (!duration2 || duration2 === Infinity) return;\n window.clearTimeout(closeTimerRef.current);\n closeTimerStartTimeRef.current = (/* @__PURE__ */ new Date()).getTime();\n closeTimerRef.current = window.setTimeout(handleClose, duration2);\n },\n [handleClose]\n );\n React.useEffect(() => {\n const viewport = context.viewport;\n if (viewport) {\n const handleResume = () => {\n startTimer(closeTimerRemainingTimeRef.current);\n onResume?.();\n };\n const handlePause = () => {\n const elapsedTime = (/* @__PURE__ */ new Date()).getTime() - closeTimerStartTimeRef.current;\n closeTimerRemainingTimeRef.current = closeTimerRemainingTimeRef.current - elapsedTime;\n window.clearTimeout(closeTimerRef.current);\n onPause?.();\n };\n viewport.addEventListener(VIEWPORT_PAUSE, handlePause);\n viewport.addEventListener(VIEWPORT_RESUME, handleResume);\n return () => {\n viewport.removeEventListener(VIEWPORT_PAUSE, handlePause);\n viewport.removeEventListener(VIEWPORT_RESUME, handleResume);\n };\n }\n }, [context.viewport, duration, onPause, onResume, startTimer]);\n React.useEffect(() => {\n if (open && !context.isClosePausedRef.current) startTimer(duration);\n }, [open, duration, context.isClosePausedRef, startTimer]);\n React.useEffect(() => {\n onToastAdd();\n return () => onToastRemove();\n }, [onToastAdd, onToastRemove]);\n const announceTextContent = React.useMemo(() => {\n return node ? getAnnounceTextContent(node) : null;\n }, [node]);\n if (!context.viewport) return null;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n announceTextContent && /* @__PURE__ */ jsx(\n ToastAnnounce,\n {\n __scopeToast,\n role: \"status\",\n \"aria-live\": type === \"foreground\" ? \"assertive\" : \"polite\",\n children: announceTextContent\n }\n ),\n /* @__PURE__ */ jsx(ToastInteractiveProvider, { scope: __scopeToast, onClose: handleClose, children: ReactDOM.createPortal(\n /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: __scopeToast, children: /* @__PURE__ */ jsx(\n DismissableLayer.Root,\n {\n asChild: true,\n onEscapeKeyDown: composeEventHandlers(onEscapeKeyDown, () => {\n if (!context.isFocusedToastEscapeKeyDownRef.current) handleClose();\n context.isFocusedToastEscapeKeyDownRef.current = false;\n }),\n children: /* @__PURE__ */ jsx(\n Primitive.li,\n {\n tabIndex: 0,\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-swipe-direction\": context.swipeDirection,\n ...toastProps,\n ref: composedRefs,\n style: { userSelect: \"none\", touchAction: \"none\", ...props.style },\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key !== \"Escape\") return;\n onEscapeKeyDown?.(event.nativeEvent);\n if (!event.nativeEvent.defaultPrevented) {\n context.isFocusedToastEscapeKeyDownRef.current = true;\n handleClose();\n }\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n if (event.button !== 0) return;\n pointerStartRef.current = { x: event.clientX, y: event.clientY };\n }),\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (!pointerStartRef.current) return;\n const x = event.clientX - pointerStartRef.current.x;\n const y = event.clientY - pointerStartRef.current.y;\n const hasSwipeMoveStarted = Boolean(swipeDeltaRef.current);\n const isHorizontalSwipe = [\"left\", \"right\"].includes(context.swipeDirection);\n const clamp = [\"left\", \"up\"].includes(context.swipeDirection) ? Math.min : Math.max;\n const clampedX = isHorizontalSwipe ? clamp(0, x) : 0;\n const clampedY = !isHorizontalSwipe ? clamp(0, y) : 0;\n const moveStartBuffer = event.pointerType === \"touch\" ? 10 : 2;\n const delta = { x: clampedX, y: clampedY };\n const eventDetail = { originalEvent: event, delta };\n if (hasSwipeMoveStarted) {\n swipeDeltaRef.current = delta;\n handleAndDispatchCustomEvent(TOAST_SWIPE_MOVE, onSwipeMove, eventDetail, {\n discrete: false\n });\n } else if (isDeltaInDirection(delta, context.swipeDirection, moveStartBuffer)) {\n swipeDeltaRef.current = delta;\n handleAndDispatchCustomEvent(TOAST_SWIPE_START, onSwipeStart, eventDetail, {\n discrete: false\n });\n event.target.setPointerCapture(event.pointerId);\n } else if (Math.abs(x) > moveStartBuffer || Math.abs(y) > moveStartBuffer) {\n pointerStartRef.current = null;\n }\n }),\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n const delta = swipeDeltaRef.current;\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n swipeDeltaRef.current = null;\n pointerStartRef.current = null;\n if (delta) {\n const toast = event.currentTarget;\n const eventDetail = { originalEvent: event, delta };\n if (isDeltaInDirection(delta, context.swipeDirection, context.swipeThreshold)) {\n handleAndDispatchCustomEvent(TOAST_SWIPE_END, onSwipeEnd, eventDetail, {\n discrete: true\n });\n } else {\n handleAndDispatchCustomEvent(\n TOAST_SWIPE_CANCEL,\n onSwipeCancel,\n eventDetail,\n {\n discrete: true\n }\n );\n }\n toast.addEventListener(\"click\", (event2) => event2.preventDefault(), {\n once: true\n });\n }\n })\n }\n )\n }\n ) }),\n context.viewport\n ) })\n ] });\n }\n);\nvar ToastAnnounce = (props) => {\n const { __scopeToast, children, ...announceProps } = props;\n const context = useToastProviderContext(TOAST_NAME, __scopeToast);\n const [renderAnnounceText, setRenderAnnounceText] = React.useState(false);\n const [isAnnounced, setIsAnnounced] = React.useState(false);\n useNextFrame(() => setRenderAnnounceText(true));\n React.useEffect(() => {\n const timer = window.setTimeout(() => setIsAnnounced(true), 1e3);\n return () => window.clearTimeout(timer);\n }, []);\n return isAnnounced ? null : /* @__PURE__ */ jsx(Portal, { asChild: true, children: /* @__PURE__ */ jsx(VisuallyHidden, { ...announceProps, children: renderAnnounceText && /* @__PURE__ */ jsxs(Fragment, { children: [\n context.label,\n \" \",\n children\n ] }) }) });\n};\nvar TITLE_NAME = \"ToastTitle\";\nvar ToastTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, ...titleProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...titleProps, ref: forwardedRef });\n }\n);\nToastTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"ToastDescription\";\nvar ToastDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, ...descriptionProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...descriptionProps, ref: forwardedRef });\n }\n);\nToastDescription.displayName = DESCRIPTION_NAME;\nvar ACTION_NAME = \"ToastAction\";\nvar ToastAction = React.forwardRef(\n (props, forwardedRef) => {\n const { altText, ...actionProps } = props;\n if (!altText.trim()) {\n console.error(\n `Invalid prop \\`altText\\` supplied to \\`${ACTION_NAME}\\`. Expected non-empty \\`string\\`.`\n );\n return null;\n }\n return /* @__PURE__ */ jsx(ToastAnnounceExclude, { altText, asChild: true, children: /* @__PURE__ */ jsx(ToastClose, { ...actionProps, ref: forwardedRef }) });\n }\n);\nToastAction.displayName = ACTION_NAME;\nvar CLOSE_NAME = \"ToastClose\";\nvar ToastClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, ...closeProps } = props;\n const interactiveContext = useToastInteractiveContext(CLOSE_NAME, __scopeToast);\n return /* @__PURE__ */ jsx(ToastAnnounceExclude, { asChild: true, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, interactiveContext.onClose)\n }\n ) });\n }\n);\nToastClose.displayName = CLOSE_NAME;\nvar ToastAnnounceExclude = React.forwardRef((props, forwardedRef) => {\n const { __scopeToast, altText, ...announceExcludeProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-toast-announce-exclude\": \"\",\n \"data-radix-toast-announce-alt\": altText || void 0,\n ...announceExcludeProps,\n ref: forwardedRef\n }\n );\n});\nfunction getAnnounceTextContent(container) {\n const textContent = [];\n const childNodes = Array.from(container.childNodes);\n childNodes.forEach((node) => {\n if (node.nodeType === node.TEXT_NODE && node.textContent) textContent.push(node.textContent);\n if (isHTMLElement(node)) {\n const isHidden = node.ariaHidden || node.hidden || node.style.display === \"none\";\n const isExcluded = node.dataset.radixToastAnnounceExclude === \"\";\n if (!isHidden) {\n if (isExcluded) {\n const altText = node.dataset.radixToastAnnounceAlt;\n if (altText) textContent.push(altText);\n } else {\n textContent.push(...getAnnounceTextContent(node));\n }\n }\n }\n });\n return textContent;\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const currentTarget = detail.originalEvent.currentTarget;\n const event = new CustomEvent(name, { bubbles: true, cancelable: true, detail });\n if (handler) currentTarget.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(currentTarget, event);\n } else {\n currentTarget.dispatchEvent(event);\n }\n}\nvar isDeltaInDirection = (delta, direction, threshold = 0) => {\n const deltaX = Math.abs(delta.x);\n const deltaY = Math.abs(delta.y);\n const isDeltaX = deltaX > deltaY;\n if (direction === \"left\" || direction === \"right\") {\n return isDeltaX && deltaX > threshold;\n } else {\n return !isDeltaX && deltaY > threshold;\n }\n};\nfunction useNextFrame(callback = () => {\n}) {\n const fn = useCallbackRef(callback);\n useLayoutEffect(() => {\n let raf1 = 0;\n let raf2 = 0;\n raf1 = window.requestAnimationFrame(() => raf2 = window.requestAnimationFrame(fn));\n return () => {\n window.cancelAnimationFrame(raf1);\n window.cancelAnimationFrame(raf2);\n };\n }, [fn]);\n}\nfunction isHTMLElement(node) {\n return node.nodeType === node.ELEMENT_NODE;\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction focusFirst(candidates) {\n const previouslyFocusedElement = document.activeElement;\n return candidates.some((candidate) => {\n if (candidate === previouslyFocusedElement) return true;\n candidate.focus();\n return document.activeElement !== previouslyFocusedElement;\n });\n}\nvar Provider = ToastProvider;\nvar Viewport = ToastViewport;\nvar Root2 = Toast;\nvar Title = ToastTitle;\nvar Description = ToastDescription;\nvar Action = ToastAction;\nvar Close = ToastClose;\nexport {\n Action,\n Close,\n Description,\n Provider,\n Root2 as Root,\n Title,\n Toast,\n ToastAction,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n Viewport,\n createToastScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const CloseIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n d=\"M11.2112 9.64811L15.9725 4.89795C16.181 4.68945 16.2981 4.40666 16.2981 4.11179C16.2981 3.81693 16.181 3.53414 15.9725 3.32564C15.764 3.11714 15.4812 3 15.1863 3C14.8915 3 14.6087 3.11714 14.4002 3.32564L9.65 8.08687L4.89984 3.32564C4.69134 3.11714 4.40855 3 4.11368 3C3.81882 3 3.53603 3.11714 3.32753 3.32564C3.11902 3.53414 3.00189 3.81693 3.00189 4.11179C3.00189 4.40666 3.11902 4.68945 3.32753 4.89795L8.08876 9.64811L3.32753 14.3983C3.22374 14.5012 3.14137 14.6237 3.08516 14.7586C3.02894 14.8935 3 15.0383 3 15.1844C3 15.3306 3.02894 15.4753 3.08516 15.6103C3.14137 15.7452 3.22374 15.8676 3.32753 15.9706C3.43046 16.0744 3.55293 16.1567 3.68786 16.213C3.82279 16.2692 3.96751 16.2981 4.11368 16.2981C4.25986 16.2981 4.40458 16.2692 4.53951 16.213C4.67444 16.1567 4.79691 16.0744 4.89984 15.9706L9.65 11.2094L14.4002 15.9706C14.5031 16.0744 14.6256 16.1567 14.7605 16.213C14.8954 16.2692 15.0401 16.2981 15.1863 16.2981C15.3325 16.2981 15.4772 16.2692 15.6121 16.213C15.7471 16.1567 15.8695 16.0744 15.9725 15.9706C16.0763 15.8676 16.1586 15.7452 16.2148 15.6103C16.2711 15.4753 16.3 15.3306 16.3 15.1844C16.3 15.0383 16.2711 14.8935 16.2148 14.7586C16.1586 14.6237 16.0763 14.5012 15.9725 14.3983L11.2112 9.64811Z\"\n fill=\"currentColor\"\n />\n </svg>\n ),\n);\n\nCloseIcon.displayName = \"CloseIcon\";\n","import React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const ErrorIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n);\n\nErrorIcon.displayName = \"ErrorIcon\";\n","import React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const InfoIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.315 2C8.67045 2 7.06283 2.48767 5.69544 3.40133C4.32804 4.31499 3.26229 5.61362 2.63295 7.13299C2.0036 8.65235 1.83894 10.3242 2.15977 11.9372C2.48061 13.5501 3.27254 15.0317 4.43541 16.1946C5.59828 17.3575 7.07987 18.1494 8.69283 18.4702C10.3058 18.7911 11.9776 18.6264 13.497 17.9971C15.0164 17.3677 16.315 16.302 17.2287 14.9346C18.1423 13.5672 18.63 11.9595 18.63 10.315C18.63 9.22306 18.4149 8.14181 17.9971 7.13299C17.5792 6.12416 16.9667 5.20753 16.1946 4.43541C15.4225 3.66329 14.5058 3.05081 13.497 2.63294C12.4882 2.21507 11.4069 2 10.315 2ZM10.315 7.8205C10.7742 7.8205 11.1465 7.44822 11.1465 6.989C11.1465 6.52977 10.7742 6.1575 10.315 6.1575C9.85577 6.1575 9.4835 6.52977 9.4835 6.989C9.4835 7.44822 9.85577 7.8205 10.315 7.8205ZM9.72702 8.89547C9.88296 8.73953 10.0945 8.65193 10.315 8.65193C10.5355 8.65193 10.747 8.73953 10.9029 8.89547C11.0589 9.0514 11.1465 9.2629 11.1465 9.48343V13.6409C11.1465 13.8615 11.0589 14.0729 10.9029 14.2289C10.747 14.3848 10.5355 14.4724 10.315 14.4724C10.0945 14.4724 9.88296 14.3848 9.72702 14.2289C9.57108 14.0729 9.48348 13.8615 9.48348 13.6409V9.48343C9.48348 9.2629 9.57108 9.0514 9.72702 8.89547Z\"\n />\n </svg>\n ),\n);\n\nInfoIcon.displayName = \"InfoIcon\";\n","import React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const SuccessIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n);\n\nSuccessIcon.displayName = \"SuccessIcon\";\n","import React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { IconProps } from \"./types\";\n\nexport const WarningIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n className={cn(\"size-5\", className)}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n);\n\nWarningIcon.displayName = \"WarningIcon\";\n","import * as ToastPrimitive from \"@radix-ui/react-toast\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Avatar } from \"../Avatar/Avatar\";\nimport { Button } from \"../Button/Button\";\nimport { IconButton } from \"../IconButton/IconButton\";\nimport { CloseIcon } from \"../Icons/CloseIcon\";\nimport { ErrorIcon } from \"../Icons/ErrorIcon\";\nimport { InfoIcon } from \"../Icons/InfoIcon\";\nimport { SuccessIcon } from \"../Icons/SuccessIcon\";\nimport { WarningIcon } from \"../Icons/WarningIcon\";\n\nexport enum toastVariants {\n info = \"info\",\n warning = \"warning\",\n success = \"success\",\n error = \"error\",\n messageToast = \"messageToast\",\n}\n\nexport type ToastVariant = keyof typeof toastVariants;\n\n// Override \"title\" prop to allow React.ReactNode instead of string | undefined\nexport interface ToastProps\n extends Omit<Omit<React.ComponentPropsWithoutRef<typeof ToastPrimitive.Root>, \"type\">, \"title\"> {\n /** Variant of the toast */\n variant?: ToastVariant;\n /** Toast title */\n title?: string;\n /** Toast description/message */\n description?: React.ReactNode;\n /** Action button label */\n actionLabel?: string;\n /** Action button click handler */\n onActionClick?: () => void;\n /** Show close button */\n showClose?: boolean;\n /** Avatar image source */\n avatarSrc?: string;\n /** Avatar alt text */\n avatarAlt?: string;\n /** Avatar fallback text */\n avatarFallback?: string;\n}\n\nexport interface ToastProviderProps extends ToastPrimitive.ToastProviderProps {}\nexport interface ToastViewportProps\n extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Viewport> {}\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ToastPrimitive.Provider;\n\nexport const ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Viewport>,\n ToastViewportProps\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 right-0 z-100 flex max-h-screen w-full flex-col-reverse gap-3 p-4 sm:top-auto sm:right-0 sm:bottom-0 sm:flex-col md:max-w-[420px]\",\n className,\n )}\n {...props}\n />\n));\n\nToastViewport.displayName = \"ToastViewport\";\n\nconst VariantIcon = ({ variant }: { variant: ToastVariant }) => {\n switch (variant) {\n case \"info\":\n return <InfoIcon className=\"size-5 text-info-500\" />;\n case \"warning\":\n return <WarningIcon className=\"size-5 text-warning-500\" />;\n case \"success\":\n return <SuccessIcon className=\"size-5 text-success-500\" />;\n case \"error\":\n return <ErrorIcon className=\"size-5 text-error-500\" />;\n }\n};\n\nexport const Toast = React.forwardRef<React.ComponentRef<typeof ToastPrimitive.Root>, ToastProps>(\n (\n {\n className,\n variant = \"info\",\n title,\n description,\n actionLabel,\n onActionClick,\n showClose = true,\n avatarSrc,\n avatarAlt,\n avatarFallback,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n <ToastPrimitive.Root\n ref={ref}\n data-testid=\"toast\"\n className={cn(\n // Base styles\n \"group pointer-events-auto relative flex w-full flex-col items-start gap-3 overflow-hidden rounded-lg border-none bg-background-solid p-4 text-background-inverse-solid shadow-lg transition-all\",\n // Dark mode\n \"dark:border-opacity-100\",\n // Animation\n \"data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-bottom-full data-[state=open]:sm:slide-in-from-top-full data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-(--radix-toast-swipe-end-x) data-[swipe=move]:translate-x-(--radix-toast-swipe-move-x) data-[state=closed]:animate-out data-[state=open]:animate-in data-[swipe=end]:animate-out data-[swipe=move]:transition-none\",\n // Manual CSS overrides\n className,\n )}\n {...props}\n >\n <div className=\"flex w-full items-center gap-3\">\n <div className=\"self-start\">\n {variant === \"messageToast\" ? (\n avatarSrc && <Avatar src={avatarSrc} alt={avatarAlt} fallback={avatarFallback} />\n ) : (\n <VariantIcon variant={variant} />\n )}\n </div>\n <div className=\"flex flex-1 flex-col items-start\">\n {title && (\n <ToastPrimitive.Title className=\"typography-body-2-semibold\">\n {title}\n </ToastPrimitive.Title>\n )}\n {description && (\n <ToastPrimitive.Description className=\"typography-body-2-regular mt-1 opacity-90\">\n {description}\n </ToastPrimitive.Description>\n )}\n {children}\n {onActionClick && (\n <Button\n variant=\"secondary\"\n // These styles are basically inverted from the selected theme\n className=\"mt-4 border-body-400 text-body-400\"\n size=\"32\"\n onClick={onActionClick}\n >\n {actionLabel ?? \"Action\"}\n </Button>\n )}\n </div>\n </div>\n {showClose && (\n <ToastPrimitive.Close asChild>\n <IconButton\n icon={<CloseIcon />}\n aria-label=\"Close notification\"\n // same as the button above\n className=\"absolute top-2 right-2 text-body-300\"\n variant=\"tertiary\"\n size=\"24\"\n />\n </ToastPrimitive.Close>\n )}\n </ToastPrimitive.Root>\n );\n },\n);\n\nToast.displayName = \"Toast\";\n"],"names":["r","f","n","clsx","concatArrays","array1","array2","combinedArray","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","getGroupIdForArbitraryProperty","classParts","startIndex","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","result","classRest","validatorsLength","validatorObj","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","entries","key","value","path","current","parts","part","next","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","originalClassName","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","setRef","ref","composeRefs","refs","node","hasCleanup","cleanups","cleanup","useComposedRefs","React","REACT_LAZY_TYPE","use","isPromiseLike","isLazyComponent","element","createSlot","ownerName","SlotClone","createSlotClone","Slot2","props","forwardedRef","children","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","jsx","Slot","childrenRef","getElementRef","props2","mergeProps","SLOTTABLE_IDENTIFIER","createSlottable","Slottable2","Fragment2","Slottable","childProps","overrideProps","propName","slotPropValue","childPropValue","getter","mayWarn","SpinnerIcon","jsxs","SIZE_CLASSES","ICON_SIZE_CLASS","VARIANT_CLASSES","getTextContent","LoadingSpinner","size","renderContent","loading","asChild","leftIcon","rightIcon","iconSizeClass","discount","price","Fragment","Button","variant","disabled","Comp","isDisabled","buttonSpecificProps","loadingLabelProps","CrossIcon","Alert","title","icon","closable","onClose","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","rootComponentName","defaultContext","BaseContext","Provider","scope","context","Context","useContext2","consumerName","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","useCallbackRef","callback","callbackRef","useLayoutEffect2","NODES","Primitive","primitive","Node","primitiveProps","require$$0","is","x","y","objectIs","useState","useEffect","useLayoutEffect","useDebugValue","useSyncExternalStore$2","subscribe","getSnapshot","_useState","inst","forceUpdate","checkIfSnapshotChanged","latestGetSnapshot","nextValue","useSyncExternalStore$1","shim","useSyncExternalStoreShim_production","didWarnOld18Alpha","didWarnUncachedGetSnapshot","cachedValue","useSyncExternalStoreShim_development","shimModule","require$$1","useIsHydrated","useSyncExternalStore","AVATAR_NAME","createAvatarContext","AvatarProvider","useAvatarContext","Avatar","__scopeAvatar","avatarProps","imageLoadingStatus","setImageLoadingStatus","IMAGE_NAME","AvatarImage","src","onLoadingStatusChange","imageProps","useImageLoadingStatus","handleLoadingStatusChange","status","FALLBACK_NAME","AvatarFallback","delayMs","fallbackProps","canRender","setCanRender","timerId","resolveLoadingStatus","image","referrerPolicy","crossOrigin","isHydrated","imageRef","loadingStatus","setLoadingStatus","updateStatus","handleLoad","handleError","Root","Image","Fallback","AvatarContext","STATUS_POSITIONS","AvatarRoot","onlineIndicator","platinumShow","NSFWShow","statusPosition","AvatarPrimitive.Root","AvatarPrimitive.Image","AvatarPrimitive.Fallback","alt","fallback","rootProps","badgeVariants","Badge","leftDot","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","event","useInsertionEffect","useControllableState","prop","defaultProp","onChange","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlled","isControlledRef","wasControlled","setValue","value2","isFunction","prevValueRef","usePrevious","useSize","setSize","resizeObserver","entry","width","height","borderSizeEntry","borderSize","useStateMachine","initialState","machine","state","Presence","present","presence","usePresence","React2","setNode","stylesRef","prevPresentRef","prevAnimationNameRef","send","currentAnimationName","getAnimationName","styles","wasPresent","prevAnimationName","timeoutId","ownerWindow","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","node2","dispatchDiscreteCustomEvent","target","ReactDOM","CHECKBOX_NAME","createCheckboxContext","CheckboxProviderImpl","useCheckboxContext","CheckboxProvider","__scopeCheckbox","checkedProp","defaultChecked","form","name","onCheckedChange","required","internal_do_not_use_render","checked","setChecked","control","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","isIndeterminate","TRIGGER_NAME","CheckboxTrigger","onKeyDown","onClick","checkboxProps","composedRefs","initialCheckedStateRef","reset","getState","prevChecked","Checkbox","CheckboxBubbleInput","INDICATOR_NAME","CheckboxIndicator","forceMount","indicatorProps","BUBBLE_INPUT_NAME","controlSize","input","inputProto","bubbles","defaultCheckedRef","CheckIcon","MinusIcon","helperText","id","helperTextId","hasLabel","inputRef","handleCheckedChange","checkboxElement","CheckboxPrimitive.Root","CheckboxPrimitive.Indicator","getDisplayValue","max","Count","tzName","timeZone","date","format","offsetFormatCache","offsetCache","tzOffset","offsetStr","calcOffset","captures","offsetRe","cacheStr","values","hours","minutes","seconds","TZDateMini","adjustToSystemTZ","syncToInternal","tz","offset","time","re","method","utcMethod","syncFromInternal","baseOffset","prevHour","systemOffset","prevHourSystemOffset","systemDSTChange","dstShift","offsetDiff","systemDate","systemSecondsOffset","secondsOffset","postBaseOffset","postOffset","postOffsetDiff","offsetChanged","postDiff","newBaseOffset","newOffset","offsetChange","TZDate","sign","day","month","year","locales","options","millisecondsInWeek","millisecondsInDay","constructFromSymbol","constructFrom","toDate","addDays","amount","_date","addMonths","dayOfMonth","endOfDesiredMonth","daysInMonth","defaultOptions","getDefaultOptions","startOfWeek","weekStartsOn","diff","startOfISOWeek","getISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getTimezoneOffsetInMilliseconds","utcDate","normalizeDates","dates","normalize","startOfDay","differenceInCalendarDays","laterDate","earlierDate","laterDate_","earlierDate_","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","startOfISOWeekYear","fourthOfJanuary","addWeeks","addYears","date_","min","isSameDay","dateLeft_","dateRight_","isDate","isValid","differenceInCalendarMonths","yearsDiff","monthsDiff","endOfMonth","normalizeInterval","interval","start","end","eachMonthOfInterval","reversed","endTime","step","startOfMonth","endOfYear","startOfYear","eachYearOfInterval","endOfWeek","endOfISOWeek","formatDistanceLocale","formatDistance","token","count","tokenValue","buildFormatLongFn","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_baseDate","_options","buildLocalizeFn","valuesArray","defaultWidth","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","rem100","localize","quarter","buildMatchFn","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","rest","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","enUS","getDayOfYear","getISOWeek","getWeekYear","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","output","lightFormatters","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","formatters","era","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","timestamp","delimiter","absOffset","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","_message","message","subject","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","locale","defaultLocale","originalDate","substring","firstCharacter","longFormatter","cleanEscapedString","formatterOptions","formatter","matched","getDaysInMonth","monthIndex","lastDayOfMonth","getMonth","getYear","isAfter","dateToCompare","isBefore","isSameMonth","isSameYear","setMonth","midMonth","setYear","FIVE_WEEKS","FOUR_WEEKS","getBroadcastWeeksInMonth","dateLib","firstDayOfMonth","firstDayOfWeek","broadcastStartDate","lastDateOfLastWeek","startOfBroadcastWeek","firstOfMonth","endOfBroadcastWeek","startDate","numberOfWeeks","dateFnsEnUS","formatDate","d","weekNumber","DateLib","overrides","dateLeft","dateRight","years","uniqueYears","yearsArray","formatted","_dateLib","numerals","digitMap","digit","code","localeCode","defaultDateLib","CalendarDay","displayMonth","CalendarMonth","weeks","CalendarWeek","days","CaptionLabel","Chevron","orientation","Day","tdProps","DayButton","buttonProps","UI","DayFlag","SelectionState","Animation","Dropdown","components","selectProps","cssClassSelect","selectedOption","DropdownNav","Footer","Month","calendarMonth","displayIndex","divProps","MonthCaption","MonthGrid","Months","dayPickerContext","createContext","useDayPicker","useContext","MonthsDropdown","Nav","onPreviousClick","onNextClick","previousMonth","nextMonth","navProps","labelPrevious","labelNext","handleNextClick","useCallback","e","handlePreviousClick","NextMonthButton","Option","PreviousMonthButton","rootRef","Select","Week","trProps","Weekday","Weekdays","WeekNumber","thProps","WeekNumberHeader","Weeks","YearsDropdown","rangeIncludesDate","range","excludeEnds","from","to","isDateInterval","matcher","isDateRange","isDateAfterType","isDateBeforeType","isDayOfWeekType","isDatesArray","dateMatchModifiers","matchers","matchersArr","matcherDate","diffBefore","diffAfter","isDayBefore","isDayAfter","createGetModifiers","navStart","navEnd","hidden","showOutsideDays","broadcastCalendar","today","computedNavStart","computedNavEnd","internalModifiersMap","customModifiersMap","isOutside","isBeforeNavStart","isAfterNavEnd","isHidden","isToday","modifierValue","dayFlags","customModifiers","getClassNamesForModifiers","modifiersClassNames","active","previousValue","getComponents","customComponents","getDataAttributes","dataAttributes","val","getDefaultClassNames","formatCaption","formatMonthCaption","formatDay","formatMonthDropdown","formatWeekdayName","weekday","formatWeekNumber","formatWeekNumberHeader","formatYearDropdown","formatYearCaption","getFormatters","customFormatters","defaultFormatters","labelDayButton","labelDay","labelGrid","labelCaption","labelGridcell","labelMonthDropdown","labelNav","defaultLabel","_month","labelWeekday","labelWeekNumber","labelWeekNumberHeader","labelYearDropdown","resolveLabel","customLabel","localeLabel","_args","getLabels","customLabels","localeLabels","defaultLabels","defaultLabels.labelDayButton","defaultLabels.labelMonthDropdown","defaultLabels.labelNext","defaultLabels.labelPrevious","defaultLabels.labelWeekNumber","defaultLabels.labelYearDropdown","defaultLabels.labelGrid","defaultLabels.labelGridcell","defaultLabels.labelNav","defaultLabels.labelWeekNumberHeader","defaultLabels.labelWeekday","getMonthOptions","getStyleForModifiers","dayModifiers","modifiersStyles","style","getWeekdays","ISOWeek","referenceToday","getYearOptions","reverse","firstNavYear","lastNavYear","createNoonOverrides","fallbackWeekStartsOn","toNoonTZDate","normalizedDate","toCalendarDate","zoned","base","weekStartsOnValue","cursor","endKey","getWeekFn","getISOWeekFn","left","right","differenceInCalendarDaysFn","differenceInCalendarMonthsFn","asHtmlElement","queryMonthEls","queryMonthEl","queryCaptionEl","queryWeeksEl","queryNavEl","queryWeekdaysEl","useAnimation","rootElRef","enabled","months","focused","previousRootElSnapshotRef","useRef","previousMonthsRef","animatingRef","previousMonths","isAfterPreviousMonth","captionAnimationClass","weeksAnimationClass","previousRootElSnapshot","rootElSnapshot","currentMonthElSnapshot","previousMonthElSnapshot","captionEl","weeksEl","previousMonthEls","currentMonthEls","el","navEl","currentMonthEl","previousMonthEl","cleanUp","previousWeekdaysEl","previousCaptionEl","previousWeeksEl","getDates","displayMonths","maxDate","firstMonth","lastMonth","fixedWeeks","startWeekFirstDate","displayMonthsWeekEnd","constraintWeekEnd","gridEndDate","nOfDays","nOfMonths","extraDates","daysToAdd","getDays","calendarMonths","initialDays","weekDays","getDisplayMonths","firstDisplayedMonth","calendarEndMonth","numberOfMonths","getInitialMonth","defaultMonth","initialMonth","getMonths","dayPickerMonths","firstDateOfFirstWeek","monthDates","nrOfDaysWithFixedWeeks","dayPickerMonth","getNavMonths","startMonth","endMonth","newDate","fromYear","toYear","fromMonth","toMonth","hasYearDropdown","getNextMonth","pagedNavigation","getPreviousMonth","calendarStartMonth","getWeeks","initialWeeks","useControlledValue","defaultValue","controlledValue","uncontrolledValue","useCalendar","setFirstMonth","newInitialMonth","useMemo","disableNavigation","onMonthChange","isDayInCalendar","goToMonth","newMonth","FocusTargetPriority","isFocusableDay","calculateFocusTarget","getModifiers","isSelected","lastFocused","focusTarget","foundFocusTargetPriority","getFocusableDate","moveBy","moveDir","refDate","focusableDate","getNextFocus","refDay","attempt","targetMonth","focusDay","useFocus","calendar","autoFocus","setLastFocused","focusedDay","setFocused","nextFocus","useMulti","initiallySelected","onSelect","internallySelected","setSelected","selected","triggerDate","newDates","addToRange","initialRange","rangeContainsDayOfWeek","dayOfWeekArr","totalDays","totalDaysLimit","rangeOverlaps","rangeLeft","rangeRight","rangeContainsModifiers","functionMatchers","useRange","excludeDisabled","newRange","useSingle","compareDate","useSelection","single","multi","toTimeZone","toZoneNoon","noonSafe","convertMatcher","convertMatchersToTimeZone","DayPicker","initialProps","nextModifiers","labels","noonOverrides","captionLayout","mode","navLayout","onDayBlur","onDayClick","onDayFocus","onDayKeyDown","onDayMouseEnter","onDayMouseLeave","onPrevClick","showWeekNumber","select","selectedValue","blur","isFocusTarget","moveFocus","weekdays","isInteractive","handleDayClick","m","handleDayFocus","handleDayBlur","handleDayKeyDown","keyMap","handleDayMouseEnter","handleDayMouseLeave","handleMonthChange","selectedMonth","handleYearChange","selectedYear","contextValue","monthControl","yearControl","ariaLabel","ChevronLeftIcon","ChevronRightIcon","range_start","range_end","isSingleDayRange","DatePicker","forwardRef","type","onApply","onCancel","cancelLabel","applyLabel","showFooter","dayPickerProps","isMulti","NAME","DEFAULT_ORIENTATION","ORIENTATIONS","Separator","decorative","orientationProp","domProps","isValidOrientation","semanticProps","Divider","SeparatorPrimitive.Root","iconButtonVariants","iconSizeVariants","sizeVariants","IconButton","counterValue","ArrowRightIcon","ArrowUpRightIcon","CheckCircleIcon","CrownIcon","ErrorCircleIcon","FireIcon","HomeIcon","InfoCircleIcon","PlusIcon","VipBadgeIcon","bgId","borderId","WarningTriangleIcon","getLogoColors","color","WordmarkSVG","Logo","colors","showIcon","showWordmark","ariaProps","getVisiblePages","currentPage","totalPages","_","pages","Pagination","onPageChange","previousLabel","nextLabel","getPageLabel","page","isFirstPage","isLastPage","handlePrevious","handleNext","pillVariants","Pill","TRACK_HEIGHT","GAP","getDefaultBarColor","getDefaultTextColor","ProgressBar","showCompletion","stepsLabel","helperLeft","helperRight","clampedValue","isGeneric","isSmall","barColor","textColor","showHeader","createCollection","PROVIDER_NAME","createCollectionContext","createCollectionScope","CollectionProviderImpl","useCollectionContext","CollectionProvider","itemMap","COLLECTION_SLOT_NAME","CollectionSlotImpl","CollectionSlot","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlotImpl","CollectionItemSlot","itemData","useCollection","collectionNode","orderedNodes","a","b","useReactId","useId","deterministicId","setId","reactId","DirectionContext","useDirection","localDir","globalDir","ENTRY_FOCUS","EVENT_OPTIONS","GROUP_NAME","Collection","createRovingFocusGroupContext","createRovingFocusGroupScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","RovingFocusGroupImpl","__scopeRovingFocusGroup","loop","dir","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","groupProps","direction","currentTabStopId","setCurrentTabStopId","isTabbingBackOut","setIsTabbingBackOut","handleEntryFocus","getItems","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","tabStopId","prevCount","isKeyboardFocus","entryFocusEvent","items","item","activeItem","currentItem","candidateNodes","focusFirst","ITEM_NAME","RovingFocusGroupItem","focusable","itemProps","autoId","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","currentIndex","wrapArray","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","candidates","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","candidate","Item","RADIO_NAME","createRadioContext","createRadioScope","RadioProvider","useRadioContext","Radio","__scopeRadio","onCheck","radioProps","button","setButton","RadioBubbleInput","RadioIndicator","ARROW_KEYS","RADIO_GROUP_NAME","createRadioGroupContext","createContextScope2","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","__scopeRadioGroup","valueProp","onValueChange","rovingFocusGroupScope","jsx2","RovingFocusGroup.Root","Primitive2","RadioGroupItem","radioScope","useComposedRefs2","isArrowKeyPressedRef","handleKeyDown","handleKeyUp","RovingFocusGroup.Item","composeEventHandlers2","INDICATOR_NAME2","RadioGroupIndicator","Root2","Item2","Indicator","generatedId","inputId","RadioGroupPrimitive.Item","RadioGroupPrimitive.Indicator","RadioGroupPrimitive.Root","clamp","PAGE_KEYS","BACK_KEYS","SLIDER_NAME","createSliderContext","SliderProvider","useSliderContext","Slider","minStepsBetweenThumbs","onValueCommit","inverted","sliderProps","thumbRefs","valueIndexToChangeRef","SliderOrientation","SliderHorizontal","SliderVertical","setValues","valuesBeforeSlideStartRef","handleSlideStart","closestIndex","getClosestValueIndex","updateValues","handleSlideMove","handleSlideEnd","prevValue","atIndex","commit","decimalCount","getDecimalCount","snapToStep","roundValue","prevValues","nextValues","getNextSortedValues","hasMinStepsBetweenValues","hasChanged","stepDirection","multiplier","stepInDirection","SliderOrientationProvider","useSliderOrientationContext","onSlideStart","onSlideMove","onSlideEnd","onStepKeyDown","slider","setSlider","rectRef","isDirectionLTR","isSlidingFromLeft","getValueFromPointer","pointerPosition","rect","linearScale","SliderImpl","isBackKey","sliderRef","isSlidingFromBottom","__scopeSlider","onHomeKeyDown","onEndKeyDown","TRACK_NAME","SliderTrack","trackProps","RANGE_NAME","SliderRange","rangeProps","valuesCount","percentages","convertValueToPercentage","offsetStart","offsetEnd","THUMB_NAME","SliderThumb","thumb","setThumb","SliderThumbImpl","thumbProps","percent","getLabel","orientationSize","thumbInBoundsOffset","getThumbInBoundsOffset","SliderBubbleInput","percentage","totalValues","distances","closestDistance","halfWidth","getStepsBetweenValues","minStepsBetweenValues","stepsBetweenValues","ratio","rounder","Track","Range","Thumb","SliderLayout","labelId","labelPosition","minLabel","maxLabel","showTooltip","formatTooltip","ariaLabelledBy","thumbRef","syncTooltipText","SliderPrimitive.Thumb","raw","tooltip","num","thumbCount","resolvedLabelledBy","resolvedAriaLabel","sliderTrack","SliderPrimitive.Root","SliderPrimitive.Track","SliderPrimitive.Range","CloseButton","resolveCtaSlot","slot","VipEarnContent","description","showActions","primarySlot","primaryLabel","primaryOnClick","primary","WelcomeContent","secondarySlot","secondaryLabel","secondaryOnClick","secondary","DefaultContent","Snackbar","SWITCH_NAME","createSwitchContext","SwitchProvider","useSwitchContext","Switch","__scopeSwitch","switchProps","SwitchBubbleInput","SwitchThumb","thumbSizeClass","SwitchPrimitive.Root","SwitchPrimitive.Thumb","SwitchField","infoText","propId","switchElement","labelContent","SwitchToggle","groupName","internalValue","setInternalValue","currentValue","isSecondSelected","sizeClass","handleSelect","optionValue","option","optionId","TABS_NAME","createTabsContext","TabsProvider","useTabsContext","Tabs","__scopeTabs","activationMode","tabsProps","TAB_LIST_NAME","TabsList","listProps","TabsTrigger","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isAutomaticActivation","CONTENT_NAME","TabsContent","contentProps","isMountAnimationPreventedRef","rAF","baseId","List","Trigger","Content","TabsPrimitive.Root","TabsPrimitive.Content","TabsPrimitive.List","TabsPrimitive.Trigger","useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","DISMISSABLE_LAYER_NAME","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","disableOutsidePointerEvents","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","force","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","branch","focusOutside","useFocusOutside","dispatchUpdate","handleUpdate","BRANCH_NAME","DismissableLayerBranch","handlePointerDownOutside","isPointerInsideReactTreeRef","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","handleAndDispatchCustomEvent","eventDetail","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","handler","detail","discrete","Branch","PORTAL_NAME","Portal","containerProp","portalProps","mounted","setMounted","container","VISUALLY_HIDDEN_STYLES","VisuallyHidden","createToastContext","ToastProviderProvider","useToastProviderContext","ToastProvider","__scopeToast","duration","swipeDirection","swipeThreshold","viewport","setViewport","toastCount","setToastCount","isFocusedToastEscapeKeyDownRef","isClosePausedRef","VIEWPORT_NAME","VIEWPORT_DEFAULT_HOTKEY","VIEWPORT_PAUSE","VIEWPORT_RESUME","ToastViewport","hotkey","viewportProps","wrapperRef","headFocusProxyRef","tailFocusProxyRef","hotkeyLabel","hasToasts","wrapper","handlePause","pauseEvent","handleResume","resumeEvent","handleFocusOutResume","handlePointerLeaveResume","getSortedTabbableCandidates","tabbingDirection","tabbableCandidates","toastItem","toastNode","toastTabbableCandidates","getTabbableCandidates","isMetaKey","focusedElement","isTabbingBackwards","sortedCandidates","DismissableLayer.Branch","FocusProxy","FOCUS_PROXY_NAME","onFocusFromOutsideViewport","proxyProps","prevFocusedElement","TOAST_NAME","TOAST_SWIPE_START","TOAST_SWIPE_MOVE","TOAST_SWIPE_CANCEL","TOAST_SWIPE_END","Toast","openProp","defaultOpen","onOpenChange","toastProps","open","setOpen","ToastImpl","ToastInteractiveProvider","useToastInteractiveContext","durationProp","onPause","onResume","onSwipeStart","onSwipeMove","onSwipeCancel","onSwipeEnd","pointerStartRef","swipeDeltaRef","closeTimerStartTimeRef","closeTimerRemainingTimeRef","closeTimerRef","onToastAdd","onToastRemove","handleClose","startTimer","duration2","elapsedTime","announceTextContent","getAnnounceTextContent","ToastAnnounce","DismissableLayer.Root","hasSwipeMoveStarted","isHorizontalSwipe","clampedX","clampedY","moveStartBuffer","delta","isDeltaInDirection","toast","event2","announceProps","renderAnnounceText","setRenderAnnounceText","isAnnounced","setIsAnnounced","useNextFrame","timer","TITLE_NAME","ToastTitle","titleProps","DESCRIPTION_NAME","ToastDescription","descriptionProps","ACTION_NAME","ToastAction","altText","actionProps","ToastAnnounceExclude","ToastClose","CLOSE_NAME","closeProps","interactiveContext","announceExcludeProps","textContent","isHTMLElement","isExcluded","currentTarget","threshold","deltaX","deltaY","isDeltaX","fn","raf1","raf2","nodes","walker","isHiddenInput","previouslyFocusedElement","Viewport","Title","Description","Close","CloseIcon","ErrorIcon","InfoIcon","SuccessIcon","WarningIcon","ToastPrimitive.Provider","ToastPrimitive.Viewport","VariantIcon","actionLabel","onActionClick","showClose","avatarSrc","avatarAlt","avatarFallback","ToastPrimitive.Root","ToastPrimitive.Title","ToastPrimitive.Description","ToastPrimitive.Close"],"mappings":"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","x_google_ignoreList":[0,1,3,4,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,197,215,216,217,218,219,222,223,228,232,237,238,239,240,241]}