mado-ui 0.5.4 → 0.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/index.css +283 -8
- package/dist/components/drop-down.d.ts +12 -12
- package/dist/components/drop-down.d.ts.map +1 -1
- package/dist/components/form/human-verification.d.ts +15 -0
- package/dist/components/form/human-verification.d.ts.map +1 -0
- package/dist/components/form/input/date/views/calendar-view.d.ts +2 -0
- package/dist/components/form/input/date/views/calendar-view.d.ts.map +1 -0
- package/dist/components/form/input/date/views/clock-view.d.ts +2 -0
- package/dist/components/form/input/date/views/clock-view.d.ts.map +1 -0
- package/dist/components/form/input/date/views/dropdown-view.d.ts +2 -0
- package/dist/components/form/input/date/views/dropdown-view.d.ts.map +1 -0
- package/dist/components/form/input/date/views/rotary-view.d.ts +2 -0
- package/dist/components/form/input/date/views/rotary-view.d.ts.map +1 -0
- package/dist/components/form/input/date/views/view-handler.d.ts +21 -0
- package/dist/components/form/input/date/views/view-handler.d.ts.map +1 -0
- package/dist/components/form/input/index.d.ts +24 -24
- package/dist/components/form/input/index.d.ts.map +1 -1
- package/dist/components/form/input/input-types.d.ts +102 -0
- package/dist/components/form/input/input-types.d.ts.map +1 -0
- package/dist/components/form/input/number-input.d.ts +4 -0
- package/dist/components/form/input/number-input.d.ts.map +1 -0
- package/dist/components/form/input/text-input.d.ts +36 -0
- package/dist/components/form/input/text-input.d.ts.map +1 -0
- package/dist/components/form/select.d.ts +41 -0
- package/dist/components/form/select.d.ts.map +1 -0
- package/dist/components/link.d.ts +14 -13
- package/dist/components/link.d.ts.map +1 -1
- package/dist/components/tooltip.d.ts +7 -7
- package/dist/components/tooltip.d.ts.map +1 -1
- package/dist/components/video.d.ts +6 -6
- package/dist/components/video.d.ts.map +1 -1
- package/dist/components.d.ts +50 -49
- package/dist/components.esm.js +600 -459
- package/dist/components.esm.js.map +1 -1
- package/dist/components.js +598 -456
- package/dist/components.js.map +1 -1
- package/dist/graphics/index.d.ts +2 -0
- package/dist/graphics/index.d.ts.map +1 -0
- package/dist/graphics/social-media/facebook-logo.d.ts +33 -0
- package/dist/graphics/social-media/facebook-logo.d.ts.map +1 -0
- package/dist/graphics/social-media/google-logo.d.ts +13 -0
- package/dist/graphics/social-media/google-logo.d.ts.map +1 -0
- package/dist/graphics/social-media/index.d.ts +8 -0
- package/dist/graphics/social-media/index.d.ts.map +1 -0
- package/dist/graphics/social-media/instagram-logo.d.ts +13 -0
- package/dist/graphics/social-media/instagram-logo.d.ts.map +1 -0
- package/dist/graphics/social-media/linkedin-logo.d.ts +26 -0
- package/dist/graphics/social-media/linkedin-logo.d.ts.map +1 -0
- package/dist/graphics/social-media/tiktok-logo.d.ts +26 -0
- package/dist/graphics/social-media/tiktok-logo.d.ts.map +1 -0
- package/dist/graphics/social-media/x-logo.d.ts +6 -0
- package/dist/graphics/social-media/x-logo.d.ts.map +1 -0
- package/dist/graphics/social-media/youtube-logo.d.ts +26 -0
- package/dist/graphics/social-media/youtube-logo.d.ts.map +1 -0
- package/dist/graphics.d.ts +141 -0
- package/dist/graphics.d.ts.map +1 -0
- package/dist/graphics.esm.js +241 -0
- package/dist/graphics.esm.js.map +1 -0
- package/dist/graphics.js +249 -0
- package/dist/graphics.js.map +1 -0
- package/dist/icons/index.d.ts +142 -143
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons/square-and-arrow-up-right.d.ts +3 -0
- package/dist/icons/square-and-arrow-up-right.d.ts.map +1 -0
- package/dist/icons/square-and-pencil.d.ts +2 -2
- package/dist/icons/square-and-pencil.d.ts.map +1 -1
- package/dist/icons.d.ts +2 -4
- package/dist/icons.esm.js +2 -6
- package/dist/icons.esm.js.map +1 -1
- package/dist/icons.js +1 -6
- package/dist/icons.js.map +1 -1
- package/dist/index.d.ts +50 -49
- package/dist/index.esm.js +600 -459
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +598 -456
- package/dist/index.js.map +1 -1
- package/dist/utils/string-manipulation.d.ts +23 -1
- package/dist/utils/string-manipulation.d.ts.map +1 -1
- package/dist/utils.d.ts +24 -2
- package/dist/utils.esm.js +76 -18
- package/dist/utils.esm.js.map +1 -1
- package/dist/utils.js +78 -17
- package/dist/utils.js.map +1 -1
- package/package.json +24 -32
- package/dist/components/mado-ui-provider.d.ts +0 -1
- package/dist/hooks/use-anime-scope.d.ts +0 -15
- package/dist/icons/square-and-pencil-fill.d.ts +0 -3
- package/dist/icons/square-and-pencil-fill.d.ts.map +0 -1
- package/dist/types.esm.js +0 -2
- package/dist/types.esm.js.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
package/dist/components.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sources":["../src/utils/custom-tailwind-merge.ts","../src/utils/get-date.ts","../src/utils/helpers.tsx","../src/utils/math.ts","../src/utils/regex.ts","../src/utils/string-manipulation.ts","../src/utils/tw-sort.ts","../src/components/link.tsx","../src/components/button.tsx","../src/icons/arrow-down-backward-and-arrow-up-forward-rectangle.tsx","../src/icons/arrow-up-forward-and-arrow-down-backward-rectangle.tsx","../src/icons/chevron-down.tsx","../src/icons/exclamationmark-octagon.tsx","../src/icons/15-arrow-trianglehead-clockwise.tsx","../src/icons/15-arrow-trianglehead-counterclockwise.tsx","../src/icons/5-arrow-trianglehead-clockwise.tsx","../src/icons/5-arrow-trianglehead-counterclockwise.tsx","../src/icons/gearshape-fill.tsx","../src/icons/90-arrow-trianglehead-clockwise.tsx","../src/icons/90-arrow-trianglehead-counterclockwise.tsx","../src/icons/pause-fill.tsx","../src/icons/photo-badge-arrow-down-fill.tsx","../src/icons/play-fill.tsx","../src/icons/rectangle-fill-on-arrow-down-forward-topleading-rectangle.tsx","../src/icons/rectangle-triangle-up.tsx","../src/icons/60-arrow-trianglehead-clockwise.tsx","../src/icons/60-arrow-trianglehead-counterclockwise.tsx","../src/icons/speaker-minus-fill.tsx","../src/icons/speaker-plus-fill.tsx","../src/icons/10-arrow-trianglehead-clockwise.tsx","../src/icons/10-arrow-trianglehead-counterclockwise.tsx","../src/icons/30-arrow-trianglehead-clockwise.tsx","../src/icons/30-arrow-trianglehead-counterclockwise.tsx","../src/icons/xmark.tsx","../src/components/details.tsx","../src/components/drop-down.tsx","../src/hooks/create-fast-context.tsx","../src/hooks/use-form-context.tsx","../src/hooks/use-fieldset-context.tsx","../src/hooks/use-form-status.tsx","../src/hooks/use-pointer-movement.ts","../src/components/form/fieldset.tsx","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../src/components/tooltip.tsx","../src/components/form/input/index.tsx","../src/components/form/submit-button.tsx","../src/components/form/textarea.tsx","../src/components/form/index.tsx","../src/components/ghost.tsx","../src/components/heading.tsx","../src/components/iframe.tsx","../src/components/modal.tsx","../src/components/time.tsx","../src/components/video.tsx"],"sourcesContent":["import { ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds, extendTailwindMerge } from 'tailwind-merge'\n\nexport type AdditionalmadoClassGroupIds =\n\t| 'animation-direction'\n\t| 'animation-fill'\n\t| 'animation-iteration'\n\t| 'animation-state'\n\nconst integerList = Array.from({ length: 100 }, (_, i) => `${i + 1}`)\n\nexport const twMerge = extendTailwindMerge<AdditionalmadoClassGroupIds>({\n\textend: {\n\t\ttheme: {\n\t\t\tcolor: [\n\t\t\t\t{\n\t\t\t\t\tui: [\n\t\t\t\t\t\t'red',\n\t\t\t\t\t\t'orange',\n\t\t\t\t\t\t'yellow',\n\t\t\t\t\t\t'green',\n\t\t\t\t\t\t'sky-blue',\n\t\t\t\t\t\t'blue',\n\t\t\t\t\t\t'violet',\n\t\t\t\t\t\t'magenta',\n\t\t\t\t\t\t'purple',\n\t\t\t\t\t\t'brown',\n\t\t\t\t\t\t'grey',\n\t\t\t\t\t\t'pink',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tclassGroups: {\n\t\t\tanimate: [\n\t\t\t\t{\n\t\t\t\t\tanimate: [\n\t\t\t\t\t\t'bounce',\n\t\t\t\t\t\t'double-spin',\n\t\t\t\t\t\t'drop-in',\n\t\t\t\t\t\t'flip',\n\t\t\t\t\t\t'flip-again',\n\t\t\t\t\t\t'grid-rows',\n\t\t\t\t\t\t'heartbeat',\n\t\t\t\t\t\t'ping',\n\t\t\t\t\t\t'pulse',\n\t\t\t\t\t\t'slide-up',\n\t\t\t\t\t\t'spin',\n\t\t\t\t\t\t'wave',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-direction': [\n\t\t\t\t{\n\t\t\t\t\t'animation-direction': ['normal', 'reverse', 'alternate', 'alternate-reverse'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-fill': [\n\t\t\t\t{\n\t\t\t\t\t'animation-fill': ['none', 'forwards', 'backwards', 'both'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-iteration': [\n\t\t\t\t{\n\t\t\t\t\t'animation-iteration': [...integerList, 'infinite'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-state': [\n\t\t\t\t{\n\t\t\t\t\t'animation-state': ['running', 'paused'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'grid-cols': [\n\t\t\t\t{\n\t\t\t\t\t'grid-cols': ['0fr', '1fr'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'grid-rows': [\n\t\t\t\t{\n\t\t\t\t\t'grid-rows': ['0fr', '1fr'],\n\t\t\t\t},\n\t\t\t],\n\t\t\ttransition: ['transition-rows'],\n\t\t},\n\t},\n})\n\nexport function extendMadoTailwindMerge<\n\tAdditionalClassGroupIds extends string = AdditionalmadoClassGroupIds,\n\tAdditionalThemeGroupIds extends string = never,\n>(\n\tconfigExtension: ConfigExtension<\n\t\tDefaultClassGroupIds | AdditionalClassGroupIds,\n\t\tDefaultThemeGroupIds | AdditionalThemeGroupIds\n\t>,\n) {\n\tconst extend = configExtension.extend || {}\n\tconst theme = extend.theme || {}\n\tconst color = 'color' in theme ? theme.color : []\n\tconst classGroups = extend.classGroups || {}\n\n\tconst themeRest = { ...theme }\n\tif ('color' in themeRest) delete themeRest.color\n\n\tconst extendRest = { ...extend }\n\tdelete extendRest.theme\n\tdelete extendRest.classGroups\n\n\treturn extendTailwindMerge<AdditionalClassGroupIds, AdditionalThemeGroupIds>({\n\t\textend: {\n\t\t\ttheme: {\n\t\t\t\tcolor: [\n\t\t\t\t\t{\n\t\t\t\t\t\tui: [\n\t\t\t\t\t\t\t'red',\n\t\t\t\t\t\t\t'orange',\n\t\t\t\t\t\t\t'yellow',\n\t\t\t\t\t\t\t'green',\n\t\t\t\t\t\t\t'sky-blue',\n\t\t\t\t\t\t\t'blue',\n\t\t\t\t\t\t\t'violet',\n\t\t\t\t\t\t\t'magenta',\n\t\t\t\t\t\t\t'purple',\n\t\t\t\t\t\t\t'brown',\n\t\t\t\t\t\t\t'grey',\n\t\t\t\t\t\t\t'pink',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t...(color as { [key: string]: string[] }[]),\n\t\t\t\t],\n\t\t\t\t...themeRest,\n\t\t\t} as { [key: string]: { [key: string]: string[] }[] } | any,\n\t\t\tclassGroups: {\n\t\t\t\tanimate: [\n\t\t\t\t\t{\n\t\t\t\t\t\tanimate: [\n\t\t\t\t\t\t\t'bounce',\n\t\t\t\t\t\t\t'double-spin',\n\t\t\t\t\t\t\t'drop-in',\n\t\t\t\t\t\t\t'flip',\n\t\t\t\t\t\t\t'flip-again',\n\t\t\t\t\t\t\t'grid-rows',\n\t\t\t\t\t\t\t'heartbeat',\n\t\t\t\t\t\t\t'ping',\n\t\t\t\t\t\t\t'pulse',\n\t\t\t\t\t\t\t'slide-up',\n\t\t\t\t\t\t\t'spin',\n\t\t\t\t\t\t\t'wave',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-direction': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-direction': ['normal', 'reverse', 'alternate', 'alternate-reverse'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-fill': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-fill': ['none', 'forwards', 'backwards', 'both'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-iteration': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-iteration': [...integerList, 'infinite'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-state': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-state': ['running', 'paused'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'grid-cols': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'grid-cols': ['0fr', '1fr'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'grid-rows': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'grid-rows': ['0fr', '1fr'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\ttransition: ['transition-rows'],\n\t\t\t\t...classGroups,\n\t\t\t} as { [key: string]: { [key: string]: string[] }[] } | any,\n\t\t\t...extendRest,\n\t\t},\n\t\t...configExtension,\n\t})\n}\n","export type DayNumber =\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\nexport type DateTimeObject = {\n\tday: DayNumber\n\thour: HourNumber\n\tminute: MinuteNumber\n\tmonth: MonthNumber | MonthName\n\tsecond: SecondNumber\n\tyear: number\n}\n\nexport type HourNumber =\n\t| 0\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\nexport type MinuteNumber =\n\t| 0\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\t| 32\n\t| 33\n\t| 34\n\t| 35\n\t| 36\n\t| 37\n\t| 38\n\t| 39\n\t| 40\n\t| 41\n\t| 42\n\t| 43\n\t| 44\n\t| 45\n\t| 46\n\t| 47\n\t| 48\n\t| 49\n\t| 50\n\t| 51\n\t| 52\n\t| 53\n\t| 54\n\t| 55\n\t| 56\n\t| 57\n\t| 58\n\t| 59\n\nexport type MonthName =\n\t| 'January'\n\t| 'February'\n\t| 'March'\n\t| 'April'\n\t| 'May'\n\t| 'June'\n\t| 'July'\n\t| 'August'\n\t| 'September'\n\t| 'October'\n\t| 'November'\n\t| 'December'\n\nexport type MonthNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12\n\nexport type SecondNumber = MinuteNumber\n\nexport type WeekdayName = 'Sunday' | 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday'\n\nexport type WeekdayNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7\n\nexport type WeekNumber =\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\t| 32\n\t| 33\n\t| 34\n\t| 35\n\t| 36\n\t| 37\n\t| 38\n\t| 39\n\t| 40\n\t| 41\n\t| 42\n\t| 43\n\t| 44\n\t| 45\n\t| 46\n\t| 47\n\t| 48\n\t| 49\n\t| 50\n\t| 51\n\t| 52\n\t| 53\n\n/** The current date as a Date object */\nconst d = new Date()\n\n/** The current minute of the current hour */\nconst minutes = d.getMinutes()\n\n/** The current year */\nconst year = d.getFullYear()\n\n/** An array of the names of month in order */\nexport const monthNamesList: MonthName[] = [\n\t'January',\n\t'February',\n\t'March',\n\t'April',\n\t'May',\n\t'June',\n\t'July',\n\t'August',\n\t'September',\n\t'October',\n\t'November',\n\t'December',\n]\n\n/** An array of the names of the days of the week in order */\nexport const weekdayNamesList: WeekdayName[] = [\n\t'Sunday',\n\t'Monday',\n\t'Tuesday',\n\t'Wednesday',\n\t'Thursday',\n\t'Friday',\n\t'Saturday',\n]\n\n/** The name of the current month */\nexport const currentMonthName = getMonthName()\n\n/** The name of the current day of the week */\nexport const currentWeekdayName = getWeekdayName()\n\n/**\n * ### Days In Month\n * - Returns the number of days in the specified month.\n * @param {Date} date A Date object representing the month to get the number of days for. (Preset to the current date)\n * @returns {number} The number of days in the specified month.\n */\nexport function daysInMonth(date: Date = d): number {\n\tconst selectedYear = date.getFullYear(),\n\t\tselectedMonth = date.getMonth() + 1\n\treturn new Date(selectedYear, selectedMonth, 0).getDate()\n}\n\n/**\n * ### First of Month\n * - Returns the first day of the specified month.\n * @param {Date} date A Date object representing the month to get the first day for. (Preset to current date)\n * @returns {Date} A Date object of the given month, with the first day.\n */\nexport function firstOfMonth(date: Date = d): Date {\n\t// Return a new Date object with the first of the month selected\n\treturn new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\n/**\n * ### Get Date\n * - Returns the date with two digits\n * @param {number|Date} date The date to get date\n * @returns {string} The date with two digits\n */\nexport function getDate(date: number | Date = d): string {\n\tif (typeof date !== 'number') date = date.getDate()\n\tlet formattedDate = date.toString()\n\tif (formattedDate.length === 1) formattedDate = `0${formattedDate}`\n\treturn formattedDate\n}\n\n/**\n * ### Get Hours\n * - Returns the hours with two digits\n * @param {number|Date} hours The date to get hours\n * @returns {string} The hours with two digits\n */\nexport function getHours(hours: number | Date = d): string {\n\tif (typeof hours !== 'number') hours = hours.getHours()\n\tlet formattedHours = hours.toString()\n\tif (formattedHours.length === 1) formattedHours = `0${formattedHours}`\n\treturn formattedHours\n}\n\n/**\n * ### Get Hours in 12\n * - Returns the hour based on the specified 24 hour value in a 12 hour format\n * @param {number|Date} hour The hour to be converted to 12 hour format\n * @returns {number} The hour in a 12 hour format\n */\nexport function getHoursIn12(hour: number | Date = d): number {\n\tif (typeof hour !== 'number') hour = hour.getHours()\n\tif (hour > 12) return hour - 12\n\treturn hour\n}\n\n/**\n * ### Get Meridian from Hour\n * - Returns either 'pm' or 'am' based on the specified 24 hour value\n * @param {number|Date} hour The hour to get the meridian from\n * @returns {'am'|'pm'} The meridian for the given hour\n */\nexport function getMeridianFromHour(hour: number | Date = d): 'am' | 'pm' {\n\tif (typeof hour !== 'number') hour = hour.getHours()\n\tif (hour >= 12) return 'pm'\n\treturn 'am'\n}\n\n/**\n * ### Get Milliseconds\n * - Returns the milliseconds with two digits\n * @param {number|Date} milliseconds The date to get milliseconds\n * @returns {string} The milliseconds with two digits\n */\nexport function getMilliseconds(milliseconds: number | Date = d): string {\n\tif (typeof milliseconds !== 'number') milliseconds = milliseconds.getMilliseconds()\n\tlet formattedMilliseconds = minutes.toString()\n\tif (formattedMilliseconds.length === 1) formattedMilliseconds = `0${formattedMilliseconds}`\n\treturn formattedMilliseconds\n}\n\n/**\n * ### Get Minutes\n * - Returns the minutes with two digits\n * @param {number|Date} minutes The date to get minutes\n * @returns {string} The minutes with two digits\n */\nexport function getMinutes(minutes: number | Date = d): string {\n\tif (typeof minutes !== 'number') minutes = minutes.getMinutes()\n\tlet formattedMinutes = minutes.toString()\n\tif (formattedMinutes.length === 1) formattedMinutes = `0${formattedMinutes}`\n\treturn formattedMinutes\n}\n\n/**\n * ### Get Month\n * - Returns the month with two digits\n * @param {number|Date} month The date to get month\n * @returns {string} The month with two digits\n */\nexport function getMonth(month: number | Date = d): string {\n\tif (typeof month !== 'number') month = month.getMonth() + 1\n\tlet formattedMonth = month.toString()\n\tif (formattedMonth.length === 1) formattedMonth = `0${formattedMonth}`\n\treturn formattedMonth\n}\n\nexport function getMonthIndexFromName(name: MonthName): number {\n\treturn monthNamesList.findIndex(monthName => monthName === name)\n}\n\n/**\n * ### Get Month Name\n * - Returns the name of the specified month\n * @param {Date} date A Date object representing the month to get the name of the month from. (Preset to the current date)\n * @returns {MonthName} The name of the specified month\n */\nexport function getMonthName(date: number | Date = d): MonthName {\n\tif (typeof date === 'number') return monthNamesList[date]\n\treturn monthNamesList[date.getMonth()]\n}\n\n/**\n * ### Get Next Month\n * - Returns the number of the following month from the specified month\n * @param {Date} date The Date object representing the month to get the following month from (Preset to current date)\n * @returns {number} The indexed month of the following month\n */\nexport function getNextMonth(date: Date = d): number {\n\tconst givenMonth = date.getMonth() // Get the month from date\n\t// Return the indexed month. min 0, max 11\n\treturn givenMonth === 11 ? 0 : givenMonth + 1\n}\n\n/**\n * ### Get Previous Month\n * - Returns the number of the previous month from the specified month\n * @param {Date} date The Date object representing the month to get the previous month from (Preset to current date)\n * @returns {number} The indexed month of the previous month\n */\nexport function getPreviousMonth(date: Date = d): number {\n\tconst givenMonth = date.getMonth() // Get the month from date\n\t// Return the indexed month. min 0, max 11\n\treturn givenMonth === 0 ? 11 : givenMonth - 1\n}\n\n/**\n * ### Get Seconds\n * - Returns the seconds with two digits\n * @param {number|Date} seconds The date to get seconds\n * @returns {string} The seconds with two digits\n */\nexport function getSeconds(seconds: number | Date = d): string {\n\tif (typeof seconds !== 'number') seconds = seconds.getSeconds()\n\tlet formattedSeconds = seconds.toString()\n\tif (formattedSeconds.length === 1) formattedSeconds = `0${formattedSeconds}`\n\treturn formattedSeconds\n}\n\n/**\n * ### Get User Readable Date\n * - Returns a string of the current date in a user-friendly way\n * - Includes `'Yesterday'`, '`Today'`, and `'Tomorrow'`\n * @param date (default: `new Date()`)\n * @returns {'Today'|'Tomorrow'|'Yesterday'|string} `'weekday, month day, year'` | `'Yesterday'` | `'Today'` | `'Tomorrow'`\n */\nexport function getUserReadableDate(date: Date = d): 'Today' | 'Tomorrow' | 'Yesterday' | string {\n\tconst dateTime = date.getTime()\n\n\tconst today = new Date(),\n\t\tisToday = dateTime === today.getTime()\n\n\tif (isToday) return 'Today'\n\n\tconst yesterday = new Date(today.getDate() - 1),\n\t\tisYesterday = dateTime === yesterday.getTime()\n\n\tif (isYesterday) return 'Yesterday'\n\n\tconst tomorrow = new Date(today.getDate() + 1),\n\t\tisTomorrow = dateTime === tomorrow.getTime()\n\n\tif (isTomorrow) return 'Tomorrow'\n\n\tconst thisYear = today.getFullYear(),\n\t\tisSameYear = date.getFullYear() === thisYear\n\n\tconst fullDateString = toFullDateString(date, {\n\t\tweekday: 'code',\n\t\tyear: !isSameYear,\n\t})\n\n\treturn fullDateString\n}\n\n/**\n * ### Get Weekday Name\n * - Returns the weekday name of the specified day\n * @param {number | Date} weekday A Date object or number representing the day to get the weekday name from. (Preset to the current date)\n * @returns {WeekdayName} The name of the specified weekday\n */\nexport function getWeekdayName(weekday: number | Date = d): WeekdayName {\n\tif (typeof weekday === 'number') return weekdayNamesList[weekday]\n\t// Return the name of the day of the week\n\treturn weekdayNamesList[weekday.getDay()]\n}\n\n/**\n * ### Get Years in Range\n * - Returns an array of years in between the specified minimum and maximum years\n * @param {number} minYear The minimum year\n * @param {number} maxYear The maximum year\n * @returns {number[]} Array of years\n */\nexport function getYearsInRange(minYear: number = 0, maxYear: number = year): number[] {\n\tconst yearList = []\n\n\tfor (let selectedYear = minYear; selectedYear <= maxYear; selectedYear++) {\n\t\tyearList.push(selectedYear)\n\t}\n\n\treturn yearList\n}\n\n/** Change how to display the weekday, month name, day of the month, and year. */\ntype ToFullDateStringOptionsProps = Partial<{\n\t/** Inclusion of the day of the month. (default: `true`) */\n\tday: boolean\n\t/** Inclusion of the month name. (default: `true`/`'full'`) */\n\tmonth: boolean | 'full' | 'code'\n\t/** Inclusion of the day of the week. (default: `true`/`'full'`) */\n\tweekday: boolean | 'full' | 'code'\n\t/** Inclusion of the year. (default: `true`) */\n\tyear: boolean | 'full' | 'code'\n}>\n\n/**\n * ### To Full Date String\n * - Returns a formatted string to display the date\n * @param {Date} date (default: `new Date()`)\n * @param {ToFullDateStringOptionsProps} options Change how to display the weekday, month name, day of the month, and year.\n * @returns {string} '`weekday`, `month` `day`, `year`'\n */\nexport function toFullDateString(date: Date = d, options?: ToFullDateStringOptionsProps): string {\n\tlet weekdayName: string = getWeekdayName(date),\n\t\tmonthName: string = getMonthName(date),\n\t\tdayOfMonth: number | string = date.getDate(),\n\t\tyear = date.getFullYear().toString()\n\n\tif (options) {\n\t\tconst includesWeekday = options.weekday !== false,\n\t\t\tincludesDay = options.day !== false,\n\t\t\tincludesMonth = options.month !== false,\n\t\t\tincludesYear = options.year !== false\n\n\t\tif (includesWeekday) {\n\t\t\tif (options.weekday === 'code') weekdayName = weekdayName.slice(0, 3)\n\n\t\t\tif (includesMonth || includesDay || includesYear) weekdayName += ', '\n\t\t} else {\n\t\t\tweekdayName = ''\n\t\t}\n\n\t\tif (includesMonth) {\n\t\t\tif (options.month === 'code') monthName = monthName.slice(0, 3)\n\n\t\t\tif (includesDay) monthName += ' '\n\t\t} else {\n\t\t\tmonthName = ''\n\t\t}\n\n\t\tif (!includesDay) dayOfMonth = ''\n\n\t\tif (includesYear) {\n\t\t\tif (options.year === 'code') year = year.slice(-2)\n\n\t\t\tif (includesMonth || includesDay) year = ', ' + year\n\t\t} else {\n\t\t\tyear = ''\n\t\t}\n\t}\n\n\treturn weekdayName + monthName + dayOfMonth + year\n}\n\n/**\n * ### Get User Readable Date From Timestampz\n * - Returns a string of the current date in a user-friendly way\n * - Includes `'Yesterday'`, '`Today'`, and `'Tomorrow'`\n * @param string\n * @returns {'Today'|'Tomorrow'|'Yesterday'|string} `'weekday, month day, year'` | `'Yesterday'` | `'Today'` | `'Tomorrow'`\n */\nexport function getUserReadableDateFromTimestampz(timestampz: string): 'Today' | 'Tomorrow' | 'Yesterday' | string {\n\tconst [date, time] = timestampz.split('T') || []\n\n\tconst [year, month, day] = date?.split('-').map(string => Number(string)) || []\n\n\tconst timezoneIsAheadOfUTC = time?.includes('+')\n\n\tconst [hms, timezone] = timezoneIsAheadOfUTC ? time?.split('+') : time?.split('-') || []\n\n\tconst [hours, minutes, seconds] = hms?.split(':').map(string => Number(string)) || []\n\n\tconst [timezoneHours, timezoneMinutes] = timezone?.split(':').map(string => Number(string)) || []\n\n\tconst dateAndTime = new Date(year, month - 1, day, hours, minutes, seconds),\n\t\tuserReadableDateAndTime = getUserReadableDate(dateAndTime)\n\n\treturn userReadableDateAndTime\n}\n\nexport function getLocalTime(time: string | [number, number]) {\n\tconst date = new Date(),\n\t\t[hours, minutes] = typeof time === 'string' ? time.split(':') : time\n\n\tconst timezone = getTimezone()\n\n\tconsole.log(timezone)\n\n\tdate.setUTCHours(Number(hours))\n\tdate.setMinutes(Number(minutes))\n\n\treturn date.toLocaleTimeString([], {\n\t\thour: 'numeric',\n\t\tminute: '2-digit',\n\t\thour12: true,\n\t})\n}\n\nexport function getTimezone() {\n\tconst date = new Date()\n\n\tconst timezonePart = Intl.DateTimeFormat('en-US', { timeZoneName: 'short' })\n\t\t.formatToParts(date)\n\t\t.find(part => part.type === 'timeZoneName')\n\n\treturn timezonePart ? timezonePart.value : ''\n}\n","import { Children, ElementType, Fragment, isValidElement, ReactElement, ReactNode } from 'react'\n\nexport function findComponentByType<P extends { children?: ReactNode; [key: string]: any } = { children?: ReactNode }>(\n\tchildren: ReactNode,\n\tcomponentType: ElementType,\n): ReactElement<P> | null {\n\tconst childrenArray = Children.toArray(children)\n\n\tfor (const child of childrenArray) {\n\t\tif (isValidElement(child) && child.type === componentType) return child as ReactElement<P>\n\t}\n\n\tfor (const child of childrenArray) {\n\t\tif (isValidElement(child)) {\n\t\t\tif (child.type === Fragment && (child as ReactElement<P>).props.children) {\n\t\t\t\tconst found = findComponentByType<P>((child as ReactElement<P>).props.children, componentType)\n\n\t\t\t\tif (found) return found as ReactElement<P>\n\t\t\t} else if ((child as ReactElement<P>).props.children) {\n\t\t\t\tconst found = findComponentByType<P>((child as ReactElement<P>).props.children, componentType)\n\n\t\t\t\tif (found) return found as ReactElement<P>\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null\n}\n","export function easeOutExpo(time: number, start: number, end: number, duration: number) {\n\treturn time == duration ? start + end : end * (-Math.pow(2, (-10 * time) / duration) + 1) + start\n}\n","export const emailRegex =\n\t/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\n/**\n * # Is Email\n * Checks whether the specified string is in email format\n */\nexport function isEmail(email: string) {\n\treturn emailRegex.test(email)\n}\n\nexport const telRegex =\n\t/(?:\\+1\\s|1\\s|)?\\d{3}\\.\\d{3}\\.\\d{4}|(?:\\+1\\s|1\\s|)?\\d{3}-\\d{3}-\\d{4}|(?:\\+1\\s|1\\s|)?\\(\\d{3}\\) \\d{3}-\\d{4}|(?:\\+1\\s|1\\s|\\+1|1|)?\\d{10}/\n\n/**\n * # Is Phone Number\n * Checks whether the specified string is in phone number format\n */\nexport function isPhoneNumber(tel: string) {\n\treturn telRegex.test(tel)\n}\n","/**\n * # Format Phone Number\n * Converts any string containing at least 10 numbers to a formatted phone number\n * @param {string} phoneNumber\n * @param options\n * @property {string} `countryCode`\n * @property {'continuous' | 'dot' | 'hyphenated' | 'none' | 'space' | 'standard'} `format`\n *\n * Input: a555b555c5555d\n *\n * @example\n * format: 'continuous'\n * countryCode: '1'\n * returns: +1 5555555555\n *\n * @example\n * format: 'dot'\n * returns: 555.555.5555\n *\n * @example\n * format: 'hyphenated'\n * returns: 555-555-5555\n *\n * @example\n * format: 'none'\n * countryCode: '1'\n * returns: +1 a555b555c5555d\n *\n * @example\n * format: 'space'\n * returns: 555 555 5555\n *\n * @example\n * format: 'standard' (default)\n * returns: (555) 555-5555\n *\n * @returns {string} string formatted\n */\nexport function formatPhoneNumber(\n\tphoneNumber: string,\n\toptions?: Partial<{\n\t\tcountryCode: string\n\t\tformat: 'continuous' | 'dot' | 'hyphenated' | 'none' | 'space' | 'standard'\n\t}>,\n): string {\n\tconst format = options?.format || 'standard'\n\n\tif (format !== 'none') phoneNumber = phoneNumber.replace(/\\D/g, '').slice(-10)\n\n\tswitch (format) {\n\t\tcase 'dot':\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split('')\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 2) return `${char}.`\n\t\t\t\t\tif (index === 5) return `${char}.`\n\t\t\t\t\treturn char\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\tbreak\n\t\tcase 'hyphenated':\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split('')\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 2) return `${char}-`\n\t\t\t\t\tif (index === 5) return `${char}-`\n\t\t\t\t\treturn char\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\tbreak\n\t\tcase 'space':\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split('')\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 2) return `${char} `\n\t\t\t\t\tif (index === 5) return `${char} `\n\t\t\t\t\treturn char\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\tbreak\n\t\tcase 'standard':\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split('')\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 0) return `(${char}`\n\t\t\t\t\tif (index === 2) return `${char}) `\n\t\t\t\t\tif (index === 5) return `${char}-`\n\t\t\t\t\treturn char\n\t\t\t\t})\n\t\t\t\t.join('')\n\t}\n\n\treturn `${options?.countryCode ? `+${options?.countryCode} ` : ''}` + phoneNumber\n}\n\n/**\n * # To Lower Case\n * Converts a string to lowercase, and offers easy string replacements for creating snake case, kebab case, or your own.\n * @param str - The string to convert to lowercase.\n * @param options - Configuration options.\n * @param options[0] - The delimiter to split the string. Defaults to space.\n * @param options[1] - The string to join the parts back together. Defaults to space.\n * @returns The lowercase version of the input string, with the replacements, if provided.\n */\nexport function toLowerCase(str: string, [delimiter, joiner]: [string | undefined, string | undefined]) {\n\treturn str.toLowerCase().replaceAll(delimiter || ' ', joiner || ' ')\n}\n","export function twSort(className: string) {\n\treturn className\n}\n","// * Types\nimport { AnyElementProps, ColorTheme, OneOf } from '../types'\nimport { ElementType, MouseEventHandler, ReactElement } from 'react'\n\n// * Utilities\nimport { twMerge, twSort } from '../utils'\nimport { twJoin } from 'tailwind-merge'\n\nexport type AnchorProps<TTag extends ElementType = 'a'> = AnyElementProps<TTag> & {\n\tdisabled?: boolean\n}\n\nexport function Anchor<TTag extends ElementType = 'a'>({\n\tas,\n\tclassName,\n\tdisabled,\n\thref,\n\tonClick,\n\ttarget,\n\trel,\n\t...props\n}: AnchorProps<TTag>): ReactElement {\n\tconst isExternal = `${href}`.startsWith('http'),\n\t\thasHash = `${href}`.includes('#')\n\n\tconst handleClick: MouseEventHandler<HTMLAnchorElement> = e => {\n\t\tif (disabled) return e.preventDefault()\n\n\t\tonClick?.(e)\n\n\t\tsetTimeout(() => history.replaceState({}, document.title, location.pathname), 100)\n\t}\n\n\tconst AnchorElement = as || 'a'\n\n\treturn (\n\t\t<AnchorElement\n\t\t\t{...props}\n\t\t\taria-disabled={disabled}\n\t\t\tclassName={twMerge(className, disabled && 'pointer-events-none')}\n\t\t\thref={href}\n\t\t\ttarget={target || (isExternal ? '_blank' : '_self')}\n\t\t\tonClick={hasHash ? handleClick : onClick}\n\t\t\trel={\n\t\t\t\trel !== undefined\n\t\t\t\t\t? rel === 'nofollow'\n\t\t\t\t\t\t? `${rel} noreferrer noopener`\n\t\t\t\t\t\t: `${rel} prefetch`\n\t\t\t\t\t: isExternal\n\t\t\t\t\t\t? 'nofollow noreferrer noopener'\n\t\t\t\t\t\t: 'prefetch'\n\t\t\t}\n\t\t/>\n\t)\n}\n\ntype ThemeColorOrClasses = OneOf<\n\t[\n\t\t{\n\t\t\t/**\n\t\t\t * - Fill Example: `'after:[--theme-color:var(--color-blue-500)]'`\n\t\t\t * - Multiline Fill Example: `'[--theme-color:var(--color-blue-500)]'`\n\t\t\t */\n\t\t\tthemeColor: string\n\t\t},\n\t\t{\n\t\t\t/** This doesn't use any preset color theme classes. */\n\t\t\tclasses: string\n\t\t},\n\t]\n>\n\nexport type LinkProps<TTag extends ElementType = typeof Anchor> = AnyElementProps<\n\tTTag,\n\tOneOf<\n\t\t[\n\t\t\t{\n\t\t\t\ttype?:\n\t\t\t\t\t| 'center'\n\t\t\t\t\t| 'lift'\n\t\t\t\t\t| 'ltr'\n\t\t\t\t\t| 'multiline'\n\t\t\t\t\t| 'multiline-center'\n\t\t\t\t\t| 'multiline-lift'\n\t\t\t\t\t| 'multiline-ltr'\n\t\t\t\t\t| 'multiline-rtl'\n\t\t\t\t\t| 'multiline-static'\n\t\t\t\t\t| 'normal'\n\t\t\t\t\t| 'rtl'\n\t\t\t\t\t| 'static'\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype?:\n\t\t\t\t\t| 'fill'\n\t\t\t\t\t| 'fill-lift'\n\t\t\t\t\t| 'fill-ltr'\n\t\t\t\t\t| 'fill-rtl'\n\t\t\t\t\t| 'multiline-fill'\n\t\t\t\t\t| 'multiline-fill-center'\n\t\t\t\t\t| 'multiline-fill-ltr'\n\t\t\t\t\t| 'multiline-fill-lift'\n\t\t\t\t\t| 'multiline-fill-rtl'\n\t\t\t} & ColorTheme,\n\t\t]\n\t>\n>\n\n// * Styles\nconst baseClasses = twSort(\n\t'isolate inline-block cursor-pointer duration-300 ease-exponential after:absolute after:left-1/2 after:-z-10 after:-translate-x-1/2 after:duration-500 active:scale-95 active:after:opacity-100',\n)\n\nconst lineStaticClasses = twJoin(\n\tbaseClasses,\n\t'whitespace-nowrap after:-bottom-0.5 after:w-[calc(100%+0.15rem)] after:rounded-full after:border-1 after:border-current',\n)\n\nconst lineClasses = twJoin(\n\tlineStaticClasses,\n\t'whitespace-nowrap transition-transform after:transition-transform after:ease-exponential',\n)\n\nconst scaleXClasses = 'after:scale-x-0 pointer-fine:hover:after:scale-x-100 active:after:scale-x-100'\nconst scaleYClasses = 'after:scale-y-0 pointer-fine:hover:after:scale-y-100 active:after:scale-y-100'\n\nconst lineNormalClasses = twJoin([\n\tlineClasses,\n\tscaleYClasses,\n\t'after:origin-bottom after:translate-y-0.5 active:after:translate-y-0 pointer-fine:hover:after:translate-y-0',\n])\n\nconst lineLtrClasses = twJoin([lineClasses, scaleXClasses, 'after:origin-left'])\n\nconst lineRtlClasses = twJoin([lineClasses, scaleXClasses, 'after:origin-right'])\n\nconst lineCenterClasses = twJoin([lineClasses, scaleXClasses])\n\nconst lineLiftClasses = twJoin([\n\tlineClasses,\n\tscaleYClasses,\n\t'after:origin-bottom after:translate-y-1 after:scale-x-75 active:after:translate-y-0 active:after:scale-x-100 pointer-fine:hover:after:translate-y-0 pointer-fine:hover:after:scale-x-100',\n])\n\nconst fillClasses = twJoin(\n\tbaseClasses,\n\t'whitespace-nowrap transition-[transform,color] after:top-1/2 after:h-[calc(100%+0.05rem)] after:w-[calc(100%+0.25rem)] after:-translate-y-1/2 after:rounded after:ease-exponential active:text-zinc-50 pointer-fine:hover:text-zinc-50',\n)\n\n// Define theme-specific fill color transition classes\nconst getFillColorTransitionClasses = (theme: LinkProps['theme'] = 'blue', customTheme?: ThemeColorOrClasses) => {\n\tlet fillColorTransitionClasses = twJoin(fillClasses, 'transition-transform after:bg-(--theme-color)')\n\n\tswitch (theme) {\n\t\tcase 'blue':\n\t\t\tfillColorTransitionClasses = twJoin(fillColorTransitionClasses, 'after:[--theme-color:var(--color-ui-blue)]')\n\t\t\tbreak\n\t\tcase 'brown':\n\t\t\tfillColorTransitionClasses = twJoin(fillColorTransitionClasses, 'after:[--theme-color:var(--color-ui-brow)]')\n\t\t\tbreak\n\t\tcase 'green':\n\t\t\tfillColorTransitionClasses = twJoin(fillColorTransitionClasses, 'after:[--theme-color:var(--color-ui-green)]')\n\t\t\tbreak\n\t\tcase 'grey':\n\t\t\tfillColorTransitionClasses = twJoin(fillColorTransitionClasses, 'after:[--theme-color:var(--color-ui-grey)]')\n\t\t\tbreak\n\t\tcase 'sky-blue':\n\t\t\tfillColorTransitionClasses = twJoin(fillColorTransitionClasses, 'after:[--theme-color:var(--color-ui-sky-blue)]')\n\t\t\tbreak\n\t\tcase 'magenta':\n\t\t\tfillColorTransitionClasses = twJoin(fillColorTransitionClasses, 'after:[--theme-color:var(--color-ui-magenta)]')\n\t\t\tbreak\n\t\tcase 'orange':\n\t\t\tfillColorTransitionClasses = twJoin(fillColorTransitionClasses, 'after:[--theme-color:var(--color-ui-orange)]')\n\t\t\tbreak\n\t\tcase 'pink':\n\t\t\tfillColorTransitionClasses = twJoin(fillColorTransitionClasses, 'after:[--theme-color:var(--color-ui-pink)]')\n\t\t\tbreak\n\t\tcase 'purple':\n\t\t\tfillColorTransitionClasses = twJoin(fillColorTransitionClasses, 'after:[--theme-color:var(--color-ui-purple)]')\n\t\t\tbreak\n\t\tcase 'red':\n\t\t\tfillColorTransitionClasses = twJoin(fillColorTransitionClasses, 'after:[--theme-color:var(--color-ui-red)]')\n\t\t\tbreak\n\t\tcase 'violet':\n\t\t\tfillColorTransitionClasses = twJoin(fillColorTransitionClasses, 'after:[--theme-color:var(--color-ui-violet)]')\n\t\t\tbreak\n\t\tcase 'yellow':\n\t\t\tfillColorTransitionClasses = twJoin(fillColorTransitionClasses, 'after:[--theme-color:var(--color-ui-yellow)]')\n\t\t\tbreak\n\t\tcase 'custom':\n\t\t\tif (customTheme && customTheme.themeColor && !customTheme.themeColor.includes('after:[--theme-color:'))\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'`customTheme.themeColor` must modify the `--theme-color` variable on the ::after pseudo element. Otherwise, please use `customTheme.classes`.',\n\t\t\t\t)\n\n\t\t\tfillColorTransitionClasses = customTheme!.themeColor\n\t\t\t\t? twMerge(fillColorTransitionClasses, customTheme!.themeColor)\n\t\t\t\t: twMerge(fillClasses, customTheme!.classes)\n\t\t\tbreak\n\t}\n\n\treturn fillColorTransitionClasses\n}\n\n// Define theme-specific fill center classes\nconst getFillCenterClasses = (theme: LinkProps['theme'] = 'blue', customTheme?: ThemeColorOrClasses) => {\n\tlet fillCenterColorClasses = twJoin(\n\t\tfillClasses,\n\t\t'after:scale-x-50 after:scale-y-[0.25] after:bg-(--theme-color)/0 after:transition-[transform,background-color] active:after:scale-x-100 active:after:scale-y-100 active:after:bg-(--theme-color) pointer-fine:hover:after:scale-x-100 pointer-fine:hover:after:scale-y-100 pointer-fine:hover:after:bg-(--theme-color)',\n\t)\n\n\tswitch (theme) {\n\t\tcase 'blue':\n\t\t\tfillCenterColorClasses = twJoin(fillCenterColorClasses, 'after:[--theme-color:var(--color-ui-blue)]')\n\t\t\tbreak\n\t\tcase 'brown':\n\t\t\tfillCenterColorClasses = twJoin(fillCenterColorClasses, 'after:[--theme-color:var(--color-ui-brown)]')\n\t\t\tbreak\n\t\tcase 'green':\n\t\t\tfillCenterColorClasses = twJoin(fillCenterColorClasses, 'after:[--theme-color:var(--color-ui-green)]')\n\t\t\tbreak\n\t\tcase 'grey':\n\t\t\tfillCenterColorClasses = twJoin(fillCenterColorClasses, 'after:[--theme-color:var(--color-ui-grey)]')\n\t\t\tbreak\n\t\tcase 'sky-blue':\n\t\t\tfillCenterColorClasses = twJoin(fillCenterColorClasses, 'after:[--theme-color:var(--color-ui-sky-blue)]')\n\t\t\tbreak\n\t\tcase 'magenta':\n\t\t\tfillCenterColorClasses = twJoin(fillCenterColorClasses, 'after:[--theme-color:var(--color-ui-magenta)]')\n\t\t\tbreak\n\t\tcase 'orange':\n\t\t\tfillCenterColorClasses = twJoin(fillCenterColorClasses, 'after:[--theme-color:var(--color-ui-orange)]')\n\t\t\tbreak\n\t\tcase 'pink':\n\t\t\tfillCenterColorClasses = twJoin(fillCenterColorClasses, 'after:[--theme-color:var(--color-ui-pink)]')\n\t\t\tbreak\n\t\tcase 'purple':\n\t\t\tfillCenterColorClasses = twJoin(fillCenterColorClasses, 'after:[--theme-color:var(--color-ui-purple)]')\n\t\t\tbreak\n\t\tcase 'red':\n\t\t\tfillCenterColorClasses = twJoin(fillCenterColorClasses, 'after:[--theme-color:var(--color-ui-red)]')\n\t\t\tbreak\n\t\tcase 'violet':\n\t\t\tfillCenterColorClasses = twJoin(fillCenterColorClasses, 'after:[--theme-color:var(--color-ui-violet)]')\n\t\t\tbreak\n\t\tcase 'yellow':\n\t\t\tfillCenterColorClasses = twJoin(fillCenterColorClasses, 'after:[--theme-color:var(--color-ui-yellow)]')\n\t\t\tbreak\n\t\tcase 'custom':\n\t\t\tif (customTheme && customTheme.themeColor && !customTheme.themeColor.includes('after:[--theme-color:'))\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'`customTheme.themeColor` must modify the `--theme-color` variable on the ::after pseudo element. Otherwise, please use `customTheme.classes`.',\n\t\t\t\t)\n\n\t\t\tfillCenterColorClasses = customTheme!.themeColor\n\t\t\t\t? twMerge(fillCenterColorClasses, customTheme!.themeColor)\n\t\t\t\t: twMerge(fillClasses, customTheme!.classes)\n\t\t\tbreak\n\t}\n\n\treturn fillCenterColorClasses\n}\n\nconst multilineBaseClasses = twSort('bg-linear-to-r from-current to-current bg-no-repeat active:scale-95')\n\nconst multilineLineStaticClasses = 'underline'\nconst multilineNormalClasses = twSort('underline-offset-1 active:underline pointer-fine:hover:underline')\n\nconst multilineClasses = twJoin(multilineBaseClasses, 'duration-500 ease-exponential')\n\nconst multilineLineClasses = twJoin(multilineClasses, 'bg-[position:0%_100%] px-px pb-px transition-[background-size]')\n\nconst multilineXClasses = twJoin(\n\tmultilineLineClasses,\n\t'bg-[size:0%_2px] focus-visible:bg-[size:100%_2px] active:bg-[size:100%_2px] pointer-fine:hover:bg-[size:100%_2px]',\n)\n\nconst multilineLineRtlClasses = twJoin([multilineXClasses, 'bg-[position:100%_100%]'])\n\nconst multilineLineCenterClasses = twJoin([multilineXClasses, 'bg-[position:50%_100%]'])\n\nconst multilineLineLiftClasses = twJoin(\n\tmultilineLineClasses,\n\t'bg-[size:auto_0px] focus-visible:bg-[size:auto_2px] active:bg-[size:auto_2px] pointer-fine:hover:bg-[size:auto_2px]',\n)\n\nconst multilineFillBaseClasses = twJoin(\n\tmultilineBaseClasses,\n\t'rounded px-0.5 py-0.75 focus-visible:text-zinc-50 active:text-zinc-50 pointer-fine:hover:text-zinc-50',\n)\n\nconst getMultilineFillColorClasses = (theme: LinkProps['theme'] = 'blue', customTheme?: ThemeColorOrClasses) => {\n\tlet multilineFillColorClasses = twJoin(\n\t\tmultilineFillBaseClasses,\n\t\t'from-(--theme-color) to-(--theme-color) transition-[background-size,color]',\n\t)\n\n\tswitch (theme) {\n\t\tcase 'blue':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-blue)]')\n\t\t\tbreak\n\t\tcase 'brown':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-brown)]')\n\t\t\tbreak\n\t\tcase 'green':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-green)]')\n\t\t\tbreak\n\t\tcase 'grey':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-grey)]')\n\t\t\tbreak\n\t\tcase 'sky-blue':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-sky-blue)]')\n\t\t\tbreak\n\t\tcase 'magenta':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-magenta)]')\n\t\t\tbreak\n\t\tcase 'orange':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-orange)]')\n\t\t\tbreak\n\t\tcase 'pink':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-pink)]')\n\t\t\tbreak\n\t\tcase 'purple':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-purple)]')\n\t\t\tbreak\n\t\tcase 'red':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-red)]')\n\t\t\tbreak\n\t\tcase 'violet':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-violet)]')\n\t\t\tbreak\n\t\tcase 'yellow':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-yellow)]')\n\t\t\tbreak\n\t\tcase 'custom':\n\t\t\tif (customTheme && customTheme.themeColor && !customTheme.themeColor.includes('[--theme-color:'))\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'`customTheme.themeColor` must modify the `--theme-color` variable. Otherwise, please use `customTheme.classes`.',\n\t\t\t\t)\n\n\t\t\tmultilineFillColorClasses = customTheme!.themeColor\n\t\t\t\t? twMerge(multilineFillColorClasses, customTheme!.themeColor)\n\t\t\t\t: twMerge(multilineFillBaseClasses, customTheme!.classes)\n\t\t\tbreak\n\t}\n\n\treturn multilineFillColorClasses\n}\n\nconst getMultilineFillClasses = (theme: LinkProps['theme'] = 'blue', customTheme?: ThemeColorOrClasses) => {\n\tlet multilineFillColorClasses = twJoin(\n\t\tmultilineFillBaseClasses,\n\t\t'from-(--theme-color)/0 to-(--theme-color)/0 bg-[size:50%_0px] bg-[position:50%_50%] transition-[background-size,background-image,color] focus-visible:from-(--theme-color) focus-visible:to-(--theme-color) focus-visible:bg-[size:100%_100%] active:from-(--theme-color) active:to-(--theme-color) active:bg-[size:100%_100%] contrast-more:from-(--theme-color)/0 pointer-fine:hover:from-(--theme-color) pointer-fine:hover:to-(--theme-color) pointer-fine:hover:bg-[size:100%_100%]',\n\t)\n\n\tswitch (theme) {\n\t\tcase 'blue':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-blue)]')\n\t\t\tbreak\n\t\tcase 'brown':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-brown)]')\n\t\t\tbreak\n\t\tcase 'green':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-green)]')\n\t\t\tbreak\n\t\tcase 'grey':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-grey)]')\n\t\t\tbreak\n\t\tcase 'sky-blue':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-sky-blue)]')\n\t\t\tbreak\n\t\tcase 'magenta':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-magenta)]')\n\t\t\tbreak\n\t\tcase 'orange':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-orange)]')\n\t\t\tbreak\n\t\tcase 'pink':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-pink)]')\n\t\t\tbreak\n\t\tcase 'purple':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-purple)]')\n\t\t\tbreak\n\t\tcase 'red':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-red)]')\n\t\t\tbreak\n\t\tcase 'violet':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-violet)]')\n\t\t\tbreak\n\t\tcase 'yellow':\n\t\t\tmultilineFillColorClasses = twJoin(multilineFillColorClasses, '[--theme-color:var(--color-ui-yellow)]')\n\t\t\tbreak\n\t\tcase 'custom':\n\t\t\tif (customTheme && customTheme.themeColor && !customTheme.themeColor.includes('[--theme-color:'))\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'`customTheme.themeColor` must modify the `--theme-color` variable. Otherwise, please use `customTheme.classes`.',\n\t\t\t\t)\n\n\t\t\tmultilineFillColorClasses = customTheme!.themeColor\n\t\t\t\t? twMerge(multilineFillColorClasses, customTheme!.themeColor)\n\t\t\t\t: twMerge(multilineFillBaseClasses, customTheme!.classes)\n\t\t\tbreak\n\t}\n\n\treturn multilineFillColorClasses\n}\n\nconst getMultilineFillLiftClasses = (theme: LinkProps['theme'] = 'blue', customTheme?: ThemeColorOrClasses) => {\n\treturn twJoin(\n\t\tgetMultilineFillColorClasses(theme, customTheme),\n\t\t'bg-[size:auto_0px] bg-[position:50%_100%] focus-visible:bg-[size:auto_100%] active:bg-[size:auto_100%] pointer-fine:hover:bg-[size:auto_100%]',\n\t)\n}\n\nconst getMultilineFillXClasses = (theme: LinkProps['theme'] = 'blue', customTheme?: ThemeColorOrClasses) => {\n\treturn twJoin(\n\t\tgetMultilineFillColorClasses(theme, customTheme),\n\t\t'bg-[size:0%_100%] focus-visible:bg-[size:100%_100%] active:bg-[size:100%_100%] pointer-fine:hover:bg-[size:100%_100%]',\n\t)\n}\n\nconst getMultilineFillRtlClasses = (theme: LinkProps['theme'] = 'blue', customTheme?: ThemeColorOrClasses) => {\n\treturn twJoin(getMultilineFillXClasses(theme, customTheme), 'bg-[position:100%_auto]')\n}\n\nconst getMultilineFillCenterClasses = (theme: LinkProps['theme'] = 'blue', customTheme?: ThemeColorOrClasses) => {\n\treturn twJoin(getMultilineFillXClasses(theme, customTheme), 'bg-[position:50%_auto]')\n}\n\n/**\n * # Link\n *\n * - A component for rendering links with various styles and options.\n * - Utilizes the Next.js `Link` component and provides additional functionality.\n *\n * ---\n *\n * ## Styles\n *\n * This component includes various classes to style the link. The styles are divided into two types:\n *\n * - Line styles: These styles add a line underneath the link, and include variations for different positions and orientations.\n * - Fill styles: These styles add a background color behind the link, and include variations for different positions and orientations.\n * - Multiline styles: These styles seek to accomplish the same as the line and fill styles, while offering multiline support.\n *\n * ---\n *\n * ## Examples\n *\n * @example\n * <Link href='/about' type='ltr' title='About Us'>Learn more about our company</Link>\n *\n * @example\n * <Link href='/about' type='fill-ltr' title='About Us'>Learn more about our company</Link>\n *\n * @example\n * <Link href='/about' type='fill-ltr' theme='red' title='About Us'>Learn more about our company</Link>\n */\nexport function Link<TTag extends ElementType = typeof Anchor>({\n\tas,\n\tclassName,\n\tcustomTheme,\n\ttheme = 'blue',\n\ttype,\n\t...props\n}: LinkProps<TTag>): ReactElement {\n\tconst getLinkClasses = () => {\n\t\tswitch (type) {\n\t\t\tcase 'static':\n\t\t\t\treturn lineStaticClasses\n\t\t\tcase 'ltr':\n\t\t\t\treturn lineLtrClasses\n\t\t\tcase 'rtl':\n\t\t\t\treturn lineRtlClasses\n\t\t\tcase 'center':\n\t\t\t\treturn lineCenterClasses\n\t\t\tcase 'lift':\n\t\t\t\treturn lineLiftClasses\n\t\t\tcase 'fill':\n\t\t\t\treturn getFillCenterClasses(theme, customTheme)\n\t\t\tcase 'fill-ltr':\n\t\t\t\treturn twJoin([getFillColorTransitionClasses(theme, customTheme), scaleXClasses, 'after:origin-left'])\n\t\t\tcase 'fill-rtl':\n\t\t\t\treturn twJoin([getFillColorTransitionClasses(theme, customTheme), scaleXClasses, 'after:origin-right'])\n\t\t\tcase 'fill-lift':\n\t\t\t\treturn twJoin([getFillColorTransitionClasses(theme, customTheme), scaleYClasses, 'after:origin-bottom'])\n\t\t\tcase 'multiline':\n\t\t\t\treturn multilineNormalClasses\n\t\t\tcase 'multiline-static':\n\t\t\t\treturn multilineLineStaticClasses\n\t\t\tcase 'multiline-ltr':\n\t\t\t\treturn multilineXClasses\n\t\t\tcase 'multiline-rtl':\n\t\t\t\treturn multilineLineRtlClasses\n\t\t\tcase 'multiline-center':\n\t\t\t\treturn multilineLineCenterClasses\n\t\t\tcase 'multiline-lift':\n\t\t\t\treturn multilineLineLiftClasses\n\t\t\tcase 'multiline-fill':\n\t\t\t\treturn getMultilineFillClasses(theme, customTheme)\n\t\t\tcase 'multiline-fill-ltr':\n\t\t\t\treturn getMultilineFillXClasses(theme, customTheme)\n\t\t\tcase 'multiline-fill-rtl':\n\t\t\t\treturn getMultilineFillRtlClasses(theme, customTheme)\n\t\t\tcase 'multiline-fill-center':\n\t\t\t\treturn getMultilineFillCenterClasses(theme, customTheme)\n\t\t\tcase 'multiline-fill-lift':\n\t\t\t\treturn getMultilineFillLiftClasses(theme, customTheme)\n\t\t\tdefault:\n\t\t\t\treturn lineNormalClasses\n\t\t}\n\t}\n\n\tconst linkClasses = getLinkClasses()\n\n\tconst LinkElement = as || Anchor\n\n\treturn <LinkElement {...props} className={twMerge(linkClasses, className)} />\n}\n\nexport type ExtendedLinkConfig = {\n\t/** Modifies the default element that is rendered. The `as` prop on the component still overrides the default set here. */\n\tas?: ElementType\n\t/** Adds default classes. */\n\tclassName?: string\n\t/** Sets the default theme. */\n\tdefaultTheme?: ColorTheme['theme'] | string\n\t/** Sets the default for the `type` prop. */\n\ttype?: LinkProps['type']\n\t/** Add more theme options. */\n\ttheme?: {\n\t\t[themeName: string]: {\n\t\t\t/** Custom theme configuration - supports both multiline and regular link theme formats */\n\t\t\tcustomTheme: Omit<ThemeColorOrClasses, 'themeColor'> & {\n\t\t\t\tthemeColor?: {\n\t\t\t\t\t/** Example: `'after:[--theme-color:var(--color-blue-500)]'` */\n\t\t\t\t\tfill: string\n\t\t\t\t\t/** Example: `'[--theme-color:var(--color-blue-500)]'` */\n\t\t\t\t\tmultilineFill: string\n\t\t\t\t}\n\t\t\t}\n\t\t\t/** Additional CSS classes to apply */\n\t\t\tclassName?: string\n\t\t}\n\t}\n}\n\ntype ExtendedThemeNames<T extends ExtendedLinkConfig> =\n\tT['theme'] extends Record<string, unknown> ? keyof T['theme'] : never\n\nexport type ExtendedLinkProps<\n\tTExtendedConfig extends ExtendedLinkConfig,\n\tTTag extends ElementType = typeof Anchor,\n> = Omit<LinkProps<TTag>, 'theme' | 'customTheme'> & {\n\ttheme?: LinkProps<TTag>['theme'] | ExtendedThemeNames<TExtendedConfig>\n\tcustomTheme?: LinkProps<TTag>['customTheme']\n}\n\n/**\n * # createLink\n * Creates an extended Link component with additional theme options.\n *\n * @param config - Configuration object defining new themes and defaults\n * @returns A new Link component with extended theme support\n *\n * @example\n * ```tsx\n * const MyLink = createLink({\n * as: NextLink,\n * className: 'font-bold',\n * type: 'fill',\n * theme: {\n * primary: {\n * customTheme: {\n * fill: 'after:[--theme-color:var(--color-primary-500)]',\n * multilineFill: '[--theme-color:var(--color-primary-500)]'\n * },\n * className: 'text-white'\n * }\n * }\n * })\n * ```\n */\nexport function createLink<TExtendedConfig extends ExtendedLinkConfig>(config: TExtendedConfig) {\n\treturn function ExtendedLink<TTag extends ElementType = typeof Anchor>({\n\t\ttheme,\n\t\tclassName,\n\t\tcustomTheme,\n\t\ttype,\n\t\tas,\n\t\t...props\n\t}: ExtendedLinkProps<TExtendedConfig, TTag>) {\n\t\tconst finalType: string | undefined = type !== undefined ? type : config.type,\n\t\t\tfinalTheme = theme !== undefined ? theme : config.defaultTheme\n\n\t\tconst configClassName = config.className\n\n\t\tconst shouldOverrideElement = !Boolean(as) && Boolean(config.as)\n\n\t\tconst linkProps: Omit<\n\t\t\tExtendedLinkProps<TExtendedConfig, TTag>,\n\t\t\t'as' | 'theme' | 'customTheme' | 'type' | 'className'\n\t\t> & { as?: ElementType } = {\n\t\t\t...props,\n\t\t\tclassName: undefined,\n\t\t\tcustomTheme: undefined,\n\t\t\ttype: finalType,\n\t\t}\n\n\t\tif (shouldOverrideElement) {\n\t\t\tlinkProps.as = config.as\n\t\t} else if (as) {\n\t\t\tlinkProps.as = as\n\t\t}\n\n\t\tif (finalTheme && typeof finalTheme === 'string' && config.theme && finalTheme in config.theme) {\n\t\t\tconst extendedTheme = config.theme[finalTheme]\n\n\t\t\tif (customTheme)\n\t\t\t\treturn (\n\t\t\t\t\t<Link\n\t\t\t\t\t\t{...linkProps}\n\t\t\t\t\t\ttheme='custom'\n\t\t\t\t\t\tcustomTheme={customTheme}\n\t\t\t\t\t\tclassName={twMerge(configClassName, extendedTheme.className, className)}\n\t\t\t\t\t/>\n\t\t\t\t)\n\n\t\t\tlet resolvedCustomTheme: ThemeColorOrClasses\n\n\t\t\tif (extendedTheme.customTheme.themeColor) {\n\t\t\t\tconst isMultilineType = finalType ? finalType.includes('multiline') : false\n\n\t\t\t\tresolvedCustomTheme = {\n\t\t\t\t\tthemeColor: isMultilineType\n\t\t\t\t\t\t? extendedTheme.customTheme.themeColor.multilineFill\n\t\t\t\t\t\t: extendedTheme.customTheme.themeColor.fill,\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresolvedCustomTheme = {\n\t\t\t\t\tclasses: extendedTheme.customTheme.classes!,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<Link\n\t\t\t\t\t{...linkProps}\n\t\t\t\t\ttheme='custom'\n\t\t\t\t\tcustomTheme={resolvedCustomTheme}\n\t\t\t\t\tclassName={twMerge(configClassName, extendedTheme.className, className)}\n\t\t\t\t/>\n\t\t\t)\n\t\t}\n\n\t\treturn (\n\t\t\t<Link\n\t\t\t\t{...linkProps}\n\t\t\t\ttheme={finalTheme as LinkProps<TTag>['theme']}\n\t\t\t\tclassName={twMerge(configClassName, className)}\n\t\t\t\tcustomTheme={customTheme}\n\t\t\t/>\n\t\t)\n\t}\n}\n","// * Types\nimport { Url, UrlObject } from 'node:url'\nimport { ElementType, ReactElement } from 'react'\nimport { AnyElementProps, ColorTheme, OneOf } from '../types'\n\ntype LinkOrOther<TTag extends ElementType = typeof HeadlessButton> = OneOf<\n\t[AnyElementProps<TTag> & { href?: never }, AnyElementProps<typeof Anchor> & { href?: string | Url | UrlObject }]\n>\n\nexport type ButtonPadding = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport type ButtonBorderRadius = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full'\n\nexport type ButtonProps<TTag extends ElementType = typeof HeadlessButton> = LinkOrOther<TTag> &\n\tColorTheme & {\n\t\t/** Customizes the theme color to a sensible gradient. */\n\t\tgradient?: boolean\n\t\t/** The size of the element based on padding. */\n\t\tpadding?: ButtonPadding\n\t\t/** The size of the border radius. */\n\t\trounded?: ButtonBorderRadius\n\t}\n\nexport type ExtendedButtonConfig = {\n\t/** Modifies the default(s) for what element is rendered. The `as` prop on the component still overrides the default(s) set here. */\n\tas?:\n\t\t| ElementType\n\t\t| {\n\t\t\t\t/** Modifies the base link element when `href` is present. */\n\t\t\t\tlink?: ElementType\n\t\t\t\t/** Modifies the base button element. */\n\t\t\t\tdefault?: ElementType\n\t\t }\n\t/** Adds default classes. */\n\tclassName?: string\n\tdefaultTheme?: ColorTheme['theme'] | string\n\t/** Sets the default for the `gradient` prop. */\n\tgradient?: boolean\n\t/** Sets the default for the `padding` prop. */\n\tpadding?: ButtonPadding\n\t/** Sets the default for the `rounded` prop. */\n\trounded?: ButtonBorderRadius\n\t/** Add more theme options. */\n\ttheme?: {\n\t\t[themeName: string]: {\n\t\t\t/** Custom theme configuration */\n\t\t\tcustomTheme: NonNullable<ColorTheme['customTheme']>\n\t\t\t/** Additional CSS classes to apply */\n\t\t\tclassName?: string\n\t\t}\n\t}\n}\n\ntype ExtendedThemeNames<T extends ExtendedButtonConfig> =\n\tT['theme'] extends Record<string, unknown> ? keyof T['theme'] : never\n\nexport type ExtendedButtonProps<\n\tTExtendedConfig extends ExtendedButtonConfig,\n\tTTag extends ElementType = typeof HeadlessButton,\n> = Omit<ButtonProps<TTag>, 'theme' | 'customTheme'> & {\n\ttheme?: ButtonProps<TTag>['theme'] | ExtendedThemeNames<TExtendedConfig>\n\tcustomTheme?: ButtonProps<TTag>['customTheme']\n}\n\n// * Components\nimport { Anchor } from './link'\nimport { Button as HeadlessButton } from '@headlessui/react'\n\n// * Utilities\nimport { twMerge, twSort } from '../utils'\n\n/**\n * # Button\n * - A pre-styled button with utility props for easy customization depending on use case.\n */\nexport function Button<TTag extends ElementType = typeof HeadlessButton>({\n\tclassName,\n\tcustomTheme,\n\tgradient = false,\n\tpadding = 'md',\n\trounded = 'lg',\n\ttheme = 'blue',\n\t...props\n}: ButtonProps<TTag>): ReactElement {\n\tconst getPaddingClasses = () => {\n\t\tswitch (padding) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'px-2 py-0.5'\n\t\t\tcase 'sm':\n\t\t\t\treturn 'px-4 py-1'\n\t\t\tcase 'md':\n\t\t\t\treturn 'px-6 py-1.5'\n\t\t\tcase 'lg':\n\t\t\t\treturn 'px-8 py-2'\n\t\t\tcase 'xl':\n\t\t\t\treturn 'px-12 py-3'\n\t\t}\n\t}\n\n\tconst getRoundedClasses = () => {\n\t\tswitch (rounded) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'rounded-sm'\n\t\t\tcase 'sm':\n\t\t\t\treturn 'rounded-md'\n\t\t\tcase 'md':\n\t\t\t\treturn 'rounded-lg'\n\t\t\tcase 'lg':\n\t\t\t\treturn 'rounded-xl'\n\t\t\tcase 'xl':\n\t\t\t\treturn 'rounded-3xl'\n\t\t\tcase 'full':\n\t\t\t\treturn 'rounded-full'\n\t\t}\n\t}\n\n\tconst getThemeColorVariable = () => {\n\t\tswitch (theme) {\n\t\t\tcase 'blue':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-blue)]')\n\t\t\tcase 'brown':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-brown)]')\n\t\t\tcase 'green':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-green)]')\n\t\t\tcase 'grey':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-grey)]')\n\t\t\tcase 'magenta':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-magenta)]')\n\t\t\tcase 'orange':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-orange)]')\n\t\t\tcase 'pink':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-pink)]')\n\t\t\tcase 'purple':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-purple)]')\n\t\t\tcase 'red':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-red)]')\n\t\t\tcase 'sky-blue':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-sky-blue)]')\n\t\t\tcase 'violet':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-violet)]')\n\t\t\tcase 'yellow':\n\t\t\t\treturn twSort('text-black [--theme-color:var(--color-ui-yellow)]')\n\t\t\tcase 'custom':\n\t\t\t\tif (customTheme && customTheme.themeColor && !customTheme.themeColor.includes('[--theme-color:'))\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'`customTheme.themeColor` must modify the `--theme-color` variable. Otherwise, please use `customTheme.classes`.',\n\t\t\t\t\t)\n\n\t\t\t\treturn customTheme!.themeColor || customTheme!.classes\n\t\t}\n\t}\n\n\tconst paddingClasses = getPaddingClasses(),\n\t\troundedClasses = getRoundedClasses(),\n\t\tthemeColorVariable = getThemeColorVariable()\n\n\tconst themeClasses =\n\t\tcustomTheme && customTheme.classes\n\t\t\t? customTheme.classes\n\t\t\t: [\n\t\t\t\t\tgradient\n\t\t\t\t\t\t? twSort(\n\t\t\t\t\t\t\t\t'bg-linear-to-t from-[color-mix(in_oklab,var(--theme-color),var(--color-black)_20%)] via-(--theme-color) to-[color-mix(in_oklab,var(--theme-color),var(--color-white)_20%)] bg-[size:100%_200%] transition-[scale,background-position-y] [background-position-y:50%] active:[background-position-y:100%] data-focus:[background-position-y:0%] pointer-fine:hover:[background-position-y:0%] pointer-fine:hover:active:[background-position-y:100%]',\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: twSort(\n\t\t\t\t\t\t\t\t'bg-(--theme-color) transition-[scale,background-color] active:bg-[color-mix(in_oklab,var(--theme-color),var(--color-black)_10%)] data-focus:bg-[color-mix(in_oklab,var(--theme-color),var(--color-white)_10%)] pointer-fine:hover:bg-[color-mix(in_oklab,var(--theme-color),var(--color-white)_10%)] pointer-fine:hover:active:bg-[color-mix(in_oklab,var(--theme-color),var(--color-black)_10%)]',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t'shadow-(--theme-color)/25',\n\t\t\t\t].join(' ')\n\n\tconst buttonClasses = twMerge([\n\t\t'block w-fit min-w-fit text-center font-semibold shadow-lg duration-300 ease-exponential active:scale-99 data-focus:scale-101 pointer-fine:hover:scale-101 pointer-fine:hover:active:scale-99',\n\t\tpaddingClasses,\n\t\troundedClasses,\n\t\tthemeColorVariable,\n\t\tthemeClasses,\n\t\tclassName,\n\t])\n\n\tif ('href' in props && !props.as && props.href)\n\t\treturn <HeadlessButton<typeof Anchor> {...props} as={Anchor} className={buttonClasses} />\n\n\treturn <HeadlessButton<'button'> {...props} className={buttonClasses} />\n}\n\n/**\n * # createButton\n * Creates an extended Button component with additional theme options.\n *\n * @param extendedThemes - Configuration object defining new themes\n * @returns A new Button component with extended theme support\n *\n * @example\n * ```tsx\n * const MyButton = createButton({\n * as: {\n * default: 'div',\n * link: NextLink\n * },\n * className: 'min-w-64',\n * padding: 'sm',\n * rounded: 'full',\n * theme: {\n * primary: {\n * customTheme: { themeColor: '[--theme-color:var(--color-primary-500)]' },\n * className: 'text-white'\n * }\n * }\n * })\n * ```\n */\nexport function createButton<TExtendedConfig extends ExtendedButtonConfig>(config: TExtendedConfig) {\n\treturn function ExtendedButton<TTag extends ElementType = typeof HeadlessButton>({\n\t\ttheme,\n\t\tclassName,\n\t\tcustomTheme,\n\t\tgradient,\n\t\tpadding,\n\t\trounded,\n\t\tas,\n\t\t...props\n\t}: ExtendedButtonProps<TExtendedConfig, TTag>) {\n\t\tconst finalGradient = gradient !== undefined ? gradient : config.gradient,\n\t\t\tfinalPadding = padding !== undefined ? padding : config.padding,\n\t\t\tfinalRounded = rounded !== undefined ? rounded : config.rounded,\n\t\t\tfinalTheme = theme !== undefined ? theme : config.defaultTheme\n\n\t\tconst configClassName = config.className\n\n\t\tconst shouldOverrideElement = !Boolean(as) && Boolean(config.as)\n\n\t\tconst getOverrideElement = () => {\n\t\t\tif (!config.as) return undefined\n\n\t\t\tif (typeof config.as === 'function' || typeof config.as === 'string') return config.as\n\n\t\t\tconst hasHref = 'href' in props && props.href\n\t\t\tif (hasHref && config.as.link) {\n\t\t\t\treturn config.as.link\n\t\t\t} else if (!hasHref && config.as.default) {\n\t\t\t\treturn config.as.default\n\t\t\t}\n\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst buttonProps: Omit<\n\t\t\tExtendedButtonProps<TExtendedConfig, TTag>,\n\t\t\t'as' | 'theme' | 'customTheme' | 'gradient' | 'padding' | 'rounded' | 'className'\n\t\t> & { as?: ElementType } = {\n\t\t\t...props,\n\t\t\tclassName: undefined,\n\t\t\tcustomTheme: undefined,\n\t\t\tgradient: finalGradient,\n\t\t\tpadding: finalPadding,\n\t\t\trounded: finalRounded,\n\t\t}\n\n\t\tif (shouldOverrideElement) {\n\t\t\tconst overrideElement = getOverrideElement()\n\n\t\t\tif (overrideElement) buttonProps.as = overrideElement\n\t\t} else if (as) buttonProps.as = as\n\n\t\tif (finalTheme && typeof finalTheme === 'string' && config.theme && finalTheme in config.theme) {\n\t\t\tconst extendedTheme = config.theme[finalTheme]\n\n\t\t\treturn (\n\t\t\t\t<Button\n\t\t\t\t\t{...buttonProps}\n\t\t\t\t\ttheme='custom'\n\t\t\t\t\tcustomTheme={customTheme || extendedTheme.customTheme}\n\t\t\t\t\tclassName={twMerge(configClassName, extendedTheme.className, className)}\n\t\t\t\t/>\n\t\t\t)\n\t\t}\n\n\t\treturn (\n\t\t\t<Button\n\t\t\t\t{...buttonProps}\n\t\t\t\ttheme={finalTheme as ButtonProps<TTag>['theme']}\n\t\t\t\tclassName={twMerge(configClassName, className)}\n\t\t\t\tcustomTheme={customTheme}\n\t\t\t/>\n\t\t)\n\t}\n}\n","import { ComponentPropsWithRef } from \"react\";\n\nexport function ArrowDownBackwardAndArrowUpForwardRectangle(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 64 50\" {...props}>\n\t\t <path d=\"M47.367,23.338C48.497,23.338 49.292,22.451 49.292,21.27L49.292,10.565C49.292,9.055 48.445,8.438 47.114,8.438L36.346,8.438C35.165,8.438 34.335,9.205 34.335,10.334C34.335,11.487 35.165,12.259 36.403,12.259L39.919,12.259L43.287,11.931L39.659,15.26L34.041,20.906C33.701,21.246 33.424,21.765 33.424,22.295C33.424,23.453 34.219,24.249 35.349,24.249C35.971,24.249 36.432,24.03 36.83,23.632L42.413,18.049L45.794,14.449L45.443,18.028L45.443,21.327C45.443,22.508 46.215,23.338 47.367,23.338Z\"/>\n\t\t <path d=\"M16.662,26.661C15.503,26.661 14.737,27.548 14.737,28.729L14.737,39.434C14.737,40.944 15.584,41.56 16.886,41.56L27.683,41.56C28.835,41.56 29.665,40.794 29.665,39.664C29.665,38.512 28.835,37.74 27.626,37.74L24.08,37.74L20.741,38.068L24.37,34.739L29.959,29.092C30.328,28.752 30.605,28.205 30.605,27.703C30.605,26.517 29.809,25.75 28.68,25.75C28.057,25.75 27.568,25.969 27.199,26.367L21.587,31.95L18.235,35.521L18.557,31.971L18.557,28.672C18.557,27.491 17.785,26.661 16.662,26.661Z\"/>\n\t\t <path d=\"M8.518,49.999C2.857,49.999 0,47.171 0,41.567L0,8.432C0,2.828 2.857,0 8.518,0L55.482,0C61.172,0 64,2.84 64,8.432L64,41.567C64,47.159 61.172,49.999 55.482,49.999L8.518,49.999ZM8.587,45.603L55.412,45.603C58.1,45.603 59.633,44.152 59.633,41.354L59.633,8.645C59.633,5.818 58.1,4.396 55.412,4.396L8.587,4.396C5.876,4.396 4.367,5.818 4.367,8.645L4.367,41.354C4.367,44.152 5.876,45.603 8.587,45.603Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from \"react\";\n\nexport function ArrowUpForwardAndArrowDownBackwardRectangle(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 64 50\" {...props}>\n\t\t <path d=\"M35.349,9.32C34.196,9.32 33.424,10.202 33.424,11.389L33.424,22.094C33.424,23.597 34.277,24.249 35.573,24.249L46.37,24.249C47.528,24.249 48.352,23.448 48.352,22.324C48.352,21.166 47.528,20.399 46.313,20.399L42.773,20.399L39.429,20.751L43.063,17.393L48.652,11.775C49.015,11.406 49.292,10.893 49.292,10.363C49.292,9.199 48.502,8.438 47.367,8.438C46.745,8.438 46.261,8.658 45.892,9.02L40.28,14.632L36.928,18.209L37.244,14.625L37.244,11.36C37.244,10.144 36.478,9.32 35.349,9.32Z\"/>\n\t\t <path d=\"M28.68,40.678C29.804,40.678 30.605,39.797 30.605,38.581L30.605,27.905C30.605,26.401 29.752,25.75 28.427,25.75L17.658,25.75C16.471,25.75 15.648,26.522 15.648,27.675C15.648,28.833 16.471,29.599 17.716,29.599L21.226,29.599L24.6,29.248L20.966,32.606L15.348,38.224C15.014,38.593 14.737,39.105 14.737,39.636C14.737,40.8 15.526,41.56 16.662,41.56C17.284,41.56 17.739,41.341 18.137,40.978L23.72,35.366L27.101,31.789L26.755,35.374L26.755,38.639C26.755,39.854 27.522,40.678 28.68,40.678Z\"/>\n\t\t <path d=\"M8.518,49.999C2.857,49.999 0,47.171 0,41.567L0,8.432C0,2.828 2.857,0 8.518,0L55.482,0C61.172,0 64,2.84 64,8.432L64,41.567C64,47.159 61.172,49.999 55.482,49.999L8.518,49.999ZM8.587,45.603L55.412,45.603C58.1,45.603 59.633,44.152 59.633,41.354L59.633,8.645C59.633,5.818 58.1,4.396 55.412,4.396L8.587,4.396C5.876,4.396 4.367,5.818 4.367,8.645L4.367,41.354C4.367,44.152 5.876,45.603 8.587,45.603Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function ChevronDown(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n return (\n <svg viewBox='0 0 64 36' {...props}>\n <path d='M32,36c1,0,1.8-0.4,2.5-1.1L63,5.7c0.7-0.7,1-1.4,1-2.3c0-1-0.3-1.8-1-2.4c-0.6-0.7-1.4-1-2.3-1s-1.7,0.3-2.4,1L30,29.8H34 L5.7,1C5.1,0.3,4.3,0,3.4,0C2.4,0,1.6,0.3,1,1C0.3,1.6,0,2.4,0,3.4c0,0.9,0.3,1.7,1,2.3l28.5,29.2C30.3,35.7,31.1,36,32,36z' />\n </svg>\n )\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function ExclamationmarkOctagon(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n return (\n <svg viewBox='0 0 64 61.6' {...props}>\n <path d='M61.4,16.8l-12.1-13.3C47.3,1.3,45.4,0,41.4,0h-18.9C18.6,0,16.7,1.3,14.7,3.5L2.6,16.8c-2,2.3-2.6,3.8-2.6,6.9v14.2c0,3.1.5,4.6,2.6,6.9l12.1,13.3c2,2.2,3.9,3.5,7.8,3.5h18.9c4,0,5.8-1.3,7.9-3.5l12.1-13.3c2.1-2.3,2.6-3.8,2.6-6.9v-14.2c0-3.1-.5-4.6-2.6-6.9ZM58.2,37.3c0,2.3-.3,3.1-1.5,4.4l-11.2,12.3c-1.7,1.9-2.6,2.5-5.8,2.5h-15.5c-3.1,0-4-.7-5.7-2.5l-11.2-12.3c-1.2-1.4-1.5-2.2-1.5-4.4v-13.1c0-2.3.3-3.1,1.5-4.4l11.2-12.3c1.7-1.9,2.6-2.5,5.7-2.5h15.5c3.1,0,4,.7,5.8,2.5l11.2,12.3c1.3,1.4,1.5,2.2,1.5,4.4v13.1Z' />\n <path d='M32,36.4c1.5,0,2.4-.9,2.4-2.5l.4-16.4c0-1.6-1.2-2.8-2.9-2.8s-2.9,1.1-2.8,2.7l.4,16.5c0,1.6.9,2.5,2.4,2.5Z' />\n <path d='M32,46.5c1.8,0,3.4-1.4,3.4-3.2s-1.5-3.2-3.4-3.2-3.3,1.4-3.3,3.2,1.5,3.2,3.3,3.2Z' />\n </svg>\n )\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function FifteenArrowTriangleheadClockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,24.967 53.645,16.446 46.273,11.115C45.02,10.166 43.366,10.489 42.667,11.662C41.944,12.848 42.327,14.192 43.476,15.079C49.571,19.462 53.573,26.628 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,23.179 12.932,13.576 23.706,11.072L23.706,15.18C23.706,17.212 25.087,17.76 26.657,16.652L35.809,10.242C37.117,9.311 37.147,7.954 35.809,7.023L26.687,0.583C25.087,-0.555 23.706,-0.007 23.706,2.055L23.706,6.098C10.28,8.639 0,20.497 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M21.596,46.561C22.831,46.561 23.585,45.673 23.585,44.438L23.585,26.365C23.585,24.935 22.709,24.096 21.286,24.096C20.118,24.096 19.316,24.613 18.416,25.288L15.162,27.705C14.602,28.131 14.267,28.587 14.267,29.287C14.267,30.108 14.864,30.765 15.685,30.765C16.081,30.765 16.361,30.638 16.689,30.376L19.522,28.258L19.577,28.258L19.577,44.438C19.577,45.679 20.355,46.561 21.596,46.561Z\"/>\n\t\t <path d=\"M35.688,46.737C40.143,46.737 42.94,43.446 42.94,38.968C42.94,35.128 40.739,31.849 36.971,31.849C35.045,31.849 33.472,32.702 32.678,34.178L32.563,34.178L33.076,27.668L40.364,27.668C41.319,27.668 41.952,27.011 41.952,26.055C41.952,25.07 41.349,24.443 40.364,24.443L32.079,24.443C30.576,24.443 29.87,25.234 29.797,26.737L29.174,35.098C29.077,36.358 29.74,37.307 31.012,37.307C31.918,37.307 32.308,36.959 32.898,36.259C33.588,35.337 34.559,34.763 35.719,34.763C37.953,34.763 39.089,36.789 39.089,39.065C39.089,41.511 37.856,43.543 35.664,43.543C33.949,43.543 32.807,42.432 32.258,40.955C31.838,40.139 31.279,39.731 30.518,39.731C29.502,39.731 28.876,40.364 28.876,41.38C28.876,41.721 28.949,42.08 29.022,42.397C29.735,45.128 32.902,46.737 35.688,46.737Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function FifteenArrowTriangleheadCounterclockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,20.497 48.145,8.639 34.75,6.098L34.75,2.055C34.75,-0.007 33.339,-0.555 31.762,0.583L22.647,7.023C21.308,7.954 21.339,9.311 22.647,10.242L31.793,16.652C33.339,17.76 34.75,17.212 34.75,15.18L34.75,11.072C45.518,13.576 53.573,23.179 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,26.628 8.879,19.462 14.98,15.079C16.129,14.192 16.512,12.848 15.782,11.662C15.089,10.489 13.436,10.166 12.152,11.115C4.781,16.446 0,24.967 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M21.596,46.561C22.831,46.561 23.585,45.673 23.585,44.438L23.585,26.365C23.585,24.935 22.709,24.096 21.286,24.096C20.118,24.096 19.316,24.613 18.416,25.288L15.162,27.705C14.602,28.131 14.267,28.587 14.267,29.287C14.267,30.108 14.864,30.765 15.685,30.765C16.081,30.765 16.361,30.638 16.689,30.376L19.522,28.258L19.577,28.258L19.577,44.438C19.577,45.679 20.355,46.561 21.596,46.561Z\"/>\n\t\t <path d=\"M35.688,46.737C40.143,46.737 42.94,43.446 42.94,38.968C42.94,35.128 40.739,31.849 36.971,31.849C35.045,31.849 33.472,32.702 32.678,34.178L32.563,34.178L33.076,27.668L40.364,27.668C41.319,27.668 41.952,27.011 41.952,26.055C41.952,25.07 41.349,24.443 40.364,24.443L32.079,24.443C30.576,24.443 29.87,25.234 29.797,26.737L29.174,35.098C29.077,36.358 29.74,37.307 31.012,37.307C31.918,37.307 32.308,36.959 32.898,36.259C33.588,35.337 34.559,34.763 35.719,34.763C37.953,34.763 39.089,36.789 39.089,39.065C39.089,41.511 37.856,43.543 35.664,43.543C33.949,43.543 32.807,42.432 32.258,40.955C31.838,40.139 31.279,39.731 30.518,39.731C29.502,39.731 28.876,40.364 28.876,41.38C28.876,41.721 28.949,42.08 29.022,42.397C29.735,45.128 32.902,46.737 35.688,46.737Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function FiveArrowTriangleheadClockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,24.967 53.645,16.446 46.273,11.115C45.02,10.166 43.366,10.489 42.667,11.662C41.944,12.848 42.327,14.192 43.476,15.079C49.571,19.462 53.573,26.628 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,23.179 12.932,13.576 23.706,11.072L23.706,15.18C23.706,17.212 25.087,17.76 26.657,16.652L35.809,10.242C37.117,9.311 37.147,7.954 35.809,7.023L26.687,0.583C25.087,-0.555 23.706,-0.007 23.706,2.055L23.706,6.098C10.28,8.639 0,20.497 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M29.316,46.78C33.77,46.78 36.567,43.459 36.567,39.017C36.567,35.17 34.402,31.892 30.599,31.892C28.703,31.892 27.099,32.745 26.306,34.221L26.19,34.221L26.703,27.686L33.991,27.686C34.946,27.686 35.579,27.053 35.579,26.098C35.579,25.119 34.977,24.486 33.991,24.486L25.707,24.486C24.203,24.486 23.498,25.277 23.424,26.78L22.808,35.111C22.735,36.407 23.367,37.35 24.639,37.35C25.552,37.35 25.966,36.972 26.532,36.302C27.222,35.38 28.186,34.806 29.347,34.806C31.586,34.806 32.717,36.838 32.717,39.108C32.717,41.554 31.483,43.586 29.291,43.586C27.576,43.586 26.434,42.475 25.885,40.967C25.502,40.188 24.906,39.774 24.145,39.774C23.16,39.774 22.533,40.407 22.533,41.423C22.533,41.764 22.576,42.093 22.649,42.416C23.362,45.171 26.53,46.78 29.316,46.78Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function FiveArrowTriangleheadCounterclockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,20.497 48.145,8.639 34.75,6.098L34.75,2.055C34.75,-0.007 33.339,-0.555 31.762,0.583L22.647,7.023C21.308,7.954 21.339,9.311 22.647,10.242L31.793,16.652C33.339,17.76 34.75,17.212 34.75,15.18L34.75,11.072C45.518,13.576 53.573,23.179 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,26.628 8.879,19.462 14.98,15.079C16.129,14.192 16.512,12.848 15.782,11.662C15.089,10.489 13.436,10.166 12.152,11.115C4.781,16.446 0,24.967 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M29.316,46.78C33.77,46.78 36.567,43.459 36.567,39.017C36.567,35.17 34.402,31.892 30.599,31.892C28.703,31.892 27.099,32.745 26.306,34.221L26.19,34.221L26.703,27.686L33.991,27.686C34.946,27.686 35.579,27.053 35.579,26.098C35.579,25.119 34.977,24.486 33.991,24.486L25.707,24.486C24.203,24.486 23.498,25.277 23.424,26.78L22.808,35.111C22.735,36.407 23.367,37.35 24.639,37.35C25.552,37.35 25.966,36.972 26.532,36.302C27.222,35.38 28.186,34.806 29.347,34.806C31.586,34.806 32.717,36.838 32.717,39.108C32.717,41.554 31.483,43.586 29.291,43.586C27.576,43.586 26.434,42.475 25.885,40.967C25.502,40.188 24.906,39.774 24.145,39.774C23.16,39.774 22.533,40.407 22.533,41.423C22.533,41.764 22.576,42.093 22.649,42.416C23.362,45.171 26.53,46.78 29.316,46.78Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function GearshapeFill(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n return (\n <svg viewBox='0 0 64 64' {...props}>\n <path d='M63.1,27.4c-0.4-0.5-1-0.9-1.8-1.1l-6.7-1.6c-0.2-0.6-0.4-1.2-0.7-1.8c-0.2-0.6-0.5-1.1-0.7-1.5l3.6-5.9 c0.4-0.7,0.6-1.4,0.6-2.1c-0.1-0.7-0.4-1.3-0.9-1.9l-4-3.9c-0.6-0.5-1.2-0.8-1.8-0.9s-1.3,0.1-2,0.4l-6,3.7c-0.5-0.2-1-0.5-1.6-0.7 s-1.2-0.4-1.8-0.6l-1.6-6.8c-0.2-0.8-0.6-1.4-1.1-1.9c-0.6-0.4-1.2-0.7-2-0.7H29c-0.8,0-1.5,0.2-2,0.7c-0.5,0.4-0.9,1.1-1.1,1.9 l-1.6,6.8c-0.6,0.2-1.2,0.4-1.7,0.6s-1.1,0.5-1.6,0.7l-6-3.7c-1.4-0.8-2.7-0.6-3.8,0.5l-4,3.9c-0.6,0.6-0.9,1.2-0.9,1.9 s0.1,1.4,0.6,2.1l3.6,5.9c-0.2,0.5-0.4,1-0.6,1.5c-0.2,0.6-0.4,1.2-0.6,1.8l-6.7,1.6c-0.8,0.2-1.4,0.5-1.8,1.1 c-0.4,0.5-0.7,1.2-0.7,2v5.5c0,0.8,0.2,1.5,0.7,2.1c0.4,0.5,1,0.9,1.8,1.1l6.8,1.6c0.2,0.5,0.3,1.1,0.6,1.6c0.2,0.6,0.5,1.1,0.7,1.6 l-3.6,5.8c-0.5,0.7-0.6,1.4-0.6,2.1c0.1,0.7,0.4,1.4,0.9,1.9l3.9,3.9c0.5,0.5,1.2,0.8,1.9,0.9c0.7,0.1,1.4-0.1,2.1-0.5l5.9-3.6 c0.5,0.2,1,0.5,1.6,0.7s1.2,0.4,1.7,0.6l1.6,6.7c0.2,0.8,0.5,1.4,1.1,1.9c0.5,0.5,1.1,0.7,1.9,0.7h5.6c0.8,0,1.5-0.2,2-0.7 c0.6-0.4,0.9-1.1,1.1-1.9l1.6-6.7c0.6-0.2,1.2-0.4,1.8-0.6c0.6-0.2,1.1-0.5,1.6-0.7l5.9,3.6c0.7,0.4,1.3,0.6,2,0.5s1.3-0.4,1.9-0.9 l3.9-3.9c0.6-0.6,0.9-1.2,0.9-1.9c0.1-0.7-0.1-1.4-0.6-2.1l-3.6-5.8c0.3-0.5,0.5-1.1,0.7-1.6c0.2-0.6,0.4-1.1,0.6-1.6l6.8-1.6 c0.8-0.2,1.4-0.5,1.8-1.1c0.4-0.5,0.6-1.2,0.6-2.1v-5.5C63.7,28.6,63.5,28,63.1,27.4z M41.3,37.4c-1,1.6-2.3,3-3.9,3.9 c-1.6,1-3.5,1.5-5.4,1.5c-2,0-3.8-0.5-5.4-1.5s-2.9-2.3-3.9-3.9s-1.5-3.5-1.5-5.4c0-2,0.5-3.8,1.5-5.4s2.3-2.9,3.9-3.9 s3.5-1.5,5.4-1.5c2,0,3.8,0.5,5.4,1.5s2.9,2.3,3.9,3.9s1.5,3.4,1.5,5.4S42.3,35.8,41.3,37.4z' />\n </svg>\n )\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function NinetyArrowTriangleheadClockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,24.967 53.645,16.446 46.273,11.115C45.02,10.166 43.366,10.489 42.667,11.662C41.944,12.848 42.327,14.192 43.476,15.079C49.571,19.462 53.573,26.628 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,23.179 12.932,13.576 23.706,11.072L23.706,15.18C23.706,17.212 25.087,17.76 26.657,16.652L35.809,10.242C37.117,9.311 37.147,7.954 35.809,7.023L26.687,0.583C25.087,-0.555 23.706,-0.007 23.706,2.055L23.706,6.098C10.28,8.639 0,20.497 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M19.89,46.737C17.79,46.737 15.894,45.911 14.713,44.519C14.045,43.807 13.498,42.846 13.498,41.983C13.498,41.094 14.088,40.316 15.134,40.316C16.041,40.316 16.515,40.73 16.978,41.528C17.642,42.743 18.558,43.513 20.048,43.513C23.381,43.513 24.059,38.718 24.041,35.192C24.041,35.101 24.035,35.009 24.035,34.936L23.992,34.936C23.358,37.077 21.558,38.717 18.882,38.717C15.139,38.717 12.804,35.469 12.804,31.592C12.804,27.162 15.741,23.901 20,23.901C25.594,23.901 27.818,29.349 27.818,35.096C27.818,40.891 25.911,46.737 19.89,46.737ZM20.037,35.675C22.154,35.675 23.505,33.747 23.505,31.55C23.505,29.291 22.209,27.126 20.097,27.126C17.9,27.126 16.654,29.262 16.654,31.441C16.654,33.607 17.845,35.675 20.037,35.675Z\"/>\n\t\t <path d=\"M38.891,46.737C33.249,46.737 31.238,41.001 31.238,35.298C31.238,29.686 33.224,23.895 38.891,23.895C44.503,23.895 46.508,29.656 46.508,35.298C46.508,40.94 44.522,46.737 38.891,46.737ZM38.891,43.483C41.262,43.483 42.469,39.978 42.469,35.298C42.469,30.673 41.256,27.168 38.891,27.168C36.496,27.168 35.277,30.661 35.277,35.298C35.277,39.978 36.496,43.483 38.891,43.483Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function NinetyArrowTriangleheadCounterclockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,20.497 48.145,8.639 34.75,6.098L34.75,2.055C34.75,-0.007 33.339,-0.555 31.762,0.583L22.647,7.023C21.308,7.954 21.339,9.311 22.647,10.242L31.793,16.652C33.339,17.76 34.75,17.212 34.75,15.18L34.75,11.072C45.518,13.576 53.573,23.179 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,26.628 8.879,19.462 14.98,15.079C16.129,14.192 16.512,12.848 15.782,11.662C15.089,10.489 13.436,10.166 12.152,11.115C4.781,16.446 0,24.967 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M19.89,46.737C17.79,46.737 15.894,45.911 14.713,44.519C14.045,43.807 13.498,42.846 13.498,41.983C13.498,41.094 14.088,40.316 15.134,40.316C16.041,40.316 16.515,40.73 16.978,41.528C17.642,42.743 18.558,43.513 20.048,43.513C23.381,43.513 24.059,38.718 24.041,35.192C24.041,35.101 24.035,35.009 24.035,34.936L23.992,34.936C23.358,37.077 21.558,38.717 18.882,38.717C15.139,38.717 12.804,35.469 12.804,31.592C12.804,27.162 15.741,23.901 20,23.901C25.594,23.901 27.818,29.349 27.818,35.096C27.818,40.891 25.911,46.737 19.89,46.737ZM20.037,35.675C22.154,35.675 23.505,33.747 23.505,31.55C23.505,29.291 22.209,27.126 20.097,27.126C17.9,27.126 16.654,29.262 16.654,31.441C16.654,33.607 17.845,35.675 20.037,35.675Z\"/>\n\t\t <path d=\"M38.891,46.737C33.249,46.737 31.238,41.001 31.238,35.298C31.238,29.686 33.224,23.895 38.891,23.895C44.503,23.895 46.508,29.656 46.508,35.298C46.508,40.94 44.522,46.737 38.891,46.737ZM38.891,43.483C41.262,43.483 42.469,39.978 42.469,35.298C42.469,30.673 41.256,27.168 38.891,27.168C36.496,27.168 35.277,30.661 35.277,35.298C35.277,39.978 36.496,43.483 38.891,43.483Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function PauseFill(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n return (\n\t\t<svg viewBox=\"0 0 48 64\" {...props}>\n\t <path d=\"M5.172,64L13.97,64C17.334,64 19.102,62.233 19.102,58.828L19.102,5.172C19.102,1.603 17.334,0 13.97,0L5.172,0C1.767,0 0,1.767 0,5.172L0,58.828C0,62.233 1.767,64 5.172,64Z\"/>\n\t <path d=\"M33.29,64L42.088,64C45.452,64 47.219,62.233 47.219,58.828L47.219,5.172C47.219,1.603 45.452,0 42.088,0L33.29,0C29.885,0 28.117,1.767 28.117,5.172L28.117,58.828C28.117,62.233 29.885,64 33.29,64Z\"/>\n\t </svg>\n )\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function PhotoBadgeArrowDownFill(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg {...props} viewBox='0 0 64 47'>\n\t\t\t<path d='M39.47,42.309L7.208,42.309C2.418,42.309 0,39.916 0,35.174L0,7.135C0,2.393 2.418,0 7.208,0L46.949,0C51.764,0 54.157,2.403 54.157,7.135L54.157,20.285C53.553,20.209 52.938,20.17 52.314,20.17C48.505,20.17 45.008,21.646 42.371,24.051L39.912,21.77C38.817,20.748 37.502,20.254 36.25,20.254C34.946,20.254 33.685,20.724 32.536,21.741L21.575,31.464L17.193,27.501C16.157,26.578 14.984,26.123 13.87,26.123C12.844,26.123 11.754,26.578 10.743,27.467L3.696,33.628L3.696,35.019C3.696,37.288 5.036,38.599 7.276,38.599L37.963,38.599C38.297,39.914 38.809,41.159 39.47,42.309ZM17.238,21.73C20.32,21.73 22.876,19.175 22.876,16.063C22.876,12.955 20.32,10.371 17.238,10.371C14.101,10.371 11.546,12.955 11.546,16.063C11.546,19.175 14.101,21.73 17.238,21.73Z' />\n\t\t\t<path d='M52.314,46.635C45.924,46.635 40.653,41.398 40.653,34.973C40.653,28.579 45.924,23.312 52.314,23.312C58.739,23.312 64,28.574 64,34.973C64,41.349 58.661,46.635 52.314,46.635ZM52.368,42.342C52.749,42.342 53.046,42.152 53.436,41.786L58.587,37.083C58.934,36.761 59.08,36.458 59.08,36.019C59.08,35.233 58.466,34.599 57.68,34.648C57.275,34.667 56.924,34.833 56.636,35.126L55.251,36.516L53.759,38.062L53.88,35.143L53.88,29.029C53.88,28.234 53.197,27.565 52.368,27.565C51.519,27.565 50.827,28.234 50.827,29.029L50.827,35.143L50.958,38.062L49.431,36.516L48.081,35.126C47.788,34.833 47.412,34.624 47.007,34.648C46.222,34.648 45.583,35.233 45.631,36.019C45.631,36.463 45.778,36.761 46.125,37.083L51.251,41.786C51.646,42.186 51.973,42.342 52.368,42.342Z' />\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function PlayFill(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n return (\n\t\t<svg viewBox=\"0 0 57 64\" {...props}>\n\t <path d=\"M-0,58.454C-0,62.219 2.163,64 4.77,64C5.895,64 7.11,63.644 8.251,63.02L52.662,37.083C55.817,35.222 56.911,34.016 56.911,32C56.911,29.984 55.817,28.778 52.662,26.917L8.251,0.979C7.11,0.356 5.895,0 4.77,0C2.163,0 -0,1.781 -0,5.547L-0,58.454Z\" />\n\t </svg>\n )\n}\n","import { ComponentPropsWithRef } from \"react\";\n\nexport function RectangleFillOnArrowDownForwardTopleadingRectangle(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 64 52\" {...props}>\n\t\t <path d=\"M19.38,10.183C19.268,9.671 18.883,9.262 18.378,9.12C17.873,8.978 17.331,9.126 16.968,9.504C15.945,10.565 14.348,12.23 14.348,12.23L9.51,7.393C9.22,7.107 8.863,6.947 8.392,6.947C7.5,6.947 6.924,7.523 6.924,8.415C6.924,8.798 7.126,9.197 7.391,9.466L12.253,14.329C12.253,14.329 10.5,16.069 9.435,17.126C9.071,17.487 8.938,18.019 9.09,18.508C9.241,18.998 9.652,19.362 10.155,19.454C10.16,19.452 10.164,19.453 10.168,19.454L19.29,20.924C20.3,20.924 20.943,20.449 20.943,19.289L19.387,10.213C19.385,10.203 19.382,10.193 19.38,10.183Z\"/>\n\t\t <path d=\"M6.918,40.609C2.32,40.609 0,38.312 0,33.761L0,6.848C0,2.297 2.32,0 6.918,0L45.062,0C49.683,0 51.981,2.307 51.981,6.848L51.981,33.761C51.981,38.302 49.683,40.609 45.062,40.609L6.918,40.609ZM6.975,37.038L45.006,37.038C47.189,37.038 48.433,35.86 48.433,33.587L48.433,7.021C48.433,4.726 47.189,3.57 45.006,3.57L6.975,3.57C4.772,3.57 3.547,4.726 3.547,7.021L3.547,33.587C3.547,35.86 4.772,37.038 6.975,37.038Z\"/>\n\t\t <path d=\"M28.884,51.863L58.609,51.863C62.21,51.863 64,50.066 64,46.526L64,25.554C64,22.015 62.21,20.217 58.609,20.217L28.884,20.217C25.301,20.217 23.492,22.007 23.492,25.554L23.492,46.526C23.492,50.073 25.301,51.863 28.884,51.863Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from \"react\";\n\nexport function RectangleTriangleUp(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 64 49\" {...props}>\n\t\t <path d=\"M13.294,36.044L8.518,36.044C2.857,36.044 0,33.216 0,27.612L0,8.432C0,2.828 2.857,0 8.518,0L55.482,0C61.172,0 64,2.84 64,8.432L64,27.612C64,33.204 61.172,36.044 55.482,36.044L50.712,36.044L46.417,31.648L55.412,31.648C58.1,31.648 59.633,30.197 59.633,27.399L59.633,8.645C59.633,5.818 58.1,4.396 55.412,4.396L8.587,4.396C5.876,4.396 4.367,5.818 4.367,8.645L4.367,27.399C4.367,30.197 5.876,31.648 8.587,31.648L17.593,31.648L13.294,36.044Z\"/>\n\t\t <path d=\"M51.449,48.076L12.578,48.076C11.272,48.076 10.274,47.072 10.274,45.772C10.274,45.13 10.535,44.556 10.954,44.158L30.333,24.343C30.763,23.855 31.352,23.616 32.011,23.616C32.643,23.616 33.258,23.86 33.694,24.349L53.051,44.164C53.471,44.562 53.726,45.13 53.726,45.772C53.726,47.072 52.749,48.076 51.449,48.076Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function SixtyArrowTriangleheadClockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,24.967 53.645,16.446 46.273,11.115C45.02,10.166 43.366,10.489 42.667,11.662C41.944,12.848 42.327,14.192 43.476,15.079C49.571,19.462 53.573,26.628 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,23.179 12.932,13.576 23.706,11.072L23.706,15.18C23.706,17.212 25.087,17.76 26.657,16.652L35.809,10.242C37.117,9.311 37.147,7.954 35.809,7.023L26.687,0.583C25.087,-0.555 23.706,-0.007 23.706,2.055L23.706,6.098C10.28,8.639 0,20.497 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M20.541,46.774C16.981,46.774 14.664,44.425 13.556,41.133C12.922,39.18 12.698,36.589 12.944,34.234C13.167,29.03 15.166,23.932 20.62,23.932C23.356,23.932 25.751,25.261 26.665,27.237C26.909,27.663 27.012,28.181 27.012,28.723C27.012,29.526 26.538,30.359 25.376,30.359C24.5,30.359 23.983,29.86 23.557,29.147C22.917,27.883 21.97,27.144 20.559,27.144C18.472,27.144 17.441,29.04 16.97,31.048C16.647,32.286 16.512,33.738 16.512,35.752L16.634,35.752C17.329,33.519 19.141,31.982 21.732,31.982C25.444,31.982 27.749,35.055 27.749,39.083C27.749,43.598 24.782,46.774 20.541,46.774ZM20.51,43.543C22.646,43.543 23.899,41.451 23.899,39.235C23.899,36.952 22.72,34.964 20.504,34.964C18.417,34.964 17.079,36.861 17.079,39.113C17.079,41.335 18.319,43.543 20.51,43.543Z\"/>\n\t\t <path d=\"M38.658,46.737C33.045,46.737 31.035,41.001 31.035,35.298C31.035,29.686 33.021,23.895 38.658,23.895C44.3,23.895 46.268,29.656 46.268,35.298C46.268,40.94 44.319,46.737 38.658,46.737ZM38.658,43.483C41.059,43.483 42.266,39.978 42.266,35.298C42.266,30.673 41.053,27.168 38.658,27.168C36.287,27.168 35.068,30.661 35.068,35.298C35.068,39.978 36.287,43.483 38.658,43.483Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function SixtyArrowTriangleheadCounterclockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,20.497 48.145,8.639 34.75,6.098L34.75,2.055C34.75,-0.007 33.339,-0.555 31.762,0.583L22.647,7.023C21.308,7.954 21.339,9.311 22.647,10.242L31.793,16.652C33.339,17.76 34.75,17.212 34.75,15.18L34.75,11.072C45.518,13.576 53.573,23.179 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,26.628 8.879,19.462 14.98,15.079C16.129,14.192 16.512,12.848 15.782,11.662C15.089,10.489 13.436,10.166 12.152,11.115C4.781,16.446 0,24.967 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M20.541,46.774C16.981,46.774 14.664,44.425 13.556,41.133C12.922,39.18 12.698,36.589 12.944,34.234C13.167,29.03 15.166,23.932 20.62,23.932C23.356,23.932 25.751,25.261 26.665,27.237C26.909,27.663 27.012,28.181 27.012,28.723C27.012,29.526 26.538,30.359 25.376,30.359C24.5,30.359 23.983,29.86 23.557,29.147C22.917,27.883 21.97,27.144 20.559,27.144C18.472,27.144 17.441,29.04 16.97,31.048C16.647,32.286 16.512,33.738 16.512,35.752L16.634,35.752C17.329,33.519 19.141,31.982 21.732,31.982C25.444,31.982 27.749,35.055 27.749,39.083C27.749,43.598 24.782,46.774 20.541,46.774ZM20.51,43.543C22.646,43.543 23.899,41.451 23.899,39.235C23.899,36.952 22.72,34.964 20.504,34.964C18.417,34.964 17.079,36.861 17.079,39.113C17.079,41.335 18.319,43.543 20.51,43.543Z\"/>\n\t\t <path d=\"M38.658,46.737C33.045,46.737 31.035,41.001 31.035,35.298C31.035,29.686 33.021,23.895 38.658,23.895C44.3,23.895 46.268,29.656 46.268,35.298C46.268,40.94 44.319,46.737 38.658,46.737ZM38.658,43.483C41.059,43.483 42.266,39.978 42.266,35.298C42.266,30.673 41.053,27.168 38.658,27.168C36.287,27.168 35.068,30.661 35.068,35.298C35.068,39.978 36.287,43.483 38.658,43.483Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function SpeakerMinusFill(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg {...props} viewBox='0 0 64 46'>\n\t\t\t<path d='M27.897,45.634C29.579,45.634 30.809,44.408 30.809,42.716L30.809,3.055C30.809,1.39 29.579,0 27.842,0C26.634,0 25.792,0.528 24.48,1.78L13.449,12.13C13.294,12.284 13.074,12.383 12.825,12.383L5.415,12.383C1.909,12.383 0,14.292 0,18.045L0,27.672C0,31.392 1.909,33.328 5.415,33.328L12.825,33.328C13.074,33.328 13.294,33.406 13.449,33.56L24.48,44.013C25.683,45.133 26.688,45.634 27.897,45.634Z' />\n\t\t\t<path d='M41.264,24.964L61.535,24.964C62.99,24.964 64,24.195 64,22.828C64,21.423 63.05,20.626 61.535,20.626L41.264,20.626C39.749,20.626 38.771,21.423 38.771,22.828C38.771,24.195 39.809,24.964 41.264,24.964Z' />\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function SpeakerPlusFill(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg {...props} viewBox='0 0 64 47'>\n\t\t\t<path d='M28.32,46.325C30.027,46.325 31.276,45.08 31.276,43.362L31.276,3.102C31.276,1.411 30.027,0 28.264,0C27.037,0 26.183,0.536 24.85,1.807L13.652,12.313C13.496,12.47 13.272,12.571 13.02,12.571L5.497,12.571C1.938,12.571 0,14.509 0,18.319L0,28.091C0,31.867 1.938,33.833 5.497,33.833L13.02,33.833C13.272,33.833 13.496,33.911 13.652,34.068L24.85,44.679C26.071,45.817 27.092,46.325 28.32,46.325Z' />\n\t\t\t<path d='M39.659,23.135C39.659,24.411 40.579,25.303 41.916,25.303L49.617,25.303L49.617,33.059C49.617,34.368 50.509,35.283 51.785,35.283C53.1,35.283 54.02,34.374 54.02,33.059L54.02,25.303L61.777,25.303C63.086,25.303 64,24.411 64,23.135C64,21.819 63.092,20.899 61.777,20.899L54.02,20.899L54.02,13.171C54.02,11.828 53.1,10.919 51.785,10.919C50.509,10.919 49.617,11.834 49.617,13.171L49.617,20.899L41.916,20.899C40.545,20.899 39.659,21.819 39.659,23.135Z' />\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function TenArrowTriangleheadClockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n return (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,24.967 53.645,16.446 46.273,11.115C45.02,10.166 43.366,10.489 42.667,11.662C41.944,12.848 42.327,14.192 43.476,15.079C49.571,19.462 53.573,26.628 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,23.179 12.932,13.576 23.706,11.072L23.706,15.18C23.706,17.212 25.087,17.76 26.657,16.652L35.809,10.242C37.117,9.311 37.147,7.954 35.809,7.023L26.687,0.583C25.087,-0.555 23.706,-0.007 23.706,2.055L23.706,6.098C10.28,8.639 -0,20.497 -0,34.787C-0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M21.596,46.561C22.831,46.561 23.585,45.673 23.585,44.438L23.585,26.365C23.585,24.935 22.709,24.096 21.286,24.096C20.118,24.096 19.316,24.613 18.416,25.288L15.162,27.705C14.602,28.131 14.267,28.587 14.267,29.287C14.267,30.108 14.864,30.765 15.685,30.765C16.081,30.765 16.361,30.638 16.689,30.376L19.522,28.258L19.577,28.258L19.577,44.438C19.577,45.679 20.355,46.561 21.596,46.561Z\"/>\n\t\t <path d=\"M36.048,46.731C30.406,46.731 28.426,41.001 28.426,35.298C28.426,29.686 30.375,23.919 36.048,23.919C41.685,23.919 43.659,29.649 43.659,35.298C43.659,40.97 41.679,46.731 36.048,46.731ZM36.048,43.513C38.45,43.513 39.626,39.978 39.626,35.298C39.626,30.673 38.444,27.174 36.048,27.174C33.647,27.174 32.458,30.661 32.458,35.298C32.458,39.984 33.647,43.513 36.048,43.513Z\"/>\n\t\t</svg>\n )\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function TenArrowTriangleheadCounterclockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox='0 0 59 64' {...props}>\n\t\t\t<path d='M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,20.497 48.145,8.639 34.75,6.098L34.75,2.055C34.75,-0.007 33.339,-0.555 31.762,0.583L22.647,7.023C21.308,7.954 21.339,9.311 22.647,10.242L31.793,16.652C33.339,17.76 34.75,17.212 34.75,15.18L34.75,11.072C45.518,13.576 53.573,23.179 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,26.628 8.879,19.462 14.98,15.079C16.129,14.192 16.512,12.848 15.782,11.662C15.089,10.489 13.436,10.166 12.152,11.115C4.781,16.446 0,24.967 0,34.787C0,50.929 13.101,64 29.213,64Z' />\n\t\t\t<path d='M21.596,46.561C22.831,46.561 23.585,45.673 23.585,44.438L23.585,26.365C23.585,24.935 22.709,24.096 21.286,24.096C20.118,24.096 19.316,24.613 18.416,25.288L15.162,27.705C14.602,28.131 14.267,28.587 14.267,29.287C14.267,30.108 14.864,30.765 15.685,30.765C16.081,30.765 16.361,30.638 16.689,30.376L19.522,28.258L19.577,28.258L19.577,44.438C19.577,45.679 20.355,46.561 21.596,46.561Z' />\n\t\t\t<path d='M36.048,46.731C30.406,46.731 28.426,41.001 28.426,35.298C28.426,29.686 30.375,23.919 36.048,23.919C41.685,23.919 43.659,29.649 43.659,35.298C43.659,40.97 41.679,46.731 36.048,46.731ZM36.048,43.513C38.45,43.513 39.626,39.978 39.626,35.298C39.626,30.673 38.444,27.174 36.048,27.174C33.647,27.174 32.458,30.661 32.458,35.298C32.458,39.984 33.647,43.513 36.048,43.513Z' />\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function ThirtyArrowTriangleheadClockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,24.967 53.645,16.446 46.273,11.115C45.02,10.166 43.366,10.489 42.667,11.662C41.944,12.848 42.327,14.192 43.476,15.079C49.571,19.462 53.573,26.628 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,23.179 12.932,13.576 23.706,11.072L23.706,15.18C23.706,17.212 25.087,17.76 26.657,16.652L35.809,10.242C37.117,9.311 37.147,7.954 35.809,7.023L26.687,0.583C25.087,-0.555 23.706,-0.007 23.706,2.055L23.706,6.098C10.28,8.639 0,20.497 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M20.047,46.731C24.27,46.731 27.627,44.281 27.627,40.241C27.627,36.944 25.457,35.231 22.805,34.975L22.805,34.926C25.346,34.354 26.883,32.276 26.883,29.819C26.883,26.102 23.813,23.999 19.962,23.999C16.763,23.999 13.992,25.796 13.37,28.361C13.272,28.703 13.229,29.063 13.229,29.411C13.229,30.275 13.697,31.023 14.902,31.023C15.863,31.023 16.374,30.627 16.696,29.733C17.25,28.018 18.362,27.162 19.992,27.162C21.908,27.162 23.093,28.377 23.093,30.287C23.093,32.361 21.641,33.624 19.548,33.624L18.704,33.624C17.724,33.624 17.152,34.19 17.152,35.084C17.152,36.027 17.755,36.532 18.704,36.532L19.59,36.532C21.916,36.532 23.618,37.546 23.618,40.071C23.618,42.091 22.19,43.507 20.078,43.507C18.064,43.507 16.915,42.481 16.379,40.894C16.026,40.121 15.388,39.628 14.615,39.628C13.532,39.628 12.845,40.297 12.845,41.344C12.845,41.697 12.894,42.045 12.991,42.393C13.705,45.287 17,46.731 20.047,46.731Z\"/>\n\t\t <path d=\"M38.396,46.737C32.783,46.737 30.773,41.001 30.773,35.298C30.773,29.686 32.728,23.926 38.396,23.926C44.032,23.926 46.036,29.656 46.036,35.298C46.036,40.97 44.05,46.737 38.396,46.737ZM38.396,43.513C40.797,43.513 42.004,39.978 42.004,35.298C42.004,30.673 40.791,27.168 38.396,27.168C36.025,27.168 34.805,30.661 34.805,35.298C34.805,39.978 36.025,43.513 38.396,43.513Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function ThirtyArrowTriangleheadCounterclockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,20.497 48.145,8.639 34.75,6.098L34.75,2.055C34.75,-0.007 33.339,-0.555 31.762,0.583L22.647,7.023C21.308,7.954 21.339,9.311 22.647,10.242L31.793,16.652C33.339,17.76 34.75,17.212 34.75,15.18L34.75,11.072C45.518,13.576 53.573,23.179 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,26.628 8.879,19.462 14.98,15.079C16.129,14.192 16.512,12.848 15.782,11.662C15.089,10.489 13.436,10.166 12.152,11.115C4.781,16.446 0,24.967 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M20.047,46.731C24.27,46.731 27.627,44.281 27.627,40.241C27.627,36.944 25.457,35.231 22.805,34.975L22.805,34.926C25.346,34.354 26.883,32.276 26.883,29.819C26.883,26.102 23.813,23.999 19.962,23.999C16.763,23.999 13.992,25.796 13.37,28.361C13.272,28.703 13.229,29.063 13.229,29.411C13.229,30.275 13.697,31.023 14.902,31.023C15.863,31.023 16.374,30.627 16.696,29.733C17.25,28.018 18.362,27.162 19.992,27.162C21.908,27.162 23.093,28.377 23.093,30.287C23.093,32.361 21.641,33.624 19.548,33.624L18.704,33.624C17.724,33.624 17.152,34.19 17.152,35.084C17.152,36.027 17.755,36.532 18.704,36.532L19.59,36.532C21.916,36.532 23.618,37.546 23.618,40.071C23.618,42.091 22.19,43.507 20.078,43.507C18.064,43.507 16.915,42.481 16.379,40.894C16.026,40.121 15.388,39.628 14.615,39.628C13.532,39.628 12.845,40.297 12.845,41.344C12.845,41.697 12.894,42.045 12.991,42.393C13.705,45.287 17,46.731 20.047,46.731Z\"/>\n\t\t <path d=\"M38.396,46.737C32.783,46.737 30.773,41.001 30.773,35.298C30.773,29.686 32.728,23.926 38.396,23.926C44.032,23.926 46.036,29.656 46.036,35.298C46.036,40.97 44.05,46.737 38.396,46.737ZM38.396,43.513C40.797,43.513 42.004,39.978 42.004,35.298C42.004,30.673 40.791,27.168 38.396,27.168C36.025,27.168 34.805,30.661 34.805,35.298C34.805,39.978 36.025,43.513 38.396,43.513Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function Xmark(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n return (\n <svg viewBox='0 0 64 64' {...props}>\n <path d='M1,63c0.7,0.7,1.6,1,2.6,1s1.9-0.3,2.6-1L32,37.1L57.8,63c0.7,0.7,1.5,1,2.5,1c1,0,1.9-0.3,2.6-1c0.7-0.7,1-1.6,1-2.6 c0-1-0.3-1.8-1-2.5L37.1,32L63,6.2c0.7-0.7,1-1.6,1-2.6S63.7,1.7,63,1c-0.7-0.7-1.6-1-2.6-1c-1,0-1.8,0.3-2.5,1L32,26.9L6.2,1 C5.5,0.3,4.6,0,3.6,0C2.6,0,1.7,0.3,1,1C0.3,1.7,0,2.6,0,3.6c0,1,0.3,1.9,1,2.6L26.9,32L1,57.8c-0.7,0.7-1,1.5-1,2.6 C0,61.4,0.3,62.3,1,63z' />\n </svg>\n )\n}\n","// * Types\nimport { ElementType, ReactElement, ReactNode } from 'react'\n\nexport type DetailsBodyProps<TTag extends ElementType = 'div'> = Omit<DisclosurePanelProps<TTag>, 'className'> & {\n\tclassName?: string\n}\n\nexport type DetailsProps<TTag extends ElementType = 'div'> = Omit<DisclosureProps<TTag>, 'className' | 'role'> & {\n\tclassName?: string\n}\n\nexport type DetailsSummaryProps<TTag extends ElementType = typeof Button<typeof HeadlessButton>> = Omit<\n\tDisclosureButtonProps<TTag>,\n\t'as' | 'className' | 'role'\n> & { arrow?: boolean | ReactNode; className?: string }\n\n// * Headless UI\nimport {\n\tButton as HeadlessButton,\n\tDisclosure,\n\tDisclosureProps,\n\tDisclosureButton,\n\tDisclosureButtonProps,\n\tDisclosurePanel,\n\tDisclosurePanelProps,\n} from '@headlessui/react'\n\n// * Components\nimport { Button } from './button'\nimport { ChevronDown } from '../icons'\n\n// * Utilities\nimport { twMerge } from '../utils'\n\nexport function DetailsSummary<TTag extends ElementType = typeof Button>({\n\tarrow = true,\n\tchildren,\n\tclassName,\n\t...props\n}: DetailsSummaryProps<TTag>): ReactElement {\n\treturn (\n\t\t<DisclosureButton<typeof Button<typeof HeadlessButton>>\n\t\t\t{...props}\n\t\t\tas={Button<typeof HeadlessButton>}\n\t\t\tclassName={twMerge('w-full', className, Boolean(arrow) && 'grid grid-cols-[1fr_1rem] gap-2')}\n\t\t\trole='summary'\n\t\t>\n\t\t\t{bag => (\n\t\t\t\t<>\n\t\t\t\t\t{typeof children === 'function' ? children(bag) : children}\n\n\t\t\t\t\t{arrow &&\n\t\t\t\t\t\t(typeof arrow === 'boolean' ? (\n\t\t\t\t\t\t\t<ChevronDown className='absolute top-1/2 right-3 block w-4 -translate-y-1/2' />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\tarrow\n\t\t\t\t\t\t))}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</DisclosureButton>\n\t)\n}\n\nexport function DetailsBody<TTag extends ElementType = 'div'>({\n\tchildren,\n\tclassName,\n\t...props\n}: DetailsBodyProps<TTag>): ReactElement {\n\treturn (\n\t\t<DisclosurePanel\n\t\t\t{...props}\n\t\t\tclassName={twMerge(\n\t\t\t\t'grid grid-rows-1fr transition-rows duration-500 ease-exponential data-closed:grid-rows-0fr',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\ttransition\n\t\t>\n\t\t\t{bag => (\n\t\t\t\t<div className='overflow-y-hidden px-2 pt-3 pb-1'>\n\t\t\t\t\t{typeof children === 'function' ? children(bag) : children}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</DisclosurePanel>\n\t)\n}\n\nexport function Details<TTag extends ElementType = 'div'>({\n\tas = 'div',\n\tclassName,\n\t...props\n}: DetailsProps<TTag>): ReactElement {\n\treturn (\n\t\t<Disclosure\n\t\t\t{...props}\n\t\t\tas={as}\n\t\t\tclassName={twMerge('rounded-2xl bg-neutral-50/20 p-2 backdrop-blur-md backdrop-brightness-150', className)}\n\t\t\trole='details'\n\t\t/>\n\t)\n}\n","// * Types\nimport { AnyElementProps } from '../types'\nimport { ElementType, ReactElement, ReactNode } from 'react'\n\nexport type DropDownButtonProps<TTag extends ElementType = 'button'> = Omit<\n\tMenuButtonProps<TTag>,\n\t'as' | 'className'\n> & {\n\tarrow?: boolean | ReactNode\n\tas?: TTag | ElementType\n\tclassName?: string\n}\n\nexport type DropDownItemProps<TTag extends ElementType = 'div'> = Omit<MenuItemProps<TTag>, 'as'> &\n\tAnyElementProps<TTag>\n\nexport type DropDownItemsProps = Omit<MenuItemsProps, 'className' | 'transition'> & {\n\tclassName?: string\n\tcontainerClassName?: string\n}\n\nexport type DropDownProps = MenuProps\n\nexport type DropDownSectionProps = MenuSectionProps & {\n\tlabel?: string\n\tlabelProps?: Omit<MenuHeadingProps, 'children'> & {\n\t\t/** @deprecated Use `label` instead. */\n\t\tchildren?: never\n\t}\n\tseparatorAbove?: boolean\n\tseparatorBelow?: boolean\n}\n\nexport type DropDownSeparatorProps<TTag extends ElementType = 'div'> = Omit<MenuSeparatorProps<TTag>, 'as'> &\n\tAnyElementProps<TTag>\n\n// * Headless UI\nimport {\n\tMenu,\n\tMenuButton,\n\tMenuButtonProps,\n\tMenuHeading,\n\tMenuHeadingProps,\n\tMenuItem,\n\tMenuItemProps,\n\tMenuItems,\n\tMenuItemsProps,\n\tMenuProps,\n\tMenuSection,\n\tMenuSectionProps,\n\tMenuSeparator,\n\tMenuSeparatorProps,\n} from '@headlessui/react'\n\n// * Components\nimport { ChevronDown } from '../icons'\n\n// * Utilities\nimport { twMerge } from '../utils'\nimport { twJoin } from 'tailwind-merge'\n\nexport function DropDownButton<TTag extends ElementType = 'button'>({\n\tarrow = true,\n\tas,\n\tchildren,\n\tclassName,\n\t...props\n}: DropDownButtonProps<TTag>): ReactElement {\n\treturn (\n\t\t<MenuButton {...props} as={as || 'button'} className={twJoin('group/button', className)}>\n\t\t\t{children}\n\n\t\t\t{arrow &&\n\t\t\t\t(typeof arrow === 'boolean' ? (\n\t\t\t\t\t<ChevronDown className='-top-px -mr-1 ml-2 w-4 animate-flip-again group-data-open/button:animate-flip' />\n\t\t\t\t) : (\n\t\t\t\t\tarrow\n\t\t\t\t))}\n\t\t</MenuButton>\n\t)\n}\n\nexport function DropDownItem<TTag extends ElementType = 'div'>({\n\tas,\n\t...props\n}: DropDownItemProps<TTag>): ReactElement {\n\treturn <MenuItem {...props} as={(as as MenuItemProps['as']) || 'div'} />\n}\n\nexport function DropDownItems({\n\tanchor,\n\tchildren,\n\tclassName,\n\tcontainerClassName,\n\tstyle,\n\t...props\n}: DropDownItemsProps): ReactElement {\n\tconst getAnchorProps = () => {\n\t\tlet initialAnchor: typeof anchor = { gap: '1rem', padding: '1rem', to: 'bottom start' }\n\n\t\tif (anchor) {\n\t\t\tif (typeof anchor === 'string') initialAnchor.to = anchor\n\n\t\t\tif (typeof anchor === 'object') initialAnchor = { ...initialAnchor, ...anchor }\n\t\t}\n\n\t\treturn initialAnchor\n\t}\n\n\tconst anchorProps = getAnchorProps()\n\n\treturn (\n\t\t<MenuItems\n\t\t\t{...props}\n\t\t\tanchor={anchorProps}\n\t\t\tclassName={twMerge(\n\t\t\t\t'grid grid-rows-1fr rounded-xl shadow-xl transition-rows duration-500 ease-exponential not-data-open:not-data-enter:not-data-leave:grid-rows-0fr data-closed:grid-rows-0fr',\n\t\t\t\tcontainerClassName,\n\t\t\t)}\n\t\t\tstatic={props.static}\n\t\t\tstyle={{ ...style, minWidth: 'var(--button-width)' }}\n\t\t\ttransition\n\t\t>\n\t\t\t{bag => (\n\t\t\t\t<div className='overflow-y-scroll'>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\t'rounded-xl bg-neutral-50/20 px-6 py-5 backdrop-blur-md backdrop-brightness-150',\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{typeof children === 'function' ? children(bag) : children}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</MenuItems>\n\t)\n}\n\nexport function DropDownSection({\n\tchildren,\n\tlabel,\n\tlabelProps,\n\tseparatorAbove,\n\tseparatorBelow,\n\t...props\n}: DropDownSectionProps): ReactElement {\n\tconst { labelClassName, ...restLabelProps } = { labelClassName: labelProps?.className || '', ...labelProps }\n\n\treturn (\n\t\t<MenuSection {...props}>\n\t\t\t{sectionBag => (\n\t\t\t\t<>\n\t\t\t\t\t{separatorAbove && <DropDownSeparator />}\n\n\t\t\t\t\t{label && (\n\t\t\t\t\t\t<MenuHeading\n\t\t\t\t\t\t\t{...restLabelProps}\n\t\t\t\t\t\t\tclassName={headingBag =>\n\t\t\t\t\t\t\t\ttwMerge(\n\t\t\t\t\t\t\t\t\t'text-[size:larger] font-bold text-current/80',\n\t\t\t\t\t\t\t\t\ttypeof labelClassName === 'function' ? labelClassName(headingBag) : labelClassName,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</MenuHeading>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{typeof children === 'function' ? children(sectionBag) : children}\n\n\t\t\t\t\t{separatorBelow && <DropDownSeparator />}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</MenuSection>\n\t)\n}\n\nexport function DropDownSeparator<TTag extends ElementType = 'div'>({\n\tas,\n\tclassName,\n\t...props\n}: DropDownSeparatorProps<TTag>): ReactElement {\n\treturn (\n\t\t<MenuSeparator\n\t\t\t{...props}\n\t\t\tas={(as as MenuSeparatorProps['as']) || 'div'}\n\t\t\tclassName={bag =>\n\t\t\t\ttwMerge(\n\t\t\t\t\t'my-4 block h-px rounded-full bg-neutral-950/20',\n\t\t\t\t\ttypeof className === 'function' ? className(bag) : className,\n\t\t\t\t)\n\t\t\t}\n\t\t/>\n\t)\n}\n\nexport function DropDown(props: DropDownProps): ReactElement {\n\treturn <Menu {...props} />\n}\n","// * React\nimport { HTMLAttributes, useRef, createContext, useContext, useSyncExternalStore } from 'react'\n\nexport function createFastContext<Store>(defaultInitialState: Store) {\n\tfunction useStoreData(initialState: Store = defaultInitialState): {\n\t\tget: () => Store\n\t\tset: (value: Store | ((prevState: Store) => Store)) => void\n\t\tsubscribe: (callback: () => void) => () => void\n\t} {\n\t\tconst store = useRef(initialState),\n\t\t\tget = () => store.current,\n\t\t\tsubscribers = useRef(new Set<() => void>())\n\n\t\tconst set = (value: Store | ((prevState: Store) => Store)) => {\n\t\t\tif (typeof value === 'function') {\n\t\t\t\tstore.current = (value as (prevState: Store) => Store)(store.current)\n\t\t\t} else {\n\t\t\t\tstore.current = value\n\t\t\t}\n\t\t\tsubscribers.current.forEach(callback => callback())\n\t\t}\n\n\t\tconst subscribe = (callback: () => void) => {\n\t\t\tsubscribers.current.add(callback)\n\t\t\treturn () => subscribers.current.delete(callback)\n\t\t}\n\n\t\treturn {\n\t\t\tget,\n\t\t\tset,\n\t\t\tsubscribe,\n\t\t}\n\t}\n\n\ttype UseStoreDataReturnType = ReturnType<typeof useStoreData>\n\n\tconst StoreContext = createContext<UseStoreDataReturnType | null>(null)\n\n\tfunction Provider({\n\t\tinitialValue = defaultInitialState,\n\t\t...props\n\t}: Pick<HTMLAttributes<HTMLElement>, 'children'> & { initialValue?: Store }) {\n\t\treturn <StoreContext.Provider value={useStoreData(initialValue)} {...props} />\n\t}\n\n\tfunction useStore<SelectorOutput>(\n\t\tselector: (store: Store) => SelectorOutput,\n\t\tinitialValue?: Store,\n\t): [SelectorOutput | undefined, ((value: Store | ((prevState: Store) => Store)) => void) | undefined] {\n\t\tconst store = useContext(StoreContext)\n\n\t\tif (!store) {\n\t\t\tconst localStoreValue = initialValue !== undefined ? initialValue : defaultInitialState\n\n\t\t\tconst selectedValue = selector(localStoreValue)\n\t\t\tconst noOpSet = () => console.warn('Attempting to set store value outside of Provider')\n\n\t\t\treturn [selectedValue, noOpSet]\n\t\t}\n\n\t\tconst state = useSyncExternalStore(\n\t\t\tstore.subscribe,\n\t\t\t() => selector(store.get()),\n\t\t\t() => selector(initialValue !== undefined ? initialValue : defaultInitialState),\n\t\t)\n\n\t\treturn [state, store.set]\n\t}\n\n\treturn {\n\t\tProvider,\n\t\tuseStore,\n\t}\n}\n","// * Types\nexport type FieldType = 'array' | 'email' | 'file' | 'number' | 'object' | 'string' | 'tel' | 'textarea' | 'url'\n\nexport type StringField = {\n\ttype: 'email' | 'file' | 'number' | 'string' | 'tel' | 'textarea' | 'url'\n\tvalue: string\n\trequired?: boolean\n\tinvalid?: boolean\n}\n\nexport type ObjectField = { type: 'object'; fields: Field[] }\n\nexport type ArrayField = { type: 'array'; of: ArrayObjectOrNormalField }\n\ntype ArrayObjectOrNormalField = StringField | ArrayField | ObjectField\n\nexport type Field = ArrayObjectOrNormalField & {\n\tid: string\n\tname: string\n}\n\nexport type FormContext = Field[]\n\n// * React\nimport { ReactNode, useCallback } from 'react'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\n/**\n * # Define Field\n *\n * This is a helper function to define a field in a form context with type safety.\n */\nexport function defineField(fieldDefinition: Field) {\n\treturn fieldDefinition\n}\n\nexport function isStringField(field: Field) {\n\treturn Boolean(field.type !== 'object' && field.type !== 'array')\n}\n\nconst { Provider, useStore } = createFastContext<FormContext>([])\n\nexport function FormContextProvider({ children }: { children?: ReactNode }) {\n\treturn <Provider>{children}</Provider>\n}\n\nexport function useFormContext() {\n\tconst [formContext, setFormContext] = useStore(store => store)\n\n\tconst registerField = useCallback((field: Field) => {\n\t\tsetFormContext?.(prevContext => {\n\t\t\tconst otherFields = (prevContext || []).filter(otherField => otherField.id !== field.id)\n\n\t\t\treturn [...otherFields, field]\n\t\t})\n\t}, [])\n\n\tconst removeField = useCallback((fieldID: string) => {\n\t\tsetFormContext?.(prevContext => (prevContext || []).filter(field => field.id !== fieldID))\n\t}, [])\n\n\tconst updateField = useCallback((fieldID: string, updates: Partial<Field>) => {\n\t\tsetFormContext?.(prevContext => {\n\t\t\tconst field = prevContext.find(({ id }) => id === fieldID)\n\n\t\t\tif (!field) throw new Error(`Field with id \"${fieldID}\" not found in form context.`)\n\n\t\t\tconst otherFields = prevContext.filter(({ id }) => id !== fieldID)\n\n\t\t\tconst updatedField = { ...field, ...updates } as Field\n\n\t\t\treturn [...otherFields, updatedField]\n\t\t})\n\t}, [])\n\n\treturn [formContext, { registerField, removeField, updateField }] as const\n}\n","// * Types\nimport { defineField, Field, isStringField, StringField, useFormContext } from './use-form-context'\n\nexport type FieldsetContextValue = {\n\tfieldList: Field[]\n\tdecorative: boolean\n\tid: string\n\tjoin?: string\n\tname: string\n}\n\nexport type FieldsetContext = [\n\tFieldsetContextValue | undefined,\n\t{\n\t\tregisterField: (field: Field) => void\n\t\tremoveField: (fieldID: string) => void\n\t\tupdateField: (fieldID: string, updates: Partial<Field>) => void\n\t},\n]\n\n// * React\nimport { ReactNode, useCallback, useEffect } from 'react'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\nconst { Provider, useStore } = createFastContext<FieldsetContextValue | undefined>(undefined)\n\nexport function FieldsetContextProvider({\n\tchildren,\n\tinitialValue,\n}: {\n\tchildren?: ReactNode\n\tinitialValue?: FieldsetContextValue\n}) {\n\treturn <Provider initialValue={initialValue}>{children}</Provider>\n}\n\nexport function useFieldsetContext(): FieldsetContext {\n\tconst [fieldsetContext, setFieldsetContext] = useStore(store => store),\n\t\t[, formContextFunctions] = useFormContext()\n\n\tconst registerField = useCallback((field: Field) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\tconst existingFieldIndex = prev.fieldList.findIndex(existingField => existingField.id === field.id)\n\n\t\t\tconst newFieldList =\n\t\t\t\texistingFieldIndex >= 0\n\t\t\t\t\t? prev.fieldList.map((existingField, index) => (index === existingFieldIndex ? field : existingField))\n\t\t\t\t\t: [...prev.fieldList, field]\n\n\t\t\treturn { ...prev, fieldList: newFieldList }\n\t\t})\n\t}, [])\n\n\tconst removeField = useCallback((fieldID: string) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\treturn {\n\t\t\t\t...prev,\n\t\t\t\tfieldList: prev.fieldList.filter(field => field.id !== fieldID),\n\t\t\t}\n\t\t})\n\t}, [])\n\n\tconst updateField = useCallback((fieldID: string, updates: Partial<Field>) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\treturn {\n\t\t\t\t...prev,\n\t\t\t\tfieldList: prev.fieldList.map(field => (field.id === fieldID ? ({ ...field, ...updates } as Field) : field)),\n\t\t\t}\n\t\t})\n\t}, [])\n\n\tconst createFormContextEntry = useCallback((fieldsetEntry: FieldsetContextValue): Field => {\n\t\tif (fieldsetEntry.join) {\n\t\t\tconst joinedValue = fieldsetEntry.fieldList\n\t\t\t\t.filter(field => isStringField(field) && (field as StringField).value !== '')\n\t\t\t\t.map(field => (field as StringField).value)\n\t\t\t\t.join(fieldsetEntry.join)\n\n\t\t\treturn defineField({\n\t\t\t\ttype: 'string',\n\t\t\t\tid: fieldsetEntry.id,\n\t\t\t\tname: fieldsetEntry.name,\n\t\t\t\tvalue: joinedValue,\n\t\t\t\trequired: fieldsetEntry.fieldList.some(field => (field as StringField).required),\n\t\t\t\tinvalid: fieldsetEntry.fieldList.some(field => (field as StringField).invalid),\n\t\t\t})\n\t\t}\n\n\t\treturn defineField({\n\t\t\ttype: 'object',\n\t\t\tid: fieldsetEntry.id,\n\t\t\tname: fieldsetEntry.name,\n\t\t\tfields: fieldsetEntry.fieldList,\n\t\t})\n\t}, [])\n\n\tuseEffect(() => {\n\t\tif (!fieldsetContext || fieldsetContext.decorative) return\n\n\t\tconst formContextEntry = createFormContextEntry(fieldsetContext)\n\n\t\tformContextFunctions.registerField(formContextEntry)\n\n\t\treturn () => {\n\t\t\tformContextFunctions.removeField(fieldsetContext.id)\n\t\t}\n\t}, [fieldsetContext, formContextFunctions.registerField, formContextFunctions.removeField, createFormContextEntry])\n\n\treturn [fieldsetContext, { registerField, removeField, updateField }]\n}\n","// * Types\nimport { ReactNode, Suspense } from 'react'\n\nexport type FormStatus = 'error' | 'incomplete' | 'loading' | 'ready' | 'success' | 'readonly'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\nconst DEFAULT_STATUS: FormStatus = 'incomplete'\n\nconst { Provider, useStore } = createFastContext<FormStatus>(DEFAULT_STATUS)\n\nexport function FormStatusProvider({\n\tchildren,\n\tinitialStatus = DEFAULT_STATUS,\n}: {\n\tchildren?: ReactNode\n\tinitialStatus?: FormStatus\n}) {\n\treturn (\n\t\t<Suspense>\n\t\t\t<Provider initialValue={initialStatus}>{children}</Provider>\n\t\t</Suspense>\n\t)\n}\n\nexport function useFormStatus() {\n\treturn useStore(store => store)\n}\n","import React, { useCallback, useEffect, useId, useRef, useState } from 'react'\n\nexport type Coords = { x: number; y: number }\n\nexport type Cursor =\n\t| 'alias'\n\t| 'all-scroll'\n\t| 'auto'\n\t| 'cell'\n\t| 'col-resize'\n\t| 'context-menu'\n\t| 'copy'\n\t| 'crosshair'\n\t| 'default'\n\t| 'e-resize'\n\t| 'ew-resize'\n\t| 'grab'\n\t| 'grabbing'\n\t| 'help'\n\t| 'move'\n\t| 'no-drop'\n\t| 'not-allowed'\n\t| 'n-resize'\n\t| 'ne-resize'\n\t| 'nw-resize'\n\t| 'ns-resize'\n\t| 'nesw-resize'\n\t| 'nwse-resize'\n\t| 'pointer'\n\t| 'progress'\n\t| 'row-resize'\n\t| 's-resize'\n\t| 'se-resize'\n\t| 'sw-resize'\n\t| 'text'\n\t| 'vertical-text'\n\t| 'w-resize'\n\t| 'wait'\n\t| 'zoom-in'\n\t| 'zoom-out'\n\nexport type UsePointerMovementProps = {\n\tactiveCursor?: Cursor\n\tonChange?: (delta: Coords) => void\n\tonEnd?: (delta: Coords) => void\n}\n\nexport function usePointerMovement(props?: UsePointerMovementProps) {\n\tconst pointerTypeRef = useRef<'mouse' | 'pointer' | 'touch'>('pointer'),\n\t\t[isTracking, setIsTracking] = useState(false),\n\t\t[delta, setDelta] = useState<Coords>({ x: 0, y: 0 }),\n\t\tstartCoordsRef = useRef<Coords>({ x: 0, y: 0 })\n\n\tconst styleID = useId()\n\n\tconst changeCursor = (cursor: Cursor | false) => {\n\t\tif (cursor === false) {\n\t\t\tdocument.querySelector<HTMLStyleElement>(`#${styleID}`)?.remove()\n\t\t\treturn\n\t\t}\n\n\t\tconst css = `*, *:active { cursor: ${cursor}; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; }`\n\n\t\tconst style = document.createElement('style')\n\n\t\tstyle.id = styleID\n\t\tstyle.innerHTML = css\n\n\t\tdocument.body.prepend(style)\n\t}\n\n\tconst trackPointerMovement = (\n\t\te: React.MouseEvent<HTMLElement> | React.PointerEvent<HTMLElement> | React.TouchEvent<HTMLElement>,\n\t) => {\n\t\tchangeCursor(props?.activeCursor || 'grabbing')\n\n\t\tconst { type } = e\n\n\t\tswitch (type) {\n\t\t\tcase 'mousemove':\n\t\t\tcase 'mouseup':\n\t\t\tcase 'pointermove':\n\t\t\tcase 'pointerup':\n\t\t\tcase 'touchmove':\n\t\t\tcase 'touchend':\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'To initiate the tracking of pointer movement, you must use a `mousedown`, `pointerdown`, or `touchstart`.',\n\t\t\t\t)\n\t\t\tcase 'mousedown':\n\t\t\t\tpointerTypeRef.current = 'mouse'\n\t\t\t\tbreak\n\t\t\tcase 'pointerdown':\n\t\t\t\tpointerTypeRef.current = 'pointer'\n\t\t\t\tbreak\n\t\t\tcase 'touchstart':\n\t\t\t\tpointerTypeRef.current = 'touch'\n\t\t\t\tbreak\n\t\t}\n\n\t\tlet x = 0,\n\t\t\ty = 0\n\n\t\tif ('touches' in e) {\n\t\t\tconst { touches } = e\n\n\t\t\tif (touches.length > 1) return\n\n\t\t\tx = touches[0].clientX\n\t\t\ty = touches[0].clientY\n\t\t} else {\n\t\t\tx = e.clientX\n\t\t\ty = e.clientY\n\t\t}\n\n\t\tstartCoordsRef.current = { x, y }\n\t\tsetIsTracking(true)\n\t}\n\n\tconst updateDelta = useCallback((e: MouseEvent | PointerEvent | TouchEvent) => {\n\t\tlet clientX = 0,\n\t\t\tclientY = 0\n\n\t\tif ('touches' in e) {\n\t\t\tconst { touches } = e\n\n\t\t\tif (touches.length > 1) return\n\n\t\t\tclientX = touches[0].clientX\n\t\t\tclientY = touches[0].clientY\n\t\t} else {\n\t\t\tclientX = e.clientX\n\t\t\tclientY = e.clientY\n\t\t}\n\n\t\tconst { x, y } = startCoordsRef.current,\n\t\t\tnewDelta = { x: clientX - x, y: clientY - y }\n\n\t\tsetDelta(newDelta)\n\t\tprops?.onChange?.(newDelta)\n\t}, [])\n\n\tconst stopTracking = useCallback(() => {\n\t\tchangeCursor(false)\n\t\tsetIsTracking(false)\n\t\tprops?.onEnd?.(delta)\n\t}, [delta])\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst controller = new AbortController(),\n\t\t\tsignal = controller.signal\n\n\t\tif (isTracking) {\n\t\t\tswitch (pointerTypeRef.current) {\n\t\t\t\tcase 'mouse':\n\t\t\t\t\tdocument.body.addEventListener('mousemove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('mouseup', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'pointer':\n\t\t\t\t\tdocument.body.addEventListener('pointermove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('pointerup', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'touch':\n\t\t\t\t\tdocument.body.addEventListener('touchmove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('touchend', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tcontroller.abort()\n\t\t}\n\n\t\treturn () => {\n\t\t\tcontroller.abort()\n\t\t}\n\t}, [isTracking, updateDelta, stopTracking])\n\n\treturn { delta, stopTracking, trackPointerMovement }\n}\n","// * Types\nimport { OneOf } from '../../types'\n\ntype NameOrLegend = OneOf<\n\t[\n\t\t{\n\t\t\tlegend: string\n\t\t\tlegendProps?: Omit<LegendProps, 'children'> & {\n\t\t\t\t/** @deprecated Use the `legend` prop instead. */\n\t\t\t\tchildren?: never\n\t\t\t}\n\t\t},\n\t\t{ name: string },\n\t]\n>\n\nexport type FieldsetProps = Omit<HeadlessFieldsetProps, 'name'> &\n\tNameOrLegend & {\n\t\t/** When true, the fieldset will only be used for decoration and will not affect the `formContext`. */\n\t\tdecorative?: boolean\n\t\t/**\n\t\t * Joins all values in the fieldset into a single string value.\n\t\t *\n\t\t * @example\n\t\t * ```tsx\n\t\t * <Fieldset legend='Full Name' join=' '>\n\t\t * <Input name='First Name />\n\t\t * <Input name='Last Name />\n\t\t * </Fieldset>\n\t\t * ```\n\t\t * `[{ name: 'First Name', value: 'Johnny' }, { name: 'Last Name', value: 'Appleseed' }]`\n\t\t *\n\t\t * ↓\n\t\t *\n\t\t * `[{ name: 'Full Name', value: 'Johnny Appleseed' }]`\n\t\t */\n\t\tjoin?: string\n\t}\n\n// * Mado UI\nimport { FieldsetContextProvider } from '../../hooks'\n\n// * React\nimport { ReactElement, useId } from 'react'\n\n// * Headless UI\nimport {\n\tFieldset as HeadlessFieldset,\n\tFieldsetProps as HeadlessFieldsetProps,\n\tLegend,\n\tLegendProps,\n} from '@headlessui/react'\n\n// * Utilities\nimport { twMerge, toLowerCase } from '../../utils'\n\nexport function Fieldset({\n\tchildren,\n\tclassName,\n\tdecorative = false,\n\tjoin,\n\tlegend,\n\tlegendProps,\n\tname,\n\t...props\n}: FieldsetProps): ReactElement {\n\tconst uniqueID = useId()\n\n\tconst fieldsetId = toLowerCase(legend || name!, [' ', '_']) + '§' + uniqueID\n\n\tconst { className: legendClassName, ...restLegendProps } = legendProps || {}\n\n\tname = legend || name!\n\n\treturn (\n\t\t<FieldsetContextProvider\n\t\t\tinitialValue={{\n\t\t\t\tdecorative,\n\t\t\t\tfieldList: [],\n\t\t\t\tid: fieldsetId,\n\t\t\t\tjoin,\n\t\t\t\tname,\n\t\t\t}}\n\t\t>\n\t\t\t<HeadlessFieldset\n\t\t\t\t{...props}\n\t\t\t\tname={name}\n\t\t\t\tclassName={bag => twMerge('contents', typeof className === 'function' ? className(bag) : className)}\n\t\t\t>\n\t\t\t\t{bag => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{legend && (\n\t\t\t\t\t\t\t<Legend\n\t\t\t\t\t\t\t\t{...restLegendProps}\n\t\t\t\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\t\t\t'text-xl font-bold text-current/80',\n\t\t\t\t\t\t\t\t\ttypeof legendClassName === 'function' ? legendClassName(bag) : legendClassName,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{legend}\n\t\t\t\t\t\t\t</Legend>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{typeof children === 'function' ? children(bag) : children}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</HeadlessFieldset>\n\t\t</FieldsetContextProvider>\n\t)\n}\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (_e) {\n return false;\n }\n });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL <body> scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// * Types\nimport { AnyElementProps } from '../types'\n\nexport type TooltipProps = {\n\tanchor?: Placement\n\tarrow?: boolean\n\tarrowClassName?: string\n\tchildren:\n\t\t| ReactNode\n\t\t| (({ openTooltip, closeTooltip }: { openTooltip: () => void; closeTooltip: () => void }) => ReactNode)\n\tdelay?: number\n\toffset?: number\n\tonClose?: () => void\n\tonOpen?: () => void\n\tportal?: boolean\n\tmaxWidth?: number\n}\n\nexport type TooltipTriggerProps<T extends ElementType = 'button'> = AnyElementProps<T> & {\n\tasChild?: boolean\n}\n\nexport type TooltipPanelProps<T extends ElementType = 'div'> = AnyElementProps<T>\n\n// * React\nimport {\n\tcloneElement,\n\tComponentProps,\n\tCSSProperties,\n\tElementType,\n\tFocusEventHandler,\n\tisValidElement,\n\tMouseEventHandler,\n\tReactElement,\n\tReactNode,\n\tTouchEventHandler,\n\tuseCallback,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react'\nimport { createPortal } from 'react-dom'\n\n// * Floating UI\nimport {\n\tarrow as floatingArrow,\n\tautoUpdate,\n\tflip,\n\toffset as floatingOffset,\n\tPlacement,\n\tshift,\n\tuseFloating,\n\tsize,\n} from '@floating-ui/react-dom'\n\n// * Components\nimport { Button as HeadlessButton, Transition } from '@headlessui/react'\n\n// * Utilities\nimport { findComponentByType, twMerge } from '../utils'\n\nexport function TooltipTrigger<T extends ElementType = typeof HeadlessButton>({\n\tas,\n\tasChild = false,\n\tchildren,\n\t...props\n}: TooltipTriggerProps<T>): ReactElement {\n\tconst TooltipTriggerElement = as || HeadlessButton\n\n\tif (asChild && isValidElement(children)) return cloneElement(children as ReactElement<any>, props)\n\n\treturn <TooltipTriggerElement {...props}>{children}</TooltipTriggerElement>\n}\n\nexport function TooltipPanel<T extends ElementType = 'div'>({\n\tas,\n\tchildren,\n\tclassName,\n\tstyle,\n\t...props\n}: TooltipPanelProps<T>): ReactElement {\n\tconst TooltipPanelElement = as || 'div'\n\n\treturn (\n\t\t<TooltipPanelElement\n\t\t\t{...props}\n\t\t\tclassName={twMerge(\n\t\t\t\t'absolute top-0 left-0 z-50 w-max rounded-md bg-neutral-50 px-2 py-1 text-sm text-neutral-950 opacity-0 shadow-lg outline-1 outline-neutral-400 data-portal:fixed data-ready:animate-fade-in dark:bg-neutral-800 dark:text-neutral-50 dark:shadow-none dark:-outline-offset-1 dark:outline-neutral-600',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{children}\n\t\t</TooltipPanelElement>\n\t)\n}\n\nexport function Tooltip({\n\tanchor = 'top',\n\tarrow,\n\tarrowClassName,\n\tchildren,\n\tdelay = 500,\n\toffset = 8,\n\tonClose,\n\tonOpen,\n\tportal,\n}: TooltipProps): ReactElement {\n\tconst [isOpen, setIsOpen] = useState(false),\n\t\ttimeoutRef = useRef<NodeJS.Timeout>(undefined),\n\t\tarrowRef = useRef<HTMLDivElement>(null)\n\n\tconst [bodyElement, setBodyElement] = useState<HTMLBodyElement | null>(() =>\n\t\ttypeof window !== 'undefined' ? (document.body as HTMLBodyElement) : null,\n\t)\n\n\tuseEffect(() => {\n\t\tif (typeof window !== 'undefined' && !bodyElement) {\n\t\t\tconst documentBody = document.body as HTMLBodyElement\n\n\t\t\tsetBodyElement(documentBody)\n\t\t}\n\t}, [bodyElement, portal])\n\n\tconst { refs, floatingStyles, isPositioned, placement, middlewareData } = useFloating({\n\t\tmiddleware: [\n\t\t\tfloatingOffset(offset),\n\t\t\tflip({ padding: 20 }),\n\t\t\tshift({ padding: 20 }),\n\t\t\tsize({\n\t\t\t\tapply({ availableHeight, availableWidth, elements }) {\n\t\t\t\t\tconst height = `${Math.max(0, availableHeight) / 16}rem`,\n\t\t\t\t\t\twidth = `${Math.min(418, availableWidth) / 16}rem`\n\n\t\t\t\t\telements.floating.style.maxHeight = height\n\t\t\t\t\telements.floating.style.maxWidth = width\n\t\t\t\t},\n\t\t\t}),\n\t\t\t...(arrowRef.current ? [floatingArrow({ element: arrowRef.current })] : []),\n\t\t],\n\t\tplacement: anchor,\n\t\tstrategy: portal ? 'fixed' : 'absolute',\n\t\twhileElementsMounted: autoUpdate,\n\t\topen: isOpen,\n\t})\n\n\tconst openTooltip = useCallback(() => {\n\t\tclearTimeout(timeoutRef.current)\n\n\t\tif (delay > 0) {\n\t\t\ttimeoutRef.current = setTimeout(() => {\n\t\t\t\tsetIsOpen(true)\n\t\t\t\tonOpen?.()\n\t\t\t}, delay)\n\t\t} else {\n\t\t\tsetIsOpen(true)\n\t\t\tonOpen?.()\n\t\t}\n\t}, [delay, onOpen])\n\n\tconst closeTooltip = useCallback(() => {\n\t\tclearTimeout(timeoutRef.current)\n\t\tsetIsOpen(false)\n\t\tonClose?.()\n\t}, [onClose])\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tclearTimeout(timeoutRef.current)\n\t\t}\n\t}, [])\n\n\tconst content = typeof children === 'function' ? children({ openTooltip, closeTooltip }) : children\n\n\tconst triggerElement = findComponentByType<TooltipTriggerProps>(content, TooltipTrigger),\n\t\tcontentElement = findComponentByType<TooltipPanelProps>(content, TooltipPanel)\n\n\tif (!contentElement) throw new Error('TooltipPanel must be defined in Tooltip children')\n\n\tif (!triggerElement && typeof children !== 'function')\n\t\tthrow new Error('TooltipTrigger must be provided when not using render prop pattern')\n\n\tconst arrowStyles: CSSProperties = {}\n\n\tconst reversedAnchor = {\n\t\ttop: 'bottom',\n\t\tright: 'left',\n\t\tbottom: 'top',\n\t\tleft: 'right',\n\t\t'top-start': 'bottom left',\n\t\t'top-end': 'bottom right',\n\t\t'right-start': 'top left',\n\t\t'right-end': 'bottom left',\n\t\t'bottom-start': 'top left',\n\t\t'bottom-end': 'top right',\n\t\t'left-start': 'top right',\n\t\t'left-end': 'bottom right',\n\t}[placement]\n\n\tif (middlewareData.arrow && arrow) {\n\t\tconst { x, y } = middlewareData.arrow\n\n\t\tconst staticSide = {\n\t\t\ttop: 'bottom',\n\t\t\tright: 'left',\n\t\t\tbottom: 'top',\n\t\t\tleft: 'right',\n\t\t}[placement.split('-')[0]] as 'top' | 'right' | 'bottom' | 'left'\n\n\t\tif (staticSide) {\n\t\t\tarrowStyles[staticSide] = '-4px'\n\t\t\tif (x != null) arrowStyles.left = `${x}px`\n\t\t\tif (y != null) arrowStyles.top = `${y}px`\n\t\t}\n\t}\n\n\tconst getArrowLocationClasses = () => {\n\t\tswitch (placement) {\n\t\t\tcase 'bottom':\n\t\t\tcase 'bottom-end':\n\t\t\tcase 'bottom-start':\n\t\t\t\treturn '-translate-y-1'\n\t\t\tcase 'top':\n\t\t\tcase 'top-end':\n\t\t\tcase 'top-start':\n\t\t\t\treturn 'rotate-180 translate-y-1'\n\t\t\tcase 'left':\n\t\t\tcase 'left-end':\n\t\t\tcase 'left-start':\n\t\t\t\treturn 'rotate-90 translate-x-2'\n\t\t\tcase 'right':\n\t\t\tcase 'right-end':\n\t\t\tcase 'right-start':\n\t\t\t\treturn '-rotate-90 -translate-x-2'\n\t\t}\n\t}\n\n\tconst arrowLocationClasses = getArrowLocationClasses()\n\n\tconst handleMouseEnter: MouseEventHandler<HTMLButtonElement> = e => {\n\t\topenTooltip()\n\t\ttriggerElement?.props.onMouseEnter?.(e)\n\t}\n\n\tconst handleMouseLeave: MouseEventHandler<HTMLButtonElement> = e => {\n\t\ttriggerElement?.props.onMouseLeave?.(e)\n\t\tcloseTooltip()\n\t}\n\n\tconst handleTouchStart: TouchEventHandler<HTMLButtonElement> = e => {\n\t\topenTooltip()\n\t\ttriggerElement?.props.onTouchStart?.(e)\n\t}\n\n\tconst handleFocus: FocusEventHandler<HTMLButtonElement> = e => {\n\t\ttriggerElement?.props.onFocus?.(e)\n\t\topenTooltip()\n\t}\n\n\tconst handleBlur: FocusEventHandler<HTMLButtonElement> = e => {\n\t\ttriggerElement?.props.onBlur?.(e)\n\t\tcloseTooltip()\n\t}\n\n\tconst tooltipContent = (\n\t\t<>\n\t\t\t{isOpen &&\n\t\t\t\tcontentElement &&\n\t\t\t\tcloneElement(contentElement as ReactElement<any>, {\n\t\t\t\t\tchildren: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{contentElement.props.children}\n\n\t\t\t\t\t\t\t{arrow && (\n\t\t\t\t\t\t\t\t<ArrowSvg\n\t\t\t\t\t\t\t\t\tclassName={twMerge('absolute', arrowLocationClasses, arrowClassName)}\n\t\t\t\t\t\t\t\t\tstyle={arrowStyles}\n\t\t\t\t\t\t\t\t\tdata-tooltip-arrow\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t\t...(portal ? { 'data-portal': true } : {}),\n\t\t\t\t\t...(isPositioned ? { 'data-ready': true } : {}),\n\t\t\t\t\tonMouseEnter: openTooltip,\n\t\t\t\t\tonMouseLeave: closeTooltip,\n\t\t\t\t\tonTouchStart: handleTouchStart,\n\t\t\t\t\tref: (node: HTMLDivElement | null) => {\n\t\t\t\t\t\trefs.setFloating(node)\n\n\t\t\t\t\t\tif (node && arrow) {\n\t\t\t\t\t\t\tconst arrowElement = node.querySelector('[data-tooltip-arrow]') as HTMLDivElement\n\n\t\t\t\t\t\t\tif (arrowElement) arrowRef.current = arrowElement\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\trole: 'tooltip',\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\t...contentElement.props.style,\n\t\t\t\t\t\t...floatingStyles,\n\t\t\t\t\t\ttransformOrigin: reversedAnchor,\n\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t},\n\t\t\t\t})}\n\t\t</>\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t{triggerElement &&\n\t\t\t\tcloneElement(triggerElement as ReactElement<any>, {\n\t\t\t\t\tref: refs.setReference,\n\t\t\t\t\tonMouseEnter: handleMouseEnter,\n\t\t\t\t\tonMouseLeave: handleMouseLeave,\n\t\t\t\t\tonFocus: handleFocus,\n\t\t\t\t\tonBlur: handleBlur,\n\t\t\t\t\t'aria-describedby': isOpen ? 'tooltip' : undefined,\n\t\t\t\t})}\n\n\t\t\t{portal ? bodyElement && createPortal(tooltipContent, bodyElement) : tooltipContent}\n\t\t</>\n\t)\n}\n\nfunction ArrowSvg({ className, ...props }: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg viewBox='0 0 20 10' className={twMerge('h-2.5 w-5 fill-none', className)} {...props}>\n\t\t\t<path\n\t\t\t\td='M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z'\n\t\t\t\tclassName='fill-neutral-50 dark:fill-neutral-800'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M8.99542 1.85876C9.75604 1.17425 10.9106 1.17422 11.6713 1.85878L16.5281 6.22989C17.0789 6.72568 17.7938 7.00001 18.5349 7.00001L15.89 7L11.0023 2.60207C10.622 2.2598 10.0447 2.2598 9.66436 2.60207L4.77734 7L2.13171 7.00001C2.87284 7.00001 3.58774 6.72568 4.13861 6.22989L8.99542 1.85876Z'\n\t\t\t\tclassName='fill-neutral-400 dark:fill-none'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M10.3333 3.34539L5.47654 7.71648C4.55842 8.54279 3.36693 9 2.13172 9H0V8H2.13172C3.11989 8 4.07308 7.63423 4.80758 6.97318L9.66437 2.60207C10.0447 2.25979 10.622 2.2598 11.0023 2.60207L15.8591 6.97318C16.5936 7.63423 17.5468 8 18.5349 8H20V9H18.5349C17.2998 9 16.1083 8.54278 15.1901 7.71648L10.3333 3.34539Z'\n\t\t\t\tclassName='dark:fill-neutral-600'\n\t\t\t/>\n\t\t</svg>\n\t)\n}\n","// * Types\nimport { OneOf } from '../../../types'\n\ntype DateMinMax =\n\t| Date\n\t| [number, DateTimeObject['month'], DateTimeObject['day']]\n\t| Pick<DateTimeObject, 'day' | 'month' | 'year'>\n\ntype DateTimeMinMax =\n\t| Date\n\t| [\n\t\t\tnumber,\n\t\t\tDateTimeObject['month'],\n\t\t\tDateTimeObject['day'],\n\t\t\tDateTimeObject['hour'],\n\t\t\tDateTimeObject['minute'],\n\t\t\tDateTimeObject['second'],\n\t ]\n\t| DateTimeObject\n\ntype TimeMinMax =\n\t| [DateTimeObject['hour'], DateTimeObject['minute'], DateTimeObject['second']]\n\t| Pick<DateTimeObject, 'hour' | 'minute' | 'second'>\n\ntype WeekMinMax = [number, WeekNumber]\n\ntype InputType = OneOf<\n\t[\n\t\t{\n\t\t\ttype?: 'date'\n\t\t\tmin?: DateMinMax\n\t\t\tmax?: DateMinMax\n\t\t},\n\t\t{\n\t\t\ttype?: 'datetime' | 'datetime-local'\n\t\t\tmin?: DateTimeMinMax\n\t\t\tmax?: DateTimeMinMax\n\t\t},\n\t\t{\n\t\t\ttype?: 'number'\n\t\t\tmax?: number\n\t\t\tmin?: number\n\t\t},\n\t\t{\n\t\t\ttype?: 'password'\n\t\t\toptions?: Partial<PasswordOptions>\n\t\t},\n\t\t{\n\t\t\ttype?: 'tel'\n\t\t\toptions?: Partial<PhoneOptions>\n\t\t},\n\t\t{\n\t\t\ttype?: 'time'\n\t\t\tmin?: TimeMinMax\n\t\t\tmax?: TimeMinMax\n\t\t},\n\t\t{\n\t\t\ttype?: 'week'\n\t\t\tmin?: WeekMinMax\n\t\t\tmax?: WeekMinMax\n\t\t},\n\t\t{\n\t\t\ttype?: Exclude<\n\t\t\t\tHTMLInputTypeAttribute,\n\t\t\t\t'date' | 'datetime' | 'datetime-local' | 'number' | 'password' | 'tel' | 'time' | 'week'\n\t\t\t>\n\t\t},\n\t]\n>\n\nexport type InputProps = Omit<HeadlessInputProps, 'max' | 'min' | 'name' | 'type'> &\n\tInputType & {\n\t\tdescription?: ReactNode\n\t\tdescriptionProps?: Omit<DescriptionProps, 'children'> & {\n\t\t\t/** @deprecated Use the `description` prop instead. */\n\t\t\tchildren?: never\n\t\t}\n\t\tfieldProps?: Omit<FieldProps, 'children' | 'disabled'>\n\t\tlabel?: ReactNode\n\t\tlabelProps?: Omit<LabelProps, 'children'> & {\n\t\t\t/** @deprecated Use the `label` prop instead. */\n\t\t\tchildren?: never\n\t\t}\n\t\tname: string\n\t\tref?: RefObject<HTMLInputElement | null>\n\t}\n\ntype PasswordOptions = {\n\tmatchPreviousInput: boolean\n\trequireLowercaseCharacter: boolean\n\trequireNumber: boolean\n\trequireSpecialCharacter: boolean\n\trequireUppercaseCharacter: boolean\n}\n\ntype PhoneOptions = {\n\tcountryCode: string\n\t/**\n\t * @example\n\t * format: 'continuous'\n\t * returns: 5555555555\n\t *\n\t * @example\n\t * format: 'dot'\n\t * returns: 555.555.5555\n\t *\n\t * @example\n\t * format: 'hyphenated'\n\t * returns: 555-555-5555\n\t *\n\t * @example\n\t * format: 'space'\n\t * returns: 555 555 5555\n\t *\n\t * @example\n\t * format: 'standard' (default)\n\t * returns: (555) 555-5555\n\t */\n\tformat: 'continuous' | 'dot' | 'hyphenated' | 'none' | 'space' | 'standard'\n}\n\n// * React\nimport {\n\tChangeEventHandler,\n\tFocusEventHandler,\n\tHTMLInputTypeAttribute,\n\tReactElement,\n\tReactNode,\n\tRefObject,\n\tuseEffect,\n\tuseId,\n\tuseState,\n} from 'react'\n\n// * Hooks\nimport { defineField, isStringField, StringField, useFieldsetContext, useFormContext } from '../../../hooks'\n\n// * Headless UI\nimport {\n\tDescription,\n\tDescriptionProps,\n\tField,\n\tFieldProps,\n\tInput as HeadlessInput,\n\tInputProps as HeadlessInputProps,\n\tLabel,\n\tLabelProps,\n} from '@headlessui/react'\n\n// * Components\nimport { Button } from '../../button'\nimport { Tooltip, TooltipPanel, TooltipTrigger } from '../../tooltip'\nimport { ExclamationmarkOctagon } from '../../../icons'\n\n// * Utilities\nimport {\n\tDateTimeObject,\n\tformatPhoneNumber,\n\tgetMonthIndexFromName,\n\tgetUserReadableDate,\n\tisEmail,\n\tisPhoneNumber,\n\ttoLowerCase,\n\ttwMerge,\n\tWeekNumber,\n} from '../../../utils'\n\nconst specialCharacterRegex = new RegExp(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~€‚ƒ„…†‡‰‹‘’“”•–—™›¡¢£¥§©«¬®°±¶º»¿×÷]/)\n\nexport function Input({\n\tchecked,\n\tclassName,\n\tdefaultValue,\n\tdescription,\n\tdescriptionProps,\n\tdisabled,\n\tfieldProps,\n\tinvalid = true,\n\tlabel,\n\tlabelProps,\n\tmax,\n\tmin,\n\tname,\n\tonBlur,\n\tonChange,\n\toptions,\n\tplaceholder,\n\tref,\n\trequired = true,\n\ttype,\n\tvalue,\n\t...props\n}: InputProps): ReactElement {\n\tconst [formContext, formContextFunctions] = useFormContext(),\n\t\t[fieldsetContext, fieldsetContextFunctions] = useFieldsetContext(),\n\t\t[errorMessage, setErrorMessage] = useState<string | undefined>(undefined)\n\n\tif (type === 'password' && !placeholder) placeholder = '••••••••' + (required && !label ? '*' : '')\n\tif (placeholder === '*') placeholder = name + (required && !label ? '*' : '')\n\tif (label === '*') label = name\n\n\tconst uniqueID = useId(),\n\t\tfieldContextID = toLowerCase(name, [, '_']) + '§' + uniqueID\n\n\tconst isInFieldset = fieldsetContext && !fieldsetContext.decorative\n\n\tconst getFieldContextType = () => {\n\t\tswitch (type) {\n\t\t\tcase 'email':\n\t\t\t\treturn 'email'\n\t\t\tcase 'file':\n\t\t\t\treturn 'file'\n\t\t\tcase 'number':\n\t\t\t\treturn 'number'\n\t\t\tcase 'tel':\n\t\t\t\treturn 'tel'\n\t\t\tcase 'url':\n\t\t\t\treturn 'url'\n\t\t\tdefault:\n\t\t\t\treturn 'string'\n\t\t}\n\t}\n\n\tconst fieldContextType = getFieldContextType()\n\n\tconst fieldContext = (isInFieldset ? fieldsetContext.fieldList : formContext)?.find(\n\t\t({ id: fieldID }) => fieldID === fieldContextID,\n\t)\n\n\tuseEffect(() => {\n\t\tconst initialFieldContext = defineField({\n\t\t\ttype: fieldContextType,\n\t\t\tid: fieldContextID,\n\t\t\tinvalid,\n\t\t\tname,\n\t\t\trequired,\n\t\t\tvalue: value ? `${value}` : defaultValue ? `${defaultValue}` : '',\n\t\t})\n\n\t\tif (isInFieldset) {\n\t\t\tfieldsetContextFunctions.registerField(initialFieldContext)\n\n\t\t\treturn () => {\n\t\t\t\tfieldsetContextFunctions.removeField(initialFieldContext.id)\n\t\t\t}\n\t\t}\n\n\t\tformContextFunctions.registerField(initialFieldContext)\n\n\t\treturn () => {\n\t\t\tformContextFunctions.removeField(initialFieldContext.id)\n\t\t}\n\t}, [isInFieldset])\n\n\tconst validateField = (validValue: string) => {\n\t\tconst noValue = !validValue || validValue === ''\n\n\t\tif (!required && noValue) return true\n\n\t\tconst errorMessageList: string[] = []\n\n\t\tif (noValue) {\n\t\t\terrorMessageList.push('This field is required.')\n\t\t\tsetErrorMessage(errorMessageList.join(' '))\n\t\t\treturn false\n\t\t}\n\n\t\tswitch (type) {\n\t\t\tcase 'email':\n\t\t\t\tif (!isEmail(validValue)) errorMessageList.push('This is not a valid email.')\n\t\t\t\tbreak\n\t\t\tcase 'date':\n\t\t\t\tconst valueAsTime = new Date().getTime()\n\n\t\t\t\tif (min && !(min instanceof Date) && typeof min !== 'number') {\n\t\t\t\t\tif (Array.isArray(min)) {\n\t\t\t\t\t\tconst monthIndex = typeof min[1] === 'number' ? min[1] - 1 : getMonthIndexFromName(min[1])\n\n\t\t\t\t\t\tmin = new Date(min[0], monthIndex, min[2])\n\t\t\t\t\t} else if ('year' in min && 'month' in min && 'day' in min) {\n\t\t\t\t\t\tconst monthIndex = typeof min.month === 'number' ? min.month - 1 : getMonthIndexFromName(min.month)\n\n\t\t\t\t\t\tmin = new Date(min.year, monthIndex, min.day)\n\t\t\t\t\t}\n\n\t\t\t\t\tif (valueAsTime < (min as Date).getTime())\n\t\t\t\t\t\terrorMessageList.push(`Value cannot be lower than ${getUserReadableDate(min as Date)}.`)\n\t\t\t\t}\n\n\t\t\t\tif (max && !(max instanceof Date) && typeof max !== 'number') {\n\t\t\t\t\tif (Array.isArray(max)) {\n\t\t\t\t\t\tconst monthIndex = typeof max[1] === 'number' ? max[1] - 1 : getMonthIndexFromName(max[1])\n\n\t\t\t\t\t\tmax = new Date(max[0], monthIndex, max[2])\n\t\t\t\t\t} else if ('year' in max && 'month' in max && 'day' in max) {\n\t\t\t\t\t\tconst monthIndex = typeof max.month === 'number' ? max.month - 1 : getMonthIndexFromName(max.month)\n\n\t\t\t\t\t\tmax = new Date(max.year, monthIndex, max.day)\n\t\t\t\t\t}\n\n\t\t\t\t\tif (valueAsTime > (max as Date).getTime())\n\t\t\t\t\t\terrorMessageList.push(`Value cannot be higher than ${getUserReadableDate(max as Date)}.`)\n\t\t\t\t}\n\n\t\t\t\tbreak\n\t\t\tcase 'number':\n\t\t\t\tconst valueAsNumber = Number(validValue)\n\n\t\t\t\tif (isNaN(valueAsNumber)) errorMessageList.push('This is not a valid number.')\n\n\t\t\t\tif (typeof max === 'number' && valueAsNumber > max) errorMessageList.push(`Value cannot be higher than ${max}.`)\n\n\t\t\t\tif (typeof min === 'number' && valueAsNumber < min) errorMessageList.push(`Value cannot be lower than ${min}.`)\n\t\t\t\tbreak\n\t\t\tcase 'password':\n\t\t\t\tif (options) {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tmatchPreviousInput,\n\t\t\t\t\t\trequireLowercaseCharacter,\n\t\t\t\t\t\trequireNumber,\n\t\t\t\t\t\trequireSpecialCharacter,\n\t\t\t\t\t\trequireUppercaseCharacter,\n\t\t\t\t\t} = options as Partial<PasswordOptions>\n\n\t\t\t\t\tif (matchPreviousInput && formContext && formContext.length >= 2) {\n\t\t\t\t\t\tif (isInFieldset && fieldsetContext.fieldList.length > 1) {\n\t\t\t\t\t\t\tconst currentInputIndex = fieldsetContext.fieldList.findIndex(\n\t\t\t\t\t\t\t\t({ id: fieldID }) => fieldID === fieldContext?.id,\n\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\tif (currentInputIndex > 0) {\n\t\t\t\t\t\t\t\tconst previousInput = fieldsetContext.fieldList.find((_, index) => index === currentInputIndex - 1)\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tpreviousInput &&\n\t\t\t\t\t\t\t\t\tisStringField(previousInput) &&\n\t\t\t\t\t\t\t\t\t(previousInput as StringField).value !== validValue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\terrorMessageList.push('Passwords must match.')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst currentInputIndex = formContext.findIndex(({ id: fieldID }) => fieldID === fieldContext?.id)\n\n\t\t\t\t\t\t\tif (currentInputIndex > 0) {\n\t\t\t\t\t\t\t\tconst previousInput = formContext.find((_, index) => index === currentInputIndex - 1)\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tpreviousInput &&\n\t\t\t\t\t\t\t\t\tisStringField(previousInput) &&\n\t\t\t\t\t\t\t\t\t(previousInput as StringField).value !== validValue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\terrorMessageList.push('Passwords must match.')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (requireLowercaseCharacter && !/[a-z]/g.test(validValue))\n\t\t\t\t\t\terrorMessageList.push('You must include a lowercase character.')\n\n\t\t\t\t\tif (requireNumber && !/[0-9]/g.test(validValue)) errorMessageList.push('You must include a number.')\n\n\t\t\t\t\tif (requireSpecialCharacter && !specialCharacterRegex.test(validValue))\n\t\t\t\t\t\terrorMessageList.push('You must include a special character.')\n\n\t\t\t\t\tif (requireUppercaseCharacter && !/[A-Z]/g.test(validValue))\n\t\t\t\t\t\terrorMessageList.push('You must include an uppercase character.')\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'tel':\n\t\t\t\tif (!isPhoneNumber(validValue)) errorMessageList.push('This is not a valid phone number.')\n\t\t\t\tbreak\n\t\t}\n\n\t\tif (props.maxLength && validValue.length > Number(props.maxLength))\n\t\t\terrorMessageList.push(`This may not have more than ${props.maxLength} characters.`)\n\n\t\tif (props.minLength && validValue.length < Number(props.minLength))\n\t\t\terrorMessageList.push(`This must have at least ${props.minLength} characters.`)\n\n\t\tif (errorMessageList.length === 0) return true\n\n\t\tsetErrorMessage(errorMessageList.join(' '))\n\t\treturn false\n\t}\n\n\tconst handleChange: ChangeEventHandler<HTMLInputElement> = e => {\n\t\tif (disabled) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\tconst { currentTarget } = e,\n\t\t\t{ value: newValue } = currentTarget\n\n\t\tif (isInFieldset) {\n\t\t\tfieldsetContextFunctions.updateField(fieldContextID, {\n\t\t\t\tvalue: newValue,\n\t\t\t\tinvalid: validateField(newValue) === false,\n\t\t\t})\n\t\t} else {\n\t\t\tformContextFunctions.updateField(fieldContextID, { value: newValue, invalid: validateField(newValue) === false })\n\t\t}\n\n\t\tonChange?.(e)\n\t}\n\n\tconst handleBlur: FocusEventHandler<HTMLInputElement> = e => {\n\t\tif (disabled) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\tconst { currentTarget } = e,\n\t\t\t{ value: newValue } = currentTarget\n\n\t\tif (required) validateField(newValue)\n\n\t\tlet processedValue = newValue\n\n\t\tswitch (type) {\n\t\t\tcase 'email':\n\t\t\t\tprocessedValue = newValue.toLowerCase()\n\t\t\t\tbreak\n\t\t\tcase 'tel':\n\t\t\t\tprocessedValue = formatPhoneNumber(newValue, options as Partial<PhoneOptions>)\n\t\t\t\tbreak\n\t\t}\n\n\t\tif (isInFieldset) {\n\t\t\tfieldsetContextFunctions.updateField(fieldContextID, { value: processedValue })\n\t\t} else {\n\t\t\tformContextFunctions.updateField(fieldContextID, { value: processedValue })\n\t\t}\n\n\t\tonBlur?.(e)\n\t}\n\n\tconst restFieldProps: Omit<FieldProps, 'className' | 'disabled'> = fieldProps\n\t\t? Object.fromEntries(Object.entries(fieldProps).filter(([key]) => key !== 'className'))\n\t\t: {}\n\n\tconst restLabelProps: Omit<LabelProps, 'className' | 'children'> = labelProps\n\t\t? Object.fromEntries(Object.entries(labelProps).filter(([key]) => key !== 'className'))\n\t\t: {}\n\n\tconst restDescriptionProps: Omit<DescriptionProps, 'className' | 'children'> = descriptionProps\n\t\t? Object.fromEntries(Object.entries(descriptionProps).filter(([key]) => key !== 'className'))\n\t\t: {}\n\n\treturn (\n\t\t<Field\n\t\t\t{...restFieldProps}\n\t\t\tclassName={bag =>\n\t\t\t\ttwMerge(\n\t\t\t\t\t'grid gap-1',\n\t\t\t\t\ttypeof fieldProps?.className === 'function' ? fieldProps?.className(bag) : fieldProps?.className,\n\t\t\t\t)\n\t\t\t}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<Label\n\t\t\t\t\t{...restLabelProps}\n\t\t\t\t\tclassName={bag =>\n\t\t\t\t\t\ttwMerge(\n\t\t\t\t\t\t\t'text-sm font-medium',\n\t\t\t\t\t\t\trequired ? 'after:text-ui-red after:content-[\"_*\"]' : '',\n\t\t\t\t\t\t\ttypeof labelProps?.className === 'function' ? labelProps?.className(bag) : labelProps?.className,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Label>\n\t\t\t)}\n\n\t\t\t<div>\n\t\t\t\t<HeadlessInput\n\t\t\t\t\t{...props}\n\t\t\t\t\tclassName={bag =>\n\t\t\t\t\t\ttwMerge(\n\t\t\t\t\t\t\t// Base styles\n\t\t\t\t\t\t\t'w-full rounded-xl border-1 border-neutral-500/50 bg-neutral-100 py-1 pl-2 text-neutral-950 outline-offset-1 outline-ui-sky-blue/95 transition-[background-color] duration-300 ease-exponential dark:bg-neutral-700 dark:text-neutral-50',\n\t\t\t\t\t\t\t// Pseudo styles\n\t\t\t\t\t\t\t'focus-visible:bg-neutral-50 focus-visible:outline-3 active:bg-neutral-200 dark:focus-visible:bg-neutral-600 dark:active:bg-neutral-800 pointer-fine:hover:bg-neutral-50 pointer-fine:active:bg-neutral-200 dark:pointer-fine:hover:bg-neutral-600 dark:pointer-fine:active:bg-neutral-800',\n\t\t\t\t\t\t\t// user-invalid styles\n\t\t\t\t\t\t\t'user-invalid:border-ui-red user-invalid:bg-[color-mix(in_oklab,var(--color-ui-red)_20%,var(--color-neutral-100))] user-invalid:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-100))] user-invalid:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-100))] dark:user-invalid:bg-[color-mix(in_oklab,var(--color-ui-red)_20%,var(--color-neutral-800))] dark:user-invalid:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-800))] dark:user-invalid:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-800))] user-invalid:pointer-fine:hover:bg-[color-mix(in_oklab,var(--color-ui-red)_10%,var(--color-neutral-100))] user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-100))] user-invalid:pointer-fine:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-100))] dark:user-invalid:pointer-fine:hover:bg-[color-mix(in_oklab,var(--color-ui-red)_10%,var(--color-neutral-800))] dark:user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-800))] dark:user-invalid:pointer-fine:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-800))]',\n\t\t\t\t\t\t\t// Custom styles\n\t\t\t\t\t\t\ttypeof className === 'function' ? className(bag) : className,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tinvalid={invalid}\n\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tref={ref}\n\t\t\t\t\trequired={required}\n\t\t\t\t\ttype={type}\n\t\t\t\t\tvalue={(fieldContext as StringField)?.value || ''}\n\t\t\t\t/>\n\n\t\t\t\t{(fieldContext as StringField)?.invalid && errorMessage && (\n\t\t\t\t\t<Tooltip anchor='top-end' arrow portal>\n\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\tas={Button}\n\t\t\t\t\t\t\tclassName='absolute top-1.25 right-1.25 z-10 size-6 min-w-0'\n\t\t\t\t\t\t\tpadding='none'\n\t\t\t\t\t\t\trounded='md'\n\t\t\t\t\t\t\ttheme='red'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ExclamationmarkOctagon className='absolute top-1/2 left-1/2 size-full -translate-x-1/2 -translate-y-1/2 scale-70' />\n\t\t\t\t\t\t</TooltipTrigger>\n\n\t\t\t\t\t\t<TooltipPanel>{errorMessage}</TooltipPanel>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{description && (\n\t\t\t\t<Description\n\t\t\t\t\t{...restDescriptionProps}\n\t\t\t\t\tclassName={bag =>\n\t\t\t\t\t\ttwMerge(\n\t\t\t\t\t\t\t'text-xs',\n\t\t\t\t\t\t\ttypeof descriptionProps?.className === 'function'\n\t\t\t\t\t\t\t\t? descriptionProps?.className(bag)\n\t\t\t\t\t\t\t\t: descriptionProps?.className,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{description}\n\t\t\t\t</Description>\n\t\t\t)}\n\t\t</Field>\n\t)\n}\n","// * Types\nimport { ReactElement, ReactNode } from 'react'\n\nexport type SubmitButtonProps = Omit<ButtonProps, 'as' | 'customTheme' | 'href' | 'theme'> & {\n\t/** This doesn't do much by default, because we use built-in colors for different form states. You'll have to modify a good bit to make this do anything. */\n\tcustomTheme?: {\n\t\t/** Example: `'[--theme-color:var(--color-blue-500)]'` */\n\t\tthemeColor: string\n\t\t/**\n\t\t * @deprecated Only `themeColor` is available.\n\t\t *\n\t\t * ~~This doesn't use any preset color theme classes.~~\n\t\t */\n\t\tclasses?: never\n\t}\n\t/** The message to display when the form status is \"error\" */\n\terror?: ReactNode\n\t/** The message to display when the form status is \"incomplete\" */\n\tincomplete?: ReactNode\n\t/** The message to display when the form status is \"loading\" */\n\tloading?: ReactNode\n\t/** The message to display when the form status is \"readonly\" */\n\treadonly?: ReactNode\n\t/**\n\t * @deprecated Use `children` instead.\n\t *\n\t * ~~The message to display when the form status is \"ready\"~~\n\t */\n\tready?: never\n\t/** The message to display when the form status is \"success\" */\n\tsuccess?: ReactNode\n\t/**\n\t * @deprecated Use `customTheme.themeColor` instead.\n\t *\n\t * ~~Color theme.~~\n\t */\n\ttheme?: never\n}\n\n// * Hooks\nimport { useFormStatus } from '../../hooks'\n\n// * Components\nimport { Button, ButtonProps } from '../button'\n\n// * Utilities\nimport { twMerge, twSort } from '../../utils'\n\nexport function SubmitButton({\n\tchildren,\n\tclassName,\n\tcustomTheme,\n\terror,\n\tincomplete,\n\tloading,\n\tsuccess,\n\ttype,\n\t...props\n}: SubmitButtonProps): ReactElement {\n\tconst [formStatus] = useFormStatus()\n\n\tconst getFormStatusButtonClasses = () => {\n\t\tswitch (formStatus) {\n\t\t\tcase 'loading':\n\t\t\t\treturn twSort('animate-pulse cursor-wait text-lg leading-6 font-black tracking-widest')\n\t\t\tcase 'error':\n\t\t\tcase 'success':\n\t\t\t\treturn 'cursor-not-allowed'\n\t\t\tdefault:\n\t\t\t\treturn undefined\n\t\t}\n\t}\n\n\tconst formStatusButtonClasses = getFormStatusButtonClasses()\n\n\tconst getButtonText = () => {\n\t\tswitch (formStatus) {\n\t\t\tcase 'incomplete':\n\t\t\t\treturn incomplete || 'Complete Form'\n\t\t\tcase 'loading':\n\t\t\t\treturn (\n\t\t\t\t\tloading || (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<span className='inline-block animate-wave animation-delay-300'>•</span>\n\t\t\t\t\t\t\t<span className='inline-block animate-wave animation-delay-150'>•</span>\n\t\t\t\t\t\t\t<span className='inline-block animate-wave'>•</span>\n\t\t\t\t\t\t</>\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\tcase 'error':\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{error || 'Error'}{' '}\n\t\t\t\t\t\t<span className='absolute top-1/2 ml-1.5 translate-y-[calc(-50%-1.5px)] text-2xl'>×</span>\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\tcase 'success':\n\t\t\t\treturn success || 'Successfully Submitted'\n\t\t\tdefault:\n\t\t\t\treturn children || 'Submit'\n\t\t}\n\t}\n\n\tconst buttonText = getButtonText()\n\n\tconst getDataFormState = () => {\n\t\tswitch (formStatus) {\n\t\t\tcase 'error':\n\t\t\t\treturn { 'data-error': true }\n\t\t\tcase 'incomplete':\n\t\t\t\treturn { 'data-incomplete': true }\n\t\t\tcase 'loading':\n\t\t\t\treturn { 'data-loading': true }\n\t\t\tcase 'readonly':\n\t\t\t\treturn { 'data-readonly': true }\n\t\t\tcase 'ready':\n\t\t\t\treturn { 'data-ready': true }\n\t\t\tcase 'success':\n\t\t\t\treturn { 'data-success': true }\n\t\t\tdefault:\n\t\t\t\treturn {}\n\t\t}\n\t}\n\n\tconst dataFormState = getDataFormState()\n\n\treturn (\n\t\t<Button\n\t\t\t{...props}\n\t\t\t{...dataFormState}\n\t\t\tclassName={twMerge([formStatusButtonClasses, 'w-full text-white data-loading:text-black', className])}\n\t\t\tcustomTheme={{\n\t\t\t\tthemeColor: twMerge(\n\t\t\t\t\t'data-error:[--theme-color:var(--color-ui-red)] data-incomplete:[--theme-color:var(--color-ui-grey)] data-loading:[--theme-color:var(--color-ui-yellow)] data-readonly:[--theme-color:var(--color-ui-grey)] data-ready:[--theme-color:var(--color-ui-blue)] data-success:[--theme-color:var(--color-ui-green)]',\n\t\t\t\t\tcustomTheme?.themeColor,\n\t\t\t\t),\n\t\t\t}}\n\t\t\ttheme='custom'\n\t\t\ttype={type || 'submit'}\n\t\t>\n\t\t\t{buttonText}\n\t\t</Button>\n\t)\n}\n","// * Types\nexport type TextareaProps = Omit<HeadlessTextareaProps, 'name'> & {\n\tdescription?: ReactNode\n\tdescriptionProps?: Omit<DescriptionProps, 'children'> & {\n\t\t/** @deprecated Use the `description` prop instead. */\n\t\tchildren?: never\n\t}\n\tfieldProps?: Omit<FieldProps, 'children' | 'disabled'>\n\tlabel?: ReactNode\n\tlabelProps?: Omit<LabelProps, 'children'> & {\n\t\t/** @deprecated Use the `label` prop instead. */\n\t\tchildren?: never\n\t}\n\tname: string\n\tref?: RefObject<HTMLTextAreaElement | null>\n}\n\n// * React\nimport {\n\tChangeEventHandler,\n\tFocusEventHandler,\n\tReactElement,\n\tReactNode,\n\tRefObject,\n\tuseEffect,\n\tuseId,\n\tuseState,\n} from 'react'\n\n// * 窓 UI\nimport { defineField, StringField, useFieldsetContext, useFormContext } from '../../hooks'\n\n// * Headless UI\nimport {\n\tDescription,\n\tDescriptionProps,\n\tField,\n\tFieldProps,\n\tTextarea as HeadlessTextarea,\n\tTextareaProps as HeadlessTextareaProps,\n\tLabel,\n\tLabelProps,\n} from '@headlessui/react'\n\n// * Components\nimport { Tooltip, TooltipPanel, TooltipTrigger } from '../tooltip'\nimport { Button } from '../button'\nimport { ExclamationmarkOctagon } from '../../icons'\n\n// * Utilities\nimport { toLowerCase, twMerge } from '../../utils'\n\nexport function Textarea({\n\tclassName,\n\tdefaultValue,\n\tdescription,\n\tdescriptionProps,\n\tdisabled,\n\tfieldProps,\n\tinvalid = true,\n\tlabel,\n\tlabelProps,\n\tname,\n\tonBlur,\n\tonChange,\n\tplaceholder,\n\tref,\n\trequired = true,\n\tvalue,\n\t...props\n}: TextareaProps): ReactElement {\n\tconst [formContext, formContextFunctions] = useFormContext()\n\tconst [fieldsetContext, fieldsetContextFunctions] = useFieldsetContext()\n\tconst [errorMessage, setErrorMessage] = useState<string | undefined>(undefined)\n\n\tif (placeholder === '*') placeholder = name + (required && !label ? '*' : '')\n\tif (label === '*') label = name\n\n\tconst uniqueID = useId()\n\tconst fieldContextID = toLowerCase(name, [' ', '_']) + '§' + uniqueID\n\n\tconst isInFieldset = fieldsetContext && !fieldsetContext.decorative\n\n\tuseEffect(() => {\n\t\tconst initialFieldContext = defineField({\n\t\t\ttype: 'textarea',\n\t\t\tid: fieldContextID,\n\t\t\tinvalid,\n\t\t\tname,\n\t\t\trequired,\n\t\t\tvalue: value ? `${value}` : defaultValue ? `${defaultValue}` : '',\n\t\t})\n\n\t\tif (isInFieldset) {\n\t\t\tfieldsetContextFunctions.registerField(initialFieldContext)\n\n\t\t\treturn () => {\n\t\t\t\tfieldsetContextFunctions.removeField(initialFieldContext.id)\n\t\t\t}\n\t\t}\n\n\t\tformContextFunctions.registerField(initialFieldContext)\n\n\t\treturn () => {\n\t\t\tformContextFunctions.removeField(initialFieldContext.id)\n\t\t}\n\t}, [isInFieldset])\n\n\tconst fieldContext = (isInFieldset ? fieldsetContext.fieldList : formContext)?.find(\n\t\t({ id: fieldID }) => fieldID === fieldContextID,\n\t)\n\n\tconst validateField = (validValue: string) => {\n\t\tconst noValue = !validValue || validValue === ''\n\n\t\tif (!required && noValue) return true\n\n\t\tconst errorMessageList: string[] = []\n\n\t\tif (noValue) {\n\t\t\terrorMessageList.push('This field is required.')\n\t\t\tsetErrorMessage(errorMessageList.join(' '))\n\t\t\treturn false\n\t\t}\n\n\t\tif (props.maxLength && validValue.length > Number(props.maxLength))\n\t\t\terrorMessageList.push(`This may not have more than ${props.maxLength} characters.`)\n\n\t\tif (props.minLength && validValue.length < Number(props.minLength))\n\t\t\terrorMessageList.push(`This must have at least ${props.minLength} characters.`)\n\n\t\tif (errorMessageList.length === 0) return true\n\n\t\tsetErrorMessage(errorMessageList.join(' '))\n\t\treturn false\n\t}\n\n\tconst handleChange: ChangeEventHandler<HTMLTextAreaElement> = e => {\n\t\tif (disabled) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\tconst { currentTarget } = e\n\t\tconst { value: newValue } = currentTarget\n\n\t\tif (isInFieldset) {\n\t\t\tfieldsetContextFunctions.updateField(fieldContextID, {\n\t\t\t\tvalue: newValue,\n\t\t\t\tinvalid: validateField(newValue) === false,\n\t\t\t})\n\t\t} else {\n\t\t\tformContextFunctions.updateField(fieldContextID, {\n\t\t\t\tvalue: newValue,\n\t\t\t\tinvalid: validateField(newValue) === false,\n\t\t\t})\n\t\t}\n\n\t\tonChange?.(e)\n\t}\n\n\tconst handleBlur: FocusEventHandler<HTMLTextAreaElement> = e => {\n\t\tif (disabled) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\tconst { currentTarget } = e\n\t\tconst { value: newValue } = currentTarget\n\n\t\tif (required) validateField(newValue)\n\n\t\t// No special processing needed for textarea like email/phone formatting\n\t\tconst processedValue = newValue\n\n\t\tif (isInFieldset) {\n\t\t\tfieldsetContextFunctions.updateField(fieldContextID, { value: processedValue })\n\t\t} else {\n\t\t\tformContextFunctions.updateField(fieldContextID, { value: processedValue })\n\t\t}\n\n\t\tonBlur?.(e)\n\t}\n\n\tconst restFieldProps: Omit<FieldProps, 'className' | 'disabled'> = fieldProps\n\t\t? Object.fromEntries(Object.entries(fieldProps).filter(([key]) => key !== 'className'))\n\t\t: {}\n\n\tconst restLabelProps: Omit<LabelProps, 'className' | 'children'> = labelProps\n\t\t? Object.fromEntries(Object.entries(labelProps).filter(([key]) => key !== 'className'))\n\t\t: {}\n\n\tconst restDescriptionProps: Omit<DescriptionProps, 'className' | 'children'> = descriptionProps\n\t\t? Object.fromEntries(Object.entries(descriptionProps).filter(([key]) => key !== 'className'))\n\t\t: {}\n\n\treturn (\n\t\t<Field\n\t\t\t{...restFieldProps}\n\t\t\tclassName={bag =>\n\t\t\t\ttwMerge(\n\t\t\t\t\t'grid gap-1',\n\t\t\t\t\ttypeof fieldProps?.className === 'function' ? fieldProps?.className(bag) : fieldProps?.className,\n\t\t\t\t)\n\t\t\t}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<Label\n\t\t\t\t\t{...restLabelProps}\n\t\t\t\t\tclassName={bag =>\n\t\t\t\t\t\ttwMerge(\n\t\t\t\t\t\t\t'text-sm font-medium',\n\t\t\t\t\t\t\trequired ? 'after:text-ui-red after:content-[\"_*\"]' : '',\n\t\t\t\t\t\t\ttypeof labelProps?.className === 'function' ? labelProps?.className(bag) : labelProps?.className,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Label>\n\t\t\t)}\n\n\t\t\t<div className='z-10 -mb-1.5'>\n\t\t\t\t<HeadlessTextarea\n\t\t\t\t\t{...props}\n\t\t\t\t\tclassName={bag =>\n\t\t\t\t\t\ttwMerge(\n\t\t\t\t\t\t\t// Base styles\n\t\t\t\t\t\t\t'field-sizing-content w-full resize-none rounded-xl border-1 border-neutral-500/50 bg-neutral-100 py-1 pl-2 text-neutral-950 outline-offset-1 outline-ui-sky-blue/95 transition-[background-color] duration-300 ease-exponential dark:bg-neutral-700 dark:text-neutral-50',\n\t\t\t\t\t\t\t// Pseudo styles\n\t\t\t\t\t\t\t'focus-visible:bg-neutral-50 focus-visible:outline-3 active:bg-neutral-200 dark:focus-visible:bg-neutral-600 dark:active:bg-neutral-800 pointer-fine:hover:bg-neutral-50 pointer-fine:active:bg-neutral-200 dark:pointer-fine:hover:bg-neutral-600 dark:pointer-fine:active:bg-neutral-800',\n\t\t\t\t\t\t\t// user-invalid styles\n\t\t\t\t\t\t\t'user-invalid:border-ui-red user-invalid:bg-[color-mix(in_oklab,var(--color-ui-red)_20%,var(--color-neutral-100))] user-invalid:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-100))] user-invalid:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-100))] dark:user-invalid:bg-[color-mix(in_oklab,var(--color-ui-red)_20%,var(--color-neutral-800))] dark:user-invalid:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-800))] dark:user-invalid:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-800))] user-invalid:pointer-fine:hover:bg-[color-mix(in_oklab,var(--color-ui-red)_10%,var(--color-neutral-100))] user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-100))] user-invalid:pointer-fine:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-100))] dark:user-invalid:pointer-fine:hover:bg-[color-mix(in_oklab,var(--color-ui-red)_10%,var(--color-neutral-800))] dark:user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-800))] dark:user-invalid:pointer-fine:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-800))]',\n\t\t\t\t\t\t\t// Custom styles\n\t\t\t\t\t\t\ttypeof className === 'function' ? className(bag) : className,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tid={fieldContext?.id}\n\t\t\t\t\tinvalid={invalid}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tref={ref}\n\t\t\t\t\trequired={required}\n\t\t\t\t\tvalue={(fieldContext as StringField)?.value || ''}\n\t\t\t\t/>\n\n\t\t\t\t{(fieldContext as StringField)?.invalid && errorMessage && (\n\t\t\t\t\t<Tooltip anchor='top-end' arrow portal>\n\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\tas={Button}\n\t\t\t\t\t\t\tclassName='absolute top-1.25 right-1.25 z-10 size-6 min-w-0'\n\t\t\t\t\t\t\tpadding='none'\n\t\t\t\t\t\t\trounded='md'\n\t\t\t\t\t\t\ttheme='red'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ExclamationmarkOctagon className='absolute top-1/2 left-1/2 size-full -translate-x-1/2 -translate-y-1/2 scale-70' />\n\t\t\t\t\t\t</TooltipTrigger>\n\n\t\t\t\t\t\t<TooltipPanel>{errorMessage}</TooltipPanel>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{description && (\n\t\t\t\t<Description\n\t\t\t\t\t{...restDescriptionProps}\n\t\t\t\t\tclassName={bag =>\n\t\t\t\t\t\ttwMerge(\n\t\t\t\t\t\t\t'text-xs',\n\t\t\t\t\t\t\ttypeof descriptionProps?.className === 'function'\n\t\t\t\t\t\t\t\t? descriptionProps?.className(bag)\n\t\t\t\t\t\t\t\t: descriptionProps?.className,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{description}\n\t\t\t\t</Description>\n\t\t\t)}\n\t\t</Field>\n\t)\n}\n","// * Types\nimport { AnyElementProps } from '../../types'\n\nexport type FormSubmitArgs = {\n\tevent: FormEvent<HTMLFormElement>\n\tformContext: FormContext\n}\n\nexport type FormProps<T extends ElementType = 'form'> = Omit<\n\tAnyElementProps<\n\t\tT,\n\t\t{\n\t\t\tcontrolled?: 'auto' | 'manual' | 'none'\n\t\t\thandleSubmit?: FormEventHandler<HTMLFormElement>\n\t\t\tinitialStatus?: FormStatus\n\t\t\tonError?: (e: FormEvent<HTMLFormElement>, error: string) => void\n\t\t\tonSuccess?: (e: FormEvent<HTMLFormElement>) => void\n\t\t}\n\t>,\n\t'onSubmit'\n> & {\n\tonSubmit?: ({\n\t\tevent,\n\t\tformContext,\n\t}: FormSubmitArgs) =>\n\t\t| ({ error?: string; status?: 'error' } | { status?: 'success' })\n\t\t| Promise<{ error?: string; status?: 'error' } | { status?: 'success' }>\n}\n\n// * React\nimport { ElementType, FormEvent, FormEventHandler, Fragment, ReactElement, useCallback, useEffect } from 'react'\n\n// * Form Status\nimport {\n\tField,\n\tFormContext,\n\tFormContextProvider,\n\tFormStatus,\n\tFormStatusProvider,\n\tuseFormContext,\n\tuseFormStatus,\n} from '../../hooks'\n\n// * Utilities\nimport { twMerge } from '../../utils'\n\nfunction FormComponent<T extends ElementType = 'form'>({\n\tas,\n\tchildren,\n\tclassName,\n\thandleSubmit,\n\tonError,\n\tonSubmit,\n\tonSuccess,\n\t...props\n}: Omit<FormProps<T>, 'controlled' | 'initialStatus'>): ReactElement {\n\tconst [formContext] = useFormContext(),\n\t\t[formStatus, setFormStatus] = useFormStatus()\n\n\tconst checkField = useCallback((field: Field): boolean => {\n\t\tif (field.type !== 'array' && field.type !== 'object' && !field.invalid) return true\n\n\t\tif (field.type === 'object') return field.fields.every(objectField => checkField(objectField))\n\n\t\treturn false\n\t}, [])\n\n\tconst everyFieldIsValid = useCallback(() => {\n\t\tif (!formContext) return false\n\n\t\treturn formContext.every(field => checkField(field))\n\t}, [formContext, checkField])\n\n\tuseEffect(() => {\n\t\tif (!formContext) return\n\n\t\tif (\n\t\t\tformStatus !== 'incomplete' &&\n\t\t\tformContext.find(context => context.type !== 'array' && context.type !== 'object' && context.invalid)\n\t\t)\n\t\t\tsetFormStatus?.('incomplete')\n\n\t\tif (formStatus !== 'ready' && everyFieldIsValid()) setFormStatus?.('ready')\n\t}, [formContext, everyFieldIsValid])\n\n\tconst processSubmit: FormEventHandler<HTMLFormElement> =\n\t\thandleSubmit ||\n\t\t(async e => {\n\t\t\te.preventDefault()\n\t\t\te.stopPropagation()\n\n\t\t\tsetFormStatus?.('loading')\n\n\t\t\tconst response = await onSubmit?.({ event: e, formContext })\n\n\t\t\tif (response && ('error' in response || response.status === 'error')) {\n\t\t\t\tsetFormStatus?.('error')\n\t\t\t\tonError?.({ event: e, error: response.error || 'An error occurred when submitting the form.', formContext })\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif ((response && response.status === 'success') || !response) {\n\t\t\t\tsetFormStatus?.('success')\n\t\t\t\tonSuccess?.({ event: e, formContext })\n\t\t\t}\n\t\t})\n\n\tconst FormElement = (as as ElementType) || 'form'\n\n\treturn (\n\t\t<FormElement {...props} className={twMerge(className, 'grid gap-3')} onSubmit={processSubmit}>\n\t\t\t{children}\n\t\t</FormElement>\n\t)\n}\n\nexport function Form<T extends ElementType = 'form'>({\n\tcontrolled = 'auto',\n\tinitialStatus = 'incomplete',\n\t...props\n}: FormProps<T>) {\n\tconst FormContextOrNotProvider = controlled === 'auto' ? FormContextProvider : Fragment\n\n\treturn (\n\t\t<FormStatusProvider initialStatus={initialStatus}>\n\t\t\t<FormContextOrNotProvider>\n\t\t\t\t<FormComponent {...props} />\n\t\t\t</FormContextOrNotProvider>\n\t\t</FormStatusProvider>\n\t)\n}\n\nexport * from './fieldset'\nexport * from './input'\nexport * from './submit-button'\nexport * from './textarea'\n","// * Types\nimport { HTMLAttributes, ReactElement } from 'react'\n\nexport type GhostProps = HTMLAttributes<HTMLDivElement>\n\n// * Utilities\nimport { twMerge } from '../utils'\n\nexport function Ghost({ children, className, ...props }: GhostProps): ReactElement {\n\treturn (\n\t\t<div {...props} className={twMerge('block w-24 max-w-full animate-pulse rounded bg-white/50', className)}>\n\t\t\t{children || <> </>}\n\t\t</div>\n\t)\n}\n","// * Types\nexport type HeadingProps = HTMLAttributes<HTMLHeadingElement> & {\n\tas?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n\tcustomize?: Partial<{\n\t\th1: string\n\t\th2: string\n\t\th3: string\n\t\th4: string\n\t\th5: string\n\t\th6: string\n\t}>\n\tref?: RefObject<HTMLHeadingElement | null>\n}\n\n// * React\nimport { Children, HTMLAttributes, ReactElement, ReactNode, RefObject, isValidElement } from 'react'\n\n// * Utilities\nimport { twMerge } from '../utils'\n\nfunction getTextFromChildren(children: ReactNode) {\n\tlet text = ''\n\n\tChildren.forEach(children, child => {\n\t\tif (typeof child === 'string' || typeof child === 'number') {\n\t\t\ttext += child\n\t\t} else if (isValidElement(child)) {\n\t\t\ttext += getTextFromChildren((child.props as { [key: string]: any }).children)\n\t\t}\n\t})\n\n\treturn text\n}\n\n/**\n * # Heading\n * A heading component that renders HTML heading elements (h1-h6) with appropriate styling.\n * Automatically generates an ID for the heading based on its content if none is provided.\n */\nexport function Heading({ as = 'h2', children, customize, className, id, ref, ...props }: HeadingProps): ReactElement {\n\tconst H = as\n\n\tconst targetableID = id || getTextFromChildren(children).replace(/\\s+/g, '-').toLowerCase()\n\n\tconst getBaseClasses = () => {\n\t\tswitch (as) {\n\t\t\tcase 'h1':\n\t\t\t\treturn twMerge('pb-2.5 text-6xl font-black last:pb-0', customize?.h1)\n\t\t\tcase 'h3':\n\t\t\t\treturn twMerge('pb-2 text-4xl font-extralight last:pb-0', customize?.h3)\n\t\t\tcase 'h4':\n\t\t\t\treturn twMerge('pb-2 text-3xl font-extrabold last:pb-0', customize?.h4)\n\t\t\tcase 'h5':\n\t\t\t\treturn twMerge('pb-1.5 text-2xl font-semibold last:pb-0', customize?.h5)\n\t\t\tcase 'h6':\n\t\t\t\treturn twMerge('pb-1 text-xl font-bold last:pb-0', customize?.h6)\n\t\t\tdefault:\n\t\t\t\treturn twMerge('pb-2.5 text-5xl font-medium last:pb-0', customize?.h2)\n\t\t}\n\t}\n\n\tconst baseClasses = getBaseClasses()\n\n\treturn (\n\t\t<H ref={ref} id={targetableID} {...props} className={twMerge(baseClasses, className)}>\n\t\t\t{children}\n\t\t</H>\n\t)\n}\n","// * Types\nimport { ComponentPropsWithRef, ReactElement } from 'react'\n\nexport type IFrameAllowAttribute =\n\t| 'accelerometer'\n\t| 'ambient-light-sensor'\n\t| 'attribution-reporting'\n\t| 'autoplay'\n\t| 'bluetooth'\n\t| 'camera'\n\t| 'captured-surface-control'\n\t| 'compute-pressure'\n\t| 'cross-origin-isolated'\n\t| 'deferred-fetch'\n\t| 'deferred-fetch-minimal'\n\t| 'display-capture'\n\t| 'encrypted-media'\n\t| 'fullscreen'\n\t| 'gamepad'\n\t| 'geolocation'\n\t| 'gyroscope'\n\t| 'hid'\n\t| 'identity-credentials-get'\n\t| 'idle-detection'\n\t| 'language-detector'\n\t| 'local-fonts'\n\t| 'magnetometer'\n\t| 'microphone'\n\t| 'midi'\n\t| 'otp-credentials'\n\t| 'payment'\n\t| 'picture-in-picture'\n\t| 'publickey-credentials-get'\n\t| 'screen-wake-lock'\n\t| 'serial'\n\t| 'speaker-selection'\n\t| 'storage-access'\n\t| 'translator'\n\t| 'summarizer'\n\t| 'usb'\n\t| 'web-share'\n\t| 'window-management'\n\t| 'xr-spatial-tracking'\n\nexport type IFrameReferrerPolicyAttribute =\n\t| 'no-referrer'\n\t| 'no-referrer-when-downgrade'\n\t| 'origin'\n\t| 'origin-when-cross-origin'\n\t| 'same-origin'\n\t| 'strict-origin'\n\t| 'strict-origin-when-cross-origin'\n\t| 'unsafe-url'\n\nexport type IFrameSandboxAttribute =\n\t| 'allow-downloads'\n\t| 'allow-forms'\n\t| 'allow-modals'\n\t| 'allow-orientation-lock'\n\t| 'allow-pointer-lock'\n\t| 'allow-popups'\n\t| 'allow-popups-to-escape-sandbox'\n\t| 'allow-presentation'\n\t| 'allow-same-origin'\n\t| 'allow-scripts'\n\t| 'allow-storage-access-by-user-activation'\n\t| 'allow-top-navigation'\n\t| 'allow-top-navigation-by-user-activation'\n\t| 'allow-top-navigation-to-custom-protocols'\n\nexport type IFrameProps = Omit<\n\tComponentPropsWithRef<'iframe'>,\n\t'allow' | 'children' | 'referrerPolicy' | 'sandbox' | 'title'\n> & {\n\tallow?: (IFrameAllowAttribute | Record<IFrameAllowAttribute, string[] | boolean>)[] | 'allow-all'\n\treferrerPolicy?: IFrameReferrerPolicyAttribute\n\tsandbox?: IFrameSandboxAttribute[]\n\ttitle: string\n}\n\n// * Utilities\nimport { twMerge } from '../utils'\n\nconst allAllowProperties: IFrameAllowAttribute[] = [\n\t'accelerometer',\n\t'ambient-light-sensor',\n\t'attribution-reporting',\n\t'autoplay',\n\t'bluetooth',\n\t'camera',\n\t'captured-surface-control',\n\t'compute-pressure',\n\t'cross-origin-isolated',\n\t'deferred-fetch',\n\t'deferred-fetch-minimal',\n\t'display-capture',\n\t'encrypted-media',\n\t'fullscreen',\n\t'gamepad',\n\t'geolocation',\n\t'gyroscope',\n\t'hid',\n\t'identity-credentials-get',\n\t'idle-detection',\n\t'language-detector',\n\t'local-fonts',\n\t'magnetometer',\n\t'microphone',\n\t'midi',\n\t'otp-credentials',\n\t'payment',\n\t'picture-in-picture',\n\t'publickey-credentials-get',\n\t'screen-wake-lock',\n\t'serial',\n\t'speaker-selection',\n\t'storage-access',\n\t'summarizer',\n\t'translator',\n\t'usb',\n\t'web-share',\n\t'window-management',\n\t'xr-spatial-tracking',\n]\n\n/**\n * # iFrame\n * - An `<iframe/>` with preset classes, backup, and required title for SEO.\n */\nexport function IFrame({\n\tallow,\n\tclassName,\n\treferrerPolicy = 'no-referrer-when-downgrade',\n\tsandbox,\n\t...props\n}: IFrameProps): ReactElement {\n\tconst allowAttribute = (\n\t\tallow === 'allow-all'\n\t\t\t? allAllowProperties.map(property => `${property} *`)\n\t\t\t: allow?.map(property => {\n\t\t\t\t\tif (typeof property === 'string') return `${property} *`\n\n\t\t\t\t\tconst propertyDefinition: string[] = []\n\n\t\t\t\t\tObject.entries(property).forEach(([key, value]) => {\n\t\t\t\t\t\tpropertyDefinition.push(key)\n\n\t\t\t\t\t\tif (value === true) propertyDefinition.push('*')\n\t\t\t\t\t\tif (value === false) propertyDefinition.push(`'none'`)\n\t\t\t\t\t\tif (Array.isArray(value)) value.forEach(origin => propertyDefinition.push(origin))\n\t\t\t\t\t})\n\n\t\t\t\t\treturn propertyDefinition.join(' ')\n\t\t\t\t}) || []\n\t).join('; ')\n\n\treturn (\n\t\t<iframe\n\t\t\t{...props}\n\t\t\tallow={allowAttribute}\n\t\t\tallowFullScreen={allowAttribute?.includes('fullscreen')}\n\t\t\tclassName={twMerge('aspect-video w-full bg-linear-60 from-neutral-700 via-neutral-500 to-neutral-600', className)}\n\t\t\treferrerPolicy={referrerPolicy}\n\t\t\tsandbox={sandbox?.join(' ')}\n\t\t/>\n\t)\n}\n","// * Types\nimport { AnyElementProps } from '../types'\n\nexport type ModalProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {\n\tchildren: ReactNode | (({ openModal, closeModal }: { openModal: () => void; closeModal: () => void }) => ReactNode)\n\tdragToClose?: boolean\n\tonClose?: () => void\n\tonOpen?: () => void\n\tplace?: 'center' | 'bottom'\n}\n\n// * React\nimport {\n\tcloneElement,\n\tElementType,\n\tHTMLAttributes,\n\tMouseEventHandler,\n\tReactElement,\n\tReactNode,\n\tTouchEventHandler,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react'\nimport { createPortal } from 'react-dom'\n\n// * Components\nimport {\n\tButton as HeadlessButton,\n\tDialog,\n\tDialogPanel,\n\tDialogTitle,\n\tDialogBackdrop,\n\tDialogTitleProps,\n} from '@headlessui/react'\nimport { Button } from './button'\nimport { Xmark } from '../icons'\n\n// * Utilities\nimport { easeOutExpo, findComponentByType, twMerge } from '../utils'\n\nexport function ModalTrigger<T extends ElementType = typeof HeadlessButton>({\n\tas,\n\t...props\n}: AnyElementProps<T>): ReactElement {\n\tconst Element = as || HeadlessButton\n\n\treturn <Element {...props} />\n}\n\nexport function ModalTitle(props: DialogTitleProps): ReactElement {\n\treturn <DialogTitle {...props} />\n}\n\nexport function ModalDialog(props: HTMLAttributes<HTMLDivElement>): ReactElement {\n\treturn <div {...props} />\n}\n\nexport function ModalClose<T extends ElementType = typeof HeadlessButton>({\n\tas,\n\t...props\n}: AnyElementProps<T>): ReactElement {\n\tconst Element = as || HeadlessButton\n\n\treturn <Element {...props} />\n}\n\nexport function Modal({ children, className, onClose, onOpen, place = 'bottom' }: ModalProps): ReactElement {\n\tconst [bodyElement, setBodyElement] = useState<HTMLBodyElement | null>(null)\n\n\tuseEffect(() => {\n\t\tif (!bodyElement && typeof window !== 'undefined') setBodyElement(document.body as HTMLBodyElement)\n\t}, [bodyElement])\n\n\tconst [isOpen, setIsOpen] = useState(false)\n\n\tconst dialogPanelRef = useRef<HTMLElement>(null),\n\t\tdragMoveBoxRef = useRef<HTMLDivElement>(null),\n\t\t// lastTouchYRef = useRef(0),\n\t\tstartDragCoords = useRef({ x: 0, y: 0 })\n\n\tconst [allowDragClose, setAllowDragClose] = useState(false),\n\t\t[readyToClose, setReadyToClose] = useState(false)\n\n\tconst openModal = () => {\n\t\tif (isOpen) return\n\t\tsetIsOpen(true)\n\t\tonOpen?.()\n\t}\n\n\tconst closeModal = () => {\n\t\tif (!isOpen) return\n\t\tsetIsOpen(false)\n\t\tonClose?.()\n\t}\n\n\tconst enableClose = (clientX: number, clientY: number) => {\n\t\tstartDragCoords.current.x = clientX\n\t\tstartDragCoords.current.y = clientY\n\t\tdialogPanelRef.current!.style.transitionDuration = '0s'\n\n\t\tsetAllowDragClose(true)\n\t}\n\n\tconst enableTouchClose: TouchEventHandler<HTMLButtonElement> = e => {\n\t\tconst { touches } = e,\n\t\t\ttouch = touches[0],\n\t\t\t{ clientY } = touch\n\n\t\tenableClose(0, clientY)\n\t}\n\n\tconst enableMouseClose: MouseEventHandler<HTMLButtonElement> = e => {\n\t\tconst { clientX, clientY } = e\n\n\t\tenableClose(clientX, clientY)\n\t}\n\n\tconst handleMove = (clientX: number, clientY: number) => {\n\t\tif (!dialogPanelRef.current) return\n\n\t\tlet deltaX = clientX - startDragCoords.current.x,\n\t\t\tdeltaY = clientY - startDragCoords.current.y\n\n\t\tif (deltaX > 0) deltaX = easeOutExpo(Math.abs(deltaX), 0, 25, 5000)\n\t\tif (deltaX < 0) deltaX = -easeOutExpo(Math.abs(deltaX), 0, 25, 5000)\n\t\tif (deltaY < 0) deltaY = -easeOutExpo(Math.abs(deltaY), 0, 25, 2000)\n\n\t\tif (deltaY >= 100 && !readyToClose) {\n\t\t\tsetReadyToClose(true)\n\t\t} else if (deltaY < 100 && readyToClose) {\n\t\t\tsetReadyToClose(false)\n\t\t}\n\n\t\tconst greaterThanMediaSmall = innerWidth > 640\n\n\t\tdialogPanelRef.current.style.translate = `calc(-50% + ${deltaX}px) ${greaterThanMediaSmall ? `calc(-50% + ${deltaY}px)` : `${deltaY}px`}`\n\t}\n\n\tconst handleMouseMove: MouseEventHandler<HTMLDivElement> = e => {\n\t\tif (!allowDragClose) return\n\n\t\tconst { clientX, clientY } = e\n\n\t\thandleMove(clientX, clientY)\n\t}\n\n\tconst disableDragClose = (clientY: number) => {\n\t\tconst deltaY = clientY - startDragCoords.current.y\n\n\t\tdialogPanelRef.current!.style.transitionDuration = ''\n\n\t\tif (deltaY >= 100) {\n\t\t\tcloseModal()\n\t\t\tsetReadyToClose(false)\n\t\t} else {\n\t\t\tsetTimeout(() => (dialogPanelRef.current!.style.removeProperty('translate'), 50))\n\t\t}\n\t}\n\n\tconst disableMouseDragClose: MouseEventHandler<HTMLDivElement> = e => {\n\t\tif (allowDragClose) setAllowDragClose(false)\n\n\t\tconst { clientY } = e\n\n\t\tdisableDragClose(clientY)\n\t}\n\n\tconst content = typeof children === 'function' ? children({ openModal, closeModal }) : children\n\n\tconst dialogElement = findComponentByType(content, ModalDialog)\n\n\tif (!dialogElement) throw new Error('ModalDialog must be defined in Modal children')\n\n\tlet triggerElement: ReactElement | null = null\n\n\tif (typeof children !== 'function') {\n\t\ttriggerElement = findComponentByType(content, ModalTrigger)\n\n\t\tif (!triggerElement) throw new Error('ModalTrigger must be provided when not using render prop pattern')\n\t} else {\n\t\ttriggerElement = findComponentByType(content, ModalTrigger)\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{allowDragClose &&\n\t\t\t\tbodyElement &&\n\t\t\t\tcreatePortal(\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={dragMoveBoxRef}\n\t\t\t\t\t\tclassName='fixed inset-0 z-99 h-dvh w-screen bg-transparent active:cursor-grabbing pointer-coarse:hidden'\n\t\t\t\t\t\tonMouseMove={handleMouseMove}\n\t\t\t\t\t\tonMouseUp={disableMouseDragClose}\n\t\t\t\t\t></div>,\n\t\t\t\t\tbodyElement,\n\t\t\t\t)}\n\n\t\t\t{triggerElement &&\n\t\t\t\tcloneElement(triggerElement as ReactElement<HTMLAttributes<HTMLButtonElement>>, { onClick: openModal })}\n\n\t\t\t<Dialog\n\t\t\t\topen={isOpen}\n\t\t\t\tonClose={closeModal}\n\t\t\t\tclassName={[\n\t\t\t\t\t'isolate z-50',\n\t\t\t\t\tplace === 'bottom' &&\n\t\t\t\t\t\t'after:fixed after:inset-x-0 after:bottom-0 after:-z-10 after:h-16 after:bg-neutral-50 sm:after:hidden',\n\t\t\t\t].join(' ')}\n\t\t\t>\n\t\t\t\t<DialogBackdrop\n\t\t\t\t\ttransition\n\t\t\t\t\tclassName={[\n\t\t\t\t\t\t'fixed inset-0 cursor-pointer transition-[opacity_background-color_backdrop-filter_-webkit-backdrop-filter] delay-100 duration-750 ease-exponential data-closed:opacity-0',\n\t\t\t\t\t\treadyToClose\n\t\t\t\t\t\t\t? 'bg-neutral-50/5 backdrop-blur-[1px] dark:bg-neutral-950/5'\n\t\t\t\t\t\t\t: 'bg-neutral-50/25 backdrop-blur-sm dark:bg-neutral-950/25',\n\t\t\t\t\t].join(' ')}\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttheme='blue'\n\t\t\t\t\t\tpadding='none'\n\t\t\t\t\t\trounded='full'\n\t\t\t\t\t\tclassName='group/button fixed top-4 right-4 h-7 w-7 overflow-x-hidden transition-[scale_width_filter] pointer-fine:hover:w-20'\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className='absolute top-1 right-1 flex items-center gap-1 pt-px transition-transform duration-300 ease-exponential pointer-fine:group-hover/button:-translate-x-0.5'>\n\t\t\t\t\t\t\t<span className='block text-xs leading-none font-medium text-neutral-50 uppercase'>\n\t\t\t\t\t\t\t\tClose<span className='sr-only'> Modal</span>\n\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t<Xmark className='-top-px block size-5 scale-75 rotate-90 fill-white stroke-white stroke-1 transition-transform duration-300 ease-in-out group-hover/button:rotate-0' />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Button>\n\t\t\t\t</DialogBackdrop>\n\n\t\t\t\t<DialogPanel\n\t\t\t\t\tref={dialogPanelRef}\n\t\t\t\t\ttransition\n\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t'fixed left-1/2 -translate-x-1/2 overflow-y-scroll bg-neutral-50 p-4 shadow-[0_-15px_50px_-12px] shadow-neutral-950/25 transition-[transform_translate_opacity] duration-750 ease-exponential data-closed:scale-50 data-closed:opacity-0 sm:w-[calc(100vw-2rem)] sm:max-w-fit sm:p-6 sm:shadow-2xl lg:p-8 dark:bg-neutral-900',\n\t\t\t\t\t\tplace === 'center'\n\t\t\t\t\t\t\t? 'top-1/2 -translate-y-1/2 rounded-2xl data-enter:translate-y-[calc(-50%+12rem)] data-leave:translate-y-[calc(-50%-8rem)]'\n\t\t\t\t\t\t\t: 'bottom-0 h-fit max-h-[calc(100dvh-4rem)] translate-y-0 rounded-t-4xl data-enter:translate-y-full data-leave:translate-y-full sm:top-1/2 sm:bottom-auto sm:rounded-t-2xl sm:rounded-b-2xl sm:data-enter:translate-y-[calc(-50%+12rem)] sm:data-leave:translate-y-[calc(-50%-8rem)] sm:data-open:-translate-y-1/2 pointer-fine:top-1/2 pointer-fine:bottom-auto pointer-fine:-translate-y-1/2 pointer-fine:rounded-2xl',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\t// onTouchStart={dragToClose ? handleTouchStart : undefined}\n\t\t\t\t\t// onTouchMove={handleTouchMove}\n\t\t\t\t\t// onTouchEnd={disableTouchDragClose}\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\tonTouchStart={enableTouchClose}\n\t\t\t\t\t\tonMouseDown={enableMouseClose}\n\t\t\t\t\t\tclassName={[\n\t\t\t\t\t\t\t'absolute inset-x-0 top-0 z-10 flex h-6 cursor-grab items-center justify-center after:h-1 after:w-8 after:rounded-full after:transition-[transform_background-color] after:duration-500 after:ease-exponential active:cursor-grabbing',\n\t\t\t\t\t\t\treadyToClose\n\t\t\t\t\t\t\t\t? 'after:scale-x-200 after:scale-y-200 after:bg-ui-blue'\n\t\t\t\t\t\t\t\t: 'after:bg-ui-grey/50 active:after:scale-x-150 active:after:scale-y-125 active:after:bg-ui-grey pointer-fine:hover:after:scale-x-125 pointer-fine:hover:after:bg-neutral-500/75 pointer-fine:active:after:scale-x-150 pointer-fine:active:after:bg-ui-grey',\n\t\t\t\t\t\t].join(' ')}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className='sr-only'>Drag down to close</span>\n\t\t\t\t\t</button>\n\n\t\t\t\t\t{dialogElement}\n\t\t\t\t</DialogPanel>\n\t\t\t</Dialog>\n\t\t</>\n\t)\n}\n","// * Types\ntype TimeProps = HTMLAttributes<HTMLTimeElement> &\n\tPartial<{\n\t\tdateObject: Date\n\t\tdateTime: string\n\t\tday: boolean\n\t\thours: boolean\n\t\tmilliseconds: boolean\n\t\tminutes: boolean\n\t\tmonth: boolean\n\t\tseconds: boolean\n\t\tyear: boolean\n\t}> & { ref?: RefObject<HTMLTimeElement | null> }\n\n// * React\nimport { HTMLAttributes, ReactElement, RefObject, useEffect, useState } from 'react'\n\n// * Utilities\nimport { getDate, getHours, getMilliseconds, getMinutes, getMonth, getMonthName, getSeconds } from '../utils'\n\nexport function Time({\n\tchildren,\n\tdateObject,\n\tdateTime,\n\tday,\n\thours,\n\tmilliseconds,\n\tminutes,\n\tmonth,\n\tseconds,\n\tyear,\n\tref,\n\t...props\n}: TimeProps): ReactElement {\n\tconst [date, setDate] = useState<Date | undefined>(dateObject || undefined)\n\n\tconst getDateAndTime = () => {\n\t\tif (dateTime) return dateTime\n\n\t\tif (!date) return ''\n\n\t\tconst currentYear = date.getFullYear(),\n\t\t\tcurrentMonth = getMonth(date),\n\t\t\tcurrentDay = getDate(date),\n\t\t\tcurrentHour = getHours(date),\n\t\t\tcurrentMinute = getMinutes(date),\n\t\t\tcurrentSecond = getSeconds(date),\n\t\t\tcurrentMillisecond = getMilliseconds(date)\n\n\t\treturn [currentYear, currentMonth, currentDay, currentHour, currentMinute, currentSecond, currentMillisecond].join(\n\t\t\t'-',\n\t\t)\n\t}\n\n\tconst dateAndTime = getDateAndTime()\n\n\tconst getDateDisplay = () => {\n\t\tif (children) return children\n\t\tif (dateAndTime === '') return ''\n\n\t\tconst [dtYear, dtMonth, dtDay, dtHour, dtMinute, dtSecond, dtMillisecond] = dateAndTime.split('-').map(Number)\n\n\t\treturn [\n\t\t\tday && dtDay,\n\t\t\tmonth && [getMonthName(Number(dtMonth) - 1), month && year && ','].filter(Boolean).join(''),\n\t\t\tyear && dtYear,\n\t\t\thours &&\n\t\t\t\tminutes &&\n\t\t\t\t[\n\t\t\t\t\t'at',\n\t\t\t\t\thours && dtHour,\n\t\t\t\t\thours && minutes && ':',\n\t\t\t\t\tminutes && dtMinute,\n\t\t\t\t\tminutes && seconds && ':',\n\t\t\t\t\tseconds && dtSecond,\n\t\t\t\t\tseconds && milliseconds && '.',\n\t\t\t\t\tmilliseconds && dtMillisecond,\n\t\t\t\t]\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.join(''),\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ')\n\t}\n\n\tconst dateDisplay = getDateDisplay()\n\n\tuseEffect(() => {\n\t\tif (\n\t\t\tdate === undefined &&\n\t\t\tdateObject === undefined &&\n\t\t\tdateTime === undefined &&\n\t\t\ttypeof window !== 'undefined' &&\n\t\t\t(dateAndTime === '' || dateDisplay === '')\n\t\t)\n\t\t\tsetDate(new Date())\n\t}, [date, setDate, dateAndTime, dateDisplay, dateObject, dateTime])\n\n\treturn (\n\t\t<time dateTime={dateAndTime} ref={ref} {...props}>\n\t\t\t{dateDisplay}\n\t\t</time>\n\t)\n}\n","// * Types\nimport { OneOf } from '../types'\n\nexport type VideoControl =\n\t| 'download'\n\t| 'fullscreen'\n\t| 'playbackrate'\n\t| 'pause'\n\t| 'remoteplayback'\n\t| 'seeking'\n\t| 'volume'\n\ntype Source = {\n\tsrc: string\n\ttype: 'video/avi' | 'video/flv' | 'video/mkv' | 'video/mov' | 'video/mp4' | 'video/ogg' | 'video/webm'\n}\n\ntype SourceOrSourceGroup = OneOf<\n\t[\n\t\tSource,\n\t\t{\n\t\t\tsrcGroup: Source[]\n\t\t},\n\t]\n>\n\nexport type VideoProps = Omit<\n\tComponentPropsWithRef<'video'>,\n\t'controls' | 'controlList' | 'poster' | 'src' | 'title'\n> & {\n\tcontrols?: boolean | VideoControl | VideoControl[]\n\tposter?: {\n\t\tprimary?: boolean\n\t\tsrc: string\n\t\ttype: 'image/apng' | 'image/avif' | 'image/gif' | 'image/jpeg' | 'image/png' | 'image/svg+xml' | 'image/webp'\n\t\twidth: number\n\t}[]\n\t/** @deprecated Even if you only have on source file, please use srcSet. */\n\tsrc?: never\n\tsrcSet: (SourceOrSourceGroup & {\n\t\twidth: number\n\t})[]\n\ttitle: string\n}\n\n// * React\nimport {\n\tComponentPropsWithRef,\n\tMouseEvent,\n\tMouseEventHandler,\n\tReactElement,\n\tReactEventHandler,\n\tTouchEvent,\n\tuseCallback,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n} from 'react'\n\n// * Hooks\nimport { Coords, usePointerMovement } from '../hooks'\n\n// * Components\nimport { DropDown, DropDownButton, DropDownItem, DropDownItems, DropDownSeparator } from './drop-down'\nimport {\n\tArrowDownBackwardAndArrowUpForwardRectangle,\n\tArrowUpForwardAndArrowDownBackwardRectangle,\n\tFifteenArrowTriangleheadClockwise,\n\tFifteenArrowTriangleheadCounterclockwise,\n\tFiveArrowTriangleheadClockwise,\n\tFiveArrowTriangleheadCounterclockwise,\n\tGearshapeFill,\n\tNinetyArrowTriangleheadClockwise,\n\tNinetyArrowTriangleheadCounterclockwise,\n\tPauseFill,\n\tPhotoBadgeArrowDownFill,\n\tPlayFill,\n\tRectangleFillOnArrowDownForwardTopleadingRectangle,\n\tRectangleTriangleUp,\n\tSixtyArrowTriangleheadClockwise,\n\tSixtyArrowTriangleheadCounterclockwise,\n\tSpeakerMinusFill,\n\tSpeakerPlusFill,\n\t// SpeakerSlashFill,\n\t// SpeakerWave3Fill,\n\tThirtyArrowTriangleheadClockwise,\n\tThirtyArrowTriangleheadCounterclockwise,\n\tTenArrowTriangleheadClockwise,\n\tTenArrowTriangleheadCounterclockwise,\n} from '../icons'\n\n// * Utilities\nimport { twMerge } from '../utils'\n\nconst MAX_PROGRESS = 100\n\ntype FunctionKey = ' ' | 'ArrowRight' | 'ArrowLeft' | 'ArrowUp' | 'ArrowDown' | 'Alt' | 'f' | 'Escape'\n\ntype ModifierKey = 'meta' | 'ctrl' | 'alt' | 'shift'\n\nexport function Video({\n\tautoPlay,\n\tclassName,\n\tcontrols = true,\n\tposter,\n\tref,\n\tsrcSet,\n\ttitle,\n\t...props\n}: VideoProps): ReactElement {\n\t// * General/Core\n\tconst uniqueID = useId(),\n\t\tfigureRef = useRef<HTMLElement>(null),\n\t\tvideoPlayerRef = useRef<HTMLVideoElement>(null),\n\t\tsortedSrcSet = srcSet.sort((a, b) => a.width - b.width)\n\n\tconst primaryPoster = poster ? poster.find(({ primary }) => primary)?.src || poster[0].src : ''\n\n\tconst preventDefaultEvent: ReactEventHandler = e => e.preventDefault()\n\n\t// * Play/Pause Controls\n\tconst [isPlaying, setIsPlaying] = useState(autoPlay)\n\n\tconst togglePlay = useCallback(() => {\n\t\tsetIsPlaying(previous => {\n\t\t\tif (!previous) videoPlayerRef.current?.play()\n\t\t\tif (previous) videoPlayerRef.current?.pause()\n\n\t\t\treturn !previous\n\t\t})\n\n\t\thandleMouseMoveControls()\n\t}, [])\n\n\t// * Fullscreen Controls\n\tconst isFullscreenRef = useRef(false),\n\t\t[isFullscreen, setIsFullscreen] = useState(false)\n\n\tconst updateFullscreenState = useCallback(() => {\n\t\tif (Boolean(document.fullscreenElement) !== isFullscreenRef.current) {\n\t\t\tsetIsFullscreen(Boolean(document.fullscreenElement))\n\t\t\tisFullscreenRef.current = Boolean(document.fullscreenElement)\n\t\t}\n\t}, [])\n\n\tconst toggleFullscreen = () => {\n\t\tif (document.fullscreenElement) {\n\t\t\tdocument.exitFullscreen()\n\t\t\treturn\n\t\t}\n\n\t\tfigureRef.current?.requestFullscreen()\n\t}\n\n\tconst requestFullscreen = useCallback(() => {\n\t\tif (document.fullscreenElement) return\n\n\t\tfigureRef.current?.requestFullscreen()\n\t}, [])\n\n\tconst enterPictureInPicture = () => videoPlayerRef.current?.requestPictureInPicture()\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return\n\n\t\tdocument.addEventListener('fullscreenchange', updateFullscreenState)\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('fullscreenchange', updateFullscreenState)\n\t\t}\n\t}, [])\n\n\t// * Progress/Seeking Controls\n\tconst [progress, setProgress] = useState(0),\n\t\ttrackProgressStartTimeRef = useRef(0),\n\t\t[seekIndicator, setSeekIndicator] = useState({ isInPlayedArea: false, position: 0 }),\n\t\tseekIndicatorMouseDownPositionRef = useRef(0),\n\t\tscrubberRef = useRef<HTMLDivElement>(null),\n\t\t[timeRemaining, setTimeRemaining] = useState(0)\n\n\tconst handleTimeUpdate = () => {\n\t\tconst videoPlayer = videoPlayerRef.current\n\n\t\tif (!videoPlayer) return\n\n\t\tconst { currentTime, duration } = videoPlayer\n\n\t\tconst newProgress = (currentTime / duration) * 100\n\t\tsetProgress(prev => (Math.abs(prev - newProgress) > 0.1 ? newProgress : prev))\n\t\tsetTimeRemaining(duration - currentTime)\n\t}\n\n\tconst handleProgressSlider = ({ x }: Coords) => {\n\t\tconst videoPlayer = videoPlayerRef.current,\n\t\t\tscrubber = scrubberRef.current\n\n\t\tif (!videoPlayer || !scrubber) return\n\n\t\tconst { duration } = videoPlayer,\n\t\t\t{ width } = scrubber.getBoundingClientRect()\n\n\t\tvideoPlayer.fastSeek(\n\t\t\tMath.max(Math.min(trackProgressStartTimeRef.current + x / (width / duration), duration - 1), 0),\n\t\t)\n\t}\n\n\tconst { trackPointerMovement: trackProgress } = usePointerMovement({ onChange: handleProgressSlider })\n\n\tconst initiateTrackProgress = (e: MouseEvent<HTMLDivElement> | TouchEvent<HTMLDivElement>) => {\n\t\tconst videoPlayer = videoPlayerRef.current\n\n\t\tif (!videoPlayer) return\n\n\t\ttrackProgress(e)\n\n\t\ttrackProgressStartTimeRef.current = videoPlayer.currentTime\n\t}\n\n\tconst handleSeekIndicatorMovement: MouseEventHandler<HTMLDivElement> = e => {\n\t\tconst videoPlayer = videoPlayerRef.current\n\n\t\tif (!videoPlayer) return\n\n\t\tconst { currentTime, duration } = videoPlayer\n\n\t\tconst { clientX, currentTarget } = e,\n\t\t\t{ width, x } = currentTarget.getBoundingClientRect()\n\n\t\tconst position = clientX - x\n\n\t\tconst isInPlayedArea = position <= width / (duration / currentTime)\n\n\t\tsetSeekIndicator({ isInPlayedArea, position })\n\t}\n\n\tconst initializeSeeking = () => (seekIndicatorMouseDownPositionRef.current = seekIndicator.position)\n\n\tconst handleSeekRelease: MouseEventHandler<HTMLDivElement> = e => {\n\t\tconst videoPlayer = videoPlayerRef.current\n\n\t\tif (!videoPlayer) return\n\n\t\tconst { duration } = videoPlayer,\n\t\t\t{ currentTarget } = e,\n\t\t\t{ width } = currentTarget.getBoundingClientRect()\n\n\t\tif (seekIndicatorMouseDownPositionRef.current === seekIndicator.position)\n\t\t\tvideoPlayer.fastSeek(Math.min(duration / (width / seekIndicatorMouseDownPositionRef.current), duration - 1))\n\t}\n\n\t// * Skip Controls\n\tconst [skipDuration, setSkipDuration] = useState(10)\n\n\tconst getSkipAmount = () => {\n\t\tconst modifierKeyList = pressedKeyListRef.current\n\n\t\tlet skipAmount = 10\n\n\t\tif (modifierKeyList.includes('alt')) {\n\t\t\tif (modifierKeyList.length === 1) skipAmount = 15\n\t\t\tif (modifierKeyList.includes('shift')) skipAmount = 30\n\t\t\tif (modifierKeyList.includes('meta')) skipAmount = 5\n\t\t\tif (modifierKeyList.includes('shift') && modifierKeyList.includes('meta')) skipAmount = 60\n\t\t\tif (modifierKeyList.includes('shift') && modifierKeyList.includes('meta') && modifierKeyList.includes('ctrl'))\n\t\t\t\tskipAmount = 90\n\t\t}\n\n\t\tif (skipAmount !== skipDuration) setSkipDuration(skipAmount)\n\n\t\treturn skipAmount\n\t}\n\n\tconst skipBack = useCallback(() => {\n\t\tconst videoPlayer = videoPlayerRef.current\n\n\t\tif (!videoPlayer) return\n\n\t\tconst { currentTime } = videoPlayer\n\n\t\tconst skipAmount = getSkipAmount()\n\n\t\tvideoPlayer.fastSeek(Math.max(currentTime - skipAmount, 0))\n\t}, [])\n\n\tconst skipForward = useCallback(() => {\n\t\tconst videoPlayer = videoPlayerRef.current\n\n\t\tif (!videoPlayer) return\n\n\t\tconst { currentTime, duration } = videoPlayer\n\n\t\tconst skipAmount = getSkipAmount()\n\n\t\tvideoPlayer.fastSeek(Math.min(currentTime + skipAmount, duration - 1))\n\t}, [])\n\n\t// * Volume Controls\n\tconst [volume, setVolume] = useState(1),\n\t\ttrackVolumeStartRef = useRef(0)\n\n\tconst handleVolumeChange: ReactEventHandler<HTMLVideoElement> = e => {\n\t\tconst { currentTarget } = e,\n\t\t\t{ volume } = currentTarget\n\n\t\tsetVolume(volume)\n\t}\n\n\tconst handleVolumeSlider = ({ y }: Coords) => {\n\t\tconst videoPlayer = videoPlayerRef.current\n\n\t\tif (!videoPlayer) return\n\n\t\tvideoPlayer.volume = Math.max(Math.min(trackVolumeStartRef.current + (y / 96) * -1, 1), 0)\n\t}\n\n\tconst { trackPointerMovement: trackVolume } = usePointerMovement({ onChange: handleVolumeSlider })\n\n\tconst initiateTrackVolume = (e: MouseEvent<HTMLDivElement> | TouchEvent<HTMLDivElement>) => {\n\t\tconst videoPlayer = videoPlayerRef.current\n\n\t\tif (!videoPlayer) return\n\n\t\ttrackVolume(e)\n\n\t\ttrackVolumeStartRef.current = videoPlayer.volume\n\t}\n\n\tconst increaseVolume = () => {\n\t\tconst videoPlayer = videoPlayerRef.current\n\n\t\tif (!videoPlayer) return\n\n\t\tvideoPlayer.volume += 0.1\n\t}\n\n\tconst decreaseVolume = () => {\n\t\tconst videoPlayer = videoPlayerRef.current\n\n\t\tif (!videoPlayer) return\n\n\t\tvideoPlayer.volume -= 0.1\n\t}\n\n\t// * Controls Visibility\n\tconst [showControls, setShowControls] = useState(true),\n\t\tmouseMoveTimeoutRef = useRef<NodeJS.Timeout>(undefined)\n\n\tconst displayControls = () => {\n\t\tif (!showControls) setShowControls(true)\n\t}\n\n\tconst hideControls = () => {\n\t\tif (!videoPlayerRef.current?.paused) setShowControls(false)\n\t}\n\n\tconst handleMouseMoveControls = () => {\n\t\tclearTimeout(mouseMoveTimeoutRef.current)\n\t\tdisplayControls()\n\n\t\tmouseMoveTimeoutRef.current = setTimeout(() => hideControls(), 1500)\n\t}\n\n\tconst clearMouseMoveControlsTimeout = () => clearTimeout(mouseMoveTimeoutRef.current)\n\n\t// * Keyboard Controls\n\tconst pressedKeyListRef = useRef<ModifierKey[]>([]),\n\t\t[pressedKeyList, setPressedKeyList] = useState<ModifierKey[]>([])\n\n\tconst updateModifierKeys = useCallback(\n\t\t({\n\t\t\tmetaKey,\n\t\t\taltKey,\n\t\t\tshiftKey,\n\t\t\tctrlKey,\n\t\t}: {\n\t\t\tmetaKey?: boolean\n\t\t\taltKey?: boolean\n\t\t\tshiftKey?: boolean\n\t\t\tctrlKey?: boolean\n\t\t}) => {\n\t\t\tif (\n\t\t\t\t(metaKey && !pressedKeyListRef.current.includes('meta')) ||\n\t\t\t\t(altKey && !pressedKeyListRef.current.includes('alt')) ||\n\t\t\t\t(shiftKey && !pressedKeyListRef.current.includes('shift')) ||\n\t\t\t\t(ctrlKey && !pressedKeyListRef.current.includes('ctrl')) ||\n\t\t\t\t(!metaKey && pressedKeyListRef.current.includes('meta')) ||\n\t\t\t\t(!altKey && pressedKeyListRef.current.includes('alt')) ||\n\t\t\t\t(!shiftKey && pressedKeyListRef.current.includes('shift')) ||\n\t\t\t\t(!ctrlKey && pressedKeyListRef.current.includes('ctrl'))\n\t\t\t) {\n\t\t\t\tconst newPressedKeyList: ModifierKey[] = []\n\n\t\t\t\tif (metaKey) newPressedKeyList.push('meta')\n\t\t\t\tif (altKey) newPressedKeyList.push('alt')\n\t\t\t\tif (shiftKey) newPressedKeyList.push('shift')\n\t\t\t\tif (ctrlKey) newPressedKeyList.push('ctrl')\n\n\t\t\t\tsetPressedKeyList(newPressedKeyList)\n\t\t\t\tpressedKeyListRef.current = newPressedKeyList\n\t\t\t\tgetSkipAmount()\n\t\t\t}\n\t\t},\n\t\t[],\n\t)\n\n\tconst handleKeydown = useCallback(\n\t\t(e: KeyboardEvent) => {\n\t\t\tconst { key, metaKey, altKey, shiftKey, ctrlKey } = e\n\n\t\t\tupdateModifierKeys({ metaKey, altKey, shiftKey, ctrlKey })\n\n\t\t\tif (![' ', 'ArrowRight', 'ArrowLeft', 'ArrowUp', 'ArrowDown', 'f'].includes(key)) return\n\n\t\t\tif ([' ', 'ArrowUp', 'ArrowDown', 'f'].includes(key) && !metaKey && !altKey && !shiftKey && !ctrlKey)\n\t\t\t\te.preventDefault()\n\n\t\t\tswitch (key as FunctionKey) {\n\t\t\t\tcase ' ':\n\t\t\t\t\ttogglePlay()\n\t\t\t\t\tbreak\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\tskipForward()\n\t\t\t\t\tbreak\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\tskipBack()\n\t\t\t\t\tbreak\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tincreaseVolume()\n\t\t\t\t\tbreak\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tdecreaseVolume()\n\t\t\t\t\tbreak\n\t\t\t\tcase 'f':\n\t\t\t\t\trequestFullscreen()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t},\n\t\t[togglePlay, skipForward, updateModifierKeys],\n\t)\n\n\tconst handleKeyup = useCallback(\n\t\t(e: KeyboardEvent) => {\n\t\t\tconst { metaKey, altKey, shiftKey, ctrlKey } = e\n\n\t\t\tupdateModifierKeys({ metaKey, altKey, shiftKey, ctrlKey })\n\t\t},\n\t\t[updateModifierKeys],\n\t)\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst controller = new AbortController(),\n\t\t\tsignal = controller.signal\n\n\t\tdocument.addEventListener('keydown', handleKeydown, { signal })\n\t\tdocument.addEventListener('keyup', handleKeyup, { signal })\n\n\t\treturn () => {\n\t\t\tcontroller.abort()\n\t\t}\n\t}, [handleKeydown, handleKeyup])\n\n\t// * Remote Playback Controls\n\tconst handleRemotePlayback = () => videoPlayerRef.current?.remote.prompt()\n\n\t// * Progressive Enhancement\n\tconst progressiveEnhancementSourceLengthRef = useRef(1)\n\n\tconst [progressiveEnhancementList, setProgressiveEnhancementList] = useState(\n\t\tsortedSrcSet.filter((_, index) => index < progressiveEnhancementSourceLengthRef.current),\n\t)\n\n\tconst handleProEnhance: ReactEventHandler<HTMLVideoElement> = e => {\n\t\tconst { currentTarget } = e,\n\t\t\t{ currentSrc, currentTime } = currentTarget\n\n\t\tconst proEnhanceSrcLength = progressiveEnhancementSourceLengthRef.current + 1,\n\t\t\tupdatedProEnhanceList = sortedSrcSet.filter((_, index) => index < proEnhanceSrcLength)\n\n\t\tconsole.log(updatedProEnhanceList)\n\n\t\tsetProgressiveEnhancementList(updatedProEnhanceList)\n\t\tprogressiveEnhancementSourceLengthRef.current = proEnhanceSrcLength\n\n\t\tconst srcToCompare =\n\t\t\ttypeof updatedProEnhanceList.at(-1)?.src === 'string'\n\t\t\t\t? updatedProEnhanceList.at(-1)?.src\n\t\t\t\t: updatedProEnhanceList.at(-1)?.srcGroup\n\n\t\tif (!srcToCompare) return\n\n\t\tif (\n\t\t\t(Array.isArray(srcToCompare) && srcToCompare.every(({ src }) => src !== currentSrc)) ||\n\t\t\t(!Array.isArray(srcToCompare) && srcToCompare !== currentSrc)\n\t\t) {\n\t\t\tconst srcType = currentSrc.split('.').at(-1)\n\n\t\t\tconst src = Array.isArray(srcToCompare)\n\t\t\t\t? srcToCompare.find(({ src }) => src.split('.').at(-1) === srcType)?.src || srcToCompare[0].src\n\t\t\t\t: srcToCompare\n\n\t\t\tif (!src) return\n\n\t\t\tcurrentTarget.src = src\n\t\t\tcurrentTarget.currentTime = currentTime || 0\n\t\t\tcurrentTarget.load()\n\t\t}\n\t}\n\n\t// * Download Controls\n\tconst captureCurrentFrame = () => {\n\t\tconst videoPlayer = videoPlayerRef.current\n\n\t\tif (!videoPlayer) return\n\n\t\tconst { videoHeight, videoWidth } = videoPlayer\n\n\t\tconst canvas = document.createElement('canvas'),\n\t\t\tcanvasContext = canvas.getContext('2d')\n\n\t\tif (!canvasContext) return\n\n\t\tcanvas.width = videoWidth\n\t\tcanvas.height = videoHeight\n\n\t\tcanvasContext.drawImage(videoPlayer, 0, 0, canvas.width, canvas.height)\n\n\t\tcanvas.toBlob(\n\t\t\tblob => {\n\t\t\t\tif (!blob) return\n\n\t\t\t\tconst url = URL.createObjectURL(blob),\n\t\t\t\t\tlink = document.createElement('a')\n\n\t\t\t\tlink.href = url\n\t\t\t\tlink.download = `${title}-frame-${Date.now()}.jpg`\n\n\t\t\t\tdocument.body.appendChild(link)\n\t\t\t\tlink.click()\n\n\t\t\t\tdocument.body.removeChild(link)\n\t\t\t\tURL.revokeObjectURL(url)\n\t\t\t},\n\t\t\t'image/jpeg',\n\t\t\t0.9,\n\t\t)\n\t}\n\n\treturn (\n\t\t<figure\n\t\t\t{...(showControls ? { 'data-controls': true } : {})}\n\t\t\t{...(isFullscreen ? { 'data-fullscreen': true } : {})}\n\t\t\t{...(isPlaying ? { 'data-playing': true } : {})}\n\t\t\t{...Object.fromEntries(pressedKeyList.map(key => [`data-${key}`, true]))}\n\t\t\tclassName={twMerge('group/video isolate aspect-video w-full overflow-clip', className)}\n\t\t\tonMouseEnter={displayControls}\n\t\t\tonMouseLeave={hideControls}\n\t\t\tref={figureRef}\n\t\t>\n\t\t\t<video\n\t\t\t\t{...props}\n\t\t\t\tclassName='size-full object-cover'\n\t\t\t\tonLoad={handleProEnhance}\n\t\t\t\tonTimeUpdate={handleTimeUpdate}\n\t\t\t\tonVolumeChange={handleVolumeChange}\n\t\t\t\tposter={primaryPoster}\n\t\t\t\tref={videoPlayerRef || ref}\n\t\t\t\ttitle={title}\n\t\t\t>\n\t\t\t\t{progressiveEnhancementList.map(({ width, ...source }) => {\n\t\t\t\t\tif (source.srcGroup) {\n\t\t\t\t\t\tconst { srcGroup } = source\n\n\t\t\t\t\t\treturn srcGroup.map(({ src, type }) => (\n\t\t\t\t\t\t\t<source key={`${title}${type}${width}${uniqueID}`} src={src} type={type} />\n\t\t\t\t\t\t))\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { src, type } = source\n\n\t\t\t\t\treturn <source key={`${title}${type}${width}${uniqueID}`} src={src} type={type} />\n\t\t\t\t})}\n\t\t\t</video>\n\n\t\t\t{controls && (\n\t\t\t\t<div className='absolute inset-0 isolate text-neutral-50 opacity-0 transition-opacity duration-1000 ease-exponential select-none group-data-controls/video:opacity-100'>\n\t\t\t\t\t<div className='grid-flow-cols absolute top-1/2 left-1/2 grid -translate-x-1/2 -translate-y-1/2 place-items-center gap-2'>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName='col-start-1 col-end-2 row-start-0 row-end-1 grid size-16 rounded-full backdrop-blur-[1px] backdrop-brightness-101 transition-[scale,-webkit-backdrop-filter,backdrop-filter] duration-300 ease-exponential active:scale-95 active:backdrop-blur-[2px] active:backdrop-brightness-125 pointer-fine:hover:scale-105 pointer-fine:hover:backdrop-blur-xs pointer-fine:hover:backdrop-brightness-110 pointer-fine:active:scale-95 pointer-fine:active:backdrop-blur-[2px] pointer-fine:active:backdrop-brightness-125'\n\t\t\t\t\t\t\tonClick={togglePlay}\n\t\t\t\t\t\t\tonContextMenu={preventDefaultEvent}\n\t\t\t\t\t\t\ttitle={isPlaying ? 'Pause' : 'Play'}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<PauseFill className='col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-0 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 transition-[scale,opacity] duration-500 ease-exponential group-data-playing/video:scale-60 group-data-playing/video:opacity-100' />\n\n\t\t\t\t\t\t\t<PlayFill className='-right-0.5 col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 transition-[scale,opacity] duration-500 ease-exponential group-data-playing/video:scale-0 group-data-playing/video:opacity-0' />\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName='col-start-0 col-end-1 row-start-0 row-end-1 grid size-12 rounded-full backdrop-blur-[1px] backdrop-brightness-101 transition-[scale,-webkit-backdrop-filter,backdrop-filter] duration-300 ease-exponential active:scale-95 active:backdrop-blur-[2px] active:backdrop-brightness-125 pointer-fine:hover:scale-105 pointer-fine:hover:backdrop-blur-xs pointer-fine:hover:backdrop-brightness-110 pointer-fine:active:scale-95 pointer-fine:active:backdrop-blur-[2px] pointer-fine:active:backdrop-brightness-125'\n\t\t\t\t\t\t\tonClick={skipBack}\n\t\t\t\t\t\t\tonContextMenu={preventDefaultEvent}\n\t\t\t\t\t\t\ttitle={`Skip Back ${skipDuration} Seconds`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FiveArrowTriangleheadCounterclockwise className='col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-meta/video:opacity-100 group-data-alt/video:group-data-meta/video:group-data-ctrl/video:opacity-0 group-data-alt/video:group-data-meta/video:group-data-shift/video:opacity-0' />\n\n\t\t\t\t\t\t\t<TenArrowTriangleheadCounterclockwise className='col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:opacity-0 group-data-alt/video:group-data-ctrl/video:opacity-100 group-data-alt/video:group-data-shift/video:group-data-meta/video:group-data-ctrl/video:opacity-0' />\n\n\t\t\t\t\t\t\t<FifteenArrowTriangleheadCounterclockwise className='col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:opacity-100 group-data-ctrl/video:opacity-0 group-data-meta/video:opacity-0 group-data-shift/video:opacity-0' />\n\n\t\t\t\t\t\t\t<ThirtyArrowTriangleheadCounterclockwise className='col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-shift/video:opacity-100 group-data-alt/video:group-data-ctrl/video:group-data-shift/video:opacity-0 group-data-alt/video:group-data-meta/video:group-data-shift/video:opacity-0' />\n\n\t\t\t\t\t\t\t<SixtyArrowTriangleheadCounterclockwise className='col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-shift/video:group-data-meta/video:opacity-100 group-data-alt/video:group-data-shift/video:group-data-meta/video:group-data-ctrl/video:opacity-0' />\n\n\t\t\t\t\t\t\t<NinetyArrowTriangleheadCounterclockwise className='col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-shift/video:group-data-meta/video:group-data-ctrl/video:opacity-100' />\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName='col-start-2 col-end-3 row-start-0 row-end-1 grid size-12 rounded-full backdrop-blur-[1px] backdrop-brightness-101 transition-[scale,-webkit-backdrop-filter,backdrop-filter] duration-300 ease-exponential active:scale-95 active:backdrop-blur-[2px] active:backdrop-brightness-125 pointer-fine:hover:scale-105 pointer-fine:hover:backdrop-blur-xs pointer-fine:hover:backdrop-brightness-110 pointer-fine:active:scale-95 pointer-fine:active:backdrop-blur-[2px] pointer-fine:active:backdrop-brightness-125'\n\t\t\t\t\t\t\tonClick={skipForward}\n\t\t\t\t\t\t\tonContextMenu={preventDefaultEvent}\n\t\t\t\t\t\t\ttitle={`Skip Forward ${skipDuration} Seconds`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FiveArrowTriangleheadClockwise className='col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-meta/video:opacity-100 group-data-alt/video:group-data-meta/video:group-data-ctrl/video:opacity-0 group-data-alt/video:group-data-meta/video:group-data-shift/video:opacity-0' />\n\n\t\t\t\t\t\t\t<TenArrowTriangleheadClockwise className='col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:opacity-0 group-data-alt/video:group-data-ctrl/video:opacity-100 group-data-alt/video:group-data-shift/video:group-data-meta/video:group-data-ctrl/video:opacity-0' />\n\n\t\t\t\t\t\t\t<FifteenArrowTriangleheadClockwise className='col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:opacity-100 group-data-ctrl/video:opacity-0 group-data-meta/video:opacity-0 group-data-shift/video:opacity-0' />\n\n\t\t\t\t\t\t\t<ThirtyArrowTriangleheadClockwise className='col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-shift/video:opacity-100 group-data-alt/video:group-data-ctrl/video:group-data-shift/video:opacity-0 group-data-alt/video:group-data-meta/video:group-data-shift/video:opacity-0' />\n\n\t\t\t\t\t\t\t<SixtyArrowTriangleheadClockwise className='col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-shift/video:group-data-meta/video:opacity-100 group-data-alt/video:group-data-shift/video:group-data-meta/video:group-data-ctrl/video:opacity-0' />\n\n\t\t\t\t\t\t\t<NinetyArrowTriangleheadClockwise className='col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-shift/video:group-data-meta/video:group-data-ctrl/video:opacity-100' />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className='absolute inset-x-2 bottom-2 flex items-center gap-2 rounded-xl bg-neutral-900/50 px-2 py-1 shadow-2xl backdrop-blur-xs backdrop-brightness-110'>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName='group/scrubber h-2 w-max flex-grow cursor-grab overflow-clip rounded-md bg-neutral-50/50 backdrop-blur-xs backdrop-brightness-110 transition-[height] duration-300 ease-exponential active:h-4 pointer-fine:hover:h-4 pointer-fine:active:h-4'\n\t\t\t\t\t\t\tonMouseDown={e => {\n\t\t\t\t\t\t\t\tinitiateTrackProgress(e)\n\t\t\t\t\t\t\t\tinitializeSeeking()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonMouseMove={handleSeekIndicatorMovement}\n\t\t\t\t\t\t\tonMouseUp={handleSeekRelease}\n\t\t\t\t\t\t\tonTouchStart={initiateTrackProgress}\n\t\t\t\t\t\t\tref={scrubberRef}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\taria-hidden='true'\n\t\t\t\t\t\t\t\tclassName='absolute inset-0 grid transition-cols duration-100 ease-linear'\n\t\t\t\t\t\t\t\tstyle={{ gridTemplateColumns: `${progress / MAX_PROGRESS}fr` }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className='overflow-hidden'>\n\t\t\t\t\t\t\t\t\t<div className='h-full bg-neutral-50/70 text-[1px] text-transparent backdrop-blur-xs backdrop-brightness-125'>\n\t\t\t\t\t\t\t\t\t\t{progress}/{MAX_PROGRESS}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t{...(seekIndicator.isInPlayedArea ? { 'data-in-played-area': true } : {})}\n\t\t\t\t\t\t\t\taria-hidden='true'\n\t\t\t\t\t\t\t\tclassName='absolute inset-y-0 w-1 cursor-grab bg-neutral-50 opacity-0 transition-opacity duration-300 ease-exponential group-hover/scrubber:opacity-100 data-in-played-area:bg-neutral-500 pointer-coarse:hidden'\n\t\t\t\t\t\t\t\tstyle={{ transform: `translateX(${seekIndicator.position}px)` }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<progress className='sr-only' max={MAX_PROGRESS} value={progress} />\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<span className='block text-xs'>\n\t\t\t\t\t\t\t{timeRemaining / 60 >= 1\n\t\t\t\t\t\t\t\t? `${Math.round(timeRemaining / 60)}:${Math.round(\n\t\t\t\t\t\t\t\t\t\t(timeRemaining / 60 - Math.round(timeRemaining / 60)) * 60,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t\t\t\t.padStart(2, '0')}`\n\t\t\t\t\t\t\t\t: Math.round(timeRemaining) === 60\n\t\t\t\t\t\t\t\t\t? `1:00`\n\t\t\t\t\t\t\t\t\t: `0:${Math.round(timeRemaining).toString().padStart(2, '0')}`}\n\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t<DropDown>\n\t\t\t\t\t\t\t<DropDownButton\n\t\t\t\t\t\t\t\tarrow={false}\n\t\t\t\t\t\t\t\tclassName='group/button flex size-6 items-center justify-center rounded-xs transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:hover:scale-105 pointer-fine:active:scale-95'\n\t\t\t\t\t\t\t\ttitle='Volume'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\tviewBox='0 0 64 47'\n\t\t\t\t\t\t\t\t\tclassName='size-full scale-80 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75 transition-transform duration-300 ease-exponential'\n\t\t\t\t\t\t\t\t\tstyle={{ translate: `${volume > 0.66 ? '0' : volume > 0.33 ? '2px' : volume > 0 ? '4px' : '6px'} 0` }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<path d='M25.707,44.076C27.257,44.076 28.39,42.947 28.39,41.387L28.39,4.841C28.39,3.307 27.257,2.025 25.656,2.025C24.542,2.025 23.767,2.512 22.558,3.666L12.393,13.203C12.251,13.345 12.047,13.436 11.818,13.436L4.99,13.436C1.759,13.436 0,15.195 0,18.654L0,27.525C0,30.953 1.759,32.737 4.99,32.737L11.818,32.737C12.047,32.737 12.251,32.808 12.393,32.95L22.558,42.583C23.666,43.615 24.593,44.076 25.707,44.076Z' />\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tclassName='transition-opacity duration-300 ease-exponential'\n\t\t\t\t\t\t\t\t\t\td='M36.874,33.192C37.684,33.728 38.797,33.566 39.439,32.64C41.265,30.222 42.371,26.683 42.371,23.026C42.371,19.368 41.265,15.855 39.439,13.411C38.797,12.485 37.684,12.323 36.874,12.885C35.923,13.553 35.761,14.721 36.505,15.713C37.901,17.607 38.662,20.249 38.662,23.026C38.662,25.802 37.876,28.419 36.505,30.338C35.786,31.355 35.923,32.498 36.874,33.192Z'\n\t\t\t\t\t\t\t\t\t\tstyle={{ opacity: volume > 0 ? 1 : 0 }}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tclassName='transition-opacity duration-300 ease-exponential'\n\t\t\t\t\t\t\t\t\t\td='M45.738,39.394C46.624,39.981 47.712,39.799 48.354,38.868C51.402,34.69 53.208,28.904 53.208,23.026C53.208,17.148 51.427,11.31 48.354,7.183C47.712,6.252 46.624,6.07 45.738,6.657C44.858,7.249 44.701,8.362 45.399,9.354C48.023,13.032 49.499,17.952 49.499,23.026C49.499,28.099 47.972,32.994 45.399,36.697C44.726,37.689 44.858,38.802 45.738,39.394Z'\n\t\t\t\t\t\t\t\t\t\tstyle={{ opacity: volume > 0.33 ? 1 : 0 }}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tclassName='transition-opacity duration-300 ease-exponential'\n\t\t\t\t\t\t\t\t\t\td='M54.679,45.708C55.514,46.32 56.683,46.082 57.315,45.121C61.498,39.091 64,31.447 64,23.026C64,14.604 61.422,6.986 57.315,0.93C56.683,-0.056 55.514,-0.269 54.679,0.343C53.804,0.956 53.668,2.079 54.33,3.071C58.012,8.514 60.342,15.379 60.342,23.026C60.342,30.647 58.012,37.562 54.33,42.98C53.668,43.972 53.804,45.095 54.679,45.708Z'\n\t\t\t\t\t\t\t\t\t\tstyle={{ opacity: volume > 0.66 ? 1 : 0 }}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t</DropDownButton>\n\n\t\t\t\t\t\t\t<DropDownItems\n\t\t\t\t\t\t\t\tanchor={{\n\t\t\t\t\t\t\t\t\tgap: '.5rem',\n\t\t\t\t\t\t\t\t\tpadding: '.375rem',\n\t\t\t\t\t\t\t\t\tto: 'top',\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName='bg-neutral-900/50 px-1.5 py-1.5 text-neutral-50 backdrop-blur-xs backdrop-brightness-110'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DropDownItem\n\t\t\t\t\t\t\t\t\tas='button'\n\t\t\t\t\t\t\t\t\tclassName='flex size-6 items-center justify-center rounded-xs transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:hover:scale-105 pointer-fine:active:scale-95'\n\t\t\t\t\t\t\t\t\tonClick={increaseVolume}\n\t\t\t\t\t\t\t\t\ttitle='Increase volume'\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<SpeakerPlusFill className='size-full scale-80 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75' />\n\t\t\t\t\t\t\t\t</DropDownItem>\n\n\t\t\t\t\t\t\t\t<DropDownSeparator\n\t\t\t\t\t\t\t\t\taria-label='Volume slider'\n\t\t\t\t\t\t\t\t\taria-valuemin={0}\n\t\t\t\t\t\t\t\t\taria-valuemax={100}\n\t\t\t\t\t\t\t\t\taria-valuenow={volume * 100}\n\t\t\t\t\t\t\t\t\tclassName='mx-auto my-2 h-24 w-2 cursor-grab overflow-clip rounded-md bg-neutral-50/50 backdrop-blur-xs backdrop-brightness-110 transition-[width] duration-300 ease-exponential active:w-4 pointer-fine:hover:w-4 pointer-fine:active:w-4'\n\t\t\t\t\t\t\t\t\tonMouseDown={initiateTrackVolume}\n\t\t\t\t\t\t\t\t\tonTouchStart={initiateTrackVolume}\n\t\t\t\t\t\t\t\t\trole='slider'\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\taria-hidden='true'\n\t\t\t\t\t\t\t\t\t\tclassName='grid size-full rotate-180 transition-rows duration-300 ease-exponential'\n\t\t\t\t\t\t\t\t\t\tstyle={{ gridTemplateRows: `${volume}fr` }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div className='overflow-y-hidden'>\n\t\t\t\t\t\t\t\t\t\t\t<div className='size-full bg-neutral-50/70 text-[1px] text-transparent backdrop-blur-xs backdrop-brightness-125'>\n\t\t\t\t\t\t\t\t\t\t\t\t{volume * 100}%\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</DropDownSeparator>\n\n\t\t\t\t\t\t\t\t<DropDownItem\n\t\t\t\t\t\t\t\t\tas='button'\n\t\t\t\t\t\t\t\t\tclassName='flex size-6 items-center justify-center rounded-xs transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:hover:scale-105 pointer-fine:active:scale-95'\n\t\t\t\t\t\t\t\t\tonClick={decreaseVolume}\n\t\t\t\t\t\t\t\t\ttitle='Decrease volume'\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<SpeakerMinusFill className='size-full scale-80 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75' />\n\t\t\t\t\t\t\t\t</DropDownItem>\n\t\t\t\t\t\t\t</DropDownItems>\n\t\t\t\t\t\t</DropDown>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName='flex size-6 items-center justify-center rounded-xs transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:hover:scale-105 pointer-fine:active:scale-95'\n\t\t\t\t\t\t\tonClick={enterPictureInPicture}\n\t\t\t\t\t\t\ttitle='Enter Picture-in-Picture'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<RectangleFillOnArrowDownForwardTopleadingRectangle className='size-full scale-80 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75' />\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName='flex size-6 items-center justify-center rounded-xs transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:hover:scale-105 pointer-fine:active:scale-95'\n\t\t\t\t\t\t\tonClick={handleRemotePlayback}\n\t\t\t\t\t\t\ttitle='Remote Playback'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<RectangleTriangleUp className='size-full scale-80 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75' />\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<DropDown>\n\t\t\t\t\t\t\t<DropDownButton\n\t\t\t\t\t\t\t\tarrow={false}\n\t\t\t\t\t\t\t\tclassName='flex size-6 items-center justify-center rounded-xs transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:hover:scale-105 pointer-fine:active:scale-95'\n\t\t\t\t\t\t\t\ttitle='Other Settings'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<GearshapeFill className='size-full scale-80 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75' />\n\t\t\t\t\t\t\t</DropDownButton>\n\n\t\t\t\t\t\t\t<DropDownItems\n\t\t\t\t\t\t\t\tanchor={{\n\t\t\t\t\t\t\t\t\tgap: '.5rem',\n\t\t\t\t\t\t\t\t\tpadding: '.375rem',\n\t\t\t\t\t\t\t\t\tto: 'top end',\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName='bg-neutral-900/50 px-1.5 py-1.5 text-neutral-50 backdrop-blur-xs backdrop-brightness-110'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DropDownItem\n\t\t\t\t\t\t\t\t\tas='button'\n\t\t\t\t\t\t\t\t\tclassName='flex items-center gap-2 rounded-lg px-1.5 py-0.5 text-sm drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75 transition-[scale,background-color,color] duration-300 ease-exponential active:scale-95 data-active:bg-neutral-50/90 data-active:text-neutral-950 pointer-fine:hover:scale-105 pointer-fine:active:scale-95'\n\t\t\t\t\t\t\t\t\tonClick={captureCurrentFrame}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<PhotoBadgeArrowDownFill className='size-5' />\n\t\t\t\t\t\t\t\t\tCapture Current Frame\n\t\t\t\t\t\t\t\t</DropDownItem>\n\t\t\t\t\t\t\t</DropDownItems>\n\t\t\t\t\t\t</DropDown>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName='grid size-6 rounded-xs transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:hover:scale-105 pointer-fine:active:scale-95'\n\t\t\t\t\t\t\tonClick={toggleFullscreen}\n\t\t\t\t\t\t\ttitle={`${isFullscreen ? 'Exit' : 'Enter'} Fullscreen`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ArrowUpForwardAndArrowDownBackwardRectangle className='col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-0 opacity-0 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75 transition-[scale,opacity] duration-500 ease-exponential group-data-fullscreen/video:scale-80 group-data-fullscreen/video:opacity-100' />\n\n\t\t\t\t\t\t\t<ArrowDownBackwardAndArrowUpForwardRectangle className='-right-0.5 col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-80 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75 transition-[scale,opacity] duration-500 ease-exponential group-data-fullscreen/video:scale-0 group-data-fullscreen/video:opacity-0' />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\taria-hidden='true'\n\t\t\t\t\t\tclassName='absolute inset-0 -z-10 text-[1px] text-transparent'\n\t\t\t\t\t\tonClick={togglePlay}\n\t\t\t\t\t\tonMouseMove={handleMouseMoveControls}\n\t\t\t\t\t\tonMouseLeave={clearMouseMoveControlsTimeout}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isPlaying ? 'Pause' : 'Play'}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</figure>\n\t)\n}\n"],"names":["extendTailwindMerge","Children","isValidElement","Fragment","_jsx","twJoin","HeadlessButton","_jsxs","DisclosureButton","_Fragment","DisclosurePanel","Disclosure","MenuButton","MenuItem","MenuItems","MenuSection","MenuHeading","MenuSeparator","Menu","useRef","createContext","useContext","useSyncExternalStore","Provider","useStore","useCallback","useEffect","Suspense","useState","useId","HeadlessFieldset","Legend","computePosition","arrow","flip","offset","shift","size","offset$1","shift$1","flip$1","size$1","arrow$1","useLayoutEffect","React","ReactDOM","cloneElement","floatingOffset","floatingArrow","createPortal","Field","Label","HeadlessInput","Description","HeadlessTextarea","DialogTitle","Dialog","DialogBackdrop","DialogPanel"],"mappings":"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","x_google_ignoreList":[42,43,44,45,46]}
|
|
1
|
+
{"version":3,"file":"components.js","sources":["../src/utils/custom-tailwind-merge.ts","../src/utils/get-date.ts","../src/utils/helpers.tsx","../src/utils/math.ts","../src/utils/regex.ts","../src/utils/string-manipulation.ts","../src/utils/tw-sort.ts","../src/components/link.tsx","../src/components/button.tsx","../src/icons/arrow-down-backward-and-arrow-up-forward-rectangle.tsx","../src/icons/arrow-up-forward-and-arrow-down-backward-rectangle.tsx","../src/icons/chevron-down.tsx","../src/icons/exclamationmark-octagon.tsx","../src/icons/15-arrow-trianglehead-clockwise.tsx","../src/icons/15-arrow-trianglehead-counterclockwise.tsx","../src/icons/5-arrow-trianglehead-clockwise.tsx","../src/icons/5-arrow-trianglehead-counterclockwise.tsx","../src/icons/gearshape-fill.tsx","../src/icons/90-arrow-trianglehead-clockwise.tsx","../src/icons/90-arrow-trianglehead-counterclockwise.tsx","../src/icons/pause-fill.tsx","../src/icons/photo-badge-arrow-down-fill.tsx","../src/icons/play-fill.tsx","../src/icons/rectangle-fill-on-arrow-down-forward-topleading-rectangle.tsx","../src/icons/rectangle-triangle-up.tsx","../src/icons/60-arrow-trianglehead-clockwise.tsx","../src/icons/60-arrow-trianglehead-counterclockwise.tsx","../src/icons/speaker-minus-fill.tsx","../src/icons/speaker-plus-fill.tsx","../src/icons/10-arrow-trianglehead-clockwise.tsx","../src/icons/10-arrow-trianglehead-counterclockwise.tsx","../src/icons/30-arrow-trianglehead-clockwise.tsx","../src/icons/30-arrow-trianglehead-counterclockwise.tsx","../src/icons/xmark.tsx","../src/components/details.tsx","../src/components/drop-down.tsx","../src/hooks/create-fast-context.tsx","../src/hooks/use-form-context.tsx","../src/hooks/use-fieldset-context.tsx","../src/hooks/use-form-status.tsx","../src/hooks/use-pointer-movement.ts","../src/components/form/fieldset.tsx","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../src/components/tooltip.tsx","../src/components/form/input/index.tsx","../src/components/form/submit-button.tsx","../src/components/form/textarea.tsx","../src/components/form/index.tsx","../src/components/ghost.tsx","../src/components/heading.tsx","../src/components/iframe.tsx","../src/components/modal.tsx","../src/components/time.tsx","../src/components/video.tsx"],"sourcesContent":["import { ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds, extendTailwindMerge } from 'tailwind-merge'\n\nexport type AdditionalmadoClassGroupIds =\n\t| 'animation-direction'\n\t| 'animation-fill'\n\t| 'animation-iteration'\n\t| 'animation-state'\n\nconst integerList = Array.from({ length: 100 }, (_, i) => `${i + 1}`)\n\nexport const twMerge = extendTailwindMerge<AdditionalmadoClassGroupIds>({\n\textend: {\n\t\ttheme: {\n\t\t\tcolor: [\n\t\t\t\t{\n\t\t\t\t\tui: [\n\t\t\t\t\t\t'red',\n\t\t\t\t\t\t'orange',\n\t\t\t\t\t\t'yellow',\n\t\t\t\t\t\t'green',\n\t\t\t\t\t\t'sky-blue',\n\t\t\t\t\t\t'blue',\n\t\t\t\t\t\t'violet',\n\t\t\t\t\t\t'magenta',\n\t\t\t\t\t\t'purple',\n\t\t\t\t\t\t'brown',\n\t\t\t\t\t\t'grey',\n\t\t\t\t\t\t'pink',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tclassGroups: {\n\t\t\tanimate: [\n\t\t\t\t{\n\t\t\t\t\tanimate: [\n\t\t\t\t\t\t'bounce',\n\t\t\t\t\t\t'double-spin',\n\t\t\t\t\t\t'drop-in',\n\t\t\t\t\t\t'flip',\n\t\t\t\t\t\t'flip-again',\n\t\t\t\t\t\t'grid-rows',\n\t\t\t\t\t\t'heartbeat',\n\t\t\t\t\t\t'ping',\n\t\t\t\t\t\t'pulse',\n\t\t\t\t\t\t'slide-up',\n\t\t\t\t\t\t'spin',\n\t\t\t\t\t\t'wave',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-direction': [\n\t\t\t\t{\n\t\t\t\t\t'animation-direction': ['normal', 'reverse', 'alternate', 'alternate-reverse'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-fill': [\n\t\t\t\t{\n\t\t\t\t\t'animation-fill': ['none', 'forwards', 'backwards', 'both'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-iteration': [\n\t\t\t\t{\n\t\t\t\t\t'animation-iteration': [...integerList, 'infinite'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-state': [\n\t\t\t\t{\n\t\t\t\t\t'animation-state': ['running', 'paused'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'grid-cols': [\n\t\t\t\t{\n\t\t\t\t\t'grid-cols': ['0fr', '1fr'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'grid-rows': [\n\t\t\t\t{\n\t\t\t\t\t'grid-rows': ['0fr', '1fr'],\n\t\t\t\t},\n\t\t\t],\n\t\t\ttransition: ['transition-rows'],\n\t\t},\n\t},\n})\n\nexport function extendMadoTailwindMerge<\n\tAdditionalClassGroupIds extends string = AdditionalmadoClassGroupIds,\n\tAdditionalThemeGroupIds extends string = never,\n>(\n\tconfigExtension: ConfigExtension<\n\t\tDefaultClassGroupIds | AdditionalClassGroupIds,\n\t\tDefaultThemeGroupIds | AdditionalThemeGroupIds\n\t>,\n) {\n\tconst extend = configExtension.extend || {}\n\tconst theme = extend.theme || {}\n\tconst color = 'color' in theme ? theme.color : []\n\tconst classGroups = extend.classGroups || {}\n\n\tconst themeRest = { ...theme }\n\tif ('color' in themeRest) delete themeRest.color\n\n\tconst extendRest = { ...extend }\n\tdelete extendRest.theme\n\tdelete extendRest.classGroups\n\n\treturn extendTailwindMerge<AdditionalClassGroupIds, AdditionalThemeGroupIds>({\n\t\textend: {\n\t\t\ttheme: {\n\t\t\t\tcolor: [\n\t\t\t\t\t{\n\t\t\t\t\t\tui: [\n\t\t\t\t\t\t\t'red',\n\t\t\t\t\t\t\t'orange',\n\t\t\t\t\t\t\t'yellow',\n\t\t\t\t\t\t\t'green',\n\t\t\t\t\t\t\t'sky-blue',\n\t\t\t\t\t\t\t'blue',\n\t\t\t\t\t\t\t'violet',\n\t\t\t\t\t\t\t'magenta',\n\t\t\t\t\t\t\t'purple',\n\t\t\t\t\t\t\t'brown',\n\t\t\t\t\t\t\t'grey',\n\t\t\t\t\t\t\t'pink',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t...(color as { [key: string]: string[] }[]),\n\t\t\t\t],\n\t\t\t\t...themeRest,\n\t\t\t} as { [key: string]: { [key: string]: string[] }[] } | any,\n\t\t\tclassGroups: {\n\t\t\t\tanimate: [\n\t\t\t\t\t{\n\t\t\t\t\t\tanimate: [\n\t\t\t\t\t\t\t'bounce',\n\t\t\t\t\t\t\t'double-spin',\n\t\t\t\t\t\t\t'drop-in',\n\t\t\t\t\t\t\t'flip',\n\t\t\t\t\t\t\t'flip-again',\n\t\t\t\t\t\t\t'grid-rows',\n\t\t\t\t\t\t\t'heartbeat',\n\t\t\t\t\t\t\t'ping',\n\t\t\t\t\t\t\t'pulse',\n\t\t\t\t\t\t\t'slide-up',\n\t\t\t\t\t\t\t'spin',\n\t\t\t\t\t\t\t'wave',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-direction': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-direction': ['normal', 'reverse', 'alternate', 'alternate-reverse'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-fill': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-fill': ['none', 'forwards', 'backwards', 'both'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-iteration': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-iteration': [...integerList, 'infinite'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-state': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-state': ['running', 'paused'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'grid-cols': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'grid-cols': ['0fr', '1fr'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'grid-rows': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'grid-rows': ['0fr', '1fr'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\ttransition: ['transition-rows'],\n\t\t\t\t...classGroups,\n\t\t\t} as { [key: string]: { [key: string]: string[] }[] } | any,\n\t\t\t...extendRest,\n\t\t},\n\t\t...configExtension,\n\t})\n}\n","export type DayNumber =\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\nexport type DateTimeObject = {\n\tday: DayNumber\n\thour: HourNumber\n\tminute: MinuteNumber\n\tmonth: MonthNumber | MonthName\n\tsecond: SecondNumber\n\tyear: number\n}\n\nexport type HourNumber =\n\t| 0\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\nexport type MinuteNumber =\n\t| 0\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\t| 32\n\t| 33\n\t| 34\n\t| 35\n\t| 36\n\t| 37\n\t| 38\n\t| 39\n\t| 40\n\t| 41\n\t| 42\n\t| 43\n\t| 44\n\t| 45\n\t| 46\n\t| 47\n\t| 48\n\t| 49\n\t| 50\n\t| 51\n\t| 52\n\t| 53\n\t| 54\n\t| 55\n\t| 56\n\t| 57\n\t| 58\n\t| 59\n\nexport type MonthName =\n\t| 'January'\n\t| 'February'\n\t| 'March'\n\t| 'April'\n\t| 'May'\n\t| 'June'\n\t| 'July'\n\t| 'August'\n\t| 'September'\n\t| 'October'\n\t| 'November'\n\t| 'December'\n\nexport type MonthNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12\n\nexport type SecondNumber = MinuteNumber\n\nexport type WeekdayName = 'Sunday' | 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday'\n\nexport type WeekdayNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7\n\nexport type WeekNumber =\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\t| 32\n\t| 33\n\t| 34\n\t| 35\n\t| 36\n\t| 37\n\t| 38\n\t| 39\n\t| 40\n\t| 41\n\t| 42\n\t| 43\n\t| 44\n\t| 45\n\t| 46\n\t| 47\n\t| 48\n\t| 49\n\t| 50\n\t| 51\n\t| 52\n\t| 53\n\n/** The current date as a Date object */\nconst d = new Date()\n\n/** The current minute of the current hour */\nconst minutes = d.getMinutes()\n\n/** The current year */\nconst year = d.getFullYear()\n\n/** An array of the names of month in order */\nexport const monthNamesList: MonthName[] = [\n\t'January',\n\t'February',\n\t'March',\n\t'April',\n\t'May',\n\t'June',\n\t'July',\n\t'August',\n\t'September',\n\t'October',\n\t'November',\n\t'December',\n]\n\n/** An array of the names of the days of the week in order */\nexport const weekdayNamesList: WeekdayName[] = [\n\t'Sunday',\n\t'Monday',\n\t'Tuesday',\n\t'Wednesday',\n\t'Thursday',\n\t'Friday',\n\t'Saturday',\n]\n\n/** The name of the current month */\nexport const currentMonthName = getMonthName()\n\n/** The name of the current day of the week */\nexport const currentWeekdayName = getWeekdayName()\n\n/**\n * ### Days In Month\n * - Returns the number of days in the specified month.\n * @param {Date} date A Date object representing the month to get the number of days for. (Preset to the current date)\n * @returns {number} The number of days in the specified month.\n */\nexport function daysInMonth(date: Date = d): number {\n\tconst selectedYear = date.getFullYear(),\n\t\tselectedMonth = date.getMonth() + 1\n\treturn new Date(selectedYear, selectedMonth, 0).getDate()\n}\n\n/**\n * ### First of Month\n * - Returns the first day of the specified month.\n * @param {Date} date A Date object representing the month to get the first day for. (Preset to current date)\n * @returns {Date} A Date object of the given month, with the first day.\n */\nexport function firstOfMonth(date: Date = d): Date {\n\t// Return a new Date object with the first of the month selected\n\treturn new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\n/**\n * ### Get Date\n * - Returns the date with two digits\n * @param {number|Date} date The date to get date\n * @returns {string} The date with two digits\n */\nexport function getDate(date: number | Date = d): string {\n\tif (typeof date !== 'number') date = date.getDate()\n\tlet formattedDate = date.toString()\n\tif (formattedDate.length === 1) formattedDate = `0${formattedDate}`\n\treturn formattedDate\n}\n\n/**\n * ### Get Hours\n * - Returns the hours with two digits\n * @param {number|Date} hours The date to get hours\n * @returns {string} The hours with two digits\n */\nexport function getHours(hours: number | Date = d): string {\n\tif (typeof hours !== 'number') hours = hours.getHours()\n\tlet formattedHours = hours.toString()\n\tif (formattedHours.length === 1) formattedHours = `0${formattedHours}`\n\treturn formattedHours\n}\n\n/**\n * ### Get Hours in 12\n * - Returns the hour based on the specified 24 hour value in a 12 hour format\n * @param {number|Date} hour The hour to be converted to 12 hour format\n * @returns {number} The hour in a 12 hour format\n */\nexport function getHoursIn12(hour: number | Date = d): number {\n\tif (typeof hour !== 'number') hour = hour.getHours()\n\tif (hour > 12) return hour - 12\n\treturn hour\n}\n\n/**\n * ### Get Meridian from Hour\n * - Returns either 'pm' or 'am' based on the specified 24 hour value\n * @param {number|Date} hour The hour to get the meridian from\n * @returns {'am'|'pm'} The meridian for the given hour\n */\nexport function getMeridianFromHour(hour: number | Date = d): 'am' | 'pm' {\n\tif (typeof hour !== 'number') hour = hour.getHours()\n\tif (hour >= 12) return 'pm'\n\treturn 'am'\n}\n\n/**\n * ### Get Milliseconds\n * - Returns the milliseconds with two digits\n * @param {number|Date} milliseconds The date to get milliseconds\n * @returns {string} The milliseconds with two digits\n */\nexport function getMilliseconds(milliseconds: number | Date = d): string {\n\tif (typeof milliseconds !== 'number') milliseconds = milliseconds.getMilliseconds()\n\tlet formattedMilliseconds = minutes.toString()\n\tif (formattedMilliseconds.length === 1) formattedMilliseconds = `0${formattedMilliseconds}`\n\treturn formattedMilliseconds\n}\n\n/**\n * ### Get Minutes\n * - Returns the minutes with two digits\n * @param {number|Date} minutes The date to get minutes\n * @returns {string} The minutes with two digits\n */\nexport function getMinutes(minutes: number | Date = d): string {\n\tif (typeof minutes !== 'number') minutes = minutes.getMinutes()\n\tlet formattedMinutes = minutes.toString()\n\tif (formattedMinutes.length === 1) formattedMinutes = `0${formattedMinutes}`\n\treturn formattedMinutes\n}\n\n/**\n * ### Get Month\n * - Returns the month with two digits\n * @param {number|Date} month The date to get month\n * @returns {string} The month with two digits\n */\nexport function getMonth(month: number | Date = d): string {\n\tif (typeof month !== 'number') month = month.getMonth() + 1\n\tlet formattedMonth = month.toString()\n\tif (formattedMonth.length === 1) formattedMonth = `0${formattedMonth}`\n\treturn formattedMonth\n}\n\nexport function getMonthIndexFromName(name: MonthName): number {\n\treturn monthNamesList.findIndex(monthName => monthName === name)\n}\n\n/**\n * ### Get Month Name\n * - Returns the name of the specified month\n * @param {Date} date A Date object representing the month to get the name of the month from. (Preset to the current date)\n * @returns {MonthName} The name of the specified month\n */\nexport function getMonthName(date: number | Date = d): MonthName {\n\tif (typeof date === 'number') return monthNamesList[date]\n\treturn monthNamesList[date.getMonth()]\n}\n\n/**\n * ### Get Next Month\n * - Returns the number of the following month from the specified month\n * @param {Date} date The Date object representing the month to get the following month from (Preset to current date)\n * @returns {number} The indexed month of the following month\n */\nexport function getNextMonth(date: Date = d): number {\n\tconst givenMonth = date.getMonth() // Get the month from date\n\t// Return the indexed month. min 0, max 11\n\treturn givenMonth === 11 ? 0 : givenMonth + 1\n}\n\n/**\n * ### Get Previous Month\n * - Returns the number of the previous month from the specified month\n * @param {Date} date The Date object representing the month to get the previous month from (Preset to current date)\n * @returns {number} The indexed month of the previous month\n */\nexport function getPreviousMonth(date: Date = d): number {\n\tconst givenMonth = date.getMonth() // Get the month from date\n\t// Return the indexed month. min 0, max 11\n\treturn givenMonth === 0 ? 11 : givenMonth - 1\n}\n\n/**\n * ### Get Seconds\n * - Returns the seconds with two digits\n * @param {number|Date} seconds The date to get seconds\n * @returns {string} The seconds with two digits\n */\nexport function getSeconds(seconds: number | Date = d): string {\n\tif (typeof seconds !== 'number') seconds = seconds.getSeconds()\n\tlet formattedSeconds = seconds.toString()\n\tif (formattedSeconds.length === 1) formattedSeconds = `0${formattedSeconds}`\n\treturn formattedSeconds\n}\n\n/**\n * ### Get User Readable Date\n * - Returns a string of the current date in a user-friendly way\n * - Includes `'Yesterday'`, '`Today'`, and `'Tomorrow'`\n * @param date (default: `new Date()`)\n * @returns {'Today'|'Tomorrow'|'Yesterday'|string} `'weekday, month day, year'` | `'Yesterday'` | `'Today'` | `'Tomorrow'`\n */\nexport function getUserReadableDate(date: Date = d): 'Today' | 'Tomorrow' | 'Yesterday' | string {\n\tconst dateTime = date.getTime()\n\n\tconst today = new Date(),\n\t\tisToday = dateTime === today.getTime()\n\n\tif (isToday) return 'Today'\n\n\tconst yesterday = new Date(today.getDate() - 1),\n\t\tisYesterday = dateTime === yesterday.getTime()\n\n\tif (isYesterday) return 'Yesterday'\n\n\tconst tomorrow = new Date(today.getDate() + 1),\n\t\tisTomorrow = dateTime === tomorrow.getTime()\n\n\tif (isTomorrow) return 'Tomorrow'\n\n\tconst thisYear = today.getFullYear(),\n\t\tisSameYear = date.getFullYear() === thisYear\n\n\tconst fullDateString = toFullDateString(date, {\n\t\tweekday: 'code',\n\t\tyear: !isSameYear,\n\t})\n\n\treturn fullDateString\n}\n\n/**\n * ### Get Weekday Name\n * - Returns the weekday name of the specified day\n * @param {number | Date} weekday A Date object or number representing the day to get the weekday name from. (Preset to the current date)\n * @returns {WeekdayName} The name of the specified weekday\n */\nexport function getWeekdayName(weekday: number | Date = d): WeekdayName {\n\tif (typeof weekday === 'number') return weekdayNamesList[weekday]\n\t// Return the name of the day of the week\n\treturn weekdayNamesList[weekday.getDay()]\n}\n\n/**\n * ### Get Years in Range\n * - Returns an array of years in between the specified minimum and maximum years\n * @param {number} minYear The minimum year\n * @param {number} maxYear The maximum year\n * @returns {number[]} Array of years\n */\nexport function getYearsInRange(minYear: number = 0, maxYear: number = year): number[] {\n\tconst yearList = []\n\n\tfor (let selectedYear = minYear; selectedYear <= maxYear; selectedYear++) {\n\t\tyearList.push(selectedYear)\n\t}\n\n\treturn yearList\n}\n\n/** Change how to display the weekday, month name, day of the month, and year. */\ntype ToFullDateStringOptionsProps = Partial<{\n\t/** Inclusion of the day of the month. (default: `true`) */\n\tday: boolean\n\t/** Inclusion of the month name. (default: `true`/`'full'`) */\n\tmonth: boolean | 'full' | 'code'\n\t/** Inclusion of the day of the week. (default: `true`/`'full'`) */\n\tweekday: boolean | 'full' | 'code'\n\t/** Inclusion of the year. (default: `true`) */\n\tyear: boolean | 'full' | 'code'\n}>\n\n/**\n * ### To Full Date String\n * - Returns a formatted string to display the date\n * @param {Date} date (default: `new Date()`)\n * @param {ToFullDateStringOptionsProps} options Change how to display the weekday, month name, day of the month, and year.\n * @returns {string} '`weekday`, `month` `day`, `year`'\n */\nexport function toFullDateString(date: Date = d, options?: ToFullDateStringOptionsProps): string {\n\tlet weekdayName: string = getWeekdayName(date),\n\t\tmonthName: string = getMonthName(date),\n\t\tdayOfMonth: number | string = date.getDate(),\n\t\tyear = date.getFullYear().toString()\n\n\tif (options) {\n\t\tconst includesWeekday = options.weekday !== false,\n\t\t\tincludesDay = options.day !== false,\n\t\t\tincludesMonth = options.month !== false,\n\t\t\tincludesYear = options.year !== false\n\n\t\tif (includesWeekday) {\n\t\t\tif (options.weekday === 'code') weekdayName = weekdayName.slice(0, 3)\n\n\t\t\tif (includesMonth || includesDay || includesYear) weekdayName += ', '\n\t\t} else {\n\t\t\tweekdayName = ''\n\t\t}\n\n\t\tif (includesMonth) {\n\t\t\tif (options.month === 'code') monthName = monthName.slice(0, 3)\n\n\t\t\tif (includesDay) monthName += ' '\n\t\t} else {\n\t\t\tmonthName = ''\n\t\t}\n\n\t\tif (!includesDay) dayOfMonth = ''\n\n\t\tif (includesYear) {\n\t\t\tif (options.year === 'code') year = year.slice(-2)\n\n\t\t\tif (includesMonth || includesDay) year = ', ' + year\n\t\t} else {\n\t\t\tyear = ''\n\t\t}\n\t}\n\n\treturn weekdayName + monthName + dayOfMonth + year\n}\n\n/**\n * ### Get User Readable Date From Timestampz\n * - Returns a string of the current date in a user-friendly way\n * - Includes `'Yesterday'`, '`Today'`, and `'Tomorrow'`\n * @param string\n * @returns {'Today'|'Tomorrow'|'Yesterday'|string} `'weekday, month day, year'` | `'Yesterday'` | `'Today'` | `'Tomorrow'`\n */\nexport function getUserReadableDateFromTimestampz(timestampz: string): 'Today' | 'Tomorrow' | 'Yesterday' | string {\n\tconst [date, time] = timestampz.split('T') || []\n\n\tconst [year, month, day] = date?.split('-').map(string => Number(string)) || []\n\n\tconst timezoneIsAheadOfUTC = time?.includes('+')\n\n\tconst [hms, timezone] = timezoneIsAheadOfUTC ? time?.split('+') : time?.split('-') || []\n\n\tconst [hours, minutes, seconds] = hms?.split(':').map(string => Number(string)) || []\n\n\tconst [timezoneHours, timezoneMinutes] = timezone?.split(':').map(string => Number(string)) || []\n\n\tconst dateAndTime = new Date(year, month - 1, day, hours, minutes, seconds),\n\t\tuserReadableDateAndTime = getUserReadableDate(dateAndTime)\n\n\treturn userReadableDateAndTime\n}\n\nexport function getLocalTime(time: string | [number, number]) {\n\tconst date = new Date(),\n\t\t[hours, minutes] = typeof time === 'string' ? time.split(':') : time\n\n\tconst timezone = getTimezone()\n\n\tconsole.log(timezone)\n\n\tdate.setUTCHours(Number(hours))\n\tdate.setMinutes(Number(minutes))\n\n\treturn date.toLocaleTimeString([], {\n\t\thour: 'numeric',\n\t\tminute: '2-digit',\n\t\thour12: true,\n\t})\n}\n\nexport function getTimezone() {\n\tconst date = new Date()\n\n\tconst timezonePart = Intl.DateTimeFormat('en-US', { timeZoneName: 'short' })\n\t\t.formatToParts(date)\n\t\t.find(part => part.type === 'timeZoneName')\n\n\treturn timezonePart ? timezonePart.value : ''\n}\n","import { Children, ElementType, Fragment, isValidElement, ReactElement, ReactNode } from 'react'\n\nexport function findComponentByType<P extends { children?: ReactNode; [key: string]: any } = { children?: ReactNode }>(\n\tchildren: ReactNode,\n\tcomponentType: ElementType,\n): ReactElement<P> | null {\n\tconst childrenArray = Children.toArray(children)\n\n\tfor (const child of childrenArray) {\n\t\tif (isValidElement(child) && child.type === componentType) return child as ReactElement<P>\n\t}\n\n\tfor (const child of childrenArray) {\n\t\tif (isValidElement(child)) {\n\t\t\tif (child.type === Fragment && (child as ReactElement<P>).props.children) {\n\t\t\t\tconst found = findComponentByType<P>((child as ReactElement<P>).props.children, componentType)\n\n\t\t\t\tif (found) return found as ReactElement<P>\n\t\t\t} else if ((child as ReactElement<P>).props.children) {\n\t\t\t\tconst found = findComponentByType<P>((child as ReactElement<P>).props.children, componentType)\n\n\t\t\t\tif (found) return found as ReactElement<P>\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null\n}\n","export function easeOutExpo(time: number, start: number, end: number, duration: number) {\n\treturn time == duration ? start + end : end * (-Math.pow(2, (-10 * time) / duration) + 1) + start\n}\n","export const emailRegex =\n\t/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\n/**\n * # Is Email\n * Checks whether the specified string is in email format\n */\nexport function isEmail(email: string) {\n\treturn emailRegex.test(email)\n}\n\nexport const telRegex =\n\t/(?:\\+1\\s|1\\s|)?\\d{3}\\.\\d{3}\\.\\d{4}|(?:\\+1\\s|1\\s|)?\\d{3}-\\d{3}-\\d{4}|(?:\\+1\\s|1\\s|)?\\(\\d{3}\\) \\d{3}-\\d{4}|(?:\\+1\\s|1\\s|\\+1|1|)?\\d{10}/\n\n/**\n * # Is Phone Number\n * Checks whether the specified string is in phone number format\n */\nexport function isPhoneNumber(tel: string) {\n\treturn telRegex.test(tel)\n}\n","/**\n * # Format Phone Number\n * Converts any string containing at least 10 numbers to a formatted phone number\n * @param {string} phoneNumber\n * @param options\n * @property {string} `countryCode`\n * @property {'continuous' | 'dot' | 'hyphenated' | 'none' | 'space' | 'standard'} `format`\n *\n * Input: a555b555c5555d\n *\n * @example\n * format: 'continuous'\n * countryCode: '1'\n * returns: +1 5555555555\n *\n * @example\n * format: 'dot'\n * returns: 555.555.5555\n *\n * @example\n * format: 'hyphenated'\n * returns: 555-555-5555\n *\n * @example\n * format: 'none'\n * countryCode: '1'\n * returns: +1 a555b555c5555d\n *\n * @example\n * format: 'space'\n * returns: 555 555 5555\n *\n * @example\n * format: 'standard' (default)\n * returns: (555) 555-5555\n *\n * @returns {string} string formatted\n */\nexport function formatPhoneNumber(\n\tphoneNumber: string,\n\toptions?: Partial<{\n\t\tcountryCode: string;\n\t\tformat: \"continuous\" | \"dot\" | \"hyphenated\" | \"none\" | \"space\" | \"standard\";\n\t}>,\n): string {\n\tconst format = options?.format || \"standard\";\n\n\tif (format !== \"none\") {\n\t\tphoneNumber = phoneNumber.replace(/\\D/g, \"\").slice(-10);\n\t}\n\n\tswitch (format) {\n\t\tcase \"dot\":\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split(\"\")\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 2) return `${char}.`;\n\t\t\t\t\tif (index === 5) return `${char}.`;\n\t\t\t\t\treturn char;\n\t\t\t\t})\n\t\t\t\t.join(\"\");\n\t\t\tbreak;\n\t\tcase \"hyphenated\":\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split(\"\")\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 2) return `${char}-`;\n\t\t\t\t\tif (index === 5) return `${char}-`;\n\t\t\t\t\treturn char;\n\t\t\t\t})\n\t\t\t\t.join(\"\");\n\t\t\tbreak;\n\t\tcase \"space\":\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split(\"\")\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 2) return `${char} `;\n\t\t\t\t\tif (index === 5) return `${char} `;\n\t\t\t\t\treturn char;\n\t\t\t\t})\n\t\t\t\t.join(\"\");\n\t\t\tbreak;\n\t\tcase \"standard\":\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split(\"\")\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 0) return `(${char}`;\n\t\t\t\t\tif (index === 2) return `${char}) `;\n\t\t\t\t\tif (index === 5) return `${char}-`;\n\t\t\t\t\treturn char;\n\t\t\t\t})\n\t\t\t\t.join(\"\");\n\t}\n\n\treturn `${options?.countryCode ? `+${options?.countryCode} ` : \"\"}` +\n\t\tphoneNumber;\n}\n\n/**\n * ### Split Camel Case\n * - Separates a camel case string with a joiner (default: ' ')\n * @param {string} string\n * @returns {string} string\n */\nexport function splitCamelCase(string: string, joiner: string = \" \"): string {\n\tif (string[0].match(/[A-Z0-9]/) || string.includes(\" \")) return string;\n\n\tlet lastChar = \"\";\n\n\treturn string.split(\"\")\n\t\t.map((char) => {\n\t\t\tlet returnedString = char;\n\n\t\t\tif (char.match(/[A-Z0-9]/)) returnedString = ` ${char}`;\n\n\t\t\tif (lastChar.match(/[0-9]/) && char.match(/[0-9]/)) returnedString = char;\n\n\t\t\tlastChar = char;\n\t\t\treturn returnedString;\n\t\t})\n\t\t.join(joiner);\n}\n\n/**\n * ### To Camel Case\n * - Converts any string to camel case based on spaces\n * - Eliminates no letter-number characters\n * @param {string} string\n * @returns {string} string\n */\nexport function toCamelCase(string: string, delimiter: string = \" \"): string {\n\tif (typeof string !== \"string\") return string;\n\n\treturn string\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9]/gi, delimiter)\n\t\t.split(delimiter)\n\t\t.map((str: string, index: number) =>\n\t\t\tindex === 0 ? str : str.substring(0, 1).toUpperCase() +\n\t\t\t\tstr.substring(1, str.length).toLowerCase()\n\t\t)\n\t\t.join(\"\");\n}\n\n/**\n * # To Lower Case\n * Converts a string to lowercase, and offers easy string replacements for creating snake case, kebab case, or your own.\n * @param str - The string to convert to lowercase.\n * @param options - Configuration options.\n * @param options[0] - The delimiter to split the string. Defaults to space.\n * @param options[1] - The string to join the parts back together. Defaults to space.\n * @returns The lowercase version of the input string, with the replacements, if provided.\n */\nexport function toLowerCase(\n\tstr: string,\n\t[delimiter, joiner]: [string | undefined, string | undefined],\n) {\n\treturn str.toLowerCase().replaceAll(delimiter || \" \", joiner || \" \");\n}\n\n/**\n * ### To Title Case\n * - Converts any string to title case based on spaces\n * @param {string} string\n * @returns {string} string\n */\nexport function toTitleCase(string: string, delimiter: string = \" \"): string {\n\tif (typeof string !== \"string\") return string;\n\n\treturn string\n\t\t.toLowerCase()\n\t\t.split(delimiter)\n\t\t.map((str) =>\n\t\t\tstr.substring(0, 1).toUpperCase() +\n\t\t\tstr.substring(1, str.length).toLowerCase()\n\t\t)\n\t\t.join(\" \");\n}\n","export function twSort(className: string) {\n\treturn className\n}\n","// * Types\nimport { AnyElementProps, ColorTheme, OneOf } from \"../types\";\nimport { ElementType, MouseEventHandler, ReactElement } from \"react\";\n\n// * Utilities\nimport { twMerge, twSort } from \"../utils\";\nimport { twJoin } from \"tailwind-merge\";\n\nexport type AnchorProps<TTag extends ElementType = \"a\"> =\n\t& AnyElementProps<TTag>\n\t& {\n\t\tdisabled?: boolean;\n\t};\n\nexport function Anchor<TTag extends ElementType = \"a\">({\n\tas,\n\tclassName,\n\tdisabled,\n\thref,\n\tonClick,\n\ttarget,\n\trel,\n\t...props\n}: AnchorProps<TTag>): ReactElement {\n\tconst isExternal = `${href}`.startsWith(\"http\"),\n\t\thasHash = `${href}`.includes(\"#\");\n\n\tconst handleClick: MouseEventHandler<HTMLAnchorElement> = (e) => {\n\t\tif (disabled) return e.preventDefault();\n\n\t\tonClick?.(e);\n\n\t\tsetTimeout(\n\t\t\t() => history.replaceState({}, document.title, location.pathname),\n\t\t\t100,\n\t\t);\n\t};\n\n\tconst AnchorElement = as || \"a\";\n\n\treturn (\n\t\t<AnchorElement\n\t\t\t{...props}\n\t\t\taria-disabled={disabled}\n\t\t\tclassName={twMerge(className, disabled && \"pointer-events-none\")}\n\t\t\thref={href}\n\t\t\ttarget={target || (isExternal ? \"_blank\" : \"_self\")}\n\t\t\tonClick={hasHash ? handleClick : onClick}\n\t\t\trel={rel !== undefined\n\t\t\t\t? rel === \"nofollow\" ? `${rel} noreferrer noopener` : `${rel} prefetch`\n\t\t\t\t: isExternal\n\t\t\t\t? \"nofollow noreferrer noopener\"\n\t\t\t\t: \"prefetch\"}\n\t\t/>\n\t);\n}\n\ntype ThemeColorOrClasses = OneOf<\n\t[\n\t\t{\n\t\t\t/**\n\t\t\t * - Fill Example: `'after:[--theme-color:var(--color-blue-500)]'`\n\t\t\t * - Multiline Fill Example: `'[--theme-color:var(--color-blue-500)]'`\n\t\t\t */\n\t\t\tthemeColor: string;\n\t\t},\n\t\t{\n\t\t\t/** This doesn't use any preset color theme classes. */\n\t\t\tclasses: string;\n\t\t},\n\t]\n>;\n\nexport type LinkProps<TTag extends ElementType = typeof Anchor> =\n\tAnyElementProps<\n\t\tTTag,\n\t\tOneOf<\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\ttype?:\n\t\t\t\t\t\t| \"center\"\n\t\t\t\t\t\t| \"lift\"\n\t\t\t\t\t\t| \"ltr\"\n\t\t\t\t\t\t| \"multiline\"\n\t\t\t\t\t\t| \"multiline-center\"\n\t\t\t\t\t\t| \"multiline-lift\"\n\t\t\t\t\t\t| \"multiline-ltr\"\n\t\t\t\t\t\t| \"multiline-rtl\"\n\t\t\t\t\t\t| \"multiline-static\"\n\t\t\t\t\t\t| \"normal\"\n\t\t\t\t\t\t| \"rtl\"\n\t\t\t\t\t\t| \"static\";\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype?:\n\t\t\t\t\t\t| \"fill\"\n\t\t\t\t\t\t| \"fill-lift\"\n\t\t\t\t\t\t| \"fill-ltr\"\n\t\t\t\t\t\t| \"fill-rtl\"\n\t\t\t\t\t\t| \"multiline-fill\"\n\t\t\t\t\t\t| \"multiline-fill-center\"\n\t\t\t\t\t\t| \"multiline-fill-ltr\"\n\t\t\t\t\t\t| \"multiline-fill-lift\"\n\t\t\t\t\t\t| \"multiline-fill-rtl\";\n\t\t\t\t} & ColorTheme,\n\t\t\t]\n\t\t>\n\t>;\n\n// * Styles\nconst baseClasses = twSort(\n\t\"isolate inline-block cursor-pointer duration-300 ease-exponential after:absolute after:left-1/2 after:-z-10 after:-translate-x-1/2 after:duration-500 active:scale-95 active:after:opacity-100\",\n);\n\nconst lineStaticClasses = twJoin(\n\tbaseClasses,\n\t\"whitespace-nowrap after:-bottom-0.5 after:w-[calc(100%+0.15rem)] after:rounded-full after:border-1 after:border-current\",\n);\n\nconst lineClasses = twJoin(\n\tlineStaticClasses,\n\t\"whitespace-nowrap transition-transform after:transition-transform after:ease-exponential\",\n);\n\nconst scaleXClasses =\n\t\"after:scale-x-0 pointer-fine:hover:after:scale-x-100 active:after:scale-x-100\";\nconst scaleYClasses =\n\t\"after:scale-y-0 pointer-fine:hover:after:scale-y-100 active:after:scale-y-100\";\n\nconst lineNormalClasses = twJoin([\n\tlineClasses,\n\tscaleYClasses,\n\t\"after:origin-bottom after:translate-y-0.5 active:after:translate-y-0 pointer-fine:hover:after:translate-y-0\",\n]);\n\nconst lineLtrClasses = twJoin([\n\tlineClasses,\n\tscaleXClasses,\n\t\"after:origin-left\",\n]);\n\nconst lineRtlClasses = twJoin([\n\tlineClasses,\n\tscaleXClasses,\n\t\"after:origin-right\",\n]);\n\nconst lineCenterClasses = twJoin([lineClasses, scaleXClasses]);\n\nconst lineLiftClasses = twJoin([\n\tlineClasses,\n\tscaleYClasses,\n\t\"after:origin-bottom after:translate-y-1 after:scale-x-75 active:after:translate-y-0 active:after:scale-x-100 pointer-fine:hover:after:translate-y-0 pointer-fine:hover:after:scale-x-100\",\n]);\n\nconst fillClasses = twJoin(\n\tbaseClasses,\n\t\"whitespace-nowrap transition-[transform,color] after:top-1/2 after:h-[calc(100%+0.05rem)] after:w-[calc(100%+0.25rem)] after:-translate-y-1/2 after:rounded after:ease-exponential active:text-zinc-50 pointer-fine:hover:text-zinc-50\",\n);\n\n// Define theme-specific fill color transition classes\nconst getFillColorTransitionClasses = (\n\ttheme: LinkProps[\"theme\"] = \"blue\",\n\tcustomTheme?: ThemeColorOrClasses,\n) => {\n\tlet fillColorTransitionClasses = twJoin(\n\t\tfillClasses,\n\t\t\"transition-transform after:bg-(--theme-color)\",\n\t);\n\n\tswitch (theme) {\n\t\tcase \"blue\":\n\t\t\tfillColorTransitionClasses = twJoin(\n\t\t\t\tfillColorTransitionClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-blue)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"brown\":\n\t\t\tfillColorTransitionClasses = twJoin(\n\t\t\t\tfillColorTransitionClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-brow)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"green\":\n\t\t\tfillColorTransitionClasses = twJoin(\n\t\t\t\tfillColorTransitionClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-green)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"grey\":\n\t\t\tfillColorTransitionClasses = twJoin(\n\t\t\t\tfillColorTransitionClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-grey)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"sky-blue\":\n\t\t\tfillColorTransitionClasses = twJoin(\n\t\t\t\tfillColorTransitionClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-sky-blue)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"magenta\":\n\t\t\tfillColorTransitionClasses = twJoin(\n\t\t\t\tfillColorTransitionClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-magenta)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"orange\":\n\t\t\tfillColorTransitionClasses = twJoin(\n\t\t\t\tfillColorTransitionClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-orange)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"pink\":\n\t\t\tfillColorTransitionClasses = twJoin(\n\t\t\t\tfillColorTransitionClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-pink)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"purple\":\n\t\t\tfillColorTransitionClasses = twJoin(\n\t\t\t\tfillColorTransitionClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-purple)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"red\":\n\t\t\tfillColorTransitionClasses = twJoin(\n\t\t\t\tfillColorTransitionClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-red)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"violet\":\n\t\t\tfillColorTransitionClasses = twJoin(\n\t\t\t\tfillColorTransitionClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-violet)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"yellow\":\n\t\t\tfillColorTransitionClasses = twJoin(\n\t\t\t\tfillColorTransitionClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-yellow)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"custom\":\n\t\t\tif (\n\t\t\t\tcustomTheme && customTheme.themeColor &&\n\t\t\t\t!customTheme.themeColor.includes(\"after:[--theme-color:\")\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"`customTheme.themeColor` must modify the `--theme-color` variable on the ::after pseudo element. Otherwise, please use `customTheme.classes`.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfillColorTransitionClasses = customTheme!.themeColor\n\t\t\t\t? twMerge(fillColorTransitionClasses, customTheme!.themeColor)\n\t\t\t\t: twMerge(fillClasses, customTheme!.classes);\n\t\t\tbreak;\n\t}\n\n\treturn fillColorTransitionClasses;\n};\n\n// Define theme-specific fill center classes\nconst getFillCenterClasses = (\n\ttheme: LinkProps[\"theme\"] = \"blue\",\n\tcustomTheme?: ThemeColorOrClasses,\n) => {\n\tlet fillCenterColorClasses = twJoin(\n\t\tfillClasses,\n\t\t\"after:scale-x-50 after:scale-y-[0.25] after:bg-(--theme-color)/0 after:transition-[transform,background-color] active:after:scale-x-100 active:after:scale-y-100 active:after:bg-(--theme-color) pointer-fine:hover:after:scale-x-100 pointer-fine:hover:after:scale-y-100 pointer-fine:hover:after:bg-(--theme-color)\",\n\t);\n\n\tswitch (theme) {\n\t\tcase \"blue\":\n\t\t\tfillCenterColorClasses = twJoin(\n\t\t\t\tfillCenterColorClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-blue)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"brown\":\n\t\t\tfillCenterColorClasses = twJoin(\n\t\t\t\tfillCenterColorClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-brown)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"green\":\n\t\t\tfillCenterColorClasses = twJoin(\n\t\t\t\tfillCenterColorClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-green)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"grey\":\n\t\t\tfillCenterColorClasses = twJoin(\n\t\t\t\tfillCenterColorClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-grey)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"sky-blue\":\n\t\t\tfillCenterColorClasses = twJoin(\n\t\t\t\tfillCenterColorClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-sky-blue)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"magenta\":\n\t\t\tfillCenterColorClasses = twJoin(\n\t\t\t\tfillCenterColorClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-magenta)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"orange\":\n\t\t\tfillCenterColorClasses = twJoin(\n\t\t\t\tfillCenterColorClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-orange)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"pink\":\n\t\t\tfillCenterColorClasses = twJoin(\n\t\t\t\tfillCenterColorClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-pink)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"purple\":\n\t\t\tfillCenterColorClasses = twJoin(\n\t\t\t\tfillCenterColorClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-purple)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"red\":\n\t\t\tfillCenterColorClasses = twJoin(\n\t\t\t\tfillCenterColorClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-red)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"violet\":\n\t\t\tfillCenterColorClasses = twJoin(\n\t\t\t\tfillCenterColorClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-violet)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"yellow\":\n\t\t\tfillCenterColorClasses = twJoin(\n\t\t\t\tfillCenterColorClasses,\n\t\t\t\t\"after:[--theme-color:var(--color-ui-yellow)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"custom\":\n\t\t\tif (\n\t\t\t\tcustomTheme && customTheme.themeColor &&\n\t\t\t\t!customTheme.themeColor.includes(\"after:[--theme-color:\")\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"`customTheme.themeColor` must modify the `--theme-color` variable on the ::after pseudo element. Otherwise, please use `customTheme.classes`.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfillCenterColorClasses = customTheme!.themeColor\n\t\t\t\t? twMerge(fillCenterColorClasses, customTheme!.themeColor)\n\t\t\t\t: twMerge(fillClasses, customTheme!.classes);\n\t\t\tbreak;\n\t}\n\n\treturn fillCenterColorClasses;\n};\n\nconst multilineBaseClasses = twSort(\n\t\"bg-linear-to-r from-current to-current bg-no-repeat active:scale-95\",\n);\n\nconst multilineLineStaticClasses = \"underline\";\nconst multilineNormalClasses = twSort(\n\t\"underline-offset-1 active:underline pointer-fine:hover:underline\",\n);\n\nconst multilineClasses = twJoin(\n\tmultilineBaseClasses,\n\t\"duration-500 ease-exponential\",\n);\n\nconst multilineLineClasses = twJoin(\n\tmultilineClasses,\n\t\"bg-[position:0%_100%] px-px pb-px transition-[background-size]\",\n);\n\nconst multilineXClasses = twJoin(\n\tmultilineLineClasses,\n\t\"bg-[size:0%_2px] focus-visible:bg-[size:100%_2px] active:bg-[size:100%_2px] pointer-fine:hover:bg-[size:100%_2px]\",\n);\n\nconst multilineLineRtlClasses = twJoin([\n\tmultilineXClasses,\n\t\"bg-[position:100%_100%]\",\n]);\n\nconst multilineLineCenterClasses = twJoin([\n\tmultilineXClasses,\n\t\"bg-[position:50%_100%]\",\n]);\n\nconst multilineLineLiftClasses = twJoin(\n\tmultilineLineClasses,\n\t\"bg-[size:auto_0px] focus-visible:bg-[size:auto_2px] active:bg-[size:auto_2px] pointer-fine:hover:bg-[size:auto_2px]\",\n);\n\nconst multilineFillBaseClasses = twJoin(\n\tmultilineBaseClasses,\n\t\"rounded px-0.5 py-0.75 focus-visible:text-zinc-50 active:text-zinc-50 pointer-fine:hover:text-zinc-50\",\n);\n\nconst getMultilineFillColorClasses = (\n\ttheme: LinkProps[\"theme\"] = \"blue\",\n\tcustomTheme?: ThemeColorOrClasses,\n) => {\n\tlet multilineFillColorClasses = twJoin(\n\t\tmultilineFillBaseClasses,\n\t\t\"from-(--theme-color) to-(--theme-color) transition-[background-size,color]\",\n\t);\n\n\tswitch (theme) {\n\t\tcase \"blue\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-blue)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"brown\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-brown)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"green\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-green)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"grey\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-grey)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"sky-blue\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-sky-blue)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"magenta\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-magenta)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"orange\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-orange)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"pink\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-pink)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"purple\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-purple)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"red\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-red)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"violet\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-violet)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"yellow\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-yellow)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"custom\":\n\t\t\tif (\n\t\t\t\tcustomTheme && customTheme.themeColor &&\n\t\t\t\t!customTheme.themeColor.includes(\"[--theme-color:\")\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"`customTheme.themeColor` must modify the `--theme-color` variable. Otherwise, please use `customTheme.classes`.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tmultilineFillColorClasses = customTheme!.themeColor\n\t\t\t\t? twMerge(multilineFillColorClasses, customTheme!.themeColor)\n\t\t\t\t: twMerge(multilineFillBaseClasses, customTheme!.classes);\n\t\t\tbreak;\n\t}\n\n\treturn multilineFillColorClasses;\n};\n\nconst getMultilineFillClasses = (\n\ttheme: LinkProps[\"theme\"] = \"blue\",\n\tcustomTheme?: ThemeColorOrClasses,\n) => {\n\tlet multilineFillColorClasses = twJoin(\n\t\tmultilineFillBaseClasses,\n\t\t\"from-(--theme-color)/0 to-(--theme-color)/0 bg-[size:50%_0px] bg-[position:50%_50%] transition-[background-size,background-image,color] focus-visible:from-(--theme-color) focus-visible:to-(--theme-color) focus-visible:bg-[size:100%_100%] active:from-(--theme-color) active:to-(--theme-color) active:bg-[size:100%_100%] contrast-more:from-(--theme-color)/0 pointer-fine:hover:from-(--theme-color) pointer-fine:hover:to-(--theme-color) pointer-fine:hover:bg-[size:100%_100%]\",\n\t);\n\n\tswitch (theme) {\n\t\tcase \"blue\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-blue)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"brown\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-brown)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"green\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-green)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"grey\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-grey)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"sky-blue\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-sky-blue)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"magenta\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-magenta)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"orange\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-orange)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"pink\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-pink)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"purple\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-purple)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"red\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-red)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"violet\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-violet)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"yellow\":\n\t\t\tmultilineFillColorClasses = twJoin(\n\t\t\t\tmultilineFillColorClasses,\n\t\t\t\t\"[--theme-color:var(--color-ui-yellow)]\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"custom\":\n\t\t\tif (\n\t\t\t\tcustomTheme && customTheme.themeColor &&\n\t\t\t\t!customTheme.themeColor.includes(\"[--theme-color:\")\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"`customTheme.themeColor` must modify the `--theme-color` variable. Otherwise, please use `customTheme.classes`.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tmultilineFillColorClasses = customTheme!.themeColor\n\t\t\t\t? twMerge(multilineFillColorClasses, customTheme!.themeColor)\n\t\t\t\t: twMerge(multilineFillBaseClasses, customTheme!.classes);\n\t\t\tbreak;\n\t}\n\n\treturn multilineFillColorClasses;\n};\n\nconst getMultilineFillLiftClasses = (\n\ttheme: LinkProps[\"theme\"] = \"blue\",\n\tcustomTheme?: ThemeColorOrClasses,\n) => {\n\treturn twJoin(\n\t\tgetMultilineFillColorClasses(theme, customTheme),\n\t\t\"bg-[size:auto_0px] bg-[position:50%_100%] focus-visible:bg-[size:auto_100%] active:bg-[size:auto_100%] pointer-fine:hover:bg-[size:auto_100%]\",\n\t);\n};\n\nconst getMultilineFillXClasses = (\n\ttheme: LinkProps[\"theme\"] = \"blue\",\n\tcustomTheme?: ThemeColorOrClasses,\n) => {\n\treturn twJoin(\n\t\tgetMultilineFillColorClasses(theme, customTheme),\n\t\t\"bg-[size:0%_100%] focus-visible:bg-[size:100%_100%] active:bg-[size:100%_100%] pointer-fine:hover:bg-[size:100%_100%]\",\n\t);\n};\n\nconst getMultilineFillRtlClasses = (\n\ttheme: LinkProps[\"theme\"] = \"blue\",\n\tcustomTheme?: ThemeColorOrClasses,\n) => {\n\treturn twJoin(\n\t\tgetMultilineFillXClasses(theme, customTheme),\n\t\t\"bg-[position:100%_auto]\",\n\t);\n};\n\nconst getMultilineFillCenterClasses = (\n\ttheme: LinkProps[\"theme\"] = \"blue\",\n\tcustomTheme?: ThemeColorOrClasses,\n) => {\n\treturn twJoin(\n\t\tgetMultilineFillXClasses(theme, customTheme),\n\t\t\"bg-[position:50%_auto]\",\n\t);\n};\n\nexport function getLinkClasses(\n\t{ customTheme, theme, type }: Pick<\n\t\tLinkProps,\n\t\t\"customTheme\" | \"theme\" | \"type\"\n\t>,\n) {\n\tswitch (type) {\n\t\tcase \"static\":\n\t\t\treturn lineStaticClasses;\n\t\tcase \"ltr\":\n\t\t\treturn lineLtrClasses;\n\t\tcase \"rtl\":\n\t\t\treturn lineRtlClasses;\n\t\tcase \"center\":\n\t\t\treturn lineCenterClasses;\n\t\tcase \"lift\":\n\t\t\treturn lineLiftClasses;\n\t\tcase \"fill\":\n\t\t\treturn getFillCenterClasses(theme, customTheme);\n\t\tcase \"fill-ltr\":\n\t\t\treturn twJoin([\n\t\t\t\tgetFillColorTransitionClasses(theme, customTheme),\n\t\t\t\tscaleXClasses,\n\t\t\t\t\"after:origin-left\",\n\t\t\t]);\n\t\tcase \"fill-rtl\":\n\t\t\treturn twJoin([\n\t\t\t\tgetFillColorTransitionClasses(theme, customTheme),\n\t\t\t\tscaleXClasses,\n\t\t\t\t\"after:origin-right\",\n\t\t\t]);\n\t\tcase \"fill-lift\":\n\t\t\treturn twJoin([\n\t\t\t\tgetFillColorTransitionClasses(theme, customTheme),\n\t\t\t\tscaleYClasses,\n\t\t\t\t\"after:origin-bottom\",\n\t\t\t]);\n\t\tcase \"multiline\":\n\t\t\treturn multilineNormalClasses;\n\t\tcase \"multiline-static\":\n\t\t\treturn multilineLineStaticClasses;\n\t\tcase \"multiline-ltr\":\n\t\t\treturn multilineXClasses;\n\t\tcase \"multiline-rtl\":\n\t\t\treturn multilineLineRtlClasses;\n\t\tcase \"multiline-center\":\n\t\t\treturn multilineLineCenterClasses;\n\t\tcase \"multiline-lift\":\n\t\t\treturn multilineLineLiftClasses;\n\t\tcase \"multiline-fill\":\n\t\t\treturn getMultilineFillClasses(theme, customTheme);\n\t\tcase \"multiline-fill-ltr\":\n\t\t\treturn getMultilineFillXClasses(theme, customTheme);\n\t\tcase \"multiline-fill-rtl\":\n\t\t\treturn getMultilineFillRtlClasses(theme, customTheme);\n\t\tcase \"multiline-fill-center\":\n\t\t\treturn getMultilineFillCenterClasses(theme, customTheme);\n\t\tcase \"multiline-fill-lift\":\n\t\t\treturn getMultilineFillLiftClasses(theme, customTheme);\n\t\tdefault:\n\t\t\treturn lineNormalClasses;\n\t}\n}\n\n/**\n * # Link\n *\n * - A component for rendering links with various styles and options.\n * - Utilizes the Next.js `Link` component and provides additional functionality.\n *\n * ---\n *\n * ## Styles\n *\n * This component includes various classes to style the link. The styles are divided into two types:\n *\n * - Line styles: These styles add a line underneath the link, and include variations for different positions and orientations.\n * - Fill styles: These styles add a background color behind the link, and include variations for different positions and orientations.\n * - Multiline styles: These styles seek to accomplish the same as the line and fill styles, while offering multiline support.\n *\n * ---\n *\n * ## Examples\n *\n * @example\n * <Link href='/about' type='ltr' title='About Us'>Learn more about our company</Link>\n *\n * @example\n * <Link href='/about' type='fill-ltr' title='About Us'>Learn more about our company</Link>\n *\n * @example\n * <Link href='/about' type='fill-ltr' theme='red' title='About Us'>Learn more about our company</Link>\n */\nexport function Link<TTag extends ElementType = typeof Anchor>({\n\tas,\n\tclassName,\n\tcustomTheme,\n\ttheme = \"blue\",\n\ttype,\n\t...props\n}: LinkProps<TTag>): ReactElement {\n\tconst linkClasses = getLinkClasses({ customTheme, theme, type });\n\n\tconst LinkElement = as || Anchor;\n\n\treturn <LinkElement {...props} className={twMerge(linkClasses, className)} />;\n}\n\nexport type ExtendedLinkConfig = {\n\t/** Modifies the default element that is rendered. The `as` prop on the component still overrides the default set here. */\n\tas?: ElementType;\n\t/** Adds default classes. */\n\tclassName?: string;\n\t/** Sets the default theme. */\n\tdefaultTheme?: ColorTheme[\"theme\"] | string;\n\t/** Sets the default for the `type` prop. */\n\ttype?: LinkProps[\"type\"];\n\t/** Add more theme options. */\n\ttheme?: {\n\t\t[themeName: string]: {\n\t\t\t/** Custom theme configuration - supports both multiline and regular link theme formats */\n\t\t\tcustomTheme: Omit<ThemeColorOrClasses, \"themeColor\"> & {\n\t\t\t\tthemeColor?: {\n\t\t\t\t\t/** Example: `'after:[--theme-color:var(--color-blue-500)]'` */\n\t\t\t\t\tfill: string;\n\t\t\t\t\t/** Example: `'[--theme-color:var(--color-blue-500)]'` */\n\t\t\t\t\tmultilineFill: string;\n\t\t\t\t};\n\t\t\t};\n\t\t\t/** Additional CSS classes to apply */\n\t\t\tclassName?: string;\n\t\t};\n\t};\n};\n\ntype ExtendedThemeNames<T extends ExtendedLinkConfig> = T[\"theme\"] extends\n\tRecord<string, unknown> ? keyof T[\"theme\"] : never;\n\nexport type ExtendedLinkProps<\n\tTExtendedConfig extends ExtendedLinkConfig,\n\tTTag extends ElementType = typeof Anchor,\n> = Omit<LinkProps<TTag>, \"theme\" | \"customTheme\"> & {\n\ttheme?: LinkProps<TTag>[\"theme\"] | ExtendedThemeNames<TExtendedConfig>;\n\tcustomTheme?: LinkProps<TTag>[\"customTheme\"];\n};\n\n/**\n * # createLink\n * Creates an extended Link component with additional theme options.\n *\n * @param config - Configuration object defining new themes and defaults\n * @returns A new Link component with extended theme support\n *\n * @example\n * ```tsx\n * const MyLink = createLink({\n * as: NextLink,\n * className: 'font-bold',\n * type: 'fill',\n * theme: {\n * primary: {\n * customTheme: {\n * fill: 'after:[--theme-color:var(--color-primary-500)]',\n * multilineFill: '[--theme-color:var(--color-primary-500)]'\n * },\n * className: 'text-white'\n * }\n * }\n * })\n * ```\n */\nexport function createLink<TExtendedConfig extends ExtendedLinkConfig>(\n\tconfig: TExtendedConfig,\n) {\n\treturn function ExtendedLink<TTag extends ElementType = typeof Anchor>({\n\t\ttheme,\n\t\tclassName,\n\t\tcustomTheme,\n\t\ttype,\n\t\tas,\n\t\t...props\n\t}: ExtendedLinkProps<TExtendedConfig, TTag>) {\n\t\tconst finalType: string | undefined = type !== undefined\n\t\t\t\t? type\n\t\t\t\t: config.type,\n\t\t\tfinalTheme = theme !== undefined ? theme : config.defaultTheme;\n\n\t\tconst configClassName = config.className;\n\n\t\tconst shouldOverrideElement = !Boolean(as) && Boolean(config.as);\n\n\t\tconst linkProps:\n\t\t\t& Omit<\n\t\t\t\tExtendedLinkProps<TExtendedConfig, TTag>,\n\t\t\t\t\"as\" | \"theme\" | \"customTheme\" | \"type\" | \"className\"\n\t\t\t>\n\t\t\t& { as?: ElementType } = {\n\t\t\t\t...props,\n\t\t\t\tclassName: undefined,\n\t\t\t\tcustomTheme: undefined,\n\t\t\t\ttype: finalType,\n\t\t\t};\n\n\t\tif (shouldOverrideElement) {\n\t\t\tlinkProps.as = config.as;\n\t\t} else if (as) {\n\t\t\tlinkProps.as = as;\n\t\t}\n\n\t\tif (\n\t\t\tfinalTheme && typeof finalTheme === \"string\" && config.theme &&\n\t\t\tfinalTheme in config.theme\n\t\t) {\n\t\t\tconst extendedTheme = config.theme[finalTheme];\n\n\t\t\tif (customTheme) {\n\t\t\t\treturn (\n\t\t\t\t\t<Link\n\t\t\t\t\t\t{...linkProps}\n\t\t\t\t\t\ttheme=\"custom\"\n\t\t\t\t\t\tcustomTheme={customTheme}\n\t\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\tconfigClassName,\n\t\t\t\t\t\t\textendedTheme.className,\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tlet resolvedCustomTheme: ThemeColorOrClasses;\n\n\t\t\tif (extendedTheme.customTheme.themeColor) {\n\t\t\t\tconst isMultilineType = finalType\n\t\t\t\t\t? finalType.includes(\"multiline\")\n\t\t\t\t\t: false;\n\n\t\t\t\tresolvedCustomTheme = {\n\t\t\t\t\tthemeColor: isMultilineType\n\t\t\t\t\t\t? extendedTheme.customTheme.themeColor.multilineFill\n\t\t\t\t\t\t: extendedTheme.customTheme.themeColor.fill,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tresolvedCustomTheme = {\n\t\t\t\t\tclasses: extendedTheme.customTheme.classes!,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<Link\n\t\t\t\t\t{...linkProps}\n\t\t\t\t\ttheme=\"custom\"\n\t\t\t\t\tcustomTheme={resolvedCustomTheme}\n\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\tconfigClassName,\n\t\t\t\t\t\textendedTheme.className,\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<Link\n\t\t\t\t{...linkProps}\n\t\t\t\ttheme={finalTheme as LinkProps<TTag>[\"theme\"]}\n\t\t\t\tclassName={twMerge(configClassName, className)}\n\t\t\t\tcustomTheme={customTheme}\n\t\t\t/>\n\t\t);\n\t};\n}\n","// * Types\nimport { Url, UrlObject } from 'node:url'\nimport { ElementType, ReactElement } from 'react'\nimport { AnyElementProps, ColorTheme, OneOf } from '../types'\n\ntype LinkOrOther<TTag extends ElementType = typeof HeadlessButton> = OneOf<\n\t[AnyElementProps<TTag> & { href?: never }, AnyElementProps<typeof Anchor> & { href?: string | Url | UrlObject }]\n>\n\nexport type ButtonPadding = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport type ButtonBorderRadius = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full'\n\nexport type ButtonProps<TTag extends ElementType = typeof HeadlessButton> = LinkOrOther<TTag> &\n\tColorTheme & {\n\t\t/** Customizes the theme color to a sensible gradient. */\n\t\tgradient?: boolean\n\t\t/** The size of the element based on padding. */\n\t\tpadding?: ButtonPadding\n\t\t/** The size of the border radius. */\n\t\trounded?: ButtonBorderRadius\n\t}\n\nexport type ExtendedButtonConfig = {\n\t/** Modifies the default(s) for what element is rendered. The `as` prop on the component still overrides the default(s) set here. */\n\tas?:\n\t\t| ElementType\n\t\t| {\n\t\t\t\t/** Modifies the base link element when `href` is present. */\n\t\t\t\tlink?: ElementType\n\t\t\t\t/** Modifies the base button element. */\n\t\t\t\tdefault?: ElementType\n\t\t }\n\t/** Adds default classes. */\n\tclassName?: string\n\tdefaultTheme?: ColorTheme['theme'] | string\n\t/** Sets the default for the `gradient` prop. */\n\tgradient?: boolean\n\t/** Sets the default for the `padding` prop. */\n\tpadding?: ButtonPadding\n\t/** Sets the default for the `rounded` prop. */\n\trounded?: ButtonBorderRadius\n\t/** Add more theme options. */\n\ttheme?: {\n\t\t[themeName: string]: {\n\t\t\t/** Custom theme configuration */\n\t\t\tcustomTheme: NonNullable<ColorTheme['customTheme']>\n\t\t\t/** Additional CSS classes to apply */\n\t\t\tclassName?: string\n\t\t}\n\t}\n}\n\ntype ExtendedThemeNames<T extends ExtendedButtonConfig> =\n\tT['theme'] extends Record<string, unknown> ? keyof T['theme'] : never\n\nexport type ExtendedButtonProps<\n\tTExtendedConfig extends ExtendedButtonConfig,\n\tTTag extends ElementType = typeof HeadlessButton,\n> = Omit<ButtonProps<TTag>, 'theme' | 'customTheme'> & {\n\ttheme?: ButtonProps<TTag>['theme'] | ExtendedThemeNames<TExtendedConfig>\n\tcustomTheme?: ButtonProps<TTag>['customTheme']\n}\n\n// * Components\nimport { Anchor } from './link'\nimport { Button as HeadlessButton } from '@headlessui/react'\n\n// * Utilities\nimport { twMerge, twSort } from '../utils'\n\n/**\n * # Button\n * - A pre-styled button with utility props for easy customization depending on use case.\n */\nexport function Button<TTag extends ElementType = typeof HeadlessButton>({\n\tclassName,\n\tcustomTheme,\n\tgradient = false,\n\tpadding = 'md',\n\trounded = 'lg',\n\ttheme = 'blue',\n\t...props\n}: ButtonProps<TTag>): ReactElement {\n\tconst getPaddingClasses = () => {\n\t\tswitch (padding) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'px-2 py-0.5'\n\t\t\tcase 'sm':\n\t\t\t\treturn 'px-4 py-1'\n\t\t\tcase 'md':\n\t\t\t\treturn 'px-6 py-1.5'\n\t\t\tcase 'lg':\n\t\t\t\treturn 'px-8 py-2'\n\t\t\tcase 'xl':\n\t\t\t\treturn 'px-12 py-3'\n\t\t}\n\t}\n\n\tconst getRoundedClasses = () => {\n\t\tswitch (rounded) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'rounded-sm'\n\t\t\tcase 'sm':\n\t\t\t\treturn 'rounded-md'\n\t\t\tcase 'md':\n\t\t\t\treturn 'rounded-lg'\n\t\t\tcase 'lg':\n\t\t\t\treturn 'rounded-xl'\n\t\t\tcase 'xl':\n\t\t\t\treturn 'rounded-3xl'\n\t\t\tcase 'full':\n\t\t\t\treturn 'rounded-full'\n\t\t}\n\t}\n\n\tconst getThemeColorVariable = () => {\n\t\tswitch (theme) {\n\t\t\tcase 'blue':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-blue)]')\n\t\t\tcase 'brown':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-brown)]')\n\t\t\tcase 'green':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-green)]')\n\t\t\tcase 'grey':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-grey)]')\n\t\t\tcase 'magenta':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-magenta)]')\n\t\t\tcase 'orange':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-orange)]')\n\t\t\tcase 'pink':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-pink)]')\n\t\t\tcase 'purple':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-purple)]')\n\t\t\tcase 'red':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-red)]')\n\t\t\tcase 'sky-blue':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-sky-blue)]')\n\t\t\tcase 'violet':\n\t\t\t\treturn twSort('text-white [--theme-color:var(--color-ui-violet)]')\n\t\t\tcase 'yellow':\n\t\t\t\treturn twSort('text-black [--theme-color:var(--color-ui-yellow)]')\n\t\t\tcase 'custom':\n\t\t\t\tif (customTheme && customTheme.themeColor && !customTheme.themeColor.includes('[--theme-color:'))\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'`customTheme.themeColor` must modify the `--theme-color` variable. Otherwise, please use `customTheme.classes`.',\n\t\t\t\t\t)\n\n\t\t\t\treturn customTheme!.themeColor || customTheme!.classes\n\t\t}\n\t}\n\n\tconst paddingClasses = getPaddingClasses(),\n\t\troundedClasses = getRoundedClasses(),\n\t\tthemeColorVariable = getThemeColorVariable()\n\n\tconst themeClasses =\n\t\tcustomTheme && customTheme.classes\n\t\t\t? customTheme.classes\n\t\t\t: [\n\t\t\t\t\tgradient\n\t\t\t\t\t\t? twSort(\n\t\t\t\t\t\t\t\t'bg-linear-to-t from-[color-mix(in_oklab,var(--theme-color),var(--color-black)_20%)] via-(--theme-color) to-[color-mix(in_oklab,var(--theme-color),var(--color-white)_20%)] bg-[size:100%_200%] transition-[scale,background-position-y] [background-position-y:50%] active:[background-position-y:100%] data-focus:[background-position-y:0%] pointer-fine:hover:[background-position-y:0%] pointer-fine:hover:active:[background-position-y:100%]',\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: twSort(\n\t\t\t\t\t\t\t\t'bg-(--theme-color) transition-[scale,background-color] active:bg-[color-mix(in_oklab,var(--theme-color),var(--color-black)_10%)] data-focus:bg-[color-mix(in_oklab,var(--theme-color),var(--color-white)_10%)] pointer-fine:hover:bg-[color-mix(in_oklab,var(--theme-color),var(--color-white)_10%)] pointer-fine:hover:active:bg-[color-mix(in_oklab,var(--theme-color),var(--color-black)_10%)]',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t'shadow-(--theme-color)/25',\n\t\t\t\t].join(' ')\n\n\tconst buttonClasses = twMerge([\n\t\t'block w-fit min-w-fit text-center font-semibold shadow-lg duration-300 ease-exponential active:scale-99 data-focus:scale-101 pointer-fine:hover:scale-101 pointer-fine:hover:active:scale-99',\n\t\tpaddingClasses,\n\t\troundedClasses,\n\t\tthemeColorVariable,\n\t\tthemeClasses,\n\t\tclassName,\n\t])\n\n\tif ('href' in props && !props.as && props.href)\n\t\treturn <HeadlessButton<typeof Anchor> {...props} as={Anchor} className={buttonClasses} />\n\n\treturn <HeadlessButton<'button'> {...props} className={buttonClasses} />\n}\n\n/**\n * # createButton\n * Creates an extended Button component with additional theme options.\n *\n * @param extendedThemes - Configuration object defining new themes\n * @returns A new Button component with extended theme support\n *\n * @example\n * ```tsx\n * const MyButton = createButton({\n * as: {\n * default: 'div',\n * link: NextLink\n * },\n * className: 'min-w-64',\n * padding: 'sm',\n * rounded: 'full',\n * theme: {\n * primary: {\n * customTheme: { themeColor: '[--theme-color:var(--color-primary-500)]' },\n * className: 'text-white'\n * }\n * }\n * })\n * ```\n */\nexport function createButton<TExtendedConfig extends ExtendedButtonConfig>(config: TExtendedConfig) {\n\treturn function ExtendedButton<TTag extends ElementType = typeof HeadlessButton>({\n\t\ttheme,\n\t\tclassName,\n\t\tcustomTheme,\n\t\tgradient,\n\t\tpadding,\n\t\trounded,\n\t\tas,\n\t\t...props\n\t}: ExtendedButtonProps<TExtendedConfig, TTag>) {\n\t\tconst finalGradient = gradient !== undefined ? gradient : config.gradient,\n\t\t\tfinalPadding = padding !== undefined ? padding : config.padding,\n\t\t\tfinalRounded = rounded !== undefined ? rounded : config.rounded,\n\t\t\tfinalTheme = theme !== undefined ? theme : config.defaultTheme\n\n\t\tconst configClassName = config.className\n\n\t\tconst shouldOverrideElement = !Boolean(as) && Boolean(config.as)\n\n\t\tconst getOverrideElement = () => {\n\t\t\tif (!config.as) return undefined\n\n\t\t\tif (typeof config.as === 'function' || typeof config.as === 'string') return config.as\n\n\t\t\tconst hasHref = 'href' in props && props.href\n\t\t\tif (hasHref && config.as.link) {\n\t\t\t\treturn config.as.link\n\t\t\t} else if (!hasHref && config.as.default) {\n\t\t\t\treturn config.as.default\n\t\t\t}\n\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst buttonProps: Omit<\n\t\t\tExtendedButtonProps<TExtendedConfig, TTag>,\n\t\t\t'as' | 'theme' | 'customTheme' | 'gradient' | 'padding' | 'rounded' | 'className'\n\t\t> & { as?: ElementType } = {\n\t\t\t...props,\n\t\t\tclassName: undefined,\n\t\t\tcustomTheme: undefined,\n\t\t\tgradient: finalGradient,\n\t\t\tpadding: finalPadding,\n\t\t\trounded: finalRounded,\n\t\t}\n\n\t\tif (shouldOverrideElement) {\n\t\t\tconst overrideElement = getOverrideElement()\n\n\t\t\tif (overrideElement) buttonProps.as = overrideElement\n\t\t} else if (as) buttonProps.as = as\n\n\t\tif (finalTheme && typeof finalTheme === 'string' && config.theme && finalTheme in config.theme) {\n\t\t\tconst extendedTheme = config.theme[finalTheme]\n\n\t\t\treturn (\n\t\t\t\t<Button\n\t\t\t\t\t{...buttonProps}\n\t\t\t\t\ttheme='custom'\n\t\t\t\t\tcustomTheme={customTheme || extendedTheme.customTheme}\n\t\t\t\t\tclassName={twMerge(configClassName, extendedTheme.className, className)}\n\t\t\t\t/>\n\t\t\t)\n\t\t}\n\n\t\treturn (\n\t\t\t<Button\n\t\t\t\t{...buttonProps}\n\t\t\t\ttheme={finalTheme as ButtonProps<TTag>['theme']}\n\t\t\t\tclassName={twMerge(configClassName, className)}\n\t\t\t\tcustomTheme={customTheme}\n\t\t\t/>\n\t\t)\n\t}\n}\n","import { ComponentPropsWithRef } from \"react\";\n\nexport function ArrowDownBackwardAndArrowUpForwardRectangle(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 64 50\" {...props}>\n\t\t <path d=\"M47.367,23.338C48.497,23.338 49.292,22.451 49.292,21.27L49.292,10.565C49.292,9.055 48.445,8.438 47.114,8.438L36.346,8.438C35.165,8.438 34.335,9.205 34.335,10.334C34.335,11.487 35.165,12.259 36.403,12.259L39.919,12.259L43.287,11.931L39.659,15.26L34.041,20.906C33.701,21.246 33.424,21.765 33.424,22.295C33.424,23.453 34.219,24.249 35.349,24.249C35.971,24.249 36.432,24.03 36.83,23.632L42.413,18.049L45.794,14.449L45.443,18.028L45.443,21.327C45.443,22.508 46.215,23.338 47.367,23.338Z\"/>\n\t\t <path d=\"M16.662,26.661C15.503,26.661 14.737,27.548 14.737,28.729L14.737,39.434C14.737,40.944 15.584,41.56 16.886,41.56L27.683,41.56C28.835,41.56 29.665,40.794 29.665,39.664C29.665,38.512 28.835,37.74 27.626,37.74L24.08,37.74L20.741,38.068L24.37,34.739L29.959,29.092C30.328,28.752 30.605,28.205 30.605,27.703C30.605,26.517 29.809,25.75 28.68,25.75C28.057,25.75 27.568,25.969 27.199,26.367L21.587,31.95L18.235,35.521L18.557,31.971L18.557,28.672C18.557,27.491 17.785,26.661 16.662,26.661Z\"/>\n\t\t <path d=\"M8.518,49.999C2.857,49.999 0,47.171 0,41.567L0,8.432C0,2.828 2.857,0 8.518,0L55.482,0C61.172,0 64,2.84 64,8.432L64,41.567C64,47.159 61.172,49.999 55.482,49.999L8.518,49.999ZM8.587,45.603L55.412,45.603C58.1,45.603 59.633,44.152 59.633,41.354L59.633,8.645C59.633,5.818 58.1,4.396 55.412,4.396L8.587,4.396C5.876,4.396 4.367,5.818 4.367,8.645L4.367,41.354C4.367,44.152 5.876,45.603 8.587,45.603Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from \"react\";\n\nexport function ArrowUpForwardAndArrowDownBackwardRectangle(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 64 50\" {...props}>\n\t\t <path d=\"M35.349,9.32C34.196,9.32 33.424,10.202 33.424,11.389L33.424,22.094C33.424,23.597 34.277,24.249 35.573,24.249L46.37,24.249C47.528,24.249 48.352,23.448 48.352,22.324C48.352,21.166 47.528,20.399 46.313,20.399L42.773,20.399L39.429,20.751L43.063,17.393L48.652,11.775C49.015,11.406 49.292,10.893 49.292,10.363C49.292,9.199 48.502,8.438 47.367,8.438C46.745,8.438 46.261,8.658 45.892,9.02L40.28,14.632L36.928,18.209L37.244,14.625L37.244,11.36C37.244,10.144 36.478,9.32 35.349,9.32Z\"/>\n\t\t <path d=\"M28.68,40.678C29.804,40.678 30.605,39.797 30.605,38.581L30.605,27.905C30.605,26.401 29.752,25.75 28.427,25.75L17.658,25.75C16.471,25.75 15.648,26.522 15.648,27.675C15.648,28.833 16.471,29.599 17.716,29.599L21.226,29.599L24.6,29.248L20.966,32.606L15.348,38.224C15.014,38.593 14.737,39.105 14.737,39.636C14.737,40.8 15.526,41.56 16.662,41.56C17.284,41.56 17.739,41.341 18.137,40.978L23.72,35.366L27.101,31.789L26.755,35.374L26.755,38.639C26.755,39.854 27.522,40.678 28.68,40.678Z\"/>\n\t\t <path d=\"M8.518,49.999C2.857,49.999 0,47.171 0,41.567L0,8.432C0,2.828 2.857,0 8.518,0L55.482,0C61.172,0 64,2.84 64,8.432L64,41.567C64,47.159 61.172,49.999 55.482,49.999L8.518,49.999ZM8.587,45.603L55.412,45.603C58.1,45.603 59.633,44.152 59.633,41.354L59.633,8.645C59.633,5.818 58.1,4.396 55.412,4.396L8.587,4.396C5.876,4.396 4.367,5.818 4.367,8.645L4.367,41.354C4.367,44.152 5.876,45.603 8.587,45.603Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function ChevronDown(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n return (\n <svg viewBox='0 0 64 36' {...props}>\n <path d='M32,36c1,0,1.8-0.4,2.5-1.1L63,5.7c0.7-0.7,1-1.4,1-2.3c0-1-0.3-1.8-1-2.4c-0.6-0.7-1.4-1-2.3-1s-1.7,0.3-2.4,1L30,29.8H34 L5.7,1C5.1,0.3,4.3,0,3.4,0C2.4,0,1.6,0.3,1,1C0.3,1.6,0,2.4,0,3.4c0,0.9,0.3,1.7,1,2.3l28.5,29.2C30.3,35.7,31.1,36,32,36z' />\n </svg>\n )\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function ExclamationmarkOctagon(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n return (\n <svg viewBox='0 0 64 61.6' {...props}>\n <path d='M61.4,16.8l-12.1-13.3C47.3,1.3,45.4,0,41.4,0h-18.9C18.6,0,16.7,1.3,14.7,3.5L2.6,16.8c-2,2.3-2.6,3.8-2.6,6.9v14.2c0,3.1.5,4.6,2.6,6.9l12.1,13.3c2,2.2,3.9,3.5,7.8,3.5h18.9c4,0,5.8-1.3,7.9-3.5l12.1-13.3c2.1-2.3,2.6-3.8,2.6-6.9v-14.2c0-3.1-.5-4.6-2.6-6.9ZM58.2,37.3c0,2.3-.3,3.1-1.5,4.4l-11.2,12.3c-1.7,1.9-2.6,2.5-5.8,2.5h-15.5c-3.1,0-4-.7-5.7-2.5l-11.2-12.3c-1.2-1.4-1.5-2.2-1.5-4.4v-13.1c0-2.3.3-3.1,1.5-4.4l11.2-12.3c1.7-1.9,2.6-2.5,5.7-2.5h15.5c3.1,0,4,.7,5.8,2.5l11.2,12.3c1.3,1.4,1.5,2.2,1.5,4.4v13.1Z' />\n <path d='M32,36.4c1.5,0,2.4-.9,2.4-2.5l.4-16.4c0-1.6-1.2-2.8-2.9-2.8s-2.9,1.1-2.8,2.7l.4,16.5c0,1.6.9,2.5,2.4,2.5Z' />\n <path d='M32,46.5c1.8,0,3.4-1.4,3.4-3.2s-1.5-3.2-3.4-3.2-3.3,1.4-3.3,3.2,1.5,3.2,3.3,3.2Z' />\n </svg>\n )\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function FifteenArrowTriangleheadClockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,24.967 53.645,16.446 46.273,11.115C45.02,10.166 43.366,10.489 42.667,11.662C41.944,12.848 42.327,14.192 43.476,15.079C49.571,19.462 53.573,26.628 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,23.179 12.932,13.576 23.706,11.072L23.706,15.18C23.706,17.212 25.087,17.76 26.657,16.652L35.809,10.242C37.117,9.311 37.147,7.954 35.809,7.023L26.687,0.583C25.087,-0.555 23.706,-0.007 23.706,2.055L23.706,6.098C10.28,8.639 0,20.497 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M21.596,46.561C22.831,46.561 23.585,45.673 23.585,44.438L23.585,26.365C23.585,24.935 22.709,24.096 21.286,24.096C20.118,24.096 19.316,24.613 18.416,25.288L15.162,27.705C14.602,28.131 14.267,28.587 14.267,29.287C14.267,30.108 14.864,30.765 15.685,30.765C16.081,30.765 16.361,30.638 16.689,30.376L19.522,28.258L19.577,28.258L19.577,44.438C19.577,45.679 20.355,46.561 21.596,46.561Z\"/>\n\t\t <path d=\"M35.688,46.737C40.143,46.737 42.94,43.446 42.94,38.968C42.94,35.128 40.739,31.849 36.971,31.849C35.045,31.849 33.472,32.702 32.678,34.178L32.563,34.178L33.076,27.668L40.364,27.668C41.319,27.668 41.952,27.011 41.952,26.055C41.952,25.07 41.349,24.443 40.364,24.443L32.079,24.443C30.576,24.443 29.87,25.234 29.797,26.737L29.174,35.098C29.077,36.358 29.74,37.307 31.012,37.307C31.918,37.307 32.308,36.959 32.898,36.259C33.588,35.337 34.559,34.763 35.719,34.763C37.953,34.763 39.089,36.789 39.089,39.065C39.089,41.511 37.856,43.543 35.664,43.543C33.949,43.543 32.807,42.432 32.258,40.955C31.838,40.139 31.279,39.731 30.518,39.731C29.502,39.731 28.876,40.364 28.876,41.38C28.876,41.721 28.949,42.08 29.022,42.397C29.735,45.128 32.902,46.737 35.688,46.737Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function FifteenArrowTriangleheadCounterclockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,20.497 48.145,8.639 34.75,6.098L34.75,2.055C34.75,-0.007 33.339,-0.555 31.762,0.583L22.647,7.023C21.308,7.954 21.339,9.311 22.647,10.242L31.793,16.652C33.339,17.76 34.75,17.212 34.75,15.18L34.75,11.072C45.518,13.576 53.573,23.179 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,26.628 8.879,19.462 14.98,15.079C16.129,14.192 16.512,12.848 15.782,11.662C15.089,10.489 13.436,10.166 12.152,11.115C4.781,16.446 0,24.967 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M21.596,46.561C22.831,46.561 23.585,45.673 23.585,44.438L23.585,26.365C23.585,24.935 22.709,24.096 21.286,24.096C20.118,24.096 19.316,24.613 18.416,25.288L15.162,27.705C14.602,28.131 14.267,28.587 14.267,29.287C14.267,30.108 14.864,30.765 15.685,30.765C16.081,30.765 16.361,30.638 16.689,30.376L19.522,28.258L19.577,28.258L19.577,44.438C19.577,45.679 20.355,46.561 21.596,46.561Z\"/>\n\t\t <path d=\"M35.688,46.737C40.143,46.737 42.94,43.446 42.94,38.968C42.94,35.128 40.739,31.849 36.971,31.849C35.045,31.849 33.472,32.702 32.678,34.178L32.563,34.178L33.076,27.668L40.364,27.668C41.319,27.668 41.952,27.011 41.952,26.055C41.952,25.07 41.349,24.443 40.364,24.443L32.079,24.443C30.576,24.443 29.87,25.234 29.797,26.737L29.174,35.098C29.077,36.358 29.74,37.307 31.012,37.307C31.918,37.307 32.308,36.959 32.898,36.259C33.588,35.337 34.559,34.763 35.719,34.763C37.953,34.763 39.089,36.789 39.089,39.065C39.089,41.511 37.856,43.543 35.664,43.543C33.949,43.543 32.807,42.432 32.258,40.955C31.838,40.139 31.279,39.731 30.518,39.731C29.502,39.731 28.876,40.364 28.876,41.38C28.876,41.721 28.949,42.08 29.022,42.397C29.735,45.128 32.902,46.737 35.688,46.737Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function FiveArrowTriangleheadClockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,24.967 53.645,16.446 46.273,11.115C45.02,10.166 43.366,10.489 42.667,11.662C41.944,12.848 42.327,14.192 43.476,15.079C49.571,19.462 53.573,26.628 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,23.179 12.932,13.576 23.706,11.072L23.706,15.18C23.706,17.212 25.087,17.76 26.657,16.652L35.809,10.242C37.117,9.311 37.147,7.954 35.809,7.023L26.687,0.583C25.087,-0.555 23.706,-0.007 23.706,2.055L23.706,6.098C10.28,8.639 0,20.497 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M29.316,46.78C33.77,46.78 36.567,43.459 36.567,39.017C36.567,35.17 34.402,31.892 30.599,31.892C28.703,31.892 27.099,32.745 26.306,34.221L26.19,34.221L26.703,27.686L33.991,27.686C34.946,27.686 35.579,27.053 35.579,26.098C35.579,25.119 34.977,24.486 33.991,24.486L25.707,24.486C24.203,24.486 23.498,25.277 23.424,26.78L22.808,35.111C22.735,36.407 23.367,37.35 24.639,37.35C25.552,37.35 25.966,36.972 26.532,36.302C27.222,35.38 28.186,34.806 29.347,34.806C31.586,34.806 32.717,36.838 32.717,39.108C32.717,41.554 31.483,43.586 29.291,43.586C27.576,43.586 26.434,42.475 25.885,40.967C25.502,40.188 24.906,39.774 24.145,39.774C23.16,39.774 22.533,40.407 22.533,41.423C22.533,41.764 22.576,42.093 22.649,42.416C23.362,45.171 26.53,46.78 29.316,46.78Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function FiveArrowTriangleheadCounterclockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,20.497 48.145,8.639 34.75,6.098L34.75,2.055C34.75,-0.007 33.339,-0.555 31.762,0.583L22.647,7.023C21.308,7.954 21.339,9.311 22.647,10.242L31.793,16.652C33.339,17.76 34.75,17.212 34.75,15.18L34.75,11.072C45.518,13.576 53.573,23.179 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,26.628 8.879,19.462 14.98,15.079C16.129,14.192 16.512,12.848 15.782,11.662C15.089,10.489 13.436,10.166 12.152,11.115C4.781,16.446 0,24.967 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M29.316,46.78C33.77,46.78 36.567,43.459 36.567,39.017C36.567,35.17 34.402,31.892 30.599,31.892C28.703,31.892 27.099,32.745 26.306,34.221L26.19,34.221L26.703,27.686L33.991,27.686C34.946,27.686 35.579,27.053 35.579,26.098C35.579,25.119 34.977,24.486 33.991,24.486L25.707,24.486C24.203,24.486 23.498,25.277 23.424,26.78L22.808,35.111C22.735,36.407 23.367,37.35 24.639,37.35C25.552,37.35 25.966,36.972 26.532,36.302C27.222,35.38 28.186,34.806 29.347,34.806C31.586,34.806 32.717,36.838 32.717,39.108C32.717,41.554 31.483,43.586 29.291,43.586C27.576,43.586 26.434,42.475 25.885,40.967C25.502,40.188 24.906,39.774 24.145,39.774C23.16,39.774 22.533,40.407 22.533,41.423C22.533,41.764 22.576,42.093 22.649,42.416C23.362,45.171 26.53,46.78 29.316,46.78Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function GearshapeFill(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n return (\n <svg viewBox='0 0 64 64' {...props}>\n <path d='M63.1,27.4c-0.4-0.5-1-0.9-1.8-1.1l-6.7-1.6c-0.2-0.6-0.4-1.2-0.7-1.8c-0.2-0.6-0.5-1.1-0.7-1.5l3.6-5.9 c0.4-0.7,0.6-1.4,0.6-2.1c-0.1-0.7-0.4-1.3-0.9-1.9l-4-3.9c-0.6-0.5-1.2-0.8-1.8-0.9s-1.3,0.1-2,0.4l-6,3.7c-0.5-0.2-1-0.5-1.6-0.7 s-1.2-0.4-1.8-0.6l-1.6-6.8c-0.2-0.8-0.6-1.4-1.1-1.9c-0.6-0.4-1.2-0.7-2-0.7H29c-0.8,0-1.5,0.2-2,0.7c-0.5,0.4-0.9,1.1-1.1,1.9 l-1.6,6.8c-0.6,0.2-1.2,0.4-1.7,0.6s-1.1,0.5-1.6,0.7l-6-3.7c-1.4-0.8-2.7-0.6-3.8,0.5l-4,3.9c-0.6,0.6-0.9,1.2-0.9,1.9 s0.1,1.4,0.6,2.1l3.6,5.9c-0.2,0.5-0.4,1-0.6,1.5c-0.2,0.6-0.4,1.2-0.6,1.8l-6.7,1.6c-0.8,0.2-1.4,0.5-1.8,1.1 c-0.4,0.5-0.7,1.2-0.7,2v5.5c0,0.8,0.2,1.5,0.7,2.1c0.4,0.5,1,0.9,1.8,1.1l6.8,1.6c0.2,0.5,0.3,1.1,0.6,1.6c0.2,0.6,0.5,1.1,0.7,1.6 l-3.6,5.8c-0.5,0.7-0.6,1.4-0.6,2.1c0.1,0.7,0.4,1.4,0.9,1.9l3.9,3.9c0.5,0.5,1.2,0.8,1.9,0.9c0.7,0.1,1.4-0.1,2.1-0.5l5.9-3.6 c0.5,0.2,1,0.5,1.6,0.7s1.2,0.4,1.7,0.6l1.6,6.7c0.2,0.8,0.5,1.4,1.1,1.9c0.5,0.5,1.1,0.7,1.9,0.7h5.6c0.8,0,1.5-0.2,2-0.7 c0.6-0.4,0.9-1.1,1.1-1.9l1.6-6.7c0.6-0.2,1.2-0.4,1.8-0.6c0.6-0.2,1.1-0.5,1.6-0.7l5.9,3.6c0.7,0.4,1.3,0.6,2,0.5s1.3-0.4,1.9-0.9 l3.9-3.9c0.6-0.6,0.9-1.2,0.9-1.9c0.1-0.7-0.1-1.4-0.6-2.1l-3.6-5.8c0.3-0.5,0.5-1.1,0.7-1.6c0.2-0.6,0.4-1.1,0.6-1.6l6.8-1.6 c0.8-0.2,1.4-0.5,1.8-1.1c0.4-0.5,0.6-1.2,0.6-2.1v-5.5C63.7,28.6,63.5,28,63.1,27.4z M41.3,37.4c-1,1.6-2.3,3-3.9,3.9 c-1.6,1-3.5,1.5-5.4,1.5c-2,0-3.8-0.5-5.4-1.5s-2.9-2.3-3.9-3.9s-1.5-3.5-1.5-5.4c0-2,0.5-3.8,1.5-5.4s2.3-2.9,3.9-3.9 s3.5-1.5,5.4-1.5c2,0,3.8,0.5,5.4,1.5s2.9,2.3,3.9,3.9s1.5,3.4,1.5,5.4S42.3,35.8,41.3,37.4z' />\n </svg>\n )\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function NinetyArrowTriangleheadClockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,24.967 53.645,16.446 46.273,11.115C45.02,10.166 43.366,10.489 42.667,11.662C41.944,12.848 42.327,14.192 43.476,15.079C49.571,19.462 53.573,26.628 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,23.179 12.932,13.576 23.706,11.072L23.706,15.18C23.706,17.212 25.087,17.76 26.657,16.652L35.809,10.242C37.117,9.311 37.147,7.954 35.809,7.023L26.687,0.583C25.087,-0.555 23.706,-0.007 23.706,2.055L23.706,6.098C10.28,8.639 0,20.497 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M19.89,46.737C17.79,46.737 15.894,45.911 14.713,44.519C14.045,43.807 13.498,42.846 13.498,41.983C13.498,41.094 14.088,40.316 15.134,40.316C16.041,40.316 16.515,40.73 16.978,41.528C17.642,42.743 18.558,43.513 20.048,43.513C23.381,43.513 24.059,38.718 24.041,35.192C24.041,35.101 24.035,35.009 24.035,34.936L23.992,34.936C23.358,37.077 21.558,38.717 18.882,38.717C15.139,38.717 12.804,35.469 12.804,31.592C12.804,27.162 15.741,23.901 20,23.901C25.594,23.901 27.818,29.349 27.818,35.096C27.818,40.891 25.911,46.737 19.89,46.737ZM20.037,35.675C22.154,35.675 23.505,33.747 23.505,31.55C23.505,29.291 22.209,27.126 20.097,27.126C17.9,27.126 16.654,29.262 16.654,31.441C16.654,33.607 17.845,35.675 20.037,35.675Z\"/>\n\t\t <path d=\"M38.891,46.737C33.249,46.737 31.238,41.001 31.238,35.298C31.238,29.686 33.224,23.895 38.891,23.895C44.503,23.895 46.508,29.656 46.508,35.298C46.508,40.94 44.522,46.737 38.891,46.737ZM38.891,43.483C41.262,43.483 42.469,39.978 42.469,35.298C42.469,30.673 41.256,27.168 38.891,27.168C36.496,27.168 35.277,30.661 35.277,35.298C35.277,39.978 36.496,43.483 38.891,43.483Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function NinetyArrowTriangleheadCounterclockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,20.497 48.145,8.639 34.75,6.098L34.75,2.055C34.75,-0.007 33.339,-0.555 31.762,0.583L22.647,7.023C21.308,7.954 21.339,9.311 22.647,10.242L31.793,16.652C33.339,17.76 34.75,17.212 34.75,15.18L34.75,11.072C45.518,13.576 53.573,23.179 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,26.628 8.879,19.462 14.98,15.079C16.129,14.192 16.512,12.848 15.782,11.662C15.089,10.489 13.436,10.166 12.152,11.115C4.781,16.446 0,24.967 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M19.89,46.737C17.79,46.737 15.894,45.911 14.713,44.519C14.045,43.807 13.498,42.846 13.498,41.983C13.498,41.094 14.088,40.316 15.134,40.316C16.041,40.316 16.515,40.73 16.978,41.528C17.642,42.743 18.558,43.513 20.048,43.513C23.381,43.513 24.059,38.718 24.041,35.192C24.041,35.101 24.035,35.009 24.035,34.936L23.992,34.936C23.358,37.077 21.558,38.717 18.882,38.717C15.139,38.717 12.804,35.469 12.804,31.592C12.804,27.162 15.741,23.901 20,23.901C25.594,23.901 27.818,29.349 27.818,35.096C27.818,40.891 25.911,46.737 19.89,46.737ZM20.037,35.675C22.154,35.675 23.505,33.747 23.505,31.55C23.505,29.291 22.209,27.126 20.097,27.126C17.9,27.126 16.654,29.262 16.654,31.441C16.654,33.607 17.845,35.675 20.037,35.675Z\"/>\n\t\t <path d=\"M38.891,46.737C33.249,46.737 31.238,41.001 31.238,35.298C31.238,29.686 33.224,23.895 38.891,23.895C44.503,23.895 46.508,29.656 46.508,35.298C46.508,40.94 44.522,46.737 38.891,46.737ZM38.891,43.483C41.262,43.483 42.469,39.978 42.469,35.298C42.469,30.673 41.256,27.168 38.891,27.168C36.496,27.168 35.277,30.661 35.277,35.298C35.277,39.978 36.496,43.483 38.891,43.483Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function PauseFill(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n return (\n\t\t<svg viewBox=\"0 0 48 64\" {...props}>\n\t <path d=\"M5.172,64L13.97,64C17.334,64 19.102,62.233 19.102,58.828L19.102,5.172C19.102,1.603 17.334,0 13.97,0L5.172,0C1.767,0 0,1.767 0,5.172L0,58.828C0,62.233 1.767,64 5.172,64Z\"/>\n\t <path d=\"M33.29,64L42.088,64C45.452,64 47.219,62.233 47.219,58.828L47.219,5.172C47.219,1.603 45.452,0 42.088,0L33.29,0C29.885,0 28.117,1.767 28.117,5.172L28.117,58.828C28.117,62.233 29.885,64 33.29,64Z\"/>\n\t </svg>\n )\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function PhotoBadgeArrowDownFill(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg {...props} viewBox='0 0 64 47'>\n\t\t\t<path d='M39.47,42.309L7.208,42.309C2.418,42.309 0,39.916 0,35.174L0,7.135C0,2.393 2.418,0 7.208,0L46.949,0C51.764,0 54.157,2.403 54.157,7.135L54.157,20.285C53.553,20.209 52.938,20.17 52.314,20.17C48.505,20.17 45.008,21.646 42.371,24.051L39.912,21.77C38.817,20.748 37.502,20.254 36.25,20.254C34.946,20.254 33.685,20.724 32.536,21.741L21.575,31.464L17.193,27.501C16.157,26.578 14.984,26.123 13.87,26.123C12.844,26.123 11.754,26.578 10.743,27.467L3.696,33.628L3.696,35.019C3.696,37.288 5.036,38.599 7.276,38.599L37.963,38.599C38.297,39.914 38.809,41.159 39.47,42.309ZM17.238,21.73C20.32,21.73 22.876,19.175 22.876,16.063C22.876,12.955 20.32,10.371 17.238,10.371C14.101,10.371 11.546,12.955 11.546,16.063C11.546,19.175 14.101,21.73 17.238,21.73Z' />\n\t\t\t<path d='M52.314,46.635C45.924,46.635 40.653,41.398 40.653,34.973C40.653,28.579 45.924,23.312 52.314,23.312C58.739,23.312 64,28.574 64,34.973C64,41.349 58.661,46.635 52.314,46.635ZM52.368,42.342C52.749,42.342 53.046,42.152 53.436,41.786L58.587,37.083C58.934,36.761 59.08,36.458 59.08,36.019C59.08,35.233 58.466,34.599 57.68,34.648C57.275,34.667 56.924,34.833 56.636,35.126L55.251,36.516L53.759,38.062L53.88,35.143L53.88,29.029C53.88,28.234 53.197,27.565 52.368,27.565C51.519,27.565 50.827,28.234 50.827,29.029L50.827,35.143L50.958,38.062L49.431,36.516L48.081,35.126C47.788,34.833 47.412,34.624 47.007,34.648C46.222,34.648 45.583,35.233 45.631,36.019C45.631,36.463 45.778,36.761 46.125,37.083L51.251,41.786C51.646,42.186 51.973,42.342 52.368,42.342Z' />\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function PlayFill(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n return (\n\t\t<svg viewBox=\"0 0 57 64\" {...props}>\n\t <path d=\"M-0,58.454C-0,62.219 2.163,64 4.77,64C5.895,64 7.11,63.644 8.251,63.02L52.662,37.083C55.817,35.222 56.911,34.016 56.911,32C56.911,29.984 55.817,28.778 52.662,26.917L8.251,0.979C7.11,0.356 5.895,0 4.77,0C2.163,0 -0,1.781 -0,5.547L-0,58.454Z\" />\n\t </svg>\n )\n}\n","import { ComponentPropsWithRef } from \"react\";\n\nexport function RectangleFillOnArrowDownForwardTopleadingRectangle(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 64 52\" {...props}>\n\t\t <path d=\"M19.38,10.183C19.268,9.671 18.883,9.262 18.378,9.12C17.873,8.978 17.331,9.126 16.968,9.504C15.945,10.565 14.348,12.23 14.348,12.23L9.51,7.393C9.22,7.107 8.863,6.947 8.392,6.947C7.5,6.947 6.924,7.523 6.924,8.415C6.924,8.798 7.126,9.197 7.391,9.466L12.253,14.329C12.253,14.329 10.5,16.069 9.435,17.126C9.071,17.487 8.938,18.019 9.09,18.508C9.241,18.998 9.652,19.362 10.155,19.454C10.16,19.452 10.164,19.453 10.168,19.454L19.29,20.924C20.3,20.924 20.943,20.449 20.943,19.289L19.387,10.213C19.385,10.203 19.382,10.193 19.38,10.183Z\"/>\n\t\t <path d=\"M6.918,40.609C2.32,40.609 0,38.312 0,33.761L0,6.848C0,2.297 2.32,0 6.918,0L45.062,0C49.683,0 51.981,2.307 51.981,6.848L51.981,33.761C51.981,38.302 49.683,40.609 45.062,40.609L6.918,40.609ZM6.975,37.038L45.006,37.038C47.189,37.038 48.433,35.86 48.433,33.587L48.433,7.021C48.433,4.726 47.189,3.57 45.006,3.57L6.975,3.57C4.772,3.57 3.547,4.726 3.547,7.021L3.547,33.587C3.547,35.86 4.772,37.038 6.975,37.038Z\"/>\n\t\t <path d=\"M28.884,51.863L58.609,51.863C62.21,51.863 64,50.066 64,46.526L64,25.554C64,22.015 62.21,20.217 58.609,20.217L28.884,20.217C25.301,20.217 23.492,22.007 23.492,25.554L23.492,46.526C23.492,50.073 25.301,51.863 28.884,51.863Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from \"react\";\n\nexport function RectangleTriangleUp(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 64 49\" {...props}>\n\t\t <path d=\"M13.294,36.044L8.518,36.044C2.857,36.044 0,33.216 0,27.612L0,8.432C0,2.828 2.857,0 8.518,0L55.482,0C61.172,0 64,2.84 64,8.432L64,27.612C64,33.204 61.172,36.044 55.482,36.044L50.712,36.044L46.417,31.648L55.412,31.648C58.1,31.648 59.633,30.197 59.633,27.399L59.633,8.645C59.633,5.818 58.1,4.396 55.412,4.396L8.587,4.396C5.876,4.396 4.367,5.818 4.367,8.645L4.367,27.399C4.367,30.197 5.876,31.648 8.587,31.648L17.593,31.648L13.294,36.044Z\"/>\n\t\t <path d=\"M51.449,48.076L12.578,48.076C11.272,48.076 10.274,47.072 10.274,45.772C10.274,45.13 10.535,44.556 10.954,44.158L30.333,24.343C30.763,23.855 31.352,23.616 32.011,23.616C32.643,23.616 33.258,23.86 33.694,24.349L53.051,44.164C53.471,44.562 53.726,45.13 53.726,45.772C53.726,47.072 52.749,48.076 51.449,48.076Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function SixtyArrowTriangleheadClockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,24.967 53.645,16.446 46.273,11.115C45.02,10.166 43.366,10.489 42.667,11.662C41.944,12.848 42.327,14.192 43.476,15.079C49.571,19.462 53.573,26.628 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,23.179 12.932,13.576 23.706,11.072L23.706,15.18C23.706,17.212 25.087,17.76 26.657,16.652L35.809,10.242C37.117,9.311 37.147,7.954 35.809,7.023L26.687,0.583C25.087,-0.555 23.706,-0.007 23.706,2.055L23.706,6.098C10.28,8.639 0,20.497 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M20.541,46.774C16.981,46.774 14.664,44.425 13.556,41.133C12.922,39.18 12.698,36.589 12.944,34.234C13.167,29.03 15.166,23.932 20.62,23.932C23.356,23.932 25.751,25.261 26.665,27.237C26.909,27.663 27.012,28.181 27.012,28.723C27.012,29.526 26.538,30.359 25.376,30.359C24.5,30.359 23.983,29.86 23.557,29.147C22.917,27.883 21.97,27.144 20.559,27.144C18.472,27.144 17.441,29.04 16.97,31.048C16.647,32.286 16.512,33.738 16.512,35.752L16.634,35.752C17.329,33.519 19.141,31.982 21.732,31.982C25.444,31.982 27.749,35.055 27.749,39.083C27.749,43.598 24.782,46.774 20.541,46.774ZM20.51,43.543C22.646,43.543 23.899,41.451 23.899,39.235C23.899,36.952 22.72,34.964 20.504,34.964C18.417,34.964 17.079,36.861 17.079,39.113C17.079,41.335 18.319,43.543 20.51,43.543Z\"/>\n\t\t <path d=\"M38.658,46.737C33.045,46.737 31.035,41.001 31.035,35.298C31.035,29.686 33.021,23.895 38.658,23.895C44.3,23.895 46.268,29.656 46.268,35.298C46.268,40.94 44.319,46.737 38.658,46.737ZM38.658,43.483C41.059,43.483 42.266,39.978 42.266,35.298C42.266,30.673 41.053,27.168 38.658,27.168C36.287,27.168 35.068,30.661 35.068,35.298C35.068,39.978 36.287,43.483 38.658,43.483Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function SixtyArrowTriangleheadCounterclockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,20.497 48.145,8.639 34.75,6.098L34.75,2.055C34.75,-0.007 33.339,-0.555 31.762,0.583L22.647,7.023C21.308,7.954 21.339,9.311 22.647,10.242L31.793,16.652C33.339,17.76 34.75,17.212 34.75,15.18L34.75,11.072C45.518,13.576 53.573,23.179 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,26.628 8.879,19.462 14.98,15.079C16.129,14.192 16.512,12.848 15.782,11.662C15.089,10.489 13.436,10.166 12.152,11.115C4.781,16.446 0,24.967 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M20.541,46.774C16.981,46.774 14.664,44.425 13.556,41.133C12.922,39.18 12.698,36.589 12.944,34.234C13.167,29.03 15.166,23.932 20.62,23.932C23.356,23.932 25.751,25.261 26.665,27.237C26.909,27.663 27.012,28.181 27.012,28.723C27.012,29.526 26.538,30.359 25.376,30.359C24.5,30.359 23.983,29.86 23.557,29.147C22.917,27.883 21.97,27.144 20.559,27.144C18.472,27.144 17.441,29.04 16.97,31.048C16.647,32.286 16.512,33.738 16.512,35.752L16.634,35.752C17.329,33.519 19.141,31.982 21.732,31.982C25.444,31.982 27.749,35.055 27.749,39.083C27.749,43.598 24.782,46.774 20.541,46.774ZM20.51,43.543C22.646,43.543 23.899,41.451 23.899,39.235C23.899,36.952 22.72,34.964 20.504,34.964C18.417,34.964 17.079,36.861 17.079,39.113C17.079,41.335 18.319,43.543 20.51,43.543Z\"/>\n\t\t <path d=\"M38.658,46.737C33.045,46.737 31.035,41.001 31.035,35.298C31.035,29.686 33.021,23.895 38.658,23.895C44.3,23.895 46.268,29.656 46.268,35.298C46.268,40.94 44.319,46.737 38.658,46.737ZM38.658,43.483C41.059,43.483 42.266,39.978 42.266,35.298C42.266,30.673 41.053,27.168 38.658,27.168C36.287,27.168 35.068,30.661 35.068,35.298C35.068,39.978 36.287,43.483 38.658,43.483Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function SpeakerMinusFill(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg {...props} viewBox='0 0 64 46'>\n\t\t\t<path d='M27.897,45.634C29.579,45.634 30.809,44.408 30.809,42.716L30.809,3.055C30.809,1.39 29.579,0 27.842,0C26.634,0 25.792,0.528 24.48,1.78L13.449,12.13C13.294,12.284 13.074,12.383 12.825,12.383L5.415,12.383C1.909,12.383 0,14.292 0,18.045L0,27.672C0,31.392 1.909,33.328 5.415,33.328L12.825,33.328C13.074,33.328 13.294,33.406 13.449,33.56L24.48,44.013C25.683,45.133 26.688,45.634 27.897,45.634Z' />\n\t\t\t<path d='M41.264,24.964L61.535,24.964C62.99,24.964 64,24.195 64,22.828C64,21.423 63.05,20.626 61.535,20.626L41.264,20.626C39.749,20.626 38.771,21.423 38.771,22.828C38.771,24.195 39.809,24.964 41.264,24.964Z' />\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function SpeakerPlusFill(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg {...props} viewBox='0 0 64 47'>\n\t\t\t<path d='M28.32,46.325C30.027,46.325 31.276,45.08 31.276,43.362L31.276,3.102C31.276,1.411 30.027,0 28.264,0C27.037,0 26.183,0.536 24.85,1.807L13.652,12.313C13.496,12.47 13.272,12.571 13.02,12.571L5.497,12.571C1.938,12.571 0,14.509 0,18.319L0,28.091C0,31.867 1.938,33.833 5.497,33.833L13.02,33.833C13.272,33.833 13.496,33.911 13.652,34.068L24.85,44.679C26.071,45.817 27.092,46.325 28.32,46.325Z' />\n\t\t\t<path d='M39.659,23.135C39.659,24.411 40.579,25.303 41.916,25.303L49.617,25.303L49.617,33.059C49.617,34.368 50.509,35.283 51.785,35.283C53.1,35.283 54.02,34.374 54.02,33.059L54.02,25.303L61.777,25.303C63.086,25.303 64,24.411 64,23.135C64,21.819 63.092,20.899 61.777,20.899L54.02,20.899L54.02,13.171C54.02,11.828 53.1,10.919 51.785,10.919C50.509,10.919 49.617,11.834 49.617,13.171L49.617,20.899L41.916,20.899C40.545,20.899 39.659,21.819 39.659,23.135Z' />\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function TenArrowTriangleheadClockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n return (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,24.967 53.645,16.446 46.273,11.115C45.02,10.166 43.366,10.489 42.667,11.662C41.944,12.848 42.327,14.192 43.476,15.079C49.571,19.462 53.573,26.628 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,23.179 12.932,13.576 23.706,11.072L23.706,15.18C23.706,17.212 25.087,17.76 26.657,16.652L35.809,10.242C37.117,9.311 37.147,7.954 35.809,7.023L26.687,0.583C25.087,-0.555 23.706,-0.007 23.706,2.055L23.706,6.098C10.28,8.639 -0,20.497 -0,34.787C-0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M21.596,46.561C22.831,46.561 23.585,45.673 23.585,44.438L23.585,26.365C23.585,24.935 22.709,24.096 21.286,24.096C20.118,24.096 19.316,24.613 18.416,25.288L15.162,27.705C14.602,28.131 14.267,28.587 14.267,29.287C14.267,30.108 14.864,30.765 15.685,30.765C16.081,30.765 16.361,30.638 16.689,30.376L19.522,28.258L19.577,28.258L19.577,44.438C19.577,45.679 20.355,46.561 21.596,46.561Z\"/>\n\t\t <path d=\"M36.048,46.731C30.406,46.731 28.426,41.001 28.426,35.298C28.426,29.686 30.375,23.919 36.048,23.919C41.685,23.919 43.659,29.649 43.659,35.298C43.659,40.97 41.679,46.731 36.048,46.731ZM36.048,43.513C38.45,43.513 39.626,39.978 39.626,35.298C39.626,30.673 38.444,27.174 36.048,27.174C33.647,27.174 32.458,30.661 32.458,35.298C32.458,39.984 33.647,43.513 36.048,43.513Z\"/>\n\t\t</svg>\n )\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function TenArrowTriangleheadCounterclockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox='0 0 59 64' {...props}>\n\t\t\t<path d='M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,20.497 48.145,8.639 34.75,6.098L34.75,2.055C34.75,-0.007 33.339,-0.555 31.762,0.583L22.647,7.023C21.308,7.954 21.339,9.311 22.647,10.242L31.793,16.652C33.339,17.76 34.75,17.212 34.75,15.18L34.75,11.072C45.518,13.576 53.573,23.179 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,26.628 8.879,19.462 14.98,15.079C16.129,14.192 16.512,12.848 15.782,11.662C15.089,10.489 13.436,10.166 12.152,11.115C4.781,16.446 0,24.967 0,34.787C0,50.929 13.101,64 29.213,64Z' />\n\t\t\t<path d='M21.596,46.561C22.831,46.561 23.585,45.673 23.585,44.438L23.585,26.365C23.585,24.935 22.709,24.096 21.286,24.096C20.118,24.096 19.316,24.613 18.416,25.288L15.162,27.705C14.602,28.131 14.267,28.587 14.267,29.287C14.267,30.108 14.864,30.765 15.685,30.765C16.081,30.765 16.361,30.638 16.689,30.376L19.522,28.258L19.577,28.258L19.577,44.438C19.577,45.679 20.355,46.561 21.596,46.561Z' />\n\t\t\t<path d='M36.048,46.731C30.406,46.731 28.426,41.001 28.426,35.298C28.426,29.686 30.375,23.919 36.048,23.919C41.685,23.919 43.659,29.649 43.659,35.298C43.659,40.97 41.679,46.731 36.048,46.731ZM36.048,43.513C38.45,43.513 39.626,39.978 39.626,35.298C39.626,30.673 38.444,27.174 36.048,27.174C33.647,27.174 32.458,30.661 32.458,35.298C32.458,39.984 33.647,43.513 36.048,43.513Z' />\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function ThirtyArrowTriangleheadClockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,24.967 53.645,16.446 46.273,11.115C45.02,10.166 43.366,10.489 42.667,11.662C41.944,12.848 42.327,14.192 43.476,15.079C49.571,19.462 53.573,26.628 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,23.179 12.932,13.576 23.706,11.072L23.706,15.18C23.706,17.212 25.087,17.76 26.657,16.652L35.809,10.242C37.117,9.311 37.147,7.954 35.809,7.023L26.687,0.583C25.087,-0.555 23.706,-0.007 23.706,2.055L23.706,6.098C10.28,8.639 0,20.497 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M20.047,46.731C24.27,46.731 27.627,44.281 27.627,40.241C27.627,36.944 25.457,35.231 22.805,34.975L22.805,34.926C25.346,34.354 26.883,32.276 26.883,29.819C26.883,26.102 23.813,23.999 19.962,23.999C16.763,23.999 13.992,25.796 13.37,28.361C13.272,28.703 13.229,29.063 13.229,29.411C13.229,30.275 13.697,31.023 14.902,31.023C15.863,31.023 16.374,30.627 16.696,29.733C17.25,28.018 18.362,27.162 19.992,27.162C21.908,27.162 23.093,28.377 23.093,30.287C23.093,32.361 21.641,33.624 19.548,33.624L18.704,33.624C17.724,33.624 17.152,34.19 17.152,35.084C17.152,36.027 17.755,36.532 18.704,36.532L19.59,36.532C21.916,36.532 23.618,37.546 23.618,40.071C23.618,42.091 22.19,43.507 20.078,43.507C18.064,43.507 16.915,42.481 16.379,40.894C16.026,40.121 15.388,39.628 14.615,39.628C13.532,39.628 12.845,40.297 12.845,41.344C12.845,41.697 12.894,42.045 12.991,42.393C13.705,45.287 17,46.731 20.047,46.731Z\"/>\n\t\t <path d=\"M38.396,46.737C32.783,46.737 30.773,41.001 30.773,35.298C30.773,29.686 32.728,23.926 38.396,23.926C44.032,23.926 46.036,29.656 46.036,35.298C46.036,40.97 44.05,46.737 38.396,46.737ZM38.396,43.513C40.797,43.513 42.004,39.978 42.004,35.298C42.004,30.673 40.791,27.168 38.396,27.168C36.025,27.168 34.805,30.661 34.805,35.298C34.805,39.978 36.025,43.513 38.396,43.513Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function ThirtyArrowTriangleheadCounterclockwise(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg viewBox=\"0 0 59 64\" {...props}>\n\t\t <path d=\"M29.213,64C45.355,64 58.456,50.929 58.456,34.787C58.456,20.497 48.145,8.639 34.75,6.098L34.75,2.055C34.75,-0.007 33.339,-0.555 31.762,0.583L22.647,7.023C21.308,7.954 21.339,9.311 22.647,10.242L31.793,16.652C33.339,17.76 34.75,17.212 34.75,15.18L34.75,11.072C45.518,13.576 53.573,23.179 53.573,34.787C53.573,48.254 42.679,59.148 29.213,59.148C15.746,59.148 4.877,48.254 4.877,34.787C4.877,26.628 8.879,19.462 14.98,15.079C16.129,14.192 16.512,12.848 15.782,11.662C15.089,10.489 13.436,10.166 12.152,11.115C4.781,16.446 0,24.967 0,34.787C0,50.929 13.101,64 29.213,64Z\"/>\n\t\t <path d=\"M20.047,46.731C24.27,46.731 27.627,44.281 27.627,40.241C27.627,36.944 25.457,35.231 22.805,34.975L22.805,34.926C25.346,34.354 26.883,32.276 26.883,29.819C26.883,26.102 23.813,23.999 19.962,23.999C16.763,23.999 13.992,25.796 13.37,28.361C13.272,28.703 13.229,29.063 13.229,29.411C13.229,30.275 13.697,31.023 14.902,31.023C15.863,31.023 16.374,30.627 16.696,29.733C17.25,28.018 18.362,27.162 19.992,27.162C21.908,27.162 23.093,28.377 23.093,30.287C23.093,32.361 21.641,33.624 19.548,33.624L18.704,33.624C17.724,33.624 17.152,34.19 17.152,35.084C17.152,36.027 17.755,36.532 18.704,36.532L19.59,36.532C21.916,36.532 23.618,37.546 23.618,40.071C23.618,42.091 22.19,43.507 20.078,43.507C18.064,43.507 16.915,42.481 16.379,40.894C16.026,40.121 15.388,39.628 14.615,39.628C13.532,39.628 12.845,40.297 12.845,41.344C12.845,41.697 12.894,42.045 12.991,42.393C13.705,45.287 17,46.731 20.047,46.731Z\"/>\n\t\t <path d=\"M38.396,46.737C32.783,46.737 30.773,41.001 30.773,35.298C30.773,29.686 32.728,23.926 38.396,23.926C44.032,23.926 46.036,29.656 46.036,35.298C46.036,40.97 44.05,46.737 38.396,46.737ZM38.396,43.513C40.797,43.513 42.004,39.978 42.004,35.298C42.004,30.673 40.791,27.168 38.396,27.168C36.025,27.168 34.805,30.661 34.805,35.298C34.805,39.978 36.025,43.513 38.396,43.513Z\"/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport function Xmark(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n return (\n <svg viewBox='0 0 64 64' {...props}>\n <path d='M1,63c0.7,0.7,1.6,1,2.6,1s1.9-0.3,2.6-1L32,37.1L57.8,63c0.7,0.7,1.5,1,2.5,1c1,0,1.9-0.3,2.6-1c0.7-0.7,1-1.6,1-2.6 c0-1-0.3-1.8-1-2.5L37.1,32L63,6.2c0.7-0.7,1-1.6,1-2.6S63.7,1.7,63,1c-0.7-0.7-1.6-1-2.6-1c-1,0-1.8,0.3-2.5,1L32,26.9L6.2,1 C5.5,0.3,4.6,0,3.6,0C2.6,0,1.7,0.3,1,1C0.3,1.7,0,2.6,0,3.6c0,1,0.3,1.9,1,2.6L26.9,32L1,57.8c-0.7,0.7-1,1.5-1,2.6 C0,61.4,0.3,62.3,1,63z' />\n </svg>\n )\n}\n","// * Types\nimport { ElementType, ReactElement, ReactNode } from 'react'\n\nexport type DetailsBodyProps<TTag extends ElementType = 'div'> = Omit<DisclosurePanelProps<TTag>, 'className'> & {\n\tclassName?: string\n}\n\nexport type DetailsProps<TTag extends ElementType = 'div'> = Omit<DisclosureProps<TTag>, 'className' | 'role'> & {\n\tclassName?: string\n}\n\nexport type DetailsSummaryProps<TTag extends ElementType = typeof Button<typeof HeadlessButton>> = Omit<\n\tDisclosureButtonProps<TTag>,\n\t'as' | 'className' | 'role'\n> & { arrow?: boolean | ReactNode; className?: string }\n\n// * Headless UI\nimport {\n\tButton as HeadlessButton,\n\tDisclosure,\n\tDisclosureProps,\n\tDisclosureButton,\n\tDisclosureButtonProps,\n\tDisclosurePanel,\n\tDisclosurePanelProps,\n} from '@headlessui/react'\n\n// * Components\nimport { Button } from './button'\nimport { ChevronDown } from '../icons'\n\n// * Utilities\nimport { twMerge } from '../utils'\n\nexport function DetailsSummary<TTag extends ElementType = typeof Button>({\n\tarrow = true,\n\tchildren,\n\tclassName,\n\t...props\n}: DetailsSummaryProps<TTag>): ReactElement {\n\treturn (\n\t\t<DisclosureButton<typeof Button<typeof HeadlessButton>>\n\t\t\t{...props}\n\t\t\tas={Button<typeof HeadlessButton>}\n\t\t\tclassName={twMerge('w-full', className, Boolean(arrow) && 'grid grid-cols-[1fr_1rem] gap-2')}\n\t\t\trole='summary'\n\t\t>\n\t\t\t{bag => (\n\t\t\t\t<>\n\t\t\t\t\t{typeof children === 'function' ? children(bag) : children}\n\n\t\t\t\t\t{arrow &&\n\t\t\t\t\t\t(typeof arrow === 'boolean' ? (\n\t\t\t\t\t\t\t<ChevronDown className='absolute top-1/2 right-3 block w-4 -translate-y-1/2' />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\tarrow\n\t\t\t\t\t\t))}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</DisclosureButton>\n\t)\n}\n\nexport function DetailsBody<TTag extends ElementType = 'div'>({\n\tchildren,\n\tclassName,\n\t...props\n}: DetailsBodyProps<TTag>): ReactElement {\n\treturn (\n\t\t<DisclosurePanel\n\t\t\t{...props}\n\t\t\tclassName={twMerge(\n\t\t\t\t'grid grid-rows-1fr transition-rows duration-500 ease-exponential data-closed:grid-rows-0fr',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\ttransition\n\t\t>\n\t\t\t{bag => (\n\t\t\t\t<div className='overflow-y-hidden px-2 pt-3 pb-1'>\n\t\t\t\t\t{typeof children === 'function' ? children(bag) : children}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</DisclosurePanel>\n\t)\n}\n\nexport function Details<TTag extends ElementType = 'div'>({\n\tas = 'div',\n\tclassName,\n\t...props\n}: DetailsProps<TTag>): ReactElement {\n\treturn (\n\t\t<Disclosure\n\t\t\t{...props}\n\t\t\tas={as}\n\t\t\tclassName={twMerge('rounded-2xl bg-neutral-50/20 p-2 backdrop-blur-md backdrop-brightness-150', className)}\n\t\t\trole='details'\n\t\t/>\n\t)\n}\n","// * Types\nimport { AnyElementProps } from \"../types\";\nimport { ElementType, ReactElement, ReactNode } from \"react\";\n\nexport type DropDownButtonProps<TTag extends ElementType = \"button\"> =\n\t& Omit<\n\t\tMenuButtonProps<TTag>,\n\t\t\"as\" | \"className\"\n\t>\n\t& {\n\t\tarrow?: boolean | ReactNode;\n\t\tas?: TTag | ElementType;\n\t\tclassName?: string;\n\t};\n\nexport type DropDownItemProps<TTag extends ElementType = \"div\"> =\n\t& Omit<MenuItemProps<TTag>, \"as\">\n\t& AnyElementProps<TTag>;\n\nexport type DropDownItemsProps =\n\t& Omit<MenuItemsProps, \"className\" | \"transition\">\n\t& {\n\t\tclassName?: string;\n\t\tcontainerClassName?: string;\n\t};\n\nexport type DropDownProps = MenuProps;\n\nexport type DropDownSectionProps = MenuSectionProps & {\n\tlabel?: ReactNode;\n\tlabelProps?: Omit<MenuHeadingProps, \"children\"> & {\n\t\t/** @deprecated Use `label` instead. */\n\t\tchildren?: never;\n\t};\n\tseparatorAbove?: boolean;\n\tseparatorBelow?: boolean;\n};\n\nexport type DropDownSeparatorProps<TTag extends ElementType = \"div\"> =\n\t& Omit<MenuSeparatorProps<TTag>, \"as\">\n\t& AnyElementProps<TTag>;\n\n// * Headless UI\nimport {\n\tMenu,\n\tMenuButton,\n\tMenuButtonProps,\n\tMenuHeading,\n\tMenuHeadingProps,\n\tMenuItem,\n\tMenuItemProps,\n\tMenuItems,\n\tMenuItemsProps,\n\tMenuProps,\n\tMenuSection,\n\tMenuSectionProps,\n\tMenuSeparator,\n\tMenuSeparatorProps,\n} from \"@headlessui/react\";\n\n// * Components\nimport { ChevronDown } from \"../icons\";\n\n// * Utilities\nimport { twMerge } from \"../utils\";\nimport { twJoin } from \"tailwind-merge\";\n\nexport function DropDownButton<TTag extends ElementType = \"button\">({\n\tarrow = true,\n\tas,\n\tchildren,\n\tclassName,\n\t...props\n}: DropDownButtonProps<TTag>): ReactElement {\n\treturn (\n\t\t<MenuButton\n\t\t\t{...props}\n\t\t\tas={as || \"button\"}\n\t\t\tclassName={twJoin(\"group/button\", className)}\n\t\t>\n\t\t\t{children}\n\n\t\t\t{arrow &&\n\t\t\t\t(typeof arrow === \"boolean\"\n\t\t\t\t\t? (\n\t\t\t\t\t\t<ChevronDown className=\"-top-px -mr-1 ml-2 w-4 animate-flip-again group-data-open/button:animate-flip\" />\n\t\t\t\t\t)\n\t\t\t\t\t: arrow)}\n\t\t</MenuButton>\n\t);\n}\n\nexport function DropDownItem<TTag extends ElementType = \"div\">({\n\tas,\n\t...props\n}: DropDownItemProps<TTag>): ReactElement {\n\treturn <MenuItem {...props} as={(as as MenuItemProps[\"as\"]) || \"div\"} />;\n}\n\nexport function DropDownItems({\n\tanchor,\n\tchildren,\n\tclassName,\n\tcontainerClassName,\n\tstyle,\n\t...props\n}: DropDownItemsProps): ReactElement {\n\tconst getAnchorProps = () => {\n\t\tlet initialAnchor: typeof anchor = {\n\t\t\tgap: \"1rem\",\n\t\t\tpadding: \"1rem\",\n\t\t\tto: \"bottom start\",\n\t\t};\n\n\t\tif (anchor) {\n\t\t\tif (typeof anchor === \"string\") initialAnchor.to = anchor;\n\n\t\t\tif (typeof anchor === \"object\") {\n\t\t\t\tinitialAnchor = { ...initialAnchor, ...anchor };\n\t\t\t}\n\t\t}\n\n\t\treturn initialAnchor;\n\t};\n\n\tconst anchorProps = getAnchorProps();\n\n\treturn (\n\t\t<MenuItems\n\t\t\t{...props}\n\t\t\tanchor={anchorProps}\n\t\t\tclassName={twMerge(\n\t\t\t\t\"grid grid-rows-1fr rounded-xl shadow-xl transition-rows duration-500 ease-exponential not-data-open:not-data-enter:not-data-leave:grid-rows-0fr data-closed:grid-rows-0fr\",\n\t\t\t\tcontainerClassName,\n\t\t\t)}\n\t\t\tstatic={props.static}\n\t\t\tstyle={{ ...style, minWidth: \"var(--button-width)\" }}\n\t\t\ttransition\n\t\t>\n\t\t\t{(bag) => (\n\t\t\t\t<div className=\"overflow-y-scroll\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\t\"rounded-xl bg-neutral-50/20 px-6 py-5 backdrop-blur-md backdrop-brightness-150\",\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{typeof children === \"function\" ? children(bag) : children}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</MenuItems>\n\t);\n}\n\nexport function DropDownSection({\n\tchildren,\n\tlabel,\n\tlabelProps,\n\tseparatorAbove,\n\tseparatorBelow,\n\t...props\n}: DropDownSectionProps): ReactElement {\n\tconst { labelClassName, ...restLabelProps } = {\n\t\tlabelClassName: labelProps?.className || \"\",\n\t\t...labelProps,\n\t};\n\n\treturn (\n\t\t<MenuSection {...props}>\n\t\t\t{(sectionBag) => (\n\t\t\t\t<>\n\t\t\t\t\t{separatorAbove && <DropDownSeparator />}\n\n\t\t\t\t\t{label && (\n\t\t\t\t\t\t<MenuHeading\n\t\t\t\t\t\t\t{...restLabelProps}\n\t\t\t\t\t\t\tclassName={(headingBag) =>\n\t\t\t\t\t\t\t\ttwMerge(\n\t\t\t\t\t\t\t\t\t\"text-[larger] font-bold text-current/80\",\n\t\t\t\t\t\t\t\t\ttypeof labelClassName === \"function\"\n\t\t\t\t\t\t\t\t\t\t? labelClassName(headingBag)\n\t\t\t\t\t\t\t\t\t\t: labelClassName,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</MenuHeading>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{typeof children === \"function\" ? children(sectionBag) : children}\n\n\t\t\t\t\t{separatorBelow && <DropDownSeparator />}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</MenuSection>\n\t);\n}\n\nexport function DropDownSeparator<TTag extends ElementType = \"div\">({\n\tas,\n\tclassName,\n\t...props\n}: DropDownSeparatorProps<TTag>): ReactElement {\n\treturn (\n\t\t<MenuSeparator\n\t\t\t{...props}\n\t\t\tas={(as as MenuSeparatorProps[\"as\"]) || \"div\"}\n\t\t\tclassName={(bag) =>\n\t\t\t\ttwMerge(\n\t\t\t\t\t\"my-4 block h-px rounded-full bg-neutral-950/20\",\n\t\t\t\t\ttypeof className === \"function\" ? className(bag) : className,\n\t\t\t\t)}\n\t\t/>\n\t);\n}\n\nexport function DropDown(props: DropDownProps): ReactElement {\n\treturn <Menu {...props} />;\n}\n","// * React\nimport { HTMLAttributes, useRef, createContext, useContext, useSyncExternalStore } from 'react'\n\nexport function createFastContext<Store>(defaultInitialState: Store) {\n\tfunction useStoreData(initialState: Store = defaultInitialState): {\n\t\tget: () => Store\n\t\tset: (value: Store | ((prevState: Store) => Store)) => void\n\t\tsubscribe: (callback: () => void) => () => void\n\t} {\n\t\tconst store = useRef(initialState),\n\t\t\tget = () => store.current,\n\t\t\tsubscribers = useRef(new Set<() => void>())\n\n\t\tconst set = (value: Store | ((prevState: Store) => Store)) => {\n\t\t\tif (typeof value === 'function') {\n\t\t\t\tstore.current = (value as (prevState: Store) => Store)(store.current)\n\t\t\t} else {\n\t\t\t\tstore.current = value\n\t\t\t}\n\t\t\tsubscribers.current.forEach(callback => callback())\n\t\t}\n\n\t\tconst subscribe = (callback: () => void) => {\n\t\t\tsubscribers.current.add(callback)\n\t\t\treturn () => subscribers.current.delete(callback)\n\t\t}\n\n\t\treturn {\n\t\t\tget,\n\t\t\tset,\n\t\t\tsubscribe,\n\t\t}\n\t}\n\n\ttype UseStoreDataReturnType = ReturnType<typeof useStoreData>\n\n\tconst StoreContext = createContext<UseStoreDataReturnType | null>(null)\n\n\tfunction Provider({\n\t\tinitialValue = defaultInitialState,\n\t\t...props\n\t}: Pick<HTMLAttributes<HTMLElement>, 'children'> & { initialValue?: Store }) {\n\t\treturn <StoreContext.Provider value={useStoreData(initialValue)} {...props} />\n\t}\n\n\tfunction useStore<SelectorOutput>(\n\t\tselector: (store: Store) => SelectorOutput,\n\t\tinitialValue?: Store,\n\t): [SelectorOutput | undefined, ((value: Store | ((prevState: Store) => Store)) => void) | undefined] {\n\t\tconst store = useContext(StoreContext)\n\n\t\tif (!store) {\n\t\t\tconst localStoreValue = initialValue !== undefined ? initialValue : defaultInitialState\n\n\t\t\tconst selectedValue = selector(localStoreValue)\n\t\t\tconst noOpSet = () => console.warn('Attempting to set store value outside of Provider')\n\n\t\t\treturn [selectedValue, noOpSet]\n\t\t}\n\n\t\tconst state = useSyncExternalStore(\n\t\t\tstore.subscribe,\n\t\t\t() => selector(store.get()),\n\t\t\t() => selector(initialValue !== undefined ? initialValue : defaultInitialState),\n\t\t)\n\n\t\treturn [state, store.set]\n\t}\n\n\treturn {\n\t\tProvider,\n\t\tuseStore,\n\t}\n}\n","// * Types\nexport type FieldType = 'array' | 'email' | 'file' | 'number' | 'object' | 'string' | 'tel' | 'textarea' | 'url'\n\nexport type StringField = {\n\ttype: 'email' | 'file' | 'number' | 'string' | 'tel' | 'textarea' | 'url'\n\tvalue: string\n\trequired?: boolean\n\tinvalid?: boolean\n}\n\nexport type ObjectField = { type: 'object'; fields: Field[] }\n\nexport type ArrayField = { type: 'array'; of: ArrayObjectOrNormalField }\n\ntype ArrayObjectOrNormalField = StringField | ArrayField | ObjectField\n\nexport type Field = ArrayObjectOrNormalField & {\n\tid: string\n\tname: string\n}\n\nexport type FormContext = Field[]\n\n// * React\nimport { ReactNode, useCallback } from 'react'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\n/**\n * # Define Field\n *\n * This is a helper function to define a field in a form context with type safety.\n */\nexport function defineField(fieldDefinition: Field) {\n\treturn fieldDefinition\n}\n\nexport function isStringField(field: Field) {\n\treturn Boolean(field.type !== 'object' && field.type !== 'array')\n}\n\nconst { Provider, useStore } = createFastContext<FormContext>([])\n\nexport function FormContextProvider({ children }: { children?: ReactNode }) {\n\treturn <Provider>{children}</Provider>\n}\n\nexport function useFormContext() {\n\tconst [formContext, setFormContext] = useStore(store => store)\n\n\tconst registerField = useCallback((field: Field) => {\n\t\tsetFormContext?.(prevContext => {\n\t\t\tconst otherFields = (prevContext || []).filter(otherField => otherField.id !== field.id)\n\n\t\t\treturn [...otherFields, field]\n\t\t})\n\t}, [])\n\n\tconst removeField = useCallback((fieldID: string) => {\n\t\tsetFormContext?.(prevContext => (prevContext || []).filter(field => field.id !== fieldID))\n\t}, [])\n\n\tconst updateField = useCallback((fieldID: string, updates: Partial<Field>) => {\n\t\tsetFormContext?.(prevContext => {\n\t\t\tconst field = prevContext.find(({ id }) => id === fieldID)\n\n\t\t\tif (!field) throw new Error(`Field with id \"${fieldID}\" not found in form context.`)\n\n\t\t\tconst otherFields = prevContext.filter(({ id }) => id !== fieldID)\n\n\t\t\tconst updatedField = { ...field, ...updates } as Field\n\n\t\t\treturn [...otherFields, updatedField]\n\t\t})\n\t}, [])\n\n\treturn [formContext, { registerField, removeField, updateField }] as const\n}\n","// * Types\nimport { defineField, Field, isStringField, StringField, useFormContext } from './use-form-context'\n\nexport type FieldsetContextValue = {\n\tfieldList: Field[]\n\tdecorative: boolean\n\tid: string\n\tjoin?: string\n\tname: string\n}\n\nexport type FieldsetContext = [\n\tFieldsetContextValue | undefined,\n\t{\n\t\tregisterField: (field: Field) => void\n\t\tremoveField: (fieldID: string) => void\n\t\tupdateField: (fieldID: string, updates: Partial<Field>) => void\n\t},\n]\n\n// * React\nimport { ReactNode, useCallback, useEffect } from 'react'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\nconst { Provider, useStore } = createFastContext<FieldsetContextValue | undefined>(undefined)\n\nexport function FieldsetContextProvider({\n\tchildren,\n\tinitialValue,\n}: {\n\tchildren?: ReactNode\n\tinitialValue?: FieldsetContextValue\n}) {\n\treturn <Provider initialValue={initialValue}>{children}</Provider>\n}\n\nexport function useFieldsetContext(): FieldsetContext {\n\tconst [fieldsetContext, setFieldsetContext] = useStore(store => store),\n\t\t[, formContextFunctions] = useFormContext()\n\n\tconst registerField = useCallback((field: Field) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\tconst existingFieldIndex = prev.fieldList.findIndex(existingField => existingField.id === field.id)\n\n\t\t\tconst newFieldList =\n\t\t\t\texistingFieldIndex >= 0\n\t\t\t\t\t? prev.fieldList.map((existingField, index) => (index === existingFieldIndex ? field : existingField))\n\t\t\t\t\t: [...prev.fieldList, field]\n\n\t\t\treturn { ...prev, fieldList: newFieldList }\n\t\t})\n\t}, [])\n\n\tconst removeField = useCallback((fieldID: string) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\treturn {\n\t\t\t\t...prev,\n\t\t\t\tfieldList: prev.fieldList.filter(field => field.id !== fieldID),\n\t\t\t}\n\t\t})\n\t}, [])\n\n\tconst updateField = useCallback((fieldID: string, updates: Partial<Field>) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\treturn {\n\t\t\t\t...prev,\n\t\t\t\tfieldList: prev.fieldList.map(field => (field.id === fieldID ? ({ ...field, ...updates } as Field) : field)),\n\t\t\t}\n\t\t})\n\t}, [])\n\n\tconst createFormContextEntry = useCallback((fieldsetEntry: FieldsetContextValue): Field => {\n\t\tif (fieldsetEntry.join) {\n\t\t\tconst joinedValue = fieldsetEntry.fieldList\n\t\t\t\t.filter(field => isStringField(field) && (field as StringField).value !== '')\n\t\t\t\t.map(field => (field as StringField).value)\n\t\t\t\t.join(fieldsetEntry.join)\n\n\t\t\treturn defineField({\n\t\t\t\ttype: 'string',\n\t\t\t\tid: fieldsetEntry.id,\n\t\t\t\tname: fieldsetEntry.name,\n\t\t\t\tvalue: joinedValue,\n\t\t\t\trequired: fieldsetEntry.fieldList.some(field => (field as StringField).required),\n\t\t\t\tinvalid: fieldsetEntry.fieldList.some(field => (field as StringField).invalid),\n\t\t\t})\n\t\t}\n\n\t\treturn defineField({\n\t\t\ttype: 'object',\n\t\t\tid: fieldsetEntry.id,\n\t\t\tname: fieldsetEntry.name,\n\t\t\tfields: fieldsetEntry.fieldList,\n\t\t})\n\t}, [])\n\n\tuseEffect(() => {\n\t\tif (!fieldsetContext || fieldsetContext.decorative) return\n\n\t\tconst formContextEntry = createFormContextEntry(fieldsetContext)\n\n\t\tformContextFunctions.registerField(formContextEntry)\n\n\t\treturn () => {\n\t\t\tformContextFunctions.removeField(fieldsetContext.id)\n\t\t}\n\t}, [fieldsetContext, formContextFunctions.registerField, formContextFunctions.removeField, createFormContextEntry])\n\n\treturn [fieldsetContext, { registerField, removeField, updateField }]\n}\n","// * Types\nimport { ReactNode, Suspense } from 'react'\n\nexport type FormStatus = 'error' | 'incomplete' | 'loading' | 'ready' | 'success' | 'readonly'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\nconst DEFAULT_STATUS: FormStatus = 'incomplete'\n\nconst { Provider, useStore } = createFastContext<FormStatus>(DEFAULT_STATUS)\n\nexport function FormStatusProvider({\n\tchildren,\n\tinitialStatus = DEFAULT_STATUS,\n}: {\n\tchildren?: ReactNode\n\tinitialStatus?: FormStatus\n}) {\n\treturn (\n\t\t<Suspense>\n\t\t\t<Provider initialValue={initialStatus}>{children}</Provider>\n\t\t</Suspense>\n\t)\n}\n\nexport function useFormStatus() {\n\treturn useStore(store => store)\n}\n","import React, { useCallback, useEffect, useId, useRef, useState } from 'react'\n\nexport type Coords = { x: number; y: number }\n\nexport type Cursor =\n\t| 'alias'\n\t| 'all-scroll'\n\t| 'auto'\n\t| 'cell'\n\t| 'col-resize'\n\t| 'context-menu'\n\t| 'copy'\n\t| 'crosshair'\n\t| 'default'\n\t| 'e-resize'\n\t| 'ew-resize'\n\t| 'grab'\n\t| 'grabbing'\n\t| 'help'\n\t| 'move'\n\t| 'no-drop'\n\t| 'not-allowed'\n\t| 'n-resize'\n\t| 'ne-resize'\n\t| 'nw-resize'\n\t| 'ns-resize'\n\t| 'nesw-resize'\n\t| 'nwse-resize'\n\t| 'pointer'\n\t| 'progress'\n\t| 'row-resize'\n\t| 's-resize'\n\t| 'se-resize'\n\t| 'sw-resize'\n\t| 'text'\n\t| 'vertical-text'\n\t| 'w-resize'\n\t| 'wait'\n\t| 'zoom-in'\n\t| 'zoom-out'\n\nexport type UsePointerMovementProps = {\n\tactiveCursor?: Cursor\n\tonChange?: (delta: Coords) => void\n\tonEnd?: (delta: Coords) => void\n}\n\nexport function usePointerMovement(props?: UsePointerMovementProps) {\n\tconst pointerTypeRef = useRef<'mouse' | 'pointer' | 'touch'>('pointer'),\n\t\t[isTracking, setIsTracking] = useState(false),\n\t\t[delta, setDelta] = useState<Coords>({ x: 0, y: 0 }),\n\t\tstartCoordsRef = useRef<Coords>({ x: 0, y: 0 })\n\n\tconst styleID = useId()\n\n\tconst changeCursor = (cursor: Cursor | false) => {\n\t\tif (cursor === false) {\n\t\t\tdocument.querySelector<HTMLStyleElement>(`#${styleID}`)?.remove()\n\t\t\treturn\n\t\t}\n\n\t\tconst css = `*, *:active { cursor: ${cursor}; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; }`\n\n\t\tconst style = document.createElement('style')\n\n\t\tstyle.id = styleID\n\t\tstyle.innerHTML = css\n\n\t\tdocument.body.prepend(style)\n\t}\n\n\tconst trackPointerMovement = (\n\t\te: React.MouseEvent<HTMLElement> | React.PointerEvent<HTMLElement> | React.TouchEvent<HTMLElement>,\n\t) => {\n\t\tchangeCursor(props?.activeCursor || 'grabbing')\n\n\t\tconst { type } = e\n\n\t\tswitch (type) {\n\t\t\tcase 'mousemove':\n\t\t\tcase 'mouseup':\n\t\t\tcase 'pointermove':\n\t\t\tcase 'pointerup':\n\t\t\tcase 'touchmove':\n\t\t\tcase 'touchend':\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'To initiate the tracking of pointer movement, you must use a `mousedown`, `pointerdown`, or `touchstart`.',\n\t\t\t\t)\n\t\t\tcase 'mousedown':\n\t\t\t\tpointerTypeRef.current = 'mouse'\n\t\t\t\tbreak\n\t\t\tcase 'pointerdown':\n\t\t\t\tpointerTypeRef.current = 'pointer'\n\t\t\t\tbreak\n\t\t\tcase 'touchstart':\n\t\t\t\tpointerTypeRef.current = 'touch'\n\t\t\t\tbreak\n\t\t}\n\n\t\tlet x = 0,\n\t\t\ty = 0\n\n\t\tif ('touches' in e) {\n\t\t\tconst { touches } = e\n\n\t\t\tif (touches.length > 1) return\n\n\t\t\tx = touches[0].clientX\n\t\t\ty = touches[0].clientY\n\t\t} else {\n\t\t\tx = e.clientX\n\t\t\ty = e.clientY\n\t\t}\n\n\t\tstartCoordsRef.current = { x, y }\n\t\tsetIsTracking(true)\n\t}\n\n\tconst updateDelta = useCallback((e: MouseEvent | PointerEvent | TouchEvent) => {\n\t\tlet clientX = 0,\n\t\t\tclientY = 0\n\n\t\tif ('touches' in e) {\n\t\t\tconst { touches } = e\n\n\t\t\tif (touches.length > 1) return\n\n\t\t\tclientX = touches[0].clientX\n\t\t\tclientY = touches[0].clientY\n\t\t} else {\n\t\t\tclientX = e.clientX\n\t\t\tclientY = e.clientY\n\t\t}\n\n\t\tconst { x, y } = startCoordsRef.current,\n\t\t\tnewDelta = { x: clientX - x, y: clientY - y }\n\n\t\tsetDelta(newDelta)\n\t\tprops?.onChange?.(newDelta)\n\t}, [])\n\n\tconst stopTracking = useCallback(() => {\n\t\tchangeCursor(false)\n\t\tsetIsTracking(false)\n\t\tprops?.onEnd?.(delta)\n\t}, [delta])\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst controller = new AbortController(),\n\t\t\tsignal = controller.signal\n\n\t\tif (isTracking) {\n\t\t\tswitch (pointerTypeRef.current) {\n\t\t\t\tcase 'mouse':\n\t\t\t\t\tdocument.body.addEventListener('mousemove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('mouseup', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'pointer':\n\t\t\t\t\tdocument.body.addEventListener('pointermove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('pointerup', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'touch':\n\t\t\t\t\tdocument.body.addEventListener('touchmove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('touchend', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tcontroller.abort()\n\t\t}\n\n\t\treturn () => {\n\t\t\tcontroller.abort()\n\t\t}\n\t}, [isTracking, updateDelta, stopTracking])\n\n\treturn { delta, stopTracking, trackPointerMovement }\n}\n","// * Types\nimport { OneOf } from '../../types'\n\ntype NameOrLegend = OneOf<\n\t[\n\t\t{\n\t\t\tlegend: string\n\t\t\tlegendProps?: Omit<LegendProps, 'children'> & {\n\t\t\t\t/** @deprecated Use the `legend` prop instead. */\n\t\t\t\tchildren?: never\n\t\t\t}\n\t\t},\n\t\t{ name: string },\n\t]\n>\n\nexport type FieldsetProps = Omit<HeadlessFieldsetProps, 'name'> &\n\tNameOrLegend & {\n\t\t/** When true, the fieldset will only be used for decoration and will not affect the `formContext`. */\n\t\tdecorative?: boolean\n\t\t/**\n\t\t * Joins all values in the fieldset into a single string value.\n\t\t *\n\t\t * @example\n\t\t * ```tsx\n\t\t * <Fieldset legend='Full Name' join=' '>\n\t\t * <Input name='First Name />\n\t\t * <Input name='Last Name />\n\t\t * </Fieldset>\n\t\t * ```\n\t\t * `[{ name: 'First Name', value: 'Johnny' }, { name: 'Last Name', value: 'Appleseed' }]`\n\t\t *\n\t\t * ↓\n\t\t *\n\t\t * `[{ name: 'Full Name', value: 'Johnny Appleseed' }]`\n\t\t */\n\t\tjoin?: string\n\t}\n\n// * Mado UI\nimport { FieldsetContextProvider } from '../../hooks'\n\n// * React\nimport { ReactElement, useId } from 'react'\n\n// * Headless UI\nimport {\n\tFieldset as HeadlessFieldset,\n\tFieldsetProps as HeadlessFieldsetProps,\n\tLegend,\n\tLegendProps,\n} from '@headlessui/react'\n\n// * Utilities\nimport { twMerge, toLowerCase } from '../../utils'\n\nexport function Fieldset({\n\tchildren,\n\tclassName,\n\tdecorative = false,\n\tjoin,\n\tlegend,\n\tlegendProps,\n\tname,\n\t...props\n}: FieldsetProps): ReactElement {\n\tconst uniqueID = useId()\n\n\tconst fieldsetId = toLowerCase(legend || name!, [' ', '_']) + '§' + uniqueID\n\n\tconst { className: legendClassName, ...restLegendProps } = legendProps || {}\n\n\tname = legend || name!\n\n\treturn (\n\t\t<FieldsetContextProvider\n\t\t\tinitialValue={{\n\t\t\t\tdecorative,\n\t\t\t\tfieldList: [],\n\t\t\t\tid: fieldsetId,\n\t\t\t\tjoin,\n\t\t\t\tname,\n\t\t\t}}\n\t\t>\n\t\t\t<HeadlessFieldset\n\t\t\t\t{...props}\n\t\t\t\tname={name}\n\t\t\t\tclassName={bag => twMerge('contents', typeof className === 'function' ? className(bag) : className)}\n\t\t\t>\n\t\t\t\t{bag => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{legend && (\n\t\t\t\t\t\t\t<Legend\n\t\t\t\t\t\t\t\t{...restLegendProps}\n\t\t\t\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\t\t\t'text-xl font-bold text-current/80',\n\t\t\t\t\t\t\t\t\ttypeof legendClassName === 'function' ? legendClassName(bag) : legendClassName,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{legend}\n\t\t\t\t\t\t\t</Legend>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{typeof children === 'function' ? children(bag) : children}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</HeadlessFieldset>\n\t\t</FieldsetContextProvider>\n\t)\n}\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (_e) {\n return false;\n }\n });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// * Types\nimport { AnyElementProps } from \"../types\";\n\nexport type TooltipProps = {\n\tanchor?: Placement;\n\tarrow?: boolean;\n\tarrowClassName?: string;\n\tchildren:\n\t\t| ReactNode\n\t\t| ((\n\t\t\t{ openTooltip, closeTooltip }: {\n\t\t\t\topenTooltip: () => void;\n\t\t\t\tcloseTooltip: () => void;\n\t\t\t},\n\t\t) => ReactNode);\n\tdelay?: number;\n\toffset?: number;\n\tonClose?: () => void;\n\tonOpen?: () => void;\n\tportal?: boolean;\n\tmaxWidth?: number;\n};\n\nexport type TooltipTriggerProps<T extends ElementType = \"button\"> =\n\t& AnyElementProps<T>\n\t& {\n\t\tasChild?: boolean;\n\t};\n\nexport type TooltipPanelProps<T extends ElementType = \"div\"> = AnyElementProps<\n\tT\n>;\n\n// * React\nimport {\n\tcloneElement,\n\tComponentProps,\n\tCSSProperties,\n\tElementType,\n\tFocusEventHandler,\n\tisValidElement,\n\tMouseEventHandler,\n\tReactElement,\n\tReactNode,\n\tTouchEventHandler,\n\tuseCallback,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\n// * Floating UI\nimport {\n\tarrow as floatingArrow,\n\tautoUpdate,\n\tflip,\n\toffset as floatingOffset,\n\tPlacement,\n\tshift,\n\tsize,\n\tuseFloating,\n} from \"@floating-ui/react-dom\";\n\n// * Components\nimport { Button as HeadlessButton } from \"@headlessui/react\";\n\n// * Utilities\nimport { findComponentByType, twMerge } from \"../utils\";\n\nexport function TooltipTrigger<T extends ElementType = typeof HeadlessButton>({\n\tas,\n\tasChild = false,\n\tchildren,\n\t...props\n}: TooltipTriggerProps<T>): ReactElement {\n\tconst TooltipTriggerElement = as || HeadlessButton;\n\n\tif (asChild && isValidElement(children)) {\n\t\treturn cloneElement(children as ReactElement<any>, props);\n\t}\n\n\treturn <TooltipTriggerElement {...props}>{children}</TooltipTriggerElement>;\n}\n\nexport function TooltipPanel<T extends ElementType = \"div\">({\n\tas,\n\tchildren,\n\tclassName,\n\tstyle,\n\t...props\n}: TooltipPanelProps<T>): ReactElement {\n\tconst TooltipPanelElement = as || \"div\";\n\n\treturn (\n\t\t<TooltipPanelElement\n\t\t\t{...props}\n\t\t\tclassName={twMerge(\n\t\t\t\t\"absolute top-0 left-0 z-50 w-max rounded-md bg-neutral-50 px-2 py-1 text-sm text-neutral-950 opacity-0 shadow-lg outline-1 outline-neutral-400 data-portal:fixed data-ready:animate-fade-in dark:bg-neutral-800 dark:text-neutral-50 dark:shadow-none dark:-outline-offset-1 dark:outline-neutral-600\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{children}\n\t\t</TooltipPanelElement>\n\t);\n}\n\nexport function Tooltip({\n\tanchor = \"top\",\n\tarrow,\n\tarrowClassName,\n\tchildren,\n\tdelay = 500,\n\toffset = 8,\n\tonClose,\n\tonOpen,\n\tportal,\n}: TooltipProps): ReactElement {\n\tconst [isOpen, setIsOpen] = useState(false),\n\t\ttimeoutRef = useRef<NodeJS.Timeout>(undefined),\n\t\tarrowRef = useRef<HTMLDivElement>(null);\n\n\tconst [bodyElement, setBodyElement] = useState<HTMLBodyElement | null>(() =>\n\t\ttypeof window !== \"undefined\" ? (document.body as HTMLBodyElement) : null\n\t);\n\n\tuseEffect(() => {\n\t\tif (typeof window !== \"undefined\" && !bodyElement) {\n\t\t\tconst documentBody = document.body as HTMLBodyElement;\n\n\t\t\tsetBodyElement(documentBody);\n\t\t}\n\t}, [bodyElement, portal]);\n\n\tconst { refs, floatingStyles, isPositioned, placement, middlewareData } =\n\t\tuseFloating({\n\t\t\tmiddleware: [\n\t\t\t\tfloatingOffset(offset),\n\t\t\t\tflip({ padding: 20 }),\n\t\t\t\tshift({ padding: 20 }),\n\t\t\t\tsize({\n\t\t\t\t\tapply({ availableHeight, availableWidth, elements }) {\n\t\t\t\t\t\tconst height = `${Math.max(0, availableHeight) / 16}rem`,\n\t\t\t\t\t\t\twidth = `${Math.min(418, availableWidth) / 16}rem`;\n\n\t\t\t\t\t\telements.floating.style.maxHeight = height;\n\t\t\t\t\t\telements.floating.style.maxWidth = width;\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\t...(arrowRef.current\n\t\t\t\t\t? [floatingArrow({ element: arrowRef.current })]\n\t\t\t\t\t: []),\n\t\t\t],\n\t\t\tplacement: anchor,\n\t\t\tstrategy: portal ? \"fixed\" : \"absolute\",\n\t\t\twhileElementsMounted: autoUpdate,\n\t\t\topen: isOpen,\n\t\t});\n\n\tconst openTooltip = useCallback(() => {\n\t\tclearTimeout(timeoutRef.current);\n\n\t\tif (delay > 0) {\n\t\t\ttimeoutRef.current = setTimeout(() => {\n\t\t\t\tsetIsOpen(true);\n\t\t\t\tonOpen?.();\n\t\t\t}, delay);\n\t\t} else {\n\t\t\tsetIsOpen(true);\n\t\t\tonOpen?.();\n\t\t}\n\t}, [delay, onOpen]);\n\n\tconst closeTooltip = useCallback(() => {\n\t\tclearTimeout(timeoutRef.current);\n\t\tsetIsOpen(false);\n\t\tonClose?.();\n\t}, [onClose]);\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tclearTimeout(timeoutRef.current);\n\t\t};\n\t}, []);\n\n\tconst content = typeof children === \"function\"\n\t\t? children({ openTooltip, closeTooltip })\n\t\t: children;\n\n\tconst triggerElement = findComponentByType<TooltipTriggerProps>(\n\t\t\tcontent,\n\t\t\tTooltipTrigger,\n\t\t),\n\t\tcontentElement = findComponentByType<TooltipPanelProps>(\n\t\t\tcontent,\n\t\t\tTooltipPanel,\n\t\t);\n\n\tif (!contentElement) {\n\t\tthrow new Error(\"TooltipPanel must be defined in Tooltip children\");\n\t}\n\n\tif (!triggerElement && typeof children !== \"function\") {\n\t\tthrow new Error(\n\t\t\t\"TooltipTrigger must be provided when not using render prop pattern\",\n\t\t);\n\t}\n\n\tconst arrowStyles: CSSProperties = {};\n\n\tconst reversedAnchor = {\n\t\ttop: \"bottom\",\n\t\tright: \"left\",\n\t\tbottom: \"top\",\n\t\tleft: \"right\",\n\t\t\"top-start\": \"bottom left\",\n\t\t\"top-end\": \"bottom right\",\n\t\t\"right-start\": \"top left\",\n\t\t\"right-end\": \"bottom left\",\n\t\t\"bottom-start\": \"top left\",\n\t\t\"bottom-end\": \"top right\",\n\t\t\"left-start\": \"top right\",\n\t\t\"left-end\": \"bottom right\",\n\t}[placement];\n\n\tif (middlewareData.arrow && arrow) {\n\t\tconst { x, y } = middlewareData.arrow;\n\n\t\tconst staticSide = {\n\t\t\ttop: \"bottom\",\n\t\t\tright: \"left\",\n\t\t\tbottom: \"top\",\n\t\t\tleft: \"right\",\n\t\t}[placement.split(\"-\")[0]] as \"top\" | \"right\" | \"bottom\" | \"left\";\n\n\t\tif (staticSide) {\n\t\t\tarrowStyles[staticSide] = \"-4px\";\n\t\t\tif (x != null) arrowStyles.left = `${x}px`;\n\t\t\tif (y != null) arrowStyles.top = `${y}px`;\n\t\t}\n\t}\n\n\tconst getArrowLocationClasses = () => {\n\t\tswitch (placement) {\n\t\t\tcase \"bottom\":\n\t\t\tcase \"bottom-end\":\n\t\t\tcase \"bottom-start\":\n\t\t\t\treturn \"-translate-y-1\";\n\t\t\tcase \"top\":\n\t\t\tcase \"top-end\":\n\t\t\tcase \"top-start\":\n\t\t\t\treturn \"rotate-180 translate-y-1\";\n\t\t\tcase \"left\":\n\t\t\tcase \"left-end\":\n\t\t\tcase \"left-start\":\n\t\t\t\treturn \"rotate-90 translate-x-2\";\n\t\t\tcase \"right\":\n\t\t\tcase \"right-end\":\n\t\t\tcase \"right-start\":\n\t\t\t\treturn \"-rotate-90 -translate-x-2\";\n\t\t}\n\t};\n\n\tconst arrowLocationClasses = getArrowLocationClasses();\n\n\tconst handleMouseEnter: MouseEventHandler<HTMLButtonElement> = (e) => {\n\t\topenTooltip();\n\t\ttriggerElement?.props.onMouseEnter?.(e);\n\t};\n\n\tconst handleMouseLeave: MouseEventHandler<HTMLButtonElement> = (e) => {\n\t\ttriggerElement?.props.onMouseLeave?.(e);\n\t\tcloseTooltip();\n\t};\n\n\tconst handleTouchStart: TouchEventHandler<HTMLButtonElement> = (e) => {\n\t\topenTooltip();\n\t\ttriggerElement?.props.onTouchStart?.(e);\n\t};\n\n\tconst handleFocus: FocusEventHandler<HTMLButtonElement> = (e) => {\n\t\ttriggerElement?.props.onFocus?.(e);\n\t\topenTooltip();\n\t};\n\n\tconst handleBlur: FocusEventHandler<HTMLButtonElement> = (e) => {\n\t\ttriggerElement?.props.onBlur?.(e);\n\t\tcloseTooltip();\n\t};\n\n\tconst tooltipContent = (\n\t\t<>\n\t\t\t{isOpen &&\n\t\t\t\tcontentElement &&\n\t\t\t\tcloneElement(contentElement as ReactElement<any>, {\n\t\t\t\t\tchildren: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{contentElement.props.children}\n\n\t\t\t\t\t\t\t{arrow && (\n\t\t\t\t\t\t\t\t<ArrowSvg\n\t\t\t\t\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\t\t\t\t\"absolute\",\n\t\t\t\t\t\t\t\t\t\tarrowLocationClasses,\n\t\t\t\t\t\t\t\t\t\tarrowClassName,\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\tstyle={arrowStyles}\n\t\t\t\t\t\t\t\t\tdata-tooltip-arrow\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t\t...(portal ? { \"data-portal\": true } : {}),\n\t\t\t\t\t...(isPositioned ? { \"data-ready\": true } : {}),\n\t\t\t\t\tonMouseEnter: openTooltip,\n\t\t\t\t\tonMouseLeave: closeTooltip,\n\t\t\t\t\tonTouchStart: handleTouchStart,\n\t\t\t\t\tref: (node: HTMLDivElement | null) => {\n\t\t\t\t\t\trefs.setFloating(node);\n\n\t\t\t\t\t\tif (node && arrow) {\n\t\t\t\t\t\t\tconst arrowElement = node.querySelector(\n\t\t\t\t\t\t\t\t\"[data-tooltip-arrow]\",\n\t\t\t\t\t\t\t) as HTMLDivElement;\n\n\t\t\t\t\t\t\tif (arrowElement) arrowRef.current = arrowElement;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\trole: \"tooltip\",\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\t...contentElement.props.style,\n\t\t\t\t\t\t...floatingStyles,\n\t\t\t\t\t\ttransformOrigin: reversedAnchor,\n\t\t\t\t\t\tpointerEvents: \"none\",\n\t\t\t\t\t},\n\t\t\t\t})}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{triggerElement &&\n\t\t\t\tcloneElement(triggerElement as ReactElement<any>, {\n\t\t\t\t\tref: refs.setReference,\n\t\t\t\t\tonMouseEnter: handleMouseEnter,\n\t\t\t\t\tonMouseLeave: handleMouseLeave,\n\t\t\t\t\tonFocus: handleFocus,\n\t\t\t\t\tonBlur: handleBlur,\n\t\t\t\t\t\"aria-describedby\": isOpen ? \"tooltip\" : undefined,\n\t\t\t\t})}\n\n\t\t\t{portal\n\t\t\t\t? bodyElement && createPortal(tooltipContent, bodyElement)\n\t\t\t\t: tooltipContent}\n\t\t</>\n\t);\n}\n\nfunction ArrowSvg({ className, ...props }: ComponentProps<\"svg\">) {\n\treturn (\n\t\t<svg\n\t\t\tviewBox=\"0 0 20 10\"\n\t\t\tclassName={twMerge(\"h-2.5 w-5 fill-none\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<path\n\t\t\t\td=\"M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z\"\n\t\t\t\tclassName=\"fill-neutral-50 dark:fill-neutral-800\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M8.99542 1.85876C9.75604 1.17425 10.9106 1.17422 11.6713 1.85878L16.5281 6.22989C17.0789 6.72568 17.7938 7.00001 18.5349 7.00001L15.89 7L11.0023 2.60207C10.622 2.2598 10.0447 2.2598 9.66436 2.60207L4.77734 7L2.13171 7.00001C2.87284 7.00001 3.58774 6.72568 4.13861 6.22989L8.99542 1.85876Z\"\n\t\t\t\tclassName=\"fill-neutral-400 dark:fill-none\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M10.3333 3.34539L5.47654 7.71648C4.55842 8.54279 3.36693 9 2.13172 9H0V8H2.13172C3.11989 8 4.07308 7.63423 4.80758 6.97318L9.66437 2.60207C10.0447 2.25979 10.622 2.2598 11.0023 2.60207L15.8591 6.97318C16.5936 7.63423 17.5468 8 18.5349 8H20V9H18.5349C17.2998 9 16.1083 8.54278 15.1901 7.71648L10.3333 3.34539Z\"\n\t\t\t\tclassName=\"dark:fill-neutral-600\"\n\t\t\t/>\n\t\t</svg>\n\t);\n}\n","// * Types\nimport { OneOf } from \"../../../types\";\n\ntype DateMinMax =\n\t| Date\n\t| [number, DateTimeObject[\"month\"], DateTimeObject[\"day\"]]\n\t| Pick<DateTimeObject, \"day\" | \"month\" | \"year\">;\n\ntype DateTimeMinMax =\n\t| Date\n\t| [\n\t\tnumber,\n\t\tDateTimeObject[\"month\"],\n\t\tDateTimeObject[\"day\"],\n\t\tDateTimeObject[\"hour\"],\n\t\tDateTimeObject[\"minute\"],\n\t\tDateTimeObject[\"second\"],\n\t]\n\t| DateTimeObject;\n\ntype TimeMinMax =\n\t| [DateTimeObject[\"hour\"], DateTimeObject[\"minute\"], DateTimeObject[\"second\"]]\n\t| Pick<DateTimeObject, \"hour\" | \"minute\" | \"second\">;\n\ntype WeekMinMax = [number, WeekNumber];\n\ntype InputType = OneOf<\n\t[\n\t\t{\n\t\t\ttype?: \"date\";\n\t\t\tmin?: DateMinMax;\n\t\t\tmax?: DateMinMax;\n\t\t},\n\t\t{\n\t\t\ttype?: \"datetime\" | \"datetime-local\";\n\t\t\tmin?: DateTimeMinMax;\n\t\t\tmax?: DateTimeMinMax;\n\t\t},\n\t\t{\n\t\t\ttype?: \"number\";\n\t\t\tmax?: number;\n\t\t\tmin?: number;\n\t\t},\n\t\t{\n\t\t\ttype?: \"password\";\n\t\t\toptions?: Partial<PasswordOptions>;\n\t\t},\n\t\t{\n\t\t\ttype?: \"tel\";\n\t\t\toptions?: Partial<PhoneOptions>;\n\t\t},\n\t\t{\n\t\t\ttype?: \"time\";\n\t\t\tmin?: TimeMinMax;\n\t\t\tmax?: TimeMinMax;\n\t\t},\n\t\t{\n\t\t\ttype?: \"week\";\n\t\t\tmin?: WeekMinMax;\n\t\t\tmax?: WeekMinMax;\n\t\t},\n\t\t{\n\t\t\ttype?: Exclude<\n\t\t\t\tHTMLInputTypeAttribute,\n\t\t\t\t| \"date\"\n\t\t\t\t| \"datetime\"\n\t\t\t\t| \"datetime-local\"\n\t\t\t\t| \"number\"\n\t\t\t\t| \"password\"\n\t\t\t\t| \"tel\"\n\t\t\t\t| \"time\"\n\t\t\t\t| \"week\"\n\t\t\t>;\n\t\t},\n\t]\n>;\n\nexport type InputProps =\n\t& Omit<HeadlessInputProps, \"max\" | \"min\" | \"name\" | \"type\">\n\t& InputType\n\t& {\n\t\tdescription?: ReactNode;\n\t\tdescriptionProps?: Omit<DescriptionProps, \"children\"> & {\n\t\t\t/** @deprecated Use the `description` prop instead. */\n\t\t\tchildren?: never;\n\t\t};\n\t\tfieldProps?: Omit<FieldProps, \"children\" | \"disabled\">;\n\t\tlabel?: ReactNode;\n\t\tlabelProps?: Omit<LabelProps, \"children\"> & {\n\t\t\t/** @deprecated Use the `label` prop instead. */\n\t\t\tchildren?: never;\n\t\t};\n\t\tname: string;\n\t\tref?: RefObject<HTMLInputElement | null>;\n\t};\n\ntype PasswordOptions = {\n\tmatchPreviousInput: boolean;\n\trequireLowercaseCharacter: boolean;\n\trequireNumber: boolean;\n\trequireSpecialCharacter: boolean;\n\trequireUppercaseCharacter: boolean;\n};\n\ntype PhoneOptions = {\n\tcountryCode: string;\n\t/**\n\t * @example\n\t * format: 'continuous'\n\t * returns: 5555555555\n\t *\n\t * @example\n\t * format: 'dot'\n\t * returns: 555.555.5555\n\t *\n\t * @example\n\t * format: 'hyphenated'\n\t * returns: 555-555-5555\n\t *\n\t * @example\n\t * format: 'space'\n\t * returns: 555 555 5555\n\t *\n\t * @example\n\t * format: 'standard' (default)\n\t * returns: (555) 555-5555\n\t */\n\tformat: \"continuous\" | \"dot\" | \"hyphenated\" | \"none\" | \"space\" | \"standard\";\n};\n\n// * React\nimport {\n\tChangeEventHandler,\n\tFocusEventHandler,\n\tHTMLInputTypeAttribute,\n\tReactElement,\n\tReactNode,\n\tRefObject,\n\tuseEffect,\n\tuseId,\n\tuseState,\n} from \"react\";\n\n// * Hooks\nimport {\n\tdefineField,\n\tisStringField,\n\tStringField,\n\tuseFieldsetContext,\n\tuseFormContext,\n} from \"../../../hooks\";\n\n// * Headless UI\nimport {\n\tDescription,\n\tDescriptionProps,\n\tField,\n\tFieldProps,\n\tInput as HeadlessInput,\n\tInputProps as HeadlessInputProps,\n\tLabel,\n\tLabelProps,\n} from \"@headlessui/react\";\n\n// * Components\nimport { Button } from \"../../button\";\nimport { Tooltip, TooltipPanel, TooltipTrigger } from \"../../tooltip\";\nimport { ExclamationmarkOctagon } from \"../../../icons\";\n\n// * Utilities\nimport {\n\tDateTimeObject,\n\tformatPhoneNumber,\n\tgetMonthIndexFromName,\n\tgetUserReadableDate,\n\tisEmail,\n\tisPhoneNumber,\n\ttoLowerCase,\n\ttwMerge,\n\tWeekNumber,\n} from \"../../../utils\";\n\nconst specialCharacterRegex = new RegExp(\n\t/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~€‚ƒ„…†‡‰‹‘’“”•–—™›¡¢£¥§©«¬®°±¶º»¿×÷]/,\n);\n\nexport function Input({\n\tchecked,\n\tclassName,\n\tdefaultValue,\n\tdescription,\n\tdescriptionProps,\n\tdisabled,\n\tfieldProps,\n\tinvalid = true,\n\tlabel,\n\tlabelProps,\n\tmax,\n\tmin,\n\tname,\n\tonBlur,\n\tonChange,\n\toptions,\n\tplaceholder,\n\tref,\n\trequired = true,\n\ttype,\n\tvalue,\n\t...props\n}: InputProps): ReactElement {\n\tconst [formContext, formContextFunctions] = useFormContext(),\n\t\t[fieldsetContext, fieldsetContextFunctions] = useFieldsetContext(),\n\t\t[errorMessage, setErrorMessage] = useState<string | undefined>(undefined);\n\n\tif (type === \"password\" && !placeholder) {\n\t\tplaceholder = \"••••••••\" + (required && !label ? \"*\" : \"\");\n\t}\n\tif (placeholder === \"*\") placeholder = name + (required && !label ? \"*\" : \"\");\n\tif (label === \"*\") label = name;\n\n\tconst uniqueID = useId(),\n\t\tfieldContextID = toLowerCase(name, [, \"_\"]) + \"§\" + uniqueID;\n\n\tconst isInFieldset = fieldsetContext && !fieldsetContext.decorative;\n\n\tconst getFieldContextType = () => {\n\t\tswitch (type) {\n\t\t\tcase \"email\":\n\t\t\t\treturn \"email\";\n\t\t\tcase \"file\":\n\t\t\t\treturn \"file\";\n\t\t\tcase \"number\":\n\t\t\t\treturn \"number\";\n\t\t\tcase \"tel\":\n\t\t\t\treturn \"tel\";\n\t\t\tcase \"url\":\n\t\t\t\treturn \"url\";\n\t\t\tdefault:\n\t\t\t\treturn \"string\";\n\t\t}\n\t};\n\n\tconst fieldContextType = getFieldContextType();\n\n\tconst fieldContext = (isInFieldset ? fieldsetContext.fieldList : formContext)\n\t\t?.find(\n\t\t\t({ id: fieldID }) => fieldID === fieldContextID,\n\t\t);\n\n\tuseEffect(() => {\n\t\tconst initialFieldContext = defineField({\n\t\t\ttype: fieldContextType,\n\t\t\tid: fieldContextID,\n\t\t\tinvalid,\n\t\t\tname,\n\t\t\trequired,\n\t\t\tvalue: value ? `${value}` : defaultValue ? `${defaultValue}` : \"\",\n\t\t});\n\n\t\tif (isInFieldset) {\n\t\t\tfieldsetContextFunctions.registerField(initialFieldContext);\n\n\t\t\treturn () => {\n\t\t\t\tfieldsetContextFunctions.removeField(initialFieldContext.id);\n\t\t\t};\n\t\t}\n\n\t\tformContextFunctions.registerField(initialFieldContext);\n\n\t\treturn () => {\n\t\t\tformContextFunctions.removeField(initialFieldContext.id);\n\t\t};\n\t}, [isInFieldset]);\n\n\tconst validateField = (validValue: string) => {\n\t\tconst noValue = !validValue || validValue === \"\";\n\n\t\tif (!required && noValue) return true;\n\n\t\tconst errorMessageList: string[] = [];\n\n\t\tif (noValue) {\n\t\t\terrorMessageList.push(\"This field is required.\");\n\t\t\tsetErrorMessage(errorMessageList.join(\" \"));\n\t\t\treturn false;\n\t\t}\n\n\t\tswitch (type) {\n\t\t\tcase \"email\":\n\t\t\t\tif (!isEmail(validValue)) {\n\t\t\t\t\terrorMessageList.push(\"This is not a valid email.\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"date\":\n\t\t\t\tconst valueAsTime = new Date().getTime();\n\n\t\t\t\tif (min && !(min instanceof Date) && typeof min !== \"number\") {\n\t\t\t\t\tif (Array.isArray(min)) {\n\t\t\t\t\t\tconst monthIndex = typeof min[1] === \"number\"\n\t\t\t\t\t\t\t? min[1] - 1\n\t\t\t\t\t\t\t: getMonthIndexFromName(min[1]);\n\n\t\t\t\t\t\tmin = new Date(min[0], monthIndex, min[2]);\n\t\t\t\t\t} else if (\"year\" in min && \"month\" in min && \"day\" in min) {\n\t\t\t\t\t\tconst monthIndex = typeof min.month === \"number\"\n\t\t\t\t\t\t\t? min.month - 1\n\t\t\t\t\t\t\t: getMonthIndexFromName(min.month);\n\n\t\t\t\t\t\tmin = new Date(min.year, monthIndex, min.day);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (valueAsTime < (min as Date).getTime()) {\n\t\t\t\t\t\terrorMessageList.push(\n\t\t\t\t\t\t\t`Value cannot be lower than ${getUserReadableDate(min as Date)}.`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (max && !(max instanceof Date) && typeof max !== \"number\") {\n\t\t\t\t\tif (Array.isArray(max)) {\n\t\t\t\t\t\tconst monthIndex = typeof max[1] === \"number\"\n\t\t\t\t\t\t\t? max[1] - 1\n\t\t\t\t\t\t\t: getMonthIndexFromName(max[1]);\n\n\t\t\t\t\t\tmax = new Date(max[0], monthIndex, max[2]);\n\t\t\t\t\t} else if (\"year\" in max && \"month\" in max && \"day\" in max) {\n\t\t\t\t\t\tconst monthIndex = typeof max.month === \"number\"\n\t\t\t\t\t\t\t? max.month - 1\n\t\t\t\t\t\t\t: getMonthIndexFromName(max.month);\n\n\t\t\t\t\t\tmax = new Date(max.year, monthIndex, max.day);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (valueAsTime > (max as Date).getTime()) {\n\t\t\t\t\t\terrorMessageList.push(\n\t\t\t\t\t\t\t`Value cannot be higher than ${\n\t\t\t\t\t\t\t\tgetUserReadableDate(max as Date)\n\t\t\t\t\t\t\t}.`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase \"number\":\n\t\t\t\tconst valueAsNumber = Number(validValue);\n\n\t\t\t\tif (isNaN(valueAsNumber)) {\n\t\t\t\t\terrorMessageList.push(\"This is not a valid number.\");\n\t\t\t\t}\n\n\t\t\t\tif (typeof max === \"number\" && valueAsNumber > max) {\n\t\t\t\t\terrorMessageList.push(`Value cannot be higher than ${max}.`);\n\t\t\t\t}\n\n\t\t\t\tif (typeof min === \"number\" && valueAsNumber < min) {\n\t\t\t\t\terrorMessageList.push(`Value cannot be lower than ${min}.`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"password\":\n\t\t\t\tif (options) {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tmatchPreviousInput,\n\t\t\t\t\t\trequireLowercaseCharacter,\n\t\t\t\t\t\trequireNumber,\n\t\t\t\t\t\trequireSpecialCharacter,\n\t\t\t\t\t\trequireUppercaseCharacter,\n\t\t\t\t\t} = options as Partial<PasswordOptions>;\n\n\t\t\t\t\tif (matchPreviousInput && formContext && formContext.length >= 2) {\n\t\t\t\t\t\tif (isInFieldset && fieldsetContext.fieldList.length > 1) {\n\t\t\t\t\t\t\tconst currentInputIndex = fieldsetContext.fieldList.findIndex(\n\t\t\t\t\t\t\t\t({ id: fieldID }) => fieldID === fieldContext?.id,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (currentInputIndex > 0) {\n\t\t\t\t\t\t\t\tconst previousInput = fieldsetContext.fieldList.find((\n\t\t\t\t\t\t\t\t\t_,\n\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t) => index === currentInputIndex - 1);\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tpreviousInput &&\n\t\t\t\t\t\t\t\t\tisStringField(previousInput) &&\n\t\t\t\t\t\t\t\t\t(previousInput as StringField).value !== validValue\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\terrorMessageList.push(\"Passwords must match.\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst currentInputIndex = formContext.findIndex((\n\t\t\t\t\t\t\t\t{ id: fieldID },\n\t\t\t\t\t\t\t) => fieldID === fieldContext?.id);\n\n\t\t\t\t\t\t\tif (currentInputIndex > 0) {\n\t\t\t\t\t\t\t\tconst previousInput = formContext.find((_, index) =>\n\t\t\t\t\t\t\t\t\tindex === currentInputIndex - 1\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tpreviousInput &&\n\t\t\t\t\t\t\t\t\tisStringField(previousInput) &&\n\t\t\t\t\t\t\t\t\t(previousInput as StringField).value !== validValue\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\terrorMessageList.push(\"Passwords must match.\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (requireLowercaseCharacter && !/[a-z]/g.test(validValue)) {\n\t\t\t\t\t\terrorMessageList.push(\"You must include a lowercase character.\");\n\t\t\t\t\t}\n\n\t\t\t\t\tif (requireNumber && !/[0-9]/g.test(validValue)) {\n\t\t\t\t\t\terrorMessageList.push(\"You must include a number.\");\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\trequireSpecialCharacter && !specialCharacterRegex.test(validValue)\n\t\t\t\t\t) {\n\t\t\t\t\t\terrorMessageList.push(\"You must include a special character.\");\n\t\t\t\t\t}\n\n\t\t\t\t\tif (requireUppercaseCharacter && !/[A-Z]/g.test(validValue)) {\n\t\t\t\t\t\terrorMessageList.push(\"You must include an uppercase character.\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"tel\":\n\t\t\t\tif (!isPhoneNumber(validValue)) {\n\t\t\t\t\terrorMessageList.push(\"This is not a valid phone number.\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (props.maxLength && validValue.length > Number(props.maxLength)) {\n\t\t\terrorMessageList.push(\n\t\t\t\t`This may not have more than ${props.maxLength} characters.`,\n\t\t\t);\n\t\t}\n\n\t\tif (props.minLength && validValue.length < Number(props.minLength)) {\n\t\t\terrorMessageList.push(\n\t\t\t\t`This must have at least ${props.minLength} characters.`,\n\t\t\t);\n\t\t}\n\n\t\tif (errorMessageList.length === 0) return true;\n\n\t\tsetErrorMessage(errorMessageList.join(\" \"));\n\t\treturn false;\n\t};\n\n\tconst handleChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n\t\tif (disabled) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tconst { currentTarget } = e,\n\t\t\t{ value: newValue } = currentTarget;\n\n\t\tif (isInFieldset) {\n\t\t\tfieldsetContextFunctions.updateField(fieldContextID, {\n\t\t\t\tvalue: newValue,\n\t\t\t\tinvalid: validateField(newValue) === false,\n\t\t\t});\n\t\t} else {\n\t\t\tformContextFunctions.updateField(fieldContextID, {\n\t\t\t\tvalue: newValue,\n\t\t\t\tinvalid: validateField(newValue) === false,\n\t\t\t});\n\t\t}\n\n\t\tonChange?.(e);\n\t};\n\n\tconst handleBlur: FocusEventHandler<HTMLInputElement> = (e) => {\n\t\tif (disabled) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tconst { currentTarget } = e,\n\t\t\t{ value: newValue } = currentTarget;\n\n\t\tif (required) validateField(newValue);\n\n\t\tlet processedValue = newValue;\n\n\t\tswitch (type) {\n\t\t\tcase \"email\":\n\t\t\t\tprocessedValue = newValue.toLowerCase();\n\t\t\t\tbreak;\n\t\t\tcase \"tel\":\n\t\t\t\tprocessedValue = formatPhoneNumber(\n\t\t\t\t\tnewValue,\n\t\t\t\t\toptions as Partial<PhoneOptions>,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (isInFieldset) {\n\t\t\tfieldsetContextFunctions.updateField(fieldContextID, {\n\t\t\t\tvalue: processedValue,\n\t\t\t});\n\t\t} else {\n\t\t\tformContextFunctions.updateField(fieldContextID, {\n\t\t\t\tvalue: processedValue,\n\t\t\t});\n\t\t}\n\n\t\tonBlur?.(e);\n\t};\n\n\tconst restFieldProps: Omit<FieldProps, \"className\" | \"disabled\"> = fieldProps\n\t\t? Object.fromEntries(\n\t\t\tObject.entries(fieldProps).filter(([key]) => key !== \"className\"),\n\t\t)\n\t\t: {};\n\n\tconst restLabelProps: Omit<LabelProps, \"className\" | \"children\"> = labelProps\n\t\t? Object.fromEntries(\n\t\t\tObject.entries(labelProps).filter(([key]) => key !== \"className\"),\n\t\t)\n\t\t: {};\n\n\tconst restDescriptionProps: Omit<DescriptionProps, \"className\" | \"children\"> =\n\t\tdescriptionProps\n\t\t\t? Object.fromEntries(\n\t\t\t\tObject.entries(descriptionProps).filter(([key]) => key !== \"className\"),\n\t\t\t)\n\t\t\t: {};\n\n\treturn (\n\t\t<Field\n\t\t\t{...restFieldProps}\n\t\t\tclassName={(bag) =>\n\t\t\t\ttwMerge(\n\t\t\t\t\t\"grid gap-1\",\n\t\t\t\t\ttypeof fieldProps?.className === \"function\"\n\t\t\t\t\t\t? fieldProps?.className(bag)\n\t\t\t\t\t\t: fieldProps?.className,\n\t\t\t\t)}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<Label\n\t\t\t\t\t{...restLabelProps}\n\t\t\t\t\tclassName={(bag) =>\n\t\t\t\t\t\ttwMerge(\n\t\t\t\t\t\t\t\"text-sm font-medium\",\n\t\t\t\t\t\t\trequired ? 'after:text-ui-red after:content-[\"_*\"]' : \"\",\n\t\t\t\t\t\t\ttypeof labelProps?.className === \"function\"\n\t\t\t\t\t\t\t\t? labelProps?.className(bag)\n\t\t\t\t\t\t\t\t: labelProps?.className,\n\t\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Label>\n\t\t\t)}\n\n\t\t\t<div>\n\t\t\t\t<HeadlessInput\n\t\t\t\t\t{...props}\n\t\t\t\t\tclassName={(bag) =>\n\t\t\t\t\t\ttwMerge(\n\t\t\t\t\t\t\t// Base styles\n\t\t\t\t\t\t\t\"w-full rounded-xl border border-neutral-500/50 bg-neutral-100 py-1 pl-2 text-neutral-950 outline-offset-1 outline-ui-sky-blue/95 transition-[background-color] duration-300 ease-exponential dark:bg-neutral-700 dark:text-neutral-50\",\n\t\t\t\t\t\t\t// Pseudo styles\n\t\t\t\t\t\t\t\"focus-visible:bg-neutral-50 focus-visible:outline-3 active:bg-neutral-200 dark:focus-visible:bg-neutral-600 dark:active:bg-neutral-800 pointer-fine:hover:bg-neutral-50 pointer-fine:active:bg-neutral-200 dark:pointer-fine:hover:bg-neutral-600 dark:pointer-fine:active:bg-neutral-800\",\n\t\t\t\t\t\t\t// user-invalid styles\n\t\t\t\t\t\t\t\"user-invalid:border-ui-red user-invalid:bg-[color-mix(in_oklab,var(--color-ui-red)_20%,var(--color-neutral-100))] user-invalid:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-100))] user-invalid:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-100))] dark:user-invalid:bg-[color-mix(in_oklab,var(--color-ui-red)_20%,var(--color-neutral-800))] dark:user-invalid:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-800))] dark:user-invalid:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-800))] user-invalid:pointer-fine:hover:bg-[color-mix(in_oklab,var(--color-ui-red)_10%,var(--color-neutral-100))] user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-100))] user-invalid:pointer-fine:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-100))] dark:user-invalid:pointer-fine:hover:bg-[color-mix(in_oklab,var(--color-ui-red)_10%,var(--color-neutral-800))] dark:user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-800))] dark:user-invalid:pointer-fine:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-800))]\",\n\t\t\t\t\t\t\t// Custom styles\n\t\t\t\t\t\t\ttypeof className === \"function\" ? className(bag) : className,\n\t\t\t\t\t\t)}\n\t\t\t\t\tinvalid={invalid}\n\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tref={ref}\n\t\t\t\t\trequired={required}\n\t\t\t\t\ttype={type}\n\t\t\t\t\tvalue={(fieldContext as StringField)?.value || \"\"}\n\t\t\t\t/>\n\n\t\t\t\t{(fieldContext as StringField)?.invalid && errorMessage && (\n\t\t\t\t\t<Tooltip anchor=\"top-end\" arrow portal>\n\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\tas={Button}\n\t\t\t\t\t\t\tclassName=\"absolute top-1.25 right-1.25 z-10 size-6 min-w-0\"\n\t\t\t\t\t\t\tpadding=\"none\"\n\t\t\t\t\t\t\trounded=\"md\"\n\t\t\t\t\t\t\ttheme=\"red\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ExclamationmarkOctagon className=\"absolute top-1/2 left-1/2 size-full -translate-x-1/2 -translate-y-1/2 scale-70\" />\n\t\t\t\t\t\t</TooltipTrigger>\n\n\t\t\t\t\t\t<TooltipPanel>{errorMessage}</TooltipPanel>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{description && (\n\t\t\t\t<Description\n\t\t\t\t\t{...restDescriptionProps}\n\t\t\t\t\tclassName={(bag) =>\n\t\t\t\t\t\ttwMerge(\n\t\t\t\t\t\t\t\"text-xs\",\n\t\t\t\t\t\t\ttypeof descriptionProps?.className === \"function\"\n\t\t\t\t\t\t\t\t? descriptionProps?.className(bag)\n\t\t\t\t\t\t\t\t: descriptionProps?.className,\n\t\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{description}\n\t\t\t\t</Description>\n\t\t\t)}\n\t\t</Field>\n\t);\n}\n","// * Types\nimport { ReactElement, ReactNode } from 'react'\n\nexport type SubmitButtonProps = Omit<ButtonProps, 'as' | 'customTheme' | 'href' | 'theme'> & {\n\t/** This doesn't do much by default, because we use built-in colors for different form states. You'll have to modify a good bit to make this do anything. */\n\tcustomTheme?: {\n\t\t/** Example: `'[--theme-color:var(--color-blue-500)]'` */\n\t\tthemeColor: string\n\t\t/**\n\t\t * @deprecated Only `themeColor` is available.\n\t\t *\n\t\t * ~~This doesn't use any preset color theme classes.~~\n\t\t */\n\t\tclasses?: never\n\t}\n\t/** The message to display when the form status is \"error\" */\n\terror?: ReactNode\n\t/** The message to display when the form status is \"incomplete\" */\n\tincomplete?: ReactNode\n\t/** The message to display when the form status is \"loading\" */\n\tloading?: ReactNode\n\t/** The message to display when the form status is \"readonly\" */\n\treadonly?: ReactNode\n\t/**\n\t * @deprecated Use `children` instead.\n\t *\n\t * ~~The message to display when the form status is \"ready\"~~\n\t */\n\tready?: never\n\t/** The message to display when the form status is \"success\" */\n\tsuccess?: ReactNode\n\t/**\n\t * @deprecated Use `customTheme.themeColor` instead.\n\t *\n\t * ~~Color theme.~~\n\t */\n\ttheme?: never\n}\n\n// * Hooks\nimport { useFormStatus } from '../../hooks'\n\n// * Components\nimport { Button, ButtonProps } from '../button'\n\n// * Utilities\nimport { twMerge, twSort } from '../../utils'\n\nexport function SubmitButton({\n\tchildren,\n\tclassName,\n\tcustomTheme,\n\terror,\n\tincomplete,\n\tloading,\n\tsuccess,\n\ttype,\n\t...props\n}: SubmitButtonProps): ReactElement {\n\tconst [formStatus] = useFormStatus()\n\n\tconst getFormStatusButtonClasses = () => {\n\t\tswitch (formStatus) {\n\t\t\tcase 'loading':\n\t\t\t\treturn twSort('animate-pulse cursor-wait text-lg leading-6 font-black tracking-widest')\n\t\t\tcase 'error':\n\t\t\tcase 'success':\n\t\t\t\treturn 'cursor-not-allowed'\n\t\t\tdefault:\n\t\t\t\treturn undefined\n\t\t}\n\t}\n\n\tconst formStatusButtonClasses = getFormStatusButtonClasses()\n\n\tconst getButtonText = () => {\n\t\tswitch (formStatus) {\n\t\t\tcase 'incomplete':\n\t\t\t\treturn incomplete || 'Complete Form'\n\t\t\tcase 'loading':\n\t\t\t\treturn (\n\t\t\t\t\tloading || (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<span className='inline-block animate-wave animation-delay-300'>•</span>\n\t\t\t\t\t\t\t<span className='inline-block animate-wave animation-delay-150'>•</span>\n\t\t\t\t\t\t\t<span className='inline-block animate-wave'>•</span>\n\t\t\t\t\t\t</>\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\tcase 'error':\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{error || 'Error'}{' '}\n\t\t\t\t\t\t<span className='absolute top-1/2 ml-1.5 translate-y-[calc(-50%-1.5px)] text-2xl'>×</span>\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\tcase 'success':\n\t\t\t\treturn success || 'Successfully Submitted'\n\t\t\tdefault:\n\t\t\t\treturn children || 'Submit'\n\t\t}\n\t}\n\n\tconst buttonText = getButtonText()\n\n\tconst getDataFormState = () => {\n\t\tswitch (formStatus) {\n\t\t\tcase 'error':\n\t\t\t\treturn { 'data-error': true }\n\t\t\tcase 'incomplete':\n\t\t\t\treturn { 'data-incomplete': true }\n\t\t\tcase 'loading':\n\t\t\t\treturn { 'data-loading': true }\n\t\t\tcase 'readonly':\n\t\t\t\treturn { 'data-readonly': true }\n\t\t\tcase 'ready':\n\t\t\t\treturn { 'data-ready': true }\n\t\t\tcase 'success':\n\t\t\t\treturn { 'data-success': true }\n\t\t\tdefault:\n\t\t\t\treturn {}\n\t\t}\n\t}\n\n\tconst dataFormState = getDataFormState()\n\n\treturn (\n\t\t<Button\n\t\t\t{...props}\n\t\t\t{...dataFormState}\n\t\t\tclassName={twMerge([formStatusButtonClasses, 'w-full text-white data-loading:text-black', className])}\n\t\t\tcustomTheme={{\n\t\t\t\tthemeColor: twMerge(\n\t\t\t\t\t'data-error:[--theme-color:var(--color-ui-red)] data-incomplete:[--theme-color:var(--color-ui-grey)] data-loading:[--theme-color:var(--color-ui-yellow)] data-readonly:[--theme-color:var(--color-ui-grey)] data-ready:[--theme-color:var(--color-ui-blue)] data-success:[--theme-color:var(--color-ui-green)]',\n\t\t\t\t\tcustomTheme?.themeColor,\n\t\t\t\t),\n\t\t\t}}\n\t\t\ttheme='custom'\n\t\t\ttype={type || 'submit'}\n\t\t>\n\t\t\t{buttonText}\n\t\t</Button>\n\t)\n}\n","// * Types\nexport type TextareaProps = Omit<HeadlessTextareaProps, 'name'> & {\n\tdescription?: ReactNode\n\tdescriptionProps?: Omit<DescriptionProps, 'children'> & {\n\t\t/** @deprecated Use the `description` prop instead. */\n\t\tchildren?: never\n\t}\n\tfieldProps?: Omit<FieldProps, 'children' | 'disabled'>\n\tlabel?: ReactNode\n\tlabelProps?: Omit<LabelProps, 'children'> & {\n\t\t/** @deprecated Use the `label` prop instead. */\n\t\tchildren?: never\n\t}\n\tname: string\n\tref?: RefObject<HTMLTextAreaElement | null>\n}\n\n// * React\nimport {\n\tChangeEventHandler,\n\tFocusEventHandler,\n\tReactElement,\n\tReactNode,\n\tRefObject,\n\tuseEffect,\n\tuseId,\n\tuseState,\n} from 'react'\n\n// * 窓 UI\nimport { defineField, StringField, useFieldsetContext, useFormContext } from '../../hooks'\n\n// * Headless UI\nimport {\n\tDescription,\n\tDescriptionProps,\n\tField,\n\tFieldProps,\n\tTextarea as HeadlessTextarea,\n\tTextareaProps as HeadlessTextareaProps,\n\tLabel,\n\tLabelProps,\n} from '@headlessui/react'\n\n// * Components\nimport { Tooltip, TooltipPanel, TooltipTrigger } from '../tooltip'\nimport { Button } from '../button'\nimport { ExclamationmarkOctagon } from '../../icons'\n\n// * Utilities\nimport { toLowerCase, twMerge } from '../../utils'\n\nexport function Textarea({\n\tclassName,\n\tdefaultValue,\n\tdescription,\n\tdescriptionProps,\n\tdisabled,\n\tfieldProps,\n\tinvalid = true,\n\tlabel,\n\tlabelProps,\n\tname,\n\tonBlur,\n\tonChange,\n\tplaceholder,\n\tref,\n\trequired = true,\n\tvalue,\n\t...props\n}: TextareaProps): ReactElement {\n\tconst [formContext, formContextFunctions] = useFormContext()\n\tconst [fieldsetContext, fieldsetContextFunctions] = useFieldsetContext()\n\tconst [errorMessage, setErrorMessage] = useState<string | undefined>(undefined)\n\n\tif (placeholder === '*') placeholder = name + (required && !label ? '*' : '')\n\tif (label === '*') label = name\n\n\tconst uniqueID = useId()\n\tconst fieldContextID = toLowerCase(name, [' ', '_']) + '§' + uniqueID\n\n\tconst isInFieldset = fieldsetContext && !fieldsetContext.decorative\n\n\tuseEffect(() => {\n\t\tconst initialFieldContext = defineField({\n\t\t\ttype: 'textarea',\n\t\t\tid: fieldContextID,\n\t\t\tinvalid,\n\t\t\tname,\n\t\t\trequired,\n\t\t\tvalue: value ? `${value}` : defaultValue ? `${defaultValue}` : '',\n\t\t})\n\n\t\tif (isInFieldset) {\n\t\t\tfieldsetContextFunctions.registerField(initialFieldContext)\n\n\t\t\treturn () => {\n\t\t\t\tfieldsetContextFunctions.removeField(initialFieldContext.id)\n\t\t\t}\n\t\t}\n\n\t\tformContextFunctions.registerField(initialFieldContext)\n\n\t\treturn () => {\n\t\t\tformContextFunctions.removeField(initialFieldContext.id)\n\t\t}\n\t}, [isInFieldset])\n\n\tconst fieldContext = (isInFieldset ? fieldsetContext.fieldList : formContext)?.find(\n\t\t({ id: fieldID }) => fieldID === fieldContextID,\n\t)\n\n\tconst validateField = (validValue: string) => {\n\t\tconst noValue = !validValue || validValue === ''\n\n\t\tif (!required && noValue) return true\n\n\t\tconst errorMessageList: string[] = []\n\n\t\tif (noValue) {\n\t\t\terrorMessageList.push('This field is required.')\n\t\t\tsetErrorMessage(errorMessageList.join(' '))\n\t\t\treturn false\n\t\t}\n\n\t\tif (props.maxLength && validValue.length > Number(props.maxLength))\n\t\t\terrorMessageList.push(`This may not have more than ${props.maxLength} characters.`)\n\n\t\tif (props.minLength && validValue.length < Number(props.minLength))\n\t\t\terrorMessageList.push(`This must have at least ${props.minLength} characters.`)\n\n\t\tif (errorMessageList.length === 0) return true\n\n\t\tsetErrorMessage(errorMessageList.join(' '))\n\t\treturn false\n\t}\n\n\tconst handleChange: ChangeEventHandler<HTMLTextAreaElement> = e => {\n\t\tif (disabled) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\tconst { currentTarget } = e\n\t\tconst { value: newValue } = currentTarget\n\n\t\tif (isInFieldset) {\n\t\t\tfieldsetContextFunctions.updateField(fieldContextID, {\n\t\t\t\tvalue: newValue,\n\t\t\t\tinvalid: validateField(newValue) === false,\n\t\t\t})\n\t\t} else {\n\t\t\tformContextFunctions.updateField(fieldContextID, {\n\t\t\t\tvalue: newValue,\n\t\t\t\tinvalid: validateField(newValue) === false,\n\t\t\t})\n\t\t}\n\n\t\tonChange?.(e)\n\t}\n\n\tconst handleBlur: FocusEventHandler<HTMLTextAreaElement> = e => {\n\t\tif (disabled) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\tconst { currentTarget } = e\n\t\tconst { value: newValue } = currentTarget\n\n\t\tif (required) validateField(newValue)\n\n\t\t// No special processing needed for textarea like email/phone formatting\n\t\tconst processedValue = newValue\n\n\t\tif (isInFieldset) {\n\t\t\tfieldsetContextFunctions.updateField(fieldContextID, { value: processedValue })\n\t\t} else {\n\t\t\tformContextFunctions.updateField(fieldContextID, { value: processedValue })\n\t\t}\n\n\t\tonBlur?.(e)\n\t}\n\n\tconst restFieldProps: Omit<FieldProps, 'className' | 'disabled'> = fieldProps\n\t\t? Object.fromEntries(Object.entries(fieldProps).filter(([key]) => key !== 'className'))\n\t\t: {}\n\n\tconst restLabelProps: Omit<LabelProps, 'className' | 'children'> = labelProps\n\t\t? Object.fromEntries(Object.entries(labelProps).filter(([key]) => key !== 'className'))\n\t\t: {}\n\n\tconst restDescriptionProps: Omit<DescriptionProps, 'className' | 'children'> = descriptionProps\n\t\t? Object.fromEntries(Object.entries(descriptionProps).filter(([key]) => key !== 'className'))\n\t\t: {}\n\n\treturn (\n\t\t<Field\n\t\t\t{...restFieldProps}\n\t\t\tclassName={bag =>\n\t\t\t\ttwMerge(\n\t\t\t\t\t'grid gap-1',\n\t\t\t\t\ttypeof fieldProps?.className === 'function' ? fieldProps?.className(bag) : fieldProps?.className,\n\t\t\t\t)\n\t\t\t}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<Label\n\t\t\t\t\t{...restLabelProps}\n\t\t\t\t\tclassName={bag =>\n\t\t\t\t\t\ttwMerge(\n\t\t\t\t\t\t\t'text-sm font-medium',\n\t\t\t\t\t\t\trequired ? 'after:text-ui-red after:content-[\"_*\"]' : '',\n\t\t\t\t\t\t\ttypeof labelProps?.className === 'function' ? labelProps?.className(bag) : labelProps?.className,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Label>\n\t\t\t)}\n\n\t\t\t<div className='z-10 -mb-1.5'>\n\t\t\t\t<HeadlessTextarea\n\t\t\t\t\t{...props}\n\t\t\t\t\tclassName={bag =>\n\t\t\t\t\t\ttwMerge(\n\t\t\t\t\t\t\t// Base styles\n\t\t\t\t\t\t\t'field-sizing-content w-full resize-none rounded-xl border-1 border-neutral-500/50 bg-neutral-100 py-1 pl-2 text-neutral-950 outline-offset-1 outline-ui-sky-blue/95 transition-[background-color] duration-300 ease-exponential dark:bg-neutral-700 dark:text-neutral-50',\n\t\t\t\t\t\t\t// Pseudo styles\n\t\t\t\t\t\t\t'focus-visible:bg-neutral-50 focus-visible:outline-3 active:bg-neutral-200 dark:focus-visible:bg-neutral-600 dark:active:bg-neutral-800 pointer-fine:hover:bg-neutral-50 pointer-fine:active:bg-neutral-200 dark:pointer-fine:hover:bg-neutral-600 dark:pointer-fine:active:bg-neutral-800',\n\t\t\t\t\t\t\t// user-invalid styles\n\t\t\t\t\t\t\t'user-invalid:border-ui-red user-invalid:bg-[color-mix(in_oklab,var(--color-ui-red)_20%,var(--color-neutral-100))] user-invalid:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-100))] user-invalid:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-100))] dark:user-invalid:bg-[color-mix(in_oklab,var(--color-ui-red)_20%,var(--color-neutral-800))] dark:user-invalid:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-800))] dark:user-invalid:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-800))] user-invalid:pointer-fine:hover:bg-[color-mix(in_oklab,var(--color-ui-red)_10%,var(--color-neutral-100))] user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-100))] user-invalid:pointer-fine:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-100))] dark:user-invalid:pointer-fine:hover:bg-[color-mix(in_oklab,var(--color-ui-red)_10%,var(--color-neutral-800))] dark:user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklab,var(--color-ui-red)_1%,var(--color-neutral-800))] dark:user-invalid:pointer-fine:active:bg-[color-mix(in_oklab,var(--color-ui-red)_25%,var(--color-neutral-800))]',\n\t\t\t\t\t\t\t// Custom styles\n\t\t\t\t\t\t\ttypeof className === 'function' ? className(bag) : className,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tid={fieldContext?.id}\n\t\t\t\t\tinvalid={invalid}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tref={ref}\n\t\t\t\t\trequired={required}\n\t\t\t\t\tvalue={(fieldContext as StringField)?.value || ''}\n\t\t\t\t/>\n\n\t\t\t\t{(fieldContext as StringField)?.invalid && errorMessage && (\n\t\t\t\t\t<Tooltip anchor='top-end' arrow portal>\n\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\tas={Button}\n\t\t\t\t\t\t\tclassName='absolute top-1.25 right-1.25 z-10 size-6 min-w-0'\n\t\t\t\t\t\t\tpadding='none'\n\t\t\t\t\t\t\trounded='md'\n\t\t\t\t\t\t\ttheme='red'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ExclamationmarkOctagon className='absolute top-1/2 left-1/2 size-full -translate-x-1/2 -translate-y-1/2 scale-70' />\n\t\t\t\t\t\t</TooltipTrigger>\n\n\t\t\t\t\t\t<TooltipPanel>{errorMessage}</TooltipPanel>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{description && (\n\t\t\t\t<Description\n\t\t\t\t\t{...restDescriptionProps}\n\t\t\t\t\tclassName={bag =>\n\t\t\t\t\t\ttwMerge(\n\t\t\t\t\t\t\t'text-xs',\n\t\t\t\t\t\t\ttypeof descriptionProps?.className === 'function'\n\t\t\t\t\t\t\t\t? descriptionProps?.className(bag)\n\t\t\t\t\t\t\t\t: descriptionProps?.className,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{description}\n\t\t\t\t</Description>\n\t\t\t)}\n\t\t</Field>\n\t)\n}\n","// * Types\nimport { AnyElementProps } from '../../types'\n\nexport type FormSubmitArgs = {\n\tevent: FormEvent<HTMLFormElement>\n\tformContext: FormContext\n}\n\nexport type FormProps<T extends ElementType = 'form'> = Omit<\n\tAnyElementProps<\n\t\tT,\n\t\t{\n\t\t\tcontrolled?: 'auto' | 'manual' | 'none'\n\t\t\thandleSubmit?: FormEventHandler<HTMLFormElement>\n\t\t\tinitialStatus?: FormStatus\n\t\t\tonError?: (e: FormEvent<HTMLFormElement>, error: string) => void\n\t\t\tonSuccess?: (e: FormEvent<HTMLFormElement>) => void\n\t\t}\n\t>,\n\t'onSubmit'\n> & {\n\tonSubmit?: ({\n\t\tevent,\n\t\tformContext,\n\t}: FormSubmitArgs) =>\n\t\t| ({ error?: string; status?: 'error' } | { status?: 'success' })\n\t\t| Promise<{ error?: string; status?: 'error' } | { status?: 'success' }>\n}\n\n// * React\nimport { ElementType, FormEvent, FormEventHandler, Fragment, ReactElement, useCallback, useEffect } from 'react'\n\n// * Form Status\nimport {\n\tField,\n\tFormContext,\n\tFormContextProvider,\n\tFormStatus,\n\tFormStatusProvider,\n\tuseFormContext,\n\tuseFormStatus,\n} from '../../hooks'\n\n// * Utilities\nimport { twMerge } from '../../utils'\n\nfunction FormComponent<T extends ElementType = 'form'>({\n\tas,\n\tchildren,\n\tclassName,\n\thandleSubmit,\n\tonError,\n\tonSubmit,\n\tonSuccess,\n\t...props\n}: Omit<FormProps<T>, 'controlled' | 'initialStatus'>): ReactElement {\n\tconst [formContext] = useFormContext(),\n\t\t[formStatus, setFormStatus] = useFormStatus()\n\n\tconst checkField = useCallback((field: Field): boolean => {\n\t\tif (field.type !== 'array' && field.type !== 'object' && !field.invalid) return true\n\n\t\tif (field.type === 'object') return field.fields.every(objectField => checkField(objectField))\n\n\t\treturn false\n\t}, [])\n\n\tconst everyFieldIsValid = useCallback(() => {\n\t\tif (!formContext) return false\n\n\t\treturn formContext.every(field => checkField(field))\n\t}, [formContext, checkField])\n\n\tuseEffect(() => {\n\t\tif (!formContext) return\n\n\t\tif (\n\t\t\tformStatus !== 'incomplete' &&\n\t\t\tformContext.find(context => context.type !== 'array' && context.type !== 'object' && context.invalid)\n\t\t)\n\t\t\tsetFormStatus?.('incomplete')\n\n\t\tif (formStatus !== 'ready' && everyFieldIsValid()) setFormStatus?.('ready')\n\t}, [formContext, everyFieldIsValid])\n\n\tconst processSubmit: FormEventHandler<HTMLFormElement> =\n\t\thandleSubmit ||\n\t\t(async e => {\n\t\t\te.preventDefault()\n\t\t\te.stopPropagation()\n\n\t\t\tsetFormStatus?.('loading')\n\n\t\t\tconst response = await onSubmit?.({ event: e, formContext })\n\n\t\t\tif (response && ('error' in response || response.status === 'error')) {\n\t\t\t\tsetFormStatus?.('error')\n\t\t\t\tonError?.({ event: e, error: response.error || 'An error occurred when submitting the form.', formContext })\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif ((response && response.status === 'success') || !response) {\n\t\t\t\tsetFormStatus?.('success')\n\t\t\t\tonSuccess?.({ event: e, formContext })\n\t\t\t}\n\t\t})\n\n\tconst FormElement = (as as ElementType) || 'form'\n\n\treturn (\n\t\t<FormElement {...props} className={twMerge(className, 'grid gap-3')} onSubmit={processSubmit}>\n\t\t\t{children}\n\t\t</FormElement>\n\t)\n}\n\nexport function Form<T extends ElementType = 'form'>({\n\tcontrolled = 'auto',\n\tinitialStatus = 'incomplete',\n\t...props\n}: FormProps<T>) {\n\tconst FormContextOrNotProvider = controlled === 'auto' ? FormContextProvider : Fragment\n\n\treturn (\n\t\t<FormStatusProvider initialStatus={initialStatus}>\n\t\t\t<FormContextOrNotProvider>\n\t\t\t\t<FormComponent {...props} />\n\t\t\t</FormContextOrNotProvider>\n\t\t</FormStatusProvider>\n\t)\n}\n\nexport * from './fieldset'\nexport * from './input'\nexport * from './submit-button'\nexport * from './textarea'\n","// * Types\nimport { HTMLAttributes, ReactElement } from 'react'\n\nexport type GhostProps = HTMLAttributes<HTMLDivElement>\n\n// * Utilities\nimport { twMerge } from '../utils'\n\nexport function Ghost({ children, className, ...props }: GhostProps): ReactElement {\n\treturn (\n\t\t<div {...props} className={twMerge('block w-24 max-w-full animate-pulse rounded bg-white/50', className)}>\n\t\t\t{children || <> </>}\n\t\t</div>\n\t)\n}\n","// * Types\nexport type HeadingProps = HTMLAttributes<HTMLHeadingElement> & {\n\tas?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n\tcustomize?: Partial<{\n\t\th1: string\n\t\th2: string\n\t\th3: string\n\t\th4: string\n\t\th5: string\n\t\th6: string\n\t}>\n\tref?: RefObject<HTMLHeadingElement | null>\n}\n\n// * React\nimport { Children, HTMLAttributes, ReactElement, ReactNode, RefObject, isValidElement } from 'react'\n\n// * Utilities\nimport { twMerge } from '../utils'\n\nfunction getTextFromChildren(children: ReactNode) {\n\tlet text = ''\n\n\tChildren.forEach(children, child => {\n\t\tif (typeof child === 'string' || typeof child === 'number') {\n\t\t\ttext += child\n\t\t} else if (isValidElement(child)) {\n\t\t\ttext += getTextFromChildren((child.props as { [key: string]: any }).children)\n\t\t}\n\t})\n\n\treturn text\n}\n\n/**\n * # Heading\n * A heading component that renders HTML heading elements (h1-h6) with appropriate styling.\n * Automatically generates an ID for the heading based on its content if none is provided.\n */\nexport function Heading({ as = 'h2', children, customize, className, id, ref, ...props }: HeadingProps): ReactElement {\n\tconst H = as\n\n\tconst targetableID = id || getTextFromChildren(children).replace(/\\s+/g, '-').toLowerCase()\n\n\tconst getBaseClasses = () => {\n\t\tswitch (as) {\n\t\t\tcase 'h1':\n\t\t\t\treturn twMerge('pb-2.5 text-6xl font-black last:pb-0', customize?.h1)\n\t\t\tcase 'h3':\n\t\t\t\treturn twMerge('pb-2 text-4xl font-extralight last:pb-0', customize?.h3)\n\t\t\tcase 'h4':\n\t\t\t\treturn twMerge('pb-2 text-3xl font-extrabold last:pb-0', customize?.h4)\n\t\t\tcase 'h5':\n\t\t\t\treturn twMerge('pb-1.5 text-2xl font-semibold last:pb-0', customize?.h5)\n\t\t\tcase 'h6':\n\t\t\t\treturn twMerge('pb-1 text-xl font-bold last:pb-0', customize?.h6)\n\t\t\tdefault:\n\t\t\t\treturn twMerge('pb-2.5 text-5xl font-medium last:pb-0', customize?.h2)\n\t\t}\n\t}\n\n\tconst baseClasses = getBaseClasses()\n\n\treturn (\n\t\t<H ref={ref} id={targetableID} {...props} className={twMerge(baseClasses, className)}>\n\t\t\t{children}\n\t\t</H>\n\t)\n}\n","// * Types\nimport { ComponentPropsWithRef, ReactElement } from 'react'\n\nexport type IFrameAllowAttribute =\n\t| 'accelerometer'\n\t| 'ambient-light-sensor'\n\t| 'attribution-reporting'\n\t| 'autoplay'\n\t| 'bluetooth'\n\t| 'camera'\n\t| 'captured-surface-control'\n\t| 'compute-pressure'\n\t| 'cross-origin-isolated'\n\t| 'deferred-fetch'\n\t| 'deferred-fetch-minimal'\n\t| 'display-capture'\n\t| 'encrypted-media'\n\t| 'fullscreen'\n\t| 'gamepad'\n\t| 'geolocation'\n\t| 'gyroscope'\n\t| 'hid'\n\t| 'identity-credentials-get'\n\t| 'idle-detection'\n\t| 'language-detector'\n\t| 'local-fonts'\n\t| 'magnetometer'\n\t| 'microphone'\n\t| 'midi'\n\t| 'otp-credentials'\n\t| 'payment'\n\t| 'picture-in-picture'\n\t| 'publickey-credentials-get'\n\t| 'screen-wake-lock'\n\t| 'serial'\n\t| 'speaker-selection'\n\t| 'storage-access'\n\t| 'translator'\n\t| 'summarizer'\n\t| 'usb'\n\t| 'web-share'\n\t| 'window-management'\n\t| 'xr-spatial-tracking'\n\nexport type IFrameReferrerPolicyAttribute =\n\t| 'no-referrer'\n\t| 'no-referrer-when-downgrade'\n\t| 'origin'\n\t| 'origin-when-cross-origin'\n\t| 'same-origin'\n\t| 'strict-origin'\n\t| 'strict-origin-when-cross-origin'\n\t| 'unsafe-url'\n\nexport type IFrameSandboxAttribute =\n\t| 'allow-downloads'\n\t| 'allow-forms'\n\t| 'allow-modals'\n\t| 'allow-orientation-lock'\n\t| 'allow-pointer-lock'\n\t| 'allow-popups'\n\t| 'allow-popups-to-escape-sandbox'\n\t| 'allow-presentation'\n\t| 'allow-same-origin'\n\t| 'allow-scripts'\n\t| 'allow-storage-access-by-user-activation'\n\t| 'allow-top-navigation'\n\t| 'allow-top-navigation-by-user-activation'\n\t| 'allow-top-navigation-to-custom-protocols'\n\nexport type IFrameProps = Omit<\n\tComponentPropsWithRef<'iframe'>,\n\t'allow' | 'children' | 'referrerPolicy' | 'sandbox' | 'title'\n> & {\n\tallow?: (IFrameAllowAttribute | Record<IFrameAllowAttribute, string[] | boolean>)[] | 'allow-all'\n\treferrerPolicy?: IFrameReferrerPolicyAttribute\n\tsandbox?: IFrameSandboxAttribute[]\n\ttitle: string\n}\n\n// * Utilities\nimport { twMerge } from '../utils'\n\nconst allAllowProperties: IFrameAllowAttribute[] = [\n\t'accelerometer',\n\t'ambient-light-sensor',\n\t'attribution-reporting',\n\t'autoplay',\n\t'bluetooth',\n\t'camera',\n\t'captured-surface-control',\n\t'compute-pressure',\n\t'cross-origin-isolated',\n\t'deferred-fetch',\n\t'deferred-fetch-minimal',\n\t'display-capture',\n\t'encrypted-media',\n\t'fullscreen',\n\t'gamepad',\n\t'geolocation',\n\t'gyroscope',\n\t'hid',\n\t'identity-credentials-get',\n\t'idle-detection',\n\t'language-detector',\n\t'local-fonts',\n\t'magnetometer',\n\t'microphone',\n\t'midi',\n\t'otp-credentials',\n\t'payment',\n\t'picture-in-picture',\n\t'publickey-credentials-get',\n\t'screen-wake-lock',\n\t'serial',\n\t'speaker-selection',\n\t'storage-access',\n\t'summarizer',\n\t'translator',\n\t'usb',\n\t'web-share',\n\t'window-management',\n\t'xr-spatial-tracking',\n]\n\n/**\n * # iFrame\n * - An `<iframe/>` with preset classes, backup, and required title for SEO.\n */\nexport function IFrame({\n\tallow,\n\tclassName,\n\treferrerPolicy = 'no-referrer-when-downgrade',\n\tsandbox,\n\t...props\n}: IFrameProps): ReactElement {\n\tconst allowAttribute = (\n\t\tallow === 'allow-all'\n\t\t\t? allAllowProperties.map(property => `${property} *`)\n\t\t\t: allow?.map(property => {\n\t\t\t\t\tif (typeof property === 'string') return `${property} *`\n\n\t\t\t\t\tconst propertyDefinition: string[] = []\n\n\t\t\t\t\tObject.entries(property).forEach(([key, value]) => {\n\t\t\t\t\t\tpropertyDefinition.push(key)\n\n\t\t\t\t\t\tif (value === true) propertyDefinition.push('*')\n\t\t\t\t\t\tif (value === false) propertyDefinition.push(`'none'`)\n\t\t\t\t\t\tif (Array.isArray(value)) value.forEach(origin => propertyDefinition.push(origin))\n\t\t\t\t\t})\n\n\t\t\t\t\treturn propertyDefinition.join(' ')\n\t\t\t\t}) || []\n\t).join('; ')\n\n\treturn (\n\t\t<iframe\n\t\t\t{...props}\n\t\t\tallow={allowAttribute}\n\t\t\tallowFullScreen={allowAttribute?.includes('fullscreen')}\n\t\t\tclassName={twMerge('aspect-video w-full bg-linear-60 from-neutral-700 via-neutral-500 to-neutral-600', className)}\n\t\t\treferrerPolicy={referrerPolicy}\n\t\t\tsandbox={sandbox?.join(' ')}\n\t\t/>\n\t)\n}\n","// * Types\nimport { AnyElementProps } from '../types'\n\nexport type ModalProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {\n\tchildren: ReactNode | (({ openModal, closeModal }: { openModal: () => void; closeModal: () => void }) => ReactNode)\n\tdragToClose?: boolean\n\tonClose?: () => void\n\tonOpen?: () => void\n\tplace?: 'center' | 'bottom'\n}\n\n// * React\nimport {\n\tcloneElement,\n\tElementType,\n\tHTMLAttributes,\n\tMouseEventHandler,\n\tReactElement,\n\tReactNode,\n\tTouchEventHandler,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react'\nimport { createPortal } from 'react-dom'\n\n// * Components\nimport {\n\tButton as HeadlessButton,\n\tDialog,\n\tDialogPanel,\n\tDialogTitle,\n\tDialogBackdrop,\n\tDialogTitleProps,\n} from '@headlessui/react'\nimport { Button } from './button'\nimport { Xmark } from '../icons'\n\n// * Utilities\nimport { easeOutExpo, findComponentByType, twMerge } from '../utils'\n\nexport function ModalTrigger<T extends ElementType = typeof HeadlessButton>({\n\tas,\n\t...props\n}: AnyElementProps<T>): ReactElement {\n\tconst Element = as || HeadlessButton\n\n\treturn <Element {...props} />\n}\n\nexport function ModalTitle(props: DialogTitleProps): ReactElement {\n\treturn <DialogTitle {...props} />\n}\n\nexport function ModalDialog(props: HTMLAttributes<HTMLDivElement>): ReactElement {\n\treturn <div {...props} />\n}\n\nexport function ModalClose<T extends ElementType = typeof HeadlessButton>({\n\tas,\n\t...props\n}: AnyElementProps<T>): ReactElement {\n\tconst Element = as || HeadlessButton\n\n\treturn <Element {...props} />\n}\n\nexport function Modal({ children, className, onClose, onOpen, place = 'bottom' }: ModalProps): ReactElement {\n\tconst [bodyElement, setBodyElement] = useState<HTMLBodyElement | null>(null)\n\n\tuseEffect(() => {\n\t\tif (!bodyElement && typeof window !== 'undefined') setBodyElement(document.body as HTMLBodyElement)\n\t}, [bodyElement])\n\n\tconst [isOpen, setIsOpen] = useState(false)\n\n\tconst dialogPanelRef = useRef<HTMLElement>(null),\n\t\tdragMoveBoxRef = useRef<HTMLDivElement>(null),\n\t\t// lastTouchYRef = useRef(0),\n\t\tstartDragCoords = useRef({ x: 0, y: 0 })\n\n\tconst [allowDragClose, setAllowDragClose] = useState(false),\n\t\t[readyToClose, setReadyToClose] = useState(false)\n\n\tconst openModal = () => {\n\t\tif (isOpen) return\n\t\tsetIsOpen(true)\n\t\tonOpen?.()\n\t}\n\n\tconst closeModal = () => {\n\t\tif (!isOpen) return\n\t\tsetIsOpen(false)\n\t\tonClose?.()\n\t}\n\n\tconst enableClose = (clientX: number, clientY: number) => {\n\t\tstartDragCoords.current.x = clientX\n\t\tstartDragCoords.current.y = clientY\n\t\tdialogPanelRef.current!.style.transitionDuration = '0s'\n\n\t\tsetAllowDragClose(true)\n\t}\n\n\tconst enableTouchClose: TouchEventHandler<HTMLButtonElement> = e => {\n\t\tconst { touches } = e,\n\t\t\ttouch = touches[0],\n\t\t\t{ clientY } = touch\n\n\t\tenableClose(0, clientY)\n\t}\n\n\tconst enableMouseClose: MouseEventHandler<HTMLButtonElement> = e => {\n\t\tconst { clientX, clientY } = e\n\n\t\tenableClose(clientX, clientY)\n\t}\n\n\tconst handleMove = (clientX: number, clientY: number) => {\n\t\tif (!dialogPanelRef.current) return\n\n\t\tlet deltaX = clientX - startDragCoords.current.x,\n\t\t\tdeltaY = clientY - startDragCoords.current.y\n\n\t\tif (deltaX > 0) deltaX = easeOutExpo(Math.abs(deltaX), 0, 25, 5000)\n\t\tif (deltaX < 0) deltaX = -easeOutExpo(Math.abs(deltaX), 0, 25, 5000)\n\t\tif (deltaY < 0) deltaY = -easeOutExpo(Math.abs(deltaY), 0, 25, 2000)\n\n\t\tif (deltaY >= 100 && !readyToClose) {\n\t\t\tsetReadyToClose(true)\n\t\t} else if (deltaY < 100 && readyToClose) {\n\t\t\tsetReadyToClose(false)\n\t\t}\n\n\t\tconst greaterThanMediaSmall = innerWidth > 640\n\n\t\tdialogPanelRef.current.style.translate = `calc(-50% + ${deltaX}px) ${greaterThanMediaSmall ? `calc(-50% + ${deltaY}px)` : `${deltaY}px`}`\n\t}\n\n\tconst handleMouseMove: MouseEventHandler<HTMLDivElement> = e => {\n\t\tif (!allowDragClose) return\n\n\t\tconst { clientX, clientY } = e\n\n\t\thandleMove(clientX, clientY)\n\t}\n\n\tconst disableDragClose = (clientY: number) => {\n\t\tconst deltaY = clientY - startDragCoords.current.y\n\n\t\tdialogPanelRef.current!.style.transitionDuration = ''\n\n\t\tif (deltaY >= 100) {\n\t\t\tcloseModal()\n\t\t\tsetReadyToClose(false)\n\t\t} else {\n\t\t\tsetTimeout(() => (dialogPanelRef.current!.style.removeProperty('translate'), 50))\n\t\t}\n\t}\n\n\tconst disableMouseDragClose: MouseEventHandler<HTMLDivElement> = e => {\n\t\tif (allowDragClose) setAllowDragClose(false)\n\n\t\tconst { clientY } = e\n\n\t\tdisableDragClose(clientY)\n\t}\n\n\tconst content = typeof children === 'function' ? children({ openModal, closeModal }) : children\n\n\tconst dialogElement = findComponentByType(content, ModalDialog)\n\n\tif (!dialogElement) throw new Error('ModalDialog must be defined in Modal children')\n\n\tlet triggerElement: ReactElement | null = null\n\n\tif (typeof children !== 'function') {\n\t\ttriggerElement = findComponentByType(content, ModalTrigger)\n\n\t\tif (!triggerElement) throw new Error('ModalTrigger must be provided when not using render prop pattern')\n\t} else {\n\t\ttriggerElement = findComponentByType(content, ModalTrigger)\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{allowDragClose &&\n\t\t\t\tbodyElement &&\n\t\t\t\tcreatePortal(\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={dragMoveBoxRef}\n\t\t\t\t\t\tclassName='fixed inset-0 z-99 h-dvh w-screen bg-transparent active:cursor-grabbing pointer-coarse:hidden'\n\t\t\t\t\t\tonMouseMove={handleMouseMove}\n\t\t\t\t\t\tonMouseUp={disableMouseDragClose}\n\t\t\t\t\t></div>,\n\t\t\t\t\tbodyElement,\n\t\t\t\t)}\n\n\t\t\t{triggerElement &&\n\t\t\t\tcloneElement(triggerElement as ReactElement<HTMLAttributes<HTMLButtonElement>>, { onClick: openModal })}\n\n\t\t\t<Dialog\n\t\t\t\topen={isOpen}\n\t\t\t\tonClose={closeModal}\n\t\t\t\tclassName={[\n\t\t\t\t\t'isolate z-50',\n\t\t\t\t\tplace === 'bottom' &&\n\t\t\t\t\t\t'after:fixed after:inset-x-0 after:bottom-0 after:-z-10 after:h-16 after:bg-neutral-50 sm:after:hidden',\n\t\t\t\t].join(' ')}\n\t\t\t>\n\t\t\t\t<DialogBackdrop\n\t\t\t\t\ttransition\n\t\t\t\t\tclassName={[\n\t\t\t\t\t\t'fixed inset-0 cursor-pointer transition-[opacity_background-color_backdrop-filter_-webkit-backdrop-filter] delay-100 duration-750 ease-exponential data-closed:opacity-0',\n\t\t\t\t\t\treadyToClose\n\t\t\t\t\t\t\t? 'bg-neutral-50/5 backdrop-blur-[1px] dark:bg-neutral-950/5'\n\t\t\t\t\t\t\t: 'bg-neutral-50/25 backdrop-blur-sm dark:bg-neutral-950/25',\n\t\t\t\t\t].join(' ')}\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttheme='blue'\n\t\t\t\t\t\tpadding='none'\n\t\t\t\t\t\trounded='full'\n\t\t\t\t\t\tclassName='group/button fixed top-4 right-4 h-7 w-7 overflow-x-hidden transition-[scale_width_filter] pointer-fine:hover:w-20'\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className='absolute top-1 right-1 flex items-center gap-1 pt-px transition-transform duration-300 ease-exponential pointer-fine:group-hover/button:-translate-x-0.5'>\n\t\t\t\t\t\t\t<span className='block text-xs leading-none font-medium text-neutral-50 uppercase'>\n\t\t\t\t\t\t\t\tClose<span className='sr-only'> Modal</span>\n\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t<Xmark className='-top-px block size-5 scale-75 rotate-90 fill-white stroke-white stroke-1 transition-transform duration-300 ease-in-out group-hover/button:rotate-0' />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Button>\n\t\t\t\t</DialogBackdrop>\n\n\t\t\t\t<DialogPanel\n\t\t\t\t\tref={dialogPanelRef}\n\t\t\t\t\ttransition\n\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t'fixed left-1/2 -translate-x-1/2 overflow-y-scroll bg-neutral-50 p-4 shadow-[0_-15px_50px_-12px] shadow-neutral-950/25 transition-[transform_translate_opacity] duration-750 ease-exponential data-closed:scale-50 data-closed:opacity-0 sm:w-[calc(100vw-2rem)] sm:max-w-fit sm:p-6 sm:shadow-2xl lg:p-8 dark:bg-neutral-900',\n\t\t\t\t\t\tplace === 'center'\n\t\t\t\t\t\t\t? 'top-1/2 -translate-y-1/2 rounded-2xl data-enter:translate-y-[calc(-50%+12rem)] data-leave:translate-y-[calc(-50%-8rem)]'\n\t\t\t\t\t\t\t: 'bottom-0 h-fit max-h-[calc(100dvh-4rem)] translate-y-0 rounded-t-4xl data-enter:translate-y-full data-leave:translate-y-full sm:top-1/2 sm:bottom-auto sm:rounded-t-2xl sm:rounded-b-2xl sm:data-enter:translate-y-[calc(-50%+12rem)] sm:data-leave:translate-y-[calc(-50%-8rem)] sm:data-open:-translate-y-1/2 pointer-fine:top-1/2 pointer-fine:bottom-auto pointer-fine:-translate-y-1/2 pointer-fine:rounded-2xl',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\t// onTouchStart={dragToClose ? handleTouchStart : undefined}\n\t\t\t\t\t// onTouchMove={handleTouchMove}\n\t\t\t\t\t// onTouchEnd={disableTouchDragClose}\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\tonTouchStart={enableTouchClose}\n\t\t\t\t\t\tonMouseDown={enableMouseClose}\n\t\t\t\t\t\tclassName={[\n\t\t\t\t\t\t\t'absolute inset-x-0 top-0 z-10 flex h-6 cursor-grab items-center justify-center after:h-1 after:w-8 after:rounded-full after:transition-[transform_background-color] after:duration-500 after:ease-exponential active:cursor-grabbing',\n\t\t\t\t\t\t\treadyToClose\n\t\t\t\t\t\t\t\t? 'after:scale-x-200 after:scale-y-200 after:bg-ui-blue'\n\t\t\t\t\t\t\t\t: 'after:bg-ui-grey/50 active:after:scale-x-150 active:after:scale-y-125 active:after:bg-ui-grey pointer-fine:hover:after:scale-x-125 pointer-fine:hover:after:bg-neutral-500/75 pointer-fine:active:after:scale-x-150 pointer-fine:active:after:bg-ui-grey',\n\t\t\t\t\t\t].join(' ')}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className='sr-only'>Drag down to close</span>\n\t\t\t\t\t</button>\n\n\t\t\t\t\t{dialogElement}\n\t\t\t\t</DialogPanel>\n\t\t\t</Dialog>\n\t\t</>\n\t)\n}\n","// * Types\ntype TimeProps = HTMLAttributes<HTMLTimeElement> &\n\tPartial<{\n\t\tdateObject: Date\n\t\tdateTime: string\n\t\tday: boolean\n\t\thours: boolean\n\t\tmilliseconds: boolean\n\t\tminutes: boolean\n\t\tmonth: boolean\n\t\tseconds: boolean\n\t\tyear: boolean\n\t}> & { ref?: RefObject<HTMLTimeElement | null> }\n\n// * React\nimport { HTMLAttributes, ReactElement, RefObject, useEffect, useState } from 'react'\n\n// * Utilities\nimport { getDate, getHours, getMilliseconds, getMinutes, getMonth, getMonthName, getSeconds } from '../utils'\n\nexport function Time({\n\tchildren,\n\tdateObject,\n\tdateTime,\n\tday,\n\thours,\n\tmilliseconds,\n\tminutes,\n\tmonth,\n\tseconds,\n\tyear,\n\tref,\n\t...props\n}: TimeProps): ReactElement {\n\tconst [date, setDate] = useState<Date | undefined>(dateObject || undefined)\n\n\tconst getDateAndTime = () => {\n\t\tif (dateTime) return dateTime\n\n\t\tif (!date) return ''\n\n\t\tconst currentYear = date.getFullYear(),\n\t\t\tcurrentMonth = getMonth(date),\n\t\t\tcurrentDay = getDate(date),\n\t\t\tcurrentHour = getHours(date),\n\t\t\tcurrentMinute = getMinutes(date),\n\t\t\tcurrentSecond = getSeconds(date),\n\t\t\tcurrentMillisecond = getMilliseconds(date)\n\n\t\treturn [currentYear, currentMonth, currentDay, currentHour, currentMinute, currentSecond, currentMillisecond].join(\n\t\t\t'-',\n\t\t)\n\t}\n\n\tconst dateAndTime = getDateAndTime()\n\n\tconst getDateDisplay = () => {\n\t\tif (children) return children\n\t\tif (dateAndTime === '') return ''\n\n\t\tconst [dtYear, dtMonth, dtDay, dtHour, dtMinute, dtSecond, dtMillisecond] = dateAndTime.split('-').map(Number)\n\n\t\treturn [\n\t\t\tday && dtDay,\n\t\t\tmonth && [getMonthName(Number(dtMonth) - 1), month && year && ','].filter(Boolean).join(''),\n\t\t\tyear && dtYear,\n\t\t\thours &&\n\t\t\t\tminutes &&\n\t\t\t\t[\n\t\t\t\t\t'at',\n\t\t\t\t\thours && dtHour,\n\t\t\t\t\thours && minutes && ':',\n\t\t\t\t\tminutes && dtMinute,\n\t\t\t\t\tminutes && seconds && ':',\n\t\t\t\t\tseconds && dtSecond,\n\t\t\t\t\tseconds && milliseconds && '.',\n\t\t\t\t\tmilliseconds && dtMillisecond,\n\t\t\t\t]\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.join(''),\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ')\n\t}\n\n\tconst dateDisplay = getDateDisplay()\n\n\tuseEffect(() => {\n\t\tif (\n\t\t\tdate === undefined &&\n\t\t\tdateObject === undefined &&\n\t\t\tdateTime === undefined &&\n\t\t\ttypeof window !== 'undefined' &&\n\t\t\t(dateAndTime === '' || dateDisplay === '')\n\t\t)\n\t\t\tsetDate(new Date())\n\t}, [date, setDate, dateAndTime, dateDisplay, dateObject, dateTime])\n\n\treturn (\n\t\t<time dateTime={dateAndTime} ref={ref} {...props}>\n\t\t\t{dateDisplay}\n\t\t</time>\n\t)\n}\n","// * Types\nimport { OneOf } from \"../types\";\n\nexport type VideoControl =\n\t| \"download\"\n\t| \"fullscreen\"\n\t| \"playbackrate\"\n\t| \"pause\"\n\t| \"remoteplayback\"\n\t| \"seeking\"\n\t| \"volume\";\n\ntype Source = {\n\tsrc: string;\n\ttype:\n\t\t| \"video/avi\"\n\t\t| \"video/flv\"\n\t\t| \"video/mkv\"\n\t\t| \"video/mov\"\n\t\t| \"video/mp4\"\n\t\t| \"video/ogg\"\n\t\t| \"video/webm\";\n};\n\ntype SourceOrSourceGroup = OneOf<\n\t[\n\t\tSource,\n\t\t{\n\t\t\tsrcGroup: Source[];\n\t\t},\n\t]\n>;\n\nexport type VideoProps =\n\t& Omit<\n\t\tComponentPropsWithRef<\"video\">,\n\t\t\"controls\" | \"controlList\" | \"poster\" | \"src\" | \"title\"\n\t>\n\t& {\n\t\tcontrols?: boolean | VideoControl | VideoControl[];\n\t\tposter?: {\n\t\t\tprimary?: boolean;\n\t\t\tsrc: string;\n\t\t\ttype:\n\t\t\t\t| \"image/apng\"\n\t\t\t\t| \"image/avif\"\n\t\t\t\t| \"image/gif\"\n\t\t\t\t| \"image/jpeg\"\n\t\t\t\t| \"image/png\"\n\t\t\t\t| \"image/svg+xml\"\n\t\t\t\t| \"image/webp\";\n\t\t\twidth: number;\n\t\t}[];\n\t\t/** @deprecated Even if you only have on source file, please use srcSet. */\n\t\tsrc?: never;\n\t\tsrcSet: (SourceOrSourceGroup & {\n\t\t\twidth: number;\n\t\t})[];\n\t\ttitle: string;\n\t};\n\n// * React\nimport {\n\tComponentPropsWithRef,\n\tMouseEvent,\n\tMouseEventHandler,\n\tReactElement,\n\tReactEventHandler,\n\tTouchEvent,\n\tuseCallback,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n} from \"react\";\n\n// * Hooks\nimport { Coords, usePointerMovement } from \"../hooks\";\n\n// * Components\nimport {\n\tDropDown,\n\tDropDownButton,\n\tDropDownItem,\n\tDropDownItems,\n\tDropDownSeparator,\n} from \"./drop-down\";\nimport {\n\tArrowDownBackwardAndArrowUpForwardRectangle,\n\tArrowUpForwardAndArrowDownBackwardRectangle,\n\tFifteenArrowTriangleheadClockwise,\n\tFifteenArrowTriangleheadCounterclockwise,\n\tFiveArrowTriangleheadClockwise,\n\tFiveArrowTriangleheadCounterclockwise,\n\tGearshapeFill,\n\tNinetyArrowTriangleheadClockwise,\n\tNinetyArrowTriangleheadCounterclockwise,\n\tPauseFill,\n\tPhotoBadgeArrowDownFill,\n\tPlayFill,\n\tRectangleFillOnArrowDownForwardTopleadingRectangle,\n\tRectangleTriangleUp,\n\tSixtyArrowTriangleheadClockwise,\n\tSixtyArrowTriangleheadCounterclockwise,\n\tSpeakerMinusFill,\n\tSpeakerPlusFill,\n\tTenArrowTriangleheadClockwise,\n\tTenArrowTriangleheadCounterclockwise,\n\t// SpeakerSlashFill,\n\t// SpeakerWave3Fill,\n\tThirtyArrowTriangleheadClockwise,\n\tThirtyArrowTriangleheadCounterclockwise,\n} from \"../icons\";\n\n// * Utilities\nimport { twMerge } from \"../utils\";\n\nconst MAX_PROGRESS = 100;\n\ntype FunctionKey =\n\t| \" \"\n\t| \"ArrowRight\"\n\t| \"ArrowLeft\"\n\t| \"ArrowUp\"\n\t| \"ArrowDown\"\n\t| \"Alt\"\n\t| \"f\"\n\t| \"Escape\";\n\ntype ModifierKey = \"meta\" | \"ctrl\" | \"alt\" | \"shift\";\n\nexport function Video({\n\tautoPlay,\n\tclassName,\n\tcontrols = true,\n\tposter,\n\tref,\n\tsrcSet,\n\ttitle,\n\t...props\n}: VideoProps): ReactElement {\n\t// * General/Core\n\tconst uniqueID = useId(),\n\t\tfigureRef = useRef<HTMLElement>(null),\n\t\tvideoPlayerRef = useRef<HTMLVideoElement>(null),\n\t\tsortedSrcSet = srcSet.sort((a, b) => a.width - b.width);\n\n\tconst primaryPoster = poster\n\t\t? poster.find(({ primary }) => primary)?.src || poster[0].src\n\t\t: \"\";\n\n\tconst preventDefaultEvent: ReactEventHandler = (e) => e.preventDefault();\n\n\t// * Play/Pause Controls\n\tconst [isPlaying, setIsPlaying] = useState(autoPlay);\n\n\tconst togglePlay = useCallback(() => {\n\t\tsetIsPlaying((previous) => {\n\t\t\tif (!previous) videoPlayerRef.current?.play();\n\t\t\tif (previous) videoPlayerRef.current?.pause();\n\n\t\t\treturn !previous;\n\t\t});\n\n\t\thandleMouseMoveControls();\n\t}, []);\n\n\t// * Fullscreen Controls\n\tconst isFullscreenRef = useRef(false),\n\t\t[isFullscreen, setIsFullscreen] = useState(false);\n\n\tconst updateFullscreenState = useCallback(() => {\n\t\tif (Boolean(document.fullscreenElement) !== isFullscreenRef.current) {\n\t\t\tsetIsFullscreen(Boolean(document.fullscreenElement));\n\t\t\tisFullscreenRef.current = Boolean(document.fullscreenElement);\n\t\t}\n\t}, []);\n\n\tconst toggleFullscreen = () => {\n\t\tif (document.fullscreenElement) {\n\t\t\tdocument.exitFullscreen();\n\t\t\treturn;\n\t\t}\n\n\t\tfigureRef.current?.requestFullscreen();\n\t};\n\n\tconst requestFullscreen = useCallback(() => {\n\t\tif (document.fullscreenElement) return;\n\n\t\tfigureRef.current?.requestFullscreen();\n\t}, []);\n\n\tconst enterPictureInPicture = () =>\n\t\tvideoPlayerRef.current?.requestPictureInPicture();\n\n\tuseEffect(() => {\n\t\tif (typeof window === \"undefined\") return;\n\n\t\tdocument.addEventListener(\"fullscreenchange\", updateFullscreenState);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\"fullscreenchange\", updateFullscreenState);\n\t\t};\n\t}, []);\n\n\t// * Progress/Seeking Controls\n\tconst [progress, setProgress] = useState(0),\n\t\ttrackProgressStartTimeRef = useRef(0),\n\t\t[seekIndicator, setSeekIndicator] = useState({\n\t\t\tisInPlayedArea: false,\n\t\t\tposition: 0,\n\t\t}),\n\t\tseekIndicatorMouseDownPositionRef = useRef(0),\n\t\tscrubberRef = useRef<HTMLDivElement>(null),\n\t\t[timeRemaining, setTimeRemaining] = useState(0);\n\n\tconst handleTimeUpdate = () => {\n\t\tconst videoPlayer = videoPlayerRef.current;\n\n\t\tif (!videoPlayer) return;\n\n\t\tconst { currentTime, duration } = videoPlayer;\n\n\t\tconst newProgress = (currentTime / duration) * 100;\n\t\tsetProgress(\n\t\t\t(prev) => (Math.abs(prev - newProgress) > 0.1 ? newProgress : prev)\n\t\t);\n\t\tsetTimeRemaining(duration - currentTime);\n\t};\n\n\tconst handleProgressSlider = ({ x }: Coords) => {\n\t\tconst videoPlayer = videoPlayerRef.current,\n\t\t\tscrubber = scrubberRef.current;\n\n\t\tif (!videoPlayer || !scrubber) return;\n\n\t\tconst { duration } = videoPlayer,\n\t\t\t{ width } = scrubber.getBoundingClientRect();\n\n\t\tvideoPlayer.fastSeek(\n\t\t\tMath.max(\n\t\t\t\tMath.min(\n\t\t\t\t\ttrackProgressStartTimeRef.current + x / (width / duration),\n\t\t\t\t\tduration - 1,\n\t\t\t\t),\n\t\t\t\t0,\n\t\t\t),\n\t\t);\n\t};\n\n\tconst { trackPointerMovement: trackProgress } = usePointerMovement({\n\t\tonChange: handleProgressSlider,\n\t});\n\n\tconst initiateTrackProgress = (\n\t\te: MouseEvent<HTMLDivElement> | TouchEvent<HTMLDivElement>,\n\t) => {\n\t\tconst videoPlayer = videoPlayerRef.current;\n\n\t\tif (!videoPlayer) return;\n\n\t\ttrackProgress(e);\n\n\t\ttrackProgressStartTimeRef.current = videoPlayer.currentTime;\n\t};\n\n\tconst handleSeekIndicatorMovement: MouseEventHandler<HTMLDivElement> =\n\t\t(e) => {\n\t\t\tconst videoPlayer = videoPlayerRef.current;\n\n\t\t\tif (!videoPlayer) return;\n\n\t\t\tconst { currentTime, duration } = videoPlayer;\n\n\t\t\tconst { clientX, currentTarget } = e,\n\t\t\t\t{ width, x } = currentTarget.getBoundingClientRect();\n\n\t\t\tconst position = clientX - x;\n\n\t\t\tconst isInPlayedArea = position <= width / (duration / currentTime);\n\n\t\t\tsetSeekIndicator({ isInPlayedArea, position });\n\t\t};\n\n\tconst initializeSeeking =\n\t\t() => (seekIndicatorMouseDownPositionRef.current = seekIndicator.position);\n\n\tconst handleSeekRelease: MouseEventHandler<HTMLDivElement> = (e) => {\n\t\tconst videoPlayer = videoPlayerRef.current;\n\n\t\tif (!videoPlayer) return;\n\n\t\tconst { duration } = videoPlayer,\n\t\t\t{ currentTarget } = e,\n\t\t\t{ width } = currentTarget.getBoundingClientRect();\n\n\t\tif (seekIndicatorMouseDownPositionRef.current === seekIndicator.position) {\n\t\t\tvideoPlayer.fastSeek(\n\t\t\t\tMath.min(\n\t\t\t\t\tduration / (width / seekIndicatorMouseDownPositionRef.current),\n\t\t\t\t\tduration - 1,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t};\n\n\t// * Skip Controls\n\tconst [skipDuration, setSkipDuration] = useState(10);\n\n\tconst getSkipAmount = () => {\n\t\tconst modifierKeyList = pressedKeyListRef.current;\n\n\t\tlet skipAmount = 10;\n\n\t\tif (modifierKeyList.includes(\"alt\")) {\n\t\t\tif (modifierKeyList.length === 1) skipAmount = 15;\n\t\t\tif (modifierKeyList.includes(\"shift\")) skipAmount = 30;\n\t\t\tif (modifierKeyList.includes(\"meta\")) skipAmount = 5;\n\t\t\tif (\n\t\t\t\tmodifierKeyList.includes(\"shift\") && modifierKeyList.includes(\"meta\")\n\t\t\t) skipAmount = 60;\n\t\t\tif (\n\t\t\t\tmodifierKeyList.includes(\"shift\") && modifierKeyList.includes(\"meta\") &&\n\t\t\t\tmodifierKeyList.includes(\"ctrl\")\n\t\t\t) {\n\t\t\t\tskipAmount = 90;\n\t\t\t}\n\t\t}\n\n\t\tif (skipAmount !== skipDuration) setSkipDuration(skipAmount);\n\n\t\treturn skipAmount;\n\t};\n\n\tconst skipBack = useCallback(() => {\n\t\tconst videoPlayer = videoPlayerRef.current;\n\n\t\tif (!videoPlayer) return;\n\n\t\tconst { currentTime } = videoPlayer;\n\n\t\tconst skipAmount = getSkipAmount();\n\n\t\tvideoPlayer.fastSeek(Math.max(currentTime - skipAmount, 0));\n\t}, []);\n\n\tconst skipForward = useCallback(() => {\n\t\tconst videoPlayer = videoPlayerRef.current;\n\n\t\tif (!videoPlayer) return;\n\n\t\tconst { currentTime, duration } = videoPlayer;\n\n\t\tconst skipAmount = getSkipAmount();\n\n\t\tvideoPlayer.fastSeek(Math.min(currentTime + skipAmount, duration - 1));\n\t}, []);\n\n\t// * Volume Controls\n\tconst [volume, setVolume] = useState(1),\n\t\ttrackVolumeStartRef = useRef(0);\n\n\tconst handleVolumeChange: ReactEventHandler<HTMLVideoElement> = (e) => {\n\t\tconst { currentTarget } = e,\n\t\t\t{ volume } = currentTarget;\n\n\t\tsetVolume(volume);\n\t};\n\n\tconst handleVolumeSlider = ({ y }: Coords) => {\n\t\tconst videoPlayer = videoPlayerRef.current;\n\n\t\tif (!videoPlayer) return;\n\n\t\tvideoPlayer.volume = Math.max(\n\t\t\tMath.min(trackVolumeStartRef.current + (y / 96) * -1, 1),\n\t\t\t0,\n\t\t);\n\t};\n\n\tconst { trackPointerMovement: trackVolume } = usePointerMovement({\n\t\tonChange: handleVolumeSlider,\n\t});\n\n\tconst initiateTrackVolume = (\n\t\te: MouseEvent<HTMLDivElement> | TouchEvent<HTMLDivElement>,\n\t) => {\n\t\tconst videoPlayer = videoPlayerRef.current;\n\n\t\tif (!videoPlayer) return;\n\n\t\ttrackVolume(e);\n\n\t\ttrackVolumeStartRef.current = videoPlayer.volume;\n\t};\n\n\tconst increaseVolume = () => {\n\t\tconst videoPlayer = videoPlayerRef.current;\n\n\t\tif (!videoPlayer) return;\n\n\t\tvideoPlayer.volume += 0.1;\n\t};\n\n\tconst decreaseVolume = () => {\n\t\tconst videoPlayer = videoPlayerRef.current;\n\n\t\tif (!videoPlayer) return;\n\n\t\tvideoPlayer.volume -= 0.1;\n\t};\n\n\t// * Controls Visibility\n\tconst [showControls, setShowControls] = useState(true),\n\t\tmouseMoveTimeoutRef = useRef<NodeJS.Timeout>(undefined);\n\n\tconst displayControls = () => {\n\t\tif (!showControls) setShowControls(true);\n\t};\n\n\tconst hideControls = () => {\n\t\tif (!videoPlayerRef.current?.paused) setShowControls(false);\n\t};\n\n\tconst handleMouseMoveControls = () => {\n\t\tclearTimeout(mouseMoveTimeoutRef.current);\n\t\tdisplayControls();\n\n\t\tmouseMoveTimeoutRef.current = setTimeout(() => hideControls(), 1500);\n\t};\n\n\tconst clearMouseMoveControlsTimeout = () =>\n\t\tclearTimeout(mouseMoveTimeoutRef.current);\n\n\t// * Keyboard Controls\n\tconst pressedKeyListRef = useRef<ModifierKey[]>([]),\n\t\t[pressedKeyList, setPressedKeyList] = useState<ModifierKey[]>([]);\n\n\tconst updateModifierKeys = useCallback(\n\t\t({\n\t\t\tmetaKey,\n\t\t\taltKey,\n\t\t\tshiftKey,\n\t\t\tctrlKey,\n\t\t}: {\n\t\t\tmetaKey?: boolean;\n\t\t\taltKey?: boolean;\n\t\t\tshiftKey?: boolean;\n\t\t\tctrlKey?: boolean;\n\t\t}) => {\n\t\t\tif (\n\t\t\t\t(metaKey && !pressedKeyListRef.current.includes(\"meta\")) ||\n\t\t\t\t(altKey && !pressedKeyListRef.current.includes(\"alt\")) ||\n\t\t\t\t(shiftKey && !pressedKeyListRef.current.includes(\"shift\")) ||\n\t\t\t\t(ctrlKey && !pressedKeyListRef.current.includes(\"ctrl\")) ||\n\t\t\t\t(!metaKey && pressedKeyListRef.current.includes(\"meta\")) ||\n\t\t\t\t(!altKey && pressedKeyListRef.current.includes(\"alt\")) ||\n\t\t\t\t(!shiftKey && pressedKeyListRef.current.includes(\"shift\")) ||\n\t\t\t\t(!ctrlKey && pressedKeyListRef.current.includes(\"ctrl\"))\n\t\t\t) {\n\t\t\t\tconst newPressedKeyList: ModifierKey[] = [];\n\n\t\t\t\tif (metaKey) newPressedKeyList.push(\"meta\");\n\t\t\t\tif (altKey) newPressedKeyList.push(\"alt\");\n\t\t\t\tif (shiftKey) newPressedKeyList.push(\"shift\");\n\t\t\t\tif (ctrlKey) newPressedKeyList.push(\"ctrl\");\n\n\t\t\t\tsetPressedKeyList(newPressedKeyList);\n\t\t\t\tpressedKeyListRef.current = newPressedKeyList;\n\t\t\t\tgetSkipAmount();\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\tconst handleKeydown = useCallback(\n\t\t(e: KeyboardEvent) => {\n\t\t\tconst { key, metaKey, altKey, shiftKey, ctrlKey } = e;\n\n\t\t\tupdateModifierKeys({ metaKey, altKey, shiftKey, ctrlKey });\n\n\t\t\tif (\n\t\t\t\t![\" \", \"ArrowRight\", \"ArrowLeft\", \"ArrowUp\", \"ArrowDown\", \"f\"].includes(\n\t\t\t\t\tkey,\n\t\t\t\t)\n\t\t\t) return;\n\n\t\t\tif (\n\t\t\t\t[\" \", \"ArrowUp\", \"ArrowDown\", \"f\"].includes(key) && !metaKey &&\n\t\t\t\t!altKey && !shiftKey && !ctrlKey\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t\tswitch (key as FunctionKey) {\n\t\t\t\tcase \" \":\n\t\t\t\t\ttogglePlay();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ArrowRight\":\n\t\t\t\t\tskipForward();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ArrowLeft\":\n\t\t\t\t\tskipBack();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ArrowUp\":\n\t\t\t\t\tincreaseVolume();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ArrowDown\":\n\t\t\t\t\tdecreaseVolume();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"f\":\n\t\t\t\t\trequestFullscreen();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\t[togglePlay, skipForward, updateModifierKeys],\n\t);\n\n\tconst handleKeyup = useCallback(\n\t\t(e: KeyboardEvent) => {\n\t\t\tconst { metaKey, altKey, shiftKey, ctrlKey } = e;\n\n\t\t\tupdateModifierKeys({ metaKey, altKey, shiftKey, ctrlKey });\n\t\t},\n\t\t[updateModifierKeys],\n\t);\n\n\tuseEffect(() => {\n\t\tif (typeof window === \"undefined\") return;\n\n\t\tconst controller = new AbortController(),\n\t\t\tsignal = controller.signal;\n\n\t\tdocument.addEventListener(\"keydown\", handleKeydown, { signal });\n\t\tdocument.addEventListener(\"keyup\", handleKeyup, { signal });\n\n\t\treturn () => {\n\t\t\tcontroller.abort();\n\t\t};\n\t}, [handleKeydown, handleKeyup]);\n\n\t// * Remote Playback Controls\n\tconst handleRemotePlayback = () => videoPlayerRef.current?.remote.prompt();\n\n\t// * Progressive Enhancement\n\tconst progressiveEnhancementSourceLengthRef = useRef(1);\n\n\tconst [progressiveEnhancementList, setProgressiveEnhancementList] = useState(\n\t\tsortedSrcSet.filter((_, index) =>\n\t\t\tindex < progressiveEnhancementSourceLengthRef.current\n\t\t),\n\t);\n\n\tconst handleProEnhance: ReactEventHandler<HTMLVideoElement> = (e) => {\n\t\tconst { currentTarget } = e,\n\t\t\t{ currentSrc, currentTime } = currentTarget;\n\n\t\tconst proEnhanceSrcLength = progressiveEnhancementSourceLengthRef.current +\n\t\t\t\t1,\n\t\t\tupdatedProEnhanceList = sortedSrcSet.filter((_, index) =>\n\t\t\t\tindex < proEnhanceSrcLength\n\t\t\t);\n\n\t\tconsole.log(updatedProEnhanceList);\n\n\t\tsetProgressiveEnhancementList(updatedProEnhanceList);\n\t\tprogressiveEnhancementSourceLengthRef.current = proEnhanceSrcLength;\n\n\t\tconst srcToCompare = typeof updatedProEnhanceList.at(-1)?.src === \"string\"\n\t\t\t? updatedProEnhanceList.at(-1)?.src\n\t\t\t: updatedProEnhanceList.at(-1)?.srcGroup;\n\n\t\tif (!srcToCompare) return;\n\n\t\tif (\n\t\t\t(Array.isArray(srcToCompare) &&\n\t\t\t\tsrcToCompare.every(({ src }) => src !== currentSrc)) ||\n\t\t\t(!Array.isArray(srcToCompare) && srcToCompare !== currentSrc)\n\t\t) {\n\t\t\tconst srcType = currentSrc.split(\".\").at(-1);\n\n\t\t\tconst src = Array.isArray(srcToCompare)\n\t\t\t\t? srcToCompare.find(({ src }) => src.split(\".\").at(-1) === srcType)\n\t\t\t\t\t?.src || srcToCompare[0].src\n\t\t\t\t: srcToCompare;\n\n\t\t\tif (!src) return;\n\n\t\t\tcurrentTarget.src = src;\n\t\t\tcurrentTarget.currentTime = currentTime || 0;\n\t\t\tcurrentTarget.load();\n\t\t}\n\t};\n\n\t// * Download Controls\n\tconst captureCurrentFrame = () => {\n\t\tconst videoPlayer = videoPlayerRef.current;\n\n\t\tif (!videoPlayer) return;\n\n\t\tconst { videoHeight, videoWidth } = videoPlayer;\n\n\t\tconst canvas = document.createElement(\"canvas\"),\n\t\t\tcanvasContext = canvas.getContext(\"2d\");\n\n\t\tif (!canvasContext) return;\n\n\t\tcanvas.width = videoWidth;\n\t\tcanvas.height = videoHeight;\n\n\t\tcanvasContext.drawImage(videoPlayer, 0, 0, canvas.width, canvas.height);\n\n\t\tcanvas.toBlob(\n\t\t\t(blob) => {\n\t\t\t\tif (!blob) return;\n\n\t\t\t\tconst url = URL.createObjectURL(blob),\n\t\t\t\t\tlink = document.createElement(\"a\");\n\n\t\t\t\tlink.href = url;\n\t\t\t\tlink.download = `${title}-frame-${Date.now()}.jpg`;\n\n\t\t\t\tdocument.body.appendChild(link);\n\t\t\t\tlink.click();\n\n\t\t\t\tdocument.body.removeChild(link);\n\t\t\t\tURL.revokeObjectURL(url);\n\t\t\t},\n\t\t\t\"image/jpeg\",\n\t\t\t0.9,\n\t\t);\n\t};\n\n\treturn (\n\t\t<figure\n\t\t\t{...(showControls ? { \"data-controls\": true } : {})}\n\t\t\t{...(isFullscreen ? { \"data-fullscreen\": true } : {})}\n\t\t\t{...(isPlaying ? { \"data-playing\": true } : {})}\n\t\t\t{...Object.fromEntries(\n\t\t\t\tpressedKeyList.map((key) => [`data-${key}`, true]),\n\t\t\t)}\n\t\t\tclassName={twMerge(\n\t\t\t\t\"group/video isolate aspect-video w-full overflow-clip\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tonMouseEnter={displayControls}\n\t\t\tonMouseLeave={hideControls}\n\t\t\tref={figureRef}\n\t\t>\n\t\t\t<video\n\t\t\t\t{...props}\n\t\t\t\tclassName=\"size-full object-cover\"\n\t\t\t\tonLoad={handleProEnhance}\n\t\t\t\tonTimeUpdate={handleTimeUpdate}\n\t\t\t\tonVolumeChange={handleVolumeChange}\n\t\t\t\tposter={primaryPoster}\n\t\t\t\tref={videoPlayerRef || ref}\n\t\t\t\ttitle={title}\n\t\t\t>\n\t\t\t\t{progressiveEnhancementList.map(({ width, ...source }) => {\n\t\t\t\t\tif (source.srcGroup) {\n\t\t\t\t\t\tconst { srcGroup } = source;\n\n\t\t\t\t\t\treturn srcGroup.map(({ src, type }) => (\n\t\t\t\t\t\t\t<source\n\t\t\t\t\t\t\t\tkey={`${title}${type}${width}${uniqueID}`}\n\t\t\t\t\t\t\t\tsrc={src}\n\t\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t));\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { src, type } = source;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<source\n\t\t\t\t\t\t\tkey={`${title}${type}${width}${uniqueID}`}\n\t\t\t\t\t\t\tsrc={src}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</video>\n\n\t\t\t{controls && (\n\t\t\t\t<div className=\"absolute inset-0 isolate text-neutral-50 opacity-0 transition-opacity duration-1000 ease-exponential select-none group-data-controls/video:opacity-100\">\n\t\t\t\t\t<div className=\"grid-flow-cols absolute top-1/2 left-1/2 grid -translate-x-1/2 -translate-y-1/2 place-items-center gap-2\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName=\"col-start-1 col-end-2 row-start-0 row-end-1 grid size-16 rounded-full backdrop-blur-[1px] backdrop-brightness-101 transition-[scale,-webkit-backdrop-filter,backdrop-filter] duration-300 ease-exponential active:scale-95 active:backdrop-blur-[2px] active:backdrop-brightness-125 pointer-fine:hover:scale-105 pointer-fine:hover:backdrop-blur-xs pointer-fine:hover:backdrop-brightness-110 pointer-fine:active:scale-95 pointer-fine:active:backdrop-blur-[2px] pointer-fine:active:backdrop-brightness-125\"\n\t\t\t\t\t\t\tonClick={togglePlay}\n\t\t\t\t\t\t\tonContextMenu={preventDefaultEvent}\n\t\t\t\t\t\t\ttitle={isPlaying ? \"Pause\" : \"Play\"}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<PauseFill className=\"col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-0 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 transition-[scale,opacity] duration-500 ease-exponential group-data-playing/video:scale-60 group-data-playing/video:opacity-100\" />\n\n\t\t\t\t\t\t\t<PlayFill className=\"-right-0.5 col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 transition-[scale,opacity] duration-500 ease-exponential group-data-playing/video:scale-0 group-data-playing/video:opacity-0\" />\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName=\"col-start-0 col-end-1 row-start-0 row-end-1 grid size-12 rounded-full backdrop-blur-[1px] backdrop-brightness-101 transition-[scale,-webkit-backdrop-filter,backdrop-filter] duration-300 ease-exponential active:scale-95 active:backdrop-blur-[2px] active:backdrop-brightness-125 pointer-fine:hover:scale-105 pointer-fine:hover:backdrop-blur-xs pointer-fine:hover:backdrop-brightness-110 pointer-fine:active:scale-95 pointer-fine:active:backdrop-blur-[2px] pointer-fine:active:backdrop-brightness-125\"\n\t\t\t\t\t\t\tonClick={skipBack}\n\t\t\t\t\t\t\tonContextMenu={preventDefaultEvent}\n\t\t\t\t\t\t\ttitle={`Skip Back ${skipDuration} Seconds`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FiveArrowTriangleheadCounterclockwise className=\"col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-meta/video:opacity-100 group-data-alt/video:group-data-meta/video:group-data-ctrl/video:opacity-0 group-data-alt/video:group-data-meta/video:group-data-shift/video:opacity-0\" />\n\n\t\t\t\t\t\t\t<TenArrowTriangleheadCounterclockwise className=\"col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:opacity-0 group-data-alt/video:group-data-ctrl/video:opacity-100 group-data-alt/video:group-data-shift/video:group-data-meta/video:group-data-ctrl/video:opacity-0\" />\n\n\t\t\t\t\t\t\t<FifteenArrowTriangleheadCounterclockwise className=\"col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:opacity-100 group-data-ctrl/video:opacity-0 group-data-meta/video:opacity-0 group-data-shift/video:opacity-0\" />\n\n\t\t\t\t\t\t\t<ThirtyArrowTriangleheadCounterclockwise className=\"col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-shift/video:opacity-100 group-data-alt/video:group-data-ctrl/video:group-data-shift/video:opacity-0 group-data-alt/video:group-data-meta/video:group-data-shift/video:opacity-0\" />\n\n\t\t\t\t\t\t\t<SixtyArrowTriangleheadCounterclockwise className=\"col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-shift/video:group-data-meta/video:opacity-100 group-data-alt/video:group-data-shift/video:group-data-meta/video:group-data-ctrl/video:opacity-0\" />\n\n\t\t\t\t\t\t\t<NinetyArrowTriangleheadCounterclockwise className=\"col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-shift/video:group-data-meta/video:group-data-ctrl/video:opacity-100\" />\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName=\"col-start-2 col-end-3 row-start-0 row-end-1 grid size-12 rounded-full backdrop-blur-[1px] backdrop-brightness-101 transition-[scale,-webkit-backdrop-filter,backdrop-filter] duration-300 ease-exponential active:scale-95 active:backdrop-blur-[2px] active:backdrop-brightness-125 pointer-fine:hover:scale-105 pointer-fine:hover:backdrop-blur-xs pointer-fine:hover:backdrop-brightness-110 pointer-fine:active:scale-95 pointer-fine:active:backdrop-blur-[2px] pointer-fine:active:backdrop-brightness-125\"\n\t\t\t\t\t\t\tonClick={skipForward}\n\t\t\t\t\t\t\tonContextMenu={preventDefaultEvent}\n\t\t\t\t\t\t\ttitle={`Skip Forward ${skipDuration} Seconds`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FiveArrowTriangleheadClockwise className=\"col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-meta/video:opacity-100 group-data-alt/video:group-data-meta/video:group-data-ctrl/video:opacity-0 group-data-alt/video:group-data-meta/video:group-data-shift/video:opacity-0\" />\n\n\t\t\t\t\t\t\t<TenArrowTriangleheadClockwise className=\"col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:opacity-0 group-data-alt/video:group-data-ctrl/video:opacity-100 group-data-alt/video:group-data-shift/video:group-data-meta/video:group-data-ctrl/video:opacity-0\" />\n\n\t\t\t\t\t\t\t<FifteenArrowTriangleheadClockwise className=\"col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:opacity-100 group-data-ctrl/video:opacity-0 group-data-meta/video:opacity-0 group-data-shift/video:opacity-0\" />\n\n\t\t\t\t\t\t\t<ThirtyArrowTriangleheadClockwise className=\"col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-shift/video:opacity-100 group-data-alt/video:group-data-ctrl/video:group-data-shift/video:opacity-0 group-data-alt/video:group-data-meta/video:group-data-shift/video:opacity-0\" />\n\n\t\t\t\t\t\t\t<SixtyArrowTriangleheadClockwise className=\"col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-shift/video:group-data-meta/video:opacity-100 group-data-alt/video:group-data-shift/video:group-data-meta/video:group-data-ctrl/video:opacity-0\" />\n\n\t\t\t\t\t\t\t<NinetyArrowTriangleheadClockwise className=\"col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-60 opacity-0 drop-shadow-[0_.25rem_2rem] drop-shadow-neutral-950/75 group-data-alt/video:group-data-shift/video:group-data-meta/video:group-data-ctrl/video:opacity-100\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"absolute inset-x-2 bottom-2 flex items-center gap-2 rounded-xl bg-neutral-900/50 px-2 py-1 shadow-2xl backdrop-blur-xs backdrop-brightness-110\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"group/scrubber h-2 w-max grow cursor-grab overflow-clip rounded-md bg-neutral-50/50 backdrop-blur-xs backdrop-brightness-110 transition-[height] duration-300 ease-exponential active:h-4 pointer-fine:hover:h-4 pointer-fine:active:h-4\"\n\t\t\t\t\t\t\tonMouseDown={(e) => {\n\t\t\t\t\t\t\t\tinitiateTrackProgress(e);\n\t\t\t\t\t\t\t\tinitializeSeeking();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonMouseMove={handleSeekIndicatorMovement}\n\t\t\t\t\t\t\tonMouseUp={handleSeekRelease}\n\t\t\t\t\t\t\tonTouchStart={initiateTrackProgress}\n\t\t\t\t\t\t\tref={scrubberRef}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\tclassName=\"absolute inset-0 grid transition-cols duration-100 ease-linear\"\n\t\t\t\t\t\t\t\tstyle={{ gridTemplateColumns: `${progress / MAX_PROGRESS}fr` }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className=\"overflow-hidden\">\n\t\t\t\t\t\t\t\t\t<div className=\"h-full bg-neutral-50/70 text-[1px] text-transparent backdrop-blur-xs backdrop-brightness-125\">\n\t\t\t\t\t\t\t\t\t\t{progress}/{MAX_PROGRESS}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t{...(seekIndicator.isInPlayedArea\n\t\t\t\t\t\t\t\t\t? { \"data-in-played-area\": true }\n\t\t\t\t\t\t\t\t\t: {})}\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\tclassName=\"absolute inset-y-0 w-1 cursor-grab bg-neutral-50 opacity-0 transition-opacity duration-300 ease-exponential group-hover/scrubber:opacity-100 data-in-played-area:bg-neutral-500 pointer-coarse:hidden\"\n\t\t\t\t\t\t\t\tstyle={{ transform: `translateX(${seekIndicator.position}px)` }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<progress\n\t\t\t\t\t\t\t\tclassName=\"sr-only\"\n\t\t\t\t\t\t\t\tmax={MAX_PROGRESS}\n\t\t\t\t\t\t\t\tvalue={progress}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<span className=\"block text-xs\">\n\t\t\t\t\t\t\t{timeRemaining / 60 >= 1\n\t\t\t\t\t\t\t\t? `${Math.round(timeRemaining / 60)}:${\n\t\t\t\t\t\t\t\t\tMath.round(\n\t\t\t\t\t\t\t\t\t\t(timeRemaining / 60 - Math.round(timeRemaining / 60)) * 60,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t\t\t\t.padStart(2, \"0\")\n\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t\t: Math.round(timeRemaining) === 60\n\t\t\t\t\t\t\t\t? `1:00`\n\t\t\t\t\t\t\t\t: `0:${Math.round(timeRemaining).toString().padStart(2, \"0\")}`}\n\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t<DropDown>\n\t\t\t\t\t\t\t<DropDownButton\n\t\t\t\t\t\t\t\tarrow={false}\n\t\t\t\t\t\t\t\tclassName=\"group/button flex size-6 items-center justify-center rounded-xs transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:hover:scale-105 pointer-fine:active:scale-95\"\n\t\t\t\t\t\t\t\ttitle=\"Volume\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\tviewBox=\"0 0 64 47\"\n\t\t\t\t\t\t\t\t\tclassName=\"size-full scale-80 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75 transition-transform duration-300 ease-exponential\"\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\ttranslate: `${\n\t\t\t\t\t\t\t\t\t\t\tvolume > 0.66\n\t\t\t\t\t\t\t\t\t\t\t\t? \"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t: volume > 0.33\n\t\t\t\t\t\t\t\t\t\t\t\t? \"2px\"\n\t\t\t\t\t\t\t\t\t\t\t\t: volume > 0\n\t\t\t\t\t\t\t\t\t\t\t\t? \"4px\"\n\t\t\t\t\t\t\t\t\t\t\t\t: \"6px\"\n\t\t\t\t\t\t\t\t\t\t} 0`,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<path d=\"M25.707,44.076C27.257,44.076 28.39,42.947 28.39,41.387L28.39,4.841C28.39,3.307 27.257,2.025 25.656,2.025C24.542,2.025 23.767,2.512 22.558,3.666L12.393,13.203C12.251,13.345 12.047,13.436 11.818,13.436L4.99,13.436C1.759,13.436 0,15.195 0,18.654L0,27.525C0,30.953 1.759,32.737 4.99,32.737L11.818,32.737C12.047,32.737 12.251,32.808 12.393,32.95L22.558,42.583C23.666,43.615 24.593,44.076 25.707,44.076Z\" />\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tclassName=\"transition-opacity duration-300 ease-exponential\"\n\t\t\t\t\t\t\t\t\t\td=\"M36.874,33.192C37.684,33.728 38.797,33.566 39.439,32.64C41.265,30.222 42.371,26.683 42.371,23.026C42.371,19.368 41.265,15.855 39.439,13.411C38.797,12.485 37.684,12.323 36.874,12.885C35.923,13.553 35.761,14.721 36.505,15.713C37.901,17.607 38.662,20.249 38.662,23.026C38.662,25.802 37.876,28.419 36.505,30.338C35.786,31.355 35.923,32.498 36.874,33.192Z\"\n\t\t\t\t\t\t\t\t\t\tstyle={{ opacity: volume > 0 ? 1 : 0 }}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tclassName=\"transition-opacity duration-300 ease-exponential\"\n\t\t\t\t\t\t\t\t\t\td=\"M45.738,39.394C46.624,39.981 47.712,39.799 48.354,38.868C51.402,34.69 53.208,28.904 53.208,23.026C53.208,17.148 51.427,11.31 48.354,7.183C47.712,6.252 46.624,6.07 45.738,6.657C44.858,7.249 44.701,8.362 45.399,9.354C48.023,13.032 49.499,17.952 49.499,23.026C49.499,28.099 47.972,32.994 45.399,36.697C44.726,37.689 44.858,38.802 45.738,39.394Z\"\n\t\t\t\t\t\t\t\t\t\tstyle={{ opacity: volume > 0.33 ? 1 : 0 }}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tclassName=\"transition-opacity duration-300 ease-exponential\"\n\t\t\t\t\t\t\t\t\t\td=\"M54.679,45.708C55.514,46.32 56.683,46.082 57.315,45.121C61.498,39.091 64,31.447 64,23.026C64,14.604 61.422,6.986 57.315,0.93C56.683,-0.056 55.514,-0.269 54.679,0.343C53.804,0.956 53.668,2.079 54.33,3.071C58.012,8.514 60.342,15.379 60.342,23.026C60.342,30.647 58.012,37.562 54.33,42.98C53.668,43.972 53.804,45.095 54.679,45.708Z\"\n\t\t\t\t\t\t\t\t\t\tstyle={{ opacity: volume > 0.66 ? 1 : 0 }}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t</DropDownButton>\n\n\t\t\t\t\t\t\t<DropDownItems\n\t\t\t\t\t\t\t\tanchor={{\n\t\t\t\t\t\t\t\t\tgap: \".5rem\",\n\t\t\t\t\t\t\t\t\tpadding: \".375rem\",\n\t\t\t\t\t\t\t\t\tto: \"top\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName=\"bg-neutral-900/50 px-1.5 py-1.5 text-neutral-50 backdrop-blur-xs backdrop-brightness-110\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DropDownItem\n\t\t\t\t\t\t\t\t\tas=\"button\"\n\t\t\t\t\t\t\t\t\tclassName=\"flex size-6 items-center justify-center rounded-xs transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:hover:scale-105 pointer-fine:active:scale-95\"\n\t\t\t\t\t\t\t\t\tonClick={increaseVolume}\n\t\t\t\t\t\t\t\t\ttitle=\"Increase volume\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<SpeakerPlusFill className=\"size-full scale-80 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75\" />\n\t\t\t\t\t\t\t\t</DropDownItem>\n\n\t\t\t\t\t\t\t\t<DropDownSeparator\n\t\t\t\t\t\t\t\t\taria-label=\"Volume slider\"\n\t\t\t\t\t\t\t\t\taria-valuemin={0}\n\t\t\t\t\t\t\t\t\taria-valuemax={100}\n\t\t\t\t\t\t\t\t\taria-valuenow={volume * 100}\n\t\t\t\t\t\t\t\t\tclassName=\"mx-auto my-2 h-24 w-2 cursor-grab overflow-clip rounded-md bg-neutral-50/50 backdrop-blur-xs backdrop-brightness-110 transition-[width] duration-300 ease-exponential active:w-4 pointer-fine:hover:w-4 pointer-fine:active:w-4\"\n\t\t\t\t\t\t\t\t\tonMouseDown={initiateTrackVolume}\n\t\t\t\t\t\t\t\t\tonTouchStart={initiateTrackVolume}\n\t\t\t\t\t\t\t\t\trole=\"slider\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"grid size-full rotate-180 transition-rows duration-300 ease-exponential\"\n\t\t\t\t\t\t\t\t\t\tstyle={{ gridTemplateRows: `${volume}fr` }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div className=\"overflow-y-hidden\">\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"size-full bg-neutral-50/70 text-[1px] text-transparent backdrop-blur-xs backdrop-brightness-125\">\n\t\t\t\t\t\t\t\t\t\t\t\t{volume * 100}%\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</DropDownSeparator>\n\n\t\t\t\t\t\t\t\t<DropDownItem\n\t\t\t\t\t\t\t\t\tas=\"button\"\n\t\t\t\t\t\t\t\t\tclassName=\"flex size-6 items-center justify-center rounded-xs transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:hover:scale-105 pointer-fine:active:scale-95\"\n\t\t\t\t\t\t\t\t\tonClick={decreaseVolume}\n\t\t\t\t\t\t\t\t\ttitle=\"Decrease volume\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<SpeakerMinusFill className=\"size-full scale-80 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75\" />\n\t\t\t\t\t\t\t\t</DropDownItem>\n\t\t\t\t\t\t\t</DropDownItems>\n\t\t\t\t\t\t</DropDown>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName=\"flex size-6 items-center justify-center rounded-xs transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:hover:scale-105 pointer-fine:active:scale-95\"\n\t\t\t\t\t\t\tonClick={enterPictureInPicture}\n\t\t\t\t\t\t\ttitle=\"Enter Picture-in-Picture\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<RectangleFillOnArrowDownForwardTopleadingRectangle className=\"size-full scale-80 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75\" />\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName=\"flex size-6 items-center justify-center rounded-xs transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:hover:scale-105 pointer-fine:active:scale-95\"\n\t\t\t\t\t\t\tonClick={handleRemotePlayback}\n\t\t\t\t\t\t\ttitle=\"Remote Playback\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<RectangleTriangleUp className=\"size-full scale-80 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75\" />\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<DropDown>\n\t\t\t\t\t\t\t<DropDownButton\n\t\t\t\t\t\t\t\tarrow={false}\n\t\t\t\t\t\t\t\tclassName=\"flex size-6 items-center justify-center rounded-xs transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:hover:scale-105 pointer-fine:active:scale-95\"\n\t\t\t\t\t\t\t\ttitle=\"Other Settings\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<GearshapeFill className=\"size-full scale-80 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75\" />\n\t\t\t\t\t\t\t</DropDownButton>\n\n\t\t\t\t\t\t\t<DropDownItems\n\t\t\t\t\t\t\t\tanchor={{\n\t\t\t\t\t\t\t\t\tgap: \".5rem\",\n\t\t\t\t\t\t\t\t\tpadding: \".375rem\",\n\t\t\t\t\t\t\t\t\tto: \"top end\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName=\"bg-neutral-900/50 px-1.5 py-1.5 text-neutral-50 backdrop-blur-xs backdrop-brightness-110\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DropDownItem\n\t\t\t\t\t\t\t\t\tas=\"button\"\n\t\t\t\t\t\t\t\t\tclassName=\"flex items-center gap-2 rounded-lg px-1.5 py-0.5 text-sm drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75 transition-[scale,background-color,color] duration-300 ease-exponential active:scale-95 data-active:bg-neutral-50/90 data-active:text-neutral-950 pointer-fine:hover:scale-105 pointer-fine:active:scale-95\"\n\t\t\t\t\t\t\t\t\tonClick={captureCurrentFrame}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<PhotoBadgeArrowDownFill className=\"size-5\" />\n\t\t\t\t\t\t\t\t\tCapture Current Frame\n\t\t\t\t\t\t\t\t</DropDownItem>\n\t\t\t\t\t\t\t</DropDownItems>\n\t\t\t\t\t\t</DropDown>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName=\"grid size-6 rounded-xs transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:hover:scale-105 pointer-fine:active:scale-95\"\n\t\t\t\t\t\t\tonClick={toggleFullscreen}\n\t\t\t\t\t\t\ttitle={`${isFullscreen ? \"Exit\" : \"Enter\"} Fullscreen`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ArrowUpForwardAndArrowDownBackwardRectangle className=\"col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-0 opacity-0 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75 transition-[scale,opacity] duration-500 ease-exponential group-data-fullscreen/video:scale-80 group-data-fullscreen/video:opacity-100\" />\n\n\t\t\t\t\t\t\t<ArrowDownBackwardAndArrowUpForwardRectangle className=\"-right-0.5 col-start-0 col-end-1 row-start-0 row-end-1 size-full scale-80 drop-shadow-[0_.125rem_1rem] drop-shadow-neutral-950/75 transition-[scale,opacity] duration-500 ease-exponential group-data-fullscreen/video:scale-0 group-data-fullscreen/video:opacity-0\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tclassName=\"absolute inset-0 -z-10 text-[1px] text-transparent\"\n\t\t\t\t\t\tonClick={togglePlay}\n\t\t\t\t\t\tonMouseMove={handleMouseMoveControls}\n\t\t\t\t\t\tonMouseLeave={clearMouseMoveControlsTimeout}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isPlaying ? \"Pause\" : \"Play\"}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</figure>\n\t);\n}\n"],"names":["extendTailwindMerge","Children","isValidElement","Fragment","_jsx","twJoin","HeadlessButton","_jsxs","DisclosureButton","_Fragment","DisclosurePanel","Disclosure","MenuButton","MenuItem","MenuItems","MenuSection","MenuHeading","MenuSeparator","Menu","useRef","createContext","useContext","useSyncExternalStore","Provider","useStore","useCallback","useEffect","Suspense","useState","useId","HeadlessFieldset","Legend","computePosition","arrow","flip","offset","shift","size","getComputedStyle","offset$1","shift$1","flip$1","size$1","arrow$1","useLayoutEffect","React","ReactDOM","cloneElement","floatingOffset","floatingArrow","createPortal","Field","Label","HeadlessInput","Description","HeadlessTextarea","DialogTitle","Dialog","DialogBackdrop","DialogPanel"],"mappings":"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","x_google_ignoreList":[42,43,44,45,46]}
|