{"version":3,"sources":["../src/hooks/useFormEngine.ts","../src/hooks/useFieldValue.ts","../src/hooks/useFieldError.ts","../src/hooks/useSectionProgress.ts","../src/hooks/useFormDirty.ts","../src/hooks/useFieldVisibility.ts","../src/hooks/useFormProgress.ts","../src/hooks/useConditionalFields.ts","../src/hooks/useFormSubmit.ts","../src/hooks/useFieldOptions.ts","../src/theme/theme-to-css-vars.ts","../src/theme/ThemeProvider.tsx","../src/registry/field-registry.ts","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/src/lib/class-group-utils.ts","../../../node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/src/lib/lru-cache.ts","../../../node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/src/lib/parse-class-name.ts","../../../node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/src/lib/config-utils.ts","../../../node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/src/lib/merge-classlist.ts","../../../node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/src/lib/tw-join.ts","../../../node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../../../node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/src/lib/from-theme.ts","../../../node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/src/lib/validators.ts","../../../node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/src/lib/default-config.ts","../../../node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/src/lib/tw-merge.ts","../src/utils/cn.ts","../src/components/ui/label.tsx","../src/components/fields/FieldWrapper.tsx","../src/components/ui/input.tsx","../src/components/fields/ShortTextField.tsx","../src/components/ui/textarea.tsx","../src/components/fields/LongTextField.tsx","../src/components/fields/EmailField.tsx","../src/components/fields/PhoneField.tsx","../../../node_modules/.pnpm/lucide-react@0.400.0_react@19.2.4/node_modules/shared/src/utils.ts","../../../node_modules/.pnpm/lucide-react@0.400.0_react@19.2.4/node_modules/lucide-react/src/defaultAttributes.ts","../../../node_modules/.pnpm/lucide-react@0.400.0_react@19.2.4/node_modules/lucide-react/src/Icon.ts","../../../node_modules/.pnpm/lucide-react@0.400.0_react@19.2.4/node_modules/lucide-react/src/createLucideIcon.ts","../../../node_modules/.pnpm/lucide-react@0.400.0_react@19.2.4/node_modules/lucide-react/src/icons/calendar.ts","../../../node_modules/.pnpm/lucide-react@0.400.0_react@19.2.4/node_modules/lucide-react/src/icons/check.ts","../../../node_modules/.pnpm/lucide-react@0.400.0_react@19.2.4/node_modules/lucide-react/src/icons/chevron-down.ts","../../../node_modules/.pnpm/lucide-react@0.400.0_react@19.2.4/node_modules/lucide-react/src/icons/chevron-left.ts","../../../node_modules/.pnpm/lucide-react@0.400.0_react@19.2.4/node_modules/lucide-react/src/icons/chevron-right.ts","../../../node_modules/.pnpm/lucide-react@0.400.0_react@19.2.4/node_modules/lucide-react/src/icons/chevron-up.ts","../../../node_modules/.pnpm/lucide-react@0.400.0_react@19.2.4/node_modules/lucide-react/src/icons/circle.ts","../../../node_modules/.pnpm/lucide-react@0.400.0_react@19.2.4/node_modules/lucide-react/src/icons/clock.ts","../src/components/ui/select.tsx","../src/components/fields/PhoneInternationalField.tsx","../src/components/fields/UrlField.tsx","../src/components/fields/LegalNameField.tsx","../src/components/fields/NumberField.tsx","../src/components/ui/slider.tsx","../src/components/fields/SliderField.tsx","../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../src/components/ui/button.tsx","../src/components/fields/RatingField.tsx","../src/components/fields/NpsField.tsx","../src/components/ui/radio-group.tsx","../src/components/fields/LikertField.tsx","../src/components/fields/OpinionScaleField.tsx","../src/components/fields/SingleSelectField.tsx","../src/components/ui/checkbox.tsx","../src/components/fields/MultiSelectField.tsx","../src/components/ui/popover.tsx","../src/components/fields/DropdownField.tsx","../src/components/ui/switch.tsx","../src/components/fields/BooleanField.tsx","../src/components/fields/CountrySelectField.tsx","../src/components/fields/RankingField.tsx","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/toDate.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/constructFrom.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/addDays.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/constants.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/defaultOptions.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfWeek.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfISOWeek.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getISOWeekYear.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfDay.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/differenceInCalendarDays.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfISOWeekYear.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/isDate.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/isValid.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfYear.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/localize.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/_lib/buildMatchFn.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/match.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getDayOfYear.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getISOWeek.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getWeekYear.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfWeekYear.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getWeek.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/addLeadingZeros.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/format/lightFormatters.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/format/formatters.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/format/longFormatters.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/protectedTokens.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/format.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getDefaultOptions.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getISODay.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/transpose.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/Setter.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/Parser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/EraParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/constants.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/utils.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/YearParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/QuarterParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/MonthParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/setWeek.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/setISOWeek.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/DateParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/setDay.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/DayParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/LocalDayParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/setISODay.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/ISODayParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/AMPMParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/MinuteParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/SecondParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse/_lib/parsers.mjs","../../../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/parse.mjs","../../../node_modules/.pnpm/@date-fns+tz@1.5.0/node_modules/@date-fns/tz/tzName/index.js","../../../node_modules/.pnpm/@date-fns+tz@1.5.0/node_modules/@date-fns/tz/tzOffset/index.js","../../../node_modules/.pnpm/@date-fns+tz@1.5.0/node_modules/@date-fns/tz/date/mini.js","../../../node_modules/.pnpm/@date-fns+tz@1.5.0/node_modules/@date-fns/tz/date/index.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/constants.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/constructFrom.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/toDate.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/addDays.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/addMonths.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/defaultOptions.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/startOfWeek.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/startOfISOWeek.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getISOWeekYear.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/normalizeDates.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/startOfDay.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/differenceInCalendarDays.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/startOfISOWeekYear.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/addWeeks.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/addYears.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/max.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/min.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isSameDay.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isDate.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isValid.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/differenceInCalendarMonths.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/endOfMonth.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/normalizeInterval.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/eachMonthOfInterval.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/startOfMonth.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/endOfYear.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/startOfYear.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/eachYearOfInterval.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/endOfWeek.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/endOfISOWeek.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/en-US/_lib/localize.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/_lib/buildMatchFn.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/en-US/_lib/match.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/en-US.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getDayOfYear.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getISOWeek.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getWeekYear.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/startOfWeekYear.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getWeek.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/addLeadingZeros.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/format/lightFormatters.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/format/formatters.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/format/longFormatters.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/protectedTokens.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/format.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getDaysInMonth.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getMonth.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getYear.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isAfter.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isBefore.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isSameMonth.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isSameYear.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/setMonth.js","../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/setYear.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/locale/en-US.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/classes/DateLib.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/classes/CalendarDay.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/custom-components.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/CaptionLabel.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/Chevron.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/Day.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/DayButton.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/UI.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/useDayPicker.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/Dropdown.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/DropdownNav.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/Footer.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/Month.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/MonthCaption.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/MonthGrid.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/Months.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/Nav.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/NextMonthButton.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/Option.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/Root.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/Select.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/Week.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/Weekday.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/Weekdays.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/WeekNumber.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/Weeks.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/components/YearsDropdown.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/typeguards.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getComponents.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/index.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/formatCaption.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/formatDay.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getFormatters.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/index.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelDayButton.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelGrid.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelGridcell.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelNav.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelNext.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelPrevious.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelWeekday.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getLabels.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/noonDateLib.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/useAnimation.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getDates.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getDays.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getMonths.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getWeeks.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/useCalendar.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/useFocus.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/selection/useMulti.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/addToRange.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/selection/useRange.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/selection/useSingle.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/useSelection.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/toTimeZone.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.js","../../../node_modules/.pnpm/react-day-picker@10.0.1_@types+react@19.2.14_react@19.2.4/node_modules/react-day-picker/dist/esm/DayPicker.js","../src/components/ui/calendar.tsx","../src/components/fields/DateField.tsx","../src/components/fields/DateRangeField.tsx","../src/components/fields/TimeField.tsx","../src/components/ui/badge.tsx","../src/components/fields/AppointmentField.tsx","../src/utils/format-helpers.ts","../src/components/fields/FileUploadField.tsx","../src/components/fields/SignatureField.tsx","../src/components/fields/ImageCaptureField.tsx","../src/components/fields/AddressField.tsx","../src/components/ui/card.tsx","../src/components/fields/PaymentField.tsx","../src/components/ui/table.tsx","../src/components/fields/MatrixField.tsx","../src/components/FieldRenderer.tsx","../src/registry/FieldRegistryContext.tsx","../src/components/fields/RepeaterField.tsx","../src/components/fields/CalculatedField.tsx","../src/components/fields/HiddenField.tsx","../src/components/fields/ScoringField.tsx","../src/components/fields/ConsentField.tsx","../src/components/ui/alert.tsx","../src/components/fields/InfoBlockField.tsx","../src/components/fields/SectionHeaderField.tsx","../src/components/fields/PageBreakField.tsx","../src/components/fields/WelcomeScreenField.tsx","../src/components/fields/ThankYouScreenField.tsx","../src/components/fields/RichTextField.tsx","../src/components/fields/ImageField.tsx","../src/components/fields/VideoField.tsx","../src/components/ui/separator.tsx","../src/components/fields/DividerField.tsx","../src/components/fields/SpacerField.tsx","../src/registry/default-registry.ts","../src/components/SectionRenderer.tsx","../src/components/ProgressBar.tsx","../src/components/NavigationButtons.tsx","../src/components/ErrorSummary.tsx","../src/components/CompletionScreen.tsx","../src/components/DraftResumePrompt.tsx","../src/components/FormErrorBoundary.tsx","../src/components/ClassicModeRenderer.tsx","../src/components/conversational/ConversationalRenderer.tsx","../src/components/FormEngineRenderer.tsx","../src/components/SectionNavigation.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/progress.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/index.ts"],"names":["useSyncExternalStore","useCallback","useRef","useMemo","r","CLASS_PART_SEPARATOR","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","classParts","split","length","shift","getGroupRecursive","getGroupIdForArbitraryProperty","getConflictingClassGroupIds","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","nextPart","get","classGroupFromNextClassPart","slice","undefined","validators","classRest","join","find","validator","arbitraryPropertyRegex","test","arbitraryPropertyClassName","exec","property","substring","indexOf","theme","prefix","Map","prefixedClassGroupEntries","getPrefixedClassGroupEntries","Object","entries","classGroups","forEach","classGroup","processClassesRecursively","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","push","key","path","currentClassPartObject","pathPart","has","set","func","classGroupEntries","map","prefixedClassGroup","fromEntries","value","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","createParseClassName","separator","experimentalParseClassName","isSeparatorSingleCharacter","firstSeparatorCharacter","separatorLength","parseClassName","modifiers","bracketDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","hasImportantModifier","startsWith","baseClassName","maybePostfixModifierPosition","sortModifiers","sortedModifiers","unsortedModifiers","modifier","isArbitraryVariant","sort","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","classGroupsInConflict","classNames","trim","result","originalClassName","Boolean","variantModifier","modifierId","classId","includes","conflictGroups","i","group","twJoin","argument","resolvedValue","string","arguments","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","reduce","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","callTailwindMerge","apply","fromTheme","themeGetter","arbitraryValueRegex","fractionRegex","stringLengths","Set","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isLength","isNumber","isArbitraryLength","getIsArbitraryValue","isLengthOnly","Number","isNaN","isArbitraryNumber","isInteger","isPercent","endsWith","isArbitraryValue","isTshirtSize","sizeLabels","isArbitrarySize","isNever","isArbitraryPosition","imageLabels","isArbitraryImage","isImage","isArbitraryShadow","isShadow","isAny","label","testValue","getDefaultConfig","colors","spacing","blur","brightness","borderColor","borderRadius","borderSpacing","borderWidth","contrast","grayscale","hueRotate","invert","gap","gradientColorStops","gradientColorStopPositions","inset","margin","opacity","padding","saturate","scale","sepia","skew","space","translate","getOverscroll","getOverflow","getSpacingWithAutoAndArbitrary","getSpacingWithArbitrary","getLengthWithEmptyAndArbitrary","getNumberWithAutoAndArbitrary","getPositions","getLineStyles","getBlendModes","getAlign","getZeroAndEmpty","getBreaks","getNumberAndArbitrary","aspect","container","columns","box","display","float","clear","isolation","object","overflow","overscroll","position","start","end","top","right","bottom","left","visibility","z","basis","flex","grow","shrink","order","col","span","row","justify","content","items","self","p","px","py","ps","pe","pt","pr","pb","pl","m","mx","my","ms","me","mt","mr","mb","ml","w","screen","h","size","text","font","tracking","leading","list","placeholder","decoration","indent","align","whitespace","break","hyphens","bg","repeat","from","via","to","rounded","border","divide","outline","ring","shadow","filter","table","caption","transition","duration","ease","delay","animate","transform","rotate","origin","accent","appearance","cursor","caret","resize","scroll","snap","touch","select","fill","stroke","sr","twMerge","jsx","LabelPrimitive","jsxs","Component","forwardRef","createElement","SelectPrimitive","min","max","React","SliderPrimitive","param","RadioGroupPrimitive","CheckboxPrimitive","LAYOUT_CLASSES","useState","PopoverPrimitive","OTHER_VALUE","SwitchPrimitive","COUNTRIES","defaultOptions","format","localize","formatLong","getDefaultOptions","match","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","cleanEscapedString","millisecondsInWeek","millisecondsInDay","constructFrom","toDate","addDays","startOfWeek","startOfISOWeek","getISOWeekYear","getTimezoneOffsetInMilliseconds","startOfDay","differenceInCalendarDays","startOfISOWeekYear","isDate","isValid","startOfYear","formatDistanceLocale","formatDistance","buildFormatLongFn","dateFormats","timeFormats","dateTimeFormats","formatRelativeLocale","formatRelative","buildLocalizeFn","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","buildMatchFn","findIndex","findKey","buildMatchPatternFn","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","enUS","getDayOfYear","getISOWeek","getWeekYear","startOfWeekYear","getWeek","addLeadingZeros","lightFormatters","dayPeriodEnum","formatters","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","longFormatters","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","message","options","Select","UI","DayFlag","SelectionState","Animation","createContext","useContext","labelPrevious","labelNext","isSameDay","isAfter","isSameMonth","startOfMonth","isBefore","endOfMonth","days","defaultLabel","endOfYear","eachMonthOfInterval","getMonth","eachYearOfInterval","getYear","differenceInCalendarMonths","endOfBroadcastWeek","endOfISOWeek","endOfWeek","startOfBroadcastWeek","weekDays","addMonths","weeks","week","addYears","months","previousMonth","nextMonth","FocusTargetPriority","addWeeks","useFocus","locale","dateLib","formatCaption","formatDay","formatMonthDropdown","formatWeekNumber","formatWeekNumberHeader","formatWeekdayName","formatYearDropdown","labelDayButton","labelGridcell","labelGrid","labelMonthDropdown","labelNav","labelWeekday","labelWeekNumber","labelWeekNumberHeader","labelYearDropdown","style","Calendar","props","React28","range","Slot","useEffect","SeparatorPrimitive","Fragment","CollapsiblePrimitive","ProgressPrimitive","TogglePrimitive","React29","ToggleGroupPrimitive"],"mappings":"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","file":"index.mjs","sourcesContent":["import { useRef, useSyncExternalStore, useMemo } from \"react\";\r\nimport {\r\n  createEngine,\r\n  type FormEngine,\r\n  type EngineOptions,\r\n  type FormEngineSchema,\r\n  type FormState,\r\n} from \"@squaredr/fieldcraft-core\";\r\n\r\nexport type UseFormEngineReturn = FormEngine & { state: FormState };\r\n\r\n/**\r\n * React hook that creates and manages a FormEngine instance.\r\n *\r\n * Uses a single stable engine (never destroyed) to avoid stale-subscription\r\n * bugs with React Strict Mode's double mount/unmount cycle.\r\n * `useSyncExternalStore` drives re-renders when engine state changes.\r\n *\r\n * @param schema - The form schema defining sections, fields, and validation rules.\r\n * @param options - Optional engine configuration (adapters, prefill values, callbacks, etc.).\r\n * @returns A stable object containing every `FormEngine` method plus a reactive `state` snapshot.\r\n *\r\n * @example\r\n * ```tsx\r\n * const { state, setValue, submit } = useFormEngine(schema, {\r\n *   onSubmit: (response) => console.log(response),\r\n *   prefillValues: { name: \"Jane\" },\r\n * });\r\n *\r\n * // state.values, state.errors, state.currentSectionId, etc. are reactive\r\n * ```\r\n */\r\nexport function useFormEngine(\r\n  schema: FormEngineSchema,\r\n  options?: EngineOptions,\r\n): UseFormEngineReturn {\r\n  // Create engine once and keep it for the lifetime of the hook.\r\n  // We intentionally do NOT destroy it on unmount — React Strict Mode\r\n  // would destroy it between the first unmount and second mount, leaving\r\n  // useSyncExternalStore subscribed to a dead engine.\r\n  const engineRef = useRef<FormEngine | null>(null);\r\n  if (engineRef.current === null) {\r\n    engineRef.current = createEngine(schema, options);\r\n  }\r\n  const engine = engineRef.current;\r\n\r\n  // Stable subscribe/getSnapshot that always reference the same engine.\r\n  const subscribe = useMemo(\r\n    () => (onStoreChange: () => void) => engine.subscribe(onStoreChange),\r\n    [engine],\r\n  );\r\n  const getSnapshot = useMemo(() => () => engine.getState(), [engine]);\r\n\r\n  const state = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\r\n\r\n  // Stable proxy so callers always get the same object identity\r\n  const proxy = useMemo<FormEngine>(\r\n    () => ({\r\n      getState: () => engine.getState(),\r\n      subscribe: (listener) => engine.subscribe(listener),\r\n      nextSection: () => engine.nextSection(),\r\n      prevSection: () => engine.prevSection(),\r\n      jumpTo: (id) => engine.jumpTo(id),\r\n      nextQuestion: () => engine.nextQuestion(),\r\n      prevQuestion: () => engine.prevQuestion(),\r\n      setValue: (id, val) => engine.setValue(id, val),\r\n      setValues: (vals) => engine.setValues(vals),\r\n      touchField: (id) => engine.touchField(id),\r\n      clearField: (id) => engine.clearField(id),\r\n      getVisibleSections: () => engine.getVisibleSections(),\r\n      getVisibleQuestions: () => engine.getVisibleQuestions(),\r\n      getVisibleFields: (id) => engine.getVisibleFields(id),\r\n      isFieldRequired: (id) => engine.isFieldRequired(id),\r\n      isFieldVisible: (id) => engine.isFieldVisible(id),\r\n      isFieldDisabled: (id) => engine.isFieldDisabled(id),\r\n      getFieldError: (id) => engine.getFieldError(id),\r\n      saveDraft: () => engine.saveDraft(),\r\n      loadDraft: () => engine.loadDraft(),\r\n      clearDraft: () => engine.clearDraft(),\r\n      validate: () => engine.validate(),\r\n      validateSection: (id) => engine.validateSection(id),\r\n      submit: () => engine.submit(),\r\n      updateFieldCustomProps: (id, props) => engine.updateFieldCustomProps(id, props),\r\n      getSchema: () => engine.getSchema(),\r\n      getSectionById: (id) => engine.getSectionById(id),\r\n      getQuestionById: (id) => engine.getQuestionById(id),\r\n      resetField: (id) => engine.resetField(id),\r\n      resetForm: () => engine.resetForm(),\r\n      getFieldState: (id) => engine.getFieldState(id),\r\n      getChangedFields: () => engine.getChangedFields(),\r\n      focusField: (id) => engine.focusField(id),\r\n      isFieldReadonly: (id) => engine.isFieldReadonly(id),\r\n      destroy: () => engine.destroy(),\r\n    }),\r\n    [engine],\r\n  );\r\n\r\n  return {\r\n    ...proxy,\r\n    state,\r\n  };\r\n}\r\n","import { useSyncExternalStore, useCallback } from \"react\";\r\nimport type { FormEngine } from \"@squaredr/fieldcraft-core\";\r\n\r\n/**\r\n * Subscribes to a single field's current value inside the engine state.\r\n *\r\n * Re-renders the consuming component only when the value for `fieldId` changes,\r\n * using `useSyncExternalStore` for tear-free reads.\r\n *\r\n * @param engine - The `FormEngine` instance (typically from {@link useFormEngine}).\r\n * @param fieldId - The `id` of the field whose value to observe.\r\n * @returns The current value of the field, or `undefined` if not yet set.\r\n *\r\n * @example\r\n * ```tsx\r\n * const email = useFieldValue(engine, \"email\") as string;\r\n * ```\r\n */\r\nexport function useFieldValue(engine: FormEngine, fieldId: string): unknown {\r\n  return useSyncExternalStore(\r\n    useCallback(\r\n      (onStoreChange: () => void) => engine.subscribe(onStoreChange),\r\n      [engine],\r\n    ),\r\n    useCallback(() => engine.getState().values[fieldId], [engine, fieldId]),\r\n    useCallback(() => engine.getState().values[fieldId], [engine, fieldId]),\r\n  );\r\n}\r\n","import { useSyncExternalStore, useCallback } from \"react\";\r\nimport type { FormEngine } from \"@squaredr/fieldcraft-core\";\r\n\r\n/**\r\n * Subscribes to the validation errors for a single field.\r\n *\r\n * Returns `undefined` when the field has no errors (or hasn't been validated yet),\r\n * and a `string[]` of error messages when validation fails.\r\n *\r\n * @param engine - The `FormEngine` instance (typically from {@link useFormEngine}).\r\n * @param fieldId - The `id` of the field whose errors to observe.\r\n * @returns An array of error message strings, or `undefined` if there are no errors.\r\n *\r\n * @example\r\n * ```tsx\r\n * const errors = useFieldError(engine, \"email\");\r\n * // errors → undefined | [\"Email is required\", \"Must be a valid email\"]\r\n * ```\r\n */\r\nexport function useFieldError(\r\n  engine: FormEngine,\r\n  fieldId: string,\r\n): string[] | undefined {\r\n  return useSyncExternalStore(\r\n    useCallback(\r\n      (onStoreChange: () => void) => engine.subscribe(onStoreChange),\r\n      [engine],\r\n    ),\r\n    useCallback(() => {\r\n      const errors = engine.getState().errors[fieldId];\r\n      return errors && errors.length > 0 ? errors : undefined;\r\n    }, [engine, fieldId]),\r\n    useCallback(() => {\r\n      const errors = engine.getState().errors[fieldId];\r\n      return errors && errors.length > 0 ? errors : undefined;\r\n    }, [engine, fieldId]),\r\n  );\r\n}\r\n","import { useSyncExternalStore, useCallback, useRef } from \"react\";\nimport type { FormEngine } from \"@squaredr/fieldcraft-core\";\n\n/** Snapshot of the form's multi-section navigation state. */\nexport type SectionProgress = {\n  currentSectionId: string;\n  currentSectionIndex: number;\n  totalVisibleSections: number;\n  progressPercent: number;\n  visitedSectionIds: string[];\n  canGoNext: boolean;\n  canGoPrev: boolean;\n};\n\n/**\n * Subscribes to multi-section navigation and progress state.\n *\n * Provides the current section index, total visible sections, percentage\n * completion, visited section history, and navigation availability flags\n * (`canGoNext` / `canGoPrev`).\n *\n * @param engine - The `FormEngine` instance (typically from {@link useFormEngine}).\n * @returns A {@link SectionProgress} object that updates reactively.\n *\n * @example\n * ```tsx\n * const { progressPercent, currentSectionIndex, totalVisibleSections } =\n *   useSectionProgress(engine);\n *\n * return <span>Step {currentSectionIndex + 1} of {totalVisibleSections}</span>;\n * ```\n */\nexport function useSectionProgress(engine: FormEngine): SectionProgress {\n  const cacheRef = useRef<SectionProgress>({\n    currentSectionId: \"\",\n    currentSectionIndex: 0,\n    totalVisibleSections: 0,\n    progressPercent: 0,\n    visitedSectionIds: [],\n    canGoNext: false,\n    canGoPrev: false,\n  });\n\n  const getSnapshot = useCallback((): SectionProgress => {\n    const s = engine.getState();\n    const cached = cacheRef.current;\n\n    const isVisitedEqual =\n      cached.visitedSectionIds.length === s.visitedSectionIds.length &&\n      cached.visitedSectionIds.every((id, idx) => id === s.visitedSectionIds[idx]);\n\n    if (\n      cached.currentSectionId === s.currentSectionId &&\n      cached.currentSectionIndex === s.currentSectionIndex &&\n      cached.totalVisibleSections === s.totalVisibleSections &&\n      cached.progressPercent === s.progressPercent &&\n      cached.canGoNext === s.canGoNext &&\n      cached.canGoPrev === s.canGoPrev &&\n      isVisitedEqual\n    ) {\n      return cached;\n    }\n\n    cacheRef.current = {\n      currentSectionId: s.currentSectionId,\n      currentSectionIndex: s.currentSectionIndex,\n      totalVisibleSections: s.totalVisibleSections,\n      progressPercent: s.progressPercent,\n      visitedSectionIds: s.visitedSectionIds,\n      canGoNext: s.canGoNext,\n      canGoPrev: s.canGoPrev,\n    };\n    return cacheRef.current;\n  }, [engine]);\n\n  return useSyncExternalStore(\n    useCallback(\n      (onStoreChange: () => void) => engine.subscribe(onStoreChange),\n      [engine],\n    ),\n    getSnapshot,\n    getSnapshot,\n  );\n}\n","import { useSyncExternalStore, useCallback } from \"react\";\r\nimport type { FormEngine } from \"@squaredr/fieldcraft-core\";\r\n\r\n/**\r\n * Subscribes to the form's dirty state.\r\n *\r\n * @param engine - The `FormEngine` instance.\r\n * @returns `true` if any field value differs from its initial value.\r\n */\r\nexport function useFormDirty(engine: FormEngine): boolean {\r\n  return useSyncExternalStore(\r\n    useCallback(\r\n      (onStoreChange: () => void) => engine.subscribe(onStoreChange),\r\n      [engine],\r\n    ),\r\n    useCallback(() => engine.getState().isDirty, [engine]),\r\n    useCallback(() => engine.getState().isDirty, [engine]),\r\n  );\r\n}\r\n","import { useSyncExternalStore, useCallback } from \"react\";\r\nimport type { FormEngine } from \"@squaredr/fieldcraft-core\";\r\n\r\n/**\r\n * Subscribes to a field's visibility state.\r\n *\r\n * @param engine - The `FormEngine` instance.\r\n * @param fieldId - The field ID to observe.\r\n * @returns `true` if the field is currently visible.\r\n */\r\nexport function useFieldVisibility(engine: FormEngine, fieldId: string): boolean {\r\n  return useSyncExternalStore(\r\n    useCallback(\r\n      (onStoreChange: () => void) => engine.subscribe(onStoreChange),\r\n      [engine],\r\n    ),\r\n    useCallback(() => engine.isFieldVisible(fieldId), [engine, fieldId]),\r\n    useCallback(() => engine.isFieldVisible(fieldId), [engine, fieldId]),\r\n  );\r\n}\r\n","import { useSyncExternalStore, useCallback, useRef } from \"react\";\nimport type { FormEngine } from \"@squaredr/fieldcraft-core\";\n\nexport type FormProgress = {\n  current: number;\n  total: number;\n  percentage: number;\n};\n\n/**\n * Subscribes to the form's progress (current section, total sections, percentage).\n *\n * @param engine - The `FormEngine` instance.\n * @returns An object with `current` (1-based), `total`, and `percentage` (0-100).\n */\nexport function useFormProgress(engine: FormEngine): FormProgress {\n  const cacheRef = useRef<FormProgress>({ current: 1, total: 0, percentage: 0 });\n\n  const getSnapshot = useCallback((): FormProgress => {\n    const state = engine.getState();\n    const current = state.currentSectionIndex + 1;\n    const total = state.totalVisibleSections;\n    const percentage = state.progressPercent;\n    const cached = cacheRef.current;\n\n    if (\n      cached.current === current &&\n      cached.total === total &&\n      cached.percentage === percentage\n    ) {\n      return cached;\n    }\n\n    cacheRef.current = { current, total, percentage };\n    return cacheRef.current;\n  }, [engine]);\n\n  return useSyncExternalStore(\n    useCallback(\n      (onStoreChange: () => void) => engine.subscribe(onStoreChange),\n      [engine],\n    ),\n    getSnapshot,\n    getSnapshot,\n  );\n}\n","import { useSyncExternalStore, useCallback, useRef } from \"react\";\r\nimport type { FormEngine } from \"@squaredr/fieldcraft-core\";\r\n\r\n/**\r\n * Subscribes to the visibility state of all fields in the form.\r\n *\r\n * @param engine - The `FormEngine` instance.\r\n * @returns A `Record<string, boolean>` mapping field IDs to their visibility.\r\n */\r\nexport function useConditionalFields(engine: FormEngine): Record<string, boolean> {\r\n  const prevRef = useRef<Record<string, boolean>>({});\r\n\r\n  const getSnapshot = useCallback((): Record<string, boolean> => {\r\n    const schema = engine.getSchema();\r\n    const map: Record<string, boolean> = {};\r\n    for (const section of schema.sections) {\r\n      for (const q of section.questions) {\r\n        map[q.id] = engine.isFieldVisible(q.id);\r\n      }\r\n    }\r\n    // Referential stability: only return a new object if values changed\r\n    const prev = prevRef.current;\r\n    const keys = Object.keys(map);\r\n    if (\r\n      keys.length === Object.keys(prev).length &&\r\n      keys.every((k) => prev[k] === map[k])\r\n    ) {\r\n      return prev;\r\n    }\r\n    prevRef.current = map;\r\n    return map;\r\n  }, [engine]);\r\n\r\n  return useSyncExternalStore(\r\n    useCallback(\r\n      (onStoreChange: () => void) => engine.subscribe(onStoreChange),\r\n      [engine],\r\n    ),\r\n    getSnapshot,\r\n    getSnapshot,\r\n  );\r\n}\r\n","import { useSyncExternalStore, useCallback } from \"react\";\r\nimport type { FormEngine } from \"@squaredr/fieldcraft-core\";\r\n\r\nexport type UseFormSubmitReturn = {\r\n  submit: () => Promise<{ success: boolean }>;\r\n  isSubmitting: boolean;\r\n  isSubmitted: boolean;\r\n  error: string | null;\r\n};\r\n\r\n/**\r\n * Provides a submit function and submission state.\r\n *\r\n * @param engine - The `FormEngine` instance.\r\n * @returns `{ submit, isSubmitting, isSubmitted, error }`.\r\n */\r\nexport function useFormSubmit(engine: FormEngine): UseFormSubmitReturn {\r\n  const subscribe = useCallback(\r\n    (onStoreChange: () => void) => engine.subscribe(onStoreChange),\r\n    [engine],\r\n  );\r\n\r\n  const isSubmitting = useSyncExternalStore(\r\n    subscribe,\r\n    useCallback(() => engine.getState().isSubmitting, [engine]),\r\n    useCallback(() => engine.getState().isSubmitting, [engine]),\r\n  );\r\n\r\n  const isSubmitted = useSyncExternalStore(\r\n    subscribe,\r\n    useCallback(() => engine.getState().isSubmitted, [engine]),\r\n    useCallback(() => engine.getState().isSubmitted, [engine]),\r\n  );\r\n\r\n  const error = useSyncExternalStore(\r\n    subscribe,\r\n    useCallback(() => engine.getState().submitError ?? null, [engine]),\r\n    useCallback(() => engine.getState().submitError ?? null, [engine]),\r\n  );\r\n\r\n  const submit = useCallback(\r\n    () => engine.submit(),\r\n    [engine],\r\n  );\r\n\r\n  return { submit, isSubmitting, isSubmitted, error };\r\n}\r\n","import { useMemo } from \"react\";\r\nimport type { FormEngine } from \"@squaredr/fieldcraft-core\";\r\n\r\nexport type FieldOption = {\r\n  value: string;\r\n  label: string;\r\n};\r\n\r\n/**\r\n * Returns the options for a select/dropdown/radio field.\r\n *\r\n * Reads the field's `options` array from the schema and returns\r\n * a stable reference as long as the field ID doesn't change.\r\n *\r\n * @param engine - The `FormEngine` instance.\r\n * @param fieldId - The field ID to get options for.\r\n * @returns An array of `{ value, label }` objects, or an empty array if no options.\r\n */\r\nexport function useFieldOptions(engine: FormEngine, fieldId: string): FieldOption[] {\r\n  return useMemo(() => {\r\n    const question = engine.getQuestionById(fieldId);\r\n    if (!question) return [];\r\n    const opts = (question as Record<string, unknown>).options;\r\n    if (!Array.isArray(opts)) return [];\r\n    return opts.map((opt: unknown) => {\r\n      if (typeof opt === \"string\") return { value: opt, label: opt };\r\n      const o = opt as Record<string, unknown>;\r\n      return {\r\n        value: String(o.value ?? \"\"),\r\n        label: String(o.label ?? o.value ?? \"\"),\r\n      };\r\n    });\r\n  }, [engine, fieldId]);\r\n}\r\n","import type { FormEngineTheme } from \"@squaredr/fieldcraft-core\";\r\n\r\n/** Convert a FormEngineTheme object into CSS custom properties for runtime theming. */\r\nexport function themeToCssVars(\r\n  theme?: FormEngineTheme,\r\n): React.CSSProperties | undefined {\r\n  if (!theme) return undefined;\r\n\r\n  const vars: Record<string, string> = {};\r\n\r\n  // Colors — emit both --fc-* (for backwards compat) and shadcn variable names\r\n  if (theme.colors) {\r\n    for (const [key, value] of Object.entries(theme.colors)) {\r\n      if (value !== undefined) {\r\n        vars[`--fc-color-${camelToKebab(key)}`] = value;\r\n      }\r\n    }\r\n\r\n    // Bridge: set shadcn CSS variables directly so they inherit at the ThemeProvider level\r\n    const c = theme.colors;\r\n    if (c.primary) vars[\"--primary\"] = c.primary;\r\n    if (c.primaryForeground) vars[\"--primary-foreground\"] = c.primaryForeground;\r\n    if (c.secondary) vars[\"--secondary\"] = c.secondary;\r\n    if (c.secondaryForeground) vars[\"--secondary-foreground\"] = c.secondaryForeground;\r\n    if (c.error) vars[\"--destructive\"] = c.error;\r\n    if (c.errorForeground) vars[\"--destructive-foreground\"] = c.errorForeground;\r\n    if (c.surface) {\r\n      vars[\"--card\"] = c.surface;\r\n      vars[\"--popover\"] = c.surface;\r\n      vars[\"--accent\"] = c.surface;\r\n    }\r\n    if (c.background) {\r\n      vars[\"--background\"] = c.background;\r\n      vars[\"--muted\"] = c.background;\r\n    }\r\n    if (c.text) {\r\n      vars[\"--foreground\"] = c.text;\r\n      vars[\"--card-foreground\"] = c.text;\r\n      vars[\"--popover-foreground\"] = c.text;\r\n      vars[\"--accent-foreground\"] = c.text;\r\n    }\r\n    if (c.textMuted) vars[\"--muted-foreground\"] = c.textMuted;\r\n    if (c.border) {\r\n      vars[\"--border\"] = c.border;\r\n      vars[\"--input\"] = c.border;\r\n    }\r\n    if (c.borderFocus) vars[\"--ring\"] = c.borderFocus;\r\n    if (c.inputBackground) vars[\"--input-background\"] = c.inputBackground;\r\n  }\r\n\r\n  // Typography\r\n  if (theme.typography) {\r\n    const { fontFamily, scale, questionSize, labelSize, helpTextSize, bodySize } =\r\n      theme.typography;\r\n    if (fontFamily) vars[\"--fc-font-family\"] = fontFamily;\r\n    if (scale) vars[\"--fc-font-scale\"] = scale;\r\n    if (questionSize) vars[\"--fc-font-question\"] = questionSize;\r\n    if (labelSize) vars[\"--fc-font-label\"] = labelSize;\r\n    if (helpTextSize) vars[\"--fc-font-help\"] = helpTextSize;\r\n    if (bodySize) vars[\"--fc-font-body\"] = bodySize;\r\n  }\r\n\r\n  // Shape\r\n  if (theme.shape) {\r\n    const { radius, inputRadius, buttonRadius, cardRadius } = theme.shape;\r\n    if (radius) {\r\n      const r = radiusToValue(radius);\r\n      vars[\"--fc-radius\"] = r;\r\n      vars[\"--radius\"] = r;\r\n    }\r\n    if (inputRadius) vars[\"--fc-radius-input\"] = inputRadius;\r\n    if (buttonRadius) vars[\"--fc-radius-button\"] = buttonRadius;\r\n    if (cardRadius) vars[\"--fc-radius-card\"] = cardRadius;\r\n  }\r\n\r\n  // Spacing\r\n  if (theme.spacing) {\r\n    for (const [key, value] of Object.entries(theme.spacing)) {\r\n      if (value !== undefined) {\r\n        vars[`--fc-spacing-${camelToKebab(key)}`] = `${value}px`;\r\n      }\r\n    }\r\n  }\r\n\r\n  // Layout\r\n  if (theme.layout) {\r\n    const { maxWidth, alignment, progressPosition, sectionLayout } = theme.layout;\r\n    if (maxWidth) vars[\"--fc-max-width\"] = maxWidth;\r\n    if (alignment) vars[\"--fc-alignment\"] = alignment;\r\n    if (progressPosition) vars[\"--fc-progress-position\"] = progressPosition;\r\n    if (sectionLayout) vars[\"--fc-section-layout\"] = sectionLayout;\r\n  }\r\n\r\n  return vars as React.CSSProperties;\r\n}\r\n\r\nfunction camelToKebab(str: string): string {\r\n  return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\r\n}\r\n\r\nfunction radiusToValue(radius: string): string {\r\n  const map: Record<string, string> = {\r\n    none: \"0px\",\r\n    sm: \"4px\",\r\n    md: \"8px\",\r\n    lg: \"12px\",\r\n    full: \"9999px\",\r\n  };\r\n  return map[radius] ?? radius;\r\n}\r\n","import { createContext, useContext, useMemo } from \"react\";\r\nimport type { FormEngineTheme } from \"@squaredr/fieldcraft-core\";\r\nimport { themeToCssVars } from \"./theme-to-css-vars\";\r\n\r\nconst ThemeContext = createContext<FormEngineTheme>({});\r\n\r\nexport function useTheme(): FormEngineTheme {\r\n  return useContext(ThemeContext);\r\n}\r\n\r\nexport function FormEngineThemeProvider({\r\n  theme,\r\n  children,\r\n}: {\r\n  theme?: FormEngineTheme;\r\n  children: React.ReactNode;\r\n}) {\r\n  const resolved = theme ?? {};\r\n  const cssVars = useMemo(() => themeToCssVars(resolved), [resolved]);\r\n\r\n  return (\r\n    <div style={cssVars} className=\"w-full\">\r\n      <ThemeContext.Provider value={resolved}>{children}</ThemeContext.Provider>\r\n    </div>\r\n  );\r\n}\r\n","import type { Question, FormEngineTheme, QuestionType } from \"@squaredr/fieldcraft-core\";\r\n\r\n/** Props passed to every field component. */\r\nexport type FieldProps = {\r\n  field: Question;\r\n  value: unknown;\r\n  error?: string[];\r\n  touched: boolean;\r\n  disabled: boolean;\r\n  readonly: boolean;\r\n  onChange: (value: unknown) => void;\r\n  onBlur: () => void;\r\n  onFocus: () => void;\r\n  theme: FormEngineTheme;\r\n  customProps?: Record<string, unknown>;\r\n  /** All current field values in the form. Available for fields that need cross-field access (e.g., AppointmentField reading a timezone selector). @since 1.8.0 */\r\n  fieldValues?: Record<string, unknown>;\r\n};\r\n\r\n/** A React component that renders a single field. */\r\nexport type FieldComponent = React.ComponentType<FieldProps>;\r\n\r\n/** Maps QuestionType → FieldComponent. Partial because not all types need to be registered. */\r\nexport type FieldRegistry = Partial<Record<QuestionType, FieldComponent>>;\r\n\r\n/** Create a mutable field registry. */\r\nexport function createFieldRegistry(\r\n  initial?: FieldRegistry,\r\n): FieldRegistry {\r\n  return { ...initial };\r\n}\r\n\r\n/** Merge multiple registries. Later registries override earlier ones. */\r\nexport function mergeRegistries(\r\n  ...registries: (FieldRegistry | undefined)[]\r\n): FieldRegistry {\r\n  const merged: FieldRegistry = {};\r\n  for (const reg of registries) {\r\n    if (reg) Object.assign(merged, reg);\r\n  }\r\n  return merged;\r\n}\r\n","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;","import {\n    AnyClassGroupIds,\n    AnyConfig,\n    AnyThemeGroupIds,\n    ClassGroup,\n    ClassValidator,\n    Config,\n    ThemeGetter,\n    ThemeObject,\n} from './types'\n\nexport interface ClassPartObject {\n    nextPart: Map<string, ClassPartObject>\n    validators: ClassValidatorObject[]\n    classGroupId?: AnyClassGroupIds\n}\n\ninterface ClassValidatorObject {\n    classGroupId: AnyClassGroupIds\n    validator: ClassValidator\n}\n\nconst CLASS_PART_SEPARATOR = '-'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n    const classMap = createClassMap(config)\n    const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n    const getClassGroupId = (className: string) => {\n        const classParts = className.split(CLASS_PART_SEPARATOR)\n\n        // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n        if (classParts[0] === '' && classParts.length !== 1) {\n            classParts.shift()\n        }\n\n        return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className)\n    }\n\n    const getConflictingClassGroupIds = (\n        classGroupId: AnyClassGroupIds,\n        hasPostfixModifier: boolean,\n    ) => {\n        const conflicts = conflictingClassGroups[classGroupId] || []\n\n        if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n            return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]!]\n        }\n\n        return conflicts\n    }\n\n    return {\n        getClassGroupId,\n        getConflictingClassGroupIds,\n    }\n}\n\nconst getGroupRecursive = (\n    classParts: string[],\n    classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n    if (classParts.length === 0) {\n        return classPartObject.classGroupId\n    }\n\n    const currentClassPart = classParts[0]!\n    const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n    const classGroupFromNextClassPart = nextClassPartObject\n        ? getGroupRecursive(classParts.slice(1), nextClassPartObject)\n        : undefined\n\n    if (classGroupFromNextClassPart) {\n        return classGroupFromNextClassPart\n    }\n\n    if (classPartObject.validators.length === 0) {\n        return undefined\n    }\n\n    const classRest = classParts.join(CLASS_PART_SEPARATOR)\n\n    return classPartObject.validators.find(({ validator }) => validator(classRest))?.classGroupId\n}\n\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/\n\nconst getGroupIdForArbitraryProperty = (className: string) => {\n    if (arbitraryPropertyRegex.test(className)) {\n        const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)![1]\n        const property = arbitraryPropertyClassName?.substring(\n            0,\n            arbitraryPropertyClassName.indexOf(':'),\n        )\n\n        if (property) {\n            // I use two dots here because one dot is used as prefix for class groups in plugins\n            return 'arbitrary..' + property\n        }\n    }\n}\n\n/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config<AnyClassGroupIds, AnyThemeGroupIds>) => {\n    const { theme, prefix } = config\n    const classMap: ClassPartObject = {\n        nextPart: new Map<string, ClassPartObject>(),\n        validators: [],\n    }\n\n    const prefixedClassGroupEntries = getPrefixedClassGroupEntries(\n        Object.entries(config.classGroups),\n        prefix,\n    )\n\n    prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {\n        processClassesRecursively(classGroup, classMap, classGroupId, theme)\n    })\n\n    return classMap\n}\n\nconst processClassesRecursively = (\n    classGroup: ClassGroup<AnyThemeGroupIds>,\n    classPartObject: ClassPartObject,\n    classGroupId: AnyClassGroupIds,\n    theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n    classGroup.forEach((classDefinition) => {\n        if (typeof classDefinition === 'string') {\n            const classPartObjectToEdit =\n                classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n            classPartObjectToEdit.classGroupId = classGroupId\n            return\n        }\n\n        if (typeof classDefinition === 'function') {\n            if (isThemeGetter(classDefinition)) {\n                processClassesRecursively(\n                    classDefinition(theme),\n                    classPartObject,\n                    classGroupId,\n                    theme,\n                )\n                return\n            }\n\n            classPartObject.validators.push({\n                validator: classDefinition,\n                classGroupId,\n            })\n\n            return\n        }\n\n        Object.entries(classDefinition).forEach(([key, classGroup]) => {\n            processClassesRecursively(\n                classGroup,\n                getPart(classPartObject, key),\n                classGroupId,\n                theme,\n            )\n        })\n    })\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string) => {\n    let currentClassPartObject = classPartObject\n\n    path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {\n        if (!currentClassPartObject.nextPart.has(pathPart)) {\n            currentClassPartObject.nextPart.set(pathPart, {\n                nextPart: new Map(),\n                validators: [],\n            })\n        }\n\n        currentClassPartObject = currentClassPartObject.nextPart.get(pathPart)!\n    })\n\n    return currentClassPartObject\n}\n\nconst isThemeGetter = (func: ClassValidator | ThemeGetter): func is ThemeGetter =>\n    (func as ThemeGetter).isThemeGetter\n\nconst getPrefixedClassGroupEntries = (\n    classGroupEntries: Array<[classGroupId: string, classGroup: ClassGroup<AnyThemeGroupIds>]>,\n    prefix: string | undefined,\n): Array<[classGroupId: string, classGroup: ClassGroup<AnyThemeGroupIds>]> => {\n    if (!prefix) {\n        return classGroupEntries\n    }\n\n    return classGroupEntries.map(([classGroupId, classGroup]) => {\n        const prefixedClassGroup = classGroup.map((classDefinition) => {\n            if (typeof classDefinition === 'string') {\n                return prefix + classDefinition\n            }\n\n            if (typeof classDefinition === 'object') {\n                return Object.fromEntries(\n                    Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]),\n                )\n            }\n\n            return classDefinition\n        })\n\n        return [classGroupId, prefixedClassGroup]\n    })\n}\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache<Key, Value> {\n    get(key: Key): Value | undefined\n    set(key: Key, value: Value): void\n}\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nexport const createLruCache = <Key, Value>(maxCacheSize: number): LruCache<Key, Value> => {\n    if (maxCacheSize < 1) {\n        return {\n            get: () => undefined,\n            set: () => {},\n        }\n    }\n\n    let cacheSize = 0\n    let cache = new Map<Key, Value>()\n    let previousCache = new Map<Key, Value>()\n\n    const update = (key: Key, value: Value) => {\n        cache.set(key, value)\n        cacheSize++\n\n        if (cacheSize > maxCacheSize) {\n            cacheSize = 0\n            previousCache = cache\n            cache = new Map()\n        }\n    }\n\n    return {\n        get(key) {\n            let value = cache.get(key)\n\n            if (value !== undefined) {\n                return value\n            }\n            if ((value = previousCache.get(key)) !== undefined) {\n                update(key, value)\n                return value\n            }\n        },\n        set(key, value) {\n            if (cache.has(key)) {\n                cache.set(key, value)\n            } else {\n                update(key, value)\n            }\n        },\n    }\n}\n","import { AnyConfig } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\n\nexport const createParseClassName = (config: AnyConfig) => {\n    const { separator, experimentalParseClassName } = config\n    const isSeparatorSingleCharacter = separator.length === 1\n    const firstSeparatorCharacter = separator[0]\n    const separatorLength = separator.length\n\n    // parseClassName inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n    const parseClassName = (className: string) => {\n        const modifiers = []\n\n        let bracketDepth = 0\n        let modifierStart = 0\n        let postfixModifierPosition: number | undefined\n\n        for (let index = 0; index < className.length; index++) {\n            let currentCharacter = className[index]\n\n            if (bracketDepth === 0) {\n                if (\n                    currentCharacter === firstSeparatorCharacter &&\n                    (isSeparatorSingleCharacter ||\n                        className.slice(index, index + separatorLength) === separator)\n                ) {\n                    modifiers.push(className.slice(modifierStart, index))\n                    modifierStart = index + separatorLength\n                    continue\n                }\n\n                if (currentCharacter === '/') {\n                    postfixModifierPosition = index\n                    continue\n                }\n            }\n\n            if (currentCharacter === '[') {\n                bracketDepth++\n            } else if (currentCharacter === ']') {\n                bracketDepth--\n            }\n        }\n\n        const baseClassNameWithImportantModifier =\n            modifiers.length === 0 ? className : className.substring(modifierStart)\n        const hasImportantModifier =\n            baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)\n        const baseClassName = hasImportantModifier\n            ? baseClassNameWithImportantModifier.substring(1)\n            : baseClassNameWithImportantModifier\n\n        const maybePostfixModifierPosition =\n            postfixModifierPosition && postfixModifierPosition > modifierStart\n                ? postfixModifierPosition - modifierStart\n                : undefined\n\n        return {\n            modifiers,\n            hasImportantModifier,\n            baseClassName,\n            maybePostfixModifierPosition,\n        }\n    }\n\n    if (experimentalParseClassName) {\n        return (className: string) => experimentalParseClassName({ className, parseClassName })\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 */\nexport const sortModifiers = (modifiers: string[]) => {\n    if (modifiers.length <= 1) {\n        return modifiers\n    }\n\n    const sortedModifiers: string[] = []\n    let unsortedModifiers: string[] = []\n\n    modifiers.forEach((modifier) => {\n        const isArbitraryVariant = modifier[0] === '['\n\n        if (isArbitraryVariant) {\n            sortedModifiers.push(...unsortedModifiers.sort(), modifier)\n            unsortedModifiers = []\n        } else {\n            unsortedModifiers.push(modifier)\n        }\n    })\n\n    sortedModifiers.push(...unsortedModifiers.sort())\n\n    return sortedModifiers\n}\n","import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n    cache: createLruCache<string, string>(config.cacheSize),\n    parseClassName: createParseClassName(config),\n    ...createClassGroupUtils(config),\n})\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER, sortModifiers } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n    const { parseClassName, getClassGroupId, getConflictingClassGroupIds } = configUtils\n\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: string[] = []\n    const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n    let result = ''\n\n    for (let index = classNames.length - 1; index >= 0; index -= 1) {\n        const originalClassName = classNames[index]!\n\n        const { modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition } =\n            parseClassName(originalClassName)\n\n        let hasPostfixModifier = Boolean(maybePostfixModifierPosition)\n        let classGroupId = getClassGroupId(\n            hasPostfixModifier\n                ? baseClassName.substring(0, maybePostfixModifierPosition)\n                : baseClassName,\n        )\n\n        if (!classGroupId) {\n            if (!hasPostfixModifier) {\n                // Not a Tailwind class\n                result = originalClassName + (result.length > 0 ? ' ' + result : result)\n                continue\n            }\n\n            classGroupId = getClassGroupId(baseClassName)\n\n            if (!classGroupId) {\n                // Not a Tailwind class\n                result = originalClassName + (result.length > 0 ? ' ' + result : result)\n                continue\n            }\n\n            hasPostfixModifier = false\n        }\n\n        const variantModifier = sortModifiers(modifiers).join(':')\n\n        const modifierId = hasImportantModifier\n            ? variantModifier + IMPORTANT_MODIFIER\n            : variantModifier\n\n        const classId = modifierId + classGroupId\n\n        if (classGroupsInConflict.includes(classId)) {\n            // Tailwind class omitted due to conflict\n            continue\n        }\n\n        classGroupsInConflict.push(classId)\n\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\n        // Tailwind class not in conflict\n        result = originalClassName + (result.length > 0 ? ' ' + result : result)\n    }\n\n    return result\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 */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = ClassNameValue[]\n\nexport function twJoin(...classLists: ClassNameValue[]): string\nexport function twJoin() {\n    let index = 0\n    let argument: ClassNameValue\n    let resolvedValue: string\n    let string = ''\n\n    while (index < arguments.length) {\n        if ((argument = arguments[index++])) {\n            if ((resolvedValue = toValue(argument))) {\n                string && (string += ' ')\n                string += resolvedValue\n            }\n        }\n    }\n    return string\n}\n\nconst toValue = (mix: ClassNameArray | string) => {\n    if (typeof mix === 'string') {\n        return mix\n    }\n\n    let resolvedValue: string\n    let string = ''\n\n    for (let k = 0; k < mix.length; k++) {\n        if (mix[k]) {\n            if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n                string && (string += ' ')\n                string += resolvedValue\n            }\n        }\n    }\n\n    return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport function createTailwindMerge(\n    createConfigFirst: CreateConfigFirst,\n    ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge {\n    let configUtils: ConfigUtils\n    let cacheGet: ConfigUtils['cache']['get']\n    let cacheSet: ConfigUtils['cache']['set']\n    let functionToCall = initTailwindMerge\n\n    function initTailwindMerge(classList: string) {\n        const config = createConfigRest.reduce(\n            (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n            createConfigFirst() as AnyConfig,\n        )\n\n        configUtils = createConfigUtils(config)\n        cacheGet = configUtils.cache.get\n        cacheSet = configUtils.cache.set\n        functionToCall = tailwindMerge\n\n        return tailwindMerge(classList)\n    }\n\n    function tailwindMerge(classList: string) {\n        const cachedResult = cacheGet(classList)\n\n        if (cachedResult) {\n            return cachedResult\n        }\n\n        const result = mergeClassList(classList, configUtils)\n        cacheSet(classList, result)\n\n        return result\n    }\n\n    return function callTailwindMerge() {\n        return functionToCall(twJoin.apply(null, arguments as any))\n    }\n}\n","import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nexport const fromTheme = <\n    AdditionalThemeGroupIds extends string = never,\n    DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(key: NoInfer<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>): ThemeGetter => {\n    const themeGetter = (theme: ThemeObject<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>) =>\n        theme[key] || []\n\n    themeGetter.isThemeGetter = true as const\n\n    return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i\nconst fractionRegex = /^\\d+\\/\\d+$/\nconst stringLengths = new Set(['px', 'full', 'screen'])\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n    /\\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 =\n    /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isLength = (value: string) =>\n    isNumber(value) || stringLengths.has(value) || fractionRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n    getIsArbitraryValue(value, 'length', isLengthOnly)\n\nexport const isNumber = (value: string) => Boolean(value) && !Number.isNaN(Number(value))\n\nexport const isArbitraryNumber = (value: string) => getIsArbitraryValue(value, 'number', isNumber)\n\nexport const isInteger = (value: string) => Boolean(value) && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nconst sizeLabels = new Set(['length', 'size', 'percentage'])\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, sizeLabels, isNever)\n\nexport const isArbitraryPosition = (value: string) =>\n    getIsArbitraryValue(value, 'position', isNever)\n\nconst imageLabels = new Set(['image', 'url'])\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, imageLabels, isImage)\n\nexport const isArbitraryShadow = (value: string) => getIsArbitraryValue(value, '', isShadow)\n\nexport const isAny = () => true\n\nconst getIsArbitraryValue = (\n    value: string,\n    label: string | Set<string>,\n    testValue: (value: string) => boolean,\n) => {\n    const result = arbitraryValueRegex.exec(value)\n\n    if (result) {\n        if (result[1]) {\n            return typeof label === 'string' ? result[1] === label : label.has(result[1])\n        }\n\n        return testValue(result[2]!)\n    }\n\n    return false\n}\n\nconst isLengthOnly = (value: string) =>\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.\n    lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n","import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n    isAny,\n    isArbitraryImage,\n    isArbitraryLength,\n    isArbitraryNumber,\n    isArbitraryPosition,\n    isArbitraryShadow,\n    isArbitrarySize,\n    isArbitraryValue,\n    isInteger,\n    isLength,\n    isNumber,\n    isPercent,\n    isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n    const colors = fromTheme('colors')\n    const spacing = fromTheme('spacing')\n    const blur = fromTheme('blur')\n    const brightness = fromTheme('brightness')\n    const borderColor = fromTheme('borderColor')\n    const borderRadius = fromTheme('borderRadius')\n    const borderSpacing = fromTheme('borderSpacing')\n    const borderWidth = fromTheme('borderWidth')\n    const contrast = fromTheme('contrast')\n    const grayscale = fromTheme('grayscale')\n    const hueRotate = fromTheme('hueRotate')\n    const invert = fromTheme('invert')\n    const gap = fromTheme('gap')\n    const gradientColorStops = fromTheme('gradientColorStops')\n    const gradientColorStopPositions = fromTheme('gradientColorStopPositions')\n    const inset = fromTheme('inset')\n    const margin = fromTheme('margin')\n    const opacity = fromTheme('opacity')\n    const padding = fromTheme('padding')\n    const saturate = fromTheme('saturate')\n    const scale = fromTheme('scale')\n    const sepia = fromTheme('sepia')\n    const skew = fromTheme('skew')\n    const space = fromTheme('space')\n    const translate = fromTheme('translate')\n\n    const getOverscroll = () => ['auto', 'contain', 'none'] as const\n    const getOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n    const getSpacingWithAutoAndArbitrary = () => ['auto', isArbitraryValue, spacing] as const\n    const getSpacingWithArbitrary = () => [isArbitraryValue, spacing] as const\n    const getLengthWithEmptyAndArbitrary = () => ['', isLength, isArbitraryLength] as const\n    const getNumberWithAutoAndArbitrary = () => ['auto', isNumber, isArbitraryValue] as const\n    const getPositions = () =>\n        [\n            'bottom',\n            'center',\n            'left',\n            'left-bottom',\n            'left-top',\n            'right',\n            'right-bottom',\n            'right-top',\n            'top',\n        ] as const\n    const getLineStyles = () => ['solid', 'dashed', 'dotted', 'double', 'none'] as const\n    const getBlendModes = () =>\n        [\n            'normal',\n            'multiply',\n            'screen',\n            'overlay',\n            'darken',\n            'lighten',\n            'color-dodge',\n            'color-burn',\n            'hard-light',\n            'soft-light',\n            'difference',\n            'exclusion',\n            'hue',\n            'saturation',\n            'color',\n            'luminosity',\n        ] as const\n    const getAlign = () =>\n        ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch'] as const\n    const getZeroAndEmpty = () => ['', '0', isArbitraryValue] as const\n    const getBreaks = () =>\n        ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n    const getNumberAndArbitrary = () => [isNumber, isArbitraryValue]\n\n    return {\n        cacheSize: 500,\n        separator: ':',\n        theme: {\n            colors: [isAny],\n            spacing: [isLength, isArbitraryLength],\n            blur: ['none', '', isTshirtSize, isArbitraryValue],\n            brightness: getNumberAndArbitrary(),\n            borderColor: [colors],\n            borderRadius: ['none', '', 'full', isTshirtSize, isArbitraryValue],\n            borderSpacing: getSpacingWithArbitrary(),\n            borderWidth: getLengthWithEmptyAndArbitrary(),\n            contrast: getNumberAndArbitrary(),\n            grayscale: getZeroAndEmpty(),\n            hueRotate: getNumberAndArbitrary(),\n            invert: getZeroAndEmpty(),\n            gap: getSpacingWithArbitrary(),\n            gradientColorStops: [colors],\n            gradientColorStopPositions: [isPercent, isArbitraryLength],\n            inset: getSpacingWithAutoAndArbitrary(),\n            margin: getSpacingWithAutoAndArbitrary(),\n            opacity: getNumberAndArbitrary(),\n            padding: getSpacingWithArbitrary(),\n            saturate: getNumberAndArbitrary(),\n            scale: getNumberAndArbitrary(),\n            sepia: getZeroAndEmpty(),\n            skew: getNumberAndArbitrary(),\n            space: getSpacingWithArbitrary(),\n            translate: getSpacingWithArbitrary(),\n        },\n        classGroups: {\n            // Layout\n            /**\n             * Aspect Ratio\n             * @see https://tailwindcss.com/docs/aspect-ratio\n             */\n            aspect: [{ aspect: ['auto', 'square', 'video', isArbitraryValue] }],\n            /**\n             * Container\n             * @see https://tailwindcss.com/docs/container\n             */\n            container: ['container'],\n            /**\n             * Columns\n             * @see https://tailwindcss.com/docs/columns\n             */\n            columns: [{ columns: [isTshirtSize] }],\n            /**\n             * Break After\n             * @see https://tailwindcss.com/docs/break-after\n             */\n            'break-after': [{ 'break-after': getBreaks() }],\n            /**\n             * Break Before\n             * @see https://tailwindcss.com/docs/break-before\n             */\n            'break-before': [{ 'break-before': getBreaks() }],\n            /**\n             * Break Inside\n             * @see https://tailwindcss.com/docs/break-inside\n             */\n            'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n            /**\n             * Box Decoration Break\n             * @see https://tailwindcss.com/docs/box-decoration-break\n             */\n            'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n            /**\n             * Box Sizing\n             * @see https://tailwindcss.com/docs/box-sizing\n             */\n            box: [{ box: ['border', 'content'] }],\n            /**\n             * Display\n             * @see https://tailwindcss.com/docs/display\n             */\n            display: [\n                'block',\n                'inline-block',\n                'inline',\n                'flex',\n                'inline-flex',\n                'table',\n                'inline-table',\n                'table-caption',\n                'table-cell',\n                'table-column',\n                'table-column-group',\n                'table-footer-group',\n                'table-header-group',\n                'table-row-group',\n                'table-row',\n                'flow-root',\n                'grid',\n                'inline-grid',\n                'contents',\n                'list-item',\n                'hidden',\n            ],\n            /**\n             * Floats\n             * @see https://tailwindcss.com/docs/float\n             */\n            float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n            /**\n             * Clear\n             * @see https://tailwindcss.com/docs/clear\n             */\n            clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\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': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n            /**\n             * Object Position\n             * @see https://tailwindcss.com/docs/object-position\n             */\n            'object-position': [{ object: [...getPositions(), isArbitraryValue] }],\n            /**\n             * Overflow\n             * @see https://tailwindcss.com/docs/overflow\n             */\n            overflow: [{ overflow: getOverflow() }],\n            /**\n             * Overflow X\n             * @see https://tailwindcss.com/docs/overflow\n             */\n            'overflow-x': [{ 'overflow-x': getOverflow() }],\n            /**\n             * Overflow Y\n             * @see https://tailwindcss.com/docs/overflow\n             */\n            'overflow-y': [{ 'overflow-y': getOverflow() }],\n            /**\n             * Overscroll Behavior\n             * @see https://tailwindcss.com/docs/overscroll-behavior\n             */\n            overscroll: [{ overscroll: getOverscroll() }],\n            /**\n             * Overscroll Behavior X\n             * @see https://tailwindcss.com/docs/overscroll-behavior\n             */\n            'overscroll-x': [{ 'overscroll-x': getOverscroll() }],\n            /**\n             * Overscroll Behavior Y\n             * @see https://tailwindcss.com/docs/overscroll-behavior\n             */\n            'overscroll-y': [{ 'overscroll-y': getOverscroll() }],\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: [{ inset: [inset] }],\n            /**\n             * Right / Left\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            'inset-x': [{ 'inset-x': [inset] }],\n            /**\n             * Top / Bottom\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            'inset-y': [{ 'inset-y': [inset] }],\n            /**\n             * Start\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            start: [{ start: [inset] }],\n            /**\n             * End\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            end: [{ end: [inset] }],\n            /**\n             * Top\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            top: [{ top: [inset] }],\n            /**\n             * Right\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            right: [{ right: [inset] }],\n            /**\n             * Bottom\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            bottom: [{ bottom: [inset] }],\n            /**\n             * Left\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            left: [{ left: [inset] }],\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: [{ z: ['auto', isInteger, isArbitraryValue] }],\n            // Flexbox and Grid\n            /**\n             * Flex Basis\n             * @see https://tailwindcss.com/docs/flex-basis\n             */\n            basis: [{ basis: getSpacingWithAutoAndArbitrary() }],\n            /**\n             * Flex Direction\n             * @see https://tailwindcss.com/docs/flex-direction\n             */\n            'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n            /**\n             * Flex Wrap\n             * @see https://tailwindcss.com/docs/flex-wrap\n             */\n            'flex-wrap': [{ flex: ['wrap', 'wrap-reverse', 'nowrap'] }],\n            /**\n             * Flex\n             * @see https://tailwindcss.com/docs/flex\n             */\n            flex: [{ flex: ['1', 'auto', 'initial', 'none', isArbitraryValue] }],\n            /**\n             * Flex Grow\n             * @see https://tailwindcss.com/docs/flex-grow\n             */\n            grow: [{ grow: getZeroAndEmpty() }],\n            /**\n             * Flex Shrink\n             * @see https://tailwindcss.com/docs/flex-shrink\n             */\n            shrink: [{ shrink: getZeroAndEmpty() }],\n            /**\n             * Order\n             * @see https://tailwindcss.com/docs/order\n             */\n            order: [{ order: ['first', 'last', 'none', isInteger, isArbitraryValue] }],\n            /**\n             * Grid Template Columns\n             * @see https://tailwindcss.com/docs/grid-template-columns\n             */\n            'grid-cols': [{ 'grid-cols': [isAny] }],\n            /**\n             * Grid Column Start / End\n             * @see https://tailwindcss.com/docs/grid-column\n             */\n            'col-start-end': [\n                {\n                    col: [\n                        'auto',\n                        { span: ['full', isInteger, isArbitraryValue] },\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Grid Column Start\n             * @see https://tailwindcss.com/docs/grid-column\n             */\n            'col-start': [{ 'col-start': getNumberWithAutoAndArbitrary() }],\n            /**\n             * Grid Column End\n             * @see https://tailwindcss.com/docs/grid-column\n             */\n            'col-end': [{ 'col-end': getNumberWithAutoAndArbitrary() }],\n            /**\n             * Grid Template Rows\n             * @see https://tailwindcss.com/docs/grid-template-rows\n             */\n            'grid-rows': [{ 'grid-rows': [isAny] }],\n            /**\n             * Grid Row Start / End\n             * @see https://tailwindcss.com/docs/grid-row\n             */\n            'row-start-end': [\n                { row: ['auto', { span: [isInteger, isArbitraryValue] }, isArbitraryValue] },\n            ],\n            /**\n             * Grid Row Start\n             * @see https://tailwindcss.com/docs/grid-row\n             */\n            'row-start': [{ 'row-start': getNumberWithAutoAndArbitrary() }],\n            /**\n             * Grid Row End\n             * @see https://tailwindcss.com/docs/grid-row\n             */\n            'row-end': [{ 'row-end': getNumberWithAutoAndArbitrary() }],\n            /**\n             * Grid Auto Flow\n             * @see https://tailwindcss.com/docs/grid-auto-flow\n             */\n            'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n            /**\n             * Grid Auto Columns\n             * @see https://tailwindcss.com/docs/grid-auto-columns\n             */\n            'auto-cols': [{ 'auto-cols': ['auto', 'min', 'max', 'fr', isArbitraryValue] }],\n            /**\n             * Grid Auto Rows\n             * @see https://tailwindcss.com/docs/grid-auto-rows\n             */\n            'auto-rows': [{ 'auto-rows': ['auto', 'min', 'max', 'fr', isArbitraryValue] }],\n            /**\n             * Gap\n             * @see https://tailwindcss.com/docs/gap\n             */\n            gap: [{ gap: [gap] }],\n            /**\n             * Gap X\n             * @see https://tailwindcss.com/docs/gap\n             */\n            'gap-x': [{ 'gap-x': [gap] }],\n            /**\n             * Gap Y\n             * @see https://tailwindcss.com/docs/gap\n             */\n            'gap-y': [{ 'gap-y': [gap] }],\n            /**\n             * Justify Content\n             * @see https://tailwindcss.com/docs/justify-content\n             */\n            'justify-content': [{ justify: ['normal', ...getAlign()] }],\n            /**\n             * Justify Items\n             * @see https://tailwindcss.com/docs/justify-items\n             */\n            'justify-items': [{ 'justify-items': ['start', 'end', 'center', 'stretch'] }],\n            /**\n             * Justify Self\n             * @see https://tailwindcss.com/docs/justify-self\n             */\n            'justify-self': [{ 'justify-self': ['auto', 'start', 'end', 'center', 'stretch'] }],\n            /**\n             * Align Content\n             * @see https://tailwindcss.com/docs/align-content\n             */\n            'align-content': [{ content: ['normal', ...getAlign(), 'baseline'] }],\n            /**\n             * Align Items\n             * @see https://tailwindcss.com/docs/align-items\n             */\n            'align-items': [{ items: ['start', 'end', 'center', 'baseline', 'stretch'] }],\n            /**\n             * Align Self\n             * @see https://tailwindcss.com/docs/align-self\n             */\n            'align-self': [{ self: ['auto', 'start', 'end', 'center', 'stretch', 'baseline'] }],\n            /**\n             * Place Content\n             * @see https://tailwindcss.com/docs/place-content\n             */\n            'place-content': [{ 'place-content': [...getAlign(), 'baseline'] }],\n            /**\n             * Place Items\n             * @see https://tailwindcss.com/docs/place-items\n             */\n            'place-items': [{ 'place-items': ['start', 'end', 'center', 'baseline', 'stretch'] }],\n            /**\n             * Place Self\n             * @see https://tailwindcss.com/docs/place-self\n             */\n            'place-self': [{ 'place-self': ['auto', 'start', 'end', 'center', 'stretch'] }],\n            // Spacing\n            /**\n             * Padding\n             * @see https://tailwindcss.com/docs/padding\n             */\n            p: [{ p: [padding] }],\n            /**\n             * Padding X\n             * @see https://tailwindcss.com/docs/padding\n             */\n            px: [{ px: [padding] }],\n            /**\n             * Padding Y\n             * @see https://tailwindcss.com/docs/padding\n             */\n            py: [{ py: [padding] }],\n            /**\n             * Padding Start\n             * @see https://tailwindcss.com/docs/padding\n             */\n            ps: [{ ps: [padding] }],\n            /**\n             * Padding End\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pe: [{ pe: [padding] }],\n            /**\n             * Padding Top\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pt: [{ pt: [padding] }],\n            /**\n             * Padding Right\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pr: [{ pr: [padding] }],\n            /**\n             * Padding Bottom\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pb: [{ pb: [padding] }],\n            /**\n             * Padding Left\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pl: [{ pl: [padding] }],\n            /**\n             * Margin\n             * @see https://tailwindcss.com/docs/margin\n             */\n            m: [{ m: [margin] }],\n            /**\n             * Margin X\n             * @see https://tailwindcss.com/docs/margin\n             */\n            mx: [{ mx: [margin] }],\n            /**\n             * Margin Y\n             * @see https://tailwindcss.com/docs/margin\n             */\n            my: [{ my: [margin] }],\n            /**\n             * Margin Start\n             * @see https://tailwindcss.com/docs/margin\n             */\n            ms: [{ ms: [margin] }],\n            /**\n             * Margin End\n             * @see https://tailwindcss.com/docs/margin\n             */\n            me: [{ me: [margin] }],\n            /**\n             * Margin Top\n             * @see https://tailwindcss.com/docs/margin\n             */\n            mt: [{ mt: [margin] }],\n            /**\n             * Margin Right\n             * @see https://tailwindcss.com/docs/margin\n             */\n            mr: [{ mr: [margin] }],\n            /**\n             * Margin Bottom\n             * @see https://tailwindcss.com/docs/margin\n             */\n            mb: [{ mb: [margin] }],\n            /**\n             * Margin Left\n             * @see https://tailwindcss.com/docs/margin\n             */\n            ml: [{ ml: [margin] }],\n            /**\n             * Space Between X\n             * @see https://tailwindcss.com/docs/space\n             */\n            'space-x': [{ 'space-x': [space] }],\n            /**\n             * Space Between X Reverse\n             * @see https://tailwindcss.com/docs/space\n             */\n            'space-x-reverse': ['space-x-reverse'],\n            /**\n             * Space Between Y\n             * @see https://tailwindcss.com/docs/space\n             */\n            'space-y': [{ 'space-y': [space] }],\n            /**\n             * Space Between Y Reverse\n             * @see https://tailwindcss.com/docs/space\n             */\n            'space-y-reverse': ['space-y-reverse'],\n            // Sizing\n            /**\n             * Width\n             * @see https://tailwindcss.com/docs/width\n             */\n            w: [\n                {\n                    w: [\n                        'auto',\n                        'min',\n                        'max',\n                        'fit',\n                        'svw',\n                        'lvw',\n                        'dvw',\n                        isArbitraryValue,\n                        spacing,\n                    ],\n                },\n            ],\n            /**\n             * Min-Width\n             * @see https://tailwindcss.com/docs/min-width\n             */\n            'min-w': [{ 'min-w': [isArbitraryValue, spacing, 'min', 'max', 'fit'] }],\n            /**\n             * Max-Width\n             * @see https://tailwindcss.com/docs/max-width\n             */\n            'max-w': [\n                {\n                    'max-w': [\n                        isArbitraryValue,\n                        spacing,\n                        'none',\n                        'full',\n                        'min',\n                        'max',\n                        'fit',\n                        'prose',\n                        { screen: [isTshirtSize] },\n                        isTshirtSize,\n                    ],\n                },\n            ],\n            /**\n             * Height\n             * @see https://tailwindcss.com/docs/height\n             */\n            h: [\n                {\n                    h: [\n                        isArbitraryValue,\n                        spacing,\n                        'auto',\n                        'min',\n                        'max',\n                        'fit',\n                        'svh',\n                        'lvh',\n                        'dvh',\n                    ],\n                },\n            ],\n            /**\n             * Min-Height\n             * @see https://tailwindcss.com/docs/min-height\n             */\n            'min-h': [\n                { 'min-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh'] },\n            ],\n            /**\n             * Max-Height\n             * @see https://tailwindcss.com/docs/max-height\n             */\n            'max-h': [\n                { 'max-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh'] },\n            ],\n            /**\n             * Size\n             * @see https://tailwindcss.com/docs/size\n             */\n            size: [{ size: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit'] }],\n            // Typography\n            /**\n             * Font Size\n             * @see https://tailwindcss.com/docs/font-size\n             */\n            'font-size': [{ text: ['base', isTshirtSize, isArbitraryLength] }],\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                {\n                    font: [\n                        'thin',\n                        'extralight',\n                        'light',\n                        'normal',\n                        'medium',\n                        'semibold',\n                        'bold',\n                        'extrabold',\n                        'black',\n                        isArbitraryNumber,\n                    ],\n                },\n            ],\n            /**\n             * Font Family\n             * @see https://tailwindcss.com/docs/font-family\n             */\n            'font-family': [{ font: [isAny] }],\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                {\n                    tracking: [\n                        'tighter',\n                        'tight',\n                        'normal',\n                        'wide',\n                        'wider',\n                        'widest',\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Line Clamp\n             * @see https://tailwindcss.com/docs/line-clamp\n             */\n            'line-clamp': [{ 'line-clamp': ['none', isNumber, isArbitraryNumber] }],\n            /**\n             * Line Height\n             * @see https://tailwindcss.com/docs/line-height\n             */\n            leading: [\n                {\n                    leading: [\n                        'none',\n                        'tight',\n                        'snug',\n                        'normal',\n                        'relaxed',\n                        'loose',\n                        isLength,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * List Style Image\n             * @see https://tailwindcss.com/docs/list-style-image\n             */\n            'list-image': [{ 'list-image': ['none', isArbitraryValue] }],\n            /**\n             * List Style Type\n             * @see https://tailwindcss.com/docs/list-style-type\n             */\n            'list-style-type': [{ list: ['none', 'disc', 'decimal', isArbitraryValue] }],\n            /**\n             * List Style Position\n             * @see https://tailwindcss.com/docs/list-style-position\n             */\n            'list-style-position': [{ list: ['inside', 'outside'] }],\n            /**\n             * Placeholder Color\n             * @deprecated since Tailwind CSS v3.0.0\n             * @see https://tailwindcss.com/docs/placeholder-color\n             */\n            'placeholder-color': [{ placeholder: [colors] }],\n            /**\n             * Placeholder Opacity\n             * @see https://tailwindcss.com/docs/placeholder-opacity\n             */\n            'placeholder-opacity': [{ 'placeholder-opacity': [opacity] }],\n            /**\n             * Text Alignment\n             * @see https://tailwindcss.com/docs/text-align\n             */\n            'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n            /**\n             * Text Color\n             * @see https://tailwindcss.com/docs/text-color\n             */\n            'text-color': [{ text: [colors] }],\n            /**\n             * Text Opacity\n             * @see https://tailwindcss.com/docs/text-opacity\n             */\n            'text-opacity': [{ 'text-opacity': [opacity] }],\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': [{ decoration: [...getLineStyles(), 'wavy'] }],\n            /**\n             * Text Decoration Thickness\n             * @see https://tailwindcss.com/docs/text-decoration-thickness\n             */\n            'text-decoration-thickness': [\n                { decoration: ['auto', 'from-font', isLength, isArbitraryLength] },\n            ],\n            /**\n             * Text Underline Offset\n             * @see https://tailwindcss.com/docs/text-underline-offset\n             */\n            'underline-offset': [{ 'underline-offset': ['auto', isLength, isArbitraryValue] }],\n            /**\n             * Text Decoration Color\n             * @see https://tailwindcss.com/docs/text-decoration-color\n             */\n            'text-decoration-color': [{ decoration: [colors] }],\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': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n            /**\n             * Text Indent\n             * @see https://tailwindcss.com/docs/text-indent\n             */\n            indent: [{ indent: getSpacingWithArbitrary() }],\n            /**\n             * Vertical Alignment\n             * @see https://tailwindcss.com/docs/vertical-align\n             */\n            'vertical-align': [\n                {\n                    align: [\n                        'baseline',\n                        'top',\n                        'middle',\n                        'bottom',\n                        'text-top',\n                        'text-bottom',\n                        'sub',\n                        'super',\n                        isArbitraryValue,\n                    ],\n                },\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: [{ break: ['normal', 'words', 'all', 'keep'] }],\n            /**\n             * Hyphens\n             * @see https://tailwindcss.com/docs/hyphens\n             */\n            hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n            /**\n             * Content\n             * @see https://tailwindcss.com/docs/content\n             */\n            content: [{ content: ['none', isArbitraryValue] }],\n            // Backgrounds\n            /**\n             * Background Attachment\n             * @see https://tailwindcss.com/docs/background-attachment\n             */\n            'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n            /**\n             * Background Clip\n             * @see https://tailwindcss.com/docs/background-clip\n             */\n            'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n            /**\n             * Background Opacity\n             * @deprecated since Tailwind CSS v3.0.0\n             * @see https://tailwindcss.com/docs/background-opacity\n             */\n            'bg-opacity': [{ 'bg-opacity': [opacity] }],\n            /**\n             * Background Origin\n             * @see https://tailwindcss.com/docs/background-origin\n             */\n            'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n            /**\n             * Background Position\n             * @see https://tailwindcss.com/docs/background-position\n             */\n            'bg-position': [{ bg: [...getPositions(), isArbitraryPosition] }],\n            /**\n             * Background Repeat\n             * @see https://tailwindcss.com/docs/background-repeat\n             */\n            'bg-repeat': [{ bg: ['no-repeat', { repeat: ['', 'x', 'y', 'round', 'space'] }] }],\n            /**\n             * Background Size\n             * @see https://tailwindcss.com/docs/background-size\n             */\n            'bg-size': [{ bg: ['auto', 'cover', 'contain', isArbitrarySize] }],\n            /**\n             * Background Image\n             * @see https://tailwindcss.com/docs/background-image\n             */\n            'bg-image': [\n                {\n                    bg: [\n                        'none',\n                        { 'gradient-to': ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n                        isArbitraryImage,\n                    ],\n                },\n            ],\n            /**\n             * Background Color\n             * @see https://tailwindcss.com/docs/background-color\n             */\n            'bg-color': [{ bg: [colors] }],\n            /**\n             * Gradient Color Stops From Position\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-from-pos': [{ from: [gradientColorStopPositions] }],\n            /**\n             * Gradient Color Stops Via Position\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-via-pos': [{ via: [gradientColorStopPositions] }],\n            /**\n             * Gradient Color Stops To Position\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-to-pos': [{ to: [gradientColorStopPositions] }],\n            /**\n             * Gradient Color Stops From\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-from': [{ from: [gradientColorStops] }],\n            /**\n             * Gradient Color Stops Via\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-via': [{ via: [gradientColorStops] }],\n            /**\n             * Gradient Color Stops To\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-to': [{ to: [gradientColorStops] }],\n            // Borders\n            /**\n             * Border Radius\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            rounded: [{ rounded: [borderRadius] }],\n            /**\n             * Border Radius Start\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-s': [{ 'rounded-s': [borderRadius] }],\n            /**\n             * Border Radius End\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-e': [{ 'rounded-e': [borderRadius] }],\n            /**\n             * Border Radius Top\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-t': [{ 'rounded-t': [borderRadius] }],\n            /**\n             * Border Radius Right\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-r': [{ 'rounded-r': [borderRadius] }],\n            /**\n             * Border Radius Bottom\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-b': [{ 'rounded-b': [borderRadius] }],\n            /**\n             * Border Radius Left\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-l': [{ 'rounded-l': [borderRadius] }],\n            /**\n             * Border Radius Start Start\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-ss': [{ 'rounded-ss': [borderRadius] }],\n            /**\n             * Border Radius Start End\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-se': [{ 'rounded-se': [borderRadius] }],\n            /**\n             * Border Radius End End\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-ee': [{ 'rounded-ee': [borderRadius] }],\n            /**\n             * Border Radius End Start\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-es': [{ 'rounded-es': [borderRadius] }],\n            /**\n             * Border Radius Top Left\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-tl': [{ 'rounded-tl': [borderRadius] }],\n            /**\n             * Border Radius Top Right\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-tr': [{ 'rounded-tr': [borderRadius] }],\n            /**\n             * Border Radius Bottom Right\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-br': [{ 'rounded-br': [borderRadius] }],\n            /**\n             * Border Radius Bottom Left\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-bl': [{ 'rounded-bl': [borderRadius] }],\n            /**\n             * Border Width\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w': [{ border: [borderWidth] }],\n            /**\n             * Border Width X\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-x': [{ 'border-x': [borderWidth] }],\n            /**\n             * Border Width Y\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-y': [{ 'border-y': [borderWidth] }],\n            /**\n             * Border Width Start\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-s': [{ 'border-s': [borderWidth] }],\n            /**\n             * Border Width End\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-e': [{ 'border-e': [borderWidth] }],\n            /**\n             * Border Width Top\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-t': [{ 'border-t': [borderWidth] }],\n            /**\n             * Border Width Right\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-r': [{ 'border-r': [borderWidth] }],\n            /**\n             * Border Width Bottom\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-b': [{ 'border-b': [borderWidth] }],\n            /**\n             * Border Width Left\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-l': [{ 'border-l': [borderWidth] }],\n            /**\n             * Border Opacity\n             * @see https://tailwindcss.com/docs/border-opacity\n             */\n            'border-opacity': [{ 'border-opacity': [opacity] }],\n            /**\n             * Border Style\n             * @see https://tailwindcss.com/docs/border-style\n             */\n            'border-style': [{ border: [...getLineStyles(), 'hidden'] }],\n            /**\n             * Divide Width X\n             * @see https://tailwindcss.com/docs/divide-width\n             */\n            'divide-x': [{ 'divide-x': [borderWidth] }],\n            /**\n             * Divide Width X Reverse\n             * @see https://tailwindcss.com/docs/divide-width\n             */\n            'divide-x-reverse': ['divide-x-reverse'],\n            /**\n             * Divide Width Y\n             * @see https://tailwindcss.com/docs/divide-width\n             */\n            'divide-y': [{ 'divide-y': [borderWidth] }],\n            /**\n             * Divide Width Y Reverse\n             * @see https://tailwindcss.com/docs/divide-width\n             */\n            'divide-y-reverse': ['divide-y-reverse'],\n            /**\n             * Divide Opacity\n             * @see https://tailwindcss.com/docs/divide-opacity\n             */\n            'divide-opacity': [{ 'divide-opacity': [opacity] }],\n            /**\n             * Divide Style\n             * @see https://tailwindcss.com/docs/divide-style\n             */\n            'divide-style': [{ divide: getLineStyles() }],\n            /**\n             * Border Color\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color': [{ border: [borderColor] }],\n            /**\n             * Border Color X\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-x': [{ 'border-x': [borderColor] }],\n            /**\n             * Border Color Y\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-y': [{ 'border-y': [borderColor] }],\n            /**\n             * Border Color S\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-s': [{ 'border-s': [borderColor] }],\n            /**\n             * Border Color E\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-e': [{ 'border-e': [borderColor] }],\n            /**\n             * Border Color Top\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-t': [{ 'border-t': [borderColor] }],\n            /**\n             * Border Color Right\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-r': [{ 'border-r': [borderColor] }],\n            /**\n             * Border Color Bottom\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-b': [{ 'border-b': [borderColor] }],\n            /**\n             * Border Color Left\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-l': [{ 'border-l': [borderColor] }],\n            /**\n             * Divide Color\n             * @see https://tailwindcss.com/docs/divide-color\n             */\n            'divide-color': [{ divide: [borderColor] }],\n            /**\n             * Outline Style\n             * @see https://tailwindcss.com/docs/outline-style\n             */\n            'outline-style': [{ outline: ['', ...getLineStyles()] }],\n            /**\n             * Outline Offset\n             * @see https://tailwindcss.com/docs/outline-offset\n             */\n            'outline-offset': [{ 'outline-offset': [isLength, isArbitraryValue] }],\n            /**\n             * Outline Width\n             * @see https://tailwindcss.com/docs/outline-width\n             */\n            'outline-w': [{ outline: [isLength, isArbitraryLength] }],\n            /**\n             * Outline Color\n             * @see https://tailwindcss.com/docs/outline-color\n             */\n            'outline-color': [{ outline: [colors] }],\n            /**\n             * Ring Width\n             * @see https://tailwindcss.com/docs/ring-width\n             */\n            'ring-w': [{ ring: getLengthWithEmptyAndArbitrary() }],\n            /**\n             * Ring Width Inset\n             * @see https://tailwindcss.com/docs/ring-width\n             */\n            'ring-w-inset': ['ring-inset'],\n            /**\n             * Ring Color\n             * @see https://tailwindcss.com/docs/ring-color\n             */\n            'ring-color': [{ ring: [colors] }],\n            /**\n             * Ring Opacity\n             * @see https://tailwindcss.com/docs/ring-opacity\n             */\n            'ring-opacity': [{ 'ring-opacity': [opacity] }],\n            /**\n             * Ring Offset Width\n             * @see https://tailwindcss.com/docs/ring-offset-width\n             */\n            'ring-offset-w': [{ 'ring-offset': [isLength, isArbitraryLength] }],\n            /**\n             * Ring Offset Color\n             * @see https://tailwindcss.com/docs/ring-offset-color\n             */\n            'ring-offset-color': [{ 'ring-offset': [colors] }],\n            // Effects\n            /**\n             * Box Shadow\n             * @see https://tailwindcss.com/docs/box-shadow\n             */\n            shadow: [{ shadow: ['', 'inner', 'none', isTshirtSize, isArbitraryShadow] }],\n            /**\n             * Box Shadow Color\n             * @see https://tailwindcss.com/docs/box-shadow-color\n             */\n            'shadow-color': [{ shadow: [isAny] }],\n            /**\n             * Opacity\n             * @see https://tailwindcss.com/docs/opacity\n             */\n            opacity: [{ opacity: [opacity] }],\n            /**\n             * Mix Blend Mode\n             * @see https://tailwindcss.com/docs/mix-blend-mode\n             */\n            'mix-blend': [{ 'mix-blend': [...getBlendModes(), 'plus-lighter', 'plus-darker'] }],\n            /**\n             * Background Blend Mode\n             * @see https://tailwindcss.com/docs/background-blend-mode\n             */\n            'bg-blend': [{ 'bg-blend': getBlendModes() }],\n            // Filters\n            /**\n             * Filter\n             * @deprecated since Tailwind CSS v3.0.0\n             * @see https://tailwindcss.com/docs/filter\n             */\n            filter: [{ filter: ['', 'none'] }],\n            /**\n             * Blur\n             * @see https://tailwindcss.com/docs/blur\n             */\n            blur: [{ blur: [blur] }],\n            /**\n             * Brightness\n             * @see https://tailwindcss.com/docs/brightness\n             */\n            brightness: [{ brightness: [brightness] }],\n            /**\n             * Contrast\n             * @see https://tailwindcss.com/docs/contrast\n             */\n            contrast: [{ contrast: [contrast] }],\n            /**\n             * Drop Shadow\n             * @see https://tailwindcss.com/docs/drop-shadow\n             */\n            'drop-shadow': [{ 'drop-shadow': ['', 'none', isTshirtSize, isArbitraryValue] }],\n            /**\n             * Grayscale\n             * @see https://tailwindcss.com/docs/grayscale\n             */\n            grayscale: [{ grayscale: [grayscale] }],\n            /**\n             * Hue Rotate\n             * @see https://tailwindcss.com/docs/hue-rotate\n             */\n            'hue-rotate': [{ 'hue-rotate': [hueRotate] }],\n            /**\n             * Invert\n             * @see https://tailwindcss.com/docs/invert\n             */\n            invert: [{ invert: [invert] }],\n            /**\n             * Saturate\n             * @see https://tailwindcss.com/docs/saturate\n             */\n            saturate: [{ saturate: [saturate] }],\n            /**\n             * Sepia\n             * @see https://tailwindcss.com/docs/sepia\n             */\n            sepia: [{ sepia: [sepia] }],\n            /**\n             * Backdrop Filter\n             * @deprecated since Tailwind CSS v3.0.0\n             * @see https://tailwindcss.com/docs/backdrop-filter\n             */\n            'backdrop-filter': [{ 'backdrop-filter': ['', 'none'] }],\n            /**\n             * Backdrop Blur\n             * @see https://tailwindcss.com/docs/backdrop-blur\n             */\n            'backdrop-blur': [{ 'backdrop-blur': [blur] }],\n            /**\n             * Backdrop Brightness\n             * @see https://tailwindcss.com/docs/backdrop-brightness\n             */\n            'backdrop-brightness': [{ 'backdrop-brightness': [brightness] }],\n            /**\n             * Backdrop Contrast\n             * @see https://tailwindcss.com/docs/backdrop-contrast\n             */\n            'backdrop-contrast': [{ 'backdrop-contrast': [contrast] }],\n            /**\n             * Backdrop Grayscale\n             * @see https://tailwindcss.com/docs/backdrop-grayscale\n             */\n            'backdrop-grayscale': [{ 'backdrop-grayscale': [grayscale] }],\n            /**\n             * Backdrop Hue Rotate\n             * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n             */\n            'backdrop-hue-rotate': [{ 'backdrop-hue-rotate': [hueRotate] }],\n            /**\n             * Backdrop Invert\n             * @see https://tailwindcss.com/docs/backdrop-invert\n             */\n            'backdrop-invert': [{ 'backdrop-invert': [invert] }],\n            /**\n             * Backdrop Opacity\n             * @see https://tailwindcss.com/docs/backdrop-opacity\n             */\n            'backdrop-opacity': [{ 'backdrop-opacity': [opacity] }],\n            /**\n             * Backdrop Saturate\n             * @see https://tailwindcss.com/docs/backdrop-saturate\n             */\n            'backdrop-saturate': [{ 'backdrop-saturate': [saturate] }],\n            /**\n             * Backdrop Sepia\n             * @see https://tailwindcss.com/docs/backdrop-sepia\n             */\n            'backdrop-sepia': [{ 'backdrop-sepia': [sepia] }],\n            // Tables\n            /**\n             * Border Collapse\n             * @see https://tailwindcss.com/docs/border-collapse\n             */\n            'border-collapse': [{ border: ['collapse', 'separate'] }],\n            /**\n             * Border Spacing\n             * @see https://tailwindcss.com/docs/border-spacing\n             */\n            'border-spacing': [{ 'border-spacing': [borderSpacing] }],\n            /**\n             * Border Spacing X\n             * @see https://tailwindcss.com/docs/border-spacing\n             */\n            'border-spacing-x': [{ 'border-spacing-x': [borderSpacing] }],\n            /**\n             * Border Spacing Y\n             * @see https://tailwindcss.com/docs/border-spacing\n             */\n            'border-spacing-y': [{ 'border-spacing-y': [borderSpacing] }],\n            /**\n             * Table Layout\n             * @see https://tailwindcss.com/docs/table-layout\n             */\n            'table-layout': [{ table: ['auto', 'fixed'] }],\n            /**\n             * Caption Side\n             * @see https://tailwindcss.com/docs/caption-side\n             */\n            caption: [{ caption: ['top', 'bottom'] }],\n            // Transitions and Animation\n            /**\n             * Tranisition Property\n             * @see https://tailwindcss.com/docs/transition-property\n             */\n            transition: [\n                {\n                    transition: [\n                        'none',\n                        'all',\n                        '',\n                        'colors',\n                        'opacity',\n                        'shadow',\n                        'transform',\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Transition Duration\n             * @see https://tailwindcss.com/docs/transition-duration\n             */\n            duration: [{ duration: getNumberAndArbitrary() }],\n            /**\n             * Transition Timing Function\n             * @see https://tailwindcss.com/docs/transition-timing-function\n             */\n            ease: [{ ease: ['linear', 'in', 'out', 'in-out', isArbitraryValue] }],\n            /**\n             * Transition Delay\n             * @see https://tailwindcss.com/docs/transition-delay\n             */\n            delay: [{ delay: getNumberAndArbitrary() }],\n            /**\n             * Animation\n             * @see https://tailwindcss.com/docs/animation\n             */\n            animate: [{ animate: ['none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue] }],\n            // Transforms\n            /**\n             * Transform\n             * @see https://tailwindcss.com/docs/transform\n             */\n            transform: [{ transform: ['', 'gpu', 'none'] }],\n            /**\n             * Scale\n             * @see https://tailwindcss.com/docs/scale\n             */\n            scale: [{ scale: [scale] }],\n            /**\n             * Scale X\n             * @see https://tailwindcss.com/docs/scale\n             */\n            'scale-x': [{ 'scale-x': [scale] }],\n            /**\n             * Scale Y\n             * @see https://tailwindcss.com/docs/scale\n             */\n            'scale-y': [{ 'scale-y': [scale] }],\n            /**\n             * Rotate\n             * @see https://tailwindcss.com/docs/rotate\n             */\n            rotate: [{ rotate: [isInteger, isArbitraryValue] }],\n            /**\n             * Translate X\n             * @see https://tailwindcss.com/docs/translate\n             */\n            'translate-x': [{ 'translate-x': [translate] }],\n            /**\n             * Translate Y\n             * @see https://tailwindcss.com/docs/translate\n             */\n            'translate-y': [{ 'translate-y': [translate] }],\n            /**\n             * Skew X\n             * @see https://tailwindcss.com/docs/skew\n             */\n            'skew-x': [{ 'skew-x': [skew] }],\n            /**\n             * Skew Y\n             * @see https://tailwindcss.com/docs/skew\n             */\n            'skew-y': [{ 'skew-y': [skew] }],\n            /**\n             * Transform Origin\n             * @see https://tailwindcss.com/docs/transform-origin\n             */\n            'transform-origin': [\n                {\n                    origin: [\n                        'center',\n                        'top',\n                        'top-right',\n                        'right',\n                        'bottom-right',\n                        'bottom',\n                        'bottom-left',\n                        'left',\n                        'top-left',\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            // Interactivity\n            /**\n             * Accent Color\n             * @see https://tailwindcss.com/docs/accent-color\n             */\n            accent: [{ accent: ['auto', colors] }],\n            /**\n             * Appearance\n             * @see https://tailwindcss.com/docs/appearance\n             */\n            appearance: [{ appearance: ['none', 'auto'] }],\n            /**\n             * Cursor\n             * @see https://tailwindcss.com/docs/cursor\n             */\n            cursor: [\n                {\n                    cursor: [\n                        'auto',\n                        'default',\n                        'pointer',\n                        'wait',\n                        'text',\n                        'move',\n                        'help',\n                        'not-allowed',\n                        'none',\n                        'context-menu',\n                        'progress',\n                        'cell',\n                        'crosshair',\n                        'vertical-text',\n                        'alias',\n                        'copy',\n                        'no-drop',\n                        'grab',\n                        'grabbing',\n                        'all-scroll',\n                        'col-resize',\n                        'row-resize',\n                        'n-resize',\n                        'e-resize',\n                        's-resize',\n                        'w-resize',\n                        'ne-resize',\n                        'nw-resize',\n                        'se-resize',\n                        'sw-resize',\n                        'ew-resize',\n                        'ns-resize',\n                        'nesw-resize',\n                        'nwse-resize',\n                        'zoom-in',\n                        'zoom-out',\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Caret Color\n             * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n             */\n            'caret-color': [{ caret: [colors] }],\n            /**\n             * Pointer Events\n             * @see https://tailwindcss.com/docs/pointer-events\n             */\n            'pointer-events': [{ 'pointer-events': ['none', 'auto'] }],\n            /**\n             * Resize\n             * @see https://tailwindcss.com/docs/resize\n             */\n            resize: [{ resize: ['none', 'y', 'x', ''] }],\n            /**\n             * Scroll Behavior\n             * @see https://tailwindcss.com/docs/scroll-behavior\n             */\n            'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n            /**\n             * Scroll Margin\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-m': [{ 'scroll-m': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Margin X\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-mx': [{ 'scroll-mx': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Margin Y\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-my': [{ 'scroll-my': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Margin Start\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-ms': [{ 'scroll-ms': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Margin End\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-me': [{ 'scroll-me': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Margin Top\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-mt': [{ 'scroll-mt': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Margin Right\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-mr': [{ 'scroll-mr': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Margin Bottom\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-mb': [{ 'scroll-mb': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Margin Left\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-ml': [{ 'scroll-ml': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Padding\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-p': [{ 'scroll-p': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Padding X\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-px': [{ 'scroll-px': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Padding Y\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-py': [{ 'scroll-py': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Padding Start\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-ps': [{ 'scroll-ps': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Padding End\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pe': [{ 'scroll-pe': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Padding Top\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pt': [{ 'scroll-pt': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Padding Right\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pr': [{ 'scroll-pr': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Padding Bottom\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pb': [{ 'scroll-pb': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Padding Left\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pl': [{ 'scroll-pl': getSpacingWithArbitrary() }],\n            /**\n             * Scroll Snap Align\n             * @see https://tailwindcss.com/docs/scroll-snap-align\n             */\n            'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n            /**\n             * Scroll Snap Stop\n             * @see https://tailwindcss.com/docs/scroll-snap-stop\n             */\n            'snap-stop': [{ snap: ['normal', 'always'] }],\n            /**\n             * Scroll Snap Type\n             * @see https://tailwindcss.com/docs/scroll-snap-type\n             */\n            'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n            /**\n             * Scroll Snap Type Strictness\n             * @see https://tailwindcss.com/docs/scroll-snap-type\n             */\n            'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n            /**\n             * Touch Action\n             * @see https://tailwindcss.com/docs/touch-action\n             */\n            touch: [\n                {\n                    touch: ['auto', 'none', 'manipulation'],\n                },\n            ],\n            /**\n             * Touch Action X\n             * @see https://tailwindcss.com/docs/touch-action\n             */\n            'touch-x': [\n                {\n                    'touch-pan': ['x', 'left', 'right'],\n                },\n            ],\n            /**\n             * Touch Action Y\n             * @see https://tailwindcss.com/docs/touch-action\n             */\n            'touch-y': [\n                {\n                    'touch-pan': ['y', 'up', 'down'],\n                },\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: [{ select: ['none', 'text', 'all', 'auto'] }],\n            /**\n             * Will Change\n             * @see https://tailwindcss.com/docs/will-change\n             */\n            'will-change': [\n                { 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryValue] },\n            ],\n            // SVG\n            /**\n             * Fill\n             * @see https://tailwindcss.com/docs/fill\n             */\n            fill: [{ fill: [colors, 'none'] }],\n            /**\n             * Stroke Width\n             * @see https://tailwindcss.com/docs/stroke-width\n             */\n            'stroke-w': [{ stroke: [isLength, isArbitraryLength, isArbitraryNumber] }],\n            /**\n             * Stroke\n             * @see https://tailwindcss.com/docs/stroke\n             */\n            stroke: [{ stroke: [colors, 'none'] }],\n            // Accessibility\n            /**\n             * Screen Readers\n             * @see https://tailwindcss.com/docs/screen-readers\n             */\n            sr: ['sr-only', 'not-sr-only'],\n            /**\n             * Forced Color Adjust\n             * @see https://tailwindcss.com/docs/forced-color-adjust\n             */\n            'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\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': [\n                'fvn-ordinal',\n                'fvn-slashed-zero',\n                'fvn-figure',\n                'fvn-spacing',\n                'fvn-fraction',\n            ],\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: [\n                'rounded-s',\n                'rounded-e',\n                'rounded-t',\n                'rounded-r',\n                'rounded-b',\n                'rounded-l',\n                'rounded-ss',\n                'rounded-se',\n                'rounded-ee',\n                'rounded-es',\n                'rounded-tl',\n                'rounded-tr',\n                'rounded-br',\n                'rounded-bl',\n            ],\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': [\n                'border-w-s',\n                'border-w-e',\n                'border-w-t',\n                'border-w-r',\n                'border-w-b',\n                'border-w-l',\n            ],\n            'border-w-x': ['border-w-r', 'border-w-l'],\n            'border-w-y': ['border-w-t', 'border-w-b'],\n            'border-color': [\n                'border-color-s',\n                'border-color-e',\n                'border-color-t',\n                'border-color-r',\n                'border-color-b',\n                'border-color-l',\n            ],\n            'border-color-x': ['border-color-r', 'border-color-l'],\n            'border-color-y': ['border-color-t', 'border-color-b'],\n            'scroll-m': [\n                'scroll-mx',\n                'scroll-my',\n                'scroll-ms',\n                'scroll-me',\n                'scroll-mt',\n                'scroll-mr',\n                'scroll-mb',\n                'scroll-ml',\n            ],\n            'scroll-mx': ['scroll-mr', 'scroll-ml'],\n            'scroll-my': ['scroll-mt', 'scroll-mb'],\n            'scroll-p': [\n                'scroll-px',\n                'scroll-py',\n                'scroll-ps',\n                'scroll-pe',\n                'scroll-pt',\n                'scroll-pr',\n                'scroll-pb',\n                'scroll-pl',\n            ],\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    } as const satisfies Config<DefaultClassGroupIds, DefaultThemeGroupIds>\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]): string {\r\n  return twMerge(clsx(inputs));\r\n}\r\n","import * as React from \"react\"\r\nimport { Label as LabelPrimitive } from \"radix-ui\"\r\n\r\nimport { cn } from \"@/utils/index\"\r\n\r\nfunction Label({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\r\n  return (\r\n    <LabelPrimitive.Root\r\n      data-slot=\"label\"\r\n      className={cn(\r\n        \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nexport { Label }\r\n","import type { FieldProps } from \"../../registry/field-registry\";\r\nimport { Label } from \"../ui/label\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\ntype FieldWrapperProps = Pick<FieldProps, \"field\" | \"error\" | \"touched\"> & {\r\n  children: React.ReactNode;\r\n  className?: string;\r\n  hideLabel?: boolean;\r\n};\r\n\r\nexport function FieldWrapper({\r\n  field,\r\n  error,\r\n  touched,\r\n  children,\r\n  className,\r\n  hideLabel,\r\n}: FieldWrapperProps) {\r\n  const showError = touched && error && error.length > 0;\r\n\r\n  return (\r\n    <div className={cn(\"flex flex-col gap-1.5\", className)}>\r\n      {!hideLabel && (\r\n        <Label htmlFor={field.id}>\r\n          {field.label}\r\n          {field.required && <span className=\"text-destructive\" aria-hidden=\"true\"> *</span>}\r\n        </Label>\r\n      )}\r\n      {field.helpText && (\r\n        <p className=\"text-sm text-muted-foreground\" id={`${field.id}-help`}>\r\n          {field.helpText}\r\n        </p>\r\n      )}\r\n      {children}\r\n      {showError && (\r\n        <div className=\"text-sm text-destructive font-medium\" role=\"alert\" id={`${field.id}-error`}>\r\n          {error![0]}\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n}\r\n\r\n/** Build common aria attributes for an input element. */\r\nexport function fieldAria(field: FieldProps[\"field\"], hasError: boolean) {\r\n  return {\r\n    id: field.id,\r\n    \"aria-describedby\": [\r\n      field.helpText ? `${field.id}-help` : undefined,\r\n      hasError ? `${field.id}-error` : undefined,\r\n    ]\r\n      .filter(Boolean)\r\n      .join(\" \") || undefined,\r\n    \"aria-invalid\": hasError ? (true as const) : undefined,\r\n    \"aria-required\": field.required ? (true as const) : undefined,\r\n  };\r\n}\r\n","import * as React from \"react\"\r\n\r\nimport { cn } from \"@/utils\"\r\n\r\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\r\n  return (\r\n    <input\r\n      type={type}\r\n      data-slot=\"input\"\r\n      className={cn(\r\n        \"h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30\",\r\n        \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\r\n        \"aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nexport { Input }\r\n","import type { ShortTextConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper, fieldAria } from \"./FieldWrapper\";\r\nimport { Input } from \"../ui/input\";\r\n\r\nexport function ShortTextField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as ShortTextConfig | undefined;\r\n  const hasError = !!(touched && error?.length);\r\n  const hasAdornment = !!(config?.prefix || config?.suffix);\r\n\r\n  const input = (\r\n    <Input\r\n      {...fieldAria(field, hasError)}\r\n      type={config?.inputType ?? \"text\"}\r\n      value={(value as string) ?? \"\"}\r\n      placeholder={field.placeholder}\r\n      maxLength={config?.maxLength}\r\n      disabled={disabled}\r\n      readOnly={readonly}\r\n      onChange={(e) => onChange(e.target.value)}\r\n      onBlur={onBlur}\r\n      onFocus={onFocus}\r\n    />\r\n  );\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      {hasAdornment ? (\r\n        <div className=\"flex items-center gap-2\">\r\n          {config?.prefix && (\r\n            <span className=\"text-sm text-muted-foreground shrink-0\">{config.prefix}</span>\r\n          )}\r\n          {input}\r\n          {config?.suffix && (\r\n            <span className=\"text-sm text-muted-foreground shrink-0\">{config.suffix}</span>\r\n          )}\r\n        </div>\r\n      ) : (\r\n        input\r\n      )}\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import * as React from \"react\"\r\n\r\nimport { cn } from \"@/utils/index\"\r\n\r\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\r\n  return (\r\n    <textarea\r\n      data-slot=\"textarea\"\r\n      className={cn(\r\n        \"flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nexport { Textarea }\r\n","import type { LongTextConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper, fieldAria } from \"./FieldWrapper\";\r\nimport { Textarea } from \"../ui/textarea\";\r\n\r\nexport function LongTextField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as LongTextConfig | undefined;\r\n  const hasError = !!(touched && error?.length);\r\n  const text = (value as string) ?? \"\";\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <Textarea\r\n        {...fieldAria(field, hasError)}\r\n        value={text}\r\n        placeholder={field.placeholder}\r\n        rows={config?.rows ?? 4}\r\n        maxLength={config?.maxLength}\r\n        disabled={disabled}\r\n        readOnly={readonly}\r\n        onChange={(e) => onChange(e.target.value)}\r\n        onBlur={onBlur}\r\n        onFocus={onFocus}\r\n      />\r\n      {config?.showCharCount !== false && config?.maxLength && (\r\n        <span className=\"text-xs text-muted-foreground text-right\">\r\n          {text.length} / {config.maxLength}\r\n        </span>\r\n      )}\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper, fieldAria } from \"./FieldWrapper\";\r\nimport { Input } from \"../ui/input\";\r\n\r\nexport function EmailField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const hasError = !!(touched && error?.length);\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <Input\r\n        {...fieldAria(field, hasError)}\r\n        type=\"email\"\r\n        value={(value as string) ?? \"\"}\r\n        placeholder={field.placeholder ?? \"email@example.com\"}\r\n        disabled={disabled}\r\n        readOnly={readonly}\r\n        onChange={(e) => onChange(e.target.value)}\r\n        onBlur={onBlur}\r\n        onFocus={onFocus}\r\n        autoComplete=\"email\"\r\n      />\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper, fieldAria } from \"./FieldWrapper\";\r\nimport { Input } from \"../ui/input\";\r\n\r\nexport function PhoneField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const hasError = !!(touched && error?.length);\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <Input\r\n        {...fieldAria(field, hasError)}\r\n        type=\"tel\"\r\n        value={(value as string) ?? \"\"}\r\n        placeholder={field.placeholder ?? \"(555) 123-4567\"}\r\n        disabled={disabled}\r\n        readOnly={readonly}\r\n        onChange={(e) => onChange(e.target.value)}\r\n        onBlur={onBlur}\r\n        onFocus={onFocus}\r\n        autoComplete=\"tel\"\r\n      />\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n  string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n  const camelCase = string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n    p2 ? p2.toUpperCase() : p1.toLowerCase(),\n  );\n\n  return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n  classes\n    .filter((className, index, array) => {\n      return Boolean(className) && array.indexOf(className) === index;\n    })\n    .join(' ');\n","export default {\n  xmlns: 'http://www.w3.org/2000/svg',\n  width: 24,\n  height: 24,\n  viewBox: '0 0 24 24',\n  fill: 'none',\n  stroke: 'currentColor',\n  strokeWidth: 2,\n  strokeLinecap: 'round',\n  strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n  iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n  (\n    {\n      color = 'currentColor',\n      size = 24,\n      strokeWidth = 2,\n      absoluteStrokeWidth,\n      className = '',\n      children,\n      iconNode,\n      ...rest\n    },\n    ref,\n  ) => {\n    return createElement(\n      'svg',\n      {\n        ref,\n        ...defaultAttributes,\n        width: size,\n        height: size,\n        stroke: color,\n        strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n        className: mergeClasses('lucide', className),\n        ...rest,\n      },\n      [\n        ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n        ...(Array.isArray(children) ? children : [children]),\n      ],\n    );\n  },\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n  const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n    createElement(Icon, {\n      ref,\n      iconNode,\n      className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className),\n      ...props,\n    }),\n  );\n\n  Component.displayName = `${iconName}`;\n\n  return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Calendar\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNOCAydjQiIC8+CiAgPHBhdGggZD0iTTE2IDJ2NCIgLz4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjQiIHJ4PSIyIiAvPgogIDxwYXRoIGQ9Ik0zIDEwaDE4IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/calendar\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Calendar = createLucideIcon('Calendar', [\n  ['path', { d: 'M8 2v4', key: '1cmpym' }],\n  ['path', { d: 'M16 2v4', key: '4m81vk' }],\n  ['rect', { width: '18', height: '18', x: '3', y: '4', rx: '2', key: '1hopcy' }],\n  ['path', { d: 'M3 10h18', key: '8toen8' }],\n]);\n\nexport default Calendar;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon('Check', [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]]);\n\nexport default Check;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiA5IDYgNiA2LTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('ChevronDown', [\n  ['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }],\n]);\n\nexport default ChevronDown;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTUgMTgtNi02IDYtNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('ChevronLeft', [\n  ['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }],\n]);\n\nexport default ChevronLeft;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtOSAxOCA2LTYtNi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('ChevronRight', [\n  ['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }],\n]);\n\nexport default ChevronRight;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronUp\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTggMTUtNi02LTYgNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-up\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronUp = createLucideIcon('ChevronUp', [['path', { d: 'm18 15-6-6-6 6', key: '153udz' }]]);\n\nexport default ChevronUp;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Circle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Circle = createLucideIcon('Circle', [\n  ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n]);\n\nexport default Circle;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Clock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cG9seWxpbmUgcG9pbnRzPSIxMiA2IDEyIDEyIDE2IDE0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/clock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Clock = createLucideIcon('Clock', [\n  ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n  ['polyline', { points: '12 6 12 12 16 14', key: '68esgv' }],\n]);\n\nexport default Clock;\n","import * as React from \"react\"\r\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\r\nimport { Select as SelectPrimitive } from \"radix-ui\"\r\n\r\nimport { cn } from \"../../utils/cn\"\r\n\r\nfunction Select({\r\n  ...props\r\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\r\n  return <SelectPrimitive.Root data-slot=\"select\" {...props} />\r\n}\r\n\r\nfunction SelectGroup({\r\n  ...props\r\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\r\n  return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\r\n}\r\n\r\nfunction SelectValue({\r\n  ...props\r\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\r\n  return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\r\n}\r\n\r\nfunction SelectTrigger({\r\n  className,\r\n  size = \"default\",\r\n  children,\r\n  ...props\r\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\r\n  size?: \"sm\" | \"default\"\r\n}) {\r\n  return (\r\n    <SelectPrimitive.Trigger\r\n      data-slot=\"select-trigger\"\r\n      data-size={size}\r\n      className={cn(\r\n        \"flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\",\r\n        className\r\n      )}\r\n      {...props}\r\n    >\r\n      {children}\r\n      <SelectPrimitive.Icon asChild>\r\n        <ChevronDownIcon className=\"size-4 opacity-50\" />\r\n      </SelectPrimitive.Icon>\r\n    </SelectPrimitive.Trigger>\r\n  )\r\n}\r\n\r\nfunction SelectContent({\r\n  className,\r\n  children,\r\n  position = \"item-aligned\",\r\n  align = \"center\",\r\n  ...props\r\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\r\n  return (\r\n    <SelectPrimitive.Portal>\r\n      <SelectPrimitive.Content\r\n        data-slot=\"select-content\"\r\n        className={cn(\r\n          \"relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\r\n          position === \"popper\" &&\r\n            \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\r\n          className\r\n        )}\r\n        position={position}\r\n        align={align}\r\n        {...props}\r\n      >\r\n        <SelectScrollUpButton />\r\n        <SelectPrimitive.Viewport\r\n          className={cn(\r\n            \"p-1\",\r\n            position === \"popper\" &&\r\n              \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\r\n          )}\r\n        >\r\n          {children}\r\n        </SelectPrimitive.Viewport>\r\n        <SelectScrollDownButton />\r\n      </SelectPrimitive.Content>\r\n    </SelectPrimitive.Portal>\r\n  )\r\n}\r\n\r\nfunction SelectLabel({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\r\n  return (\r\n    <SelectPrimitive.Label\r\n      data-slot=\"select-label\"\r\n      className={cn(\"px-2 py-1.5 text-xs text-muted-foreground\", className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction SelectItem({\r\n  className,\r\n  children,\r\n  ...props\r\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\r\n  return (\r\n    <SelectPrimitive.Item\r\n      data-slot=\"select-item\"\r\n      className={cn(\r\n        \"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\r\n        className\r\n      )}\r\n      {...props}\r\n    >\r\n      <span\r\n        data-slot=\"select-item-indicator\"\r\n        className=\"absolute right-2 flex size-3.5 items-center justify-center\"\r\n      >\r\n        <SelectPrimitive.ItemIndicator>\r\n          <CheckIcon className=\"size-4\" />\r\n        </SelectPrimitive.ItemIndicator>\r\n      </span>\r\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n    </SelectPrimitive.Item>\r\n  )\r\n}\r\n\r\nfunction SelectSeparator({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\r\n  return (\r\n    <SelectPrimitive.Separator\r\n      data-slot=\"select-separator\"\r\n      className={cn(\"pointer-events-none -mx-1 my-1 h-px bg-border\", className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction SelectScrollUpButton({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\r\n  return (\r\n    <SelectPrimitive.ScrollUpButton\r\n      data-slot=\"select-scroll-up-button\"\r\n      className={cn(\r\n        \"flex cursor-default items-center justify-center py-1\",\r\n        className\r\n      )}\r\n      {...props}\r\n    >\r\n      <ChevronUpIcon className=\"size-4\" />\r\n    </SelectPrimitive.ScrollUpButton>\r\n  )\r\n}\r\n\r\nfunction SelectScrollDownButton({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\r\n  return (\r\n    <SelectPrimitive.ScrollDownButton\r\n      data-slot=\"select-scroll-down-button\"\r\n      className={cn(\r\n        \"flex cursor-default items-center justify-center py-1\",\r\n        className\r\n      )}\r\n      {...props}\r\n    >\r\n      <ChevronDownIcon className=\"size-4\" />\r\n    </SelectPrimitive.ScrollDownButton>\r\n  )\r\n}\r\n\r\nexport {\r\n  Select,\r\n  SelectContent,\r\n  SelectGroup,\r\n  SelectItem,\r\n  SelectLabel,\r\n  SelectScrollDownButton,\r\n  SelectScrollUpButton,\r\n  SelectSeparator,\r\n  SelectTrigger,\r\n  SelectValue,\r\n}\r\n","import type { PhoneInternationalConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper, fieldAria } from \"./FieldWrapper\";\r\nimport { Input } from \"../ui/input\";\r\nimport {\r\n  Select,\r\n  SelectContent,\r\n  SelectItem,\r\n  SelectTrigger,\r\n  SelectValue,\r\n} from \"../ui/select\";\r\nimport { COUNTRIES } from \"@squaredr/fieldcraft-core\";\r\nimport { useMemo } from \"react\";\r\n\r\nconst ALL_COUNTRY_CODES = COUNTRIES.map((c) => ({\r\n  code: c.code,\r\n  dial: c.phone,\r\n  label: `${c.phone} (${c.code})`,\r\n}));\r\n\r\nexport function PhoneInternationalField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as PhoneInternationalConfig | undefined;\r\n  const hasError = !!(touched && error?.length);\r\n  const phoneValue = (value as { countryCode?: string; number?: string }) ?? {};\r\n\r\n  const countryCodes = useMemo(() => {\r\n    const priority = config?.priorityCountries;\r\n    if (!priority || priority.length === 0) return ALL_COUNTRY_CODES;\r\n    const prioritySet = new Set(priority.map((c) => c.toUpperCase()));\r\n    const priorityItems = ALL_COUNTRY_CODES.filter((c) => prioritySet.has(c.code));\r\n    const rest = ALL_COUNTRY_CODES.filter((c) => !prioritySet.has(c.code));\r\n    return [...priorityItems, ...rest];\r\n  }, [config?.priorityCountries]);\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <div className=\"flex gap-2\">\r\n        <Select\r\n          value={phoneValue.countryCode ?? config?.defaultCountry ?? \"US\"}\r\n          onValueChange={(val) =>\r\n            onChange({ ...phoneValue, countryCode: val })\r\n          }\r\n          disabled={disabled || readonly}\r\n        >\r\n          <SelectTrigger className=\"w-32 shrink-0\" aria-label=\"Country code\" onFocus={onFocus}>\r\n            <SelectValue />\r\n          </SelectTrigger>\r\n          <SelectContent>\r\n            {countryCodes.map((c, i) => {\r\n              const priority = config?.priorityCountries;\r\n              const showSeparator = priority && priority.length > 0 && i === priority.length;\r\n              return (\r\n                <div key={c.code}>\r\n                  {showSeparator && <div className=\"my-1 h-px bg-border\" role=\"separator\" />}\r\n                  <SelectItem value={c.code}>{c.label}</SelectItem>\r\n                </div>\r\n              );\r\n            })}\r\n          </SelectContent>\r\n        </Select>\r\n        <Input\r\n          {...fieldAria(field, hasError)}\r\n          type=\"tel\"\r\n          value={phoneValue.number ?? \"\"}\r\n          placeholder={field.placeholder}\r\n          disabled={disabled}\r\n          readOnly={readonly}\r\n          onChange={(e) =>\r\n            onChange({ ...phoneValue, number: e.target.value })\r\n          }\r\n          onBlur={onBlur}\r\n          onFocus={onFocus}\r\n        />\r\n      </div>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper, fieldAria } from \"./FieldWrapper\";\r\nimport { Input } from \"../ui/input\";\r\n\r\nexport function UrlField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const hasError = !!(touched && error?.length);\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <Input\r\n        {...fieldAria(field, hasError)}\r\n        type=\"url\"\r\n        value={(value as string) ?? \"\"}\r\n        placeholder={field.placeholder ?? \"https://\"}\r\n        disabled={disabled}\r\n        readOnly={readonly}\r\n        onChange={(e) => onChange(e.target.value)}\r\n        onBlur={onBlur}\r\n        onFocus={onFocus}\r\n        autoComplete=\"url\"\r\n      />\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import type { LegalNameConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper, fieldAria } from \"./FieldWrapper\";\r\nimport { Input } from \"../ui/input\";\r\nimport { Label } from \"../ui/label\";\r\n\r\nexport function LegalNameField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as LegalNameConfig | undefined;\r\n  const hasError = !!(touched && error?.length);\r\n  const nameValue = (value as { first?: string; middle?: string; last?: string; suffix?: string }) ?? {};\r\n  const showMiddle = config?.showMiddleName !== false;\r\n  const showSuffix = config?.showSuffix === true;\r\n\r\n  const update = (part: string, val: string) => {\r\n    onChange({ ...nameValue, [part]: val });\r\n  };\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <div className=\"flex gap-3\">\r\n        <div className=\"flex flex-col gap-1.5 flex-1\">\r\n          <Label htmlFor={`${field.id}-first`} className=\"text-xs\">\r\n            First name\r\n          </Label>\r\n          <Input\r\n            {...fieldAria(field, hasError)}\r\n            id={`${field.id}-first`}\r\n            type=\"text\"\r\n            value={nameValue.first ?? \"\"}\r\n            disabled={disabled}\r\n            readOnly={readonly}\r\n            onChange={(e) => update(\"first\", e.target.value)}\r\n            onBlur={onBlur}\r\n            onFocus={onFocus}\r\n            autoComplete=\"given-name\"\r\n          />\r\n        </div>\r\n        {showMiddle && (\r\n          <div className=\"flex flex-col gap-1.5 flex-1\">\r\n            <Label htmlFor={`${field.id}-middle`} className=\"text-xs\">\r\n              Middle name\r\n            </Label>\r\n            <Input\r\n              {...fieldAria(field, hasError)}\r\n              id={`${field.id}-middle`}\r\n              type=\"text\"\r\n              value={nameValue.middle ?? \"\"}\r\n              disabled={disabled}\r\n              readOnly={readonly}\r\n              onChange={(e) => update(\"middle\", e.target.value)}\r\n              onBlur={onBlur}\r\n              onFocus={onFocus}\r\n              autoComplete=\"additional-name\"\r\n            />\r\n          </div>\r\n        )}\r\n        <div className=\"flex flex-col gap-1.5 flex-1\">\r\n          <Label htmlFor={`${field.id}-last`} className=\"text-xs\">\r\n            Last name\r\n          </Label>\r\n          <Input\r\n            {...fieldAria(field, hasError)}\r\n            id={`${field.id}-last`}\r\n            type=\"text\"\r\n            value={nameValue.last ?? \"\"}\r\n            disabled={disabled}\r\n            readOnly={readonly}\r\n            onChange={(e) => update(\"last\", e.target.value)}\r\n            onBlur={onBlur}\r\n            onFocus={onFocus}\r\n            autoComplete=\"family-name\"\r\n          />\r\n        </div>\r\n        {showSuffix && (\r\n          <div className=\"flex flex-col gap-1.5 w-24\">\r\n            <Label htmlFor={`${field.id}-suffix`} className=\"text-xs\">\r\n              Suffix\r\n            </Label>\r\n            <Input\r\n              {...fieldAria(field, hasError)}\r\n              id={`${field.id}-suffix`}\r\n              type=\"text\"\r\n              placeholder=\"Jr., Sr., III\"\r\n              value={nameValue.suffix ?? \"\"}\r\n              disabled={disabled}\r\n              readOnly={readonly}\r\n              onChange={(e) => update(\"suffix\", e.target.value)}\r\n              onBlur={onBlur}\r\n              onFocus={onFocus}\r\n              autoComplete=\"honorific-suffix\"\r\n            />\r\n          </div>\r\n        )}\r\n      </div>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import type { NumberConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper, fieldAria } from \"./FieldWrapper\";\r\nimport { Input } from \"../ui/input\";\r\n\r\nexport function NumberField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as NumberConfig | undefined;\r\n  const hasError = !!(touched && error?.length);\r\n\r\n  const handleBlur = () => {\r\n    if (config?.decimalPlaces != null && value != null && value !== \"\") {\r\n      const num = Number(value);\r\n      if (!isNaN(num)) {\r\n        onChange(Number(num.toFixed(config.decimalPlaces)));\r\n      }\r\n    }\r\n    onBlur();\r\n  };\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <div className=\"flex items-center gap-2\">\r\n        {config?.prefix && (\r\n          <span className=\"text-sm text-muted-foreground shrink-0\">{config.prefix}</span>\r\n        )}\r\n        <Input\r\n          {...fieldAria(field, hasError)}\r\n          type=\"number\"\r\n          value={value !== undefined && value !== null ? String(value) : \"\"}\r\n          placeholder={field.placeholder}\r\n          min={config?.min}\r\n          max={config?.max}\r\n          step={config?.step ?? 1}\r\n          disabled={disabled}\r\n          readOnly={readonly}\r\n          onChange={(e) => {\r\n            const raw = e.target.value;\r\n            onChange(raw === \"\" ? undefined : Number(raw));\r\n          }}\r\n          onBlur={handleBlur}\r\n          onFocus={onFocus}\r\n        />\r\n        {config?.suffix && (\r\n          <span className=\"text-sm text-muted-foreground shrink-0\">{config.suffix}</span>\r\n        )}\r\n      </div>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import * as React from \"react\"\r\nimport { Slider as SliderPrimitive } from \"radix-ui\"\r\n\r\nimport { cn } from \"@/utils/index\"\r\n\r\nfunction Slider({\r\n  className,\r\n  defaultValue,\r\n  value,\r\n  min = 0,\r\n  max = 100,\r\n  ...props\r\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\r\n  const _values = React.useMemo(\r\n    () =>\r\n      Array.isArray(value)\r\n        ? value\r\n        : Array.isArray(defaultValue)\r\n          ? defaultValue\r\n          : [min, max],\r\n    [value, defaultValue, min, max]\r\n  )\r\n\r\n  return (\r\n    <SliderPrimitive.Root\r\n      data-slot=\"slider\"\r\n      defaultValue={defaultValue}\r\n      value={value}\r\n      min={min}\r\n      max={max}\r\n      className={cn(\r\n        \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\r\n        className\r\n      )}\r\n      {...props}\r\n    >\r\n      <SliderPrimitive.Track\r\n        data-slot=\"slider-track\"\r\n        className={cn(\r\n          \"relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\"\r\n        )}\r\n      >\r\n        <SliderPrimitive.Range\r\n          data-slot=\"slider-range\"\r\n          className={cn(\r\n            \"absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\r\n          )}\r\n        />\r\n      </SliderPrimitive.Track>\r\n      {Array.from({ length: _values.length }, (_, index) => (\r\n        <SliderPrimitive.Thumb\r\n          data-slot=\"slider-thumb\"\r\n          key={index}\r\n          className=\"block size-4 shrink-0 rounded-full border border-primary bg-white shadow-sm ring-ring/50 transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\r\n        />\r\n      ))}\r\n    </SliderPrimitive.Root>\r\n  )\r\n}\r\n\r\nexport { Slider }\r\n","import type { SliderConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper, fieldAria } from \"./FieldWrapper\";\r\nimport { Slider } from \"../ui/slider\";\r\n\r\nexport function SliderField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as SliderConfig | undefined;\r\n  const min = config?.min ?? 0;\r\n  const max = config?.max ?? 100;\r\n  const step = config?.step ?? 1;\r\n  const current = (value as number) ?? min;\r\n  const aria = fieldAria(field, !!(touched && error?.length));\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <div className=\"flex flex-col gap-2 pt-1\">\r\n        <Slider\r\n          aria-label={field.label}\r\n          aria-describedby={aria[\"aria-describedby\"]}\r\n          aria-invalid={aria[\"aria-invalid\"]}\r\n          min={min}\r\n          max={max}\r\n          step={step}\r\n          value={[current]}\r\n          disabled={disabled || readonly}\r\n          onValueChange={(vals) => onChange(vals[0])}\r\n          onValueCommit={() => onBlur()}\r\n          onFocus={onFocus}\r\n        />\r\n        <div className=\"flex justify-between text-xs text-muted-foreground\">\r\n          <span>{config?.minLabel ?? min}</span>\r\n          {config?.showValue !== false && (\r\n            <span className=\"font-medium text-foreground\">{current}</span>\r\n          )}\r\n          <span>{config?.maxLabel ?? max}</span>\r\n        </div>\r\n      </div>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n        var _config_compoundVariants;\n        if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n        const { variants, defaultVariants } = config;\n        const getVariantClassNames = Object.keys(variants).map((variant)=>{\n            const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n            const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n            if (variantProp === null) return null;\n            const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n            return variants[variant][variantKey];\n        });\n        const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n            let [key, value] = param;\n            if (value === undefined) {\n                return acc;\n            }\n            acc[key] = value;\n            return acc;\n        }, {});\n        const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n            let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n            return Object.entries(compoundVariantOptions).every((param)=>{\n                let [key, value] = param;\n                return Array.isArray(value) ? value.includes({\n                    ...defaultVariants,\n                    ...propsWithoutUndefined\n                }[key]) : ({\n                    ...defaultVariants,\n                    ...propsWithoutUndefined\n                })[key] === value;\n            }) ? [\n                ...acc,\n                cvClass,\n                cvClassName\n            ] : acc;\n        }, []);\n        return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n    };\n\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { Slot } from \"radix-ui\"\r\n\r\nimport { cn } from \"@/utils/index\"\r\n\r\nconst buttonVariants = cva(\r\n  \"inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\r\n  {\r\n    variants: {\r\n      variant: {\r\n        default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\r\n        destructive:\r\n          \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40\",\r\n        outline:\r\n          \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\r\n        secondary:\r\n          \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\r\n        ghost:\r\n          \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\r\n        link: \"text-primary underline-offset-4 hover:underline\",\r\n      },\r\n      size: {\r\n        default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\r\n        xs: \"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3\",\r\n        sm: \"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5\",\r\n        lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\r\n        icon: \"size-9\",\r\n        \"icon-xs\": \"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3\",\r\n        \"icon-sm\": \"size-8\",\r\n        \"icon-lg\": \"size-10\",\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      variant: \"default\",\r\n      size: \"default\",\r\n    },\r\n  }\r\n)\r\n\r\nfunction Button({\r\n  className,\r\n  variant = \"default\",\r\n  size = \"default\",\r\n  asChild = false,\r\n  ...props\r\n}: React.ComponentProps<\"button\"> &\r\n  VariantProps<typeof buttonVariants> & {\r\n    asChild?: boolean\r\n  }) {\r\n  const Comp = asChild ? Slot.Root : \"button\"\r\n\r\n  return (\r\n    <Comp\r\n      data-slot=\"button\"\r\n      data-variant={variant}\r\n      data-size={size}\r\n      className={cn(buttonVariants({ variant, size, className }))}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nexport { Button, buttonVariants }\r\n","import type { RatingConfig } from \"@squaredr/fieldcraft-core\";\nimport type { FieldProps } from \"../../registry/field-registry\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { Button } from \"../ui/button\";\nimport { cn } from \"../../utils/cn\";\n\nconst ICON_PATHS: Record<string, string> = {\n  star: \"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\",\n  heart: \"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\",\n  circle: \"M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20z\",\n};\n\nexport function RatingField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\n  const config = field.config as RatingConfig | undefined;\n  const max = config?.max ?? 5;\n  const current = (value as number) ?? 0;\n  const iconPath = ICON_PATHS[config?.icon ?? \"star\"] ?? ICON_PATHS.star;\n  const showLabels = config?.showLabels === true;\n\n  function handleKeyDown(e: React.KeyboardEvent<HTMLDivElement>) {\n    if (disabled || readonly) return;\n    let next = current;\n    switch (e.key) {\n      case \"ArrowRight\":\n      case \"ArrowUp\":\n        next = Math.min(current + 1, max);\n        break;\n      case \"ArrowLeft\":\n      case \"ArrowDown\":\n        next = Math.max(current - 1, 1);\n        break;\n      case \"Home\":\n        next = 1;\n        break;\n      case \"End\":\n        next = max;\n        break;\n      default:\n        return;\n    }\n    e.preventDefault();\n    onChange(next);\n  }\n\n  return (\n    <FieldWrapper field={field} error={error} touched={touched}>\n      <div\n        className=\"flex gap-1\"\n        role=\"radiogroup\"\n        aria-label={field.label}\n        onFocus={onFocus}\n        onKeyDown={handleKeyDown}\n      >\n        {Array.from({ length: max }, (_, i) => {\n          const n = i + 1;\n          const selected = n <= current;\n          return (\n            <div key={n} className=\"flex flex-col items-center gap-0.5\">\n              <Button\n                type=\"button\"\n                variant=\"ghost\"\n                size=\"icon\"\n                tabIndex={n === (current || 1) ? 0 : -1}\n                className={cn(\n                  \"h-9 w-9 p-0 rounded-md transition-colors\",\n                  selected ? \"text-primary hover:text-primary/90\" : \"text-muted-foreground hover:text-foreground\",\n                )}\n                disabled={disabled || readonly}\n                onClick={() => { onChange(n); onBlur(); }}\n                aria-label={`${n} of ${max}`}\n                aria-checked={n === current}\n                role=\"radio\"\n              >\n                <svg viewBox=\"0 0 24 24\" fill={selected ? \"currentColor\" : \"none\"} stroke=\"currentColor\" strokeWidth={1.5} width={24} height={24}>\n                  <path d={iconPath} />\n                </svg>\n              </Button>\n              {showLabels && (\n                <span className=\"text-[10px] text-muted-foreground\">{n}</span>\n              )}\n            </div>\n          );\n        })}\n      </div>\n    </FieldWrapper>\n  );\n}\n","import type { NpsConfig } from \"@squaredr/fieldcraft-core\";\nimport type { FieldProps } from \"../../registry/field-registry\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { Button } from \"../ui/button\";\nimport { cn } from \"../../utils/cn\";\n\nexport function NpsField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\n  const config = field.config as NpsConfig | undefined;\n  const current = value as number | undefined;\n\n  return (\n    <FieldWrapper field={field} error={error} touched={touched}>\n      <div className=\"flex flex-col gap-2\" role=\"radiogroup\" aria-label={field.label} onFocus={onFocus}>\n        <div className=\"flex gap-1\">\n          {Array.from({ length: 11 }, (_, i) => {\n            const isSelected = current === i;\n            return (\n              <Button\n                key={i}\n                type=\"button\"\n                role=\"radio\"\n                aria-checked={isSelected}\n                variant={isSelected ? \"default\" : \"outline\"}\n                size=\"sm\"\n                className={cn(\n                  \"flex-1 h-10 px-0 text-xs font-semibold\",\n                  isSelected && \"shadow-sm ring-1 ring-primary\",\n                )}\n                disabled={disabled || readonly}\n                onClick={() => { onChange(i); onBlur(); }}\n              >\n                {i}\n              </Button>\n            );\n          })}\n        </div>\n        <div className=\"flex justify-between text-xs text-muted-foreground\">\n          <span>{config?.lowLabel ?? \"Not likely\"}</span>\n          <span>{config?.highLabel ?? \"Very likely\"}</span>\n        </div>\n      </div>\n    </FieldWrapper>\n  );\n}\n","import * as React from \"react\"\r\nimport { CircleIcon } from \"lucide-react\"\r\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\r\n\r\nimport { cn } from \"@/utils/index\"\r\n\r\nfunction RadioGroup({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\r\n  return (\r\n    <RadioGroupPrimitive.Root\r\n      data-slot=\"radio-group\"\r\n      className={cn(\"grid gap-3\", className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction RadioGroupItem({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\r\n  return (\r\n    <RadioGroupPrimitive.Item\r\n      data-slot=\"radio-group-item\"\r\n      className={cn(\r\n        \"aspect-square size-4 shrink-0 rounded-full border border-input text-primary shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:bg-input/30 dark:aria-invalid:ring-destructive/40\",\r\n        className\r\n      )}\r\n      {...props}\r\n    >\r\n      <RadioGroupPrimitive.Indicator\r\n        data-slot=\"radio-group-indicator\"\r\n        className=\"relative flex items-center justify-center\"\r\n      >\r\n        <CircleIcon className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-primary\" />\r\n      </RadioGroupPrimitive.Indicator>\r\n    </RadioGroupPrimitive.Item>\r\n  )\r\n}\r\n\r\nexport { RadioGroup, RadioGroupItem }\r\n","import type { LikertConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper } from \"./FieldWrapper\";\r\nimport { RadioGroup, RadioGroupItem } from \"../ui/radio-group\";\r\nimport { Label } from \"../ui/label\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport function LikertField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as LikertConfig | undefined;\r\n  // Support both field.options (standard) and config.labels (builder shorthand)\r\n  const options = (field.options?.length ? field.options : undefined)\r\n    ?? (config?.labels ?? []).map((label, i) => ({ label, value: String(i + 1) }));\r\n  const current = value as string | number | undefined;\r\n  const hasError = touched && !!error?.length;\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <RadioGroup\r\n        value={current != null ? String(current) : \"\"}\r\n        onValueChange={(val) => { onChange(val); onBlur(); }}\r\n        disabled={disabled || readonly}\r\n        className=\"flex flex-wrap gap-2\"\r\n        aria-label={field.label}\r\n        onFocus={onFocus}\r\n        {...(hasError ? { \"aria-invalid\": true } : {})}\r\n      >\r\n        {options.map((opt) => {\r\n          const optId = `${field.id}-${opt.value}`;\r\n          const isSelected = current != null && String(current) === String(opt.value);\r\n          return (\r\n            <Label\r\n              key={String(opt.value)}\r\n              htmlFor={optId}\r\n              className={cn(\r\n                \"flex items-center justify-center px-4 py-2 rounded-md border text-sm font-medium transition-colors cursor-pointer select-none\",\r\n                isSelected\r\n                  ? \"fc-option-filled\"\r\n                  : \"border-input bg-transparent text-foreground hover:bg-accent\",\r\n                (disabled || readonly) && \"cursor-not-allowed opacity-50\",\r\n              )}\r\n            >\r\n              <RadioGroupItem value={String(opt.value)} id={optId} className=\"sr-only\" />\r\n              <span>{opt.label}</span>\r\n            </Label>\r\n          );\r\n        })}\r\n      </RadioGroup>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import type { OpinionScaleConfig } from \"@squaredr/fieldcraft-core\";\nimport type { FieldProps } from \"../../registry/field-registry\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { Button } from \"../ui/button\";\nimport { cn } from \"../../utils/cn\";\n\nexport function OpinionScaleField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\n  const config = field.config as OpinionScaleConfig | undefined;\n  const min = config?.min ?? 1;\n  const max = config?.max ?? 5;\n  const current = value as number | undefined;\n\n  const step = config?.step && config.step > 0 ? config.step : 1;\n  const steps: number[] = [];\n  for (let n = min; n <= max; n += step) steps.push(n);\n\n  return (\n    <FieldWrapper field={field} error={error} touched={touched}>\n      <div className=\"flex flex-col gap-2\" role=\"radiogroup\" aria-label={field.label} onFocus={onFocus}>\n        <div className=\"flex gap-1\">\n          {steps.map((n) => {\n            const isSelected = current === n;\n            return (\n              <Button\n                key={n}\n                type=\"button\"\n                role=\"radio\"\n                aria-checked={isSelected}\n                variant={isSelected ? \"default\" : \"outline\"}\n                size=\"sm\"\n                className={cn(\n                  \"flex-1 h-10 px-0 text-xs font-semibold\",\n                  isSelected && \"shadow-sm ring-1 ring-primary\",\n                )}\n                disabled={disabled || readonly}\n                onClick={() => { onChange(n); onBlur(); }}\n              >\n                {n}\n              </Button>\n            );\n          })}\n        </div>\n        {(config?.minLabel || config?.maxLabel) && (\n          <div className=\"flex justify-between text-xs text-muted-foreground\">\n            <span>{config?.minLabel ?? \"\"}</span>\n            <span>{config?.maxLabel ?? \"\"}</span>\n          </div>\n        )}\n      </div>\n    </FieldWrapper>\n  );\n}\n","import { useState } from \"react\";\r\nimport type { SingleSelectConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper } from \"./FieldWrapper\";\r\nimport { RadioGroup, RadioGroupItem } from \"../ui/radio-group\";\r\nimport { Label } from \"../ui/label\";\r\nimport { Input } from \"../ui/input\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nconst OTHER_VALUE = \"__fc_other__\";\r\n\r\nconst LAYOUT_CLASSES: Record<string, string> = {\r\n  vertical: \"flex flex-col gap-2\",\r\n  horizontal: \"flex flex-wrap gap-2\",\r\n  grid: \"grid grid-cols-2 gap-2\",\r\n};\r\n\r\nexport function SingleSelectField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as SingleSelectConfig | undefined;\r\n  const options = field.options ?? [];\r\n  const current = value !== undefined && value !== null && value !== \"\" ? String(value) : undefined;\r\n  const hasError = touched && !!error?.length;\r\n  const layout = config?.layout ?? \"vertical\";\r\n  const allowOther = config?.allowOther === true;\r\n  const otherLabel = config?.otherLabel ?? \"Other\";\r\n\r\n  const isOtherSelected = allowOther && current != null && !options.some((opt) => String(opt.value) === current);\r\n  const [otherText, setOtherText] = useState(isOtherSelected ? current : \"\");\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <RadioGroup\r\n        value={isOtherSelected ? OTHER_VALUE : current}\r\n        onValueChange={(val) => {\r\n          if (val === OTHER_VALUE) {\r\n            onChange(otherText || \"\");\r\n          } else {\r\n            onChange(val);\r\n            onBlur();\r\n          }\r\n        }}\r\n        disabled={disabled || readonly}\r\n        className={LAYOUT_CLASSES[layout] ?? LAYOUT_CLASSES.vertical}\r\n        aria-label={field.label}\r\n        onFocus={onFocus}\r\n        {...(hasError ? { \"aria-invalid\": true } : {})}\r\n      >\r\n        {options.map((opt) => {\r\n          const optId = `${field.id}-${opt.value}`;\r\n          const isSelected = current === String(opt.value);\r\n          return (\r\n            <Label\r\n              key={String(opt.value)}\r\n              htmlFor={optId}\r\n              className={cn(\r\n                \"flex items-center gap-3 rounded-lg border px-4 py-3 cursor-pointer transition-colors font-normal\",\r\n                isSelected\r\n                  ? \"fc-option-active\"\r\n                  : \"border-input hover:bg-accent\",\r\n                disabled && \"cursor-not-allowed opacity-50\",\r\n              )}\r\n            >\r\n              <RadioGroupItem value={String(opt.value)} id={optId} />\r\n              <div className=\"flex flex-col gap-0.5\">\r\n                <div className=\"flex items-center gap-2\">\r\n                  {opt.icon && <span>{opt.icon}</span>}\r\n                  <span className=\"text-sm font-medium\">{opt.label}</span>\r\n                </div>\r\n                {opt.helpText && (\r\n                  <span className=\"text-xs text-muted-foreground\">{opt.helpText}</span>\r\n                )}\r\n              </div>\r\n            </Label>\r\n          );\r\n        })}\r\n        {allowOther && (\r\n          <Label\r\n            htmlFor={`${field.id}-other`}\r\n            className={cn(\r\n              \"flex items-center gap-3 rounded-lg border px-4 py-3 cursor-pointer transition-colors font-normal\",\r\n              isOtherSelected\r\n                ? \"fc-option-active\"\r\n                : \"border-input hover:bg-accent\",\r\n              disabled && \"cursor-not-allowed opacity-50\",\r\n            )}\r\n          >\r\n            <RadioGroupItem value={OTHER_VALUE} id={`${field.id}-other`} />\r\n            <span className=\"text-sm font-medium\">{otherLabel}</span>\r\n            {isOtherSelected && (\r\n              <Input\r\n                type=\"text\"\r\n                value={otherText}\r\n                placeholder=\"Please specify...\"\r\n                className=\"ml-2 h-7 text-sm flex-1\"\r\n                disabled={disabled || readonly}\r\n                onClick={(e) => e.stopPropagation()}\r\n                onChange={(e) => {\r\n                  setOtherText(e.target.value);\r\n                  onChange(e.target.value);\r\n                }}\r\n                onBlur={onBlur}\r\n                autoFocus\r\n              />\r\n            )}\r\n          </Label>\r\n        )}\r\n      </RadioGroup>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import * as React from \"react\"\r\nimport { CheckIcon } from \"lucide-react\"\r\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\r\n\r\nimport { cn } from \"@/utils/index\"\r\n\r\nfunction Checkbox({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\r\n  return (\r\n    <CheckboxPrimitive.Root\r\n      data-slot=\"checkbox\"\r\n      className={cn(\r\n        \"peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:data-[state=checked]:bg-primary\",\r\n        className\r\n      )}\r\n      {...props}\r\n    >\r\n      <CheckboxPrimitive.Indicator\r\n        data-slot=\"checkbox-indicator\"\r\n        className=\"grid place-content-center text-current transition-none\"\r\n      >\r\n        <CheckIcon className=\"size-3.5\" />\r\n      </CheckboxPrimitive.Indicator>\r\n    </CheckboxPrimitive.Root>\r\n  )\r\n}\r\n\r\nexport { Checkbox }\r\n","import { useState } from \"react\";\r\nimport type { MultiSelectConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper } from \"./FieldWrapper\";\r\nimport { Checkbox } from \"../ui/checkbox\";\r\nimport { Label } from \"../ui/label\";\r\nimport { Input } from \"../ui/input\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nconst LAYOUT_CLASSES: Record<string, string> = {\r\n  vertical: \"flex flex-col gap-2\",\r\n  horizontal: \"flex flex-wrap gap-2\",\r\n  grid: \"grid grid-cols-2 gap-2\",\r\n};\r\n\r\nexport function MultiSelectField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as MultiSelectConfig | undefined;\r\n  const options = field.options ?? [];\r\n  const selected = (value as (string | number | boolean)[]) ?? [];\r\n  const maxSelections = config?.maxSelections;\r\n  const layout = config?.layout ?? \"vertical\";\r\n  const allowOther = config?.allowOther === true;\r\n  const otherLabel = config?.otherLabel ?? \"Other\";\r\n\r\n  const optionValues = new Set(options.map((o) => String(o.value)));\r\n  const otherValues = selected.filter((v) => !optionValues.has(String(v)));\r\n  const hasOtherSelected = otherValues.length > 0;\r\n  const [otherText, setOtherText] = useState(hasOtherSelected ? String(otherValues[0]) : \"\");\r\n\r\n  const toggle = (optValue: string | number | boolean, exclusive?: boolean) => {\r\n    let next: (string | number | boolean)[];\r\n    if (exclusive) {\r\n      next = selected.includes(optValue) ? [] : [optValue];\r\n    } else if (selected.includes(optValue)) {\r\n      next = selected.filter((v) => v !== optValue);\r\n    } else {\r\n      const nonExclusive = selected.filter(\r\n        (v) => !options.find((o) => o.value === v)?.exclusive,\r\n      );\r\n      if (maxSelections && nonExclusive.length >= maxSelections) return;\r\n      next = [...nonExclusive, optValue];\r\n    }\r\n    onChange(next);\r\n    onBlur();\r\n  };\r\n\r\n  const toggleOther = () => {\r\n    if (hasOtherSelected) {\r\n      onChange(selected.filter((v) => optionValues.has(String(v))));\r\n    } else {\r\n      const text = otherText || \"\";\r\n      if (maxSelections && selected.length >= maxSelections) return;\r\n      onChange([...selected, text]);\r\n    }\r\n    onBlur();\r\n  };\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <div className={LAYOUT_CLASSES[layout] ?? LAYOUT_CLASSES.vertical} role=\"group\" aria-label={field.label} onFocus={onFocus}>\r\n        {options.map((opt) => {\r\n          const checked = selected.includes(opt.value);\r\n          const optId = `${field.id}-${opt.value}`;\r\n          return (\r\n            <Label\r\n              key={String(opt.value)}\r\n              htmlFor={optId}\r\n              className={cn(\r\n                \"flex items-center gap-3 rounded-lg border px-4 py-3 cursor-pointer transition-colors font-normal\",\r\n                checked\r\n                  ? \"fc-option-active\"\r\n                  : \"border-input hover:bg-accent\",\r\n                disabled && \"cursor-not-allowed opacity-50\",\r\n              )}\r\n            >\r\n              <Checkbox\r\n                id={optId}\r\n                checked={checked}\r\n                disabled={disabled || readonly}\r\n                onCheckedChange={() => toggle(opt.value, opt.exclusive)}\r\n              />\r\n              <div className=\"flex flex-col gap-0.5\">\r\n                <div className=\"flex items-center gap-2\">\r\n                  {opt.icon && <span>{opt.icon}</span>}\r\n                  <span className=\"text-sm font-medium\">{opt.label}</span>\r\n                </div>\r\n                {opt.helpText && (\r\n                  <span className=\"text-xs text-muted-foreground\">{opt.helpText}</span>\r\n                )}\r\n              </div>\r\n            </Label>\r\n          );\r\n        })}\r\n        {allowOther && (\r\n          <Label\r\n            htmlFor={`${field.id}-other`}\r\n            className={cn(\r\n              \"flex items-center gap-3 rounded-lg border px-4 py-3 cursor-pointer transition-colors font-normal\",\r\n              hasOtherSelected\r\n                ? \"fc-option-active\"\r\n                : \"border-input hover:bg-accent\",\r\n              disabled && \"cursor-not-allowed opacity-50\",\r\n            )}\r\n          >\r\n            <Checkbox\r\n              id={`${field.id}-other`}\r\n              checked={hasOtherSelected}\r\n              disabled={disabled || readonly}\r\n              onCheckedChange={toggleOther}\r\n            />\r\n            <span className=\"text-sm font-medium\">{otherLabel}</span>\r\n            {hasOtherSelected && (\r\n              <Input\r\n                type=\"text\"\r\n                value={otherText}\r\n                placeholder=\"Please specify...\"\r\n                className=\"ml-2 h-7 text-sm flex-1\"\r\n                disabled={disabled || readonly}\r\n                onClick={(e) => e.stopPropagation()}\r\n                onChange={(e) => {\r\n                  setOtherText(e.target.value);\r\n                  const withoutOld = selected.filter((v) => optionValues.has(String(v)));\r\n                  onChange([...withoutOld, e.target.value]);\r\n                }}\r\n                onBlur={onBlur}\r\n                autoFocus\r\n              />\r\n            )}\r\n          </Label>\r\n        )}\r\n      </div>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import * as React from \"react\"\r\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\r\n\r\nimport { cn } from \"../../utils/cn\"\r\n\r\nfunction Popover({\r\n  ...props\r\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\r\n  return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\r\n}\r\n\r\nfunction PopoverTrigger({\r\n  ...props\r\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\r\n  return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\r\n}\r\n\r\nfunction PopoverContent({\r\n  className,\r\n  align = \"center\",\r\n  sideOffset = 4,\r\n  ...props\r\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\r\n  return (\r\n    <PopoverPrimitive.Portal>\r\n      <PopoverPrimitive.Content\r\n        data-slot=\"popover-content\"\r\n        align={align}\r\n        sideOffset={sideOffset}\r\n        className={cn(\r\n          \"z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\r\n          className\r\n        )}\r\n        {...props}\r\n      />\r\n    </PopoverPrimitive.Portal>\r\n  )\r\n}\r\n\r\nfunction PopoverAnchor({\r\n  ...props\r\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\r\n  return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\r\n}\r\n\r\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"popover-header\"\r\n      className={cn(\"flex flex-col gap-1 text-sm\", className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\"h2\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"popover-title\"\r\n      className={cn(\"font-medium\", className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction PopoverDescription({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<\"p\">) {\r\n  return (\r\n    <p\r\n      data-slot=\"popover-description\"\r\n      className={cn(\"text-muted-foreground\", className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nexport {\r\n  Popover,\r\n  PopoverTrigger,\r\n  PopoverContent,\r\n  PopoverAnchor,\r\n  PopoverHeader,\r\n  PopoverTitle,\r\n  PopoverDescription,\r\n}\r\n","import { useState, useMemo } from \"react\";\r\nimport type { DropdownConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper, fieldAria } from \"./FieldWrapper\";\r\nimport {\r\n  Select,\r\n  SelectContent,\r\n  SelectItem,\r\n  SelectTrigger,\r\n  SelectValue,\r\n} from \"../ui/select\";\r\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\r\nimport { Button } from \"../ui/button\";\r\nimport { Checkbox } from \"../ui/checkbox\";\r\nimport { Input } from \"../ui/input\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nconst OTHER_VALUE = \"__fc_other__\";\r\n\r\nexport function DropdownField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as DropdownConfig | undefined;\r\n  const options = field.options ?? [];\r\n  const hasError = !!(touched && error?.length);\r\n  const aria = fieldAria(field, hasError);\r\n  const searchable = config?.searchable === true;\r\n  const allowOther = config?.allowOther === true;\r\n  const multiple = config?.multiple === true;\r\n\r\n  if (multiple) {\r\n    return (\r\n      <MultiDropdown\r\n        field={field}\r\n        options={options}\r\n        value={value}\r\n        aria={aria}\r\n        error={error}\r\n        touched={touched}\r\n        disabled={disabled}\r\n        readonly={readonly}\r\n        onChange={onChange}\r\n        onBlur={onBlur}\r\n        onFocus={onFocus}\r\n      />\r\n    );\r\n  }\r\n\r\n  if (searchable) {\r\n    return (\r\n      <SearchableDropdown\r\n        field={field}\r\n        options={options}\r\n        value={value as string | undefined}\r\n        aria={aria}\r\n        hasError={hasError}\r\n        error={error}\r\n        touched={touched}\r\n        disabled={disabled}\r\n        readonly={readonly}\r\n        allowOther={allowOther}\r\n        onChange={onChange}\r\n        onBlur={onBlur}\r\n        onFocus={onFocus}\r\n      />\r\n    );\r\n  }\r\n\r\n  // Standard non-searchable Select\r\n  const current = value !== undefined && value !== null && value !== \"\" ? String(value) : undefined;\r\n  const isOtherSelected = allowOther && current != null && !options.some((o) => String(o.value) === current);\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <Select\r\n        value={isOtherSelected ? OTHER_VALUE : current}\r\n        onValueChange={(val) => {\r\n          if (val === OTHER_VALUE) {\r\n            onChange(\"\");\r\n          } else {\r\n            onChange(val);\r\n          }\r\n        }}\r\n        disabled={disabled || readonly}\r\n      >\r\n        <SelectTrigger\r\n          id={aria.id}\r\n          aria-describedby={aria[\"aria-describedby\"]}\r\n          aria-invalid={aria[\"aria-invalid\"]}\r\n          aria-required={aria[\"aria-required\"]}\r\n          className=\"w-full\"\r\n          onBlur={onBlur}\r\n          onFocus={onFocus}\r\n        >\r\n          <SelectValue placeholder={field.placeholder ?? \"Select...\"} />\r\n        </SelectTrigger>\r\n        <SelectContent>\r\n          {options.map((opt) => (\r\n            <SelectItem key={String(opt.value)} value={String(opt.value)}>\r\n              {opt.label}\r\n            </SelectItem>\r\n          ))}\r\n          {allowOther && (\r\n            <SelectItem value={OTHER_VALUE}>Other...</SelectItem>\r\n          )}\r\n        </SelectContent>\r\n      </Select>\r\n      {isOtherSelected && (\r\n        <Input\r\n          type=\"text\"\r\n          value={current ?? \"\"}\r\n          placeholder=\"Please specify...\"\r\n          className=\"mt-2\"\r\n          disabled={disabled || readonly}\r\n          onChange={(e) => onChange(e.target.value)}\r\n          onBlur={onBlur}\r\n          autoFocus\r\n        />\r\n      )}\r\n    </FieldWrapper>\r\n  );\r\n}\r\n\r\nfunction MultiDropdown({\r\n  field,\r\n  options,\r\n  value,\r\n  aria,\r\n  error,\r\n  touched,\r\n  disabled,\r\n  readonly,\r\n  onChange,\r\n  onBlur,\r\n  onFocus,\r\n}: {\r\n  field: FieldProps[\"field\"];\r\n  options: NonNullable<FieldProps[\"field\"][\"options\"]>;\r\n  value: unknown;\r\n  aria: ReturnType<typeof fieldAria>;\r\n  error: FieldProps[\"error\"];\r\n  touched: FieldProps[\"touched\"];\r\n  disabled: boolean;\r\n  readonly: boolean;\r\n  onChange: FieldProps[\"onChange\"];\r\n  onBlur: FieldProps[\"onBlur\"];\r\n  onFocus: FieldProps[\"onFocus\"];\r\n}) {\r\n  const [open, setOpen] = useState(false);\r\n  const [search, setSearch] = useState(\"\");\r\n  const selected = Array.isArray(value) ? (value as string[]) : [];\r\n\r\n  const filtered = useMemo(() => {\r\n    if (!search) return options;\r\n    const q = search.toLowerCase();\r\n    return options.filter((o) => o.label.toLowerCase().includes(q));\r\n  }, [options, search]);\r\n\r\n  const toggle = (optValue: string) => {\r\n    const next = selected.includes(optValue)\r\n      ? selected.filter((v) => v !== optValue)\r\n      : [...selected, optValue];\r\n    onChange(next);\r\n  };\r\n\r\n  const selectedLabels = selected\r\n    .map((v) => options.find((o) => String(o.value) === v)?.label)\r\n    .filter(Boolean);\r\n\r\n  const summary = selectedLabels.length === 0\r\n    ? (field.placeholder ?? \"Select...\")\r\n    : selectedLabels.length <= 2\r\n      ? selectedLabels.join(\", \")\r\n      : `${selectedLabels.length} selected`;\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <Popover open={open} onOpenChange={(o) => { setOpen(o); if (!o) { setSearch(\"\"); onBlur(); } }}>\r\n        <PopoverTrigger asChild>\r\n          <Button\r\n            id={aria.id}\r\n            variant=\"outline\"\r\n            role=\"combobox\"\r\n            aria-expanded={open}\r\n            aria-describedby={aria[\"aria-describedby\"]}\r\n            aria-invalid={aria[\"aria-invalid\"]}\r\n            aria-required={aria[\"aria-required\"]}\r\n            disabled={disabled || readonly}\r\n            className={cn(\"w-full justify-between font-normal\", selected.length === 0 && \"text-muted-foreground\")}\r\n            onFocus={onFocus}\r\n          >\r\n            {summary}\r\n            <svg className=\"ml-2 size-4 shrink-0 opacity-50\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2}>\r\n              <path d=\"m7 15 5 5 5-5M7 9l5-5 5 5\" />\r\n            </svg>\r\n          </Button>\r\n        </PopoverTrigger>\r\n        <PopoverContent className=\"w-(--radix-popover-trigger-width) p-0\" align=\"start\">\r\n          <div className=\"p-2\">\r\n            <Input\r\n              type=\"text\"\r\n              placeholder=\"Search...\"\r\n              value={search}\r\n              onChange={(e) => setSearch(e.target.value)}\r\n              className=\"h-8 text-sm\"\r\n              autoFocus\r\n            />\r\n          </div>\r\n          <div className=\"max-h-60 overflow-y-auto\">\r\n            {filtered.length === 0 && (\r\n              <p className=\"p-2 text-sm text-muted-foreground text-center\">No results.</p>\r\n            )}\r\n            {filtered.map((opt) => {\r\n              const optVal = String(opt.value);\r\n              const isChecked = selected.includes(optVal);\r\n              return (\r\n                <button\r\n                  key={optVal}\r\n                  type=\"button\"\r\n                  className=\"w-full px-3 py-2 text-sm text-left hover:bg-accent transition-colors flex items-center gap-2\"\r\n                  onClick={() => toggle(optVal)}\r\n                >\r\n                  <Checkbox checked={isChecked} tabIndex={-1} className=\"pointer-events-none\" />\r\n                  {opt.label}\r\n                </button>\r\n              );\r\n            })}\r\n          </div>\r\n        </PopoverContent>\r\n      </Popover>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n\r\nfunction SearchableDropdown({\r\n  field,\r\n  options,\r\n  value,\r\n  aria,\r\n  hasError: _hasError,\r\n  error,\r\n  touched,\r\n  disabled,\r\n  readonly,\r\n  allowOther,\r\n  onChange,\r\n  onBlur,\r\n  onFocus,\r\n}: {\r\n  field: FieldProps[\"field\"];\r\n  options: NonNullable<FieldProps[\"field\"][\"options\"]>;\r\n  value: string | undefined;\r\n  aria: ReturnType<typeof fieldAria>;\r\n  hasError: boolean;\r\n  error: FieldProps[\"error\"];\r\n  touched: FieldProps[\"touched\"];\r\n  disabled: boolean;\r\n  readonly: boolean;\r\n  allowOther: boolean;\r\n  onChange: FieldProps[\"onChange\"];\r\n  onBlur: FieldProps[\"onBlur\"];\r\n  onFocus: FieldProps[\"onFocus\"];\r\n}) {\r\n  const [open, setOpen] = useState(false);\r\n  const [search, setSearch] = useState(\"\");\r\n\r\n  const selectedLabel = options.find((o) => String(o.value) === value)?.label;\r\n  const isOtherSelected = allowOther && value != null && !options.some((o) => String(o.value) === value);\r\n\r\n  const filtered = useMemo(() => {\r\n    if (!search) return options;\r\n    const q = search.toLowerCase();\r\n    return options.filter((o) => o.label.toLowerCase().includes(q));\r\n  }, [options, search]);\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <Popover open={open} onOpenChange={setOpen}>\r\n        <PopoverTrigger asChild>\r\n          <Button\r\n            id={aria.id}\r\n            variant=\"outline\"\r\n            role=\"combobox\"\r\n            aria-expanded={open}\r\n            aria-describedby={aria[\"aria-describedby\"]}\r\n            aria-invalid={aria[\"aria-invalid\"]}\r\n            aria-required={aria[\"aria-required\"]}\r\n            disabled={disabled || readonly}\r\n            className={cn(\"w-full justify-between font-normal\", !value && \"text-muted-foreground\")}\r\n            onBlur={onBlur}\r\n            onFocus={onFocus}\r\n          >\r\n            {isOtherSelected ? value : (selectedLabel ?? field.placeholder ?? \"Select...\")}\r\n            <svg className=\"ml-2 size-4 shrink-0 opacity-50\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2}>\r\n              <path d=\"m7 15 5 5 5-5M7 9l5-5 5 5\" />\r\n            </svg>\r\n          </Button>\r\n        </PopoverTrigger>\r\n        <PopoverContent className=\"w-(--radix-popover-trigger-width) p-0\" align=\"start\">\r\n          <div className=\"p-2\">\r\n            <Input\r\n              type=\"text\"\r\n              placeholder=\"Search...\"\r\n              value={search}\r\n              onChange={(e) => setSearch(e.target.value)}\r\n              className=\"h-8 text-sm\"\r\n              autoFocus\r\n            />\r\n          </div>\r\n          <div className=\"max-h-60 overflow-y-auto\">\r\n            {filtered.length === 0 && !allowOther && (\r\n              <p className=\"p-2 text-sm text-muted-foreground text-center\">No results.</p>\r\n            )}\r\n            {filtered.map((opt) => {\r\n              const isSelected = String(opt.value) === value;\r\n              return (\r\n                <button\r\n                  key={String(opt.value)}\r\n                  type=\"button\"\r\n                  className={cn(\r\n                    \"w-full px-3 py-2 text-sm text-left hover:bg-accent transition-colors flex items-center gap-2\",\r\n                    isSelected && \"bg-accent font-medium\",\r\n                  )}\r\n                  onClick={() => {\r\n                    onChange(String(opt.value));\r\n                    setOpen(false);\r\n                    setSearch(\"\");\r\n                    onBlur();\r\n                  }}\r\n                >\r\n                  <span className={cn(\"size-4 shrink-0\", isSelected ? \"opacity-100\" : \"opacity-0\")}>✓</span>\r\n                  {opt.label}\r\n                </button>\r\n              );\r\n            })}\r\n            {allowOther && (\r\n              <button\r\n                type=\"button\"\r\n                className={cn(\r\n                  \"w-full px-3 py-2 text-sm text-left hover:bg-accent transition-colors flex items-center gap-2 border-t\",\r\n                  isOtherSelected && \"bg-accent font-medium\",\r\n                )}\r\n                onClick={() => {\r\n                  onChange(search || \"\");\r\n                  setOpen(false);\r\n                  setSearch(\"\");\r\n                }}\r\n              >\r\n                <span className={cn(\"size-4 shrink-0\", isOtherSelected ? \"opacity-100\" : \"opacity-0\")}>✓</span>\r\n                {search ? `Use \"${search}\"` : \"Other...\"}\r\n              </button>\r\n            )}\r\n          </div>\r\n        </PopoverContent>\r\n      </Popover>\r\n      {isOtherSelected && (\r\n        <Input\r\n          type=\"text\"\r\n          value={value ?? \"\"}\r\n          placeholder=\"Please specify...\"\r\n          className=\"mt-2\"\r\n          disabled={disabled || readonly}\r\n          onChange={(e) => onChange(e.target.value)}\r\n          onBlur={onBlur}\r\n          autoFocus\r\n        />\r\n      )}\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import * as React from \"react\"\r\nimport { Switch as SwitchPrimitive } from \"radix-ui\"\r\n\r\nimport { cn } from \"@/utils/index\"\r\n\r\nfunction Switch({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\r\n  return (\r\n    <SwitchPrimitive.Root\r\n      data-slot=\"switch\"\r\n      className={cn(\r\n        \"peer inline-flex h-5 w-9 shrink-0 items-center rounded-full border-2 border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80\",\r\n        className\r\n      )}\r\n      {...props}\r\n    >\r\n      <SwitchPrimitive.Thumb\r\n        data-slot=\"switch-thumb\"\r\n        className=\"pointer-events-none block size-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\"\r\n      />\r\n    </SwitchPrimitive.Root>\r\n  )\r\n}\r\n\r\nexport { Switch }\r\n","import type { BooleanConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper } from \"./FieldWrapper\";\r\nimport { Switch } from \"../ui/switch\";\r\nimport { Checkbox } from \"../ui/checkbox\";\r\nimport { Label } from \"../ui/label\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport function BooleanField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as BooleanConfig | undefined;\r\n  const style = config?.style ?? \"radio\";\r\n  const current = value as boolean | undefined;\r\n  // Resolve labels: field.options takes precedence (backward compat), then config, then defaults\r\n  const trueOpt = field.options?.find((o) => o.value === true);\r\n  const falseOpt = field.options?.find((o) => o.value === false);\r\n  const trueLabel = trueOpt?.label ?? config?.trueLabel ?? \"Yes\";\r\n  const falseLabel = falseOpt?.label ?? config?.falseLabel ?? \"No\";\r\n\r\n  if (style === \"toggle\") {\r\n    return (\r\n      <FieldWrapper field={field} error={error} touched={touched}>\r\n        <div className=\"flex items-center gap-3\">\r\n          <Switch\r\n            id={field.id}\r\n            checked={current === true}\r\n            onCheckedChange={(checked) => { onChange(checked); onBlur(); }}\r\n            disabled={disabled || readonly}\r\n            onFocus={onFocus}\r\n          />\r\n          <Label htmlFor={field.id} className=\"text-sm cursor-pointer\">\r\n            {current ? trueLabel : falseLabel}\r\n          </Label>\r\n        </div>\r\n      </FieldWrapper>\r\n    );\r\n  }\r\n\r\n  if (style === \"checkbox\") {\r\n    return (\r\n      <FieldWrapper field={field} error={error} touched={touched}>\r\n        <div className=\"flex items-center gap-2\">\r\n          <Checkbox\r\n            id={field.id}\r\n            checked={current === true}\r\n            onCheckedChange={(checked) => { onChange(checked === true); onBlur(); }}\r\n            disabled={disabled || readonly}\r\n            onFocus={onFocus}\r\n          />\r\n          <Label htmlFor={field.id} className=\"text-sm cursor-pointer\">\r\n            {trueLabel}\r\n          </Label>\r\n        </div>\r\n      </FieldWrapper>\r\n    );\r\n  }\r\n\r\n  // Default: radio-style button pair\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <div className=\"flex gap-2\" role=\"radiogroup\" aria-label={field.label} onFocus={onFocus}>\r\n        <button\r\n          type=\"button\"\r\n          role=\"radio\"\r\n          aria-checked={current === true}\r\n          className={cn(\r\n            \"flex-1 h-10 rounded-md border text-sm font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50\",\r\n            current === true\r\n              ? \"fc-option-active\"\r\n              : \"border-input bg-transparent text-foreground hover:bg-accent\",\r\n          )}\r\n          disabled={disabled || readonly}\r\n          onClick={() => { onChange(true); onBlur(); }}\r\n        >\r\n          {trueLabel}\r\n        </button>\r\n        <button\r\n          type=\"button\"\r\n          role=\"radio\"\r\n          aria-checked={current === false}\r\n          className={cn(\r\n            \"flex-1 h-10 rounded-md border text-sm font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50\",\r\n            current === false\r\n              ? \"fc-option-active\"\r\n              : \"border-input bg-transparent text-foreground hover:bg-accent\",\r\n          )}\r\n          disabled={disabled || readonly}\r\n          onClick={() => { onChange(false); onBlur(); }}\r\n        >\r\n          {falseLabel}\r\n        </button>\r\n      </div>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import { useMemo } from \"react\";\r\nimport type { CountrySelectConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper, fieldAria } from \"./FieldWrapper\";\r\nimport {\r\n  Select,\r\n  SelectContent,\r\n  SelectItem,\r\n  SelectTrigger,\r\n  SelectValue,\r\n} from \"../ui/select\";\r\nimport { COUNTRIES } from \"@squaredr/fieldcraft-core\";\r\n\r\n/** Convert a 2-letter country code to its flag emoji (regional indicator symbols). */\r\nfunction codeToFlag(code: string): string {\r\n  return String.fromCodePoint(\r\n    ...[...code.toUpperCase()].map((c) => 0x1f1e6 - 65 + c.charCodeAt(0)),\r\n  );\r\n}\r\n\r\nexport function CountrySelectField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as CountrySelectConfig | undefined;\r\n  const hasError = !!(touched && error?.length);\r\n  const options = field.options;\r\n  const aria = fieldAria(field, hasError);\r\n  const showFlags = config?.showFlags !== false;\r\n\r\n  const countries = useMemo(() => {\r\n    let list = options\r\n      ? options.map((o) => ({ code: String(o.value), name: o.label }))\r\n      : COUNTRIES;\r\n\r\n    // Exclude countries\r\n    const exclude = config?.excludeCountries;\r\n    if (exclude && exclude.length > 0) {\r\n      const excludeSet = new Set(exclude.map((c) => c.toUpperCase()));\r\n      list = list.filter((c) => !excludeSet.has(c.code.toUpperCase()));\r\n    }\r\n\r\n    // Priority countries\r\n    const priority = config?.priorityCountries;\r\n    if (priority && priority.length > 0) {\r\n      const prioritySet = new Set(priority.map((c) => c.toUpperCase()));\r\n      const priorityItems = list.filter((c) => prioritySet.has(c.code.toUpperCase()));\r\n      const rest = list.filter((c) => !prioritySet.has(c.code.toUpperCase()));\r\n      return { items: [...priorityItems, ...rest], separatorIndex: priorityItems.length };\r\n    }\r\n\r\n    return { items: list, separatorIndex: -1 };\r\n  }, [options, config?.excludeCountries, config?.priorityCountries]);\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <Select\r\n        value={(value as string) || undefined}\r\n        onValueChange={(val) => onChange(val)}\r\n        disabled={disabled || readonly}\r\n      >\r\n        <SelectTrigger\r\n          id={aria.id}\r\n          aria-describedby={aria[\"aria-describedby\"]}\r\n          aria-invalid={aria[\"aria-invalid\"]}\r\n          aria-required={aria[\"aria-required\"]}\r\n          className=\"w-full\"\r\n          onBlur={onBlur}\r\n          onFocus={onFocus}\r\n        >\r\n          <SelectValue placeholder={field.placeholder ?? \"Select country...\"} />\r\n        </SelectTrigger>\r\n        <SelectContent>\r\n          {countries.items.map((c, i) => (\r\n            <div key={c.code}>\r\n              {i === countries.separatorIndex && countries.separatorIndex > 0 && (\r\n                <div className=\"my-1 h-px bg-border\" role=\"separator\" />\r\n              )}\r\n              <SelectItem value={c.code}>\r\n                {showFlags ? `${codeToFlag(c.code)} ${c.name}` : c.name}\r\n              </SelectItem>\r\n            </div>\r\n          ))}\r\n        </SelectContent>\r\n      </Select>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import { useState } from \"react\";\nimport type { FieldProps } from \"../../registry/field-registry\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { Button } from \"../ui/button\";\nimport { cn } from \"../../utils/cn\";\n\nexport function RankingField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\n  const options = field.options ?? [];\n  const ranked = (value as (string | number | boolean)[]) ?? options.map((o) => o.value);\n  const [dragIndex, setDragIndex] = useState<number | null>(null);\n\n  const moveItem = (from: number, to: number) => {\n    const next = [...ranked];\n    const [item] = next.splice(from, 1);\n    next.splice(to, 0, item);\n    onChange(next);\n    onBlur();\n  };\n\n  return (\n    <FieldWrapper field={field} error={error} touched={touched}>\n      <ol className=\"flex flex-col gap-1.5 list-none p-0 m-0\" role=\"list\" aria-label={`Rank ${field.label}`}>\n        {ranked.map((val, index) => {\n          const opt = options.find((o) => o.value === val);\n          return (\n            <li\n              key={String(val)}\n              className={cn(\n                \"flex items-center gap-3 rounded-lg border border-input px-3.5 py-2 bg-card text-card-foreground transition-shadow shadow-xs\",\n                dragIndex === index && \"shadow-md opacity-70\",\n                (disabled || readonly) && \"opacity-50\",\n              )}\n              draggable={!disabled && !readonly}\n              onDragStart={() => setDragIndex(index)}\n              onDragOver={(e) => e.preventDefault()}\n              onDrop={() => {\n                if (dragIndex !== null) moveItem(dragIndex, index);\n                setDragIndex(null);\n              }}\n              onDragEnd={() => setDragIndex(null)}\n            >\n              <span className=\"text-muted-foreground cursor-grab select-none text-xs\" aria-hidden=\"true\">\n                &#x2630;\n              </span>\n              <span className=\"text-xs font-semibold text-muted-foreground w-5\">{index + 1}.</span>\n              <span className=\"flex-1 text-sm font-medium\">{opt?.label ?? String(val)}</span>\n              <div className=\"flex flex-col gap-0.5\">\n                <Button\n                  type=\"button\"\n                  variant=\"ghost\"\n                  size=\"icon-xs\"\n                  className=\"h-5 w-5 text-muted-foreground hover:text-foreground\"\n                  disabled={disabled || readonly || index === 0}\n                  onClick={() => moveItem(index, index - 1)}\n                  onFocus={onFocus}\n                  aria-label={`Move ${opt?.label ?? val} up`}\n                >\n                  &#x25B2;\n                </Button>\n                <Button\n                  type=\"button\"\n                  variant=\"ghost\"\n                  size=\"icon-xs\"\n                  className=\"h-5 w-5 text-muted-foreground hover:text-foreground\"\n                  disabled={disabled || readonly || index === ranked.length - 1}\n                  onClick={() => moveItem(index, index + 1)}\n                  onFocus={onFocus}\n                  aria-label={`Move ${opt?.label ?? val} down`}\n                >\n                  &#x25BC;\n                </Button>\n              </div>\n            </li>\n          );\n        })}\n      </ol>\n    </FieldWrapper>\n  );\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 * **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 *\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) {\n  const argStr = Object.prototype.toString.call(argument);\n\n  // Clone the date\n  if (\n    argument instanceof Date ||\n    (typeof argument === \"object\" && argStr === \"[object Date]\")\n  ) {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new argument.constructor(+argument);\n  } else if (\n    typeof argument === \"number\" ||\n    argStr === \"[object Number]\" ||\n    typeof argument === \"string\" ||\n    argStr === \"[object String]\"\n  ) {\n    // TODO: Can we get rid of as?\n    return new Date(argument);\n  } else {\n    // TODO: Can we get rid of as?\n    return new Date(NaN);\n  }\n}\n\n// Fallback for modularized imports:\nexport default toDate;\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 * @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 '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 contrustor 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 (date instanceof Date) {\n    return new date.constructor(value);\n  } else {\n    return new Date(value);\n  }\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\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 *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\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) {\n  const _date = toDate(date);\n  if (isNaN(amount)) return constructFrom(date, NaN);\n  if (!amount) {\n    // If 0 days, no-op to avoid changing times in the hour before end of DST\n    return _date;\n  }\n  _date.setDate(_date.getDate() + amount);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\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 occures every 4 years, except for years that are divisable by 100 and not divisable 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","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}\n","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\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 *\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);\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.mjs\";\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 *\n * @param date - The original date\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) {\n  return startOfWeek(date, { weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\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 * @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 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) {\n  const _date = toDate(date);\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.mjs\";\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 *\n * @param date - The original date\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) {\n  const _date = toDate(date);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"../toDate.mjs\";\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 { millisecondsInDay } from \"./constants.mjs\";\nimport { startOfDay } from \"./startOfDay.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.mjs\";\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 * @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 dateLeft - The later date\n * @param dateRight - The earlier date\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(dateLeft, dateRight) {\n  const startOfDayLeft = startOfDay(dateLeft);\n  const startOfDayRight = startOfDay(dateRight);\n\n  const timestampLeft =\n    +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n  const timestampRight =\n    +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight);\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((timestampLeft - timestampRight) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { getISOWeekYear } from \"./getISOWeekYear.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\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 *\n * @param date - The original date\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) {\n  const year = getISOWeekYear(date);\n  const fourthOfJanuary = constructFrom(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","/**\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.mjs\";\nimport { toDate } from \"./toDate.mjs\";\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 * @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 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, convertable 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  if (!isDate(date) && typeof date !== \"number\") {\n    return false;\n  }\n  const _date = toDate(date);\n  return !isNaN(Number(_date));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\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 *\n * @param date - The original date\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) {\n  const cleanDate = toDate(date);\n  const _date = constructFrom(date, 0);\n  _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\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.mjs\";\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","/* eslint-disable no-unused-vars */\n\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.mjs\";\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      : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange 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      ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange 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    // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange 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.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\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.mjs\";\nimport { formatLong } from \"./en-US/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\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.mjs\";\nimport { startOfYear } from \"./startOfYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\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 * @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 given date\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) {\n  const _date = toDate(date);\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.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\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 * @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 given date\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) {\n  const _date = toDate(date);\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 { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\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 * @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 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);\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(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(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.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 getWeekYear;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getWeekYear } from \"./getWeekYear.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\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 *\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(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.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { startOfWeekYear } from \"./startOfWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\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 * @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 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 */\n\nexport function getWeek(date, options) {\n  const _date = toDate(date);\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.mjs\";\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.mjs\";\nimport { getISOWeek } from \"../../getISOWeek.mjs\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.mjs\";\nimport { getWeek } from \"../../getWeek.mjs\";\nimport { getWeekYear } from \"../../getWeekYear.mjs\";\nimport { addLeadingZeros } from \"../addLeadingZeros.mjs\";\nimport { lightFormatters } from \"./lightFormatters.mjs\";\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.getTime() / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n\n  // Milliseconds timestamp\n  T: function (date, token, _localize) {\n    const timestamp = date.getTime();\n    return addLeadingZeros(timestamp, 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.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\nimport { formatters } from \"./_lib/format/formatters.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n  isProtectedDayOfYearToken,\n  isProtectedWeekYearToken,\n  warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { isValid } from \"./isValid.mjs\";\nimport { toDate } from \"./toDate.mjs\";\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 * @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 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);\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 { getDefaultOptions as getInternalDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions](https://date-fns.org/docs/setDefaultOptions).\n *\n * @returns The default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport function getDefaultOptions() {\n  return Object.assign({}, getInternalDefaultOptions());\n}\n\n// Fallback for modularized imports:\nexport default getDefaultOptions;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\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 *\n * @param date - The given date\n *\n * @returns The day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport function getISODay(date) {\n  const _date = toDate(date);\n  let day = _date.getDay();\n\n  if (day === 0) {\n    day = 7;\n  }\n\n  return day;\n}\n\n// Fallback for modularized imports:\nexport default getISODay;\n","import { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name transpose\n * @category Generic Helpers\n * @summary Transpose the date to the given constructor.\n *\n * @description\n * The function transposes the date to the given constructor. It helps you\n * to transpose the date in the system time zone to say `UTCDate` or any other\n * date extension.\n *\n * @typeParam DateInputType - The input `Date` type derived from the passed argument.\n * @typeParam DateOutputType - The output `Date` type derived from the passed constructor.\n *\n * @param fromDate - The date to use values from\n * @param constructor - The date constructor to use\n *\n * @returns Date transposed to the given constructor\n *\n * @example\n * // Create July 10, 2022 00:00 in locale time zone\n * const date = new Date(2022, 6, 10)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0800 (Singapore Standard Time)'\n *\n * @example\n * // Transpose the date to July 10, 2022 00:00 in UTC\n * transpose(date, UTCDate)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0000 (Coordinated Universal Time)'\n */\nexport function transpose(fromDate, constructor) {\n  const date =\n    constructor instanceof Date\n      ? constructFrom(constructor, 0)\n      : new constructor(0);\n  date.setFullYear(\n    fromDate.getFullYear(),\n    fromDate.getMonth(),\n    fromDate.getDate(),\n  );\n  date.setHours(\n    fromDate.getHours(),\n    fromDate.getMinutes(),\n    fromDate.getSeconds(),\n    fromDate.getMilliseconds(),\n  );\n  return date;\n}\n\n// Fallback for modularized imports:\nexport default transpose;\n","import { transpose } from \"../../transpose.mjs\";\nimport { constructFrom } from \"../../constructFrom.mjs\";\n\nconst TIMEZONE_UNIT_PRIORITY = 10;\n\nexport class Setter {\n  subPriority = 0;\n\n  validate(_utcDate, _options) {\n    return true;\n  }\n}\n\nexport class ValueSetter extends Setter {\n  constructor(\n    value,\n\n    validateValue,\n\n    setValue,\n\n    priority,\n    subPriority,\n  ) {\n    super();\n    this.value = value;\n    this.validateValue = validateValue;\n    this.setValue = setValue;\n    this.priority = priority;\n    if (subPriority) {\n      this.subPriority = subPriority;\n    }\n  }\n\n  validate(date, options) {\n    return this.validateValue(date, this.value, options);\n  }\n\n  set(date, flags, options) {\n    return this.setValue(date, flags, this.value, options);\n  }\n}\n\nexport class DateToSystemTimezoneSetter extends Setter {\n  priority = TIMEZONE_UNIT_PRIORITY;\n  subPriority = -1;\n  set(date, flags) {\n    if (flags.timestampIsSet) return date;\n    return constructFrom(date, transpose(date, Date));\n  }\n}\n","import { ValueSetter } from \"./Setter.mjs\";\n\nexport class Parser {\n  run(dateString, token, match, options) {\n    const result = this.parse(dateString, token, match, options);\n    if (!result) {\n      return null;\n    }\n\n    return {\n      setter: new ValueSetter(\n        result.value,\n        this.validate,\n        this.set,\n        this.priority,\n        this.subPriority,\n      ),\n      rest: result.rest,\n    };\n  }\n\n  validate(_utcDate, _value, _options) {\n    return true;\n  }\n}\n","import { Parser } from \"../Parser.mjs\";\n\nexport class EraParser extends Parser {\n  priority = 140;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      // AD, BC\n      case \"G\":\n      case \"GG\":\n      case \"GGG\":\n        return (\n          match.era(dateString, { width: \"abbreviated\" }) ||\n          match.era(dateString, { width: \"narrow\" })\n        );\n\n      // A, B\n      case \"GGGGG\":\n        return match.era(dateString, { width: \"narrow\" });\n      // Anno Domini, Before Christ\n      case \"GGGG\":\n      default:\n        return (\n          match.era(dateString, { width: \"wide\" }) ||\n          match.era(dateString, { width: \"abbreviated\" }) ||\n          match.era(dateString, { width: \"narrow\" })\n        );\n    }\n  }\n\n  set(date, flags, value) {\n    flags.era = value;\n    date.setFullYear(value, 0, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"R\", \"u\", \"t\", \"T\"];\n}\n","export const numericPatterns = {\n  month: /^(1[0-2]|0?\\d)/, // 0 to 12\n  date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n  dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n  week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n  hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n  hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n  hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n  hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n  minute: /^[0-5]?\\d/, // 0 to 59\n  second: /^[0-5]?\\d/, // 0 to 59\n\n  singleDigit: /^\\d/, // 0 to 9\n  twoDigits: /^\\d{1,2}/, // 0 to 99\n  threeDigits: /^\\d{1,3}/, // 0 to 999\n  fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n  anyDigitsSigned: /^-?\\d+/,\n  singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n  twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n  threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n  fourDigitsSigned: /^-?\\d{1,4}/, // 0 to 9999, -0 to -9999\n};\n\nexport const timezonePatterns = {\n  basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n  basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n  basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n  extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n  extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/,\n};\n","import {\n  millisecondsInHour,\n  millisecondsInMinute,\n  millisecondsInSecond,\n} from \"../../constants.mjs\";\nimport { numericPatterns } from \"./constants.mjs\";\n\nexport function mapValue(parseFnResult, mapFn) {\n  if (!parseFnResult) {\n    return parseFnResult;\n  }\n\n  return {\n    value: mapFn(parseFnResult.value),\n    rest: parseFnResult.rest,\n  };\n}\n\nexport function parseNumericPattern(pattern, dateString) {\n  const matchResult = dateString.match(pattern);\n\n  if (!matchResult) {\n    return null;\n  }\n\n  return {\n    value: parseInt(matchResult[0], 10),\n    rest: dateString.slice(matchResult[0].length),\n  };\n}\n\nexport function parseTimezonePattern(pattern, dateString) {\n  const matchResult = dateString.match(pattern);\n\n  if (!matchResult) {\n    return null;\n  }\n\n  // Input is 'Z'\n  if (matchResult[0] === \"Z\") {\n    return {\n      value: 0,\n      rest: dateString.slice(1),\n    };\n  }\n\n  const sign = matchResult[1] === \"+\" ? 1 : -1;\n  const hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n  const minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n  const seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n  return {\n    value:\n      sign *\n      (hours * millisecondsInHour +\n        minutes * millisecondsInMinute +\n        seconds * millisecondsInSecond),\n    rest: dateString.slice(matchResult[0].length),\n  };\n}\n\nexport function parseAnyDigitsSigned(dateString) {\n  return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\n\nexport function parseNDigits(n, dateString) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigit, dateString);\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigits, dateString);\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigits, dateString);\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigits, dateString);\n    default:\n      return parseNumericPattern(new RegExp(\"^\\\\d{1,\" + n + \"}\"), dateString);\n  }\n}\n\nexport function parseNDigitsSigned(n, dateString) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n    default:\n      return parseNumericPattern(new RegExp(\"^-?\\\\d{1,\" + n + \"}\"), dateString);\n  }\n}\n\nexport function dayPeriodEnumToHours(dayPeriod) {\n  switch (dayPeriod) {\n    case \"morning\":\n      return 4;\n    case \"evening\":\n      return 17;\n    case \"pm\":\n    case \"noon\":\n    case \"afternoon\":\n      return 12;\n    case \"am\":\n    case \"midnight\":\n    case \"night\":\n    default:\n      return 0;\n  }\n}\n\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n  const isCommonEra = currentYear > 0;\n  // Absolute number of the current year:\n  // 1 -> 1 AC\n  // 0 -> 1 BC\n  // -1 -> 2 BC\n  const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n  let result;\n  if (absCurrentYear <= 50) {\n    result = twoDigitYear || 100;\n  } else {\n    const rangeEnd = absCurrentYear + 50;\n    const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;\n    const isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n    result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n  }\n\n  return isCommonEra ? result : 1 - result;\n}\n\nexport function isLeapYearIndex(year) {\n  return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.mjs\";\n\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\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 |\nexport class YearParser extends Parser {\n  priority = 130;\n  incompatibleTokens = [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n\n  parse(dateString, token, match) {\n    const valueCallback = (year) => ({\n      year,\n      isTwoDigitYear: token === \"yy\",\n    });\n\n    switch (token) {\n      case \"y\":\n        return mapValue(parseNDigits(4, dateString), valueCallback);\n      case \"yo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"year\",\n          }),\n          valueCallback,\n        );\n      default:\n        return mapValue(parseNDigits(token.length, dateString), valueCallback);\n    }\n  }\n\n  validate(_date, value) {\n    return value.isTwoDigitYear || value.year > 0;\n  }\n\n  set(date, flags, value) {\n    const currentYear = date.getFullYear();\n\n    if (value.isTwoDigitYear) {\n      const normalizedTwoDigitYear = normalizeTwoDigitYear(\n        value.year,\n        currentYear,\n      );\n      date.setFullYear(normalizedTwoDigitYear, 0, 1);\n      date.setHours(0, 0, 0, 0);\n      return date;\n    }\n\n    const year =\n      !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n    date.setFullYear(year, 0, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n}\n","import { getWeekYear } from \"../../../getWeekYear.mjs\";\nimport { startOfWeek } from \"../../../startOfWeek.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.mjs\";\n\n// Local week-numbering year\nexport class LocalWeekYearParser extends Parser {\n  priority = 130;\n\n  parse(dateString, token, match) {\n    const valueCallback = (year) => ({\n      year,\n      isTwoDigitYear: token === \"YY\",\n    });\n\n    switch (token) {\n      case \"Y\":\n        return mapValue(parseNDigits(4, dateString), valueCallback);\n      case \"Yo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"year\",\n          }),\n          valueCallback,\n        );\n      default:\n        return mapValue(parseNDigits(token.length, dateString), valueCallback);\n    }\n  }\n\n  validate(_date, value) {\n    return value.isTwoDigitYear || value.year > 0;\n  }\n\n  set(date, flags, value, options) {\n    const currentYear = getWeekYear(date, options);\n\n    if (value.isTwoDigitYear) {\n      const normalizedTwoDigitYear = normalizeTwoDigitYear(\n        value.year,\n        currentYear,\n      );\n      date.setFullYear(\n        normalizedTwoDigitYear,\n        0,\n        options.firstWeekContainsDate,\n      );\n      date.setHours(0, 0, 0, 0);\n      return startOfWeek(date, options);\n    }\n\n    const year =\n      !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n    date.setFullYear(year, 0, options.firstWeekContainsDate);\n    date.setHours(0, 0, 0, 0);\n    return startOfWeek(date, options);\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"R\",\n    \"u\",\n    \"Q\",\n    \"q\",\n    \"M\",\n    \"L\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"i\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { startOfISOWeek } from \"../../../startOfISOWeek.mjs\";\nimport { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigitsSigned } from \"../utils.mjs\";\n\n// ISO week-numbering year\nexport class ISOWeekYearParser extends Parser {\n  priority = 130;\n\n  parse(dateString, token) {\n    if (token === \"R\") {\n      return parseNDigitsSigned(4, dateString);\n    }\n\n    return parseNDigitsSigned(token.length, dateString);\n  }\n\n  set(date, _flags, value) {\n    const firstWeekOfYear = constructFrom(date, 0);\n    firstWeekOfYear.setFullYear(value, 0, 4);\n    firstWeekOfYear.setHours(0, 0, 0, 0);\n    return startOfISOWeek(firstWeekOfYear);\n  }\n\n  incompatibleTokens = [\n    \"G\",\n    \"y\",\n    \"Y\",\n    \"u\",\n    \"Q\",\n    \"q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"d\",\n    \"D\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigitsSigned } from \"../utils.mjs\";\n\nexport class ExtendedYearParser extends Parser {\n  priority = 130;\n\n  parse(dateString, token) {\n    if (token === \"u\") {\n      return parseNDigitsSigned(4, dateString);\n    }\n\n    return parseNDigitsSigned(token.length, dateString);\n  }\n\n  set(date, _flags, value) {\n    date.setFullYear(value, 0, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigits } from \"../utils.mjs\";\n\nexport class QuarterParser extends Parser {\n  priority = 120;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"Q\":\n      case \"QQ\": // 01, 02, 03, 04\n        return parseNDigits(token.length, dateString);\n      // 1st, 2nd, 3rd, 4th\n      case \"Qo\":\n        return match.ordinalNumber(dateString, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"QQQ\":\n        return (\n          match.quarter(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"QQQQQ\":\n        return match.quarter(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"QQQQ\":\n      default:\n        return (\n          match.quarter(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 4;\n  }\n\n  set(date, _flags, value) {\n    date.setMonth((value - 1) * 3, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigits } from \"../utils.mjs\";\n\nexport class StandAloneQuarterParser extends Parser {\n  priority = 120;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"q\":\n      case \"qq\": // 01, 02, 03, 04\n        return parseNDigits(token.length, dateString);\n      // 1st, 2nd, 3rd, 4th\n      case \"qo\":\n        return match.ordinalNumber(dateString, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"qqq\":\n        return (\n          match.quarter(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"narrow\",\n            context: \"standalone\",\n          })\n        );\n\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"qqqqq\":\n        return match.quarter(dateString, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"qqqq\":\n      default:\n        return (\n          match.quarter(dateString, {\n            width: \"wide\",\n            context: \"standalone\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"narrow\",\n            context: \"standalone\",\n          })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 4;\n  }\n\n  set(date, _flags, value) {\n    date.setMonth((value - 1) * 3, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class MonthParser extends Parser {\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"Q\",\n    \"L\",\n    \"w\",\n    \"I\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n\n  priority = 110;\n\n  parse(dateString, token, match) {\n    const valueCallback = (value) => value - 1;\n\n    switch (token) {\n      // 1, 2, ..., 12\n      case \"M\":\n        return mapValue(\n          parseNumericPattern(numericPatterns.month, dateString),\n          valueCallback,\n        );\n      // 01, 02, ..., 12\n      case \"MM\":\n        return mapValue(parseNDigits(2, dateString), valueCallback);\n      // 1st, 2nd, ..., 12th\n      case \"Mo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"month\",\n          }),\n          valueCallback,\n        );\n      // Jan, Feb, ..., Dec\n      case \"MMM\":\n        return (\n          match.month(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // J, F, ..., D\n      case \"MMMMM\":\n        return match.month(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // January, February, ..., December\n      case \"MMMM\":\n      default:\n        return (\n          match.month(dateString, { width: \"wide\", context: \"formatting\" }) ||\n          match.month(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 11;\n  }\n\n  set(date, _flags, value) {\n    date.setMonth(value, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class StandAloneMonthParser extends Parser {\n  priority = 110;\n\n  parse(dateString, token, match) {\n    const valueCallback = (value) => value - 1;\n\n    switch (token) {\n      // 1, 2, ..., 12\n      case \"L\":\n        return mapValue(\n          parseNumericPattern(numericPatterns.month, dateString),\n          valueCallback,\n        );\n      // 01, 02, ..., 12\n      case \"LL\":\n        return mapValue(parseNDigits(2, dateString), valueCallback);\n      // 1st, 2nd, ..., 12th\n      case \"Lo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"month\",\n          }),\n          valueCallback,\n        );\n      // Jan, Feb, ..., Dec\n      case \"LLL\":\n        return (\n          match.month(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n\n      // J, F, ..., D\n      case \"LLLLL\":\n        return match.month(dateString, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // January, February, ..., December\n      case \"LLLL\":\n      default:\n        return (\n          match.month(dateString, { width: \"wide\", context: \"standalone\" }) ||\n          match.month(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 11;\n  }\n\n  set(date, _flags, value) {\n    date.setMonth(value, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"w\",\n    \"I\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { getWeek } from \"./getWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link setWeek} function options.\n */\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\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 *\n * @param date - The date to be changed\n * @param week - The week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the local week set\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 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 = setWeek(new Date(2005, 0, 2), 1, {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport function setWeek(date, week, options) {\n  const _date = toDate(date);\n  const diff = getWeek(_date, options) - week;\n  _date.setDate(_date.getDate() - diff * 7);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default setWeek;\n","import { setWeek } from \"../../../setWeek.mjs\";\nimport { startOfWeek } from \"../../../startOfWeek.mjs\";\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\n// Local week of year\nexport class LocalWeekParser extends Parser {\n  priority = 100;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"w\":\n        return parseNumericPattern(numericPatterns.week, dateString);\n      case \"wo\":\n        return match.ordinalNumber(dateString, { unit: \"week\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 53;\n  }\n\n  set(date, _flags, value, options) {\n    return startOfWeek(setWeek(date, value, options), options);\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"R\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"i\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { getISOWeek } from \"./getISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\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 *\n * @param date - The date to be changed\n * @param week - The ISO week of the new date\n *\n * @returns The new date with the ISO week set\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport function setISOWeek(date, week) {\n  const _date = toDate(date);\n  const diff = getISOWeek(_date) - week;\n  _date.setDate(_date.getDate() - diff * 7);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default setISOWeek;\n","import { setISOWeek } from \"../../../setISOWeek.mjs\";\nimport { startOfISOWeek } from \"../../../startOfISOWeek.mjs\";\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\n// ISO week of year\nexport class ISOWeekParser extends Parser {\n  priority = 100;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"I\":\n        return parseNumericPattern(numericPatterns.week, dateString);\n      case \"Io\":\n        return match.ordinalNumber(dateString, { unit: \"week\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 53;\n  }\n\n  set(date, _flags, value) {\n    return startOfISOWeek(setISOWeek(date, value));\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"Y\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"d\",\n    \"D\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport {\n  isLeapYearIndex,\n  parseNDigits,\n  parseNumericPattern,\n} from \"../utils.mjs\";\n\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [\n  31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,\n];\n\n// Day of the month\nexport class DateParser extends Parser {\n  priority = 90;\n  subPriority = 1;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"d\":\n        return parseNumericPattern(numericPatterns.date, dateString);\n      case \"do\":\n        return match.ordinalNumber(dateString, { unit: \"date\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(date, value) {\n    const year = date.getFullYear();\n    const isLeapYear = isLeapYearIndex(year);\n    const month = date.getMonth();\n    if (isLeapYear) {\n      return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n    } else {\n      return value >= 1 && value <= DAYS_IN_MONTH[month];\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setDate(value);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"Q\",\n    \"w\",\n    \"I\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport {\n  isLeapYearIndex,\n  parseNDigits,\n  parseNumericPattern,\n} from \"../utils.mjs\";\n\nexport class DayOfYearParser extends Parser {\n  priority = 90;\n\n  subpriority = 1;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"D\":\n      case \"DD\":\n        return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n      case \"Do\":\n        return match.ordinalNumber(dateString, { unit: \"date\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(date, value) {\n    const year = date.getFullYear();\n    const isLeapYear = isLeapYearIndex(year);\n    if (isLeapYear) {\n      return value >= 1 && value <= 366;\n    } else {\n      return value >= 1 && value <= 365;\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setMonth(0, value);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"I\",\n    \"d\",\n    \"E\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { addDays } from \"./addDays.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link setDay} function options.\n */\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week 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 *\n * @param date - The date to be changed\n * @param day - The day of the week of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the day of the week set\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setDay(date, day, 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);\n  const currentDay = _date.getDay();\n\n  const remainder = day % 7;\n  const dayIndex = (remainder + 7) % 7;\n\n  const delta = 7 - weekStartsOn;\n  const diff =\n    day < 0 || day > 6\n      ? day - ((currentDay + delta) % 7)\n      : ((dayIndex + delta) % 7) - ((currentDay + delta) % 7);\n  return addDays(_date, diff);\n}\n\n// Fallback for modularized imports:\nexport default setDay;\n","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\n\n// Day of week\nexport class DayParser extends Parser {\n  priority = 90;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      // Tue\n      case \"E\":\n      case \"EE\":\n      case \"EEE\":\n        return (\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // T\n      case \"EEEEE\":\n        return match.day(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"EEEEEE\":\n        return (\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // Tuesday\n      case \"EEEE\":\n      default:\n        return (\n          match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 6;\n  }\n\n  set(date, _flags, value, options) {\n    date = setDay(date, value, options);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// Local day of week\nexport class LocalDayParser extends Parser {\n  priority = 90;\n  parse(dateString, token, match, options) {\n    const valueCallback = (value) => {\n      // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n      const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n      return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n    };\n\n    switch (token) {\n      // 3\n      case \"e\":\n      case \"ee\": // 03\n        return mapValue(parseNDigits(token.length, dateString), valueCallback);\n      // 3rd\n      case \"eo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"day\",\n          }),\n          valueCallback,\n        );\n      // Tue\n      case \"eee\":\n        return (\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // T\n      case \"eeeee\":\n        return match.day(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"eeeeee\":\n        return (\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // Tuesday\n      case \"eeee\":\n      default:\n        return (\n          match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 6;\n  }\n\n  set(date, _flags, value, options) {\n    date = setDay(date, value, options);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"R\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"E\",\n    \"i\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// Stand-alone local day of week\nexport class StandAloneLocalDayParser extends Parser {\n  priority = 90;\n\n  parse(dateString, token, match, options) {\n    const valueCallback = (value) => {\n      // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n      const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n      return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n    };\n\n    switch (token) {\n      // 3\n      case \"c\":\n      case \"cc\": // 03\n        return mapValue(parseNDigits(token.length, dateString), valueCallback);\n      // 3rd\n      case \"co\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"day\",\n          }),\n          valueCallback,\n        );\n      // Tue\n      case \"ccc\":\n        return (\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n\n      // T\n      case \"ccccc\":\n        return match.day(dateString, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // Tu\n      case \"cccccc\":\n        return (\n          match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n\n      // Tuesday\n      case \"cccc\":\n      default:\n        return (\n          match.day(dateString, { width: \"wide\", context: \"standalone\" }) ||\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 6;\n  }\n\n  set(date, _flags, value, options) {\n    date = setDay(date, value, options);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"R\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"E\",\n    \"i\",\n    \"e\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { addDays } from \"./addDays.mjs\";\nimport { getISODay } from \"./getISODay.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\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 date to be changed\n * @param day - The day of the ISO week of the new date\n *\n * @returns The new date with the day of the ISO week set\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setISODay(date, day) {\n  const _date = toDate(date);\n  const currentDay = getISODay(_date);\n  const diff = day - currentDay;\n  return addDays(_date, diff);\n}\n\n// Fallback for modularized imports:\nexport default setISODay;\n","import { setISODay } from \"../../../setISODay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// ISO day of week\nexport class ISODayParser extends Parser {\n  priority = 90;\n\n  parse(dateString, token, match) {\n    const valueCallback = (value) => {\n      if (value === 0) {\n        return 7;\n      }\n      return value;\n    };\n\n    switch (token) {\n      // 2\n      case \"i\":\n      case \"ii\": // 02\n        return parseNDigits(token.length, dateString);\n      // 2nd\n      case \"io\":\n        return match.ordinalNumber(dateString, { unit: \"day\" });\n      // Tue\n      case \"iii\":\n        return mapValue(\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n            match.day(dateString, {\n              width: \"short\",\n              context: \"formatting\",\n            }) ||\n            match.day(dateString, {\n              width: \"narrow\",\n              context: \"formatting\",\n            }),\n          valueCallback,\n        );\n      // T\n      case \"iiiii\":\n        return mapValue(\n          match.day(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          }),\n          valueCallback,\n        );\n      // Tu\n      case \"iiiiii\":\n        return mapValue(\n          match.day(dateString, {\n            width: \"short\",\n            context: \"formatting\",\n          }) ||\n            match.day(dateString, {\n              width: \"narrow\",\n              context: \"formatting\",\n            }),\n          valueCallback,\n        );\n      // Tuesday\n      case \"iiii\":\n      default:\n        return mapValue(\n          match.day(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n            match.day(dateString, {\n              width: \"abbreviated\",\n              context: \"formatting\",\n            }) ||\n            match.day(dateString, {\n              width: \"short\",\n              context: \"formatting\",\n            }) ||\n            match.day(dateString, {\n              width: \"narrow\",\n              context: \"formatting\",\n            }),\n          valueCallback,\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 7;\n  }\n\n  set(date, _flags, value) {\n    date = setISODay(date, value);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"Y\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"d\",\n    \"D\",\n    \"E\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\n\nexport class AMPMParser extends Parser {\n  priority = 80;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n      case \"aaa\":\n        return (\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n\n      case \"aaaaa\":\n        return match.dayPeriod(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"aaaa\":\n      default:\n        return (\n          match.dayPeriod(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\n\nexport class AMPMMidnightParser extends Parser {\n  priority = 80;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"b\":\n      case \"bb\":\n      case \"bbb\":\n        return (\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n\n      case \"bbbbb\":\n        return match.dayPeriod(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"bbbb\":\n      default:\n        return (\n          match.dayPeriod(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\n\n// in the morning, in the afternoon, in the evening, at night\nexport class DayPeriodParser extends Parser {\n  priority = 80;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"B\":\n      case \"BB\":\n      case \"BBB\":\n        return (\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n\n      case \"BBBBB\":\n        return match.dayPeriod(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"BBBB\":\n      default:\n        return (\n          match.dayPeriod(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"a\", \"b\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour1to12Parser extends Parser {\n  priority = 70;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"h\":\n        return parseNumericPattern(numericPatterns.hour12h, dateString);\n      case \"ho\":\n        return match.ordinalNumber(dateString, { unit: \"hour\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 12;\n  }\n\n  set(date, _flags, value) {\n    const isPM = date.getHours() >= 12;\n    if (isPM && value < 12) {\n      date.setHours(value + 12, 0, 0, 0);\n    } else if (!isPM && value === 12) {\n      date.setHours(0, 0, 0, 0);\n    } else {\n      date.setHours(value, 0, 0, 0);\n    }\n    return date;\n  }\n\n  incompatibleTokens = [\"H\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour0to23Parser extends Parser {\n  priority = 70;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"H\":\n        return parseNumericPattern(numericPatterns.hour23h, dateString);\n      case \"Ho\":\n        return match.ordinalNumber(dateString, { unit: \"hour\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 23;\n  }\n\n  set(date, _flags, value) {\n    date.setHours(value, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour0To11Parser extends Parser {\n  priority = 70;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"K\":\n        return parseNumericPattern(numericPatterns.hour11h, dateString);\n      case \"Ko\":\n        return match.ordinalNumber(dateString, { unit: \"hour\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 11;\n  }\n\n  set(date, _flags, value) {\n    const isPM = date.getHours() >= 12;\n    if (isPM && value < 12) {\n      date.setHours(value + 12, 0, 0, 0);\n    } else {\n      date.setHours(value, 0, 0, 0);\n    }\n    return date;\n  }\n\n  incompatibleTokens = [\"h\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour1To24Parser extends Parser {\n  priority = 70;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"k\":\n        return parseNumericPattern(numericPatterns.hour24h, dateString);\n      case \"ko\":\n        return match.ordinalNumber(dateString, { unit: \"hour\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 24;\n  }\n\n  set(date, _flags, value) {\n    const hours = value <= 24 ? value % 24 : value;\n    date.setHours(hours, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class MinuteParser extends Parser {\n  priority = 60;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"m\":\n        return parseNumericPattern(numericPatterns.minute, dateString);\n      case \"mo\":\n        return match.ordinalNumber(dateString, { unit: \"minute\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 59;\n  }\n\n  set(date, _flags, value) {\n    date.setMinutes(value, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class SecondParser extends Parser {\n  priority = 50;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"s\":\n        return parseNumericPattern(numericPatterns.second, dateString);\n      case \"so\":\n        return match.ordinalNumber(dateString, { unit: \"second\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 59;\n  }\n\n  set(date, _flags, value) {\n    date.setSeconds(value, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\nexport class FractionOfSecondParser extends Parser {\n  priority = 30;\n\n  parse(dateString, token) {\n    const valueCallback = (value) =>\n      Math.trunc(value * Math.pow(10, -token.length + 3));\n    return mapValue(parseNDigits(token.length, dateString), valueCallback);\n  }\n\n  set(date, _flags, value) {\n    date.setMilliseconds(value);\n    return date;\n  }\n\n  incompatibleTokens = [\"t\", \"T\"];\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.mjs\";\nimport { timezonePatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseTimezonePattern } from \"../utils.mjs\";\n\n// Timezone (ISO-8601. +00:00 is `'Z'`)\nexport class ISOTimezoneWithZParser extends Parser {\n  priority = 10;\n\n  parse(dateString, token) {\n    switch (token) {\n      case \"X\":\n        return parseTimezonePattern(\n          timezonePatterns.basicOptionalMinutes,\n          dateString,\n        );\n      case \"XX\":\n        return parseTimezonePattern(timezonePatterns.basic, dateString);\n      case \"XXXX\":\n        return parseTimezonePattern(\n          timezonePatterns.basicOptionalSeconds,\n          dateString,\n        );\n      case \"XXXXX\":\n        return parseTimezonePattern(\n          timezonePatterns.extendedOptionalSeconds,\n          dateString,\n        );\n      case \"XXX\":\n      default:\n        return parseTimezonePattern(timezonePatterns.extended, dateString);\n    }\n  }\n\n  set(date, flags, value) {\n    if (flags.timestampIsSet) return date;\n    return constructFrom(\n      date,\n      date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n    );\n  }\n\n  incompatibleTokens = [\"t\", \"T\", \"x\"];\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.mjs\";\nimport { timezonePatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseTimezonePattern } from \"../utils.mjs\";\n\n// Timezone (ISO-8601)\nexport class ISOTimezoneParser extends Parser {\n  priority = 10;\n\n  parse(dateString, token) {\n    switch (token) {\n      case \"x\":\n        return parseTimezonePattern(\n          timezonePatterns.basicOptionalMinutes,\n          dateString,\n        );\n      case \"xx\":\n        return parseTimezonePattern(timezonePatterns.basic, dateString);\n      case \"xxxx\":\n        return parseTimezonePattern(\n          timezonePatterns.basicOptionalSeconds,\n          dateString,\n        );\n      case \"xxxxx\":\n        return parseTimezonePattern(\n          timezonePatterns.extendedOptionalSeconds,\n          dateString,\n        );\n      case \"xxx\":\n      default:\n        return parseTimezonePattern(timezonePatterns.extended, dateString);\n    }\n  }\n\n  set(date, flags, value) {\n    if (flags.timestampIsSet) return date;\n    return constructFrom(\n      date,\n      date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n    );\n  }\n\n  incompatibleTokens = [\"t\", \"T\", \"X\"];\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseAnyDigitsSigned } from \"../utils.mjs\";\n\nexport class TimestampSecondsParser extends Parser {\n  priority = 40;\n\n  parse(dateString) {\n    return parseAnyDigitsSigned(dateString);\n  }\n\n  set(date, _flags, value) {\n    return [constructFrom(date, value * 1000), { timestampIsSet: true }];\n  }\n\n  incompatibleTokens = \"*\";\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseAnyDigitsSigned } from \"../utils.mjs\";\n\nexport class TimestampMillisecondsParser extends Parser {\n  priority = 20;\n\n  parse(dateString) {\n    return parseAnyDigitsSigned(dateString);\n  }\n\n  set(date, _flags, value) {\n    return [constructFrom(date, value), { timestampIsSet: true }];\n  }\n\n  incompatibleTokens = \"*\";\n}\n","import { EraParser } from \"./parsers/EraParser.mjs\";\nimport { YearParser } from \"./parsers/YearParser.mjs\";\nimport { LocalWeekYearParser } from \"./parsers/LocalWeekYearParser.mjs\";\nimport { ISOWeekYearParser } from \"./parsers/ISOWeekYearParser.mjs\";\nimport { ExtendedYearParser } from \"./parsers/ExtendedYearParser.mjs\";\nimport { QuarterParser } from \"./parsers/QuarterParser.mjs\";\nimport { StandAloneQuarterParser } from \"./parsers/StandAloneQuarterParser.mjs\";\nimport { MonthParser } from \"./parsers/MonthParser.mjs\";\nimport { StandAloneMonthParser } from \"./parsers/StandAloneMonthParser.mjs\";\nimport { LocalWeekParser } from \"./parsers/LocalWeekParser.mjs\";\nimport { ISOWeekParser } from \"./parsers/ISOWeekParser.mjs\";\nimport { DateParser } from \"./parsers/DateParser.mjs\";\nimport { DayOfYearParser } from \"./parsers/DayOfYearParser.mjs\";\nimport { DayParser } from \"./parsers/DayParser.mjs\";\nimport { LocalDayParser } from \"./parsers/LocalDayParser.mjs\";\nimport { StandAloneLocalDayParser } from \"./parsers/StandAloneLocalDayParser.mjs\";\nimport { ISODayParser } from \"./parsers/ISODayParser.mjs\";\nimport { AMPMParser } from \"./parsers/AMPMParser.mjs\";\nimport { AMPMMidnightParser } from \"./parsers/AMPMMidnightParser.mjs\";\nimport { DayPeriodParser } from \"./parsers/DayPeriodParser.mjs\";\nimport { Hour1to12Parser } from \"./parsers/Hour1to12Parser.mjs\";\nimport { Hour0to23Parser } from \"./parsers/Hour0to23Parser.mjs\";\nimport { Hour0To11Parser } from \"./parsers/Hour0To11Parser.mjs\";\nimport { Hour1To24Parser } from \"./parsers/Hour1To24Parser.mjs\";\nimport { MinuteParser } from \"./parsers/MinuteParser.mjs\";\nimport { SecondParser } from \"./parsers/SecondParser.mjs\";\nimport { FractionOfSecondParser } from \"./parsers/FractionOfSecondParser.mjs\";\nimport { ISOTimezoneWithZParser } from \"./parsers/ISOTimezoneWithZParser.mjs\";\nimport { ISOTimezoneParser } from \"./parsers/ISOTimezoneParser.mjs\";\nimport { TimestampSecondsParser } from \"./parsers/TimestampSecondsParser.mjs\";\nimport { TimestampMillisecondsParser } from \"./parsers/TimestampMillisecondsParser.mjs\";\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  |                                |  P  |                                |\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 `parse` 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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- It's ok, we want any here\nexport const parsers = {\n  G: new EraParser(),\n  y: new YearParser(),\n  Y: new LocalWeekYearParser(),\n  R: new ISOWeekYearParser(),\n  u: new ExtendedYearParser(),\n  Q: new QuarterParser(),\n  q: new StandAloneQuarterParser(),\n  M: new MonthParser(),\n  L: new StandAloneMonthParser(),\n  w: new LocalWeekParser(),\n  I: new ISOWeekParser(),\n  d: new DateParser(),\n  D: new DayOfYearParser(),\n  E: new DayParser(),\n  e: new LocalDayParser(),\n  c: new StandAloneLocalDayParser(),\n  i: new ISODayParser(),\n  a: new AMPMParser(),\n  b: new AMPMMidnightParser(),\n  B: new DayPeriodParser(),\n  h: new Hour1to12Parser(),\n  H: new Hour0to23Parser(),\n  K: new Hour0To11Parser(),\n  k: new Hour1To24Parser(),\n  m: new MinuteParser(),\n  s: new SecondParser(),\n  S: new FractionOfSecondParser(),\n  X: new ISOTimezoneWithZParser(),\n  x: new ISOTimezoneParser(),\n  t: new TimestampSecondsParser(),\n  T: new TimestampMillisecondsParser(),\n};\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getDefaultOptions } from \"./getDefaultOptions.mjs\";\nimport { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n  isProtectedDayOfYearToken,\n  isProtectedWeekYearToken,\n  warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { parsers } from \"./parse/_lib/parsers.mjs\";\nimport { DateToSystemTimezoneSetter } from \"./parse/_lib/Setter.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { longFormatters, parsers };\n\n/**\n * The {@link parse} function options.\n */\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;\n\nconst notWhitespaceRegExp = /\\S/;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\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 in the format string 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 *\n * Format of the format 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 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit                            |Prior| Pattern | Result examples                   | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era                             | 140 | G..GGG  | AD, BC                            |       |\n * |                                 |     | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 |     | GGGGG   | A, B                              |       |\n * | Calendar year                   | 130 | y       | 44, 1, 1900, 2017, 9999           | 4     |\n * |                                 |     | yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | yy      | 44, 01, 00, 17                    | 4     |\n * |                                 |     | yyy     | 044, 001, 123, 999                | 4     |\n * |                                 |     | yyyy    | 0044, 0001, 1900, 2017            | 4     |\n * |                                 |     | yyyyy   | ...                               | 2,4   |\n * | Local week-numbering year       | 130 | Y       | 44, 1, 1900, 2017, 9000           | 4     |\n * |                                 |     | Yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | YY      | 44, 01, 00, 17                    | 4,6   |\n * |                                 |     | YYY     | 044, 001, 123, 999                | 4     |\n * |                                 |     | YYYY    | 0044, 0001, 1900, 2017            | 4,6   |\n * |                                 |     | YYYYY   | ...                               | 2,4   |\n * | ISO week-numbering year         | 130 | R       | -43, 1, 1900, 2017, 9999, -9999   | 4,5   |\n * |                                 |     | RR      | -43, 01, 00, 17                   | 4,5   |\n * |                                 |     | RRR     | -043, 001, 123, 999, -999         | 4,5   |\n * |                                 |     | RRRR    | -0043, 0001, 2017, 9999, -9999    | 4,5   |\n * |                                 |     | RRRRR   | ...                               | 2,4,5 |\n * | Extended year                   | 130 | u       | -43, 1, 1900, 2017, 9999, -999    | 4     |\n * |                                 |     | uu      | -43, 01, 99, -99                  | 4     |\n * |                                 |     | uuu     | -043, 001, 123, 999, -999         | 4     |\n * |                                 |     | uuuu    | -0043, 0001, 2017, 9999, -9999    | 4     |\n * |                                 |     | uuuuu   | ...                               | 2,4   |\n * | Quarter (formatting)            | 120 | Q       | 1, 2, 3, 4                        |       |\n * |                                 |     | Qo      | 1st, 2nd, 3rd, 4th                | 5     |\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)           | 120 | q       | 1, 2, 3, 4                        |       |\n * |                                 |     | qo      | 1st, 2nd, 3rd, 4th                | 5     |\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                        | 3     |\n * | Month (formatting)              | 110 | M       | 1, 2, ..., 12                     |       |\n * |                                 |     | Mo      | 1st, 2nd, ..., 12th               | 5     |\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)             | 110 | L       | 1, 2, ..., 12                     |       |\n * |                                 |     | Lo      | 1st, 2nd, ..., 12th               | 5     |\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              | 100 | w       | 1, 2, ..., 53                     |       |\n * |                                 |     | wo      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | 100 | I       | 1, 2, ..., 53                     | 5     |\n * |                                 |     | Io      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | II      | 01, 02, ..., 53                   | 5     |\n * | Day of month                    |  90 | d       | 1, 2, ..., 31                     |       |\n * |                                 |     | do      | 1st, 2nd, ..., 31st               | 5     |\n * |                                 |     | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     |  90 | D       | 1, 2, ..., 365, 366               | 7     |\n * |                                 |     | Do      | 1st, 2nd, ..., 365th, 366th       | 5     |\n * |                                 |     | DD      | 01, 02, ..., 365, 366             | 7     |\n * |                                 |     | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 |     | DDDD    | ...                               | 2     |\n * | Day of week (formatting)        |  90 | 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)    |  90 | i       | 1, 2, 3, ..., 7                   | 5     |\n * |                                 |     | io      | 1st, 2nd, ..., 7th                | 5     |\n * |                                 |     | ii      | 01, 02, ..., 07                   | 5     |\n * |                                 |     | iii     | Mon, Tue, Wed, ..., Sun           | 5     |\n * |                                 |     | iiii    | Monday, Tuesday, ..., Sunday      | 2,5   |\n * |                                 |     | iiiii   | M, T, W, T, F, S, S               | 5     |\n * |                                 |     | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 5     |\n * | Local day of week (formatting)  |  90 | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | eo      | 2nd, 3rd, ..., 1st                | 5     |\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) |  90 | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | co      | 2nd, 3rd, ..., 1st                | 5     |\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                          |  80 | a..aaa  | AM, PM                            |       |\n * |                                 |     | aaaa    | a.m., p.m.                        | 2     |\n * |                                 |     | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          |  80 | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 |     | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 |     | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             |  80 | 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]                     |  70 | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 |     | ho      | 1st, 2nd, ..., 11th, 12th         | 5     |\n * |                                 |     | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     |  70 | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 |     | Ho      | 0th, 1st, 2nd, ..., 23rd          | 5     |\n * |                                 |     | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     |  70 | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 |     | Ko      | 1st, 2nd, ..., 11th, 0th          | 5     |\n * |                                 |     | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     |  70 | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 |     | ko      | 24th, 1st, 2nd, ..., 23rd         | 5     |\n * |                                 |     | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          |  60 | m       | 0, 1, ..., 59                     |       |\n * |                                 |     | mo      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | mm      | 00, 01, ..., 59                   |       |\n * | Second                          |  50 | s       | 0, 1, ..., 59                     |       |\n * |                                 |     | so      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | ss      | 00, 01, ..., 59                   |       |\n * | Seconds timestamp               |  40 | t       | 512969520                         |       |\n * |                                 |     | tt      | ...                               | 2     |\n * | Fraction of second              |  30 | S       | 0, 1, ..., 9                      |       |\n * |                                 |     | SS      | 00, 01, ..., 99                   |       |\n * |                                 |     | SSS     | 000, 001, ..., 999                |       |\n * |                                 |     | SSSS    | ...                               | 2     |\n * | Milliseconds timestamp          |  20 | T       | 512969520900                      |       |\n * |                                 |     | TT      | ...                               | 2     |\n * | Timezone (ISO-8601 w/ Z)        |  10 | 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)       |  10 | 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 * | Long localized date             |  NA | P       | 05/29/1453                        | 5,8   |\n * |                                 |     | PP      | May 29, 1453                      |       |\n * |                                 |     | PPP     | May 29th, 1453                    |       |\n * |                                 |     | PPPP    | Sunday, May 29th, 1453            | 2,5,8 |\n * | Long localized time             |  NA | p       | 12:00 AM                          | 5,8   |\n * |                                 |     | pp      | 12:00:00 AM                       |       |\n * | Combination of date and time    |  NA | Pp      | 05/29/1453, 12:00 AM              |       |\n * |                                 |     | PPpp    | May 29, 1453, 12:00:00 AM         |       |\n * |                                 |     | PPPpp   | May 29th, 1453 at ...             |       |\n * |                                 |     | PPPPpp  | Sunday, May 29th, 1453 at ...     | 2,5,8 |\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 *    In `format` function, they will produce different result:\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 *    `parse` will try to match both formatting and stand-alone units interchangably.\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:\n *    - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n *      as wide as the sequence\n *    - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n *      These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 4. 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` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n *    `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n *    `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n *    while `uu` will just assign the year as is:\n *\n *    `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n *    `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\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 [setISOWeekYear](https://date-fns.org/docs/setISOWeekYear)\n *    and [setWeekYear](https://date-fns.org/docs/setWeekYear)).\n *\n * 5. 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 *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 6. `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 * 7. `D` and `DD` tokens represent days of the year but they are ofthen 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 * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n *    on the given locale.\n *\n *    using `en-US` locale: `P` => `MM/dd/yyyy`\n *    using `en-US` locale: `p` => `hh:mm a`\n *    using `pt-BR` locale: `P` => `dd/MM/yyyy`\n *    using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\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 dateStr - The string to parse\n * @param formatStr - The string of tokens\n * @param referenceDate - defines values missing from the parsed dateString\n * @param options - An object with options.\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @returns The parsed date\n *\n * @throws `options.locale` must contain `match` 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 * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n *   locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport function parse(dateStr, formatStr, referenceDate, 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  if (formatStr === \"\") {\n    if (dateStr === \"\") {\n      return toDate(referenceDate);\n    } else {\n      return constructFrom(referenceDate, NaN);\n    }\n  }\n\n  const subFnOptions = {\n    firstWeekContainsDate,\n    weekStartsOn,\n    locale,\n  };\n\n  // If timezone isn't specified, it will be set to the system timezone\n  const setters = [new DateToSystemTimezoneSetter()];\n\n  const tokens = formatStr\n    .match(longFormattingTokensRegExp)\n    .map((substring) => {\n      const firstCharacter = substring[0];\n      if (firstCharacter in longFormatters) {\n        const longFormatter = longFormatters[firstCharacter];\n        return longFormatter(substring, locale.formatLong);\n      }\n      return substring;\n    })\n    .join(\"\")\n    .match(formattingTokensRegExp);\n\n  const usedTokens = [];\n\n  for (let token of tokens) {\n    if (\n      !options?.useAdditionalWeekYearTokens &&\n      isProtectedWeekYearToken(token)\n    ) {\n      warnOrThrowProtectedError(token, formatStr, dateStr);\n    }\n    if (\n      !options?.useAdditionalDayOfYearTokens &&\n      isProtectedDayOfYearToken(token)\n    ) {\n      warnOrThrowProtectedError(token, formatStr, dateStr);\n    }\n\n    const firstCharacter = token[0];\n    const parser = parsers[firstCharacter];\n    if (parser) {\n      const { incompatibleTokens } = parser;\n      if (Array.isArray(incompatibleTokens)) {\n        const incompatibleToken = usedTokens.find(\n          (usedToken) =>\n            incompatibleTokens.includes(usedToken.token) ||\n            usedToken.token === firstCharacter,\n        );\n        if (incompatibleToken) {\n          throw new RangeError(\n            `The format string mustn't contain \\`${incompatibleToken.fullToken}\\` and \\`${token}\\` at the same time`,\n          );\n        }\n      } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n        throw new RangeError(\n          `The format string mustn't contain \\`${token}\\` and any other token at the same time`,\n        );\n      }\n\n      usedTokens.push({ token: firstCharacter, fullToken: token });\n\n      const parseResult = parser.run(\n        dateStr,\n        token,\n        locale.match,\n        subFnOptions,\n      );\n\n      if (!parseResult) {\n        return constructFrom(referenceDate, NaN);\n      }\n\n      setters.push(parseResult.setter);\n\n      dateStr = parseResult.rest;\n    } else {\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      // Replace two single quote characters with one single quote character\n      if (token === \"''\") {\n        token = \"'\";\n      } else if (firstCharacter === \"'\") {\n        token = cleanEscapedString(token);\n      }\n\n      // Cut token from string, or, if string doesn't match the token, return Invalid Date\n      if (dateStr.indexOf(token) === 0) {\n        dateStr = dateStr.slice(token.length);\n      } else {\n        return constructFrom(referenceDate, NaN);\n      }\n    }\n  }\n\n  // Check if the remaining input contains something other than whitespace\n  if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {\n    return constructFrom(referenceDate, NaN);\n  }\n\n  const uniquePrioritySetters = setters\n    .map((setter) => setter.priority)\n    .sort((a, b) => b - a)\n    .filter((priority, index, array) => array.indexOf(priority) === index)\n    .map((priority) =>\n      setters\n        .filter((setter) => setter.priority === priority)\n        .sort((a, b) => b.subPriority - a.subPriority),\n    )\n    .map((setterArray) => setterArray[0]);\n\n  let date = toDate(referenceDate);\n\n  if (isNaN(date.getTime())) {\n    return constructFrom(referenceDate, NaN);\n  }\n\n  const flags = {};\n  for (const setter of uniquePrioritySetters) {\n    if (!setter.validate(date, subFnOptions)) {\n      return constructFrom(referenceDate, NaN);\n    }\n\n    const result = setter.set(date, flags, subFnOptions);\n    // Result is tuple (date, flags)\n    if (Array.isArray(result)) {\n      date = result[0];\n      Object.assign(flags, result[1]);\n      // Result is date\n    } else {\n      date = result;\n    }\n  }\n\n  return constructFrom(referenceDate, date);\n}\n\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default parse;\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 returns UTC offset in minutes for 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 * It uses `Intl.DateTimeFormat` internally to access otherwise unavailable\n * runtime's time zone data, and falls back to basic manual parsing if Intl API\n * is not supported (e.g., older Node.js versions, React Native's Hermes, etc.).\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 (e.g., `480` for date in UTC+8).\n */\nexport function tzOffset(timeZone, date) {\n  try {\n    // Create `Intl.DateTimeFormat` with `\"longOffset\"` that gives us consistent\n    // date strings like `\"5/19/2026, GMT-08:00\"`.\n    const format = offsetFormatCache[timeZone] ||= new Intl.DateTimeFormat(\"en-US\", {\n      timeZone,\n      timeZoneName: \"longOffset\"\n    }).format;\n\n    // Get `\"-08:00\"`.\n    const offsetStr = format(date).split(\"GMT\")[1];\n\n    // Avoid parsing the same offset string.\n    if (offsetStr in offsetCache) return offsetCache[offsetStr];\n\n    // Calculate offset from `[\"-08\", \"00\"]` and cache it.\n    return calcOffset(offsetStr, offsetStr.split(\":\"));\n  } catch {\n    // Fallback to manual parsing if the runtime doesn't support\n    // `±HH:MM/±HHMM/±HH`. 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\";\n\n// TZDate stores time in two `Date` objects because native `Date` can only\n// expose local fields in the system time zone.\n//\n// The external date (`this`) stores the real timestamp. It is the value used by\n// `getTime()`, `valueOf()`, UTC getters/setters, comparisons, and arithmetic.\n// Its local getters are not used for target-zone fields because they would read\n// the timestamp through the system time zone.\n//\n// The internal date (`this.internal`) stores the target-zone wall-clock fields.\n// We read and write those fields through UTC getters/setters so the host system\n// time zone cannot reinterpret them. For example, `getHours()` returns\n// `internal.getUTCHours()`, and `setHours()` writes `internal.setUTCHours(...)`.\n//\n// Syncing moves data between the two representations:\n//\n// - `syncToInternal` starts from the external timestamp and rebuilds internal\n//   wall-clock fields using `this.timeZone` offset.\n//\n// - `syncFromInternal` starts from internal wall-clock fields, writes them into\n//   the external date, then adjusts that timestamp for the system/target offset\n//   difference and DST edge cases.\n//\n// The public TZDate value is the combination of both: external is the instant,\n// internal is the wall-clock view of that instant in `this.timeZone`.\n\nexport class TZDateMini extends Date {\n  //#region static\n\n  constructor(...args) {\n    super();\n\n    // Time zone string is always the last string argument unless date string\n    // is passed (as a single argument).\n    if (args.length > 1 && typeof args[args.length - 1] === \"string\") {\n      this.timeZone = args.pop();\n    }\n    this.internal = new Date();\n\n    // Validate the time zone by checking its offset.\n    if (isNaN(tzOffset(this.timeZone, this))) {\n      this.setTime(NaN);\n    } else {\n      if (!args.length) {\n        // No arguments passed: use current time\n        this.setTime(Date.now());\n      } else if (typeof args[0] === \"number\" && (args.length === 1 || args.length === 2 && typeof args[1] !== \"number\")) {\n        // Timestamp passed: use it as is\n        this.setTime(args[0]);\n      } else if (typeof args[0] === \"string\") {\n        // `Date` string passed: parse it as external date\n        this.setTime(+new Date(args[0]));\n      } else if (args[0] instanceof Date) {\n        // `Date` passed: use its timestamp\n        this.setTime(+args[0]);\n      } else {\n        // `Date` values passed:\n\n        // Set it as external date.\n        this.setTime(+new Date(...args));\n\n        // Adjust internal and external dates considering that we might have\n        // landed on the DST hour.\n        adjustToSystemTZ(this, args);\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 using `Math.floor` for negative UTC time zones\n    // and `Math.ceil` for positive UTC time zones.\n    return offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n  }\n\n  //#endregion\n\n  //#region time\n\n  setTime(_time) {\n    // Use the native `setTime` to the external date time.\n    Date.prototype.setTime.apply(this, arguments);\n\n    // Then apply it to the internal date adjusting to the timezone offset.\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 * @internal\n * Function syncs time to internal date, applying the current time zone offset.\n *\n * @param {Date} date - `Date` to sync\n */\nfunction syncToInternal(date) {\n  // Start internal from the same real timestamp as external.\n  date.internal.setTime(+date);\n\n  // Shift internal by the target offset so its UTC fields become the target-zone\n  // wall-clock fields for the external timestamp.\n  //\n  //   o internal UTC fields: 2024-02-11 00:00\n  //   |\n  //   | + Asia/Singapore offset (+08:00)\n  //   v\n  //   x internal UTC fields: 2024-02-11 08:00\n  //\n  date.internal.setUTCSeconds(date.internal.getUTCSeconds() -\n  // Round after converting minutes to seconds to avoid fractional offset\n  // precision errors from historical offsets.\n  Math.round(-tzOffset(date.timeZone, date) * 60));\n}\n\n/**\n * @internal\n * Function syncs internal wall-clock fields into the external date.\n *\n * @param {Date} date - The date to sync\n */\nfunction syncFromInternal(date) {\n  // Copy target-zone wall-clock fields from internal into external using native\n  // local setters. At this point external holds the right field values but they\n  // are interpreted in the system time zone; `adjustToSystemTZ` fixes that.\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 * @internal\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 * We use it when constructing `TZDate` and syncing the external date from\n * the internal one.\n *\n * @param {TZDate} date - `TZDate` to adjust.\n */\nfunction adjustToSystemTZ(date, constructorArgs) {\n  // Keep the intended target-zone wall-clock value before native Date/system\n  // time zone normalization can move it. Later corrections compare against this\n  // value to distinguish intended DST normalization from accidental drift.\n  const expectedInternalTime = Array.isArray(constructorArgs) ? constructorArgsToInternalTime(constructorArgs) : +date.internal;\n  //#region Initial offset calculation\n\n  // Current target time zone offset at the native timestamp. It may include\n  // historical offset seconds, which we preserve for the seconds adjustment.\n  const offsetWithSeconds = tzOffset(date.timeZone, date);\n\n  // Minute-precision target offset used by minute-based timestamp adjustments.\n  // Historical offsets can contain seconds, so we strip the fractional minute\n  // here and handle remaining seconds in the seconds adjustment below.\n  const offset = offsetWithSeconds > 0 ? Math.floor(offsetWithSeconds) : Math.ceil(offsetWithSeconds);\n\n  //#endregion\n\n  //#region System DST adjustment\n\n  // Native `Date` may normalize the requested wall time when the system time\n  // zone skips that hour for DST.\n  //\n  // We compare the system wall-clock hour represented by the external date with\n  // the wall-clock hour stored in the internal date. If they differ, the next\n  // offset-diff calculation may need the previous system offset, because the\n  // current external timestamp is already after the system DST jump.\n\n  // Previous-hour reference used to detect whether the system offset changed\n  // immediately before the current native timestamp.\n  const prevHour = new Date(+date);\n\n  // Use UTC math so subtracting one hour cannot be normalized back into the\n  // same missing local DST hour.\n  prevHour.setUTCHours(prevHour.getUTCHours() - 1);\n\n  // Current system offset at the native timestamp.\n  const systemOffset = -new Date(+date).getTimezoneOffset();\n\n  // System offset one real hour before the native timestamp.\n  const prevHourSystemOffset = -new Date(+prevHour).getTimezoneOffset();\n\n  // Non-zero when the system offset changed between `prevHour` and `date`.\n  const systemDSTChange = systemOffset - prevHourSystemOffset;\n\n  // System offset to use in the later system-target offset difference.\n  // Defaults to the current system offset and switches to the previous offset\n  // only when native `Date` normalized a missing system wall time.\n  let systemOffsetForDiff = systemOffset;\n  if (systemDSTChange && systemOffset !== offset) {\n    // System wall-clock hour represented by the current external timestamp.\n    const systemHour = Date.prototype.getHours.apply(date);\n\n    // Target wall-clock hour currently stored in internal fields. Constructors\n    // get it from arguments because internal may have already been synced from\n    // the normalized external timestamp; setters get it directly from internal.\n    const expectedHour = Array.isArray(constructorArgs) ? constructorArgs[3] || 0 : date.internal.getUTCHours();\n    if (systemHour !== expectedHour) {\n      // Check whether using the current system offset would keep the target\n      // offset unchanged. If so, the only DST jump we crossed is the system\n      // one, so the diff should use the pre-DST system offset.\n      const testDate = new Date(+date);\n\n      // Difference that the later offset-diff step would apply with the\n      // current system offset.\n      const testOffsetDiff = systemOffset - offset;\n      if (testOffsetDiff) testDate.setUTCMinutes(testDate.getUTCMinutes() + testOffsetDiff);\n\n      // Target offset after applying the current system offset difference.\n      const testOffsetWithSeconds = tzOffset(date.timeZone, testDate);\n\n      // Target offset without historical seconds, matching `offset`.\n      const testOffset = testOffsetWithSeconds > 0 ? Math.floor(testOffsetWithSeconds) : Math.ceil(testOffsetWithSeconds);\n      if (testOffset === offset) systemOffsetForDiff = prevHourSystemOffset;\n    }\n  }\n\n  //#endregion\n\n  //#region System diff adjustment\n\n  // Move external from the system-zone interpretation of internal fields toward\n  // the timestamp that represents those fields in the target time zone.\n  //\n  // At this point native `Date` has treated the internal wall-clock fields as if\n  // they belonged to the system zone. The system-target offset difference moves\n  // external by the distance between that system interpretation and the target\n  // interpretation.\n\n  // Difference between the system offset selected above and the minute-precision\n  // target offset. Positive values move external forward; negative values move\n  // it backward.\n  const offsetDiff = systemOffsetForDiff - offset;\n  if (offsetDiff)\n    // Apply the system-target minute difference to external. Internal is\n    // rebuilt from the final external timestamp after all adjustments are\n    // complete.\n    //\n    //   o  external as target: 2023-01-31 23:00\n    //   |\n    //   |  add `offsetDiff`\n    //   v\n    //   x  external as target: 2023-02-01 12:00\n    //\n    Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetDiff);\n\n  //#endregion\n\n  //#region Seconds system diff adjustment\n\n  // Historical time zone offsets can include seconds, but the minute-based\n  // offset adjustment above intentionally used minute precision.\n  //\n  // This adjustment applies the remaining seconds difference to external. For\n  // example, historical Singapore used UTC+06:55:25, while ISO formatting shows\n  // only `+06:55`; without the seconds correction, setter paths keep the wrong\n  // wall-clock seconds.\n\n  // Clone external as a native `Date` so we can inspect how the system time zone\n  // represents the same timestamp.\n  const systemDate = new Date(+date);\n\n  // Zero UTC seconds before reading system seconds. Any remaining local seconds\n  // then come from the system time zone offset rather than from the timestamp's\n  // own seconds value.\n  systemDate.setUTCSeconds(0);\n\n  // Seconds part contributed by the system time zone offset. Negative offsets\n  // need wrapping because `Date#getSeconds()` returns values in the 0..59 range.\n  const systemSecondsOffset = systemOffset > 0 ? systemDate.getSeconds() : (systemDate.getSeconds() - 60) % 60;\n\n  // Seconds part contributed by the target time zone offset.\n  const secondsOffset = Math.round(-(tzOffset(date.timeZone, date) * 60)) % 60;\n  if (secondsOffset || systemSecondsOffset)\n    // Apply the remaining second-level system-target difference to external.\n    //\n    //   o  external as Asia/Singapore: 1900-01-01 00:00:56\n    //   |\n    //   |  + `secondsOffset`\n    //   |  + `systemSecondsOffset`\n    //   v\n    //   x  external as Asia/Singapore: 1900-01-01 00:00:31\n    //\n    Date.prototype.setUTCSeconds.call(date, Date.prototype.getUTCSeconds.call(date) + secondsOffset + systemSecondsOffset);\n\n  //#endregion\n\n  //#region Post-adjustment DST fix\n\n  // The first system-target offset move can cross a target-zone DST boundary.\n  //\n  // When that happens, the target offset at the new external timestamp differs\n  // from the target offset used for `offsetDiff`. We compare the original move\n  // with the move that would be calculated at the new timestamp, then apply the\n  // difference to external.\n\n  // Target offset at the current external timestamp, including historical\n  // seconds for the later seconds adjustment.\n  const postOffsetWithSeconds = tzOffset(date.timeZone, date);\n\n  // Minute-precision target offset at the current external timestamp.\n  const postOffset = postOffsetWithSeconds > 0 ? Math.floor(postOffsetWithSeconds) : Math.ceil(postOffsetWithSeconds);\n\n  // System offset at the current external timestamp.\n  const postSystemOffset = -new Date(+date).getTimezoneOffset();\n\n  // System-target offset difference at the current external timestamp.\n  const postOffsetDiff = postSystemOffset - postOffset;\n\n  // Whether the target offset changed after the first offset move.\n  const offsetChanged = postOffset !== offset;\n\n  // Difference between the current offset move and the move already applied.\n  const postDiff = postOffsetDiff - offsetDiff;\n\n  // If the first offset move already normalized a target DST gap forward, the\n  // generic post-DST correction below would undo that valid normalization. This\n  // happens, for example, with America/New_York 02:00 during spring-forward when\n  // the system zone also changes offset around the same instant.\n  const targetDSTShift = postOffset - offset;\n\n  // Candidate timestamp that would represent the requested wall-clock time with\n  // the post-transition target offset. If it still does not round-trip to the\n  // requested wall-clock fields, the requested time is inside a target DST gap.\n  const postOffsetCandidate = expectedInternalTime - postOffset * 60 * 1000;\n\n  // Only positive target offset shifts are spring-forward gaps. Negative shifts\n  // are fall-back overlaps and still need the regular post-adjustment path.\n  const normalizedTargetDSTGap = targetDSTShift > 0 && targetInternalTime(date) - expectedInternalTime === targetDSTShift * 60 * 1000 && targetInternalTime(date, postOffsetCandidate) !== expectedInternalTime;\n  if (offsetChanged && postDiff && !normalizedTargetDSTGap) {\n    // Apply the target-DST correction to external. In the backward-crossing case\n    // shown here, this lands on an intermediate value that needs `offsetChange`\n    // below.\n    //\n    //   o  external as America/New_York: 2023-03-12 03:00 EDT\n    //   |\n    //   |  + `postDiff`\n    //   v\n    //   x  external as America/New_York: 2023-03-12 01:00 EST\n    //\n    Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + postDiff);\n\n    // Target offset after applying `postDiff`. It may change again if the\n    // correction itself crosses a target-zone DST boundary.\n    const newOffsetWithSeconds = tzOffset(date.timeZone, date);\n\n    // Minute-precision target offset after applying `postDiff`.\n    const newOffset = newOffsetWithSeconds > 0 ? Math.floor(newOffsetWithSeconds) : Math.ceil(newOffsetWithSeconds);\n\n    // Offset change caused by the `postDiff` move itself.\n    const offsetChange = postOffset - newOffset;\n\n    // If the correction moved external backward across the target DST boundary,\n    // apply the boundary change so external lands on the valid target-zone\n    // timestamp. Forward crossings are already normalized by native Date, and\n    // applying this correction there would undo the valid post-DST result.\n    if (offsetChange && postDiff < 0) {\n      // Apply the second target-DST correction to external.\n      //\n      //   o  external as America/New_York: 2023-03-12 01:00 EST\n      //   |\n      //   |  + `offsetChange`\n      //   v\n      //   x  external as America/New_York: 2023-03-12 03:00 EDT\n      //\n      Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetChange);\n    }\n  }\n\n  //#endregion\n\n  // Rebuild internal wall-clock fields from the final external timestamp.\n  syncToInternal(date);\n\n  // Native Date can normalize historical system offsets with minute and second\n  // precision before we adjust to the target time zone. Correct only small\n  // historical drift so DST gap normalization (usually one hour) remains intact.\n  const expectedTime = constructorArgs ? expectedInternalTime : expectedInternalTime + secondsOffset * 1000;\n  const drift = expectedTime - +date.internal;\n  if (drift && Math.abs(drift) < 30 * 60 * 1000) {\n    Date.prototype.setTime.call(date, +date + drift);\n    syncToInternal(date);\n  }\n}\nfunction constructorArgsToInternalTime(args) {\n  // Mirror Date's date-value constructor defaults while preserving explicit\n  // `undefined` behavior. Missing month/day default, but passed `undefined`\n  // should remain invalid just like `Date.UTC(year, undefined, ...)`.\n  return Date.UTC(args[0], args.length > 1 ? args[1] : 0, args.length > 2 ? args[2] : 1, ...args.slice(3));\n}\nfunction targetInternalTime(date, time) {\n  // Compute the target-zone wall-clock representation for a timestamp without\n  // mutating the TZDate. This mirrors syncToInternal for temporary checks.\n  const internal = new Date(time ?? +date);\n  internal.setUTCSeconds(internal.getUTCSeconds() - Math.round(-tzOffset(date.timeZone, internal) * 60));\n  return +internal;\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 * **You don't need date-fns\\***:\n *\n * Temporal has a built-in `add` method on all its classes:\n *\n * - [`Temporal.Instant.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/Instant/add)\n * - [`Temporal.PlainDate.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainDate/add)\n * - [`Temporal.PlainDateTime.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainDateTime/add)\n * - [`Temporal.PlainTime.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainTime/add)\n * - [`Temporal.PlainYearMonth.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainYearMonth/add)\n * - [`Temporal.ZonedDateTime.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/ZonedDateTime/add)\n *\n * \\* **Not really**, see: https://date-fns.org/you-dont-need-date-fns\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 *\n * @example\n * // Using Temporal:\n * // Add 10 days to 1 September 2014:\n * Temporal.PlainDate.from(\"2014-09-01\").add({ days: 10 }).toString();\n * //=> \"2014-09-11\"\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         * 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            const DateCtor = this.options.Date ?? Date;\n            return new DateCtor();\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","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","export * from \"./CaptionLabel.js\";\nexport * from \"./Chevron.js\";\nexport * from \"./Day.js\";\nexport * from \"./DayButton.js\";\nexport * from \"./Dropdown.js\";\nexport * from \"./DropdownNav.js\";\nexport * from \"./Footer.js\";\nexport * from \"./Month.js\";\nexport * from \"./MonthCaption.js\";\nexport * from \"./MonthGrid.js\";\nexport * from \"./Months.js\";\nexport * from \"./MonthsDropdown.js\";\nexport * from \"./Nav.js\";\nexport * from \"./NextMonthButton.js\";\nexport * from \"./Option.js\";\nexport * from \"./PreviousMonthButton.js\";\nexport * from \"./Root.js\";\nexport * from \"./Select.js\";\nexport * from \"./Week.js\";\nexport * from \"./Weekday.js\";\nexport * from \"./Weekdays.js\";\nexport * from \"./WeekNumber.js\";\nexport * from \"./WeekNumberHeader.js\";\nexport * from \"./Weeks.js\";\nexport * from \"./YearsDropdown.js\";\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, style } = props;\n    return (React.createElement(\"svg\", { className: className, style: style, 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\n * {@link UI | UI.Day} 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 { 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 { UI } from \"../UI.js\";\nimport { useDayPicker } from \"../useDayPicker.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, ...selectProps } = props;\n    const { classNames, components, styles } = useDayPicker();\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], style: styles?.[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], style: styles?.[UI.CaptionLabel], \"aria-hidden\": true },\n            selectedOption?.label,\n            React.createElement(components.Chevron, { orientation: \"down\", size: 18, className: classNames[UI.Chevron], style: styles?.[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 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, styles, 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], style: styles?.[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], style: styles?.[UI.Chevron], orientation: \"left\" })),\n        React.createElement(components.NextMonthButton, { type: \"button\", className: classNames[UI.NextMonthButton], style: styles?.[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], style: styles?.[UI.Chevron] }))));\n}\n","import React from \"react\";\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    return React.createElement(\"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\";\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    return React.createElement(\"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 * 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","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","export * from \"./formatCaption.js\";\nexport * from \"./formatDay.js\";\nexport * from \"./formatMonthDropdown.js\";\nexport * from \"./formatWeekdayName.js\";\nexport * from \"./formatWeekNumber.js\";\nexport * from \"./formatWeekNumberHeader.js\";\nexport * from \"./formatYearDropdown.js\";\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","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","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    return {\n        ...defaultFormatters,\n        ...customFormatters,\n    };\n}\n","export * from \"./labelDayButton.js\";\nexport * from \"./labelGrid.js\";\nexport * from \"./labelGrid.js\";\nexport * from \"./labelGridcell.js\";\nexport * from \"./labelMonthDropdown.js\";\nexport * from \"./labelNav.js\";\nexport * from \"./labelNext.js\";\nexport * from \"./labelPrevious.js\";\nexport * from \"./labelWeekday.js\";\nexport * from \"./labelWeekNumber.js\";\nexport * from \"./labelWeekNumberHeader.js\";\nexport * from \"./labelYearDropdown.js\";\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","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","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?.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, today, } = dateLib;\n    const hasYearDropdown = props.captionLayout === \"dropdown\" ||\n        props.captionLayout === \"dropdown-years\";\n    if (startMonth) {\n        startMonth = startOfMonth(startMonth);\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 (!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, resetOnSelect, 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        let newRange;\n        if (triggerDate) {\n            const selectedFrom = selected?.from;\n            const selectedTo = selected?.to;\n            const hasFullRange = !!selectedFrom && !!selectedTo;\n            const isClickingSingleDayRange = !!selectedFrom &&\n                !!selectedTo &&\n                dateLib.isSameDay(selectedFrom, selectedTo) &&\n                dateLib.isSameDay(triggerDate, selectedFrom);\n            if (resetOnSelect && (hasFullRange || !selected?.from)) {\n                if (!required && isClickingSingleDayRange) {\n                    newRange = undefined;\n                }\n                else {\n                    newRange = { from: triggerDate, to: undefined };\n                }\n            }\n            else {\n                newRange = addToRange(triggerDate, selected, min, max, required, dateLib);\n            }\n        }\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, monthOffset) => (e) => {\n        const selectedMonth = Number(e.target.value);\n        const month = dateLib.setMonth(dateLib.startOfMonth(date), selectedMonth);\n        goToMonth(dateLib.addMonths(month, -monthOffset));\n    }, [dateLib, goToMonth]);\n    const handleYearChange = useCallback((date, monthOffset) => (e) => {\n        const selectedYear = Number(e.target.value);\n        const month = dateLib.setYear(dateLib.startOfMonth(date), selectedYear);\n        goToMonth(dateLib.addMonths(month, -monthOffset));\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 getDropdownStyle = (dropdown) => {\n        const dropdownStyle = styles?.[UI.Dropdown];\n        const specificDropdownStyle = styles?.[dropdown];\n        if (!dropdownStyle && !specificDropdownStyle) {\n            return undefined;\n        }\n        return {\n            ...dropdownStyle,\n            ...specificDropdownStyle,\n        };\n    };\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 ?? locale.code, 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                    const monthOffset = props.reverseMonths\n                        ? months.length - 1 - displayIndex\n                        : 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], style: styles?.[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], style: styles?.[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(), disabled: Boolean(props.disableNavigation), onChange: handleMonthChange(calendarMonth.date, monthOffset), options: getMonthOptions(calendarMonth.date, navStart, navEnd, formatters, dateLib), style: getDropdownStyle(UI.MonthsDropdown), 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), disabled: Boolean(props.disableNavigation), onChange: handleYearChange(calendarMonth.date, monthOffset), options: getYearOptions(navStart, navEnd, formatters, dateLib, Boolean(props.reverseYears)), style: getDropdownStyle(UI.YearsDropdown), 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], style: styles?.[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], style: styles?.[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], style: styles?.[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","\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport {\r\n  ChevronLeftIcon,\r\n  ChevronRightIcon,\r\n} from \"lucide-react\"\r\nimport { DayPicker, type DayButton } from \"react-day-picker\"\r\n\r\nimport { cn } from \"../../utils/cn\"\r\nimport { Button, buttonVariants } from \"./button\"\r\n\r\nfunction Calendar({\r\n  className,\r\n  classNames,\r\n  showOutsideDays = true,\r\n  captionLayout = \"label\",\r\n  buttonVariant = \"ghost\",\r\n  formatters,\r\n  components,\r\n  ...props\r\n}: React.ComponentProps<typeof DayPicker> & {\r\n  buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\r\n}) {\r\n  return (\r\n    <DayPicker\r\n      showOutsideDays={showOutsideDays}\r\n      className={cn(\"bg-background p-3\", className)}\r\n      captionLayout={captionLayout}\r\n      formatters={{\r\n        formatMonthDropdown: (date) =>\r\n          date.toLocaleString(\"default\", { month: \"short\" }),\r\n        ...formatters,\r\n      }}\r\n      classNames={{\r\n        root: \"w-fit\",\r\n        months: \"relative flex flex-col gap-4 sm:flex-row\",\r\n        month: \"flex w-full flex-col gap-4\",\r\n        nav: \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\r\n        button_previous: cn(\r\n          buttonVariants({ variant: buttonVariant }),\r\n          \"size-8 p-0 select-none aria-disabled:opacity-50\"\r\n        ),\r\n        button_next: cn(\r\n          buttonVariants({ variant: buttonVariant }),\r\n          \"size-8 p-0 select-none aria-disabled:opacity-50\"\r\n        ),\r\n        month_caption:\r\n          \"flex h-8 w-full items-center justify-center px-8\",\r\n        dropdowns:\r\n          \"flex h-8 w-full items-center justify-center gap-1.5 text-sm font-medium\",\r\n        dropdown_root:\r\n          \"relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50\",\r\n        dropdown: \"absolute inset-0 bg-popover opacity-0\",\r\n        caption_label: cn(\r\n          \"font-medium select-none\",\r\n          captionLayout === \"label\"\r\n            ? \"text-sm\"\r\n            : \"flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\"\r\n        ),\r\n        month_grid: \"w-full border-collapse\",\r\n        weekdays: \"flex\",\r\n        weekday:\r\n          \"flex-1 rounded-md text-[0.8rem] font-normal text-muted-foreground select-none w-8 text-center\",\r\n        week: \"mt-2 flex w-full\",\r\n        week_number_header: \"w-8 select-none\",\r\n        week_number: \"text-[0.8rem] text-muted-foreground select-none\",\r\n        day: cn(\r\n          \"relative aspect-square h-full w-full p-0 text-center select-none\",\r\n          props.showWeekNumber\r\n            ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\r\n            : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\r\n          \"[&:last-child[data-selected=true]_button]:rounded-r-md\"\r\n        ),\r\n        range_start: \"rounded-l-md bg-accent\",\r\n        range_middle: \"rounded-none\",\r\n        range_end: \"rounded-r-md bg-accent\",\r\n        today:\r\n          \"rounded-md bg-accent text-accent-foreground data-[selected=true]:rounded-none\",\r\n        outside: \"text-muted-foreground opacity-50 aria-selected:text-muted-foreground\",\r\n        disabled: \"text-muted-foreground opacity-50\",\r\n        hidden: \"invisible\",\r\n        ...classNames,\r\n      }}\r\n      components={{\r\n        Root: ({ className, rootRef, ...props }) => {\r\n          return (\r\n            <div\r\n              data-slot=\"calendar\"\r\n              ref={rootRef}\r\n              className={cn(className)}\r\n              {...props}\r\n            />\r\n          )\r\n        },\r\n        Chevron: ({ className, orientation, ...props }) => {\r\n          if (orientation === \"left\") {\r\n            return (\r\n              <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\r\n            )\r\n          }\r\n          return (\r\n            <ChevronRightIcon className={cn(\"size-4\", className)} {...props} />\r\n          )\r\n        },\r\n        DayButton: CalendarDayButton,\r\n        WeekNumber: ({ children, ...props }) => {\r\n          return (\r\n            <td {...props}>\r\n              <div className=\"flex size-8 items-center justify-center text-center\">\r\n                {children}\r\n              </div>\r\n            </td>\r\n          )\r\n        },\r\n        ...components,\r\n      }}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction CalendarDayButton({\r\n  className,\r\n  day,\r\n  modifiers,\r\n  ...props\r\n}: React.ComponentProps<typeof DayButton>) {\r\n  const ref = React.useRef<HTMLButtonElement>(null)\r\n  React.useEffect(() => {\r\n    if (modifiers.focused) ref.current?.focus()\r\n  }, [modifiers.focused])\r\n\r\n  return (\r\n    <Button\r\n      ref={ref}\r\n      variant=\"ghost\"\r\n      size=\"icon\"\r\n      data-day={day.date.toLocaleDateString()}\r\n      data-selected-single={\r\n        modifiers.selected &&\r\n        !modifiers.range_start &&\r\n        !modifiers.range_end &&\r\n        !modifiers.range_middle\r\n      }\r\n      data-range-start={modifiers.range_start}\r\n      data-range-end={modifiers.range_end}\r\n      data-range-middle={modifiers.range_middle}\r\n      className={cn(\r\n        \"flex aspect-square size-8 w-full flex-col gap-1 leading-none font-normal\",\r\n        \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground\",\r\n        \"data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground\",\r\n        \"data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground\",\r\n        \"data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nexport { Calendar, CalendarDayButton }\r\n","import { useState } from \"react\";\r\nimport { format, parse, isValid } from \"date-fns\";\r\nimport { CalendarIcon } from \"lucide-react\";\r\nimport type { DateConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper, fieldAria } from \"./FieldWrapper\";\r\nimport { Button } from \"../ui/button\";\r\nimport { Calendar } from \"../ui/calendar\";\r\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport function DateField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as DateConfig | undefined;\r\n  const hasError = !!(touched && error?.length);\r\n  const [open, setOpen] = useState(false);\r\n\r\n  const strValue = (value as string) ?? \"\";\r\n  const selected = strValue ? parse(strValue, \"yyyy-MM-dd\", new Date()) : undefined;\r\n  const validSelected = selected && isValid(selected) ? selected : undefined;\r\n\r\n  const disabledDates = (date: Date): boolean => {\r\n    if (config?.minDate) {\r\n      const min = parse(config.minDate, \"yyyy-MM-dd\", new Date());\r\n      if (isValid(min) && date < min) return true;\r\n    }\r\n    if (config?.maxDate) {\r\n      const max = parse(config.maxDate, \"yyyy-MM-dd\", new Date());\r\n      if (isValid(max) && date > max) return true;\r\n    }\r\n    if (config?.disablePast) {\r\n      const today = new Date();\r\n      today.setHours(0, 0, 0, 0);\r\n      if (date < today) return true;\r\n    }\r\n    if (config?.disableFuture) {\r\n      const today = new Date();\r\n      today.setHours(23, 59, 59, 999);\r\n      if (date > today) return true;\r\n    }\r\n    return false;\r\n  };\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <Popover open={open} onOpenChange={setOpen}>\r\n        <PopoverTrigger asChild>\r\n          <Button\r\n            {...fieldAria(field, hasError)}\r\n            variant=\"outline\"\r\n            disabled={disabled || readonly}\r\n            className={cn(\r\n              \"w-full justify-start text-left font-normal\",\r\n              !validSelected && \"text-muted-foreground\"\r\n            )}\r\n            onBlur={onBlur}\r\n            onFocus={onFocus}\r\n          >\r\n            <CalendarIcon className=\"mr-2 size-4\" />\r\n            {validSelected ? format(validSelected, config?.format || \"PPP\") : (field.placeholder ?? \"Pick a date\")}\r\n          </Button>\r\n        </PopoverTrigger>\r\n        <PopoverContent className=\"w-auto p-0\" align=\"start\">\r\n          <Calendar\r\n            mode=\"single\"\r\n            captionLayout=\"dropdown\"\r\n            startMonth={new Date(new Date().getFullYear() - 100, 0)}\r\n            endMonth={new Date(new Date().getFullYear() + 10, 11)}\r\n            selected={validSelected}\r\n            onSelect={(date) => {\r\n              onChange(date ? format(date, \"yyyy-MM-dd\") : undefined);\r\n              setOpen(false);\r\n            }}\r\n            disabled={disabledDates}\r\n            defaultMonth={validSelected}\r\n            autoFocus\r\n          />\r\n        </PopoverContent>\r\n      </Popover>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import { useState } from \"react\";\r\nimport { format, parse, isValid, differenceInCalendarDays, addDays } from \"date-fns\";\r\nimport { CalendarIcon } from \"lucide-react\";\r\nimport type { DateRange } from \"react-day-picker\";\r\nimport type { DateRangeConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper, fieldAria } from \"./FieldWrapper\";\r\nimport { Button } from \"../ui/button\";\r\nimport { Calendar } from \"../ui/calendar\";\r\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport function DateRangeField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as DateRangeConfig | undefined;\r\n  const hasError = !!(touched && error?.length);\r\n  const [open, setOpen] = useState(false);\r\n  const [rangeClampedMsg, setRangeClampedMsg] = useState<string | null>(null);\r\n\r\n  const range = (value as { start?: string; end?: string }) ?? {};\r\n\r\n  const startDate = range.start ? parse(range.start, \"yyyy-MM-dd\", new Date()) : undefined;\r\n  const endDate = range.end ? parse(range.end, \"yyyy-MM-dd\", new Date()) : undefined;\r\n  const validStart = startDate && isValid(startDate) ? startDate : undefined;\r\n  const validEnd = endDate && isValid(endDate) ? endDate : undefined;\r\n\r\n  const selected: DateRange | undefined =\r\n    validStart || validEnd ? { from: validStart, to: validEnd } : undefined;\r\n\r\n  const disabledDates = (date: Date): boolean => {\r\n    if (config?.minDate) {\r\n      const min = parse(config.minDate, \"yyyy-MM-dd\", new Date());\r\n      if (isValid(min) && date < min) return true;\r\n    }\r\n    if (config?.maxDate) {\r\n      const max = parse(config.maxDate, \"yyyy-MM-dd\", new Date());\r\n      if (isValid(max) && date > max) return true;\r\n    }\r\n    return false;\r\n  };\r\n\r\n  const formatDisplay = () => {\r\n    if (validStart && validEnd) {\r\n      return `${format(validStart, \"PPP\")} – ${format(validEnd, \"PPP\")}`;\r\n    }\r\n    if (validStart) {\r\n      return `${format(validStart, \"PPP\")} – ...`;\r\n    }\r\n    return field.placeholder ?? \"Pick a date range\";\r\n  };\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <Popover open={open} onOpenChange={setOpen}>\r\n        <PopoverTrigger asChild>\r\n          <Button\r\n            {...fieldAria(field, hasError)}\r\n            variant=\"outline\"\r\n            disabled={disabled || readonly}\r\n            className={cn(\r\n              \"w-full justify-start text-left font-normal\",\r\n              !selected && \"text-muted-foreground\"\r\n            )}\r\n            onBlur={onBlur}\r\n            onFocus={onFocus}\r\n          >\r\n            <CalendarIcon className=\"mr-2 size-4\" />\r\n            {formatDisplay()}\r\n          </Button>\r\n        </PopoverTrigger>\r\n        <PopoverContent className=\"w-auto p-0\" align=\"start\">\r\n          <Calendar\r\n            mode=\"range\"\r\n            captionLayout=\"dropdown\"\r\n            startMonth={new Date(new Date().getFullYear() - 10, 0)}\r\n            endMonth={new Date(new Date().getFullYear() + 10, 11)}\r\n            selected={selected}\r\n            onSelect={(range) => {\r\n              setRangeClampedMsg(null);\r\n              let from = range?.from;\r\n              let to = range?.to;\r\n              if (from && to && config?.maxRangeDays && config.maxRangeDays > 0) {\r\n                const diff = differenceInCalendarDays(to, from);\r\n                if (diff > config.maxRangeDays) {\r\n                  to = addDays(from, config.maxRangeDays);\r\n                  setRangeClampedMsg(`Range limited to ${config.maxRangeDays} days`);\r\n                }\r\n              }\r\n              onChange({\r\n                start: from ? format(from, \"yyyy-MM-dd\") : undefined,\r\n                end: to ? format(to, \"yyyy-MM-dd\") : undefined,\r\n              });\r\n              if (from && to) {\r\n                setOpen(false);\r\n              }\r\n            }}\r\n            disabled={disabledDates}\r\n            defaultMonth={validStart}\r\n            numberOfMonths={2}\r\n            autoFocus\r\n          />\r\n        </PopoverContent>\r\n      </Popover>\r\n      {rangeClampedMsg && (\r\n        <p className=\"text-xs text-muted-foreground mt-1\">{rangeClampedMsg}</p>\r\n      )}\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import { useMemo } from \"react\";\r\nimport { ClockIcon } from \"lucide-react\";\r\nimport type { TimeConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper, fieldAria } from \"./FieldWrapper\";\r\nimport {\r\n  Select,\r\n  SelectContent,\r\n  SelectItem,\r\n  SelectTrigger,\r\n  SelectValue,\r\n} from \"../ui/select\";\r\n\r\nfunction generateTimeOptions(step: number, format: \"12h\" | \"24h\"): { value: string; label: string }[] {\r\n  const options: { value: string; label: string }[] = [];\r\n  for (let h = 0; h < 24; h++) {\r\n    for (let m = 0; m < 60; m += step) {\r\n      const hh = String(h).padStart(2, \"0\");\r\n      const mm = String(m).padStart(2, \"0\");\r\n      const val = `${hh}:${mm}`;\r\n\r\n      let label: string;\r\n      if (format === \"12h\") {\r\n        const period = h >= 12 ? \"PM\" : \"AM\";\r\n        const h12 = h === 0 ? 12 : h > 12 ? h - 12 : h;\r\n        label = `${h12}:${mm} ${period}`;\r\n      } else {\r\n        label = val;\r\n      }\r\n      options.push({ value: val, label });\r\n    }\r\n  }\r\n  return options;\r\n}\r\n\r\nexport function TimeField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as TimeConfig | undefined;\r\n  const hasError = !!(touched && error?.length);\r\n  const minuteStep = config?.minuteStep ?? 15;\r\n  const timeFormat = config?.format ?? \"12h\";\r\n\r\n  const timeOptions = useMemo(\r\n    () => generateTimeOptions(minuteStep, timeFormat),\r\n    [minuteStep, timeFormat],\r\n  );\r\n\r\n  const aria = fieldAria(field, hasError);\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <Select\r\n        value={(value as string) || undefined}\r\n        onValueChange={(val) => onChange(val)}\r\n        disabled={disabled || readonly}\r\n      >\r\n        <SelectTrigger\r\n          id={aria.id}\r\n          aria-describedby={aria[\"aria-describedby\"]}\r\n          aria-invalid={aria[\"aria-invalid\"]}\r\n          aria-required={aria[\"aria-required\"]}\r\n          className=\"w-full\"\r\n          onBlur={onBlur}\r\n          onFocus={onFocus}\r\n        >\r\n          <div className=\"flex items-center gap-2\">\r\n            <ClockIcon className=\"size-4 text-muted-foreground\" />\r\n            <SelectValue placeholder={field.placeholder ?? \"Select time\"} />\r\n          </div>\r\n        </SelectTrigger>\r\n        <SelectContent>\r\n          {timeOptions.map((opt) => (\r\n            <SelectItem key={opt.value} value={opt.value}>\r\n              {opt.label}\r\n            </SelectItem>\r\n          ))}\r\n        </SelectContent>\r\n      </Select>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { Slot } from \"radix-ui\"\r\n\r\nimport { cn } from \"@/utils/index\"\r\n\r\nconst badgeVariants = cva(\r\n  \"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3\",\r\n  {\r\n    variants: {\r\n      variant: {\r\n        default: \"bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\r\n        secondary:\r\n          \"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\r\n        destructive:\r\n          \"bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90\",\r\n        outline:\r\n          \"border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\r\n        ghost: \"[a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\r\n        link: \"text-primary underline-offset-4 [a&]:hover:underline\",\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      variant: \"default\",\r\n    },\r\n  }\r\n)\r\n\r\nfunction Badge({\r\n  className,\r\n  variant = \"default\",\r\n  asChild = false,\r\n  ...props\r\n}: React.ComponentProps<\"span\"> &\r\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\r\n  const Comp = asChild ? Slot.Root : \"span\"\r\n\r\n  return (\r\n    <Comp\r\n      data-slot=\"badge\"\r\n      data-variant={variant}\r\n      className={cn(badgeVariants({ variant }), className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nexport { Badge, badgeVariants }\r\n","import { useState, useCallback } from \"react\";\nimport type { AppointmentConfig, AppointmentSlot } from \"@squaredr/fieldcraft-core\";\nimport type { FieldProps } from \"../../registry/field-registry\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { Button } from \"../ui/button\";\nimport { Badge } from \"../ui/badge\";\nimport { cn } from \"../../utils/cn\";\n\ntype AppointmentValue = {\n  date?: string;\n  time?: string;\n  timezone?: string;\n  status?: string;\n  bookingId?: string;\n  [key: string]: unknown;\n};\n\nfunction formatDateLabel(dateStr: string, timezone?: string): string {\n  try {\n    const date = new Date(dateStr + \"T00:00:00\");\n    return date.toLocaleDateString(undefined, {\n      weekday: \"short\",\n      month: \"short\",\n      day: \"numeric\",\n      timeZone: timezone,\n    });\n  } catch {\n    return dateStr;\n  }\n}\n\nexport function AppointmentField({\n  field,\n  value,\n  error,\n  touched,\n  disabled,\n  readonly,\n  onChange,\n  onBlur,\n  onFocus,\n  customProps,\n  fieldValues,\n}: FieldProps) {\n  const config = field.config as AppointmentConfig | undefined;\n  const selected = value as AppointmentValue | undefined;\n\n  // Resolve timezone\n  let timezone: string | undefined = config?.timezone;\n  if (typeof customProps?.timezone === \"string\" && customProps.timezone) {\n    timezone = customProps.timezone;\n  } else if (config?.timezoneField && fieldValues && typeof fieldValues[config.timezoneField] === \"string\") {\n    timezone = fieldValues[config.timezoneField] as string;\n  } else if (!timezone) {\n    try {\n      timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n    } catch {\n      timezone = undefined;\n    }\n  }\n\n  const slots: AppointmentSlot[] = config?.slots ?? [];\n  const [activeDate, setActiveDate] = useState<string | null>(() => {\n    if (selected?.date) return selected.date;\n    return slots.length > 0 ? slots[0].date : null;\n  });\n\n  const handleDateSelect = useCallback((date: string) => {\n    setActiveDate(date);\n    onFocus?.();\n  }, [onFocus]);\n\n  const handleTimeSelect = useCallback((time: string) => {\n    if (!activeDate || disabled || readonly) return;\n    onChange({\n      date: activeDate,\n      time,\n      timezone,\n      status: \"confirmed\",\n    });\n    onBlur();\n  }, [activeDate, disabled, readonly, onChange, onBlur, timezone]);\n\n  const currentSlot = slots.find((s) => s.date === activeDate);\n\n  if (slots.length === 0) {\n    return (\n      <FieldWrapper field={field} error={error} touched={touched}>\n        <div className=\"rounded-lg border border-dashed border-input bg-muted/30 p-4\">\n          <p className=\"text-sm text-muted-foreground\">\n            No appointment slots configured. Provide <code className=\"text-xs bg-muted px-1 rounded\">slots</code> in the schema, or register a custom provider override.\n          </p>\n        </div>\n      </FieldWrapper>\n    );\n  }\n\n  return (\n    <FieldWrapper field={field} error={error} touched={touched}>\n      <div className=\"flex flex-col gap-3\">\n        {/* Header Badges: Duration & Timezone */}\n        <div className=\"flex flex-wrap items-center gap-2\">\n          {config?.duration && (\n            <Badge variant=\"outline\" className=\"gap-1 text-xs font-normal\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} width={12} height={12}>\n                <circle cx=\"12\" cy=\"12\" r=\"10\" />\n                <polyline points=\"12 6 12 12 16 14\" />\n              </svg>\n              {config.duration} min\n            </Badge>\n          )}\n          {timezone && (\n            <Badge variant=\"secondary\" className=\"text-xs font-normal\">\n              {timezone}\n            </Badge>\n          )}\n        </div>\n\n        {/* Date Selection Buttons */}\n        <div className=\"flex flex-wrap gap-2\" role=\"group\" aria-label=\"Available appointment dates\">\n          {slots.map((slot) => {\n            const isSelected = activeDate === slot.date;\n            return (\n              <Button\n                key={slot.date}\n                type=\"button\"\n                variant={isSelected ? \"default\" : \"outline\"}\n                size=\"sm\"\n                className={cn(\"text-xs font-medium\", isSelected && \"shadow-sm\")}\n                disabled={disabled || readonly}\n                onClick={() => handleDateSelect(slot.date)}\n              >\n                {formatDateLabel(slot.date, timezone)}\n              </Button>\n            );\n          })}\n        </div>\n\n        {/* Time Selection Buttons for Active Date */}\n        {currentSlot && currentSlot.times.length > 0 && (\n          <div className=\"flex flex-col gap-1.5 pt-1\">\n            <span className=\"text-xs text-muted-foreground font-medium\">Available Times</span>\n            <div className=\"grid grid-cols-3 sm:grid-cols-4 gap-2\" role=\"group\" aria-label=\"Available appointment times\">\n              {currentSlot.times.map((time: string) => {\n                const isSelected = selected?.date === activeDate && selected?.time === time;\n                return (\n                  <Button\n                    key={time}\n                    type=\"button\"\n                    variant={isSelected ? \"default\" : \"outline\"}\n                    size=\"sm\"\n                    className={cn(\"text-xs\", isSelected && \"ring-2 ring-primary ring-offset-1\")}\n                    disabled={disabled || readonly}\n                    onClick={() => handleTimeSelect(time)}\n                  >\n                    {time}\n                  </Button>\n                );\n              })}\n            </div>\n          </div>\n        )}\n\n        {/* Selected Confirmation Preview */}\n        {selected?.date && selected?.time && (\n          <div className=\"rounded-md border border-input bg-muted/40 px-3 py-2 text-xs flex items-center justify-between\">\n            <span className=\"text-foreground font-medium\">\n              Selected: {formatDateLabel(selected.date, timezone)} at {selected.time}\n            </span>\n            <Badge variant=\"default\" className=\"text-[10px] uppercase\">\n              Confirmed\n            </Badge>\n          </div>\n        )}\n      </div>\n    </FieldWrapper>\n  );\n}\n","/** Format a phone number string for display: (123) 456-7890 */\r\nexport function formatPhone(value: string): string {\r\n  const digits = value.replace(/\\D/g, \"\");\r\n  if (digits.length <= 3) return digits;\r\n  if (digits.length <= 6) return `(${digits.slice(0, 3)}) ${digits.slice(3)}`;\r\n  return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6, 10)}`;\r\n}\r\n\r\n/** Format a number as currency: $1,234.56 */\r\nexport function formatCurrency(\r\n  value: number,\r\n  currency = \"USD\",\r\n  locale = \"en-US\",\r\n): string {\r\n  return new Intl.NumberFormat(locale, {\r\n    style: \"currency\",\r\n    currency,\r\n  }).format(value);\r\n}\r\n\r\n/** Format bytes to human-readable: 1.5 MB */\r\nexport function formatFileSize(bytes: number): string {\r\n  if (bytes === 0) return \"0 B\";\r\n  const units = [\"B\", \"KB\", \"MB\", \"GB\"];\r\n  const i = Math.floor(Math.log(bytes) / Math.log(1024));\r\n  const size = bytes / Math.pow(1024, i);\r\n  return `${size.toFixed(i === 0 ? 0 : 1)} ${units[i]}`;\r\n}\r\n\r\n/** Truncate text with ellipsis */\r\nexport function truncate(text: string, maxLength: number): string {\r\n  if (text.length <= maxLength) return text;\r\n  return text.slice(0, maxLength - 1) + \"\\u2026\";\r\n}\r\n","import { useRef, useState } from \"react\";\r\nimport type { FileUploadConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper } from \"./FieldWrapper\";\r\nimport { formatFileSize } from \"../../utils/format-helpers\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { Button } from \"../ui/button\";\r\n\r\ntype FileEntry = { name: string; size: number; type: string };\r\n\r\nexport function FileUploadField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as FileUploadConfig | undefined;\r\n  const files = (value as FileEntry[]) ?? [];\r\n  const inputRef = useRef<HTMLInputElement>(null);\r\n  const [sizeError, setSizeError] = useState<string | null>(null);\r\n  const maxFiles = config?.maxFiles ?? 1;\r\n  const maxBytes = config?.maxSizeMb ? config.maxSizeMb * 1024 * 1024 : Infinity;\r\n  const accept = config?.accept?.join(\",\");\r\n\r\n  const handleFiles = (fileList: FileList | null) => {\r\n    if (!fileList) return;\r\n    const allFiles: { entry: FileEntry; file: File }[] = Array.from(fileList).map((f) => ({\r\n      entry: { name: f.name, size: f.size, type: f.type },\r\n      file: f,\r\n    }));\r\n\r\n    const accepted: FileEntry[] = [];\r\n    const rejected: string[] = [];\r\n\r\n    for (const { entry } of allFiles) {\r\n      if (entry.size > maxBytes) {\r\n        rejected.push(entry.name);\r\n      } else {\r\n        accepted.push(entry);\r\n      }\r\n    }\r\n\r\n    if (rejected.length > 0) {\r\n      setSizeError(\r\n        `${rejected.join(\", \")} exceeded the ${config!.maxSizeMb}MB limit`,\r\n      );\r\n    } else {\r\n      setSizeError(null);\r\n    }\r\n\r\n    if (accepted.length > 0) {\r\n      const merged = [...files, ...accepted].slice(0, maxFiles);\r\n      onChange(merged);\r\n    }\r\n    onBlur();\r\n  };\r\n\r\n  const removeFile = (index: number) => {\r\n    onChange(files.filter((_, i) => i !== index));\r\n  };\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <div\r\n        className={cn(\r\n          \"relative z-10 flex flex-col items-center gap-2 rounded-lg border-2 border-dashed border-input p-6 transition-colors\",\r\n          !disabled && !readonly && \"hover:border-ring hover:bg-accent/50\",\r\n          (disabled || readonly) && \"opacity-50 cursor-not-allowed\",\r\n        )}\r\n        onDragOver={(e) => { e.preventDefault(); e.stopPropagation(); }}\r\n        onDrop={(e) => {\r\n          e.preventDefault();\r\n          e.stopPropagation();\r\n          if (!disabled && !readonly) handleFiles(e.dataTransfer.files);\r\n        }}\r\n      >\r\n        <input\r\n          ref={inputRef}\r\n          type=\"file\"\r\n          className=\"sr-only\"\r\n          accept={accept}\r\n          multiple={maxFiles > 1}\r\n          disabled={disabled || readonly}\r\n          onChange={(e) => handleFiles(e.target.files)}\r\n          onFocus={onFocus}\r\n          aria-label={field.label}\r\n        />\r\n        <Button\r\n          type=\"button\"\r\n          variant=\"outline\"\r\n          size=\"sm\"\r\n          disabled={disabled || readonly || files.length >= maxFiles}\r\n          onClick={() => inputRef.current?.click()}\r\n        >\r\n          Choose file{maxFiles > 1 ? \"s\" : \"\"}\r\n        </Button>\r\n        <p className=\"text-xs text-muted-foreground\">\r\n          or drag and drop\r\n          {config?.maxSizeMb ? ` (max ${config.maxSizeMb}MB)` : \"\"}\r\n        </p>\r\n      </div>\r\n\r\n      {sizeError && (\r\n        <p role=\"alert\" className=\"text-sm text-destructive mt-1\">\r\n          {sizeError}\r\n        </p>\r\n      )}\r\n\r\n      {files.length > 0 && (\r\n        <ul className=\"flex flex-col gap-1 mt-2 list-none p-0 m-0\">\r\n          {files.map((f, i) => (\r\n            <li key={`${f.name}-${i}`} className=\"flex items-center gap-2 text-sm rounded-md border border-input px-3 py-1.5\">\r\n              <span className=\"flex-1 truncate\">{f.name}</span>\r\n              <span className=\"text-xs text-muted-foreground shrink-0\">{formatFileSize(f.size)}</span>\r\n              <button\r\n                type=\"button\"\r\n                className=\"text-muted-foreground hover:text-destructive transition-colors shrink-0 p-0.5\"\r\n                onClick={() => removeFile(i)}\r\n                aria-label={`Remove ${f.name}`}\r\n                disabled={disabled || readonly}\r\n              >\r\n                &times;\r\n              </button>\r\n            </li>\r\n          ))}\r\n        </ul>\r\n      )}\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import { useRef, useEffect, useCallback } from \"react\";\nimport type { SignatureConfig } from \"@squaredr/fieldcraft-core\";\nimport type { FieldProps } from \"../../registry/field-registry\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { Button } from \"../ui/button\";\n\nexport function SignatureField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\n  const config = field.config as SignatureConfig | undefined;\n  const canvasRef = useRef<HTMLCanvasElement>(null);\n  const drawingRef = useRef(false);\n  const width = config?.width ?? 400;\n  const height = config?.height ?? 200;\n\n  // Restore signature from data URL\n  useEffect(() => {\n    const canvas = canvasRef.current;\n    if (!canvas) return;\n    const ctx = canvas.getContext(\"2d\");\n    if (!ctx) return;\n    ctx.clearRect(0, 0, width, height);\n    if (!value) return;\n    const img = new Image();\n    img.onload = () => ctx.drawImage(img, 0, 0);\n    img.src = value as string;\n  }, [value, width, height]);\n\n  const startDraw = useCallback(\n    (e: React.MouseEvent<HTMLCanvasElement> | React.TouchEvent<HTMLCanvasElement>) => {\n      if (disabled || readonly) return;\n      drawingRef.current = true;\n      const canvas = canvasRef.current;\n      if (!canvas) return;\n      const ctx = canvas.getContext(\"2d\");\n      if (!ctx) return;\n      const rect = canvas.getBoundingClientRect();\n      const point = \"touches\" in e ? e.touches[0] : e;\n      ctx.beginPath();\n      ctx.moveTo(point.clientX - rect.left, point.clientY - rect.top);\n    },\n    [disabled, readonly],\n  );\n\n  const draw = useCallback(\n    (e: React.MouseEvent<HTMLCanvasElement> | React.TouchEvent<HTMLCanvasElement>) => {\n      if (!drawingRef.current || disabled || readonly) return;\n      const canvas = canvasRef.current;\n      if (!canvas) return;\n      const ctx = canvas.getContext(\"2d\");\n      if (!ctx) return;\n      const rect = canvas.getBoundingClientRect();\n      const point = \"touches\" in e ? e.touches[0] : e;\n      ctx.strokeStyle = config?.penColor ?? \"#000000\";\n      ctx.lineWidth = 2;\n      ctx.lineCap = \"round\";\n      ctx.lineTo(point.clientX - rect.left, point.clientY - rect.top);\n      ctx.stroke();\n    },\n    [config?.penColor, disabled, readonly],\n  );\n\n  const endDraw = useCallback(() => {\n    if (!drawingRef.current) return;\n    drawingRef.current = false;\n    const canvas = canvasRef.current;\n    if (!canvas) return;\n    onChange(canvas.toDataURL(\"image/png\"));\n    onBlur();\n  }, [onChange, onBlur]);\n\n  const clear = useCallback(() => {\n    const canvas = canvasRef.current;\n    if (!canvas) return;\n    const ctx = canvas.getContext(\"2d\");\n    if (!ctx) return;\n    ctx.clearRect(0, 0, width, height);\n    onChange(undefined);\n  }, [width, height, onChange]);\n\n  return (\n    <FieldWrapper field={field} error={error} touched={touched}>\n      <div className=\"flex flex-col gap-2\">\n        <canvas\n          ref={canvasRef}\n          width={width}\n          height={height}\n          className={`rounded-md border border-input touch-none ${disabled || readonly ? \"cursor-not-allowed opacity-50\" : \"cursor-crosshair\"}`}\n          style={{ backgroundColor: config?.backgroundColor ?? \"#ffffff\" }}\n          onMouseDown={startDraw}\n          onMouseMove={draw}\n          onMouseUp={endDraw}\n          onMouseLeave={endDraw}\n          onTouchStart={startDraw}\n          onTouchMove={draw}\n          onTouchEnd={endDraw}\n          onFocus={onFocus}\n          aria-label={`${field.label} signature pad`}\n        />\n        <Button\n          type=\"button\"\n          variant=\"ghost\"\n          size=\"xs\"\n          className=\"self-end text-xs text-muted-foreground hover:text-foreground\"\n          onClick={clear}\n          disabled={disabled || readonly}\n        >\n          Clear signature\n        </Button>\n      </div>\n    </FieldWrapper>\n  );\n}\n","import { useRef, useState } from \"react\";\r\nimport type { ImageCaptureConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper } from \"./FieldWrapper\";\r\nimport { Button } from \"../ui/button\";\r\n\r\nexport function ImageCaptureField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as ImageCaptureConfig | undefined;\r\n  const inputRef = useRef<HTMLInputElement>(null);\r\n  const imageUrl = value as string | undefined;\r\n  const allowGallery = config?.allowGallery !== false;\r\n  const [sizeError, setSizeError] = useState<string | null>(null);\r\n\r\n  const handleFile = (fileList: FileList | null) => {\r\n    if (!fileList || fileList.length === 0) return;\r\n    const file = fileList[0];\r\n    const maxSizeMb = config?.maxSizeMb;\r\n    if (maxSizeMb && maxSizeMb > 0 && file.size > maxSizeMb * 1024 * 1024) {\r\n      setSizeError(`File exceeds ${maxSizeMb} MB limit`);\r\n      return;\r\n    }\r\n    setSizeError(null);\r\n    const reader = new FileReader();\r\n    reader.onload = () => {\r\n      onChange(reader.result as string);\r\n      onBlur();\r\n    };\r\n    reader.readAsDataURL(file);\r\n  };\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <div className=\"flex flex-col gap-3\">\r\n        <input\r\n          ref={inputRef}\r\n          type=\"file\"\r\n          accept=\"image/*\"\r\n          capture={allowGallery ? undefined : (config?.camera === \"front\" ? \"user\" : \"environment\")}\r\n          className=\"sr-only\"\r\n          disabled={disabled || readonly}\r\n          onChange={(e) => handleFile(e.target.files)}\r\n          onFocus={onFocus}\r\n          aria-label={field.label}\r\n        />\r\n\r\n        {imageUrl ? (\r\n          <div className=\"flex flex-col gap-2\">\r\n            <img src={imageUrl} alt=\"Captured\" className=\"max-w-full rounded-md border border-input\" />\r\n            <Button\r\n              type=\"button\"\r\n              variant=\"outline\"\r\n              size=\"sm\"\r\n              onClick={() => onChange(undefined)}\r\n              disabled={disabled || readonly}\r\n            >\r\n              Remove\r\n            </Button>\r\n          </div>\r\n        ) : (\r\n          <Button\r\n            type=\"button\"\r\n            onClick={() => inputRef.current?.click()}\r\n            disabled={disabled || readonly}\r\n          >\r\n            {allowGallery ? \"Take photo or choose from gallery\" : \"Take photo\"}\r\n          </Button>\r\n        )}\r\n        {sizeError && (\r\n          <p className=\"text-xs text-destructive\">{sizeError}</p>\r\n        )}\r\n      </div>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import type { AddressConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper } from \"./FieldWrapper\";\r\nimport { Input } from \"../ui/input\";\r\n\r\ntype AddressValue = {\r\n  street?: string;\r\n  street2?: string;\r\n  city?: string;\r\n  state?: string;\r\n  zip?: string;\r\n  country?: string;\r\n};\r\n\r\nconst DEFAULT_FIELDS: AddressConfig[\"fields\"] = [\"street\", \"city\", \"state\", \"zip\", \"country\"];\r\n\r\nexport function AddressField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as AddressConfig | undefined;\r\n  const addr = (value as AddressValue) ?? {};\r\n  const fields = config?.fields ?? DEFAULT_FIELDS;\r\n\r\n  const update = (part: string, val: string) => {\r\n    onChange({ ...addr, [part]: val });\r\n  };\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <div className=\"flex flex-col gap-3\">\r\n        {fields!.includes(\"street\") && (\r\n          <Input\r\n            id={`${field.id}-street`}\r\n            type=\"text\"\r\n            placeholder=\"Street address\"\r\n            value={addr.street ?? \"\"}\r\n            disabled={disabled}\r\n            readOnly={readonly}\r\n            onChange={(e) => update(\"street\", e.target.value)}\r\n            onBlur={onBlur}\r\n            onFocus={onFocus}\r\n            autoComplete=\"address-line1\"\r\n          />\r\n        )}\r\n        {fields!.includes(\"street2\") && (\r\n          <Input\r\n            id={`${field.id}-street2`}\r\n            type=\"text\"\r\n            placeholder=\"Apt, suite, etc. (optional)\"\r\n            value={addr.street2 ?? \"\"}\r\n            disabled={disabled}\r\n            readOnly={readonly}\r\n            onChange={(e) => update(\"street2\", e.target.value)}\r\n            onBlur={onBlur}\r\n            autoComplete=\"address-line2\"\r\n          />\r\n        )}\r\n        <div className=\"flex gap-3\">\r\n          {fields!.includes(\"city\") && (\r\n            <Input\r\n              id={`${field.id}-city`}\r\n              type=\"text\"\r\n              className=\"flex-1\"\r\n              placeholder=\"City\"\r\n              value={addr.city ?? \"\"}\r\n              disabled={disabled}\r\n              readOnly={readonly}\r\n              onChange={(e) => update(\"city\", e.target.value)}\r\n              onBlur={onBlur}\r\n              autoComplete=\"address-level2\"\r\n            />\r\n          )}\r\n          {fields!.includes(\"state\") && (\r\n            <Input\r\n              id={`${field.id}-state`}\r\n              type=\"text\"\r\n              className=\"flex-1\"\r\n              placeholder=\"State / Province\"\r\n              value={addr.state ?? \"\"}\r\n              disabled={disabled}\r\n              readOnly={readonly}\r\n              onChange={(e) => update(\"state\", e.target.value)}\r\n              onBlur={onBlur}\r\n              autoComplete=\"address-level1\"\r\n            />\r\n          )}\r\n          {fields!.includes(\"zip\") && (\r\n            <Input\r\n              id={`${field.id}-zip`}\r\n              type=\"text\"\r\n              className=\"w-32 shrink-0\"\r\n              placeholder=\"ZIP / Postal\"\r\n              value={addr.zip ?? \"\"}\r\n              disabled={disabled}\r\n              readOnly={readonly}\r\n              onChange={(e) => update(\"zip\", e.target.value)}\r\n              onBlur={onBlur}\r\n              autoComplete=\"postal-code\"\r\n            />\r\n          )}\r\n        </div>\r\n        {fields!.includes(\"country\") && (\r\n          <Input\r\n            id={`${field.id}-country`}\r\n            type=\"text\"\r\n            placeholder=\"Country\"\r\n            value={addr.country ?? config?.defaultCountry ?? \"\"}\r\n            disabled={disabled}\r\n            readOnly={readonly}\r\n            onChange={(e) => update(\"country\", e.target.value)}\r\n            onBlur={onBlur}\r\n            autoComplete=\"country-name\"\r\n          />\r\n        )}\r\n      </div>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import * as React from \"react\"\r\n\r\nimport { cn } from \"@/utils/index\"\r\n\r\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"card\"\r\n      className={cn(\r\n        \"flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"card-header\"\r\n      className={cn(\r\n        \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"card-title\"\r\n      className={cn(\"leading-none font-semibold\", className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"card-description\"\r\n      className={cn(\"text-sm text-muted-foreground\", className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"card-action\"\r\n      className={cn(\r\n        \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"card-content\"\r\n      className={cn(\"px-6\", className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"card-footer\"\r\n      className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nexport {\r\n  Card,\r\n  CardHeader,\r\n  CardFooter,\r\n  CardTitle,\r\n  CardAction,\r\n  CardDescription,\r\n  CardContent,\r\n}\r\n","import type { PaymentConfig } from \"@squaredr/fieldcraft-core\";\nimport type { FieldProps } from \"../../registry/field-registry\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { Card, CardHeader, CardTitle, CardContent } from \"../ui/card\";\nimport { Badge } from \"../ui/badge\";\n\nexport function PaymentField({\n  field,\n  value: _value,\n  error,\n  touched,\n  disabled: _disabled,\n  readonly: _readonly,\n  onChange: _onChange,\n  onBlur: _onBlur,\n  onFocus: _onFocus,\n}: FieldProps) {\n  const config = field.config as PaymentConfig | undefined;\n\n  return (\n    <FieldWrapper field={field} error={error} touched={touched}>\n      <Card className=\"py-4 gap-3 bg-muted/30\">\n        <CardHeader className=\"px-4 py-0 flex flex-row items-center justify-between\">\n          <div className=\"flex items-center gap-2\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={1.5} width={18} height={18} className=\"text-muted-foreground\">\n              <rect x=\"1\" y=\"4\" width=\"22\" height=\"16\" rx=\"2\" ry=\"2\" />\n              <line x1=\"1\" y1=\"10\" x2=\"23\" y2=\"10\" />\n            </svg>\n            <CardTitle className=\"text-sm font-medium\">\n              Payment Checkout\n            </CardTitle>\n          </div>\n          {config?.provider && (\n            <Badge variant=\"outline\" className=\"text-xs uppercase font-normal\">\n              {config.provider}\n            </Badge>\n          )}\n        </CardHeader>\n        <CardContent className=\"px-4 py-0 flex flex-col gap-2\">\n          {config?.amount != null && (\n            <p className=\"text-sm text-foreground\">\n              <span className=\"font-semibold text-base\">\n                {config.currency ?? \"USD\"} {config.amount.toLocaleString(undefined, { minimumFractionDigits: 2 })}\n              </span>\n              {config.description && (\n                <span className=\"text-muted-foreground text-xs ml-2\">({config.description})</span>\n              )}\n            </p>\n          )}\n          <p className=\"text-xs text-muted-foreground\">\n            Payment processing requires <code className=\"bg-muted px-1 rounded font-mono text-[11px]\">@squaredr/fieldcraft-pro</code> or\n            a custom field component override registered via the field registry.\n          </p>\n        </CardContent>\n      </Card>\n    </FieldWrapper>\n  );\n}\n","import * as React from \"react\"\r\n\r\nimport { cn } from \"@/utils/index\"\r\n\r\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"table-container\"\r\n      className=\"relative w-full overflow-x-auto\"\r\n    >\r\n      <table\r\n        data-slot=\"table\"\r\n        className={cn(\"w-full caption-bottom text-sm\", className)}\r\n        {...props}\r\n      />\r\n    </div>\r\n  )\r\n}\r\n\r\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\r\n  return (\r\n    <thead\r\n      data-slot=\"table-header\"\r\n      className={cn(\"[&_tr]:border-b\", className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\r\n  return (\r\n    <tbody\r\n      data-slot=\"table-body\"\r\n      className={cn(\"[&_tr:last-child]:border-0\", className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\r\n  return (\r\n    <tfoot\r\n      data-slot=\"table-footer\"\r\n      className={cn(\r\n        \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\r\n  return (\r\n    <tr\r\n      data-slot=\"table-row\"\r\n      className={cn(\r\n        \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\r\n  return (\r\n    <th\r\n      data-slot=\"table-head\"\r\n      className={cn(\r\n        \"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\r\n  return (\r\n    <td\r\n      data-slot=\"table-cell\"\r\n      className={cn(\r\n        \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction TableCaption({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<\"caption\">) {\r\n  return (\r\n    <caption\r\n      data-slot=\"table-caption\"\r\n      className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nexport {\r\n  Table,\r\n  TableHeader,\r\n  TableBody,\r\n  TableFooter,\r\n  TableHead,\r\n  TableRow,\r\n  TableCell,\r\n  TableCaption,\r\n}\r\n","import type { MatrixConfig } from \"@squaredr/fieldcraft-core\";\nimport type { FieldProps } from \"../../registry/field-registry\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { Table, TableHeader, TableBody, TableRow, TableHead, TableCell } from \"../ui/table\";\n\ntype MatrixValue = Record<string, string | string[]>;\n\nexport function MatrixField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\n  const config = field.config as MatrixConfig | undefined;\n  if (!config) return null;\n  const { rows, columns, inputType = \"radio\" } = config;\n  const matrix = (value as MatrixValue) ?? {};\n\n  const updateCell = (rowValue: string, colValue: string) => {\n    const next = { ...matrix };\n    if (inputType === \"checkbox\") {\n      const current = (next[rowValue] as string[]) ?? [];\n      next[rowValue] = current.includes(colValue)\n        ? current.filter((v) => v !== colValue)\n        : [...current, colValue];\n    } else {\n      next[rowValue] = colValue;\n    }\n    onChange(next);\n    onBlur();\n  };\n\n  return (\n    <FieldWrapper field={field} error={error} touched={touched}>\n      <div className=\"overflow-x-auto rounded-md border border-input\" role=\"region\" aria-label={field.label}>\n        <Table>\n          <TableHeader>\n            <TableRow className=\"bg-muted/50\">\n              <TableHead className=\"w-1/3\" />\n              {columns.map((col) => (\n                <TableHead key={col.value} className=\"text-center font-medium\">\n                  {col.label}\n                </TableHead>\n              ))}\n            </TableRow>\n          </TableHeader>\n          <TableBody>\n            {rows.map((row) => (\n              <TableRow key={row.value}>\n                <TableCell className=\"font-medium text-foreground\">\n                  {row.label}\n                </TableCell>\n                {columns.map((col) => {\n                  const checked =\n                    inputType === \"checkbox\"\n                      ? ((matrix[row.value] as string[]) ?? []).includes(col.value)\n                      : matrix[row.value] === col.value;\n                  return (\n                    <TableCell key={col.value} className=\"text-center\">\n                      <input\n                        type={inputType === \"checkbox\" ? \"checkbox\" : \"radio\"}\n                        name={`${field.id}-${row.value}`}\n                        checked={checked}\n                        disabled={disabled || readonly}\n                        onChange={() => updateCell(row.value, col.value)}\n                        onFocus={onFocus}\n                        className=\"accent-primary h-4 w-4 cursor-pointer disabled:cursor-not-allowed\"\n                        aria-label={`${row.label}: ${col.label}`}\n                      />\n                    </TableCell>\n                  );\n                })}\n              </TableRow>\n            ))}\n          </TableBody>\n        </Table>\n      </div>\n    </FieldWrapper>\n  );\n}\n","import type { Question, FormEngineTheme } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldRegistry } from \"../registry/field-registry\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport type FieldRendererProps = {\r\n  field: Question;\r\n  value: unknown;\r\n  error?: string[];\r\n  touched: boolean;\r\n  disabled: boolean;\r\n  readonly: boolean;\r\n  onChange: (value: unknown) => void;\r\n  onBlur: () => void;\r\n  onFocus: () => void;\r\n  theme: FormEngineTheme;\r\n  registry: FieldRegistry;\r\n  fieldValues?: Record<string, unknown>;\r\n};\r\n\r\nconst widthMap: Record<string, string> = {\r\n  half: \"w-1/2\",\r\n  third: \"w-1/3\",\r\n};\r\n\r\nexport function FieldRenderer({\r\n  field,\r\n  value,\r\n  error,\r\n  touched,\r\n  disabled,\r\n  readonly,\r\n  onChange,\r\n  onBlur,\r\n  onFocus,\r\n  theme,\r\n  registry,\r\n  fieldValues,\r\n}: FieldRendererProps) {\r\n  const Component = registry[field.type];\r\n\r\n  if (!Component) {\r\n    return (\r\n      <div className=\"rounded-md border border-destructive p-3\" role=\"alert\">\r\n        <p className=\"text-sm text-destructive\">\r\n          Unsupported field type: <code>{field.type}</code>\r\n        </p>\r\n      </div>\r\n    );\r\n  }\r\n\r\n  const widthClass = widthMap[field.layout?.width as string] ?? \"w-full\";\r\n\r\n  return (\r\n    <div\r\n      className={cn(widthClass, field.layout?.className)}\r\n      style={field.layout?.style as React.CSSProperties | undefined}\r\n      data-field-id={field.id}\r\n    >\r\n      <Component\r\n        field={field}\r\n        value={value}\r\n        error={error}\r\n        touched={touched}\r\n        disabled={disabled}\r\n        readonly={readonly}\r\n        onChange={onChange}\r\n        onBlur={onBlur}\r\n        onFocus={onFocus}\r\n        theme={theme}\r\n        customProps={field.customProps}\r\n        fieldValues={fieldValues}\r\n      />\r\n    </div>\r\n  );\r\n}\r\n","import { createContext, useContext } from \"react\";\r\nimport type { FieldRegistry } from \"./field-registry\";\r\n\r\nconst FieldRegistryContext = createContext<FieldRegistry>({});\r\n\r\nexport function FieldRegistryProvider({\r\n  registry,\r\n  children,\r\n}: {\r\n  registry: FieldRegistry;\r\n  children: React.ReactNode;\r\n}) {\r\n  return (\r\n    <FieldRegistryContext.Provider value={registry}>\r\n      {children}\r\n    </FieldRegistryContext.Provider>\r\n  );\r\n}\r\n\r\nexport function useFieldRegistry(): FieldRegistry {\r\n  return useContext(FieldRegistryContext);\r\n}\r\n","import { useEffect, useRef } from \"react\";\r\nimport type { RepeaterConfig, Question } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper } from \"./FieldWrapper\";\r\nimport { Button } from \"../ui/button\";\r\nimport { FieldRenderer } from \"../FieldRenderer\";\r\nimport { useFieldRegistry } from \"../../registry/FieldRegistryContext\";\r\nimport { useTheme } from \"../../theme/ThemeProvider\";\r\n\r\ntype RepeaterEntry = Record<string, unknown>;\r\n\r\nexport function RepeaterField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as RepeaterConfig | undefined;\r\n  const entries = (value as RepeaterEntry[]) ?? [];\r\n  const subFields = (config?.fields ?? []) as Question[];\r\n  const registry = useFieldRegistry();\r\n  const theme = useTheme();\r\n  const minEntries = config?.minEntries ?? 0;\r\n  const maxEntries = config?.maxEntries ?? Infinity;\r\n\r\n  // Seed default entries on first render when value is empty\r\n  const seeded = useRef(false);\r\n  useEffect(() => {\r\n    if (seeded.current) return;\r\n    seeded.current = true;\r\n    const defaultEntries = config?.defaultEntries ?? 0;\r\n    if (entries.length === 0 && defaultEntries > 0) {\r\n      const count = Math.min(defaultEntries, maxEntries);\r\n      onChange(Array.from({ length: count }, () => ({})));\r\n    }\r\n  }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n  const addEntry = () => {\r\n    if (entries.length >= maxEntries) return;\r\n    onChange([...entries, {}]);\r\n  };\r\n\r\n  const removeEntry = (index: number) => {\r\n    if (entries.length <= minEntries) return;\r\n    onChange(entries.filter((_, i) => i !== index));\r\n  };\r\n\r\n  const updateEntry = (index: number, fieldId: string, val: unknown) => {\r\n    const next = entries.map((entry, i) =>\r\n      i === index ? { ...entry, [fieldId]: val } : entry,\r\n    );\r\n    onChange(next);\r\n    onBlur();\r\n  };\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <div className=\"flex flex-col gap-3\">\r\n        {entries.map((entry, index) => (\r\n          <div key={index} className=\"rounded-lg border border-input bg-card p-4\">\r\n            <div className=\"flex items-center justify-between mb-3\">\r\n              <span className=\"text-sm font-medium text-muted-foreground\">#{index + 1}</span>\r\n              {entries.length > minEntries && (\r\n                <button\r\n                  type=\"button\"\r\n                  className=\"text-xs text-muted-foreground hover:text-destructive transition-colors\"\r\n                  onClick={() => removeEntry(index)}\r\n                  disabled={disabled || readonly}\r\n                  aria-label={config?.removeLabel ?? `Remove entry ${index + 1}`}\r\n                >\r\n                  {config?.removeLabel ?? \"Remove\"}\r\n                </button>\r\n              )}\r\n            </div>\r\n            <div className=\"flex flex-col gap-3\">\r\n              {subFields.map((subField) => (\r\n                <FieldRenderer\r\n                  key={subField.id}\r\n                  field={subField}\r\n                  value={entry[subField.id] ?? undefined}\r\n                  error={undefined}\r\n                  touched={touched}\r\n                  disabled={disabled}\r\n                  readonly={readonly}\r\n                  onChange={(val) => updateEntry(index, subField.id, val)}\r\n                  onBlur={onBlur}\r\n                  onFocus={onFocus}\r\n                  theme={theme}\r\n                  registry={registry}\r\n                />\r\n              ))}\r\n            </div>\r\n          </div>\r\n        ))}\r\n\r\n        <Button\r\n          type=\"button\"\r\n          variant=\"outline\"\r\n          size=\"sm\"\r\n          onClick={addEntry}\r\n          disabled={disabled || readonly || entries.length >= maxEntries}\r\n        >\r\n          {config?.addLabel ?? \"+ Add entry\"}\r\n        </Button>\r\n      </div>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import type { CalculatedConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper } from \"./FieldWrapper\";\r\n\r\nexport function CalculatedField({ field, value, error, touched, disabled: _disabled, readonly: _readonly, onChange: _onChange, onBlur: _onBlur, onFocus: _onFocus }: FieldProps) {\r\n  const config = field.config as CalculatedConfig | undefined;\r\n  if (config?.visible === false) return null;\r\n\r\n  const formatted = formatValue(value, config);\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <div className=\"rounded-md bg-muted/50 px-4 py-2\" aria-live=\"polite\">\r\n        <span className=\"text-lg font-semibold text-foreground\">\r\n          {config?.prefix}{formatted}{config?.suffix}\r\n        </span>\r\n      </div>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n\r\nfunction formatValue(val: unknown, config?: CalculatedConfig): string {\r\n  if (val == null) return \"\\u2014\";\r\n  if (typeof val === \"string\") return val;\r\n  if (typeof val === \"number\") {\r\n    const decimals = config?.decimalPlaces ?? 2;\r\n    if (config?.format === \"percentage\") return `${val.toFixed(decimals)}%`;\r\n    if (config?.format === \"currency\") return val.toFixed(decimals);\r\n    return val.toFixed(decimals);\r\n  }\r\n  return String(val);\r\n}\r\n","import { useEffect, useRef } from \"react\";\r\nimport type { HiddenConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\n\r\n/**\r\n * Hidden fields render nothing visible but still hold a value in form state.\r\n * On mount, auto-resolves value based on `config.source`:\r\n * - `\"url_param\"` → reads from URL query params via `config.paramName`\r\n * - `\"cookie\"` → reads from `document.cookie` via `config.cookieName`\r\n * - `\"referrer\"` → reads `document.referrer`\r\n * - `\"static\"` → handled by core's prefill-resolver (no action here)\r\n */\r\nexport function HiddenField({ field, value, onChange }: FieldProps) {\r\n  const config = field.config as HiddenConfig | undefined;\r\n  const resolved = useRef(false);\r\n\r\n  useEffect(() => {\r\n    if (resolved.current) return;\r\n    resolved.current = true;\r\n    // Only auto-resolve if current value is empty\r\n    if (value != null && value !== \"\") return;\r\n    if (typeof window === \"undefined\" || !config?.source) return;\r\n\r\n    let resolved_value: string | undefined;\r\n\r\n    if (config.source === \"url_param\" && config.paramName) {\r\n      try {\r\n        resolved_value = new URLSearchParams(window.location.search).get(config.paramName) ?? undefined;\r\n      } catch { /* SSR or invalid URL */ }\r\n    } else if (config.source === \"cookie\" && config.cookieName) {\r\n      try {\r\n        const match = document.cookie.split(\"; \").find((c) => c.startsWith(`${config.cookieName}=`));\r\n        if (match) resolved_value = decodeURIComponent(match.split(\"=\").slice(1).join(\"=\"));\r\n      } catch { /* SSR or cookie parsing error */ }\r\n    } else if (config.source === \"referrer\") {\r\n      try {\r\n        if (document.referrer) resolved_value = document.referrer;\r\n      } catch { /* SSR */ }\r\n    }\r\n\r\n    if (resolved_value != null) {\r\n      onChange(resolved_value);\r\n    }\r\n  }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n  return (\r\n    <input\r\n      type=\"hidden\"\r\n      id={field.id}\r\n      name={field.id}\r\n      value={value != null ? String(value) : \"\"}\r\n    />\r\n  );\r\n}\r\n","import type { ScoringConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper } from \"./FieldWrapper\";\r\nimport { RadioGroup, RadioGroupItem } from \"../ui/radio-group\";\r\nimport { Label } from \"../ui/label\";\r\nimport { Badge } from \"../ui/badge\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport function ScoringField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as ScoringConfig | undefined;\r\n  const options = config?.options ?? [];\r\n  const current = value as string | undefined;\r\n  const hasError = touched && !!error?.length;\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched}>\r\n      <RadioGroup\r\n        value={current || undefined}\r\n        onValueChange={(val) => { onChange(val); onBlur(); }}\r\n        disabled={disabled || readonly}\r\n        className=\"flex flex-col gap-2\"\r\n        aria-label={field.label}\r\n        onFocus={onFocus}\r\n        {...(hasError ? { \"aria-invalid\": true } : {})}\r\n      >\r\n        {options.map((opt) => {\r\n          const optId = `${field.id}-${opt.value}`;\r\n          const isSelected = current === opt.value;\r\n          return (\r\n            <Label\r\n              key={opt.value}\r\n              htmlFor={optId}\r\n              className={cn(\r\n                \"flex items-center gap-3 rounded-lg border px-4 py-3 cursor-pointer transition-colors font-normal\",\r\n                isSelected\r\n                  ? \"fc-option-active\"\r\n                  : \"border-input hover:bg-accent\",\r\n                (disabled || readonly) && \"cursor-not-allowed opacity-50\",\r\n              )}\r\n            >\r\n              <RadioGroupItem value={opt.value} id={optId} />\r\n              <span className=\"text-sm font-medium flex-1\">{opt.label}</span>\r\n              {config?.showScore && (\r\n                <Badge variant=\"secondary\" className=\"text-xs\">\r\n                  {opt.score} pts\r\n                </Badge>\r\n              )}\r\n            </Label>\r\n          );\r\n        })}\r\n      </RadioGroup>\r\n      {current && config?.scoreRanges?.length ? (() => {\r\n        const selectedOpt = options.find((o) => o.value === current);\r\n        if (!selectedOpt) return null;\r\n        const score = selectedOpt.score;\r\n        const range = config.scoreRanges.find((r) => score >= r.min && score <= r.max);\r\n        if (!range) return null;\r\n        return (\r\n          <div\r\n            className=\"mt-3 rounded-md border px-3 py-2 text-sm\"\r\n            style={range.color ? { borderColor: range.color, color: range.color } : undefined}\r\n          >\r\n            <span className=\"font-medium\">{range.label}</span>\r\n            {range.description && <span className=\"text-muted-foreground ml-2\">— {range.description}</span>}\r\n          </div>\r\n        );\r\n      })() : null}\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import { useState } from \"react\";\r\nimport type { ConsentConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { FieldWrapper } from \"./FieldWrapper\";\r\nimport { Checkbox } from \"../ui/checkbox\";\r\n\r\ntype ConsentValue = boolean | { agreed: boolean; version?: string; timestamp?: string };\r\n\r\nexport function ConsentField({ field, value, error, touched, disabled, readonly, onChange, onBlur, onFocus }: FieldProps) {\r\n  const config = field.config as ConsentConfig | undefined;\r\n  const needsEnriched = !!(config?.consentVersion || config?.recordTimestamp);\r\n\r\n  const checked = needsEnriched\r\n    ? (value as { agreed?: boolean } | undefined)?.agreed === true\r\n    : value === true;\r\n\r\n  const [expanded, setExpanded] = useState(false);\r\n\r\n  const handleChange = (val: boolean) => {\r\n    if (needsEnriched) {\r\n      const enriched: ConsentValue = {\r\n        agreed: val,\r\n        ...(config?.consentVersion ? { version: config.consentVersion } : {}),\r\n        ...(config?.recordTimestamp && val ? { timestamp: new Date().toISOString() } : {}),\r\n      };\r\n      onChange(enriched);\r\n    } else {\r\n      onChange(val);\r\n    }\r\n    onBlur();\r\n  };\r\n\r\n  return (\r\n    <FieldWrapper field={field} error={error} touched={touched} hideLabel>\r\n      <div className=\"flex flex-col gap-2\">\r\n        <label className=\"flex items-start gap-3 cursor-pointer\">\r\n          <Checkbox\r\n            id={field.id}\r\n            checked={checked}\r\n            disabled={disabled || readonly}\r\n            onCheckedChange={(val) => handleChange(val === true)}\r\n            onFocus={onFocus}\r\n            aria-required={field.required ? true : undefined}\r\n            className=\"mt-0.5\"\r\n          />\r\n          <span className=\"text-sm leading-relaxed\">\r\n            {config?.checkboxLabel ?? config?.text ?? field.label}\r\n          </span>\r\n        </label>\r\n\r\n        {config?.expandableText && (\r\n          <>\r\n            <button\r\n              type=\"button\"\r\n              className=\"self-start text-xs text-primary hover:underline\"\r\n              onClick={() => setExpanded(!expanded)}\r\n              aria-expanded={expanded}\r\n            >\r\n              {expanded ? \"Show less\" : \"Read more\"}\r\n            </button>\r\n            {expanded && (\r\n              <div className=\"text-xs text-muted-foreground rounded-md bg-muted/50 p-3 leading-relaxed\">\r\n                {config.expandableText}\r\n              </div>\r\n            )}\r\n          </>\r\n        )}\r\n      </div>\r\n    </FieldWrapper>\r\n  );\r\n}\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/utils/index\"\r\n\r\nconst alertVariants = cva(\r\n  \"relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\r\n  {\r\n    variants: {\r\n      variant: {\r\n        default: \"bg-card text-card-foreground\",\r\n        destructive:\r\n          \"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current\",\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      variant: \"default\",\r\n    },\r\n  }\r\n)\r\n\r\nfunction Alert({\r\n  className,\r\n  variant,\r\n  ...props\r\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\r\n  return (\r\n    <div\r\n      data-slot=\"alert\"\r\n      role=\"alert\"\r\n      className={cn(alertVariants({ variant }), className)}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"alert-title\"\r\n      className={cn(\r\n        \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction AlertDescription({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"alert-description\"\r\n      className={cn(\r\n        \"col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nexport { Alert, AlertTitle, AlertDescription }\r\n","import type { InfoBlockConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { Alert, AlertTitle, AlertDescription } from \"../ui/alert\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nconst variantStyles: Record<string, string> = {\r\n  info: \"border-primary/30 bg-primary/5 text-foreground\",\r\n  warning: \"border-yellow-500/30 bg-yellow-50 text-foreground\",\r\n  error: \"border-destructive/30 bg-destructive/5 text-foreground\",\r\n  success: \"border-green-500/30 bg-green-50 text-foreground\",\r\n};\r\n\r\nexport function InfoBlockField({ field, value: _value, error: _error, touched: _touched, disabled: _disabled, readonly: _readonly, onChange: _onChange, onBlur: _onBlur, onFocus: _onFocus }: FieldProps) {\r\n  const config = field.config as InfoBlockConfig | undefined;\r\n  const variant = config?.variant ?? \"info\";\r\n\r\n  return (\r\n    <Alert\r\n      className={cn(variantStyles[variant] ?? variantStyles.info)}\r\n      role={variant === \"warning\" || variant === \"error\" ? \"alert\" : \"note\"}\r\n      aria-label={field.label}\r\n    >\r\n      {field.label && <AlertTitle>{field.label}</AlertTitle>}\r\n      <AlertDescription>\r\n        {config?.content ?? field.helpText}\r\n      </AlertDescription>\r\n    </Alert>\r\n  );\r\n}\r\n","import type { SectionHeaderConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport function SectionHeaderField({ field, value: _value, error: _error, touched: _touched, disabled: _disabled, readonly: _readonly, onChange: _onChange, onBlur: _onBlur, onFocus: _onFocus }: FieldProps) {\r\n  const config = field.config as SectionHeaderConfig | undefined;\r\n  const level = config?.level ?? \"h2\";\r\n  const showDivider = config?.showDivider ?? true;\r\n  const Tag = level;\r\n\r\n  return (\r\n    <div className=\"fc-section-header\" role=\"presentation\">\r\n      <Tag\r\n        className={cn(\r\n          \"fc-section-header__title\",\r\n          level === \"h2\" && \"text-xl font-semibold\",\r\n          level === \"h3\" && \"text-lg font-semibold\",\r\n          level === \"h4\" && \"text-base font-semibold\",\r\n        )}\r\n      >\r\n        {field.label}\r\n      </Tag>\r\n      {field.helpText && (\r\n        <p className=\"fc-section-header__description text-sm text-muted-foreground mt-1\">\r\n          {field.helpText}\r\n        </p>\r\n      )}\r\n      {showDivider && (\r\n        <hr className=\"fc-section-header__divider border-border mt-3\" />\r\n      )}\r\n    </div>\r\n  );\r\n}\r\n","import type { PageBreakConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\n\r\nexport function PageBreakField({ field, value: _value, error: _error, touched: _touched, disabled: _disabled, readonly: _readonly, onChange: _onChange, onBlur: _onBlur, onFocus: _onFocus }: FieldProps) {\r\n  const config = field.config as PageBreakConfig | undefined;\r\n  const label = config?.label ?? field.label;\r\n\r\n  return (\r\n    <div className=\"fc-page-break\" role=\"separator\" aria-label={label || \"Page break\"}>\r\n      <div className=\"fc-page-break__line flex items-center gap-3 my-4\">\r\n        <hr className=\"fc-page-break__rule flex-1 border-border\" />\r\n        {label && (\r\n          <span className=\"fc-page-break__label text-xs text-muted-foreground uppercase tracking-wider font-medium\">\r\n            {label}\r\n          </span>\r\n        )}\r\n        <hr className=\"fc-page-break__rule flex-1 border-border\" />\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n","import type { WelcomeScreenConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { Button } from \"../ui/button\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport function WelcomeScreenField({ field, value: _value, error: _error, touched: _touched, disabled: _disabled, readonly: _readonly, onChange: _onChange, onBlur: _onBlur, onFocus: _onFocus }: FieldProps) {\r\n  const config = field.config as WelcomeScreenConfig | undefined;\r\n\r\n  if (!config) return null;\r\n\r\n  const alignment = config.alignment ?? \"center\";\r\n  const buttonText = config.buttonText ?? \"Start\";\r\n\r\n  const handleStart = () => {\r\n    const nextElement = document.querySelector('[data-question-index=\"1\"]');\r\n    if (nextElement) {\r\n      nextElement.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div\r\n      className={cn(\r\n        \"fc-screen\",\r\n        alignment === \"center\" && \"fc-screen--center\",\r\n        alignment === \"right\" && \"fc-screen--right\",\r\n        alignment === \"left\" && \"fc-screen--left\",\r\n      )}\r\n    >\r\n      {config.imageUrl && (\r\n        <img\r\n          src={config.imageUrl}\r\n          alt={config.imageAlt ?? \"\"}\r\n          className=\"fc-screen__image\"\r\n        />\r\n      )}\r\n\r\n      <h2 className=\"fc-screen__heading\">\r\n        {config.heading}\r\n      </h2>\r\n\r\n      {config.description && (\r\n        <p className=\"fc-screen__description\">\r\n          {config.description}\r\n        </p>\r\n      )}\r\n\r\n      <Button\r\n        type=\"button\"\r\n        size=\"lg\"\r\n        onClick={handleStart}\r\n        className=\"px-8 text-base font-semibold\"\r\n      >\r\n        {buttonText}\r\n      </Button>\r\n    </div>\r\n  );\r\n}\r\n","import { useEffect } from \"react\";\r\nimport type { ThankYouScreenConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\n\r\nexport function ThankYouScreenField({ field, value: _value, error: _error, touched: _touched, disabled: _disabled, readonly: _readonly, onChange: _onChange, onBlur: _onBlur, onFocus: _onFocus }: FieldProps) {\r\n  const config = field.config as ThankYouScreenConfig | undefined;\r\n  const redirectUrl = config?.redirectUrl;\r\n  const redirectDelay = config?.redirectDelay;\r\n\r\n  // Handle redirect if configured\r\n  useEffect(() => {\r\n    if (redirectUrl && redirectDelay !== undefined && redirectDelay > 0) {\r\n      const timer = setTimeout(() => {\r\n        window.location.href = redirectUrl;\r\n      }, redirectDelay * 1000);\r\n\r\n      return () => clearTimeout(timer);\r\n    }\r\n  }, [redirectUrl, redirectDelay]);\r\n\r\n  if (!config) return null;\r\n\r\n  return (\r\n    <div className=\"fc-screen fc-screen--center\">\r\n      {config.imageUrl && (\r\n        <img\r\n          src={config.imageUrl}\r\n          alt={config.imageAlt ?? \"\"}\r\n          className=\"fc-screen__image\"\r\n        />\r\n      )}\r\n\r\n      <h2 className=\"fc-screen__heading\">\r\n        {config.heading}\r\n      </h2>\r\n\r\n      {config.description && (\r\n        <p className=\"fc-screen__description\">\r\n          {config.description}\r\n        </p>\r\n      )}\r\n\r\n      {config.redirectUrl && config.redirectDelay && config.redirectDelay > 0 && (\r\n        <p className=\"fc-screen__redirect\">\r\n          Redirecting in {config.redirectDelay} seconds...\r\n        </p>\r\n      )}\r\n\r\n      {config.showSummary && (\r\n        <div className=\"fc-screen__summary\">\r\n          <p>Your response has been recorded.</p>\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n}\r\n","import { useMemo } from \"react\";\r\nimport DOMPurify from \"dompurify\";\r\nimport type { RichTextConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\n\r\n/**\r\n * Simple markdown to HTML converter for basic formatting\r\n * Supports: bold, italic, links, headings, lists\r\n */\r\nfunction markdownToHtml(markdown: string): string {\r\n  let html = markdown;\r\n\r\n  // Headings\r\n  html = html.replace(/^### (.*$)/gim, \"<h3>$1</h3>\");\r\n  html = html.replace(/^## (.*$)/gim, \"<h2>$1</h2>\");\r\n  html = html.replace(/^# (.*$)/gim, \"<h1>$1</h1>\");\r\n\r\n  // Bold\r\n  html = html.replace(/\\*\\*(.*?)\\*\\*/g, \"<strong>$1</strong>\");\r\n  html = html.replace(/__(.*?)__/g, \"<strong>$1</strong>\");\r\n\r\n  // Italic\r\n  html = html.replace(/\\*(.*?)\\*/g, \"<em>$1</em>\");\r\n  html = html.replace(/_(.*?)_/g, \"<em>$1</em>\");\r\n\r\n  // Links\r\n  html = html.replace(/\\[(.*?)\\]\\((.*?)\\)/g, '<a href=\"$2\" target=\"_blank\" rel=\"noopener noreferrer\">$1</a>');\r\n\r\n  // Line breaks\r\n  html = html.replace(/\\n/g, \"<br>\");\r\n\r\n  return html;\r\n}\r\n\r\nexport function RichTextField({ field, value: _value, error: _error, touched: _touched, disabled: _disabled, readonly: _readonly, onChange: _onChange, onBlur: _onBlur, onFocus: _onFocus, theme }: FieldProps) {\r\n  const config = field.config as RichTextConfig | undefined;\r\n\r\n  const sanitizedHtml = useMemo(() => {\r\n    if (!config?.content) return \"\";\r\n\r\n    let html = config.content;\r\n\r\n    // Convert markdown to HTML if needed\r\n    if (config.format === \"markdown\") {\r\n      html = markdownToHtml(html);\r\n    }\r\n\r\n    // Sanitize HTML to prevent XSS attacks\r\n    return DOMPurify.sanitize(html, {\r\n      ALLOWED_TAGS: [\r\n        \"p\",\r\n        \"br\",\r\n        \"strong\",\r\n        \"em\",\r\n        \"u\",\r\n        \"h1\",\r\n        \"h2\",\r\n        \"h3\",\r\n        \"h4\",\r\n        \"h5\",\r\n        \"h6\",\r\n        \"ul\",\r\n        \"ol\",\r\n        \"li\",\r\n        \"a\",\r\n        \"blockquote\",\r\n        \"code\",\r\n        \"pre\",\r\n        \"img\",\r\n        \"div\",\r\n        \"span\",\r\n        \"figure\",\r\n        \"figcaption\",\r\n        \"table\",\r\n        \"thead\",\r\n        \"tbody\",\r\n        \"tr\",\r\n        \"th\",\r\n        \"td\",\r\n        \"hr\",\r\n        \"sup\",\r\n        \"sub\",\r\n      ],\r\n      ALLOWED_ATTR: [\"href\", \"target\", \"rel\", \"src\", \"alt\", \"width\", \"height\", \"class\", \"style\"],\r\n    });\r\n  }, [config?.content, config?.format]);\r\n\r\n  if (!config) return null;\r\n\r\n  return (\r\n    <div\r\n      className={config.containerClassName}\r\n      style={{\r\n        padding: \"1rem 0\",\r\n        lineHeight: \"1.6\",\r\n        fontFamily: theme.typography?.fontFamily ?? \"inherit\",\r\n        color: theme.colors?.text ?? \"inherit\",\r\n        ...((config.containerStyle as React.CSSProperties) ?? {}),\r\n      }}\r\n      dangerouslySetInnerHTML={{ __html: sanitizedHtml }}\r\n    />\r\n  );\r\n}\r\n","import type { ImageConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport function ImageField({ field, value: _value, error: _error, touched: _touched, disabled: _disabled, readonly: _readonly, onChange: _onChange, onBlur: _onBlur, onFocus: _onFocus }: FieldProps) {\r\n  const config = field.config as ImageConfig | undefined;\r\n\r\n  if (!config?.src) return null;\r\n\r\n  const alignment = config.alignment ?? \"center\";\r\n\r\n  const ImageElement = (\r\n    <img\r\n      src={config.src}\r\n      alt={config.alt}\r\n      className=\"fc-image__img\"\r\n      style={{\r\n        width: config.width ?? \"100%\",\r\n        ...(config.height ? { height: config.height } : {}),\r\n      }}\r\n      loading=\"lazy\"\r\n    />\r\n  );\r\n\r\n  const content = config.link ? (\r\n    <a href={config.link} target=\"_blank\" rel=\"noopener noreferrer\" className=\"inline-block\">\r\n      {ImageElement}\r\n    </a>\r\n  ) : (\r\n    ImageElement\r\n  );\r\n\r\n  return (\r\n    <figure\r\n      className={cn(\r\n        \"fc-image\",\r\n        alignment === \"center\" && \"fc-image--center\",\r\n        alignment === \"right\" && \"fc-image--right\",\r\n        alignment === \"left\" && \"fc-image--left\",\r\n      )}\r\n    >\r\n      <div style={{ maxWidth: config.width ?? \"100%\" }}>\r\n        {content}\r\n        {config.caption && (\r\n          <figcaption\r\n            className={cn(\r\n              \"fc-image__caption\",\r\n              alignment === \"center\" && \"text-center\",\r\n              alignment === \"right\" && \"text-right\",\r\n              alignment === \"left\" && \"text-left\",\r\n            )}\r\n          >\r\n            {config.caption}\r\n          </figcaption>\r\n        )}\r\n      </div>\r\n    </figure>\r\n  );\r\n}\r\n","import type { VideoConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\n\r\n/**\r\n * Extract YouTube video ID from various URL formats\r\n */\r\nfunction extractYouTubeId(url: string): string {\r\n  const match = url.match(\r\n    /(?:youtube\\.com\\/(?:watch\\?v=|embed\\/)|youtu\\.be\\/)([^&?/]+)/\r\n  );\r\n  return match?.[1] ?? url;\r\n}\r\n\r\n/**\r\n * Extract Vimeo video ID from URL\r\n */\r\nfunction extractVimeoId(url: string): string {\r\n  const match = url.match(/vimeo\\.com\\/(\\d+)/);\r\n  return match?.[1] ?? url;\r\n}\r\n\r\nexport function VideoField({ field, value: _value, error: _error, touched: _touched, disabled: _disabled, readonly: _readonly, onChange: _onChange, onBlur: _onBlur, onFocus: _onFocus }: FieldProps) {\r\n  const config = field.config as VideoConfig | undefined;\r\n\r\n  if (!config?.src || !config?.provider) return null;\r\n\r\n  const widthStyle = config.width ? { maxWidth: config.width } : {};\r\n\r\n  // Render YouTube embed\r\n  if (config.provider === \"youtube\") {\r\n    const videoId = extractYouTubeId(config.src);\r\n    const embedUrl = `https://www.youtube.com/embed/${videoId}${\r\n      config.autoplay ? \"?autoplay=1\" : \"\"\r\n    }${config.muted ? \"&mute=1\" : \"\"}`;\r\n\r\n    return (\r\n      <div className=\"fc-video\" style={widthStyle}>\r\n        <div className=\"fc-video__aspect\">\r\n          <iframe\r\n            src={embedUrl}\r\n            title={field.label || \"YouTube video\"}\r\n            className=\"fc-video__iframe\"\r\n            allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\r\n            allowFullScreen\r\n          />\r\n        </div>\r\n      </div>\r\n    );\r\n  }\r\n\r\n  // Render Vimeo embed\r\n  if (config.provider === \"vimeo\") {\r\n    const videoId = extractVimeoId(config.src);\r\n    const embedUrl = `https://player.vimeo.com/video/${videoId}${\r\n      config.autoplay ? \"?autoplay=1\" : \"\"\r\n    }${config.muted ? \"&muted=1\" : \"\"}`;\r\n\r\n    return (\r\n      <div className=\"fc-video\" style={widthStyle}>\r\n        <div className=\"fc-video__aspect\">\r\n          <iframe\r\n            src={embedUrl}\r\n            title={field.label || \"Vimeo video\"}\r\n            className=\"fc-video__iframe\"\r\n            allow=\"autoplay; fullscreen; picture-in-picture\"\r\n            allowFullScreen\r\n          />\r\n        </div>\r\n      </div>\r\n    );\r\n  }\r\n\r\n  // Render native HTML5 video for direct URLs\r\n  if (config.provider === \"url\") {\r\n    return (\r\n      <div className=\"fc-video\" style={widthStyle}>\r\n        <video\r\n          src={config.src}\r\n          poster={config.poster}\r\n          controls\r\n          autoPlay={config.autoplay}\r\n          muted={config.muted}\r\n          className=\"fc-video__native\"\r\n          style={config.height ? { height: config.height } : undefined}\r\n        >\r\n          Your browser does not support the video tag.\r\n        </video>\r\n      </div>\r\n    );\r\n  }\r\n\r\n  return null;\r\n}\r\n","import * as React from \"react\"\r\nimport { Separator as SeparatorPrimitive } from \"radix-ui\"\r\n\r\nimport { cn } from \"../../utils/cn\"\r\n\r\nfunction Separator({\r\n  className,\r\n  orientation = \"horizontal\",\r\n  decorative = true,\r\n  ...props\r\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\r\n  return (\r\n    <SeparatorPrimitive.Root\r\n      data-slot=\"separator\"\r\n      decorative={decorative}\r\n      orientation={orientation}\r\n      className={cn(\r\n        \"shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nexport { Separator }\r\n","import type { DividerConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\nimport { Separator } from \"../ui/separator\";\r\n\r\nexport function DividerField({ field, value: _value, error: _error, touched: _touched, disabled: _disabled, readonly: _readonly, onChange: _onChange, onBlur: _onBlur, onFocus: _onFocus }: FieldProps) {\r\n  const config = field.config as DividerConfig | undefined;\r\n\r\n  const style = config?.style ?? \"solid\";\r\n  const color = config?.color;\r\n  const thickness = config?.thickness ?? 1;\r\n  const spacing = config?.spacing ?? 16;\r\n\r\n  // For default config (solid, 1px, default color), use the shadcn Separator\r\n  if (!color && style === \"solid\" && thickness === 1) {\r\n    return (\r\n      <div\r\n        className=\"w-full\"\r\n        style={{ paddingBlock: `${spacing}px` }}\r\n        aria-hidden=\"true\"\r\n      >\r\n        <Separator />\r\n      </div>\r\n    );\r\n  }\r\n\r\n  // For custom config, use CSS custom properties for dynamic values\r\n  return (\r\n    <hr\r\n      className=\"w-full border-0 border-t border-border\"\r\n      style={\r\n        {\r\n          \"--fc-divider-style\": style,\r\n          \"--fc-divider-color\": color ?? \"hsl(var(--border))\",\r\n          \"--fc-divider-thickness\": `${thickness}px`,\r\n          borderStyle: \"var(--fc-divider-style)\",\r\n          borderColor: \"var(--fc-divider-color)\",\r\n          borderTopWidth: \"var(--fc-divider-thickness)\",\r\n          marginBlock: `${spacing}px`,\r\n        } as React.CSSProperties\r\n      }\r\n      aria-hidden=\"true\"\r\n    />\r\n  );\r\n}\r\n","import type { SpacerConfig } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldProps } from \"../../registry/field-registry\";\r\n\r\nexport function SpacerField({ field, value: _value, error: _error, touched: _touched, disabled: _disabled, readonly: _readonly, onChange: _onChange, onBlur: _onBlur, onFocus: _onFocus }: FieldProps) {\r\n  const config = field.config as SpacerConfig | undefined;\r\n\r\n  const height = config?.height ?? 32;\r\n\r\n  return <div style={{ height: `${height}px` }} aria-hidden=\"true\" />;\r\n}\r\n","import type { FieldRegistry } from \"./field-registry\";\r\n\r\n// Text fields\r\nimport { ShortTextField } from \"../components/fields/ShortTextField\";\r\nimport { LongTextField } from \"../components/fields/LongTextField\";\r\nimport { EmailField } from \"../components/fields/EmailField\";\r\nimport { PhoneField } from \"../components/fields/PhoneField\";\r\nimport { PhoneInternationalField } from \"../components/fields/PhoneInternationalField\";\r\nimport { UrlField } from \"../components/fields/UrlField\";\r\nimport { LegalNameField } from \"../components/fields/LegalNameField\";\r\n\r\n// Numeric fields\r\nimport { NumberField } from \"../components/fields/NumberField\";\r\nimport { SliderField } from \"../components/fields/SliderField\";\r\nimport { RatingField } from \"../components/fields/RatingField\";\r\nimport { NpsField } from \"../components/fields/NpsField\";\r\nimport { LikertField } from \"../components/fields/LikertField\";\r\nimport { OpinionScaleField } from \"../components/fields/OpinionScaleField\";\r\n\r\n// Selection fields\r\nimport { SingleSelectField } from \"../components/fields/SingleSelectField\";\r\nimport { MultiSelectField } from \"../components/fields/MultiSelectField\";\r\nimport { DropdownField } from \"../components/fields/DropdownField\";\r\nimport { BooleanField } from \"../components/fields/BooleanField\";\r\nimport { CountrySelectField } from \"../components/fields/CountrySelectField\";\r\nimport { RankingField } from \"../components/fields/RankingField\";\r\n\r\n// Date/Time fields\r\nimport { DateField } from \"../components/fields/DateField\";\r\nimport { DateRangeField } from \"../components/fields/DateRangeField\";\r\nimport { TimeField } from \"../components/fields/TimeField\";\r\nimport { AppointmentField } from \"../components/fields/AppointmentField\";\r\n\r\n// Media fields\r\nimport { FileUploadField } from \"../components/fields/FileUploadField\";\r\nimport { SignatureField } from \"../components/fields/SignatureField\";\r\nimport { ImageCaptureField } from \"../components/fields/ImageCaptureField\";\r\n\r\n// Advanced fields\r\nimport { AddressField } from \"../components/fields/AddressField\";\r\nimport { PaymentField } from \"../components/fields/PaymentField\";\r\nimport { MatrixField } from \"../components/fields/MatrixField\";\r\nimport { RepeaterField } from \"../components/fields/RepeaterField\";\r\nimport { CalculatedField } from \"../components/fields/CalculatedField\";\r\nimport { HiddenField } from \"../components/fields/HiddenField\";\r\nimport { ScoringField } from \"../components/fields/ScoringField\";\r\n\r\n// Structural fields\r\nimport { ConsentField } from \"../components/fields/ConsentField\";\r\nimport { InfoBlockField } from \"../components/fields/InfoBlockField\";\r\nimport { SectionHeaderField } from \"../components/fields/SectionHeaderField\";\r\nimport { PageBreakField } from \"../components/fields/PageBreakField\";\r\n\r\n// Content & Visual fields\r\nimport { WelcomeScreenField } from \"../components/fields/WelcomeScreenField\";\r\nimport { ThankYouScreenField } from \"../components/fields/ThankYouScreenField\";\r\nimport { RichTextField } from \"../components/fields/RichTextField\";\r\nimport { ImageField } from \"../components/fields/ImageField\";\r\nimport { VideoField } from \"../components/fields/VideoField\";\r\nimport { DividerField } from \"../components/fields/DividerField\";\r\nimport { SpacerField } from \"../components/fields/SpacerField\";\r\n\r\nexport const defaultRegistry: FieldRegistry = {\r\n  // Text\r\n  short_text: ShortTextField,\r\n  long_text: LongTextField,\r\n  email: EmailField,\r\n  phone: PhoneField,\r\n  phone_international: PhoneInternationalField,\r\n  url: UrlField,\r\n  legal_name: LegalNameField,\r\n\r\n  // Numeric\r\n  number: NumberField,\r\n  slider: SliderField,\r\n  rating: RatingField,\r\n  nps: NpsField,\r\n  likert: LikertField,\r\n  opinion_scale: OpinionScaleField,\r\n\r\n  // Selection\r\n  single_select: SingleSelectField,\r\n  multi_select: MultiSelectField,\r\n  dropdown: DropdownField,\r\n  boolean: BooleanField,\r\n  country_select: CountrySelectField,\r\n  ranking: RankingField,\r\n\r\n  // Date/Time\r\n  date: DateField,\r\n  date_range: DateRangeField,\r\n  time: TimeField,\r\n  appointment: AppointmentField,\r\n\r\n  // Media\r\n  file_upload: FileUploadField,\r\n  signature: SignatureField,\r\n  image_capture: ImageCaptureField,\r\n\r\n  // Advanced\r\n  address: AddressField,\r\n  payment: PaymentField,\r\n  matrix: MatrixField,\r\n  repeater: RepeaterField,\r\n  calculated: CalculatedField,\r\n  hidden: HiddenField,\r\n  scoring: ScoringField,\r\n\r\n  // Structural\r\n  consent: ConsentField,\r\n  info_block: InfoBlockField,\r\n  section_header: SectionHeaderField,\r\n  page_break: PageBreakField,\r\n\r\n  // Content & Visual\r\n  \"welcome-screen\": WelcomeScreenField,\r\n  \"thank-you-screen\": ThankYouScreenField,\r\n  \"rich-text\": RichTextField,\r\n  image: ImageField,\r\n  video: VideoField,\r\n  divider: DividerField,\r\n  spacer: SpacerField,\r\n};\r\n","import { useEffect, useRef } from \"react\";\r\nimport type {\r\n  Section,\r\n  Question,\r\n  FormEngine,\r\n  FormEngineTheme,\r\n} from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldRegistry } from \"../registry/field-registry\";\r\nimport { FieldRenderer } from \"./FieldRenderer\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport type SectionRendererProps = {\r\n  section: Section;\r\n  engine: FormEngine;\r\n  theme: FormEngineTheme;\r\n  registry: FieldRegistry;\r\n  autoFocus?: boolean;\r\n};\r\n\r\nconst sectionVariants: Record<string, string> = {\r\n  card: \"bg-card text-card-foreground rounded-xl px-6 py-7 shadow-sm\",\r\n  bordered: \"border border-border rounded-xl px-6 py-7\",\r\n  flat: \"p-0\",\r\n};\r\n\r\ntype FieldGroup =\r\n  | { kind: \"single\"; field: Question }\r\n  | { kind: \"grid\"; columns: number; fields: Question[] };\r\n\r\n/**\r\n * Groups adjacent fields that share the same `layout.columns` value\r\n * into grid groups. Fields without columns (or columns=1) render as singles.\r\n */\r\nfunction groupFields(fields: Question[]): FieldGroup[] {\r\n  const groups: FieldGroup[] = [];\r\n\r\n  for (const field of fields) {\r\n    const cols = field.layout?.columns;\r\n    if (cols && cols > 1) {\r\n      const last = groups[groups.length - 1];\r\n      if (last && last.kind === \"grid\" && last.columns === cols) {\r\n        last.fields.push(field);\r\n      } else {\r\n        groups.push({ kind: \"grid\", columns: cols, fields: [field] });\r\n      }\r\n    } else {\r\n      groups.push({ kind: \"single\", field });\r\n    }\r\n  }\r\n\r\n  return groups;\r\n}\r\n\r\nexport function SectionRenderer({\r\n  section,\r\n  engine,\r\n  theme,\r\n  registry,\r\n  autoFocus,\r\n}: SectionRendererProps) {\r\n  const state = engine.getState();\r\n  const visibleFields = engine.getVisibleFields(section.id);\r\n  const sectionRef = useRef<HTMLElement>(null);\r\n\r\n  const sectionLayout = theme.layout?.sectionLayout ?? \"card\";\r\n  const fieldGroups = groupFields(visibleFields);\r\n\r\n  useEffect(() => {\r\n    if (!autoFocus || !sectionRef.current) return;\r\n    const focusable = sectionRef.current.querySelector<HTMLElement>(\r\n      'input:not([type=\"hidden\"]), select, textarea, button:not([type=\"button\"]), [tabindex=\"0\"]'\r\n    );\r\n    focusable?.focus();\r\n  }, [autoFocus, section.id]);\r\n\r\n  return (\r\n    <section\r\n      ref={sectionRef}\r\n      className={cn(\r\n        \"flex flex-col gap-6\",\r\n        sectionVariants[sectionLayout] ?? sectionVariants.card,\r\n      )}\r\n      aria-labelledby={`fc-section-title-${section.id}`}\r\n    >\r\n      {section.title && (\r\n        <h2\r\n          id={`fc-section-title-${section.id}`}\r\n          className=\"text-lg font-semibold text-foreground\"\r\n        >\r\n          {section.title}\r\n        </h2>\r\n      )}\r\n      {section.description && (\r\n        <p className=\"text-sm text-muted-foreground -mt-2\">{section.description}</p>\r\n      )}\r\n\r\n      <div className=\"flex flex-col gap-6\">\r\n        {fieldGroups.map((group, gi) => {\r\n          if (group.kind === \"single\") {\r\n            const field = group.field;\r\n            return (\r\n              <FieldRenderer\r\n                key={field.id}\r\n                field={field}\r\n                value={state.values[field.id]}\r\n                error={state.errors[field.id]}\r\n                touched={!!state.touched[field.id]}\r\n                disabled={engine.isFieldDisabled(field.id)}\r\n                readonly={engine.isFieldReadonly(field.id)}\r\n                onChange={(val) => engine.setValue(field.id, val)}\r\n                onBlur={() => engine.touchField(field.id)}\r\n                onFocus={() => engine.focusField(field.id)}\r\n                theme={theme}\r\n                registry={registry}\r\n                fieldValues={state.values}\r\n              />\r\n            );\r\n          }\r\n\r\n          // Grid group — render side by side, collapse on mobile\r\n          return (\r\n            <div\r\n              key={`grid-${gi}`}\r\n              className=\"grid gap-4\"\r\n              style={{\r\n                gridTemplateColumns: `repeat(${group.columns}, minmax(0, 1fr))`,\r\n              }}\r\n            >\r\n              {group.fields.map((field) => (\r\n                <FieldRenderer\r\n                  key={field.id}\r\n                  field={field}\r\n                  value={state.values[field.id]}\r\n                  error={state.errors[field.id]}\r\n                  touched={!!state.touched[field.id]}\r\n                  disabled={engine.isFieldDisabled(field.id)}\r\n                  readonly={engine.isFieldReadonly(field.id)}\r\n                  onChange={(val) => engine.setValue(field.id, val)}\r\n                  onBlur={() => engine.touchField(field.id)}\r\n                  onFocus={() => engine.focusField(field.id)}\r\n                  theme={theme}\r\n                  registry={registry}\r\n                  fieldValues={state.values}\r\n                />\r\n              ))}\r\n            </div>\r\n          );\r\n        })}\r\n      </div>\r\n    </section>\r\n  );\r\n}\r\n","import { cn } from \"../utils/cn\";\r\n\r\nexport type ProgressBarProps = {\r\n  percent: number;\r\n  currentStep: number;\r\n  totalSteps: number;\r\n  className?: string;\r\n};\r\n\r\nexport function ProgressBar({\r\n  percent,\r\n  currentStep,\r\n  totalSteps,\r\n  className,\r\n}: ProgressBarProps) {\r\n  return (\r\n    <div\r\n      className={cn(\"flex items-center gap-3\", className)}\r\n      role=\"progressbar\"\r\n      aria-valuenow={percent}\r\n      aria-valuemin={0}\r\n      aria-valuemax={100}\r\n      aria-label={`Section ${currentStep} of ${totalSteps}`}\r\n    >\r\n      <div className=\"flex-1 h-1.5 bg-border rounded-full overflow-hidden\">\r\n        <div\r\n          className=\"h-full bg-primary rounded-full transition-[width] duration-300 ease-in-out\"\r\n          style={{ width: `${Math.min(100, Math.max(0, percent))}%` }}\r\n        />\r\n      </div>\r\n      <span className=\"text-xs text-muted-foreground whitespace-nowrap\">\r\n        {currentStep} / {totalSteps}\r\n      </span>\r\n    </div>\r\n  );\r\n}\r\n","import { Button } from \"./ui/button\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport type NavigationButtonsProps = {\r\n  canGoPrev: boolean;\r\n  canGoNext: boolean;\r\n  isLastSection: boolean;\r\n  isSubmitting: boolean;\r\n  onPrev: () => void;\r\n  onNext: () => void;\r\n  onSubmit: () => void;\r\n  className?: string;\r\n  prevLabel?: string;\r\n  nextLabel?: string;\r\n  submitLabel?: string;\r\n};\r\n\r\nexport function NavigationButtons({\r\n  canGoPrev,\r\n  canGoNext,\r\n  isLastSection,\r\n  isSubmitting,\r\n  onPrev,\r\n  onNext,\r\n  onSubmit,\r\n  className,\r\n  prevLabel = \"Back\",\r\n  nextLabel = \"Next\",\r\n  submitLabel = \"Submit\",\r\n}: NavigationButtonsProps) {\r\n  return (\r\n    <div className={cn(\"flex justify-between gap-3 pt-2\", className)}>\r\n      <Button\r\n        type=\"button\"\r\n        variant=\"outline\"\r\n        onClick={onPrev}\r\n        disabled={!canGoPrev}\r\n        aria-label={prevLabel}\r\n      >\r\n        {prevLabel}\r\n      </Button>\r\n\r\n      {isLastSection ? (\r\n        <Button\r\n          type=\"button\"\r\n          onClick={onSubmit}\r\n          disabled={isSubmitting}\r\n          aria-label={submitLabel}\r\n        >\r\n          {isSubmitting ? \"Submitting\\u2026\" : submitLabel}\r\n        </Button>\r\n      ) : (\r\n        <Button\r\n          type=\"button\"\r\n          onClick={onNext}\r\n          disabled={!canGoNext}\r\n          aria-label={nextLabel}\r\n        >\r\n          {nextLabel}\r\n        </Button>\r\n      )}\r\n    </div>\r\n  );\r\n}\r\n","import { Alert, AlertTitle, AlertDescription } from \"./ui/alert\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport type ErrorSummaryProps = {\r\n  errors: Record<string, string[]>;\r\n  fieldLabels?: Record<string, string>;\r\n  onFieldClick?: (fieldId: string) => void;\r\n  className?: string;\r\n};\r\n\r\nexport function ErrorSummary({\r\n  errors,\r\n  fieldLabels,\r\n  onFieldClick,\r\n  className,\r\n}: ErrorSummaryProps) {\r\n  const fieldIds = Object.keys(errors).filter(\r\n    (id) => errors[id] && errors[id].length > 0,\r\n  );\r\n\r\n  if (fieldIds.length === 0) return null;\r\n\r\n  return (\r\n    <Alert\r\n      variant=\"destructive\"\r\n      className={cn(\"fc-error-bg\", className)}\r\n      aria-label=\"Validation errors\"\r\n    >\r\n      <AlertTitle>\r\n        Please fix {fieldIds.length} error{fieldIds.length > 1 ? \"s\" : \"\"} before\r\n        submitting\r\n      </AlertTitle>\r\n      <AlertDescription>\r\n        <ul className=\"flex flex-col gap-1 list-none\">\r\n          {fieldIds.map((fieldId) => (\r\n            <li key={fieldId}>\r\n              <button\r\n                type=\"button\"\r\n                className=\"bg-transparent border-0 text-foreground text-sm cursor-pointer text-left p-0 hover:underline\"\r\n                onClick={() => onFieldClick?.(fieldId)}\r\n              >\r\n                <strong>{fieldLabels?.[fieldId] ?? fieldId}:</strong>{\" \"}\r\n                {errors[fieldId][0]}\r\n              </button>\r\n            </li>\r\n          ))}\r\n        </ul>\r\n      </AlertDescription>\r\n    </Alert>\r\n  );\r\n}\r\n","import type { CompleteAction } from \"@squaredr/fieldcraft-core\";\r\nimport { Button } from \"./ui/button\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport type CompletionScreenProps = {\r\n  action?: CompleteAction;\r\n  className?: string;\r\n};\r\n\r\nexport function CompletionScreen({ action, className }: CompletionScreenProps) {\r\n  const message =\r\n    action?.message ?? \"Thank you! Your response has been submitted.\";\r\n\r\n  return (\r\n    <div className={cn(\"flex flex-col items-center gap-4 px-6 py-12 text-center\", className)} role=\"status\" aria-live=\"polite\">\r\n      <div aria-hidden=\"true\">\r\n        <svg\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n          viewBox=\"0 0 24 24\"\r\n          fill=\"none\"\r\n          stroke=\"currentColor\"\r\n          strokeWidth={2}\r\n          strokeLinecap=\"round\"\r\n          strokeLinejoin=\"round\"\r\n          className=\"text-green-500\"\r\n          width={48}\r\n          height={48}\r\n        >\r\n          <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\r\n          <polyline points=\"22 4 12 14.01 9 11.01\" />\r\n        </svg>\r\n      </div>\r\n      <p className=\"text-lg text-foreground\">{message}</p>\r\n      {action?.type === \"redirect\" && action.url && (\r\n        <Button asChild>\r\n          <a href={action.url}>Continue</a>\r\n        </Button>\r\n      )}\r\n    </div>\r\n  );\r\n}\r\n","import { Card, CardContent } from \"./ui/card\";\r\nimport { Button } from \"./ui/button\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport type DraftResumePromptProps = {\r\n  lastSavedAt?: string;\r\n  onResume: () => void;\r\n  onDiscard: () => void;\r\n  className?: string;\r\n};\r\n\r\nexport function DraftResumePrompt({\r\n  lastSavedAt,\r\n  onResume,\r\n  onDiscard,\r\n  className,\r\n}: DraftResumePromptProps) {\r\n  const formattedDate = lastSavedAt\r\n    ? new Date(lastSavedAt).toLocaleString()\r\n    : undefined;\r\n\r\n  return (\r\n    <Card className={cn(\"text-center\", className)}>\r\n      <CardContent className=\"flex flex-col items-center gap-4 pt-6\" role=\"dialog\" aria-label=\"Resume draft\">\r\n        <p className=\"text-base\">\r\n          You have a saved draft\r\n          {formattedDate ? ` from ${formattedDate}` : \"\"}.\r\n        </p>\r\n        <div className=\"flex justify-center gap-3\">\r\n          <Button onClick={onResume}>\r\n            Resume\r\n          </Button>\r\n          <Button variant=\"outline\" onClick={onDiscard}>\r\n            Start over\r\n          </Button>\r\n        </div>\r\n      </CardContent>\r\n    </Card>\r\n  );\r\n}\r\n","import { Component } from \"react\";\r\n\r\ntype Props = {\r\n  children: React.ReactNode;\r\n};\r\n\r\ntype State = {\r\n  hasError: boolean;\r\n  error: Error | null;\r\n};\r\n\r\nexport class FormErrorBoundary extends Component<Props, State> {\r\n  constructor(props: Props) {\r\n    super(props);\r\n    this.state = { hasError: false, error: null };\r\n  }\r\n\r\n  static getDerivedStateFromError(error: Error): State {\r\n    return { hasError: true, error };\r\n  }\r\n\r\n  componentDidCatch(error: Error, info: React.ErrorInfo) {\r\n    console.error(\"[FieldCraft] A field component crashed:\", error, info.componentStack);\r\n  }\r\n\r\n  render() {\r\n    if (this.state.hasError) {\r\n      return (\r\n        <div\r\n          role=\"alert\"\r\n          className=\"rounded-lg border border-destructive/50 bg-destructive/5 p-4 text-sm\"\r\n        >\r\n          <p className=\"font-medium text-destructive\">Something went wrong rendering this section.</p>\r\n          <p className=\"mt-1 text-muted-foreground\">\r\n            Please refresh the page. If the problem persists, contact support.\r\n          </p>\r\n        </div>\r\n      );\r\n    }\r\n\r\n    return this.props.children;\r\n  }\r\n}\r\n","import type { FormEngine, FormEngineTheme } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldRegistry } from \"../registry/field-registry\";\r\nimport { SectionRenderer } from \"./SectionRenderer\";\r\n\r\nexport type ClassicModeRendererProps = {\r\n  engine: FormEngine;\r\n  theme: FormEngineTheme;\r\n  registry: FieldRegistry;\r\n  autoFocus?: boolean;\r\n};\r\n\r\n/**\r\n * Classic mode: renders ALL visible sections at once in a scrollable layout.\r\n * No section-level navigation buttons — the user scrolls through the form\r\n * and submits at the bottom.\r\n */\r\nexport function ClassicModeRenderer({\r\n  engine,\r\n  theme,\r\n  registry,\r\n  autoFocus,\r\n}: ClassicModeRendererProps) {\r\n  const visibleSections = engine.getVisibleSections();\r\n\r\n  return (\r\n    <div className=\"fc-mode-classic flex flex-col gap-8\">\r\n      {visibleSections.map((section) => (\r\n        <SectionRenderer\r\n          key={section.id}\r\n          section={section}\r\n          engine={engine}\r\n          theme={theme}\r\n          registry={registry}\r\n          autoFocus={autoFocus && section.id === visibleSections[0]?.id}\r\n        />\r\n      ))}\r\n    </div>\r\n  );\r\n}\r\n","import { useCallback, useEffect, useRef } from \"react\";\r\nimport type { FormEngine, FormEngineTheme } from \"@squaredr/fieldcraft-core\";\r\nimport type { FieldRegistry } from \"../../registry/field-registry\";\r\nimport { FieldRenderer } from \"../FieldRenderer\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\n/** Field types that auto-advance in conversational mode after selection. */\r\nconst AUTO_ADVANCE_TYPES = new Set([\r\n  \"single_select\",\r\n  \"boolean\",\r\n  \"rating\",\r\n  \"nps\",\r\n  \"opinion_scale\",\r\n  \"likert\",\r\n  \"dropdown\",\r\n  \"country_select\",\r\n]);\r\n\r\nexport type ConversationalRendererProps = {\r\n  engine: FormEngine;\r\n  theme: FormEngineTheme;\r\n  registry: FieldRegistry;\r\n  autoFocus?: boolean;\r\n  autoAdvance?: boolean;\r\n  prevLabel?: string;\r\n  nextLabel?: string;\r\n  submitLabel?: string;\r\n  onSubmit: () => void;\r\n  hideNavigation?: boolean;\r\n};\r\n\r\n/**\r\n * Conversational mode: renders ONE question at a time with prev/next\r\n * navigation and keyboard support (Enter to advance).\r\n */\r\nexport function ConversationalRenderer({\r\n  engine,\r\n  theme,\r\n  registry,\r\n  autoFocus = true,\r\n  autoAdvance = true,\r\n  prevLabel = \"Back\",\r\n  nextLabel = \"Next\",\r\n  submitLabel = \"Submit\",\r\n  onSubmit,\r\n  hideNavigation,\r\n}: ConversationalRendererProps) {\r\n  const state = engine.getState();\r\n  const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n  const currentQuestion = engine.getQuestionById(state.currentQuestionId);\r\n  const isLastQuestion = !state.canGoNextQuestion;\r\n\r\n  const handleNext = useCallback(() => {\r\n    if (isLastQuestion) {\r\n      onSubmit();\r\n    } else {\r\n      engine.nextQuestion();\r\n    }\r\n  }, [engine, isLastQuestion, onSubmit]);\r\n\r\n  const handlePrev = useCallback(() => {\r\n    engine.prevQuestion();\r\n  }, [engine]);\r\n\r\n  // Auto-advance: after selecting a value on qualifying field types,\r\n  // advance to the next question after a short delay.\r\n  const autoAdvanceTimerRef = useRef<ReturnType<typeof setTimeout>>(null);\r\n\r\n  const handleChange = useCallback(\r\n    (fieldId: string, value: unknown) => {\r\n      engine.setValue(fieldId, value);\r\n\r\n      if (!autoAdvance || !currentQuestion) return;\r\n      if (!AUTO_ADVANCE_TYPES.has(currentQuestion.type)) return;\r\n      // Only advance if a value was actually selected (not cleared)\r\n      if (value === undefined || value === null || value === \"\") return;\r\n\r\n      if (autoAdvanceTimerRef.current) clearTimeout(autoAdvanceTimerRef.current);\r\n      autoAdvanceTimerRef.current = setTimeout(() => {\r\n        handleNext();\r\n      }, 350);\r\n    },\r\n    [engine, autoAdvance, currentQuestion, handleNext],\r\n  );\r\n\r\n  // Clean up timer on unmount or question change\r\n  useEffect(() => {\r\n    return () => {\r\n      if (autoAdvanceTimerRef.current) clearTimeout(autoAdvanceTimerRef.current);\r\n    };\r\n  }, [state.currentQuestionId]);\r\n\r\n  // Keyboard: Enter to advance\r\n  useEffect(() => {\r\n    function handleKeyDown(e: KeyboardEvent) {\r\n      if (e.key === \"Enter\" && !e.shiftKey) {\r\n        // Don't intercept Enter in textarea fields\r\n        const target = e.target as HTMLElement;\r\n        if (target.tagName === \"TEXTAREA\") return;\r\n        // Don't intercept if in a select/dropdown\r\n        if (target.role === \"listbox\" || target.role === \"option\") return;\r\n        e.preventDefault();\r\n        handleNext();\r\n      }\r\n    }\r\n\r\n    const container = containerRef.current;\r\n    container?.addEventListener(\"keydown\", handleKeyDown);\r\n    return () => container?.removeEventListener(\"keydown\", handleKeyDown);\r\n  }, [handleNext]);\r\n\r\n  // Auto-focus on question change\r\n  useEffect(() => {\r\n    if (!autoFocus || !containerRef.current) return;\r\n    const focusable = containerRef.current.querySelector<HTMLElement>(\r\n      'input:not([type=\"hidden\"]), select, textarea, [tabindex=\"0\"]',\r\n    );\r\n    focusable?.focus();\r\n  }, [autoFocus, state.currentQuestionId]);\r\n\r\n  if (!currentQuestion) {\r\n    return null;\r\n  }\r\n\r\n  return (\r\n    <div ref={containerRef} className=\"fc-mode-conversational flex flex-col gap-6\">\r\n      {/* Question counter */}\r\n      <div className=\"text-sm text-muted-foreground\">\r\n        {state.currentQuestionIndex + 1} / {state.totalVisibleQuestions}\r\n      </div>\r\n\r\n      {/* Progress bar */}\r\n      <div\r\n        className=\"h-1 bg-border rounded-full overflow-hidden\"\r\n        role=\"progressbar\"\r\n        aria-valuenow={state.questionProgressPercent}\r\n        aria-valuemin={0}\r\n        aria-valuemax={100}\r\n        aria-label={`Question ${state.currentQuestionIndex + 1} of ${state.totalVisibleQuestions}`}\r\n      >\r\n        <div\r\n          className=\"h-full bg-primary rounded-full transition-[width] duration-300 ease-in-out\"\r\n          style={{ width: `${state.questionProgressPercent}%` }}\r\n        />\r\n      </div>\r\n\r\n      {/* Single question */}\r\n      <div className={cn(\"transition-opacity duration-200\")}>\r\n        <FieldRenderer\r\n          field={currentQuestion}\r\n          value={state.values[currentQuestion.id]}\r\n          error={state.errors[currentQuestion.id]}\r\n          touched={!!state.touched[currentQuestion.id]}\r\n          disabled={engine.isFieldDisabled(currentQuestion.id)}\r\n          readonly={engine.isFieldReadonly(currentQuestion.id)}\r\n          onChange={(val) => handleChange(currentQuestion.id, val)}\r\n          onBlur={() => engine.touchField(currentQuestion.id)}\r\n          onFocus={() => engine.focusField(currentQuestion.id)}\r\n          theme={theme}\r\n          registry={registry}\r\n          fieldValues={state.values}\r\n        />\r\n      </div>\r\n\r\n      {/* Navigation */}\r\n      {!hideNavigation && (\r\n        <>\r\n          <div className=\"flex justify-between gap-3 pt-4\">\r\n            <button\r\n              type=\"button\"\r\n              onClick={handlePrev}\r\n              disabled={!state.canGoPrevQuestion}\r\n              className={cn(\r\n                \"px-4 py-2 text-sm rounded-md border border-border\",\r\n                \"transition-colors\",\r\n                state.canGoPrevQuestion\r\n                  ? \"hover:bg-accent text-foreground\"\r\n                  : \"text-muted-foreground opacity-50 cursor-not-allowed\",\r\n              )}\r\n              aria-label={prevLabel}\r\n            >\r\n              {prevLabel}\r\n            </button>\r\n\r\n            <button\r\n              type=\"button\"\r\n              onClick={handleNext}\r\n              disabled={state.isSubmitting}\r\n              className={cn(\r\n                \"px-6 py-2 text-sm rounded-md\",\r\n                \"bg-primary text-primary-foreground\",\r\n                \"hover:bg-primary/90 transition-colors\",\r\n                state.isSubmitting && \"opacity-50 cursor-not-allowed\",\r\n              )}\r\n              aria-label={isLastQuestion ? submitLabel : nextLabel}\r\n            >\r\n              {state.isSubmitting\r\n                ? \"Submitting\\u2026\"\r\n                : isLastQuestion\r\n                  ? submitLabel\r\n                  : nextLabel}\r\n            </button>\r\n          </div>\r\n\r\n          {/* Keyboard hint */}\r\n          <p className=\"text-xs text-muted-foreground text-center\">\r\n            Press <kbd className=\"px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono\">Enter</kbd> to continue\r\n          </p>\r\n        </>\r\n      )}\r\n    </div>\r\n  );\r\n}\r\n","import { useCallback, useEffect, useState } from \"react\";\r\nimport type {\r\n  FormEngineSchema,\r\n  FormEngineTheme,\r\n  SubmitAdapter,\r\n  FormResponse,\r\n  FormState,\r\n  CustomValidator,\r\n  AsyncValidator,\r\n  FormEngine,\r\n} from \"@squaredr/fieldcraft-core\";\r\nimport { useFormEngine } from \"../hooks/useFormEngine\";\r\nimport { FormEngineThemeProvider, useTheme } from \"../theme/ThemeProvider\";\r\nimport { defaultRegistry } from \"../registry/default-registry\";\r\nimport { mergeRegistries, type FieldRegistry } from \"../registry/field-registry\";\r\nimport { SectionRenderer } from \"./SectionRenderer\";\r\nimport { ProgressBar } from \"./ProgressBar\";\r\nimport { NavigationButtons } from \"./NavigationButtons\";\r\nimport { ErrorSummary } from \"./ErrorSummary\";\r\nimport { CompletionScreen } from \"./CompletionScreen\";\r\nimport { DraftResumePrompt } from \"./DraftResumePrompt\";\r\nimport { FormErrorBoundary } from \"./FormErrorBoundary\";\r\nimport { FieldRegistryProvider } from \"../registry/FieldRegistryContext\";\r\nimport { ClassicModeRenderer } from \"./ClassicModeRenderer\";\r\nimport { ConversationalRenderer } from \"./conversational/ConversationalRenderer\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport type FormEngineRendererProps = {\r\n  schema: FormEngineSchema;\r\n\r\n  // Submission\r\n  adapters?: SubmitAdapter | SubmitAdapter[];\r\n  onSubmit?: (response: FormResponse) => void | Promise<void>;\r\n\r\n  // Theme\r\n  theme?: FormEngineTheme;\r\n  className?: string;\r\n\r\n  // Components\r\n  components?: FieldRegistry;\r\n\r\n  // Pre-fill\r\n  prefill?: Record<string, unknown>;\r\n  initialValues?: Record<string, unknown>;\r\n\r\n  // Callbacks\r\n  onSectionChange?: (sectionId: string, index: number) => void;\r\n  onFieldChange?: (fieldId: string, value: unknown) => void;\r\n  onReady?: (engine: FormEngine) => void;\r\n  onValidationError?: (errors: Record<string, string[]>) => void;\r\n  onStateChange?: (state: FormState) => void;\r\n\r\n  // Draft\r\n  sessionToken?: string;\r\n  draftAdapter?: import(\"@squaredr/fieldcraft-core\").DraftAdapter;\r\n  autoSaveIntervalMs?: number;\r\n  draftMigrations?: Record<string, (draft: import(\"@squaredr/fieldcraft-core\").DraftSnapshot) => import(\"@squaredr/fieldcraft-core\").DraftSnapshot>;\r\n\r\n  // Submission hooks & analytics\r\n  beforeSubmit?: (response: FormResponse) => FormResponse | false | Promise<FormResponse | false>;\r\n  analytics?: import(\"@squaredr/fieldcraft-core\").AnalyticsAdapter;\r\n  onEvent?: (event: import(\"@squaredr/fieldcraft-core\").FieldCraftEvent) => void;\r\n  metadata?: Record<string, unknown>;\r\n\r\n  // Custom validators\r\n  validators?: Record<string, CustomValidator>;\r\n  asyncValidators?: Record<string, AsyncValidator>;\r\n\r\n  // Labels\r\n  prevLabel?: string;\r\n  nextLabel?: string;\r\n  submitLabel?: string;\r\n\r\n  // Accessibility\r\n  autoFocus?: boolean;\r\n\r\n  // Conversational mode\r\n  autoAdvance?: boolean;\r\n\r\n  /** When true, built-in navigation buttons are hidden. Use `onReady` to get\r\n   *  the engine instance, then call `engine.nextSection()`,\r\n   *  `engine.prevSection()`, `engine.submit()` from your own UI.\r\n   *  Pair with `onStateChange` to read `canGoNext`, `canGoPrev`,\r\n   *  `isSubmitting`, `currentSectionIndex`, `totalVisibleSections`, etc. */\r\n  hideNavigation?: boolean;\r\n};\r\n\r\nexport function FormEngineRenderer({\r\n  schema,\r\n  adapters,\r\n  onSubmit,\r\n  theme,\r\n  className,\r\n  components,\r\n  prefill,\r\n  initialValues,\r\n  onSectionChange,\r\n  onFieldChange,\r\n  onReady,\r\n  onValidationError,\r\n  onStateChange,\r\n  sessionToken,\r\n  draftAdapter,\r\n  autoSaveIntervalMs,\r\n  draftMigrations,\r\n  beforeSubmit,\r\n  analytics,\r\n  onEvent,\r\n  metadata,\r\n  validators,\r\n  asyncValidators,\r\n  prevLabel,\r\n  nextLabel,\r\n  submitLabel,\r\n  autoFocus,\r\n  autoAdvance,\r\n  hideNavigation,\r\n}: FormEngineRendererProps) {\r\n  const engine = useFormEngine(schema, {\r\n    adapters,\r\n    onSubmit,\r\n    prefillValues: prefill,\r\n    initialValues,\r\n    onSectionChange,\r\n    onFieldChange,\r\n    onStateChange,\r\n    validators,\r\n    asyncValidators,\r\n    sessionToken,\r\n    draftAdapter,\r\n    autoSaveIntervalMs,\r\n    draftMigrations,\r\n    beforeSubmit,\r\n    analytics,\r\n    onEvent,\r\n    metadata,\r\n  });\r\n\r\n  const { state } = engine;\r\n  const displayMode = schema.settings?.displayMode ?? \"stepped\";\r\n\r\n  // Notify parent when engine is ready\r\n  useEffect(() => {\r\n    onReady?.(engine);\r\n  }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n  // Draft detection\r\n  const [showDraftPrompt, setShowDraftPrompt] = useState(false);\r\n  useEffect(() => {\r\n    if (state.hasDraft) setShowDraftPrompt(true);\r\n  }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n  const registry = mergeRegistries(defaultRegistry, components);\r\n\r\n  const handleSubmit = useCallback(async () => {\r\n    const result = await engine.submit();\r\n    if (!result.success) {\r\n      const validation = engine.validate();\r\n      onValidationError?.(validation.errors);\r\n    }\r\n  }, [engine, onValidationError]);\r\n\r\n  const handleResumeDraft = useCallback(async () => {\r\n    await engine.loadDraft();\r\n    setShowDraftPrompt(false);\r\n  }, [engine]);\r\n\r\n  const handleDiscardDraft = useCallback(() => {\r\n    engine.clearDraft();\r\n    setShowDraftPrompt(false);\r\n  }, [engine]);\r\n\r\n  // Build field labels map for error summary\r\n  const fieldLabels: Record<string, string> = {};\r\n  for (const section of schema.sections) {\r\n    for (const q of section.questions) {\r\n      fieldLabels[q.id] = q.label;\r\n    }\r\n  }\r\n\r\n  // Completed state\r\n  if (state.isSubmitted) {\r\n    return (\r\n      <FormEngineThemeProvider theme={theme}>\r\n        <div className={cn(\"flex flex-col gap-8\", className)}>\r\n          <CompletionScreen action={schema.onComplete} />\r\n        </div>\r\n      </FormEngineThemeProvider>\r\n    );\r\n  }\r\n\r\n  // Draft prompt\r\n  if (showDraftPrompt) {\r\n    return (\r\n      <FormEngineThemeProvider theme={theme}>\r\n        <div className={cn(\"flex flex-col gap-8\", className)}>\r\n          <DraftResumePrompt\r\n            lastSavedAt={state.lastDraftSavedAt}\r\n            onResume={handleResumeDraft}\r\n            onDiscard={handleDiscardDraft}\r\n          />\r\n        </div>\r\n      </FormEngineThemeProvider>\r\n    );\r\n  }\r\n\r\n  return (\r\n    <FormEngineThemeProvider theme={theme}>\r\n      <div className={cn(\"flex flex-col gap-8\", className)} data-display-mode={displayMode}>\r\n        <FieldRegistryProvider registry={registry}>\r\n          <FormErrorBoundary>\r\n            {displayMode === \"classic\" && (\r\n              <ClassicModeContent\r\n                engine={engine}\r\n                state={state}\r\n                registry={registry}\r\n                fieldLabels={fieldLabels}\r\n                autoFocus={autoFocus}\r\n                submitLabel={submitLabel}\r\n                onSubmit={handleSubmit}\r\n                hideNavigation={hideNavigation}\r\n              />\r\n            )}\r\n\r\n            {displayMode === \"stepped\" && (\r\n              <SteppedModeContent\r\n                engine={engine}\r\n                state={state}\r\n                registry={registry}\r\n                fieldLabels={fieldLabels}\r\n                autoFocus={autoFocus}\r\n                prevLabel={prevLabel ?? schema.settings?.navigation?.backLabel}\r\n                nextLabel={nextLabel ?? schema.settings?.navigation?.nextLabel}\r\n                submitLabel={submitLabel ?? schema.settings?.submitButton?.label}\r\n                onSubmit={handleSubmit}\r\n                progressPosition={theme?.layout?.progressPosition}\r\n                showProgress={schema.settings?.showProgress}\r\n                showBack={schema.settings?.navigation?.showBack}\r\n                hideNavigation={hideNavigation}\r\n              />\r\n            )}\r\n\r\n            {displayMode === \"conversational\" && (\r\n              <ConversationalModeContent\r\n                engine={engine}\r\n                registry={registry}\r\n                autoFocus={autoFocus}\r\n                autoAdvance={autoAdvance}\r\n                prevLabel={prevLabel}\r\n                nextLabel={nextLabel}\r\n                submitLabel={submitLabel}\r\n                onSubmit={handleSubmit}\r\n                hideNavigation={hideNavigation}\r\n              />\r\n            )}\r\n          </FormErrorBoundary>\r\n        </FieldRegistryProvider>\r\n      </div>\r\n    </FormEngineThemeProvider>\r\n  );\r\n}\r\n\r\n// ── Mode-specific content components ──\r\n\r\nfunction ClassicModeContent({\r\n  engine,\r\n  state,\r\n  registry,\r\n  fieldLabels,\r\n  autoFocus,\r\n  submitLabel = \"Submit\",\r\n  onSubmit,\r\n  hideNavigation,\r\n}: {\r\n  engine: FormEngine;\r\n  state: import(\"@squaredr/fieldcraft-core\").FormState;\r\n  registry: FieldRegistry;\r\n  fieldLabels: Record<string, string>;\r\n  autoFocus?: boolean;\r\n  submitLabel?: string;\r\n  onSubmit: () => void;\r\n  hideNavigation?: boolean;\r\n}) {\r\n  const theme = useTheme();\r\n  return (\r\n    <>\r\n      {state.submitAttempted && !state.isSubmitted && (\r\n        <ErrorSummary errors={state.errors} fieldLabels={fieldLabels} />\r\n      )}\r\n      <ClassicModeRenderer\r\n        engine={engine}\r\n        theme={theme}\r\n        registry={registry}\r\n        autoFocus={autoFocus}\r\n      />\r\n      {!hideNavigation && (\r\n        <div className=\"flex justify-end pt-2\">\r\n          <button\r\n            type=\"button\"\r\n            onClick={onSubmit}\r\n            disabled={state.isSubmitting}\r\n            className={cn(\r\n              \"px-6 py-2 text-sm rounded-md\",\r\n              \"bg-primary text-primary-foreground\",\r\n              \"hover:bg-primary/90 transition-colors\",\r\n              state.isSubmitting && \"opacity-50 cursor-not-allowed\",\r\n            )}\r\n          >\r\n            {state.isSubmitting ? \"Submitting\\u2026\" : submitLabel}\r\n          </button>\r\n        </div>\r\n      )}\r\n    </>\r\n  );\r\n}\r\n\r\nfunction SteppedModeContent({\r\n  engine,\r\n  state,\r\n  registry,\r\n  fieldLabels,\r\n  autoFocus,\r\n  prevLabel,\r\n  nextLabel,\r\n  submitLabel,\r\n  onSubmit,\r\n  progressPosition,\r\n  showProgress = true,\r\n  showBack = true,\r\n  hideNavigation,\r\n}: {\r\n  engine: FormEngine;\r\n  state: import(\"@squaredr/fieldcraft-core\").FormState;\r\n  registry: FieldRegistry;\r\n  fieldLabels: Record<string, string>;\r\n  autoFocus?: boolean;\r\n  prevLabel?: string;\r\n  nextLabel?: string;\r\n  submitLabel?: string;\r\n  onSubmit: () => void;\r\n  progressPosition?: string;\r\n  showProgress?: boolean;\r\n  showBack?: boolean;\r\n  hideNavigation?: boolean;\r\n}) {\r\n  const theme = useTheme();\r\n  const visibleSections = engine.getVisibleSections();\r\n  const currentSection = visibleSections.find(\r\n    (s) => s.id === state.currentSectionId,\r\n  );\r\n  const isLastSection =\r\n    state.currentSectionIndex === state.totalVisibleSections - 1;\r\n\r\n  return (\r\n    <div className=\"fc-mode-stepped flex flex-col gap-6\">\r\n      {showProgress && progressPosition !== \"none\" && (\r\n        <ProgressBar\r\n          percent={state.progressPercent}\r\n          currentStep={state.currentSectionIndex + 1}\r\n          totalSteps={state.totalVisibleSections}\r\n        />\r\n      )}\r\n\r\n      {state.submitAttempted && !state.isSubmitted && (\r\n        <ErrorSummary errors={state.errors} fieldLabels={fieldLabels} />\r\n      )}\r\n\r\n      {currentSection && (\r\n        <SectionRenderer\r\n          section={currentSection}\r\n          engine={engine}\r\n          theme={theme}\r\n          registry={registry}\r\n          autoFocus={autoFocus}\r\n        />\r\n      )}\r\n\r\n      {!hideNavigation && (\r\n        <NavigationButtons\r\n          canGoPrev={showBack ? state.canGoPrev : false}\r\n          canGoNext={state.canGoNext}\r\n          isLastSection={isLastSection}\r\n          isSubmitting={state.isSubmitting}\r\n          onPrev={() => engine.prevSection()}\r\n          onNext={() => engine.nextSection()}\r\n          onSubmit={onSubmit}\r\n          prevLabel={prevLabel}\r\n          nextLabel={nextLabel}\r\n          submitLabel={submitLabel}\r\n        />\r\n      )}\r\n    </div>\r\n  );\r\n}\r\n\r\nfunction ConversationalModeContent({\r\n  engine,\r\n  registry,\r\n  autoFocus,\r\n  autoAdvance,\r\n  prevLabel,\r\n  nextLabel,\r\n  submitLabel,\r\n  onSubmit,\r\n  hideNavigation,\r\n}: {\r\n  engine: FormEngine;\r\n  registry: FieldRegistry;\r\n  autoFocus?: boolean;\r\n  autoAdvance?: boolean;\r\n  prevLabel?: string;\r\n  nextLabel?: string;\r\n  submitLabel?: string;\r\n  onSubmit: () => void;\r\n  hideNavigation?: boolean;\r\n}) {\r\n  const theme = useTheme();\r\n  return (\r\n    <ConversationalRenderer\r\n      engine={engine}\r\n      theme={theme}\r\n      registry={registry}\r\n      autoFocus={autoFocus}\r\n      autoAdvance={autoAdvance}\r\n      prevLabel={prevLabel}\r\n      nextLabel={nextLabel}\r\n      submitLabel={submitLabel}\r\n      onSubmit={onSubmit}\r\n      hideNavigation={hideNavigation}\r\n    />\r\n  );\r\n}\r\n","import type { Section } from \"@squaredr/fieldcraft-core\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport type SectionNavigationProps = {\r\n  sections: Section[];\r\n  currentSectionId: string;\r\n  visitedSectionIds: string[];\r\n  onJumpTo: (sectionId: string) => void;\r\n  className?: string;\r\n};\r\n\r\nexport function SectionNavigation({\r\n  sections,\r\n  currentSectionId,\r\n  visitedSectionIds,\r\n  onJumpTo,\r\n  className,\r\n}: SectionNavigationProps) {\r\n  return (\r\n    <nav className={cn(className)} aria-label=\"Form sections\">\r\n      <ol className=\"flex flex-col gap-1 list-none\">\r\n        {sections.map((section, index) => {\r\n          const isCurrent = section.id === currentSectionId;\r\n          const isVisited = visitedSectionIds.includes(section.id);\r\n          return (\r\n            <li key={section.id}>\r\n              <button\r\n                type=\"button\"\r\n                className={cn(\r\n                  \"flex items-center gap-2 w-full p-2 rounded-md text-sm text-left transition-colors\",\r\n                  isCurrent && \"bg-primary/10 text-primary font-medium\",\r\n                  isVisited && !isCurrent && \"text-foreground hover:bg-accent\",\r\n                  !isVisited && !isCurrent && \"text-muted-foreground opacity-60\",\r\n                )}\r\n                onClick={() => onJumpTo(section.id)}\r\n                disabled={!isVisited && !isCurrent}\r\n                aria-current={isCurrent ? \"step\" : undefined}\r\n              >\r\n                <span className={cn(\r\n                  \"flex items-center justify-center w-6 h-6 rounded-full text-xs font-medium\",\r\n                  isCurrent && \"bg-primary text-primary-foreground\",\r\n                  isVisited && !isCurrent && \"bg-muted text-muted-foreground\",\r\n                  !isVisited && !isCurrent && \"bg-muted text-muted-foreground\",\r\n                )}>\r\n                  {index + 1}\r\n                </span>\r\n                <span>{section.title}</span>\r\n              </button>\r\n            </li>\r\n          );\r\n        })}\r\n      </ol>\r\n    </nav>\r\n  );\r\n}\r\n","import { Collapsible as CollapsiblePrimitive } from \"radix-ui\"\r\n\r\nfunction Collapsible({\r\n  ...props\r\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\r\n  return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\r\n}\r\n\r\nfunction CollapsibleTrigger({\r\n  ...props\r\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\r\n  return (\r\n    <CollapsiblePrimitive.CollapsibleTrigger\r\n      data-slot=\"collapsible-trigger\"\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nfunction CollapsibleContent({\r\n  ...props\r\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\r\n  return (\r\n    <CollapsiblePrimitive.CollapsibleContent\r\n      data-slot=\"collapsible-content\"\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\r\n","import * as React from \"react\"\r\nimport { Progress as ProgressPrimitive } from \"radix-ui\"\r\n\r\nimport { cn } from \"@/utils/index\"\r\n\r\nfunction Progress({\r\n  className,\r\n  value,\r\n  ...props\r\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\r\n  return (\r\n    <ProgressPrimitive.Root\r\n      data-slot=\"progress\"\r\n      className={cn(\r\n        \"relative h-2 w-full overflow-hidden rounded-full bg-primary/20\",\r\n        className\r\n      )}\r\n      {...props}\r\n    >\r\n      <ProgressPrimitive.Indicator\r\n        data-slot=\"progress-indicator\"\r\n        className=\"h-full w-full flex-1 bg-primary transition-all\"\r\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\r\n      />\r\n    </ProgressPrimitive.Root>\r\n  )\r\n}\r\n\r\nexport { Progress }\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\r\n\r\nimport { cn } from \"@/utils/index\"\r\n\r\nconst toggleVariants = cva(\r\n  \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\r\n  {\r\n    variants: {\r\n      variant: {\r\n        default: \"bg-transparent\",\r\n        outline:\r\n          \"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\",\r\n      },\r\n      size: {\r\n        default: \"h-9 min-w-9 px-2\",\r\n        sm: \"h-8 min-w-8 px-1.5\",\r\n        lg: \"h-10 min-w-10 px-2.5\",\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      variant: \"default\",\r\n      size: \"default\",\r\n    },\r\n  }\r\n)\r\n\r\nfunction Toggle({\r\n  className,\r\n  variant,\r\n  size,\r\n  ...props\r\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\r\n  VariantProps<typeof toggleVariants>) {\r\n  return (\r\n    <TogglePrimitive.Root\r\n      data-slot=\"toggle\"\r\n      className={cn(toggleVariants({ variant, size, className }))}\r\n      {...props}\r\n    />\r\n  )\r\n}\r\n\r\nexport { Toggle, toggleVariants }\r\n","\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { type VariantProps } from \"class-variance-authority\"\r\nimport { ToggleGroup as ToggleGroupPrimitive } from \"radix-ui\"\r\n\r\nimport { cn } from \"@/utils/index\"\r\nimport { toggleVariants } from \"@/components/ui/toggle\"\r\n\r\nconst ToggleGroupContext = React.createContext<\r\n  VariantProps<typeof toggleVariants> & {\r\n    spacing?: number\r\n  }\r\n>({\r\n  size: \"default\",\r\n  variant: \"default\",\r\n  spacing: 0,\r\n})\r\n\r\nfunction ToggleGroup({\r\n  className,\r\n  variant,\r\n  size,\r\n  spacing = 0,\r\n  children,\r\n  ...props\r\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\r\n  VariantProps<typeof toggleVariants> & {\r\n    spacing?: number\r\n  }) {\r\n  return (\r\n    <ToggleGroupPrimitive.Root\r\n      data-slot=\"toggle-group\"\r\n      data-variant={variant}\r\n      data-size={size}\r\n      data-spacing={spacing}\r\n      style={{ \"--gap\": spacing } as React.CSSProperties}\r\n      className={cn(\r\n        \"group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs\",\r\n        className\r\n      )}\r\n      {...props}\r\n    >\r\n      <ToggleGroupContext.Provider value={{ variant, size, spacing }}>\r\n        {children}\r\n      </ToggleGroupContext.Provider>\r\n    </ToggleGroupPrimitive.Root>\r\n  )\r\n}\r\n\r\nfunction ToggleGroupItem({\r\n  className,\r\n  children,\r\n  variant,\r\n  size,\r\n  ...props\r\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\r\n  VariantProps<typeof toggleVariants>) {\r\n  const context = React.useContext(ToggleGroupContext)\r\n\r\n  return (\r\n    <ToggleGroupPrimitive.Item\r\n      data-slot=\"toggle-group-item\"\r\n      data-variant={context.variant || variant}\r\n      data-size={context.size || size}\r\n      data-spacing={context.spacing}\r\n      className={cn(\r\n        toggleVariants({\r\n          variant: context.variant || variant,\r\n          size: context.size || size,\r\n        }),\r\n        \"w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10\",\r\n        \"data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l\",\r\n        className\r\n      )}\r\n      {...props}\r\n    >\r\n      {children}\r\n    </ToggleGroupPrimitive.Item>\r\n  )\r\n}\r\n\r\nexport { ToggleGroup, ToggleGroupItem }\r\n","// @squaredr/fieldcraft-react\r\n// React renderer for FieldCraft — hooks, components, theming, field registry\r\n\r\n// Injected at build time by tsup from package.json\r\ndeclare const __PKG_VERSION__: string;\r\n\r\n// Dev console banner — runs once in development mode\r\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\r\nif (typeof globalThis !== \"undefined\" && typeof (globalThis as any).process !== \"undefined\" && (globalThis as any).process.env?.NODE_ENV !== \"production\") {\r\n  const _fc_banner = `\\n%c FieldCraft React %c v${__PKG_VERSION__}\\n\\n%c44 field components · Tailwind/shadcn · WCAG accessible\\n\\nDocs      → https://fieldcraft.squaredr.tech/docs\\nGitHub    → https://github.com/SquaredR98/fieldcraft\\nDiscord   → https://discord.gg/FK8pszp5z\\n`;\r\n  console.log(\r\n    _fc_banner,\r\n    \"background:#2563eb;color:#fff;font-weight:bold;padding:2px 6px;border-radius:3px 0 0 3px\",\r\n    \"background:#1e40af;color:#fff;padding:2px 6px;border-radius:0 3px 3px 0\",\r\n    \"color:#6b7280\"\r\n  );\r\n}\r\n\r\n// ---- Engine (re-exported from @squaredr/fieldcraft-core for convenience) ----\r\nexport { createEngine } from \"@squaredr/fieldcraft-core\";\r\nexport type { FormEngine, EngineOptions, ValidationResult } from \"@squaredr/fieldcraft-core\";\r\n\r\n// ---- Hooks ----\r\nexport { useFormEngine, type UseFormEngineReturn } from \"./hooks/useFormEngine\";\r\nexport { useFieldValue } from \"./hooks/useFieldValue\";\r\nexport { useFieldError } from \"./hooks/useFieldError\";\r\nexport { useSectionProgress, type SectionProgress } from \"./hooks/useSectionProgress\";\r\nexport { useFormDirty } from \"./hooks/useFormDirty\";\r\nexport { useFieldVisibility } from \"./hooks/useFieldVisibility\";\r\nexport { useFormProgress, type FormProgress } from \"./hooks/useFormProgress\";\r\nexport { useConditionalFields } from \"./hooks/useConditionalFields\";\r\nexport { useFormSubmit, type UseFormSubmitReturn } from \"./hooks/useFormSubmit\";\r\nexport { useFieldOptions, type FieldOption } from \"./hooks/useFieldOptions\";\r\n\r\n// ---- Theme ----\r\nexport { FormEngineThemeProvider, useTheme } from \"./theme/ThemeProvider\";\r\nexport { themeToCssVars } from \"./theme/theme-to-css-vars\";\r\n\r\n// ---- Registry ----\r\nexport {\r\n  type FieldProps,\r\n  type FieldComponent,\r\n  type FieldRegistry,\r\n  createFieldRegistry,\r\n  mergeRegistries,\r\n} from \"./registry/field-registry\";\r\nexport { defaultRegistry } from \"./registry/default-registry\";\r\nexport { FieldRegistryProvider, useFieldRegistry } from \"./registry/FieldRegistryContext\";\r\n\r\n// ---- Core Components ----\r\nexport { FormEngineRenderer, type FormEngineRendererProps } from \"./components/FormEngineRenderer\";\r\nexport { SectionRenderer, type SectionRendererProps } from \"./components/SectionRenderer\";\r\nexport { FieldRenderer, type FieldRendererProps } from \"./components/FieldRenderer\";\r\nexport { ProgressBar, type ProgressBarProps } from \"./components/ProgressBar\";\r\nexport { NavigationButtons, type NavigationButtonsProps } from \"./components/NavigationButtons\";\r\nexport { SectionNavigation, type SectionNavigationProps } from \"./components/SectionNavigation\";\r\nexport { ErrorSummary, type ErrorSummaryProps } from \"./components/ErrorSummary\";\r\nexport { DraftResumePrompt, type DraftResumePromptProps } from \"./components/DraftResumePrompt\";\r\nexport { CompletionScreen, type CompletionScreenProps } from \"./components/CompletionScreen\";\r\n\r\n// ---- Field Components ----\r\n// Text\r\nexport { ShortTextField } from \"./components/fields/ShortTextField\";\r\nexport { LongTextField } from \"./components/fields/LongTextField\";\r\nexport { EmailField } from \"./components/fields/EmailField\";\r\nexport { PhoneField } from \"./components/fields/PhoneField\";\r\nexport { PhoneInternationalField } from \"./components/fields/PhoneInternationalField\";\r\nexport { UrlField } from \"./components/fields/UrlField\";\r\nexport { LegalNameField } from \"./components/fields/LegalNameField\";\r\n\r\n// Numeric\r\nexport { NumberField } from \"./components/fields/NumberField\";\r\nexport { SliderField } from \"./components/fields/SliderField\";\r\nexport { RatingField } from \"./components/fields/RatingField\";\r\nexport { NpsField } from \"./components/fields/NpsField\";\r\nexport { LikertField } from \"./components/fields/LikertField\";\r\nexport { OpinionScaleField } from \"./components/fields/OpinionScaleField\";\r\n\r\n// Selection\r\nexport { SingleSelectField } from \"./components/fields/SingleSelectField\";\r\nexport { MultiSelectField } from \"./components/fields/MultiSelectField\";\r\nexport { DropdownField } from \"./components/fields/DropdownField\";\r\nexport { BooleanField } from \"./components/fields/BooleanField\";\r\nexport { CountrySelectField } from \"./components/fields/CountrySelectField\";\r\nexport { RankingField } from \"./components/fields/RankingField\";\r\n\r\n// Date/Time\r\nexport { DateField } from \"./components/fields/DateField\";\r\nexport { DateRangeField } from \"./components/fields/DateRangeField\";\r\nexport { TimeField } from \"./components/fields/TimeField\";\r\nexport { AppointmentField } from \"./components/fields/AppointmentField\";\r\n\r\n// Media\r\nexport { FileUploadField } from \"./components/fields/FileUploadField\";\r\nexport { SignatureField } from \"./components/fields/SignatureField\";\r\nexport { ImageCaptureField } from \"./components/fields/ImageCaptureField\";\r\n\r\n// Advanced\r\nexport { AddressField } from \"./components/fields/AddressField\";\r\nexport { PaymentField } from \"./components/fields/PaymentField\";\r\nexport { MatrixField } from \"./components/fields/MatrixField\";\r\nexport { RepeaterField } from \"./components/fields/RepeaterField\";\r\nexport { CalculatedField } from \"./components/fields/CalculatedField\";\r\nexport { HiddenField } from \"./components/fields/HiddenField\";\r\nexport { ScoringField } from \"./components/fields/ScoringField\";\r\n\r\n// Structural\r\nexport { ConsentField } from \"./components/fields/ConsentField\";\r\nexport { InfoBlockField } from \"./components/fields/InfoBlockField\";\r\nexport { SectionHeaderField } from \"./components/fields/SectionHeaderField\";\r\nexport { PageBreakField } from \"./components/fields/PageBreakField\";\r\n\r\n// Content & Visual\r\nexport { WelcomeScreenField } from \"./components/fields/WelcomeScreenField\";\r\nexport { ThankYouScreenField } from \"./components/fields/ThankYouScreenField\";\r\nexport { RichTextField } from \"./components/fields/RichTextField\";\r\nexport { ImageField } from \"./components/fields/ImageField\";\r\nexport { VideoField } from \"./components/fields/VideoField\";\r\nexport { DividerField } from \"./components/fields/DividerField\";\r\nexport { SpacerField } from \"./components/fields/SpacerField\";\r\n\r\n// ---- Shared ----\r\nexport { FieldWrapper, fieldAria } from \"./components/fields/FieldWrapper\";\r\n\r\n// ---- UI Primitives (shadcn/Radix) ----\r\nexport { Alert, AlertTitle, AlertDescription } from \"./components/ui/alert\";\r\nexport { Badge, badgeVariants } from \"./components/ui/badge\";\r\nexport { Button, buttonVariants } from \"./components/ui/button\";\r\nexport { Calendar, CalendarDayButton } from \"./components/ui/calendar\";\r\nexport { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent } from \"./components/ui/card\";\r\nexport { Checkbox } from \"./components/ui/checkbox\";\r\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent } from \"./components/ui/collapsible\";\r\nexport { Input } from \"./components/ui/input\";\r\nexport { Label } from \"./components/ui/label\";\r\nexport {\r\n  Popover, PopoverTrigger, PopoverContent, PopoverAnchor,\r\n  PopoverHeader, PopoverTitle, PopoverDescription,\r\n} from \"./components/ui/popover\";\r\nexport { Progress } from \"./components/ui/progress\";\r\nexport { RadioGroup, RadioGroupItem } from \"./components/ui/radio-group\";\r\nexport {\r\n  Select, SelectContent, SelectGroup, SelectItem, SelectLabel,\r\n  SelectScrollDownButton, SelectScrollUpButton, SelectSeparator,\r\n  SelectTrigger, SelectValue,\r\n} from \"./components/ui/select\";\r\nexport { Separator } from \"./components/ui/separator\";\r\nexport { Slider } from \"./components/ui/slider\";\r\nexport { Switch } from \"./components/ui/switch\";\r\nexport {\r\n  Table, TableHeader, TableBody, TableFooter,\r\n  TableRow, TableHead, TableCell, TableCaption,\r\n} from \"./components/ui/table\";\r\nexport { Textarea } from \"./components/ui/textarea\";\r\nexport { Toggle, toggleVariants } from \"./components/ui/toggle\";\r\nexport { ToggleGroup, ToggleGroupItem } from \"./components/ui/toggle-group\";\r\n\r\n// ---- Data (re-exported from core for convenience) ----\r\nexport { COUNTRIES, type Country } from \"@squaredr/fieldcraft-core\";\r\nexport { TIMEZONES, type Timezone } from \"@squaredr/fieldcraft-core\";\r\n\r\n// ---- Utils ----\r\nexport { cn } from \"./utils/cn\";\r\nexport { formatPhone, formatCurrency, formatFileSize, truncate } from \"./utils/format-helpers\";\r\n"]}