@giro-ds/react 3.0.1 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/Button/Button.tsx","../src/components/Calendar/i18n.ts","../src/components/Calendar/Calendar.tsx","../src/components/Callout/Callout.tsx","../src/shared/icons/CheckSmall.tsx","../src/shared/icons/CheckHalf.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chips/Chips.tsx","../src/components/Container/index.tsx","../src/components/Tooltip/Tooltip.tsx","../src/shared/Label/index.tsx","../src/components/TextField/utils/validation.ts","../src/components/TextField/TextField.tsx","../src/components/DatePicker/DateUtils.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/Dialog/utils/DialogUtils.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Search/Search.tsx","../src/components/Dropdown/DropdownUtils.tsx","../src/hooks/InfiniteScroll.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Filter/Filter.tsx","../src/components/Radio/Radio.tsx","../src/components/ListItem/ListItem.tsx","../src/hooks/NormalizeText.tsx","../src/components/Menu/hooks/useSearchLogic.tsx","../src/components/Menu/hooks/useMenuLogic.ts","../src/components/Menu/components/MenuItem.tsx","../src/components/Menu/Menu.tsx","../src/components/Quantity/Quantity.tsx","../src/components/Select/components/CheckboxSelectItem.tsx","../src/components/Select/components/ExpandableSelectItem.tsx","../src/components/Select/components/SelectItem.tsx","../src/components/Select/hooks/useSelectLogic.ts","../src/components/Select/Select.tsx","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constants.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructFrom.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/toDate.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/defaultOptions.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeek.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeek.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeekYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeDates.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfDay.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarDays.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeekYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isDate.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isValid.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/localize.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/match.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDayOfYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeek.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeekYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeekYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeek.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/addLeadingZeros.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/lightFormatters.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/formatters.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/longFormatters.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/protectedTokens.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/format.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pt-BR/_lib/formatDistance.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pt-BR/_lib/formatLong.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pt-BR/_lib/formatRelative.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pt-BR/_lib/localize.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pt-BR/_lib/match.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pt-BR.js","../../../node_modules/.pnpm/react-content-loader@7.1.1_react@18.3.1/node_modules/react-content-loader/dist/react-content-loader.es.js","../src/components/Table/LoaderList.tsx","../src/components/Table/EmptyRows150Color.tsx","../src/components/Table/Table.tsx","../src/components/Table/TableHeader.tsx","../src/components/Table/TablePagination.tsx","../src/components/Toast/Toast.tsx","../src/components/Switch/Switch.tsx","../src/components/VerificationCode/VerificationCode.tsx","../src/hooks/ApiSimulation.tsx"],"sourcesContent":["import React, { useId } from 'react';\r\nimport styles from './Avatar.module.scss';\r\nimport clsx from 'clsx';\r\nimport type { AvatarProps } from './Avatar.types';\r\n\r\nlet Avatar = ({ id = '', icon, size = 'small', className = '' }: AvatarProps) => {\r\n const componentId = id || useId();\r\n const AvatarClass = clsx(\r\n styles['zds-avatar__circle'],\r\n {\r\n [styles['zds-avatar__large']]: size === 'large',\r\n [styles['zds-avatar__small']]: size === 'small',\r\n },\r\n className\r\n );\r\n\r\n return (\r\n <div className={AvatarClass} id={componentId} role=\"img\" aria-label={`Avatar ${size}`}>\r\n <div className={styles['zds-avatar__circle__icon']}>\r\n {icon}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Avatar;\r\n","import clsx from 'clsx';\r\nimport React, { ReactNode, useId } from 'react';\r\nimport styles from './Badge.module.scss';\r\nimport type { BadgeProps, BadgeType, BadgeValue } from './Badge.types';\r\n\r\nconst Badge: React.FC<BadgeProps> = ({\r\n children,\r\n badgeValue = null,\r\n type = 'notification',\r\n className = '',\r\n id,\r\n 'aria-label': ariaLabel,\r\n}) => {\r\n const isEmpty = badgeValue === null || badgeValue === undefined || badgeValue === '';\r\n const componentId = id || useId();\r\n\r\n const getDisplayValue = (inputValue: BadgeValue): string | number => {\r\n if (inputValue === null || inputValue === undefined) return '';\r\n\r\n if (typeof inputValue === 'number') {\r\n if (!isFinite(inputValue)) return '';\r\n if (inputValue < 0) return 0; \r\n if (inputValue === 0) return ''; \r\n\r\n return inputValue > 99 ? `${99}+` : inputValue;\r\n }\r\n\r\n // ✅ Sanitizar strings\r\n const sanitized = String(inputValue).trim();\r\n return sanitized.length > 10 ? `${sanitized.slice(0, 7)}...` : sanitized;\r\n };\r\n\r\n const displayValue = getDisplayValue(badgeValue);\r\n\r\n if (type === 'notification') {\r\n return (\r\n <div\r\n className={clsx(styles['zds-badge__container'])}\r\n >\r\n <div\r\n id={componentId}\r\n className={clsx(styles['zds-badge'], {\r\n [styles['zds-badge__small']]: Number(badgeValue) <= 10,\r\n [styles['zds-badge__large']]: Number(badgeValue) > 10,\r\n }, className)}\r\n data-testid=\"badge-notification\"\r\n >\r\n {!isEmpty && (\r\n <span\r\n className={styles['zds-badge__value']}\r\n aria-hidden={ariaLabel ? 'true' : 'false'}\r\n >\r\n {displayValue}\r\n </span>\r\n )}\r\n </div>\r\n {children && (\r\n <div className={styles['zds-badge__content']} data-testid=\"badge-content\">\r\n {children}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n className={clsx(styles['zds-badge__container'])}\r\n >\r\n <div\r\n className={clsx(styles['zds-badge__status'], {\r\n [styles['zds-badge__status__empty']]: isEmpty,\r\n }, className)}\r\n data-testid=\"badge-status\"\r\n >\r\n {!isEmpty && (\r\n <span\r\n className={styles['zds-badge__status-value']}\r\n aria-hidden={ariaLabel ? 'true' : 'false'}\r\n >\r\n {displayValue}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Badge;","import { SpinnerIos16Regular } from '@fluentui/react-icons';\r\nimport clsx from 'clsx';\r\nimport React, { useId, useMemo } from 'react';\r\n\r\nimport styles from './Button.module.scss';\r\n\r\nimport type { ButtonProps } from './Button.types';\r\n\r\nconst Button = React.forwardRef<HTMLElement, ButtonProps>(({\r\n as,\r\n children,\r\n variant = 'filled',\r\n iconPosition = 'left',\r\n href,\r\n to,\r\n external = false,\r\n target,\r\n rel,\r\n disabled = false,\r\n onClick,\r\n size = 'lg',\r\n className = '',\r\n type = 'button',\r\n id = '',\r\n icon = null,\r\n fullWidth = false,\r\n ariaLabel = '',\r\n iconOnly = false,\r\n loading = false,\r\n ...restProps\r\n}, ref) => {\r\n\r\n const generatedId = useId();\r\n const componentId = id || generatedId;\r\n\r\n const getComponent = (): React.ElementType => {\r\n if (as) return as;\r\n\r\n if (href) return 'a'; \r\n if (to) return 'a'; \r\n return 'button';\r\n };\r\n\r\n const Component = getComponent();\r\n\r\n const hasContent = useMemo(() => {\r\n return children && React.Children.count(children) > 0;\r\n }, [children]);\r\n\r\n const buttonClasses = clsx(\r\n styles.button,\r\n styles[`button-${variant}`],\r\n styles[`button-${size}`],\r\n {\r\n [styles['buttonLoading']]: loading,\r\n [styles['buttonWithIcon']]: icon && !iconOnly,\r\n [styles[`buttonIconPosition-${iconPosition}`]]: icon && !iconOnly,\r\n [styles['buttonNoContent']]: icon && !hasContent && !iconOnly,\r\n [styles['buttonFullWidth']]: fullWidth,\r\n [styles['buttonIconOnly']]: iconOnly,\r\n },\r\n className\r\n );\r\n\r\n const getAriaLabel = () => {\r\n if (ariaLabel) return ariaLabel;\r\n if (iconOnly && !ariaLabel) {\r\n return 'Botão de ação';\r\n }\r\n if (typeof children === 'string') return children;\r\n return undefined;\r\n };\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLElement>) => {\r\n if (disabled) {\r\n e.preventDefault();\r\n return;\r\n }\r\n onClick?.(e);\r\n };\r\n\r\n const renderContent = () => {\r\n if (iconOnly && !loading) {\r\n return (\r\n <span className={styles.buttonIconOnly} aria-hidden=\"true\">\r\n {icon}\r\n </span>\r\n );\r\n }\r\n if (loading) {\r\n return (\r\n <span className={styles.buttonLoading} aria-hidden=\"true\">\r\n <SpinnerIos16Regular aria-hidden=\"true\" />\r\n </span>\r\n );\r\n }\r\n return (\r\n <>\r\n {icon && (iconPosition === 'left' || iconPosition === 'both') && (\r\n <span className={styles.buttonIconLeft} aria-hidden=\"true\">\r\n {icon}\r\n </span>\r\n )}\r\n {children}\r\n {icon && (iconPosition === 'right' || iconPosition === 'both') && (\r\n <span className={styles.buttonIconRight} aria-hidden=\"true\">\r\n {icon}\r\n </span>\r\n )}\r\n </>\r\n );\r\n };\r\n\r\n const baseProps = {\r\n ref,\r\n id: componentId,\r\n className: buttonClasses,\r\n 'aria-label': getAriaLabel(),\r\n 'aria-disabled': disabled,\r\n tabIndex: disabled ? -1 : 0,\r\n onClick: handleClick,\r\n ...restProps,\r\n };\r\n\r\n const getNavigationProps = () => {\r\n if (href) {\r\n return {\r\n href: disabled ? '#' : href,\r\n target: external || target === '_blank' ? '_blank' : target,\r\n rel: external || target === '_blank' ? 'noopener noreferrer' : rel,\r\n };\r\n }\r\n\r\n if (to) {\r\n if (Component !== 'a') {\r\n return {\r\n to: disabled ? '#' : to,\r\n };\r\n }\r\n return {\r\n href: disabled ? '#' : to,\r\n };\r\n }\r\n if (Component === 'button') {\r\n return {\r\n type,\r\n disabled,\r\n };\r\n }\r\n\r\n return {};\r\n };\r\n\r\n return (\r\n <Component\r\n {...baseProps}\r\n {...getNavigationProps()}\r\n >\r\n {renderContent()}\r\n </Component>\r\n );\r\n});\r\n\r\nButton.displayName = 'Button';\r\nexport default Button;","// i18n.ts\r\nimport i18n from 'i18next';\r\nimport { initReactI18next } from 'react-i18next';\r\n\r\n// Types for translations\r\ninterface CalendarTranslations {\r\n today: string;\r\n selected: string;\r\n monthChanged: string;\r\n yearChanged: string;\r\n calendar: string;\r\n yearSelection: string;\r\n previousMonth: string;\r\n nextMonth: string;\r\n previousYears: string;\r\n nextYears: string;\r\n openYearSelection: string;\r\n closeYearSelection: string;\r\n currentYear: string;\r\n selectYear: string;\r\n monthNames: {\r\n january: string;\r\n february: string;\r\n march: string;\r\n april: string;\r\n may: string;\r\n june: string;\r\n july: string;\r\n august: string;\r\n september: string;\r\n october: string;\r\n november: string;\r\n december: string;\r\n };\r\n weekDays: {\r\n sunday: string;\r\n monday: string;\r\n tuesday: string;\r\n wednesday: string;\r\n thursday: string;\r\n friday: string;\r\n saturday: string;\r\n };\r\n weekDaysShort: {\r\n sunday: string;\r\n monday: string;\r\n tuesday: string;\r\n wednesday: string;\r\n thursday: string;\r\n friday: string;\r\n saturday: string;\r\n };\r\n}\r\n\r\n// Resources configuration\r\nconst resources = {\r\n 'pt-br': {\r\n translation: {\r\n today: 'Hoje',\r\n selected: 'Selecionado',\r\n monthChanged: 'Mês alterado para {{month}}',\r\n yearChanged: 'Ano alterado para {{year}}',\r\n calendar: 'Calendário',\r\n yearSelection: 'Seleção de ano',\r\n previousMonth: 'Mês anterior, {{month}}',\r\n nextMonth: 'Próximo mês, {{month}}',\r\n previousYears: 'Mostrar anos anteriores',\r\n nextYears: 'Mostrar próximos anos',\r\n openYearSelection: 'Abrir seleção de ano',\r\n closeYearSelection: 'Fechar seleção de ano',\r\n currentYear: 'Ano atual, {{year}}',\r\n selectYear: 'Selecionar ano {{year}}',\r\n monthNames: {\r\n january: 'Janeiro',\r\n february: 'Fevereiro',\r\n march: 'Março',\r\n april: 'Abril',\r\n may: 'Maio',\r\n june: 'Junho',\r\n july: 'Julho',\r\n august: 'Agosto',\r\n september: 'Setembro',\r\n october: 'Outubro',\r\n november: 'Novembro',\r\n december: 'Dezembro'\r\n },\r\n weekDays: {\r\n sunday: 'Domingo',\r\n monday: 'Segunda-feira',\r\n tuesday: 'Terça-feira',\r\n wednesday: 'Quarta-feira',\r\n thursday: 'Quinta-feira',\r\n friday: 'Sexta-feira',\r\n saturday: 'Sábado'\r\n },\r\n weekDaysShort: {\r\n sunday: 'D',\r\n monday: 'S',\r\n tuesday: 'T',\r\n wednesday: 'Q',\r\n thursday: 'Q',\r\n friday: 'S',\r\n saturday: 'S'\r\n }\r\n }\r\n },\r\n 'en-us': {\r\n translation: {\r\n today: 'Today',\r\n selected: 'Selected',\r\n monthChanged: 'Month changed to {{month}}',\r\n yearChanged: 'Year changed to {{year}}',\r\n calendar: 'Calendar',\r\n yearSelection: 'Year selection',\r\n previousMonth: 'Previous month, {{month}}',\r\n nextMonth: 'Next month, {{month}}',\r\n previousYears: 'Show previous years',\r\n nextYears: 'Show next years',\r\n openYearSelection: 'Open year selection',\r\n closeYearSelection: 'Close year selection',\r\n currentYear: 'Current year, {{year}}',\r\n selectYear: 'Select year {{year}}',\r\n monthNames: {\r\n january: 'January',\r\n february: 'February',\r\n march: 'March',\r\n april: 'April',\r\n may: 'May',\r\n june: 'June',\r\n july: 'July',\r\n august: 'August',\r\n september: 'September',\r\n october: 'October',\r\n november: 'November',\r\n december: 'December'\r\n },\r\n weekDays: {\r\n sunday: 'Sunday',\r\n monday: 'Monday',\r\n tuesday: 'Tuesday',\r\n wednesday: 'Wednesday',\r\n thursday: 'Thursday',\r\n friday: 'Friday',\r\n saturday: 'Saturday'\r\n },\r\n weekDaysShort: {\r\n sunday: 'S',\r\n monday: 'M',\r\n tuesday: 'T',\r\n wednesday: 'W',\r\n thursday: 'T',\r\n friday: 'F',\r\n saturday: 'S'\r\n }\r\n }\r\n }\r\n};\r\n\r\n// Initialize i18n\r\ni18n\r\n .use(initReactI18next)\r\n .init({\r\n resources,\r\n lng: 'pt-br',\r\n fallbackLng: 'en-us',\r\n interpolation: {\r\n escapeValue: false\r\n },\r\n returnObjects: false, // Ensure we don't return objects\r\n returnEmptyString: true,\r\n returnNull: false\r\n });\r\n\r\n// Helper function to ensure string return\r\nconst safeTranslate = (key: string, options?: any): string => {\r\n try {\r\n const result = i18n.t(key, { ...options, returnObjects: false });\r\n return typeof result === 'string' ? result : String(result);\r\n } catch (error) {\r\n console.warn(`Translation error for key: ${key}`, error);\r\n return key; // Fallback to key\r\n }\r\n};\r\n\r\n// Change language function\r\nconst changeLanguage = (lng: 'pt-br' | 'en-us') => {\r\n return i18n.changeLanguage(lng);\r\n};\r\n\r\n// Custom hook for calendar translations\r\nexport const useCalendarTranslation = () => {\r\n return {\r\n t: (key: keyof CalendarTranslations | string, options?: any): string => {\r\n return safeTranslate(key as string, options);\r\n },\r\n i18n,\r\n changeLanguage,\r\n currentLanguage: i18n.language as 'pt-br' | 'en-us'\r\n };\r\n};\r\n\r\nexport default i18n;","import React, {\r\n useId,\r\n useRef,\r\n useState,\r\n useEffect,\r\n useMemo,\r\n useCallback,\r\n} from 'react';\r\nimport clsx from 'clsx';\r\nimport styles from './Calendar.module.scss';\r\nimport {\r\n ChevronLeft16Regular,\r\n ChevronRight16Regular,\r\n ChevronDown16Regular,\r\n ChevronUp16Regular,\r\n} from '@fluentui/react-icons';\r\nimport { useTranslation } from 'react-i18next';\r\nimport './i18n';\r\nimport Button from '../Button';\r\nimport type { Locale, DateFormat, DayItem, EmptyItem, CalendarItem, YearItem, CalendarProps } from './Calendar.types';\r\n\r\n/**\r\n * Calendar component with keyboard navigation support and full TypeScript implementation.\r\n */\r\nconst Calendar: React.FC<CalendarProps> = ({\r\n currentDate,\r\n className,\r\n selectedDate = null,\r\n onDateChange,\r\n onDaySelect,\r\n onClear,\r\n locale = 'pt-br',\r\n format = 'dd/mm/yyyy',\r\n id = '',\r\n minDate,\r\n maxDate,\r\n}) => {\r\n const { t, i18n } = useTranslation();\r\n const componentId = id || useId();\r\n const calendarRef = useRef<HTMLDivElement>(null);\r\n const [changeView, setChangeView] = useState<boolean>(false);\r\n const [announcement, setAnnouncement] = useState<string>('');\r\n \r\n const displayDate = currentDate || new Date();\r\n \r\n const [yearRangeStart, setYearRangeStart] = useState<number>(\r\n displayDate.getFullYear() - 13\r\n );\r\n\r\n useEffect(() => {\r\n i18n.changeLanguage(locale);\r\n }, [locale, i18n]);\r\n\r\n const { month, year, daysInMonth } = useMemo(\r\n () => ({\r\n month: displayDate.getMonth(),\r\n year: displayDate.getFullYear(),\r\n daysInMonth: new Date(\r\n displayDate.getFullYear(),\r\n displayDate.getMonth() + 1,\r\n 0\r\n ).getDate(),\r\n }),\r\n [displayDate]\r\n );\r\n\r\n const weekDaysLabels = useMemo(\r\n (): string[] =>\r\n locale === 'en-us'\r\n ? ['S', 'M', 'T', 'W', 'T', 'F', 'S']\r\n : ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],\r\n [locale]\r\n );\r\n\r\n /**\r\n * Retorna o formato de data conforme a prop format e locale.\r\n */\r\n const handleClearDate = useCallback((): void => {\r\n onClear?.(); // Chama callback externo se existir\r\n\r\n setAnnouncement(\r\n locale === 'en-us' ? 'Selected date cleared' : 'Data selecionada limpa'\r\n );\r\n }, [onClear, locale]);\r\n\r\n const getDateFormat = useCallback(\r\n (date: Date): string => {\r\n const options: Intl.DateTimeFormatOptions = {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n };\r\n\r\n if (locale === 'en-us') {\r\n return date.toLocaleDateString('en-US', options);\r\n }\r\n return date.toLocaleDateString('pt-BR', options);\r\n },\r\n [locale]\r\n );\r\n\r\n /**\r\n * Verifica se o dia é hoje.\r\n */\r\n const isToday = useCallback(\r\n (day: number): boolean => {\r\n const today = new Date();\r\n return (\r\n !selectedDate &&\r\n day === today.getDate() &&\r\n month === today.getMonth() &&\r\n year === today.getFullYear()\r\n );\r\n },\r\n [selectedDate, month, year]\r\n );\r\n\r\n /**\r\n * Verifica se o dia está selecionado.\r\n */\r\n const isSelected = useCallback(\r\n (day: number): boolean => {\r\n return Boolean(\r\n selectedDate &&\r\n selectedDate.getDate() === day &&\r\n selectedDate.getMonth() === month &&\r\n selectedDate.getFullYear() === year\r\n );\r\n },\r\n [selectedDate, month, year]\r\n );\r\n\r\n /**\r\n * Verifica se uma data está dentro dos limites permitidos.\r\n */\r\n const isDateInRange = useCallback(\r\n (date: Date): boolean => {\r\n if (minDate && date < minDate) return false;\r\n if (maxDate && date > maxDate) return false;\r\n return true;\r\n },\r\n [minDate, maxDate]\r\n );\r\n\r\n /**\r\n * Retorna o nome do mês conforme o locale.\r\n */\r\n const getMonthName = useCallback((): string => {\r\n const monthNames =\r\n locale === 'en-us'\r\n ? [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December',\r\n ]\r\n : [\r\n 'Janeiro',\r\n 'Fevereiro',\r\n 'Março',\r\n 'Abril',\r\n 'Maio',\r\n 'Junho',\r\n 'Julho',\r\n 'Agosto',\r\n 'Setembro',\r\n 'Outubro',\r\n 'Novembro',\r\n 'Dezembro',\r\n ];\r\n\r\n return monthNames[month];\r\n }, [month, locale]);\r\n\r\n // ✅ Memoizar array de dias - tipado e otimizado\r\n const daysArray = useMemo((): CalendarItem[] => {\r\n const days: CalendarItem[] = [];\r\n const firstDayOfMonth = new Date(year, month, 1).getDay();\r\n\r\n // Dias vazios para alinhar o início do mês\r\n for (let i = 0; i < firstDayOfMonth; i++) {\r\n days.push({ type: 'empty', key: `empty-${i}` });\r\n }\r\n\r\n // Dias do mês\r\n for (let i = 1; i <= daysInMonth; i++) {\r\n const date = new Date(year, month, i);\r\n days.push({\r\n type: 'day',\r\n key: i,\r\n day: i,\r\n date,\r\n isToday: isToday(i),\r\n isSelected: isSelected(i),\r\n label: getDateFormat(date),\r\n });\r\n }\r\n return days;\r\n }, [year, month, daysInMonth, isToday, isSelected, getDateFormat]);\r\n\r\n // ✅ Memoizar array de anos - tipado e otimizado\r\n const yearsArray = useMemo((): YearItem[] => {\r\n const years: YearItem[] = [];\r\n for (let y = yearRangeStart; y < yearRangeStart + 20; y++) {\r\n years.push({\r\n year: y,\r\n isCurrent: y === year,\r\n key: y,\r\n });\r\n }\r\n return years;\r\n }, [yearRangeStart, year]);\r\n\r\n // ✅ Memoizar handlers para evitar re-renders desnecessários\r\n const handleSelectDay = useCallback(\r\n (day: number): void => {\r\n const selectedDay = new Date(year, month, day);\r\n\r\n if (!isDateInRange(selectedDay)) {\r\n return;\r\n }\r\n\r\n onDateChange?.(selectedDay);\r\n onDaySelect?.(selectedDay);\r\n },\r\n [year, month, onDateChange, onDaySelect, isDateInRange]\r\n );\r\n\r\n /**\r\n * Navega para o mês anterior ou range de anos anterior.\r\n */\r\n const handlePrevMonth = useCallback((): void => {\r\n if (changeView) {\r\n setYearRangeStart((prev) => prev - 20);\r\n setAnnouncement(\r\n locale === 'en-us'\r\n ? 'Previous years displayed'\r\n : 'Anos anteriores exibidos'\r\n );\r\n } else {\r\n const newDate = new Date(year, month - 1, 1);\r\n onDateChange?.(newDate);\r\n setAnnouncement(\r\n locale === 'en-us'\r\n ? `Month changed to ${newDate.toLocaleDateString('en-US', { month: 'long', year: 'numeric' })}`\r\n : `Mês alterado para ${newDate.toLocaleDateString('pt-BR', { month: 'long', year: 'numeric' })}`\r\n );\r\n }\r\n }, [changeView, locale, year, month, onDateChange]);\r\n\r\n /**\r\n * Navega para o próximo mês ou range de anos seguinte.\r\n */\r\n const handleNextMonth = useCallback((): void => {\r\n if (changeView) {\r\n setYearRangeStart((prev) => prev + 20);\r\n setAnnouncement(\r\n locale === 'en-us' ? 'Next years displayed' : 'Próximos anos exibidos'\r\n );\r\n } else {\r\n const newDate = new Date(year, month + 1, 1);\r\n onDateChange?.(newDate);\r\n setAnnouncement(\r\n locale === 'en-us'\r\n ? `Month changed to ${newDate.toLocaleDateString('en-US', { month: 'long', year: 'numeric' })}`\r\n : `Mês alterado para ${newDate.toLocaleDateString('pt-BR', { month: 'long', year: 'numeric' })}`\r\n );\r\n }\r\n }, [changeView, locale, year, month, onDateChange]);\r\n\r\n /**\r\n * Alterna entre visualização de mês e ano.\r\n */\r\n const handleToggleView = useCallback((): void => {\r\n setChangeView((prev) => !prev);\r\n }, []);\r\n\r\n /**\r\n * Handler de eventos de teclado para navegação.\r\n */\r\n const handleCalendarKeyDown = useCallback(\r\n (e: React.KeyboardEvent<HTMLDivElement>): void => {\r\n if (changeView) {\r\n if (e.key === 'ArrowLeft') {\r\n setYearRangeStart((prev) => prev - 20);\r\n setAnnouncement(\r\n locale === 'en-us'\r\n ? 'Previous years displayed'\r\n : 'Anos anteriores exibidos'\r\n );\r\n }\r\n if (e.key === 'ArrowRight') {\r\n setYearRangeStart((prev) => prev + 20);\r\n setAnnouncement(\r\n locale === 'en-us'\r\n ? 'Next years displayed'\r\n : 'Próximos anos exibidos'\r\n );\r\n }\r\n } else {\r\n if (e.key === 'ArrowLeft') {\r\n handlePrevMonth();\r\n }\r\n if (e.key === 'ArrowRight') {\r\n handleNextMonth();\r\n }\r\n }\r\n },\r\n [changeView, locale, handlePrevMonth, handleNextMonth]\r\n );\r\n\r\n /**\r\n * Handler para seleção de ano.\r\n */\r\n const handleYearSelect = useCallback(\r\n (selectedYear: number): void => {\r\n setChangeView(false);\r\n const newDate = new Date(selectedYear, month, 1);\r\n onDateChange?.(newDate);\r\n setAnnouncement(\r\n locale === 'en-us'\r\n ? `Year changed to ${selectedYear}`\r\n : `Ano alterado para ${selectedYear}`\r\n );\r\n },\r\n [month, onDateChange, locale]\r\n );\r\n\r\n /**\r\n * Handler para eventos de teclado nos dias.\r\n */\r\n const handleDayKeyDown = useCallback(\r\n (e: React.KeyboardEvent<HTMLDivElement>, day: number): void => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n handleSelectDay(day);\r\n }\r\n },\r\n [handleSelectDay]\r\n );\r\n\r\n /**\r\n * Renderiza os anos usando o array de objetos memoizado.\r\n */\r\n const renderYears = useCallback((): React.ReactNode => {\r\n return yearsArray.map((item) => (\r\n <div\r\n key={item.key}\r\n className={clsx(styles['zds-calendar__year'], {\r\n [styles['zds-calendar__year--current']]: item.isCurrent,\r\n })}\r\n onClick={() => handleYearSelect(item.year)}\r\n tabIndex={0}\r\n role=\"button\"\r\n aria-pressed={item.isCurrent}\r\n aria-label={\r\n item.isCurrent\r\n ? locale === 'en-us'\r\n ? `Current year, ${item.year}`\r\n : `Ano atual, ${item.year}`\r\n : locale === 'en-us'\r\n ? `Select year ${item.year}`\r\n : `Selecionar ano ${item.year}`\r\n }\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n handleYearSelect(item.year);\r\n }\r\n }}\r\n >\r\n {item.year}\r\n </div>\r\n ));\r\n }, [yearsArray, handleYearSelect, locale]);\r\n\r\n /**\r\n * Renderiza os dias do mês atual usando o array de objetos memoizado.\r\n */\r\n const renderDays = useCallback((): React.ReactNode => {\r\n return daysArray.map((item) => {\r\n if (item.type === 'empty') {\r\n return (\r\n <div\r\n key={item.key}\r\n className={clsx(styles['zds-calendar__day'], styles['zds-calendar__day--empty'])}\r\n aria-hidden=\"true\"\r\n />\r\n );\r\n }\r\n\r\n const dayItem = item as DayItem;\r\n const isDisabled = !isDateInRange(dayItem.date);\r\n\r\n return (\r\n <div\r\n key={dayItem.key}\r\n className={clsx(styles['zds-calendar__day'], {\r\n [styles['zds-calendar__day--today']]: dayItem.isToday,\r\n [styles['zds-calendar__day--selected']]: dayItem.isSelected,\r\n [styles['zds-calendar__day--disabled']]: isDisabled,\r\n })}\r\n onClick={isDisabled ? undefined : () => handleSelectDay(dayItem.day)}\r\n onKeyDown={\r\n isDisabled ? undefined : (e) => handleDayKeyDown(e, dayItem.day)\r\n }\r\n tabIndex={isDisabled ? -1 : 0}\r\n role=\"gridcell\"\r\n aria-selected={dayItem.isSelected}\r\n aria-current={dayItem.isToday ? 'date' : undefined}\r\n aria-disabled={isDisabled}\r\n aria-label={`${dayItem.day} ${getMonthName()} ${year}${\r\n dayItem.isToday ? ` (${t('today')})` : ''\r\n }${dayItem.isSelected ? ` (${t('selected')})` : ''}${\r\n isDisabled ? ` (${t('disabled')})` : ''\r\n }`}\r\n >\r\n {dayItem.day}\r\n </div>\r\n );\r\n });\r\n }, [\r\n daysArray,\r\n handleSelectDay,\r\n handleDayKeyDown,\r\n getMonthName,\r\n year,\r\n t,\r\n isDateInRange,\r\n ]);\r\n\r\n // ✅ Memoizar componentes de weekdays para evitar re-renders\r\n const weekdaysComponent = useMemo((): React.ReactNode | null => {\r\n if (changeView) return null;\r\n\r\n return weekDaysLabels.map((day, idx) => (\r\n <div key={`${day}-${idx}`} className={styles['zds-calendar__weekday']}>\r\n {day}\r\n </div>\r\n ));\r\n }, [changeView, weekDaysLabels]);\r\n\r\n // ✅ Limpa o anúncio após um tempo para evitar repetições\r\n useEffect(() => {\r\n if (announcement) {\r\n const timeout = setTimeout(() => setAnnouncement(''), 1500);\r\n return () => clearTimeout(timeout);\r\n }\r\n }, [announcement]);\r\n\r\n // ✅ Sempre que abrir a view de anos, centraliza o range no ano atual\r\n useEffect(() => {\r\n if (changeView) {\r\n setYearRangeStart(year - 13);\r\n }\r\n }, [changeView, year]);\r\n\r\n return (\r\n <div\r\n className={clsx(\r\n styles['zds-calendar'],\r\n { [styles['zds-calendar--year-view']]: changeView },\r\n className\r\n )}\r\n id={componentId}\r\n tabIndex={0}\r\n ref={calendarRef}\r\n onKeyDown={handleCalendarKeyDown}\r\n aria-label={t('calendar')}\r\n >\r\n {/* Screen reader announcements */}\r\n <div\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n className={styles['zds-calendar__aria-live']}\r\n style={{\r\n position: 'absolute',\r\n width: 1,\r\n height: 1,\r\n overflow: 'hidden',\r\n clip: 'rect(1px, 1px, 1px, 1px)',\r\n }}\r\n >\r\n {announcement}\r\n </div>\r\n\r\n {/* Header with month/year and navigation */}\r\n <div className={styles['zds-calendar__header']}>\r\n <span\r\n className={styles['zds-calendar__month-name']}\r\n onClick={handleToggleView}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n handleToggleView();\r\n }\r\n }}\r\n tabIndex={0}\r\n role=\"button\"\r\n aria-label={\r\n changeView\r\n ? locale === 'en-us'\r\n ? 'Close year selection'\r\n : 'Fechar seleção de ano'\r\n : locale === 'en-us'\r\n ? 'Open year selection'\r\n : 'Abrir seleção de ano'\r\n }\r\n >\r\n {`${getMonthName()} ${year}`}\r\n {changeView ? (\r\n <ChevronUp16Regular aria-hidden=\"true\" />\r\n ) : (\r\n <ChevronDown16Regular aria-hidden=\"true\" />\r\n )}\r\n </span>\r\n\r\n <div className={styles['zds-calendar__navigation']}>\r\n <button\r\n onClick={handlePrevMonth}\r\n aria-label={\r\n changeView\r\n ? locale === 'en-us'\r\n ? 'Show previous years'\r\n : 'Mostrar anos anteriores'\r\n : locale === 'en-us'\r\n ? `Previous month, ${new Date(year, month - 1, 1).toLocaleDateString('en-US', { month: 'long', year: 'numeric' })}`\r\n : `Mês anterior, ${new Date(year, month - 1, 1).toLocaleDateString('pt-BR', { month: 'long', year: 'numeric' })}`\r\n }\r\n type=\"button\"\r\n className=\"zds-calendar__nav-button\"\r\n >\r\n <ChevronLeft16Regular aria-hidden=\"true\" />\r\n </button>\r\n\r\n <button\r\n onClick={handleNextMonth}\r\n aria-label={\r\n changeView\r\n ? locale === 'en-us'\r\n ? 'Show next years'\r\n : 'Mostrar próximos anos'\r\n : locale === 'en-us'\r\n ? `Next month, ${new Date(year, month + 1, 1).toLocaleDateString('en-US', { month: 'long', year: 'numeric' })}`\r\n : `Próximo mês, ${new Date(year, month + 1, 1).toLocaleDateString('pt-BR', { month: 'long', year: 'numeric' })}`\r\n }\r\n type=\"button\"\r\n className=\"zds-calendar__nav-button\"\r\n >\r\n <ChevronRight16Regular aria-hidden=\"true\" />\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {/* Weekdays header */}\r\n <div className={styles['zds-calendar__weekdays']}>{weekdaysComponent}</div>\r\n\r\n {/* Calendar grid - days or years */}\r\n <div className={styles['zds-calendar__grid']}>\r\n {changeView ? (\r\n <div\r\n className={styles['zds-calendar__year-view']}\r\n role=\"grid\"\r\n aria-label={t('yearSelection')}\r\n >\r\n {renderYears()}\r\n </div>\r\n ) : (\r\n <div\r\n className={styles['zds-calendar__days']}\r\n role=\"grid\"\r\n aria-label={`${getMonthName()} ${year}`}\r\n >\r\n {renderDays()}\r\n </div>\r\n )}\r\n </div>\r\n <div className={styles['zds-calendar__clear']}>\r\n <Button\r\n size=\"sm\"\r\n variant=\"outlined\"\r\n onClick={handleClearDate}\r\n disabled={!selectedDate}\r\n >\r\n Limpar\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n// ✅ Default props integrados na função usando valores padrão dos parâmetros\r\nCalendar.displayName = 'Calendar';\r\n\r\nconst MemoizedCalendar = React.memo(Calendar);\r\nMemoizedCalendar.displayName = 'Calendar';\r\n\r\nexport default MemoizedCalendar;\r\nexport type { CalendarProps, Locale, DateFormat };\r\n","import React, { useId } from 'react';\r\nimport clsx from 'clsx';\r\nimport styles from './Callout.module.scss';\r\nimport type { CalloutProps } from './Callout.types';\r\n\r\nconst Callout: React.FC<CalloutProps> = ({\r\n type = 'neutral',\r\n title = null,\r\n text = '',\r\n icon = null,\r\n className = '',\r\n id = ''\r\n}) => {\r\n const generatedId = useId();\r\n const titleId = id || `callout-title-${generatedId}`;\r\n const componentId = id || generatedId;\r\n\r\n const calloutClass = clsx(\r\n styles['zds-callout__container'],\r\n styles[`zds-callout__${type}`],\r\n {\r\n [styles['zds-callout__container__with-title']]: title,\r\n [styles['zds-callout__no-icon']]: !icon,\r\n },\r\n className\r\n );\r\n\r\n return (\r\n <div\r\n id={componentId}\r\n className={calloutClass}\r\n aria-live=\"polite\"\r\n role=\"alert\"\r\n aria-labelledby={title ? titleId : undefined}\r\n >\r\n <div className={styles['zds-callout__content']}>\r\n {icon && <span className={styles['zds-callout__icon']}>{icon}</span>}\r\n <div className={styles['zds-callout__subcontent']}>\r\n {title && (\r\n <span id={titleId} className={styles['zds-callout__title']}>\r\n {title}\r\n </span>\r\n )}\r\n {text && <span className={styles['zds-callout__text']}>{text}</span>}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Callout;","import React from 'react';\r\n\r\nexport interface CheckSmallProps {\r\n className?: string;\r\n width?: number | string;\r\n height?: number | string;\r\n fill?: string;\r\n [key: string]: any;\r\n}\r\n\r\nconst CheckSmall: React.FC<CheckSmallProps> = ({ \r\n className = '',\r\n width = 12,\r\n height = 10,\r\n fill = 'white',\r\n ...restProps\r\n}) => {\r\n return (\r\n <svg \r\n width={width} \r\n height={height} \r\n viewBox=\"0 0 12 10\" \r\n fill=\"none\" \r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={className}\r\n aria-hidden=\"true\"\r\n {...restProps}\r\n >\r\n <path \r\n d=\"M4 9.4L0 5.4L1.4 4L4 6.6L10.6 0L12 1.4L4 9.4Z\" \r\n fill={fill} \r\n />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default CheckSmall;\r\n","import React from 'react';\r\n\r\nexport interface CheckHalfProps {\r\n className?: string;\r\n width?: number | string;\r\n height?: number | string;\r\n fill?: string;\r\n [key: string]: any;\r\n}\r\n\r\nconst CheckHalf: React.FC<CheckHalfProps> = ({ \r\n className = '',\r\n width = 16,\r\n height = 16,\r\n fill = 'white',\r\n ...restProps\r\n}) => {\r\n return (\r\n <svg \r\n width={width} \r\n height={height} \r\n viewBox=\"0 0 16 16\" \r\n fill=\"none\" \r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={className}\r\n aria-hidden=\"true\"\r\n {...restProps}\r\n >\r\n <g id=\"Icons/check_indeterminate_small\">\r\n <path \r\n id=\"icon\" \r\n d=\"M3 9V7H13V9H3Z\" \r\n fill={fill} \r\n />\r\n </g>\r\n </svg>\r\n );\r\n};\r\n\r\nexport default CheckHalf;\r\n","import * as React from 'react';\r\nimport { Checkbox as CheckboxRadix } from 'radix-ui';\r\nimport styles from './Checkbox.module.scss';\r\nimport { CheckSmall, CheckHalf } from '@/shared/icons';\r\nimport { CheckboxProps } from './Checkbox.types';\r\nimport clsx from 'clsx';\r\nimport { useId } from 'react';\r\n\r\nconst Checkbox: React.FC<CheckboxProps> = ({\r\n id,\r\n label='',\r\n onCheckedChange,\r\n checked,\r\n disabled,\r\n className,\r\n indeterminate = false,\r\n ...rest\r\n}) => {\r\n const componentId = id || useId();\r\n\r\n return (\r\n <div className={clsx(styles.container, className)}>\r\n <div\r\n className={clsx(styles.wrapperCheckbox, {\r\n [styles.disabled]: disabled,\r\n })}\r\n role=\"presentation\"\r\n tabIndex={disabled ? -1 : 0}\r\n >\r\n <CheckboxRadix.Root\r\n className={styles.root}\r\n checked={checked}\r\n id={componentId}\r\n onCheckedChange={onCheckedChange}\r\n disabled={disabled}\r\n data-disabled={disabled}\r\n data-indeterminate={indeterminate}\r\n aria-checked={indeterminate ? 'mixed' : checked ? 'true' : 'false'}\r\n {...rest}\r\n >\r\n <CheckboxRadix.Indicator className={styles.indicator}>\r\n {indeterminate ? <CheckHalf /> : <CheckSmall />}\r\n </CheckboxRadix.Indicator>\r\n </CheckboxRadix.Root>\r\n </div>\r\n <label\r\n className={clsx(styles.label, { [styles.disabled]: disabled })}\r\n htmlFor={componentId}\r\n >\r\n {label}\r\n </label>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Checkbox;\r\n","import React from 'react';\r\nimport styles from './Chips.module.scss';\r\nimport clsx from 'clsx';\r\nimport type { ChipsProps } from './Chips.types';\r\n\r\n/**\r\n * Componente Chips para exibir tags/etiquetas com ícones opcionais\r\n */\r\nconst Chips: React.FC<ChipsProps> = ({\r\n title,\r\n leftIcon = null,\r\n rightIcon = null,\r\n type = 'neutral',\r\n disabled = false,\r\n className = '',\r\n}) => {\r\n\r\n if (!title || title.trim() === '') {\r\n console.warn('Chips: title prop is required and cannot be empty');\r\n return null;\r\n }\r\n const chipsClass = clsx(\r\n styles['zds-chips'],\r\n styles[`zds-chips--${type}`],\r\n {\r\n [styles['zds-chips--disabled']]: disabled,\r\n [styles['has-left-icon']]: leftIcon,\r\n [styles['has-right-icon']]: rightIcon,\r\n },\r\n className\r\n );\r\n return (\r\n <div\r\n className={chipsClass}\r\n aria-label={`Chip: ${title}`}\r\n aria-disabled={disabled}\r\n >\r\n {leftIcon && (\r\n <span className={styles['zds-chips__icon__left']} aria-hidden=\"true\">\r\n {leftIcon}\r\n </span>\r\n )}\r\n <span className={styles['zds-chips__title']}>{title}</span>\r\n {rightIcon && (\r\n <span className={styles['zds-chips__icon__right']}>\r\n {rightIcon}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nconst MemoizedChips = React.memo(Chips);\r\nMemoizedChips.displayName = 'Chips';\r\n\r\nexport default MemoizedChips;","import styles from './Container.module.scss'\r\nimport type { ContainerProps } from './Container.types';\r\n\r\nexport default function Container({ children }: ContainerProps) {\r\n return (\r\n <main className={`${styles['container']} mx-auto`}>\r\n {children}\r\n </main>\r\n )\r\n}","import React from 'react';\r\nimport styles from './Tooltip.module.scss';\r\nimport { Tooltip as TooltipRadix} from \"radix-ui\";\r\nimport { TooltipProps } from './Tooltip.types';\r\n\r\n\r\nconst Tooltip: React.FC<TooltipProps> = ({\r\n\tchildren,\r\n\ttext ,\r\n\tside = 'bottom',\r\n\talign = 'start',\r\n\tmaxWidth,\r\n\tsideOffset = 10\r\n}) => {\r\n\treturn (\r\n\t\t<TooltipRadix.Provider >\r\n\t\t\t<TooltipRadix.Root>\r\n\t\t\t\t<TooltipRadix.Trigger asChild>\r\n\t\t\t\t\t<span className={styles.triggerWrapper}>\r\n\t\t\t\t\t\t{children}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</TooltipRadix.Trigger>\r\n\t\t\t\t<TooltipRadix.Portal>\r\n\t\t\t\t\t<TooltipRadix.Content\r\n\t\t\t\t\t\tclassName={styles.tooltipContent}\r\n\t\t\t\t\t\tside={side}\r\n\t\t\t\t\t\talign={align}\r\n\t\t\t\t\t\tsideOffset={sideOffset}\r\n\t\t\t\t\t\tstyle={{ maxWidth: maxWidth ? `${maxWidth}px` : 'auto' }}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{text}\r\n\t\t\t\t\t</TooltipRadix.Content>\r\n\t\t\t\t</TooltipRadix.Portal>\r\n\t\t\t</TooltipRadix.Root>\r\n\t\t</TooltipRadix.Provider>\r\n\t);\r\n};\r\n\r\nexport default Tooltip\r\n\r\n\r\n","import * as React from 'react';\r\nimport { Label } from 'radix-ui';\r\nimport styles from './index.module.scss';\r\nimport clsx from 'clsx';\r\nimport Tooltip from '../../components/Tooltip/Tooltip';\r\nimport { Info12Regular } from '@fluentui/react-icons';\r\n\r\ninterface LabelProps {\r\n children: React.ReactNode;\r\n htmlFor: string;\r\n required?: boolean;\r\n className?: string;\r\n tooltipText?: string;\r\n tooltip?: boolean;\r\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\r\n align?: \"start\" | \"center\" | \"end\";\r\n error?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\nconst LabelComponent = ({\r\n children,\r\n htmlFor,\r\n required = false,\r\n tooltip = false,\r\n tooltipText,\r\n side = 'bottom',\r\n\talign = 'start',\r\n className,\r\n error = false,\r\n disabled = false\r\n}: LabelProps) => (\r\n <>\r\n {tooltip ? (\r\n <Tooltip side={side} align={align} text={tooltipText || ''} >\r\n <Label.Root\r\n className={clsx(\r\n styles.wrapperLabel,\r\n error && styles.errorLabel,\r\n className\r\n )}\r\n htmlFor={htmlFor}\r\n >\r\n {children}\r\n {required && <span className={styles.requiredLabel}>*</span>}\r\n <Info12Regular className={styles.infoIcon} />\r\n </Label.Root>\r\n </Tooltip>\r\n ) : (\r\n <Label.Root\r\n className={clsx(\r\n styles.wrapperLabel,\r\n error && styles.errorLabel,\r\n disabled && styles.disabledLabel,\r\n className\r\n )}\r\n htmlFor={htmlFor}\r\n >\r\n {children}\r\n {required && <span className={styles.requiredLabel}>*</span>}\r\n </Label.Root>\r\n )}\r\n </>\r\n);\r\n\r\nexport default LabelComponent;\r\n","export interface ValidationParams {\r\n value: string;\r\n maxLength?: number;\r\n type?: string;\r\n errorMessage?: string;\r\n required?: boolean;\r\n}\r\n\r\nexport const validateInput = ({ \r\n value, \r\n maxLength, \r\n errorMessage, \r\n required \r\n}: ValidationParams): string => {\r\n if (required && value.trim() === '') {\r\n return errorMessage || 'Campo obrigatório.';\r\n }\r\n\r\n if (maxLength && value.length > maxLength) {\r\n return errorMessage || `Campo deve ter no máximo ${maxLength} caracteres.`;\r\n }\r\n\r\n return '';\r\n};\r\n","import React, { useState, useCallback, useId, forwardRef, useEffect } from 'react';\r\nimport clsx from 'clsx';\r\nimport { Dismiss16Regular } from '@fluentui/react-icons';\r\nimport LabelComponent from '../../shared/Label';\r\nimport styles from './TextField.module.scss';\r\nimport { validateInput } from './utils';\r\nimport type { TextFieldProps } from './TextField.types';\r\n\r\nconst TextField = forwardRef<HTMLInputElement, TextFieldProps>(\r\n (\r\n {\r\n className,\r\n value = '',\r\n label,\r\n placeholder,\r\n type = 'text',\r\n onChange,\r\n disabled = false,\r\n maxLength = 30,\r\n required = false,\r\n helperText,\r\n tooltip = false,\r\n tooltipText = '',\r\n side = 'bottom',\r\n\t align = 'start',\r\n errorMessage = '',\r\n id,\r\n icon,\r\n onBlur,\r\n onFocus,\r\n name,\r\n ...inputProps\r\n },\r\n ref\r\n ) => {\r\n const [inputValue, setInputValue] = useState(value);\r\n const [inputError, setInputError] = useState('');\r\n const [isFocused, setIsFocused] = useState(false);\r\n const generatedId = useId();\r\n const componentId = id || generatedId;\r\n\r\n // ✅ Sincronizar estado interno com prop value externa\r\n useEffect(() => {\r\n setInputValue(value);\r\n }, [value]);\r\n\r\n const handleChange = useCallback(\r\n (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = e.target.value;\r\n\r\n if (!disabled && (!maxLength || newValue.length <= maxLength)) {\r\n setInputValue(newValue);\r\n onChange?.(newValue);\r\n }\r\n },\r\n [disabled, maxLength, onChange]\r\n );\r\n\r\n const handleClear = useCallback(() => {\r\n if (!disabled) {\r\n setInputValue('');\r\n onChange?.('');\r\n }\r\n }, [disabled, onChange]);\r\n\r\n const handleBlur = useCallback(\r\n (e: React.FocusEvent<HTMLInputElement>) => {\r\n const error = validateInput({\r\n value: inputValue,\r\n type,\r\n maxLength,\r\n errorMessage,\r\n required,\r\n });\r\n setInputError(error);\r\n setIsFocused(false);\r\n onBlur?.(e);\r\n },\r\n [inputValue, type, maxLength, errorMessage, required, onBlur]\r\n );\r\n\r\n const handleFocus = useCallback(\r\n (e: React.FocusEvent<HTMLInputElement>) => {\r\n setIsFocused(true);\r\n onFocus?.(e);\r\n },\r\n [onFocus]\r\n );\r\n\r\n const showCustomIcon = inputValue.trim().length === 0 && icon;\r\n const showClearIcon = isFocused && inputValue.trim().length > 0;\r\n const hasError = Boolean(inputError);\r\n const displayHelperText = inputError || helperText || '\\u00A0';\r\n const helperId = inputError\r\n ? `${componentId}-error`\r\n : helperText\r\n ? `${componentId}-helper`\r\n : undefined;\r\n\r\n const containerClass = clsx(styles.container, {\r\n [styles.error]: hasError,\r\n [styles.disabled]: disabled,\r\n [className!]: className,\r\n });\r\n\r\n return (\r\n <div className={containerClass}>\r\n {label && (\r\n <LabelComponent\r\n htmlFor={componentId}\r\n required={required}\r\n tooltip={tooltip}\r\n tooltipText={tooltipText}\r\n side={side}\r\n align={align}\r\n error={hasError}\r\n disabled={disabled}\r\n >\r\n {label}\r\n </LabelComponent>\r\n )}\r\n\r\n <div className={styles.inputWrapper}>\r\n <div className={styles.inputContainer}>\r\n <input\r\n {...inputProps}\r\n ref={ref}\r\n id={componentId}\r\n name={name}\r\n type={type}\r\n value={inputValue}\r\n placeholder={placeholder}\r\n onChange={handleChange}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n maxLength={maxLength}\r\n disabled={disabled}\r\n aria-invalid={hasError}\r\n aria-required={required}\r\n aria-describedby={helperId}\r\n />\r\n \r\n {showCustomIcon && <span className={styles.icon}>{icon}</span>}\r\n \r\n {showClearIcon && (\r\n <button\r\n type=\"button\"\r\n className={styles.clearButton}\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n handleClear();\r\n }}\r\n aria-label=\"Limpar campo\"\r\n tabIndex={-1}\r\n >\r\n <Dismiss16Regular />\r\n </button>\r\n )}\r\n </div>\r\n\r\n <span\r\n id={helperId}\r\n className={styles.helperText}\r\n aria-live={hasError ? 'polite' : undefined}\r\n >\r\n {displayHelperText}\r\n </span>\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextField.displayName = 'TextField';\r\n\r\nexport default React.memo(TextField);\r\n","// ✅ Types básicos\r\nexport type Locale = 'pt-br' | 'en-us';\r\n\r\n/**\r\n * Formata uma data para string conforme o locale.\r\n * @param date - Data a ser formatada\r\n * @param locale - Locale para formatação ('pt-br' ou 'en-us')\r\n * @returns String formatada da data\r\n */\r\nexport function formatDate(date: Date, locale: Locale = 'pt-br'): string {\r\n if (!date || !(date instanceof Date)) {\r\n return '';\r\n }\r\n\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const year = date.getFullYear();\r\n\r\n // Formatação baseada no locale\r\n if (locale === 'en-us') {\r\n return `${month}/${day}/${year}`;\r\n } else {\r\n return `${day}/${month}/${year}`;\r\n }\r\n}\r\n\r\n/**\r\n * Aplica máscara de data conforme o usuário digita.\r\n * @param value - Valor atual do input\r\n * @param locale - Locale para determinar o formato da máscara\r\n * @returns String com a máscara aplicada\r\n */\r\nexport function applyDateMask(value: string, locale: Locale = 'pt-br'): string {\r\n // Remove todos os caracteres que não são dígitos\r\n const digitsOnly = value.replace(/\\D/g, '');\r\n \r\n // Limita a 8 dígitos (DDMMAAAA ou MMDDAAAA)\r\n const limitedDigits = digitsOnly.slice(0, 8);\r\n \r\n // Aplica a máscara baseada no locale\r\n let masked = '';\r\n \r\n for (let i = 0; i < limitedDigits.length; i++) {\r\n // Adiciona barras nas posições corretas\r\n if (i === 2 || i === 4) {\r\n masked += '/';\r\n }\r\n masked += limitedDigits[i];\r\n }\r\n \r\n return masked;\r\n}\r\n\r\n/**\r\n * Valida se uma string está no formato correto de data para o locale.\r\n * @param value - String a ser validada\r\n * @param locale - Locale para validação\r\n * @returns true se o formato está correto\r\n */\r\nexport function isValidDateFormat(value: string, locale: Locale = 'pt-br'): boolean {\r\n const dateRegex = locale === 'en-us'\r\n ? /^(0[1-9]|1[0-2])\\/(0[1-9]|[12][0-9]|3[01])\\/\\d{4}$/\r\n : /^(0[1-9]|[12][0-9]|3[01])\\/(0[1-9]|1[0-2])\\/\\d{4}$/;\r\n \r\n return dateRegex.test(value);\r\n}\r\nexport function parseDate(dateString: string, locale: Locale = 'pt-br'): Date | null {\r\n if (!dateString || typeof dateString !== 'string') {\r\n return null;\r\n }\r\n\r\n // Regex para validação básica dd/mm/yyyy ou mm/dd/yyyy\r\n const dateRegex = /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/;\r\n const match = dateString.trim().match(dateRegex);\r\n \r\n if (!match) {\r\n return null;\r\n }\r\n\r\n const [, first, second, yearStr] = match;\r\n let day: number;\r\n let month: number;\r\n const year = parseInt(yearStr, 10);\r\n\r\n // Interpretação baseada no locale\r\n if (locale === 'en-us') {\r\n month = parseInt(first, 10);\r\n day = parseInt(second, 10);\r\n } else {\r\n day = parseInt(first, 10);\r\n month = parseInt(second, 10);\r\n }\r\n\r\n // Validação básica de ranges\r\n if (month < 1 || month > 12 || day < 1 || day > 31) {\r\n return null;\r\n }\r\n\r\n // Criar e validar a data\r\n const date = new Date(year, month - 1, day);\r\n \r\n // Verificar se a data criada corresponde aos componentes originais\r\n if (date.getFullYear() !== year || \r\n date.getMonth() !== month - 1 || \r\n date.getDate() !== day) {\r\n return null;\r\n }\r\n\r\n return date;\r\n}","import React, { useState, useEffect, useRef, useCallback, useId, KeyboardEvent, useMemo } from 'react';\r\nimport clsx from 'clsx';\r\nimport TextField from '../TextField';\r\nimport Calendar from '../Calendar/Calendar';\r\nimport { Calendar16Regular } from '@fluentui/react-icons';\r\nimport { formatDate, parseDate, applyDateMask, isValidDateFormat } from './DateUtils';\r\nimport styles from './DatePicker.module.scss';\r\nimport type { DatePickerProps } from './DatePicker.types';\r\n\r\nconst DatePicker: React.FC<DatePickerProps> = ({\r\n locale = 'pt-br',\r\n calendarPosition = 'left',\r\n helperText = '',\r\n required = false,\r\n label = 'Data',\r\n value,\r\n defaultValue,\r\n onChange,\r\n disabled = false,\r\n error: externalError,\r\n minDate,\r\n maxDate,\r\n className = '',\r\n 'data-testid': testId,\r\n}) => {\r\n // ✅ IDs únicos para acessibilidade\r\n const fieldId = useId();\r\n const calendarId = `${fieldId}-calendar`;\r\n const errorId = `${fieldId}-error`;\r\n const helperTextId = `${fieldId}-help`;\r\n\r\n // ✅ Suporte controlled/uncontrolled adequado\r\n const isControlled = value !== undefined;\r\n const [internalDate, setInternalDate] = useState<Date | null>(defaultValue || null);\r\n const [tempInputValue, setTempInputValue] = useState<string>('');\r\n const [isEditing, setIsEditing] = useState<boolean>(false);\r\n const [internalError, setInternalError] = useState<string>('');\r\n const [showCalendar, setShowCalendar] = useState<boolean>(false);\r\n const [currentDate, setCurrentDate] = useState<Date>(new Date());\r\n const wrapperRef = useRef<HTMLDivElement>(null);\r\n\r\n // ✅ Estados derivados - uma única fonte de verdade\r\n const currentSelectedDate = isControlled ? value : internalDate;\r\n const currentError = externalError || internalError;\r\n const displayValue = isEditing ? tempInputValue : (currentSelectedDate ? formatDate(currentSelectedDate, locale) : '');\r\n\r\n // ✅ Combinar helperText normal com mensagem de erro\r\n const combinedHelperText = useMemo(() => {\r\n const texts = [];\r\n if (helperText) {\r\n texts.push(helperText);\r\n }\r\n if (currentError) {\r\n texts.push(currentError);\r\n }\r\n return texts.join(' • ');\r\n }, [helperText, currentError]);\r\n\r\n // ✅ Click outside handler\r\n useEffect(() => {\r\n function handleClickOutside(event: MouseEvent) {\r\n if (wrapperRef.current && !wrapperRef.current.contains(event.target as Node)) {\r\n setShowCalendar(false);\r\n }\r\n }\r\n if (showCalendar) {\r\n document.addEventListener('mousedown', handleClickOutside);\r\n }\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n };\r\n }, [showCalendar]);\r\n\r\n // ✅ Handler unificado para mudança de data - SEMPRE chama onChange\r\n const handleDateChange = useCallback((newDate: Date | null) => {\r\n if (!isControlled) {\r\n setInternalDate(newDate);\r\n }\r\n onChange?.(newDate);\r\n setIsEditing(false);\r\n setTempInputValue('');\r\n setInternalError('');\r\n if (newDate) {\r\n setCurrentDate(newDate);\r\n }\r\n }, [isControlled, onChange]);\r\n\r\n const handleIconClick = () => {\r\n setShowCalendar((prev) => !prev);\r\n };\r\n\r\n const handleFieldClick = () => {\r\n if (!disabled) {\r\n setShowCalendar(true);\r\n }\r\n };\r\n\r\n const handleFieldFocus = () => {\r\n if (!disabled) {\r\n setShowCalendar(true);\r\n }\r\n };\r\n\r\n // ✅ FUNÇÃO CORRIGIDA: Permite números e barras da máscara\r\n const filterNumericInput = (inputValue: string): string => {\r\n // Permite apenas números e barras (para manter a máscara)\r\n return inputValue.replace(/[^\\d/]/g, '');\r\n };\r\n\r\n // ✅ Handler para prevenir teclas não numéricas\r\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\r\n const { key, ctrlKey, metaKey } = event;\r\n\r\n // ✅ NOVA FUNCIONALIDADE: Enter fecha calendário se data válida\r\n if (key === 'Enter') {\r\n if (showCalendar) {\r\n // Se há uma data válida selecionada, fechar calendário\r\n if (currentSelectedDate) {\r\n setShowCalendar(false);\r\n event.preventDefault();\r\n return;\r\n }\r\n // Se a data digitada está completa e válida, processar e fechar\r\n if (tempInputValue.length === 10 && isValidDateFormat(tempInputValue, locale)) {\r\n const parsedDate = parseDate(tempInputValue, locale);\r\n if (parsedDate && !isNaN(parsedDate.getTime())) {\r\n handleDateChange(parsedDate);\r\n setShowCalendar(false);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n } else {\r\n // Se calendário está fechado, Enter abre o calendário\r\n setShowCalendar(true);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n // ✅ Escape sempre fecha o calendário\r\n if (key === 'Escape') {\r\n if (showCalendar) {\r\n setShowCalendar(false);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n // Permite teclas de controle (Backspace, Delete, Tab, etc.)\r\n const controlKeys = [\r\n 'Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight',\r\n 'ArrowUp', 'ArrowDown', 'Home', 'End'\r\n ];\r\n\r\n // Permite Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+X (atalhos de teclado)\r\n const isCtrlCommand = ctrlKey || metaKey;\r\n const allowedCtrlKeys = ['a', 'c', 'v', 'x'];\r\n\r\n // Se é uma tecla de controle ou atalho permitido, deixa passar\r\n if (controlKeys.includes(key) || (isCtrlCommand && allowedCtrlKeys.includes(key.toLowerCase()))) {\r\n return;\r\n }\r\n\r\n // Se não é um número (0-9), previne a entrada\r\n if (!/^\\d$/.test(key)) {\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n const handleDaySelect = (newSelectedDate: Date) => {\r\n setShowCalendar(false);\r\n handleDateChange(newSelectedDate);\r\n };\r\n\r\n const handleTextFieldChange = (value: string) => {\r\n // ✅ Filtra caracteres inválidos, mantendo números e barras\r\n const filteredValue = filterNumericInput(value);\r\n\r\n // ✅ Remove barras para processar apenas números\r\n const numbersOnly = filteredValue.replace(/[^\\d]/g, '');\r\n\r\n // ✅ Aplica máscara progressiva em tempo real\r\n const maskedValue = applyDateMask(numbersOnly, locale);\r\n\r\n // ✅ Atualizar valor temporário SEMPRE (máscara em tempo real)\r\n setTempInputValue(maskedValue);\r\n setIsEditing(true);\r\n\r\n // ✅ Limpar erro se campo estiver vazio\r\n if (maskedValue === '') {\r\n setInternalError('');\r\n handleDateChange(null);\r\n setCurrentDate(new Date());\r\n return;\r\n }\r\n\r\n // ✅ Validar apenas quando data estiver completa (10 caracteres)\r\n if (maskedValue.length === 10) {\r\n if (isValidDateFormat(maskedValue, locale)) {\r\n const parsedDate = parseDate(maskedValue, locale);\r\n if (parsedDate && !isNaN(parsedDate.getTime())) {\r\n setInternalError('');\r\n handleDateChange(parsedDate);\r\n setCurrentDate(parsedDate);\r\n } else {\r\n setInternalError('Data inválida');\r\n handleDateChange(null);\r\n }\r\n } else {\r\n setInternalError('Data inválida');\r\n handleDateChange(null);\r\n }\r\n } else {\r\n // ✅ Data incompleta - limpar erro mas não validar ainda\r\n setInternalError('');\r\n // ✅ Não chamar handleDateChange para data incompleta\r\n }\r\n };\r\n\r\n // ✅ Effect para atualizar valor do campo quando data muda\r\n useEffect(() => {\r\n if (!isEditing && currentSelectedDate) {\r\n setTempInputValue(formatDate(currentSelectedDate, locale));\r\n }\r\n }, [locale, currentSelectedDate, isEditing]);\r\n\r\n return (\r\n <div ref={wrapperRef}>\r\n <div className={clsx(styles['zds-date-picker'])}>\r\n <TextField\r\n type=\"tel\"\r\n icon={\r\n <Calendar16Regular \r\n onClick={!disabled ? handleIconClick : undefined}\r\n className={clsx(\r\n styles['zds-date-picker__icon'],\r\n disabled && styles['zds-date-picker__icon--disabled']\r\n )}\r\n />\r\n }\r\n onChange={(e: string | number) => {\r\n handleTextFieldChange(String(e));\r\n }}\r\n onClick={!disabled ? handleFieldClick : undefined}\r\n onFocus={!disabled ? handleFieldFocus : undefined}\r\n onKeyDown={handleKeyDown}\r\n value={displayValue}\r\n helperText={combinedHelperText}\r\n maxLength={10}\r\n required={required}\r\n label={label}\r\n disabled={disabled}\r\n id={fieldId}\r\n className={className}\r\n data-testid={testId}\r\n placeholder={locale === 'en-us' ? 'MM/DD/YYYY' : 'DD/MM/YYYY'}\r\n aria-label=\"Open calendar\"\r\n aria-expanded={showCalendar}\r\n aria-controls={calendarId}\r\n aria-invalid={!!currentError}\r\n aria-describedby={currentError ? errorId : (helperText ? helperTextId : undefined)}\r\n />\r\n <div\r\n className={clsx(\r\n styles['zds-date-picker__calendar-popup'],\r\n calendarPosition === 'left' && styles['zds-calendar--left'],\r\n calendarPosition === 'right' && styles['zds-calendar--right']\r\n )}\r\n >\r\n {showCalendar && (\r\n <Calendar\r\n selectedDate={currentSelectedDate}\r\n currentDate={currentDate}\r\n onDateChange={setCurrentDate}\r\n onDaySelect={handleDaySelect}\r\n locale={locale}\r\n format={locale === 'en-us' ? 'mm/dd/yyyy' : 'dd/mm/yyyy'}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n id={calendarId}\r\n onClear={() => {\r\n handleDateChange(null);\r\n setCurrentDate(new Date());\r\n }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default React.memo(DatePicker);","import { useRef, useEffect } from \"react\";\r\n\r\nexport const useFocusTrap = (isActive: boolean) => {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!isActive || !containerRef.current) return;\r\n\r\n const container = containerRef.current;\r\n const focusableElements = container.querySelectorAll(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n \r\n const firstElement = focusableElements[0] as HTMLElement;\r\n const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\r\n\r\n const handleTabKey = (e: KeyboardEvent) => {\r\n if (e.key !== 'Tab') return;\r\n\r\n if (e.shiftKey) {\r\n // Shift + Tab (navegação reversa)\r\n if (document.activeElement === firstElement) {\r\n e.preventDefault();\r\n lastElement?.focus();\r\n }\r\n } else {\r\n // Tab normal\r\n if (document.activeElement === lastElement) {\r\n e.preventDefault();\r\n firstElement?.focus();\r\n }\r\n }\r\n };\r\n\r\n container.addEventListener('keydown', handleTabKey);\r\n firstElement?.focus(); // Foca primeiro elemento focável\r\n\r\n return () => {\r\n container.removeEventListener('keydown', handleTabKey);\r\n };\r\n }, [isActive]);\r\n\r\n return containerRef;\r\n};","import React, { useEffect, useRef, useId, useCallback, ReactNode } from 'react';\r\nimport styles from './Dialog.module.scss';\r\nimport Button from '../Button/Button';\r\nimport clsx from 'clsx';\r\nimport { useFocusTrap } from './utils/DialogUtils';\r\nimport type { DialogProps } from './Dialog.types';\r\n\r\n/**\r\n * Componente Dialog - Modal simples e acessível.\r\n * Não utiliza um wrapper externo, gerencia seu próprio backdrop e container.\r\n * Fecha ao clicar nos botões ou pressionar ESC.\r\n * Mantém o foco preso dentro do modal enquanto aberto (trap focus).\r\n */\r\nconst Dialog: React.FC<DialogProps> = ({\r\n show,\r\n title,\r\n text,\r\n textConfirm = 'OK',\r\n textCancel = 'Cancelar',\r\n fnConfirm,\r\n fnCancel,\r\n onClose,\r\n className,\r\n id: propId\r\n}) => {\r\n const dialogRef = useRef<HTMLDivElement>(null);\r\n const generatedId = useId();\r\n const id = propId || generatedId;\r\n\r\n const containerRef = useFocusTrap(show);\r\n\r\n const handleConfirm = useCallback((): void => {\r\n if (fnConfirm) fnConfirm();\r\n if (onClose) onClose();\r\n }, [fnConfirm, onClose]);\r\n\r\n /**\r\n * Handler para ação Cancelar.\r\n */\r\n const handleCancel = useCallback((): void => {\r\n if (fnCancel) fnCancel();\r\n if (onClose) onClose();\r\n }, [fnCancel, onClose]);\r\n\r\n // Foca o modal ao abrir e adiciona ESC para fechar\r\n useEffect(() => {\r\n if (show && dialogRef.current) {\r\n dialogRef.current.focus();\r\n }\r\n\r\n const handleKeyDown = (e: KeyboardEvent): void => {\r\n if (e.key === 'Escape') {\r\n handleCancel();\r\n }\r\n };\r\n\r\n if (show) {\r\n document.addEventListener('keydown', handleKeyDown);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleKeyDown);\r\n };\r\n }, [show, handleCancel]);\r\n if (!show) return null;\r\n\r\n return (\r\n <>\r\n {/* Backdrop/Overlay */}\r\n <div className={styles['zds-dialog__overlay']} />\r\n\r\n {/* Wrapper do Dialog */}\r\n <div className={styles['zds-dialog__wrapper']}>\r\n <div\r\n className={clsx(styles['zds-dialog'], className)}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n id={id}\r\n aria-labelledby={`zds-dialog-title-${id}`}\r\n aria-describedby={`zds-dialog-desc-${id}`}\r\n tabIndex={-1}\r\n ref={containerRef}\r\n >\r\n {/* Título */}\r\n <div id={`zds-dialog-title-${id}`} className={styles['zds-dialog__title']}>\r\n {title}\r\n </div>\r\n\r\n {/* Conteúdo/Texto */}\r\n <div id={`zds-dialog-desc-${id}`} className={styles['zds-dialog__text']}>\r\n {text}\r\n </div>\r\n\r\n {/* Ações/Botões */}\r\n <div className={styles['zds-dialog__actions']}>\r\n {!!(textCancel && textCancel.trim()) && (\r\n <Button variant=\"outlined\" onClick={handleCancel}>\r\n {textCancel}\r\n </Button>\r\n )}\r\n <Button variant=\"filled\" onClick={handleConfirm}>\r\n {textConfirm}\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\n// Memoização para otimização de performance\r\nconst MemoizedDialog = React.memo(Dialog);\r\nMemoizedDialog.displayName = 'Dialog';\r\n\r\nexport default MemoizedDialog;","import React, { useEffect, useState, useCallback, ReactNode, ReactElement } from 'react';\r\nimport clsx from 'clsx';\r\nimport styles from './Drawer.module.scss';\r\nimport { Dismiss16Regular } from '@fluentui/react-icons';\r\nimport Button from '../Button/Button';\r\nimport type { DrawerProps, DrawerExampleProps } from './Drawer.types';\r\n\r\n/**\r\n * Componente Drawer do Zanthus Design System\r\n * Implementa um painel lateral deslizante com overlay\r\n * Segue padrões WCAG 2.1 AA para acessibilidade\r\n */\r\nconst Drawer: React.FC<DrawerProps> = ({\r\n children,\r\n customWidth = '400px', // ✅ Valor padrão útil\r\n onClose,\r\n title = 'Título',\r\n isOpen = false,\r\n onOpen,\r\n className = '',\r\n id,\r\n disabled = false,\r\n onOverlayClick,\r\n closeOnOverlayClick = true,\r\n closeOnEscape = true,\r\n}) => {\r\n\r\n const internalClose = useCallback((): void => {\r\n if (disabled) return;\r\n\r\n onClose();\r\n }, [onClose, disabled]);\r\n\r\n /**\r\n * Manipula clique no overlay\r\n * Fecha o drawer se closeOnOverlayClick estiver habilitado\r\n */\r\n const handleOverlayClick = useCallback((): void => {\r\n if (onOverlayClick) {\r\n onOverlayClick();\r\n }\r\n \r\n if (closeOnOverlayClick && !disabled) {\r\n internalClose();\r\n }\r\n }, [onOverlayClick, closeOnOverlayClick, internalClose, disabled]);\r\n\r\n /**\r\n * Fecha o drawer ao pressionar ESC\r\n * Adiciona e remove event listener baseado no estado isOpen\r\n */\r\n useEffect(() => {\r\n if (!isOpen || !closeOnEscape) return;\r\n\r\n /**\r\n * Manipula teclas pressionadas\r\n * @param event - Evento de teclado\r\n */\r\n const handleKeyDown = (event: KeyboardEvent): void => {\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n internalClose();\r\n }\r\n };\r\n\r\n window.addEventListener('keydown', handleKeyDown);\r\n return () => window.removeEventListener('keydown', handleKeyDown);\r\n }, [isOpen, internalClose, closeOnEscape]);\r\n\r\n /**\r\n * Gerencia overflow do body baseado no estado isOpen\r\n */\r\n useEffect(() => {\r\n if (isOpen && !disabled) {\r\n // Executa callback de abertura se fornecido\r\n if (onOpen) {\r\n onOpen();\r\n }\r\n\r\n // Previne scroll do body quando drawer está aberto\r\n document.body.style.overflow = 'hidden';\r\n } else {\r\n // Restaura scroll do body\r\n document.body.style.overflow = 'unset';\r\n }\r\n\r\n return () => {\r\n document.body.style.overflow = 'unset';\r\n };\r\n }, [isOpen, onOpen, disabled]);\r\n\r\n /**\r\n * Previne propagação de eventos no drawer\r\n * Evita fechamento acidental ao clicar no conteúdo\r\n * @param event - Evento de clique\r\n */\r\n const handleDrawerClick = (event: React.MouseEvent<HTMLDivElement>): void => {\r\n event.stopPropagation();\r\n };\r\n\r\n /**\r\n * Manipula clique no botão de fechar\r\n * @param event - Evento de clique\r\n */\r\n const handleCloseClick = (event: React.MouseEvent<HTMLElement>): void => {\r\n event.stopPropagation();\r\n internalClose();\r\n };\r\n\r\n return (\r\n <>\r\n {/* Overlay/Shadow */}\r\n <div\r\n className={clsx(styles['zds-custom__drawer-shadow'], {\r\n [styles['zds-custom__drawer-shadow--visible']]: isOpen,\r\n })}\r\n onClick={handleOverlayClick}\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n data-testid=\"drawer-overlay\"\r\n />\r\n\r\n {/* Drawer Panel */}\r\n <div\r\n className={clsx(\r\n styles['zds-custom__drawer-sidebar'],\r\n {\r\n [styles['zds-custom__drawer-sidebar--open']]: isOpen,\r\n [styles['zds-custom__drawer-sidebar--disabled']]: disabled,\r\n },\r\n className\r\n )}\r\n style={{\r\n // ✅ APENAS: Width customizável via CSS custom property\r\n '--drawer-custom-width': customWidth,\r\n } as React.CSSProperties}\r\n onClick={handleDrawerClick}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={id ? `${id}-title` : 'drawer-title'}\r\n aria-hidden={!isOpen}\r\n data-testid=\"drawer-panel\"\r\n id={id}\r\n >\r\n \r\n <div className={clsx(styles['zds-drawer__title-close'])}>\r\n <div \r\n className={clsx(styles['zds-drawer__title'])} \r\n id={id ? `${id}-title` : 'drawer-title'}\r\n >\r\n {title}\r\n </div>\r\n <Button \r\n onClick={handleCloseClick}\r\n variant='text'\r\n iconOnly\r\n icon={<Dismiss16Regular />}\r\n size='lg'\r\n />\r\n </div>\r\n <div \r\n className={clsx(styles['zds-drawer__children'])} \r\n data-testid=\"drawer-content\"\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default Drawer;","import React, { useState, useId } from 'react';\r\nimport { Search16Regular, Dismiss16Regular } from '@fluentui/react-icons';\r\nimport clsx from 'clsx';\r\nimport styles from './Search.module.scss';\r\nimport type { SearchProps } from './Search.types';\r\n\r\nconst Search = React.forwardRef<HTMLInputElement, SearchProps>(\r\n (\r\n {\r\n placeholder = 'Dica do que deve ser buscado',\r\n disabled = false,\r\n value,\r\n onChange,\r\n onKeyDown,\r\n onFocus,\r\n onBlur,\r\n onClear,\r\n onClick,\r\n onMouseDown,\r\n id = '',\r\n className = '',\r\n 'data-testid': testId, \r\n },\r\n ref\r\n ) => {\r\n const [internalValue, setInternalValue] = useState<string>('');\r\n const isControlled = value !== undefined && onChange !== undefined;\r\n const currentValue = isControlled ? value : internalValue;\r\n const inputId = id || useId();\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\r\n if (disabled) return;\r\n\r\n if (isControlled) {\r\n onChange?.(e);\r\n } else {\r\n setInternalValue(e.target.value);\r\n }\r\n };\r\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>): void => {\r\n if (disabled) return;\r\n onFocus?.(e);\r\n };\r\n\r\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>): void => {\r\n if (disabled) return;\r\n onBlur?.(e);\r\n };\r\n const clearInputSearch = (): void => {\r\n if (disabled) return;\r\n\r\n if (isControlled) {\r\n const syntheticEvent = {\r\n target: { value: '' },\r\n currentTarget: { value: '' },\r\n } as React.ChangeEvent<HTMLInputElement>;\r\n\r\n onChange?.(syntheticEvent);\r\n } else {\r\n setInternalValue('');\r\n }\r\n onClear?.();\r\n };\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>): void => {\r\n if (disabled) return;\r\n onKeyDown?.(e);\r\n };\r\n const searchClass = clsx(styles['zds-search'], {\r\n disabled,\r\n [className]: className,\r\n });\r\n return (\r\n <div className={searchClass} onClick={onClick} onMouseDown={onMouseDown}>\r\n <span\r\n className={clsx(styles['zds-search__leftIcon'], { disabled })}\r\n tabIndex={-1}\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n >\r\n <Search16Regular />\r\n </span>\r\n\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n type=\"text\"\r\n placeholder={placeholder}\r\n aria-label={placeholder}\r\n value={currentValue || ''}\r\n onChange={handleChange}\r\n onKeyDown={handleKeyDown}\r\n disabled={disabled}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n data-testid={testId}\r\n />\r\n {currentValue && currentValue.length > 0 && (\r\n <span\r\n className={styles['zds-search__clearIcon']}\r\n aria-hidden=\"true\"\r\n onClick={clearInputSearch}\r\n >\r\n <Dismiss16Regular />\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSearch.displayName = 'ZdsSearch';\r\n\r\nexport default Search;\r\n","import { useCallback } from \"react\";\r\nimport type { DropdownItem, DropdownType } from './Dropdown.types';\r\n\r\n/**\r\n * Valida e filtra itens do dropdown baseado no tipo especificado\r\n * @param items - Array de itens para validar\r\n * @param type - Tipo do dropdown ('text' | 'checkbox' | 'icon')\r\n * @returns Array de itens válidos filtrados\r\n */\r\nexport const validateItems = (items: unknown, type: DropdownType): DropdownItem[] => {\r\n \r\n if (!Array.isArray(items)) return [];\r\n \r\n return items.filter((item: unknown, index: number): item is DropdownItem => {\r\n // Remove items inválidos\r\n if (!item || typeof item !== 'object') {\r\n console.warn(`Dropdown: Item ${index} inválido`);\r\n return false;\r\n }\r\n \r\n // Type assertion segura após verificação de tipo\r\n const dropdownItem = item as Partial<DropdownItem>;\r\n \r\n // Validação específica para tipo icon\r\n if (type === 'icon' && !dropdownItem.icon) {\r\n console.error(`Dropdown: Item ${index} precisa de ícone quando type='icon'`);\r\n return false;\r\n }\r\n \r\n // Precisa ter text ou id\r\n if (!dropdownItem.text && !dropdownItem.id) {\r\n console.warn(`Dropdown: Item ${index} precisa de text ou id`);\r\n return false;\r\n }\r\n \r\n return true;\r\n });\r\n};","import { useRef, useEffect, useState, useCallback } from 'react';\r\n\r\n/**\r\n * Props para o hook useInfiniteScroll\r\n */\r\ninterface UseInfiniteScrollProps {\r\n /** Status atual do carregamento */\r\n status: 'idle' | 'loading' | 'succeeded' | 'failed';\r\n /** Página atual */\r\n page: number;\r\n /** Última página disponível */\r\n lastPage: number;\r\n /** Callback para carregar próxima página */\r\n onLoadMore: () => void;\r\n /** Threshold para IntersectionObserver (0-1) */\r\n threshold?: number;\r\n /** Margem raiz para IntersectionObserver */\r\n rootMargin?: string;\r\n /** Habilita/desabilita o hook */\r\n enabled?: boolean;\r\n /** Debug mode - logs no console */\r\n debug?: boolean;\r\n}\r\n\r\n/**\r\n * Retorno do hook useInfiniteScroll\r\n */\r\ninterface UseInfiniteScrollReturn {\r\n /** Ref para o elemento observador */\r\n observerRef: React.RefObject<HTMLDivElement | null>;\r\n /** Se o elemento está visível */\r\n isIntersecting: boolean;\r\n /** Se há próxima página */\r\n hasNextPage: boolean;\r\n /** Se todas as páginas foram carregadas */\r\n isCompleted: boolean;\r\n /** Função para reset manual */\r\n reset: () => void;\r\n}\r\n\r\n/**\r\n * Hook otimizado para scroll infinito usando IntersectionObserver\r\n */\r\nexport function useInfiniteScroll({\r\n status,\r\n page,\r\n lastPage,\r\n onLoadMore,\r\n threshold = 0.1,\r\n rootMargin = '100px',\r\n enabled = true,\r\n debug = false\r\n}: UseInfiniteScrollProps): UseInfiniteScrollReturn {\r\n const observerRef = useRef<HTMLDivElement>(null);\r\n const [isIntersecting, setIsIntersecting] = useState(false);\r\n \r\n // Refs para controle de estado\r\n const loadingRef = useRef(false);\r\n const lastTriggeredPageRef = useRef(0);\r\n const onLoadMoreRef = useRef(onLoadMore);\r\n\r\n // Manter referência atualizada do callback\r\n useEffect(() => {\r\n onLoadMoreRef.current = onLoadMore;\r\n }, [onLoadMore]);\r\n\r\n // ✅ NOVO: Debug logger\r\n const debugLog = useCallback((message: string, data?: any) => {\r\n if (debug) {\r\n console.log(`🔄 [InfiniteScroll] ${message}`, data || '');\r\n }\r\n }, [debug]);\r\n\r\n // ✅ MELHORADO: Callback do IntersectionObserver com mais controles\r\n const handleIntersect = useCallback((entries: IntersectionObserverEntry[]) => {\r\n const [target] = entries;\r\n const isVisible = target.isIntersecting;\r\n \r\n setIsIntersecting(isVisible);\r\n debugLog('Element intersecting:', isVisible);\r\n\r\n // Verificar se pode carregar mais\r\n const canLoadMore = enabled &&\r\n isVisible && \r\n status !== 'loading' && \r\n !loadingRef.current &&\r\n page < lastPage &&\r\n page !== lastTriggeredPageRef.current;\r\n\r\n debugLog('Can load more check:', {\r\n enabled,\r\n isVisible,\r\n status,\r\n isLoading: loadingRef.current,\r\n page,\r\n lastPage,\r\n lastTriggered: lastTriggeredPageRef.current,\r\n canLoad: canLoadMore\r\n });\r\n\r\n if (canLoadMore) {\r\n debugLog('Triggering load more for next page');\r\n loadingRef.current = true;\r\n lastTriggeredPageRef.current = page;\r\n onLoadMoreRef.current();\r\n }\r\n }, [enabled, status, page, lastPage, debugLog]);\r\n\r\n // ✅ MELHORADO: Observer com configurações personalizáveis\r\n useEffect(() => {\r\n if (!enabled) {\r\n debugLog('Hook disabled, skipping observer setup');\r\n return;\r\n }\r\n\r\n const observer = new IntersectionObserver(handleIntersect, {\r\n root: null,\r\n rootMargin,\r\n threshold,\r\n });\r\n\r\n const currentObserverRef = observerRef.current;\r\n if (currentObserverRef) {\r\n observer.observe(currentObserverRef);\r\n debugLog('IntersectionObserver attached', { rootMargin, threshold });\r\n }\r\n\r\n return () => {\r\n if (currentObserverRef) {\r\n observer.unobserve(currentObserverRef);\r\n debugLog('IntersectionObserver detached');\r\n }\r\n };\r\n }, [handleIntersect, rootMargin, threshold, enabled, debugLog]);\r\n\r\n // ✅ NOVO: Reset do loading flag quando status muda\r\n useEffect(() => {\r\n if (status !== 'loading') {\r\n loadingRef.current = false;\r\n debugLog('Loading flag reset', { status });\r\n }\r\n }, [status, debugLog]);\r\n\r\n // ✅ NOVO: Função de reset manual\r\n const reset = useCallback(() => {\r\n loadingRef.current = false;\r\n lastTriggeredPageRef.current = 0;\r\n setIsIntersecting(false);\r\n debugLog('Hook manually reset');\r\n }, [debugLog]);\r\n\r\n // Estados calculados\r\n const hasNextPage = page < lastPage;\r\n const isCompleted = page >= lastPage;\r\n\r\n return {\r\n observerRef,\r\n isIntersecting,\r\n hasNextPage,\r\n isCompleted,\r\n reset\r\n };\r\n}","import clsx from 'clsx';\r\nimport React, {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n useRef,\r\n} from 'react';\r\nimport Search from '../Search';\r\nimport { validateItems } from './DropdownUtils';\r\nimport styles from './Dropdown.module.scss';\r\nimport Checkbox from '../Checkbox';\r\nimport Button from '../Button';\r\nimport { useInfiniteScroll } from '../../hooks/InfiniteScroll';\r\nimport type { DropdownItem, DropdownType, DropdownProps } from './Dropdown.types';\r\n\r\ninterface SelectedItemsState {\r\n [key: string]: boolean;\r\n}\r\n\r\nconst Dropdown: React.FC<DropdownProps> = ({\r\n className,\r\n items = [],\r\n id,\r\n type = 'text',\r\n applySearch = false,\r\n placeholder = '',\r\n onSelectionChange,\r\n showSubText = false,\r\n defaultSelectedIds = [],\r\n initialItemsSelected = {},\r\n maxWidth,\r\n minWidth,\r\n width,\r\n maxHeight,\r\n filter = false,\r\n position,\r\n infiniteScroll,\r\n}) => {\r\n const [selectedItems, setSelectedItems] = useState<SelectedItemsState>(() => {\r\n if (initialItemsSelected && Object.keys(initialItemsSelected).length > 0) {\r\n return initialItemsSelected;\r\n }\r\n if (defaultSelectedIds && defaultSelectedIds.length > 0) {\r\n const initialState: SelectedItemsState = {};\r\n defaultSelectedIds.forEach((itemId) => {\r\n initialState[itemId] = true;\r\n });\r\n return initialState;\r\n }\r\n return {};\r\n });\r\n\r\n const [internalItems, setInternalItems] = useState<DropdownItem[]>(items);\r\n const [focusedIndex, setFocusedIndex] = useState<number>(-1);\r\n const [inputValue, setInputValue] = useState<string>('');\r\n const [searchQuery, setSearchQuery] = useState<string>('');\r\n const [isSearchFocused, setIsSearchFocused] = useState<boolean>(false);\r\n const [tempSelectedItems, setTempSelectedItems] =\r\n useState<SelectedItemsState>({});\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n\r\n const infiniteScrollHook = useInfiniteScroll({\r\n status: infiniteScroll?.status || 'idle',\r\n page: infiniteScroll?.page || 1,\r\n lastPage: infiniteScroll?.lastPage || 1,\r\n onLoadMore: infiniteScroll?.onLoadMore || (() => {}),\r\n threshold: infiniteScroll?.threshold,\r\n rootMargin: infiniteScroll?.rootMargin,\r\n enabled: !!infiniteScroll,\r\n debug: infiniteScroll?.debug,\r\n });\r\n\r\n const searchVisible = applySearch || internalItems.length > 4;\r\n\r\n useEffect(() => {\r\n if (filter) {\r\n setTempSelectedItems(selectedItems);\r\n }\r\n }, [selectedItems, filter]);\r\n\r\n const handleSearchChange = useCallback(\r\n (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = event.target.value;\r\n setInputValue(newValue);\r\n setFocusedIndex(-1);\r\n if (newValue === '' && searchQuery !== '') {\r\n setSearchQuery('');\r\n }\r\n },\r\n [searchQuery]\r\n );\r\n\r\n const safeItems = useMemo(() => {\r\n if (!Array.isArray(items)) {\r\n console.warn(\r\n 'Dropdown: items deve ser um array. Recebido:',\r\n typeof items\r\n );\r\n return [];\r\n }\r\n if (items.length === 0) {\r\n return [];\r\n }\r\n return items;\r\n }, [items]);\r\n\r\n const validItems = useMemo(() => {\r\n return validateItems(safeItems, type);\r\n }, [safeItems, type]);\r\n\r\n const generateItemId = useCallback(\r\n (item: DropdownItem, index: number): string => {\r\n return item.id || `dropdown-item-${index}`;\r\n },\r\n []\r\n );\r\n\r\n const executeSearch = useCallback(() => {\r\n setSearchQuery(inputValue.trim());\r\n setFocusedIndex(-1);\r\n }, [inputValue]);\r\n\r\n const handleSearchClear = useCallback(() => {\r\n setInputValue('');\r\n setSearchQuery('');\r\n setFocusedIndex(-1);\r\n setIsSearchFocused(false);\r\n }, []);\r\n\r\n const handleSearchKeyDown = useCallback(\r\n (event: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (event.key === 'Enter') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n executeSearch();\r\n return;\r\n }\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n handleSearchClear();\r\n return;\r\n }\r\n if (event.key === 'Backspace') {\r\n if (inputValue.length < 2) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n handleSearchClear();\r\n }\r\n }\r\n },\r\n [executeSearch, handleSearchClear, inputValue]\r\n );\r\n\r\n const toggleSelection = useCallback(\r\n (itemId: string, item: DropdownItem) => {\r\n if (item?.disabled) return;\r\n if (filter) {\r\n setTempSelectedItems((prevSelected) => {\r\n let newSelected: SelectedItemsState;\r\n if (type === 'checkbox') {\r\n newSelected = {\r\n ...prevSelected,\r\n [itemId]: !prevSelected[itemId],\r\n };\r\n } else {\r\n newSelected = prevSelected[itemId] ? {} : { [itemId]: true };\r\n }\r\n return newSelected;\r\n });\r\n } else {\r\n setSelectedItems((prevSelected) => {\r\n let newSelected: SelectedItemsState;\r\n\r\n if (type === 'checkbox') {\r\n newSelected = {\r\n ...prevSelected,\r\n [itemId]: !prevSelected[itemId],\r\n };\r\n } else {\r\n newSelected = prevSelected[itemId] ? {} : { [itemId]: true };\r\n }\r\n return newSelected;\r\n });\r\n }\r\n },\r\n [filter, type]\r\n );\r\n\r\n const handleApplyFilter = useCallback(() => {\r\n if (!filter) return;\r\n setSelectedItems(tempSelectedItems);\r\n const selectedIds = Object.keys(tempSelectedItems).filter(\r\n (key) => tempSelectedItems[key]\r\n );\r\n onSelectionChange?.(selectedIds);\r\n }, [filter, tempSelectedItems, onSelectionChange]);\r\n\r\n const handleClearFilter = useCallback(() => {\r\n if (!filter) return;\r\n setTempSelectedItems({});\r\n setSelectedItems({});\r\n\r\n onSelectionChange?.([]);\r\n }, [filter, onSelectionChange]);\r\n\r\n const isFirstRender = React.useRef(true);\r\n useEffect(() => {\r\n if (isFirstRender.current) {\r\n isFirstRender.current = false;\r\n return;\r\n }\r\n if (!onSelectionChange) return;\r\n const selectedIds = Object.keys(selectedItems).filter(\r\n (key) => selectedItems[key]\r\n );\r\n onSelectionChange(selectedIds);\r\n }, [selectedItems, onSelectionChange]);\r\n\r\n useEffect(() => {\r\n setInternalItems(validItems);\r\n }, [validItems]);\r\n\r\n const handleItemClick = useCallback(\r\n (\r\n event: React.MouseEvent<HTMLLIElement>,\r\n itemId: string,\r\n item: DropdownItem\r\n ) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (!item?.disabled) {\r\n toggleSelection(itemId, item);\r\n }\r\n },\r\n [toggleSelection]\r\n );\r\n\r\n const renderItemContent = useCallback(\r\n (item: DropdownItem, index: number) => {\r\n const itemId = item.id || `dropdown-item-${index}`;\r\n const currentSelection = filter ? tempSelectedItems : selectedItems;\r\n\r\n return (\r\n <div\r\n className={clsx(styles['zds-dropdown__item-content'], {\r\n [styles['zds-dropdown__item-content--disabled']]: item.disabled,\r\n })}\r\n >\r\n {type === 'checkbox' && (\r\n <Checkbox\r\n checked={!!currentSelection[itemId]}\r\n onCheckedChange={(checked: boolean | 'indeterminate') => {\r\n if (checked === 'indeterminate') return;\r\n toggleSelection(itemId, item);\r\n }\r\n }\r\n disabled={item.disabled}\r\n label=\"\"\r\n />\r\n )}\r\n\r\n {type === 'icon' && item.icon && (\r\n <div className={styles['zds-dropdown__item-icon-container']}>\r\n <span\r\n className={styles['zds-dropdown__item-icon']}\r\n onClick={(event: React.MouseEvent<HTMLSpanElement>) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n handleItemClick(event as any, itemId, item);\r\n }}\r\n >\r\n {item.icon}\r\n </span>\r\n </div>\r\n )}\r\n\r\n <div className={styles['zds-dropdown__item-text']}>\r\n <span\r\n id={`dropdown-item-${itemId}-label`}\r\n className={styles['zds-dropdown__title']}\r\n >\r\n {item.text}\r\n </span>\r\n {showSubText && item.subText && (\r\n <span\r\n id={`dropdown-item-${itemId}-desc`}\r\n className={styles['zds-dropdown__subtext']}\r\n >\r\n {item.subText}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n },\r\n [\r\n type,\r\n selectedItems,\r\n tempSelectedItems,\r\n filter,\r\n toggleSelection,\r\n handleItemClick,\r\n showSubText,\r\n ]\r\n );\r\n\r\n const isMultiSelectable = useMemo(() => {\r\n return type === 'checkbox';\r\n }, [type]);\r\n\r\n const filteredItems = useMemo(() => {\r\n if (!searchQuery.trim()) {\r\n return internalItems;\r\n }\r\n return internalItems.filter((item) => {\r\n const searchText = searchQuery.toLowerCase();\r\n const itemText = item.text?.toLowerCase() || '';\r\n const itemSubText = item.subText?.toLowerCase() || '';\r\n return itemText.includes(searchText) || itemSubText.includes(searchText);\r\n });\r\n }, [internalItems, searchQuery]);\r\n\r\n const handleKeyDown = useCallback(\r\n (e: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (isSearchFocused) return;\r\n\r\n if (filteredItems.length === 0) return;\r\n\r\n switch (e.key) {\r\n case 'ArrowDown':\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setFocusedIndex((prevIndex) =>\r\n prevIndex < filteredItems.length - 1 ? prevIndex + 1 : 0\r\n );\r\n return;\r\n case 'ArrowUp':\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setFocusedIndex((prevIndex) =>\r\n prevIndex > 0 ? prevIndex - 1 : filteredItems.length - 1\r\n );\r\n return;\r\n case 'Enter':\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (focusedIndex >= 0 && focusedIndex < filteredItems.length) {\r\n const focusedItem = filteredItems[focusedIndex];\r\n const focusedItemId =\r\n focusedItem.id || `dropdown-item-${focusedIndex}`;\r\n toggleSelection(focusedItemId, focusedItem);\r\n }\r\n return;\r\n case 'Escape':\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setFocusedIndex(-1);\r\n handleSearchClear();\r\n return;\r\n default:\r\n return;\r\n }\r\n },\r\n [\r\n filteredItems,\r\n focusedIndex,\r\n toggleSelection,\r\n isSearchFocused,\r\n handleSearchClear,\r\n ]\r\n );\r\n\r\n const DropdownClass = clsx(\r\n styles['zds-dropdown__container'],\r\n styles[`zds-dropdown__container--${position}`],\r\n {\r\n [className || '']: className,\r\n [styles['zds-dropdown__container--search-active']]: searchQuery.length > 0,\r\n [styles['zds-dropdown__container--fixed-width']]: !!maxWidth,\r\n }\r\n );\r\n const dropdownStyles: React.CSSProperties = useMemo(() => {\r\n const styles: React.CSSProperties = {};\r\n\r\n if (maxWidth) {\r\n styles.maxWidth =\r\n typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth;\r\n styles.width = typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth;\r\n }\r\n if (minWidth) {\r\n styles.minWidth =\r\n typeof minWidth === 'number' ? `${minWidth}px` : minWidth;\r\n }\r\n if (width) {\r\n styles.width = typeof width === 'number' ? `${width}px` : width;\r\n }\r\n if (maxHeight) {\r\n styles.maxHeight =\r\n typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight;\r\n }\r\n\r\n return styles;\r\n }, [maxWidth, minWidth, width, maxHeight]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={DropdownClass}\r\n tabIndex={0}\r\n role=\"combobox\"\r\n aria-expanded={filteredItems.length > 0 ? 'true' : 'false'}\r\n aria-haspopup=\"listbox\"\r\n aria-owns={id ? `${id}-listbox` : undefined}\r\n aria-controls={id ? `${id}-listbox` : undefined}\r\n aria-activedescendant={\r\n focusedIndex >= 0 ? `${id}-option-${focusedIndex}` : undefined\r\n }\r\n aria-label=\"Dropdown de seleção\"\r\n aria-describedby={searchVisible ? `${id}-search-help` : undefined}\r\n onKeyDown={handleKeyDown}\r\n style={dropdownStyles}\r\n >\r\n <ul\r\n className={styles['zds-dropdown__list']}\r\n id={id || undefined}\r\n role=\"listbox\"\r\n aria-label=\"Lista de opções\"\r\n aria-multiselectable={isMultiSelectable}\r\n >\r\n {searchVisible && (\r\n <li role=\"none\" className={styles['zds-dropdown__search-container']}>\r\n <Search\r\n value={inputValue}\r\n placeholder={\r\n placeholder || 'Digite e pressione Enter para buscar...'\r\n }\r\n onChange={handleSearchChange}\r\n onKeyDown={handleSearchKeyDown}\r\n onFocus={() => setIsSearchFocused(true)}\r\n onBlur={() => setIsSearchFocused(false)}\r\n onClear={handleSearchClear}\r\n aria-label=\"Campo de busca - pressione Enter para pesquisar\"\r\n />\r\n </li>\r\n )}\r\n {filteredItems.length > 0 ? (\r\n filteredItems.map((item, index) => {\r\n const itemId = generateItemId(item, index);\r\n const currentSelection = filter ? tempSelectedItems : selectedItems;\r\n return (\r\n <li\r\n key={itemId}\r\n role=\"option\"\r\n aria-selected={!!currentSelection[itemId]}\r\n aria-labelledby={`dropdown-item-${itemId}-label`}\r\n aria-describedby={\r\n item.subText ? `dropdown-item-${itemId}-desc` : undefined\r\n }\r\n className={clsx(styles['zds-dropdown__item'], {\r\n [styles[`zds-dropdown__item--${type}`]]: type,\r\n [styles['zds-dropdown__item--selected']]: currentSelection[itemId],\r\n [styles['zds-dropdown__item--focused']]: focusedIndex === index,\r\n [styles['zds-dropdown__item--disabled']]: item.disabled,\r\n })}\r\n tabIndex={focusedIndex === index ? 0 : -1}\r\n onFocus={() => setFocusedIndex(index)}\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n handleItemClick(event, itemId, item);\r\n }}\r\n onMouseDown={(e: React.MouseEvent<HTMLLIElement>) => {\r\n if (!item.disabled) {\r\n e.preventDefault();\r\n setFocusedIndex(index);\r\n }\r\n }}\r\n >\r\n {renderItemContent(item, index)}\r\n </li>\r\n );\r\n })\r\n ) : (\r\n <li\r\n className={styles['zds-dropdown__no-results']}\r\n role=\"status\"\r\n aria-live=\"polite\"\r\n >\r\n Nenhum item corresponde à sua busca\r\n </li>\r\n )}\r\n {filter && (\r\n <div className={styles['zds-dropdown__container-filter']}>\r\n <Button size=\"sm\" variant=\"outlined\" onClick={handleClearFilter}>\r\n Limpar\r\n </Button>\r\n <Button size=\"sm\" onClick={handleApplyFilter}>\r\n Aplicar\r\n </Button>\r\n </div>\r\n )}\r\n {infiniteScrollHook && infiniteScrollHook.hasNextPage && (\r\n <li role=\"none\" className={styles['zds-dropdown__infinite-scroll-trigger']}>\r\n <div\r\n ref={infiniteScrollHook.observerRef}\r\n className={styles['zds-dropdown__loading-indicator']}\r\n >\r\n {infiniteScroll?.status === 'loading' ? (\r\n <span>Carregando...</span>\r\n ) : (\r\n <span>Trigger</span>\r\n )}\r\n </div>\r\n </li>\r\n )}\r\n </ul>\r\n </div>\r\n );\r\n};\r\n\r\nconst MemoizedDropdown = React.memo(Dropdown);\r\nMemoizedDropdown.displayName = 'Dropdown';\r\nexport default MemoizedDropdown;\r\n","// Filter.tsx\r\nimport React, {\r\n useState,\r\n useRef,\r\n useEffect,\r\n ReactNode,\r\n ReactElement,\r\n useCallback,\r\n useMemo,\r\n} from 'react';\r\nimport Button from '../Button';\r\nimport Dropdown from '../Dropdown/Dropdown';\r\nimport type { DropdownItem, DropdownType } from '../Dropdown/Dropdown.types';\r\nimport Calendar from '../Calendar/Calendar';\r\nimport styles from './Filter.module.scss';\r\nimport Badge from '../Badge';\r\nimport { ChevronDownRegular, Calendar16Regular } from '@fluentui/react-icons';\r\nimport clsx from 'clsx';\r\nimport type { FilterProps } from './Filter.types';\r\n// ✅ CORREÇÃO: Problema de loop infinito no useEffect\r\nconst Filter: React.FC<FilterProps> = ({\r\n items = [],\r\n type = 'checkbox',\r\n selectedIds = [],\r\n onApplyFilter,\r\n placeholder = 'Selecionar...',\r\n enableSearch = false,\r\n buttonText = 'Filter',\r\n icon,\r\n variant = 'outlined',\r\n onOpen,\r\n onClose,\r\n position = 'left',\r\n disabled = false,\r\n className = '',\r\n selectedDate,\r\n onDateSelect,\r\n onClearDate,\r\n minDate,\r\n maxDate,\r\n locale = 'pt-br',\r\n}) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [currentCalendarDate, setCurrentCalendarDate] = useState<Date | null>(\r\n () => selectedDate || new Date()\r\n );\r\n const filterRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (selectedDate) {\r\n setCurrentCalendarDate(selectedDate);\r\n }\r\n }, [selectedDate]);\r\n\r\n const handleCalendarNavigation = useCallback((date: Date) => {\r\n setCurrentCalendarDate(date);\r\n }, []);\r\n\r\n const handleDateSelection = useCallback(\r\n (date: Date) => {\r\n onDateSelect?.(date);\r\n setIsOpen(false);\r\n onClose?.();\r\n },\r\n [onDateSelect, onClose]\r\n );\r\n const handleClear = useCallback((): void => {\r\n onClearDate?.();\r\n setCurrentCalendarDate(new Date());\r\n setIsOpen(false);\r\n onClose?.();\r\n }, [onClearDate, onClose]);\r\n\r\n const buttonDisplayText = useMemo(() => {\r\n if (type === 'calendar' && selectedDate) {\r\n return selectedDate.toLocaleDateString(\r\n locale === 'pt-br' ? 'pt-BR' : 'en-US'\r\n );\r\n }\r\n\r\n if (!selectedIds?.length) return buttonText;\r\n\r\n const firstItem = items?.find((item) => item.id === selectedIds[0]);\r\n return firstItem?.text || selectedIds[0];\r\n }, [type, selectedDate, selectedIds, items, buttonText, locale]);\r\n\r\n const getBadgeValue = useCallback(() => {\r\n if (!selectedIds || selectedIds.length <= 1) {\r\n return null;\r\n }\r\n return selectedIds.length - 1;\r\n }, [selectedIds]);\r\n\r\n const handleToggle = useCallback(() => {\r\n if (disabled) return;\r\n\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n\r\n if (newState) {\r\n onOpen?.();\r\n } else {\r\n onClose?.();\r\n }\r\n }, [disabled, isOpen, onOpen, onClose]);\r\n\r\n const handleApplyFilter = useCallback(\r\n (newSelectedIds: string[]) => {\r\n onApplyFilter?.(newSelectedIds);\r\n setIsOpen(false);\r\n onClose?.();\r\n },\r\n [onApplyFilter, onClose]\r\n );\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n if (\r\n filterRef.current &&\r\n !filterRef.current.contains(event.target as Node)\r\n ) {\r\n if (isOpen) {\r\n setIsOpen(false);\r\n onClose?.();\r\n }\r\n }\r\n };\r\n\r\n if (isOpen) {\r\n document.addEventListener('mousedown', handleClickOutside);\r\n }\r\n\r\n return () => document.removeEventListener('mousedown', handleClickOutside);\r\n }, [isOpen, onClose]);\r\n\r\n useEffect(() => {\r\n const handleEscape = (event: KeyboardEvent) => {\r\n if (event.key === 'Escape' && isOpen) {\r\n setIsOpen(false);\r\n onClose?.();\r\n }\r\n };\r\n\r\n if (isOpen) {\r\n document.addEventListener('keydown', handleEscape);\r\n }\r\n\r\n return () => document.removeEventListener('keydown', handleEscape);\r\n }, [isOpen, onClose]);\r\n\r\n const filterClass = clsx(styles['zds-filter__container'], className);\r\n const dropdownClass = clsx(styles['zds-filter__dropdown'], {\r\n [styles[`zds-filter__dropdown--${position}`]]: position,\r\n });\r\n return (\r\n <div ref={filterRef} className={filterClass}>\r\n <Button\r\n variant={variant}\r\n onClick={handleToggle}\r\n disabled={disabled}\r\n icon={\r\n type === 'calendar' ? <Calendar16Regular /> : <ChevronDownRegular />\r\n }\r\n iconPosition=\"right\"\r\n size=\"lg\"\r\n >\r\n <div className={styles['zds-filter-button__content']}>\r\n {icon && <span className={styles['zds-filter-button__icon']}>{icon}</span>}\r\n <span className={styles['zds-filter-button__text']}>{buttonDisplayText}</span>\r\n <span\r\n className={`${styles['zds-filter-button__arrow']} ${isOpen ? styles['zds-filter-button__arrow--open'] : ''}`}\r\n >\r\n {getBadgeValue() && (\r\n <Badge badgeValue={`+${getBadgeValue()}`} type=\"status\" />\r\n )}\r\n </span>\r\n </div>\r\n </Button>\r\n\r\n {isOpen && (\r\n <div className={dropdownClass}>\r\n {type === 'calendar' ? (\r\n <Calendar\r\n currentDate={currentCalendarDate}\r\n selectedDate={selectedDate}\r\n onDaySelect={handleDateSelection}\r\n onDateChange={handleCalendarNavigation}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n locale={locale}\r\n onClear={handleClear}\r\n id={`filter-calendar-${filterRef.current?.id || ''}`}\r\n aria-label=\"Selecionar data para filtro\"\r\n />\r\n ) : (\r\n <Dropdown\r\n items={items}\r\n type={type as DropdownType}\r\n defaultSelectedIds={selectedIds}\r\n placeholder={placeholder}\r\n applySearch={enableSearch}\r\n filter={true}\r\n onSelectionChange={handleApplyFilter}\r\n />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Filter;\r\n","import React from 'react';\r\nimport { RadioGroup } from 'radix-ui';\r\nimport styles from './Radio.module.scss';\r\nimport { RadioGroupProps } from './Radio.types';\r\nimport { useId } from 'react';\r\nimport clsx from 'clsx';\r\nconst Radio: React.FC<RadioGroupProps> = ({\r\n items,\r\n onValueChange,\r\n defaultValue,\r\n name,\r\n id,\r\n ariaLabel,\r\n orientation = 'vertical',\r\n ...rest\r\n}) => {\r\n const componentId = id || useId();\r\n return (\r\n <RadioGroup.Root\r\n id={componentId}\r\n className={styles.root}\r\n defaultValue={defaultValue}\r\n onValueChange={onValueChange}\r\n name={name}\r\n aria-label={ariaLabel}\r\n data-orientation={orientation}\r\n orientation={orientation}\r\n {...rest}\r\n >\r\n {items.map(({ id, value, disabled, label }) => {\r\n const itemKey = id ?? value;\r\n const uniqueId = `${componentId}-item-${value}`;\r\n return (\r\n <div\r\n key={itemKey}\r\n className={clsx(styles.wrapper, { [styles.disabled]: disabled })}\r\n >\r\n <label className={styles.labelWrapper} htmlFor={uniqueId}>\r\n <div className={styles.itemWrapper}>\r\n <RadioGroup.Item\r\n disabled={disabled}\r\n className={styles.item}\r\n value={value}\r\n id={uniqueId}\r\n data-disabled={disabled}\r\n >\r\n <RadioGroup.Indicator className={styles.indicator} />\r\n </RadioGroup.Item>\r\n </div>\r\n <span className={styles.labelText}>{label}</span>\r\n </label>\r\n </div>\r\n );\r\n })}\r\n </RadioGroup.Root>\r\n );\r\n};\r\n\r\nexport default Radio;\r\n","import React, { useId, useCallback, useState, useEffect } from \"react\";\r\nimport clsx from \"clsx\";\r\nimport Checkbox from '../Checkbox/Checkbox';\r\nimport Radio from '../Radio/Radio';\r\nimport styles from './ListItem.module.scss';\r\nimport type { ListItemVariant, ListItemProps } from './ListItem.types';\r\n\r\n/**\r\n * Componente ListItem do Zanthus Design System\r\n * Implementa item de lista unificado com variações text, checkbox, radio e icon\r\n * Segue padrões WCAG 2.1 AA para acessibilidade\r\n */\r\nconst ListItem: React.FC<ListItemProps> = ({\r\n id,\r\n className,\r\n variant = 'text',\r\n text = '',\r\n name = '',\r\n subText,\r\n disabled = false,\r\n checked = false,\r\n selected = false,\r\n onClick,\r\n onChange,\r\n icon,\r\n value = '',\r\n showSubText = false,\r\n hovered = false\r\n}) => {\r\n const componentId = useId();\r\n const itemId = id || componentId;\r\n const [internalChecked, setInternalChecked] = useState<boolean>(checked);\r\n const [internalSelected, setInternalSelected] = useState<boolean>(selected);\r\n\r\n /**\r\n * Handler para clique em checkbox.\r\n * Alterna o estado e dispara o callback onChange.\r\n */\r\n const handleCheckboxClick = useCallback((e: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>): void => {\r\n if (disabled) return;\r\n const newChecked = !internalChecked;\r\n setInternalChecked(newChecked);\r\n onChange?.(newChecked);\r\n onClick?.(e);\r\n }, [disabled, internalChecked, onChange, onClick]);\r\n\r\n /**\r\n * Handler para clique em radio.\r\n * Marca como selecionado se ainda não estiver e dispara o callback onChange.\r\n */\r\n const handleRadioClick = useCallback((e: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>): void => {\r\n if (disabled) return;\r\n if (!internalChecked) {\r\n setInternalChecked(true);\r\n onChange?.(true);\r\n }\r\n onClick?.(e);\r\n }, [disabled, internalChecked, onChange, onClick]);\r\n\r\n /**\r\n * Handler para clique em variantes text e icon.\r\n * Alterna o estado de seleção interno.\r\n */\r\n const handleTextOrIconClick = useCallback((e: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>): void => {\r\n if (disabled) return;\r\n const newSelected = !internalSelected;\r\n setInternalSelected(newSelected);\r\n onClick?.(e);\r\n }, [disabled, internalSelected, onClick]);\r\n\r\n /**\r\n * Handler para eventos de teclado (Enter ou Espaço).\r\n * Direciona para o handler correto conforme o variant.\r\n */\r\n const handleKeyDown = useCallback((e: React.KeyboardEvent<HTMLLIElement>): void => {\r\n if (!disabled && (e.key === 'Enter' || e.key === ' ')) {\r\n e.preventDefault();\r\n switch (variant) {\r\n case 'checkbox':\r\n handleCheckboxClick(e);\r\n break;\r\n case 'radio':\r\n handleRadioClick(e);\r\n break;\r\n case 'text':\r\n case 'icon':\r\n default:\r\n handleTextOrIconClick(e);\r\n break;\r\n }\r\n }\r\n }, [disabled, variant, handleCheckboxClick, handleRadioClick, handleTextOrIconClick]);\r\n\r\n // ✅ Sincronização com props externas\r\n useEffect(() => {\r\n setInternalChecked(checked);\r\n }, [checked]);\r\n\r\n useEffect(() => {\r\n setInternalSelected(selected);\r\n }, [selected]);\r\n\r\n /**\r\n * Renderiza o conteúdo do item conforme o variant.\r\n */\r\n const renderVariantContent = useCallback((): React.ReactNode => {\r\n const validVariants: ListItemVariant[] = ['text', 'checkbox', 'radio', 'icon'];\r\n const currentVariant = validVariants.includes(variant) ? variant : 'text';\r\n\r\n switch (currentVariant) {\r\n case 'checkbox':\r\n return (\r\n <>\r\n <Checkbox\r\n checked={internalChecked}\r\n disabled={disabled}\r\n onCheckedChange={() => handleCheckboxClick({} as React.MouseEvent<HTMLElement>)}\r\n />\r\n <div className={styles['zds-list-item__wrapper-text']}>\r\n <span\r\n id={`${itemId}-text`}\r\n className={styles['zds-list-item__text']}\r\n onClick={handleCheckboxClick}\r\n >\r\n {text}\r\n </span>\r\n {showSubText && subText && (\r\n <span\r\n id={`${itemId}-subtext`}\r\n className={styles['zds-list-item__subtext']}\r\n onClick={handleCheckboxClick}\r\n >\r\n {subText}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n );\r\n\r\n case 'radio':\r\n return (\r\n <>\r\n <div className={styles['zds-list-item__wrapper-radio']}>\r\n <span className={styles['zds-list-item__radio']} aria-hidden=\"true\">\r\n <Radio\r\n name={name}\r\n onValueChange={() => handleRadioClick({} as React.MouseEvent<HTMLElement>)}\r\n items= {[{\r\n value: value,\r\n label: '',\r\n disabled: disabled}]}\r\n aria-labelledby={`${itemId}-text`}\r\n />\r\n </span>\r\n </div>\r\n <div className={styles['zds-list-item__wrapper-text']}>\r\n <span\r\n id={`${itemId}-text`}\r\n className={styles['zds-list-item__title']}\r\n onClick={handleRadioClick}\r\n >\r\n {text}\r\n </span>\r\n {showSubText && subText && (\r\n <span\r\n id={`${itemId}-subtext`}\r\n className={styles['zds-list-item__subtext']}\r\n >\r\n {subText}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n );\r\n\r\n case 'icon':\r\n return (\r\n <>\r\n <div className={styles['zds-list-item__wrapper-icon']}>\r\n {icon}\r\n </div>\r\n <div className={styles['zds-list-item__wrapper-text']}>\r\n <span\r\n id={`${itemId}-text`}\r\n className={styles['zds-list-item__title']}\r\n onClick={handleTextOrIconClick}\r\n >\r\n {text}\r\n </span>\r\n {showSubText && subText && (\r\n <span\r\n id={`${itemId}-subtext`}\r\n className={styles['zds-list-item__subtext']}\r\n >\r\n {subText}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n );\r\n\r\n case 'text':\r\n default:\r\n return (\r\n <div className={styles['zds-list-item__wrapper-text']}>\r\n <span\r\n id={`${itemId}-text`}\r\n className={styles['zds-list-item__title']}\r\n onClick={handleTextOrIconClick}\r\n >\r\n {text}\r\n </span>\r\n {showSubText && subText && (\r\n <span\r\n id={`${itemId}-subtext`}\r\n className={styles['zds-list-item__subtext']}\r\n >\r\n {subText}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n }, [variant, itemId, internalChecked, disabled, handleCheckboxClick, handleRadioClick, handleTextOrIconClick, value, text, showSubText, subText, icon, name]);\r\n\r\n const listItemClass = clsx(\r\n styles['zds-list-item__container'],\r\n {\r\n [styles[`zds-list-item--${variant}`]]: variant,\r\n [styles['zds-list-item--disabled']]: disabled,\r\n [styles['zds-list-item--hovered']]: hovered,\r\n [className || '']: className\r\n }\r\n );\r\n\r\n const getAriaChecked = useCallback((): boolean | undefined => {\r\n if (variant === 'checkbox' || variant === 'radio') {\r\n return internalChecked;\r\n }\r\n return undefined;\r\n }, [variant, internalChecked]);\r\n\r\n return (\r\n <li\r\n className={listItemClass}\r\n tabIndex={disabled ? -1 : 0}\r\n onKeyDown={handleKeyDown}\r\n aria-selected={variant === 'text' || variant === 'icon' ? internalSelected : undefined}\r\n aria-disabled={disabled}\r\n aria-checked={getAriaChecked()}\r\n aria-labelledby={`${itemId}-text`}\r\n aria-describedby={showSubText && subText ? `${itemId}-subtext` : undefined}\r\n data-testid=\"list-item\"\r\n >\r\n {renderVariantContent()}\r\n </li>\r\n );\r\n};\r\n\r\nexport default ListItem;","export const normalizeText = (text: React.ReactNode): string => {\r\n if (typeof text === 'string') return text.toLowerCase();\r\n if (typeof text === 'number') return text.toString().toLowerCase();\r\n if (typeof text === 'bigint') return text.toString().toLowerCase();\r\n if (typeof text === 'boolean') return text.toString().toLowerCase();\r\n return '';\r\n };\r\n\r\n","import { useCallback, useEffect, useRef } from 'react';\r\nimport { normalizeText } from '../../../hooks/NormalizeText';\r\nimport { MenuItemProps } from '../Menu.types';\r\n\r\ninterface UseSearchLogicProps {\r\n items: MenuItemProps[];\r\n searchValue: string;\r\n searchTerm: string;\r\n enableApiSearch?: boolean;\r\n onApiSearch?: (term: string) => void;\r\n}\r\n\r\ninterface UseSearchLogicReturn {\r\n filteredItems: MenuItemProps[];\r\n}\r\n\r\nexport const useSearchLogic = ({\r\n items,\r\n searchValue,\r\n searchTerm,\r\n enableApiSearch,\r\n onApiSearch,\r\n}: UseSearchLogicProps): UseSearchLogicReturn => {\r\n const debounceTimeoutRef = useRef<NodeJS.Timeout | null>(null);\r\n const lastSearchTermRef = useRef<string>('');\r\n const hasInitialSearchRef = useRef<boolean>(false);\r\n\r\n const debouncedApiSearch = useCallback(\r\n (term: string) => {\r\n if (lastSearchTermRef.current === term) {\r\n return;\r\n }\r\n\r\n lastSearchTermRef.current = term;\r\n\r\n if (debounceTimeoutRef.current) {\r\n clearTimeout(debounceTimeoutRef.current);\r\n }\r\n\r\n debounceTimeoutRef.current = setTimeout(() => {\r\n if (enableApiSearch && onApiSearch) {\r\n onApiSearch(term);\r\n }\r\n }, 200);\r\n },\r\n [enableApiSearch, onApiSearch]\r\n );\r\n\r\n useEffect(() => {\r\n if (enableApiSearch && !hasInitialSearchRef.current && onApiSearch) {\r\n hasInitialSearchRef.current = true;\r\n onApiSearch('');\r\n lastSearchTermRef.current = '';\r\n }\r\n }, [enableApiSearch, onApiSearch]);\r\n\r\n useEffect(() => {\r\n if (!enableApiSearch) return;\r\n\r\n if (searchValue.trim() === '') {\r\n debouncedApiSearch('');\r\n return;\r\n }\r\n if (searchTerm !== undefined && searchTerm.trim() !== '') {\r\n debouncedApiSearch(searchTerm);\r\n }\r\n }, [searchTerm, searchValue, enableApiSearch, debouncedApiSearch]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (debounceTimeoutRef.current) {\r\n clearTimeout(debounceTimeoutRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n const filteredItems = useCallback((): MenuItemProps[] => {\r\n if (enableApiSearch) {\r\n return items;\r\n }\r\n\r\n if (!searchValue.trim()) {\r\n return items;\r\n }\r\n\r\n const normalized = normalizeText(searchValue).toLowerCase();\r\n\r\n return items.filter((item) => {\r\n const text = normalizeText(item.text || '').toLowerCase();\r\n const subText = normalizeText(item.subText || '').toLowerCase();\r\n\r\n return text.includes(normalized) || subText.includes(normalized);\r\n });\r\n }, [items, searchValue, enableApiSearch]);\r\n\r\n return { filteredItems: filteredItems() };\r\n};\r\n","import { useState, useEffect, useCallback, useRef } from 'react';\r\nimport { MenuItemProps } from '../Menu.types';\r\n\r\nexport interface UseMenuLogicProps {\r\n selectedItems?: MenuItemProps[];\r\n onItemSelect?: (items: MenuItemProps) => void;\r\n onOpenChange?: (open: boolean) => void;\r\n}\r\n\r\nexport interface UseMenuLogicReturn {\r\n open: boolean;\r\n internalSelectedItems: MenuItemProps[];\r\n setOpen: (open: boolean) => void;\r\n handleItemSelect: (item: MenuItemProps) => void;\r\n isItemSelected: (item: MenuItemProps) => boolean;\r\n}\r\n\r\nexport function useMenuLogic({\r\n selectedItems = [],\r\n onItemSelect,\r\n onOpenChange,\r\n}: UseMenuLogicProps): UseMenuLogicReturn {\r\n \r\n const isControlledRef = useRef(selectedItems !== undefined);\r\n const prevSelectedItemsRef = useRef<MenuItemProps[]>(selectedItems);\r\n\r\n const [open, setOpenState] = useState(false);\r\n const [internalSelectedItems, setInternalSelectedItems] = useState<MenuItemProps[]>(\r\n selectedItems || []\r\n );\r\n\r\n const getItemKey = useCallback((item: MenuItemProps): string => {\r\n return item.value ?? item.id ?? item.text ?? '';\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!isControlledRef.current || !selectedItems) return;\r\n\r\n const prevKeys = prevSelectedItemsRef.current.map(getItemKey).sort().join(',');\r\n const currentKeys = selectedItems.map(getItemKey).sort().join(',');\r\n\r\n if (prevKeys !== currentKeys) {\r\n setInternalSelectedItems(selectedItems);\r\n prevSelectedItemsRef.current = selectedItems;\r\n }\r\n }, [selectedItems, getItemKey]);\r\n\r\n const setOpen = useCallback(\r\n (newOpen: boolean) => {\r\n setOpenState(newOpen);\r\n onOpenChange?.(newOpen);\r\n },\r\n [onOpenChange]\r\n );\r\n\r\n const isItemSelected = useCallback(\r\n (item: MenuItemProps): boolean => {\r\n const itemKey = getItemKey(item);\r\n if (!itemKey) return false;\r\n\r\n return internalSelectedItems.some(\r\n (selected) => getItemKey(selected) === itemKey\r\n );\r\n },\r\n [internalSelectedItems, getItemKey]\r\n );\r\n\r\n const handleItemSelect = useCallback(\r\n (item: MenuItemProps) => {\r\n const newSelection = [item];\r\n setInternalSelectedItems(newSelection);\r\n\r\n if (onItemSelect) {\r\n onItemSelect(item);\r\n }\r\n\r\n setOpen(false);\r\n },\r\n [onItemSelect, setOpen]\r\n );\r\n\r\n return {\r\n open,\r\n internalSelectedItems,\r\n setOpen,\r\n handleItemSelect,\r\n isItemSelected,\r\n };\r\n}\r\n\r\nexport default useMenuLogic;\r\n","import { memo } from 'react';\r\nimport { DropdownMenu } from 'radix-ui';\r\nimport { DefaultMenuItemProps } from '../Menu.types';\r\nimport styles from '../Menu.module.scss';\r\nimport clsx from 'clsx';\r\n\r\nexport const MenuItem = memo(({ item, isSelected, onSelect }: DefaultMenuItemProps) => {\r\n \r\n const handleSelect = () => {\r\n onSelect(item);\r\n };\r\n\r\n return (\r\n <DropdownMenu.Item\r\n className={clsx(styles.item, { [styles.itemSelected]: isSelected })}\r\n onSelect={handleSelect}\r\n disabled={item.disabled}\r\n >\r\n {item.icon && <span className={styles.itemIcon}>{item.icon}</span>}\r\n <div className={styles.wrapperText}>\r\n <span className={styles.itemText}>{item.text}</span>\r\n {item.subText && (\r\n <span className={styles.itemSubText}>{item.subText}</span>\r\n )}\r\n </div>\r\n </DropdownMenu.Item>\r\n );\r\n});\r\n\r\nMenuItem.displayName = 'MenuItem';\r\n\r\nexport default MenuItem;\r\n","import { useState, useEffect, useCallback, useRef } from 'react';\r\nimport { DropdownMenu } from 'radix-ui';\r\nimport styles from './Menu.module.scss';\r\nimport { MenuItemProps, MenuProps } from './Menu.types';\r\nimport { ChevronRight16Filled } from '@fluentui/react-icons';\r\nimport Search from '../Search';\r\nimport { useSearchLogic } from './hooks/useSearchLogic';\r\nimport { useMenuLogic } from './hooks/useMenuLogic';\r\nimport MenuItem from './components/MenuItem';\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\n\r\nconst Menu: React.FC<MenuProps> = ({\r\n items,\r\n children,\r\n onItemSelect,\r\n search,\r\n enableInfiniteScroll,\r\n onScrollEnd,\r\n isLoadingMore,\r\n onApiSearch,\r\n enableApiSearch,\r\n selectedItems = [],\r\n onOpenChange,\r\n align = 'start',\r\n className,\r\n maxHeight = 400,\r\n ...rest\r\n}) => {\r\n const itemsWrapperRef = useRef<HTMLDivElement>(null);\r\n const hasReachedEndRef = useRef<boolean>(false);\r\n const observerRef = useRef<IntersectionObserver | null>(null);\r\n const sentinelRef = useRef<HTMLDivElement | null>(null);\r\n const onScrollEndRef = useRef(onScrollEnd);\r\n const isLoadingMoreRef = useRef(isLoadingMore);\r\n\r\n const [searchInput, setSearchInput] = useState('');\r\n const [searchTerm, setSearchTerm] = useState('');\r\n\r\n const maxHeightStyle = typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight;\r\n\r\n const { open, setOpen, handleItemSelect: handleItemSelectLogic, isItemSelected } = useMenuLogic({\r\n selectedItems,\r\n onItemSelect,\r\n onOpenChange,\r\n });\r\n\r\n const handleItemSelect = useCallback((item: MenuItemProps) => {\r\n handleItemSelectLogic(item);\r\n }, [handleItemSelectLogic]);\r\n\r\n const { filteredItems } = useSearchLogic({\r\n items,\r\n searchValue: searchInput,\r\n searchTerm: searchTerm,\r\n onApiSearch,\r\n enableApiSearch,\r\n });\r\n\r\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const value = e.target.value;\r\n setSearchInput(value);\r\n\r\n if (value.trim() === '') {\r\n setSearchTerm('');\r\n }\r\n };\r\n\r\n const handleSearchKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n e.stopPropagation();\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n setSearchTerm(searchInput);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n onScrollEndRef.current = onScrollEnd;\r\n isLoadingMoreRef.current = isLoadingMore;\r\n }, [onScrollEnd, isLoadingMore]);\r\n\r\n useEffect(() => {\r\n if (!open || !enableInfiniteScroll) {\r\n return;\r\n }\r\n\r\n const setupTimer = setTimeout(() => {\r\n const container = itemsWrapperRef.current;\r\n const sentinel = sentinelRef.current;\r\n \r\n if (!container || !sentinel) {\r\n return;\r\n }\r\n\r\n observerRef.current = new IntersectionObserver(\r\n ([entry]) => {\r\n if (\r\n entry.isIntersecting &&\r\n !hasReachedEndRef.current &&\r\n !isLoadingMoreRef.current &&\r\n onScrollEndRef.current\r\n ) {\r\n hasReachedEndRef.current = true;\r\n onScrollEndRef.current();\r\n }\r\n },\r\n {\r\n root: container,\r\n threshold: 0.1,\r\n rootMargin: '50px',\r\n }\r\n );\r\n\r\n observerRef.current.observe(sentinel);\r\n }, 50);\r\n return () => {\r\n clearTimeout(setupTimer);\r\n if (observerRef.current) {\r\n observerRef.current.disconnect();\r\n observerRef.current = null;\r\n }\r\n };\r\n }, [open, enableInfiniteScroll]);\r\n\r\n useEffect(() => {\r\n if (!isLoadingMore && open && enableInfiniteScroll) {\r\n hasReachedEndRef.current = false;\r\n }\r\n }, [isLoadingMore, open, enableInfiniteScroll]);\r\n\r\n useEffect(() => {\r\n if (!open || !enableInfiniteScroll || !onScrollEnd || isLoadingMore) {\r\n return;\r\n }\r\n\r\n const timer = setTimeout(() => {\r\n const container = itemsWrapperRef.current;\r\n if (!container) {\r\n return;\r\n }\r\n\r\n const { scrollHeight, clientHeight } = container;\r\n \r\n if (scrollHeight <= clientHeight && !hasReachedEndRef.current) {\r\n hasReachedEndRef.current = true;\r\n onScrollEnd();\r\n }\r\n }, 200);\r\n\r\n return () => clearTimeout(timer);\r\n }, [open, enableInfiniteScroll, onScrollEnd, isLoadingMore, filteredItems.length]);\r\n\r\n const renderMenuItem = useCallback(\r\n (item: MenuItemProps, key: string | number) => {\r\n const hasChildren = item.children && item.children.length > 0;\r\n\r\n if (hasChildren) {\r\n return (\r\n <DropdownMenu.Sub key={key}>\r\n <DropdownMenu.SubTrigger\r\n className={styles.subTrigger}\r\n disabled={item.disabled}\r\n >\r\n {item.icon && (\r\n <span className={styles.itemIcon}>{item.icon}</span>\r\n )}\r\n <div className={styles.wrapperText}>\r\n <span className={styles.itemText}>{item.text}</span>\r\n {item.subText && (\r\n <span className={styles.itemSubText}>{item.subText}</span>\r\n )}\r\n </div>\r\n <ChevronRight16Filled className={styles.chevronIcon} />\r\n </DropdownMenu.SubTrigger>\r\n\r\n <DropdownMenu.Portal>\r\n <DropdownMenu.SubContent\r\n className={styles.subContent}\r\n sideOffset={16}\r\n collisionPadding={20}\r\n >\r\n {item.children!.map((childItem, childIndex) =>\r\n renderMenuItem(childItem, `${key}-${childIndex}`)\r\n )}\r\n </DropdownMenu.SubContent>\r\n </DropdownMenu.Portal>\r\n </DropdownMenu.Sub>\r\n );\r\n }\r\n return (\r\n <MenuItem\r\n key={key}\r\n item={item}\r\n isSelected={isItemSelected(item)}\r\n onSelect={handleItemSelect}\r\n />\r\n );\r\n },\r\n [handleItemSelect, isItemSelected]\r\n );\r\n\r\n const handleOpenChange = (newOpen: boolean) => {\r\n setOpen(newOpen);\r\n if (!newOpen) {\r\n hasReachedEndRef.current = false;\r\n }\r\n };\r\n\r\n return (\r\n <DropdownMenu.Root open={open} onOpenChange={handleOpenChange}>\r\n <DropdownMenu.Trigger asChild>{children}</DropdownMenu.Trigger>\r\n <DropdownMenu.Portal>\r\n <DropdownMenu.Content\r\n className={clsx(styles.content, className)}\r\n sideOffset={8}\r\n align={align}\r\n onKeyDown={(e) => {\r\n if (search) {\r\n e.stopPropagation();\r\n }\r\n }}\r\n {...rest}\r\n >\r\n {search && (\r\n <div className={styles.searchWrapper}>\r\n <Search\r\n placeholder=\"Buscar\"\r\n onChange={handleSearchChange}\r\n value={searchInput}\r\n onKeyDown={handleSearchKeyDown}\r\n />\r\n </div>\r\n )}\r\n\r\n <div \r\n className={styles.itemsWrapper} \r\n ref={itemsWrapperRef}\r\n style={{ maxHeight: maxHeightStyle }}\r\n >\r\n {filteredItems.length > 0 ? (\r\n filteredItems.map((item, index) =>\r\n renderMenuItem(item, item.value || item.text || `item-${index}`)\r\n )\r\n ) : (\r\n <div className={styles.emptyState}>Nenhum item encontrado</div>\r\n )}\r\n {enableInfiniteScroll && isLoadingMore && (\r\n <div className={styles.loadingMore}>Carregando mais itens...</div>\r\n )}\r\n {enableInfiniteScroll && (\r\n <div\r\n ref={sentinelRef}\r\n data-scroll-sentinel\r\n style={{ height: '1px', visibility: 'hidden' }}\r\n />\r\n )}\r\n </div>\r\n </DropdownMenu.Content>\r\n </DropdownMenu.Portal>\r\n </DropdownMenu.Root>\r\n );\r\n};\r\n\r\nexport default Menu;\r\n","import React, { useState, useRef, useCallback, useEffect, useId, useMemo } from 'react';\r\nimport Button from '../Button/Button';\r\nimport styles from './Quantity.module.scss';\r\nimport { Add16Regular, Subtract16Regular } from '@fluentui/react-icons';\r\nimport clsx from 'clsx';\r\nimport type { QuantityProps } from './Quantity.types';\r\n\r\n/**\r\n * Componente Quantity - permite incrementar/decrementar valores numéricos\r\n * Suporta modo controlado e não controlado, valores decimais e inteiros\r\n */\r\nconst Quantity: React.FC<QuantityProps> = ({\r\n defaultValue = 0,\r\n value: controlledValue,\r\n onChange,\r\n disabled = false,\r\n decimal = false,\r\n decimalPlaces = 2,\r\n size = 'lg',\r\n id,\r\n step,\r\n className\r\n}) => {\r\n // Determina se o componente é controlado externamente\r\n const isControlled = controlledValue !== undefined;\r\n\r\n // Estados internos para valor e input\r\n const [value, setValue] = useState<number>(isControlled ? controlledValue : defaultValue);\r\n const [inputValue, setInputValue] = useState<string>(\r\n decimal\r\n ? (isControlled ? controlledValue : defaultValue).toFixed(decimalPlaces)\r\n : String(isControlled ? controlledValue : defaultValue)\r\n );\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n const stepValue = step !== undefined ? step : decimal ? Math.pow(10, -decimalPlaces) : 1;\r\n\r\n const computedValue = useMemo(() => (isControlled ? controlledValue! : value), [isControlled, controlledValue, value]);\r\n const isMinValue = useMemo(() => computedValue === 0, [computedValue]);\r\n\r\n const validateProps = (decimalPlaces?: number, step?: number) => {\r\n if (decimalPlaces !== undefined && (decimalPlaces < 1 || decimalPlaces > 10)) {\r\n console.warn('decimalPlaces deve estar entre 1 e 10');\r\n }\r\n if (step !== undefined && step <= 0) {\r\n console.warn('step deve ser maior que 0');\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n validateProps(decimalPlaces, step);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (isControlled && controlledValue !== undefined) {\r\n setValue(controlledValue);\r\n setInputValue(decimal ? controlledValue.toFixed(decimalPlaces) : String(controlledValue));\r\n }\r\n }, [controlledValue, decimal, decimalPlaces, isControlled]);\r\n\r\n const increment = useCallback(() => {\r\n if (disabled) return;\r\n\r\n const newValue = computedValue + stepValue;\r\n\r\n if (!isControlled) {\r\n setValue(newValue);\r\n setInputValue(decimal ? newValue.toFixed(decimalPlaces) : String(newValue));\r\n }\r\n\r\n onChange?.(newValue);\r\n }, [disabled, computedValue, stepValue, decimal, decimalPlaces, isControlled, onChange]);\r\n\r\n const decrement = useCallback(() => {\r\n if (disabled) return;\r\n\r\n const newValue = Math.max(0, computedValue - stepValue);\r\n\r\n if (!isControlled) {\r\n setValue(newValue);\r\n setInputValue(decimal ? newValue.toFixed(decimalPlaces) : String(newValue));\r\n }\r\n\r\n onChange?.(newValue);\r\n }, [disabled, computedValue, stepValue, decimal, decimalPlaces, isControlled, onChange]);\r\n\r\n const filterInput = useCallback((inputValue: string): string => {\r\n if (decimal) {\r\n let filtered = inputValue.replace(/[^\\d.]/g, '');\r\n\r\n const parts = filtered.split('.');\r\n if (parts.length > 2) {\r\n filtered = parts[0] + '.' + parts.slice(1).join('');\r\n }\r\n\r\n if (filtered.length > 1 && filtered.startsWith('0') && !filtered.startsWith('0.')) {\r\n filtered = filtered.replace(/^0+/, '');\r\n }\r\n\r\n return filtered;\r\n } else {\r\n let filtered = inputValue.replace(/[^\\d]/g, '');\r\n\r\n if (filtered.length > 1 && filtered.startsWith('0')) {\r\n filtered = filtered.replace(/^0+/, '');\r\n }\r\n\r\n return filtered || '0'; // Se ficar vazio, retorna '0'\r\n }\r\n }, [decimal]);\r\n const handleInputChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (disabled) return;\r\n\r\n const rawValue = event.target.value;\r\n\r\n // ✅ APLICAR: Filtro em tempo real\r\n const filteredValue = filterInput(rawValue);\r\n\r\n // ✅ SEMPRE: Atualizar input com valor filtrado\r\n setInputValue(filteredValue);\r\n\r\n // ✅ PROCESSAR: Apenas valores válidos\r\n if (filteredValue === '' || filteredValue === '.') {\r\n if (!isControlled) {\r\n setValue(0);\r\n }\r\n onChange?.(0);\r\n return;\r\n }\r\n\r\n if (decimal) {\r\n // Estados intermediários permitidos\r\n if (filteredValue.endsWith('.')) {\r\n return; // \"5.\" é válido, mas não processa ainda\r\n }\r\n\r\n const parsedValue = parseFloat(filteredValue);\r\n if (!isNaN(parsedValue)) {\r\n if (!isControlled) {\r\n setValue(parsedValue);\r\n }\r\n onChange?.(parsedValue);\r\n }\r\n } else {\r\n const parsedValue = parseInt(filteredValue, 10);\r\n if (!isNaN(parsedValue)) {\r\n const validValue = Math.min(parsedValue, 9999);\r\n if (!isControlled) {\r\n setValue(validValue);\r\n }\r\n onChange?.(validValue);\r\n }\r\n }\r\n }, [disabled, decimal, isControlled, onChange]);\r\n\r\n\r\n const handleBlur = useCallback(() => {\r\n if (disabled) return;\r\n\r\n const currentValue = inputValue.trim();\r\n\r\n if (decimal) {\r\n if (currentValue === '' || currentValue === '.') {\r\n const resetValue = computedValue;\r\n setInputValue(resetValue.toFixed(decimalPlaces));\r\n return;\r\n }\r\n\r\n if (currentValue.endsWith('.')) {\r\n const baseValue = parseFloat(currentValue.slice(0, -1));\r\n if (!isNaN(baseValue)) {\r\n const formattedValue = baseValue.toFixed(decimalPlaces);\r\n setInputValue(formattedValue);\r\n\r\n if (!isControlled) {\r\n setValue(baseValue);\r\n }\r\n onChange?.(baseValue);\r\n }\r\n return;\r\n }\r\n\r\n const parsedValue = parseFloat(currentValue);\r\n if (!isNaN(parsedValue)) {\r\n const normalizedValue = Math.max(0, parsedValue);\r\n const formattedValue = normalizedValue.toFixed(decimalPlaces);\r\n setInputValue(formattedValue);\r\n\r\n if (!isControlled) {\r\n setValue(normalizedValue);\r\n }\r\n onChange?.(normalizedValue);\r\n } else {\r\n\r\n setInputValue(computedValue.toFixed(decimalPlaces));\r\n }\r\n } else {\r\n\r\n if (currentValue === '') {\r\n setInputValue(String(computedValue));\r\n return;\r\n }\r\n\r\n const parsedValue = parseInt(currentValue, 10);\r\n if (isNaN(parsedValue)) {\r\n setInputValue(String(computedValue));\r\n } else {\r\n const normalizedValue = Math.max(0, Math.min(parsedValue, 9999));\r\n setInputValue(String(normalizedValue));\r\n if (!isControlled) {\r\n setValue(normalizedValue);\r\n }\r\n onChange?.(normalizedValue);\r\n }\r\n }\r\n }, [disabled, decimal, inputValue, decimalPlaces, computedValue, isControlled, onChange]);\r\n\r\n\r\n const handleInputKeyDown = useCallback(\r\n (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (disabled) return;\r\n\r\n switch (e.key) {\r\n case 'ArrowUp':\r\n e.preventDefault();\r\n increment();\r\n break;\r\n\r\n case 'ArrowDown':\r\n e.preventDefault();\r\n decrement();\r\n break;\r\n\r\n case 'Enter':\r\n e.preventDefault();\r\n if (inputRef.current) {\r\n inputRef.current.blur();\r\n }\r\n break;\r\n\r\n case 'Escape':\r\n e.preventDefault();\r\n if (inputRef.current) {\r\n setInputValue(decimal ? computedValue.toFixed(decimalPlaces) : String(computedValue));\r\n inputRef.current.blur();\r\n }\r\n break;\r\n\r\n case 'Home':\r\n e.preventDefault();\r\n const minValue = 0;\r\n if (!isControlled) {\r\n setValue(minValue);\r\n setInputValue(decimal ? minValue.toFixed(decimalPlaces) : String(minValue));\r\n }\r\n onChange?.(minValue);\r\n break;\r\n\r\n case 'End':\r\n if (!decimal) {\r\n e.preventDefault();\r\n const maxValue = 9999;\r\n if (!isControlled) {\r\n setValue(maxValue);\r\n setInputValue(String(maxValue));\r\n }\r\n onChange?.(maxValue);\r\n }\r\n break;\r\n }\r\n },\r\n [disabled, increment, decrement, decimal, decimalPlaces, isControlled, onChange, computedValue]\r\n );\r\n\r\n const uniqueId = useId();\r\n const inputId = id || uniqueId;\r\n\r\n return (\r\n <div className={clsx(styles['zds-quantity'], { disabled }, className)}>\r\n <Button\r\n variant='outlined'\r\n size={size}\r\n type='button'\r\n iconOnly\r\n icon={<Subtract16Regular />}\r\n onClick={decrement}\r\n disabled={disabled || isMinValue}\r\n aria-label='Diminuir quantidade'\r\n />\r\n\r\n <input\r\n ref={inputRef}\r\n className={clsx(styles['zds-quantity__input'], { disabled })}\r\n type='text'\r\n value={inputValue}\r\n onChange={handleInputChange}\r\n onBlur={handleBlur}\r\n onKeyDown={handleInputKeyDown}\r\n id={inputId}\r\n min='0'\r\n step={stepValue}\r\n aria-label='Quantidade'\r\n role='spinbutton'\r\n aria-valuenow={computedValue}\r\n aria-valuemin={0}\r\n aria-valuemax={decimal ? undefined : 9999}\r\n disabled={disabled}\r\n inputMode={decimal ? 'decimal' : 'numeric'}\r\n\r\n />\r\n <Button\r\n variant='outlined'\r\n size={size}\r\n type='button'\r\n iconOnly\r\n onClick={increment}\r\n disabled={disabled}\r\n aria-label='Aumentar quantidade'\r\n icon={<Add16Regular />}\r\n\r\n />\r\n\r\n </div>\r\n );\r\n};\r\n\r\n\r\nconst memorizedQuantity = React.memo(Quantity);\r\nmemorizedQuantity.displayName = 'Quantity';\r\n\r\nexport default memorizedQuantity;","import clsx from 'clsx';\r\nimport React, { useRef } from 'react';\r\n\r\nimport Checkbox from '../../Checkbox';\r\nimport styles from '../index.module.scss';\r\nimport { CheckboxItemProps } from '../Select.types';\r\n\r\nconst CheckboxSelectItem: React.FC<CheckboxItemProps> = ({\r\n text,\r\n subTitle,\r\n disabled,\r\n checked,\r\n onCheckedChange,\r\n value,\r\n ...restProps\r\n}) => {\r\n const itemRef = useRef<HTMLDivElement>(null);\r\n\r\n const handleCheckboxChange = (checkedValue: boolean | 'indeterminate') => {\r\n onCheckedChange(Boolean(checkedValue));\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (disabled) return;\r\n\r\n if (e.key === ' ' || e.key === 'Enter') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n onCheckedChange(!checked);\r\n return;\r\n }\r\n\r\n if (e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n const nextElement = itemRef.current?.nextElementSibling as HTMLDivElement;\r\n if (nextElement && nextElement.getAttribute('tabIndex') === '0') {\r\n nextElement.focus();\r\n }\r\n return;\r\n }\r\n\r\n if (e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n const prevElement = itemRef.current?.previousElementSibling as HTMLDivElement;\r\n if (prevElement && prevElement.getAttribute('tabIndex') === '0') {\r\n prevElement.focus();\r\n }\r\n return;\r\n }\r\n };\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (disabled) return;\r\n \r\n const target = e.target as HTMLElement;\r\n const isCheckboxClick = target.closest('input[type=\"checkbox\"]') || \r\n target.closest('label');\r\n \r\n if (!isCheckboxClick) {\r\n e.preventDefault();\r\n onCheckedChange(!checked);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={itemRef}\r\n className={clsx(styles.checkboxItem, {\r\n [styles.disabled]: disabled,\r\n })}\r\n role=\"option\"\r\n aria-selected={checked}\r\n aria-disabled={disabled}\r\n data-selected={checked}\r\n data-testid={`checkbox-item-${value}`}\r\n tabIndex={disabled ? -1 : 0}\r\n onKeyDown={handleKeyDown}\r\n onClick={handleClick}\r\n {...restProps}\r\n >\r\n <div className={styles.checkboxContent}>\r\n <Checkbox\r\n checked={checked}\r\n onCheckedChange={handleCheckboxChange}\r\n disabled={disabled}\r\n label={\r\n <div className={styles.textContent}>\r\n <span className={styles.title}>{text}</span>\r\n {subTitle && <div className={styles.subTitle}>{subTitle}</div>}\r\n </div>\r\n }\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nCheckboxSelectItem.displayName = 'CheckboxSelectItem';\r\n\r\nexport default CheckboxSelectItem;","import { ChevronRight16Regular, ChevronDown16Regular } from '@fluentui/react-icons';\r\nimport clsx from 'clsx';\r\nimport React, { useState } from 'react';\r\n\r\nimport styles from '../index.module.scss';\r\n\r\nimport type { SelectItemProps, SelectVariant } from '../Select.types';\r\n\r\n\r\ninterface ExpandableSelectItemProps {\r\n item: SelectItemProps;\r\n variant: SelectVariant;\r\n onSelect: (value: string) => void;\r\n selectedValues: string[];\r\n level?: number; \r\n}\r\n\r\nconst ExpandableSelectItem: React.FC<ExpandableSelectItemProps> = ({\r\n item,\r\n variant,\r\n onSelect,\r\n selectedValues,\r\n level = 0,\r\n}) => {\r\n const [isExpanded, setIsExpanded] = useState(false);\r\n const hasChildren = item.children && item.children.length > 0;\r\n const isSelected = selectedValues.includes(item.value);\r\n\r\n const handleClick = (e: React.MouseEvent) => {\r\n if (hasChildren) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsExpanded(!isExpanded);\r\n } else {\r\n onSelect(item.value);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <div \r\n className={styles.expandableItemContainer}\r\n style={{ paddingLeft: `${level * 16}px` }}\r\n >\r\n <div \r\n className={clsx(styles.itemWrapper, {\r\n [styles.selected]: isSelected && !hasChildren,\r\n [styles.disabled]: item.disabled,\r\n })}\r\n onClick={handleClick}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n handleClick(e as unknown as React.MouseEvent);\r\n }\r\n }}\r\n role=\"button\"\r\n tabIndex={item.disabled ? -1 : 0}\r\n data-disabled={item.disabled || undefined}\r\n data-selected={isSelected && !hasChildren ? 'true' : undefined}\r\n data-testid={`select-item-${item.value}`}\r\n >\r\n {variant === 'icon' && item.icon && (\r\n <span className={styles.icon}>{item.icon}</span>\r\n )}\r\n \r\n <div className={styles.textContent}>\r\n <div className={styles.title}>{item.text}</div>\r\n {item.subTitle && <div className={styles.subTitle}>{item.subTitle}</div>}\r\n </div>\r\n \r\n {hasChildren && (\r\n <span className={styles.chevron}>\r\n {isExpanded ? <ChevronDown16Regular /> : <ChevronRight16Regular />}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n \r\n {hasChildren && isExpanded && (\r\n <div className={styles.childrenWrapper}>\r\n {item.children!.map((child) => (\r\n <ExpandableSelectItem\r\n key={child.id || child.value}\r\n item={child}\r\n variant={variant}\r\n onSelect={onSelect}\r\n selectedValues={selectedValues}\r\n level={level + 1}\r\n />\r\n ))}\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default ExpandableSelectItem;","import clsx from 'clsx';\r\nimport { Select } from 'radix-ui';\r\nimport React from 'react';\r\n\r\nimport styles from '../index.module.scss';\r\nimport { SelectItemProps, SelectVariant } from '../Select.types';\r\n\r\ninterface SelectItemComponentProps extends SelectItemProps {\r\n variant?: SelectVariant;\r\n}\r\n\r\nconst SelectItem = React.forwardRef<HTMLDivElement, SelectItemComponentProps>(\r\n ({ text, subTitle, icon, disabled, value, variant, ...restProps }, ref) => {\r\n return (\r\n <div\r\n className={clsx(styles.itemWrapper, {\r\n [styles.disabled]: disabled,\r\n })}\r\n data-disabled={disabled || undefined}\r\n data-testid={`select-item-${value}`}\r\n ref={ref}\r\n >\r\n {variant === 'icon' && icon && (\r\n <span className={styles.icon}>{icon}</span>\r\n )}\r\n\r\n <Select.Item\r\n className={clsx(styles.item, {\r\n [styles.disabled]: disabled,\r\n })}\r\n value={value}\r\n disabled={disabled}\r\n {...restProps}\r\n >\r\n <Select.ItemText className={styles.title}>{text}</Select.ItemText>\r\n {subTitle && <div className={styles.subTitle}>{subTitle}</div>}\r\n <Select.ItemIndicator className={styles.itemIndicator} />\r\n </Select.Item>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSelectItem.displayName = 'SelectItem';\r\n\r\nexport default SelectItem;","import { useReducer, useEffect, useRef, useCallback } from 'react';\r\n\r\nimport { normalizeText } from '../../../hooks/NormalizeText';\r\nimport {\r\n SelectState,\r\n SelectAction,\r\n UseSelectLogicProps,\r\n UseSelectLogicReturn,\r\n SelectItemProps,\r\n} from '../Select.types';\r\n\r\nconst initialState: SelectState = {\r\n isOpen: false,\r\n selectedValues: [],\r\n searchInput: '',\r\n searchTerm: '',\r\n touched: false,\r\n hasError: false,\r\n};\r\n\r\nfunction selectReducer(state: SelectState, action: SelectAction): SelectState {\r\n switch (action.type) {\r\n case 'SET_OPEN':\r\n return { ...state, isOpen: action.payload };\r\n case 'SET_SELECTED_VALUES':\r\n return { ...state, selectedValues: action.payload };\r\n case 'SET_SEARCH_INPUT':\r\n return { ...state, searchInput: action.payload };\r\n case 'SET_SEARCH_TERM':\r\n return { ...state, searchTerm: action.payload };\r\n case 'SET_TOUCHED':\r\n return { ...state, touched: action.payload };\r\n case 'SET_ERROR':\r\n return { ...state, hasError: action.payload };\r\n case 'RESET_SEARCH':\r\n return { ...state, searchInput: '', searchTerm: '' };\r\n case 'VALIDATE': {\r\n const hasError = action.payload.required && state.selectedValues.length === 0;\r\n return { ...state, hasError, touched: true };\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function useSelectLogic({\r\n value,\r\n required = false,\r\n search = false,\r\n onValueChange,\r\n onOpenChange,\r\n enableApiSearch = false,\r\n onApiSearch,\r\n isSearching = false,\r\n}: UseSelectLogicProps): UseSelectLogicReturn {\r\n const [state, dispatch] = useReducer(selectReducer, {\r\n ...initialState,\r\n selectedValues: Array.isArray(value) ? value : value ? [value] : [],\r\n });\r\n\r\n const searchInputRef = useRef<HTMLInputElement>(null);\r\n const debounceTimeoutRef = useRef<NodeJS.Timeout | null>(null);\r\n const hasInitialSearchRef = useRef<boolean>(false);\r\n const lastSearchTermRef = useRef<string>('');\r\n\r\n const debouncedApiSearch = useCallback(\r\n (searchTerm: string) => {\r\n if (lastSearchTermRef.current === searchTerm) {\r\n return;\r\n }\r\n \r\n lastSearchTermRef.current = searchTerm;\r\n \r\n if (debounceTimeoutRef.current) {\r\n clearTimeout(debounceTimeoutRef.current);\r\n }\r\n\r\n debounceTimeoutRef.current = setTimeout(() => {\r\n if (enableApiSearch && onApiSearch) {\r\n onApiSearch(searchTerm);\r\n }\r\n }, 300);\r\n },\r\n [enableApiSearch, onApiSearch]\r\n );\r\n\r\n useEffect(() => {\r\n const newValues = Array.isArray(value) ? value : value ? [value] : [];\r\n dispatch({ type: 'SET_SELECTED_VALUES', payload: newValues });\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n if (state.isOpen && search) {\r\n setTimeout(() => {\r\n searchInputRef.current?.focus();\r\n }, 0);\r\n }\r\n }, [state.isOpen, search]);\r\n\r\n useEffect(() => {\r\n if (!state.isOpen) {\r\n dispatch({ type: 'RESET_SEARCH' });\r\n hasInitialSearchRef.current = false;\r\n lastSearchTermRef.current = '';\r\n }\r\n }, [state.isOpen]);\r\n\r\n useEffect(() => {\r\n if (state.isOpen && enableApiSearch && !hasInitialSearchRef.current) {\r\n hasInitialSearchRef.current = true;\r\n if (onApiSearch) {\r\n onApiSearch('');\r\n lastSearchTermRef.current = '';\r\n }\r\n }\r\n }, [state.isOpen, enableApiSearch, onApiSearch]);\r\n\r\n useEffect(() => {\r\n if (enableApiSearch && state.searchTerm && state.isOpen) {\r\n if (lastSearchTermRef.current !== state.searchTerm) {\r\n debouncedApiSearch(state.searchTerm);\r\n }\r\n }\r\n }, [state.searchTerm, enableApiSearch, state.isOpen, debouncedApiSearch]);\r\n\r\n useEffect(() => {\r\n if (enableApiSearch && state.isOpen && state.searchInput === '' && state.searchTerm === '') {\r\n if (lastSearchTermRef.current !== '') {\r\n lastSearchTermRef.current = '';\r\n if (onApiSearch) {\r\n onApiSearch('');\r\n }\r\n }\r\n }\r\n }, [state.searchInput, state.searchTerm, enableApiSearch, state.isOpen, onApiSearch]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (debounceTimeoutRef.current) {\r\n clearTimeout(debounceTimeoutRef.current);\r\n }\r\n hasInitialSearchRef.current = false;\r\n lastSearchTermRef.current = '';\r\n };\r\n }, []);\r\n\r\n const setOpen = (open: boolean) => {\r\n dispatch({ type: 'SET_OPEN', payload: open });\r\n onOpenChange?.(open);\r\n\r\n if (!open) {\r\n dispatch({ type: 'VALIDATE', payload: { required } });\r\n }\r\n };\r\n\r\n const setSelectedValues = (values: string[]) => {\r\n dispatch({ type: 'SET_SELECTED_VALUES', payload: values });\r\n };\r\n\r\n const setSearchInput = (input: string) => {\r\n dispatch({ type: 'SET_SEARCH_INPUT', payload: input });\r\n };\r\n\r\n const setSearchTerm = (term: string) => {\r\n dispatch({ type: 'SET_SEARCH_TERM', payload: term });\r\n };\r\n\r\n const setTouched = (touched: boolean) => {\r\n dispatch({ type: 'SET_TOUCHED', payload: touched });\r\n };\r\n\r\n const setError = (error: boolean) => {\r\n dispatch({ type: 'SET_ERROR', payload: error });\r\n };\r\n\r\n const resetSearch = () => {\r\n dispatch({ type: 'RESET_SEARCH' });\r\n lastSearchTermRef.current = '';\r\n };\r\n\r\n const validate = () => {\r\n dispatch({ type: 'VALIDATE', payload: { required } });\r\n };\r\n\r\n const handleSingleSelect = (newValue: string) => {\r\n const newValues = [newValue];\r\n setSelectedValues(newValues);\r\n onValueChange?.(newValue);\r\n setOpen(false);\r\n\r\n if (required && state.hasError) {\r\n setError(false);\r\n }\r\n };\r\n\r\n const handleMultipleSelect = (itemValue: string, checked: boolean) => {\r\n let newSelectedValues: string[];\r\n\r\n if (checked) {\r\n newSelectedValues = [...state.selectedValues, itemValue];\r\n } else {\r\n newSelectedValues = state.selectedValues.filter((val) => val !== itemValue);\r\n }\r\n\r\n setSelectedValues(newSelectedValues);\r\n onValueChange?.(newSelectedValues);\r\n\r\n if (required && state.hasError && newSelectedValues.length > 0) {\r\n setError(false);\r\n }\r\n };\r\n\r\n const getDisplayText = (\r\n selectedValues: string[],\r\n placeholder: string,\r\n variant: string,\r\n items: SelectItemProps[]\r\n ): string => {\r\n if (selectedValues.length === 0) return placeholder;\r\n\r\n if (variant === 'checkbox') {\r\n const selectedItems = selectedValues\r\n .map((value) => {\r\n const item = items.find((item) => item.value === value);\r\n return (item?.text as string) || value;\r\n });\r\n\r\n if (selectedItems.length > 3) {\r\n const firstThree = selectedItems.slice(0, 3).join(', ');\r\n const remaining = selectedItems.length - 3;\r\n return `${firstThree} e mais ${remaining}`;\r\n }\r\n\r\n return selectedItems.join(', ');\r\n }\r\n\r\n return (\r\n (items.find((item) => item.value === selectedValues[0])?.text as string) ||\r\n selectedValues[0]\r\n );\r\n };\r\n\r\n const getFilteredItems = (\r\n items: SelectItemProps[],\r\n searchTerm: string\r\n ): SelectItemProps[] => {\r\n if (enableApiSearch) {\r\n return items;\r\n }\r\n\r\n if (!searchTerm) return items;\r\n\r\n const lowercasedSearchTerm = searchTerm.toLowerCase();\r\n return items.filter((item) => {\r\n const normalizedText = normalizeText(item.text);\r\n const normalizedSubTitle = item.subTitle\r\n ? normalizeText(item.subTitle)\r\n : '';\r\n const normalizedValue = normalizeText(item.value);\r\n\r\n return (\r\n normalizedText.includes(lowercasedSearchTerm) ||\r\n normalizedSubTitle.includes(lowercasedSearchTerm) ||\r\n normalizedValue.includes(lowercasedSearchTerm)\r\n );\r\n });\r\n };\r\n\r\n return {\r\n state,\r\n actions: {\r\n setOpen,\r\n setSelectedValues,\r\n setSearchInput,\r\n setSearchTerm,\r\n setTouched,\r\n setError,\r\n resetSearch,\r\n validate,\r\n handleSingleSelect,\r\n handleMultipleSelect,\r\n },\r\n computed: {\r\n displayText: '',\r\n filteredItems: [],\r\n },\r\n refs: {\r\n searchInputRef,\r\n },\r\n utils: {\r\n getDisplayText,\r\n getFilteredItems,\r\n },\r\n };\r\n}\r\n\r\nexport default useSelectLogic;","import { ChevronUp16Regular, ChevronDown16Regular } from '@fluentui/react-icons';\r\nimport clsx from 'clsx';\r\nimport { Select as SelectRadix } from 'radix-ui';\r\nimport React, { useMemo, useId, useRef, useEffect } from 'react';\r\n\r\nimport CheckboxSelectItem from './components/CheckboxSelectItem';\r\nimport ExpandableSelectItem from './components/ExpandableSelectItem';\r\nimport SelectItem from './components/SelectItem';\r\nimport { useSelectLogic } from './hooks/useSelectLogic';\r\nimport styles from './index.module.scss';\r\nimport { SelectProps } from './Select.types';\r\nimport LabelComponent from '../../shared/Label';\r\nimport Search from '../Search/Search';\r\n\r\nconst Select: React.FC<SelectProps> = ({\r\n items,\r\n onValueChange,\r\n onOpenChange,\r\n variant,\r\n required = false,\r\n value,\r\n \r\n label,\r\n helperText,\r\n placeholder = 'Selecione',\r\n maxWidth,\r\n search = false,\r\n errorMessage,\r\n disabled = false,\r\n className,\r\n 'aria-label': ariaLabel,\r\n 'data-testid': testId,\r\n tooltip = false,\r\n tooltipText,\r\n side = 'bottom',\r\n\talign = 'start',\r\n enableInfiniteScroll = false,\r\n onScrollEnd,\r\n isLoadingMore = false,\r\n enableApiSearch = false,\r\n onApiSearch,\r\n isSearching = false,\r\n ...restProps\r\n}) => {\r\n const componentId = useId();\r\n const selectId = `select-${componentId}`;\r\n const viewportRef = useRef<HTMLDivElement>(null);\r\n const hasReachedEndRef = useRef<boolean>(false);\r\n\r\n const {\r\n state,\r\n actions,\r\n refs,\r\n utils,\r\n } = useSelectLogic({\r\n value,\r\n required,\r\n search,\r\n onValueChange,\r\n onOpenChange,\r\n enableApiSearch,\r\n onApiSearch,\r\n isSearching,\r\n });\r\n\r\n useEffect(() => {\r\n const viewport = viewportRef.current;\r\n if (!viewport || !enableInfiniteScroll) return;\r\n\r\n const handleScroll = () => {\r\n const { scrollTop, scrollHeight, clientHeight } = viewport;\r\n const isAtBottom = scrollTop + clientHeight >= scrollHeight - 1;\r\n\r\n if (isAtBottom && !hasReachedEndRef.current && onScrollEnd && !isLoadingMore) {\r\n hasReachedEndRef.current = true;\r\n onScrollEnd();\r\n } else if (!isAtBottom && hasReachedEndRef.current) {\r\n hasReachedEndRef.current = false;\r\n }\r\n };\r\n\r\n viewport.addEventListener('scroll', handleScroll);\r\n\r\n return () => {\r\n viewport.removeEventListener('scroll', handleScroll);\r\n };\r\n }, [state.isOpen, enableInfiniteScroll, onScrollEnd, isLoadingMore]);\r\n\r\n useEffect(() => {\r\n if (state.isOpen && enableInfiniteScroll) {\r\n hasReachedEndRef.current = false;\r\n }\r\n }, [state.isOpen, enableInfiniteScroll]);\r\n\r\n const displayText = useMemo(\r\n () => utils.getDisplayText(state.selectedValues, placeholder, variant, items),\r\n [state.selectedValues, placeholder, variant, items, utils]\r\n );\r\n\r\n const filteredItems = useMemo(() => {\r\n const termToFilter = enableApiSearch ? state.searchTerm : state.searchInput;\r\n return utils.getFilteredItems(items, termToFilter);\r\n }, [items, state.searchTerm, state.searchInput, enableApiSearch, utils]);\r\n\r\n const containerStyle = useMemo(() => ({\r\n maxWidth: maxWidth ? `${maxWidth}px` : undefined,\r\n }), [maxWidth]);\r\n\r\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n actions.setSearchInput(e.target.value);\r\n };\r\n\r\n const handleSearchKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\r\n const input = e.currentTarget;\r\n const hasSelection = input.selectionStart !== input.selectionEnd;\r\n \r\n if (!hasSelection) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n actions.setSearchTerm(state.searchInput);\r\n }\r\n if (e.key === 'Escape') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n actions.resetSearch();\r\n }\r\n };\r\n\r\n const handleClear = () => {\r\n actions.resetSearch();\r\n if (enableApiSearch && onApiSearch) {\r\n onApiSearch('');\r\n }\r\n };\r\n\r\n return (\r\n <SelectRadix.Root\r\n value={variant === 'checkbox' ? '' : (state.selectedValues[0] || '')}\r\n onValueChange={variant === 'checkbox' ? undefined : actions.handleSingleSelect}\r\n required={required}\r\n open={state.isOpen}\r\n onOpenChange={actions.setOpen}\r\n disabled={disabled}\r\n {...restProps}\r\n >\r\n <div\r\n className={clsx(styles.container, className)}\r\n style={containerStyle}\r\n data-testid={testId}\r\n >\r\n <div className={styles.fieldContainer}>\r\n <div className={styles.containerLabel}>\r\n <LabelComponent\r\n htmlFor={selectId}\r\n required={required}\r\n tooltipText={tooltipText}\r\n tooltip={tooltip}\r\n side={side}\r\n align={align}\r\n error={state.hasError && state.touched}\r\n disabled={disabled}\r\n >\r\n {label}\r\n </LabelComponent>\r\n \r\n <SelectRadix.Trigger\r\n className={clsx(styles.trigger, {\r\n [styles.error]: state.hasError && state.touched,\r\n [styles.disabled]: disabled,\r\n [styles.hasValue]: state.selectedValues.length > 0,\r\n [styles.open]: state.isOpen,\r\n })}\r\n id={selectId}\r\n aria-label={ariaLabel}\r\n data-testid={`${testId}-trigger`}\r\n >\r\n {variant === 'checkbox' ? (\r\n <span className={styles.triggerText}>{displayText}</span>\r\n ) : (\r\n <SelectRadix.Value placeholder={placeholder} className={styles.placeholder}>{displayText}</SelectRadix.Value>\r\n )}\r\n {state.isOpen ? <ChevronUp16Regular /> : <ChevronDown16Regular />}\r\n </SelectRadix.Trigger>\r\n\r\n {!state.isOpen && helperText && !state.hasError && (\r\n <span className={clsx(\r\n styles.helper,\r\n {\r\n [styles.disabled]: disabled\r\n } \r\n )}>{helperText}</span>\r\n )}\r\n \r\n {state.hasError && state.touched && (\r\n <span className={styles.errorMessage}>\r\n {errorMessage || 'Campo obrigatório'}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <SelectRadix.Portal>\r\n <SelectRadix.Content\r\n className={styles.content}\r\n position=\"popper\"\r\n side=\"bottom\"\r\n sideOffset={8}\r\n align=\"start\"\r\n avoidCollisions={true}\r\n >\r\n {search && (\r\n <div className={styles.searchWrapper}>\r\n <Search\r\n ref={refs.searchInputRef}\r\n className={styles.search}\r\n placeholder=\"Buscar\"\r\n value={state.searchInput}\r\n onChange={handleSearchChange}\r\n onKeyDown={handleSearchKeyDown}\r\n onClear={handleClear}\r\n data-testid={`${testId}-search`}\r\n />\r\n </div>\r\n )}\r\n \r\n <SelectRadix.Viewport ref={viewportRef} className={styles.viewport}>\r\n <SelectRadix.Group className={styles.group}>\r\n {filteredItems.length === 0 ? (\r\n <div className={styles.noResults}>\r\n Nenhum resultado encontrado\r\n </div>\r\n ) : (\r\n <>\r\n {filteredItems.map((item) => {\r\n const hasChildren = item.children && item.children.length > 0;\r\n \r\n if (hasChildren) {\r\n return (\r\n <ExpandableSelectItem\r\n key={item.id || item.value}\r\n item={item}\r\n variant={variant}\r\n selectedValues={state.selectedValues}\r\n onSelect={(value) => {\r\n if (variant === 'checkbox') {\r\n const isSelected = state.selectedValues.includes(value);\r\n actions.handleMultipleSelect(value, !isSelected);\r\n } else {\r\n actions.handleSingleSelect(value);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n \r\n return variant === 'checkbox' ? (\r\n <CheckboxSelectItem\r\n key={item.id || item.value}\r\n {...item}\r\n checked={state.selectedValues.includes(item.value)}\r\n onCheckedChange={(checked: boolean) =>\r\n actions.handleMultipleSelect(item.value, checked)\r\n }\r\n />\r\n ) : (\r\n <SelectItem\r\n key={item.id || item.value}\r\n {...item}\r\n variant={variant}\r\n />\r\n );\r\n })}\r\n {enableInfiniteScroll && isLoadingMore && (\r\n <div className={styles.loadingMore}>\r\n Carregando mais itens...\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </SelectRadix.Group>\r\n </SelectRadix.Viewport>\r\n </SelectRadix.Content>\r\n </SelectRadix.Portal>\r\n </div>\r\n </SelectRadix.Root>\r\n );\r\n};\r\n\r\nSelect.displayName = 'Select';\r\n\r\nexport default Select;","/**\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","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","/**\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 { 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","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","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"menos de um segundo\",\n other: \"menos de {{count}} segundos\",\n },\n\n xSeconds: {\n one: \"1 segundo\",\n other: \"{{count}} segundos\",\n },\n\n halfAMinute: \"meio minuto\",\n\n lessThanXMinutes: {\n one: \"menos de um minuto\",\n other: \"menos de {{count}} minutos\",\n },\n\n xMinutes: {\n one: \"1 minuto\",\n other: \"{{count}} minutos\",\n },\n\n aboutXHours: {\n one: \"cerca de 1 hora\",\n other: \"cerca de {{count}} horas\",\n },\n\n xHours: {\n one: \"1 hora\",\n other: \"{{count}} horas\",\n },\n\n xDays: {\n one: \"1 dia\",\n other: \"{{count}} dias\",\n },\n\n aboutXWeeks: {\n one: \"cerca de 1 semana\",\n other: \"cerca de {{count}} semanas\",\n },\n\n xWeeks: {\n one: \"1 semana\",\n other: \"{{count}} semanas\",\n },\n\n aboutXMonths: {\n one: \"cerca de 1 mês\",\n other: \"cerca de {{count}} meses\",\n },\n\n xMonths: {\n one: \"1 mês\",\n other: \"{{count}} meses\",\n },\n\n aboutXYears: {\n one: \"cerca de 1 ano\",\n other: \"cerca de {{count}} anos\",\n },\n\n xYears: {\n one: \"1 ano\",\n other: \"{{count}} anos\",\n },\n\n overXYears: {\n one: \"mais de 1 ano\",\n other: \"mais de {{count}} anos\",\n },\n\n almostXYears: {\n one: \"quase 1 ano\",\n other: \"quase {{count}} anos\",\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}}\", String(count));\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"em \" + result;\n } else {\n return \"há \" + result;\n }\n }\n\n return result;\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, d 'de' MMMM 'de' y\",\n long: \"d 'de' MMMM 'de' y\",\n medium: \"d MMM y\",\n short: \"dd/MM/yyyy\",\n};\n\nconst timeFormats = {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'às' {{time}}\",\n long: \"{{date}} 'às' {{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: (date) => {\n const weekday = date.getDay();\n const last = weekday === 0 || weekday === 6 ? \"último\" : \"última\";\n return \"'\" + last + \"' eeee 'às' p\";\n },\n yesterday: \"'ontem às' p\",\n today: \"'hoje às' p\",\n tomorrow: \"'amanhã às' p\",\n nextWeek: \"eeee 'às' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, date, _baseDate, _options) => {\n const format = formatRelativeLocale[token];\n\n if (typeof format === \"function\") {\n return format(date);\n }\n\n return format;\n};\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"AC\", \"DC\"],\n abbreviated: [\"AC\", \"DC\"],\n wide: [\"antes de cristo\", \"depois de cristo\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"T1\", \"T2\", \"T3\", \"T4\"],\n wide: [\"1º trimestre\", \"2º trimestre\", \"3º trimestre\", \"4º trimestre\"],\n};\n\nconst monthValues = {\n narrow: [\"j\", \"f\", \"m\", \"a\", \"m\", \"j\", \"j\", \"a\", \"s\", \"o\", \"n\", \"d\"],\n abbreviated: [\n \"jan\",\n \"fev\",\n \"mar\",\n \"abr\",\n \"mai\",\n \"jun\",\n \"jul\",\n \"ago\",\n \"set\",\n \"out\",\n \"nov\",\n \"dez\",\n ],\n\n wide: [\n \"janeiro\",\n \"fevereiro\",\n \"março\",\n \"abril\",\n \"maio\",\n \"junho\",\n \"julho\",\n \"agosto\",\n \"setembro\",\n \"outubro\",\n \"novembro\",\n \"dezembro\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"D\", \"S\", \"T\", \"Q\", \"Q\", \"S\", \"S\"],\n short: [\"dom\", \"seg\", \"ter\", \"qua\", \"qui\", \"sex\", \"sab\"],\n abbreviated: [\n \"domingo\",\n \"segunda\",\n \"terça\",\n \"quarta\",\n \"quinta\",\n \"sexta\",\n \"sábado\",\n ],\n\n wide: [\n \"domingo\",\n \"segunda-feira\",\n \"terça-feira\",\n \"quarta-feira\",\n \"quinta-feira\",\n \"sexta-feira\",\n \"sábado\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mn\",\n noon: \"md\",\n morning: \"manhã\",\n afternoon: \"tarde\",\n evening: \"tarde\",\n night: \"noite\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"manhã\",\n afternoon: \"tarde\",\n evening: \"tarde\",\n night: \"noite\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"manhã\",\n afternoon: \"tarde\",\n evening: \"tarde\",\n night: \"noite\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mn\",\n noon: \"md\",\n morning: \"da manhã\",\n afternoon: \"da tarde\",\n evening: \"da tarde\",\n night: \"da noite\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"da manhã\",\n afternoon: \"da tarde\",\n evening: \"da tarde\",\n night: \"da noite\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"da manhã\",\n afternoon: \"da tarde\",\n evening: \"da tarde\",\n night: \"da noite\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, options) => {\n const number = Number(dirtyNumber);\n\n if (options?.unit === \"week\") {\n return number + \"ª\";\n }\n return number + \"º\";\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","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)[ºªo]?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(ac|dc|a|d)/i,\n abbreviated: /^(a\\.?\\s?c\\.?|d\\.?\\s?c\\.?)/i,\n wide: /^(antes de cristo|depois de cristo)/i,\n};\nconst parseEraPatterns = {\n any: [/^ac/i, /^dc/i],\n wide: [/^antes de cristo/i, /^depois de cristo/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^T[1234]/i,\n wide: /^[1234](º)? trimestre/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmajsond]/i,\n abbreviated: /^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,\n wide: /^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/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 /^fev/i,\n /^mar/i,\n /^abr/i,\n /^mai/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^set/i,\n /^out/i,\n /^nov/i,\n /^dez/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^(dom|[23456]ª?|s[aá]b)/i,\n short: /^(dom|[23456]ª?|s[aá]b)/i,\n abbreviated: /^(dom|seg|ter|qua|qui|sex|s[aá]b)/i,\n wide: /^(domingo|(segunda|ter[cç]a|quarta|quinta|sexta)([- ]feira)?|s[aá]bado)/i,\n};\nconst parseDayPatterns = {\n short: [/^d/i, /^2/i, /^3/i, /^4/i, /^5/i, /^6/i, /^s[aá]/i],\n narrow: [/^d/i, /^2/i, /^3/i, /^4/i, /^5/i, /^6/i, /^s[aá]/i],\n any: [/^d/i, /^seg/i, /^t/i, /^qua/i, /^qui/i, /^sex/i, /^s[aá]b/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mn|md|(da) (manhã|tarde|noite))/i,\n any: /^([ap]\\.?\\s?m\\.?|meia[-\\s]noite|meio[-\\s]dia|(da) (manhã|tarde|noite))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mn|^meia[-\\s]noite/i,\n noon: /^md|^meio[-\\s]dia/i,\n morning: /manhã/i,\n afternoon: /tarde/i,\n evening: /tarde/i,\n night: /noite/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 \"./pt-BR/_lib/formatDistance.js\";\nimport { formatLong } from \"./pt-BR/_lib/formatLong.js\";\nimport { formatRelative } from \"./pt-BR/_lib/formatRelative.js\";\nimport { localize } from \"./pt-BR/_lib/localize.js\";\nimport { match } from \"./pt-BR/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary Portuguese locale (Brazil).\n * @language Portuguese\n * @iso-639-2 por\n * @author Lucas Duailibe [@duailibe](https://github.com/duailibe)\n * @author Yago Carballo [@yagocarballo](https://github.com/YagoCarballo)\n */\nexport const ptBR = {\n code: \"pt-BR\",\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 ptBR;\n","import { createElement, isValidElement } from 'react';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nvar uid = (function () {\n return Math.random()\n .toString(36)\n .substring(6);\n});\n\nvar SVG = function (_a) {\n var _b = _a.animate, animate = _b === void 0 ? true : _b, _c = _a.backgroundColor, backgroundColor = _c === void 0 ? '#f5f6f7' : _c, _d = _a.backgroundOpacity, backgroundOpacity = _d === void 0 ? 1 : _d, _e = _a.baseUrl, baseUrl = _e === void 0 ? '' : _e, children = _a.children, _f = _a.foregroundColor, foregroundColor = _f === void 0 ? '#eee' : _f, _g = _a.foregroundOpacity, foregroundOpacity = _g === void 0 ? 1 : _g, _h = _a.gradientRatio, gradientRatio = _h === void 0 ? 2 : _h, uniqueKey = _a.uniqueKey, _j = _a.rtl, rtl = _j === void 0 ? false : _j, _k = _a.speed, speed = _k === void 0 ? 1.2 : _k, _l = _a.style, style = _l === void 0 ? {} : _l, _m = _a.title, title = _m === void 0 ? 'Loading...' : _m, _o = _a.beforeMask, beforeMask = _o === void 0 ? null : _o, props = __rest(_a, [\"animate\", \"backgroundColor\", \"backgroundOpacity\", \"baseUrl\", \"children\", \"foregroundColor\", \"foregroundOpacity\", \"gradientRatio\", \"uniqueKey\", \"rtl\", \"speed\", \"style\", \"title\", \"beforeMask\"]);\n var fixedId = uniqueKey || uid();\n var idClip = \"\".concat(fixedId, \"-diff\");\n var idGradient = \"\".concat(fixedId, \"-animated-diff\");\n var idAria = \"\".concat(fixedId, \"-aria\");\n var rtlStyle = rtl ? { transform: 'scaleX(-1)' } : null;\n var dur = \"\".concat(speed, \"s\");\n var from = \"\".concat(gradientRatio * -1, \" 0\");\n var to = \"\".concat(gradientRatio, \" 0\");\n return (createElement(\"svg\", __assign({ \"aria-labelledby\": idAria, role: \"img\", style: __assign(__assign({}, style), rtlStyle) }, props),\n title ? createElement(\"title\", { id: idAria }, title) : null,\n beforeMask && isValidElement(beforeMask) ? beforeMask : null,\n createElement(\"rect\", { role: \"presentation\", x: \"0\", y: \"0\", width: \"100%\", height: \"100%\", clipPath: \"url(\".concat(baseUrl, \"#\").concat(idClip, \")\"), style: { fill: \"url(\".concat(baseUrl, \"#\").concat(idGradient, \")\") } }),\n createElement(\"defs\", null,\n createElement(\"clipPath\", { id: idClip }, children),\n createElement(\"linearGradient\", { id: idGradient, gradientTransform: \"translate(\".concat(from, \")\") },\n createElement(\"stop\", { offset: \"0%\", stopColor: backgroundColor, stopOpacity: backgroundOpacity }),\n createElement(\"stop\", { offset: \"50%\", stopColor: foregroundColor, stopOpacity: foregroundOpacity }),\n createElement(\"stop\", { offset: \"100%\", stopColor: backgroundColor, stopOpacity: backgroundOpacity }),\n animate && (createElement(\"animateTransform\", { attributeName: \"gradientTransform\", type: \"translate\", values: \"\".concat(from, \"; 0 0; \").concat(to), dur: dur, repeatCount: \"indefinite\" }))))));\n};\n\nvar ContentLoader = function (props) {\n return props.children ? createElement(SVG, __assign({}, props)) : createElement(ReactContentLoaderFacebook, __assign({}, props));\n};\n\nvar ReactContentLoaderFacebook = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 476 124\" }, props),\n createElement(\"rect\", { x: \"48\", y: \"8\", width: \"88\", height: \"6\", rx: \"3\" }),\n createElement(\"rect\", { x: \"48\", y: \"26\", width: \"52\", height: \"6\", rx: \"3\" }),\n createElement(\"rect\", { x: \"0\", y: \"56\", width: \"410\", height: \"6\", rx: \"3\" }),\n createElement(\"rect\", { x: \"0\", y: \"72\", width: \"380\", height: \"6\", rx: \"3\" }),\n createElement(\"rect\", { x: \"0\", y: \"88\", width: \"178\", height: \"6\", rx: \"3\" }),\n createElement(\"circle\", { cx: \"20\", cy: \"20\", r: \"20\" }))); };\n\nvar ReactContentLoaderInstagram = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 400 460\" }, props),\n createElement(\"circle\", { cx: \"31\", cy: \"31\", r: \"15\" }),\n createElement(\"rect\", { x: \"58\", y: \"18\", rx: \"2\", ry: \"2\", width: \"140\", height: \"10\" }),\n createElement(\"rect\", { x: \"58\", y: \"34\", rx: \"2\", ry: \"2\", width: \"140\", height: \"10\" }),\n createElement(\"rect\", { x: \"0\", y: \"60\", rx: \"2\", ry: \"2\", width: \"400\", height: \"400\" }))); };\n\nvar ReactContentLoaderCode = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 340 84\" }, props),\n createElement(\"rect\", { x: \"0\", y: \"0\", width: \"67\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"76\", y: \"0\", width: \"140\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"127\", y: \"48\", width: \"53\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"187\", y: \"48\", width: \"72\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"18\", y: \"48\", width: \"100\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"0\", y: \"71\", width: \"37\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"18\", y: \"23\", width: \"140\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"166\", y: \"23\", width: \"173\", height: \"11\", rx: \"3\" }))); };\n\nvar ReactContentLoaderListStyle = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 400 110\" }, props),\n createElement(\"rect\", { x: \"0\", y: \"0\", rx: \"3\", ry: \"3\", width: \"250\", height: \"10\" }),\n createElement(\"rect\", { x: \"20\", y: \"20\", rx: \"3\", ry: \"3\", width: \"220\", height: \"10\" }),\n createElement(\"rect\", { x: \"20\", y: \"40\", rx: \"3\", ry: \"3\", width: \"170\", height: \"10\" }),\n createElement(\"rect\", { x: \"0\", y: \"60\", rx: \"3\", ry: \"3\", width: \"250\", height: \"10\" }),\n createElement(\"rect\", { x: \"20\", y: \"80\", rx: \"3\", ry: \"3\", width: \"200\", height: \"10\" }),\n createElement(\"rect\", { x: \"20\", y: \"100\", rx: \"3\", ry: \"3\", width: \"80\", height: \"10\" }))); };\n\nvar ReactContentLoaderBulletList = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 245 125\" }, props),\n createElement(\"circle\", { cx: \"10\", cy: \"20\", r: \"8\" }),\n createElement(\"rect\", { x: \"25\", y: \"15\", rx: \"5\", ry: \"5\", width: \"220\", height: \"10\" }),\n createElement(\"circle\", { cx: \"10\", cy: \"50\", r: \"8\" }),\n createElement(\"rect\", { x: \"25\", y: \"45\", rx: \"5\", ry: \"5\", width: \"220\", height: \"10\" }),\n createElement(\"circle\", { cx: \"10\", cy: \"80\", r: \"8\" }),\n createElement(\"rect\", { x: \"25\", y: \"75\", rx: \"5\", ry: \"5\", width: \"220\", height: \"10\" }),\n createElement(\"circle\", { cx: \"10\", cy: \"110\", r: \"8\" }),\n createElement(\"rect\", { x: \"25\", y: \"105\", rx: \"5\", ry: \"5\", width: \"220\", height: \"10\" }))); };\n\nexport default ContentLoader;\nexport { ReactContentLoaderBulletList as BulletList, ReactContentLoaderCode as Code, ReactContentLoaderFacebook as Facebook, ReactContentLoaderInstagram as Instagram, ReactContentLoaderListStyle as List };\n//# sourceMappingURL=react-content-loader.es.js.map\n","import React from 'react';\r\nimport ContentLoader, { IContentLoaderProps } from 'react-content-loader';\r\n\r\n/**\r\n * Componente de loading para lista de tabela\r\n * Simula o carregamento de dados em formato de tabela usando ContentLoader\r\n * @param props - Propriedades adicionais para o ContentLoader\r\n * @returns Elemento de loading animado\r\n */\r\nconst LoaderList: React.FC<IContentLoaderProps> = (props) => (\r\n <ContentLoader\r\n speed={1}\r\n width=\"100%\"\r\n viewBox=\"0 0 1272 652\"\r\n backgroundColor=\"#F5F5F7\"\r\n foregroundColor=\"#FFFFFF\"\r\n {...props}\r\n >\r\n {/* Cabeçalho da tabela */}\r\n <rect x=\"0\" y=\"0\" rx=\"8\" ry=\"8\" width=\"1272\" height=\"44\" />\r\n\r\n {/* Primeira linha */}\r\n <rect x=\"0\" y=\"76\" rx=\"12\" ry=\"12\" width=\"402\" height=\"24\" />\r\n <rect x=\"0\" y=\"116\" rx=\"8\" ry=\"8\" width=\"280\" height=\"16\" />\r\n <rect x=\"426\" y=\"76\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"426\" y=\"116\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"694\" y=\"76\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"694\" y=\"116\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"962\" y=\"76\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"962\" y=\"116\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n <rect x=\"1129\" y=\"76\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"1129\" y=\"116\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n\r\n {/* Segunda linha */}\r\n <rect x=\"0\" y=\"164\" rx=\"12\" ry=\"12\" width=\"402\" height=\"24\" />\r\n <rect x=\"0\" y=\"204\" rx=\"8\" ry=\"8\" width=\"280\" height=\"16\" />\r\n <rect x=\"426\" y=\"164\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"426\" y=\"204\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"694\" y=\"164\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"694\" y=\"204\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"962\" y=\"164\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"962\" y=\"204\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n <rect x=\"1129\" y=\"164\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"1129\" y=\"204\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n\r\n {/* Terceira linha */}\r\n <rect x=\"0\" y=\"252\" rx=\"12\" ry=\"12\" width=\"402\" height=\"24\" />\r\n <rect x=\"0\" y=\"292\" rx=\"8\" ry=\"8\" width=\"280\" height=\"16\" />\r\n <rect x=\"426\" y=\"252\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"426\" y=\"292\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"694\" y=\"252\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"694\" y=\"292\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"962\" y=\"252\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"962\" y=\"292\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n <rect x=\"1129\" y=\"252\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"1129\" y=\"292\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n\r\n {/* Quarta linha */}\r\n <rect x=\"0\" y=\"340\" rx=\"12\" ry=\"12\" width=\"402\" height=\"24\" />\r\n <rect x=\"0\" y=\"380\" rx=\"8\" ry=\"8\" width=\"280\" height=\"16\" />\r\n <rect x=\"426\" y=\"340\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"426\" y=\"380\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"694\" y=\"340\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"694\" y=\"380\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"962\" y=\"340\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"962\" y=\"380\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n <rect x=\"1129\" y=\"340\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"1129\" y=\"380\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n\r\n {/* Quinta linha */}\r\n <rect x=\"0\" y=\"428\" rx=\"12\" ry=\"12\" width=\"402\" height=\"24\" />\r\n <rect x=\"0\" y=\"468\" rx=\"8\" ry=\"8\" width=\"280\" height=\"16\" />\r\n <rect x=\"426\" y=\"428\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"426\" y=\"468\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"694\" y=\"428\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"694\" y=\"468\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"962\" y=\"428\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"962\" y=\"468\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n <rect x=\"1129\" y=\"428\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"1129\" y=\"468\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n\r\n {/* Sexta linha */}\r\n <rect x=\"0\" y=\"516\" rx=\"12\" ry=\"12\" width=\"402\" height=\"24\" />\r\n <rect x=\"0\" y=\"556\" rx=\"8\" ry=\"8\" width=\"280\" height=\"16\" />\r\n <rect x=\"426\" y=\"516\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"426\" y=\"556\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"694\" y=\"516\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"694\" y=\"556\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"962\" y=\"516\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"962\" y=\"556\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n <rect x=\"1129\" y=\"516\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"1129\" y=\"556\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n\r\n {/* Rodapé da tabela */}\r\n <rect x=\"0\" y=\"604\" rx=\"8\" ry=\"8\" width=\"1272\" height=\"48\" />\r\n </ContentLoader>\r\n)\r\nexport default LoaderList;","import React from 'react';\r\n\r\n/**\r\n * Componente de ícone SVG para estado vazio da tabela\r\n * Exibe um ícone de lupa com design personalizado do Zanthus Design System\r\n * @returns Elemento SVG para estado vazio\r\n */\r\nconst EmptyRows150Color: React.FC = () => (\r\n <svg width='150' height='150' viewBox='0 0 150 150' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n <circle cx='75' cy='75' r='75' fill='#E8E8EE' />\r\n <path\r\n d='M67.6111 63.3889C69.36 63.3889 70.7778 64.8067 70.7778 66.5556V81.3333C70.7778 83.0822 69.36 84.5 67.6111 84.5C65.8622 84.5 64.4444 83.0822 64.4444 81.3333V66.5556C64.4444 64.8067 65.8622 63.3889 67.6111 63.3889ZM67.6111 59.1667C69.943 59.1667 71.8333 57.2763 71.8333 54.9444C71.8333 52.6126 69.943 50.7222 67.6111 50.7222C65.2792 50.7222 63.3889 52.6126 63.3889 54.9444C63.3889 57.2763 65.2792 59.1667 67.6111 59.1667ZM67.6111 37C84.5172 37 98.2222 50.7051 98.2222 67.6111C98.2222 74.9235 95.6583 81.637 91.3803 86.9017L112.073 107.594C113.309 108.831 113.309 110.836 112.073 112.073C110.948 113.197 109.189 113.299 107.949 112.379L107.594 112.073L86.9017 91.3803C81.637 95.6583 74.9235 98.2222 67.6111 98.2222C50.7051 98.2222 37 84.5172 37 67.6111C37 50.7051 50.7051 37 67.6111 37ZM67.6111 43.3333C54.2029 43.3333 43.3333 54.2029 43.3333 67.6111C43.3333 81.0194 54.2029 91.8889 67.6111 91.8889C81.0194 91.8889 91.8889 81.0194 91.8889 67.6111C91.8889 54.2029 81.0194 43.3333 67.6111 43.3333Z'\r\n fill='#3B45F2'\r\n />\r\n </svg>\r\n);\r\n\r\nexport default EmptyRows150Color;","import styles from './Table.module.scss';\r\nimport React, { useState, useMemo, useCallback, ReactNode, CSSProperties } from 'react';\r\nimport clsx from 'clsx';\r\nimport { format } from 'date-fns';\r\nimport { ptBR } from 'date-fns/locale';\r\nimport Checkbox from '../Checkbox';\r\nimport LoaderList from './LoaderList';\r\nimport EmptyRows150Color from './EmptyRows150Color';\r\nimport type { TableColumn, TableRowData, TableProps } from './Table.types';\r\n\r\nconst useSelection = <T extends TableRowData = TableRowData>(\r\n dataSource: T[],\r\n rowSelection?: TableProps<T>['rowSelection']\r\n) => {\r\n const [internalKeys, setInternalKeys] = useState<(string | number)[]>([]);\r\n const selectedKeys = rowSelection?.selectedRowKeys ?? internalKeys;\r\n const selectedSet = useMemo(() => new Set(selectedKeys), [selectedKeys]);\r\n\r\n const handleChange = useCallback((newKeys: (string | number)[]) => {\r\n const newRows = dataSource.filter((_, index) => newKeys.includes(index)) as T[];\r\n\r\n if (rowSelection?.selectedRowKeys !== undefined) {\r\n // Controlled\r\n rowSelection.onChange?.(newKeys, newRows);\r\n } else {\r\n // Uncontrolled\r\n setInternalKeys(newKeys);\r\n rowSelection?.onChange?.(newKeys, newRows);\r\n }\r\n }, [dataSource, rowSelection]);\r\n\r\n const toggleRow = useCallback((key: string | number) => {\r\n const newKeys = selectedSet.has(key)\r\n ? selectedKeys.filter(k => k !== key)\r\n : [...selectedKeys, key];\r\n handleChange(newKeys);\r\n }, [selectedKeys, selectedSet, handleChange]);\r\n\r\n const toggleAll = useCallback(() => {\r\n const allKeys = dataSource.map((_, index) => index);\r\n const newKeys = selectedKeys.length === dataSource.length ? [] : allKeys;\r\n handleChange(newKeys);\r\n }, [dataSource, selectedKeys.length, handleChange]);\r\n\r\n const isAllSelected = selectedKeys.length === dataSource.length && dataSource.length > 0;\r\n const isIndeterminate = selectedKeys.length > 0 && selectedKeys.length < dataSource.length;\r\n\r\n return {\r\n selectedSet,\r\n selectedKeys,\r\n toggleRow,\r\n toggleAll,\r\n isAllSelected,\r\n isIndeterminate,\r\n };\r\n};\r\n\r\nconst renderCell = <T extends TableRowData = TableRowData>(column: TableColumn<T>, row: T, index: number): ReactNode => {\r\n if (column.render) {\r\n return column.render(row, index);\r\n }\r\n\r\n const value = row[column.key];\r\n\r\n switch (column.type) {\r\n case 'datetime':\r\n if (!value) return '';\r\n try {\r\n const date = new Date(value);\r\n return format(date, column.format || 'dd/MM/yyyy', { locale: ptBR });\r\n } catch {\r\n return value;\r\n }\r\n default:\r\n return value;\r\n }\r\n};\r\n\r\nconst Table = <T extends TableRowData = TableRowData>({\r\n columns = [],\r\n dataSource = [],\r\n className,\r\n loading = false,\r\n rowSelection,\r\n locale = {},\r\n onRow,\r\n}: TableProps<T>) => {\r\n if (!Array.isArray(columns) || !Array.isArray(dataSource)) {\r\n console.warn('Table: columns e dataSource devem ser arrays');\r\n return null;\r\n }\r\n\r\n const { selectedSet, toggleRow, toggleAll, isAllSelected, isIndeterminate } = useSelection(\r\n dataSource,\r\n rowSelection\r\n );\r\n\r\n const finalColumns = useMemo(() => {\r\n if (!rowSelection) return columns;\r\n\r\n const checkboxColumn: TableColumn<T> = {\r\n key: '__checkbox__',\r\n label: (\r\n <Checkbox\r\n checked={isAllSelected || isIndeterminate}\r\n indeterminate={isIndeterminate}\r\n onCheckedChange={toggleAll}\r\n disabled={rowSelection.disableSelectAll}\r\n />\r\n ),\r\n render: (_, index) => {\r\n const props = rowSelection.getCheckboxProps?.(dataSource[index], index) || {};\r\n return (\r\n <Checkbox\r\n checked={selectedSet.has(index)}\r\n onCheckedChange={() => toggleRow(index)}\r\n disabled={props.disabled}\r\n />\r\n );\r\n },\r\n align: 'center',\r\n };\r\n\r\n return [checkboxColumn, ...columns];\r\n }, [columns, rowSelection, isAllSelected, isIndeterminate, toggleAll, selectedSet, toggleRow, dataSource]);\r\n const tableId = useMemo(() =>\r\n `table-${Math.random().toString(36).substr(2, 9)}`, []\r\n );\r\n if (loading) {\r\n return (\r\n <div className={clsx(styles['zds-table__container'], className)}>\r\n <div className={styles['zds-table__loader']}>\r\n <LoaderList />\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n const emptyText = locale.emptyText || (\r\n <div className={styles['zds-table__empty']}>\r\n <div className={styles['zds-table__empty__content']}>\r\n <EmptyRows150Color />\r\n </div>\r\n <div className={styles['zds-table__empty__text']}>\r\n <h3 className={styles['zds-table__empty__title']}>Nenhum dado encontrado</h3>\r\n <p className={styles['zds-table__empty__caption']}>Nenhum registro encontrado</p>\r\n </div>\r\n </div>\r\n );\r\n\r\n return (\r\n <div className={clsx(styles['zds-table__container'], className)}>\r\n <div className={styles['zds-table__scroll-wrapper']}>\r\n <table \r\n className={styles['zds-table']}\r\n role=\"table\"\r\n aria-label=\"Tabela de dados\"\r\n aria-describedby={loading ? `${tableId}-loading` : undefined}\r\n aria-rowcount={dataSource.length + 1}\r\n >\r\n <thead className={styles['zds-table__head']}>\r\n <tr>\r\n {finalColumns.map((column) => (\r\n <th\r\n key={column.key}\r\n className={clsx(styles['zds-table__th'], column.align && `text-${column.align}`)}\r\n style={column.style}\r\n >\r\n <div className={styles['zds-table__th-content']}>{column.label}</div>\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody className={styles['zds-table__body']}>\r\n {dataSource.length > 0 ? (\r\n dataSource.map((row, index) => {\r\n const rowProps = onRow?.(row, index) || {};\r\n return (\r\n <tr\r\n key={index}\r\n className={clsx(styles['zds-table__row'], rowProps.className)}\r\n onClick={rowProps.onClick}\r\n onDoubleClick={rowProps.onDoubleClick}\r\n >\r\n {finalColumns.map((column) => (\r\n <td\r\n key={column.key}\r\n className={clsx(styles['zds-table__td'], column.align && `text-${column.align}`)}\r\n >\r\n {renderCell(column, row, index)}\r\n </td>\r\n ))}\r\n </tr>\r\n );\r\n })\r\n ) : (\r\n <tr>\r\n <td colSpan={finalColumns.length} className={styles['zds-table__empty-cell']}>\r\n {emptyText}\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Table;","import React, { useState, KeyboardEvent } from 'react';\r\nimport Search from '../Search/Search';\r\nimport Filter from '../Filter/Filter';\r\nimport type { DropdownItem } from '../Dropdown/Dropdown.types';\r\nimport styles from './Table.module.scss';\r\n\r\ninterface BaseFilterItem {\r\n id?: string;\r\n buttonText: string | React.ReactNode;\r\n icon?: React.ReactElement;\r\n position?: 'left' | 'right';\r\n disabled?: boolean;\r\n onToggle?: (isOpen: boolean) => void;\r\n tooltip?: string;\r\n}\r\n\r\ninterface CheckboxFilterItem extends BaseFilterItem {\r\n type: 'checkbox' | 'text' | 'icon';\r\n items: DropdownItem[];\r\n selectedIds?: string[];\r\n onSelectionChange?: (selectedIds: string[]) => void;\r\n placeholder?: string;\r\n enableSearch?: boolean;\r\n}\r\n\r\ninterface CalendarFilterItem extends BaseFilterItem {\r\n type: 'calendar';\r\n selectedDate?: Date | null;\r\n onDateSelect?: (date: Date) => void;\r\n onClear?: () => void;\r\n minDate?: Date;\r\n maxDate?: Date;\r\n locale?: string;\r\n placeholder?: string;\r\n}\r\n\r\nexport type FilterItem = CheckboxFilterItem | CalendarFilterItem;\r\n\r\nconst isCalendarFilter = (filter: FilterItem): filter is CalendarFilterItem => {\r\n return filter.type === 'calendar';\r\n};\r\n\r\nconst isCheckboxFilter = (filter: FilterItem): filter is CheckboxFilterItem => {\r\n return filter.type === 'checkbox' || filter.type === 'text' || filter.type === 'icon';\r\n};\r\n\r\nexport interface TableHeaderProps {\r\n searchValue?: string;\r\n onSearchChange?: (value: string) => void;\r\n searchPlaceholder?: string;\r\n showSearch?: boolean;\r\n showFilters?: boolean;\r\n filters?: React.ReactNode;\r\n filterItems?: FilterItem[];\r\n className?: string;\r\n onSearch?: (value: string) => void;\r\n showClearSearch?: boolean;\r\n}\r\n\r\nconst TableHeader: React.FC<TableHeaderProps> = ({\r\n searchValue = '',\r\n onSearchChange,\r\n onSearch,\r\n searchPlaceholder = 'Pesquisar...',\r\n showSearch = true,\r\n showFilters = false,\r\n filters,\r\n filterItems = [],\r\n className = '',\r\n}) => {\r\n const [internalSearchValue, setInternalSearchValue] = useState(searchValue);\r\n\r\n React.useEffect(() => {\r\n setInternalSearchValue(searchValue);\r\n }, [searchValue]);\r\n\r\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const value = e.target.value;\r\n setInternalSearchValue(value);\r\n \r\n if (value === '' && onSearchChange) {\r\n onSearchChange('');\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n if (onSearch) {\r\n onSearch(internalSearchValue);\r\n } else if (onSearchChange) {\r\n onSearchChange(internalSearchValue);\r\n }\r\n }\r\n };\r\n\r\n const hasFilters = filters || (filterItems && filterItems.length > 0);\r\n\r\n return (\r\n <div className={`${styles['zds-table-header']} ${className}`.trim()}>\r\n {showSearch && (onSearchChange || onSearch) && (\r\n <div className={styles['zds-table-header__search-container']}>\r\n <Search\r\n value={internalSearchValue}\r\n onChange={handleInputChange}\r\n onKeyDown={handleKeyDown}\r\n placeholder={searchPlaceholder}\r\n className={styles['zds-table-header__search']}\r\n />\r\n </div>\r\n )}\r\n \r\n {showFilters && (\r\n <div className={styles['zds-table-header__filters']}>\r\n {hasFilters ? (\r\n <div className={styles['zds-table-header__filters-content']}>\r\n {filters && (\r\n <div className={styles['zds-table-header__custom-filters']}>\r\n {filters}\r\n </div>\r\n )}\r\n\r\n <div className={styles['zds-table-header__filters-wrapper']}>\r\n <span className={styles['zds-table-header__filter-label']}>Filtros</span>\r\n \r\n <div className={styles['zds-table-header__filter-items']}>\r\n {filterItems && filterItems.map((filterItem, index) => {\r\n const commonProps = {\r\n key: filterItem.id || index,\r\n buttonText: filterItem.buttonText,\r\n icon: filterItem.icon,\r\n position: filterItem.position || 'right',\r\n disabled: filterItem.disabled,\r\n variant: 'outlined' as const,\r\n onOpen: () => filterItem.onToggle?.(true),\r\n onClose: () => filterItem.onToggle?.(false),\r\n };\r\n if (isCalendarFilter(filterItem)) {\r\n return (\r\n <Filter\r\n {...commonProps}\r\n type=\"calendar\"\r\n selectedDate={filterItem.selectedDate}\r\n onDateSelect={filterItem.onDateSelect}\r\n onClearDate={filterItem.onClear}\r\n minDate={filterItem.minDate}\r\n maxDate={filterItem.maxDate}\r\n placeholder={filterItem.placeholder}\r\n />\r\n );\r\n }\r\n\r\n if (isCheckboxFilter(filterItem)) {\r\n return (\r\n <Filter\r\n {...commonProps}\r\n type={filterItem.type}\r\n items={filterItem.items}\r\n selectedIds={filterItem.selectedIds}\r\n onApplyFilter={filterItem.onSelectionChange}\r\n placeholder={filterItem.placeholder}\r\n enableSearch={filterItem.enableSearch}\r\n />\r\n );\r\n }\r\n\r\n console.warn('TableHeader: Tipo de filtro não reconhecido:', filterItem);\r\n return null;\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n ) : (\r\n <div className={styles['zds-table-header__filters-placeholder']}>\r\n <span>Nenhum filtro disponível</span>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport type { CalendarFilterItem, CheckboxFilterItem };\r\nexport { isCalendarFilter, isCheckboxFilter };\r\n\r\nexport default TableHeader;\r\n","import React from 'react';\r\nimport { ChevronLeft16Regular, ChevronRight16Regular } from '@fluentui/react-icons';\r\nimport styles from './Table.module.scss';\r\n\r\nexport interface TablePaginationProps {\r\n /** Página atual */\r\n currentPage: number;\r\n /** Total de itens */\r\n totalItems: number;\r\n /** Itens por página */\r\n itemsPerPage: number;\r\n /** Callback quando a página muda */\r\n onPageChange: (page: number) => void;\r\n /** Callback quando itens por página muda */\r\n onItemsPerPageChange: (itemsPerPage: number) => void;\r\n /** Opções disponíveis para itens por página */\r\n pageSizeOptions?: number[];\r\n /** Desabilita a paginação */\r\n disabled?: boolean;\r\n /** Classes CSS adicionais */\r\n className?: string;\r\n}\r\n\r\nconst TablePagination: React.FC<TablePaginationProps> = ({\r\n currentPage,\r\n totalItems,\r\n itemsPerPage,\r\n onPageChange,\r\n onItemsPerPageChange,\r\n pageSizeOptions = [10, 25, 50, 100],\r\n disabled = false,\r\n className = '',\r\n}) => {\r\n // Cálculos\r\n const totalPages = Math.ceil(totalItems / itemsPerPage);\r\n const startItem = totalItems > 0 ? (currentPage - 1) * itemsPerPage + 1 : 0;\r\n const endItem = Math.min(currentPage * itemsPerPage, totalItems);\r\n \r\n // Lógica para habilitar/desabilitar botões\r\n const canGoPrev = currentPage > 1 && !disabled;\r\n const canGoNext = currentPage < totalPages && !disabled;\r\n \r\n // Handlers\r\n const handlePrevious = () => {\r\n if (canGoPrev) {\r\n onPageChange(currentPage - 1);\r\n }\r\n };\r\n \r\n const handleNext = () => {\r\n if (canGoNext) {\r\n onPageChange(currentPage + 1);\r\n }\r\n };\r\n \r\n const handleItemsPerPageChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\r\n const newItemsPerPage = Number(event.target.value);\r\n onItemsPerPageChange(newItemsPerPage);\r\n };\r\n\r\n return (\r\n <div className={`${styles['zds-table__pagination']} ${className}`.trim()}>\r\n {/* Seletor de itens por página */}\r\n <div className={styles['zds-table__pagination-select']}>\r\n <label htmlFor=\"items-per-page\" className={styles['zds-table__pagination-label']}>\r\n Itens por página\r\n </label>\r\n <select\r\n id=\"items-per-page\"\r\n value={itemsPerPage}\r\n onChange={handleItemsPerPageChange}\r\n disabled={disabled}\r\n className={styles['zds-table__pagination-select-input']}\r\n >\r\n {pageSizeOptions.map((option) => (\r\n <option key={option} value={option}>\r\n {option}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n \r\n {/* Informações de paginação */}\r\n <div className={styles['zds-table__pagination-info']}>\r\n <span>\r\n {totalItems > 0 \r\n ? `${startItem}–${endItem} de ${totalItems}`\r\n : '0 itens'\r\n }\r\n </span>\r\n </div>\r\n \r\n {/* Controles de navegação */}\r\n <div className={styles['zds-table__pagination-controls']}>\r\n {/* CORREÇÃO: Ícone envolvido por um <button> com lógica 'disabled' */}\r\n <button\r\n className={styles['zds-table__pagination-button']}\r\n onClick={handlePrevious}\r\n disabled={!canGoPrev}\r\n aria-label=\"Página anterior\"\r\n >\r\n <ChevronLeft16Regular />\r\n </button>\r\n \r\n {/* CORREÇÃO: Ícone envolvido por um <button> com lógica 'disabled' */}\r\n <button\r\n className={styles['zds-table__pagination-button']}\r\n onClick={handleNext}\r\n disabled={!canGoNext}\r\n aria-label=\"Próxima página\"\r\n >\r\n <ChevronRight16Regular />\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default TablePagination;","// ✅ NOVA IMPLEMENTAÇÃO SIMPLIFICADA\r\nimport React, { createContext, useContext, useState, useCallback, useRef, useEffect, useMemo, ReactNode } from 'react';\r\nimport clsx from 'clsx';\r\nimport styles from './Toast.module.scss';\r\nimport {\r\n CheckmarkCircle20Filled,\r\n Dismiss16Regular,\r\n Warning20Filled,\r\n Info20Filled,\r\n} from '@fluentui/react-icons';\r\nimport type { ToastType, ToastMessage, ToastOptions, ToastContextType } from './Toast.types';\r\n\r\nconst sanitizeMessage = (message: string): string => {\r\n if (typeof message !== 'string') return 'Mensagem inválida';\r\n \r\n return message\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&#x27;')\r\n .replace(/&/g, '&amp;')\r\n .slice(0, 500); \r\n};\r\n\r\nconst generateId = (): string => {\r\n return `toast-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;\r\n};\r\n\r\nconst MAX_TOASTS = 5;\r\nconst DEFAULT_DURATION = 5000;\r\n\r\nconst ToastContext = createContext<ToastContextType | undefined>(undefined);\r\n\r\nconst toastVariants = {\r\n success: {\r\n icon: <CheckmarkCircle20Filled />,\r\n className: styles['zds-toast__success'],\r\n },\r\n alert: {\r\n icon: <Warning20Filled />,\r\n className: styles['zds-toast__alert'],\r\n },\r\n info: {\r\n icon: <Info20Filled />,\r\n className: styles['zds-toast__info'],\r\n },\r\n} as const;\r\n\r\ninterface ToastItemProps {\r\n toast: ToastMessage;\r\n onClose: (id: string) => void;\r\n isVisible: boolean;\r\n}\r\n\r\nconst ToastItem: React.FC<ToastItemProps> = ({ toast, onClose, isVisible }) => {\r\n const variant = toastVariants[toast.type];\r\n \r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n onClose(toast.id);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className={clsx(\r\n styles['zds-toast__item'],\r\n variant.className,\r\n isVisible && styles['zds-toast__active']\r\n )}\r\n role={toast.type === 'alert' ? 'alert' : 'status'}\r\n aria-live={toast.type === 'alert' ? 'assertive' : 'polite'}\r\n aria-atomic=\"true\"\r\n tabIndex={toast.persistent ? 0 : -1}\r\n onKeyDown={handleKeyDown}\r\n >\r\n <span className={styles['zds-toast__icon']} aria-hidden=\"true\">\r\n {variant.icon}\r\n </span>\r\n <span \r\n className={styles['zds-toast__message']}\r\n dangerouslySetInnerHTML={{ __html: sanitizeMessage(toast.message) }}\r\n />\r\n <button\r\n type=\"button\"\r\n className={styles['zds-toast__close']}\r\n aria-label={`Fechar notificação: ${toast.message.slice(0, 50)}${toast.message.length > 50 ? '...' : ''}`}\r\n onClick={() => onClose(toast.id)}\r\n >\r\n <Dismiss16Regular aria-hidden=\"true\" />\r\n </button>\r\n </div>\r\n );\r\n};\r\n\r\ninterface ToastContainerProps {\r\n toasts: ToastMessage[];\r\n onClose: (id: string) => void;\r\n visibleToasts: Set<string>;\r\n}\r\n\r\nconst ToastContainer: React.FC<ToastContainerProps> = ({ toasts, onClose, visibleToasts }) => {\r\n if (toasts.length === 0) return null;\r\n\r\n return (\r\n <div \r\n className={styles['zds-toast__container']}\r\n role=\"log\"\r\n aria-label=\"Notificações do sistema\"\r\n >\r\n {toasts.map(toast => (\r\n <ToastItem\r\n key={toast.id}\r\n toast={toast}\r\n onClose={onClose}\r\n isVisible={visibleToasts.has(toast.id)}\r\n />\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport interface ToastProviderProps {\r\n children: ReactNode;\r\n maxToasts?: number;\r\n}\r\n\r\nexport const ToastProvider: React.FC<ToastProviderProps> = ({ \r\n children, \r\n maxToasts = MAX_TOASTS \r\n}) => {\r\n const [toasts, setToasts] = useState<ToastMessage[]>([]);\r\n const [visibleToasts, setVisibleToasts] = useState<Set<string>>(new Set());\r\n const timeouts = useRef<Map<string, NodeJS.Timeout>>(new Map());\r\n\r\n const clearToastTimeout = useCallback((id: string) => {\r\n const timeoutId = timeouts.current.get(id);\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n timeouts.current.delete(id);\r\n }\r\n }, []);\r\n\r\n const showToast = useCallback((\r\n message: string, \r\n type: ToastType = 'info', \r\n options: ToastOptions = {}\r\n ): string => {\r\n const id = generateId();\r\n const sanitizedMessage = sanitizeMessage(message);\r\n \r\n if (!sanitizedMessage || sanitizedMessage === 'Mensagem inválida') {\r\n console.warn('Toast: Mensagem inválida ou vazia');\r\n return '';\r\n }\r\n\r\n const newToast: ToastMessage = {\r\n id,\r\n message: sanitizedMessage,\r\n type,\r\n persistent: options.persistent || false,\r\n duration: options.duration || DEFAULT_DURATION,\r\n timestamp: Date.now(),\r\n };\r\n\r\n // ✅ LIMITE DE TOASTS\r\n setToasts(prev => {\r\n const filtered = prev.slice(-(maxToasts - 1));\r\n return [...filtered, newToast];\r\n });\r\n\r\n // ✅ ANIMAÇÃO DE ENTRADA\r\n setTimeout(() => {\r\n setVisibleToasts(prev => new Set([...prev, id]));\r\n }, 50);\r\n\r\n // ✅ AUTO-HIDE SE NÃO FOR PERSISTENTE\r\n if (!newToast.persistent) {\r\n const timeoutId = setTimeout(() => {\r\n hideToast(id);\r\n }, newToast.duration);\r\n \r\n timeouts.current.set(id, timeoutId);\r\n }\r\n\r\n return id;\r\n }, [maxToasts]);\r\n\r\n const hideToast = useCallback((id: string) => {\r\n clearToastTimeout(id);\r\n \r\n // ✅ ANIMAÇÃO DE SAÍDA\r\n setVisibleToasts(prev => {\r\n const newSet = new Set(prev);\r\n newSet.delete(id);\r\n return newSet;\r\n });\r\n\r\n // ✅ REMOÇÃO APÓS ANIMAÇÃO\r\n setTimeout(() => {\r\n setToasts(prev => prev.filter(toast => toast.id !== id));\r\n }, 450);\r\n }, [clearToastTimeout]);\r\n\r\n const hideAllToasts = useCallback(() => {\r\n timeouts.current.forEach(clearTimeout);\r\n timeouts.current.clear();\r\n \r\n setVisibleToasts(new Set());\r\n setTimeout(() => {\r\n setToasts([]);\r\n }, 450);\r\n }, []);\r\n\r\n useEffect(() => {\r\n return () => {\r\n timeouts.current.forEach(clearTimeout);\r\n timeouts.current.clear();\r\n };\r\n }, []);\r\n\r\n const contextValue = useMemo<ToastContextType>(() => ({\r\n showToast,\r\n hideToast,\r\n hideAllToasts,\r\n }), [showToast, hideToast, hideAllToasts]);\r\n\r\n return (\r\n <ToastContext.Provider value={contextValue}>\r\n {children}\r\n <ToastContainer \r\n toasts={toasts} \r\n onClose={hideToast}\r\n visibleToasts={visibleToasts}\r\n />\r\n </ToastContext.Provider>\r\n );\r\n};\r\n\r\nexport const useToast = (): ToastContextType => {\r\n const context = useContext(ToastContext);\r\n if (!context) {\r\n throw new Error('useToast must be used within a ToastProvider');\r\n }\r\n return context;\r\n};\r\n\r\n\r\nexport const Toast = (() => {\r\n let toastContext: ToastContextType | null = null;\r\n \r\n const setContext = (context: ToastContextType) => {\r\n toastContext = context;\r\n };\r\n \r\n const show = (message: string, type: ToastType = 'info', options?: ToastOptions) => {\r\n if (!toastContext) {\r\n console.error('Toast context not available. Make sure ToastProvider is mounted.');\r\n return '';\r\n }\r\n return toastContext.showToast(message, type, options);\r\n };\r\n \r\n return { show, setContext };\r\n})();\r\n\r\nexport default ToastProvider;","import * as React from \"react\";\r\nimport clsx from 'clsx';\r\nimport { Switch as SwitchRadix} from \"radix-ui\";\r\nimport styles from './Switch.module.scss';\r\nimport { SwitchProps } from './Switch.types';\r\n\r\nconst Switch: React.FC<SwitchProps> = ({\r\n\tdisabled = false,\r\n\tdefaultChecked = false,\r\n\tchecked,\r\n\tonCheckedChange,\r\n\tname,\r\n\tvalue\r\n}) => (\r\n\t\t<div className={clsx(styles.container)}>\r\n\t\t\t<SwitchRadix.Root \r\n\t\t\t\tclassName={styles.switchRoot} \r\n\t\t\t\tdisabled={disabled} \r\n\t\t\t\tdefaultChecked={defaultChecked} \r\n\t\t\t\tonCheckedChange={onCheckedChange} \r\n\t\t\t\tname={name} \r\n\t\t\t\tvalue={value}\r\n\t\t\t>\r\n\t\t\t\t<SwitchRadix.Thumb className={styles.switchThumb} />\r\n\t\t\t</SwitchRadix.Root>\r\n\t\t</div>\r\n);\r\n\r\nexport default Switch;","import React, { useRef, useState, useCallback, useEffect } from 'react';\r\nimport clsx from 'clsx';\r\nimport styles from './VerificationCode.module.scss';\r\nimport type { InputType, VerificationCodeProps } from './VerificationCode.types';\r\n\r\n/**\r\n * Mapa de regex para validação dos tipos de entrada\r\n */\r\nconst REGEX_MAP: Record<InputType, RegExp> = {\r\n numeric: /^[0-9]$/,\r\n alpha: /^[a-zA-Z]$/,\r\n alphanumeric: /^[a-zA-Z0-9]$/,\r\n};\r\n\r\n/**\r\n * Componente VerificationCode para entrada de códigos de verificação\r\n * \r\n * @description Permite entrada de códigos com múltiplos dígitos,\r\n * suportando diferentes tipos de caracteres e navegação por teclado.\r\n * \r\n * @example\r\n * ```tsx\r\n * <VerificationCode\r\n * length={6}\r\n * inputType=\"numeric\"\r\n * onComplete={(code) => console.log('Código:', code)}\r\n * hasError={false}\r\n * />\r\n * ```\r\n */\r\nconst VerificationCode: React.FC<VerificationCodeProps> = ({\r\n length = 6,\r\n inputType = 'numeric',\r\n onComplete,\r\n hasError = false,\r\n errorMessage = '',\r\n disabled = false,\r\n className = ''\r\n}) => {\r\n\r\n const validLength = Math.min(Math.max(length, 1), 100);\r\n const [values, setValues] = useState<string[]>(Array(validLength).fill(''));\r\n const inputsRef = useRef<(HTMLInputElement | null)[]>([]);\r\n const currentRegex = REGEX_MAP[inputType] || REGEX_MAP.numeric;\r\n\r\n\r\n useEffect(() => {\r\n setValues(Array(validLength).fill(''));\r\n }, [inputType, validLength]);\r\n\r\n \r\n const handleChange = useCallback((index: number, value: string): void => {\r\n\r\n if (!currentRegex.test(value)) return;\r\n\r\n const newValues = [...values];\r\n newValues[index] = value;\r\n setValues(newValues);\r\n if (value && index < validLength - 1) {\r\n inputsRef.current[index + 1]?.focus();\r\n }\r\n\r\n if (newValues.every(v => v !== '')) {\r\n onComplete?.(newValues.join(''));\r\n }\r\n }, [values, currentRegex, onComplete, validLength]);\r\n\r\n const handlePaste = useCallback((e: React.ClipboardEvent<HTMLInputElement>): void => {\r\n e.preventDefault();\r\n\r\n const pasteData = e.clipboardData.getData('Text');\r\n const valuesToPaste = pasteData.split('').slice(0, validLength);\r\n\r\n const newValues = [...values];\r\n\r\n valuesToPaste.forEach((value, index) => {\r\n if (currentRegex.test(value)) {\r\n newValues[index] = value;\r\n }\r\n });\r\n\r\n setValues(newValues);\r\n\r\n const firstEmptyIndex = newValues.findIndex(v => v === '');\r\n const focusIndex = firstEmptyIndex === -1 ? validLength - 1 : firstEmptyIndex;\r\n inputsRef.current[focusIndex]?.focus();\r\n\r\n\r\n if (newValues.every(v => v !== '')) {\r\n onComplete?.(newValues.join(''));\r\n }\r\n }, [values, currentRegex, onComplete, validLength]);\r\n\r\n const handleKeyDown = useCallback((index: number, e: React.KeyboardEvent<HTMLInputElement>): void => {\r\n if (e.key === 'Backspace') {\r\n e.preventDefault();\r\n\r\n const newValues = [...values];\r\n\r\n if (values[index]) {\r\n\r\n newValues[index] = '';\r\n setValues(newValues);\r\n } else if (index > 0) {\r\n\r\n inputsRef.current[index - 1]?.focus();\r\n newValues[index - 1] = '';\r\n setValues(newValues);\r\n }\r\n }\r\n\r\n if (e.key === 'Delete') {\r\n e.preventDefault();\r\n\r\n const newValues = [...values];\r\n newValues[index] = '';\r\n setValues(newValues);\r\n\r\n if (index < validLength - 1) {\r\n inputsRef.current[index + 1]?.focus();\r\n }\r\n }\r\n if (e.key === 'ArrowLeft' && index > 0) {\r\n e.preventDefault();\r\n inputsRef.current[index - 1]?.focus();\r\n }\r\n\r\n if (e.key === 'ArrowRight' && index < validLength - 1) {\r\n e.preventDefault();\r\n inputsRef.current[index + 1]?.focus();\r\n }\r\n }, [values, validLength]);\r\n\r\n const handleKeyUp = useCallback((index: number, e: React.KeyboardEvent<HTMLInputElement>): void => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n\r\n if (values[index] && index < validLength - 1) {\r\n inputsRef.current[index + 1]?.focus();\r\n } else if (values[index] && index === validLength - 1) {\r\n inputsRef.current[index]?.blur();\r\n }\r\n }\r\n }, [values, validLength]);\r\n const handleFocus = useCallback((e: React.FocusEvent<HTMLInputElement>): void => {\r\n e.target.select();\r\n }, []);\r\n\r\n return (\r\n <>\r\n <div className={clsx(styles['zds-verification-code__container'], className)}>\r\n {values.map((val, i) => (\r\n <input\r\n id={`zds-verification-code__element-${i}`}\r\n key={i}\r\n ref={(el) => {\r\n inputsRef.current[i] = el;\r\n }}\r\n type=\"text\"\r\n inputMode={inputType === 'numeric' ? 'numeric' : 'text'}\r\n maxLength={1}\r\n value={val}\r\n onChange={(e) => handleChange(i, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(i, e)}\r\n onKeyUp={(e) => handleKeyUp(i, e)}\r\n onPaste={i === 0 ? handlePaste : undefined}\r\n onFocus={handleFocus}\r\n disabled={disabled}\r\n className={clsx(styles['zds-verification-code__input'], {\r\n [styles['zds-verification-code__has-error']]: hasError,\r\n [styles['zds-verification-code__filled']]: val,\r\n })}\r\n aria-invalid={hasError}\r\n aria-label={`Dígito ${i + 1} de ${validLength}`}\r\n aria-describedby={hasError && errorMessage ? 'verification-code-error' : undefined}\r\n autoComplete=\"one-time-code\"\r\n />\r\n ))}\r\n </div>\r\n\r\n {hasError && errorMessage && (\r\n <div\r\n id=\"verification-code-error\"\r\n className={styles['zds-verification-code__error']}\r\n role=\"alert\"\r\n aria-live=\"assertive\"\r\n >\r\n {errorMessage}\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default VerificationCode;","import { useState, useCallback, useRef, useEffect } from 'react';\r\n\r\n/**\r\n * Configurações para simulação de API\r\n */\r\nexport interface ApiSimulationConfig {\r\n /** Items por página */\r\n itemsPerPage?: number;\r\n /** Total de items no dataset */\r\n totalItems?: number;\r\n /** Delay em ms para simular latência */\r\n delay?: number;\r\n /** Taxa de erro (0-1) para simular falhas */\r\n errorRate?: number;\r\n /** Função geradora de items customizada */\r\n itemGenerator?: (index: number, searchQuery?: string) => any;\r\n /** Debug mode */\r\n debug?: boolean;\r\n}\r\n\r\n/**\r\n * Estado da simulação de API\r\n */\r\nexport interface ApiSimulationState<T> {\r\n /** Items carregados */\r\n items: T[];\r\n /** Página atual */\r\n currentPage: number;\r\n /** Total de páginas */\r\n totalPages: number;\r\n /** Status do carregamento */\r\n status: 'idle' | 'loading' | 'succeeded' | 'failed';\r\n /** Erro atual (se houver) */\r\n error: string | null;\r\n /** Query de busca atual */\r\n searchQuery: string;\r\n /** Se há próxima página */\r\n hasNextPage: boolean;\r\n /** Se é a primeira página */\r\n isFirstPage: boolean;\r\n}\r\n\r\nexport interface ApiSimulationActions {\r\n /** Carregar próxima página */\r\n loadNextPage: () => Promise<void>;\r\n /** Realizar nova busca */\r\n search: (query: string) => Promise<void>;\r\n /** Reset completo */\r\n reset: () => void;\r\n /** Retry da última operação */\r\n retry: () => Promise<void>;\r\n}\r\n\r\nexport interface UseApiSimulationReturn<T> extends ApiSimulationState<T> {\r\n actions: ApiSimulationActions;\r\n}\r\n\r\n\r\nexport function useApiSimulation<T = any>(\r\n config: ApiSimulationConfig = {}\r\n): UseApiSimulationReturn<T> {\r\n const {\r\n itemsPerPage = 20,\r\n totalItems = 500,\r\n delay = 800,\r\n errorRate = 0,\r\n itemGenerator,\r\n debug = false\r\n } = config;\r\n\r\n // Estados\r\n const [items, setItems] = useState<T[]>([]);\r\n const [currentPage, setCurrentPage] = useState(0);\r\n const [status, setStatus] = useState<'idle' | 'loading' | 'succeeded' | 'failed'>('idle');\r\n const [error, setError] = useState<string | null>(null);\r\n const [searchQuery, setSearchQuery] = useState('');\r\n\r\n // Refs para evitar re-criações\r\n const abortControllerRef = useRef<AbortController | null>(null);\r\n const lastOperationRef = useRef<'load' | 'search'>('load');\r\n\r\n const totalPages = Math.ceil(totalItems / itemsPerPage);\r\n const hasNextPage = currentPage < totalPages;\r\n const isFirstPage = currentPage === 0;\r\n\r\n // ✅ Debug logger\r\n const debugLog = useCallback((message: string, data?: any) => {\r\n if (debug) {\r\n console.log(`🔄 [ApiSimulation] ${message}`, data || '');\r\n }\r\n }, [debug]);\r\n\r\n // ✅ Gerador padrão de items\r\n const defaultItemGenerator = useCallback((index: number, search?: string) => {\r\n const departments = ['Vendas', 'Marketing', 'TI', 'RH', 'Financeiro', 'Operações'];\r\n const locations = ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte', 'Porto Alegre'];\r\n const itemNumber = index + 1;\r\n\r\n return {\r\n id: `item-${itemNumber}`,\r\n text: search\r\n ? `${search} - Item ${itemNumber}`\r\n : `Item ${itemNumber}`,\r\n subText: search\r\n ? `Resultado para \"${search}\" - ${departments[itemNumber % departments.length]}`\r\n : `${departments[itemNumber % departments.length]} • ${locations[itemNumber % locations.length]}`,\r\n disabled: itemNumber % 25 === 0,\r\n category: departments[itemNumber % departments.length],\r\n location: locations[itemNumber % locations.length]\r\n };\r\n }, []);\r\n\r\n // ✅ Simular chamada de API\r\n const simulateApiCall = useCallback(async (\r\n page: number,\r\n search: string = ''\r\n ): Promise<T[]> => {\r\n debugLog('Iniciando simulação de API', { page, search, delay });\r\n\r\n // Cancelar requisição anterior se existir\r\n if (abortControllerRef.current) {\r\n abortControllerRef.current.abort();\r\n }\r\n\r\n // Criar novo controller\r\n const controller = new AbortController();\r\n abortControllerRef.current = controller;\r\n\r\n try {\r\n // Simular delay de rede\r\n await new Promise((resolve, reject) => {\r\n const timeout = setTimeout(resolve, delay);\r\n controller.signal.addEventListener('abort', () => {\r\n clearTimeout(timeout);\r\n reject(new Error('Request aborted'));\r\n });\r\n });\r\n\r\n // Verificar se foi cancelada\r\n if (controller.signal.aborted) {\r\n throw new Error('Request was cancelled');\r\n }\r\n\r\n // Simular erro aleatório\r\n if (Math.random() < errorRate) {\r\n throw new Error('Simulated network error');\r\n }\r\n\r\n // Calcular range de items\r\n const startIndex = page * itemsPerPage;\r\n const generator = itemGenerator || defaultItemGenerator;\r\n\r\n // Gerar items da página\r\n const pageItems = Array.from({ length: itemsPerPage }, (_, index) => {\r\n const globalIndex = startIndex + index;\r\n if (globalIndex >= totalItems) return null;\r\n return generator(globalIndex, search);\r\n }).filter(Boolean) as T[];\r\n\r\n debugLog('API simulada com sucesso', {\r\n page,\r\n itemsReturned: pageItems.length,\r\n search\r\n });\r\n\r\n return pageItems;\r\n\r\n } catch (err) {\r\n if (err instanceof Error && err.message === 'Request was cancelled') {\r\n debugLog('Request cancelada');\r\n throw err;\r\n }\r\n\r\n debugLog('Erro na simulação de API', err);\r\n throw new Error('Falha ao carregar dados. Tente novamente.');\r\n }\r\n }, [delay, errorRate, itemsPerPage, totalItems, itemGenerator, defaultItemGenerator, debugLog]);\r\n\r\n // ✅ Carregar próxima página\r\n const loadNextPage = useCallback(async () => {\r\n if (status === 'loading' || !hasNextPage) {\r\n debugLog('Load next page ignorado', { status, hasNextPage });\r\n return;\r\n }\r\n\r\n lastOperationRef.current = 'load';\r\n setStatus('loading');\r\n setError(null);\r\n\r\n try {\r\n const nextPage = currentPage + 1;\r\n const newItems = await simulateApiCall(nextPage - 1, searchQuery);\r\n\r\n setItems(prev => nextPage === 1 ? newItems : [...prev, ...newItems]);\r\n setCurrentPage(nextPage);\r\n setStatus('succeeded');\r\n\r\n debugLog('Página carregada com sucesso', {\r\n page: nextPage,\r\n totalItems: items.length + newItems.length\r\n });\r\n } catch (err) {\r\n if (err instanceof Error && err.message === 'Request was cancelled') {\r\n return; // Ignore cancelled requests\r\n }\r\n\r\n setError(err instanceof Error ? err.message : 'Erro desconhecido');\r\n setStatus('failed');\r\n debugLog('Erro ao carregar página', err);\r\n }\r\n }, [status, hasNextPage, currentPage, searchQuery, simulateApiCall, items.length, debugLog]);\r\n\r\n const search = useCallback(async (query: string) => {\r\n debugLog('Iniciando busca', { query });\r\n\r\n lastOperationRef.current = 'search';\r\n setSearchQuery(query);\r\n setCurrentPage(0);\r\n setItems([]);\r\n setStatus('loading');\r\n setError(null);\r\n\r\n try {\r\n const searchResults = await simulateApiCall(0, query);\r\n setItems(searchResults);\r\n setCurrentPage(1);\r\n setStatus('succeeded');\r\n\r\n debugLog('Busca concluída', {\r\n query,\r\n results: searchResults.length\r\n });\r\n } catch (err) {\r\n if (err instanceof Error && err.message === 'Request was cancelled') {\r\n return;\r\n }\r\n\r\n setError(err instanceof Error ? err.message : 'Erro na busca');\r\n setStatus('failed');\r\n debugLog('Erro na busca', err);\r\n }\r\n }, [simulateApiCall, debugLog]);\r\n\r\n const reset = useCallback(() => {\r\n debugLog('Reset completo da simulação');\r\n\r\n if (abortControllerRef.current) {\r\n abortControllerRef.current.abort();\r\n }\r\n\r\n setItems([]);\r\n setCurrentPage(0);\r\n setStatus('idle');\r\n setError(null);\r\n setSearchQuery('');\r\n }, [debugLog]);\r\n\r\n const retry = useCallback(async () => {\r\n debugLog('Retry da última operação', {\r\n lastOperation: lastOperationRef.current\r\n });\r\n\r\n if (lastOperationRef.current === 'search') {\r\n await search(searchQuery);\r\n } else {\r\n await loadNextPage();\r\n }\r\n }, [search, searchQuery, loadNextPage, debugLog]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (abortControllerRef.current) {\r\n abortControllerRef.current.abort();\r\n }\r\n };\r\n }, []);\r\n\r\n return {\r\n // Estado\r\n items,\r\n currentPage,\r\n totalPages,\r\n status,\r\n error,\r\n searchQuery,\r\n hasNextPage,\r\n isFirstPage,\r\n\r\n // Ações\r\n actions: {\r\n loadNextPage,\r\n search,\r\n reset,\r\n retry\r\n }\r\n };\r\n}\r\n\r\nexport default useApiSimulation;"],"names":["styles","_jsx","_jsxs","_Fragment","CheckboxRadix","TooltipRadix","TextField","Calendar","Dropdown","Select","SelectRadix","formatDistanceLocale","formatDistance","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","localize","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","defaultLocale","SwitchRadix"],"mappings":"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uD;;AAEzD;AACA;AACA,MAAM,0BAA0B,GAAG,mCAAmC;;AAEtE,MAAM,mBAAmB,GAAG,cAAc;AAC1C,MAAM,iBAAiB,GAAG,KAAK;AAC/B,MAAM,6BAA6B,GAAG,UAAU;;AAIhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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","x_google_ignoreList":[38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80]}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/Button/Button.tsx","../src/components/Calendar/i18n.ts","../src/components/Calendar/Calendar.tsx","../src/components/Callout/Callout.tsx","../src/shared/icons/CheckSmall.tsx","../src/shared/icons/CheckHalf.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chips/Chips.tsx","../src/components/Container/index.tsx","../src/components/Tooltip/Tooltip.tsx","../src/shared/Label/index.tsx","../src/components/TextField/utils/validation.ts","../src/components/TextField/TextField.tsx","../src/components/DatePicker/DateUtils.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/Dialog/utils/DialogUtils.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Search/Search.tsx","../src/components/Dropdown/DropdownUtils.tsx","../src/hooks/InfiniteScroll.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Filter/Filter.tsx","../src/components/Radio/Radio.tsx","../src/components/ListItem/ListItem.tsx","../src/hooks/NormalizeText.tsx","../src/components/Menu/hooks/useSearchLogic.tsx","../src/components/Menu/hooks/useMenuLogic.ts","../src/components/Menu/components/MenuItem.tsx","../src/components/Menu/Menu.tsx","../src/components/Quantity/Quantity.tsx","../src/components/Select/components/CheckboxSelectItem.tsx","../src/components/Select/components/ExpandableSelectItem.tsx","../src/components/Select/components/SelectItem.tsx","../src/components/Select/hooks/useSelectLogic.ts","../src/components/Select/Select.tsx","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constants.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructFrom.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/toDate.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/defaultOptions.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeek.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeek.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeekYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeDates.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfDay.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarDays.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeekYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isDate.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isValid.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/localize.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/match.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDayOfYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeek.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeekYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeekYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeek.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/addLeadingZeros.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/lightFormatters.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/formatters.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/longFormatters.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/protectedTokens.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/format.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pt-BR/_lib/formatDistance.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pt-BR/_lib/formatLong.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pt-BR/_lib/formatRelative.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pt-BR/_lib/localize.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pt-BR/_lib/match.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pt-BR.js","../../../node_modules/.pnpm/react-content-loader@7.1.1_react@18.3.1/node_modules/react-content-loader/dist/react-content-loader.es.js","../src/components/Table/LoaderList.tsx","../src/components/Table/EmptyRows150Color.tsx","../src/components/Table/Table.tsx","../src/components/Table/TableHeader.tsx","../src/components/Table/TablePagination.tsx","../src/components/Toast/Toast.tsx","../src/components/Switch/Switch.tsx","../src/components/VerificationCode/VerificationCode.tsx","../src/hooks/ApiSimulation.tsx"],"sourcesContent":["import React, { useId } from 'react';\r\nimport styles from './Avatar.module.scss';\r\nimport clsx from 'clsx';\r\nimport type { AvatarProps } from './Avatar.types';\r\n\r\nlet Avatar = ({ id = '', icon, size = 'small', className = '' }: AvatarProps) => {\r\n const componentId = id || useId();\r\n const AvatarClass = clsx(\r\n styles['zds-avatar__circle'],\r\n {\r\n [styles['zds-avatar__large']]: size === 'large',\r\n [styles['zds-avatar__small']]: size === 'small',\r\n },\r\n className\r\n );\r\n\r\n return (\r\n <div className={AvatarClass} id={componentId} role=\"img\" aria-label={`Avatar ${size}`}>\r\n <div className={styles['zds-avatar__circle__icon']}>\r\n {icon}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Avatar;\r\n","import clsx from 'clsx';\r\nimport React, { ReactNode, useId } from 'react';\r\nimport styles from './Badge.module.scss';\r\nimport type { BadgeProps, BadgeType, BadgeValue } from './Badge.types';\r\n\r\nconst Badge: React.FC<BadgeProps> = ({\r\n children,\r\n badgeValue = null,\r\n type = 'notification',\r\n className = '',\r\n id,\r\n 'aria-label': ariaLabel,\r\n}) => {\r\n const isEmpty = badgeValue === null || badgeValue === undefined || badgeValue === '';\r\n const componentId = id || useId();\r\n\r\n const getDisplayValue = (inputValue: BadgeValue): string | number => {\r\n if (inputValue === null || inputValue === undefined) return '';\r\n\r\n if (typeof inputValue === 'number') {\r\n if (!isFinite(inputValue)) return '';\r\n if (inputValue < 0) return 0; \r\n if (inputValue === 0) return ''; \r\n\r\n return inputValue > 99 ? `${99}+` : inputValue;\r\n }\r\n\r\n // ✅ Sanitizar strings\r\n const sanitized = String(inputValue).trim();\r\n return sanitized.length > 10 ? `${sanitized.slice(0, 7)}...` : sanitized;\r\n };\r\n\r\n const displayValue = getDisplayValue(badgeValue);\r\n\r\n if (type === 'notification') {\r\n return (\r\n <div\r\n className={clsx(styles['zds-badge__container'])}\r\n >\r\n <div\r\n id={componentId}\r\n className={clsx(styles['zds-badge'], {\r\n [styles['zds-badge__small']]: Number(badgeValue) <= 10,\r\n [styles['zds-badge__large']]: Number(badgeValue) > 10,\r\n }, className)}\r\n data-testid=\"badge-notification\"\r\n >\r\n {!isEmpty && (\r\n <span\r\n className={styles['zds-badge__value']}\r\n aria-hidden={ariaLabel ? 'true' : 'false'}\r\n >\r\n {displayValue}\r\n </span>\r\n )}\r\n </div>\r\n {children && (\r\n <div className={styles['zds-badge__content']} data-testid=\"badge-content\">\r\n {children}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n className={clsx(styles['zds-badge__container'])}\r\n >\r\n <div\r\n className={clsx(styles['zds-badge__status'], {\r\n [styles['zds-badge__status__empty']]: isEmpty,\r\n }, className)}\r\n data-testid=\"badge-status\"\r\n >\r\n {!isEmpty && (\r\n <span\r\n className={styles['zds-badge__status-value']}\r\n aria-hidden={ariaLabel ? 'true' : 'false'}\r\n >\r\n {displayValue}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Badge;","import { SpinnerIos16Regular } from '@fluentui/react-icons';\r\nimport clsx from 'clsx';\r\nimport React, { useId, useMemo } from 'react';\r\n\r\nimport styles from './Button.module.scss';\r\n\r\nimport type { ButtonProps } from './Button.types';\r\n\r\nconst Button = React.forwardRef<HTMLElement, ButtonProps>(({\r\n as,\r\n children,\r\n variant = 'filled',\r\n iconPosition = 'left',\r\n href,\r\n to,\r\n external = false,\r\n target,\r\n rel,\r\n disabled = false,\r\n onClick,\r\n size = 'lg',\r\n className = '',\r\n type = 'button',\r\n id = '',\r\n icon = null,\r\n fullWidth = false,\r\n ariaLabel = '',\r\n iconOnly = false,\r\n loading = false,\r\n ...restProps\r\n}, ref) => {\r\n\r\n const generatedId = useId();\r\n const componentId = id || generatedId;\r\n\r\n const getComponent = (): React.ElementType => {\r\n if (as) return as;\r\n\r\n if (href) return 'a'; \r\n if (to) return 'a'; \r\n return 'button';\r\n };\r\n\r\n const Component = getComponent();\r\n\r\n const hasContent = useMemo(() => {\r\n return children && React.Children.count(children) > 0;\r\n }, [children]);\r\n\r\n const buttonClasses = clsx(\r\n styles.button,\r\n styles[`button-${variant}`],\r\n styles[`button-${size}`],\r\n {\r\n [styles['buttonLoading']]: loading,\r\n [styles['buttonWithIcon']]: icon && !iconOnly,\r\n [styles[`buttonIconPosition-${iconPosition}`]]: icon && !iconOnly,\r\n [styles['buttonNoContent']]: icon && !hasContent && !iconOnly,\r\n [styles['buttonFullWidth']]: fullWidth,\r\n [styles['buttonIconOnly']]: iconOnly,\r\n },\r\n className\r\n );\r\n\r\n const getAriaLabel = () => {\r\n if (ariaLabel) return ariaLabel;\r\n if (iconOnly && !ariaLabel) {\r\n return 'Botão de ação';\r\n }\r\n if (typeof children === 'string') return children;\r\n return undefined;\r\n };\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLElement>) => {\r\n if (disabled) {\r\n e.preventDefault();\r\n return;\r\n }\r\n onClick?.(e);\r\n };\r\n\r\n const renderContent = () => {\r\n if (iconOnly && !loading) {\r\n return (\r\n <span className={styles.buttonIconOnly} aria-hidden=\"true\">\r\n {icon}\r\n </span>\r\n );\r\n }\r\n if (loading) {\r\n return (\r\n <span className={styles.buttonLoading} aria-hidden=\"true\">\r\n <SpinnerIos16Regular aria-hidden=\"true\" />\r\n </span>\r\n );\r\n }\r\n return (\r\n <>\r\n {icon && (iconPosition === 'left' || iconPosition === 'both') && (\r\n <span className={styles.buttonIconLeft} aria-hidden=\"true\">\r\n {icon}\r\n </span>\r\n )}\r\n {children}\r\n {icon && (iconPosition === 'right' || iconPosition === 'both') && (\r\n <span className={styles.buttonIconRight} aria-hidden=\"true\">\r\n {icon}\r\n </span>\r\n )}\r\n </>\r\n );\r\n };\r\n\r\n const baseProps = {\r\n ref,\r\n id: componentId,\r\n className: buttonClasses,\r\n 'aria-label': getAriaLabel(),\r\n 'aria-disabled': disabled,\r\n tabIndex: disabled ? -1 : 0,\r\n onClick: handleClick,\r\n ...restProps,\r\n };\r\n\r\n const getNavigationProps = () => {\r\n if (href) {\r\n return {\r\n href: disabled ? '#' : href,\r\n target: external || target === '_blank' ? '_blank' : target,\r\n rel: external || target === '_blank' ? 'noopener noreferrer' : rel,\r\n };\r\n }\r\n\r\n if (to) {\r\n if (Component !== 'a') {\r\n return {\r\n to: disabled ? '#' : to,\r\n };\r\n }\r\n return {\r\n href: disabled ? '#' : to,\r\n };\r\n }\r\n if (Component === 'button') {\r\n return {\r\n type,\r\n disabled,\r\n };\r\n }\r\n\r\n return {};\r\n };\r\n\r\n return (\r\n <Component\r\n {...baseProps}\r\n {...getNavigationProps()}\r\n >\r\n {renderContent()}\r\n </Component>\r\n );\r\n});\r\n\r\nButton.displayName = 'Button';\r\nexport default Button;","// i18n.ts\r\nimport i18n from 'i18next';\r\nimport { initReactI18next } from 'react-i18next';\r\n\r\n// Types for translations\r\ninterface CalendarTranslations {\r\n today: string;\r\n selected: string;\r\n monthChanged: string;\r\n yearChanged: string;\r\n calendar: string;\r\n yearSelection: string;\r\n previousMonth: string;\r\n nextMonth: string;\r\n previousYears: string;\r\n nextYears: string;\r\n openYearSelection: string;\r\n closeYearSelection: string;\r\n currentYear: string;\r\n selectYear: string;\r\n monthNames: {\r\n january: string;\r\n february: string;\r\n march: string;\r\n april: string;\r\n may: string;\r\n june: string;\r\n july: string;\r\n august: string;\r\n september: string;\r\n october: string;\r\n november: string;\r\n december: string;\r\n };\r\n weekDays: {\r\n sunday: string;\r\n monday: string;\r\n tuesday: string;\r\n wednesday: string;\r\n thursday: string;\r\n friday: string;\r\n saturday: string;\r\n };\r\n weekDaysShort: {\r\n sunday: string;\r\n monday: string;\r\n tuesday: string;\r\n wednesday: string;\r\n thursday: string;\r\n friday: string;\r\n saturday: string;\r\n };\r\n}\r\n\r\n// Resources configuration\r\nconst resources = {\r\n 'pt-br': {\r\n translation: {\r\n today: 'Hoje',\r\n selected: 'Selecionado',\r\n monthChanged: 'Mês alterado para {{month}}',\r\n yearChanged: 'Ano alterado para {{year}}',\r\n calendar: 'Calendário',\r\n yearSelection: 'Seleção de ano',\r\n previousMonth: 'Mês anterior, {{month}}',\r\n nextMonth: 'Próximo mês, {{month}}',\r\n previousYears: 'Mostrar anos anteriores',\r\n nextYears: 'Mostrar próximos anos',\r\n openYearSelection: 'Abrir seleção de ano',\r\n closeYearSelection: 'Fechar seleção de ano',\r\n currentYear: 'Ano atual, {{year}}',\r\n selectYear: 'Selecionar ano {{year}}',\r\n monthNames: {\r\n january: 'Janeiro',\r\n february: 'Fevereiro',\r\n march: 'Março',\r\n april: 'Abril',\r\n may: 'Maio',\r\n june: 'Junho',\r\n july: 'Julho',\r\n august: 'Agosto',\r\n september: 'Setembro',\r\n october: 'Outubro',\r\n november: 'Novembro',\r\n december: 'Dezembro'\r\n },\r\n weekDays: {\r\n sunday: 'Domingo',\r\n monday: 'Segunda-feira',\r\n tuesday: 'Terça-feira',\r\n wednesday: 'Quarta-feira',\r\n thursday: 'Quinta-feira',\r\n friday: 'Sexta-feira',\r\n saturday: 'Sábado'\r\n },\r\n weekDaysShort: {\r\n sunday: 'D',\r\n monday: 'S',\r\n tuesday: 'T',\r\n wednesday: 'Q',\r\n thursday: 'Q',\r\n friday: 'S',\r\n saturday: 'S'\r\n }\r\n }\r\n },\r\n 'en-us': {\r\n translation: {\r\n today: 'Today',\r\n selected: 'Selected',\r\n monthChanged: 'Month changed to {{month}}',\r\n yearChanged: 'Year changed to {{year}}',\r\n calendar: 'Calendar',\r\n yearSelection: 'Year selection',\r\n previousMonth: 'Previous month, {{month}}',\r\n nextMonth: 'Next month, {{month}}',\r\n previousYears: 'Show previous years',\r\n nextYears: 'Show next years',\r\n openYearSelection: 'Open year selection',\r\n closeYearSelection: 'Close year selection',\r\n currentYear: 'Current year, {{year}}',\r\n selectYear: 'Select year {{year}}',\r\n monthNames: {\r\n january: 'January',\r\n february: 'February',\r\n march: 'March',\r\n april: 'April',\r\n may: 'May',\r\n june: 'June',\r\n july: 'July',\r\n august: 'August',\r\n september: 'September',\r\n october: 'October',\r\n november: 'November',\r\n december: 'December'\r\n },\r\n weekDays: {\r\n sunday: 'Sunday',\r\n monday: 'Monday',\r\n tuesday: 'Tuesday',\r\n wednesday: 'Wednesday',\r\n thursday: 'Thursday',\r\n friday: 'Friday',\r\n saturday: 'Saturday'\r\n },\r\n weekDaysShort: {\r\n sunday: 'S',\r\n monday: 'M',\r\n tuesday: 'T',\r\n wednesday: 'W',\r\n thursday: 'T',\r\n friday: 'F',\r\n saturday: 'S'\r\n }\r\n }\r\n }\r\n};\r\n\r\n// Initialize i18n\r\ni18n\r\n .use(initReactI18next)\r\n .init({\r\n resources,\r\n lng: 'pt-br',\r\n fallbackLng: 'en-us',\r\n interpolation: {\r\n escapeValue: false\r\n },\r\n returnObjects: false, // Ensure we don't return objects\r\n returnEmptyString: true,\r\n returnNull: false\r\n });\r\n\r\n// Helper function to ensure string return\r\nconst safeTranslate = (key: string, options?: any): string => {\r\n try {\r\n const result = i18n.t(key, { ...options, returnObjects: false });\r\n return typeof result === 'string' ? result : String(result);\r\n } catch (error) {\r\n console.warn(`Translation error for key: ${key}`, error);\r\n return key; // Fallback to key\r\n }\r\n};\r\n\r\n// Change language function\r\nconst changeLanguage = (lng: 'pt-br' | 'en-us') => {\r\n return i18n.changeLanguage(lng);\r\n};\r\n\r\n// Custom hook for calendar translations\r\nexport const useCalendarTranslation = () => {\r\n return {\r\n t: (key: keyof CalendarTranslations | string, options?: any): string => {\r\n return safeTranslate(key as string, options);\r\n },\r\n i18n,\r\n changeLanguage,\r\n currentLanguage: i18n.language as 'pt-br' | 'en-us'\r\n };\r\n};\r\n\r\nexport default i18n;","import React, {\r\n useId,\r\n useRef,\r\n useState,\r\n useEffect,\r\n useMemo,\r\n useCallback,\r\n} from 'react';\r\nimport clsx from 'clsx';\r\nimport styles from './Calendar.module.scss';\r\nimport {\r\n ChevronLeft16Regular,\r\n ChevronRight16Regular,\r\n ChevronDown16Regular,\r\n ChevronUp16Regular,\r\n} from '@fluentui/react-icons';\r\nimport { useTranslation } from 'react-i18next';\r\nimport './i18n';\r\nimport Button from '../Button';\r\nimport type { Locale, DateFormat, DayItem, EmptyItem, CalendarItem, YearItem, CalendarProps } from './Calendar.types';\r\n\r\n/**\r\n * Calendar component with keyboard navigation support and full TypeScript implementation.\r\n */\r\nconst Calendar: React.FC<CalendarProps> = ({\r\n currentDate,\r\n className,\r\n selectedDate = null,\r\n onDateChange,\r\n onDaySelect,\r\n onClear,\r\n locale = 'pt-br',\r\n format = 'dd/mm/yyyy',\r\n id = '',\r\n minDate,\r\n maxDate,\r\n}) => {\r\n const { t, i18n } = useTranslation();\r\n const componentId = id || useId();\r\n const calendarRef = useRef<HTMLDivElement>(null);\r\n const [changeView, setChangeView] = useState<boolean>(false);\r\n const [announcement, setAnnouncement] = useState<string>('');\r\n \r\n const displayDate = currentDate || new Date();\r\n \r\n const [yearRangeStart, setYearRangeStart] = useState<number>(\r\n displayDate.getFullYear() - 13\r\n );\r\n\r\n useEffect(() => {\r\n i18n.changeLanguage(locale);\r\n }, [locale, i18n]);\r\n\r\n const { month, year, daysInMonth } = useMemo(\r\n () => ({\r\n month: displayDate.getMonth(),\r\n year: displayDate.getFullYear(),\r\n daysInMonth: new Date(\r\n displayDate.getFullYear(),\r\n displayDate.getMonth() + 1,\r\n 0\r\n ).getDate(),\r\n }),\r\n [displayDate]\r\n );\r\n\r\n const weekDaysLabels = useMemo(\r\n (): string[] =>\r\n locale === 'en-us'\r\n ? ['S', 'M', 'T', 'W', 'T', 'F', 'S']\r\n : ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],\r\n [locale]\r\n );\r\n\r\n /**\r\n * Retorna o formato de data conforme a prop format e locale.\r\n */\r\n const handleClearDate = useCallback((): void => {\r\n onClear?.(); // Chama callback externo se existir\r\n\r\n setAnnouncement(\r\n locale === 'en-us' ? 'Selected date cleared' : 'Data selecionada limpa'\r\n );\r\n }, [onClear, locale]);\r\n\r\n const getDateFormat = useCallback(\r\n (date: Date): string => {\r\n const options: Intl.DateTimeFormatOptions = {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n };\r\n\r\n if (locale === 'en-us') {\r\n return date.toLocaleDateString('en-US', options);\r\n }\r\n return date.toLocaleDateString('pt-BR', options);\r\n },\r\n [locale]\r\n );\r\n\r\n /**\r\n * Verifica se o dia é hoje.\r\n */\r\n const isToday = useCallback(\r\n (day: number): boolean => {\r\n const today = new Date();\r\n return (\r\n !selectedDate &&\r\n day === today.getDate() &&\r\n month === today.getMonth() &&\r\n year === today.getFullYear()\r\n );\r\n },\r\n [selectedDate, month, year]\r\n );\r\n\r\n /**\r\n * Verifica se o dia está selecionado.\r\n */\r\n const isSelected = useCallback(\r\n (day: number): boolean => {\r\n return Boolean(\r\n selectedDate &&\r\n selectedDate.getDate() === day &&\r\n selectedDate.getMonth() === month &&\r\n selectedDate.getFullYear() === year\r\n );\r\n },\r\n [selectedDate, month, year]\r\n );\r\n\r\n /**\r\n * Verifica se uma data está dentro dos limites permitidos.\r\n */\r\n const isDateInRange = useCallback(\r\n (date: Date): boolean => {\r\n if (minDate && date < minDate) return false;\r\n if (maxDate && date > maxDate) return false;\r\n return true;\r\n },\r\n [minDate, maxDate]\r\n );\r\n\r\n /**\r\n * Retorna o nome do mês conforme o locale.\r\n */\r\n const getMonthName = useCallback((): string => {\r\n const monthNames =\r\n locale === 'en-us'\r\n ? [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December',\r\n ]\r\n : [\r\n 'Janeiro',\r\n 'Fevereiro',\r\n 'Março',\r\n 'Abril',\r\n 'Maio',\r\n 'Junho',\r\n 'Julho',\r\n 'Agosto',\r\n 'Setembro',\r\n 'Outubro',\r\n 'Novembro',\r\n 'Dezembro',\r\n ];\r\n\r\n return monthNames[month];\r\n }, [month, locale]);\r\n\r\n // ✅ Memoizar array de dias - tipado e otimizado\r\n const daysArray = useMemo((): CalendarItem[] => {\r\n const days: CalendarItem[] = [];\r\n const firstDayOfMonth = new Date(year, month, 1).getDay();\r\n\r\n // Dias vazios para alinhar o início do mês\r\n for (let i = 0; i < firstDayOfMonth; i++) {\r\n days.push({ type: 'empty', key: `empty-${i}` });\r\n }\r\n\r\n // Dias do mês\r\n for (let i = 1; i <= daysInMonth; i++) {\r\n const date = new Date(year, month, i);\r\n days.push({\r\n type: 'day',\r\n key: i,\r\n day: i,\r\n date,\r\n isToday: isToday(i),\r\n isSelected: isSelected(i),\r\n label: getDateFormat(date),\r\n });\r\n }\r\n return days;\r\n }, [year, month, daysInMonth, isToday, isSelected, getDateFormat]);\r\n\r\n // ✅ Memoizar array de anos - tipado e otimizado\r\n const yearsArray = useMemo((): YearItem[] => {\r\n const years: YearItem[] = [];\r\n for (let y = yearRangeStart; y < yearRangeStart + 20; y++) {\r\n years.push({\r\n year: y,\r\n isCurrent: y === year,\r\n key: y,\r\n });\r\n }\r\n return years;\r\n }, [yearRangeStart, year]);\r\n\r\n // ✅ Memoizar handlers para evitar re-renders desnecessários\r\n const handleSelectDay = useCallback(\r\n (day: number): void => {\r\n const selectedDay = new Date(year, month, day);\r\n\r\n if (!isDateInRange(selectedDay)) {\r\n return;\r\n }\r\n\r\n onDateChange?.(selectedDay);\r\n onDaySelect?.(selectedDay);\r\n },\r\n [year, month, onDateChange, onDaySelect, isDateInRange]\r\n );\r\n\r\n /**\r\n * Navega para o mês anterior ou range de anos anterior.\r\n */\r\n const handlePrevMonth = useCallback((): void => {\r\n if (changeView) {\r\n setYearRangeStart((prev) => prev - 20);\r\n setAnnouncement(\r\n locale === 'en-us'\r\n ? 'Previous years displayed'\r\n : 'Anos anteriores exibidos'\r\n );\r\n } else {\r\n const newDate = new Date(year, month - 1, 1);\r\n onDateChange?.(newDate);\r\n setAnnouncement(\r\n locale === 'en-us'\r\n ? `Month changed to ${newDate.toLocaleDateString('en-US', { month: 'long', year: 'numeric' })}`\r\n : `Mês alterado para ${newDate.toLocaleDateString('pt-BR', { month: 'long', year: 'numeric' })}`\r\n );\r\n }\r\n }, [changeView, locale, year, month, onDateChange]);\r\n\r\n /**\r\n * Navega para o próximo mês ou range de anos seguinte.\r\n */\r\n const handleNextMonth = useCallback((): void => {\r\n if (changeView) {\r\n setYearRangeStart((prev) => prev + 20);\r\n setAnnouncement(\r\n locale === 'en-us' ? 'Next years displayed' : 'Próximos anos exibidos'\r\n );\r\n } else {\r\n const newDate = new Date(year, month + 1, 1);\r\n onDateChange?.(newDate);\r\n setAnnouncement(\r\n locale === 'en-us'\r\n ? `Month changed to ${newDate.toLocaleDateString('en-US', { month: 'long', year: 'numeric' })}`\r\n : `Mês alterado para ${newDate.toLocaleDateString('pt-BR', { month: 'long', year: 'numeric' })}`\r\n );\r\n }\r\n }, [changeView, locale, year, month, onDateChange]);\r\n\r\n /**\r\n * Alterna entre visualização de mês e ano.\r\n */\r\n const handleToggleView = useCallback((): void => {\r\n setChangeView((prev) => !prev);\r\n }, []);\r\n\r\n /**\r\n * Handler de eventos de teclado para navegação.\r\n */\r\n const handleCalendarKeyDown = useCallback(\r\n (e: React.KeyboardEvent<HTMLDivElement>): void => {\r\n if (changeView) {\r\n if (e.key === 'ArrowLeft') {\r\n setYearRangeStart((prev) => prev - 20);\r\n setAnnouncement(\r\n locale === 'en-us'\r\n ? 'Previous years displayed'\r\n : 'Anos anteriores exibidos'\r\n );\r\n }\r\n if (e.key === 'ArrowRight') {\r\n setYearRangeStart((prev) => prev + 20);\r\n setAnnouncement(\r\n locale === 'en-us'\r\n ? 'Next years displayed'\r\n : 'Próximos anos exibidos'\r\n );\r\n }\r\n } else {\r\n if (e.key === 'ArrowLeft') {\r\n handlePrevMonth();\r\n }\r\n if (e.key === 'ArrowRight') {\r\n handleNextMonth();\r\n }\r\n }\r\n },\r\n [changeView, locale, handlePrevMonth, handleNextMonth]\r\n );\r\n\r\n /**\r\n * Handler para seleção de ano.\r\n */\r\n const handleYearSelect = useCallback(\r\n (selectedYear: number): void => {\r\n setChangeView(false);\r\n const newDate = new Date(selectedYear, month, 1);\r\n onDateChange?.(newDate);\r\n setAnnouncement(\r\n locale === 'en-us'\r\n ? `Year changed to ${selectedYear}`\r\n : `Ano alterado para ${selectedYear}`\r\n );\r\n },\r\n [month, onDateChange, locale]\r\n );\r\n\r\n /**\r\n * Handler para eventos de teclado nos dias.\r\n */\r\n const handleDayKeyDown = useCallback(\r\n (e: React.KeyboardEvent<HTMLDivElement>, day: number): void => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n handleSelectDay(day);\r\n }\r\n },\r\n [handleSelectDay]\r\n );\r\n\r\n /**\r\n * Renderiza os anos usando o array de objetos memoizado.\r\n */\r\n const renderYears = useCallback((): React.ReactNode => {\r\n return yearsArray.map((item) => (\r\n <div\r\n key={item.key}\r\n className={clsx(styles['zds-calendar__year'], {\r\n [styles['zds-calendar__year--current']]: item.isCurrent,\r\n })}\r\n onClick={() => handleYearSelect(item.year)}\r\n tabIndex={0}\r\n role=\"button\"\r\n aria-pressed={item.isCurrent}\r\n aria-label={\r\n item.isCurrent\r\n ? locale === 'en-us'\r\n ? `Current year, ${item.year}`\r\n : `Ano atual, ${item.year}`\r\n : locale === 'en-us'\r\n ? `Select year ${item.year}`\r\n : `Selecionar ano ${item.year}`\r\n }\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n handleYearSelect(item.year);\r\n }\r\n }}\r\n >\r\n {item.year}\r\n </div>\r\n ));\r\n }, [yearsArray, handleYearSelect, locale]);\r\n\r\n /**\r\n * Renderiza os dias do mês atual usando o array de objetos memoizado.\r\n */\r\n const renderDays = useCallback((): React.ReactNode => {\r\n return daysArray.map((item) => {\r\n if (item.type === 'empty') {\r\n return (\r\n <div\r\n key={item.key}\r\n className={clsx(styles['zds-calendar__day'], styles['zds-calendar__day--empty'])}\r\n aria-hidden=\"true\"\r\n />\r\n );\r\n }\r\n\r\n const dayItem = item as DayItem;\r\n const isDisabled = !isDateInRange(dayItem.date);\r\n\r\n return (\r\n <div\r\n key={dayItem.key}\r\n className={clsx(styles['zds-calendar__day'], {\r\n [styles['zds-calendar__day--today']]: dayItem.isToday,\r\n [styles['zds-calendar__day--selected']]: dayItem.isSelected,\r\n [styles['zds-calendar__day--disabled']]: isDisabled,\r\n })}\r\n onClick={isDisabled ? undefined : () => handleSelectDay(dayItem.day)}\r\n onKeyDown={\r\n isDisabled ? undefined : (e) => handleDayKeyDown(e, dayItem.day)\r\n }\r\n tabIndex={isDisabled ? -1 : 0}\r\n role=\"gridcell\"\r\n aria-selected={dayItem.isSelected}\r\n aria-current={dayItem.isToday ? 'date' : undefined}\r\n aria-disabled={isDisabled}\r\n aria-label={`${dayItem.day} ${getMonthName()} ${year}${\r\n dayItem.isToday ? ` (${t('today')})` : ''\r\n }${dayItem.isSelected ? ` (${t('selected')})` : ''}${\r\n isDisabled ? ` (${t('disabled')})` : ''\r\n }`}\r\n >\r\n {dayItem.day}\r\n </div>\r\n );\r\n });\r\n }, [\r\n daysArray,\r\n handleSelectDay,\r\n handleDayKeyDown,\r\n getMonthName,\r\n year,\r\n t,\r\n isDateInRange,\r\n ]);\r\n\r\n // ✅ Memoizar componentes de weekdays para evitar re-renders\r\n const weekdaysComponent = useMemo((): React.ReactNode | null => {\r\n if (changeView) return null;\r\n\r\n return weekDaysLabels.map((day, idx) => (\r\n <div key={`${day}-${idx}`} className={styles['zds-calendar__weekday']}>\r\n {day}\r\n </div>\r\n ));\r\n }, [changeView, weekDaysLabels]);\r\n\r\n // ✅ Limpa o anúncio após um tempo para evitar repetições\r\n useEffect(() => {\r\n if (announcement) {\r\n const timeout = setTimeout(() => setAnnouncement(''), 1500);\r\n return () => clearTimeout(timeout);\r\n }\r\n }, [announcement]);\r\n\r\n // ✅ Sempre que abrir a view de anos, centraliza o range no ano atual\r\n useEffect(() => {\r\n if (changeView) {\r\n setYearRangeStart(year - 13);\r\n }\r\n }, [changeView, year]);\r\n\r\n return (\r\n <div\r\n className={clsx(\r\n styles['zds-calendar'],\r\n { [styles['zds-calendar--year-view']]: changeView },\r\n className\r\n )}\r\n id={componentId}\r\n tabIndex={0}\r\n ref={calendarRef}\r\n onKeyDown={handleCalendarKeyDown}\r\n aria-label={t('calendar')}\r\n >\r\n {/* Screen reader announcements */}\r\n <div\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n className={styles['zds-calendar__aria-live']}\r\n style={{\r\n position: 'absolute',\r\n width: 1,\r\n height: 1,\r\n overflow: 'hidden',\r\n clip: 'rect(1px, 1px, 1px, 1px)',\r\n }}\r\n >\r\n {announcement}\r\n </div>\r\n\r\n {/* Header with month/year and navigation */}\r\n <div className={styles['zds-calendar__header']}>\r\n <span\r\n className={styles['zds-calendar__month-name']}\r\n onClick={handleToggleView}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n handleToggleView();\r\n }\r\n }}\r\n tabIndex={0}\r\n role=\"button\"\r\n aria-label={\r\n changeView\r\n ? locale === 'en-us'\r\n ? 'Close year selection'\r\n : 'Fechar seleção de ano'\r\n : locale === 'en-us'\r\n ? 'Open year selection'\r\n : 'Abrir seleção de ano'\r\n }\r\n >\r\n {`${getMonthName()} ${year}`}\r\n {changeView ? (\r\n <ChevronUp16Regular aria-hidden=\"true\" />\r\n ) : (\r\n <ChevronDown16Regular aria-hidden=\"true\" />\r\n )}\r\n </span>\r\n\r\n <div className={styles['zds-calendar__navigation']}>\r\n <button\r\n onClick={handlePrevMonth}\r\n aria-label={\r\n changeView\r\n ? locale === 'en-us'\r\n ? 'Show previous years'\r\n : 'Mostrar anos anteriores'\r\n : locale === 'en-us'\r\n ? `Previous month, ${new Date(year, month - 1, 1).toLocaleDateString('en-US', { month: 'long', year: 'numeric' })}`\r\n : `Mês anterior, ${new Date(year, month - 1, 1).toLocaleDateString('pt-BR', { month: 'long', year: 'numeric' })}`\r\n }\r\n type=\"button\"\r\n className=\"zds-calendar__nav-button\"\r\n >\r\n <ChevronLeft16Regular aria-hidden=\"true\" />\r\n </button>\r\n\r\n <button\r\n onClick={handleNextMonth}\r\n aria-label={\r\n changeView\r\n ? locale === 'en-us'\r\n ? 'Show next years'\r\n : 'Mostrar próximos anos'\r\n : locale === 'en-us'\r\n ? `Next month, ${new Date(year, month + 1, 1).toLocaleDateString('en-US', { month: 'long', year: 'numeric' })}`\r\n : `Próximo mês, ${new Date(year, month + 1, 1).toLocaleDateString('pt-BR', { month: 'long', year: 'numeric' })}`\r\n }\r\n type=\"button\"\r\n className=\"zds-calendar__nav-button\"\r\n >\r\n <ChevronRight16Regular aria-hidden=\"true\" />\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {/* Weekdays header */}\r\n <div className={styles['zds-calendar__weekdays']}>{weekdaysComponent}</div>\r\n\r\n {/* Calendar grid - days or years */}\r\n <div className={styles['zds-calendar__grid']}>\r\n {changeView ? (\r\n <div\r\n className={styles['zds-calendar__year-view']}\r\n role=\"grid\"\r\n aria-label={t('yearSelection')}\r\n >\r\n {renderYears()}\r\n </div>\r\n ) : (\r\n <div\r\n className={styles['zds-calendar__days']}\r\n role=\"grid\"\r\n aria-label={`${getMonthName()} ${year}`}\r\n >\r\n {renderDays()}\r\n </div>\r\n )}\r\n </div>\r\n <div className={styles['zds-calendar__clear']}>\r\n <Button\r\n size=\"sm\"\r\n variant=\"outlined\"\r\n onClick={handleClearDate}\r\n disabled={!selectedDate}\r\n >\r\n Limpar\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n// ✅ Default props integrados na função usando valores padrão dos parâmetros\r\nCalendar.displayName = 'Calendar';\r\n\r\nconst MemoizedCalendar = React.memo(Calendar);\r\nMemoizedCalendar.displayName = 'Calendar';\r\n\r\nexport default MemoizedCalendar;\r\nexport type { CalendarProps, Locale, DateFormat };\r\n","import React, { useId } from 'react';\r\nimport clsx from 'clsx';\r\nimport styles from './Callout.module.scss';\r\nimport type { CalloutProps } from './Callout.types';\r\n\r\nconst Callout: React.FC<CalloutProps> = ({\r\n type = 'neutral',\r\n title = null,\r\n text = '',\r\n icon = null,\r\n className = '',\r\n id = ''\r\n}) => {\r\n const generatedId = useId();\r\n const titleId = id || `callout-title-${generatedId}`;\r\n const componentId = id || generatedId;\r\n\r\n const calloutClass = clsx(\r\n styles['zds-callout__container'],\r\n styles[`zds-callout__${type}`],\r\n {\r\n [styles['zds-callout__container__with-title']]: title,\r\n [styles['zds-callout__no-icon']]: !icon,\r\n },\r\n className\r\n );\r\n\r\n return (\r\n <div\r\n id={componentId}\r\n className={calloutClass}\r\n aria-live=\"polite\"\r\n role=\"alert\"\r\n aria-labelledby={title ? titleId : undefined}\r\n >\r\n <div className={styles['zds-callout__content']}>\r\n {icon && <span className={styles['zds-callout__icon']}>{icon}</span>}\r\n <div className={styles['zds-callout__subcontent']}>\r\n {title && (\r\n <span id={titleId} className={styles['zds-callout__title']}>\r\n {title}\r\n </span>\r\n )}\r\n {text && <span className={styles['zds-callout__text']}>{text}</span>}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Callout;","import React from 'react';\r\n\r\nexport interface CheckSmallProps {\r\n className?: string;\r\n width?: number | string;\r\n height?: number | string;\r\n fill?: string;\r\n [key: string]: any;\r\n}\r\n\r\nconst CheckSmall: React.FC<CheckSmallProps> = ({ \r\n className = '',\r\n width = 12,\r\n height = 10,\r\n fill = 'white',\r\n ...restProps\r\n}) => {\r\n return (\r\n <svg \r\n width={width} \r\n height={height} \r\n viewBox=\"0 0 12 10\" \r\n fill=\"none\" \r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={className}\r\n aria-hidden=\"true\"\r\n {...restProps}\r\n >\r\n <path \r\n d=\"M4 9.4L0 5.4L1.4 4L4 6.6L10.6 0L12 1.4L4 9.4Z\" \r\n fill={fill} \r\n />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default CheckSmall;\r\n","import React from 'react';\r\n\r\nexport interface CheckHalfProps {\r\n className?: string;\r\n width?: number | string;\r\n height?: number | string;\r\n fill?: string;\r\n [key: string]: any;\r\n}\r\n\r\nconst CheckHalf: React.FC<CheckHalfProps> = ({ \r\n className = '',\r\n width = 16,\r\n height = 16,\r\n fill = 'white',\r\n ...restProps\r\n}) => {\r\n return (\r\n <svg \r\n width={width} \r\n height={height} \r\n viewBox=\"0 0 16 16\" \r\n fill=\"none\" \r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={className}\r\n aria-hidden=\"true\"\r\n {...restProps}\r\n >\r\n <g id=\"Icons/check_indeterminate_small\">\r\n <path \r\n id=\"icon\" \r\n d=\"M3 9V7H13V9H3Z\" \r\n fill={fill} \r\n />\r\n </g>\r\n </svg>\r\n );\r\n};\r\n\r\nexport default CheckHalf;\r\n","import * as React from 'react';\r\nimport { Checkbox as CheckboxRadix } from 'radix-ui';\r\nimport styles from './Checkbox.module.scss';\r\nimport { CheckSmall, CheckHalf } from '@/shared/icons';\r\nimport { CheckboxProps } from './Checkbox.types';\r\nimport clsx from 'clsx';\r\nimport { useId } from 'react';\r\n\r\nconst Checkbox: React.FC<CheckboxProps> = ({\r\n id,\r\n label='',\r\n onCheckedChange,\r\n checked,\r\n disabled,\r\n className,\r\n indeterminate = false,\r\n ...rest\r\n}) => {\r\n const componentId = id || useId();\r\n\r\n return (\r\n <div className={clsx(styles.container, className)}>\r\n <div\r\n className={clsx(styles.wrapperCheckbox, {\r\n [styles.disabled]: disabled,\r\n })}\r\n role=\"presentation\"\r\n tabIndex={disabled ? -1 : 0}\r\n >\r\n <CheckboxRadix.Root\r\n className={styles.root}\r\n checked={checked}\r\n id={componentId}\r\n onCheckedChange={onCheckedChange}\r\n disabled={disabled}\r\n data-disabled={disabled}\r\n data-indeterminate={indeterminate}\r\n aria-checked={indeterminate ? 'mixed' : checked ? 'true' : 'false'}\r\n {...rest}\r\n >\r\n <CheckboxRadix.Indicator className={styles.indicator}>\r\n {indeterminate ? <CheckHalf /> : <CheckSmall />}\r\n </CheckboxRadix.Indicator>\r\n </CheckboxRadix.Root>\r\n </div>\r\n <label\r\n className={clsx(styles.label, { [styles.disabled]: disabled })}\r\n htmlFor={componentId}\r\n >\r\n {label}\r\n </label>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Checkbox;\r\n","import React from 'react';\r\nimport styles from './Chips.module.scss';\r\nimport clsx from 'clsx';\r\nimport type { ChipsProps } from './Chips.types';\r\n\r\n/**\r\n * Componente Chips para exibir tags/etiquetas com ícones opcionais\r\n */\r\nconst Chips: React.FC<ChipsProps> = ({\r\n title,\r\n leftIcon = null,\r\n rightIcon = null,\r\n type = 'neutral',\r\n disabled = false,\r\n className = '',\r\n}) => {\r\n\r\n if (!title || title.trim() === '') {\r\n console.warn('Chips: title prop is required and cannot be empty');\r\n return null;\r\n }\r\n const chipsClass = clsx(\r\n styles['zds-chips'],\r\n styles[`zds-chips--${type}`],\r\n {\r\n [styles['zds-chips--disabled']]: disabled,\r\n [styles['has-left-icon']]: leftIcon,\r\n [styles['has-right-icon']]: rightIcon,\r\n },\r\n className\r\n );\r\n return (\r\n <div\r\n className={chipsClass}\r\n aria-label={`Chip: ${title}`}\r\n aria-disabled={disabled}\r\n >\r\n {leftIcon && (\r\n <span className={styles['zds-chips__icon__left']} aria-hidden=\"true\">\r\n {leftIcon}\r\n </span>\r\n )}\r\n <span className={styles['zds-chips__title']}>{title}</span>\r\n {rightIcon && (\r\n <span className={styles['zds-chips__icon__right']}>\r\n {rightIcon}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nconst MemoizedChips = React.memo(Chips);\r\nMemoizedChips.displayName = 'Chips';\r\n\r\nexport default MemoizedChips;","import styles from './Container.module.scss'\r\nimport type { ContainerProps } from './Container.types';\r\n\r\nexport default function Container({ children }: ContainerProps) {\r\n return (\r\n <main className={`${styles['container']} mx-auto`}>\r\n {children}\r\n </main>\r\n )\r\n}","import React from 'react';\r\nimport styles from './Tooltip.module.scss';\r\nimport { Tooltip as TooltipRadix} from \"radix-ui\";\r\nimport { TooltipProps } from './Tooltip.types';\r\n\r\n\r\nconst Tooltip: React.FC<TooltipProps> = ({\r\n\tchildren,\r\n\ttext ,\r\n\tside = 'bottom',\r\n\talign = 'start',\r\n\tmaxWidth,\r\n\tsideOffset = 10\r\n}) => {\r\n\treturn (\r\n\t\t<TooltipRadix.Provider >\r\n\t\t\t<TooltipRadix.Root>\r\n\t\t\t\t<TooltipRadix.Trigger asChild>\r\n\t\t\t\t\t<span className={styles.triggerWrapper}>\r\n\t\t\t\t\t\t{children}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</TooltipRadix.Trigger>\r\n\t\t\t\t<TooltipRadix.Portal>\r\n\t\t\t\t\t<TooltipRadix.Content\r\n\t\t\t\t\t\tclassName={styles.tooltipContent}\r\n\t\t\t\t\t\tside={side}\r\n\t\t\t\t\t\talign={align}\r\n\t\t\t\t\t\tsideOffset={sideOffset}\r\n\t\t\t\t\t\tstyle={{ maxWidth: maxWidth ? `${maxWidth}px` : 'auto' }}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{text}\r\n\t\t\t\t\t</TooltipRadix.Content>\r\n\t\t\t\t</TooltipRadix.Portal>\r\n\t\t\t</TooltipRadix.Root>\r\n\t\t</TooltipRadix.Provider>\r\n\t);\r\n};\r\n\r\nexport default Tooltip\r\n\r\n\r\n","import * as React from 'react';\r\nimport { Label } from 'radix-ui';\r\nimport styles from './index.module.scss';\r\nimport clsx from 'clsx';\r\nimport Tooltip from '../../components/Tooltip/Tooltip';\r\nimport { Info12Regular } from '@fluentui/react-icons';\r\n\r\ninterface LabelProps {\r\n children: React.ReactNode;\r\n htmlFor: string;\r\n required?: boolean;\r\n className?: string;\r\n tooltipText?: string;\r\n tooltip?: boolean;\r\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\r\n align?: \"start\" | \"center\" | \"end\";\r\n error?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\nconst LabelComponent = ({\r\n children,\r\n htmlFor,\r\n required = false,\r\n tooltip = false,\r\n tooltipText,\r\n side = 'bottom',\r\n\talign = 'start',\r\n className,\r\n error = false,\r\n disabled = false\r\n}: LabelProps) => (\r\n <>\r\n {tooltip ? (\r\n <Tooltip side={side} align={align} text={tooltipText || ''} >\r\n <Label.Root\r\n className={clsx(\r\n styles.wrapperLabel,\r\n error && styles.errorLabel,\r\n className\r\n )}\r\n htmlFor={htmlFor}\r\n >\r\n {children}\r\n {required && <span className={styles.requiredLabel}>*</span>}\r\n <Info12Regular className={styles.infoIcon} />\r\n </Label.Root>\r\n </Tooltip>\r\n ) : (\r\n <Label.Root\r\n className={clsx(\r\n styles.wrapperLabel,\r\n error && styles.errorLabel,\r\n disabled && styles.disabledLabel,\r\n className\r\n )}\r\n htmlFor={htmlFor}\r\n >\r\n {children}\r\n {required && <span className={styles.requiredLabel}>*</span>}\r\n </Label.Root>\r\n )}\r\n </>\r\n);\r\n\r\nexport default LabelComponent;\r\n","export interface ValidationParams {\r\n value: string;\r\n maxLength?: number;\r\n type?: string;\r\n errorMessage?: string;\r\n required?: boolean;\r\n}\r\n\r\nexport const validateInput = ({ \r\n value, \r\n maxLength, \r\n errorMessage, \r\n required \r\n}: ValidationParams): string => {\r\n if (required && value.trim() === '') {\r\n return errorMessage || 'Campo obrigatório.';\r\n }\r\n\r\n if (maxLength && value.length > maxLength) {\r\n return errorMessage || `Campo deve ter no máximo ${maxLength} caracteres.`;\r\n }\r\n\r\n return '';\r\n};\r\n","import React, { useState, useCallback, useId, forwardRef, useEffect } from 'react';\r\nimport clsx from 'clsx';\r\nimport { Dismiss16Regular } from '@fluentui/react-icons';\r\nimport LabelComponent from '../../shared/Label';\r\nimport styles from './TextField.module.scss';\r\nimport { validateInput } from './utils';\r\nimport type { TextFieldProps } from './TextField.types';\r\n\r\nconst TextField = forwardRef<HTMLInputElement, TextFieldProps>(\r\n (\r\n {\r\n className,\r\n value = '',\r\n label,\r\n placeholder,\r\n type = 'text',\r\n onChange,\r\n disabled = false,\r\n maxLength = 30,\r\n required = false,\r\n helperText,\r\n tooltip = false,\r\n tooltipText = '',\r\n side = 'bottom',\r\n\t align = 'start',\r\n errorMessage = '',\r\n id,\r\n icon,\r\n onBlur,\r\n onFocus,\r\n name,\r\n ...inputProps\r\n },\r\n ref\r\n ) => {\r\n const normalizeValue = (val: string | number): string => {\r\n return val === undefined || val === null ? '' : String(val);\r\n };\r\n \r\n const [inputValue, setInputValue] = useState(normalizeValue(value));\r\n const [inputError, setInputError] = useState('');\r\n const [isFocused, setIsFocused] = useState(false);\r\n const generatedId = useId();\r\n const componentId = id || generatedId;\r\n\r\n useEffect(() => {\r\n setInputValue(normalizeValue(value));\r\n }, [value]);\r\n\r\n const handleChange = useCallback(\r\n (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = e.target.value;\r\n\r\n if (!disabled && (!maxLength || newValue.length <= maxLength)) {\r\n setInputValue(newValue);\r\n onChange?.(newValue);\r\n }\r\n },\r\n [disabled, maxLength, onChange]\r\n );\r\n\r\n const handleClear = useCallback(() => {\r\n if (!disabled) {\r\n setInputValue('');\r\n onChange?.('');\r\n }\r\n }, [disabled, onChange]);\r\n\r\n const handleBlur = useCallback(\r\n (e: React.FocusEvent<HTMLInputElement>) => {\r\n const error = validateInput({\r\n value: inputValue,\r\n type,\r\n maxLength,\r\n errorMessage,\r\n required,\r\n });\r\n setInputError(error);\r\n setIsFocused(false);\r\n onBlur?.(e);\r\n },\r\n [inputValue, type, maxLength, errorMessage, required, onBlur]\r\n );\r\n\r\n const handleFocus = useCallback(\r\n (e: React.FocusEvent<HTMLInputElement>) => {\r\n setIsFocused(true);\r\n onFocus?.(e);\r\n },\r\n [onFocus]\r\n );\r\n\r\n const showCustomIcon = inputValue.trim().length === 0 && icon;\r\n const showClearIcon = isFocused && inputValue.trim().length > 0;\r\n const hasError = Boolean(inputError);\r\n const displayHelperText = inputError || helperText || '\\u00A0';\r\n const helperId = inputError\r\n ? `${componentId}-error`\r\n : helperText\r\n ? `${componentId}-helper`\r\n : undefined;\r\n\r\n const containerClass = clsx(styles.container, {\r\n [styles.error]: hasError,\r\n [styles.disabled]: disabled,\r\n [className!]: className,\r\n });\r\n\r\n return (\r\n <div className={containerClass}>\r\n {label && (\r\n <LabelComponent\r\n htmlFor={componentId}\r\n required={required}\r\n tooltip={tooltip}\r\n tooltipText={tooltipText}\r\n side={side}\r\n align={align}\r\n error={hasError}\r\n disabled={disabled}\r\n >\r\n {label}\r\n </LabelComponent>\r\n )}\r\n\r\n <div className={styles.inputWrapper}>\r\n <div className={styles.inputContainer}>\r\n <input\r\n {...inputProps}\r\n ref={ref}\r\n id={componentId}\r\n name={name}\r\n type={type}\r\n value={inputValue}\r\n placeholder={placeholder}\r\n onChange={handleChange}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n maxLength={maxLength}\r\n disabled={disabled}\r\n aria-invalid={hasError}\r\n aria-required={required}\r\n aria-describedby={helperId}\r\n />\r\n \r\n {showCustomIcon && <span className={styles.icon}>{icon}</span>}\r\n \r\n {showClearIcon && (\r\n <button\r\n type=\"button\"\r\n className={styles.clearButton}\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n handleClear();\r\n }}\r\n aria-label=\"Limpar campo\"\r\n tabIndex={-1}\r\n >\r\n <Dismiss16Regular />\r\n </button>\r\n )}\r\n </div>\r\n\r\n <span\r\n id={helperId}\r\n className={styles.helperText}\r\n aria-live={hasError ? 'polite' : undefined}\r\n >\r\n {displayHelperText}\r\n </span>\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextField.displayName = 'TextField';\r\n\r\nexport default React.memo(TextField);\r\n","// ✅ Types básicos\r\nexport type Locale = 'pt-br' | 'en-us';\r\n\r\n/**\r\n * Formata uma data para string conforme o locale.\r\n * @param date - Data a ser formatada\r\n * @param locale - Locale para formatação ('pt-br' ou 'en-us')\r\n * @returns String formatada da data\r\n */\r\nexport function formatDate(date: Date, locale: Locale = 'pt-br'): string {\r\n if (!date || !(date instanceof Date)) {\r\n return '';\r\n }\r\n\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const year = date.getFullYear();\r\n\r\n // Formatação baseada no locale\r\n if (locale === 'en-us') {\r\n return `${month}/${day}/${year}`;\r\n } else {\r\n return `${day}/${month}/${year}`;\r\n }\r\n}\r\n\r\n/**\r\n * Aplica máscara de data conforme o usuário digita.\r\n * @param value - Valor atual do input\r\n * @param locale - Locale para determinar o formato da máscara\r\n * @returns String com a máscara aplicada\r\n */\r\nexport function applyDateMask(value: string, locale: Locale = 'pt-br'): string {\r\n // Remove todos os caracteres que não são dígitos\r\n const digitsOnly = value.replace(/\\D/g, '');\r\n \r\n // Limita a 8 dígitos (DDMMAAAA ou MMDDAAAA)\r\n const limitedDigits = digitsOnly.slice(0, 8);\r\n \r\n // Aplica a máscara baseada no locale\r\n let masked = '';\r\n \r\n for (let i = 0; i < limitedDigits.length; i++) {\r\n // Adiciona barras nas posições corretas\r\n if (i === 2 || i === 4) {\r\n masked += '/';\r\n }\r\n masked += limitedDigits[i];\r\n }\r\n \r\n return masked;\r\n}\r\n\r\n/**\r\n * Valida se uma string está no formato correto de data para o locale.\r\n * @param value - String a ser validada\r\n * @param locale - Locale para validação\r\n * @returns true se o formato está correto\r\n */\r\nexport function isValidDateFormat(value: string, locale: Locale = 'pt-br'): boolean {\r\n const dateRegex = locale === 'en-us'\r\n ? /^(0[1-9]|1[0-2])\\/(0[1-9]|[12][0-9]|3[01])\\/\\d{4}$/\r\n : /^(0[1-9]|[12][0-9]|3[01])\\/(0[1-9]|1[0-2])\\/\\d{4}$/;\r\n \r\n return dateRegex.test(value);\r\n}\r\nexport function parseDate(dateString: string, locale: Locale = 'pt-br'): Date | null {\r\n if (!dateString || typeof dateString !== 'string') {\r\n return null;\r\n }\r\n\r\n // Regex para validação básica dd/mm/yyyy ou mm/dd/yyyy\r\n const dateRegex = /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/;\r\n const match = dateString.trim().match(dateRegex);\r\n \r\n if (!match) {\r\n return null;\r\n }\r\n\r\n const [, first, second, yearStr] = match;\r\n let day: number;\r\n let month: number;\r\n const year = parseInt(yearStr, 10);\r\n\r\n // Interpretação baseada no locale\r\n if (locale === 'en-us') {\r\n month = parseInt(first, 10);\r\n day = parseInt(second, 10);\r\n } else {\r\n day = parseInt(first, 10);\r\n month = parseInt(second, 10);\r\n }\r\n\r\n // Validação básica de ranges\r\n if (month < 1 || month > 12 || day < 1 || day > 31) {\r\n return null;\r\n }\r\n\r\n // Criar e validar a data\r\n const date = new Date(year, month - 1, day);\r\n \r\n // Verificar se a data criada corresponde aos componentes originais\r\n if (date.getFullYear() !== year || \r\n date.getMonth() !== month - 1 || \r\n date.getDate() !== day) {\r\n return null;\r\n }\r\n\r\n return date;\r\n}","import React, { useState, useEffect, useRef, useCallback, useId, KeyboardEvent, useMemo } from 'react';\r\nimport clsx from 'clsx';\r\nimport TextField from '../TextField';\r\nimport Calendar from '../Calendar/Calendar';\r\nimport { Calendar16Regular } from '@fluentui/react-icons';\r\nimport { formatDate, parseDate, applyDateMask, isValidDateFormat } from './DateUtils';\r\nimport styles from './DatePicker.module.scss';\r\nimport type { DatePickerProps } from './DatePicker.types';\r\n\r\nconst DatePicker: React.FC<DatePickerProps> = ({\r\n locale = 'pt-br',\r\n calendarPosition = 'left',\r\n helperText = '',\r\n required = false,\r\n label = 'Data',\r\n value,\r\n defaultValue,\r\n onChange,\r\n disabled = false,\r\n error: externalError,\r\n minDate,\r\n maxDate,\r\n className = '',\r\n 'data-testid': testId,\r\n}) => {\r\n // ✅ IDs únicos para acessibilidade\r\n const fieldId = useId();\r\n const calendarId = `${fieldId}-calendar`;\r\n const errorId = `${fieldId}-error`;\r\n const helperTextId = `${fieldId}-help`;\r\n\r\n // ✅ Suporte controlled/uncontrolled adequado\r\n const isControlled = value !== undefined;\r\n const [internalDate, setInternalDate] = useState<Date | null>(defaultValue || null);\r\n const [tempInputValue, setTempInputValue] = useState<string>('');\r\n const [isEditing, setIsEditing] = useState<boolean>(false);\r\n const [internalError, setInternalError] = useState<string>('');\r\n const [showCalendar, setShowCalendar] = useState<boolean>(false);\r\n const [currentDate, setCurrentDate] = useState<Date>(new Date());\r\n const wrapperRef = useRef<HTMLDivElement>(null);\r\n\r\n // ✅ Estados derivados - uma única fonte de verdade\r\n const currentSelectedDate = isControlled ? value : internalDate;\r\n const currentError = externalError || internalError;\r\n const displayValue = isEditing ? tempInputValue : (currentSelectedDate ? formatDate(currentSelectedDate, locale) : '');\r\n\r\n // ✅ Combinar helperText normal com mensagem de erro\r\n const combinedHelperText = useMemo(() => {\r\n const texts = [];\r\n if (helperText) {\r\n texts.push(helperText);\r\n }\r\n if (currentError) {\r\n texts.push(currentError);\r\n }\r\n return texts.join(' • ');\r\n }, [helperText, currentError]);\r\n\r\n // ✅ Click outside handler\r\n useEffect(() => {\r\n function handleClickOutside(event: MouseEvent) {\r\n if (wrapperRef.current && !wrapperRef.current.contains(event.target as Node)) {\r\n setShowCalendar(false);\r\n }\r\n }\r\n if (showCalendar) {\r\n document.addEventListener('mousedown', handleClickOutside);\r\n }\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n };\r\n }, [showCalendar]);\r\n\r\n // ✅ Handler unificado para mudança de data - SEMPRE chama onChange\r\n const handleDateChange = useCallback((newDate: Date | null) => {\r\n if (!isControlled) {\r\n setInternalDate(newDate);\r\n }\r\n onChange?.(newDate);\r\n setIsEditing(false);\r\n setTempInputValue('');\r\n setInternalError('');\r\n if (newDate) {\r\n setCurrentDate(newDate);\r\n }\r\n }, [isControlled, onChange]);\r\n\r\n const handleIconClick = () => {\r\n setShowCalendar((prev) => !prev);\r\n };\r\n\r\n const handleFieldClick = () => {\r\n if (!disabled) {\r\n setShowCalendar(true);\r\n }\r\n };\r\n\r\n const handleFieldFocus = () => {\r\n if (!disabled) {\r\n setShowCalendar(true);\r\n }\r\n };\r\n\r\n // ✅ FUNÇÃO CORRIGIDA: Permite números e barras da máscara\r\n const filterNumericInput = (inputValue: string): string => {\r\n // Permite apenas números e barras (para manter a máscara)\r\n return inputValue.replace(/[^\\d/]/g, '');\r\n };\r\n\r\n // ✅ Handler para prevenir teclas não numéricas\r\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\r\n const { key, ctrlKey, metaKey } = event;\r\n\r\n // ✅ NOVA FUNCIONALIDADE: Enter fecha calendário se data válida\r\n if (key === 'Enter') {\r\n if (showCalendar) {\r\n // Se há uma data válida selecionada, fechar calendário\r\n if (currentSelectedDate) {\r\n setShowCalendar(false);\r\n event.preventDefault();\r\n return;\r\n }\r\n // Se a data digitada está completa e válida, processar e fechar\r\n if (tempInputValue.length === 10 && isValidDateFormat(tempInputValue, locale)) {\r\n const parsedDate = parseDate(tempInputValue, locale);\r\n if (parsedDate && !isNaN(parsedDate.getTime())) {\r\n handleDateChange(parsedDate);\r\n setShowCalendar(false);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n } else {\r\n // Se calendário está fechado, Enter abre o calendário\r\n setShowCalendar(true);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n // ✅ Escape sempre fecha o calendário\r\n if (key === 'Escape') {\r\n if (showCalendar) {\r\n setShowCalendar(false);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n // Permite teclas de controle (Backspace, Delete, Tab, etc.)\r\n const controlKeys = [\r\n 'Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight',\r\n 'ArrowUp', 'ArrowDown', 'Home', 'End'\r\n ];\r\n\r\n // Permite Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+X (atalhos de teclado)\r\n const isCtrlCommand = ctrlKey || metaKey;\r\n const allowedCtrlKeys = ['a', 'c', 'v', 'x'];\r\n\r\n // Se é uma tecla de controle ou atalho permitido, deixa passar\r\n if (controlKeys.includes(key) || (isCtrlCommand && allowedCtrlKeys.includes(key.toLowerCase()))) {\r\n return;\r\n }\r\n\r\n // Se não é um número (0-9), previne a entrada\r\n if (!/^\\d$/.test(key)) {\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n const handleDaySelect = (newSelectedDate: Date) => {\r\n setShowCalendar(false);\r\n handleDateChange(newSelectedDate);\r\n };\r\n\r\n const handleTextFieldChange = (value: string) => {\r\n // ✅ Filtra caracteres inválidos, mantendo números e barras\r\n const filteredValue = filterNumericInput(value);\r\n\r\n // ✅ Remove barras para processar apenas números\r\n const numbersOnly = filteredValue.replace(/[^\\d]/g, '');\r\n\r\n // ✅ Aplica máscara progressiva em tempo real\r\n const maskedValue = applyDateMask(numbersOnly, locale);\r\n\r\n // ✅ Atualizar valor temporário SEMPRE (máscara em tempo real)\r\n setTempInputValue(maskedValue);\r\n setIsEditing(true);\r\n\r\n // ✅ Limpar erro se campo estiver vazio\r\n if (maskedValue === '') {\r\n setInternalError('');\r\n handleDateChange(null);\r\n setCurrentDate(new Date());\r\n return;\r\n }\r\n\r\n // ✅ Validar apenas quando data estiver completa (10 caracteres)\r\n if (maskedValue.length === 10) {\r\n if (isValidDateFormat(maskedValue, locale)) {\r\n const parsedDate = parseDate(maskedValue, locale);\r\n if (parsedDate && !isNaN(parsedDate.getTime())) {\r\n setInternalError('');\r\n handleDateChange(parsedDate);\r\n setCurrentDate(parsedDate);\r\n } else {\r\n setInternalError('Data inválida');\r\n handleDateChange(null);\r\n }\r\n } else {\r\n setInternalError('Data inválida');\r\n handleDateChange(null);\r\n }\r\n } else {\r\n // ✅ Data incompleta - limpar erro mas não validar ainda\r\n setInternalError('');\r\n // ✅ Não chamar handleDateChange para data incompleta\r\n }\r\n };\r\n\r\n // ✅ Effect para atualizar valor do campo quando data muda\r\n useEffect(() => {\r\n if (!isEditing && currentSelectedDate) {\r\n setTempInputValue(formatDate(currentSelectedDate, locale));\r\n }\r\n }, [locale, currentSelectedDate, isEditing]);\r\n\r\n return (\r\n <div ref={wrapperRef}>\r\n <div className={clsx(styles['zds-date-picker'])}>\r\n <TextField\r\n type=\"tel\"\r\n icon={\r\n <Calendar16Regular \r\n onClick={!disabled ? handleIconClick : undefined}\r\n className={clsx(\r\n styles['zds-date-picker__icon'],\r\n disabled && styles['zds-date-picker__icon--disabled']\r\n )}\r\n />\r\n }\r\n onChange={(e: string | number) => {\r\n handleTextFieldChange(String(e));\r\n }}\r\n onClick={!disabled ? handleFieldClick : undefined}\r\n onFocus={!disabled ? handleFieldFocus : undefined}\r\n onKeyDown={handleKeyDown}\r\n value={displayValue}\r\n helperText={combinedHelperText}\r\n maxLength={10}\r\n required={required}\r\n label={label}\r\n disabled={disabled}\r\n id={fieldId}\r\n className={className}\r\n data-testid={testId}\r\n placeholder={locale === 'en-us' ? 'MM/DD/YYYY' : 'DD/MM/YYYY'}\r\n aria-label=\"Open calendar\"\r\n aria-expanded={showCalendar}\r\n aria-controls={calendarId}\r\n aria-invalid={!!currentError}\r\n aria-describedby={currentError ? errorId : (helperText ? helperTextId : undefined)}\r\n />\r\n <div\r\n className={clsx(\r\n styles['zds-date-picker__calendar-popup'],\r\n calendarPosition === 'left' && styles['zds-calendar--left'],\r\n calendarPosition === 'right' && styles['zds-calendar--right']\r\n )}\r\n >\r\n {showCalendar && (\r\n <Calendar\r\n selectedDate={currentSelectedDate}\r\n currentDate={currentDate}\r\n onDateChange={setCurrentDate}\r\n onDaySelect={handleDaySelect}\r\n locale={locale}\r\n format={locale === 'en-us' ? 'mm/dd/yyyy' : 'dd/mm/yyyy'}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n id={calendarId}\r\n onClear={() => {\r\n handleDateChange(null);\r\n setCurrentDate(new Date());\r\n }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default React.memo(DatePicker);","import { useRef, useEffect } from \"react\";\r\n\r\nexport const useFocusTrap = (isActive: boolean) => {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!isActive || !containerRef.current) return;\r\n\r\n const container = containerRef.current;\r\n const focusableElements = container.querySelectorAll(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n \r\n const firstElement = focusableElements[0] as HTMLElement;\r\n const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\r\n\r\n const handleTabKey = (e: KeyboardEvent) => {\r\n if (e.key !== 'Tab') return;\r\n\r\n if (e.shiftKey) {\r\n // Shift + Tab (navegação reversa)\r\n if (document.activeElement === firstElement) {\r\n e.preventDefault();\r\n lastElement?.focus();\r\n }\r\n } else {\r\n // Tab normal\r\n if (document.activeElement === lastElement) {\r\n e.preventDefault();\r\n firstElement?.focus();\r\n }\r\n }\r\n };\r\n\r\n container.addEventListener('keydown', handleTabKey);\r\n firstElement?.focus(); // Foca primeiro elemento focável\r\n\r\n return () => {\r\n container.removeEventListener('keydown', handleTabKey);\r\n };\r\n }, [isActive]);\r\n\r\n return containerRef;\r\n};","import React, { useEffect, useRef, useId, useCallback, ReactNode } from 'react';\r\nimport styles from './Dialog.module.scss';\r\nimport Button from '../Button/Button';\r\nimport clsx from 'clsx';\r\nimport { useFocusTrap } from './utils/DialogUtils';\r\nimport type { DialogProps } from './Dialog.types';\r\n\r\n/**\r\n * Componente Dialog - Modal simples e acessível.\r\n * Não utiliza um wrapper externo, gerencia seu próprio backdrop e container.\r\n * Fecha ao clicar nos botões ou pressionar ESC.\r\n * Mantém o foco preso dentro do modal enquanto aberto (trap focus).\r\n */\r\nconst Dialog: React.FC<DialogProps> = ({\r\n show,\r\n title,\r\n text,\r\n textConfirm = 'OK',\r\n textCancel = 'Cancelar',\r\n fnConfirm,\r\n fnCancel,\r\n onClose,\r\n className,\r\n id: propId\r\n}) => {\r\n const dialogRef = useRef<HTMLDivElement>(null);\r\n const generatedId = useId();\r\n const id = propId || generatedId;\r\n\r\n const containerRef = useFocusTrap(show);\r\n\r\n const handleConfirm = useCallback((): void => {\r\n if (fnConfirm) fnConfirm();\r\n if (onClose) onClose();\r\n }, [fnConfirm, onClose]);\r\n\r\n /**\r\n * Handler para ação Cancelar.\r\n */\r\n const handleCancel = useCallback((): void => {\r\n if (fnCancel) fnCancel();\r\n if (onClose) onClose();\r\n }, [fnCancel, onClose]);\r\n\r\n // Foca o modal ao abrir e adiciona ESC para fechar\r\n useEffect(() => {\r\n if (show && dialogRef.current) {\r\n dialogRef.current.focus();\r\n }\r\n\r\n const handleKeyDown = (e: KeyboardEvent): void => {\r\n if (e.key === 'Escape') {\r\n handleCancel();\r\n }\r\n };\r\n\r\n if (show) {\r\n document.addEventListener('keydown', handleKeyDown);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleKeyDown);\r\n };\r\n }, [show, handleCancel]);\r\n if (!show) return null;\r\n\r\n return (\r\n <>\r\n {/* Backdrop/Overlay */}\r\n <div className={styles['zds-dialog__overlay']} />\r\n\r\n {/* Wrapper do Dialog */}\r\n <div className={styles['zds-dialog__wrapper']}>\r\n <div\r\n className={clsx(styles['zds-dialog'], className)}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n id={id}\r\n aria-labelledby={`zds-dialog-title-${id}`}\r\n aria-describedby={`zds-dialog-desc-${id}`}\r\n tabIndex={-1}\r\n ref={containerRef}\r\n >\r\n {/* Título */}\r\n <div id={`zds-dialog-title-${id}`} className={styles['zds-dialog__title']}>\r\n {title}\r\n </div>\r\n\r\n {/* Conteúdo/Texto */}\r\n <div id={`zds-dialog-desc-${id}`} className={styles['zds-dialog__text']}>\r\n {text}\r\n </div>\r\n\r\n {/* Ações/Botões */}\r\n <div className={styles['zds-dialog__actions']}>\r\n {!!(textCancel && textCancel.trim()) && (\r\n <Button variant=\"outlined\" onClick={handleCancel}>\r\n {textCancel}\r\n </Button>\r\n )}\r\n <Button variant=\"filled\" onClick={handleConfirm}>\r\n {textConfirm}\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\n// Memoização para otimização de performance\r\nconst MemoizedDialog = React.memo(Dialog);\r\nMemoizedDialog.displayName = 'Dialog';\r\n\r\nexport default MemoizedDialog;","import React, { useEffect, useState, useCallback, ReactNode, ReactElement } from 'react';\r\nimport clsx from 'clsx';\r\nimport styles from './Drawer.module.scss';\r\nimport { Dismiss16Regular } from '@fluentui/react-icons';\r\nimport Button from '../Button/Button';\r\nimport type { DrawerProps, DrawerExampleProps } from './Drawer.types';\r\n\r\n/**\r\n * Componente Drawer do Zanthus Design System\r\n * Implementa um painel lateral deslizante com overlay\r\n * Segue padrões WCAG 2.1 AA para acessibilidade\r\n */\r\nconst Drawer: React.FC<DrawerProps> = ({\r\n children,\r\n customWidth = '400px', // ✅ Valor padrão útil\r\n onClose,\r\n title = 'Título',\r\n isOpen = false,\r\n onOpen,\r\n className = '',\r\n id,\r\n disabled = false,\r\n onOverlayClick,\r\n closeOnOverlayClick = true,\r\n closeOnEscape = true,\r\n}) => {\r\n\r\n const internalClose = useCallback((): void => {\r\n if (disabled) return;\r\n\r\n onClose();\r\n }, [onClose, disabled]);\r\n\r\n /**\r\n * Manipula clique no overlay\r\n * Fecha o drawer se closeOnOverlayClick estiver habilitado\r\n */\r\n const handleOverlayClick = useCallback((): void => {\r\n if (onOverlayClick) {\r\n onOverlayClick();\r\n }\r\n \r\n if (closeOnOverlayClick && !disabled) {\r\n internalClose();\r\n }\r\n }, [onOverlayClick, closeOnOverlayClick, internalClose, disabled]);\r\n\r\n /**\r\n * Fecha o drawer ao pressionar ESC\r\n * Adiciona e remove event listener baseado no estado isOpen\r\n */\r\n useEffect(() => {\r\n if (!isOpen || !closeOnEscape) return;\r\n\r\n /**\r\n * Manipula teclas pressionadas\r\n * @param event - Evento de teclado\r\n */\r\n const handleKeyDown = (event: KeyboardEvent): void => {\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n internalClose();\r\n }\r\n };\r\n\r\n window.addEventListener('keydown', handleKeyDown);\r\n return () => window.removeEventListener('keydown', handleKeyDown);\r\n }, [isOpen, internalClose, closeOnEscape]);\r\n\r\n /**\r\n * Gerencia overflow do body baseado no estado isOpen\r\n */\r\n useEffect(() => {\r\n if (isOpen && !disabled) {\r\n // Executa callback de abertura se fornecido\r\n if (onOpen) {\r\n onOpen();\r\n }\r\n\r\n // Previne scroll do body quando drawer está aberto\r\n document.body.style.overflow = 'hidden';\r\n } else {\r\n // Restaura scroll do body\r\n document.body.style.overflow = 'unset';\r\n }\r\n\r\n return () => {\r\n document.body.style.overflow = 'unset';\r\n };\r\n }, [isOpen, onOpen, disabled]);\r\n\r\n /**\r\n * Previne propagação de eventos no drawer\r\n * Evita fechamento acidental ao clicar no conteúdo\r\n * @param event - Evento de clique\r\n */\r\n const handleDrawerClick = (event: React.MouseEvent<HTMLDivElement>): void => {\r\n event.stopPropagation();\r\n };\r\n\r\n /**\r\n * Manipula clique no botão de fechar\r\n * @param event - Evento de clique\r\n */\r\n const handleCloseClick = (event: React.MouseEvent<HTMLElement>): void => {\r\n event.stopPropagation();\r\n internalClose();\r\n };\r\n\r\n return (\r\n <>\r\n {/* Overlay/Shadow */}\r\n <div\r\n className={clsx(styles['zds-custom__drawer-shadow'], {\r\n [styles['zds-custom__drawer-shadow--visible']]: isOpen,\r\n })}\r\n onClick={handleOverlayClick}\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n data-testid=\"drawer-overlay\"\r\n />\r\n\r\n {/* Drawer Panel */}\r\n <div\r\n className={clsx(\r\n styles['zds-custom__drawer-sidebar'],\r\n {\r\n [styles['zds-custom__drawer-sidebar--open']]: isOpen,\r\n [styles['zds-custom__drawer-sidebar--disabled']]: disabled,\r\n },\r\n className\r\n )}\r\n style={{\r\n // ✅ APENAS: Width customizável via CSS custom property\r\n '--drawer-custom-width': customWidth,\r\n } as React.CSSProperties}\r\n onClick={handleDrawerClick}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={id ? `${id}-title` : 'drawer-title'}\r\n aria-hidden={!isOpen}\r\n data-testid=\"drawer-panel\"\r\n id={id}\r\n >\r\n \r\n <div className={clsx(styles['zds-drawer__title-close'])}>\r\n <div \r\n className={clsx(styles['zds-drawer__title'])} \r\n id={id ? `${id}-title` : 'drawer-title'}\r\n >\r\n {title}\r\n </div>\r\n <Button \r\n onClick={handleCloseClick}\r\n variant='text'\r\n iconOnly\r\n icon={<Dismiss16Regular />}\r\n size='lg'\r\n />\r\n </div>\r\n <div \r\n className={clsx(styles['zds-drawer__children'])} \r\n data-testid=\"drawer-content\"\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default Drawer;","import React, { useState, useId } from 'react';\r\nimport { Search16Regular, Dismiss16Regular } from '@fluentui/react-icons';\r\nimport clsx from 'clsx';\r\nimport styles from './Search.module.scss';\r\nimport type { SearchProps } from './Search.types';\r\n\r\nconst Search = React.forwardRef<HTMLInputElement, SearchProps>(\r\n (\r\n {\r\n placeholder = 'Dica do que deve ser buscado',\r\n disabled = false,\r\n value,\r\n onChange,\r\n onKeyDown,\r\n onFocus,\r\n onBlur,\r\n onClear,\r\n onClick,\r\n onMouseDown,\r\n id = '',\r\n className = '',\r\n 'data-testid': testId, \r\n },\r\n ref\r\n ) => {\r\n const [internalValue, setInternalValue] = useState<string>('');\r\n const isControlled = value !== undefined && onChange !== undefined;\r\n const currentValue = isControlled ? value : internalValue;\r\n const inputId = id || useId();\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\r\n if (disabled) return;\r\n\r\n if (isControlled) {\r\n onChange?.(e);\r\n } else {\r\n setInternalValue(e.target.value);\r\n }\r\n };\r\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>): void => {\r\n if (disabled) return;\r\n onFocus?.(e);\r\n };\r\n\r\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>): void => {\r\n if (disabled) return;\r\n onBlur?.(e);\r\n };\r\n const clearInputSearch = (): void => {\r\n if (disabled) return;\r\n\r\n if (isControlled) {\r\n const syntheticEvent = {\r\n target: { value: '' },\r\n currentTarget: { value: '' },\r\n } as React.ChangeEvent<HTMLInputElement>;\r\n\r\n onChange?.(syntheticEvent);\r\n } else {\r\n setInternalValue('');\r\n }\r\n onClear?.();\r\n };\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>): void => {\r\n if (disabled) return;\r\n onKeyDown?.(e);\r\n };\r\n const searchClass = clsx(styles['zds-search'], {\r\n disabled,\r\n [className]: className,\r\n });\r\n return (\r\n <div className={searchClass} onClick={onClick} onMouseDown={onMouseDown}>\r\n <span\r\n className={clsx(styles['zds-search__leftIcon'], { disabled })}\r\n tabIndex={-1}\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n >\r\n <Search16Regular />\r\n </span>\r\n\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n type=\"text\"\r\n placeholder={placeholder}\r\n aria-label={placeholder}\r\n value={currentValue || ''}\r\n onChange={handleChange}\r\n onKeyDown={handleKeyDown}\r\n disabled={disabled}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n data-testid={testId}\r\n />\r\n {currentValue && currentValue.length > 0 && (\r\n <span\r\n className={styles['zds-search__clearIcon']}\r\n aria-hidden=\"true\"\r\n onClick={clearInputSearch}\r\n >\r\n <Dismiss16Regular />\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSearch.displayName = 'ZdsSearch';\r\n\r\nexport default Search;\r\n","import { useCallback } from \"react\";\r\nimport type { DropdownItem, DropdownType } from './Dropdown.types';\r\n\r\n/**\r\n * Valida e filtra itens do dropdown baseado no tipo especificado\r\n * @param items - Array de itens para validar\r\n * @param type - Tipo do dropdown ('text' | 'checkbox' | 'icon')\r\n * @returns Array de itens válidos filtrados\r\n */\r\nexport const validateItems = (items: unknown, type: DropdownType): DropdownItem[] => {\r\n \r\n if (!Array.isArray(items)) return [];\r\n \r\n return items.filter((item: unknown, index: number): item is DropdownItem => {\r\n // Remove items inválidos\r\n if (!item || typeof item !== 'object') {\r\n console.warn(`Dropdown: Item ${index} inválido`);\r\n return false;\r\n }\r\n \r\n // Type assertion segura após verificação de tipo\r\n const dropdownItem = item as Partial<DropdownItem>;\r\n \r\n // Validação específica para tipo icon\r\n if (type === 'icon' && !dropdownItem.icon) {\r\n console.error(`Dropdown: Item ${index} precisa de ícone quando type='icon'`);\r\n return false;\r\n }\r\n \r\n // Precisa ter text ou id\r\n if (!dropdownItem.text && !dropdownItem.id) {\r\n console.warn(`Dropdown: Item ${index} precisa de text ou id`);\r\n return false;\r\n }\r\n \r\n return true;\r\n });\r\n};","import { useRef, useEffect, useState, useCallback } from 'react';\r\n\r\n/**\r\n * Props para o hook useInfiniteScroll\r\n */\r\ninterface UseInfiniteScrollProps {\r\n /** Status atual do carregamento */\r\n status: 'idle' | 'loading' | 'succeeded' | 'failed';\r\n /** Página atual */\r\n page: number;\r\n /** Última página disponível */\r\n lastPage: number;\r\n /** Callback para carregar próxima página */\r\n onLoadMore: () => void;\r\n /** Threshold para IntersectionObserver (0-1) */\r\n threshold?: number;\r\n /** Margem raiz para IntersectionObserver */\r\n rootMargin?: string;\r\n /** Habilita/desabilita o hook */\r\n enabled?: boolean;\r\n /** Debug mode - logs no console */\r\n debug?: boolean;\r\n}\r\n\r\n/**\r\n * Retorno do hook useInfiniteScroll\r\n */\r\ninterface UseInfiniteScrollReturn {\r\n /** Ref para o elemento observador */\r\n observerRef: React.RefObject<HTMLDivElement | null>;\r\n /** Se o elemento está visível */\r\n isIntersecting: boolean;\r\n /** Se há próxima página */\r\n hasNextPage: boolean;\r\n /** Se todas as páginas foram carregadas */\r\n isCompleted: boolean;\r\n /** Função para reset manual */\r\n reset: () => void;\r\n}\r\n\r\n/**\r\n * Hook otimizado para scroll infinito usando IntersectionObserver\r\n */\r\nexport function useInfiniteScroll({\r\n status,\r\n page,\r\n lastPage,\r\n onLoadMore,\r\n threshold = 0.1,\r\n rootMargin = '100px',\r\n enabled = true,\r\n debug = false\r\n}: UseInfiniteScrollProps): UseInfiniteScrollReturn {\r\n const observerRef = useRef<HTMLDivElement>(null);\r\n const [isIntersecting, setIsIntersecting] = useState(false);\r\n \r\n // Refs para controle de estado\r\n const loadingRef = useRef(false);\r\n const lastTriggeredPageRef = useRef(0);\r\n const onLoadMoreRef = useRef(onLoadMore);\r\n\r\n // Manter referência atualizada do callback\r\n useEffect(() => {\r\n onLoadMoreRef.current = onLoadMore;\r\n }, [onLoadMore]);\r\n\r\n // ✅ NOVO: Debug logger\r\n const debugLog = useCallback((message: string, data?: any) => {\r\n if (debug) {\r\n console.log(`🔄 [InfiniteScroll] ${message}`, data || '');\r\n }\r\n }, [debug]);\r\n\r\n // ✅ MELHORADO: Callback do IntersectionObserver com mais controles\r\n const handleIntersect = useCallback((entries: IntersectionObserverEntry[]) => {\r\n const [target] = entries;\r\n const isVisible = target.isIntersecting;\r\n \r\n setIsIntersecting(isVisible);\r\n debugLog('Element intersecting:', isVisible);\r\n\r\n // Verificar se pode carregar mais\r\n const canLoadMore = enabled &&\r\n isVisible && \r\n status !== 'loading' && \r\n !loadingRef.current &&\r\n page < lastPage &&\r\n page !== lastTriggeredPageRef.current;\r\n\r\n debugLog('Can load more check:', {\r\n enabled,\r\n isVisible,\r\n status,\r\n isLoading: loadingRef.current,\r\n page,\r\n lastPage,\r\n lastTriggered: lastTriggeredPageRef.current,\r\n canLoad: canLoadMore\r\n });\r\n\r\n if (canLoadMore) {\r\n debugLog('Triggering load more for next page');\r\n loadingRef.current = true;\r\n lastTriggeredPageRef.current = page;\r\n onLoadMoreRef.current();\r\n }\r\n }, [enabled, status, page, lastPage, debugLog]);\r\n\r\n // ✅ MELHORADO: Observer com configurações personalizáveis\r\n useEffect(() => {\r\n if (!enabled) {\r\n debugLog('Hook disabled, skipping observer setup');\r\n return;\r\n }\r\n\r\n const observer = new IntersectionObserver(handleIntersect, {\r\n root: null,\r\n rootMargin,\r\n threshold,\r\n });\r\n\r\n const currentObserverRef = observerRef.current;\r\n if (currentObserverRef) {\r\n observer.observe(currentObserverRef);\r\n debugLog('IntersectionObserver attached', { rootMargin, threshold });\r\n }\r\n\r\n return () => {\r\n if (currentObserverRef) {\r\n observer.unobserve(currentObserverRef);\r\n debugLog('IntersectionObserver detached');\r\n }\r\n };\r\n }, [handleIntersect, rootMargin, threshold, enabled, debugLog]);\r\n\r\n // ✅ NOVO: Reset do loading flag quando status muda\r\n useEffect(() => {\r\n if (status !== 'loading') {\r\n loadingRef.current = false;\r\n debugLog('Loading flag reset', { status });\r\n }\r\n }, [status, debugLog]);\r\n\r\n // ✅ NOVO: Função de reset manual\r\n const reset = useCallback(() => {\r\n loadingRef.current = false;\r\n lastTriggeredPageRef.current = 0;\r\n setIsIntersecting(false);\r\n debugLog('Hook manually reset');\r\n }, [debugLog]);\r\n\r\n // Estados calculados\r\n const hasNextPage = page < lastPage;\r\n const isCompleted = page >= lastPage;\r\n\r\n return {\r\n observerRef,\r\n isIntersecting,\r\n hasNextPage,\r\n isCompleted,\r\n reset\r\n };\r\n}","import clsx from 'clsx';\r\nimport React, {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n useRef,\r\n} from 'react';\r\nimport Search from '../Search';\r\nimport { validateItems } from './DropdownUtils';\r\nimport styles from './Dropdown.module.scss';\r\nimport Checkbox from '../Checkbox';\r\nimport Button from '../Button';\r\nimport { useInfiniteScroll } from '../../hooks/InfiniteScroll';\r\nimport type { DropdownItem, DropdownType, DropdownProps } from './Dropdown.types';\r\n\r\ninterface SelectedItemsState {\r\n [key: string]: boolean;\r\n}\r\n\r\nconst Dropdown: React.FC<DropdownProps> = ({\r\n className,\r\n items = [],\r\n id,\r\n type = 'text',\r\n applySearch = false,\r\n placeholder = '',\r\n onSelectionChange,\r\n showSubText = false,\r\n defaultSelectedIds = [],\r\n initialItemsSelected = {},\r\n maxWidth,\r\n minWidth,\r\n width,\r\n maxHeight,\r\n filter = false,\r\n position,\r\n infiniteScroll,\r\n}) => {\r\n const [selectedItems, setSelectedItems] = useState<SelectedItemsState>(() => {\r\n if (initialItemsSelected && Object.keys(initialItemsSelected).length > 0) {\r\n return initialItemsSelected;\r\n }\r\n if (defaultSelectedIds && defaultSelectedIds.length > 0) {\r\n const initialState: SelectedItemsState = {};\r\n defaultSelectedIds.forEach((itemId) => {\r\n initialState[itemId] = true;\r\n });\r\n return initialState;\r\n }\r\n return {};\r\n });\r\n\r\n const [internalItems, setInternalItems] = useState<DropdownItem[]>(items);\r\n const [focusedIndex, setFocusedIndex] = useState<number>(-1);\r\n const [inputValue, setInputValue] = useState<string>('');\r\n const [searchQuery, setSearchQuery] = useState<string>('');\r\n const [isSearchFocused, setIsSearchFocused] = useState<boolean>(false);\r\n const [tempSelectedItems, setTempSelectedItems] =\r\n useState<SelectedItemsState>({});\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n\r\n const infiniteScrollHook = useInfiniteScroll({\r\n status: infiniteScroll?.status || 'idle',\r\n page: infiniteScroll?.page || 1,\r\n lastPage: infiniteScroll?.lastPage || 1,\r\n onLoadMore: infiniteScroll?.onLoadMore || (() => {}),\r\n threshold: infiniteScroll?.threshold,\r\n rootMargin: infiniteScroll?.rootMargin,\r\n enabled: !!infiniteScroll,\r\n debug: infiniteScroll?.debug,\r\n });\r\n\r\n const searchVisible = applySearch || internalItems.length > 4;\r\n\r\n useEffect(() => {\r\n if (filter) {\r\n setTempSelectedItems(selectedItems);\r\n }\r\n }, [selectedItems, filter]);\r\n\r\n const handleSearchChange = useCallback(\r\n (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = event.target.value;\r\n setInputValue(newValue);\r\n setFocusedIndex(-1);\r\n if (newValue === '' && searchQuery !== '') {\r\n setSearchQuery('');\r\n }\r\n },\r\n [searchQuery]\r\n );\r\n\r\n const safeItems = useMemo(() => {\r\n if (!Array.isArray(items)) {\r\n console.warn(\r\n 'Dropdown: items deve ser um array. Recebido:',\r\n typeof items\r\n );\r\n return [];\r\n }\r\n if (items.length === 0) {\r\n return [];\r\n }\r\n return items;\r\n }, [items]);\r\n\r\n const validItems = useMemo(() => {\r\n return validateItems(safeItems, type);\r\n }, [safeItems, type]);\r\n\r\n const generateItemId = useCallback(\r\n (item: DropdownItem, index: number): string => {\r\n return item.id || `dropdown-item-${index}`;\r\n },\r\n []\r\n );\r\n\r\n const executeSearch = useCallback(() => {\r\n setSearchQuery(inputValue.trim());\r\n setFocusedIndex(-1);\r\n }, [inputValue]);\r\n\r\n const handleSearchClear = useCallback(() => {\r\n setInputValue('');\r\n setSearchQuery('');\r\n setFocusedIndex(-1);\r\n setIsSearchFocused(false);\r\n }, []);\r\n\r\n const handleSearchKeyDown = useCallback(\r\n (event: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (event.key === 'Enter') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n executeSearch();\r\n return;\r\n }\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n handleSearchClear();\r\n return;\r\n }\r\n if (event.key === 'Backspace') {\r\n if (inputValue.length < 2) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n handleSearchClear();\r\n }\r\n }\r\n },\r\n [executeSearch, handleSearchClear, inputValue]\r\n );\r\n\r\n const toggleSelection = useCallback(\r\n (itemId: string, item: DropdownItem) => {\r\n if (item?.disabled) return;\r\n if (filter) {\r\n setTempSelectedItems((prevSelected) => {\r\n let newSelected: SelectedItemsState;\r\n if (type === 'checkbox') {\r\n newSelected = {\r\n ...prevSelected,\r\n [itemId]: !prevSelected[itemId],\r\n };\r\n } else {\r\n newSelected = prevSelected[itemId] ? {} : { [itemId]: true };\r\n }\r\n return newSelected;\r\n });\r\n } else {\r\n setSelectedItems((prevSelected) => {\r\n let newSelected: SelectedItemsState;\r\n\r\n if (type === 'checkbox') {\r\n newSelected = {\r\n ...prevSelected,\r\n [itemId]: !prevSelected[itemId],\r\n };\r\n } else {\r\n newSelected = prevSelected[itemId] ? {} : { [itemId]: true };\r\n }\r\n return newSelected;\r\n });\r\n }\r\n },\r\n [filter, type]\r\n );\r\n\r\n const handleApplyFilter = useCallback(() => {\r\n if (!filter) return;\r\n setSelectedItems(tempSelectedItems);\r\n const selectedIds = Object.keys(tempSelectedItems).filter(\r\n (key) => tempSelectedItems[key]\r\n );\r\n onSelectionChange?.(selectedIds);\r\n }, [filter, tempSelectedItems, onSelectionChange]);\r\n\r\n const handleClearFilter = useCallback(() => {\r\n if (!filter) return;\r\n setTempSelectedItems({});\r\n setSelectedItems({});\r\n\r\n onSelectionChange?.([]);\r\n }, [filter, onSelectionChange]);\r\n\r\n const isFirstRender = React.useRef(true);\r\n useEffect(() => {\r\n if (isFirstRender.current) {\r\n isFirstRender.current = false;\r\n return;\r\n }\r\n if (!onSelectionChange) return;\r\n const selectedIds = Object.keys(selectedItems).filter(\r\n (key) => selectedItems[key]\r\n );\r\n onSelectionChange(selectedIds);\r\n }, [selectedItems, onSelectionChange]);\r\n\r\n useEffect(() => {\r\n setInternalItems(validItems);\r\n }, [validItems]);\r\n\r\n const handleItemClick = useCallback(\r\n (\r\n event: React.MouseEvent<HTMLLIElement>,\r\n itemId: string,\r\n item: DropdownItem\r\n ) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (!item?.disabled) {\r\n toggleSelection(itemId, item);\r\n }\r\n },\r\n [toggleSelection]\r\n );\r\n\r\n const renderItemContent = useCallback(\r\n (item: DropdownItem, index: number) => {\r\n const itemId = item.id || `dropdown-item-${index}`;\r\n const currentSelection = filter ? tempSelectedItems : selectedItems;\r\n\r\n return (\r\n <div\r\n className={clsx(styles['zds-dropdown__item-content'], {\r\n [styles['zds-dropdown__item-content--disabled']]: item.disabled,\r\n })}\r\n >\r\n {type === 'checkbox' && (\r\n <Checkbox\r\n checked={!!currentSelection[itemId]}\r\n onCheckedChange={(checked: boolean | 'indeterminate') => {\r\n if (checked === 'indeterminate') return;\r\n toggleSelection(itemId, item);\r\n }\r\n }\r\n disabled={item.disabled}\r\n label=\"\"\r\n />\r\n )}\r\n\r\n {type === 'icon' && item.icon && (\r\n <div className={styles['zds-dropdown__item-icon-container']}>\r\n <span\r\n className={styles['zds-dropdown__item-icon']}\r\n onClick={(event: React.MouseEvent<HTMLSpanElement>) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n handleItemClick(event as any, itemId, item);\r\n }}\r\n >\r\n {item.icon}\r\n </span>\r\n </div>\r\n )}\r\n\r\n <div className={styles['zds-dropdown__item-text']}>\r\n <span\r\n id={`dropdown-item-${itemId}-label`}\r\n className={styles['zds-dropdown__title']}\r\n >\r\n {item.text}\r\n </span>\r\n {showSubText && item.subText && (\r\n <span\r\n id={`dropdown-item-${itemId}-desc`}\r\n className={styles['zds-dropdown__subtext']}\r\n >\r\n {item.subText}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n },\r\n [\r\n type,\r\n selectedItems,\r\n tempSelectedItems,\r\n filter,\r\n toggleSelection,\r\n handleItemClick,\r\n showSubText,\r\n ]\r\n );\r\n\r\n const isMultiSelectable = useMemo(() => {\r\n return type === 'checkbox';\r\n }, [type]);\r\n\r\n const filteredItems = useMemo(() => {\r\n if (!searchQuery.trim()) {\r\n return internalItems;\r\n }\r\n return internalItems.filter((item) => {\r\n const searchText = searchQuery.toLowerCase();\r\n const itemText = item.text?.toLowerCase() || '';\r\n const itemSubText = item.subText?.toLowerCase() || '';\r\n return itemText.includes(searchText) || itemSubText.includes(searchText);\r\n });\r\n }, [internalItems, searchQuery]);\r\n\r\n const handleKeyDown = useCallback(\r\n (e: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (isSearchFocused) return;\r\n\r\n if (filteredItems.length === 0) return;\r\n\r\n switch (e.key) {\r\n case 'ArrowDown':\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setFocusedIndex((prevIndex) =>\r\n prevIndex < filteredItems.length - 1 ? prevIndex + 1 : 0\r\n );\r\n return;\r\n case 'ArrowUp':\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setFocusedIndex((prevIndex) =>\r\n prevIndex > 0 ? prevIndex - 1 : filteredItems.length - 1\r\n );\r\n return;\r\n case 'Enter':\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (focusedIndex >= 0 && focusedIndex < filteredItems.length) {\r\n const focusedItem = filteredItems[focusedIndex];\r\n const focusedItemId =\r\n focusedItem.id || `dropdown-item-${focusedIndex}`;\r\n toggleSelection(focusedItemId, focusedItem);\r\n }\r\n return;\r\n case 'Escape':\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setFocusedIndex(-1);\r\n handleSearchClear();\r\n return;\r\n default:\r\n return;\r\n }\r\n },\r\n [\r\n filteredItems,\r\n focusedIndex,\r\n toggleSelection,\r\n isSearchFocused,\r\n handleSearchClear,\r\n ]\r\n );\r\n\r\n const DropdownClass = clsx(\r\n styles['zds-dropdown__container'],\r\n styles[`zds-dropdown__container--${position}`],\r\n {\r\n [className || '']: className,\r\n [styles['zds-dropdown__container--search-active']]: searchQuery.length > 0,\r\n [styles['zds-dropdown__container--fixed-width']]: !!maxWidth,\r\n }\r\n );\r\n const dropdownStyles: React.CSSProperties = useMemo(() => {\r\n const styles: React.CSSProperties = {};\r\n\r\n if (maxWidth) {\r\n styles.maxWidth =\r\n typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth;\r\n styles.width = typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth;\r\n }\r\n if (minWidth) {\r\n styles.minWidth =\r\n typeof minWidth === 'number' ? `${minWidth}px` : minWidth;\r\n }\r\n if (width) {\r\n styles.width = typeof width === 'number' ? `${width}px` : width;\r\n }\r\n if (maxHeight) {\r\n styles.maxHeight =\r\n typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight;\r\n }\r\n\r\n return styles;\r\n }, [maxWidth, minWidth, width, maxHeight]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={DropdownClass}\r\n tabIndex={0}\r\n role=\"combobox\"\r\n aria-expanded={filteredItems.length > 0 ? 'true' : 'false'}\r\n aria-haspopup=\"listbox\"\r\n aria-owns={id ? `${id}-listbox` : undefined}\r\n aria-controls={id ? `${id}-listbox` : undefined}\r\n aria-activedescendant={\r\n focusedIndex >= 0 ? `${id}-option-${focusedIndex}` : undefined\r\n }\r\n aria-label=\"Dropdown de seleção\"\r\n aria-describedby={searchVisible ? `${id}-search-help` : undefined}\r\n onKeyDown={handleKeyDown}\r\n style={dropdownStyles}\r\n >\r\n <ul\r\n className={styles['zds-dropdown__list']}\r\n id={id || undefined}\r\n role=\"listbox\"\r\n aria-label=\"Lista de opções\"\r\n aria-multiselectable={isMultiSelectable}\r\n >\r\n {searchVisible && (\r\n <li role=\"none\" className={styles['zds-dropdown__search-container']}>\r\n <Search\r\n value={inputValue}\r\n placeholder={\r\n placeholder || 'Digite e pressione Enter para buscar...'\r\n }\r\n onChange={handleSearchChange}\r\n onKeyDown={handleSearchKeyDown}\r\n onFocus={() => setIsSearchFocused(true)}\r\n onBlur={() => setIsSearchFocused(false)}\r\n onClear={handleSearchClear}\r\n aria-label=\"Campo de busca - pressione Enter para pesquisar\"\r\n />\r\n </li>\r\n )}\r\n {filteredItems.length > 0 ? (\r\n filteredItems.map((item, index) => {\r\n const itemId = generateItemId(item, index);\r\n const currentSelection = filter ? tempSelectedItems : selectedItems;\r\n return (\r\n <li\r\n key={itemId}\r\n role=\"option\"\r\n aria-selected={!!currentSelection[itemId]}\r\n aria-labelledby={`dropdown-item-${itemId}-label`}\r\n aria-describedby={\r\n item.subText ? `dropdown-item-${itemId}-desc` : undefined\r\n }\r\n className={clsx(styles['zds-dropdown__item'], {\r\n [styles[`zds-dropdown__item--${type}`]]: type,\r\n [styles['zds-dropdown__item--selected']]: currentSelection[itemId],\r\n [styles['zds-dropdown__item--focused']]: focusedIndex === index,\r\n [styles['zds-dropdown__item--disabled']]: item.disabled,\r\n })}\r\n tabIndex={focusedIndex === index ? 0 : -1}\r\n onFocus={() => setFocusedIndex(index)}\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n handleItemClick(event, itemId, item);\r\n }}\r\n onMouseDown={(e: React.MouseEvent<HTMLLIElement>) => {\r\n if (!item.disabled) {\r\n e.preventDefault();\r\n setFocusedIndex(index);\r\n }\r\n }}\r\n >\r\n {renderItemContent(item, index)}\r\n </li>\r\n );\r\n })\r\n ) : (\r\n <li\r\n className={styles['zds-dropdown__no-results']}\r\n role=\"status\"\r\n aria-live=\"polite\"\r\n >\r\n Nenhum item corresponde à sua busca\r\n </li>\r\n )}\r\n {filter && (\r\n <div className={styles['zds-dropdown__container-filter']}>\r\n <Button size=\"sm\" variant=\"outlined\" onClick={handleClearFilter}>\r\n Limpar\r\n </Button>\r\n <Button size=\"sm\" onClick={handleApplyFilter}>\r\n Aplicar\r\n </Button>\r\n </div>\r\n )}\r\n {infiniteScrollHook && infiniteScrollHook.hasNextPage && (\r\n <li role=\"none\" className={styles['zds-dropdown__infinite-scroll-trigger']}>\r\n <div\r\n ref={infiniteScrollHook.observerRef}\r\n className={styles['zds-dropdown__loading-indicator']}\r\n >\r\n {infiniteScroll?.status === 'loading' ? (\r\n <span>Carregando...</span>\r\n ) : (\r\n <span>Trigger</span>\r\n )}\r\n </div>\r\n </li>\r\n )}\r\n </ul>\r\n </div>\r\n );\r\n};\r\n\r\nconst MemoizedDropdown = React.memo(Dropdown);\r\nMemoizedDropdown.displayName = 'Dropdown';\r\nexport default MemoizedDropdown;\r\n","// Filter.tsx\r\nimport React, {\r\n useState,\r\n useRef,\r\n useEffect,\r\n ReactNode,\r\n ReactElement,\r\n useCallback,\r\n useMemo,\r\n} from 'react';\r\nimport Button from '../Button';\r\nimport Dropdown from '../Dropdown/Dropdown';\r\nimport type { DropdownItem, DropdownType } from '../Dropdown/Dropdown.types';\r\nimport Calendar from '../Calendar/Calendar';\r\nimport styles from './Filter.module.scss';\r\nimport Badge from '../Badge';\r\nimport { ChevronDownRegular, Calendar16Regular } from '@fluentui/react-icons';\r\nimport clsx from 'clsx';\r\nimport type { FilterProps } from './Filter.types';\r\n// ✅ CORREÇÃO: Problema de loop infinito no useEffect\r\nconst Filter: React.FC<FilterProps> = ({\r\n items = [],\r\n type = 'checkbox',\r\n selectedIds = [],\r\n onApplyFilter,\r\n placeholder = 'Selecionar...',\r\n enableSearch = false,\r\n buttonText = 'Filter',\r\n icon,\r\n variant = 'outlined',\r\n onOpen,\r\n onClose,\r\n position = 'left',\r\n disabled = false,\r\n className = '',\r\n selectedDate,\r\n onDateSelect,\r\n onClearDate,\r\n minDate,\r\n maxDate,\r\n locale = 'pt-br',\r\n}) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [currentCalendarDate, setCurrentCalendarDate] = useState<Date | null>(\r\n () => selectedDate || new Date()\r\n );\r\n const filterRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (selectedDate) {\r\n setCurrentCalendarDate(selectedDate);\r\n }\r\n }, [selectedDate]);\r\n\r\n const handleCalendarNavigation = useCallback((date: Date) => {\r\n setCurrentCalendarDate(date);\r\n }, []);\r\n\r\n const handleDateSelection = useCallback(\r\n (date: Date) => {\r\n onDateSelect?.(date);\r\n setIsOpen(false);\r\n onClose?.();\r\n },\r\n [onDateSelect, onClose]\r\n );\r\n const handleClear = useCallback((): void => {\r\n onClearDate?.();\r\n setCurrentCalendarDate(new Date());\r\n setIsOpen(false);\r\n onClose?.();\r\n }, [onClearDate, onClose]);\r\n\r\n const buttonDisplayText = useMemo(() => {\r\n if (type === 'calendar' && selectedDate) {\r\n return selectedDate.toLocaleDateString(\r\n locale === 'pt-br' ? 'pt-BR' : 'en-US'\r\n );\r\n }\r\n\r\n if (!selectedIds?.length) return buttonText;\r\n\r\n const firstItem = items?.find((item) => item.id === selectedIds[0]);\r\n return firstItem?.text || selectedIds[0];\r\n }, [type, selectedDate, selectedIds, items, buttonText, locale]);\r\n\r\n const getBadgeValue = useCallback(() => {\r\n if (!selectedIds || selectedIds.length <= 1) {\r\n return null;\r\n }\r\n return selectedIds.length - 1;\r\n }, [selectedIds]);\r\n\r\n const handleToggle = useCallback(() => {\r\n if (disabled) return;\r\n\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n\r\n if (newState) {\r\n onOpen?.();\r\n } else {\r\n onClose?.();\r\n }\r\n }, [disabled, isOpen, onOpen, onClose]);\r\n\r\n const handleApplyFilter = useCallback(\r\n (newSelectedIds: string[]) => {\r\n onApplyFilter?.(newSelectedIds);\r\n setIsOpen(false);\r\n onClose?.();\r\n },\r\n [onApplyFilter, onClose]\r\n );\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n if (\r\n filterRef.current &&\r\n !filterRef.current.contains(event.target as Node)\r\n ) {\r\n if (isOpen) {\r\n setIsOpen(false);\r\n onClose?.();\r\n }\r\n }\r\n };\r\n\r\n if (isOpen) {\r\n document.addEventListener('mousedown', handleClickOutside);\r\n }\r\n\r\n return () => document.removeEventListener('mousedown', handleClickOutside);\r\n }, [isOpen, onClose]);\r\n\r\n useEffect(() => {\r\n const handleEscape = (event: KeyboardEvent) => {\r\n if (event.key === 'Escape' && isOpen) {\r\n setIsOpen(false);\r\n onClose?.();\r\n }\r\n };\r\n\r\n if (isOpen) {\r\n document.addEventListener('keydown', handleEscape);\r\n }\r\n\r\n return () => document.removeEventListener('keydown', handleEscape);\r\n }, [isOpen, onClose]);\r\n\r\n const filterClass = clsx(styles['zds-filter__container'], className);\r\n const dropdownClass = clsx(styles['zds-filter__dropdown'], {\r\n [styles[`zds-filter__dropdown--${position}`]]: position,\r\n });\r\n return (\r\n <div ref={filterRef} className={filterClass}>\r\n <Button\r\n variant={variant}\r\n onClick={handleToggle}\r\n disabled={disabled}\r\n icon={\r\n type === 'calendar' ? <Calendar16Regular /> : <ChevronDownRegular />\r\n }\r\n iconPosition=\"right\"\r\n size=\"lg\"\r\n >\r\n <div className={styles['zds-filter-button__content']}>\r\n {icon && <span className={styles['zds-filter-button__icon']}>{icon}</span>}\r\n <span className={styles['zds-filter-button__text']}>{buttonDisplayText}</span>\r\n <span\r\n className={`${styles['zds-filter-button__arrow']} ${isOpen ? styles['zds-filter-button__arrow--open'] : ''}`}\r\n >\r\n {getBadgeValue() && (\r\n <Badge badgeValue={`+${getBadgeValue()}`} type=\"status\" />\r\n )}\r\n </span>\r\n </div>\r\n </Button>\r\n\r\n {isOpen && (\r\n <div className={dropdownClass}>\r\n {type === 'calendar' ? (\r\n <Calendar\r\n currentDate={currentCalendarDate}\r\n selectedDate={selectedDate}\r\n onDaySelect={handleDateSelection}\r\n onDateChange={handleCalendarNavigation}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n locale={locale}\r\n onClear={handleClear}\r\n id={`filter-calendar-${filterRef.current?.id || ''}`}\r\n aria-label=\"Selecionar data para filtro\"\r\n />\r\n ) : (\r\n <Dropdown\r\n items={items}\r\n type={type as DropdownType}\r\n defaultSelectedIds={selectedIds}\r\n placeholder={placeholder}\r\n applySearch={enableSearch}\r\n filter={true}\r\n onSelectionChange={handleApplyFilter}\r\n />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Filter;\r\n","import React from 'react';\r\nimport { RadioGroup } from 'radix-ui';\r\nimport styles from './Radio.module.scss';\r\nimport { RadioGroupProps } from './Radio.types';\r\nimport { useId } from 'react';\r\nimport clsx from 'clsx';\r\nconst Radio: React.FC<RadioGroupProps> = ({\r\n items,\r\n onValueChange,\r\n defaultValue,\r\n name,\r\n id,\r\n ariaLabel,\r\n orientation = 'vertical',\r\n ...rest\r\n}) => {\r\n const componentId = id || useId();\r\n return (\r\n <RadioGroup.Root\r\n id={componentId}\r\n className={styles.root}\r\n defaultValue={defaultValue}\r\n onValueChange={onValueChange}\r\n name={name}\r\n aria-label={ariaLabel}\r\n data-orientation={orientation}\r\n orientation={orientation}\r\n {...rest}\r\n >\r\n {items.map(({ id, value, disabled, label }) => {\r\n const itemKey = id ?? value;\r\n const uniqueId = `${componentId}-item-${value}`;\r\n return (\r\n <div\r\n key={itemKey}\r\n className={clsx(styles.wrapper, { [styles.disabled]: disabled })}\r\n >\r\n <label className={styles.labelWrapper} htmlFor={uniqueId}>\r\n <div className={styles.itemWrapper}>\r\n <RadioGroup.Item\r\n disabled={disabled}\r\n className={styles.item}\r\n value={value}\r\n id={uniqueId}\r\n data-disabled={disabled}\r\n >\r\n <RadioGroup.Indicator className={styles.indicator} />\r\n </RadioGroup.Item>\r\n </div>\r\n <span className={styles.labelText}>{label}</span>\r\n </label>\r\n </div>\r\n );\r\n })}\r\n </RadioGroup.Root>\r\n );\r\n};\r\n\r\nexport default Radio;\r\n","import React, { useId, useCallback, useState, useEffect } from \"react\";\r\nimport clsx from \"clsx\";\r\nimport Checkbox from '../Checkbox/Checkbox';\r\nimport Radio from '../Radio/Radio';\r\nimport styles from './ListItem.module.scss';\r\nimport type { ListItemVariant, ListItemProps } from './ListItem.types';\r\n\r\n/**\r\n * Componente ListItem do Zanthus Design System\r\n * Implementa item de lista unificado com variações text, checkbox, radio e icon\r\n * Segue padrões WCAG 2.1 AA para acessibilidade\r\n */\r\nconst ListItem: React.FC<ListItemProps> = ({\r\n id,\r\n className,\r\n variant = 'text',\r\n text = '',\r\n name = '',\r\n subText,\r\n disabled = false,\r\n checked = false,\r\n selected = false,\r\n onClick,\r\n onChange,\r\n icon,\r\n value = '',\r\n showSubText = false,\r\n hovered = false\r\n}) => {\r\n const componentId = useId();\r\n const itemId = id || componentId;\r\n const [internalChecked, setInternalChecked] = useState<boolean>(checked);\r\n const [internalSelected, setInternalSelected] = useState<boolean>(selected);\r\n\r\n /**\r\n * Handler para clique em checkbox.\r\n * Alterna o estado e dispara o callback onChange.\r\n */\r\n const handleCheckboxClick = useCallback((e: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>): void => {\r\n if (disabled) return;\r\n const newChecked = !internalChecked;\r\n setInternalChecked(newChecked);\r\n onChange?.(newChecked);\r\n onClick?.(e);\r\n }, [disabled, internalChecked, onChange, onClick]);\r\n\r\n /**\r\n * Handler para clique em radio.\r\n * Marca como selecionado se ainda não estiver e dispara o callback onChange.\r\n */\r\n const handleRadioClick = useCallback((e: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>): void => {\r\n if (disabled) return;\r\n if (!internalChecked) {\r\n setInternalChecked(true);\r\n onChange?.(true);\r\n }\r\n onClick?.(e);\r\n }, [disabled, internalChecked, onChange, onClick]);\r\n\r\n /**\r\n * Handler para clique em variantes text e icon.\r\n * Alterna o estado de seleção interno.\r\n */\r\n const handleTextOrIconClick = useCallback((e: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>): void => {\r\n if (disabled) return;\r\n const newSelected = !internalSelected;\r\n setInternalSelected(newSelected);\r\n onClick?.(e);\r\n }, [disabled, internalSelected, onClick]);\r\n\r\n /**\r\n * Handler para eventos de teclado (Enter ou Espaço).\r\n * Direciona para o handler correto conforme o variant.\r\n */\r\n const handleKeyDown = useCallback((e: React.KeyboardEvent<HTMLLIElement>): void => {\r\n if (!disabled && (e.key === 'Enter' || e.key === ' ')) {\r\n e.preventDefault();\r\n switch (variant) {\r\n case 'checkbox':\r\n handleCheckboxClick(e);\r\n break;\r\n case 'radio':\r\n handleRadioClick(e);\r\n break;\r\n case 'text':\r\n case 'icon':\r\n default:\r\n handleTextOrIconClick(e);\r\n break;\r\n }\r\n }\r\n }, [disabled, variant, handleCheckboxClick, handleRadioClick, handleTextOrIconClick]);\r\n\r\n // ✅ Sincronização com props externas\r\n useEffect(() => {\r\n setInternalChecked(checked);\r\n }, [checked]);\r\n\r\n useEffect(() => {\r\n setInternalSelected(selected);\r\n }, [selected]);\r\n\r\n /**\r\n * Renderiza o conteúdo do item conforme o variant.\r\n */\r\n const renderVariantContent = useCallback((): React.ReactNode => {\r\n const validVariants: ListItemVariant[] = ['text', 'checkbox', 'radio', 'icon'];\r\n const currentVariant = validVariants.includes(variant) ? variant : 'text';\r\n\r\n switch (currentVariant) {\r\n case 'checkbox':\r\n return (\r\n <>\r\n <Checkbox\r\n checked={internalChecked}\r\n disabled={disabled}\r\n onCheckedChange={() => handleCheckboxClick({} as React.MouseEvent<HTMLElement>)}\r\n />\r\n <div className={styles['zds-list-item__wrapper-text']}>\r\n <span\r\n id={`${itemId}-text`}\r\n className={styles['zds-list-item__text']}\r\n onClick={handleCheckboxClick}\r\n >\r\n {text}\r\n </span>\r\n {showSubText && subText && (\r\n <span\r\n id={`${itemId}-subtext`}\r\n className={styles['zds-list-item__subtext']}\r\n onClick={handleCheckboxClick}\r\n >\r\n {subText}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n );\r\n\r\n case 'radio':\r\n return (\r\n <>\r\n <div className={styles['zds-list-item__wrapper-radio']}>\r\n <span className={styles['zds-list-item__radio']} aria-hidden=\"true\">\r\n <Radio\r\n name={name}\r\n onValueChange={() => handleRadioClick({} as React.MouseEvent<HTMLElement>)}\r\n items= {[{\r\n value: value,\r\n label: '',\r\n disabled: disabled}]}\r\n aria-labelledby={`${itemId}-text`}\r\n />\r\n </span>\r\n </div>\r\n <div className={styles['zds-list-item__wrapper-text']}>\r\n <span\r\n id={`${itemId}-text`}\r\n className={styles['zds-list-item__title']}\r\n onClick={handleRadioClick}\r\n >\r\n {text}\r\n </span>\r\n {showSubText && subText && (\r\n <span\r\n id={`${itemId}-subtext`}\r\n className={styles['zds-list-item__subtext']}\r\n >\r\n {subText}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n );\r\n\r\n case 'icon':\r\n return (\r\n <>\r\n <div className={styles['zds-list-item__wrapper-icon']}>\r\n {icon}\r\n </div>\r\n <div className={styles['zds-list-item__wrapper-text']}>\r\n <span\r\n id={`${itemId}-text`}\r\n className={styles['zds-list-item__title']}\r\n onClick={handleTextOrIconClick}\r\n >\r\n {text}\r\n </span>\r\n {showSubText && subText && (\r\n <span\r\n id={`${itemId}-subtext`}\r\n className={styles['zds-list-item__subtext']}\r\n >\r\n {subText}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n );\r\n\r\n case 'text':\r\n default:\r\n return (\r\n <div className={styles['zds-list-item__wrapper-text']}>\r\n <span\r\n id={`${itemId}-text`}\r\n className={styles['zds-list-item__title']}\r\n onClick={handleTextOrIconClick}\r\n >\r\n {text}\r\n </span>\r\n {showSubText && subText && (\r\n <span\r\n id={`${itemId}-subtext`}\r\n className={styles['zds-list-item__subtext']}\r\n >\r\n {subText}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n }, [variant, itemId, internalChecked, disabled, handleCheckboxClick, handleRadioClick, handleTextOrIconClick, value, text, showSubText, subText, icon, name]);\r\n\r\n const listItemClass = clsx(\r\n styles['zds-list-item__container'],\r\n {\r\n [styles[`zds-list-item--${variant}`]]: variant,\r\n [styles['zds-list-item--disabled']]: disabled,\r\n [styles['zds-list-item--hovered']]: hovered,\r\n [className || '']: className\r\n }\r\n );\r\n\r\n const getAriaChecked = useCallback((): boolean | undefined => {\r\n if (variant === 'checkbox' || variant === 'radio') {\r\n return internalChecked;\r\n }\r\n return undefined;\r\n }, [variant, internalChecked]);\r\n\r\n return (\r\n <li\r\n className={listItemClass}\r\n tabIndex={disabled ? -1 : 0}\r\n onKeyDown={handleKeyDown}\r\n aria-selected={variant === 'text' || variant === 'icon' ? internalSelected : undefined}\r\n aria-disabled={disabled}\r\n aria-checked={getAriaChecked()}\r\n aria-labelledby={`${itemId}-text`}\r\n aria-describedby={showSubText && subText ? `${itemId}-subtext` : undefined}\r\n data-testid=\"list-item\"\r\n >\r\n {renderVariantContent()}\r\n </li>\r\n );\r\n};\r\n\r\nexport default ListItem;","export const normalizeText = (text: React.ReactNode): string => {\r\n if (typeof text === 'string') return text.toLowerCase();\r\n if (typeof text === 'number') return text.toString().toLowerCase();\r\n if (typeof text === 'bigint') return text.toString().toLowerCase();\r\n if (typeof text === 'boolean') return text.toString().toLowerCase();\r\n return '';\r\n };\r\n\r\n","import { useCallback, useEffect, useRef } from 'react';\r\nimport { normalizeText } from '../../../hooks/NormalizeText';\r\nimport { MenuItemProps } from '../Menu.types';\r\n\r\ninterface UseSearchLogicProps {\r\n items: MenuItemProps[];\r\n searchValue: string;\r\n searchTerm: string;\r\n enableApiSearch?: boolean;\r\n onApiSearch?: (term: string) => void;\r\n}\r\n\r\ninterface UseSearchLogicReturn {\r\n filteredItems: MenuItemProps[];\r\n}\r\n\r\nexport const useSearchLogic = ({\r\n items,\r\n searchValue,\r\n searchTerm,\r\n enableApiSearch,\r\n onApiSearch,\r\n}: UseSearchLogicProps): UseSearchLogicReturn => {\r\n const debounceTimeoutRef = useRef<NodeJS.Timeout | null>(null);\r\n const lastSearchTermRef = useRef<string>('');\r\n const hasInitialSearchRef = useRef<boolean>(false);\r\n\r\n const debouncedApiSearch = useCallback(\r\n (term: string) => {\r\n if (lastSearchTermRef.current === term) {\r\n return;\r\n }\r\n\r\n lastSearchTermRef.current = term;\r\n\r\n if (debounceTimeoutRef.current) {\r\n clearTimeout(debounceTimeoutRef.current);\r\n }\r\n\r\n debounceTimeoutRef.current = setTimeout(() => {\r\n if (enableApiSearch && onApiSearch) {\r\n onApiSearch(term);\r\n }\r\n }, 200);\r\n },\r\n [enableApiSearch, onApiSearch]\r\n );\r\n\r\n useEffect(() => {\r\n if (enableApiSearch && !hasInitialSearchRef.current && onApiSearch) {\r\n hasInitialSearchRef.current = true;\r\n onApiSearch('');\r\n lastSearchTermRef.current = '';\r\n }\r\n }, [enableApiSearch, onApiSearch]);\r\n\r\n useEffect(() => {\r\n if (!enableApiSearch) return;\r\n\r\n if (searchValue.trim() === '') {\r\n debouncedApiSearch('');\r\n return;\r\n }\r\n if (searchTerm !== undefined && searchTerm.trim() !== '') {\r\n debouncedApiSearch(searchTerm);\r\n }\r\n }, [searchTerm, searchValue, enableApiSearch, debouncedApiSearch]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (debounceTimeoutRef.current) {\r\n clearTimeout(debounceTimeoutRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n const filteredItems = useCallback((): MenuItemProps[] => {\r\n if (enableApiSearch) {\r\n return items;\r\n }\r\n\r\n if (!searchValue.trim()) {\r\n return items;\r\n }\r\n\r\n const normalized = normalizeText(searchValue).toLowerCase();\r\n\r\n return items.filter((item) => {\r\n const text = normalizeText(item.text || '').toLowerCase();\r\n const subText = normalizeText(item.subText || '').toLowerCase();\r\n\r\n return text.includes(normalized) || subText.includes(normalized);\r\n });\r\n }, [items, searchValue, enableApiSearch]);\r\n\r\n return { filteredItems: filteredItems() };\r\n};\r\n","import { useState, useEffect, useCallback, useRef } from 'react';\r\nimport { MenuItemProps } from '../Menu.types';\r\n\r\nexport interface UseMenuLogicProps {\r\n selectedItems?: MenuItemProps[];\r\n onItemSelect?: (items: MenuItemProps) => void;\r\n onOpenChange?: (open: boolean) => void;\r\n}\r\n\r\nexport interface UseMenuLogicReturn {\r\n open: boolean;\r\n internalSelectedItems: MenuItemProps[];\r\n setOpen: (open: boolean) => void;\r\n handleItemSelect: (item: MenuItemProps) => void;\r\n isItemSelected: (item: MenuItemProps) => boolean;\r\n}\r\n\r\nexport function useMenuLogic({\r\n selectedItems = [],\r\n onItemSelect,\r\n onOpenChange,\r\n}: UseMenuLogicProps): UseMenuLogicReturn {\r\n \r\n const isControlledRef = useRef(selectedItems !== undefined);\r\n const prevSelectedItemsRef = useRef<MenuItemProps[]>(selectedItems);\r\n\r\n const [open, setOpenState] = useState(false);\r\n const [internalSelectedItems, setInternalSelectedItems] = useState<MenuItemProps[]>(\r\n selectedItems || []\r\n );\r\n\r\n const getItemKey = useCallback((item: MenuItemProps): string => {\r\n return item.value ?? item.id ?? item.text ?? '';\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!isControlledRef.current || !selectedItems) return;\r\n\r\n const prevKeys = prevSelectedItemsRef.current.map(getItemKey).sort().join(',');\r\n const currentKeys = selectedItems.map(getItemKey).sort().join(',');\r\n\r\n if (prevKeys !== currentKeys) {\r\n setInternalSelectedItems(selectedItems);\r\n prevSelectedItemsRef.current = selectedItems;\r\n }\r\n }, [selectedItems, getItemKey]);\r\n\r\n const setOpen = useCallback(\r\n (newOpen: boolean) => {\r\n setOpenState(newOpen);\r\n onOpenChange?.(newOpen);\r\n },\r\n [onOpenChange]\r\n );\r\n\r\n const isItemSelected = useCallback(\r\n (item: MenuItemProps): boolean => {\r\n const itemKey = getItemKey(item);\r\n if (!itemKey) return false;\r\n\r\n return internalSelectedItems.some(\r\n (selected) => getItemKey(selected) === itemKey\r\n );\r\n },\r\n [internalSelectedItems, getItemKey]\r\n );\r\n\r\n const handleItemSelect = useCallback(\r\n (item: MenuItemProps) => {\r\n const newSelection = [item];\r\n setInternalSelectedItems(newSelection);\r\n\r\n if (onItemSelect) {\r\n onItemSelect(item);\r\n }\r\n\r\n setOpen(false);\r\n },\r\n [onItemSelect, setOpen]\r\n );\r\n\r\n return {\r\n open,\r\n internalSelectedItems,\r\n setOpen,\r\n handleItemSelect,\r\n isItemSelected,\r\n };\r\n}\r\n\r\nexport default useMenuLogic;\r\n","import { memo } from 'react';\r\nimport { DropdownMenu } from 'radix-ui';\r\nimport { DefaultMenuItemProps } from '../Menu.types';\r\nimport styles from '../Menu.module.scss';\r\nimport clsx from 'clsx';\r\n\r\nexport const MenuItem = memo(({ item, isSelected, onSelect }: DefaultMenuItemProps) => {\r\n \r\n const handleSelect = () => {\r\n onSelect(item);\r\n };\r\n\r\n return (\r\n <DropdownMenu.Item\r\n className={clsx(styles.item, { [styles.itemSelected]: isSelected })}\r\n onSelect={handleSelect}\r\n disabled={item.disabled}\r\n >\r\n {item.icon && <span className={styles.itemIcon}>{item.icon}</span>}\r\n <div className={styles.wrapperText}>\r\n <span className={styles.itemText}>{item.text}</span>\r\n {item.subText && (\r\n <span className={styles.itemSubText}>{item.subText}</span>\r\n )}\r\n </div>\r\n </DropdownMenu.Item>\r\n );\r\n});\r\n\r\nMenuItem.displayName = 'MenuItem';\r\n\r\nexport default MenuItem;\r\n","import { useState, useEffect, useCallback, useRef } from 'react';\r\nimport { DropdownMenu } from 'radix-ui';\r\nimport styles from './Menu.module.scss';\r\nimport { MenuItemProps, MenuProps } from './Menu.types';\r\nimport { ChevronRight16Filled } from '@fluentui/react-icons';\r\nimport Search from '../Search';\r\nimport { useSearchLogic } from './hooks/useSearchLogic';\r\nimport { useMenuLogic } from './hooks/useMenuLogic';\r\nimport MenuItem from './components/MenuItem';\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\n\r\nconst Menu: React.FC<MenuProps> = ({\r\n items,\r\n children,\r\n onItemSelect,\r\n search,\r\n enableInfiniteScroll,\r\n onScrollEnd,\r\n isLoadingMore,\r\n onApiSearch,\r\n enableApiSearch,\r\n selectedItems = [],\r\n onOpenChange,\r\n align = 'start',\r\n className,\r\n maxHeight = 400,\r\n ...rest\r\n}) => {\r\n const itemsWrapperRef = useRef<HTMLDivElement>(null);\r\n const hasReachedEndRef = useRef<boolean>(false);\r\n const observerRef = useRef<IntersectionObserver | null>(null);\r\n const sentinelRef = useRef<HTMLDivElement | null>(null);\r\n const onScrollEndRef = useRef(onScrollEnd);\r\n const isLoadingMoreRef = useRef(isLoadingMore);\r\n\r\n const [searchInput, setSearchInput] = useState('');\r\n const [searchTerm, setSearchTerm] = useState('');\r\n\r\n const maxHeightStyle = typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight;\r\n\r\n const { open, setOpen, handleItemSelect: handleItemSelectLogic, isItemSelected } = useMenuLogic({\r\n selectedItems,\r\n onItemSelect,\r\n onOpenChange,\r\n });\r\n\r\n const handleItemSelect = useCallback((item: MenuItemProps) => {\r\n handleItemSelectLogic(item);\r\n }, [handleItemSelectLogic]);\r\n\r\n const { filteredItems } = useSearchLogic({\r\n items,\r\n searchValue: searchInput,\r\n searchTerm: searchTerm,\r\n onApiSearch,\r\n enableApiSearch,\r\n });\r\n\r\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const value = e.target.value;\r\n setSearchInput(value);\r\n\r\n if (value.trim() === '') {\r\n setSearchTerm('');\r\n }\r\n };\r\n\r\n const handleSearchKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n e.stopPropagation();\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n setSearchTerm(searchInput);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n onScrollEndRef.current = onScrollEnd;\r\n isLoadingMoreRef.current = isLoadingMore;\r\n }, [onScrollEnd, isLoadingMore]);\r\n\r\n useEffect(() => {\r\n if (!open || !enableInfiniteScroll) {\r\n return;\r\n }\r\n\r\n const setupTimer = setTimeout(() => {\r\n const container = itemsWrapperRef.current;\r\n const sentinel = sentinelRef.current;\r\n \r\n if (!container || !sentinel) {\r\n return;\r\n }\r\n\r\n observerRef.current = new IntersectionObserver(\r\n ([entry]) => {\r\n if (\r\n entry.isIntersecting &&\r\n !hasReachedEndRef.current &&\r\n !isLoadingMoreRef.current &&\r\n onScrollEndRef.current\r\n ) {\r\n hasReachedEndRef.current = true;\r\n onScrollEndRef.current();\r\n }\r\n },\r\n {\r\n root: container,\r\n threshold: 0.1,\r\n rootMargin: '50px',\r\n }\r\n );\r\n\r\n observerRef.current.observe(sentinel);\r\n }, 50);\r\n return () => {\r\n clearTimeout(setupTimer);\r\n if (observerRef.current) {\r\n observerRef.current.disconnect();\r\n observerRef.current = null;\r\n }\r\n };\r\n }, [open, enableInfiniteScroll]);\r\n\r\n useEffect(() => {\r\n if (!isLoadingMore && open && enableInfiniteScroll) {\r\n hasReachedEndRef.current = false;\r\n }\r\n }, [isLoadingMore, open, enableInfiniteScroll]);\r\n\r\n useEffect(() => {\r\n if (!open || !enableInfiniteScroll || !onScrollEnd || isLoadingMore) {\r\n return;\r\n }\r\n\r\n const timer = setTimeout(() => {\r\n const container = itemsWrapperRef.current;\r\n if (!container) {\r\n return;\r\n }\r\n\r\n const { scrollHeight, clientHeight } = container;\r\n \r\n if (scrollHeight <= clientHeight && !hasReachedEndRef.current) {\r\n hasReachedEndRef.current = true;\r\n onScrollEnd();\r\n }\r\n }, 200);\r\n\r\n return () => clearTimeout(timer);\r\n }, [open, enableInfiniteScroll, onScrollEnd, isLoadingMore, filteredItems.length]);\r\n\r\n const renderMenuItem = useCallback(\r\n (item: MenuItemProps, key: string | number) => {\r\n const hasChildren = item.children && item.children.length > 0;\r\n\r\n if (hasChildren) {\r\n return (\r\n <DropdownMenu.Sub key={key}>\r\n <DropdownMenu.SubTrigger\r\n className={styles.subTrigger}\r\n disabled={item.disabled}\r\n >\r\n {item.icon && (\r\n <span className={styles.itemIcon}>{item.icon}</span>\r\n )}\r\n <div className={styles.wrapperText}>\r\n <span className={styles.itemText}>{item.text}</span>\r\n {item.subText && (\r\n <span className={styles.itemSubText}>{item.subText}</span>\r\n )}\r\n </div>\r\n <ChevronRight16Filled className={styles.chevronIcon} />\r\n </DropdownMenu.SubTrigger>\r\n\r\n <DropdownMenu.Portal>\r\n <DropdownMenu.SubContent\r\n className={styles.subContent}\r\n sideOffset={16}\r\n collisionPadding={20}\r\n >\r\n {item.children!.map((childItem, childIndex) =>\r\n renderMenuItem(childItem, `${key}-${childIndex}`)\r\n )}\r\n </DropdownMenu.SubContent>\r\n </DropdownMenu.Portal>\r\n </DropdownMenu.Sub>\r\n );\r\n }\r\n return (\r\n <MenuItem\r\n key={key}\r\n item={item}\r\n isSelected={isItemSelected(item)}\r\n onSelect={handleItemSelect}\r\n />\r\n );\r\n },\r\n [handleItemSelect, isItemSelected]\r\n );\r\n\r\n const handleOpenChange = (newOpen: boolean) => {\r\n setOpen(newOpen);\r\n if (!newOpen) {\r\n hasReachedEndRef.current = false;\r\n }\r\n };\r\n\r\n return (\r\n <DropdownMenu.Root open={open} onOpenChange={handleOpenChange}>\r\n <DropdownMenu.Trigger asChild>{children}</DropdownMenu.Trigger>\r\n <DropdownMenu.Portal>\r\n <DropdownMenu.Content\r\n className={clsx(styles.content, className)}\r\n sideOffset={8}\r\n align={align}\r\n onKeyDown={(e) => {\r\n if (search) {\r\n e.stopPropagation();\r\n }\r\n }}\r\n {...rest}\r\n >\r\n {search && (\r\n <div className={styles.searchWrapper}>\r\n <Search\r\n placeholder=\"Buscar\"\r\n onChange={handleSearchChange}\r\n value={searchInput}\r\n onKeyDown={handleSearchKeyDown}\r\n />\r\n </div>\r\n )}\r\n\r\n <div \r\n className={styles.itemsWrapper} \r\n ref={itemsWrapperRef}\r\n style={{ maxHeight: maxHeightStyle }}\r\n >\r\n {filteredItems.length > 0 ? (\r\n filteredItems.map((item, index) =>\r\n renderMenuItem(item, item.value || item.text || `item-${index}`)\r\n )\r\n ) : (\r\n <div className={styles.emptyState}>Nenhum item encontrado</div>\r\n )}\r\n {enableInfiniteScroll && isLoadingMore && (\r\n <div className={styles.loadingMore}>Carregando mais itens...</div>\r\n )}\r\n {enableInfiniteScroll && (\r\n <div\r\n ref={sentinelRef}\r\n data-scroll-sentinel\r\n style={{ height: '1px', visibility: 'hidden' }}\r\n />\r\n )}\r\n </div>\r\n </DropdownMenu.Content>\r\n </DropdownMenu.Portal>\r\n </DropdownMenu.Root>\r\n );\r\n};\r\n\r\nexport default Menu;\r\n","import React, { useState, useRef, useCallback, useEffect, useId, useMemo } from 'react';\r\nimport Button from '../Button/Button';\r\nimport styles from './Quantity.module.scss';\r\nimport { Add16Regular, Subtract16Regular } from '@fluentui/react-icons';\r\nimport clsx from 'clsx';\r\nimport type { QuantityProps } from './Quantity.types';\r\n\r\n/**\r\n * Componente Quantity - permite incrementar/decrementar valores numéricos\r\n * Suporta modo controlado e não controlado, valores decimais e inteiros\r\n */\r\nconst Quantity: React.FC<QuantityProps> = ({\r\n defaultValue = 0,\r\n value: controlledValue,\r\n onChange,\r\n disabled = false,\r\n decimal = false,\r\n decimalPlaces = 2,\r\n size = 'lg',\r\n id,\r\n step,\r\n className\r\n}) => {\r\n // Determina se o componente é controlado externamente\r\n const isControlled = controlledValue !== undefined;\r\n\r\n // Estados internos para valor e input\r\n const [value, setValue] = useState<number>(isControlled ? controlledValue : defaultValue);\r\n const [inputValue, setInputValue] = useState<string>(\r\n decimal\r\n ? (isControlled ? controlledValue : defaultValue).toFixed(decimalPlaces)\r\n : String(isControlled ? controlledValue : defaultValue)\r\n );\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n const stepValue = step !== undefined ? step : decimal ? Math.pow(10, -decimalPlaces) : 1;\r\n\r\n const computedValue = useMemo(() => (isControlled ? controlledValue! : value), [isControlled, controlledValue, value]);\r\n const isMinValue = useMemo(() => computedValue === 0, [computedValue]);\r\n\r\n const validateProps = (decimalPlaces?: number, step?: number) => {\r\n if (decimalPlaces !== undefined && (decimalPlaces < 1 || decimalPlaces > 10)) {\r\n console.warn('decimalPlaces deve estar entre 1 e 10');\r\n }\r\n if (step !== undefined && step <= 0) {\r\n console.warn('step deve ser maior que 0');\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n validateProps(decimalPlaces, step);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (isControlled && controlledValue !== undefined) {\r\n setValue(controlledValue);\r\n setInputValue(decimal ? controlledValue.toFixed(decimalPlaces) : String(controlledValue));\r\n }\r\n }, [controlledValue, decimal, decimalPlaces, isControlled]);\r\n\r\n const increment = useCallback(() => {\r\n if (disabled) return;\r\n\r\n const newValue = computedValue + stepValue;\r\n\r\n if (!isControlled) {\r\n setValue(newValue);\r\n setInputValue(decimal ? newValue.toFixed(decimalPlaces) : String(newValue));\r\n }\r\n\r\n onChange?.(newValue);\r\n }, [disabled, computedValue, stepValue, decimal, decimalPlaces, isControlled, onChange]);\r\n\r\n const decrement = useCallback(() => {\r\n if (disabled) return;\r\n\r\n const newValue = Math.max(0, computedValue - stepValue);\r\n\r\n if (!isControlled) {\r\n setValue(newValue);\r\n setInputValue(decimal ? newValue.toFixed(decimalPlaces) : String(newValue));\r\n }\r\n\r\n onChange?.(newValue);\r\n }, [disabled, computedValue, stepValue, decimal, decimalPlaces, isControlled, onChange]);\r\n\r\n const filterInput = useCallback((inputValue: string): string => {\r\n if (decimal) {\r\n let filtered = inputValue.replace(/[^\\d.]/g, '');\r\n\r\n const parts = filtered.split('.');\r\n if (parts.length > 2) {\r\n filtered = parts[0] + '.' + parts.slice(1).join('');\r\n }\r\n\r\n if (filtered.length > 1 && filtered.startsWith('0') && !filtered.startsWith('0.')) {\r\n filtered = filtered.replace(/^0+/, '');\r\n }\r\n\r\n return filtered;\r\n } else {\r\n let filtered = inputValue.replace(/[^\\d]/g, '');\r\n\r\n if (filtered.length > 1 && filtered.startsWith('0')) {\r\n filtered = filtered.replace(/^0+/, '');\r\n }\r\n\r\n return filtered || '0'; // Se ficar vazio, retorna '0'\r\n }\r\n }, [decimal]);\r\n const handleInputChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (disabled) return;\r\n\r\n const rawValue = event.target.value;\r\n\r\n // ✅ APLICAR: Filtro em tempo real\r\n const filteredValue = filterInput(rawValue);\r\n\r\n // ✅ SEMPRE: Atualizar input com valor filtrado\r\n setInputValue(filteredValue);\r\n\r\n // ✅ PROCESSAR: Apenas valores válidos\r\n if (filteredValue === '' || filteredValue === '.') {\r\n if (!isControlled) {\r\n setValue(0);\r\n }\r\n onChange?.(0);\r\n return;\r\n }\r\n\r\n if (decimal) {\r\n // Estados intermediários permitidos\r\n if (filteredValue.endsWith('.')) {\r\n return; // \"5.\" é válido, mas não processa ainda\r\n }\r\n\r\n const parsedValue = parseFloat(filteredValue);\r\n if (!isNaN(parsedValue)) {\r\n if (!isControlled) {\r\n setValue(parsedValue);\r\n }\r\n onChange?.(parsedValue);\r\n }\r\n } else {\r\n const parsedValue = parseInt(filteredValue, 10);\r\n if (!isNaN(parsedValue)) {\r\n const validValue = Math.min(parsedValue, 9999);\r\n if (!isControlled) {\r\n setValue(validValue);\r\n }\r\n onChange?.(validValue);\r\n }\r\n }\r\n }, [disabled, decimal, isControlled, onChange]);\r\n\r\n\r\n const handleBlur = useCallback(() => {\r\n if (disabled) return;\r\n\r\n const currentValue = inputValue.trim();\r\n\r\n if (decimal) {\r\n if (currentValue === '' || currentValue === '.') {\r\n const resetValue = computedValue;\r\n setInputValue(resetValue.toFixed(decimalPlaces));\r\n return;\r\n }\r\n\r\n if (currentValue.endsWith('.')) {\r\n const baseValue = parseFloat(currentValue.slice(0, -1));\r\n if (!isNaN(baseValue)) {\r\n const formattedValue = baseValue.toFixed(decimalPlaces);\r\n setInputValue(formattedValue);\r\n\r\n if (!isControlled) {\r\n setValue(baseValue);\r\n }\r\n onChange?.(baseValue);\r\n }\r\n return;\r\n }\r\n\r\n const parsedValue = parseFloat(currentValue);\r\n if (!isNaN(parsedValue)) {\r\n const normalizedValue = Math.max(0, parsedValue);\r\n const formattedValue = normalizedValue.toFixed(decimalPlaces);\r\n setInputValue(formattedValue);\r\n\r\n if (!isControlled) {\r\n setValue(normalizedValue);\r\n }\r\n onChange?.(normalizedValue);\r\n } else {\r\n\r\n setInputValue(computedValue.toFixed(decimalPlaces));\r\n }\r\n } else {\r\n\r\n if (currentValue === '') {\r\n setInputValue(String(computedValue));\r\n return;\r\n }\r\n\r\n const parsedValue = parseInt(currentValue, 10);\r\n if (isNaN(parsedValue)) {\r\n setInputValue(String(computedValue));\r\n } else {\r\n const normalizedValue = Math.max(0, Math.min(parsedValue, 9999));\r\n setInputValue(String(normalizedValue));\r\n if (!isControlled) {\r\n setValue(normalizedValue);\r\n }\r\n onChange?.(normalizedValue);\r\n }\r\n }\r\n }, [disabled, decimal, inputValue, decimalPlaces, computedValue, isControlled, onChange]);\r\n\r\n\r\n const handleInputKeyDown = useCallback(\r\n (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (disabled) return;\r\n\r\n switch (e.key) {\r\n case 'ArrowUp':\r\n e.preventDefault();\r\n increment();\r\n break;\r\n\r\n case 'ArrowDown':\r\n e.preventDefault();\r\n decrement();\r\n break;\r\n\r\n case 'Enter':\r\n e.preventDefault();\r\n if (inputRef.current) {\r\n inputRef.current.blur();\r\n }\r\n break;\r\n\r\n case 'Escape':\r\n e.preventDefault();\r\n if (inputRef.current) {\r\n setInputValue(decimal ? computedValue.toFixed(decimalPlaces) : String(computedValue));\r\n inputRef.current.blur();\r\n }\r\n break;\r\n\r\n case 'Home':\r\n e.preventDefault();\r\n const minValue = 0;\r\n if (!isControlled) {\r\n setValue(minValue);\r\n setInputValue(decimal ? minValue.toFixed(decimalPlaces) : String(minValue));\r\n }\r\n onChange?.(minValue);\r\n break;\r\n\r\n case 'End':\r\n if (!decimal) {\r\n e.preventDefault();\r\n const maxValue = 9999;\r\n if (!isControlled) {\r\n setValue(maxValue);\r\n setInputValue(String(maxValue));\r\n }\r\n onChange?.(maxValue);\r\n }\r\n break;\r\n }\r\n },\r\n [disabled, increment, decrement, decimal, decimalPlaces, isControlled, onChange, computedValue]\r\n );\r\n\r\n const uniqueId = useId();\r\n const inputId = id || uniqueId;\r\n\r\n return (\r\n <div className={clsx(styles['zds-quantity'], { disabled }, className)}>\r\n <Button\r\n variant='outlined'\r\n size={size}\r\n type='button'\r\n iconOnly\r\n icon={<Subtract16Regular />}\r\n onClick={decrement}\r\n disabled={disabled || isMinValue}\r\n aria-label='Diminuir quantidade'\r\n />\r\n\r\n <input\r\n ref={inputRef}\r\n className={clsx(styles['zds-quantity__input'], { disabled })}\r\n type='text'\r\n value={inputValue}\r\n onChange={handleInputChange}\r\n onBlur={handleBlur}\r\n onKeyDown={handleInputKeyDown}\r\n id={inputId}\r\n min='0'\r\n step={stepValue}\r\n aria-label='Quantidade'\r\n role='spinbutton'\r\n aria-valuenow={computedValue}\r\n aria-valuemin={0}\r\n aria-valuemax={decimal ? undefined : 9999}\r\n disabled={disabled}\r\n inputMode={decimal ? 'decimal' : 'numeric'}\r\n\r\n />\r\n <Button\r\n variant='outlined'\r\n size={size}\r\n type='button'\r\n iconOnly\r\n onClick={increment}\r\n disabled={disabled}\r\n aria-label='Aumentar quantidade'\r\n icon={<Add16Regular />}\r\n\r\n />\r\n\r\n </div>\r\n );\r\n};\r\n\r\n\r\nconst memorizedQuantity = React.memo(Quantity);\r\nmemorizedQuantity.displayName = 'Quantity';\r\n\r\nexport default memorizedQuantity;","import clsx from 'clsx';\r\nimport React, { useRef } from 'react';\r\n\r\nimport Checkbox from '../../Checkbox';\r\nimport styles from '../index.module.scss';\r\nimport { CheckboxItemProps } from '../Select.types';\r\n\r\nconst CheckboxSelectItem: React.FC<CheckboxItemProps> = ({\r\n text,\r\n subTitle,\r\n disabled,\r\n checked,\r\n onCheckedChange,\r\n value,\r\n ...restProps\r\n}) => {\r\n const itemRef = useRef<HTMLDivElement>(null);\r\n\r\n const handleCheckboxChange = (checkedValue: boolean | 'indeterminate') => {\r\n onCheckedChange(Boolean(checkedValue));\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (disabled) return;\r\n\r\n if (e.key === ' ' || e.key === 'Enter') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n onCheckedChange(!checked);\r\n return;\r\n }\r\n\r\n if (e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n const nextElement = itemRef.current?.nextElementSibling as HTMLDivElement;\r\n if (nextElement && nextElement.getAttribute('tabIndex') === '0') {\r\n nextElement.focus();\r\n }\r\n return;\r\n }\r\n\r\n if (e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n const prevElement = itemRef.current?.previousElementSibling as HTMLDivElement;\r\n if (prevElement && prevElement.getAttribute('tabIndex') === '0') {\r\n prevElement.focus();\r\n }\r\n return;\r\n }\r\n };\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (disabled) return;\r\n \r\n const target = e.target as HTMLElement;\r\n const isCheckboxClick = target.closest('input[type=\"checkbox\"]') || \r\n target.closest('label');\r\n \r\n if (!isCheckboxClick) {\r\n e.preventDefault();\r\n onCheckedChange(!checked);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={itemRef}\r\n className={clsx(styles.checkboxItem, {\r\n [styles.disabled]: disabled,\r\n })}\r\n role=\"option\"\r\n aria-selected={checked}\r\n aria-disabled={disabled}\r\n data-selected={checked}\r\n data-testid={`checkbox-item-${value}`}\r\n tabIndex={disabled ? -1 : 0}\r\n onKeyDown={handleKeyDown}\r\n onClick={handleClick}\r\n {...restProps}\r\n >\r\n <div className={styles.checkboxContent}>\r\n <Checkbox\r\n checked={checked}\r\n onCheckedChange={handleCheckboxChange}\r\n disabled={disabled}\r\n label={\r\n <div className={styles.textContent}>\r\n <span className={styles.title}>{text}</span>\r\n {subTitle && <div className={styles.subTitle}>{subTitle}</div>}\r\n </div>\r\n }\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nCheckboxSelectItem.displayName = 'CheckboxSelectItem';\r\n\r\nexport default CheckboxSelectItem;","import { ChevronRight16Regular, ChevronDown16Regular } from '@fluentui/react-icons';\r\nimport clsx from 'clsx';\r\nimport React, { useState } from 'react';\r\n\r\nimport styles from '../index.module.scss';\r\n\r\nimport type { SelectItemProps, SelectVariant } from '../Select.types';\r\n\r\n\r\ninterface ExpandableSelectItemProps {\r\n item: SelectItemProps;\r\n variant: SelectVariant;\r\n onSelect: (value: string) => void;\r\n selectedValues: string[];\r\n level?: number; \r\n}\r\n\r\nconst ExpandableSelectItem: React.FC<ExpandableSelectItemProps> = ({\r\n item,\r\n variant,\r\n onSelect,\r\n selectedValues,\r\n level = 0,\r\n}) => {\r\n const [isExpanded, setIsExpanded] = useState(false);\r\n const hasChildren = item.children && item.children.length > 0;\r\n const isSelected = selectedValues.includes(item.value);\r\n\r\n const handleClick = (e: React.MouseEvent) => {\r\n if (hasChildren) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsExpanded(!isExpanded);\r\n } else {\r\n onSelect(item.value);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <div \r\n className={styles.expandableItemContainer}\r\n style={{ paddingLeft: `${level * 16}px` }}\r\n >\r\n <div \r\n className={clsx(styles.itemWrapper, {\r\n [styles.selected]: isSelected && !hasChildren,\r\n [styles.disabled]: item.disabled,\r\n })}\r\n onClick={handleClick}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n handleClick(e as unknown as React.MouseEvent);\r\n }\r\n }}\r\n role=\"button\"\r\n tabIndex={item.disabled ? -1 : 0}\r\n data-disabled={item.disabled || undefined}\r\n data-selected={isSelected && !hasChildren ? 'true' : undefined}\r\n data-testid={`select-item-${item.value}`}\r\n >\r\n {variant === 'icon' && item.icon && (\r\n <span className={styles.icon}>{item.icon}</span>\r\n )}\r\n \r\n <div className={styles.textContent}>\r\n <div className={styles.title}>{item.text}</div>\r\n {item.subTitle && <div className={styles.subTitle}>{item.subTitle}</div>}\r\n </div>\r\n \r\n {hasChildren && (\r\n <span className={styles.chevron}>\r\n {isExpanded ? <ChevronDown16Regular /> : <ChevronRight16Regular />}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n \r\n {hasChildren && isExpanded && (\r\n <div className={styles.childrenWrapper}>\r\n {item.children!.map((child) => (\r\n <ExpandableSelectItem\r\n key={child.id || child.value}\r\n item={child}\r\n variant={variant}\r\n onSelect={onSelect}\r\n selectedValues={selectedValues}\r\n level={level + 1}\r\n />\r\n ))}\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default ExpandableSelectItem;","import clsx from 'clsx';\r\nimport { Select } from 'radix-ui';\r\nimport React from 'react';\r\n\r\nimport styles from '../index.module.scss';\r\nimport { SelectItemProps, SelectVariant } from '../Select.types';\r\n\r\ninterface SelectItemComponentProps extends SelectItemProps {\r\n variant?: SelectVariant;\r\n}\r\n\r\nconst SelectItem = React.forwardRef<HTMLDivElement, SelectItemComponentProps>(\r\n ({ text, subTitle, icon, disabled, value, variant, ...restProps }, ref) => {\r\n return (\r\n <div\r\n className={clsx(styles.itemWrapper, {\r\n [styles.disabled]: disabled,\r\n })}\r\n data-disabled={disabled || undefined}\r\n data-testid={`select-item-${value}`}\r\n ref={ref}\r\n >\r\n {variant === 'icon' && icon && (\r\n <span className={styles.icon}>{icon}</span>\r\n )}\r\n\r\n <Select.Item\r\n className={clsx(styles.item, {\r\n [styles.disabled]: disabled,\r\n })}\r\n value={value}\r\n disabled={disabled}\r\n {...restProps}\r\n >\r\n <Select.ItemText className={styles.title}>{text}</Select.ItemText>\r\n {subTitle && <div className={styles.subTitle}>{subTitle}</div>}\r\n <Select.ItemIndicator className={styles.itemIndicator} />\r\n </Select.Item>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSelectItem.displayName = 'SelectItem';\r\n\r\nexport default SelectItem;","import { useReducer, useEffect, useRef, useCallback } from 'react';\r\n\r\nimport { normalizeText } from '../../../hooks/NormalizeText';\r\nimport {\r\n SelectState,\r\n SelectAction,\r\n UseSelectLogicProps,\r\n UseSelectLogicReturn,\r\n SelectItemProps,\r\n} from '../Select.types';\r\n\r\nconst initialState: SelectState = {\r\n isOpen: false,\r\n selectedValues: [],\r\n searchInput: '',\r\n searchTerm: '',\r\n touched: false,\r\n hasError: false,\r\n};\r\n\r\nfunction selectReducer(state: SelectState, action: SelectAction): SelectState {\r\n switch (action.type) {\r\n case 'SET_OPEN':\r\n return { ...state, isOpen: action.payload };\r\n case 'SET_SELECTED_VALUES':\r\n return { ...state, selectedValues: action.payload };\r\n case 'SET_SEARCH_INPUT':\r\n return { ...state, searchInput: action.payload };\r\n case 'SET_SEARCH_TERM':\r\n return { ...state, searchTerm: action.payload };\r\n case 'SET_TOUCHED':\r\n return { ...state, touched: action.payload };\r\n case 'SET_ERROR':\r\n return { ...state, hasError: action.payload };\r\n case 'RESET_SEARCH':\r\n return { ...state, searchInput: '', searchTerm: '' };\r\n case 'VALIDATE': {\r\n const hasError = action.payload.required && state.selectedValues.length === 0;\r\n return { ...state, hasError, touched: true };\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function useSelectLogic({\r\n value,\r\n required = false,\r\n search = false,\r\n onValueChange,\r\n onOpenChange,\r\n enableApiSearch = false,\r\n onApiSearch,\r\n isSearching = false,\r\n}: UseSelectLogicProps): UseSelectLogicReturn {\r\n const [state, dispatch] = useReducer(selectReducer, {\r\n ...initialState,\r\n selectedValues: Array.isArray(value) ? value : value ? [value] : [],\r\n });\r\n\r\n const searchInputRef = useRef<HTMLInputElement>(null);\r\n const debounceTimeoutRef = useRef<NodeJS.Timeout | null>(null);\r\n const hasInitialSearchRef = useRef<boolean>(false);\r\n const lastSearchTermRef = useRef<string>('');\r\n\r\n const debouncedApiSearch = useCallback(\r\n (searchTerm: string) => {\r\n if (lastSearchTermRef.current === searchTerm) {\r\n return;\r\n }\r\n \r\n lastSearchTermRef.current = searchTerm;\r\n \r\n if (debounceTimeoutRef.current) {\r\n clearTimeout(debounceTimeoutRef.current);\r\n }\r\n\r\n debounceTimeoutRef.current = setTimeout(() => {\r\n if (enableApiSearch && onApiSearch) {\r\n onApiSearch(searchTerm);\r\n }\r\n }, 300);\r\n },\r\n [enableApiSearch, onApiSearch]\r\n );\r\n\r\n useEffect(() => {\r\n const newValues = Array.isArray(value) ? value : value ? [value] : [];\r\n dispatch({ type: 'SET_SELECTED_VALUES', payload: newValues });\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n if (state.isOpen && search) {\r\n setTimeout(() => {\r\n searchInputRef.current?.focus();\r\n }, 0);\r\n }\r\n }, [state.isOpen, search]);\r\n\r\n useEffect(() => {\r\n if (!state.isOpen) {\r\n dispatch({ type: 'RESET_SEARCH' });\r\n hasInitialSearchRef.current = false;\r\n lastSearchTermRef.current = '';\r\n }\r\n }, [state.isOpen]);\r\n\r\n useEffect(() => {\r\n if (state.isOpen && enableApiSearch && !hasInitialSearchRef.current) {\r\n hasInitialSearchRef.current = true;\r\n if (onApiSearch) {\r\n onApiSearch('');\r\n lastSearchTermRef.current = '';\r\n }\r\n }\r\n }, [state.isOpen, enableApiSearch, onApiSearch]);\r\n\r\n useEffect(() => {\r\n if (enableApiSearch && state.searchTerm && state.isOpen) {\r\n if (lastSearchTermRef.current !== state.searchTerm) {\r\n debouncedApiSearch(state.searchTerm);\r\n }\r\n }\r\n }, [state.searchTerm, enableApiSearch, state.isOpen, debouncedApiSearch]);\r\n\r\n useEffect(() => {\r\n if (enableApiSearch && state.isOpen && state.searchInput === '' && state.searchTerm === '') {\r\n if (lastSearchTermRef.current !== '') {\r\n lastSearchTermRef.current = '';\r\n if (onApiSearch) {\r\n onApiSearch('');\r\n }\r\n }\r\n }\r\n }, [state.searchInput, state.searchTerm, enableApiSearch, state.isOpen, onApiSearch]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (debounceTimeoutRef.current) {\r\n clearTimeout(debounceTimeoutRef.current);\r\n }\r\n hasInitialSearchRef.current = false;\r\n lastSearchTermRef.current = '';\r\n };\r\n }, []);\r\n\r\n const setOpen = (open: boolean) => {\r\n dispatch({ type: 'SET_OPEN', payload: open });\r\n onOpenChange?.(open);\r\n\r\n if (!open) {\r\n dispatch({ type: 'VALIDATE', payload: { required } });\r\n }\r\n };\r\n\r\n const setSelectedValues = (values: string[]) => {\r\n dispatch({ type: 'SET_SELECTED_VALUES', payload: values });\r\n };\r\n\r\n const setSearchInput = (input: string) => {\r\n dispatch({ type: 'SET_SEARCH_INPUT', payload: input });\r\n };\r\n\r\n const setSearchTerm = (term: string) => {\r\n dispatch({ type: 'SET_SEARCH_TERM', payload: term });\r\n };\r\n\r\n const setTouched = (touched: boolean) => {\r\n dispatch({ type: 'SET_TOUCHED', payload: touched });\r\n };\r\n\r\n const setError = (error: boolean) => {\r\n dispatch({ type: 'SET_ERROR', payload: error });\r\n };\r\n\r\n const resetSearch = () => {\r\n dispatch({ type: 'RESET_SEARCH' });\r\n lastSearchTermRef.current = '';\r\n };\r\n\r\n const validate = () => {\r\n dispatch({ type: 'VALIDATE', payload: { required } });\r\n };\r\n\r\n const handleSingleSelect = (newValue: string) => {\r\n const newValues = [newValue];\r\n setSelectedValues(newValues);\r\n onValueChange?.(newValue);\r\n setOpen(false);\r\n\r\n if (required && state.hasError) {\r\n setError(false);\r\n }\r\n };\r\n\r\n const handleMultipleSelect = (itemValue: string, checked: boolean) => {\r\n let newSelectedValues: string[];\r\n\r\n if (checked) {\r\n newSelectedValues = [...state.selectedValues, itemValue];\r\n } else {\r\n newSelectedValues = state.selectedValues.filter((val) => val !== itemValue);\r\n }\r\n\r\n setSelectedValues(newSelectedValues);\r\n onValueChange?.(newSelectedValues);\r\n\r\n if (required && state.hasError && newSelectedValues.length > 0) {\r\n setError(false);\r\n }\r\n };\r\n\r\n const getDisplayText = (\r\n selectedValues: string[],\r\n placeholder: string,\r\n variant: string,\r\n items: SelectItemProps[]\r\n ): string => {\r\n if (selectedValues.length === 0) return placeholder;\r\n\r\n if (variant === 'checkbox') {\r\n const selectedItems = selectedValues\r\n .map((value) => {\r\n const item = items.find((item) => item.value === value);\r\n return (item?.text as string) || value;\r\n });\r\n\r\n if (selectedItems.length > 3) {\r\n const firstThree = selectedItems.slice(0, 3).join(', ');\r\n const remaining = selectedItems.length - 3;\r\n return `${firstThree} e mais ${remaining}`;\r\n }\r\n\r\n return selectedItems.join(', ');\r\n }\r\n\r\n return (\r\n (items.find((item) => item.value === selectedValues[0])?.text as string) ||\r\n selectedValues[0]\r\n );\r\n };\r\n\r\n const getFilteredItems = (\r\n items: SelectItemProps[],\r\n searchTerm: string\r\n ): SelectItemProps[] => {\r\n if (enableApiSearch) {\r\n return items;\r\n }\r\n\r\n if (!searchTerm) return items;\r\n\r\n const lowercasedSearchTerm = searchTerm.toLowerCase();\r\n return items.filter((item) => {\r\n const normalizedText = normalizeText(item.text);\r\n const normalizedSubTitle = item.subTitle\r\n ? normalizeText(item.subTitle)\r\n : '';\r\n const normalizedValue = normalizeText(item.value);\r\n\r\n return (\r\n normalizedText.includes(lowercasedSearchTerm) ||\r\n normalizedSubTitle.includes(lowercasedSearchTerm) ||\r\n normalizedValue.includes(lowercasedSearchTerm)\r\n );\r\n });\r\n };\r\n\r\n return {\r\n state,\r\n actions: {\r\n setOpen,\r\n setSelectedValues,\r\n setSearchInput,\r\n setSearchTerm,\r\n setTouched,\r\n setError,\r\n resetSearch,\r\n validate,\r\n handleSingleSelect,\r\n handleMultipleSelect,\r\n },\r\n computed: {\r\n displayText: '',\r\n filteredItems: [],\r\n },\r\n refs: {\r\n searchInputRef,\r\n },\r\n utils: {\r\n getDisplayText,\r\n getFilteredItems,\r\n },\r\n };\r\n}\r\n\r\nexport default useSelectLogic;","import { ChevronUp16Regular, ChevronDown16Regular } from '@fluentui/react-icons';\r\nimport clsx from 'clsx';\r\nimport { Select as SelectRadix } from 'radix-ui';\r\nimport React, { useMemo, useId, useRef, useEffect } from 'react';\r\n\r\nimport CheckboxSelectItem from './components/CheckboxSelectItem';\r\nimport ExpandableSelectItem from './components/ExpandableSelectItem';\r\nimport SelectItem from './components/SelectItem';\r\nimport { useSelectLogic } from './hooks/useSelectLogic';\r\nimport styles from './index.module.scss';\r\nimport { SelectProps } from './Select.types';\r\nimport LabelComponent from '../../shared/Label';\r\nimport Search from '../Search/Search';\r\n\r\nconst Select: React.FC<SelectProps> = ({\r\n items,\r\n onValueChange,\r\n onOpenChange,\r\n variant,\r\n required = false,\r\n value,\r\n \r\n label,\r\n helperText,\r\n placeholder = 'Selecione',\r\n maxWidth,\r\n search = false,\r\n errorMessage,\r\n disabled = false,\r\n className,\r\n 'aria-label': ariaLabel,\r\n 'data-testid': testId,\r\n tooltip = false,\r\n tooltipText,\r\n side = 'bottom',\r\n\talign = 'start',\r\n enableInfiniteScroll = false,\r\n onScrollEnd,\r\n isLoadingMore = false,\r\n enableApiSearch = false,\r\n onApiSearch,\r\n isSearching = false,\r\n ...restProps\r\n}) => {\r\n const componentId = useId();\r\n const selectId = `select-${componentId}`;\r\n const viewportRef = useRef<HTMLDivElement>(null);\r\n const hasReachedEndRef = useRef<boolean>(false);\r\n\r\n const {\r\n state,\r\n actions,\r\n refs,\r\n utils,\r\n } = useSelectLogic({\r\n value,\r\n required,\r\n search,\r\n onValueChange,\r\n onOpenChange,\r\n enableApiSearch,\r\n onApiSearch,\r\n isSearching,\r\n });\r\n\r\n useEffect(() => {\r\n const viewport = viewportRef.current;\r\n if (!viewport || !enableInfiniteScroll) return;\r\n\r\n const handleScroll = () => {\r\n const { scrollTop, scrollHeight, clientHeight } = viewport;\r\n const isAtBottom = scrollTop + clientHeight >= scrollHeight - 1;\r\n\r\n if (isAtBottom && !hasReachedEndRef.current && onScrollEnd && !isLoadingMore) {\r\n hasReachedEndRef.current = true;\r\n onScrollEnd();\r\n } else if (!isAtBottom && hasReachedEndRef.current) {\r\n hasReachedEndRef.current = false;\r\n }\r\n };\r\n\r\n viewport.addEventListener('scroll', handleScroll);\r\n\r\n return () => {\r\n viewport.removeEventListener('scroll', handleScroll);\r\n };\r\n }, [state.isOpen, enableInfiniteScroll, onScrollEnd, isLoadingMore]);\r\n\r\n useEffect(() => {\r\n if (state.isOpen && enableInfiniteScroll) {\r\n hasReachedEndRef.current = false;\r\n }\r\n }, [state.isOpen, enableInfiniteScroll]);\r\n\r\n const displayText = useMemo(\r\n () => utils.getDisplayText(state.selectedValues, placeholder, variant, items),\r\n [state.selectedValues, placeholder, variant, items, utils]\r\n );\r\n\r\n const filteredItems = useMemo(() => {\r\n const termToFilter = enableApiSearch ? state.searchTerm : state.searchInput;\r\n return utils.getFilteredItems(items, termToFilter);\r\n }, [items, state.searchTerm, state.searchInput, enableApiSearch, utils]);\r\n\r\n const containerStyle = useMemo(() => ({\r\n maxWidth: maxWidth ? `${maxWidth}px` : undefined,\r\n }), [maxWidth]);\r\n\r\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n actions.setSearchInput(e.target.value);\r\n };\r\n\r\n const handleSearchKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\r\n const input = e.currentTarget;\r\n const hasSelection = input.selectionStart !== input.selectionEnd;\r\n \r\n if (!hasSelection) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n actions.setSearchTerm(state.searchInput);\r\n }\r\n if (e.key === 'Escape') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n actions.resetSearch();\r\n }\r\n };\r\n\r\n const handleClear = () => {\r\n actions.resetSearch();\r\n if (enableApiSearch && onApiSearch) {\r\n onApiSearch('');\r\n }\r\n };\r\n\r\n return (\r\n <SelectRadix.Root\r\n value={variant === 'checkbox' ? '' : (state.selectedValues[0] || '')}\r\n onValueChange={variant === 'checkbox' ? undefined : actions.handleSingleSelect}\r\n required={required}\r\n open={state.isOpen}\r\n onOpenChange={actions.setOpen}\r\n disabled={disabled}\r\n {...restProps}\r\n >\r\n <div\r\n className={clsx(styles.container, className)}\r\n style={containerStyle}\r\n data-testid={testId}\r\n >\r\n <div className={styles.fieldContainer}>\r\n <div className={styles.containerLabel}>\r\n <LabelComponent\r\n htmlFor={selectId}\r\n required={required}\r\n tooltipText={tooltipText}\r\n tooltip={tooltip}\r\n side={side}\r\n align={align}\r\n error={state.hasError && state.touched}\r\n disabled={disabled}\r\n >\r\n {label}\r\n </LabelComponent>\r\n \r\n <SelectRadix.Trigger\r\n className={clsx(styles.trigger, {\r\n [styles.error]: state.hasError && state.touched,\r\n [styles.disabled]: disabled,\r\n [styles.hasValue]: state.selectedValues.length > 0,\r\n [styles.open]: state.isOpen,\r\n })}\r\n id={selectId}\r\n aria-label={ariaLabel}\r\n data-testid={`${testId}-trigger`}\r\n >\r\n {variant === 'checkbox' ? (\r\n <span className={styles.triggerText}>{displayText}</span>\r\n ) : (\r\n <SelectRadix.Value placeholder={placeholder} className={styles.placeholder}>{displayText}</SelectRadix.Value>\r\n )}\r\n {state.isOpen ? <ChevronUp16Regular /> : <ChevronDown16Regular />}\r\n </SelectRadix.Trigger>\r\n\r\n {!state.isOpen && helperText && !state.hasError && (\r\n <span className={clsx(\r\n styles.helper,\r\n {\r\n [styles.disabled]: disabled\r\n } \r\n )}>{helperText}</span>\r\n )}\r\n \r\n {state.hasError && state.touched && (\r\n <span className={styles.errorMessage}>\r\n {errorMessage || 'Campo obrigatório'}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <SelectRadix.Portal>\r\n <SelectRadix.Content\r\n className={styles.content}\r\n position=\"popper\"\r\n side=\"bottom\"\r\n sideOffset={8}\r\n align=\"start\"\r\n avoidCollisions={true}\r\n >\r\n {search && (\r\n <div className={styles.searchWrapper}>\r\n <Search\r\n ref={refs.searchInputRef}\r\n className={styles.search}\r\n placeholder=\"Buscar\"\r\n value={state.searchInput}\r\n onChange={handleSearchChange}\r\n onKeyDown={handleSearchKeyDown}\r\n onClear={handleClear}\r\n data-testid={`${testId}-search`}\r\n />\r\n </div>\r\n )}\r\n \r\n <SelectRadix.Viewport ref={viewportRef} className={styles.viewport}>\r\n <SelectRadix.Group className={styles.group}>\r\n {filteredItems.length === 0 ? (\r\n <div className={styles.noResults}>\r\n Nenhum resultado encontrado\r\n </div>\r\n ) : (\r\n <>\r\n {filteredItems.map((item) => {\r\n const hasChildren = item.children && item.children.length > 0;\r\n \r\n if (hasChildren) {\r\n return (\r\n <ExpandableSelectItem\r\n key={item.id || item.value}\r\n item={item}\r\n variant={variant}\r\n selectedValues={state.selectedValues}\r\n onSelect={(value) => {\r\n if (variant === 'checkbox') {\r\n const isSelected = state.selectedValues.includes(value);\r\n actions.handleMultipleSelect(value, !isSelected);\r\n } else {\r\n actions.handleSingleSelect(value);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n \r\n return variant === 'checkbox' ? (\r\n <CheckboxSelectItem\r\n key={item.id || item.value}\r\n {...item}\r\n checked={state.selectedValues.includes(item.value)}\r\n onCheckedChange={(checked: boolean) =>\r\n actions.handleMultipleSelect(item.value, checked)\r\n }\r\n />\r\n ) : (\r\n <SelectItem\r\n key={item.id || item.value}\r\n {...item}\r\n variant={variant}\r\n />\r\n );\r\n })}\r\n {enableInfiniteScroll && isLoadingMore && (\r\n <div className={styles.loadingMore}>\r\n Carregando mais itens...\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </SelectRadix.Group>\r\n </SelectRadix.Viewport>\r\n </SelectRadix.Content>\r\n </SelectRadix.Portal>\r\n </div>\r\n </SelectRadix.Root>\r\n );\r\n};\r\n\r\nSelect.displayName = 'Select';\r\n\r\nexport default Select;","/**\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","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","/**\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 { 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","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","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"menos de um segundo\",\n other: \"menos de {{count}} segundos\",\n },\n\n xSeconds: {\n one: \"1 segundo\",\n other: \"{{count}} segundos\",\n },\n\n halfAMinute: \"meio minuto\",\n\n lessThanXMinutes: {\n one: \"menos de um minuto\",\n other: \"menos de {{count}} minutos\",\n },\n\n xMinutes: {\n one: \"1 minuto\",\n other: \"{{count}} minutos\",\n },\n\n aboutXHours: {\n one: \"cerca de 1 hora\",\n other: \"cerca de {{count}} horas\",\n },\n\n xHours: {\n one: \"1 hora\",\n other: \"{{count}} horas\",\n },\n\n xDays: {\n one: \"1 dia\",\n other: \"{{count}} dias\",\n },\n\n aboutXWeeks: {\n one: \"cerca de 1 semana\",\n other: \"cerca de {{count}} semanas\",\n },\n\n xWeeks: {\n one: \"1 semana\",\n other: \"{{count}} semanas\",\n },\n\n aboutXMonths: {\n one: \"cerca de 1 mês\",\n other: \"cerca de {{count}} meses\",\n },\n\n xMonths: {\n one: \"1 mês\",\n other: \"{{count}} meses\",\n },\n\n aboutXYears: {\n one: \"cerca de 1 ano\",\n other: \"cerca de {{count}} anos\",\n },\n\n xYears: {\n one: \"1 ano\",\n other: \"{{count}} anos\",\n },\n\n overXYears: {\n one: \"mais de 1 ano\",\n other: \"mais de {{count}} anos\",\n },\n\n almostXYears: {\n one: \"quase 1 ano\",\n other: \"quase {{count}} anos\",\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}}\", String(count));\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"em \" + result;\n } else {\n return \"há \" + result;\n }\n }\n\n return result;\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, d 'de' MMMM 'de' y\",\n long: \"d 'de' MMMM 'de' y\",\n medium: \"d MMM y\",\n short: \"dd/MM/yyyy\",\n};\n\nconst timeFormats = {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'às' {{time}}\",\n long: \"{{date}} 'às' {{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: (date) => {\n const weekday = date.getDay();\n const last = weekday === 0 || weekday === 6 ? \"último\" : \"última\";\n return \"'\" + last + \"' eeee 'às' p\";\n },\n yesterday: \"'ontem às' p\",\n today: \"'hoje às' p\",\n tomorrow: \"'amanhã às' p\",\n nextWeek: \"eeee 'às' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, date, _baseDate, _options) => {\n const format = formatRelativeLocale[token];\n\n if (typeof format === \"function\") {\n return format(date);\n }\n\n return format;\n};\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"AC\", \"DC\"],\n abbreviated: [\"AC\", \"DC\"],\n wide: [\"antes de cristo\", \"depois de cristo\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"T1\", \"T2\", \"T3\", \"T4\"],\n wide: [\"1º trimestre\", \"2º trimestre\", \"3º trimestre\", \"4º trimestre\"],\n};\n\nconst monthValues = {\n narrow: [\"j\", \"f\", \"m\", \"a\", \"m\", \"j\", \"j\", \"a\", \"s\", \"o\", \"n\", \"d\"],\n abbreviated: [\n \"jan\",\n \"fev\",\n \"mar\",\n \"abr\",\n \"mai\",\n \"jun\",\n \"jul\",\n \"ago\",\n \"set\",\n \"out\",\n \"nov\",\n \"dez\",\n ],\n\n wide: [\n \"janeiro\",\n \"fevereiro\",\n \"março\",\n \"abril\",\n \"maio\",\n \"junho\",\n \"julho\",\n \"agosto\",\n \"setembro\",\n \"outubro\",\n \"novembro\",\n \"dezembro\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"D\", \"S\", \"T\", \"Q\", \"Q\", \"S\", \"S\"],\n short: [\"dom\", \"seg\", \"ter\", \"qua\", \"qui\", \"sex\", \"sab\"],\n abbreviated: [\n \"domingo\",\n \"segunda\",\n \"terça\",\n \"quarta\",\n \"quinta\",\n \"sexta\",\n \"sábado\",\n ],\n\n wide: [\n \"domingo\",\n \"segunda-feira\",\n \"terça-feira\",\n \"quarta-feira\",\n \"quinta-feira\",\n \"sexta-feira\",\n \"sábado\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mn\",\n noon: \"md\",\n morning: \"manhã\",\n afternoon: \"tarde\",\n evening: \"tarde\",\n night: \"noite\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"manhã\",\n afternoon: \"tarde\",\n evening: \"tarde\",\n night: \"noite\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"manhã\",\n afternoon: \"tarde\",\n evening: \"tarde\",\n night: \"noite\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mn\",\n noon: \"md\",\n morning: \"da manhã\",\n afternoon: \"da tarde\",\n evening: \"da tarde\",\n night: \"da noite\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"da manhã\",\n afternoon: \"da tarde\",\n evening: \"da tarde\",\n night: \"da noite\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"da manhã\",\n afternoon: \"da tarde\",\n evening: \"da tarde\",\n night: \"da noite\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, options) => {\n const number = Number(dirtyNumber);\n\n if (options?.unit === \"week\") {\n return number + \"ª\";\n }\n return number + \"º\";\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","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)[ºªo]?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(ac|dc|a|d)/i,\n abbreviated: /^(a\\.?\\s?c\\.?|d\\.?\\s?c\\.?)/i,\n wide: /^(antes de cristo|depois de cristo)/i,\n};\nconst parseEraPatterns = {\n any: [/^ac/i, /^dc/i],\n wide: [/^antes de cristo/i, /^depois de cristo/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^T[1234]/i,\n wide: /^[1234](º)? trimestre/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmajsond]/i,\n abbreviated: /^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,\n wide: /^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/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 /^fev/i,\n /^mar/i,\n /^abr/i,\n /^mai/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^set/i,\n /^out/i,\n /^nov/i,\n /^dez/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^(dom|[23456]ª?|s[aá]b)/i,\n short: /^(dom|[23456]ª?|s[aá]b)/i,\n abbreviated: /^(dom|seg|ter|qua|qui|sex|s[aá]b)/i,\n wide: /^(domingo|(segunda|ter[cç]a|quarta|quinta|sexta)([- ]feira)?|s[aá]bado)/i,\n};\nconst parseDayPatterns = {\n short: [/^d/i, /^2/i, /^3/i, /^4/i, /^5/i, /^6/i, /^s[aá]/i],\n narrow: [/^d/i, /^2/i, /^3/i, /^4/i, /^5/i, /^6/i, /^s[aá]/i],\n any: [/^d/i, /^seg/i, /^t/i, /^qua/i, /^qui/i, /^sex/i, /^s[aá]b/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mn|md|(da) (manhã|tarde|noite))/i,\n any: /^([ap]\\.?\\s?m\\.?|meia[-\\s]noite|meio[-\\s]dia|(da) (manhã|tarde|noite))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mn|^meia[-\\s]noite/i,\n noon: /^md|^meio[-\\s]dia/i,\n morning: /manhã/i,\n afternoon: /tarde/i,\n evening: /tarde/i,\n night: /noite/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 \"./pt-BR/_lib/formatDistance.js\";\nimport { formatLong } from \"./pt-BR/_lib/formatLong.js\";\nimport { formatRelative } from \"./pt-BR/_lib/formatRelative.js\";\nimport { localize } from \"./pt-BR/_lib/localize.js\";\nimport { match } from \"./pt-BR/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary Portuguese locale (Brazil).\n * @language Portuguese\n * @iso-639-2 por\n * @author Lucas Duailibe [@duailibe](https://github.com/duailibe)\n * @author Yago Carballo [@yagocarballo](https://github.com/YagoCarballo)\n */\nexport const ptBR = {\n code: \"pt-BR\",\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 ptBR;\n","import { createElement, isValidElement } from 'react';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nvar uid = (function () {\n return Math.random()\n .toString(36)\n .substring(6);\n});\n\nvar SVG = function (_a) {\n var _b = _a.animate, animate = _b === void 0 ? true : _b, _c = _a.backgroundColor, backgroundColor = _c === void 0 ? '#f5f6f7' : _c, _d = _a.backgroundOpacity, backgroundOpacity = _d === void 0 ? 1 : _d, _e = _a.baseUrl, baseUrl = _e === void 0 ? '' : _e, children = _a.children, _f = _a.foregroundColor, foregroundColor = _f === void 0 ? '#eee' : _f, _g = _a.foregroundOpacity, foregroundOpacity = _g === void 0 ? 1 : _g, _h = _a.gradientRatio, gradientRatio = _h === void 0 ? 2 : _h, uniqueKey = _a.uniqueKey, _j = _a.rtl, rtl = _j === void 0 ? false : _j, _k = _a.speed, speed = _k === void 0 ? 1.2 : _k, _l = _a.style, style = _l === void 0 ? {} : _l, _m = _a.title, title = _m === void 0 ? 'Loading...' : _m, _o = _a.beforeMask, beforeMask = _o === void 0 ? null : _o, props = __rest(_a, [\"animate\", \"backgroundColor\", \"backgroundOpacity\", \"baseUrl\", \"children\", \"foregroundColor\", \"foregroundOpacity\", \"gradientRatio\", \"uniqueKey\", \"rtl\", \"speed\", \"style\", \"title\", \"beforeMask\"]);\n var fixedId = uniqueKey || uid();\n var idClip = \"\".concat(fixedId, \"-diff\");\n var idGradient = \"\".concat(fixedId, \"-animated-diff\");\n var idAria = \"\".concat(fixedId, \"-aria\");\n var rtlStyle = rtl ? { transform: 'scaleX(-1)' } : null;\n var dur = \"\".concat(speed, \"s\");\n var from = \"\".concat(gradientRatio * -1, \" 0\");\n var to = \"\".concat(gradientRatio, \" 0\");\n return (createElement(\"svg\", __assign({ \"aria-labelledby\": idAria, role: \"img\", style: __assign(__assign({}, style), rtlStyle) }, props),\n title ? createElement(\"title\", { id: idAria }, title) : null,\n beforeMask && isValidElement(beforeMask) ? beforeMask : null,\n createElement(\"rect\", { role: \"presentation\", x: \"0\", y: \"0\", width: \"100%\", height: \"100%\", clipPath: \"url(\".concat(baseUrl, \"#\").concat(idClip, \")\"), style: { fill: \"url(\".concat(baseUrl, \"#\").concat(idGradient, \")\") } }),\n createElement(\"defs\", null,\n createElement(\"clipPath\", { id: idClip }, children),\n createElement(\"linearGradient\", { id: idGradient, gradientTransform: \"translate(\".concat(from, \")\") },\n createElement(\"stop\", { offset: \"0%\", stopColor: backgroundColor, stopOpacity: backgroundOpacity }),\n createElement(\"stop\", { offset: \"50%\", stopColor: foregroundColor, stopOpacity: foregroundOpacity }),\n createElement(\"stop\", { offset: \"100%\", stopColor: backgroundColor, stopOpacity: backgroundOpacity }),\n animate && (createElement(\"animateTransform\", { attributeName: \"gradientTransform\", type: \"translate\", values: \"\".concat(from, \"; 0 0; \").concat(to), dur: dur, repeatCount: \"indefinite\" }))))));\n};\n\nvar ContentLoader = function (props) {\n return props.children ? createElement(SVG, __assign({}, props)) : createElement(ReactContentLoaderFacebook, __assign({}, props));\n};\n\nvar ReactContentLoaderFacebook = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 476 124\" }, props),\n createElement(\"rect\", { x: \"48\", y: \"8\", width: \"88\", height: \"6\", rx: \"3\" }),\n createElement(\"rect\", { x: \"48\", y: \"26\", width: \"52\", height: \"6\", rx: \"3\" }),\n createElement(\"rect\", { x: \"0\", y: \"56\", width: \"410\", height: \"6\", rx: \"3\" }),\n createElement(\"rect\", { x: \"0\", y: \"72\", width: \"380\", height: \"6\", rx: \"3\" }),\n createElement(\"rect\", { x: \"0\", y: \"88\", width: \"178\", height: \"6\", rx: \"3\" }),\n createElement(\"circle\", { cx: \"20\", cy: \"20\", r: \"20\" }))); };\n\nvar ReactContentLoaderInstagram = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 400 460\" }, props),\n createElement(\"circle\", { cx: \"31\", cy: \"31\", r: \"15\" }),\n createElement(\"rect\", { x: \"58\", y: \"18\", rx: \"2\", ry: \"2\", width: \"140\", height: \"10\" }),\n createElement(\"rect\", { x: \"58\", y: \"34\", rx: \"2\", ry: \"2\", width: \"140\", height: \"10\" }),\n createElement(\"rect\", { x: \"0\", y: \"60\", rx: \"2\", ry: \"2\", width: \"400\", height: \"400\" }))); };\n\nvar ReactContentLoaderCode = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 340 84\" }, props),\n createElement(\"rect\", { x: \"0\", y: \"0\", width: \"67\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"76\", y: \"0\", width: \"140\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"127\", y: \"48\", width: \"53\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"187\", y: \"48\", width: \"72\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"18\", y: \"48\", width: \"100\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"0\", y: \"71\", width: \"37\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"18\", y: \"23\", width: \"140\", height: \"11\", rx: \"3\" }),\n createElement(\"rect\", { x: \"166\", y: \"23\", width: \"173\", height: \"11\", rx: \"3\" }))); };\n\nvar ReactContentLoaderListStyle = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 400 110\" }, props),\n createElement(\"rect\", { x: \"0\", y: \"0\", rx: \"3\", ry: \"3\", width: \"250\", height: \"10\" }),\n createElement(\"rect\", { x: \"20\", y: \"20\", rx: \"3\", ry: \"3\", width: \"220\", height: \"10\" }),\n createElement(\"rect\", { x: \"20\", y: \"40\", rx: \"3\", ry: \"3\", width: \"170\", height: \"10\" }),\n createElement(\"rect\", { x: \"0\", y: \"60\", rx: \"3\", ry: \"3\", width: \"250\", height: \"10\" }),\n createElement(\"rect\", { x: \"20\", y: \"80\", rx: \"3\", ry: \"3\", width: \"200\", height: \"10\" }),\n createElement(\"rect\", { x: \"20\", y: \"100\", rx: \"3\", ry: \"3\", width: \"80\", height: \"10\" }))); };\n\nvar ReactContentLoaderBulletList = function (props) { return (createElement(ContentLoader, __assign({ viewBox: \"0 0 245 125\" }, props),\n createElement(\"circle\", { cx: \"10\", cy: \"20\", r: \"8\" }),\n createElement(\"rect\", { x: \"25\", y: \"15\", rx: \"5\", ry: \"5\", width: \"220\", height: \"10\" }),\n createElement(\"circle\", { cx: \"10\", cy: \"50\", r: \"8\" }),\n createElement(\"rect\", { x: \"25\", y: \"45\", rx: \"5\", ry: \"5\", width: \"220\", height: \"10\" }),\n createElement(\"circle\", { cx: \"10\", cy: \"80\", r: \"8\" }),\n createElement(\"rect\", { x: \"25\", y: \"75\", rx: \"5\", ry: \"5\", width: \"220\", height: \"10\" }),\n createElement(\"circle\", { cx: \"10\", cy: \"110\", r: \"8\" }),\n createElement(\"rect\", { x: \"25\", y: \"105\", rx: \"5\", ry: \"5\", width: \"220\", height: \"10\" }))); };\n\nexport default ContentLoader;\nexport { ReactContentLoaderBulletList as BulletList, ReactContentLoaderCode as Code, ReactContentLoaderFacebook as Facebook, ReactContentLoaderInstagram as Instagram, ReactContentLoaderListStyle as List };\n//# sourceMappingURL=react-content-loader.es.js.map\n","import React from 'react';\r\nimport ContentLoader, { IContentLoaderProps } from 'react-content-loader';\r\n\r\n/**\r\n * Componente de loading para lista de tabela\r\n * Simula o carregamento de dados em formato de tabela usando ContentLoader\r\n * @param props - Propriedades adicionais para o ContentLoader\r\n * @returns Elemento de loading animado\r\n */\r\nconst LoaderList: React.FC<IContentLoaderProps> = (props) => (\r\n <ContentLoader\r\n speed={1}\r\n width=\"100%\"\r\n viewBox=\"0 0 1272 652\"\r\n backgroundColor=\"#F5F5F7\"\r\n foregroundColor=\"#FFFFFF\"\r\n {...props}\r\n >\r\n {/* Cabeçalho da tabela */}\r\n <rect x=\"0\" y=\"0\" rx=\"8\" ry=\"8\" width=\"1272\" height=\"44\" />\r\n\r\n {/* Primeira linha */}\r\n <rect x=\"0\" y=\"76\" rx=\"12\" ry=\"12\" width=\"402\" height=\"24\" />\r\n <rect x=\"0\" y=\"116\" rx=\"8\" ry=\"8\" width=\"280\" height=\"16\" />\r\n <rect x=\"426\" y=\"76\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"426\" y=\"116\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"694\" y=\"76\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"694\" y=\"116\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"962\" y=\"76\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"962\" y=\"116\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n <rect x=\"1129\" y=\"76\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"1129\" y=\"116\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n\r\n {/* Segunda linha */}\r\n <rect x=\"0\" y=\"164\" rx=\"12\" ry=\"12\" width=\"402\" height=\"24\" />\r\n <rect x=\"0\" y=\"204\" rx=\"8\" ry=\"8\" width=\"280\" height=\"16\" />\r\n <rect x=\"426\" y=\"164\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"426\" y=\"204\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"694\" y=\"164\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"694\" y=\"204\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"962\" y=\"164\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"962\" y=\"204\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n <rect x=\"1129\" y=\"164\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"1129\" y=\"204\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n\r\n {/* Terceira linha */}\r\n <rect x=\"0\" y=\"252\" rx=\"12\" ry=\"12\" width=\"402\" height=\"24\" />\r\n <rect x=\"0\" y=\"292\" rx=\"8\" ry=\"8\" width=\"280\" height=\"16\" />\r\n <rect x=\"426\" y=\"252\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"426\" y=\"292\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"694\" y=\"252\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"694\" y=\"292\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"962\" y=\"252\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"962\" y=\"292\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n <rect x=\"1129\" y=\"252\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"1129\" y=\"292\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n\r\n {/* Quarta linha */}\r\n <rect x=\"0\" y=\"340\" rx=\"12\" ry=\"12\" width=\"402\" height=\"24\" />\r\n <rect x=\"0\" y=\"380\" rx=\"8\" ry=\"8\" width=\"280\" height=\"16\" />\r\n <rect x=\"426\" y=\"340\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"426\" y=\"380\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"694\" y=\"340\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"694\" y=\"380\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"962\" y=\"340\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"962\" y=\"380\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n <rect x=\"1129\" y=\"340\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"1129\" y=\"380\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n\r\n {/* Quinta linha */}\r\n <rect x=\"0\" y=\"428\" rx=\"12\" ry=\"12\" width=\"402\" height=\"24\" />\r\n <rect x=\"0\" y=\"468\" rx=\"8\" ry=\"8\" width=\"280\" height=\"16\" />\r\n <rect x=\"426\" y=\"428\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"426\" y=\"468\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"694\" y=\"428\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"694\" y=\"468\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"962\" y=\"428\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"962\" y=\"468\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n <rect x=\"1129\" y=\"428\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"1129\" y=\"468\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n\r\n {/* Sexta linha */}\r\n <rect x=\"0\" y=\"516\" rx=\"12\" ry=\"12\" width=\"402\" height=\"24\" />\r\n <rect x=\"0\" y=\"556\" rx=\"8\" ry=\"8\" width=\"280\" height=\"16\" />\r\n <rect x=\"426\" y=\"516\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"426\" y=\"556\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"694\" y=\"516\" rx=\"12\" ry=\"12\" width=\"244\" height=\"24\" />\r\n <rect x=\"694\" y=\"556\" rx=\"8\" ry=\"8\" width=\"178\" height=\"16\" />\r\n <rect x=\"962\" y=\"516\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"962\" y=\"556\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n <rect x=\"1129\" y=\"516\" rx=\"12\" ry=\"12\" width=\"143\" height=\"24\" />\r\n <rect x=\"1129\" y=\"556\" rx=\"8\" ry=\"8\" width=\"90\" height=\"16\" />\r\n\r\n {/* Rodapé da tabela */}\r\n <rect x=\"0\" y=\"604\" rx=\"8\" ry=\"8\" width=\"1272\" height=\"48\" />\r\n </ContentLoader>\r\n)\r\nexport default LoaderList;","import React from 'react';\r\n\r\n/**\r\n * Componente de ícone SVG para estado vazio da tabela\r\n * Exibe um ícone de lupa com design personalizado do Zanthus Design System\r\n * @returns Elemento SVG para estado vazio\r\n */\r\nconst EmptyRows150Color: React.FC = () => (\r\n <svg width='150' height='150' viewBox='0 0 150 150' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n <circle cx='75' cy='75' r='75' fill='#E8E8EE' />\r\n <path\r\n d='M67.6111 63.3889C69.36 63.3889 70.7778 64.8067 70.7778 66.5556V81.3333C70.7778 83.0822 69.36 84.5 67.6111 84.5C65.8622 84.5 64.4444 83.0822 64.4444 81.3333V66.5556C64.4444 64.8067 65.8622 63.3889 67.6111 63.3889ZM67.6111 59.1667C69.943 59.1667 71.8333 57.2763 71.8333 54.9444C71.8333 52.6126 69.943 50.7222 67.6111 50.7222C65.2792 50.7222 63.3889 52.6126 63.3889 54.9444C63.3889 57.2763 65.2792 59.1667 67.6111 59.1667ZM67.6111 37C84.5172 37 98.2222 50.7051 98.2222 67.6111C98.2222 74.9235 95.6583 81.637 91.3803 86.9017L112.073 107.594C113.309 108.831 113.309 110.836 112.073 112.073C110.948 113.197 109.189 113.299 107.949 112.379L107.594 112.073L86.9017 91.3803C81.637 95.6583 74.9235 98.2222 67.6111 98.2222C50.7051 98.2222 37 84.5172 37 67.6111C37 50.7051 50.7051 37 67.6111 37ZM67.6111 43.3333C54.2029 43.3333 43.3333 54.2029 43.3333 67.6111C43.3333 81.0194 54.2029 91.8889 67.6111 91.8889C81.0194 91.8889 91.8889 81.0194 91.8889 67.6111C91.8889 54.2029 81.0194 43.3333 67.6111 43.3333Z'\r\n fill='#3B45F2'\r\n />\r\n </svg>\r\n);\r\n\r\nexport default EmptyRows150Color;","import styles from './Table.module.scss';\r\nimport React, { useState, useMemo, useCallback, ReactNode, CSSProperties } from 'react';\r\nimport clsx from 'clsx';\r\nimport { format } from 'date-fns';\r\nimport { ptBR } from 'date-fns/locale';\r\nimport Checkbox from '../Checkbox';\r\nimport LoaderList from './LoaderList';\r\nimport EmptyRows150Color from './EmptyRows150Color';\r\nimport type { TableColumn, TableRowData, TableProps } from './Table.types';\r\n\r\nconst useSelection = <T extends TableRowData = TableRowData>(\r\n dataSource: T[],\r\n rowSelection?: TableProps<T>['rowSelection']\r\n) => {\r\n const [internalKeys, setInternalKeys] = useState<(string | number)[]>([]);\r\n const selectedKeys = rowSelection?.selectedRowKeys ?? internalKeys;\r\n const selectedSet = useMemo(() => new Set(selectedKeys), [selectedKeys]);\r\n\r\n const handleChange = useCallback((newKeys: (string | number)[]) => {\r\n const newRows = dataSource.filter((_, index) => newKeys.includes(index)) as T[];\r\n\r\n if (rowSelection?.selectedRowKeys !== undefined) {\r\n // Controlled\r\n rowSelection.onChange?.(newKeys, newRows);\r\n } else {\r\n // Uncontrolled\r\n setInternalKeys(newKeys);\r\n rowSelection?.onChange?.(newKeys, newRows);\r\n }\r\n }, [dataSource, rowSelection]);\r\n\r\n const toggleRow = useCallback((key: string | number) => {\r\n const newKeys = selectedSet.has(key)\r\n ? selectedKeys.filter(k => k !== key)\r\n : [...selectedKeys, key];\r\n handleChange(newKeys);\r\n }, [selectedKeys, selectedSet, handleChange]);\r\n\r\n const toggleAll = useCallback(() => {\r\n const allKeys = dataSource.map((_, index) => index);\r\n const newKeys = selectedKeys.length === dataSource.length ? [] : allKeys;\r\n handleChange(newKeys);\r\n }, [dataSource, selectedKeys.length, handleChange]);\r\n\r\n const isAllSelected = selectedKeys.length === dataSource.length && dataSource.length > 0;\r\n const isIndeterminate = selectedKeys.length > 0 && selectedKeys.length < dataSource.length;\r\n\r\n return {\r\n selectedSet,\r\n selectedKeys,\r\n toggleRow,\r\n toggleAll,\r\n isAllSelected,\r\n isIndeterminate,\r\n };\r\n};\r\n\r\nconst renderCell = <T extends TableRowData = TableRowData>(column: TableColumn<T>, row: T, index: number): ReactNode => {\r\n if (column.render) {\r\n return column.render(row, index);\r\n }\r\n\r\n const value = row[column.key];\r\n\r\n switch (column.type) {\r\n case 'datetime':\r\n if (!value) return '';\r\n try {\r\n const date = new Date(value);\r\n return format(date, column.format || 'dd/MM/yyyy', { locale: ptBR });\r\n } catch {\r\n return value;\r\n }\r\n default:\r\n return value;\r\n }\r\n};\r\n\r\nconst Table = <T extends TableRowData = TableRowData>({\r\n columns = [],\r\n dataSource = [],\r\n className,\r\n loading = false,\r\n rowSelection,\r\n locale = {},\r\n onRow,\r\n}: TableProps<T>) => {\r\n if (!Array.isArray(columns) || !Array.isArray(dataSource)) {\r\n console.warn('Table: columns e dataSource devem ser arrays');\r\n return null;\r\n }\r\n\r\n const { selectedSet, toggleRow, toggleAll, isAllSelected, isIndeterminate } = useSelection(\r\n dataSource,\r\n rowSelection\r\n );\r\n\r\n const finalColumns = useMemo(() => {\r\n if (!rowSelection) return columns;\r\n\r\n const checkboxColumn: TableColumn<T> = {\r\n key: '__checkbox__',\r\n label: (\r\n <Checkbox\r\n checked={isAllSelected || isIndeterminate}\r\n indeterminate={isIndeterminate}\r\n onCheckedChange={toggleAll}\r\n disabled={rowSelection.disableSelectAll}\r\n />\r\n ),\r\n render: (_, index) => {\r\n const props = rowSelection.getCheckboxProps?.(dataSource[index], index) || {};\r\n return (\r\n <Checkbox\r\n checked={selectedSet.has(index)}\r\n onCheckedChange={() => toggleRow(index)}\r\n disabled={props.disabled}\r\n />\r\n );\r\n },\r\n align: 'center',\r\n };\r\n\r\n return [checkboxColumn, ...columns];\r\n }, [columns, rowSelection, isAllSelected, isIndeterminate, toggleAll, selectedSet, toggleRow, dataSource]);\r\n const tableId = useMemo(() =>\r\n `table-${Math.random().toString(36).substr(2, 9)}`, []\r\n );\r\n if (loading) {\r\n return (\r\n <div className={clsx(styles['zds-table__container'], className)}>\r\n <div className={styles['zds-table__loader']}>\r\n <LoaderList />\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n const emptyText = locale.emptyText || (\r\n <div className={styles['zds-table__empty']}>\r\n <div className={styles['zds-table__empty__content']}>\r\n <EmptyRows150Color />\r\n </div>\r\n <div className={styles['zds-table__empty__text']}>\r\n <h3 className={styles['zds-table__empty__title']}>Nenhum dado encontrado</h3>\r\n <p className={styles['zds-table__empty__caption']}>Nenhum registro encontrado</p>\r\n </div>\r\n </div>\r\n );\r\n\r\n return (\r\n <div className={clsx(styles['zds-table__container'], className)}>\r\n <div className={styles['zds-table__scroll-wrapper']}>\r\n <table \r\n className={styles['zds-table']}\r\n role=\"table\"\r\n aria-label=\"Tabela de dados\"\r\n aria-describedby={loading ? `${tableId}-loading` : undefined}\r\n aria-rowcount={dataSource.length + 1}\r\n >\r\n <thead className={styles['zds-table__head']}>\r\n <tr>\r\n {finalColumns.map((column) => (\r\n <th\r\n key={column.key}\r\n className={clsx(styles['zds-table__th'], column.align && `text-${column.align}`)}\r\n style={column.style}\r\n >\r\n <div className={styles['zds-table__th-content']}>{column.label}</div>\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody className={styles['zds-table__body']}>\r\n {dataSource.length > 0 ? (\r\n dataSource.map((row, index) => {\r\n const rowProps = onRow?.(row, index) || {};\r\n return (\r\n <tr\r\n key={index}\r\n className={clsx(styles['zds-table__row'], rowProps.className)}\r\n onClick={rowProps.onClick}\r\n onDoubleClick={rowProps.onDoubleClick}\r\n >\r\n {finalColumns.map((column) => (\r\n <td\r\n key={column.key}\r\n className={clsx(styles['zds-table__td'], column.align && `text-${column.align}`)}\r\n >\r\n {renderCell(column, row, index)}\r\n </td>\r\n ))}\r\n </tr>\r\n );\r\n })\r\n ) : (\r\n <tr>\r\n <td colSpan={finalColumns.length} className={styles['zds-table__empty-cell']}>\r\n {emptyText}\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Table;","import React, { useState, KeyboardEvent } from 'react';\r\nimport Search from '../Search/Search';\r\nimport Filter from '../Filter/Filter';\r\nimport type { DropdownItem } from '../Dropdown/Dropdown.types';\r\nimport styles from './Table.module.scss';\r\n\r\ninterface BaseFilterItem {\r\n id?: string;\r\n buttonText: string | React.ReactNode;\r\n icon?: React.ReactElement;\r\n position?: 'left' | 'right';\r\n disabled?: boolean;\r\n onToggle?: (isOpen: boolean) => void;\r\n tooltip?: string;\r\n}\r\n\r\ninterface CheckboxFilterItem extends BaseFilterItem {\r\n type: 'checkbox' | 'text' | 'icon';\r\n items: DropdownItem[];\r\n selectedIds?: string[];\r\n onSelectionChange?: (selectedIds: string[]) => void;\r\n placeholder?: string;\r\n enableSearch?: boolean;\r\n}\r\n\r\ninterface CalendarFilterItem extends BaseFilterItem {\r\n type: 'calendar';\r\n selectedDate?: Date | null;\r\n onDateSelect?: (date: Date) => void;\r\n onClear?: () => void;\r\n minDate?: Date;\r\n maxDate?: Date;\r\n locale?: string;\r\n placeholder?: string;\r\n}\r\n\r\nexport type FilterItem = CheckboxFilterItem | CalendarFilterItem;\r\n\r\nconst isCalendarFilter = (filter: FilterItem): filter is CalendarFilterItem => {\r\n return filter.type === 'calendar';\r\n};\r\n\r\nconst isCheckboxFilter = (filter: FilterItem): filter is CheckboxFilterItem => {\r\n return filter.type === 'checkbox' || filter.type === 'text' || filter.type === 'icon';\r\n};\r\n\r\nexport interface TableHeaderProps {\r\n searchValue?: string;\r\n onSearchChange?: (value: string) => void;\r\n searchPlaceholder?: string;\r\n showSearch?: boolean;\r\n showFilters?: boolean;\r\n filters?: React.ReactNode;\r\n filterItems?: FilterItem[];\r\n className?: string;\r\n onSearch?: (value: string) => void;\r\n showClearSearch?: boolean;\r\n}\r\n\r\nconst TableHeader: React.FC<TableHeaderProps> = ({\r\n searchValue = '',\r\n onSearchChange,\r\n onSearch,\r\n searchPlaceholder = 'Pesquisar...',\r\n showSearch = true,\r\n showFilters = false,\r\n filters,\r\n filterItems = [],\r\n className = '',\r\n}) => {\r\n const [internalSearchValue, setInternalSearchValue] = useState(searchValue);\r\n\r\n React.useEffect(() => {\r\n setInternalSearchValue(searchValue);\r\n }, [searchValue]);\r\n\r\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const value = e.target.value;\r\n setInternalSearchValue(value);\r\n \r\n if (value === '' && onSearchChange) {\r\n onSearchChange('');\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n if (onSearch) {\r\n onSearch(internalSearchValue);\r\n } else if (onSearchChange) {\r\n onSearchChange(internalSearchValue);\r\n }\r\n }\r\n };\r\n\r\n const hasFilters = filters || (filterItems && filterItems.length > 0);\r\n\r\n return (\r\n <div className={`${styles['zds-table-header']} ${className}`.trim()}>\r\n {showSearch && (onSearchChange || onSearch) && (\r\n <div className={styles['zds-table-header__search-container']}>\r\n <Search\r\n value={internalSearchValue}\r\n onChange={handleInputChange}\r\n onKeyDown={handleKeyDown}\r\n placeholder={searchPlaceholder}\r\n className={styles['zds-table-header__search']}\r\n />\r\n </div>\r\n )}\r\n \r\n {showFilters && (\r\n <div className={styles['zds-table-header__filters']}>\r\n {hasFilters ? (\r\n <div className={styles['zds-table-header__filters-content']}>\r\n {filters && (\r\n <div className={styles['zds-table-header__custom-filters']}>\r\n {filters}\r\n </div>\r\n )}\r\n\r\n <div className={styles['zds-table-header__filters-wrapper']}>\r\n <span className={styles['zds-table-header__filter-label']}>Filtros</span>\r\n \r\n <div className={styles['zds-table-header__filter-items']}>\r\n {filterItems && filterItems.map((filterItem, index) => {\r\n const commonProps = {\r\n key: filterItem.id || index,\r\n buttonText: filterItem.buttonText,\r\n icon: filterItem.icon,\r\n position: filterItem.position || 'right',\r\n disabled: filterItem.disabled,\r\n variant: 'outlined' as const,\r\n onOpen: () => filterItem.onToggle?.(true),\r\n onClose: () => filterItem.onToggle?.(false),\r\n };\r\n if (isCalendarFilter(filterItem)) {\r\n return (\r\n <Filter\r\n {...commonProps}\r\n type=\"calendar\"\r\n selectedDate={filterItem.selectedDate}\r\n onDateSelect={filterItem.onDateSelect}\r\n onClearDate={filterItem.onClear}\r\n minDate={filterItem.minDate}\r\n maxDate={filterItem.maxDate}\r\n placeholder={filterItem.placeholder}\r\n />\r\n );\r\n }\r\n\r\n if (isCheckboxFilter(filterItem)) {\r\n return (\r\n <Filter\r\n {...commonProps}\r\n type={filterItem.type}\r\n items={filterItem.items}\r\n selectedIds={filterItem.selectedIds}\r\n onApplyFilter={filterItem.onSelectionChange}\r\n placeholder={filterItem.placeholder}\r\n enableSearch={filterItem.enableSearch}\r\n />\r\n );\r\n }\r\n\r\n console.warn('TableHeader: Tipo de filtro não reconhecido:', filterItem);\r\n return null;\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n ) : (\r\n <div className={styles['zds-table-header__filters-placeholder']}>\r\n <span>Nenhum filtro disponível</span>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport type { CalendarFilterItem, CheckboxFilterItem };\r\nexport { isCalendarFilter, isCheckboxFilter };\r\n\r\nexport default TableHeader;\r\n","import React from 'react';\r\nimport { ChevronLeft16Regular, ChevronRight16Regular } from '@fluentui/react-icons';\r\nimport styles from './Table.module.scss';\r\n\r\nexport interface TablePaginationProps {\r\n /** Página atual */\r\n currentPage: number;\r\n /** Total de itens */\r\n totalItems: number;\r\n /** Itens por página */\r\n itemsPerPage: number;\r\n /** Callback quando a página muda */\r\n onPageChange: (page: number) => void;\r\n /** Callback quando itens por página muda */\r\n onItemsPerPageChange: (itemsPerPage: number) => void;\r\n /** Opções disponíveis para itens por página */\r\n pageSizeOptions?: number[];\r\n /** Desabilita a paginação */\r\n disabled?: boolean;\r\n /** Classes CSS adicionais */\r\n className?: string;\r\n}\r\n\r\nconst TablePagination: React.FC<TablePaginationProps> = ({\r\n currentPage,\r\n totalItems,\r\n itemsPerPage,\r\n onPageChange,\r\n onItemsPerPageChange,\r\n pageSizeOptions = [10, 25, 50, 100],\r\n disabled = false,\r\n className = '',\r\n}) => {\r\n // Cálculos\r\n const totalPages = Math.ceil(totalItems / itemsPerPage);\r\n const startItem = totalItems > 0 ? (currentPage - 1) * itemsPerPage + 1 : 0;\r\n const endItem = Math.min(currentPage * itemsPerPage, totalItems);\r\n \r\n // Lógica para habilitar/desabilitar botões\r\n const canGoPrev = currentPage > 1 && !disabled;\r\n const canGoNext = currentPage < totalPages && !disabled;\r\n \r\n // Handlers\r\n const handlePrevious = () => {\r\n if (canGoPrev) {\r\n onPageChange(currentPage - 1);\r\n }\r\n };\r\n \r\n const handleNext = () => {\r\n if (canGoNext) {\r\n onPageChange(currentPage + 1);\r\n }\r\n };\r\n \r\n const handleItemsPerPageChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\r\n const newItemsPerPage = Number(event.target.value);\r\n onItemsPerPageChange(newItemsPerPage);\r\n };\r\n\r\n return (\r\n <div className={`${styles['zds-table__pagination']} ${className}`.trim()}>\r\n {/* Seletor de itens por página */}\r\n <div className={styles['zds-table__pagination-select']}>\r\n <label htmlFor=\"items-per-page\" className={styles['zds-table__pagination-label']}>\r\n Itens por página\r\n </label>\r\n <select\r\n id=\"items-per-page\"\r\n value={itemsPerPage}\r\n onChange={handleItemsPerPageChange}\r\n disabled={disabled}\r\n className={styles['zds-table__pagination-select-input']}\r\n >\r\n {pageSizeOptions.map((option) => (\r\n <option key={option} value={option}>\r\n {option}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n \r\n {/* Informações de paginação */}\r\n <div className={styles['zds-table__pagination-info']}>\r\n <span>\r\n {totalItems > 0 \r\n ? `${startItem}–${endItem} de ${totalItems}`\r\n : '0 itens'\r\n }\r\n </span>\r\n </div>\r\n \r\n {/* Controles de navegação */}\r\n <div className={styles['zds-table__pagination-controls']}>\r\n {/* CORREÇÃO: Ícone envolvido por um <button> com lógica 'disabled' */}\r\n <button\r\n className={styles['zds-table__pagination-button']}\r\n onClick={handlePrevious}\r\n disabled={!canGoPrev}\r\n aria-label=\"Página anterior\"\r\n >\r\n <ChevronLeft16Regular />\r\n </button>\r\n \r\n {/* CORREÇÃO: Ícone envolvido por um <button> com lógica 'disabled' */}\r\n <button\r\n className={styles['zds-table__pagination-button']}\r\n onClick={handleNext}\r\n disabled={!canGoNext}\r\n aria-label=\"Próxima página\"\r\n >\r\n <ChevronRight16Regular />\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default TablePagination;","// ✅ NOVA IMPLEMENTAÇÃO SIMPLIFICADA\r\nimport React, { createContext, useContext, useState, useCallback, useRef, useEffect, useMemo, ReactNode } from 'react';\r\nimport clsx from 'clsx';\r\nimport styles from './Toast.module.scss';\r\nimport {\r\n CheckmarkCircle20Filled,\r\n Dismiss16Regular,\r\n Warning20Filled,\r\n Info20Filled,\r\n} from '@fluentui/react-icons';\r\nimport type { ToastType, ToastMessage, ToastOptions, ToastContextType } from './Toast.types';\r\n\r\nconst sanitizeMessage = (message: string): string => {\r\n if (typeof message !== 'string') return 'Mensagem inválida';\r\n \r\n return message\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&#x27;')\r\n .replace(/&/g, '&amp;')\r\n .slice(0, 500); \r\n};\r\n\r\nconst generateId = (): string => {\r\n return `toast-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;\r\n};\r\n\r\nconst MAX_TOASTS = 5;\r\nconst DEFAULT_DURATION = 5000;\r\n\r\nconst ToastContext = createContext<ToastContextType | undefined>(undefined);\r\n\r\nconst toastVariants = {\r\n success: {\r\n icon: <CheckmarkCircle20Filled />,\r\n className: styles['zds-toast__success'],\r\n },\r\n alert: {\r\n icon: <Warning20Filled />,\r\n className: styles['zds-toast__alert'],\r\n },\r\n info: {\r\n icon: <Info20Filled />,\r\n className: styles['zds-toast__info'],\r\n },\r\n} as const;\r\n\r\ninterface ToastItemProps {\r\n toast: ToastMessage;\r\n onClose: (id: string) => void;\r\n isVisible: boolean;\r\n}\r\n\r\nconst ToastItem: React.FC<ToastItemProps> = ({ toast, onClose, isVisible }) => {\r\n const variant = toastVariants[toast.type];\r\n \r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n onClose(toast.id);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className={clsx(\r\n styles['zds-toast__item'],\r\n variant.className,\r\n isVisible && styles['zds-toast__active']\r\n )}\r\n role={toast.type === 'alert' ? 'alert' : 'status'}\r\n aria-live={toast.type === 'alert' ? 'assertive' : 'polite'}\r\n aria-atomic=\"true\"\r\n tabIndex={toast.persistent ? 0 : -1}\r\n onKeyDown={handleKeyDown}\r\n >\r\n <span className={styles['zds-toast__icon']} aria-hidden=\"true\">\r\n {variant.icon}\r\n </span>\r\n <span \r\n className={styles['zds-toast__message']}\r\n dangerouslySetInnerHTML={{ __html: sanitizeMessage(toast.message) }}\r\n />\r\n <button\r\n type=\"button\"\r\n className={styles['zds-toast__close']}\r\n aria-label={`Fechar notificação: ${toast.message.slice(0, 50)}${toast.message.length > 50 ? '...' : ''}`}\r\n onClick={() => onClose(toast.id)}\r\n >\r\n <Dismiss16Regular aria-hidden=\"true\" />\r\n </button>\r\n </div>\r\n );\r\n};\r\n\r\ninterface ToastContainerProps {\r\n toasts: ToastMessage[];\r\n onClose: (id: string) => void;\r\n visibleToasts: Set<string>;\r\n}\r\n\r\nconst ToastContainer: React.FC<ToastContainerProps> = ({ toasts, onClose, visibleToasts }) => {\r\n if (toasts.length === 0) return null;\r\n\r\n return (\r\n <div \r\n className={styles['zds-toast__container']}\r\n role=\"log\"\r\n aria-label=\"Notificações do sistema\"\r\n >\r\n {toasts.map(toast => (\r\n <ToastItem\r\n key={toast.id}\r\n toast={toast}\r\n onClose={onClose}\r\n isVisible={visibleToasts.has(toast.id)}\r\n />\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport interface ToastProviderProps {\r\n children: ReactNode;\r\n maxToasts?: number;\r\n}\r\n\r\nexport const ToastProvider: React.FC<ToastProviderProps> = ({ \r\n children, \r\n maxToasts = MAX_TOASTS \r\n}) => {\r\n const [toasts, setToasts] = useState<ToastMessage[]>([]);\r\n const [visibleToasts, setVisibleToasts] = useState<Set<string>>(new Set());\r\n const timeouts = useRef<Map<string, NodeJS.Timeout>>(new Map());\r\n\r\n const clearToastTimeout = useCallback((id: string) => {\r\n const timeoutId = timeouts.current.get(id);\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n timeouts.current.delete(id);\r\n }\r\n }, []);\r\n\r\n const showToast = useCallback((\r\n message: string, \r\n type: ToastType = 'info', \r\n options: ToastOptions = {}\r\n ): string => {\r\n const id = generateId();\r\n const sanitizedMessage = sanitizeMessage(message);\r\n \r\n if (!sanitizedMessage || sanitizedMessage === 'Mensagem inválida') {\r\n console.warn('Toast: Mensagem inválida ou vazia');\r\n return '';\r\n }\r\n\r\n const newToast: ToastMessage = {\r\n id,\r\n message: sanitizedMessage,\r\n type,\r\n persistent: options.persistent || false,\r\n duration: options.duration || DEFAULT_DURATION,\r\n timestamp: Date.now(),\r\n };\r\n\r\n // ✅ LIMITE DE TOASTS\r\n setToasts(prev => {\r\n const filtered = prev.slice(-(maxToasts - 1));\r\n return [...filtered, newToast];\r\n });\r\n\r\n // ✅ ANIMAÇÃO DE ENTRADA\r\n setTimeout(() => {\r\n setVisibleToasts(prev => new Set([...prev, id]));\r\n }, 50);\r\n\r\n // ✅ AUTO-HIDE SE NÃO FOR PERSISTENTE\r\n if (!newToast.persistent) {\r\n const timeoutId = setTimeout(() => {\r\n hideToast(id);\r\n }, newToast.duration);\r\n \r\n timeouts.current.set(id, timeoutId);\r\n }\r\n\r\n return id;\r\n }, [maxToasts]);\r\n\r\n const hideToast = useCallback((id: string) => {\r\n clearToastTimeout(id);\r\n \r\n // ✅ ANIMAÇÃO DE SAÍDA\r\n setVisibleToasts(prev => {\r\n const newSet = new Set(prev);\r\n newSet.delete(id);\r\n return newSet;\r\n });\r\n\r\n // ✅ REMOÇÃO APÓS ANIMAÇÃO\r\n setTimeout(() => {\r\n setToasts(prev => prev.filter(toast => toast.id !== id));\r\n }, 450);\r\n }, [clearToastTimeout]);\r\n\r\n const hideAllToasts = useCallback(() => {\r\n timeouts.current.forEach(clearTimeout);\r\n timeouts.current.clear();\r\n \r\n setVisibleToasts(new Set());\r\n setTimeout(() => {\r\n setToasts([]);\r\n }, 450);\r\n }, []);\r\n\r\n useEffect(() => {\r\n return () => {\r\n timeouts.current.forEach(clearTimeout);\r\n timeouts.current.clear();\r\n };\r\n }, []);\r\n\r\n const contextValue = useMemo<ToastContextType>(() => ({\r\n showToast,\r\n hideToast,\r\n hideAllToasts,\r\n }), [showToast, hideToast, hideAllToasts]);\r\n\r\n return (\r\n <ToastContext.Provider value={contextValue}>\r\n {children}\r\n <ToastContainer \r\n toasts={toasts} \r\n onClose={hideToast}\r\n visibleToasts={visibleToasts}\r\n />\r\n </ToastContext.Provider>\r\n );\r\n};\r\n\r\nexport const useToast = (): ToastContextType => {\r\n const context = useContext(ToastContext);\r\n if (!context) {\r\n throw new Error('useToast must be used within a ToastProvider');\r\n }\r\n return context;\r\n};\r\n\r\n\r\nexport const Toast = (() => {\r\n let toastContext: ToastContextType | null = null;\r\n \r\n const setContext = (context: ToastContextType) => {\r\n toastContext = context;\r\n };\r\n \r\n const show = (message: string, type: ToastType = 'info', options?: ToastOptions) => {\r\n if (!toastContext) {\r\n console.error('Toast context not available. Make sure ToastProvider is mounted.');\r\n return '';\r\n }\r\n return toastContext.showToast(message, type, options);\r\n };\r\n \r\n return { show, setContext };\r\n})();\r\n\r\nexport default ToastProvider;","import * as React from \"react\";\r\nimport clsx from 'clsx';\r\nimport { Switch as SwitchRadix} from \"radix-ui\";\r\nimport styles from './Switch.module.scss';\r\nimport { SwitchProps } from './Switch.types';\r\n\r\nconst Switch: React.FC<SwitchProps> = ({\r\n\tdisabled = false,\r\n\tdefaultChecked = false,\r\n\tchecked,\r\n\tonCheckedChange,\r\n\tname,\r\n\tvalue\r\n}) => (\r\n\t\t<div className={clsx(styles.container)}>\r\n\t\t\t<SwitchRadix.Root \r\n\t\t\t\tclassName={styles.switchRoot} \r\n\t\t\t\tdisabled={disabled} \r\n\t\t\t\tdefaultChecked={defaultChecked} \r\n\t\t\t\tonCheckedChange={onCheckedChange} \r\n\t\t\t\tname={name} \r\n\t\t\t\tvalue={value}\r\n\t\t\t>\r\n\t\t\t\t<SwitchRadix.Thumb className={styles.switchThumb} />\r\n\t\t\t</SwitchRadix.Root>\r\n\t\t</div>\r\n);\r\n\r\nexport default Switch;","import React, { useRef, useState, useCallback, useEffect } from 'react';\r\nimport clsx from 'clsx';\r\nimport styles from './VerificationCode.module.scss';\r\nimport type { InputType, VerificationCodeProps } from './VerificationCode.types';\r\n\r\n/**\r\n * Mapa de regex para validação dos tipos de entrada\r\n */\r\nconst REGEX_MAP: Record<InputType, RegExp> = {\r\n numeric: /^[0-9]$/,\r\n alpha: /^[a-zA-Z]$/,\r\n alphanumeric: /^[a-zA-Z0-9]$/,\r\n};\r\n\r\n/**\r\n * Componente VerificationCode para entrada de códigos de verificação\r\n * \r\n * @description Permite entrada de códigos com múltiplos dígitos,\r\n * suportando diferentes tipos de caracteres e navegação por teclado.\r\n * \r\n * @example\r\n * ```tsx\r\n * <VerificationCode\r\n * length={6}\r\n * inputType=\"numeric\"\r\n * onComplete={(code) => console.log('Código:', code)}\r\n * hasError={false}\r\n * />\r\n * ```\r\n */\r\nconst VerificationCode: React.FC<VerificationCodeProps> = ({\r\n length = 6,\r\n inputType = 'numeric',\r\n onComplete,\r\n hasError = false,\r\n errorMessage = '',\r\n disabled = false,\r\n className = ''\r\n}) => {\r\n\r\n const validLength = Math.min(Math.max(length, 1), 100);\r\n const [values, setValues] = useState<string[]>(Array(validLength).fill(''));\r\n const inputsRef = useRef<(HTMLInputElement | null)[]>([]);\r\n const currentRegex = REGEX_MAP[inputType] || REGEX_MAP.numeric;\r\n\r\n\r\n useEffect(() => {\r\n setValues(Array(validLength).fill(''));\r\n }, [inputType, validLength]);\r\n\r\n \r\n const handleChange = useCallback((index: number, value: string): void => {\r\n\r\n if (!currentRegex.test(value)) return;\r\n\r\n const newValues = [...values];\r\n newValues[index] = value;\r\n setValues(newValues);\r\n if (value && index < validLength - 1) {\r\n inputsRef.current[index + 1]?.focus();\r\n }\r\n\r\n if (newValues.every(v => v !== '')) {\r\n onComplete?.(newValues.join(''));\r\n }\r\n }, [values, currentRegex, onComplete, validLength]);\r\n\r\n const handlePaste = useCallback((e: React.ClipboardEvent<HTMLInputElement>): void => {\r\n e.preventDefault();\r\n\r\n const pasteData = e.clipboardData.getData('Text');\r\n const valuesToPaste = pasteData.split('').slice(0, validLength);\r\n\r\n const newValues = [...values];\r\n\r\n valuesToPaste.forEach((value, index) => {\r\n if (currentRegex.test(value)) {\r\n newValues[index] = value;\r\n }\r\n });\r\n\r\n setValues(newValues);\r\n\r\n const firstEmptyIndex = newValues.findIndex(v => v === '');\r\n const focusIndex = firstEmptyIndex === -1 ? validLength - 1 : firstEmptyIndex;\r\n inputsRef.current[focusIndex]?.focus();\r\n\r\n\r\n if (newValues.every(v => v !== '')) {\r\n onComplete?.(newValues.join(''));\r\n }\r\n }, [values, currentRegex, onComplete, validLength]);\r\n\r\n const handleKeyDown = useCallback((index: number, e: React.KeyboardEvent<HTMLInputElement>): void => {\r\n if (e.key === 'Backspace') {\r\n e.preventDefault();\r\n\r\n const newValues = [...values];\r\n\r\n if (values[index]) {\r\n\r\n newValues[index] = '';\r\n setValues(newValues);\r\n } else if (index > 0) {\r\n\r\n inputsRef.current[index - 1]?.focus();\r\n newValues[index - 1] = '';\r\n setValues(newValues);\r\n }\r\n }\r\n\r\n if (e.key === 'Delete') {\r\n e.preventDefault();\r\n\r\n const newValues = [...values];\r\n newValues[index] = '';\r\n setValues(newValues);\r\n\r\n if (index < validLength - 1) {\r\n inputsRef.current[index + 1]?.focus();\r\n }\r\n }\r\n if (e.key === 'ArrowLeft' && index > 0) {\r\n e.preventDefault();\r\n inputsRef.current[index - 1]?.focus();\r\n }\r\n\r\n if (e.key === 'ArrowRight' && index < validLength - 1) {\r\n e.preventDefault();\r\n inputsRef.current[index + 1]?.focus();\r\n }\r\n }, [values, validLength]);\r\n\r\n const handleKeyUp = useCallback((index: number, e: React.KeyboardEvent<HTMLInputElement>): void => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n\r\n if (values[index] && index < validLength - 1) {\r\n inputsRef.current[index + 1]?.focus();\r\n } else if (values[index] && index === validLength - 1) {\r\n inputsRef.current[index]?.blur();\r\n }\r\n }\r\n }, [values, validLength]);\r\n const handleFocus = useCallback((e: React.FocusEvent<HTMLInputElement>): void => {\r\n e.target.select();\r\n }, []);\r\n\r\n return (\r\n <>\r\n <div className={clsx(styles['zds-verification-code__container'], className)}>\r\n {values.map((val, i) => (\r\n <input\r\n id={`zds-verification-code__element-${i}`}\r\n key={i}\r\n ref={(el) => {\r\n inputsRef.current[i] = el;\r\n }}\r\n type=\"text\"\r\n inputMode={inputType === 'numeric' ? 'numeric' : 'text'}\r\n maxLength={1}\r\n value={val}\r\n onChange={(e) => handleChange(i, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(i, e)}\r\n onKeyUp={(e) => handleKeyUp(i, e)}\r\n onPaste={i === 0 ? handlePaste : undefined}\r\n onFocus={handleFocus}\r\n disabled={disabled}\r\n className={clsx(styles['zds-verification-code__input'], {\r\n [styles['zds-verification-code__has-error']]: hasError,\r\n [styles['zds-verification-code__filled']]: val,\r\n })}\r\n aria-invalid={hasError}\r\n aria-label={`Dígito ${i + 1} de ${validLength}`}\r\n aria-describedby={hasError && errorMessage ? 'verification-code-error' : undefined}\r\n autoComplete=\"one-time-code\"\r\n />\r\n ))}\r\n </div>\r\n\r\n {hasError && errorMessage && (\r\n <div\r\n id=\"verification-code-error\"\r\n className={styles['zds-verification-code__error']}\r\n role=\"alert\"\r\n aria-live=\"assertive\"\r\n >\r\n {errorMessage}\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default VerificationCode;","import { useState, useCallback, useRef, useEffect } from 'react';\r\n\r\n/**\r\n * Configurações para simulação de API\r\n */\r\nexport interface ApiSimulationConfig {\r\n /** Items por página */\r\n itemsPerPage?: number;\r\n /** Total de items no dataset */\r\n totalItems?: number;\r\n /** Delay em ms para simular latência */\r\n delay?: number;\r\n /** Taxa de erro (0-1) para simular falhas */\r\n errorRate?: number;\r\n /** Função geradora de items customizada */\r\n itemGenerator?: (index: number, searchQuery?: string) => any;\r\n /** Debug mode */\r\n debug?: boolean;\r\n}\r\n\r\n/**\r\n * Estado da simulação de API\r\n */\r\nexport interface ApiSimulationState<T> {\r\n /** Items carregados */\r\n items: T[];\r\n /** Página atual */\r\n currentPage: number;\r\n /** Total de páginas */\r\n totalPages: number;\r\n /** Status do carregamento */\r\n status: 'idle' | 'loading' | 'succeeded' | 'failed';\r\n /** Erro atual (se houver) */\r\n error: string | null;\r\n /** Query de busca atual */\r\n searchQuery: string;\r\n /** Se há próxima página */\r\n hasNextPage: boolean;\r\n /** Se é a primeira página */\r\n isFirstPage: boolean;\r\n}\r\n\r\nexport interface ApiSimulationActions {\r\n /** Carregar próxima página */\r\n loadNextPage: () => Promise<void>;\r\n /** Realizar nova busca */\r\n search: (query: string) => Promise<void>;\r\n /** Reset completo */\r\n reset: () => void;\r\n /** Retry da última operação */\r\n retry: () => Promise<void>;\r\n}\r\n\r\nexport interface UseApiSimulationReturn<T> extends ApiSimulationState<T> {\r\n actions: ApiSimulationActions;\r\n}\r\n\r\n\r\nexport function useApiSimulation<T = any>(\r\n config: ApiSimulationConfig = {}\r\n): UseApiSimulationReturn<T> {\r\n const {\r\n itemsPerPage = 20,\r\n totalItems = 500,\r\n delay = 800,\r\n errorRate = 0,\r\n itemGenerator,\r\n debug = false\r\n } = config;\r\n\r\n // Estados\r\n const [items, setItems] = useState<T[]>([]);\r\n const [currentPage, setCurrentPage] = useState(0);\r\n const [status, setStatus] = useState<'idle' | 'loading' | 'succeeded' | 'failed'>('idle');\r\n const [error, setError] = useState<string | null>(null);\r\n const [searchQuery, setSearchQuery] = useState('');\r\n\r\n // Refs para evitar re-criações\r\n const abortControllerRef = useRef<AbortController | null>(null);\r\n const lastOperationRef = useRef<'load' | 'search'>('load');\r\n\r\n const totalPages = Math.ceil(totalItems / itemsPerPage);\r\n const hasNextPage = currentPage < totalPages;\r\n const isFirstPage = currentPage === 0;\r\n\r\n // ✅ Debug logger\r\n const debugLog = useCallback((message: string, data?: any) => {\r\n if (debug) {\r\n console.log(`🔄 [ApiSimulation] ${message}`, data || '');\r\n }\r\n }, [debug]);\r\n\r\n // ✅ Gerador padrão de items\r\n const defaultItemGenerator = useCallback((index: number, search?: string) => {\r\n const departments = ['Vendas', 'Marketing', 'TI', 'RH', 'Financeiro', 'Operações'];\r\n const locations = ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte', 'Porto Alegre'];\r\n const itemNumber = index + 1;\r\n\r\n return {\r\n id: `item-${itemNumber}`,\r\n text: search\r\n ? `${search} - Item ${itemNumber}`\r\n : `Item ${itemNumber}`,\r\n subText: search\r\n ? `Resultado para \"${search}\" - ${departments[itemNumber % departments.length]}`\r\n : `${departments[itemNumber % departments.length]} • ${locations[itemNumber % locations.length]}`,\r\n disabled: itemNumber % 25 === 0,\r\n category: departments[itemNumber % departments.length],\r\n location: locations[itemNumber % locations.length]\r\n };\r\n }, []);\r\n\r\n // ✅ Simular chamada de API\r\n const simulateApiCall = useCallback(async (\r\n page: number,\r\n search: string = ''\r\n ): Promise<T[]> => {\r\n debugLog('Iniciando simulação de API', { page, search, delay });\r\n\r\n // Cancelar requisição anterior se existir\r\n if (abortControllerRef.current) {\r\n abortControllerRef.current.abort();\r\n }\r\n\r\n // Criar novo controller\r\n const controller = new AbortController();\r\n abortControllerRef.current = controller;\r\n\r\n try {\r\n // Simular delay de rede\r\n await new Promise((resolve, reject) => {\r\n const timeout = setTimeout(resolve, delay);\r\n controller.signal.addEventListener('abort', () => {\r\n clearTimeout(timeout);\r\n reject(new Error('Request aborted'));\r\n });\r\n });\r\n\r\n // Verificar se foi cancelada\r\n if (controller.signal.aborted) {\r\n throw new Error('Request was cancelled');\r\n }\r\n\r\n // Simular erro aleatório\r\n if (Math.random() < errorRate) {\r\n throw new Error('Simulated network error');\r\n }\r\n\r\n // Calcular range de items\r\n const startIndex = page * itemsPerPage;\r\n const generator = itemGenerator || defaultItemGenerator;\r\n\r\n // Gerar items da página\r\n const pageItems = Array.from({ length: itemsPerPage }, (_, index) => {\r\n const globalIndex = startIndex + index;\r\n if (globalIndex >= totalItems) return null;\r\n return generator(globalIndex, search);\r\n }).filter(Boolean) as T[];\r\n\r\n debugLog('API simulada com sucesso', {\r\n page,\r\n itemsReturned: pageItems.length,\r\n search\r\n });\r\n\r\n return pageItems;\r\n\r\n } catch (err) {\r\n if (err instanceof Error && err.message === 'Request was cancelled') {\r\n debugLog('Request cancelada');\r\n throw err;\r\n }\r\n\r\n debugLog('Erro na simulação de API', err);\r\n throw new Error('Falha ao carregar dados. Tente novamente.');\r\n }\r\n }, [delay, errorRate, itemsPerPage, totalItems, itemGenerator, defaultItemGenerator, debugLog]);\r\n\r\n // ✅ Carregar próxima página\r\n const loadNextPage = useCallback(async () => {\r\n if (status === 'loading' || !hasNextPage) {\r\n debugLog('Load next page ignorado', { status, hasNextPage });\r\n return;\r\n }\r\n\r\n lastOperationRef.current = 'load';\r\n setStatus('loading');\r\n setError(null);\r\n\r\n try {\r\n const nextPage = currentPage + 1;\r\n const newItems = await simulateApiCall(nextPage - 1, searchQuery);\r\n\r\n setItems(prev => nextPage === 1 ? newItems : [...prev, ...newItems]);\r\n setCurrentPage(nextPage);\r\n setStatus('succeeded');\r\n\r\n debugLog('Página carregada com sucesso', {\r\n page: nextPage,\r\n totalItems: items.length + newItems.length\r\n });\r\n } catch (err) {\r\n if (err instanceof Error && err.message === 'Request was cancelled') {\r\n return; // Ignore cancelled requests\r\n }\r\n\r\n setError(err instanceof Error ? err.message : 'Erro desconhecido');\r\n setStatus('failed');\r\n debugLog('Erro ao carregar página', err);\r\n }\r\n }, [status, hasNextPage, currentPage, searchQuery, simulateApiCall, items.length, debugLog]);\r\n\r\n const search = useCallback(async (query: string) => {\r\n debugLog('Iniciando busca', { query });\r\n\r\n lastOperationRef.current = 'search';\r\n setSearchQuery(query);\r\n setCurrentPage(0);\r\n setItems([]);\r\n setStatus('loading');\r\n setError(null);\r\n\r\n try {\r\n const searchResults = await simulateApiCall(0, query);\r\n setItems(searchResults);\r\n setCurrentPage(1);\r\n setStatus('succeeded');\r\n\r\n debugLog('Busca concluída', {\r\n query,\r\n results: searchResults.length\r\n });\r\n } catch (err) {\r\n if (err instanceof Error && err.message === 'Request was cancelled') {\r\n return;\r\n }\r\n\r\n setError(err instanceof Error ? err.message : 'Erro na busca');\r\n setStatus('failed');\r\n debugLog('Erro na busca', err);\r\n }\r\n }, [simulateApiCall, debugLog]);\r\n\r\n const reset = useCallback(() => {\r\n debugLog('Reset completo da simulação');\r\n\r\n if (abortControllerRef.current) {\r\n abortControllerRef.current.abort();\r\n }\r\n\r\n setItems([]);\r\n setCurrentPage(0);\r\n setStatus('idle');\r\n setError(null);\r\n setSearchQuery('');\r\n }, [debugLog]);\r\n\r\n const retry = useCallback(async () => {\r\n debugLog('Retry da última operação', {\r\n lastOperation: lastOperationRef.current\r\n });\r\n\r\n if (lastOperationRef.current === 'search') {\r\n await search(searchQuery);\r\n } else {\r\n await loadNextPage();\r\n }\r\n }, [search, searchQuery, loadNextPage, debugLog]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (abortControllerRef.current) {\r\n abortControllerRef.current.abort();\r\n }\r\n };\r\n }, []);\r\n\r\n return {\r\n // Estado\r\n items,\r\n currentPage,\r\n totalPages,\r\n status,\r\n error,\r\n searchQuery,\r\n hasNextPage,\r\n isFirstPage,\r\n\r\n // Ações\r\n actions: {\r\n loadNextPage,\r\n search,\r\n reset,\r\n retry\r\n }\r\n };\r\n}\r\n\r\nexport default useApiSimulation;"],"names":["styles","_jsx","_jsxs","_Fragment","CheckboxRadix","TooltipRadix","TextField","Calendar","Dropdown","Select","SelectRadix","formatDistanceLocale","formatDistance","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","localize","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","defaultLocale","SwitchRadix"],"mappings":"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E,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,+EAA+E,CAAC;AACrN;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,sBAAsB;AAC5B,EAAE,uDAAuD;;AAEzD;AACA;AACA,MAAM,0BAA0B,GAAG,mCAAmC;;AAEtE,MAAM,mBAAmB,GAAG,cAAc;AAC1C,MAAM,iBAAiB,GAAG,KAAK;AAC/B,MAAM,6BAA6B,GAAG,UAAU;;AAIhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE;AACjD,EAAE,MAAM,cAAc,GAAG,iBAAiB,EAAE;AAC5C,EAAE,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,cAAc,CAAC,MAAM,IAAIC,IAAa;;AAE1E,EAAE,MAAM,qBAAqB;AAC7B,IAAI,OAAO,EAAE,qBAAqB;AAClC,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB;AACnD,IAAI,cAAc,CAAC,qBAAqB;AACxC,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,qBAAqB;AACzD,IAAI,CAAC;;AAEL,EAAE,MAAM,YAAY;AACpB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;AAC1C,IAAI,cAAc,CAAC,YAAY;AAC/B,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY;AAChD,IAAI,CAAC;;AAEL,EAAE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;;AAEhD,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAC9B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","x_google_ignoreList":[38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80]}