consolia-ui 1.0.2 → 1.0.3
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/dist/index.js +4 -20
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["src/components/Maps/index.tsx","src/components/Loading/index.tsx","src/components/Loading/styles.ts","src/stitches.config.ts","src/hooks/useGoogleMaps.ts","src/components/Maps/styles.ts","src/index.ts","src/types/components.ts","src/types/hooks.ts","src/types/stitches.ts","src/icons.ts","src/components/Stack/index.tsx","src/components/Stack/styles.ts","src/components/Text/styles.ts","src/components/View/index.tsx","src/components/Gradient/index.tsx","src/components/Gradient/styles.ts","src/components/Logo/index.tsx","src/components/Text/index.tsx","src/components/Icon/index.tsx","src/hooks/useMountSSR.ts","src/components/Icon/styles.tsx","src/components/Logo/styles.ts","src/hooks/useBreakpoints.ts","src/components/View/styles.ts","src/components/Box/index.tsx","src/components/Button/index.tsx","src/components/Button/styles.ts","src/components/Box/styles.ts","src/components/Divider/index.tsx","src/components/Divider/styles.ts","src/components/Input/index.tsx","src/components/Badge/index.tsx","src/components/Badge/styles.ts","src/hooks/useEventListener.ts","src/components/Input/styles.ts","src/components/Field/index.tsx","src/components/Field/styles.ts","src/components/Form/index.tsx","src/components/Form/styles.ts","src/components/Datepicker/index.tsx","src/hooks/useDayjs.ts","src/components/Popover/index.tsx","src/hooks/useFloatingUI.ts","src/hooks/useOutsideClick.ts","src/components/Popover/styles.ts","src/components/Datepicker/styles.ts","src/components/Monthpicker/index.tsx","src/components/Monthpicker/styles.ts","src/components/Calendar/index.tsx","src/hooks/useCalendar.ts","src/components/Calendar/styles.ts","src/components/Menu/index.tsx","src/hooks/useModal.ts","src/components/Menu/styles.ts","src/components/Select/index.tsx","src/components/Select/styles.ts","src/components/Select/SelectMulti/index.tsx","src/components/Modal/index.tsx","src/components/Modal/styles.ts","src/components/Drawer/index.tsx","src/components/Drawer/styles.ts","src/components/Avatar/index.tsx","src/components/Avatar/styles.ts","src/components/Accordion/index.tsx","src/components/Accordion/styles.ts","src/components/Progress/index.tsx","src/components/Progress/styles.ts","src/components/Table/index.tsx","src/components/Table/styles.ts","src/components/Tabs/index.tsx","src/components/Tabs/styles.ts","src/components/Loading/LoadingOverlay/index.tsx","src/components/Image/index.tsx","src/components/Image/styles.ts","src/components/Nodes/index.tsx","src/components/Nodes/hooks.ts","src/components/Nodes/styles.ts","src/components/Upload/index.tsx","src/components/Upload/styles.ts","src/components/Places/index.tsx","src/hooks/useDebounce.ts","src/components/Places/styles.ts","src/components/Provider/index.tsx","src/components/Provider/styles.ts","src/components/Provider/ToastController/index.tsx","src/components/Provider/ProviderToggle/index.tsx","src/hooks/useTheme.ts","src/hooks/useLocalStorage.ts","src/hooks/useLocalStorageReadOnly.ts","src/hooks/useViewport.ts","src/hooks/useWindowDimensions.ts"],"sourcesContent":["/// <reference types=\"@types/google.maps\" />\nimport { importLibrary } from \"@googlemaps/js-api-loader\";\nimport { useEffect, useRef, useState, type JSX } from \"react\";\n\nimport { Loading, type IMaps, useGoogleMaps } from \"../../index\";\nimport { MapsStyled } from \"./styles\";\n\nexport default function Maps({\n apiKey,\n center,\n css,\n height = \"400px\",\n mapType = \"roadmap\",\n zoom = 12,\n}: IMaps): JSX.Element {\n const mapRef = useRef<HTMLDivElement>(null);\n const mapInstanceRef = useRef<unknown>(null);\n const [resolvedCenter, setResolvedCenter] = useState<{\n lat: number;\n lng: number;\n } | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [geoError, setGeoError] = useState<string | null>(null);\n\n // Initialize Google Maps (this sets options globally)\n useGoogleMaps({\n apiKey: apiKey || \"\",\n libraries: [\"maps\"],\n });\n\n useEffect(() => {\n if (!apiKey || !center) {\n setResolvedCenter(null);\n setIsLoading(false);\n\n return;\n }\n\n let isActive = true;\n const resolveCenter = async (): Promise<void> => {\n setIsLoading(true);\n setGeoError(null);\n\n if (typeof center === \"object\" && center.lat && center.lng) {\n if (!isActive) return;\n setResolvedCenter((prev) => {\n if (prev?.lat === center.lat && prev?.lng === center.lng) return prev;\n\n return center;\n });\n setIsLoading(false);\n\n return;\n }\n\n if (typeof center === \"string\") {\n try {\n const { Geocoder } = (await importLibrary(\"geocoding\")) as google.maps.GeocodingLibrary;\n\n if (!isActive) return;\n const geocoder = new Geocoder();\n\n geocoder.geocode(\n { address: center },\n (results: google.maps.GeocoderResult[] | null, status: google.maps.GeocoderStatus) => {\n if (!isActive) return;\n if (status === \"OK\" && results?.[0]?.geometry?.location) {\n const { location } = results[0].geometry;\n const newCenter = {\n lat: location.lat(),\n lng: location.lng(),\n };\n\n setResolvedCenter((prev) => {\n if (prev?.lat === newCenter.lat && prev?.lng === newCenter.lng) return prev;\n\n return newCenter;\n });\n } else {\n setResolvedCenter(null);\n setGeoError(\"Unable to locate that address.\");\n }\n setIsLoading(false);\n },\n );\n } catch {\n if (!isActive) return;\n setResolvedCenter(null);\n setGeoError(\"Failed to initialize geocoding service.\");\n setIsLoading(false);\n }\n }\n };\n\n resolveCenter();\n\n return (): void => {\n isActive = false;\n };\n }, [apiKey, center]);\n\n useEffect(() => {\n if (!apiKey || !mapRef.current || !resolvedCenter) return;\n\n let isActive = true;\n const initMap = async (): Promise<void> => {\n try {\n const { Map } = (await importLibrary(\"maps\")) as google.maps.MapsLibrary;\n\n if (!isActive) return;\n\n if (mapRef.current) {\n mapInstanceRef.current = new Map(mapRef.current, {\n center: resolvedCenter,\n mapTypeId: mapType,\n zoom,\n });\n }\n } catch {\n // Map initialization failed - component will show loading state\n }\n };\n\n initMap();\n\n return (): void => {\n isActive = false;\n };\n }, [apiKey, resolvedCenter, zoom, mapType]);\n\n if (!center || isLoading || !resolvedCenter) {\n return (\n <MapsStyled\n aria-live=\"polite\"\n css={{\n alignItems: \"center\",\n display: \"flex\",\n height: typeof height === \"number\" ? `${height}px` : height,\n justifyContent: \"center\",\n ...css,\n }}\n role=\"status\">\n {geoError ? geoError : <Loading />}\n </MapsStyled>\n );\n }\n\n return (\n <MapsStyled\n ref={mapRef}\n aria-busy={false}\n css={{\n height: typeof height === \"number\" ? `${height}px` : height,\n ...css,\n }}\n role=\"region\"\n />\n );\n}\n","import type { JSX } from \"react\";\n\nimport { type ILoading } from \"../../index\";\nimport { LoadingStyled } from \"./styles\";\n\nexport default function Loading({ css }: ILoading): JSX.Element {\n return (\n <LoadingStyled colored={false} css={css}>\n <svg viewBox=\"-20 -20 426.81 467.47\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M369.48,4.46h-224.77c-5.11,0-10.02,1.99-13.7,5.54L19.67,117.73c-9.72,9.4-15.17,22.38-15.06,35.9l.95,118.09c.08,9.9,8.13,17.89,18.03,17.89h99.01c.42.04.82.09,1.37.09,10.34,0,12.43,6.59,12.77,10.63v76.93c0,.57.06,1.12.08,1.68v26.49c0,9.49,7.7,17.19,17.19,17.19h67.4c.89,0,1.74-.11,2.59-.26l15.52.13c9.36.08,18.35-3.64,24.92-10.32l108.72-110.61c4.3-4.37,1.2-11.77-4.93-11.77l-221.69-.18s-.03,0-.05,0c-7.85,0-9.41-5.7-9.66-9.16V18.9c0-5.22,6.35-7.78,9.98-4.03l95.11,98.39c12.61,13.05,29.99,20.42,48.14,20.42h78.72c5.3,0,9.61-4.28,9.65-9.58l.7-109.92c.03-5.35-4.29-9.71-9.65-9.71Z\" />\n </svg>\n </LoadingStyled>\n );\n}\n","import { keyframes, styled } from \"../../stitches.config\";\n\nconst dashArrayValue = \"2500\";\nconst strokeWidthValue = \"30\";\nconst animationDuration = \"10s\";\n\nconst buildPath = keyframes({\n \"0%\": {\n fillOpacity: 0,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"2450\",\n },\n \"17.5%\": {\n fillOpacity: 0,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"20%\": {\n fillOpacity: 1,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"32.5%\": {\n fillOpacity: 1,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"35%\": {\n fillOpacity: 0,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"50%\": {\n fillOpacity: 0,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"-1950\",\n },\n \"65%\": {\n fillOpacity: 0,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"67.5%\": {\n fillOpacity: 1,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"80%\": {\n fillOpacity: 1,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"82.5%\": {\n fillOpacity: 0,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"100%\": {\n fillOpacity: 0,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"2450\",\n },\n});\n\nconst colorCycle = keyframes({\n \"0%\": {\n color: \"$violet\",\n },\n \"25%\": {\n color: \"$blue\",\n },\n \"50%\": {\n color: \"$yellow\",\n },\n \"75%\": {\n color: \"$orange\",\n },\n \"100%\": {\n color: \"$violet\",\n },\n});\n\nexport const LoadingStyled = styled(\"span\", {\n \"& svg\": {\n \"& path\": {\n animation: `${buildPath} ${animationDuration} linear infinite`,\n fill: \"currentColor\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: strokeWidthValue,\n transition: \"color 1.5s ease-in-out\",\n },\n height: \"100%\",\n width: \"100%\",\n },\n display: \"inline-flex\",\n height: \"$medium\",\n position: \"relative\",\n\n variants: {\n colored: {\n true: {\n \"& svg path\": {\n animation: `${buildPath} ${animationDuration} linear infinite, ${colorCycle} 8s ease-in-out infinite`,\n },\n },\n },\n },\n\n width: \"$medium\",\n});\n\nexport const LoadingOverlayStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$text\",\n borderBottomColor: \"$text\",\n borderLeftColor: \"$text\",\n borderRadius: \"$default\",\n borderRightColor: \"$text\",\n borderStyle: \"solid\",\n borderTopColor: \"$text\",\n borderWidth: \"1px\",\n bottom: \"$medium\",\n boxShadow: \"$large\",\n color: \"$background\",\n display: \"flex\",\n justifyContent: \"center\",\n maxWidth: \"600px\",\n padding: \"$smallest $small\",\n phone: {\n left: \"50%\",\n maxWidth: \"95%\",\n textAlign: \"center\",\n transform: \"translateX(-50%)\",\n width: \"fit-content\",\n },\n pointerEvents: \"none\",\n position: \"fixed\",\n right: \"$medium\",\n userSelect: \"none\",\n zIndex: \"$toast\",\n});\n\nexport const LoadingOverlayTitleStyled = styled(\"div\", {\n marginLeft: \"$small\",\n});\n","/* eslint-disable perfectionist/sort-objects */\nimport { createStitches, createTheme, defaultThemeMap } from \"@stitches/react\";\n\nimport type {\n TBreakpointsConfig,\n TSpacingConfig,\n TThemeConfig,\n TDynamicViewportConfig,\n TStitchesUtils,\n TBreakpointName,\n} from \"./types/stitches\";\n\nexport const breakpoints: TBreakpointsConfig = {\n desktop: \"@media only screen and (max-width: 2200px)\",\n desktopX: \"@media only screen and (min-width: 1401px) and (max-width: 2200px)\",\n laptop: \"@media only screen and (max-width: 1400px)\",\n laptopX: \"@media only screen and (min-width: 1101px) and (max-width: 1400px)\",\n phone: \"@media only screen and (max-width: 800px)\",\n phoneX: \"@media only screen and (min-width: 376px) and (max-width: 800px)\",\n special: {\n micro: \"@media only screen and (max-width: 375px)\",\n print: \"@media print\",\n retina:\n \"@media only screen and (-webkit-min-device-pixel-ratio: 2), screen and (min-resolution: 2dppx)\",\n },\n tablet: \"@media only screen and (max-width: 1100px)\",\n tabletX: \"@media only screen and (min-width: 801px) and (max-width: 1100px)\",\n wide: \"@media only screen and (min-width: 2201px)\",\n};\n\nexport const spacings: TSpacingConfig = {\n auto: \"auto\",\n large: \"32px\",\n larger: \"48px\",\n largest: \"80px\",\n medium: \"16px\",\n none: \"0px\",\n small: \"8px\",\n smaller: \"4px\",\n smallest: \"2px\",\n};\n\nconst defaultTheme: TThemeConfig = {\n colors: {\n background: \"rgba(245, 245, 245, 1)\",\n border: \"rgba(0, 0, 0, 0.08)\",\n borderLight: \"rgba(0, 0, 0, 0.04)\",\n borderTop: \"rgba(0, 0, 0, 0.04)\",\n borderBottom: \"rgba(0, 0, 0, 0.12)\",\n borderStrong: \"rgba(0, 0, 0, 0.16)\",\n borderEmphasis: \"rgba(0, 0, 0, 0.20)\",\n overlay: \"rgba(0, 0, 0, 0.2)\",\n surface: \"rgba(255, 255, 255, 1)\",\n surfaceHover: \"rgba(0, 0, 0, 0.04)\",\n surfaceLight: \"rgba(0, 0, 0, 0.02)\",\n surfaceOverlay: \"rgba(255, 255, 255, 0.7)\",\n surfacePopover: \"rgba(255, 255, 255, 0.8)\",\n text: \"rgba(26, 26, 26, 1)\",\n textMuted: \"rgba(107, 107, 107, 1)\",\n\n // Accent colors - vibrant with rgba for stacking depth\n yellow: \"rgba(242, 201, 125, 1)\",\n yellowLight: \"rgba(242, 201, 125, 0.4)\",\n yellowDark: \"rgba(156, 115, 52, 1)\",\n yellowOverlay: \"rgba(242, 201, 125, 0.7)\",\n orange: \"rgba(234, 187, 171, 1)\",\n orangeLight: \"rgba(234, 187, 171, 0.4)\",\n orangeDark: \"rgba(156, 100, 77, 1)\",\n orangeOverlay: \"rgba(234, 187, 171, 0.7)\",\n green: \"rgba(178, 214, 201, 1)\",\n greenLight: \"rgba(178, 214, 201, 0.4)\",\n greenDark: \"rgba(88, 134, 111, 1)\",\n greenOverlay: \"rgba(178, 214, 201, 0.7)\",\n blue: \"rgba(175, 218, 241, 1)\",\n blueLight: \"rgba(175, 218, 241, 0.4)\",\n blueDark: \"rgba(87, 136, 171, 1)\",\n blueOverlay: \"rgba(175, 218, 241, 0.7)\",\n violet: \"rgba(188, 182, 215, 1)\",\n violetLight: \"rgba(188, 182, 215, 0.4)\",\n violetDark: \"rgba(94, 91, 134, 1)\",\n violetOverlay: \"rgba(188, 182, 215, 0.7)\",\n red: \"rgba(237, 164, 169, 1)\",\n redLight: \"rgba(237, 164, 169, 0.4)\",\n redDark: \"rgba(156, 68, 73, 1)\",\n redOverlay: \"rgba(237, 164, 169, 0.7)\",\n pink: \"rgba(243, 169, 196, 1)\",\n pinkLight: \"rgba(243, 169, 196, 0.4)\",\n pinkDark: \"rgba(160, 70, 103, 1)\",\n pinkOverlay: \"rgba(243, 169, 196, 0.7)\",\n },\n fonts: {\n default: \"Untitled Sans, apple-system, sans-serif\",\n heading: \"Tomato Grotesk, Untitled Sans, apple-system, sans-serif\",\n },\n fontSizes: {\n default: \"1rem\", // 16px - body text (standard base)\n h1: \"2.6rem\", // 40px\n h2: \"2.2rem\", // 32px\n h3: \"1.7rem\", // 28px\n h4: \"1.4rem\", // 24px\n h5: \"1.2rem\", // 20px\n h6: \"1.1rem\", // 18px - box headers\n micro: \"0.8125rem\", // 13px - badges, tiny text\n small: \"0.9375rem\", // 15px - secondary text\n },\n lineHeights: {\n default: \"1.5\",\n relaxed: \"1.75\",\n tight: \"1.25\",\n },\n opacities: {\n default: 0.75,\n light: 0.55,\n },\n radii: {\n small: \"6px\",\n default: \"8px\",\n large: \"12px\",\n full: \"9999px\",\n },\n shadows: {\n inset: \"inset 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n subtle: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n default: \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n medium: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n large: \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n largest: \"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n },\n sizes: spacings,\n space: spacings,\n transitions: {\n fast: \"all 0.15s cubic-bezier(0.4, 0, 0.2, 1)\",\n default: \"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n slow: \"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",\n bounce: \"all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1)\",\n },\n zIndices: {\n menu: 999,\n modal: 997,\n modalPopover: 1000,\n popover: 996,\n select: 995,\n special: 100,\n sticky: 10,\n table: 100,\n toast: 998,\n },\n};\n\nconst darkThemeConfig: Partial<TThemeConfig> = {\n colors: {\n background: \"rgba(18, 18, 18, 1)\",\n border: \"rgba(255, 255, 255, 0.10)\",\n borderLight: \"rgba(255, 255, 255, 0.06)\",\n borderTop: \"rgba(255, 255, 255, 0.06)\",\n borderBottom: \"rgba(255, 255, 255, 0.14)\",\n borderStrong: \"rgba(255, 255, 255, 0.18)\",\n borderEmphasis: \"rgba(255, 255, 255, 0.24)\",\n overlay: \"rgba(0, 0, 0, 0.5)\",\n surface: \"rgba(30, 30, 30, 1)\",\n surfaceHover: \"rgba(255, 255, 255, 0.08)\",\n surfaceLight: \"rgba(255, 255, 255, 0.04)\",\n surfaceOverlay: \"rgba(30, 30, 30, 0.6)\",\n surfacePopover: \"rgba(30, 30, 30, 0.4)\",\n text: \"rgba(229, 229, 229, 1)\",\n textMuted: \"rgba(160, 160, 160, 1)\",\n\n // Accent colors - inverted contrast for dark mode\n // Main colors: full opacity solid backgrounds for badges\n // Light variants: very subtle backgrounds for calendar/surfaces\n // Dark variants: deep rich colors that contrast well on light backgrounds\n yellow: \"rgba(242, 201, 125, 0.9)\",\n yellowLight: \"rgba(242, 201, 125, 0.1)\",\n yellowDark: \"rgba(100, 65, 20, 1)\",\n yellowOverlay: \"rgba(242, 201, 125, 0.6)\",\n orange: \"rgba(234, 187, 171, 0.9)\",\n orangeLight: \"rgba(234, 187, 171, 0.1)\",\n orangeDark: \"rgba(100, 55, 35, 1)\",\n orangeOverlay: \"rgba(234, 187, 171, 0.6)\",\n green: \"rgba(178, 214, 201, 0.9)\",\n greenLight: \"rgba(178, 214, 201, 0.1)\",\n greenDark: \"rgba(45, 75, 60, 1)\",\n greenOverlay: \"rgba(178, 214, 201, 0.6)\",\n blue: \"rgba(175, 218, 241, 0.9)\",\n blueLight: \"rgba(175, 218, 241, 0.1)\",\n blueDark: \"rgba(45, 80, 100, 1)\",\n blueOverlay: \"rgba(175, 218, 241, 0.6)\",\n violet: \"rgba(188, 182, 215, 0.9)\",\n violetLight: \"rgba(188, 182, 215, 0.1)\",\n violetDark: \"rgba(55, 50, 85, 1)\",\n violetOverlay: \"rgba(188, 182, 215, 0.6)\",\n red: \"rgba(237, 164, 169, 0.9)\",\n redLight: \"rgba(237, 164, 169, 0.1)\",\n redDark: \"rgba(100, 35, 40, 1)\",\n redOverlay: \"rgba(237, 164, 169, 0.6)\",\n pink: \"rgba(243, 169, 196, 0.9)\",\n pinkLight: \"rgba(243, 169, 196, 0.1)\",\n pinkDark: \"rgba(100, 35, 60, 1)\",\n pinkOverlay: \"rgba(243, 169, 196, 0.6)\",\n },\n};\n\n// Create stitches instance first\nexport const { css, getCssText, globalCss, keyframes, styled, theme } = createStitches({\n theme: defaultTheme,\n themeMap: { ...defaultThemeMap, opacity: \"opacities\" },\n utils: {\n // Theme utilities\n darkOnly: (value: unknown): Record<string, unknown> => ({\n // eslint-disable-next-line no-use-before-define\n [`.${darkTheme} &`]: value,\n }),\n lightOnly: (value: unknown): Record<string, unknown> => ({\n \"@media (prefers-color-scheme: light)\": value,\n }),\n wide: (value: unknown): Record<string, unknown> => ({\n [breakpoints.wide]: value,\n }),\n desktop: (value: unknown): Record<string, unknown> => ({\n [breakpoints.desktop]: value,\n }),\n desktopX: (value: unknown): Record<string, unknown> => ({\n [breakpoints.desktopX]: value,\n }),\n laptop: (value: unknown): Record<string, unknown> => ({\n [breakpoints.laptop]: value,\n }),\n laptopX: (value: unknown): Record<string, unknown> => ({\n [breakpoints.laptopX]: value,\n }),\n tablet: (value: unknown): Record<string, unknown> => ({\n [breakpoints.tablet]: value,\n }),\n tabletX: (value: unknown): Record<string, unknown> => ({\n [breakpoints.tabletX]: value,\n }),\n phone: (value: unknown): Record<string, unknown> => ({\n [breakpoints.phone]: value,\n }),\n phoneX: (value: unknown): Record<string, unknown> => ({\n [breakpoints.phoneX]: value,\n }),\n // Dynamic viewport utilities with modern fallback\n dynamicViewport: (config: TDynamicViewportConfig): Record<string, unknown> => {\n const { property, value, unit } = config;\n\n // Determine axis for feature query based on unit\n const isHeight =\n unit.endsWith(\"vh\") || unit.endsWith(\"dvh\") || unit.endsWith(\"svh\") || unit.endsWith(\"lvh\");\n const featureProp = isHeight ? \"height\" : \"width\";\n const dynamicViewportUnit = isHeight ? \"dvh\" : \"dvw\";\n const classicUnit = isHeight ? \"vh\" : \"vw\";\n\n return {\n // Classic viewport units as fallback\n [property]: `${value}${classicUnit}`,\n // Use dynamic viewport when supported (updates as UI chrome changes)\n [`@supports (${featureProp}: 100${dynamicViewportUnit})`]: {\n [property]: `${value}${dynamicViewportUnit}`,\n },\n };\n },\n // Special breakpoints\n micro: (value: unknown): Record<string, unknown> => ({\n [breakpoints.special.micro]: value,\n }),\n retina: (value: unknown): Record<string, unknown> => ({\n [breakpoints.special.retina]: value,\n }),\n print: (value: unknown): Record<string, unknown> => ({\n [breakpoints.special.print]: value,\n }),\n reduceMotion: (value: unknown): Record<string, unknown> => ({\n \"@media (prefers-reduced-motion: reduce)\": value,\n }),\n // Visibility utilities\n hidden: (value: TBreakpointName): Record<string, unknown> => ({\n [breakpoints[value]]: {\n display: \"none !important\",\n },\n }),\n hiddenInline: (value: TBreakpointName): Record<string, unknown> => ({\n [breakpoints[value]]: {\n display: \"none !important\",\n },\n display: \"inline-block !important\",\n }),\n hiddenSpecial: (value: \"micro\" | \"retina\" | \"print\"): Record<string, unknown> => ({\n [breakpoints.special[value]]: {\n display: \"none !important\",\n },\n }),\n visible: (value: TBreakpointName): Record<string, unknown> => ({\n [breakpoints[value]]: {\n display: \"block !important\",\n },\n display: \"none\",\n }),\n visibleInline: (value: TBreakpointName): Record<string, unknown> => ({\n [breakpoints[value]]: {\n display: \"inline-block !important\",\n },\n display: \"none\",\n }),\n visibleSpecial: (value: \"micro\" | \"retina\" | \"print\"): Record<string, unknown> => ({\n [breakpoints.special[value]]: {\n display: \"block !important\",\n },\n display: \"none\",\n }),\n } satisfies TStitchesUtils,\n});\n\n// Create dark theme after stitches instance\nexport const darkTheme = createTheme(darkThemeConfig);\n\n// Export keyframes with proper return types\nexport const fadeIn = keyframes({\n \"0%\": {\n opacity: 0,\n },\n \"100%\": {\n opacity: 1,\n },\n});\n\nexport const fadeOut = keyframes({\n \"0%\": {\n opacity: 1,\n },\n \"100%\": {\n opacity: 0,\n },\n});\n\n// Modal/Menu animations\nexport const slideInScale = keyframes({\n from: {\n opacity: 0,\n transform: \"scale(0.95)\",\n },\n to: {\n opacity: 1,\n transform: \"scale(1)\",\n },\n});\n\nexport const slideOutScale = keyframes({\n from: {\n opacity: 1,\n transform: \"scale(1)\",\n },\n to: {\n opacity: 0,\n transform: \"scale(0.95)\",\n },\n});\n\n// Drawer slide animations\nexport const slideInUp = keyframes({\n from: {\n transform: \"translateY(100%)\",\n },\n to: {\n transform: \"translateY(0)\",\n },\n});\n\nexport const slideOutDown = keyframes({\n from: {\n transform: \"translateY(0)\",\n },\n to: {\n transform: \"translateY(100%)\",\n },\n});\n\nexport const pulse = keyframes({\n // scale and opacity from 0.7 to 1.3 back to 1\n \"0%\": {\n opacity: 1,\n transform: \"scale(1)\",\n },\n \"50%\": {\n opacity: 0.75,\n transform: \"scale(1.3)\",\n },\n \"100%\": {\n opacity: 1,\n transform: \"scale(1)\",\n },\n});\n\n// Subtle vertical fade+lift used for small surfaces like popovers, lists\nexport const fadeInUp = keyframes({\n from: {\n opacity: 0,\n transform: \"translateY(4px)\",\n },\n to: {\n opacity: 1,\n transform: \"translateY(0)\",\n },\n});\n\nexport const fadeOutDown = keyframes({\n from: {\n opacity: 1,\n transform: \"translateY(0)\",\n },\n to: {\n opacity: 0,\n transform: \"translateY(4px)\",\n },\n});\n\n// Simple content fade for page transitions (supports animation-delay)\nexport const fadeInContent = keyframes({\n from: {\n opacity: 0,\n },\n to: {\n opacity: 1,\n },\n});\n","import { importLibrary, setOptions } from \"@googlemaps/js-api-loader\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\n\n// Track if options have been set globally\nlet optionsInitialized = false;\nlet currentApiKey: string | null = null;\n\n/**\n * Ensures Google Maps API options are set before loading any libraries.\n *\n * @param apiKey - Google Maps API key\n */\nfunction ensureGoogleMapsOptions(apiKey: string): void {\n if (!optionsInitialized || currentApiKey !== apiKey) {\n setOptions({\n key: apiKey,\n v: \"weekly\",\n });\n optionsInitialized = true;\n currentApiKey = apiKey;\n }\n}\n\ninterface UseGoogleMapsOptions {\n apiKey: string;\n libraries?: string[];\n}\n\ninterface UseGoogleMapsReturn<T = unknown> {\n isLoaded: boolean;\n isLoading: boolean;\n error: Error | null;\n library: T | null;\n}\n\n/**\n * Hook to load Google Maps libraries with proper initialization.\n *\n * @param options - Configuration object with apiKey and libraries to load\n * @returns Object containing loading state and loaded libraries\n *\n * @example\n * ```tsx\n * const { isLoaded, library } = useGoogleMaps<google.maps.PlacesLibrary>({\n * apiKey: \"YOUR_API_KEY\",\n * libraries: [\"places\"]\n * });\n * ```\n */\nexport function useGoogleMaps<T = unknown>({\n apiKey,\n libraries = [],\n}: UseGoogleMapsOptions): UseGoogleMapsReturn<T> {\n const [isLoaded, setIsLoaded] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const libraryRef = useRef<T | null>(null);\n\n // Create a stable string representation of libraries for dependency tracking\n const librariesKey = useMemo(() => libraries.join(\",\"), [libraries]);\n\n useEffect(() => {\n if (!apiKey || libraries.length === 0) return;\n\n let isActive = true;\n\n const loadLibraries = async (): Promise<void> => {\n try {\n setIsLoading(true);\n ensureGoogleMapsOptions(apiKey);\n\n // Load the first library as the primary one\n // (for most use cases, components only need one library at a time)\n const loadedLibrary = (await importLibrary(libraries[0])) as T;\n\n if (!isActive) return;\n\n libraryRef.current = loadedLibrary;\n setIsLoaded(true);\n setError(null);\n } catch (err) {\n if (!isActive) return;\n setError(err instanceof Error ? err : new Error(\"Failed to load Google Maps\"));\n setIsLoaded(false);\n } finally {\n if (isActive) {\n setIsLoading(false);\n }\n }\n };\n\n loadLibraries();\n\n return (): void => {\n isActive = false;\n };\n }, [apiKey, libraries, librariesKey]);\n\n return {\n error,\n isLoaded,\n isLoading,\n library: libraryRef.current,\n };\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const MapsStyled = styled(\"div\", {\n height: \"400px\",\n width: \"100%\",\n});\n\nexport default MapsStyled;\n","/**\n * UI Library - Main Entry Point\n *\n * A comprehensive React UI component library built with Stitches CSS-in-JS,\n * featuring a complete design system with dark mode support, responsive utilities,\n * and accessible components.\n *\n * @see README.md for full documentation\n */\n\n// ============================================================================\n// Stitches Configuration & Utilities\n// ============================================================================\n\nexport { css, styled, globalCss, keyframes, theme, darkTheme, getCssText } from \"./stitches.config\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport * from \"./types/components\";\nexport * from \"./types/hooks\";\nexport * from \"./types/stitches\";\n\n// ============================================================================\n// Icons\n// ============================================================================\n\nexport * from \"./icons\";\n\n// ============================================================================\n// Layout Components\n// ============================================================================\n\nexport { default as Stack } from \"./components/Stack\";\nexport { default as View } from \"./components/View\";\nexport { default as Box } from \"./components/Box\";\nexport { default as Divider } from \"./components/Divider\";\n\n// ============================================================================\n// Typography Components\n// ============================================================================\n\nexport { default as Text } from \"./components/Text\";\n\n// ============================================================================\n// Form Components\n// ============================================================================\n\nexport { default as Input } from \"./components/Input\";\nexport { default as Field } from \"./components/Field\";\nexport { default as Form } from \"./components/Form\";\nexport { default as Datepicker } from \"./components/Datepicker\";\nexport { default as Monthpicker } from \"./components/Monthpicker\";\nexport { default as Calendar } from \"./components/Calendar\";\n\n// ============================================================================\n// Interactive Components\n// ============================================================================\n\nexport { default as Button } from \"./components/Button\";\nexport { default as Badge } from \"./components/Badge\";\nexport { default as Menu } from \"./components/Menu\";\nexport { default as Select } from \"./components/Select\";\nexport { default as SelectMulti } from \"./components/Select/SelectMulti\";\n\n// ============================================================================\n// Overlay Components\n// ============================================================================\n\nexport { default as Modal } from \"./components/Modal\";\nexport { default as Drawer } from \"./components/Drawer\";\nexport { default as Popover } from \"./components/Popover\";\n\n// ============================================================================\n// Display Components\n// ============================================================================\n\nexport { default as Avatar } from \"./components/Avatar\";\nexport { default as Accordion } from \"./components/Accordion\";\nexport { default as Progress } from \"./components/Progress\";\nexport { default as Table } from \"./components/Table\";\nexport { default as Tabs } from \"./components/Tabs\";\nexport { default as Loading } from \"./components/Loading\";\nexport { default as LoadingOverlay } from \"./components/Loading/LoadingOverlay\";\nexport { default as Icon } from \"./components/Icon\";\n\n// ============================================================================\n// Utility Components\n// ============================================================================\n\nexport { default as Logo } from \"./components/Logo\";\nexport { default as Gradient } from \"./components/Gradient\";\nexport { default as Image } from \"./components/Image\";\nexport { default as Nodes } from \"./components/Nodes\";\nexport { default as Upload } from \"./components/Upload\";\n\n// ============================================================================\n// Special Components (Google Maps, etc.)\n// ============================================================================\n\nexport { default as Places } from \"./components/Places\";\nexport { default as Maps } from \"./components/Maps\";\n\n// Lazy-loaded Maps for better performance\nimport { lazy } from \"react\";\nexport const MapsLazy = lazy(() => import(\"./components/Maps\"));\n\n// ============================================================================\n// Provider & Theme Components\n// ============================================================================\n\nexport { default as Provider } from \"./components/Provider\";\nexport { default as ProviderToggle } from \"./components/Provider/ProviderToggle\";\n\n// ============================================================================\n// Hooks\n// ============================================================================\n\n// Theme & Styling Hooks\nexport { default as useTheme } from \"./hooks/useTheme\";\nexport { default as useBreakpoints } from \"./hooks/useBreakpoints\";\n\n// UI State Hooks\nexport { default as useCalendar } from \"./hooks/useCalendar\";\nexport { default as useModal } from \"./hooks/useModal\";\nexport { default as useFloatingUI } from \"./hooks/useFloatingUI\";\n\n// Utility Hooks\nexport { default as useDayjs } from \"./hooks/useDayjs\";\nexport { default as useDebounce } from \"./hooks/useDebounce\";\nexport { default as useEventListener } from \"./hooks/useEventListener\";\nexport { default as useLocalStorage } from \"./hooks/useLocalStorage\";\nexport { default as useLocalStorageReadOnly } from \"./hooks/useLocalStorageReadOnly\";\nexport { default as useMountSSR } from \"./hooks/useMountSSR\";\nexport { default as useOutsideClick } from \"./hooks/useOutsideClick\";\nexport { default as useViewport } from \"./hooks/useViewport\";\nexport { default as useWindowDimensions } from \"./hooks/useWindowDimensions\";\n\n// Google Maps Hooks\nexport { useGoogleMaps } from \"./hooks/useGoogleMaps\";\n","import type { ImageProps } from \"next/image\";\n\nimport { type CSS } from \"@stitches/react\";\nimport {\n ReactNode,\n ComponentPropsWithRef,\n ComponentPropsWithoutRef,\n MouseEventHandler,\n type JSX,\n CSSProperties,\n ReactElement,\n} from \"react\";\n\nimport { TextSizes } from \"../components/Text/styles\";\nimport { spacings } from \"../stitches.config\";\n\n/**\n * Avatar component props\n *\n * @example\n * ```tsx\n * <Avatar fallback=\"JD\" src=\"/avatar.jpg\" width={48} />\n * <Avatar fallback=\"AB\" theme=\"auto\" /> // Auto-assigns color based on first letter\n * <Avatar fallback=\"CD\" theme=\"blue\" />\n * ```\n */\nexport interface IAvatar {\n /** Alternative text for the avatar image */\n alt?: string;\n /** Visual theme/color scheme for the avatar. \"auto\" determines color from fallback text */\n theme?: \"default\" | \"blue\" | \"green\" | \"orange\" | \"red\" | \"violet\" | \"yellow\" | \"pink\" | \"auto\";\n /** Custom CSS styles */\n css?: CSS;\n /** Fallback text to display when image is not available */\n fallback?: string;\n /** Source URL for the avatar image */\n image?: ReactNode;\n /** Width of the avatar in pixels */\n width?: number;\n}\n\n/**\n * Base Datepicker props for date selection interface\n *\n * @example\n * ```tsx\n * <Datepicker\n * mode=\"range\"\n * minDate=\"2024-01-01\"\n * maxDate=\"2024-12-31\"\n * onSelection={(dates) => console.log(dates)}\n * timezone=\"Australia/Melbourne\"\n * />\n * ```\n */\nexport interface IDatepickerBase {\n /** Array of blocked/unavailable dates in YYYY-MM-DD format */\n blockedDates?: string[];\n /** Custom CSS styles */\n css?: CSS;\n /** Description text shown below header */\n description?: string;\n /** Initially selected end date (YYYY-MM-DD) */\n endDate?: string;\n /** Maximum selectable date (YYYY-MM-DD) */\n maxDate?: string;\n /** Maximum range length in days (range mode only) */\n maxLength?: number;\n /** Minimum selectable date (YYYY-MM-DD) */\n minDate?: string;\n /** Minimum range length in days (range mode only) */\n minLength?: number;\n /** Selection mode: 'single' for single date, 'range' for date range */\n mode?: \"range\" | \"single\";\n /** Callback when date(s) are selected */\n onSelection: (dates: { endDate: string; startDate: string }) => void;\n /** Callback when view month/year changes */\n onViewChange?: (dates: { endDate: string; startDate: string }) => void;\n /** Initially selected start date (YYYY-MM-DD) */\n startDate?: string;\n /** Timezone for date calculations (e.g., \"Australia/Melbourne\") */\n timezone?: string;\n}\n\n/**\n * Calendar component props - month view calendar for property management\n *\n * @example\n * ```tsx\n * <Calendar\n * month=\"2025-11\"\n * entries={calendarData}\n * onAvailableSelection={(date, data) => console.log(\"Available:\", date)}\n * onBookingSelection={(booking) => console.log(\"Booking:\", booking)}\n * onEventSelection={(event) => console.log(\"Event:\", event)}\n * getOtaLogo={(otaName) => <img src={`/logos/${otaName}.svg`} />}\n * timezone=\"Australia/Melbourne\"\n * />\n * ```\n */\nexport interface ICalendar {\n /** Calendar data entries (array format from API) */\n entries: Array<{\n /** Airbnb minimum stay requirement */\n airbnb_min_stay?: number;\n /** Airbnb nightly rate */\n airbnb_rate?: number;\n /** Total available units */\n availability?: number;\n /** Blocked reason if applicable */\n blocked_reason?: string | null;\n /** Array of bookings for this date */\n booking_details?: Array<{\n id: string; // database UUID (required)\n booking_id: string; // OTA booking ID\n check_in_date: string;\n check_out_date: string;\n guest_name: string;\n ota_name?: string;\n }>;\n /** Date in YYYY-MM-DD format */\n day: string;\n /** Array of events for this date */\n events?: Array<{\n end_date: string;\n event_id: string;\n start_date: string;\n title: string;\n }>;\n /** Whether day has a booking */\n has_booking?: boolean;\n /** Whether day has a check-in */\n has_check_in?: boolean;\n /** Whether day has a check-out */\n has_check_out?: boolean;\n /** Whether day is available for booking */\n is_available?: boolean;\n /** Whether day is blocked */\n is_blocked?: boolean;\n /** Minimum stay requirement */\n min_stay?: number;\n /** Nightly rate */\n rate?: number;\n /** Wheelhouse attribution breakdown */\n wh_attribution?: {\n availability?: number;\n custom_weekend?: number;\n historical_anchoring?: number;\n local_demand?: number;\n occupancy_pacing?: number;\n restriction?: number;\n scarcity?: number;\n seasonality?: number;\n time?: number;\n user_adjustment?: number;\n };\n /** Wheelhouse base price */\n wh_base_price?: number;\n /** Wheelhouse price change percentage */\n wh_price_change_pct?: number;\n /** Wheelhouse recommended price */\n wh_recommended_price?: number;\n }>;\n /** Function to render OTA logo for booking badges */\n getOtaLogo?: (otaName: string) => JSX.Element | null;\n /** Month to display in YYYY-MM format */\n month: string;\n /** Callback when an available day is selected */\n onAvailableSelection?: (date: string, data: ICalendar[\"entries\"][number]) => void;\n /** Callback when a blocked day is selected */\n onBlockSelection?: (date: string, data: ICalendar[\"entries\"][number]) => void;\n /** Callback when a booking is selected */\n onBookingSelection?: (\n booking: NonNullable<ICalendar[\"entries\"][number][\"booking_details\"]>[number],\n ) => void;\n /** Callback when an event is selected */\n onEventSelection?: (event: NonNullable<ICalendar[\"entries\"][number][\"events\"]>[number]) => void;\n /** Set of selected dates in YYYY-MM-DD format */\n selectedDates?: Set<string>;\n /** Timezone for date calculations (e.g., \"Australia/Melbourne\") */\n timezone?: string;\n}\n\n/**\n * Datepicker component props - date picker in a popover\n *\n * @example\n * ```tsx\n * <Datepicker\n * mode=\"range\"\n * minDate=\"2024-01-01\"\n * maxDate=\"2024-12-31\"\n * onSelection={(dates) => console.log(dates)}\n * trigger={<Button>Select dates</Button>}\n * />\n * ```\n */\nexport interface IDatepicker extends Omit<IDatepickerBase, \"css\"> {\n /** Trigger element */\n trigger: ReactNode;\n /** Custom CSS styles for the trigger */\n triggerCSS?: CSS;\n /** Custom CSS styles for the wrapper */\n wrapperCSS?: CSS;\n}\n\n/**\n * Badge component props - displays small status or informational labels\n *\n * @example\n * ```tsx\n * <Badge theme=\"blue\" icon={<CheckIcon />}>\n * Active\n * </Badge>\n * ```\n */\nexport interface IBadge extends ComponentPropsWithoutRef<\"span\"> {\n /** Whether the badge should take full width */\n block?: boolean;\n /** Content to display inside the badge */\n children?: ReactNode;\n /** Whether the badge can be closed/dismissed */\n closable?: boolean;\n /** Text or number to display in the badge */\n copy?: string | number | undefined;\n /** Custom CSS styles */\n css?: CSS;\n /** Icon to display alongside the badge content */\n icon?: ReactNode;\n /** Position of the icon relative to the content */\n iconPosition?: \"left\" | \"right\";\n /** Inline spacing around the badge */\n inline?: keyof typeof spacings | \"auto\";\n /** Whether the badge should appear as a clickable link */\n link?: boolean;\n /** Whether to show a loading state */\n loading?: boolean;\n /** Whether to show a small yellow dot indicator in the top right */\n new?: boolean;\n /** Click handler for interactive badges */\n onClick?: MouseEventHandler<HTMLSpanElement>;\n /** Whether to render a smaller version of the badge */\n small?: boolean;\n /** Visual theme/color scheme for the badge */\n theme?:\n | \"default\"\n | \"solid\"\n | \"border\"\n | \"green\"\n | \"blue\"\n | \"orange\"\n | \"red\"\n | \"yellow\"\n | \"violet\"\n | \"pink\";\n}\n\n/**\n * Box component props - versatile container with optional image, header, and footer\n *\n * @example\n * ```tsx\n * <Box\n * theme=\"solid\"\n * header={<Text as=\"h3\">Card Title</Text>}\n * image=\"/hero.jpg\"\n * expandable\n * onClick={() => console.log('Box clicked')}\n * >\n * Card content goes here\n * </Box>\n * ```\n */\nexport interface IBox {\n /** Content to display inside the box */\n children: ReactNode;\n /** Whether the box can be closed/dismissed */\n closable?: boolean;\n /** Custom CSS styles */\n css?: CSS;\n /** HTML id attribute for the box */\n id?: string;\n /** Call-to-action text for the box */\n cta?: string;\n /** Whether to enable hover interaction styles explicitly */\n hover?: boolean;\n /** Whether the box can be expanded/collapsed */\n expandable?: boolean;\n /** Height when expanded in pixels */\n expandableHeight?: number;\n /** Footer content to display at the bottom */\n footer?: ReactNode;\n /** Header content to display at the top */\n header?: ReactNode;\n /** Image to display in the box. Pass a URL string or a custom React element */\n image?: ReactNode;\n /** Call-to-action text for the image */\n imageCTA?: string;\n /** How the image should fit within its container */\n imageFit?: CSSProperties[\"objectFit\"];\n /** Height of the image */\n imageHeight?: string;\n /** Position of the image within its container */\n imagePosition?: CSSProperties[\"objectPosition\"];\n /** Target for image link */\n imageTarget?: \"_blank\" | \"_self\";\n /** Whether to show a loading state */\n loading?: boolean;\n /** Whether to render with minimal styling */\n minimal?: boolean;\n /** Click handler for the box */\n onClick?: MouseEventHandler<HTMLDivElement>;\n /** ARIA role */\n role?: string;\n /** Keyboard tab order */\n tabIndex?: number;\n /** Whether to render a smaller version */\n small?: boolean;\n /** Visual theme/color scheme for the box */\n theme?:\n | \"default\"\n | \"border\"\n | \"solid\"\n | \"fill\"\n | \"blue\"\n | \"green\"\n | \"orange\"\n | \"red\"\n | \"violet\"\n | \"yellow\"\n | \"pink\";\n}\n\n/**\n * Image component props - Next.js Image wrapper with custom styling\n *\n * @example\n * ```tsx\n * <Image\n * src=\"/photo.jpg\"\n * alt=\"Description\"\n * fill\n * fillFit=\"cover\"\n * borderRadius=\"default\"\n * />\n * ```\n */\nexport interface IImage extends Omit<ImageProps, \"style\"> {\n /** Border radius size */\n borderRadius?: keyof typeof spacings;\n /** Custom CSS styles */\n css?: CSS;\n /** Whether image should fill container */\n fill?: boolean;\n /** Object fit value when fill is true */\n fillFit?: CSSProperties[\"objectFit\"];\n /** Container height when fill is true */\n fillHeight?: string;\n /** Object position value */\n fillPosition?: string;\n /** Image quality (1-100) */\n quality?: number;\n}\n\n/**\n * Button component props - interactive element for user actions\n *\n * @example\n * ```tsx\n * <Button theme=\"solid\" icon={<PlusIcon />} loading={isSubmitting}>\n * Add Item\n * </Button>\n * ```\n */\nexport interface IButton extends ComponentPropsWithoutRef<\"button\"> {\n /** Whether the button should take full width */\n block?: boolean;\n /** Custom CSS styles */\n css?: CSS;\n /** Whether the button links to an external URL */\n external?: boolean;\n /** Icon to display alongside the button text */\n icon?: ReactNode;\n /** Position of the icon relative to the text */\n iconPosition?: \"left\" | \"right\";\n /** Inline spacing around the button */\n inline?: keyof typeof spacings | \"auto\";\n /** Whether to show a loading state with spinner */\n loading?: boolean;\n /** Whether to show a small yellow dot indicator in the top right */\n new?: boolean;\n /** Whether to render a smaller version of the button */\n small?: boolean;\n /** Visual theme/style variant for the button */\n theme?: \"default\" | \"fill\" | \"solid\" | \"minimal\" | \"warning\" | \"success\" | \"danger\";\n}\n\n/**\n * Drawer component props - slide-out panel that overlays content\n *\n * @example\n * ```tsx\n * <Drawer\n * title=\"Settings\"\n * trigger={<Button>Open Drawer</Button>}\n * small\n * >\n * <Text>Drawer content here</Text>\n * </Drawer>\n * ```\n */\nexport interface IDrawer {\n /** Content to display inside the drawer - can be ReactNode or a function that receives the close function */\n children: ReactNode | ((close: () => void) => ReactNode);\n /** Custom CSS styles for the drawer */\n css?: CSS;\n /** Whether the drawer trigger is disabled */\n disabled?: boolean;\n /** Whether to render a smaller version of the drawer */\n small?: boolean;\n /** Title text displayed in the drawer header */\n title: string;\n /** Element that triggers the drawer to open */\n trigger?: ReactNode;\n /** Custom CSS styles for the trigger element */\n triggerCSS?: CSS;\n /** Custom CSS styles for the drawer wrapper */\n wrapperCSS?: CSS;\n}\n\n/**\n * Modal component props - centered overlay dialog\n *\n * @example\n * ```tsx\n * <Modal\n * title=\"Confirm Action\"\n * trigger={<Button>Open Modal</Button>}\n * small\n * >\n * <Text>Are you sure you want to continue?</Text>\n * </Modal>\n * ```\n */\nexport interface IModal {\n /** Content to display inside the modal - can be ReactNode or a function that receives the close function */\n children: ReactNode | ((close: () => void) => ReactNode);\n /** Custom CSS styles for the modal */\n css?: CSS;\n /** Whether the modal trigger is disabled */\n disabled?: boolean;\n /** Footer content (typically actions/buttons) - can be ReactNode or a function that receives the close function */\n footer?: ReactNode | ((close: () => void) => ReactNode);\n /** Whether the modal is open (controlled mode) - when provided, modal is fully controlled */\n isOpen?: boolean;\n /** Callback function called when modal should close (required when isOpen is provided) */\n onClose?: () => void;\n /** Whether to render a smaller version of the modal */\n small?: boolean;\n /** Visual theme/color scheme for the modal header */\n theme?: \"default\" | \"green\" | \"blue\" | \"orange\" | \"red\" | \"violet\" | \"yellow\";\n /** Title text or element displayed in the modal header */\n title: ReactNode;\n /** Element that triggers the modal to open */\n trigger?: ReactNode;\n /** Custom CSS styles for the trigger element */\n triggerCSS?: CSS;\n /** Custom CSS styles for the modal wrapper */\n wrapperCSS?: CSS;\n}\n\n/**\n * Divider component props - visual separator line\n *\n * @example\n * ```tsx\n * <Divider top=\"large\" bottom=\"medium\" />\n * ```\n */\nexport interface IDivider {\n /** Bottom margin/spacing */\n bottom?: keyof typeof spacings;\n /** Custom CSS styles */\n css?: CSS;\n /** Top margin/spacing */\n top?: keyof typeof spacings;\n}\n\n/**\n * Field component props - multi-line textarea input with validation\n *\n * @example\n * ```tsx\n * <Field\n * name=\"description\"\n * placeholder=\"Enter description...\"\n * rows={4}\n * error={hasError}\n * errorMessage=\"Description is required\"\n * submitFunction={handleSubmit}\n * />\n * ```\n */\nexport interface IField extends ComponentPropsWithRef<\"textarea\"> {\n /** Whether to show a copy button for the field value */\n copy?: boolean;\n /** Custom CSS styles */\n css?: CSS;\n /** Custom action buttons to display alongside built-in actions */\n customActions?: ReactNode;\n /** Whether the field is in an error state */\n error?: boolean;\n /** Error message to display below the field */\n errorMessage?: string;\n /** HTML id attribute for the field */\n id?: string;\n /** Whether to show a loading state */\n loading?: boolean;\n /** Name attribute for the field (required) */\n name: string;\n /** Whether to show a reset button */\n reset?: boolean;\n /** Function to call when reset button is clicked */\n resetFunction?: () => void;\n /** Text for the cancel button */\n cancel?: string;\n /** Function to call when cancel button is clicked */\n cancelFunction?: () => void;\n /** Text for the submit button */\n submit?: string;\n /** Function to call when submit action is triggered */\n submitFunction?: (value: string) => void | Promise<void> | unknown;\n /** Function to validate field value before submit */\n submitValid?: (value: string) => boolean;\n /** Whether to listen for Enter key to submit (disables Enter for new lines) */\n listen?: boolean;\n /** Whether the field is in a success state */\n success?: boolean;\n /** Success message to display below the field */\n successMessage?: string;\n /** Whether the field is in a warning state */\n warning?: boolean;\n /** Warning message to display below the field */\n warningMessage?: string;\n /** Width of the field */\n width?: number | string;\n}\n\n/**\n * Form component props - form wrapper with validation and submission handling\n *\n * @example\n * // Boolean validity and arg-less submission (backward compatible)\n * ```tsx\n * <Form\n * name=\"userForm\"\n * submit=\"Submit\"\n * submitValid={isFormValid}\n * submitFunction={() => doSubmit()}\n * >\n * <Input name=\"email\" type=\"email\" />\n * </Form>\n * ```\n *\n * @example\n * // Function validity and data-aware submission\n * ```tsx\n * <Form\n * name=\"userForm\"\n * submit=\"Save\"\n * submitValid={(data) => Boolean(data.email)}\n * submitFunction={(data) => saveEmail(String(data.email))}\n * >\n * <Input name=\"email\" type=\"email\" />\n * </Form>\n * ```\n */\nexport interface IForm extends ComponentPropsWithRef<\"form\"> {\n /** Form content and input elements */\n children: ReactNode;\n /** Custom CSS styles */\n css?: CSS;\n /** Whether the form is disabled */\n disabled?: boolean;\n /** HTML id attribute for the form */\n id?: string;\n /** Whether to listen for form validation events */\n listen?: boolean;\n /** Whether the form is in a loading/submitting state */\n loading?: boolean;\n /** Name attribute for the form (required) */\n name: string;\n /** Text for the submit button */\n submit?: string;\n /**\n * Function to call when form is submitted.\n * If it declares parameters, it will receive a plain object of form data (name/value pairs).\n * If it declares no parameters, it's called with no args (backward compatible).\n */\n submitFunction:\n | ((data: Record<string, FormDataEntryValue>) => void | Promise<void> | unknown)\n | (() => void | Promise<void> | unknown);\n /**\n * Form validity. Can be a boolean or a function that receives current form data and returns a boolean.\n */\n submitValid?: boolean | ((data: Record<string, FormDataEntryValue>) => boolean);\n}\n\n/**\n * Image component props - enhanced Next.js Image with additional styling options\n *\n * @example\n * ```tsx\n * <Image\n * src=\"/hero.jpg\"\n * alt=\"Hero image\"\n * fill\n * fillFit=\"cover\"\n * />\n * ```\n */\n// Image component removed; use native <img> with props on containers instead\n\n/**\n * Input component props - form input field with validation and actions\n *\n * @example\n * ```tsx\n * <Input\n * name=\"email\"\n * type=\"email\"\n * placeholder=\"Enter your email\"\n * error={hasError}\n * errorMessage=\"Please enter a valid email\"\n * submitFunction={handleSubmit}\n * />\n * ```\n */\nexport interface IInput extends ComponentPropsWithRef<\"input\"> {\n /** Whether to show a copy button for the input value */\n copy?: boolean;\n /** Custom CSS styles */\n css?: CSS;\n /** Custom action buttons to display alongside built-in actions */\n customActions?: ReactNode;\n /** Whether the input is in an error state */\n error?: boolean;\n /** Error message to display below the input */\n errorMessage?: string;\n /** HTML id attribute for the input */\n id?: string;\n /** Whether to listen for form validation events */\n listen?: boolean;\n /** Whether to show a loading state */\n loading?: boolean;\n /** Name attribute for the input (required) */\n name: string;\n /** Whether to show a reset button */\n reset?: boolean;\n /** Function to call when reset button is clicked */\n resetFunction?: () => void;\n /** Whether to show/hide toggle for password inputs */\n reveal?: boolean;\n /** Text for the submit button */\n submit?: string;\n /** Function to call when submit action is triggered */\n submitFunction?: (value: string) => void | Promise<void> | unknown;\n /** Function to validate input value before submit */\n submitValid?: (value: string) => boolean;\n /** Whether the input is in a success state */\n success?: boolean;\n /** Success message to display below the input */\n successMessage?: string;\n /** Whether the input is in a warning state */\n warning?: boolean;\n /** Warning message to display below the input */\n warningMessage?: string;\n /** Width of the input field */\n width?: number | string;\n}\n\n/**\n * Places component props - Google Places autocomplete input with dropdown\n *\n * @example\n * ```tsx\n * <Places\n * name=\"location\"\n * placeholder=\"Search for places...\"\n * onPlaceSelect={(place) => console.log('Selected place:', place)}\n * apiKey={process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY}\n * />\n * ```\n */\nexport interface IPlaces extends Omit<\n IInput,\n \"submitFunction\" | \"submit\" | \"reveal\" | \"copy\" | \"reset\"\n> {\n /** Google Maps API key for Places API */\n apiKey: string;\n /** Callback when a place is selected from the dropdown */\n onPlaceSelect?: (place: {\n description: string;\n place_id: string;\n structured_formatting?: {\n main_text: string;\n secondary_text: string;\n };\n types: string[];\n }) => void;\n /** Country restrictions (ISO 3166-1 Alpha-2 country codes) */\n countries?: string[];\n /** Types of places to search for */\n types?: string[];\n /** Custom CSS styles for the dropdown */\n dropdownCSS?: CSS;\n /** Width of the dropdown */\n dropdownWidth?: number | string;\n /** Height of the dropdown */\n dropdownHeight?: number | string;\n}\n\n/**\n * Maps component props - simple Google Maps display\n *\n * @example\n * ```tsx\n * <Maps\n * apiKey={process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY}\n * center={{ lat: 40.7128, lng: -74.0060 }}\n * height=\"400px\"\n * zoom={12}\n * />\n * // Or with address\n * <Maps\n * apiKey={apiKey}\n * center=\"New York, NY\"\n * height=\"400px\"\n * />\n * // Shows loading when no center provided\n * <Maps apiKey={apiKey} height=\"400px\" />\n * ```\n */\nexport interface IMaps {\n /** Google Maps API key for Maps API */\n apiKey: string;\n /** Height of the map */\n height?: string | number;\n /** Custom CSS styles */\n css?: CSS;\n /** Map center - coordinates object or address string. Shows loading if not provided. */\n center?: { lat: number; lng: number } | string;\n /** Map zoom level */\n zoom?: number;\n /** Map type */\n mapType?: \"roadmap\" | \"satellite\" | \"hybrid\" | \"terrain\";\n /** Optional accessible label for the map region */\n ariaLabel?: string;\n}\n\n/**\n * Loading component props - animated loading spinner\n *\n * @example\n * ```tsx\n * <Loading theme=\"colored\" stroke=\"blue\" />\n * ```\n */\nexport interface ILoading {\n /** Custom CSS styles */\n css?: CSS;\n /** Width of the loading component */\n width?: number | string;\n}\n\n/**\n * LoadingOverlay component props - full-screen loading overlay with message\n *\n * @example\n * ```tsx\n * <LoadingOverlay title=\"Saving changes...\" />\n * ```\n */\nexport interface ILoadingOverlay extends ILoading {\n /** Title/message to display with the loading spinner */\n title: string;\n}\n\n/**\n * Menu component props - dropdown menu with nested options\n *\n * @example\n * ```tsx\n * <Menu\n * trigger={<Button>Menu</Button>}\n * options={[\n * { label: \"Edit\", value: \"edit\", icon: <EditIcon /> },\n * { label: \"Delete\", value: \"delete\", icon: <DeleteIcon /> }\n * ]}\n * onSelection={(value, label) => console.log(value, label)}\n * />\n * ```\n */\nexport interface IMenu {\n /** Accessible label for the menu container */\n ariaLabel?: string;\n /** Additional content to render in the menu - can be ReactNode or a function that receives the close function */\n children?: ReactNode | ((close: () => void) => ReactNode);\n /** Custom CSS styles */\n css?: CSS;\n /** Initially selected option value */\n initial?: string;\n /** Callback when menu option is selected */\n onSelection?: (value: string, label: string) => void;\n /** Array of menu options */\n options: Array<{\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n label: string;\n value: string;\n }>;\n /** Element that triggers the menu */\n trigger: ReactNode;\n /** Custom CSS styles for the trigger */\n triggerCSS?: CSS;\n /** Custom CSS styles for the menu wrapper */\n wrapperCSS?: CSS;\n /** Logo to display in the menu header */\n logo?: ReactNode;\n}\n\n/**\n * Popover usage now accepts ariaLabel for accessible description of the region\n *\n * @example\n * ```tsx\n * <Popover ariaLabel=\"More info\" trigger={<Button>Info</Button>}>\n * <Text>Details here</Text>\n * </Popover>\n * ```\n */\n\n/**\n * Popover component props - floating content overlay\n *\n * @example\n * ```tsx\n * <Popover\n * trigger={<Button>Show Info</Button>}\n * minimal\n * >\n * <Text>Additional information here</Text>\n * </Popover>\n * ```\n */\nexport interface IPopover {\n /** Accessible label for the popover content region */\n ariaLabel?: string;\n /** Content to display in the popover - can be ReactNode or a function that receives the close function */\n children: ReactNode | ((close: () => void) => ReactNode);\n /** Custom CSS styles */\n css?: CSS;\n /** Whether the popover trigger is disabled */\n disabled?: boolean;\n /** Whether to use minimal styling */\n minimal?: boolean;\n /** Whether to render a smaller popover */\n small?: boolean;\n /** Element that triggers the popover */\n trigger: ReactNode;\n /** Custom CSS styles for the trigger */\n triggerCSS?: CSS;\n /** Custom CSS styles for the popover wrapper */\n wrapperCSS?: CSS;\n}\n\n/**\n * Provider component props - theme and context provider for the UI library\n *\n * @example\n * ```tsx\n * <Provider dark={isDarkMode}>\n * <App />\n * </Provider>\n * ```\n */\nexport interface IProvider {\n /** Application content */\n children: ReactNode;\n /** Custom CSS styles */\n css?: CSS;\n /** Whether to use dark theme */\n dark?: boolean;\n}\n\n/**\n * Select component props - dropdown selection with filtering and positioning options\n *\n * @example\n * ```tsx\n * <Select\n * trigger={<Button>Select Option</Button>}\n * options={[\n * { label: \"Option 1\", value: \"opt1\", icon: <Icon1 /> },\n * { label: \"Option 2\", value: \"opt2\", icon: <Icon2 /> }\n * ]}\n * onSelection={(value, label) => console.log(value, label)}\n * filter\n * horizontal=\"left\"\n * />\n * ```\n */\nexport interface ISelect {\n /** Custom CSS styles */\n css?: CSS;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Whether to show a filter/search input */\n filter?: boolean;\n /** Height of the dropdown */\n height?: number | string;\n /** Horizontal alignment of the dropdown */\n horizontal?: \"left\" | \"right\" | \"center\";\n /** Initially selected option value */\n initial?: string;\n /** Label for the select component */\n label?: string;\n /** Whether this is the last select in a group (affects styling) */\n last?: boolean;\n /** Whether to show a loading state */\n loading?: boolean;\n /** Callback when an option is selected */\n onSelection?: (value: string, label: string) => void;\n /** Callback when sort order toggle is clicked (for sort selects) */\n onSortOrderToggle?: () => void;\n /** Array of selectable options */\n options?: Array<{\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n key?: string;\n label: string;\n value: string;\n }>;\n /** Current sort order ('asc' or 'desc'), enables sort order toggle behavior */\n sortOrder?: \"asc\" | \"desc\";\n /** Element that triggers the dropdown */\n trigger: ReactNode;\n /** Custom CSS styles for the trigger */\n triggerCSS?: CSS;\n /** Vertical positioning of the dropdown */\n vertical?: \"top\" | \"bottom\";\n /** Width of the dropdown */\n width?: number | string;\n /** Custom CSS styles for the dropdown wrapper */\n wrapperCSS?: CSS;\n}\n\n/**\n * SelectMulti component props - multi-selection dropdown with limit and reset options\n *\n * @example\n * ```tsx\n * <SelectMulti\n * trigger={<Button>Select Multiple</Button>}\n * options={[\n * { label: \"Tag 1\", value: \"tag1\" },\n * { label: \"Tag 2\", value: \"tag2\" },\n * { label: \"Tag 3\", value: \"tag3\" }\n * ]}\n * onSelection={(selections) => console.log(selections)}\n * limit={3}\n * reset\n * />\n * ```\n */\nexport interface ISelectMulti extends Omit<ISelect, \"onSelection\" | \"initial\" | \"last\"> {\n /** Initially selected options */\n initial?: Array<{ label: string; value: string }>;\n /** Maximum number of selections allowed */\n limit?: number;\n /** Callback when selections change */\n onSelection?: (value: Array<{ label: string; value: string }>) => void;\n /** Whether to show a reset/clear all button */\n reset?: boolean;\n}\n\n/**\n * Stack component props - responsive layout container with flexible spacing and alignment\n *\n * @example\n * ```tsx\n * <Stack\n * direction=\"column\"\n * align=\"center\"\n * width={80}\n * widthPhone={100}\n * top=\"large\"\n * bottom=\"medium\"\n * onClick={() => console.log('Stack clicked')}\n * >\n * <Text>Item 1</Text>\n * <Text>Item 2</Text>\n * </Stack>\n * ```\n */\nexport interface IStack {\n /** Text alignment within the stack */\n align?: CSSProperties[\"textAlign\"];\n /** HTML element type to render as */\n as?: keyof JSX.IntrinsicElements;\n /** Bottom margin/spacing */\n bottom?: keyof typeof spacings;\n /** Content to display in the stack */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** Custom CSS styles */\n css?: CSS;\n /** Direction of the flex layout */\n direction?: \"row\" | \"column\";\n /** Whether to remove text margins and align items */\n inline?: boolean;\n /** Whether to use minimal styling */\n minimal?: boolean;\n /** Click handler for the stack */\n onClick?: () => void;\n /** Top margin/spacing */\n top?: keyof typeof spacings;\n /** Default width percentage */\n width?: number;\n /** Responsive width percentages */\n widthResponsive?: {\n desktopX?: number;\n laptopX?: number;\n phone?: number;\n tabletX?: number;\n wide?: number;\n };\n /** Main axis alignment */\n justify?: CSSProperties[\"justifyContent\"];\n /** Gap between items */\n gap?: keyof typeof spacings;\n /** Whether to wrap items */\n wrap?: \"wrap\" | \"nowrap\" | \"wrap-reverse\";\n /** HTML id attribute */\n id?: string;\n /** Whether to use dark theme */\n inverted?: boolean;\n /** Cross-axis alignment */\n alignItems?: CSSProperties[\"alignItems\"];\n /** Content alignment */\n alignContent?: CSSProperties[\"alignContent\"];\n /** Flex basis */\n basis?: CSSProperties[\"flexBasis\"];\n /** Flex grow */\n grow?: CSSProperties[\"flexGrow\"];\n /** Flex shrink */\n shrink?: CSSProperties[\"flexShrink\"];\n /** Flex order */\n order?: CSSProperties[\"order\"];\n}\n\n/**\n * Progress component props - minimalist horizontal progress bar\n *\n * @example\n * ```tsx\n * <Progress value={75} max={100} theme=\"success\" showLabel />\n * <Progress value={30} theme=\"warning\" label=\"Loading...\" />\n * ```\n */\nexport interface IProgress {\n /** Custom CSS styles */\n css?: CSS;\n /** Custom label text (overrides percentage) */\n label?: string;\n /** Maximum value for progress calculation */\n max?: number;\n /** Whether to show percentage label */\n showLabel?: boolean;\n /** Size variant of the progress bar */\n size?: \"small\" | \"medium\" | \"large\";\n /** Color theme of the progress bar */\n theme?: \"default\" | \"green\" | \"blue\" | \"orange\" | \"red\" | \"yellow\" | \"violet\";\n /** Progress variant - linear bar or radial circle */\n variant?: \"linear\" | \"radial\";\n /** Current progress value */\n value?: number;\n}\n\n/**\n * Table component props - data table with sorting, pagination, and nested rows\n *\n * @example\n * ```tsx\n * <Table\n * columns={[\n * { key: \"name\", label: \"Name\", sortable: true },\n * { key: \"email\", label: \"Email\", align: \"left\" }\n * ]}\n * rows={[\n * { id: \"1\", cells: { name: \"John\", email: \"john@example.com\" } },\n * { id: \"2\", cells: { name: \"Jane\", email: \"jane@example.com\" } }\n * ]}\n * pagination\n * />\n * ```\n */\nexport interface ITable {\n /** Column definitions with keys, labels, and options */\n columns: Array<{\n key: string;\n label: string;\n align?: \"left\" | \"center\" | \"right\";\n width?: string;\n sortable?: boolean;\n }>;\n /** Row data with cells mapped to column keys */\n rows: Array<{\n id: string;\n cells: Record<string, ReactNode>;\n subRows?: Array<{\n id: string;\n cells: Record<string, ReactNode>;\n }>;\n }>;\n /** Custom CSS styles */\n css?: CSS;\n /** Error message to display */\n error?: string;\n /** Whether the table is in a loading state */\n loading?: boolean;\n /** Whether to show pagination controls */\n pagination?: boolean;\n /** Whether to enable keyboard navigation */\n kbd?: boolean;\n}\n\n/**\n * Text component props - versatile text element with styling and link options\n *\n * @example\n * ```tsx\n * <Text as=\"h2\" highlight=\"blue\" href=\"/link\" target=\"_blank\">\n * This is a highlighted heading that links somewhere\n * </Text>\n * ```\n */\nexport interface IText extends ComponentPropsWithRef<\"p\"> {\n /** Whether to use accent styling */\n accent?: boolean;\n /** HTML element type and text size */\n as?: keyof typeof TextSizes;\n /** Whether to use balanced text wrapping */\n balanced?: boolean;\n /** Bottom margin/spacing */\n bottom?: keyof typeof spacings;\n /** Text content */\n children: ReactNode;\n /** Custom CSS styles */\n css?: CSS;\n /** Whether to apply hero gradient styling */\n hero?: boolean;\n /** Highlight color theme */\n highlight?: \"yellow\" | \"default\";\n /** URL for link functionality */\n href?: string;\n /** Inline spacing around the text */\n inline?: keyof typeof spacings | \"auto\";\n /** Link styling variant */\n link?: \"minimal\" | \"default\";\n /** Whether to use muted styling with default opacity */\n muted?: boolean;\n /** Override the default size from 'as' prop */\n override?: keyof typeof TextSizes;\n /** Relationship attribute for links */\n rel?: string;\n /** Link target */\n target?: \"_blank\" | \"_self\";\n /** Top margin/spacing */\n top?: keyof typeof spacings;\n /** Number of lines to truncate text to (1-4) */\n truncate?: 1 | 2 | 3 | 4;\n}\n\n/**\n * Toast notification controller props - configuration for the ToastController component\n *\n * @example\n * ```tsx\n * <ToastController\n * position=\"top-right\"\n * toastOptions={{\n * duration: 4000,\n * style: { background: \"#333\", color: \"#fff\" }\n * }}\n * />\n * ```\n */\nexport interface IToast {\n /** Position where toasts appear on screen */\n position?:\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n /** Configuration options for individual toasts */\n toastOptions?: {\n /** Duration in milliseconds before auto-dismiss */\n duration?: number;\n /** Custom styling for toast notifications */\n style?: CSSProperties;\n /** Custom class name for toasts */\n className?: string;\n };\n /** Additional props passed to the underlying Toaster component */\n [key: string]: unknown;\n}\n\n/**\n * View component props - main layout container\n *\n * @example\n * ```tsx\n * <View container top=\"large\" bottom=\"large\">\n * <Text as=\"h1\">Welcome to our app</Text>\n * </View>\n * ```\n */\nexport interface IView {\n /** Whether this is an app-level view */\n app?: boolean;\n /** HTML element type to render as */\n as?: keyof JSX.IntrinsicElements;\n /** Bottom margin/spacing */\n bottom?: keyof typeof spacings;\n /** Content to display in the view */\n children: ReactNode;\n /** Whether to use container width constraints */\n container?: boolean;\n /** Custom CSS styles */\n css?: CSS;\n /** Whether to display hero gradient background with logo */\n hero?: boolean;\n /** HTML id attribute */\n id?: string;\n /** Whether to invert colors */\n inverted?: boolean;\n /** Top margin/spacing */\n top?: keyof typeof spacings;\n}\n\n/**\n * Icon component props - wrapper for Phosphor icons with consistent styling\n *\n * @example\n * ```tsx\n * <Icon icon={<ArrowRight />} forceColor=\"blue\" forceSize={24} inline=\"small\" weight=\"duotone\" />\n * ```\n */\nexport interface IIcon extends ComponentPropsWithoutRef<\"span\"> {\n /** Enable card wrapper with double-border Medusa effect */\n card?: boolean;\n /** Card size variant (only when card=true) */\n cardSize?: \"small\" | \"default\" | \"large\";\n /** Custom CSS styles */\n css?: CSS;\n /** Force a specific size in pixels */\n forceSize?: number;\n /** The icon element to render (required) */\n icon: ReactElement;\n /** Inline spacing around the icon */\n inline?: keyof typeof spacings;\n /** Visual theme/color scheme for the icon */\n theme?: \"default\" | \"blue\" | \"green\" | \"orange\" | \"red\" | \"violet\" | \"yellow\";\n /** Icon weight/style - defaults to context value (duotone) */\n weight?: \"thin\" | \"light\" | \"regular\" | \"bold\" | \"fill\" | \"duotone\";\n}\n\n/**\n * Tabs component props - tabbed interface for switching between content panels\n *\n * @example\n * ```tsx\n * const [active, setActive] = useState(\"home\");\n * <Tabs\n * options={[\n * { label: \"Home\", value: \"home\" },\n * { label: \"Profile\", value: \"profile\" }\n * ]}\n * active={active}\n * setActive={setActive}\n * />\n * ```\n */\nexport interface ITabs {\n /** Currently active tab value */\n active: string;\n /** Array of tab options */\n options: Array<{\n label: string;\n value: string;\n }>;\n /** Callback to set active tab */\n setActive: (value: string) => void;\n}\n\n/**\n * Accordion component props - collapsible content sections with optional multiple expansion\n *\n * @example\n * ```tsx\n * <Accordion\n * allowMultiple\n * options={[\n * {\n * label: \"Section 1\",\n * value: \"section1\",\n * children: <Text>Content for section 1</Text>,\n * icon: <ChevronIcon />\n * },\n * {\n * label: \"Section 2\",\n * value: \"section2\",\n * children: <Text>Content for section 2</Text>,\n * }\n * ]}\n * onToggle={(value, isOpen) => console.log(value, isOpen)}\n * />\n * ```\n */\nexport interface IAccordion {\n /** Whether multiple sections can be open simultaneously */\n allowMultiple?: boolean;\n /** Initially opened section value */\n initial?: string;\n /** Callback when section is toggled */\n onToggle?: (value: string, isOpen: boolean) => void;\n /** Array of accordion sections */\n options: Array<{\n children: ReactNode;\n icon?: ReactNode;\n label: ReactNode;\n value: string;\n }>;\n}\n\n/**\n * Monthpicker component props - month selection interface for calendar navigation\n *\n * @example\n * ```tsx\n * <Monthpicker\n * initial=\"2024-10\"\n * onSelect={(monthKey) => console.log('Selected:', monthKey)}\n * trigger={<Button>Select Month</Button>}\n * timezone=\"Australia/Melbourne\"\n * />\n * ```\n */\nexport interface IMonthpicker {\n /** Initial month in YYYY-MM format */\n initial?: string;\n /** Callback when month is selected */\n onSelect: (month: string) => void;\n /** Timezone for date calculations (e.g., \"Australia/Melbourne\") */\n timezone?: string;\n /** Trigger element */\n trigger: ReactNode;\n /** Custom CSS styles for the trigger */\n triggerCSS?: CSS;\n /** Custom CSS styles for the wrapper */\n wrapperCSS?: CSS;\n}\n\n/**\n * Logo component props - company logo with variants\n *\n * @example\n * ```tsx\n * <Logo variant=\"full\" size=\"medium\" theme=\"default\" />\n * <Logo variant=\"icon\" width={48} hover outline />\n * ```\n */\nexport interface ILogo {\n /** Logo variant - full includes icon and text, icon is just the mark */\n variant?: \"full\" | \"icon\";\n /** Size preset (only used with variant=\"full\") */\n size?: \"small\" | \"medium\" | \"large\";\n /** Custom width in pixels or string (used with variant=\"icon\") */\n width?: number | string;\n /** Whether to show hover effect */\n hover?: boolean;\n /** Whether to show outline style */\n outline?: boolean;\n /** Visual theme/color scheme */\n theme?: \"default\" | \"light\" | \"dark\";\n /** Custom CSS styles */\n css?: CSS;\n}\n","/**\n * Hook types for the AirIndex UI library\n *\n * Note: Simple return types like boolean, void, or T are used directly\n * in hooks rather than creating unnecessary type aliases.\n */\n\n/**\n * Theme mode options - system follows OS preference, dark/light are explicit modes\n *\n * @example\n * ```tsx\n * const { theme, setTheme } = useTheme();\n * setTheme(\"dark\"); // Force dark mode\n * setTheme(\"system\"); // Follow OS preference\n * ```\n */\nexport type TThemeMode = \"system\" | \"dark\" | \"light\";\n\n/**\n * Responsive breakpoint names with undefined for initial/unknown state\n *\n * @example\n * ```tsx\n * const { breakpoint, isPhone } = useBreakpoints();\n * if (breakpoint === \"phone\") {\n * // Mobile-specific logic\n * }\n * ```\n */\nexport type TBreakpoint = \"phone\" | \"tabletX\" | \"laptopX\" | \"desktopX\" | \"wide\" | undefined;\n\n/**\n * Responsive breakpoint detection with boolean helpers for each screen size\n *\n * @example\n * ```tsx\n * const { isPhone, isDesktop, breakpoint } = useBreakpoints();\n *\n * return (\n * <div>\n * {isPhone ? <MobileNav /> : <DesktopNav />}\n * <p>Current: {breakpoint}</p>\n * </div>\n * );\n * ```\n */\nexport interface IUseBreakpoints {\n /** Current active breakpoint name */\n breakpoint: TBreakpoint;\n /** Whether currently on desktop (desktopX) breakpoint */\n isDesktop: boolean;\n /** Whether currently on laptop (laptopX) breakpoint */\n isLaptop: boolean;\n /** Whether currently on phone breakpoint */\n isPhone: boolean;\n /** Whether currently on tablet (tabletX) breakpoint */\n isTablet: boolean;\n /** Whether currently on wide breakpoint */\n isWide: boolean;\n}\n\n/**\n * Theme management with dark mode detection and system preference support\n *\n * @example\n * ```tsx\n * const { isDarkTheme, setTheme, theme } = useTheme();\n *\n * return (\n * <button onClick={() => setTheme(isDarkTheme ? \"light\" : \"dark\")}>\n * Toggle theme\n * </button>\n * );\n * ```\n */\nexport interface IUseTheme {\n /** Whether dark theme is currently active (undefined during SSR) */\n isDarkTheme: boolean | undefined;\n /** Function to change the theme mode */\n setTheme: (theme: TThemeMode) => void;\n /** Current theme mode setting */\n theme: TThemeMode;\n}\n\n/**\n * Browser window dimensions with automatic updates on resize\n *\n * @example\n * ```tsx\n * const { width, height } = useWindowDimensions();\n *\n * return (\n * <div>\n * Viewport: {width} × {height}px\n * {width < 768 && <MobileWarning />}\n * </div>\n * );\n * ```\n */\nexport interface IUseWindowDimensions {\n /** Window inner height in pixels */\n height: number;\n /** Window inner width in pixels */\n width: number;\n}\n\n/**\n * Floating UI positioning with refs and state management for dropdowns/popovers\n *\n * @example\n * ```tsx\n * const { triggerRef, contentRef, isOpen, handleClick } = useFloatingUI();\n *\n * return (\n * <>\n * <button ref={triggerRef} onClick={handleClick}>\n * Toggle\n * </button>\n * {isMounted && (\n * <div ref={contentRef}>Floating content</div>\n * )}\n * </>\n * );\n * ```\n */\nexport interface IUseFloatingUI {\n /** Ref for the floating content element */\n contentRef: { current: null | HTMLDivElement };\n /** Toggle function for open/close state */\n handleClick: () => void;\n /** Function to close the floating element */\n handleClose: () => void;\n /** Whether the floating element is mounted in DOM */\n isMounted: boolean;\n /** Whether the floating element is visible */\n isOpen: boolean;\n /** Ref for the trigger element */\n triggerRef: { current: null | HTMLDivElement };\n}\n\n/**\n * Local storage state management with automatic persistence and sync across tabs\n *\n * @example\n * ```tsx\n * const [count, setCount] = useLocalStorage<number>(\"counter\", 0);\n *\n * return (\n * <button onClick={() => setCount(count + 1)}>\n * Count: {count}\n * </button>\n * );\n * ```\n */\nexport type TUseLocalStorage<T> = [T, (value: T) => void];\n\n/**\n * Clean modal state management with viewport handling for iOS issues\n * Similar to useFloatingUI but for full-screen overlays\n *\n * @param options - Configuration options for the modal\n * @param options.onClose - Callback fired when modal closes\n * @param options.preventBodyScroll - Whether to prevent body scrolling (default: true)\n * @param options.animationDuration - Animation duration in milliseconds (default: 200)\n *\n * @example\n * ```tsx\n * const modal = useModal({\n * onClose: () => console.log('Modal closed'),\n * preventBodyScroll: true\n * });\n *\n * return (\n * <>\n * <button onClick={modal.handleClick}>Toggle Modal</button>\n * {modal.isMounted && (\n * <ModalOverlay\n * css={{\n * height: '100dvh' // Dynamic viewport height with fallback\n * }}\n * >\n * <ModalContent ref={modal.modalRef}>\n * <h2>Modal Title</h2>\n * <button onClick={modal.handleClose}>Close</button>\n * </ModalContent>\n * </ModalOverlay>\n * )}\n * </>\n * );\n * ```\n */\nexport interface IUseModal {\n /** Whether the modal is currently open and visible */\n isOpen: boolean;\n /** Whether the modal is mounted in the DOM */\n isMounted: boolean;\n /** Ref to attach to the modal content element for scroll lock */\n modalRef: { current: HTMLDivElement | null };\n /** Function to open the modal */\n handleOpen: () => void;\n /** Function to close the modal */\n handleClose: () => void;\n /** Function to toggle modal open/closed state */\n handleClick: () => void;\n}\n\n/**\n * Calendar hook for managing calendar grid layout, booking badges, and day data\n *\n * @example\n * ```tsx\n * const { weeks, getBadgesForWeek, getDayData } = useCalendar({\n * entries: entriesByDate,\n * month: \"2025-11\",\n * timezone: \"Australia/Melbourne\"\n * });\n *\n * weeks.map((week, weekIndex) => {\n * const { bookingBadges } = getBadgesForWeek(week, weekIndex);\n * // Render week with badges...\n * });\n * ```\n */\nexport interface IUseCalendar {\n /** Function to get booking badges for a specific week */\n getBadgesForWeek: (\n week: Array<import(\"dayjs\").Dayjs | null>,\n weekIndex: number,\n ) => {\n bookingBadges: Array<{\n booking: {\n booking_id: string;\n check_in_date: string;\n check_out_date: string;\n guest_name: string;\n id: string; // database UUID (required)\n ota_name?: string;\n };\n bookingId: string;\n firstDayIndex: number;\n isCheckIn: boolean;\n isCheckOut: boolean;\n isSameDayTurnover: boolean;\n length: number;\n offset: \"checkin\" | \"checkout\" | \"full\";\n position: {\n left: string;\n width: string;\n };\n showName: boolean;\n weekIndex: number;\n }>;\n };\n /** Function to get day data for a specific date */\n getDayData: (date: import(\"dayjs\").Dayjs) => {\n dateStr: string;\n dayData:\n | {\n airbnb_min_stay?: number;\n airbnb_rate?: number;\n availability?: number;\n blocked_reason?: string | null;\n booking_details?: Array<{\n booking_id: string;\n check_in_date: string;\n check_out_date: string;\n guest_name: string;\n id: string; // database UUID (required)\n ota_name?: string;\n }>;\n day: string;\n events?: Array<{\n end_date: string;\n event_id: string;\n start_date: string;\n title: string;\n }>;\n has_booking?: boolean;\n has_check_in?: boolean;\n has_check_out?: boolean;\n is_available?: boolean;\n is_blocked?: boolean;\n min_stay?: number;\n rate?: number;\n wh_attribution?: {\n availability?: number;\n custom_weekend?: number;\n historical_anchoring?: number;\n local_demand?: number;\n occupancy_pacing?: number;\n restriction?: number;\n scarcity?: number;\n seasonality?: number;\n time?: number;\n user_adjustment?: number;\n };\n wh_base_price?: number;\n wh_price_change_pct?: number;\n wh_recommended_price?: number;\n }\n | undefined;\n isToday: boolean;\n };\n /** Array of weeks, each containing 7 days (or null for empty cells) */\n weeks: Array<Array<import(\"dayjs\").Dayjs | null>>;\n}\n","/**\n * Responsive breakpoint names available in the design system\n *\n * @category Design System\n */\nexport type TBreakpointName =\n | \"phone\"\n | \"phoneX\"\n | \"tablet\"\n | \"tabletX\"\n | \"laptop\"\n | \"laptopX\"\n | \"desktop\"\n | \"desktopX\"\n | \"wide\";\n\n/**\n * Special breakpoint names for edge cases\n *\n * @category Design System\n */\nexport type TSpecialBreakpointName = \"micro\" | \"retina\" | \"print\";\n\n/**\n * Responsive breakpoints configuration for media queries\n *\n * @category Design System\n * @example\n * ```tsx\n * // Usage in styled components\n * const Component = styled('div', {\n * fontSize: '16px',\n * phone: {\n * fontSize: '14px'\n * },\n * tablet: {\n * fontSize: '15px'\n * }\n * });\n * ```\n */\nexport type TBreakpointsConfig = Record<TBreakpointName, string> & {\n special: Record<TSpecialBreakpointName, string>;\n};\n\n/**\n * Spacing scale configuration used throughout the design system\n *\n * @category Design System\n * @example\n * ```tsx\n * const Component = styled('div', {\n * padding: '$medium', // 20px\n * marginTop: '$large', // 40px\n * gap: '$small' // 10px\n * });\n * ```\n */\nexport type TSpacingConfig = Record<\n \"none\" | \"smallest\" | \"smaller\" | \"small\" | \"medium\" | \"large\" | \"larger\" | \"largest\" | \"auto\",\n string\n>;\n\n/**\n * Theme configuration for c, typography, and design tokens\n *\n * @category Design System\n * @example\n * ```tsx\n * const Component = styled('div', {\n * backgroundColor: '$surface',\n * color: '$text',\n * fontSize: '$default'\n * });\n * ```\n */\nexport type TThemeConfig = {\n /** Color palette for the design system */\n colors: Record<\n | \"background\"\n | \"text\"\n | \"textMuted\"\n | \"border\"\n | \"borderLight\"\n | \"borderTop\"\n | \"borderBottom\"\n | \"borderStrong\"\n | \"borderEmphasis\"\n | \"surface\"\n | \"surfaceHover\"\n | \"surfaceLight\"\n | \"surfaceOverlay\"\n | \"surfacePopover\"\n | \"overlay\"\n | \"blue\"\n | \"blueLight\"\n | \"blueDark\"\n | \"blueOverlay\"\n | \"violet\"\n | \"violetLight\"\n | \"violetDark\"\n | \"violetOverlay\"\n | \"orange\"\n | \"orangeLight\"\n | \"orangeDark\"\n | \"orangeOverlay\"\n | \"green\"\n | \"greenLight\"\n | \"greenDark\"\n | \"greenOverlay\"\n | \"red\"\n | \"redLight\"\n | \"redDark\"\n | \"redOverlay\"\n | \"yellow\"\n | \"yellowLight\"\n | \"yellowDark\"\n | \"yellowOverlay\"\n | \"pink\"\n | \"pinkLight\"\n | \"pinkDark\"\n | \"pinkOverlay\",\n string\n >;\n /** Font family configuration */\n fonts: {\n default: string;\n heading: string;\n };\n /** Font size scale with responsive clamp values */\n fontSizes: Record<\n \"micro\" | \"small\" | \"default\" | \"h6\" | \"h5\" | \"h4\" | \"h3\" | \"h2\" | \"h1\",\n string\n >;\n /** Line height values */\n lineHeights: {\n default: string;\n relaxed: string;\n tight: string;\n };\n /** Opacity values */\n opacities: {\n default: number;\n light: number;\n };\n /** Border radius values */\n radii: Record<\"default\" | \"small\" | \"large\" | \"full\", string>;\n /** Box shadow configurations */\n shadows: Record<\"inset\" | \"subtle\" | \"default\" | \"medium\" | \"large\" | \"largest\", string>;\n /** Size scale (same as spacings) */\n sizes: TSpacingConfig;\n /** Space scale (same as spacings) */\n space: TSpacingConfig;\n /** Transition configurations */\n transitions: {\n bounce: string;\n default: string;\n fast: string;\n slow: string;\n };\n /** Z-index layering */\n zIndices: {\n menu: number;\n modal: number;\n modalPopover: number;\n popover: number;\n select: number;\n special: number;\n sticky: number;\n table: number;\n toast: number;\n };\n};\n\n/**\n * Dynamic viewport configuration object\n *\n * @category Utilities\n */\nexport type TDynamicViewportConfig = {\n property: string;\n value: string;\n unit: \"vh\" | \"vw\" | \"vi\" | \"vb\";\n};\n\n/**\n * Utility functions available in Stitches CSS-in-JS\n *\n * @category Utilities\n * @example\n * ```tsx\n * const Component = styled('div', {\n * // Theme utilities\n * darkOnly: {\n * backgroundColor: '$violet'\n * },\n * // Responsive utilities\n * phone: {\n * fontSize: '$small'\n * },\n * // Visibility utilities\n * hidden: 'tablet',\n * // Dynamic viewport utilities\n * dynamicViewport: { property: 'maxHeight', value: '100', unit: 'vh' }\n * });\n * ```\n */\nexport type TStitchesUtils = {\n /**\n * Apply styles only in dark theme\n * @param value - CSS styles to apply in dark mode\n */\n darkOnly: (value: unknown) => unknown;\n\n /**\n * Apply styles only in light theme\n * @param value - CSS styles to apply in light mode\n */\n lightOnly: (value: unknown) => unknown;\n\n /**\n * Apply styles at wide breakpoint (2201px+)\n * @param value - CSS styles to apply\n */\n wide: (value: unknown) => unknown;\n\n /**\n * Apply styles at desktop breakpoint (max 2200px)\n * @param value - CSS styles to apply\n */\n desktop: (value: unknown) => unknown;\n\n /**\n * Apply styles at laptop breakpoint (max 1400px)\n * @param value - CSS styles to apply\n */\n laptop: (value: unknown) => unknown;\n\n /**\n * Apply styles at tablet breakpoint (max 1100px)\n * @param value - CSS styles to apply\n */\n tablet: (value: unknown) => unknown;\n\n /**\n * Apply styles at phone breakpoint (max 800px)\n * @param value - CSS styles to apply\n */\n phone: (value: unknown) => unknown;\n\n /**\n * Apply styles at phoneX breakpoint (376px-800px)\n * @param value - CSS styles to apply\n */\n phoneX: (value: unknown) => unknown;\n\n /**\n * Apply styles at tabletX breakpoint (801px-1100px)\n * @param value - CSS styles to apply\n */\n tabletX: (value: unknown) => unknown;\n\n /**\n * Apply styles at laptopX breakpoint (1101px-1400px)\n * @param value - CSS styles to apply\n */\n laptopX: (value: unknown) => unknown;\n\n /**\n * Apply styles at desktopX breakpoint (1401px-2200px)\n * @param value - CSS styles to apply\n */\n desktopX: (value: unknown) => unknown;\n\n /**\n * Apply styles at micro breakpoint (max 375px)\n * @param value - CSS styles to apply\n */\n micro: (value: unknown) => unknown;\n\n /**\n * Apply styles for retina/high-DPI displays\n * @param value - CSS styles to apply\n */\n retina: (value: unknown) => unknown;\n\n /**\n * Apply styles for print media\n * @param value - CSS styles to apply\n */\n print: (value: unknown) => unknown;\n\n /**\n * Apply styles when user prefers reduced motion\n * @param value - CSS styles to apply\n */\n reduceMotion: (value: unknown) => unknown;\n\n /**\n * Hide element at specific breakpoint\n * @param value - Breakpoint name where element should be hidden\n */\n hidden: (value: TBreakpointName) => unknown;\n\n /**\n * Hide element inline at specific breakpoint\n * @param value - Breakpoint name where element should be hidden inline\n */\n hiddenInline: (value: TBreakpointName) => unknown;\n\n /**\n * Hide element at special breakpoint (micro, retina, print)\n * @param value - Special breakpoint name where element should be hidden\n */\n hiddenSpecial: (value: \"micro\" | \"retina\" | \"print\") => unknown;\n\n /**\n * Show element only at specific breakpoint\n * @param value - Breakpoint name where element should be visible\n */\n visible: (value: TBreakpointName) => unknown;\n\n /**\n * Show element inline only at specific breakpoint\n * @param value - Breakpoint name where element should be visible inline\n */\n visibleInline: (value: TBreakpointName) => unknown;\n\n /**\n * Show element only at special breakpoint (micro, retina, print)\n * @param value - Special breakpoint name where element should be visible\n */\n visibleSpecial: (value: \"micro\" | \"retina\" | \"print\") => unknown;\n\n /**\n * Apply dynamic viewport units with fallback support\n * @param config - Configuration object\n */\n dynamicViewport: (config: TDynamicViewportConfig) => unknown;\n};\n","/**\n * Icon exports - Phosphor Icons\n * All icons are configured with duotone weight and 21px size by default\n *\n * NOTE: This file is for use ONLY within the ui/ folder (design system).\n * Components and other code outside ui/ should use @/lib/icons instead.\n */\n\nimport {\n ArticleIcon,\n ArrowClockwise as ArrowClockwiseIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n ArrowUpIcon,\n ArrowUpRightIcon,\n ArrowsInIcon,\n ArrowsOutIcon,\n BedIcon,\n BellIcon,\n BookmarksIcon,\n CalendarIcon,\n CaretDownIcon,\n CaretLeftIcon,\n CaretRightIcon,\n CaretUpIcon,\n ChatIcon,\n ChatTextIcon,\n ChartLineIcon,\n CheckCircleIcon,\n CircleIcon,\n ClipboardIcon,\n CopyIcon,\n DatabaseIcon,\n DesktopIcon,\n EyeIcon,\n EyeSlashIcon,\n GearIcon,\n GlobeIcon,\n HeartIcon,\n HouseIcon,\n InfoIcon,\n LightningIcon,\n ListIcon,\n ListChecksIcon,\n MagnifyingGlass as MagnifyingGlassIcon,\n MonitorIcon,\n MoonIcon,\n PencilIcon,\n PlusIcon,\n PlugIcon,\n QuestionIcon,\n ShieldCheckIcon,\n SignInIcon,\n SignOutIcon,\n SmileyIcon,\n StarIcon,\n SunIcon,\n ThumbsDownIcon,\n ThumbsUpIcon,\n TrashIcon,\n UserIcon,\n UsersIcon,\n Warning as WarningCircleIcon,\n WarningIcon,\n X as XIcon,\n XCircleIcon,\n} from \"@phosphor-icons/react\";\n\n// Directional Icons\nexport {\n ArrowClockwiseIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n ArrowUpIcon,\n ArrowUpRightIcon,\n ArrowsInIcon,\n ArrowsOutIcon,\n CaretDownIcon,\n CaretLeftIcon,\n CaretRightIcon,\n CaretUpIcon,\n};\n\n// Action Icons\nexport {\n BookmarksIcon,\n CheckCircleIcon,\n ClipboardIcon,\n CopyIcon,\n SignInIcon,\n SignOutIcon,\n ListChecksIcon,\n LightningIcon,\n PencilIcon,\n PlusIcon,\n TrashIcon,\n};\n\n// UI Icons\nexport {\n BellIcon,\n CircleIcon,\n EyeIcon,\n EyeSlashIcon,\n InfoIcon,\n MagnifyingGlassIcon,\n QuestionIcon,\n WarningCircleIcon,\n WarningIcon,\n XCircleIcon,\n XIcon,\n};\n\n// Theme Icons\nexport { DesktopIcon, MoonIcon, SunIcon };\n\n// Status/Sentiment Icons\nexport { HeartIcon, SmileyIcon, StarIcon, ThumbsDownIcon, ThumbsUpIcon, UserIcon };\n\n// Content Icons\nexport { ArticleIcon, BedIcon, ChatIcon, ChatTextIcon, DatabaseIcon, GlobeIcon, ListIcon };\n\n// Navigation Icons\nexport {\n CalendarIcon,\n ChartLineIcon,\n GearIcon,\n HouseIcon,\n MonitorIcon,\n PlugIcon,\n ShieldCheckIcon,\n UsersIcon,\n};\n","import type { JSX } from \"react\";\n\nimport { CSS } from \"@stitches/react\";\n\nimport { type IStack } from \"../../index\";\nimport { darkTheme } from \"../../stitches.config\";\nimport { StackStyled } from \"./styles\";\n\nconst getFlexValue = (width: number): string => (width === 100 ? `0 0 100%` : `${width} 1 0%`);\n\nconst createResponsiveWidth = (widthResponsive: IStack[\"widthResponsive\"], css: CSS = {}): CSS => {\n const responsiveStyles: CSS = {};\n\n if (widthResponsive?.phone) {\n responsiveStyles.phone = {\n ...(css?.phone && typeof css.phone === \"object\" ? css.phone : {}),\n flex: getFlexValue(widthResponsive.phone),\n };\n }\n\n if (widthResponsive?.tabletX) {\n responsiveStyles.tabletX = {\n ...(css?.tabletX && typeof css.tabletX === \"object\" ? css.tabletX : {}),\n flex: getFlexValue(widthResponsive.tabletX),\n };\n }\n\n if (widthResponsive?.laptopX) {\n responsiveStyles.laptopX = {\n ...(css?.laptopX && typeof css.laptopX === \"object\" ? css.laptopX : {}),\n flex: getFlexValue(widthResponsive.laptopX),\n };\n }\n\n if (widthResponsive?.desktopX) {\n responsiveStyles.desktopX = {\n ...(css?.desktopX && typeof css.desktopX === \"object\" ? css.desktopX : {}),\n flex: getFlexValue(widthResponsive.desktopX),\n };\n }\n\n if (widthResponsive?.wide) {\n responsiveStyles.wide = {\n ...(css?.wide && typeof css.wide === \"object\" ? css.wide : {}),\n flex: getFlexValue(widthResponsive.wide),\n };\n }\n\n return responsiveStyles;\n};\n\nexport default function Stack({\n align,\n alignContent,\n alignItems,\n as,\n basis,\n bottom,\n children,\n className,\n css,\n direction,\n gap,\n grow,\n id,\n inline,\n inverted,\n justify,\n minimal,\n onClick,\n order,\n shrink,\n top,\n width,\n widthResponsive,\n wrap,\n ...rest\n}: IStack): JSX.Element {\n const effectiveMinimal = direction === \"row\" ? minimal !== false : minimal === true;\n const finalCSS: CSS = {\n ...(align && { textAlign: align }),\n ...(alignItems && { alignItems }),\n ...(alignContent && { alignContent }),\n ...(justify && { justifyContent: justify }),\n ...((gap || direction === \"row\") && { gap: `$${gap ?? \"small\"}` }),\n ...((wrap || direction === \"row\") && { flexWrap: wrap ?? \"wrap\" }),\n ...(basis && { flexBasis: basis }),\n ...(grow && { flexGrow: grow }),\n ...(shrink && { flexShrink: shrink }),\n ...(order && { order }),\n ...(top && { marginTop: 0, paddingTop: `$${top}` }),\n ...(bottom && { marginBottom: 0, paddingBottom: `$${bottom}` }),\n ...(width !== undefined && { flex: getFlexValue(width) }),\n ...css,\n ...(widthResponsive && createResponsiveWidth(widthResponsive, css)),\n };\n\n return (\n <StackStyled\n as={as}\n className={inverted ? darkTheme.className : className}\n css={finalCSS}\n direction={direction}\n id={id}\n inline={inline}\n minimal={effectiveMinimal}\n onClick={onClick}\n {...rest}>\n {children}\n </StackStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\nimport { TextStyled } from \"../Text/styles\";\n\nexport const StackStyled = styled(\"div\", {\n margin: 0,\n variants: {\n direction: {\n column: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n row: {\n display: \"flex\",\n flexDirection: \"row\",\n paddingLeft: \"$small\",\n paddingRight: \"$small\",\n phone: {\n paddingLeft: \"$smaller\",\n paddingRight: \"$smaller\",\n },\n },\n },\n inline: {\n true: {\n [`& ${TextStyled}`]: {\n marginBottom: \"0 !important\",\n verticalAlign: \"middle\",\n },\n },\n },\n inverted: {\n true: {\n backgroundColor: \"$background\",\n color: \"$text\",\n },\n },\n minimal: {\n true: {\n paddingLeft: \"0 !important\",\n paddingRight: \"0 !important\",\n },\n },\n },\n});\n\nexport default StackStyled;\n","import { styled } from \"../../stitches.config\";\n\nconst highlight = {\n padding: \"calc($smallest / 2) $smaller\",\n};\n\nconst link = {\n \"&:hover\": {\n backgroundColor: \"$surface\",\n },\n borderBottom: \"1px solid $border\",\n color: \"$text\",\n cursor: \"pointer\",\n margin: 0,\n transition: \"$default\",\n};\n\nconst mutedStyles = {\n color: \"$textMuted\",\n};\n\nexport const TextSizes = {\n a: {\n marginBottom: 0,\n },\n h1: {\n fontFamily: \"$heading\",\n fontSize: \"$h1\",\n fontWeight: 600,\n lineHeight: \"$tight\",\n marginBottom: \"$small\",\n },\n h2: {\n fontFamily: \"$heading\",\n fontSize: \"$h2\",\n fontWeight: 600,\n lineHeight: \"$tight\",\n marginBottom: \"$small\",\n },\n h3: {\n fontFamily: \"$heading\",\n fontSize: \"$h3\",\n fontWeight: 600,\n lineHeight: \"$tight\",\n marginBottom: \"$small\",\n },\n h4: {\n fontFamily: \"$heading\",\n fontSize: \"$h4\",\n fontWeight: 600,\n lineHeight: \"$tight\",\n marginBottom: \"$small\",\n },\n h5: {\n fontFamily: \"$heading\",\n fontSize: \"$h5\",\n fontWeight: 600,\n lineHeight: \"$tight\",\n marginBottom: \"$smaller\",\n },\n h6: {\n fontFamily: \"$heading\",\n fontSize: \"$h6\",\n fontWeight: 600,\n lineHeight: \"$tight\",\n marginBottom: \"$smaller\",\n },\n label: {\n color: \"$textMuted\",\n display: \"block\",\n fontFamily: \"$heading\",\n fontSize: \"$small\",\n fontWeight: 600,\n lineHeight: \"$default\",\n marginBottom: \"$smaller\",\n },\n li: {\n fontSize: \"$default\",\n lineHeight: \"$default\",\n marginBottom: \"$smaller\",\n },\n micro: {\n color: \"$textMuted\",\n display: \"block\",\n fontSize: \"$micro\",\n lineHeight: \"$default\",\n marginBottom: \"$smallest\",\n },\n ol: {\n listStyle: \"decimal inside !important\",\n listStylePosition: \"inside\",\n listStyleType: \"decimal\",\n marginBottom: 0,\n paddingLeft: \"$small\",\n },\n p: {\n color: \"$text\",\n fontFamily: \"$default\",\n fontSize: \"$default\",\n lineHeight: \"$default\",\n marginBottom: \"$smaller\",\n },\n small: {\n color: \"$textMuted\",\n display: \"block\",\n fontSize: \"$small\",\n lineHeight: \"$default\",\n marginBottom: \"$smallest\",\n },\n span: {\n fontSize: \"inherit\",\n fontWeight: 400,\n lineHeight: \"inherit\",\n },\n strong: {\n fontFamily: \"$heading\",\n fontSize: \"inherit\",\n fontWeight: 600,\n lineHeight: \"inherit\",\n },\n ul: {\n listStyle: \"disc inside !important\",\n listStylePosition: \"inside\",\n listStyleType: \"disc\",\n marginBottom: 0,\n paddingLeft: \"$small\",\n },\n};\n\nexport const TextStyled = styled(\"div\", {\n \"&:last-child\": {\n marginBottom: \"0 !important\",\n },\n color: \"$text\",\n variants: {\n accent: {\n true: mutedStyles,\n },\n hero: {\n true: {\n color: \"$text\",\n mask: \"linear-gradient(to bottom, black 0%, black 20%, rgba(0,0,0,0.8) 60%, rgba(0,0,0,0.35) 100%)\",\n WebkitMask:\n \"linear-gradient(to bottom, black 0%, black 20%, rgba(0,0,0,0.8) 60%, rgba(0,0,0,0.35) 100%)\",\n },\n },\n highlight: {\n default: {\n ...highlight,\n backgroundColor: \"$surface\",\n },\n yellow: {\n ...highlight,\n backgroundColor: \"$yellow\",\n },\n },\n inline: {\n false: {\n verticalAlign: \"baseline !important\",\n },\n true: {\n alignSelf: \"center\",\n display: \"inline-flex !important\",\n marginBottom: \"0 !important\",\n verticalAlign: \"middle\",\n },\n },\n link: {\n default: {\n ...link,\n },\n minimal: {\n ...link,\n borderColor: \"transparent\",\n },\n },\n muted: {\n true: mutedStyles,\n },\n size: TextSizes,\n truncate: {\n \"1\": {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n \"2\": {\n display: \"-webkit-box\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 2,\n },\n \"3\": {\n display: \"-webkit-box\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 3,\n },\n \"4\": {\n display: \"-webkit-box\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 4,\n },\n },\n },\n\n verticalAlign: \"baseline\",\n});\n\nexport default TextStyled;\n","import type { JSX } from \"react\";\n\nimport { useBreakpoints, Gradient, Logo, type IView } from \"../../index\";\nimport { darkTheme } from \"../../stitches.config\";\nimport { ViewStyled, ViewContainerStyled } from \"./styles\";\n\nfunction HeroBackground(): JSX.Element {\n const { isPhone } = useBreakpoints();\n\n return (\n <>\n <Gradient />\n <Logo\n css={{\n left: \"-100px\",\n opacity: 0.05,\n pointerEvents: \"none\",\n position: \"absolute\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n userSelect: \"none\",\n zIndex: 1.5,\n }}\n variant=\"icon\"\n width={isPhone ? 750 : 900}\n />\n </>\n );\n}\n\nexport default function View({\n app,\n as,\n bottom,\n children,\n container,\n css,\n hero,\n id,\n inverted,\n top,\n}: IView): JSX.Element {\n const needsContainer = container === true || app === true;\n\n return (\n <ViewStyled\n as={as}\n className={inverted ? darkTheme.className : \"\"}\n css={{\n ...(top && {\n marginTop: 0,\n paddingTop: `$${top}`,\n }),\n ...(bottom && {\n marginBottom: 0,\n paddingBottom: `$${bottom}`,\n }),\n ...css,\n }}\n hero={hero}\n id={id ? `view-${id}` : undefined}\n inverted={inverted}>\n {hero && <HeroBackground />}\n {needsContainer ? (\n <ViewContainerStyled app={app} container={container}>\n {children}\n </ViewContainerStyled>\n ) : (\n children\n )}\n </ViewStyled>\n );\n}\n","import type { JSX } from \"react\";\n\nimport { GradientStyled } from \"./styles\";\n\nexport default function Gradient(): JSX.Element {\n return (\n <GradientStyled>\n <svg\n height=\"100%\"\n style={{\n left: 0,\n opacity: 0.85,\n pointerEvents: \"none\",\n position: \"absolute\",\n top: 0,\n userSelect: \"none\",\n }}\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <radialGradient cx=\"50%\" cy=\"120%\" fx=\"50%\" fy=\"110%\" id=\"sunsetGradient\" r=\"100%\">\n {/* All theme colors with strategic spacing to prevent muddy blending */}\n <stop offset=\"0%\" stopColor=\"rgba(242, 201, 125, 0.25)\" />\n <stop offset=\"12%\" stopColor=\"rgba(234, 187, 171, 0.4)\" />\n <stop offset=\"24%\" stopColor=\"rgba(243, 169, 196, 0.55)\" />\n <stop offset=\"36%\" stopColor=\"rgba(237, 164, 169, 0.65)\" />\n <stop offset=\"48%\" stopColor=\"rgba(188, 182, 215, 0.75)\" />\n <stop offset=\"62%\" stopColor=\"rgba(175, 218, 241, 0.8)\" />\n <stop offset=\"78%\" stopColor=\"rgba(178, 214, 201, 0.75)\" />\n <stop offset=\"100%\" stopColor=\"transparent\" />\n <animate\n attributeName=\"r\"\n begin=\"0s\"\n calcMode=\"spline\"\n dur=\"40s\"\n keySplines=\"0.42 0 0.58 1; 0.42 0 0.58 1; 0.42 0 0.58 1; 0.42 0 0.58 1\"\n keyTimes=\"0; 0.25; 0.5; 0.75; 1\"\n repeatCount=\"indefinite\"\n values=\"95%; 105%; 100%; 105%; 95%\"\n />\n </radialGradient>\n </defs>\n <rect fill=\"url(#sunsetGradient)\" height=\"100%\" width=\"100%\" />\n </svg>\n </GradientStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const GradientStyled = styled(\"div\", {\n backgroundColor: \"$text\",\n darkOnly: {\n backgroundColor: \"$background\",\n },\n height: \"100%\",\n inset: 0,\n position: \"absolute\",\n transform: \"translateZ(0)\",\n width: \"100%\",\n willChange: \"transform\",\n zIndex: 0,\n});\n\nexport default GradientStyled;\n","import type { JSX } from \"react\";\n\nimport { type ILogo } from \"../../index\";\nimport Text from \"../Text\";\nimport { LogoStyled } from \"./styles\";\n\nconst sizePresets = {\n large: {\n iconWidth: 32,\n textSize: 26,\n },\n medium: {\n iconWidth: 24,\n textSize: 24,\n },\n small: {\n iconWidth: 20,\n textSize: 20,\n },\n} as const;\n\nconst IconSVG = (): JSX.Element => (\n <svg viewBox=\"0 0 386.81 427.47\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M369.48,4.46h-224.77c-5.11,0-10.02,1.99-13.7,5.54L19.67,117.73c-9.72,9.4-15.17,22.38-15.06,35.9l.95,118.09c.08,9.9,8.13,17.89,18.03,17.89h99.01c.42.04.82.09,1.37.09,10.34,0,12.43,6.59,12.77,10.63v76.93c0,.57.06,1.12.08,1.68v26.49c0,9.49,7.7,17.19,17.19,17.19h67.4c.89,0,1.74-.11,2.59-.26l15.52.13c9.36.08,18.35-3.64,24.92-10.32l108.72-110.61c4.3-4.37,1.2-11.77-4.93-11.77l-221.69-.18s-.03,0-.05,0c-7.85,0-9.41-5.7-9.66-9.16V18.9c0-5.22,6.35-7.78,9.98-4.03l95.11,98.39c12.61,13.05,29.99,20.42,48.14,20.42h78.72c5.3,0,9.61-4.28,9.65-9.58l.7-109.92c.03-5.35-4.29-9.71-9.65-9.71Z\" />\n </svg>\n);\n\nexport default function Logo({\n css,\n hover = true,\n outline = false,\n size = \"medium\",\n theme = \"default\",\n variant = \"full\",\n width = 32,\n}: ILogo): JSX.Element {\n const isIconOnly = variant === \"icon\";\n const useOutline = outline;\n const useHover = !outline && hover;\n\n // Icon aspect ratio\n const iconAspectRatio = 386.81 / 427.47;\n\n // For full variant, use size presets. For icon variant, use the width prop\n let iconWidth: number;\n let textSize: number;\n\n if (isIconOnly) {\n iconWidth = typeof width === \"number\" ? width : 32;\n textSize = 0; // Not used for icon variant\n } else {\n const { iconWidth: presetIconWidth, textSize: presetTextSize } = sizePresets[size];\n\n iconWidth = presetIconWidth;\n textSize = presetTextSize;\n }\n\n const iconHeight = iconWidth / iconAspectRatio;\n\n return (\n <LogoStyled\n css={{\n ...css,\n alignItems: \"center\",\n display: \"inline-flex\",\n gap: \"$small\",\n }}\n hover={useHover}\n outline={useOutline}\n theme={theme}>\n <div\n style={{\n display: \"flex\",\n height: `${iconHeight}px`,\n width: `${iconWidth}px`,\n }}>\n <IconSVG />\n </div>\n {!isIconOnly && (\n <Text\n as=\"span\"\n css={{\n fontFamily: \"$heading\",\n fontSize: `${textSize}px`,\n fontWeight: 600,\n lineHeight: 1,\n }}>\n consolia\n </Text>\n )}\n </LogoStyled>\n );\n}\n","import { Fragment, type JSX } from \"react\";\nimport { Balancer } from \"react-wrap-balancer\";\n\nimport { ArrowUpRightIcon } from \"../../icons\";\nimport { Icon, type IText } from \"../../index\";\nimport { TextStyled } from \"./styles\";\n\nexport default function Text({\n accent,\n as = \"p\",\n balanced,\n bottom,\n children,\n css,\n hero,\n highlight,\n href,\n inline,\n link,\n muted,\n override,\n rel,\n target,\n top,\n truncate,\n ...rest\n}: IText): JSX.Element {\n const TextBalancer = balanced ? Balancer : Fragment;\n const elementType = as || \"p\";\n const styleSize = override || as || \"p\";\n const isAnchor = as === \"a\";\n const isExternalLink = isAnchor && target === \"_blank\";\n const shouldShowInline = inline && ![\"span\", \"strong\"].includes(as);\n\n return (\n <TextStyled\n accent={accent}\n as={elementType}\n css={{\n ...(top && {\n marginTop: 0,\n paddingTop: top === \"none\" ? 0 : `$${top}`,\n }),\n ...(bottom && {\n marginBottom: 0,\n paddingBottom: bottom === \"none\" ? 0 : `$${bottom}`,\n }),\n ...(inline && {\n marginRight: inline === \"auto\" ? \"auto\" : `$${inline}`,\n }),\n ...css,\n }}\n hero={hero}\n highlight={highlight}\n href={isAnchor ? href : undefined}\n inline={shouldShowInline ? true : false}\n link={link || (isAnchor ? \"default\" : undefined)}\n muted={muted}\n rel={isAnchor ? (isExternalLink ? rel || \"noopener noreferrer\" : rel) : undefined}\n size={styleSize}\n target={isAnchor ? target : undefined}\n truncate={truncate}\n {...rest}>\n <TextBalancer>{children}</TextBalancer>\n {isExternalLink && (\n <Icon\n css={{\n marginLeft: \"$smallest\",\n marginTop: \"-$smallest\",\n }}\n forceSize={18}\n icon={<ArrowUpRightIcon />}\n />\n )}\n </TextStyled>\n );\n}\n","import { type JSX, cloneElement, isValidElement } from \"react\";\n\nimport type { IIcon } from \"../../types/components\";\n\nimport useMountSSR from \"../../hooks/useMountSSR\";\nimport { IconCardStyled, IconStyled } from \"./styles\";\n\nexport default function Icon({\n card,\n cardSize = \"default\",\n css,\n forceSize,\n icon,\n inline,\n theme,\n weight,\n ...rest\n}: IIcon): JSX.Element {\n const isMounted = useMountSSR();\n\n if (!isMounted || !icon) return <> </>;\n\n // Force duotone weight, use forceSize or default to 21\n const effectiveSize = forceSize ?? 21;\n const effectiveWeight = weight ?? \"duotone\";\n\n // Determine color based on theme - use Dark variant to match Badge\n const getThemeColor = (): string | undefined => {\n if (!theme || theme === \"default\") return undefined;\n\n const colorMap: Record<string, string> = {\n blue: \"blueDark\",\n green: \"greenDark\",\n orange: \"orangeDark\",\n red: \"redDark\",\n violet: \"violetDark\",\n yellow: \"yellowDark\",\n };\n\n return colorMap[theme] || theme;\n };\n\n const themeColor = getThemeColor();\n\n // Clone the icon element with props\n const iconWithProps = isValidElement(icon)\n ? cloneElement(icon, {\n size: effectiveSize,\n weight: effectiveWeight,\n } as Record<string, unknown>)\n : icon;\n\n const iconElement = (\n <IconStyled\n aria-hidden\n css={{\n ...(inline &&\n !card && {\n marginRight: inline === \"auto\" ? \"auto\" : `$${inline}`,\n }),\n ...(themeColor && {\n svg: {\n color: `$${themeColor} !important`,\n },\n }),\n ...(forceSize && {\n svg: {\n height: `${forceSize}px`,\n width: `${forceSize}px`,\n },\n }),\n ...(!card && css),\n }}\n role=\"img\"\n {...rest}>\n {iconWithProps}\n </IconStyled>\n );\n\n // If card variant, wrap in IconCardStyled\n if (card) {\n return (\n <IconCardStyled\n css={{\n ...(inline && {\n marginRight: inline === \"auto\" ? \"auto\" : `$${inline}`,\n }),\n ...css,\n }}\n size={cardSize}\n theme={theme}>\n {iconElement}\n </IconCardStyled>\n );\n }\n\n return iconElement;\n}\n","import { useEffect, useState, useRef, useDebugValue } from \"react\";\n\nexport default function useMountSSR(): boolean {\n const [isMounted, setIsMounted] = useState(false);\n const isMountedRef = useRef(false);\n const isDOM = typeof window !== \"undefined\" && window.document && window.document.documentElement;\n\n useDebugValue(isMounted ? \"Mounted\" : \"Not Mounted\");\n\n useEffect(() => {\n if (isDOM) {\n isMountedRef.current = true;\n setIsMounted(true);\n }\n\n return (): void => {\n isMountedRef.current = false;\n };\n }, [isDOM]);\n\n return isMountedRef.current && isMounted;\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const IconStyled = styled(\"span\", {\n display: \"inline-flex\",\n flexShrink: 0,\n verticalAlign: \"middle\",\n});\n\nexport const IconCardStyled = styled(\"div\", {\n // Inner icon container (double-border effect) - gets theme bg\n \"& > span\": {\n alignItems: \"center\",\n backgroundColor: \"$background\",\n border: \"1px solid $borderLight\",\n borderRadius: \"$small\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n // Outer card - always stays normal (no bg override)\n alignItems: \"center\",\n backgroundColor: \"$surface\",\n border: \"1px solid $border\",\n borderBottomColor: \"$borderBottom\",\n borderRadius: \"$default\",\n borderTopColor: \"$borderLight\",\n boxShadow: \"$subtle\",\n display: \"inline-flex\",\n justifyContent: \"center\",\n position: \"relative\",\n\n transition: \"$default\",\n\n variants: {\n size: {\n default: {\n \"& > span\": {\n padding: \"$small\",\n },\n padding: \"$small\",\n },\n large: {\n \"& > span\": {\n padding: \"$small\",\n },\n padding: \"$medium\",\n },\n small: {\n \"& > span\": {\n padding: \"$smaller\",\n },\n padding: \"$smaller\",\n },\n },\n theme: {\n blue: {\n \"& > span\": {\n backgroundColor: \"$blue\",\n borderColor: \"$blue\",\n },\n },\n default: {\n \"& > span\": {\n backgroundColor: \"$background\",\n borderColor: \"$borderLight\",\n },\n },\n green: {\n \"& > span\": {\n backgroundColor: \"$green\",\n borderColor: \"$green\",\n },\n },\n orange: {\n \"& > span\": {\n backgroundColor: \"$orange\",\n borderColor: \"$orange\",\n },\n },\n red: {\n \"& > span\": {\n backgroundColor: \"$red\",\n borderColor: \"$red\",\n },\n },\n violet: {\n \"& > span\": {\n backgroundColor: \"$violet\",\n borderColor: \"$violet\",\n },\n },\n yellow: {\n \"& > span\": {\n backgroundColor: \"$yellow\",\n borderColor: \"$yellow\",\n },\n },\n },\n },\n\n verticalAlign: \"middle\",\n});\n","import { keyframes, styled } from \"../../stitches.config\";\n\nconst fadeToOutline = keyframes({\n \"0%\": {\n fillOpacity: 1,\n strokeDasharray: \"2500\",\n strokeDashoffset: \"0\",\n },\n \"100%\": {\n fillOpacity: 0,\n strokeDasharray: \"2500\",\n strokeDashoffset: \"0\",\n },\n});\n\nconst fadeToFilled = keyframes({\n \"0%\": {\n fillOpacity: 0,\n strokeDasharray: \"2500\",\n strokeDashoffset: \"0\",\n },\n \"100%\": {\n fillOpacity: 1,\n strokeDasharray: \"2500\",\n strokeDashoffset: \"0\",\n },\n});\n\nconst strokeStyles = {\n stroke: \"currentColor\",\n strokeDasharray: \"2500\",\n strokeDashoffset: \"0\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"8\",\n} as const;\n\nexport const LogoStyled = styled(\"div\", {\n \"& svg\": {\n \"& path:last-of-type\": {\n fillOpacity: 1,\n ...strokeStyles,\n },\n fill: \"currentColor\",\n },\n variants: {\n hover: {\n true: {\n \"&:hover\": {\n \"& svg\": {\n \"& path:last-of-type\": {\n animation: `${fadeToOutline} 0.3s ease forwards`,\n },\n },\n },\n \"&:not(:hover)\": {\n \"& svg\": {\n \"& path:last-of-type\": {\n animation: `${fadeToFilled} 0.3s ease forwards`,\n },\n },\n },\n },\n },\n outline: {\n true: {\n \"& svg\": {\n \"& path:last-of-type\": {\n fillOpacity: 0,\n },\n },\n },\n },\n theme: {\n blue: {\n color: \"$blue\",\n },\n dark: {\n color: \"$text\",\n darkOnly: {\n color: \"$surface\",\n },\n },\n default: {\n color: \"$text\",\n },\n light: {\n color: \"$background\",\n darkOnly: {\n color: \"$text\",\n },\n },\n orange: {\n color: \"$orange\",\n },\n violet: {\n color: \"$violet\",\n },\n yellow: {\n color: \"$yellow\",\n },\n },\n },\n});\n","import { useEffect, useState } from \"react\";\n\nimport type { TBreakpoint, IUseBreakpoints } from \"../types/hooks\";\n\nimport { breakpoints } from \"../stitches.config\";\n\nconst extractMediaQuery = (cssRule: string): string => {\n return cssRule.replace(\"@media only screen and \", \"\");\n};\n\nconst getBreakpoint = (): TBreakpoint => {\n if (window.matchMedia(extractMediaQuery(breakpoints.phone)).matches) {\n return \"phone\";\n } else if (window.matchMedia(extractMediaQuery(breakpoints.tabletX)).matches) {\n return \"tabletX\";\n } else if (window.matchMedia(extractMediaQuery(breakpoints.laptopX)).matches) {\n return \"laptopX\";\n } else if (window.matchMedia(extractMediaQuery(breakpoints.desktopX)).matches) {\n return \"desktopX\";\n } else if (window.matchMedia(extractMediaQuery(breakpoints.wide)).matches) {\n return \"wide\";\n }\n\n return undefined;\n};\n\nexport default function useBreakpoints(): IUseBreakpoints {\n const [breakpoint, setBreakpoint] = useState<TBreakpoint>(\"phone\");\n\n const isPhone = breakpoint === \"phone\";\n const isTablet = breakpoint === \"tabletX\";\n const isLaptop = breakpoint === \"laptopX\";\n const isDesktop = breakpoint === \"desktopX\";\n const isWide = breakpoint === \"wide\";\n\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const breakpointListener = (): void => {\n const currentBreakpoint = getBreakpoint();\n\n setBreakpoint(currentBreakpoint);\n };\n\n breakpointListener();\n window.addEventListener(\"resize\", breakpointListener);\n\n return (): void => window.removeEventListener(\"resize\", breakpointListener);\n }\n\n return (): void => {};\n }, []);\n\n return { breakpoint, isDesktop, isLaptop, isPhone, isTablet, isWide };\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const ViewStyled = styled(\"section\", {\n backgroundColor: \"$background\",\n color: \"$text\",\n paddingLeft: \"$medium\",\n paddingRight: \"$medium\",\n phone: {\n paddingLeft: \"$small\",\n paddingRight: \"$small\",\n },\n position: \"relative\",\n variants: {\n hero: {\n true: {\n background: \"$text !important\",\n darkOnly: {\n background: \"$background\",\n },\n overflow: \"hidden\",\n },\n },\n inverted: {\n true: {\n backgroundColor: \"$background\",\n color: \"$text\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const ViewContainerStyled = styled(\"div\", {\n position: \"relative\",\n\n variants: {\n app: {\n false: {\n width: \"100%\",\n },\n true: {\n desktopX: {\n maxWidth: \"2400px\",\n },\n margin: \"0 auto\",\n wide: {\n maxWidth: \"2800px\",\n },\n width: \"98%\",\n },\n },\n container: {\n false: {\n width: \"100%\",\n },\n true: {\n desktopX: {\n maxWidth: \"1900px\",\n },\n margin: \"0 auto\",\n wide: {\n maxWidth: \"2200px\",\n },\n width: \"96%\",\n },\n },\n },\n\n zIndex: 2,\n});\n\nexport default ViewStyled;\n","import { useState, type JSX } from \"react\";\n\nimport { SignInIcon, SignOutIcon, XCircleIcon } from \"../../icons\";\nimport { Button, Loading, Icon, type IBox } from \"../../index\";\nimport {\n BoxExitStyled,\n BoxExpanderTrigger,\n BoxFlexStyled,\n BoxFooterStyled,\n BoxHeaderStyled,\n BoxInnerStyled,\n BoxLoadingStyled,\n BoxStyled,\n BoxImageStyled,\n} from \"./styles\";\n\nexport default function Box({\n children,\n closable,\n css,\n cta,\n expandable,\n expandableHeight,\n footer,\n header,\n hover,\n id,\n image,\n imageCTA,\n imageFit,\n imageHeight,\n imagePosition,\n imageTarget,\n loading,\n minimal,\n onClick,\n role,\n small,\n tabIndex,\n theme = \"default\",\n}: IBox): JSX.Element | null {\n const [isOpen, setIsOpen] = useState(true);\n const [isMounted, setIsMounted] = useState(true);\n const [isExpanded, setIsExpanded] = useState(false);\n\n function handleClose(): void {\n setIsOpen(false);\n setTimeout(() => {\n setIsMounted(false);\n }, 100);\n }\n\n const padding = header || footer || image || minimal ? \"none\" : small ? \"small\" : \"default\";\n const hasInteraction = !!(cta || imageCTA || onClick);\n const isHoverEnabled = !!(hover ?? hasInteraction);\n\n if (!isMounted) return null;\n\n return (\n <BoxStyled\n animation={!isOpen}\n aria-busy={!!loading || undefined}\n aria-label={cta ? (typeof header === \"string\" ? header : undefined) : undefined}\n as={cta ? \"a\" : \"div\"}\n collapsed={expandable && !isExpanded}\n css={{\n ...(expandable && expandableHeight && !isExpanded && { maxHeight: expandableHeight }),\n ...css,\n }}\n footer={!!footer}\n hover={!loading && isHoverEnabled}\n href={cta}\n id={id}\n loading={!!loading}\n padding={padding}\n rel={cta ? \"noopener noreferrer\" : undefined}\n role={role}\n tabIndex={tabIndex}\n target={cta ? \"_blank\" : undefined}\n theme={header ? \"default\" : theme || \"default\"}\n onClick={onClick}>\n {loading && (\n <BoxLoadingStyled>\n <Loading />\n </BoxLoadingStyled>\n )}\n\n <BoxFlexStyled>\n {image && (\n <BoxImageStyled\n css={{\n img: {\n height: imageHeight || \"100%\",\n objectFit: imageFit || \"cover\",\n objectPosition: imagePosition || \"center\",\n width: \"100%\",\n },\n }}>\n {imageCTA && !cta ? (\n <a href={imageCTA} rel=\"noopener noreferrer\" target={imageTarget || \"_blank\"}>\n {image}\n </a>\n ) : (\n image\n )}\n </BoxImageStyled>\n )}\n {header && (\n <BoxHeaderStyled\n padding={minimal ? \"none\" : small ? \"small\" : \"default\"}\n theme={theme === \"border\" ? \"border\" : \"default\"}>\n {header}\n </BoxHeaderStyled>\n )}\n\n {image || header || footer ? (\n <BoxInnerStyled padding={minimal ? \"none\" : small ? \"small\" : \"default\"}>\n {children}\n </BoxInnerStyled>\n ) : (\n children\n )}\n </BoxFlexStyled>\n\n {footer && (\n <BoxFooterStyled fill={!header} padding={minimal ? \"none\" : small ? \"small\" : \"default\"}>\n {footer}\n </BoxFooterStyled>\n )}\n\n {expandable && !cta && (\n <BoxExpanderTrigger expanded={isExpanded}>\n <Button\n icon={isExpanded ? <Icon icon={<SignInIcon />} /> : <Icon icon={<SignOutIcon />} />}\n small\n theme={isExpanded ? \"default\" : \"solid\"}\n onClick={() => setIsExpanded(!isExpanded)}>\n {isExpanded ? \"Collapse\" : \"Expand\"}\n </Button>\n </BoxExpanderTrigger>\n )}\n\n {closable && !cta && (\n <BoxExitStyled onClick={() => handleClose()}>\n <Button small theme=\"minimal\">\n <Icon icon={<XCircleIcon />} />\n </Button>\n </BoxExitStyled>\n )}\n </BoxStyled>\n );\n}\n","import { forwardRef, type JSX } from \"react\";\n\nimport { ArrowUpRightIcon } from \"../../icons\";\nimport { Loading, Icon, type IButton } from \"../../index\";\nimport { ButtonIconStyled, ButtonLoadingStyled, ButtonStyled, ButtonNewDotStyled } from \"./styles\";\n\nconst Button = forwardRef<HTMLButtonElement, IButton>(\n (\n {\n block,\n children,\n css,\n disabled,\n external,\n icon,\n iconPosition,\n inline,\n loading,\n new: isNew,\n onClick,\n small,\n theme,\n ...rest\n },\n ref,\n ): JSX.Element => {\n const isDisabled = disabled || loading;\n const showLeftIcon = icon && (iconPosition === \"left\" || !iconPosition) && !external;\n const showRightIcon = icon && iconPosition === \"right\" && !external;\n\n return (\n <ButtonStyled\n ref={ref}\n aria-busy={loading || undefined}\n block={block}\n css={{\n ...(inline && {\n alignSelf: \"center\",\n marginRight: inline === \"auto\" ? \"auto\" : `$${inline}`,\n verticalAlign: \"middle\",\n }),\n ...css,\n }}\n disabled={isDisabled}\n loading={loading}\n small={small}\n theme={theme || \"default\"}\n type=\"button\"\n onClick={!isDisabled ? onClick : undefined}\n {...rest}>\n {loading && (\n <ButtonLoadingStyled>\n <Loading />\n </ButtonLoadingStyled>\n )}\n\n {showLeftIcon && (\n <ButtonIconStyled align={small ? \"smallLeft\" : \"left\"}>{icon}</ButtonIconStyled>\n )}\n\n {children}\n\n {showRightIcon && (\n <ButtonIconStyled align={small ? \"smallRight\" : \"right\"}>{icon}</ButtonIconStyled>\n )}\n\n {external && (\n <ButtonIconStyled align={small ? \"smallRight\" : \"right\"}>\n <Icon icon={<ArrowUpRightIcon />} />\n </ButtonIconStyled>\n )}\n\n {isNew && (\n <ButtonNewDotStyled\n theme={theme === \"minimal\" || theme === \"solid\" ? theme : \"default\"}\n />\n )}\n </ButtonStyled>\n );\n },\n);\n\nexport default Button;\n","import { pulse, styled } from \"../../stitches.config\";\n\nexport const ButtonStyled = styled(\"button\", {\n \"&:active\": {\n boxShadow: \"$inset\",\n transform: \"translateY(0)\",\n transition: \"$fast\",\n },\n \"&:disabled\": {\n cursor: \"not-allowed\",\n opacity: \"$light\",\n },\n \"&:focus-visible\": {\n outline: \"2px solid $border\",\n outlineOffset: \"2px\",\n },\n alignContent: \"center\",\n alignItems: \"center\",\n appearance: \"none\",\n backgroundColor: \"$surface\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$subtle\",\n color: \"$text\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n fontFamily: \"$default\",\n fontSize: \"$default\",\n justifyContent: \"center\",\n lineHeight: \"$default\",\n minHeight: \"$large\",\n padding: \"$smallest $small\",\n phone: {\n minHeight: \"$medium\",\n },\n position: \"relative\",\n\n transition: \"$default\",\n variants: {\n block: {\n true: {\n display: \"block\",\n width: \"100%\",\n },\n },\n loading: {\n true: {\n cursor: \"wait\",\n opacity: \"$light\",\n },\n },\n small: {\n true: {\n fontSize: \"$small\",\n lineHeight: \"$small\",\n minHeight: \"$medium\",\n padding: \"$smallest $small\",\n phone: {\n minHeight: \"$small\",\n },\n },\n },\n theme: {\n danger: {\n \"&:not(:disabled):hover\": {\n boxShadow: \"$medium\",\n opacity: \"$default\",\n transform: \"translateY(-1px)\",\n },\n backgroundColor: \"$red\",\n borderColor: \"$red\",\n color: \"$text\",\n },\n default: {\n \"&:not(:disabled):hover\": {\n backgroundColor: \"$surfaceHover\",\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n boxShadow: \"$default\",\n transform: \"translateY(-1px)\",\n },\n },\n fill: {\n \"&:not(:disabled):hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n boxShadow: \"$medium\",\n transform: \"translateY(-1px)\",\n },\n backgroundColor: \"$surfaceLight\",\n },\n minimal: {\n \"&:not(:disabled):hover\": {\n backgroundColor: \"$surfaceHover\",\n },\n backgroundColor: \"transparent\",\n border: \"none\",\n boxShadow: \"none\",\n },\n solid: {\n \"&:not(:disabled):hover\": {\n boxShadow: \"$medium\",\n transform: \"translateY(-1px)\",\n },\n backgroundColor: \"$text\",\n borderColor: \"$text\",\n boxShadow: \"$default\",\n color: \"$background\",\n },\n success: {\n \"&:not(:disabled):hover\": {\n boxShadow: \"$medium\",\n opacity: \"$default\",\n transform: \"translateY(-1px)\",\n },\n backgroundColor: \"$green\",\n borderColor: \"$green\",\n color: \"$text\",\n },\n warning: {\n \"&:not(:disabled):hover\": {\n boxShadow: \"$medium\",\n opacity: \"$default\",\n transform: \"translateY(-1px)\",\n },\n backgroundColor: \"$orange\",\n borderColor: \"$orange\",\n color: \"$text\",\n },\n },\n },\n verticalAlign: \"middle\",\n whiteSpace: \"nowrap\",\n\n width: \"fit-content\",\n});\n\nexport const ButtonIconStyled = styled(\"span\", {\n display: \"inline-flex\",\n justifyContent: \"center\",\n transition: \"$default\",\n variants: {\n align: {\n left: {\n marginRight: \"$small\",\n },\n right: {\n [`${ButtonStyled}:hover &`]: {\n transform: \"translateX(2px)\",\n },\n marginLeft: \"$small\",\n },\n smallLeft: {\n marginRight: \"$smaller\",\n },\n smallRight: {\n [`${ButtonStyled}:hover &`]: {\n transform: \"translateX(2px)\",\n },\n marginLeft: \"$smaller\",\n },\n },\n },\n\n verticalAlign: \"middle\",\n});\n\nexport const ButtonLoadingStyled = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n inset: 0,\n justifyContent: \"center\",\n position: \"absolute\",\n zIndex: 1,\n});\n\nexport const ButtonNewDotStyled = styled(\"span\", {\n animation: `${pulse} 3s infinite linear`,\n borderRadius: \"$full\",\n height: \"$small\",\n position: \"absolute\",\n right: \"-3px\",\n top: \"-3px\",\n variants: {\n theme: {\n default: {\n backgroundColor: \"$yellow\",\n },\n minimal: {\n backgroundColor: \"$yellow\",\n },\n solid: {\n backgroundColor: \"$yellow\",\n },\n },\n },\n width: \"$small\",\n\n zIndex: 2,\n});\n","import { fadeOut, styled } from \"../../stitches.config\";\n\nexport const BoxStyled = styled(\"article\", {\n backgroundColor: \"$surface\",\n border: \"1px solid $border\",\n borderBottomColor: \"$borderBottom\",\n borderRadius: \"$default\",\n borderTopColor: \"$borderLight\",\n boxShadow: \"$subtle\",\n color: \"$text\",\n display: \"block\",\n height: \"100%\",\n overflow: \"hidden\",\n position: \"relative\",\n transition: \"$default\",\n variants: {\n animation: {\n true: {\n animation: `${fadeOut} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n },\n collapsed: {\n true: {\n \"&::after\": {\n background: \"linear-gradient(to bottom, transparent 0%, $background 100%)\",\n bottom: 0,\n content: \"\",\n height: \"40%\",\n left: 0,\n position: \"absolute\",\n right: 0,\n },\n },\n },\n footer: {\n true: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n },\n },\n hover: {\n true: {\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n boxShadow: \"$medium\",\n transform: \"translateY(-1px)\",\n transition: \"$default\",\n },\n cursor: \"pointer\",\n },\n },\n loading: {\n true: {\n cursor: \"wait\",\n opacity: 0.6,\n },\n },\n padding: {\n default: {\n padding: \"$small $medium\",\n },\n none: {\n padding: 0,\n },\n small: {\n padding: \"$smaller $small\",\n },\n },\n theme: {\n // Color themes apply to entire box - header rgb($surfaceLight) naturally darkens over colors\n blue: {\n backgroundColor: \"$blueLight\",\n },\n border: {\n backgroundColor: \"transparent\",\n boxShadow: \"none\",\n },\n default: {},\n fill: {\n backgroundColor: \"$surfaceLight\",\n },\n green: {\n backgroundColor: \"$greenLight\",\n },\n orange: {\n backgroundColor: \"$orangeLight\",\n },\n pink: {\n backgroundColor: \"$pinkLight\",\n },\n red: {\n backgroundColor: \"$redLight\",\n },\n solid: {\n backgroundColor: \"$text\",\n color: \"$background\",\n },\n violet: {\n backgroundColor: \"$violetLight\",\n },\n yellow: {\n backgroundColor: \"$yellowLight\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const BoxHeaderStyled = styled(\"div\", {\n backgroundColor: \"$surfaceLight\",\n borderBottom: \"1px solid $border\",\n color: \"$text\",\n\n variants: {\n padding: {\n default: {\n padding: \"$small $medium\",\n },\n none: {\n borderBottom: \"none\",\n padding: 0,\n },\n small: {\n padding: \"$small\",\n },\n },\n theme: {\n blue: {\n backgroundColor: \"$blueLight\",\n borderBottomColor: \"$blueDark\",\n },\n // Header always has $surfaceLight bg - it layers nicely over colored boxes\n border: {\n backgroundColor: \"transparent\",\n },\n default: {},\n green: {\n backgroundColor: \"$greenLight\",\n borderBottomColor: \"$greenDark\",\n },\n orange: {\n backgroundColor: \"$orangeLight\",\n borderBottomColor: \"$orangeDark\",\n },\n pink: {\n backgroundColor: \"$pinkLight\",\n borderBottomColor: \"$pinkDark\",\n },\n red: {\n backgroundColor: \"$redLight\",\n borderBottomColor: \"$redDark\",\n },\n solid: {\n backgroundColor: \"$text\",\n borderBottomColor: \"$text\",\n color: \"$background\",\n },\n violet: {\n backgroundColor: \"$violetLight\",\n borderBottomColor: \"$violetDark\",\n },\n yellow: {\n backgroundColor: \"$yellowLight\",\n borderBottomColor: \"$yellowDark\",\n },\n },\n },\n});\n\nexport const BoxImageStyled = styled(\"div\", {\n height: \"100%\",\n width: \"100%\",\n});\n\nexport const BoxFooterStyled = styled(\"div\", {\n backgroundColor: \"$surfaceLight\",\n borderTop: \"1px solid $border\",\n color: \"$text\",\n\n variants: {\n fill: {\n false: {\n backgroundColor: \"transparent\",\n },\n true: {\n backgroundColor: \"$surfaceLight\",\n },\n },\n padding: {\n default: {\n padding: \"$small $medium\",\n },\n none: {\n backgroundColor: \"transparent\",\n borderTop: \"none\",\n padding: 0,\n },\n small: {\n padding: \"$small\",\n },\n },\n },\n});\n\nexport const BoxInnerStyled = styled(\"div\", {\n variants: {\n padding: {\n default: {\n padding: \"$small $medium\",\n },\n none: {\n padding: 0,\n },\n small: {\n padding: \"$smaller $small\",\n },\n },\n },\n});\n\nexport const BoxFlexStyled = styled(\"div\", {\n height: \"100%\",\n position: \"relative\",\n width: \"100%\",\n});\n\nexport const BoxExitStyled = styled(\"div\", {\n position: \"absolute\",\n right: \"$small\",\n top: \"$small\",\n});\n\nexport const BoxLoadingStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$background\",\n display: \"flex\",\n inset: 0,\n justifyContent: \"center\",\n opacity: 0.95,\n position: \"absolute\",\n});\n\nexport const BoxExpanderTrigger = styled(\"div\", {\n bottom: \"$small\",\n display: \"flex\",\n justifyContent: \"center\",\n left: 0,\n position: \"absolute\",\n right: 0,\n\n variants: {\n expanded: {\n true: {\n bottom: \"auto\",\n justifyContent: \"flex-start\",\n padding: \"$medium $medium $small\",\n position: \"relative\",\n },\n },\n },\n});\n\nexport default BoxStyled;\n","import type { JSX } from \"react\";\n\nimport { type IDivider } from \"../../index\";\nimport { DividerStyled } from \"./styles\";\n\nexport default function Divider({ bottom, css, top, ...rest }: IDivider): JSX.Element {\n return (\n <DividerStyled\n aria-orientation=\"horizontal\"\n css={{\n ...(top && {\n marginTop: `$${top}`,\n }),\n ...(bottom && {\n marginBottom: `$${bottom}`,\n }),\n ...css,\n }}\n role=\"separator\"\n {...rest}\n />\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const DividerStyled = styled(\"hr\", {\n backgroundColor: \"transparent\",\n border: \"none\",\n borderBottom: \"1px solid $borderLight\",\n margin: \"$medium 0\",\n padding: 0,\n});\n","import React, { ChangeEvent, forwardRef, useState, type JSX } from \"react\";\nimport toast from \"react-hot-toast\";\n\nimport {\n ArrowRightIcon,\n CheckCircleIcon,\n ClipboardIcon,\n EyeIcon,\n EyeSlashIcon,\n WarningIcon,\n XCircleIcon,\n} from \"../../icons\";\nimport {\n Badge,\n Button,\n Loading,\n useEventListener,\n useBreakpoints,\n Icon,\n type IInput,\n} from \"../../index\";\nimport {\n InputAreaStyled,\n InputCallbackStyled,\n InputFunctionStyled,\n InputStyled,\n InputCoreStyled,\n} from \"./styles\";\n\nconst Input = forwardRef<HTMLInputElement, IInput>(\n (\n {\n copy,\n css,\n customActions,\n disabled,\n error,\n errorMessage,\n id,\n listen,\n loading,\n name,\n onChange,\n placeholder,\n reset,\n resetFunction,\n reveal,\n submit,\n submitFunction,\n submitValid,\n success,\n successMessage,\n type,\n value,\n warning,\n warningMessage,\n width,\n ...rest\n }: IInput,\n ref,\n ): JSX.Element => {\n const { isPhone } = useBreakpoints();\n const [inputValue, setInputValue] = useState((value as string) || \"\");\n const [isCopied, setIsCopied] = useState(false);\n const [isRevealed, setIsRevealed] = useState(false);\n const [isSubmitted, setIsSubmitted] = useState(false);\n\n const isSubmitDisabled = !submitValid || !submitValid(inputValue) || isSubmitted || disabled;\n const isSubmitValid = submitValid && submitValid(inputValue);\n const hasFunctions = loading || submit || copy || reveal || reset || customActions;\n const hasCallback = error || success || warning;\n\n const getTheme = (): \"success\" | \"warning\" | \"danger\" | undefined => {\n if (error) return \"danger\";\n if (success) return \"success\";\n if (warning) return \"warning\";\n\n return undefined;\n };\n\n function handleChange(event: ChangeEvent<HTMLInputElement>): void {\n setInputValue(event.target.value);\n setIsSubmitted(false);\n if (onChange) {\n onChange(event);\n }\n }\n\n function handleCopy(): void {\n if (copy && inputValue) {\n navigator?.clipboard?.writeText(inputValue.toString());\n setIsCopied(true);\n toast(\"Copied to clipboard\");\n setTimeout(() => {\n setIsCopied(false);\n }, 2000);\n } else {\n toast(\"Nothing to copy\");\n }\n }\n\n function handleReveal(): void {\n setIsRevealed(!isRevealed);\n }\n\n function handleReset(): void {\n setInputValue(\"\");\n if (resetFunction) {\n resetFunction();\n }\n }\n\n function handleSubmit(): void {\n if (submitFunction && isSubmitValid) {\n submitFunction(inputValue || \"\");\n setIsSubmitted(true);\n }\n }\n\n useEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (listen && event.key === \"Enter\" && submitFunction && isSubmitValid) {\n handleSubmit();\n }\n });\n\n return (\n <InputStyled\n css={{\n maxWidth: width || \"100%\",\n width: width || \"100%\",\n ...css,\n }}\n disabled={disabled}>\n <InputCoreStyled theme={getTheme()}>\n <InputAreaStyled\n ref={ref}\n aria-busy={loading || undefined}\n aria-describedby={error || success || warning ? `${id || name}-status` : undefined}\n aria-invalid={error || undefined}\n disabled={disabled}\n id={id || name}\n name={name}\n placeholder={placeholder}\n type={isRevealed ? \"text\" : type || \"text\"}\n value={inputValue}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => handleChange(event)}\n {...rest}\n />\n\n {hasFunctions && (\n <InputFunctionStyled>\n {loading && <Loading />}\n\n {customActions}\n\n {copy && (\n <Button\n disabled={isCopied || disabled}\n icon={!isPhone ? <Icon icon={<ClipboardIcon />} /> : undefined}\n small\n onClick={() => handleCopy()}>\n {!isPhone ? \"Copy\" : <Icon icon={<ClipboardIcon />} />}\n </Button>\n )}\n\n {reveal && (\n <Button\n disabled={disabled}\n icon={\n !isPhone ? (\n !isRevealed ? (\n <Icon icon={<EyeIcon />} />\n ) : (\n <Icon icon={<EyeSlashIcon />} />\n )\n ) : undefined\n }\n small\n onClick={() => handleReveal()}>\n {!isPhone ? (\n !isRevealed ? (\n \"Reveal\"\n ) : (\n \"Hide\"\n )\n ) : !isRevealed ? (\n <Icon icon={<EyeIcon />} />\n ) : (\n <Icon icon={<EyeSlashIcon />} />\n )}\n </Button>\n )}\n\n {reset && inputValue && (\n <Button disabled={disabled} small onClick={() => handleReset()}>\n <Icon icon={<XCircleIcon />} />\n </Button>\n )}\n\n {submit && (\n <Button\n disabled={isSubmitDisabled}\n icon={!isPhone ? <Icon icon={<ArrowRightIcon />} /> : undefined}\n iconPosition={!isPhone ? \"right\" : undefined}\n small\n theme={isSubmitValid ? \"solid\" : \"default\"}\n type=\"submit\"\n onClick={() => handleSubmit()}>\n {!isPhone ? submit : <Icon icon={<ArrowRightIcon />} />}\n </Button>\n )}\n </InputFunctionStyled>\n )}\n </InputCoreStyled>\n\n {hasCallback && (\n <InputCallbackStyled aria-live=\"polite\" id={`${id || name}-status`} role=\"status\">\n {error && (\n <Badge icon={<Icon icon={<WarningIcon />} />}>{errorMessage || \"Error\"}</Badge>\n )}\n {success && (\n <Badge icon={<Icon icon={<CheckCircleIcon />} />}>\n {successMessage || \"Success\"}\n </Badge>\n )}\n {warning && (\n <Badge icon={<Icon icon={<WarningIcon />} />}>{warningMessage || \"Warning\"}</Badge>\n )}\n </InputCallbackStyled>\n )}\n </InputStyled>\n );\n },\n);\n\nexport default Input;\n","import React, { useState, type JSX } from \"react\";\nimport { toast } from \"react-hot-toast\";\n\nimport { ClipboardIcon, XCircleIcon } from \"../../icons\";\nimport { Loading, Icon, type IBadge } from \"../../index\";\nimport { BadgeIconStyled, BadgeStyled, BadgeLoadingStyled, BadgeNewDotStyled } from \"./styles\";\n\nexport default function Badge({\n block,\n children,\n closable,\n copy,\n css,\n icon,\n iconPosition,\n inline,\n link,\n loading,\n new: isNew,\n onClick,\n small,\n theme = \"default\",\n ...rest\n}: IBadge): JSX.Element | null {\n const [isOpen, setIsOpen] = useState(true);\n const [isMounted, setIsMounted] = useState(true);\n\n function handleClose(): void {\n setIsOpen(false);\n setTimeout(() => {\n setIsMounted(false);\n }, 150);\n }\n\n function handleCopy(): void {\n if (copy) {\n navigator.clipboard.writeText(copy.toString());\n toast(\"Copied to clipboard\");\n } else {\n toast(\"Nothing to copy\");\n }\n }\n\n if (!isMounted) return null;\n\n const isInteractive = Boolean(link || onClick || copy);\n\n return (\n <BadgeStyled\n animation={!isOpen}\n aria-busy={loading || undefined}\n block={block}\n css={{\n ...(inline && {\n display: \"inline-flex\",\n marginRight: inline === \"auto\" ? \"auto\" : `$${inline}`,\n verticalAlign: \"middle\",\n }),\n ...css,\n }}\n link={isInteractive}\n loading={loading}\n role={isInteractive ? \"button\" : undefined}\n small={small}\n tabIndex={isInteractive ? 0 : undefined}\n theme={theme}\n onClick={copy ? handleCopy : onClick}\n onKeyDown={(e: React.KeyboardEvent): void => {\n if (!isInteractive) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n (e.currentTarget as HTMLElement).click();\n }\n }}\n {...rest}>\n {loading && (\n <BadgeLoadingStyled>\n <Loading />\n </BadgeLoadingStyled>\n )}\n\n {icon && iconPosition !== \"right\" && !copy && (\n <BadgeIconStyled align={small ? \"smallLeft\" : \"left\"}>{icon}</BadgeIconStyled>\n )}\n\n {copy && (\n <BadgeIconStyled align={small ? \"smallLeft\" : \"left\"} hover>\n <Icon icon={<ClipboardIcon />} />\n </BadgeIconStyled>\n )}\n\n {children}\n\n {icon && iconPosition === \"right\" && !closable && !copy && (\n <BadgeIconStyled align={small ? \"smallRight\" : \"right\"}>{icon}</BadgeIconStyled>\n )}\n\n {closable && (\n <BadgeIconStyled\n align={small ? \"smallRight\" : \"right\"}\n hover\n role=\"button\"\n tabIndex={0}\n onClick={(e: React.MouseEvent): void => {\n e.stopPropagation();\n handleClose();\n }}\n onKeyDown={(e: React.KeyboardEvent): void => {\n e.stopPropagation();\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleClose();\n }\n }}>\n <Icon icon={<XCircleIcon />} />\n </BadgeIconStyled>\n )}\n\n {isNew && <BadgeNewDotStyled theme={theme} />}\n </BadgeStyled>\n );\n}\n","import { styled, fadeOut, pulse } from \"../../stitches.config\";\n\nexport const BadgeStyled = styled(\"span\", {\n alignContent: \"center\",\n alignItems: \"center\",\n backgroundColor: \"$surface\",\n border: \"1px solid $border\",\n borderBottomColor: \"$borderBottom\",\n borderRadius: \"$default\",\n borderTopColor: \"$borderLight\",\n boxShadow: \"$subtle\",\n color: \"$text\",\n display: \"inline-flex\",\n fontFamily: \"$heading\",\n fontSize: \"$micro\",\n fontWeight: 600,\n justifyContent: \"center\",\n letterSpacing: \"0.01em\",\n lineHeight: \"1.2\",\n padding: \"$smallest $smaller\",\n position: \"relative\",\n transition: \"$default\",\n variants: {\n animation: {\n true: {\n animation: `${fadeOut} 150ms linear`,\n animationFillMode: \"forwards\",\n },\n },\n block: {\n true: {\n justifyContent: \"initial\",\n width: \"100%\",\n },\n },\n link: {\n true: {\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n cursor: \"pointer\",\n },\n },\n loading: {\n true: {\n cursor: \"wait\",\n opacity: \"$light\",\n },\n },\n small: {\n true: {\n fontSize: \"$micro\",\n padding: \"$smaller $small\",\n },\n },\n theme: {\n blue: {\n backgroundColor: \"$blue\",\n borderColor: \"$blue\",\n color: \"$blueDark\",\n },\n border: {\n backgroundColor: \"transparent\",\n borderColor: \"$border\",\n },\n default: {\n backgroundColor: \"$surface\",\n borderColor: \"$border\",\n color: \"$textMuted\",\n },\n green: {\n backgroundColor: \"$green\",\n borderColor: \"$green\",\n color: \"$greenDark\",\n },\n orange: {\n backgroundColor: \"$orange\",\n borderColor: \"$orange\",\n color: \"$orangeDark\",\n },\n pink: {\n backgroundColor: \"$pink\",\n borderColor: \"$pink\",\n color: \"$pinkDark\",\n },\n red: {\n backgroundColor: \"$red\",\n borderColor: \"$red\",\n color: \"$redDark\",\n },\n solid: {\n backgroundColor: \"$text\",\n borderColor: \"$text\",\n color: \"$background\",\n },\n violet: {\n backgroundColor: \"$violet\",\n borderColor: \"$violet\",\n color: \"$violetDark\",\n },\n yellow: {\n backgroundColor: \"$yellow\",\n borderColor: \"$yellow\",\n color: \"$yellowDark\",\n },\n },\n },\n\n verticalAlign: \"middle\",\n});\n\nexport const BadgeIconStyled = styled(\"span\", {\n color: \"inherit\",\n display: \"inline-flex\",\n variants: {\n align: {\n left: {\n marginRight: \"$small\",\n },\n right: {\n marginLeft: \"$small\",\n },\n smallLeft: {\n marginRight: \"$smaller\",\n },\n smallRight: {\n marginLeft: \"$smaller\",\n },\n },\n hover: {\n true: {\n \"&:hover\": {\n opacity: \"$light\",\n transition: \"$default\",\n },\n cursor: \"pointer\",\n },\n },\n },\n\n verticalAlign: \"middle\",\n});\n\nexport const BadgeLoadingStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$background\",\n display: \"flex\",\n inset: 0,\n justifyContent: \"center\",\n position: \"absolute\",\n});\n\nexport const BadgeNewDotStyled = styled(\"span\", {\n animation: `${pulse} 3s infinite`,\n backgroundColor: \"$text\",\n borderRadius: \"$full\",\n boxShadow: \"0 0 0 $smallest $background\",\n height: \"$small\",\n position: \"absolute\",\n right: \"-$smaller\",\n top: \"-$smaller\",\n variants: {\n theme: {\n blue: {\n backgroundColor: \"$blue\",\n },\n border: {\n backgroundColor: \"$text\",\n },\n default: {\n backgroundColor: \"$text\",\n },\n green: {\n backgroundColor: \"$green\",\n },\n orange: {\n backgroundColor: \"$orange\",\n },\n pink: {\n backgroundColor: \"$pink\",\n },\n red: {\n backgroundColor: \"$red\",\n },\n solid: {\n backgroundColor: \"$yellow\",\n },\n violet: {\n backgroundColor: \"$violet\",\n },\n yellow: {\n backgroundColor: \"$yellow\",\n },\n },\n },\n width: \"$small\",\n\n zIndex: 2,\n});\n","import { RefObject, useEffect, useRef } from \"react\";\n\nexport default function useEventListener<K extends keyof WindowEventMap>(\n eventName: K,\n handler: (event: WindowEventMap[K]) => void,\n element?: RefObject<Window | HTMLElement | null>,\n options?: boolean | AddEventListenerOptions,\n): void {\n const savedHandler = useRef(handler);\n\n useEffect(() => {\n const eventListener = ((event: WindowEventMap[K]) =>\n savedHandler.current(event)) as EventListener;\n\n const targetElement: Window | HTMLElement | null = element?.current || window;\n\n if (!targetElement) return;\n\n savedHandler.current = handler;\n targetElement.addEventListener(eventName, eventListener, options);\n\n return (): void => {\n targetElement.removeEventListener(eventName, eventListener, options);\n };\n }, [eventName, handler, options, element]);\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const InputStyled = styled(\"div\", {\n position: \"relative\",\n variants: {\n disabled: {\n true: {\n cursor: \"not-allowed\",\n opacity: \"$light\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const InputCoreStyled = styled(\"div\", {\n \"&:focus-visible\": {\n outline: 0,\n },\n \"&:focus-within\": {\n borderBottomColor: \"$borderEmphasis\",\n borderLeftColor: \"$borderStrong\",\n borderRightColor: \"$borderStrong\",\n borderTopColor: \"$border\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n alignItems: \"center\",\n backgroundColor: \"$surface\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$subtle\",\n display: \"flex\",\n justifyContent: \"space-between\",\n minHeight: \"$large\",\n transition: \"$default\",\n variants: {\n theme: {\n danger: {\n \"&:focus-within\": {\n borderColor: \"$red\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n borderColor: \"$red\",\n },\n success: {\n \"&:focus-within\": {\n borderColor: \"$green\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n borderColor: \"$green\",\n },\n warning: {\n \"&:focus-within\": {\n borderColor: \"$orange\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n borderColor: \"$orange\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const InputAreaStyled = styled(\"input\", {\n \"&::placeholder\": {\n color: \"$text\",\n opacity: \"$light\",\n },\n \"&:after\": {\n clear: \"both\",\n content: '\"\"',\n },\n appearance: \"none\",\n backgroundColor: \"transparent\",\n border: \"none\",\n color: \"$text\",\n display: \"block\",\n flex: \"1 1 auto\",\n fontFamily: \"$default\",\n fontSize: \"$default\",\n minWidth: 0,\n padding: \"0 $small\",\n phone: {\n fontSize: \"16px !important\",\n },\n});\n\nexport const InputFunctionStyled = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n flexBasis: \"auto\",\n flexDirection: \"row\",\n gap: \"$smaller\",\n justifyContent: \"flex-start\",\n padding: \"0 $small 0 0\",\n});\n\nexport const InputCallbackStyled = styled(\"div\", {\n display: \"block\",\n paddingTop: \"$small\",\n textAlign: \"left\",\n});\n","import {\n ChangeEvent,\n KeyboardEvent,\n forwardRef,\n useCallback,\n useEffect,\n useState,\n type JSX,\n} from \"react\";\nimport toast from \"react-hot-toast\";\n\nimport {\n ClipboardIcon,\n XCircleIcon,\n ArrowRightIcon,\n WarningIcon,\n CheckCircleIcon,\n} from \"../../icons\";\nimport { Badge, Button, Loading, useBreakpoints, Icon, type IField, Stack } from \"../../index\";\nimport {\n FieldStyled,\n FieldAreaStyled,\n FieldFunctionStyled,\n FieldCallbackStyled,\n FieldCoreStyled,\n} from \"./styles\";\n\nconst Field = forwardRef<HTMLTextAreaElement, IField>(\n (\n {\n cancel,\n cancelFunction,\n cols,\n copy,\n css,\n customActions,\n disabled,\n error,\n errorMessage,\n id,\n listen,\n loading,\n name,\n onChange,\n placeholder,\n reset,\n resetFunction,\n rows,\n submit,\n submitFunction,\n submitValid,\n success,\n successMessage,\n value,\n warning,\n warningMessage,\n width,\n ...rest\n }: IField,\n ref,\n ): JSX.Element => {\n useBreakpoints();\n const [inputValue, setInputValue] = useState((value as string) || \"\");\n\n // Sync internal state with value prop changes\n useEffect(() => {\n setInputValue((value as string) || \"\");\n }, [value]);\n const [isCopied, setIsCopied] = useState(false);\n const [isSubmitted, setIsSubmitted] = useState(false);\n\n const isSubmitDisabled = !submitValid || !submitValid(inputValue) || isSubmitted || disabled;\n const isSubmitValid = submitValid && submitValid(inputValue);\n const hasFunctions = loading || submit || copy || reset || cancel || customActions;\n const hasCallback = error || success || warning;\n\n const getTheme = (): \"success\" | \"warning\" | \"danger\" | undefined => {\n if (error) return \"danger\";\n if (success) return \"success\";\n if (warning) return \"warning\";\n\n return undefined;\n };\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLTextAreaElement>): void => {\n setInputValue(event.target.value);\n setIsSubmitted(false);\n if (onChange) {\n onChange(event);\n }\n },\n [onChange],\n );\n\n function handleCopy(): void {\n if (copy && inputValue) {\n navigator?.clipboard?.writeText(inputValue.toString());\n setIsCopied(true);\n toast(\"Copied to clipboard\");\n setTimeout(() => {\n setIsCopied(false);\n }, 2000);\n } else {\n toast(\"Nothing to copy\");\n }\n }\n\n function handleReset(): void {\n setInputValue(\"\");\n if (resetFunction) {\n resetFunction();\n }\n }\n\n const handleSubmit = useCallback(() => {\n if (submitFunction && isSubmitValid) {\n submitFunction(inputValue || \"\");\n setIsSubmitted(true);\n }\n }, [submitFunction, isSubmitValid, inputValue]);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLTextAreaElement>): void => {\n if (listen && event.key === \"Enter\" && submitFunction && isSubmitValid) {\n event.preventDefault();\n handleSubmit();\n }\n },\n [listen, submitFunction, isSubmitValid, handleSubmit],\n );\n\n return (\n <FieldStyled\n css={{\n maxWidth: width || \"100%\",\n width: width || \"100%\",\n ...css,\n }}\n disabled={disabled}>\n <FieldCoreStyled theme={getTheme()}>\n <FieldAreaStyled\n ref={ref}\n aria-busy={loading || undefined}\n aria-describedby={error || success || warning ? `${id || name}-status` : undefined}\n aria-invalid={error || undefined}\n cols={cols}\n disabled={disabled}\n id={id || name}\n name={name}\n placeholder={placeholder}\n rows={rows}\n value={inputValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n {...rest}\n />\n\n {hasFunctions && (\n <FieldFunctionStyled>\n <Stack direction=\"row\" gap=\"small\">\n {loading && <Loading />}\n {customActions}\n \n </Stack>\n <Stack>\n {copy && (\n <Button disabled={isCopied || disabled} small onClick={() => handleCopy()}>\n <Icon icon={<ClipboardIcon />} />\n </Button>\n )}\n\n {reset && inputValue && (\n <Button disabled={disabled} small onClick={() => handleReset()}>\n <Icon icon={<XCircleIcon />} />\n </Button>\n )}\n\n {cancel && (\n <Button disabled={disabled} small onClick={() => cancelFunction?.()}>\n {cancel}\n </Button>\n )}\n\n {submit && (\n <Button\n disabled={isSubmitDisabled}\n icon={<Icon icon={<ArrowRightIcon />} />}\n iconPosition=\"right\"\n small\n theme={isSubmitValid ? \"solid\" : \"default\"}\n type=\"submit\"\n onClick={() => handleSubmit()}>\n {submit}\n </Button>\n )}\n </Stack>\n </FieldFunctionStyled>\n )}\n </FieldCoreStyled>\n\n {hasCallback && (\n <FieldCallbackStyled aria-live=\"polite\" id={`${id || name}-status`} role=\"status\">\n {error && (\n <Badge icon={<Icon icon={<WarningIcon />} />}>{errorMessage || \"Error\"}</Badge>\n )}\n {success && (\n <Badge icon={<Icon icon={<CheckCircleIcon />} />}>\n {successMessage || \"Success\"}\n </Badge>\n )}\n {warning && (\n <Badge icon={<Icon icon={<WarningIcon />} />}>{warningMessage || \"Warning\"}</Badge>\n )}\n </FieldCallbackStyled>\n )}\n </FieldStyled>\n );\n },\n);\n\nexport default Field;\n","import { styled } from \"../../stitches.config\";\n\nexport const FieldStyled = styled(\"div\", {\n position: \"relative\",\n variants: {\n disabled: {\n true: {\n cursor: \"not-allowed\",\n opacity: \"$light\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const FieldCoreStyled = styled(\"div\", {\n \"&:focus-visible\": {\n outline: 0,\n },\n \"&:focus-within\": {\n borderBottomColor: \"$borderEmphasis\",\n borderLeftColor: \"$borderStrong\",\n borderRightColor: \"$borderStrong\",\n borderTopColor: \"$border\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n backgroundColor: \"$surface\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$subtle\",\n display: \"flex\",\n flexDirection: \"column\",\n transition: \"$default\",\n variants: {\n theme: {\n danger: {\n \"&:focus-within\": {\n borderColor: \"$red\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n borderColor: \"$red\",\n },\n success: {\n \"&:focus-within\": {\n borderColor: \"$green\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n borderColor: \"$green\",\n },\n warning: {\n \"&:focus-within\": {\n borderColor: \"$orange\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n borderColor: \"$orange\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const FieldAreaStyled = styled(\"textarea\", {\n \"&::placeholder\": {\n color: \"$textMuted\",\n },\n \"&:after\": {\n clear: \"both\",\n content: '\"\"',\n },\n \"&:focus\": {\n outline: \"none\",\n },\n appearance: \"none\",\n backgroundColor: \"transparent\",\n border: \"none\",\n color: \"$text\",\n display: \"block\",\n fontFamily: \"$default\",\n fontSize: \"$default\",\n lineHeight: \"1.5\",\n minHeight: \"$largest\",\n padding: \"$small $medium\",\n phone: {\n fontSize: \"16px !important\",\n padding: \"$smaller $small\",\n },\n resize: \"vertical\",\n\n width: \"100%\",\n});\n\nexport const FieldFunctionStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$surface\",\n borderTop: \"1px solid $borderLight\",\n display: \"flex\",\n gap: \"$small\",\n justifyContent: \"space-between\",\n padding: \"$small $medium\",\n\n phone: {\n justifyContent: \"flex-start\",\n padding: \"$small\",\n },\n});\n\nexport const FieldCallbackStyled = styled(\"div\", {\n display: \"block\",\n paddingTop: \"$small\",\n textAlign: \"left\",\n});\n","import React, { useRef, useState, type JSX, type FormEvent } from \"react\";\n\nimport { Button, useEventListener, type IForm } from \"../../index\";\nimport { FormStyled } from \"./styles\";\n\nexport default function Form({\n children,\n css,\n disabled,\n id,\n listen,\n loading,\n name,\n submit,\n submitFunction,\n submitValid,\n ...rest\n}: IForm): JSX.Element {\n const [isSubmitted, setIsSubmitted] = useState(false);\n const formRef = useRef<HTMLFormElement | null>(null);\n\n function getFormData(form: HTMLFormElement): Record<string, FormDataEntryValue> {\n const data: Record<string, FormDataEntryValue> = {};\n const fd = new FormData(form);\n\n fd.forEach((value, key) => {\n data[key] = value;\n });\n\n return data;\n }\n\n function isValidNow(): boolean {\n if (!submitValid) return true;\n if (!formRef.current) return false;\n\n return typeof submitValid === \"function\"\n ? submitValid(getFormData(formRef.current))\n : submitValid;\n }\n\n function handleSubmit(formEl: HTMLFormElement): void {\n if ((submitFunction as unknown as { length: number }).length > 0) {\n (submitFunction as (data: Record<string, FormDataEntryValue>) => unknown)(\n getFormData(formEl),\n );\n } else {\n (submitFunction as () => unknown)();\n }\n setIsSubmitted(true);\n }\n\n function onSubmit(event: FormEvent<HTMLFormElement>): void {\n event.preventDefault();\n const formEl = event.currentTarget;\n\n if (!submit || disabled || isSubmitted) return;\n if (!isValidNow()) return;\n handleSubmit(formEl);\n }\n\n useEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (listen && event.key === \"Enter\" && submit && formRef.current && isValidNow()) {\n event.preventDefault();\n handleSubmit(formRef.current);\n }\n });\n\n return (\n <FormStyled\n ref={formRef}\n aria-busy={loading || undefined}\n aria-disabled={disabled || undefined}\n css={css}\n disabled={disabled}\n id={id || name}\n name={name}\n onChange={() => setIsSubmitted(false)}\n onKeyDown={(e: React.KeyboardEvent): void => {\n const { key } = e as unknown as KeyboardEvent;\n\n if (!listen && key === \"Enter\") {\n e.preventDefault();\n }\n }}\n onSubmit={(e: React.FormEvent<HTMLFormElement>): void => onSubmit(e)}\n {...rest}>\n {children}\n\n {submit && (\n <Button\n css={{ marginTop: \"$medium\" }}\n disabled={disabled || isSubmitted || !isValidNow()}\n loading={loading}\n type=\"submit\">\n {submit}\n </Button>\n )}\n {loading && (\n <div\n aria-live=\"polite\"\n role=\"status\"\n style={{\n height: 0,\n overflow: \"hidden\",\n position: \"absolute\",\n width: 0,\n }}>\n Submitting...\n </div>\n )}\n </FormStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const FormStyled = styled(\"form\", {\n variants: {\n disabled: {\n true: {\n cursor: \"not-allowed\",\n opacity: \"$light\",\n },\n },\n },\n width: \"100%\",\n});\n","import dayjs from \"dayjs\";\nimport { useEffect, useState, useMemo, type JSX, type ChangeEvent, type MouseEvent } from \"react\";\nimport toast from \"react-hot-toast\";\n\nimport useDayjs from \"../../hooks/useDayjs\";\nimport { CaretLeftIcon, CaretRightIcon } from \"../../icons\";\nimport { Button, Icon, Popover, type IDatepicker } from \"../../index\";\nimport {\n DatepickerContainer,\n DatepickerDayHeader,\n DatepickerDayHeaderGrid,\n DatepickerDescription,\n DatepickerGrid,\n DatepickerHeader,\n DatepickerSelect,\n} from \"./styles\";\n\nconst DAYS_OF_WEEK = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\nexport default function Datepicker({\n blockedDates = [],\n description,\n endDate,\n maxDate,\n maxLength,\n minDate,\n minLength = 2,\n mode = \"range\",\n onSelection,\n onViewChange,\n startDate,\n timezone,\n trigger,\n triggerCSS,\n wrapperCSS,\n}: IDatepicker): JSX.Element {\n const now = useDayjs(timezone);\n\n const [dates, setDates] = useState({\n endDate: endDate || \"\",\n startDate: startDate || now().format(\"YYYY-MM-DD\"),\n });\n const [viewDate, setViewDate] = useState(startDate || now().format(\"YYYY-MM-DD\"));\n\n const currentMonth = dayjs(viewDate);\n const year = currentMonth.year();\n const month = currentMonth.month();\n const firstDayOfMonth = dayjs(`${year}-${month + 1}-01`).day();\n\n const days = useMemo(\n () =>\n Array.from({ length: currentMonth.daysInMonth() }, (_, i) =>\n dayjs(`${year}-${month + 1}-${i + 1}`).format(\"YYYY-MM-DD\"),\n ),\n [currentMonth, year, month],\n );\n\n const validateSingleDate = (date: string): boolean => {\n const selectedDate = dayjs(date);\n\n if (\n (minDate && selectedDate.isBefore(dayjs(minDate), \"day\")) ||\n (maxDate && selectedDate.isAfter(dayjs(maxDate), \"day\"))\n ) {\n toast.error(\"Selected date is out of range\");\n\n return false;\n }\n\n onSelection({ endDate: date, startDate: date });\n\n return true;\n };\n\n const validateRange = (start: string, end: string): boolean => {\n const startDate = dayjs(start);\n const endDate = dayjs(end);\n let diff = endDate.diff(startDate, \"day\");\n\n const unavailableInRange = blockedDates.filter((unavailableDate) => {\n const unavailable = dayjs(unavailableDate);\n\n return (\n (unavailable.isAfter(startDate, \"day\") && unavailable.isBefore(endDate, \"day\")) ||\n unavailable.isSame(startDate, \"day\") ||\n unavailable.isSame(endDate, \"day\")\n );\n });\n\n if (unavailableInRange.length > 0) {\n toast.error(`Selected range includes unavailable dates: ${unavailableInRange.join(\", \")}`);\n\n return false;\n }\n\n if (endDate.isBefore(startDate)) {\n diff = startDate.diff(endDate, \"day\");\n if (\n (minLength === undefined || diff >= minLength) &&\n (maxLength === undefined || diff <= maxLength)\n ) {\n onSelection({ endDate: start, startDate: end });\n\n return true;\n }\n\n toast.error(`Date range must be between ${minLength ?? 0} and ${maxLength ?? \"∞\"} days`);\n\n return false;\n }\n\n if (minDate && endDate.isBefore(dayjs(minDate), \"day\")) {\n toast.error(`Selected date must be after ${minDate}`);\n\n return false;\n }\n\n if (maxDate && endDate.isAfter(dayjs(maxDate), \"day\")) {\n toast.error(`Selected date must be before ${maxDate}`);\n\n return false;\n }\n\n if (\n (minLength !== undefined && diff < minLength) ||\n (maxLength !== undefined && diff > maxLength)\n ) {\n toast.error(`Date range must be between ${minLength ?? 0} and ${maxLength ?? \"∞\"} days`);\n\n return false;\n }\n\n onSelection({ endDate: end, startDate: start });\n\n return true;\n };\n\n const handleDaySelection = (date: string): void => {\n if (mode === \"single\") {\n if (validateSingleDate(date)) {\n setDates({ endDate: date, startDate: date });\n }\n } else {\n if (!dates.startDate || dates.endDate) {\n setDates({ endDate: \"\", startDate: date });\n } else if (dates.startDate && validateRange(dates.startDate, date)) {\n setDates({ endDate: date, startDate: dates.startDate });\n }\n }\n };\n\n useEffect(() => {\n const initialViewDate = startDate || now().startOf(\"month\").format(\"YYYY-MM-DD\");\n\n setViewDate(initialViewDate);\n\n if (onViewChange) {\n onViewChange({\n endDate: dayjs(initialViewDate).endOf(\"month\").format(\"YYYY-MM-DD\"),\n startDate: initialViewDate,\n });\n }\n }, [now, onViewChange, startDate]);\n\n const isDateSelected = (date: string): boolean =>\n date === dates.startDate || date === dates.endDate;\n\n const isDateInRange = (date: string): boolean => {\n if (mode === \"single\" || !dates.startDate || !dates.endDate) return false;\n\n const dateObj = dayjs(date);\n const start = dayjs(dates.startDate);\n const end = dayjs(dates.endDate);\n\n return (\n (dateObj.isAfter(start, \"day\") && dateObj.isBefore(end, \"day\")) ||\n (dateObj.isAfter(end, \"day\") && dateObj.isBefore(start, \"day\"))\n );\n };\n\n const isDateDisabled = (date: string): boolean => {\n const dateObj = dayjs(date);\n\n return Boolean(\n (minDate && dateObj.isBefore(minDate, \"day\")) ||\n (maxDate && dateObj.isAfter(maxDate, \"day\")) ||\n blockedDates?.includes(date),\n );\n };\n\n const handleMonthChange = (e: ChangeEvent<HTMLSelectElement>): void => {\n const newMonth = parseInt(e.target.value, 10);\n const newViewDate = currentMonth.month(newMonth);\n\n setViewDate(newViewDate.format(\"YYYY-MM-DD\"));\n\n if (onViewChange) {\n onViewChange({\n endDate: newViewDate.endOf(\"month\").format(\"YYYY-MM-DD\"),\n startDate: newViewDate.startOf(\"month\").format(\"YYYY-MM-DD\"),\n });\n }\n };\n\n const handleYearChange = (e: ChangeEvent<HTMLSelectElement>): void => {\n const newYear = parseInt(e.target.value, 10);\n const newViewDate = currentMonth.year(newYear);\n\n setViewDate(newViewDate.format(\"YYYY-MM-DD\"));\n\n if (onViewChange) {\n onViewChange({\n endDate: newViewDate.endOf(\"month\").format(\"YYYY-MM-DD\"),\n startDate: newViewDate.startOf(\"month\").format(\"YYYY-MM-DD\"),\n });\n }\n };\n\n const currentYear = currentMonth.year();\n const currentMonthIndex = currentMonth.month();\n\n // Generate year options (current year -1 to +10 years, or use min/max date constraints)\n const minYear = minDate ? dayjs(minDate).year() : now().subtract(1, \"year\").year();\n const maxYear = maxDate ? dayjs(maxDate).year() : now().add(10, \"year\").year();\n const yearOptions = Array.from({ length: maxYear - minYear + 1 }, (_, i) => minYear + i);\n\n const isPrevDisabled = minDate\n ? currentMonth.subtract(1, \"month\").isBefore(dayjs(minDate), \"month\")\n : false;\n const isNextDisabled = maxDate\n ? currentMonth.add(1, \"month\").isAfter(dayjs(maxDate), \"month\")\n : false;\n\n const handlePrevMonth = (e: MouseEvent): void => {\n e.stopPropagation();\n\n const newViewDate = currentMonth.subtract(1, \"month\");\n\n setViewDate(newViewDate.format(\"YYYY-MM-DD\"));\n\n if (onViewChange) {\n onViewChange({\n endDate: newViewDate.endOf(\"month\").format(\"YYYY-MM-DD\"),\n startDate: newViewDate.startOf(\"month\").format(\"YYYY-MM-DD\"),\n });\n }\n };\n\n const handleNextMonth = (e: MouseEvent): void => {\n e.stopPropagation();\n\n const newViewDate = currentMonth.add(1, \"month\");\n\n setViewDate(newViewDate.format(\"YYYY-MM-DD\"));\n\n if (onViewChange) {\n onViewChange({\n endDate: newViewDate.endOf(\"month\").format(\"YYYY-MM-DD\"),\n startDate: newViewDate.startOf(\"month\").format(\"YYYY-MM-DD\"),\n });\n }\n };\n\n return (\n <Popover\n ariaLabel=\"Select date\"\n trigger={trigger}\n triggerCSS={triggerCSS}\n wrapperCSS={wrapperCSS}>\n <DatepickerContainer>\n {/* Header with month/year navigation */}\n <DatepickerHeader>\n <Button disabled={isPrevDisabled} small theme=\"default\" onClick={handlePrevMonth}>\n <Icon icon={<CaretLeftIcon />} />\n </Button>\n <div\n style={{\n alignItems: \"center\",\n display: \"flex\",\n gap: \"var(--space-smaller)\",\n }}>\n <Button\n css={{ position: \"relative\" }}\n small\n theme=\"default\"\n onClick={(e) => e.stopPropagation()}>\n {currentMonth.format(\"MMM\")}\n <DatepickerSelect\n value={currentMonthIndex}\n onChange={handleMonthChange}\n onClick={(e) => e.stopPropagation()}>\n <option value={0}>Jan</option>\n <option value={1}>Feb</option>\n <option value={2}>Mar</option>\n <option value={3}>Apr</option>\n <option value={4}>May</option>\n <option value={5}>Jun</option>\n <option value={6}>Jul</option>\n <option value={7}>Aug</option>\n <option value={8}>Sep</option>\n <option value={9}>Oct</option>\n <option value={10}>Nov</option>\n <option value={11}>Dec</option>\n </DatepickerSelect>\n </Button>\n <Button\n css={{ position: \"relative\" }}\n small\n theme=\"default\"\n onClick={(e) => e.stopPropagation()}>\n {currentYear}\n <DatepickerSelect\n value={currentYear}\n onChange={handleYearChange}\n onClick={(e) => e.stopPropagation()}>\n {yearOptions.map((year) => (\n <option key={year} value={year}>\n {year}\n </option>\n ))}\n </DatepickerSelect>\n </Button>\n </div>\n <Button disabled={isNextDisabled} small theme=\"default\" onClick={handleNextMonth}>\n <Icon icon={<CaretRightIcon />} />\n </Button>\n </DatepickerHeader>\n\n {description && <DatepickerDescription>{description}</DatepickerDescription>}\n\n {/* Day headers */}\n <DatepickerDayHeaderGrid>\n {DAYS_OF_WEEK.map((day) => (\n <DatepickerDayHeader key={day}>{day}</DatepickerDayHeader>\n ))}\n </DatepickerDayHeaderGrid>\n\n {/* Calendar grid */}\n <DatepickerGrid>\n {Array.from({ length: firstDayOfMonth }).map((_, i) => (\n <div key={`offset-${i}`} />\n ))}\n {days.map((date) => {\n const isSelected = isDateSelected(date);\n const isBetween = isDateInRange(date);\n const isDisabled = isDateDisabled(date);\n const today = now();\n const dateObj = dayjs(date);\n const isToday =\n today.format(\"YYYY-MM-DD\") === date &&\n today.month() === currentMonth.month() &&\n today.year() === currentMonth.year();\n\n return (\n <Button\n key={date}\n block\n css={{\n ...(isBetween &&\n !isSelected && {\n backgroundColor: \"$surfaceLight\",\n }),\n ...(isToday && {\n borderColor: \"$violet\",\n }),\n }}\n disabled={isDisabled}\n small\n theme={isSelected ? \"solid\" : \"minimal\"}\n onClick={(e) => {\n e.stopPropagation();\n if (!isDisabled) {\n handleDaySelection(date);\n }\n }}>\n {dateObj.format(\"D\")}\n </Button>\n );\n })}\n </DatepickerGrid>\n </DatepickerContainer>\n </Popover>\n );\n}\n","import dayjs from \"dayjs\";\nimport timezone from \"dayjs/plugin/timezone\";\nimport utc from \"dayjs/plugin/utc\";\nimport { useMemo } from \"react\";\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n/**\n * Hook that returns a timezone-aware dayjs function\n * @param tz - Optional timezone string (e.g., \"Australia/Melbourne\")\n * @returns A function that returns dayjs instances in the specified timezone\n */\nexport default function useDayjs(tz?: string): () => ReturnType<typeof dayjs> {\n return useMemo(\n () => () => {\n return tz ? dayjs().tz(tz) : dayjs();\n },\n [tz],\n );\n}\n","import React, { useId, type JSX, type MouseEvent } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { useEventListener, useOutsideClick, useFloatingUI, type IPopover } from \"../../index\";\nimport { PopoverStyled, PopoverContentStyled, PopoverTriggerStyled } from \"./styles\";\n\nexport default function Popover({\n ariaLabel,\n children,\n css,\n disabled,\n minimal = false,\n small = false,\n trigger,\n triggerCSS,\n wrapperCSS,\n}: IPopover): JSX.Element {\n const { contentRef, handleClick, handleClose, isMounted, isOpen, triggerRef } = useFloatingUI();\n const reactId = useId();\n const instanceId = `popover-${reactId}`;\n\n // Check if the popover is inside a modal\n const isInsideModal = triggerRef.current?.closest('[role=\"dialog\"]') !== null;\n\n function handleKeyDown(event: KeyboardEvent): void {\n if (event.key === \"Escape\") {\n event.preventDefault();\n handleClose();\n }\n }\n\n function handleTriggerClick(e: MouseEvent): void {\n e.stopPropagation();\n if (!disabled) {\n handleClick();\n }\n }\n\n useOutsideClick(contentRef, () => handleClose());\n useEventListener(\"keydown\", handleKeyDown);\n\n return (\n <PopoverStyled css={wrapperCSS}>\n <PopoverTriggerStyled\n ref={triggerRef}\n aria-controls={`${instanceId}-content`}\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n css={triggerCSS}\n onClick={(e: React.MouseEvent) => handleTriggerClick(e)}>\n {trigger}\n </PopoverTriggerStyled>\n\n {isMounted &&\n createPortal(\n <PopoverContentStyled\n ref={contentRef}\n animation={isOpen}\n aria-label={ariaLabel}\n css={{\n width: \"auto\",\n zIndex: isInsideModal ? \"$modalPopover\" : \"$popover\",\n ...css,\n }}\n data-popover=\"true\"\n id={`${instanceId}-content`}\n minimal={minimal}\n role=\"region\"\n small={small}>\n {typeof children === \"function\" ? children(handleClose) : children}\n </PopoverContentStyled>,\n document.body,\n )}\n </PopoverStyled>\n );\n}\n","import {\n computePosition,\n offset,\n flip,\n shift,\n size,\n autoUpdate,\n limitShift,\n type Strategy,\n type ComputePositionReturn,\n} from \"@floating-ui/dom\";\nimport { useState, useRef, useEffect } from \"react\";\n\nimport type { IUseFloatingUI } from \"../types/hooks\";\n\nexport default function useFloatingUI(): IUseFloatingUI {\n const [isOpen, setIsOpen] = useState(false);\n const [isMounted, setIsMounted] = useState(false);\n\n const triggerRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const cleanupRef = useRef<(() => void) | null>(null);\n\n const updatePosition = (): void => {\n if (!triggerRef.current || !contentRef.current) return;\n\n const strategy: Strategy = \"fixed\";\n\n computePosition(triggerRef.current, contentRef.current, {\n middleware: [\n offset(8),\n flip({\n fallbackPlacements: [\n \"bottom\",\n \"top\",\n \"bottom-start\",\n \"top-start\",\n \"bottom-end\",\n \"top-end\",\n ],\n padding: 8,\n }),\n shift({\n limiter: limitShift(),\n padding: 8,\n }),\n size({\n apply({ availableHeight, elements }) {\n const maxHeight = Math.min(availableHeight - 16, 400);\n\n Object.assign(elements.floating.style, {\n maxHeight: `${maxHeight}px`,\n });\n },\n padding: 8,\n }),\n ],\n placement: \"bottom\",\n strategy,\n }).then(({ x, y }: ComputePositionReturn) => {\n if (!contentRef.current || !triggerRef.current) return;\n\n contentRef.current.style.position = strategy;\n contentRef.current.style.left = `${Math.round(x)}px`;\n contentRef.current.style.top = `${Math.round(y)}px`;\n });\n };\n\n const prepareFloatingElement = (element: HTMLDivElement): void => {\n if (!element) return;\n element.style.position = \"fixed\";\n element.style.top = \"0\";\n element.style.left = \"0\";\n element.style.transform = \"\";\n };\n\n useEffect(() => {\n if (!isMounted || !triggerRef.current || !contentRef.current) {\n if (cleanupRef.current) {\n cleanupRef.current();\n cleanupRef.current = null;\n }\n\n return;\n }\n\n prepareFloatingElement(contentRef.current);\n\n updatePosition();\n\n cleanupRef.current = autoUpdate(triggerRef.current, contentRef.current, updatePosition, {\n ancestorResize: true,\n ancestorScroll: true,\n elementResize: true,\n });\n\n return (): void => {\n if (cleanupRef.current) {\n cleanupRef.current();\n cleanupRef.current = null;\n }\n };\n }, [isMounted]);\n\n useEffect(() => {\n return (): void => {\n if (cleanupRef.current) {\n cleanupRef.current();\n cleanupRef.current = null;\n }\n };\n }, []);\n\n function handleOpen(): void {\n setIsMounted(true);\n setIsOpen(true);\n }\n\n function handleClose(): void {\n setIsOpen(false);\n setTimeout(() => setIsMounted(false), 200);\n }\n\n function handleClick(): void {\n if (isOpen || isMounted) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n\n return {\n contentRef,\n handleClick,\n handleClose,\n isMounted,\n isOpen,\n triggerRef,\n };\n}\n","import { RefObject } from \"react\";\n\nimport { useEventListener } from \"../index\";\n\nexport default function useOutsideClick<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T | null>,\n handler: (event: MouseEvent) => void,\n mouseEvent: \"mousedown\" | \"mouseup\" = \"mousedown\",\n): void {\n useEventListener(mouseEvent, (event) => {\n const el = ref?.current;\n const target = event.target as Node;\n\n // Don't close if click is inside the ref element\n if (!el || el.contains(target)) {\n return;\n }\n\n // Don't close if click is inside ANY Select dropdown, Popover, or Modal dialog\n // This ensures that interactions within these UI elements don't trigger outside clicks\n const targetElement = target as HTMLElement;\n const isInsideSelectDropdown = targetElement.closest?.('[data-select-dropdown=\"true\"]');\n const isInsidePopover = targetElement.closest?.('[data-popover=\"true\"]');\n const isInsideAnyModal = targetElement.closest?.('[data-modal=\"true\"]');\n\n if (isInsideSelectDropdown || isInsidePopover || isInsideAnyModal) {\n return;\n }\n\n handler(event);\n });\n}\n","import { fadeInUp, fadeOutDown, styled } from \"../../stitches.config\";\n\nexport const PopoverStyled = styled(\"div\", {\n display: \"inline-flex\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const PopoverTriggerStyled = styled(\"div\", {\n cursor: \"pointer\",\n display: \"inline-flex\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const PopoverContentStyled = styled(\"div\", {\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n backdropFilter: \"blur(4px)\",\n backgroundColor: \"$surfacePopover\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$medium\",\n overflowY: \"auto\",\n padding: \"$smaller $medium\",\n pointerEvents: \"auto\",\n transformOrigin: \"top center\",\n variants: {\n animation: {\n false: {\n animation: `${fadeOutDown} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n true: {\n animation: `${fadeInUp} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n },\n minimal: {\n true: {\n padding: 0,\n },\n },\n small: {\n false: {\n maxWidth: \"420px\",\n minWidth: \"250px\",\n phone: {\n maxWidth: \"calc(100vw - $large)\",\n },\n },\n true: {\n maxWidth: \"280px\",\n minWidth: \"200px\",\n phone: {\n maxWidth: \"calc(100vw - $large)\",\n },\n },\n },\n },\n width: \"100%\",\n\n willChange: \"transform, opacity\",\n});\n\nexport default PopoverStyled;\n","import { styled } from \"../../stitches.config\";\n\nexport const DatepickerSelect = styled(\"select\", {\n \"&:focus\": {\n borderColor: \"$violet\",\n outline: \"none\",\n },\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n borderColor: \"$borderStrong\",\n },\n appearance: \"none\",\n backgroundColor: \"transparent\",\n border: \"none\",\n bottom: 0,\n color: \"$text\",\n cursor: \"pointer\",\n fontFamily: \"$default\",\n fontSize: \"$default\",\n fontWeight: 600,\n left: 0,\n opacity: 0,\n padding: \"$smallest $small\",\n position: \"absolute\",\n right: 0,\n top: 0,\n width: \"100%\",\n});\n\nexport const DatepickerContainer = styled(\"div\", {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"$medium\",\n minWidth: \"300px\",\n phone: {\n minWidth: \"100%\",\n },\n width: \"100%\",\n});\n\nexport const DatepickerHeader = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n flexWrap: \"nowrap\",\n gap: \"$smaller\",\n justifyContent: \"space-between\",\n whiteSpace: \"nowrap\",\n});\n\nexport const DatepickerDescription = styled(\"div\", {\n color: \"$textMuted\",\n fontSize: \"$small\",\n marginTop: \"-$smaller\",\n});\n\nexport const DatepickerDayHeaderGrid = styled(\"div\", {\n display: \"grid\",\n gap: \"$smaller\",\n gridTemplateColumns: \"repeat(7, 1fr)\",\n marginBottom: \"-$smallest\",\n});\n\nexport const DatepickerDayHeader = styled(\"div\", {\n color: \"$textMuted\",\n fontSize: \"$small\",\n fontWeight: 600,\n textAlign: \"center\",\n});\n\nexport const DatepickerGrid = styled(\"div\", {\n display: \"grid\",\n gap: \"$smaller\",\n gridTemplateColumns: \"repeat(7, 1fr)\",\n});\n","import dayjs from \"dayjs\";\nimport { JSX, useMemo, useState } from \"react\";\n\nimport useDayjs from \"../../hooks/useDayjs\";\nimport { CaretLeftIcon, CaretRightIcon } from \"../../icons\";\nimport { Button, Icon, Popover, Text } from \"../../index\";\nimport { IMonthpicker } from \"../../types/components\";\nimport { MonthGrid, MonthPickerContainer, YearHeader } from \"./styles\";\n\nexport default function Monthpicker({\n initial,\n onSelect,\n timezone,\n trigger,\n triggerCSS,\n wrapperCSS,\n}: IMonthpicker): JSX.Element {\n const now = useDayjs(timezone);\n\n const [selectedYear, setSelectedYear] = useState(() => dayjs(initial || undefined).year());\n\n // Set reasonable year limits (5 years ago to 5 years in the future)\n const minYear = now().subtract(5, \"year\").year();\n const maxYear = now().add(5, \"year\").year();\n\n const months = useMemo(() => {\n const monthNames = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ];\n\n return monthNames.map((name, index) => ({\n name,\n value: now().year(selectedYear).month(index).format(\"YYYY-MM\"),\n }));\n }, [now, selectedYear]);\n\n const canGoPrev = selectedYear > minYear;\n const canGoNext = selectedYear < maxYear;\n\n return (\n <Popover\n ariaLabel=\"Select month\"\n trigger={trigger}\n triggerCSS={triggerCSS}\n wrapperCSS={wrapperCSS}>\n <MonthPickerContainer>\n {/* Year navigation */}\n <YearHeader>\n <Button\n disabled={!canGoPrev}\n small\n theme=\"default\"\n onClick={() => setSelectedYear((prev) => prev - 1)}>\n <Icon icon={<CaretLeftIcon />} />\n </Button>\n <Text as=\"h6\">{selectedYear}</Text>\n <Button\n disabled={!canGoNext}\n small\n theme=\"default\"\n onClick={() => setSelectedYear((prev) => prev + 1)}>\n <Icon icon={<CaretRightIcon />} />\n </Button>\n </YearHeader>\n\n {/* Month grid */}\n <MonthGrid>\n {months.map((month) => {\n const isSelected = initial === month.value;\n const isCurrent = now().format(\"YYYY-MM\") === month.value;\n\n return (\n <Button\n key={month.value}\n block\n css={{\n ...(isCurrent && {\n borderColor: \"$violet\",\n }),\n }}\n small\n theme={isSelected ? \"solid\" : \"default\"}\n onClick={() => onSelect(month.value)}>\n {month.name}\n </Button>\n );\n })}\n </MonthGrid>\n </MonthPickerContainer>\n </Popover>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const MonthPickerContainer = styled(\"div\", {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"$medium\",\n width: \"100%\",\n});\n\nexport const YearHeader = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n gap: \"$medium\",\n justifyContent: \"space-between\",\n});\n\nexport const MonthGrid = styled(\"div\", {\n display: \"grid\",\n gap: \"$small\",\n gridTemplateColumns: \"repeat(3, 1fr)\",\n});\n","import dayjs from \"dayjs\";\nimport { type JSX, useMemo } from \"react\";\n\nimport useCalendar from \"../../hooks/useCalendar\";\nimport useDayjs from \"../../hooks/useDayjs\";\nimport { Badge, Button, Popover, Stack, Text, type ICalendar } from \"../../index\";\nimport {\n CalendarStyled,\n CalendarGridStyled,\n CalendarHeaderRowStyled,\n CalendarHeaderCellStyled,\n CalendarWeekRowStyled,\n CalendarDayCellStyled,\n CalendarBadgeOverlayStyled,\n CalendarBookingBadgeWrapperStyled,\n CalendarBookingBadgeStyled,\n} from \"./styles\";\n\nexport default function Calendar({\n entries,\n getOtaLogo,\n month,\n onAvailableSelection,\n onBlockSelection,\n onBookingSelection,\n onEventSelection,\n selectedDates,\n timezone,\n}: ICalendar): JSX.Element {\n const now = useDayjs(timezone);\n const today = now();\n\n const entriesByDate = useMemo(() => {\n return entries.reduce(\n (acc, entry) => {\n acc[entry.day] = entry;\n\n return acc;\n },\n {} as Record<string, ICalendar[\"entries\"][number]>,\n );\n }, [entries]);\n\n const { getBadgesForWeek, getDayData, weeks } = useCalendar({\n entries: entriesByDate,\n month,\n timezone,\n });\n\n const getBookingTheme = (\n checkInDate: string,\n checkOutDate: string,\n ): \"violet\" | \"green\" | \"blue\" => {\n const checkIn = dayjs(checkInDate);\n const checkOut = dayjs(checkOutDate);\n\n if (checkOut.isBefore(today, \"day\")) return \"violet\";\n\n if (\n (today.isSame(checkIn, \"day\") || today.isAfter(checkIn, \"day\")) &&\n (today.isSame(checkOut, \"day\") || today.isBefore(checkOut, \"day\"))\n ) {\n return \"green\";\n }\n\n return \"blue\";\n };\n\n const getBookingPosition = (\n isCheckIn: boolean,\n isCheckOut: boolean,\n isSameDayTurnover: boolean,\n ): \"checkin\" | \"checkout\" | \"middle\" | \"single\" | undefined => {\n if (isSameDayTurnover) return \"single\";\n if (isCheckIn && isCheckOut) return \"single\";\n if (isCheckIn) return \"checkin\";\n if (isCheckOut) return \"checkout\";\n\n return \"middle\";\n };\n\n const handleDayClick = (date: string, data: ICalendar[\"entries\"][number] | undefined): void => {\n if (data?.is_blocked) {\n onBlockSelection?.(date, data);\n } else if (data?.is_available) {\n onAvailableSelection?.(date, data);\n }\n };\n\n return (\n <CalendarStyled>\n <CalendarHeaderRowStyled>\n {[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"].map((day) => (\n <CalendarHeaderCellStyled key={day}>{day}</CalendarHeaderCellStyled>\n ))}\n </CalendarHeaderRowStyled>\n\n <CalendarGridStyled>\n {weeks.map((week, weekIndex) => {\n const { bookingBadges } = getBadgesForWeek(week, weekIndex);\n\n return (\n <div key={`week-wrapper-${weekIndex}`} style={{ position: \"relative\" }}>\n <CalendarWeekRowStyled>\n {week.map((date, dayIndex) => {\n if (!date) {\n return <CalendarDayCellStyled key={`empty-${weekIndex}-${dayIndex}`} empty />;\n }\n\n const { dateStr, dayData, isToday } = getDayData(date);\n const hasActiveBooking =\n dayData?.booking_details && dayData.booking_details.length > 0;\n const isCheckOutOnly =\n hasActiveBooking && dayData.has_check_out && !dayData.has_check_in;\n const showPrice = !hasActiveBooking || isCheckOutOnly;\n const eventCount = dayData?.events?.length || 0;\n const isSelected = selectedDates?.has(dateStr);\n\n return (\n <CalendarDayCellStyled\n key={dateStr}\n blocked={dayData?.is_blocked}\n selected={isSelected}\n today={isToday}\n onClick={() => handleDayClick(dateStr, dayData)}>\n {dayData?.is_blocked ? (\n <Stack gap=\"medium\">\n <Stack direction=\"row\" justify=\"space-between\">\n <Text as=\"h6\">{date.date()}</Text>\n <Badge small>Blocked</Badge>\n </Stack>\n {dayData.blocked_reason && (\n <Text\n as=\"small\"\n css={{ fontSize: \"$micro\", textAlign: \"center\" }}\n muted\n top=\"smaller\"\n truncate={2}>\n {dayData.blocked_reason}\n </Text>\n )}\n </Stack>\n ) : (\n <Stack gap=\"medium\">\n <Stack direction=\"row\" justify=\"space-between\">\n <Stack align=\"center\" direction=\"row\" gap=\"small\">\n <Text as=\"h6\">{date.date()}</Text>\n {eventCount > 0 && onEventSelection && (\n <span\n role=\"button\"\n style={{ display: \"inline-flex\" }}\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.stopPropagation();\n }\n }}>\n <Popover\n small\n trigger={\n <Badge css={{ cursor: \"pointer\" }} small>\n {eventCount}\n </Badge>\n }>\n <Stack gap=\"medium\">\n {dayData?.events?.map((event) => {\n const truncatedTitle =\n event.title.length > 50\n ? `${event.title.substring(0, 50)}...`\n : event.title;\n\n return (\n <Button\n key={event.event_id}\n block\n onClick={(e) => {\n e.stopPropagation();\n onEventSelection(event);\n }}>\n {truncatedTitle}\n </Button>\n );\n })}\n </Stack>\n </Popover>\n </span>\n )}\n </Stack>\n {dayData?.rate && showPrice ? (\n <Text as=\"small\" muted>\n ${dayData.rate}\n </Text>\n ) : null}\n </Stack>\n </Stack>\n )}\n </CalendarDayCellStyled>\n );\n })}\n </CalendarWeekRowStyled>\n\n <CalendarBadgeOverlayStyled>\n {bookingBadges.map((badge) => {\n const bookingTheme = getBookingTheme(\n badge.booking.check_in_date,\n badge.booking.check_out_date,\n );\n const badgePosition = getBookingPosition(\n badge.isCheckIn,\n badge.isCheckOut,\n badge.isSameDayTurnover,\n );\n\n return (\n <CalendarBookingBadgeWrapperStyled\n key={`booking-${badge.bookingId}`}\n css={{\n left: badge.position.left,\n width: badge.position.width,\n }}>\n <CalendarBookingBadgeStyled\n bookingTheme={bookingTheme}\n css={{\n cursor: onBookingSelection ? \"pointer\" : \"default\",\n width: \"100%\",\n }}\n icon={\n badge.showName && badge.booking.ota_name\n ? getOtaLogo?.(badge.booking.ota_name)\n : undefined\n }\n position={badgePosition}\n small\n onClick={(e) => {\n e.stopPropagation();\n onBookingSelection?.(badge.booking);\n }}>\n {badge.showName ? badge.booking.guest_name : \"\\u00A0\"}\n </CalendarBookingBadgeStyled>\n </CalendarBookingBadgeWrapperStyled>\n );\n })}\n </CalendarBadgeOverlayStyled>\n </div>\n );\n })}\n </CalendarGridStyled>\n </CalendarStyled>\n );\n}\n\nCalendar.displayName = \"Calendar\";\n","import dayjs, { type Dayjs } from \"dayjs\";\nimport { useMemo } from \"react\";\n\nimport type { ICalendar } from \"../types/components\";\nimport type { IUseCalendar } from \"../types/hooks\";\n\nimport useDayjs from \"./useDayjs\";\n\ntype BookingBadge = IUseCalendar[\"getBadgesForWeek\"] extends (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...args: any[]\n) => { bookingBadges: infer B }\n ? B extends Array<infer Item>\n ? Item\n : never\n : never;\n\ninterface UseCalendarProps {\n entries: Record<string, ICalendar[\"entries\"][number]>;\n month: string;\n timezone?: string;\n}\n\nexport default function useCalendar({ entries, month, timezone }: UseCalendarProps): IUseCalendar {\n const now = useDayjs(timezone);\n\n const weeks = useMemo(() => {\n const monthDate = dayjs(month, \"YYYY-MM\");\n const startOfMonth = monthDate.startOf(\"month\");\n const startDay = startOfMonth.day();\n const daysInMonth = monthDate.daysInMonth();\n\n const days: Array<Dayjs | null> = [];\n\n // Add empty cells for days before the month starts\n for (let i = 0; i < startDay; i++) {\n days.push(null);\n }\n\n // Add all days in the month\n for (let i = 1; i <= daysInMonth; i++) {\n days.push(monthDate.date(i));\n }\n\n // Pad the end to complete the last week (ensure we have a full 7-day row)\n const remainingDays = days.length % 7;\n\n if (remainingDays > 0) {\n for (let i = 0; i < 7 - remainingDays; i++) {\n days.push(null);\n }\n }\n\n const weeksArray: Array<Array<Dayjs | null>> = [];\n\n for (let i = 0; i < days.length; i += 7) {\n weeksArray.push(days.slice(i, i + 7));\n }\n\n return weeksArray;\n }, [month]);\n\n const getBadgePosition = (\n start: number,\n length: number,\n isCheckIn: boolean,\n isCheckOut: boolean,\n ): { left: string; width: string } => {\n const dayWidth = 100 / 7;\n const gap = 0.5; // Gap between checkout and check-in\n\n let startPercent = start * dayWidth;\n let widthPercent = length * dayWidth;\n\n // Adjust for check-in: start at 1/3 into the first day, plus half the gap\n if (isCheckIn) {\n startPercent += dayWidth / 3 + gap;\n widthPercent -= dayWidth / 3 + gap;\n }\n\n // Adjust for check-out: end at 1/3 of the last day, minus half the gap\n if (isCheckOut) {\n widthPercent -= (dayWidth * 2) / 3 + gap;\n }\n\n return {\n left: `${startPercent}%`,\n width: `${widthPercent}%`,\n };\n };\n\n const getBookingBadges = (week: Array<Dayjs | null>, weekIndex: number): BookingBadge[] => {\n const badges: BookingBadge[] = [];\n const processedBookings = new Set<string>();\n\n week.forEach((date, dayIndex) => {\n if (!date) return;\n\n const dateStr = date.format(\"YYYY-MM-DD\");\n const dayData = entries[dateStr];\n\n if (dayData?.booking_details) {\n dayData.booking_details.forEach((booking) => {\n // Use database id (UUID) for tracking processed bookings\n if (processedBookings.has(booking.id)) return;\n\n const bookingStart = dayjs(booking.check_in_date);\n const bookingEnd = dayjs(booking.check_out_date);\n\n const firstVisibleDay = week.findIndex((d) => {\n if (!d) return false;\n\n return (\n (d.isSame(bookingStart, \"day\") || d.isAfter(bookingStart, \"day\")) &&\n (d.isSame(bookingEnd, \"day\") || d.isBefore(bookingEnd, \"day\"))\n );\n });\n\n if (firstVisibleDay !== dayIndex) return;\n\n const startIndex = dayIndex;\n let endIndex = week.length - 1;\n\n for (let i = startIndex; i < week.length; i++) {\n const d = week[i];\n\n // Break if we hit a null day (end of month padding)\n if (!d) {\n endIndex = i - 1;\n break;\n }\n\n if (d.isAfter(bookingEnd, \"day\")) {\n endIndex = i - 1;\n break;\n }\n }\n\n const length = endIndex - startIndex + 1;\n const firstDayIndex = startIndex;\n const lastDayIndex = endIndex;\n\n const isCheckInDay = week[firstDayIndex]?.isSame(bookingStart, \"day\") ?? false;\n const isCheckOutDay = week[lastDayIndex]?.isSame(bookingEnd, \"day\") ?? false;\n const isSameDayTurnover = isCheckInDay && isCheckOutDay;\n\n const position = getBadgePosition(startIndex, length, isCheckInDay, isCheckOutDay);\n const showName = week[firstDayIndex]?.isSame(bookingStart, \"day\") || weekIndex === 0;\n\n let offset: \"checkin\" | \"checkout\" | \"full\" = \"full\";\n\n if (isCheckInDay && !isCheckOutDay) {\n offset = \"checkin\";\n } else if (isCheckOutDay && !isCheckInDay) {\n offset = \"checkout\";\n } else if (isSameDayTurnover) {\n offset = \"full\";\n }\n\n processedBookings.add(booking.id);\n\n badges.push({\n booking,\n bookingId: booking.id, // Use database id (UUID) instead of booking_id\n firstDayIndex,\n isCheckIn: isCheckInDay,\n isCheckOut: isCheckOutDay,\n isSameDayTurnover,\n length,\n offset,\n position,\n showName,\n weekIndex,\n });\n });\n }\n });\n\n return badges;\n };\n\n const getBadgesForWeek: IUseCalendar[\"getBadgesForWeek\"] = (week, weekIndex) => {\n return {\n bookingBadges: getBookingBadges(week, weekIndex),\n };\n };\n\n const getDayData: IUseCalendar[\"getDayData\"] = (date) => {\n const dateStr = date.format(\"YYYY-MM-DD\");\n const dayData = entries[dateStr];\n const isToday = date.isSame(now(), \"day\");\n\n return { dateStr, dayData, isToday };\n };\n\n return {\n getBadgesForWeek,\n getDayData,\n weeks,\n };\n}\n","import { styled } from \"../../stitches.config\";\nimport Badge from \"../Badge\";\n\nexport const CalendarStyled = styled(\"div\", {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n});\n\nexport const CalendarHeaderRowStyled = styled(\"div\", {\n borderBottom: \"1px solid $border\",\n display: \"grid\",\n gridTemplateColumns: \"repeat(7, 1fr)\",\n});\n\nexport const CalendarHeaderCellStyled = styled(\"div\", {\n fontSize: \"$micro\",\n padding: \"$smaller\",\n textAlign: \"center\",\n});\n\nexport const CalendarGridStyled = styled(\"div\", {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n});\n\nexport const CalendarWeekRowStyled = styled(\"div\", {\n \"&:last-child\": {\n borderBottom: \"none\",\n },\n borderBottom: \"1px solid $border\",\n display: \"grid\",\n gridTemplateColumns: \"repeat(7, 1fr)\",\n position: \"relative\",\n});\n\nexport const CalendarDayCellStyled = styled(\"div\", {\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n },\n \"&:last-child\": {\n borderRight: \"none\",\n },\n borderRight: \"1px solid $border\",\n cursor: \"pointer\",\n display: \"flex\",\n flexDirection: \"column\",\n minHeight: \"110px\",\n padding: \"$small\",\n position: \"relative\",\n transition: \"background-color 150ms ease\",\n\n variants: {\n blocked: {\n true: {\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n },\n backgroundColor: \"$surfaceHover\",\n },\n },\n empty: {\n true: {\n \"&:hover\": {\n backgroundColor: \"$surfaceLight\",\n },\n backgroundColor: \"$surfaceLight\",\n cursor: \"default\",\n },\n },\n selected: {\n true: {\n \"&:hover\": {\n backgroundColor: \"$surfaceLight\",\n },\n backgroundColor: \"$surfaceHover\",\n boxShadow: \"$medium\",\n },\n },\n today: {\n true: {\n \"&:hover\": {\n backgroundColor: \"$surfaceLight\",\n },\n backgroundColor: \"$surfaceLight\",\n },\n },\n },\n});\n\nexport const CalendarBadgeOverlayStyled = styled(\"div\", {\n inset: 0,\n pointerEvents: \"none\",\n position: \"absolute\",\n zIndex: 1,\n});\n\nexport const CalendarBookingBadgeWrapperStyled = styled(\"div\", {\n alignItems: \"flex-end\",\n bottom: \"$medium\",\n display: \"flex\",\n pointerEvents: \"auto\",\n position: \"absolute\",\n});\n\nexport const CalendarBookingBadgeStyled = styled(Badge, {\n alignItems: \"center\",\n display: \"flex\",\n height: \"40px\",\n justifyContent: \"center\",\n transition: \"background-color 150ms ease, border-color 150ms ease\",\n\n variants: {\n bookingTheme: {\n blue: {\n \"&:hover\": {\n backgroundColor: \"$blueDark\",\n color: \"$background\",\n },\n backgroundColor: \"$blue\",\n borderColor: \"$blueLight\",\n color: \"$blueDark\",\n },\n green: {\n \"&:hover\": {\n backgroundColor: \"$greenDark\",\n color: \"$background\",\n },\n backgroundColor: \"$green\",\n borderColor: \"$greenLight\",\n color: \"$greenDark\",\n },\n violet: {\n \"&:hover\": {\n backgroundColor: \"$violetDark\",\n color: \"$background\",\n },\n backgroundColor: \"$violet\",\n borderColor: \"$violetLight\",\n color: \"$violetDark\",\n },\n },\n position: {\n checkin: {\n borderBottomLeftRadius: \"$default\",\n borderBottomRightRadius: 0,\n borderTopLeftRadius: \"$default\",\n borderTopRightRadius: 0,\n },\n checkout: {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: \"$default\",\n borderTopLeftRadius: 0,\n borderTopRightRadius: \"$default\",\n },\n middle: {\n borderRadius: 0,\n },\n single: {\n borderRadius: \"$default\",\n },\n },\n },\n});\n","import React, { useEffect, useId, useState, type JSX } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { XCircleIcon } from \"../../icons\";\nimport { Button, useEventListener, useOutsideClick, useModal, Icon, type IMenu } from \"../../index\";\nimport {\n MenuGroupStyled,\n MenuItemStyled,\n MenuItemContentStyled,\n MenuItemIconStyled,\n MenuStyled,\n MenuTriggerStyled,\n MenuContentStyled,\n MenuHeaderStyled,\n MenuOverlayStyled,\n} from \"./styles\";\n\nexport default function Menu({\n ariaLabel,\n children,\n css,\n initial,\n logo,\n onSelection,\n options,\n trigger,\n triggerCSS,\n wrapperCSS,\n}: IMenu): JSX.Element {\n const reactId = useId();\n const instanceId = `menu-${reactId}`;\n\n const [focused, setFocused] = useState(\"\");\n\n const menu = useModal();\n\n function handleClick(): void {\n menu.handleClick();\n }\n\n function handleClose(): void {\n setFocused(\"\");\n menu.handleClose();\n }\n\n function handleSelection(value: string, label: string): void {\n if (onSelection) {\n onSelection(value, label);\n }\n handleClose();\n }\n\n function handleKeyDown(event: KeyboardEvent): void {\n if (!menu.isOpen) return;\n\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n const index = options.findIndex((option) => option.value === focused);\n\n if (index < options.length - 1) {\n setFocused(options[index + 1].value);\n }\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n const index = options.findIndex((option) => option.value === focused);\n\n if (index > 0) {\n setFocused(options[index - 1].value);\n }\n }\n\n if (event.key === \"Enter\") {\n event.preventDefault();\n const index = options.findIndex((option) => option.value === focused);\n\n if (index >= 0) {\n handleSelection(options[index].value, options[index].label);\n }\n }\n }\n\n function handleItemMouseOver(value: string): void {\n setFocused(value);\n }\n\n useEffect(() => {\n if (menu.isOpen && menu.modalRef.current) {\n menu.modalRef.current.focus();\n } else {\n setFocused(\"\");\n }\n }, [menu.isOpen, menu.modalRef]);\n\n useEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n handleClose();\n }\n });\n\n useEventListener(\"keydown\", handleKeyDown, menu.modalRef);\n\n useOutsideClick(menu.modalRef, () => handleClose());\n\n return (\n <MenuStyled css={wrapperCSS}>\n <MenuTriggerStyled\n aria-controls={`${instanceId}-content`}\n aria-expanded={menu.isOpen}\n aria-haspopup=\"menu\"\n css={triggerCSS}\n onClick={(e: React.MouseEvent): void => {\n e.stopPropagation();\n handleClick();\n }}>\n {trigger}\n </MenuTriggerStyled>\n\n {menu.isMounted &&\n createPortal(\n <MenuOverlayStyled animation={menu.isOpen}>\n <MenuGroupStyled\n ref={menu.modalRef}\n animation={menu.isOpen}\n aria-label={ariaLabel || \"Menu\"}\n css={css}\n id={`${instanceId}-content`}\n role=\"menu\"\n tabIndex={-1}>\n <MenuHeaderStyled>\n {logo && <div>{logo}</div>}\n <Button\n icon={<Icon icon={<XCircleIcon />} />}\n small\n theme=\"minimal\"\n onClick={() => handleClose()}>\n Close\n </Button>\n </MenuHeaderStyled>\n\n {options.map((option) => (\n <MenuItemStyled\n key={option.value}\n aria-checked={initial === option.value || undefined}\n focused={option.value === focused}\n role=\"menuitemradio\"\n selected={initial === option.value}\n onClick={() => handleSelection(option.value, option.label)}\n onMouseOver={() => handleItemMouseOver(option.value)}>\n <MenuItemContentStyled>\n {option.icon && option.iconPosition === \"left\" && (\n <MenuItemIconStyled align=\"left\">{option.icon}</MenuItemIconStyled>\n )}\n {option.label}\n {option.icon && option.iconPosition !== \"left\" && (\n <MenuItemIconStyled align=\"right\">{option.icon}</MenuItemIconStyled>\n )}\n </MenuItemContentStyled>\n </MenuItemStyled>\n ))}\n\n {children && (\n <MenuContentStyled>\n {typeof children === \"function\" ? children(handleClose) : children}\n </MenuContentStyled>\n )}\n </MenuGroupStyled>\n </MenuOverlayStyled>,\n document.body,\n )}\n </MenuStyled>\n );\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport type { IUseModal } from \"../types/hooks\";\n\nexport default function useModal({\n animationDuration = 200,\n isOpen: externalIsOpen,\n onClose: externalOnClose,\n preventBodyScroll = true,\n}: {\n animationDuration?: number;\n isOpen?: boolean;\n onClose?: () => void;\n preventBodyScroll?: boolean;\n} = {}): IUseModal {\n const [internalIsOpen, setInternalIsOpen] = useState(false);\n const [isMounted, setIsMounted] = useState(false);\n\n // Use external state if provided, otherwise use internal state\n const isOpen = externalIsOpen !== undefined ? externalIsOpen : internalIsOpen;\n const isControlled = externalIsOpen !== undefined;\n\n const modalRef = useRef<HTMLDivElement>(null);\n\n // Modal functions\n function handleOpen(): void {\n if (isControlled) {\n // In controlled mode, external state controls isOpen\n setIsMounted(true);\n } else {\n setInternalIsOpen(true);\n setIsMounted(true);\n }\n }\n\n const handleClose = useCallback((): void => {\n if (isControlled) {\n // In controlled mode, call external onClose\n setIsMounted(false);\n externalOnClose?.();\n } else {\n setInternalIsOpen(false);\n setTimeout(() => {\n setIsMounted(false);\n externalOnClose?.();\n }, animationDuration);\n }\n }, [isControlled, externalOnClose, animationDuration]);\n\n function handleClick(): void {\n if (isOpen || isMounted) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n\n // In controlled mode, sync isMounted with isOpen\n useEffect(() => {\n if (isControlled) {\n setIsMounted(externalIsOpen ?? false);\n }\n }, [isControlled, externalIsOpen]);\n\n // Clean scroll lock\n useEffect(() => {\n if (!preventBodyScroll || !isMounted) return;\n\n const originalOverflow = document.body.style.overflow;\n const originalPaddingRight = document.body.style.paddingRight;\n const scrollBarWidth = window.innerWidth - document.documentElement.clientWidth;\n\n document.body.style.overflow = \"hidden\";\n if (scrollBarWidth > 0) {\n document.body.style.paddingRight = `${scrollBarWidth}px`;\n }\n\n // iOS momentum scrolling prevention\n const preventScroll = (e: TouchEvent): void => {\n const target = e.target as Element;\n\n if (modalRef?.current && modalRef.current.contains(target)) {\n return;\n }\n\n e.preventDefault();\n };\n\n const isTouch = \"ontouchstart\" in window;\n\n if (isTouch) {\n document.addEventListener(\"touchmove\", preventScroll, { passive: false });\n }\n\n return (): void => {\n document.body.style.overflow = originalOverflow;\n document.body.style.paddingRight = originalPaddingRight;\n if (isTouch) {\n document.removeEventListener(\"touchmove\", preventScroll);\n }\n };\n }, [isMounted, preventBodyScroll]);\n\n // Keyboard handling\n useEffect(() => {\n if (!isMounted) return;\n\n const handleKeyDown = (e: KeyboardEvent): void => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n handleClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n\n return (): void => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isMounted, handleClose]);\n\n return {\n handleClick,\n handleClose,\n handleOpen,\n isMounted,\n isOpen,\n modalRef,\n };\n}\n","import { fadeIn, fadeOut, slideInScale, slideOutScale, styled } from \"../../stitches.config\";\n\nconst overlayBase = {\n alignItems: \"center\",\n backdropFilter: \"blur(2px)\",\n backgroundColor: \"$overlay\",\n display: \"flex\",\n dynamicViewport: { property: \"height\", unit: \"vh\", value: \"100\" },\n inset: 0,\n justifyContent: \"center\",\n overflow: \"hidden\",\n pointerEvents: \"auto\",\n position: \"fixed\",\n transition: \"$default\",\n variants: {\n animation: {\n false: {\n animation: `${fadeOut} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n true: {\n animation: `${fadeIn} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n },\n },\n} as const;\n\nconst dialogContainerBase = {\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n backgroundColor: \"$surface\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$largest\",\n dynamicViewport: { property: \"maxHeight\", unit: \"vh\", value: \"80\" },\n maxWidth: \"90%\",\n overflow: \"hidden\",\n overflowY: \"auto\",\n phone: {\n dynamicViewport: { property: \"maxHeight\", unit: \"vh\", value: \"90\" },\n maxWidth: \"95%\",\n },\n\n position: \"relative\",\n variants: {\n animation: {\n false: {\n animation: `${slideOutScale} 200ms ease-out`,\n animationFillMode: \"forwards\",\n },\n true: {\n animation: `${slideInScale} 200ms ease-out`,\n animationFillMode: \"forwards\",\n },\n },\n },\n width: \"100%\",\n} as const;\n\nexport const MenuStyled = styled(\"div\", {\n display: \"inline-flex\",\n height: \"100%\",\n verticalAlign: \"middle\",\n});\n\nexport const MenuTriggerStyled = styled(\"div\", {\n cursor: \"pointer\",\n display: \"inline-flex\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const MenuOverlayStyled = styled(\"div\", {\n ...overlayBase,\n zIndex: \"$menu\",\n});\n\nexport const MenuGroupStyled = styled(\"div\", {\n ...dialogContainerBase,\n boxShadow: \"$largest\",\n maxWidth: \"420px\",\n padding: \"$smaller\",\n});\n\nexport const MenuItemStyled = styled(\"div\", {\n \"&:active\": {\n boxShadow: \"$inset\",\n transform: \"translateY(0)\",\n transition: \"$fast\",\n },\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n boxShadow: \"$default\",\n },\n alignItems: \"center\",\n backgroundColor: \"$surface\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$small\",\n borderTopColor: \"$border\",\n boxShadow: \"$subtle\",\n color: \"$text\",\n cursor: \"pointer\",\n display: \"flex\",\n fontFamily: \"$heading\",\n fontSize: \"$default\",\n fontWeight: 600,\n justifyContent: \"space-between\",\n margin: \"$smallest 0\",\n padding: \"$smaller $small\",\n\n transition: \"$default\",\n userSelect: \"none\",\n\n variants: {\n focused: {\n true: {\n backgroundColor: \"$surfaceHover\",\n boxShadow: \"$default\",\n },\n },\n selected: {\n true: {\n \"&:hover\": {\n boxShadow: \"$medium\",\n },\n backgroundColor: \"$surfaceHover\",\n borderBottomColor: \"$borderEmphasis\",\n boxShadow: \"$default\",\n fontWeight: 600,\n },\n },\n },\n});\n\nexport const MenuItemContentStyled = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n gap: \"$small\",\n justifyContent: \"space-between\",\n width: \"100%\",\n});\n\nexport const MenuItemIconStyled = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"center\",\n variants: {\n align: {\n left: {\n order: -1,\n },\n right: {\n order: 1,\n },\n },\n },\n});\n\nexport const MenuContentStyled = styled(\"div\", {\n display: \"block\",\n padding: \"$medium $small\",\n});\n\nexport const MenuHeaderStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$surfaceLight\",\n borderBottom: \"1px solid $border\",\n display: \"flex\",\n fontFamily: \"$heading\",\n fontWeight: 600,\n justifyContent: \"space-between\",\n margin: \"-$smaller -$smaller $smaller -$smaller\",\n padding: \"$small $medium\",\n});\n\nexport default MenuStyled;\n","import React, { useEffect, useId, useRef, useState, type JSX } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { ArrowDownIcon, ArrowUpIcon } from \"../../icons\";\nimport {\n Input,\n Loading,\n Text,\n useBreakpoints,\n useEventListener,\n useOutsideClick,\n useFloatingUI,\n type ISelect,\n} from \"../../index\";\nimport {\n SelectStyled,\n SelectTriggerStyled,\n SelectGroupStyled,\n SelectItemStyled,\n SelectFilterStyled,\n SelectEmptyStyled,\n SelectLabelStyled,\n SelectIconStyled,\n} from \"./styles\";\n\nexport default function Select({\n css,\n disabled,\n filter,\n height,\n initial,\n label,\n last,\n loading,\n onSelection,\n onSortOrderToggle,\n options,\n sortOrder,\n trigger,\n triggerCSS,\n width,\n wrapperCSS,\n}: ISelect): JSX.Element {\n const reactId = useId();\n const instanceId = `select-${reactId}`;\n const { contentRef, handleClick, handleClose, isMounted, isOpen, triggerRef } = useFloatingUI();\n const { isPhone } = useBreakpoints();\n const optionRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const filterRef = useRef<HTMLInputElement | null>(null);\n\n const [search, setSearch] = useState(\"\");\n const [focused, setFocused] = useState(\"\");\n const [selected, setSelected] = useState<string>(initial || \"\");\n\n // Check if the select is inside a modal\n const isInsideModal = triggerRef.current?.closest('[role=\"dialog\"]') !== null;\n\n const shouldShowFilter = (options?.length ?? 0) > 8 || filter;\n const filteredOptions = options\n ? options.filter((option) => {\n if (search) {\n return option.label.toLowerCase().includes(search.toLowerCase());\n }\n\n return option;\n })\n : [];\n\n useEffect(() => {\n if (!isOpen) {\n setSearch(\"\");\n setFocused(\"\");\n } else if (shouldShowFilter) {\n filterRef.current?.focus();\n } else if (contentRef.current) {\n contentRef.current.focus();\n }\n }, [isOpen, shouldShowFilter, contentRef]);\n\n useEffect(() => {\n if (initial !== undefined) {\n setSelected(initial);\n }\n }, [initial]);\n\n function handleSelection(value: string, label: string): void {\n // If clicking the same option and sort order is enabled, toggle sort order\n if (sortOrder && value === selected && onSortOrderToggle) {\n onSortOrderToggle();\n handleClose();\n\n return;\n }\n\n setSelected(value);\n if (onSelection) {\n onSelection(value, label);\n }\n handleClose();\n }\n\n function handleKeyDown(event: KeyboardEvent): void {\n if (isPhone || !isOpen) return;\n const target = event.target as HTMLElement | null;\n\n if (target && target.getAttribute(\"name\") === \"select-filter\") return;\n\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n const index = filteredOptions.findIndex((option) => option.value === focused);\n\n if (index < filteredOptions.length - 1) {\n const nextValue = filteredOptions[index + 1].value;\n\n setFocused(nextValue);\n\n optionRefs.current[nextValue]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n const index = filteredOptions.findIndex((option) => option.value === focused);\n\n if (index > 0) {\n const prevValue = filteredOptions[index - 1].value;\n\n setFocused(prevValue);\n\n optionRefs.current[prevValue]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }\n\n if (event.key === \"Enter\") {\n event.preventDefault();\n const index = filteredOptions.findIndex((option) => option.value === focused);\n\n if (index >= 0) {\n handleSelection(filteredOptions[index].value, filteredOptions[index].label);\n }\n }\n }\n\n function handleEscapeKey(event: KeyboardEvent): void {\n if (event.key === \"Escape\") {\n event.preventDefault();\n handleClose();\n }\n }\n\n function handleItemMouseOver(value: string): void {\n if (!isPhone) {\n setFocused(value);\n }\n }\n\n useOutsideClick(contentRef, () => handleClose());\n useEventListener(\"keydown\", handleEscapeKey);\n useEventListener(\"keydown\", handleKeyDown, contentRef);\n\n return (\n <SelectStyled css={wrapperCSS}>\n <SelectTriggerStyled\n ref={triggerRef}\n aria-controls={`${instanceId}-listbox`}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n css={triggerCSS}\n onClick={(e: React.MouseEvent): void => {\n e.stopPropagation();\n if (!disabled) {\n handleClick();\n }\n }}>\n {trigger}\n </SelectTriggerStyled>\n {isMounted &&\n createPortal(\n <SelectGroupStyled\n ref={contentRef}\n animation={isOpen}\n aria-activedescendant={focused || undefined}\n aria-busy={loading || undefined}\n aria-labelledby={label ? `${instanceId}-label` : undefined}\n css={{\n height: height || \"auto\",\n maxWidth: width || \"500px\",\n minWidth: width || (filter ? \"200px\" : \"125px\"),\n phone: {\n maxWidth: \"100%\",\n },\n width: width || \"auto\",\n zIndex: isInsideModal ? \"$modalPopover\" : \"$select\",\n ...css,\n }}\n data-select-dropdown=\"true\"\n id={`${instanceId}-listbox`}\n role=\"listbox\"\n tabIndex={-1}>\n {label && (\n <SelectLabelStyled>\n <Text as=\"h6\" id={`${instanceId}-label`}>\n {label}\n </Text>\n </SelectLabelStyled>\n )}\n {shouldShowFilter && (\n <SelectFilterStyled>\n <Input\n ref={filterRef}\n aria-label=\"Filter options\"\n disabled={!options}\n name=\"select-filter\"\n placeholder=\"Type to search...\"\n submitValid={(): boolean => search.length > 0}\n value={search}\n onChange={(event): void => setSearch(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n const index = filteredOptions.findIndex((o) => o.value === focused);\n\n if (event.key === \"ArrowDown\") {\n const nextIndex =\n index < 0 ? 0 : Math.min(index + 1, filteredOptions.length - 1);\n const nextValue = filteredOptions[nextIndex]?.value;\n\n if (nextValue) {\n setFocused(nextValue);\n optionRefs.current[nextValue]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }\n if (event.key === \"ArrowUp\") {\n const prevIndex =\n index < 0 ? filteredOptions.length - 1 : Math.max(index - 1, 0);\n const prevValue = filteredOptions[prevIndex]?.value;\n\n if (prevValue) {\n setFocused(prevValue);\n optionRefs.current[prevValue]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n const idx = filteredOptions.findIndex((o) => o.value === focused);\n\n if (idx >= 0) {\n handleSelection(filteredOptions[idx].value, filteredOptions[idx].label);\n }\n }\n }}\n />\n </SelectFilterStyled>\n )}\n {loading ? (\n <Loading />\n ) : filteredOptions && filteredOptions.length > 0 ? (\n filteredOptions.map((option) => (\n <SelectItemStyled\n key={option.key || option.value}\n ref={(el: HTMLDivElement | null) => {\n optionRefs.current[option.value] = el;\n }}\n aria-selected={option.value === selected}\n focused={option.value === focused && !isPhone}\n id={option.value}\n last={last && !search}\n role=\"option\"\n selected={option.value === selected}\n onClick={() => handleSelection(option.value, option.label)}\n onMouseOver={() => handleItemMouseOver(option.value)}>\n {option.icon && option.iconPosition === \"left\" && (\n <SelectIconStyled align=\"left\">{option.icon}</SelectIconStyled>\n )}\n {option.label}\n {sortOrder && option.value === selected ? (\n <SelectIconStyled align=\"right\">\n {sortOrder === \"asc\" ? (\n <ArrowUpIcon size={16} weight=\"duotone\" />\n ) : (\n <ArrowDownIcon size={16} weight=\"duotone\" />\n )}\n </SelectIconStyled>\n ) : option.icon && option.iconPosition !== \"left\" ? (\n <SelectIconStyled align=\"right\">{option.icon}</SelectIconStyled>\n ) : null}\n </SelectItemStyled>\n ))\n ) : (\n <SelectEmptyStyled>No matching options</SelectEmptyStyled>\n )}\n </SelectGroupStyled>,\n document.body,\n )}\n </SelectStyled>\n );\n}\n","import { fadeInUp, fadeOutDown, styled } from \"../../stitches.config\";\n\nconst stickyBase = {\n backdropFilter: \"blur(4px)\",\n backgroundColor: \"$surfacePopover\",\n position: \"sticky\",\n top: 0,\n zIndex: 1,\n} as const;\n\nexport const SelectStyled = styled(\"div\", {\n display: \"inline-block\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const SelectTriggerStyled = styled(\"div\", {\n cursor: \"pointer\",\n display: \"inline-flex\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const SelectGroupStyled = styled(\"div\", {\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n backdropFilter: \"blur(4px)\",\n backgroundColor: \"$surfacePopover\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$medium\",\n overflowY: \"auto\",\n padding: \"$smaller\",\n pointerEvents: \"auto\",\n transformOrigin: \"top center\",\n variants: {\n animation: {\n false: {\n animation: `${fadeOutDown} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n true: {\n animation: `${fadeInUp} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n },\n },\n width: \"100%\",\n\n willChange: \"transform, opacity\",\n});\n\nexport const SelectFilterStyled = styled(\"div\", {\n ...stickyBase,\n marginBottom: \"$smaller\",\n padding: \"0 $small $smaller $small\",\n});\n\nexport const SelectItemStyled = styled(\"div\", {\n \"&:active\": {\n boxShadow: \"$inset\",\n transform: \"translateY(0)\",\n transition: \"$fast\",\n },\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n boxShadow: \"$default\",\n },\n alignItems: \"center\",\n backgroundColor: \"$surfacePopover\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$small\",\n borderTopColor: \"$border\",\n boxShadow: \"$subtle\",\n color: \"$text\",\n cursor: \"pointer\",\n display: \"flex\",\n fontFamily: \"$default\",\n fontSize: \"$default\",\n gap: \"$smaller\",\n justifyContent: \"space-between\",\n margin: \"$smallest 0\",\n padding: \"$smaller $small\",\n\n transition: \"$default\",\n userSelect: \"none\",\n\n variants: {\n focused: {\n true: {\n backgroundColor: \"$surfaceHover\",\n boxShadow: \"$default\",\n },\n },\n last: {\n true: {\n borderTop: \"1px solid $borderLight\",\n marginTop: \"$smaller\",\n paddingTop: \"$smaller\",\n },\n },\n selected: {\n true: {\n \"&:hover\": {\n boxShadow: \"$medium\",\n },\n backgroundColor: \"$surfaceHover\",\n borderBottomColor: \"$borderEmphasis\",\n boxShadow: \"$default\",\n fontWeight: 600,\n },\n },\n },\n});\n\nexport const SelectEmptyStyled = styled(\"div\", {\n color: \"$textMuted\",\n fontSize: \"$small\",\n padding: \"$medium $small\",\n textAlign: \"center\",\n});\n\nexport const SelectLabelStyled = styled(\"div\", {\n ...stickyBase,\n borderBottom: \"1px solid $borderLight\",\n fontFamily: \"$default\",\n fontWeight: 400,\n marginBottom: \"$smaller\",\n padding: \"0 $small $smaller $small\",\n});\n\nexport const SelectIconStyled = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"center\",\n transition: \"$default\",\n variants: {\n align: {\n left: {\n order: -1,\n },\n right: {\n order: 1,\n },\n },\n },\n});\n\nexport default SelectStyled;\n","import React, { useEffect, useRef, useState, type JSX } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport toast from \"react-hot-toast\";\n\nimport { XCircleIcon } from \"../../../icons\";\nimport {\n Input,\n Loading,\n Text,\n useBreakpoints,\n useEventListener,\n useOutsideClick,\n useFloatingUI,\n Icon,\n type ISelectMulti,\n} from \"../../../index\";\nimport {\n SelectStyled,\n SelectTriggerStyled,\n SelectGroupStyled,\n SelectItemStyled,\n SelectFilterStyled,\n SelectEmptyStyled,\n SelectLabelStyled,\n SelectIconStyled,\n} from \"../styles\";\n\nexport default function SelectMulti({\n css,\n disabled,\n filter,\n height,\n initial,\n label,\n limit,\n loading,\n onSelection,\n options,\n reset = true,\n trigger,\n triggerCSS,\n width,\n wrapperCSS,\n}: ISelectMulti): JSX.Element {\n const { contentRef, handleClick, handleClose, isMounted, isOpen, triggerRef } = useFloatingUI();\n const { isPhone } = useBreakpoints();\n const optionRefs = useRef<Record<string, HTMLDivElement | null>>({});\n\n const [search, setSearch] = useState(\"\");\n const [focused, setFocused] = useState(\"\");\n const [selected, setSelected] = useState<Array<{ label: string; value: string }>>(initial || []);\n\n const shouldShowFilter = (options?.length || 0) > 10 && filter;\n const hasSelections = selected.length > 0;\n const canReset = reset && hasSelections;\n const filteredOptions = options\n ? options.filter((option) => {\n if (search) {\n return option.label.toLowerCase().includes(search.toLowerCase());\n }\n\n return option;\n })\n : [];\n\n useEffect(() => {\n if (!isOpen) {\n setSearch(\"\");\n setFocused(\"\");\n } else if (!shouldShowFilter && contentRef.current) {\n contentRef.current.focus();\n }\n }, [isOpen, shouldShowFilter, contentRef]);\n\n function handleSelection(option: { label: string; value: string }): void {\n const selectionIndex = selected.findIndex((item) => item.value === option.value);\n let newSelectedItems;\n\n if (selectionIndex === -1) {\n if (!limit || selected.length < limit) {\n newSelectedItems = [...selected, option];\n setSelected(newSelectedItems);\n if (onSelection) {\n onSelection(newSelectedItems);\n }\n } else {\n toast(`Maximum selections reached (${limit}).`);\n }\n } else {\n newSelectedItems = [\n ...selected.slice(0, selectionIndex),\n ...selected.slice(selectionIndex + 1),\n ];\n setSelected(newSelectedItems);\n if (onSelection) {\n onSelection(newSelectedItems);\n }\n }\n }\n\n function handleReset(): void {\n setSelected([]);\n if (onSelection) {\n onSelection([]);\n }\n }\n\n function handleKeyDown(event: KeyboardEvent): void {\n if (isPhone || !isOpen) return;\n\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n const index = filteredOptions.findIndex((option) => option.value === focused);\n\n if (index < filteredOptions.length - 1) {\n const nextValue = filteredOptions[index + 1].value;\n\n setFocused(nextValue);\n\n optionRefs.current[nextValue]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n const index = filteredOptions.findIndex((option) => option.value === focused);\n\n if (index > 0) {\n const prevValue = filteredOptions[index - 1].value;\n\n setFocused(prevValue);\n\n optionRefs.current[prevValue]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }\n\n if (event.key === \"Enter\") {\n event.preventDefault();\n const index = filteredOptions.findIndex((option) => option.value === focused);\n\n if (index >= 0) {\n handleSelection(filteredOptions[index]);\n }\n }\n }\n\n function handleItemMouseOver(value: string): void {\n if (!isPhone) {\n setFocused(value);\n }\n }\n\n function handleResetMouseOver(): void {\n if (!isPhone) {\n setFocused(\"\");\n }\n }\n\n function isOptionSelected(optionValue: string): boolean {\n return selected.findIndex((item) => item.value === optionValue) !== -1;\n }\n\n function handleEscapeKey(event: KeyboardEvent): void {\n if (event.key === \"Escape\") {\n event.preventDefault();\n handleClose();\n }\n }\n\n useOutsideClick(contentRef, () => handleClose());\n useEventListener(\"keydown\", handleEscapeKey);\n useEventListener(\"keydown\", handleKeyDown, contentRef);\n\n return (\n <SelectStyled css={wrapperCSS}>\n <SelectTriggerStyled\n ref={triggerRef}\n css={triggerCSS}\n onClick={(e: React.MouseEvent): void => {\n e.stopPropagation();\n if (!disabled) {\n handleClick();\n }\n }}>\n {trigger}\n </SelectTriggerStyled>\n {isMounted &&\n createPortal(\n <SelectGroupStyled\n ref={contentRef}\n animation={isOpen}\n css={{\n height: height || \"auto\",\n maxWidth: width || \"500px\",\n minWidth: width || filter ? \"200px\" : \"125px\",\n phone: {\n maxWidth: \"100%\",\n },\n width: width || \"auto\",\n ...css,\n }}\n tabIndex={-1}>\n {label && (\n <SelectLabelStyled>\n <Text as=\"h6\">{label}</Text>\n </SelectLabelStyled>\n )}\n {shouldShowFilter && (\n <SelectFilterStyled>\n <Input\n disabled={!options}\n name=\"select-multi-filter\"\n placeholder=\"Type to search...\"\n submitValid={(): boolean => search.length > 0}\n value={search}\n onChange={(event): void => setSearch(event.target.value)}\n />\n </SelectFilterStyled>\n )}\n {loading ? (\n <Loading />\n ) : filteredOptions && filteredOptions.length > 0 ? (\n filteredOptions.map((option) => (\n <SelectItemStyled\n key={option.value}\n ref={(el: HTMLDivElement | null) => {\n optionRefs.current[option.value] = el;\n }}\n focused={option.value === focused && !isPhone}\n selected={isOptionSelected(option.value)}\n onClick={() => handleSelection(option)}\n onMouseOver={() => handleItemMouseOver(option.value)}>\n {option.icon && option.iconPosition === \"left\" && (\n <SelectIconStyled align=\"left\">{option.icon}</SelectIconStyled>\n )}\n {option.label}\n {option.icon && option.iconPosition !== \"left\" && (\n <SelectIconStyled align=\"right\">{option.icon}</SelectIconStyled>\n )}\n </SelectItemStyled>\n ))\n ) : (\n <SelectEmptyStyled>No matching options</SelectEmptyStyled>\n )}\n {canReset && (\n <SelectItemStyled\n key=\"reset\"\n last\n onClick={() => handleReset()}\n onMouseOver={() => handleResetMouseOver()}>\n Reset\n <SelectIconStyled align=\"right\">\n <Icon icon={<XCircleIcon />} />\n </SelectIconStyled>\n </SelectItemStyled>\n )}\n </SelectGroupStyled>,\n document.body,\n )}\n </SelectStyled>\n );\n}\n","import { useId, type JSX, type MouseEvent } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { XCircleIcon } from \"../../icons\";\nimport {\n Button,\n Text,\n useEventListener,\n useOutsideClick,\n useModal,\n Icon,\n type IModal,\n} from \"../../index\";\nimport {\n ModalOverlayStyled,\n ModalGroupStyled,\n ModalHeaderStyled,\n ModalContentStyled,\n ModalFooterStyled,\n ModalStyled,\n ModalTriggerStyled,\n} from \"./styles\";\n\nexport default function Modal({\n children,\n css,\n disabled,\n footer,\n isOpen,\n onClose,\n small,\n theme = \"default\",\n title,\n trigger,\n triggerCSS,\n wrapperCSS,\n}: IModal): JSX.Element {\n const titleId = useId();\n const isControlled = isOpen !== undefined;\n const modal = useModal({\n isOpen,\n onClose,\n });\n\n function handleClick(): void {\n if (disabled) return;\n modal.handleClick();\n }\n\n // Use onClose from props when in controlled mode, otherwise use modal.handleClose\n const handleClose = isControlled && onClose ? onClose : modal.handleClose;\n\n useEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n handleClose();\n }\n });\n\n useOutsideClick(modal.modalRef, () => handleClose());\n\n return (\n <ModalStyled css={wrapperCSS}>\n {/* Only render trigger if not in controlled mode and trigger is provided */}\n {!isControlled && trigger && (\n <ModalTriggerStyled\n css={triggerCSS}\n onClick={(e: MouseEvent): void => {\n e.stopPropagation();\n handleClick();\n }}>\n {trigger}\n </ModalTriggerStyled>\n )}\n\n {modal.isMounted &&\n createPortal(\n <ModalOverlayStyled animation={modal.isOpen}>\n <ModalGroupStyled\n ref={modal.modalRef}\n animation={modal.isOpen}\n aria-labelledby={titleId}\n aria-modal=\"true\"\n css={css}\n data-modal=\"true\"\n role=\"dialog\"\n small={small}>\n <ModalHeaderStyled theme={theme}>\n {typeof title === \"string\" ? (\n <Text as=\"h4\" bottom=\"none\" id={titleId}>\n {title}\n </Text>\n ) : (\n <div id={titleId}>{title}</div>\n )}\n <Button\n icon={<Icon icon={<XCircleIcon />} />}\n small\n theme=\"minimal\"\n onClick={() => handleClose()}>\n Close\n </Button>\n </ModalHeaderStyled>\n\n <ModalContentStyled>\n {typeof children === \"function\" ? children(handleClose) : children}\n </ModalContentStyled>\n\n {footer && (\n <ModalFooterStyled>\n {typeof footer === \"function\" ? footer(handleClose) : footer}\n </ModalFooterStyled>\n )}\n </ModalGroupStyled>\n </ModalOverlayStyled>,\n document.body,\n )}\n </ModalStyled>\n );\n}\n\nModal.displayName = \"Modal\";\n","import { fadeIn, fadeOut, slideInScale, slideOutScale, styled } from \"../../stitches.config\";\n\nconst overlayBase = {\n alignItems: \"center\",\n backdropFilter: \"blur(4px)\",\n backgroundColor: \"$overlay\",\n display: \"flex\",\n dynamicViewport: { property: \"height\", unit: \"vh\", value: \"100\" },\n inset: 0,\n justifyContent: \"center\",\n overflow: \"hidden\",\n padding: \"$medium\",\n phone: {\n padding: \"$small\",\n },\n pointerEvents: \"auto\",\n position: \"fixed\",\n variants: {\n animation: {\n false: {\n animation: `${fadeOut} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n true: {\n animation: `${fadeIn} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n },\n },\n} as const;\n\nconst dialogContainerBase = {\n backgroundColor: \"transparent\",\n border: \"1px solid $border\",\n borderBottomColor: \"$borderBottom\",\n borderRadius: \"$default\",\n borderTopColor: \"$borderLight\",\n boxShadow: \"$largest\",\n display: \"flex\",\n dynamicViewport: { property: \"maxHeight\", unit: \"vh\", value: \"80\" },\n flexDirection: \"column\",\n maxWidth: \"90%\",\n overflow: \"hidden\",\n phone: {\n dynamicViewport: { property: \"maxHeight\", unit: \"vh\", value: \"90\" },\n maxWidth: \"95%\",\n },\n position: \"relative\",\n\n variants: {\n animation: {\n false: {\n animation: `${slideOutScale} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n true: {\n animation: `${slideInScale} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n },\n },\n width: \"100%\",\n willChange: \"transform, opacity\",\n} as const;\n\nexport const ModalStyled = styled(\"div\", {\n display: \"inline-flex\",\n height: \"100%\",\n verticalAlign: \"middle\",\n});\n\nexport const ModalTriggerStyled = styled(\"div\", {\n cursor: \"pointer\",\n display: \"inline-flex\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const ModalOverlayStyled = styled(\"div\", {\n ...overlayBase,\n zIndex: \"$modal\",\n});\n\nexport const ModalGroupStyled = styled(\"div\", {\n ...dialogContainerBase,\n maxWidth: \"600px\",\n variants: {\n ...dialogContainerBase.variants,\n small: {\n true: {\n maxWidth: \"280px\",\n },\n },\n },\n});\n\nexport const ModalHeaderStyled = styled(\"div\", {\n alignItems: \"center\",\n backdropFilter: \"blur(20px) saturate(180%)\",\n backgroundColor: \"$surfaceOverlay\",\n borderBottom: \"1px solid $border\",\n color: \"$text\",\n display: \"flex\",\n flexShrink: 0,\n fontFamily: \"$heading\",\n justifyContent: \"space-between\",\n padding: \"$small $medium\",\n position: \"sticky\",\n top: 0,\n variants: {\n theme: {\n blue: {\n backgroundColor: \"$blueOverlay\",\n borderBottom: \"none\",\n },\n default: {},\n green: {\n backgroundColor: \"$greenOverlay\",\n borderBottom: \"none\",\n },\n orange: {\n backgroundColor: \"$orangeOverlay\",\n borderBottom: \"none\",\n },\n red: {\n backgroundColor: \"$redOverlay\",\n borderBottom: \"none\",\n },\n violet: {\n backgroundColor: \"$violetOverlay\",\n borderBottom: \"none\",\n },\n yellow: {\n backgroundColor: \"$yellowOverlay\",\n borderBottom: \"none\",\n },\n },\n },\n\n zIndex: \"$sticky\",\n});\n\nexport const ModalContentStyled = styled(\"div\", {\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n backgroundColor: \"$surface\",\n flex: 1,\n overflowX: \"hidden\",\n overflowY: \"auto\",\n padding: \"$medium\",\n});\n\nexport const ModalFooterStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$surface\",\n borderTop: \"1px solid $border\",\n bottom: 0,\n color: \"$text\",\n display: \"flex\",\n flexDirection: \"row\",\n flexShrink: 0,\n gap: \"$small\",\n justifyContent: \"space-between\",\n padding: \"$small $medium\",\n position: \"sticky\",\n variants: {\n theme: {\n blue: {\n backgroundColor: \"$blueLight\",\n borderTopColor: \"$blueDark\",\n },\n default: {},\n green: {\n backgroundColor: \"$greenLight\",\n borderTopColor: \"$greenDark\",\n },\n orange: {\n backgroundColor: \"$orangeLight\",\n borderTopColor: \"$orangeDark\",\n },\n red: {\n backgroundColor: \"$redLight\",\n borderTopColor: \"$redDark\",\n },\n violet: {\n backgroundColor: \"$violetLight\",\n borderTopColor: \"$violetDark\",\n },\n yellow: {\n backgroundColor: \"$yellowLight\",\n borderTopColor: \"$yellowDark\",\n },\n },\n },\n width: \"100%\",\n zIndex: \"$sticky\",\n});\n","import React, { useId, type JSX } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { XCircleIcon } from \"../../icons\";\nimport {\n Button,\n Text,\n useEventListener,\n useOutsideClick,\n useModal,\n Icon,\n type IDrawer,\n} from \"../../index\";\nimport {\n DrawerContentStyled,\n DrawerCoreStyled,\n DrawerHeaderStyled,\n DrawerOverlayStyled,\n DrawerStyled,\n DrawerTriggerStyled,\n} from \"./styles\";\n\nexport default function Drawer({\n children,\n css,\n disabled,\n title,\n trigger,\n triggerCSS,\n wrapperCSS,\n}: IDrawer): JSX.Element {\n const titleId = useId();\n const drawer = useModal();\n\n function handleClick(): void {\n if (!disabled) {\n drawer.handleClick();\n }\n }\n\n useEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n drawer.handleClose();\n }\n });\n\n useOutsideClick(drawer.modalRef, () => {\n if (drawer.isOpen) {\n drawer.handleClose();\n }\n });\n\n return (\n <DrawerStyled css={wrapperCSS}>\n {trigger ? (\n <DrawerTriggerStyled\n css={triggerCSS}\n onClick={(e: React.MouseEvent): void => {\n e.stopPropagation();\n handleClick();\n }}>\n {trigger}\n </DrawerTriggerStyled>\n ) : (\n \"Missing trigger\"\n )}\n\n {drawer.isMounted &&\n createPortal(\n <DrawerOverlayStyled animation={drawer.isOpen}>\n <DrawerCoreStyled\n ref={drawer.modalRef}\n animation={drawer.isOpen}\n aria-labelledby={titleId}\n aria-modal=\"true\"\n css={css}\n role=\"dialog\">\n <DrawerHeaderStyled>\n <Text as=\"h6\" bottom=\"none\" id={titleId}>\n {title}\n </Text>\n <Button\n icon={<Icon icon={<XCircleIcon />} />}\n small\n onClick={() => drawer.handleClose()}>\n Close\n </Button>\n </DrawerHeaderStyled>\n\n <DrawerContentStyled>\n {typeof children === \"function\" ? children(drawer.handleClose) : children}\n </DrawerContentStyled>\n </DrawerCoreStyled>\n </DrawerOverlayStyled>,\n document.body,\n )}\n </DrawerStyled>\n );\n}\n","import { fadeIn, fadeOut, slideInUp, slideOutDown, styled } from \"../../stitches.config\";\n\nexport const DrawerStyled = styled(\"div\", {\n display: \"inline-block\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const DrawerTriggerStyled = styled(\"div\", {\n cursor: \"pointer\",\n display: \"inline-flex\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const DrawerOverlayStyled = styled(\"div\", {\n alignItems: \"flex-end\",\n backdropFilter: \"blur(2px)\",\n backgroundColor: \"$overlay\",\n display: \"flex\",\n dynamicViewport: { property: \"height\", unit: \"vh\", value: \"100\" },\n inset: 0,\n justifyContent: \"center\",\n overflow: \"hidden\",\n pointerEvents: \"auto\",\n position: \"fixed\",\n transition: \"$default\",\n variants: {\n animation: {\n false: {\n animation: `${fadeOut} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n true: {\n animation: `${fadeIn} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n },\n },\n zIndex: \"$modal\",\n});\n\nexport const DrawerCoreStyled = styled(\"div\", {\n backgroundColor: \"$surface\",\n borderTop: \"1px solid $border\",\n borderTopLeftRadius: \"$medium\",\n borderTopRightRadius: \"$medium\",\n boxShadow: \"$largest\",\n display: \"flex\",\n dynamicViewport: { property: \"maxHeight\", unit: \"vh\", value: \"70\" },\n flexDirection: \"column\",\n minHeight: \"30vh\",\n overflow: \"hidden\",\n phone: {\n dynamicViewport: { property: \"maxHeight\", unit: \"vh\", value: \"90\" },\n minHeight: \"50vh\",\n },\n position: \"relative\",\n transition: \"$default\",\n variants: {\n animation: {\n false: {\n animation: `${slideOutDown} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n true: {\n animation: `${slideInUp} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n },\n },\n width: \"100%\",\n});\n\nexport const DrawerHeaderStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$surfaceLight\",\n borderBottom: \"1px solid $border\",\n display: \"flex\",\n flexShrink: 0,\n fontFamily: \"$heading\",\n justifyContent: \"space-between\",\n padding: \"$small $medium\",\n});\n\nexport const DrawerContentStyled = styled(\"div\", {\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n flex: 1,\n margin: \"0 auto\",\n maxWidth: \"600px\",\n overflowX: \"hidden\",\n overflowY: \"auto\",\n padding: \"$large $medium\",\n paddingBottom: \"calc($medium + env(safe-area-inset-bottom))\",\n width: \"100%\",\n});\n","import type { JSX } from \"react\";\n\nimport { Text, type IAvatar } from \"../../index\";\nimport { AvatarStyled } from \"./styles\";\n\ntype AvatarColorTheme =\n | \"default\"\n | \"blue\"\n | \"green\"\n | \"orange\"\n | \"red\"\n | \"violet\"\n | \"yellow\"\n | \"pink\";\n\n/**\n * Determines avatar color based on first character of fallback text\n * Uses simple algorithm to ensure consistent, distributed color assignment\n */\nfunction getAutoTheme(fallback?: string): AvatarColorTheme {\n if (!fallback || fallback.length === 0) return \"default\";\n\n const firstChar = fallback.charAt(0).toLowerCase();\n const charCode = firstChar.charCodeAt(0);\n\n // Map characters to colors in a distributed way\n // a-d → blue, e-h → green, i-l → orange, m-p → red, q-t → violet, u-w → yellow, x-z → pink\n // Numbers 0-9 also map to colors\n const colorMap: AvatarColorTheme[] = [\n \"blue\",\n \"green\",\n \"orange\",\n \"red\",\n \"violet\",\n \"yellow\",\n \"pink\",\n ];\n\n // For letters (a-z)\n if (charCode >= 97 && charCode <= 122) {\n const index = Math.floor(((charCode - 97) / 26) * colorMap.length);\n\n return colorMap[index] || \"blue\";\n }\n\n // For numbers (0-9)\n if (charCode >= 48 && charCode <= 57) {\n const index = (charCode - 48) % colorMap.length;\n\n return colorMap[index] || \"blue\";\n }\n\n // Default for special characters\n return \"default\";\n}\n\nexport default function Avatar({\n css,\n fallback,\n image,\n theme = \"default\",\n width = 32,\n}: IAvatar): JSX.Element {\n // Determine final theme - if \"auto\", calculate from fallback, otherwise use provided theme\n const finalTheme: AvatarColorTheme =\n theme === \"auto\" ? getAutoTheme(fallback) : (theme as AvatarColorTheme);\n\n return (\n <AvatarStyled\n css={{\n height: width,\n maxHeight: width,\n maxWidth: width,\n minHeight: width,\n minWidth: width,\n width: width,\n ...css,\n }}\n theme={finalTheme}>\n {image || <Text as=\"span\">{fallback}</Text>}\n </AvatarStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const AvatarStyled = styled(\"div\", {\n alignSelf: \"center\",\n border: \"$smallest solid $border\",\n borderRadius: \"$full\",\n borderTopColor: \"$borderLight\",\n boxShadow: \"$default\",\n display: \"inline-flex\",\n height: \"100%\",\n img: {\n height: \"100%\",\n objectFit: \"cover !important\",\n width: \"100%\",\n },\n justifyContent: \"center\",\n overflow: \"hidden\",\n\n span: {\n alignItems: \"center\",\n color: \"$text\",\n display: \"flex\",\n fontFamily: \"$heading\",\n fontSize: \"$small\",\n fontWeight: 600,\n justifyContent: \"center\",\n overflow: \"hidden\",\n textTransform: \"uppercase\",\n },\n\n variants: {\n theme: {\n blue: {\n backgroundColor: \"$blue\",\n span: {\n color: \"$blueDark\",\n },\n },\n default: {\n backgroundColor: \"$surface\",\n },\n green: {\n backgroundColor: \"$green\",\n span: {\n color: \"$greenDark\",\n },\n },\n orange: {\n backgroundColor: \"$orange\",\n span: {\n color: \"$orangeDark\",\n },\n },\n pink: {\n backgroundColor: \"$pink\",\n span: {\n color: \"$pinkDark\",\n },\n },\n red: {\n backgroundColor: \"$red\",\n span: {\n color: \"$redDark\",\n },\n },\n violet: {\n backgroundColor: \"$violet\",\n span: {\n color: \"$violetDark\",\n },\n },\n yellow: {\n backgroundColor: \"$yellow\",\n span: {\n color: \"$yellowDark\",\n },\n },\n },\n },\n\n verticalAlign: \"middle\",\n});\n","import { useState, useRef, type JSX } from \"react\";\n\nimport { CaretDownIcon, CaretUpIcon } from \"../../icons\";\nimport { Icon, type IAccordion } from \"../../index\";\nimport {\n AccordionStyled,\n AccordionItemStyled,\n AccordionButtonStyled,\n AccordionListContentStyled,\n} from \"./styles\";\n\nexport default function Accordion({\n allowMultiple = false,\n initial,\n onToggle,\n options,\n}: IAccordion): JSX.Element {\n const [openItems, setOpenItems] = useState<Set<string>>(new Set(initial ? [initial] : []));\n const contentRefs = useRef<Record<string, HTMLDivElement | null>>({});\n\n const hasOptions = options && options.length > 0;\n\n function handleToggle(value: string): void {\n const isOpen = openItems.has(value);\n\n if (allowMultiple) {\n const newOpenItems = new Set(openItems);\n\n if (isOpen) {\n newOpenItems.delete(value);\n } else {\n newOpenItems.add(value);\n }\n setOpenItems(newOpenItems);\n } else {\n setOpenItems(isOpen ? new Set() : new Set([value]));\n }\n\n if (!isOpen) {\n setTimeout(() => {\n const contentElement = contentRefs.current[value];\n\n if (contentElement) {\n contentElement.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n });\n window.scrollBy(0, 20);\n }\n }, 150);\n }\n\n if (onToggle) {\n onToggle(value, !isOpen);\n }\n }\n\n function handleItemClick(value: string): () => void {\n return () => handleToggle(value);\n }\n\n if (!hasOptions) {\n return <AccordionStyled />;\n }\n\n return (\n <AccordionStyled>\n {options.map((option) => {\n const isOpen = openItems.has(option.value);\n const buttonId = `accordion-${option.value}-button`;\n const panelId = `accordion-${option.value}-panel`;\n\n return (\n <AccordionItemStyled key={option.value}>\n <AccordionButtonStyled\n aria-controls={panelId}\n aria-expanded={isOpen}\n expanded={isOpen}\n icon={isOpen ? <Icon icon={<CaretUpIcon />} /> : <Icon icon={<CaretDownIcon />} />}\n iconPosition=\"right\"\n id={buttonId}\n onClick={handleItemClick(option.value)}>\n {option.label}\n </AccordionButtonStyled>\n <AccordionListContentStyled\n ref={(el: HTMLDivElement | null) => {\n contentRefs.current[option.value] = el;\n }}\n aria-labelledby={buttonId}\n expanded={isOpen}\n id={panelId}\n role=\"region\">\n <div>{option.children}</div>\n </AccordionListContentStyled>\n </AccordionItemStyled>\n );\n })}\n </AccordionStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\nimport Button from \"../Button\";\n\nexport const AccordionStyled = styled(\"div\", {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"$small\",\n position: \"relative\",\n width: \"100%\",\n});\n\n// Simple list item with border\nexport const AccordionItemStyled = styled(\"div\", {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\",\n width: \"100%\",\n});\n\n// Clean button - no backgrounds, just text and icon\nexport const AccordionButtonStyled = styled(Button, {\n \"& svg\": {\n flexShrink: 0,\n },\n alignItems: \"center\",\n appearance: \"none\",\n border: \"1px solid $border\",\n color: \"$text\",\n cursor: \"pointer\",\n display: \"flex\",\n fontFamily: \"$heading\",\n fontSize: \"$default\",\n fontWeight: 600,\n justifyContent: \"space-between\",\n lineHeight: \"$default\",\n textAlign: \"left\",\n transition: \"border-radius 200ms ease-out, border 200ms ease-out\",\n variants: {\n expanded: {\n false: {\n borderBottom: \"1px solid $border\",\n borderBottomLeftRadius: \"$default\",\n borderBottomRightRadius: \"$default\",\n },\n true: {\n borderBottom: \"none\",\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n },\n },\n },\n width: \"100%\",\n willChange: \"border-radius, border\",\n});\n// Content area - simple and clean\nexport const AccordionListContentStyled = styled(\"div\", {\n overflow: \"hidden\",\n paddingBottom: \"$small\",\n transition:\n \"height 200ms ease-out, opacity 150ms ease-out, border-radius 200ms ease-out, border 200ms ease-out\",\n variants: {\n expanded: {\n false: {\n border: \"1px solid transparent\",\n borderRadius: 0,\n height: 0,\n opacity: 0,\n paddingBottom: 0,\n },\n true: {\n border: \"1px solid $border\",\n borderRadius: \"$default\",\n borderTop: \"none\",\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n height: \"auto\",\n opacity: 1,\n padding: \"$small\",\n },\n },\n },\n willChange: \"height, opacity, border-radius, border\",\n});\n","import { type JSX } from \"react\";\n\nimport type { IProgress } from \"../../index\";\n\nimport { theme } from \"../../stitches.config\";\nimport {\n ProgressStyled,\n ProgressTrackStyled,\n ProgressFillStyled,\n ProgressLabelStyled,\n ProgressRadialStyled,\n ProgressRadialSVGStyled,\n ProgressRadialLabelStyled,\n} from \"./styles\";\n\nexport default function Progress({\n css,\n label,\n max = 100,\n showLabel = false,\n size = \"medium\",\n theme: themeVariant = \"default\",\n value = 0,\n variant = \"linear\",\n}: IProgress): JSX.Element {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n\n if (variant === \"radial\") {\n const sizeMap = { large: 120, medium: 80, small: 60 };\n const circleSize = sizeMap[size];\n const strokeWidth = 8;\n const radius = (circleSize - strokeWidth * 2) / 2;\n const circumference = 2 * Math.PI * radius;\n const strokeDashoffset = circumference - (percentage / 100) * circumference;\n const center = circleSize / 2;\n\n const themeColor =\n themeVariant === \"default\" ? theme.colors.textMuted.value : theme.colors[themeVariant].value;\n\n return (\n <ProgressRadialStyled css={css} size={size}>\n <ProgressRadialSVGStyled\n aria-valuemax={max}\n aria-valuemin={0}\n aria-valuenow={value}\n role=\"progressbar\"\n viewBox={`0 0 ${circleSize} ${circleSize}`}>\n <circle\n cx={center}\n cy={center}\n fill=\"none\"\n r={radius}\n stroke={theme.colors.border.value}\n strokeWidth={strokeWidth}\n />\n <circle\n cx={center}\n cy={center}\n fill=\"none\"\n r={radius}\n stroke={themeColor}\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n </ProgressRadialSVGStyled>\n {(showLabel || label) && (\n <ProgressRadialLabelStyled size={size}>\n {label || `${Math.round(percentage)}%`}\n </ProgressRadialLabelStyled>\n )}\n </ProgressRadialStyled>\n );\n }\n\n return (\n <ProgressStyled css={css}>\n <ProgressTrackStyled size={size} theme={themeVariant}>\n <ProgressFillStyled\n aria-valuemax={max}\n aria-valuemin={0}\n aria-valuenow={value}\n css={{ width: `${percentage}%` }}\n role=\"progressbar\"\n theme={themeVariant}\n />\n </ProgressTrackStyled>\n {(showLabel || label) && (\n <ProgressLabelStyled>{label || `${Math.round(percentage)}%`}</ProgressLabelStyled>\n )}\n </ProgressStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const ProgressStyled = styled(\"div\", {\n position: \"relative\",\n width: \"100%\",\n});\n\nexport const ProgressTrackStyled = styled(\"div\", {\n backgroundColor: \"$surface\",\n border: \"1px solid $border\",\n borderRadius: \"$small\",\n height: \"18px\",\n overflow: \"hidden\",\n position: \"relative\",\n variants: {\n size: {\n large: {\n height: \"24px\",\n },\n medium: {\n height: \"18px\",\n },\n small: {\n height: \"12px\",\n },\n },\n theme: {\n blue: {\n borderColor: \"$blue\",\n },\n default: {\n borderColor: \"$border\",\n },\n green: {\n borderColor: \"$green\",\n },\n orange: {\n borderColor: \"$orange\",\n },\n red: {\n borderColor: \"$red\",\n },\n violet: {\n borderColor: \"$violet\",\n },\n yellow: {\n borderColor: \"$yellow\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const ProgressFillStyled = styled(\"div\", {\n backgroundColor: \"$surface\",\n borderRadius: \"$small\",\n height: \"100%\",\n transition: \"width 0.3s ease\",\n variants: {\n theme: {\n blue: {\n backgroundColor: \"$blue\",\n },\n default: {\n backgroundColor: \"$surface\",\n },\n green: {\n backgroundColor: \"$green\",\n },\n orange: {\n backgroundColor: \"$orange\",\n },\n red: {\n backgroundColor: \"$red\",\n },\n violet: {\n backgroundColor: \"$violet\",\n },\n yellow: {\n backgroundColor: \"$yellow\",\n },\n },\n },\n\n width: \"0%\",\n});\n\nexport const ProgressLabelStyled = styled(\"div\", {\n color: \"$textMuted\",\n fontFamily: \"$heading\",\n fontSize: \"$small\",\n fontWeight: 600,\n marginTop: \"$smaller\",\n textAlign: \"right\",\n});\n\nexport const ProgressRadialStyled = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"center\",\n position: \"relative\",\n variants: {\n size: {\n large: {\n height: \"120px\",\n width: \"120px\",\n },\n medium: {\n height: \"80px\",\n width: \"80px\",\n },\n small: {\n height: \"32px\",\n width: \"32px\",\n },\n },\n },\n});\n\nexport const ProgressRadialSVGStyled = styled(\"svg\", {\n \"& circle\": {\n transition: \"stroke-dashoffset 0.3s ease\",\n },\n height: \"100%\",\n transform: \"rotate(-90deg)\",\n width: \"100%\",\n});\n\nexport const ProgressRadialLabelStyled = styled(\"div\", {\n color: \"$textMuted\",\n fontFamily: \"$heading\",\n fontWeight: 600,\n left: \"50%\",\n position: \"absolute\",\n textAlign: \"center\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n variants: {\n size: {\n large: {\n fontSize: \"$large\",\n },\n medium: {\n fontSize: \"$medium\",\n },\n small: {\n fontSize: \"$small\",\n },\n },\n },\n});\n","import { useState, useCallback, useMemo, Fragment, useRef, useEffect, type JSX } from \"react\";\n\nimport {\n WarningIcon,\n CaretDownIcon,\n CaretRightIcon,\n ArrowUpIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n} from \"../../icons\";\nimport { Loading, Stack, Text, Button, Badge, Box, Icon, type ITable } from \"../../index\";\nimport {\n TableStyled,\n TableCoreStyled,\n TableRowStyled,\n TableCellStyled,\n TableHeaderCellStyled,\n TableRowAnimatedStyled,\n TablePaginationBlockStyled,\n TableCellBlockStyled,\n TableSubRowStyled,\n TableSubCellStyled,\n TableMobileViewStyled,\n TableMobileRowStyled,\n TableMobileLabelStyled,\n TableMobileValueStyled,\n TableEmptyStateCellStyled,\n} from \"./styles\";\n\nexport default function Table({\n columns,\n css,\n error,\n kbd = false,\n loading,\n pagination = false,\n rows,\n}: ITable): JSX.Element {\n const tableRef = useRef<HTMLTableElement>(null);\n const tableHeaderRef = useRef<HTMLTableRowElement>(null);\n\n const [currentPage, setCurrentPage] = useState(1);\n const [expanded, setExpanded] = useState(new Set<string>());\n const [sortColumn, setSortColumn] = useState<string | null>(null);\n const [sortDirection, setSortDirection] = useState<\"asc\" | \"desc\">(\"asc\");\n\n const itemsPerPage = 25;\n const memoizedColumns = useMemo(() => columns, [columns]);\n const memoizedRows = useMemo(() => rows, [rows]);\n const hasData = !loading && !error && memoizedRows.length > 0;\n const isFirstPage = currentPage === 1;\n const showPagination = pagination && memoizedRows.length > itemsPerPage;\n\n const sortedRows = useMemo(() => {\n if (!sortColumn) return memoizedRows;\n\n return sortDirection === \"asc\"\n ? memoizedRows.sort((a, b) =>\n String(a.cells[sortColumn]).localeCompare(String(b.cells[sortColumn])),\n )\n : memoizedRows.sort((a, b) =>\n String(b.cells[sortColumn]).localeCompare(String(a.cells[sortColumn])),\n );\n }, [memoizedRows, sortColumn, sortDirection]);\n\n const totalPages = useMemo(\n () => Math.ceil(sortedRows.length / itemsPerPage),\n [sortedRows.length],\n );\n\n const paginatedRows = useMemo(() => {\n if (!pagination || sortedRows.length <= itemsPerPage) return sortedRows;\n\n const startIndex = (currentPage - 1) * itemsPerPage;\n\n return sortedRows.slice(startIndex, startIndex + itemsPerPage);\n }, [sortedRows, currentPage, pagination]);\n\n const isLastPage = currentPage === totalPages;\n const hasLimitedRows = paginatedRows.length < 20;\n\n const scrollToTop = useCallback(() => {\n if (tableHeaderRef.current) {\n tableHeaderRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n });\n }\n }, []);\n\n const handlePrevPage = useCallback(() => {\n setCurrentPage((prev) => Math.max(1, prev - 1));\n scrollToTop();\n }, [scrollToTop]);\n\n const handleNextPage = useCallback(() => {\n setCurrentPage((prev) => Math.min(totalPages, prev + 1));\n scrollToTop();\n }, [totalPages, scrollToTop]);\n\n const toggleRow = useCallback((id: string) => {\n setExpanded((prev) => {\n const next = new Set(prev);\n\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n const row = document.getElementById(id);\n\n row?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n }\n\n return next;\n });\n }, []);\n\n const handleSort = useCallback((columnKey: string) => {\n setSortColumn((prev) => {\n if (prev === columnKey) {\n setSortDirection((d) => (d === \"asc\" ? \"desc\" : \"asc\"));\n\n return columnKey;\n }\n setSortDirection(\"asc\");\n\n return columnKey;\n });\n }, []);\n\n const getSortButtonOpacity = useCallback(\n (colKey: string): string => {\n return sortColumn === colKey ? \"$default\" : \"$light\";\n },\n [sortColumn],\n );\n\n const renderLoadingState = useCallback((): JSX.Element => {\n return (\n <Stack css={{ alignItems: \"center\", gap: \"$medium\" }}>\n <Loading />\n <Text as=\"small\" css={{ opacity: \"$light\" }}>\n Loading data...\n </Text>\n </Stack>\n );\n }, []);\n\n const renderErrorState = useCallback((): JSX.Element => {\n return (\n <Stack css={{ alignItems: \"center\", gap: \"$small\" }}>\n <Badge icon={<Icon icon={<WarningIcon />} />}>{error}</Badge>\n </Stack>\n );\n }, [error]);\n\n const renderEmptyState = useCallback((): JSX.Element => {\n return (\n <Text as=\"small\" css={{ opacity: \"$light\" }}>\n No data available\n </Text>\n );\n }, []);\n\n useEffect(() => {\n if (!kbd || !pagination) return;\n\n function handleKeyDown(event: KeyboardEvent): void {\n if ((event.ctrlKey || event.metaKey) && event.key === \"ArrowLeft\") {\n event.preventDefault();\n handlePrevPage();\n } else if ((event.ctrlKey || event.metaKey) && event.key === \"ArrowRight\") {\n event.preventDefault();\n handleNextPage();\n }\n }\n\n document.addEventListener(\"keydown\", handleKeyDown);\n\n return (): void => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [kbd, pagination, handlePrevPage, handleNextPage]);\n\n const renderDesktopRow = useCallback(\n (row: ITable[\"rows\"][0], isSubRow = false) => {\n const hasSubRows = Boolean(row.subRows?.length);\n const isExpanded = expanded.has(row.id);\n const isFullWidth = Object.keys(row.cells).length === 1;\n const RowComponent = isSubRow ? TableSubRowStyled : TableRowAnimatedStyled;\n const CellComponent = isSubRow ? TableSubCellStyled : TableCellStyled;\n\n return (\n <Fragment key={row.id}>\n <RowComponent id={row.id}>\n {isFullWidth ? (\n <CellComponent colSpan={memoizedColumns.length} isFullWidth>\n {isSubRow ? (\n <Box>{row.cells[Object.keys(row.cells)[0]]}</Box>\n ) : (\n row.cells[Object.keys(row.cells)[0]]\n )}\n </CellComponent>\n ) : (\n memoizedColumns.map((col) => (\n <CellComponent\n key={`${row.id}-${col.key}`}\n align={col.align}\n css={{\n width: col.width || `calc(100% / ${memoizedColumns.length})`,\n }}\n hasLimitedRows={!isSubRow && hasLimitedRows}\n isAction={col.key === \"actions\"}>\n <TableCellBlockStyled\n css={{\n justifyContent: col.key === \"actions\" ? \"flex-end\" : \"flex-start\",\n }}>\n {col.key === \"actions\" && hasSubRows && !isSubRow && (\n <Button\n small\n theme=\"minimal\"\n onClick={(e) => {\n e.stopPropagation();\n toggleRow(row.id);\n }}>\n {isExpanded ? (\n <Icon icon={<CaretDownIcon />} />\n ) : (\n <Icon icon={<CaretRightIcon />} />\n )}\n </Button>\n )}\n {row.cells[col.key]}\n </TableCellBlockStyled>\n </CellComponent>\n ))\n )}\n </RowComponent>\n {isExpanded && hasSubRows && row.subRows?.map((subRow) => renderDesktopRow(subRow, true))}\n </Fragment>\n );\n },\n [expanded, memoizedColumns, toggleRow, hasLimitedRows],\n );\n\n const renderMobileCard = useCallback(\n (row: ITable[\"rows\"][0], isSubRow = false) => {\n const hasSubRows = Boolean(row.subRows?.length);\n const isExpanded = expanded.has(row.id);\n const isFullWidth = Object.keys(row.cells).length === 1;\n\n return (\n <Fragment key={row.id}>\n <Box theme={isSubRow ? \"border\" : \"default\"}>\n {isFullWidth ? (\n <div>{row.cells[Object.keys(row.cells)[0]]}</div>\n ) : (\n <>\n {memoizedColumns\n .filter((col) => col.key !== \"actions\")\n .map((col) => (\n <TableMobileRowStyled key={`${row.id}-${col.key}`}>\n <TableMobileLabelStyled>{col.label}</TableMobileLabelStyled>\n <TableMobileValueStyled>{row.cells[col.key]}</TableMobileValueStyled>\n </TableMobileRowStyled>\n ))}\n\n {(row.cells.actions || (hasSubRows && !isSubRow)) && (\n <TableMobileRowStyled isActions>\n <TableMobileValueStyled isActions>\n {hasSubRows && !isSubRow && (\n <Button\n small\n theme=\"minimal\"\n onClick={(e) => {\n e.stopPropagation();\n toggleRow(row.id);\n }}>\n {isExpanded ? (\n <Icon icon={<CaretDownIcon />} />\n ) : (\n <Icon icon={<CaretRightIcon />} />\n )}\n </Button>\n )}\n {row.cells.actions}\n </TableMobileValueStyled>\n </TableMobileRowStyled>\n )}\n </>\n )}\n </Box>\n {isExpanded && hasSubRows && row.subRows?.map((subRow) => renderMobileCard(subRow, true))}\n </Fragment>\n );\n },\n [expanded, memoizedColumns, toggleRow],\n );\n\n return (\n <TableStyled css={css}>\n <TableCoreStyled ref={tableRef} aria-busy={loading || undefined}>\n <thead>\n <TableRowStyled ref={tableHeaderRef}>\n {memoizedColumns.map((col) => (\n <TableHeaderCellStyled\n key={col.key}\n align={col.align}\n css={{\n width: col.width || `calc(100% / ${memoizedColumns.length})`,\n }}\n scope=\"col\">\n <div\n aria-sort={\n col.sortable && sortColumn === col.key\n ? sortDirection === \"asc\"\n ? \"ascending\"\n : \"descending\"\n : undefined\n }>\n {col.label}\n {col.sortable && (\n <Button\n css={{\n \"&:hover\": {\n backgroundColor: \"$surface\",\n opacity: 1,\n },\n opacity: getSortButtonOpacity(col.key),\n transition: \"$default\",\n }}\n small\n theme=\"minimal\"\n onClick={() => handleSort(col.key)}>\n {sortColumn === col.key ? (\n sortDirection === \"asc\" ? (\n <Icon icon={<ArrowUpIcon />} />\n ) : (\n <Icon icon={<ArrowDownIcon />} />\n )\n ) : (\n <Icon icon={<ArrowUpIcon />} />\n )}\n </Button>\n )}\n </div>\n </TableHeaderCellStyled>\n ))}\n </TableRowStyled>\n </thead>\n <tbody>\n {error ? (\n <tr>\n <TableEmptyStateCellStyled colSpan={columns.length}>\n {renderErrorState()}\n </TableEmptyStateCellStyled>\n </tr>\n ) : loading ? (\n <tr>\n <TableEmptyStateCellStyled colSpan={columns.length}>\n {renderLoadingState()}\n </TableEmptyStateCellStyled>\n </tr>\n ) : hasData ? (\n paginatedRows.map((row) => renderDesktopRow(row))\n ) : (\n <tr>\n <TableEmptyStateCellStyled colSpan={columns.length}>\n {renderEmptyState()}\n </TableEmptyStateCellStyled>\n </tr>\n )}\n </tbody>\n </TableCoreStyled>\n\n <TableMobileViewStyled>\n {error ? (\n <Box>\n <Stack css={{ alignItems: \"center\", gap: \"$small\", textAlign: \"center\" }}>\n {renderErrorState()}\n </Stack>\n </Box>\n ) : loading ? (\n <Box>\n <Stack\n css={{\n alignItems: \"center\",\n gap: \"$medium\",\n textAlign: \"center\",\n }}>\n {renderLoadingState()}\n </Stack>\n </Box>\n ) : hasData ? (\n paginatedRows.map((row) => renderMobileCard(row))\n ) : (\n <Box>\n <Stack\n css={{\n alignItems: \"center\",\n gap: \"$medium\",\n textAlign: \"center\",\n }}>\n {renderEmptyState()}\n </Stack>\n </Box>\n )}\n </TableMobileViewStyled>\n\n {showPagination && (\n <TablePaginationBlockStyled>\n <Text as=\"small\">\n Page {currentPage} of {totalPages} ({sortedRows.length} total)\n </Text>\n <Stack>\n <Button\n disabled={isFirstPage}\n icon={<Icon icon={<ArrowLeftIcon />} />}\n inline=\"small\"\n small\n onClick={handlePrevPage}>\n Previous\n </Button>\n <Button\n disabled={isLastPage}\n icon={<Icon icon={<ArrowRightIcon />} />}\n iconPosition=\"right\"\n small\n onClick={handleNextPage}>\n Next\n </Button>\n </Stack>\n </TablePaginationBlockStyled>\n )}\n </TableStyled>\n );\n}\n","import { fadeIn, styled } from \"../../stitches.config\";\n\nconst cellPaddingBase = {\n \"&:first-child\": {\n paddingLeft: \"$medium\",\n },\n \"&:last-child\": {\n paddingRight: \"$medium\",\n },\n};\n\nconst alignVariants = {\n center: { textAlign: \"center\" },\n left: { textAlign: \"left\" },\n right: { textAlign: \"right\" },\n} as const;\n\nconst rowHoverBase = {\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n transition: \"$fast\",\n },\n \"&:last-child\": {\n borderBottom: \"none\",\n },\n borderBottom: \"1px solid $borderLight\",\n transition: \"$default\",\n};\n\nexport const TableStyled = styled(\"div\", {\n backgroundColor: \"$surface\",\n border: \"1px solid $border\",\n borderBottomColor: \"$borderBottom\",\n borderRadius: \"$default\",\n borderTopColor: \"$borderLight\",\n boxShadow: \"$subtle\",\n overflow: \"hidden\",\n phone: {\n backgroundColor: \"transparent\",\n border: \"none\",\n borderRadius: 0,\n boxShadow: \"none\",\n overflow: \"visible\",\n },\n position: \"relative\",\n transition: \"$default\",\n width: \"100%\",\n});\n\nexport const TableCoreStyled = styled(\"table\", {\n borderCollapse: \"separate\",\n borderSpacing: 0,\n fontSize: \"$default\",\n phone: {\n display: \"none\",\n },\n tableLayout: \"fixed\",\n width: \"100%\",\n});\n\nexport const TableMobileViewStyled = styled(\"div\", {\n display: \"none\",\n phone: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"$small\",\n },\n});\n\nexport const TableRowStyled = styled(\"tr\", {\n ...rowHoverBase,\n \"tbody &\": {\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n },\n },\n});\n\nexport const TableMobileRowStyled = styled(\"div\", {\n \"&:not(:last-child)\": {\n borderBottom: \"1px solid $borderLight\",\n marginBottom: \"$smaller\",\n paddingBottom: \"$smaller\",\n },\n alignItems: \"flex-start\",\n display: \"flex\",\n gap: \"$small\",\n justifyContent: \"space-between\",\n padding: \"$smaller 0\",\n variants: {\n isActions: {\n true: {\n alignItems: \"center\",\n borderBottom: \"none\",\n justifyContent: \"flex-end\",\n marginBottom: 0,\n marginTop: \"$small\",\n paddingBottom: 0,\n paddingTop: \"$small\",\n },\n },\n },\n});\n\nexport const TableMobileLabelStyled = styled(\"span\", {\n color: \"$text\",\n fontFamily: \"$heading\",\n fontSize: \"$small\",\n fontWeight: 600,\n minWidth: \"50px\",\n opacity: \"$light\",\n});\n\nexport const TableMobileValueStyled = styled(\"div\", {\n alignItems: \"center\",\n color: \"$text\",\n display: \"flex\",\n flex: 1,\n fontSize: \"$default\",\n gap: \"$smaller\",\n justifyContent: \"flex-end\",\n textAlign: \"right\",\n variants: {\n isActions: {\n true: {\n flex: \"0 0 auto\",\n justifyContent: \"flex-end\",\n },\n },\n },\n});\n\nexport const TableCellStyled = styled(\"td\", {\n ...cellPaddingBase,\n borderBottom: \"1px solid $border\",\n color: \"$text\",\n fontSize: \"$default\",\n fontWeight: 400,\n lineHeight: \"$default\",\n padding: \"$medium $medium\",\n variants: {\n align: alignVariants,\n hasLimitedRows: {\n true: {\n padding: \"$medium $medium\",\n },\n },\n isAction: {\n true: {\n textAlign: \"right\",\n width: \"auto\",\n },\n },\n isFullWidth: {\n true: {\n textAlign: \"center\",\n },\n },\n },\n verticalAlign: \"middle\",\n});\n\nexport const TableHeaderCellStyled = styled(\"th\", {\n ...cellPaddingBase,\n \"& > div\": {\n alignItems: \"center\",\n display: \"inline-flex\",\n gap: \"$smaller\",\n },\n backgroundColor: \"$surfaceLight\",\n borderBottom: \"1px solid $border\",\n color: \"$text\",\n fontFamily: \"$heading\",\n fontSize: \"$small\",\n fontWeight: 600,\n padding: \"$small $medium\",\n textAlign: \"left\",\n variants: {\n align: alignVariants,\n },\n verticalAlign: \"middle\",\n});\n\nexport const TableRowAnimatedStyled = styled(TableRowStyled, {\n animation: `${fadeIn} 200ms ease-in-out`,\n});\n\nexport const TablePaginationBlockStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$surfaceLight\",\n borderTop: \"1px solid $border\",\n display: \"flex\",\n gap: \"$medium\",\n justifyContent: \"space-between\",\n padding: \"$small $medium\",\n phone: {\n alignItems: \"stretch\",\n backgroundColor: \"transparent\",\n border: \"none\",\n flexDirection: \"column\",\n gap: \"$small\",\n marginTop: \"$medium\",\n padding: \"$medium 0\",\n },\n width: \"100%\",\n});\n\nexport const TableCellBlockStyled = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n gap: \"$smaller\",\n minHeight: \"$small\",\n width: \"100%\",\n});\n\nexport const TableEmptyStateCellStyled = styled(\"td\", {\n padding: \"40px 0\",\n textAlign: \"center\",\n});\n\nexport const TableSubRowStyled = styled(\"tr\", {\n \"&:hover\": {\n backgroundColor: \"$surface\",\n },\n \"&:last-child\": {\n borderBottom: \"none\",\n },\n backgroundColor: \"$surface\",\n borderBottom: \"1px solid $borderLight\",\n transition: \"$default\",\n});\n\nexport const TableSubCellStyled = styled(\"td\", {\n backgroundColor: \"transparent\",\n color: \"$text\",\n fontSize: \"$small\",\n fontWeight: 400,\n padding: \"$medium\",\n variants: {\n align: alignVariants,\n isAction: {\n true: {\n textAlign: \"right\",\n width: \"auto\",\n },\n },\n isFullWidth: {\n true: {\n paddingLeft: \"$medium\",\n paddingRight: \"$medium\",\n textAlign: \"left\",\n },\n },\n },\n verticalAlign: \"top\",\n});\n\nexport default TableStyled;\n","import { type JSX } from \"react\";\n\nimport { type ITabs } from \"../../index\";\nimport { TabsListStyled, TabsStyled, TabsTriggerStyled } from \"./styles\";\n\nexport default function Tabs({ active, options, setActive }: ITabs): JSX.Element {\n return (\n <TabsStyled>\n <TabsListStyled>\n {options.map((option) => (\n <TabsTriggerStyled\n key={option.value}\n active={active === option.value}\n type=\"button\"\n onClick={() => setActive(option.value)}>\n {option.label}\n </TabsTriggerStyled>\n ))}\n </TabsListStyled>\n </TabsStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const TabsStyled = styled(\"div\", {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"$medium\",\n maxWidth: \"100%\",\n width: \"fit-content\",\n});\n\nexport const TabsListStyled = styled(\"div\", {\n // Custom scrollbar styling for webkit browsers\n \"&::-webkit-scrollbar\": {\n height: \"8px\",\n },\n \"&::-webkit-scrollbar-thumb\": {\n \"&:hover\": {\n backgroundColor: \"$borderStrong\",\n },\n backgroundColor: \"$border\",\n borderRadius: \"$small\",\n },\n \"&::-webkit-scrollbar-track\": {\n backgroundColor: \"$surface\",\n borderRadius: \"$small\",\n },\n // Box-like container for tabs\n backgroundColor: \"$surface\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$subtle\",\n display: \"inline-flex\",\n flexShrink: 0,\n gap: \"$smallest\",\n maxWidth: \"100%\",\n overflowX: \"auto\",\n overflowY: \"hidden\",\n padding: \"$smaller\",\n\n scrollbarColor: \"$border $surface\",\n scrollbarWidth: \"thin\",\n width: \"fit-content\",\n});\n\nexport const TabsTriggerStyled = styled(\"button\", {\n \"&:active\": {\n transform: \"scale(0.98)\",\n transition: \"$fast\",\n },\n \"&:disabled\": {\n cursor: \"not-allowed\",\n opacity: \"$light\",\n },\n \"&:focus-visible\": {\n outline: \"2px solid $yellow\",\n outlineOffset: \"2px\",\n },\n appearance: \"none\",\n border: \"none\",\n borderRadius: \"$small\",\n color: \"$text\",\n cursor: \"pointer\",\n fontFamily: \"$default\",\n fontSize: \"$default\",\n fontWeight: 400,\n lineHeight: \"$default\",\n minHeight: \"$medium\",\n padding: \"$smallest $small\",\n transition: \"$default\",\n variants: {\n active: {\n false: {\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n },\n backgroundColor: \"transparent\",\n },\n true: {\n \"&:hover\": {\n boxShadow: \"$medium\",\n opacity: 0.95,\n transform: \"translateY(-1px)\",\n },\n backgroundColor: \"$text\",\n boxShadow: \"$default\",\n color: \"$background\",\n },\n },\n },\n whiteSpace: \"nowrap\",\n});\n\nexport const TabsContentStyled = styled(\"div\", {\n animation: \"$fadeInContent 0.3s ease-in-out\",\n width: \"100%\",\n});\n","import type { JSX } from \"react\";\n\nimport { Loading, type ILoadingOverlay } from \"../../../index\";\nimport { LoadingOverlayStyled, LoadingOverlayTitleStyled } from \"../styles\";\n\nexport default function LoadingOverlay({ title }: ILoadingOverlay): JSX.Element {\n return (\n <LoadingOverlayStyled>\n <Loading />\n <LoadingOverlayTitleStyled>{title}</LoadingOverlayTitleStyled>\n </LoadingOverlayStyled>\n );\n}\n","import type { JSX } from \"react\";\n\nimport { default as NextImage } from \"next/image\";\n\nimport { type IImage } from \"../../index\";\nimport { ImageStyled } from \"./styles\";\n\nexport default function Image({\n borderRadius,\n css,\n fill,\n fillFit,\n fillHeight = \"100%\",\n fillPosition = \"center\",\n quality = 90,\n ...rest\n}: IImage): JSX.Element {\n return (\n <ImageStyled\n css={{\n ...(borderRadius && {\n borderRadius: `$${borderRadius}`,\n img: {\n borderRadius: `$${borderRadius}`,\n },\n }),\n height: fillHeight,\n ...css,\n }}>\n <NextImage\n {...rest}\n fill={fill}\n quality={quality}\n style={{\n objectFit: fill ? fillFit || \"cover\" : \"contain\",\n objectPosition: fillPosition,\n }}\n />\n </ImageStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const ImageStyled = styled(\"div\", {\n height: \"100%\",\n overflow: \"hidden\",\n position: \"relative\",\n transition: \"$default\",\n width: \"100%\",\n});\n","import { JSX, ReactNode } from \"react\";\n\nimport { useNodesLogic } from \"./hooks\";\nimport { ConnectingLine, NodeRow, NodesContainer, NodesSVG } from \"./styles\";\n\ninterface INodes {\n height?: number;\n nodes: Array<{ children: ReactNode; color?: string }>;\n parent: ReactNode;\n}\n\nexport default function Nodes({ height, nodes, parent }: INodes): JSX.Element {\n const { containerRef, nodesRef, parentRef, paths } = useNodesLogic(nodes, parent);\n\n const hasCustomHeight = Boolean(height);\n const containerHeight = hasCustomHeight ? `${height}px` : undefined;\n\n const renderNode = (\n node: { children: ReactNode; color?: string },\n index: number,\n ): JSX.Element => {\n return (\n <div key={index} ref={(el) => void (nodesRef.current[index] = el)}>\n {node.children}\n </div>\n );\n };\n\n const renderConnectingLines = (): JSX.Element => (\n <NodesSVG>\n {/* Base lines */}\n {paths.map((path, i) => (\n <ConnectingLine key={`base-${i}`} css={{ stroke: \"$border\" }} d={path} />\n ))}\n {/* Animated flow lines */}\n {paths.map((path, i) => {\n const nodeColor = nodes[i]?.color;\n const strokeColor = nodeColor ? `$${nodeColor}` : \"$text\";\n\n return <ConnectingLine key={`flow-${i}`} animate css={{ stroke: strokeColor }} d={path} />;\n })}\n </NodesSVG>\n );\n\n return (\n <NodesContainer ref={containerRef} css={{ height: containerHeight }}>\n <NodeRow>{nodes.map(renderNode)}</NodeRow>\n\n {renderConnectingLines()}\n\n <NodeRow>\n <div ref={parentRef}>{parent}</div>\n </NodeRow>\n </NodesContainer>\n );\n}\n","import { useCallback, useEffect, useRef, useState, ReactNode, RefObject } from \"react\";\n\nconst CALCULATION_DELAY = 100;\nconst RESIZE_DEBOUNCE_DELAY = 100;\nconst SPREAD_FACTOR = 0.6;\nconst CURVE_INTENSITY = 0.3;\n\nconst debounce = <T extends unknown[]>(\n fn: (...args: T) => void,\n delay: number,\n): ((...args: T) => void) => {\n let timeoutId: ReturnType<typeof setTimeout>;\n\n return (...args: T): void => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n};\n\nconst createPath = (\n start: { x: number; y: number },\n end: { x: number; y: number; width: number },\n index: number,\n total: number,\n): string => {\n const totalDistance = end.y - start.y;\n const spreadWidth = end.width * SPREAD_FACTOR;\n const spreadStep = spreadWidth / Math.max(total - 1, 1);\n const entryX = end.x - spreadWidth / 2 + index * spreadStep;\n\n const controlPoint1Y = start.y + totalDistance * CURVE_INTENSITY;\n const controlPoint2Y = end.y - totalDistance * CURVE_INTENSITY;\n\n return `M ${start.x} ${start.y} C ${start.x} ${controlPoint1Y}, ${entryX} ${controlPoint2Y}, ${entryX} ${end.y}`;\n};\n\nexport const useNodeRefs = (): {\n nodesRef: RefObject<(HTMLDivElement | null)[]>;\n parentRef: RefObject<HTMLDivElement | null>;\n containerRef: RefObject<HTMLDivElement | null>;\n getNodeRefs: () => (HTMLDivElement | null)[];\n getContainerRect: () => DOMRect | undefined;\n getParentRect: () => DOMRect | undefined;\n} => {\n const nodesRef = useRef<(HTMLDivElement | null)[]>([]);\n const parentRef = useRef<HTMLDivElement | null>(null);\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n const getNodeRefs = (): (HTMLDivElement | null)[] => nodesRef.current;\n const getContainerRect = (): DOMRect | undefined => containerRef.current?.getBoundingClientRect();\n const getParentRect = (): DOMRect | undefined => parentRef.current?.getBoundingClientRect();\n\n return {\n containerRef,\n getContainerRect,\n getNodeRefs,\n getParentRect,\n nodesRef,\n parentRef,\n };\n};\n\nexport const useNodePaths = (\n nodeCount: number,\n getContainerRect: () => DOMRect | undefined,\n getParentRect: () => DOMRect | undefined,\n getNodeRefs: () => (HTMLDivElement | null)[],\n): {\n paths: string[];\n calculatePaths: () => void;\n} => {\n const [paths, setPaths] = useState<string[]>([]);\n\n const calculateParentCenter = (\n containerRect: DOMRect,\n parentRect: DOMRect,\n ): { x: number; y: number; width: number } => ({\n width: parentRect.width,\n x: parentRect.left + parentRect.width / 2 - containerRect.left,\n y: parentRect.top - containerRect.top,\n });\n\n const calculateNodePosition = (\n nodeRect: DOMRect,\n containerRect: DOMRect,\n ): { x: number; y: number } => ({\n x: nodeRect.left + nodeRect.width / 2 - containerRect.left,\n y: nodeRect.bottom - containerRect.top,\n });\n\n const calculatePaths = useCallback((): void => {\n const containerRect = getContainerRect();\n const parentRect = getParentRect();\n\n if (!containerRect || !parentRect) return;\n\n const parentCenter = calculateParentCenter(containerRect, parentRect);\n const nodeRefs = getNodeRefs();\n\n const newPaths = nodeRefs.map((nodeRef, index) => {\n if (!nodeRef) return \"\";\n\n const nodeRect = nodeRef.getBoundingClientRect();\n const nodePosition = calculateNodePosition(nodeRect, containerRect);\n\n return createPath(nodePosition, parentCenter, index, nodeCount);\n });\n\n setPaths(newPaths);\n }, [nodeCount, getContainerRect, getParentRect, getNodeRefs]);\n\n return {\n calculatePaths,\n paths,\n };\n};\n\nexport const useResizeHandler = (\n calculatePaths: () => void,\n nodes: { children: ReactNode; color?: string }[],\n parent: ReactNode,\n): void => {\n useEffect(() => {\n const timer = setTimeout(calculatePaths, CALCULATION_DELAY);\n const debouncedResize = debounce(calculatePaths, RESIZE_DEBOUNCE_DELAY);\n\n window.addEventListener(\"resize\", debouncedResize);\n\n return (): void => {\n clearTimeout(timer);\n window.removeEventListener(\"resize\", debouncedResize);\n };\n }, [calculatePaths, nodes, parent]);\n};\n\nexport const useNodesLogic = (\n nodes: { children: ReactNode; color?: string }[],\n parent: ReactNode,\n): {\n nodesRef: RefObject<(HTMLDivElement | null)[]>;\n parentRef: RefObject<HTMLDivElement | null>;\n containerRef: RefObject<HTMLDivElement | null>;\n paths: string[];\n calculatePaths: () => void;\n} => {\n const nodeCount = nodes.length;\n\n const { containerRef, getContainerRect, getNodeRefs, getParentRect, nodesRef, parentRef } =\n useNodeRefs();\n\n const { calculatePaths, paths } = useNodePaths(\n nodeCount,\n getContainerRect,\n getParentRect,\n getNodeRefs,\n );\n\n useResizeHandler(calculatePaths, nodes, parent);\n\n return {\n calculatePaths,\n containerRef,\n nodesRef,\n parentRef,\n paths,\n };\n};\n","import { keyframes, styled } from \"../../stitches.config\";\n\nconst flowDown = keyframes({\n \"0%\": {\n strokeDashoffset: 550,\n },\n \"100%\": {\n strokeDashoffset: 0,\n },\n});\n\nexport const NodesContainer = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n height: \"500px\",\n justifyContent: \"space-between\",\n overflow: \"hidden\",\n position: \"relative\",\n width: \"100%\",\n});\n\nexport const NodeRow = styled(\"div\", {\n display: \"flex\",\n gap: \"$medium\",\n justifyContent: \"center\",\n position: \"relative\",\n width: \"100%\",\n zIndex: 1,\n});\n\nexport const NodesSVG = styled(\"svg\", {\n height: \"100%\",\n inset: 0,\n pointerEvents: \"none\",\n position: \"absolute\",\n width: \"100%\",\n});\n\nexport const ConnectingLine = styled(\"path\", {\n fill: \"none\",\n opacity: \"$light\",\n stroke: \"$text\",\n strokeLinecap: \"round\",\n strokeWidth: \"0.5rem\",\n transition: \"opacity 200ms ease-out\",\n\n variants: {\n animate: {\n true: {\n animation: `${flowDown} 5s linear infinite`,\n opacity: \"$default\",\n strokeDasharray: \"50, 500\",\n },\n },\n },\n});\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type CSS } from \"@stitches/react\";\nimport { ChangeEvent, useRef, useState, type JSX } from \"react\";\nimport toast from \"react-hot-toast\";\n\nimport { CheckCircleIcon, WarningIcon, ArrowUpIcon, PlusIcon } from \"../../icons\";\nimport { Badge, Button, Icon, Loading, Text } from \"../../index\";\nimport {\n UploadCoreStyled,\n UploadFooterStyled,\n UploadInputStyled,\n UploadStyled,\n UploadCallbackStyled,\n} from \"./styles\";\n\ninterface IUpload<T extends boolean = false> {\n accept?: string;\n css?: CSS;\n disabled?: boolean;\n error?: boolean;\n errorMessage?: string;\n loading?: boolean;\n maxFiles?: number;\n maxSize?: number;\n multiple?: T;\n onUpload: T extends true ? (files: FileList) => void : (file: File) => void;\n success?: boolean;\n successMessage?: string;\n width?: number | string;\n}\n\nexport default function Upload<T extends boolean>({\n accept,\n css,\n disabled,\n error,\n errorMessage,\n loading,\n maxFiles = 25,\n maxSize = 5000000,\n multiple,\n onUpload,\n success,\n successMessage,\n width,\n}: IUpload<T>): JSX.Element {\n const ref = useRef<HTMLInputElement>(null);\n const [forceError, setForceError] = useState(error);\n\n const maxSizeMB = maxSize / 1000000;\n const isUploadSuccessful = success;\n const hasError = forceError || error;\n const hasCallback = hasError || success;\n const isDisabled = disabled || loading;\n\n function formatAccept(accept: string | undefined): string | undefined {\n const capitalize = (s: string): string => {\n return s.charAt(0).toUpperCase() + s.slice(1);\n };\n\n if (!accept) {\n return \"Any file type\";\n }\n\n if (accept.includes(\"/*\")) {\n return capitalize(accept.replace(\"/*\", \"s\"));\n }\n\n return capitalize(accept);\n }\n\n function checkFileSize(size: number): boolean {\n if (size > maxSize) {\n setForceError(true);\n toast.error(`File size must be less than ${maxSizeMB}MB`);\n\n return false;\n }\n\n return true;\n }\n\n function handleUpload(event: ChangeEvent<HTMLInputElement>): void {\n if (isDisabled) return;\n\n const { files } = event.target;\n\n if (files && files.length > 0) {\n setForceError(false);\n const filesArray = Array.from(files);\n const validFiles = filesArray.filter(({ size }) => checkFileSize(size));\n\n if (validFiles.length === 0) {\n return;\n }\n\n if (multiple && validFiles.length > maxFiles) {\n toast.error(`You can only upload up to ${maxFiles} files at once.`);\n\n return;\n }\n\n if (multiple) {\n onUpload(files as any);\n } else {\n onUpload(validFiles[0] as any);\n }\n }\n\n event.target.value = \"\";\n }\n\n function handleButtonClick(): void {\n if (isDisabled) return;\n\n if (ref && ref.current) {\n ref.current.click();\n }\n }\n\n return (\n <UploadStyled\n css={{\n maxWidth: width || \"100%\",\n width: width || \"100%\",\n ...css,\n }}\n disabled={isDisabled}>\n <UploadCoreStyled>\n <Button\n block\n disabled={isDisabled}\n icon={\n isUploadSuccessful ? (\n <Icon icon={<CheckCircleIcon />} />\n ) : multiple ? (\n <Icon icon={<PlusIcon />} />\n ) : (\n <Icon icon={<ArrowUpIcon />} />\n )\n }\n onClick={() => handleButtonClick()}>\n {isUploadSuccessful ? \"Uploaded\" : multiple ? \"Upload files\" : \"Upload file\"}\n </Button>\n <UploadInputStyled\n ref={ref}\n accept={accept}\n disabled={isDisabled}\n multiple={multiple}\n type=\"file\"\n onChange={(event) => handleUpload(event)}\n />\n </UploadCoreStyled>\n\n <UploadFooterStyled>\n <Text accent as=\"small\" bottom=\"none\">\n <a\n href={`https://google.com/search?q=${accept}%20file%20format`}\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n {formatAccept(accept)} (Max {maxSizeMB}MB)\n </a>\n </Text>\n {loading && <Loading />}\n </UploadFooterStyled>\n\n {hasCallback && (\n <UploadCallbackStyled>\n {hasError && (\n <Badge\n icon={!errorMessage ? <Icon icon={<WarningIcon />} /> : undefined}\n theme=\"orange\">\n {errorMessage || \"Upload error\"}\n </Badge>\n )}\n {success && (\n <Badge\n icon={!successMessage ? <Icon icon={<CheckCircleIcon />} /> : undefined}\n theme=\"blue\">\n {successMessage || \"Upload successful\"}\n </Badge>\n )}\n </UploadCallbackStyled>\n )}\n </UploadStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nconst interactiveStyles = {\n borderColor: \"$text\",\n boxShadow: \"$small\",\n};\n\nexport const UploadStyled = styled(\"div\", {\n \"&:focus-within\": interactiveStyles,\n \"&:hover\": interactiveStyles,\n border: \"1px solid $border\",\n borderRadius: \"$medium\",\n position: \"relative\",\n transition: \"$default\",\n variants: {\n disabled: {\n true: {\n \"&:focus-within\": {\n borderColor: \"$border\",\n boxShadow: \"none\",\n },\n \"&:hover\": {\n borderColor: \"$border\",\n boxShadow: \"none\",\n },\n cursor: \"not-allowed\",\n opacity: \"$light\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const UploadCoreStyled = styled(\"div\", {\n padding: \"$medium\",\n width: \"100%\",\n});\n\nexport const UploadInputStyled = styled(\"input\", {\n display: \"none\",\n});\n\nexport const UploadFooterStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$surfaceLight\",\n borderBottomLeftRadius: \"$medium\",\n borderBottomRightRadius: \"$medium\",\n borderTop: \"1px solid $borderLight\",\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: \"$small $medium\",\n width: \"100%\",\n});\n\nexport const UploadCallbackStyled = styled(\"div\", {\n display: \"block\",\n paddingTop: \"$small\",\n textAlign: \"left\",\n});\n","import { importLibrary } from \"@googlemaps/js-api-loader\";\nimport {\n ChangeEvent,\n KeyboardEvent,\n MouseEvent,\n useEffect,\n useId,\n useState,\n useRef,\n type JSX,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport {\n Input,\n Loading,\n Text,\n useDebounce,\n useOutsideClick,\n useFloatingUI,\n useGoogleMaps,\n type IPlaces,\n} from \"../../index\";\nimport { PlacesStyled, PlacesDropdownStyled, PlacesItemStyled, PlacesEmptyStyled } from \"./styles\";\n\ninterface PlacePrediction {\n description: string;\n place_id: string;\n structured_formatting?: {\n main_text: string;\n secondary_text: string;\n };\n types: string[];\n}\n\ninterface AutocompleteService {\n getPlacePredictions: (\n request: Record<string, unknown>,\n callback: (results: PlacePrediction[] | null, status: string) => void,\n ) => void;\n}\n\nexport default function Places({\n apiKey,\n countries,\n css,\n disabled,\n dropdownCSS,\n dropdownHeight,\n dropdownWidth,\n error,\n errorMessage,\n id,\n loading: externalLoading,\n name,\n onChange,\n onPlaceSelect,\n placeholder = \"Search for places...\",\n success,\n successMessage,\n types,\n value,\n warning,\n warningMessage,\n width,\n ...inputProps\n}: IPlaces): JSX.Element {\n const { contentRef, handleClick, handleClose, isMounted, isOpen, triggerRef } = useFloatingUI();\n const reactId = useId();\n const instanceId = `places-${reactId}`;\n\n const [inputValue, setInputValue] = useState((value as string) || \"\");\n const [predictions, setPredictions] = useState<PlacePrediction[]>([]);\n const [loading, setLoading] = useState(false);\n const [isReady, setIsReady] = useState(false);\n const [selectedPlace, setSelectedPlace] = useState<string>(\"\");\n const [selectionKey, setSelectionKey] = useState(0);\n\n const debouncedValue = useDebounce(inputValue, 300);\n const serviceRef = useRef<unknown>(null);\n\n // Initialize Google Maps (this sets options globally)\n useGoogleMaps({\n apiKey: apiKey || \"\",\n libraries: [\"places\"],\n });\n\n useEffect(() => {\n if (!apiKey || isReady) return;\n\n const initGoogleMaps = async (): Promise<void> => {\n try {\n const placesLibrary = (await importLibrary(\"places\")) as google.maps.PlacesLibrary;\n\n if (placesLibrary?.AutocompleteService) {\n serviceRef.current = new placesLibrary.AutocompleteService();\n setIsReady(true);\n }\n } catch {\n // Places initialization failed - input will remain disabled\n }\n };\n\n initGoogleMaps();\n }, [apiKey, isReady]);\n\n useEffect(() => {\n if (!debouncedValue.trim() || !isOpen || !serviceRef.current) {\n setPredictions([]);\n\n return;\n }\n\n setLoading(true);\n const request = {\n input: debouncedValue,\n ...(countries && { componentRestrictions: { country: countries } }),\n ...(types && { types }),\n };\n\n (serviceRef.current as AutocompleteService).getPlacePredictions(\n request,\n (results: PlacePrediction[] | null, status: string) => {\n setLoading(false);\n setPredictions(status === \"OK\" && results ? results : []);\n },\n );\n }, [debouncedValue, isOpen, countries, types]);\n\n useEffect(() => {\n if (value !== undefined && !selectedPlace) {\n setInputValue(value as string);\n }\n }, [value, selectedPlace]);\n\n function handleInputChange(event: ChangeEvent<HTMLInputElement>): void {\n setInputValue(event.target.value);\n setSelectedPlace(\"\");\n\n if (!isOpen && event.target.value.trim() && isReady) {\n handleClick();\n }\n\n if (onChange) onChange(event);\n }\n\n function handleSelection(prediction: PlacePrediction): void {\n const selectedValue = prediction.description;\n\n setSelectedPlace(selectedValue);\n setInputValue(selectedValue);\n setSelectionKey((prev) => prev + 1);\n handleClose();\n\n if (onChange) {\n const syntheticEvent = {\n currentTarget: { name: name, value: selectedValue },\n preventDefault: () => {},\n stopPropagation: () => {},\n target: { name: name, value: selectedValue },\n } as ChangeEvent<HTMLInputElement>;\n\n onChange(syntheticEvent);\n }\n\n if (onPlaceSelect) onPlaceSelect(prediction);\n }\n\n function handleInputFocus(): void {\n if (!disabled && isReady) {\n handleClick();\n }\n }\n\n function handleInputKeyDown(event: KeyboardEvent): void {\n if (event.key === \"Escape\" && isOpen) {\n event.preventDefault();\n handleClose();\n }\n }\n\n const handleItemClick =\n (prediction: PlacePrediction) =>\n (e: MouseEvent): void => {\n e.stopPropagation();\n handleSelection(prediction);\n };\n\n useOutsideClick(contentRef, handleClose);\n\n return (\n <PlacesStyled css={css}>\n <div ref={triggerRef}>\n <Input\n key={selectionKey}\n {...inputProps}\n aria-controls={`${instanceId}-listbox`}\n aria-expanded={isOpen}\n css={{ width: width || \"100%\", ...css }}\n disabled={disabled || !isReady}\n error={error}\n errorMessage={errorMessage}\n id={id || name}\n loading={externalLoading || !isReady}\n name={name}\n placeholder={isReady ? placeholder : \"Loading...\"}\n success={success}\n successMessage={successMessage}\n value={selectedPlace || inputValue}\n warning={warning}\n warningMessage={warningMessage}\n onChange={(e) => {\n handleInputChange(e);\n }}\n onFocus={() => {\n handleInputFocus();\n }}\n onKeyDown={(e) => {\n handleInputKeyDown(e);\n }}\n />\n </div>\n\n {isMounted &&\n isOpen &&\n createPortal(\n <PlacesDropdownStyled\n ref={contentRef}\n animation={isOpen}\n css={{\n maxWidth: dropdownWidth || \"500px\",\n minWidth: dropdownWidth || \"200px\",\n width: dropdownWidth || \"100%\",\n ...dropdownCSS,\n }}\n id={`${instanceId}-listbox`}\n role=\"listbox\">\n {loading ? (\n <Loading />\n ) : predictions.length > 0 ? (\n predictions.map((prediction) => (\n <PlacesItemStyled\n key={prediction.place_id}\n role=\"option\"\n onClick={handleItemClick(prediction)}>\n {prediction.structured_formatting ? (\n <div>\n <Text as=\"strong\">{prediction.structured_formatting.main_text}</Text>\n <Text as=\"small\">{prediction.structured_formatting.secondary_text}</Text>\n </div>\n ) : (\n <Text as=\"p\" css={{ margin: 0 }}>\n {prediction.description}\n </Text>\n )}\n </PlacesItemStyled>\n ))\n ) : debouncedValue.trim() ? (\n <PlacesEmptyStyled>No places found</PlacesEmptyStyled>\n ) : (\n <PlacesEmptyStyled>Start typing to search</PlacesEmptyStyled>\n )}\n </PlacesDropdownStyled>,\n document.body,\n )}\n </PlacesStyled>\n );\n}\n","import { useEffect, useState } from \"react\";\n\nexport default function useDebounce<T>(value: T, delay?: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay || 500);\n\n return (): void => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import { fadeInUp, fadeOutDown, styled } from \"../../stitches.config\";\n\nexport const PlacesStyled = styled(\"div\", {\n display: \"block\",\n position: \"relative\",\n width: \"100%\",\n});\n\nexport const PlacesDropdownStyled = styled(\"div\", {\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n backgroundColor: \"$surface\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$medium\",\n lineBreak: \"auto\",\n overflowY: \"auto\",\n padding: \"$smallest $smaller\",\n pointerEvents: \"auto\",\n textAlign: \"left !important\",\n transformOrigin: \"top center\",\n variants: {\n animation: {\n false: {\n animation: `${fadeOutDown} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n true: {\n animation: `${fadeInUp} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n },\n },\n width: \"100%\",\n willChange: \"transform, opacity\",\n zIndex: \"$select\",\n});\n\nexport const PlacesItemStyled = styled(\"div\", {\n \"&:active\": {\n transform: \"translateY(1px)\",\n },\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n },\n alignItems: \"center\",\n cursor: \"pointer\",\n display: \"flex\",\n gap: \"$small\",\n justifyContent: \"space-between\",\n margin: \"$smaller\",\n padding: \"$smaller $small\",\n textAlign: \"left\",\n transition: \"$default\",\n userSelect: \"none\",\n});\n\nexport const PlacesEmptyStyled = styled(\"div\", {\n color: \"$text\",\n fontSize: \"$small\",\n opacity: \"$light\",\n padding: \"$medium\",\n textAlign: \"center\",\n});\n\nexport default PlacesStyled;\n","import { IconContext } from \"@phosphor-icons/react\";\nimport { useEffect, type JSX } from \"react\";\n\nimport { type IProvider } from \"../../index\";\nimport { darkTheme } from \"../../stitches.config\";\nimport { ProviderStyled, providerReset } from \"./styles\";\nimport { ToastController } from \"./ToastController\";\n\nexport default function Provider({ children, css, dark }: IProvider): JSX.Element {\n const isDarkMode = Boolean(dark);\n\n providerReset();\n\n useEffect(() => {\n if (isDarkMode) {\n document.body.classList.add(darkTheme);\n } else {\n document.body.classList.remove(darkTheme);\n }\n\n return (): void => {\n document.body.classList.remove(darkTheme);\n };\n }, [isDarkMode]);\n\n return (\n <ProviderStyled css={css}>\n <IconContext.Provider value={{ size: 21, weight: \"duotone\" }}>\n <ToastController />\n {children}\n </IconContext.Provider>\n </ProviderStyled>\n );\n}\n","import { darkTheme, globalCss, styled, theme } from \"../../stitches.config\";\n\nexport const ProviderStyled = styled(\"main\", {\n position: \"relative\",\n});\n\nexport const ProviderToastStyled = styled(\"div\", {\n cursor: \"pointer\",\n marginBottom: \"$small\",\n maxWidth: \"400px\",\n minWidth: \"320px\",\n phone: {\n \"&:last-child\": {\n marginBottom: \"$small\",\n },\n margin: \"0 auto\",\n marginBottom: \"0\",\n marginTop: \"$small\",\n maxWidth: \"90%\",\n minWidth: \"unset\",\n },\n pointerEvents: \"all\",\n width: \"100%\",\n});\n\nconst disabledStyles = {\n cursor: \"not-allowed\",\n opacity: \"$light\",\n} as const;\n\nexport const providerReset = globalCss({\n \"*\": {\n boxSizing: \"border-box\",\n margin: 0,\n padding: 0,\n },\n\n \"*:focus\": {\n outline: theme.colors.yellow,\n },\n\n \"::selection\": {\n backgroundColor: theme.colors.text,\n color: theme.colors.background,\n },\n\n \"@font-face\": [\n {\n fontDisplay: \"swap\",\n fontFamily: \"Untitled Sans\",\n fontStyle: \"normal\",\n fontWeight: \"400\",\n src: \"url('https://consolia.dolmios.com/fonts/untitled-sans-web-regular.woff2') format('woff2')\",\n },\n {\n fontDisplay: \"swap\",\n fontFamily: \"Tomato Grotesk\",\n fontStyle: \"normal\",\n fontWeight: \"600\",\n src: \"url('https://consolia.dolmios.com/fonts/tomato-grotesk-semibold.woff2') format('woff2')\",\n },\n ],\n\n \"a, a:visited, a:active, a:hover\": {\n color: \"inherit\",\n textDecoration: \"none\",\n WebkitTapHighlightColor: \"transparent\",\n },\n\n body: {\n [`.${darkTheme}`]: {\n backgroundColor: \"$background\",\n color: \"$text\",\n colorScheme: \"dark\",\n },\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n fontFamily: theme.fonts.default,\n fontFeatureSettings: '\"zero\" 1, \"tnum\" 1, \"calt\" 1, \"liga\" 1, \"case\" 1',\n fontOpticalSizing: \"auto\",\n fontSize: \"17px\", // Explicit 17px base - don't use rem on body\n fontWeight: 400,\n lineHeight: theme.lineHeights.default,\n margin: 0,\n MozOsxFontSmoothing: \"grayscale\",\n overflowX: \"hidden\",\n padding: 0,\n textRendering: \"optimizeLegibility\",\n WebkitFontSmoothing: \"antialiased\",\n },\n\n \"button, input, textarea, select\": {\n \"&:disabled\": disabledStyles,\n cursor: \"pointer\",\n fontFamily: \"inherit\",\n fontSize: \"inherit\",\n },\n\n \"h1, h2, h3, h4, h5, h6\": {\n fontFamily: theme.fonts.heading,\n fontFeatureSettings: '\"zero\" 1, \"tnum\" 1, \"calt\" 1, \"liga\" 1, \"case\" 1',\n fontWeight: 600,\n lineHeight: theme.lineHeights.tight,\n margin: 0,\n textRendering: \"optimizeLegibility\",\n },\n\n html: {\n fontSize: \"100%\", // 17px base - our rem values are already calculated\n scrollBehavior: \"smooth\",\n },\n\n \"img, svg\": {\n display: \"block\",\n maxWidth: \"100%\",\n },\n\n \"input, textarea, select\": {\n cursor: \"text\",\n },\n\n p: {\n lineHeight: theme.lineHeights.default,\n margin: 0,\n },\n\n reduceMotion: {\n \"*:not([data-allow-motion])\": {\n animation: \"none !important\",\n scrollBehavior: \"auto !important\",\n transition: \"none !important\",\n },\n },\n\n svg: {\n alignSelf: \"center\",\n verticalAlign: \"middle\",\n },\n\n \"ul, ol\": {\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n },\n});\n\nexport default ProviderStyled;\n","import dayjs from \"dayjs\";\nimport { useEffect, type JSX } from \"react\";\nimport toast, { Toast, useToaster, Toaster } from \"react-hot-toast\";\n\nimport { CheckCircleIcon, InfoIcon, WarningIcon, XCircleIcon } from \"../../../icons\";\nimport { Box, Icon, Stack, Text, useEventListener, type IToast } from \"../../../index\";\nimport { ProviderToastStyled } from \"../styles\";\n\nconst TOAST_LIMIT = 4;\nconst DEFAULT_DURATION = 3000;\n\nfunction prepareMessage(message: Toast[\"message\"]): string {\n if (!message) return \"No information provided.\";\n\n return message.toString().replace(/\\.$/, \"\");\n}\n\nfunction getToastTheme(type: Toast[\"type\"]): \"green\" | \"red\" | \"orange\" | \"default\" {\n switch (type) {\n case \"success\":\n return \"green\";\n case \"error\":\n return \"red\";\n case \"loading\":\n return \"orange\";\n default:\n return \"default\";\n }\n}\n\nfunction getToastIcon(type: Toast[\"type\"]): JSX.Element {\n switch (type) {\n case \"success\":\n return <CheckCircleIcon />;\n case \"error\":\n return <XCircleIcon />;\n case \"loading\":\n return <WarningIcon />;\n default:\n return <InfoIcon />;\n }\n}\n\nexport function ToastController({\n position = \"top-right\",\n toastOptions,\n ...props\n}: IToast): JSX.Element {\n const { handlers, toasts } = useToaster();\n const { endPause, startPause } = handlers;\n\n const visibleToasts = toasts.filter((t) => t.visible);\n const excessToasts = visibleToasts.filter((_, i) => i >= TOAST_LIMIT);\n const shouldDismissOnEscape = (key: string): boolean => key === \"Escape\" || key === \"Enter\";\n\n const handleKeyboardDismiss = (event: KeyboardEvent): void => {\n if (shouldDismissOnEscape(event.key)) {\n event.preventDefault();\n toast.dismiss();\n }\n };\n\n const handleToastClick = (id: string): void => {\n toast.remove(id);\n };\n\n const renderToast = (t: Toast): JSX.Element => {\n const message = prepareMessage(t.message);\n const theme = getToastTheme(t.type);\n const icon = getToastIcon(t.type);\n\n return (\n <ProviderToastStyled\n onClick={() => handleToastClick(t.id)}\n onMouseEnter={startPause}\n onMouseLeave={endPause}>\n <Box\n footer={\n <Text as=\"small\">\n {t.type ? t.type.charAt(0).toUpperCase() + t.type.slice(1) : \"Info\"} (\n {dayjs().format(\"HH:mm\")})\n </Text>\n }\n small>\n <Stack alignItems=\"center\" direction=\"row\" gap=\"small\" wrap=\"nowrap\">\n <Stack\n css={{\n minWidth: \"35px\",\n }}>\n <Icon\n card\n cardSize=\"small\"\n css={{\n display: \"block\",\n }}\n forceSize={15}\n icon={icon}\n theme={theme}\n />\n </Stack>\n <Text truncate={3}>{message}</Text>\n </Stack>\n </Box>\n </ProviderToastStyled>\n );\n };\n\n useEventListener(\"keydown\", handleKeyboardDismiss);\n\n useEffect(() => {\n excessToasts.forEach((t) => toast.dismiss(t.id));\n }, [toasts, excessToasts]);\n\n return (\n <Toaster\n {...props}\n position={position}\n toastOptions={{\n duration: toastOptions?.duration || DEFAULT_DURATION,\n style: {\n background: \"transparent\",\n padding: 0,\n },\n ...toastOptions,\n }}>\n {renderToast}\n </Toaster>\n );\n}\n","import type { JSX } from \"react\";\n\nimport { MoonIcon, SunIcon, DesktopIcon } from \"../../../icons\";\nimport { useMountSSR, Select, Button, useTheme, Icon, type ISelect } from \"../../../index\";\n\nexport default function ProviderToggle(): JSX.Element {\n const { setTheme, theme } = useTheme();\n const isMounted = useMountSSR();\n\n const options = [\n {\n icon: <Icon icon={<MoonIcon />} />,\n iconPosition: \"right\",\n label: \"Dark\",\n value: \"dark\",\n },\n {\n icon: <Icon icon={<SunIcon />} />,\n iconPosition: \"right\",\n label: \"Light\",\n value: \"light\",\n },\n {\n icon: <Icon icon={<DesktopIcon />} />,\n iconPosition: \"right\",\n label: \"System\",\n value: \"system\",\n },\n ] as ISelect[\"options\"];\n\n const currentTheme = isMounted ? theme : \"system\";\n const currentThemeOption = options?.find((option) => option.value === currentTheme);\n const currentThemeIcon = currentThemeOption?.icon;\n const isCurrentTheme = (value: string): boolean => value === currentTheme;\n\n const handleSelection = (value: string): void => {\n if (isCurrentTheme(value)) {\n return;\n }\n setTheme(value as \"dark\" | \"light\" | \"system\");\n };\n\n const renderTrigger = (): JSX.Element => (\n <Button\n css={{\n textTransform: \"capitalize\",\n }}\n small>\n {currentThemeIcon}\n </Button>\n );\n\n return (\n <Select\n initial={currentTheme}\n options={options}\n trigger={renderTrigger()}\n onSelection={handleSelection}\n />\n );\n}\n","import { useEffect, useState, useCallback } from \"react\";\n\nimport type { TThemeMode, IUseTheme } from \"../types/hooks\";\n\nimport { useLocalStorage, useMountSSR } from \"../index\";\n\nexport default function useTheme(): IUseTheme {\n const isBrowser = useMountSSR();\n const [systemTheme, setSystemTheme] = useState<boolean>(false);\n const [theme, setLocalStorageTheme] = useLocalStorage<TThemeMode>(\"cosmo-ui-theme\", \"system\");\n const [isDarkTheme, setIsDarkTheme] = useState<boolean | undefined>();\n\n const checkDarkMode = (): boolean => {\n return document.documentElement.classList.contains(\"dark\");\n };\n\n const mutateTheme = useCallback(\n (currentTheme: TThemeMode): void => {\n const rootElement = document.documentElement;\n\n rootElement.classList.remove(\"dark\", \"light\");\n\n if (currentTheme === \"dark\" || (currentTheme === \"system\" && systemTheme)) {\n rootElement.classList.add(\"dark\");\n } else {\n rootElement.classList.add(\"light\");\n }\n },\n [systemTheme],\n );\n\n const setTheme = (newTheme: TThemeMode): void => {\n setLocalStorageTheme(newTheme);\n mutateTheme(newTheme);\n };\n\n useEffect(() => {\n if (theme === \"system\") {\n setIsDarkTheme(systemTheme);\n } else {\n setIsDarkTheme(theme === \"dark\");\n }\n\n if (isBrowser) {\n const themeMediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n\n const handleThemeChange = (e: MediaQueryListEvent): void => {\n setSystemTheme(e.matches);\n if (theme === \"system\") {\n mutateTheme(\"system\");\n }\n };\n\n themeMediaQuery.addEventListener(\"change\", handleThemeChange);\n\n setSystemTheme(themeMediaQuery.matches);\n mutateTheme(theme);\n\n const mutationObserver = new MutationObserver(() => {\n setIsDarkTheme(checkDarkMode());\n });\n\n mutationObserver.observe(document.documentElement, {\n attributeFilter: [\"class\"],\n attributes: true,\n });\n\n return (): void => {\n themeMediaQuery.removeEventListener(\"change\", handleThemeChange);\n mutationObserver.disconnect();\n };\n }\n\n return (): void => {};\n }, [isBrowser, mutateTheme, systemTheme, theme]);\n\n return {\n isDarkTheme,\n setTheme,\n theme,\n };\n}\n","import { useState, useEffect } from \"react\";\n\nimport type { TUseLocalStorage } from \"../types/hooks\";\n\nconst isBrowser = typeof window !== \"undefined\";\n\nfunction getStorageValue<T>(key: string, defaultValue: T): T {\n if (!isBrowser) return defaultValue;\n\n const saved = localStorage.getItem(key);\n const initial = saved ? JSON.parse(saved) : defaultValue;\n\n return initial;\n}\n\nexport default function useLocalStorage<T>(key: string, defaultValue: T): TUseLocalStorage<T> {\n const [value, setValue] = useState<T>(() => getStorageValue<T>(key, defaultValue));\n\n useEffect(() => {\n const listener = (e: StorageEvent): void => {\n if (e.storageArea === localStorage && e.key === key) {\n try {\n setValue(e.newValue ? JSON.parse(e.newValue) : defaultValue);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(`Error parsing JSON from local storage key \"${key}\":`, error);\n }\n }\n };\n\n window.addEventListener(\"storage\", listener);\n\n return (): void => {\n window.removeEventListener(\"storage\", listener);\n };\n }, [key, defaultValue]);\n\n useEffect(() => {\n if (isBrowser) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n }, [key, value]);\n\n return [value, setValue];\n}\n","import { useState } from \"react\";\n\nconst isBrowser = typeof window !== \"undefined\";\n\nfunction getStorageValue<T>(key: string): T | null {\n if (!isBrowser) return null;\n\n const saved = localStorage.getItem(key);\n const initial = saved ? JSON.parse(saved) : null;\n\n return initial;\n}\n\nexport default function useLocalStorageReadOnly<T>(key: string): T | null {\n const [value] = useState(() => {\n return getStorageValue<T>(key);\n });\n\n return value;\n}\n","import { useEffect, useMemo, useState } from \"react\";\n\ntype ViewportInfo = {\n heightPx: number;\n widthPx: number;\n supportsSmallVH: boolean;\n supportsDynamicVH: boolean;\n};\n\nfunction detectSupport(): {\n supportsSmallVH: boolean;\n supportsDynamicVH: boolean;\n} {\n if (typeof window === \"undefined\") return { supportsDynamicVH: false, supportsSmallVH: false };\n try {\n const supportsSmallVH = CSS?.supports?.(\"height\", \"100svh\") ?? false;\n const supportsDynamicVH = CSS?.supports?.(\"height\", \"100dvh\") ?? false;\n\n return { supportsDynamicVH, supportsSmallVH };\n } catch {\n return { supportsDynamicVH: false, supportsSmallVH: false };\n }\n}\n\nexport function useViewport(): ViewportInfo {\n const [{ supportsDynamicVH, supportsSmallVH }] = useState(detectSupport);\n const [size, setSize] = useState<{ h: number; w: number }>(() => ({\n h: typeof window !== \"undefined\" ? window.innerHeight : 0,\n w: typeof window !== \"undefined\" ? window.innerWidth : 0,\n }));\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const update = (): void => setSize({ h: window.innerHeight, w: window.innerWidth });\n\n update();\n window.addEventListener(\"resize\", update);\n window.addEventListener(\"orientationchange\", update);\n const vv = window.visualViewport;\n\n vv?.addEventListener(\"resize\", update);\n\n return (): void => {\n window.removeEventListener(\"resize\", update);\n window.removeEventListener(\"orientationchange\", update);\n vv?.removeEventListener(\"resize\", update);\n };\n }, []);\n\n return useMemo(\n () => ({\n heightPx: size.h,\n supportsDynamicVH,\n supportsSmallVH,\n widthPx: size.w,\n }),\n [size.h, size.w, supportsSmallVH, supportsDynamicVH],\n );\n}\n\nexport default useViewport;\n","import { useState, useEffect } from \"react\";\n\nimport type { IUseWindowDimensions } from \"../types/hooks\";\n\nexport default function useWindowDimensions(): IUseWindowDimensions {\n const [windowDimensions, setWindowDimensions] = useState({\n height: typeof window !== \"undefined\" ? window.innerHeight : 0,\n width: typeof window !== \"undefined\" ? window.innerWidth : 0,\n });\n\n useEffect(() => {\n function handleResize(): void {\n setWindowDimensions({\n height: window.innerHeight,\n width: window.innerWidth,\n });\n }\n\n window.addEventListener(\"resize\", handleResize);\n\n return (): void => window.removeEventListener(\"resize\", handleResize);\n }, []);\n\n return windowDimensions;\n}\n"],"names":[],"version":3,"file":"index.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["src/components/Maps/index.tsx","src/components/Loading/index.tsx","src/components/Loading/styles.ts","src/stitches.config.ts","src/hooks/useGoogleMaps.ts","src/components/Maps/styles.ts","src/index.ts","src/types/components.ts","src/types/hooks.ts","src/types/stitches.ts","src/icons.ts","src/components/Stack/index.tsx","src/components/Stack/styles.ts","src/components/Text/styles.ts","src/components/View/index.tsx","src/components/Gradient/index.tsx","src/components/Gradient/styles.ts","src/components/Logo/index.tsx","src/components/Text/index.tsx","src/components/Icon/index.tsx","src/hooks/useMountSSR.ts","src/components/Icon/styles.tsx","src/components/Logo/styles.ts","src/hooks/useBreakpoints.ts","src/components/View/styles.ts","src/components/Box/index.tsx","src/components/Button/index.tsx","src/components/Button/styles.ts","src/components/Box/styles.ts","src/components/Divider/index.tsx","src/components/Divider/styles.ts","src/components/Input/index.tsx","src/components/Badge/index.tsx","src/components/Badge/styles.ts","src/hooks/useEventListener.ts","src/components/Input/styles.ts","src/components/Field/index.tsx","src/components/Field/styles.ts","src/components/Form/index.tsx","src/components/Form/styles.ts","src/components/Datepicker/index.tsx","src/hooks/useDayjs.ts","src/components/Popover/index.tsx","src/hooks/useFloatingUI.ts","src/hooks/useOutsideClick.ts","src/components/Popover/styles.ts","src/components/Datepicker/styles.ts","src/components/Monthpicker/index.tsx","src/components/Monthpicker/styles.ts","src/components/Calendar/index.tsx","src/hooks/useCalendar.ts","src/components/Calendar/styles.ts","src/components/Menu/index.tsx","src/hooks/useModal.ts","src/components/Menu/styles.ts","src/components/Select/index.tsx","src/components/Select/styles.ts","src/components/Select/SelectMulti/index.tsx","src/components/Modal/index.tsx","src/components/Modal/styles.ts","src/components/Drawer/index.tsx","src/components/Drawer/styles.ts","src/components/Avatar/index.tsx","src/components/Avatar/styles.ts","src/components/Accordion/index.tsx","src/components/Accordion/styles.ts","src/components/Progress/index.tsx","src/components/Progress/styles.ts","src/components/Table/index.tsx","src/components/Table/styles.ts","src/components/Tabs/index.tsx","src/components/Tabs/styles.ts","src/components/Loading/LoadingOverlay/index.tsx","src/components/Image/index.tsx","src/components/Image/styles.ts","src/components/Nodes/index.tsx","src/components/Nodes/hooks.ts","src/components/Nodes/styles.ts","src/components/Upload/index.tsx","src/components/Upload/styles.ts","src/components/Places/index.tsx","src/hooks/useDebounce.ts","src/components/Places/styles.ts","src/components/Provider/index.tsx","src/components/Provider/styles.ts","src/components/Provider/ToastController/index.tsx","src/components/Provider/ProviderToggle/index.tsx","src/hooks/useTheme.ts","src/hooks/useLocalStorage.ts","src/hooks/useLocalStorageReadOnly.ts","src/hooks/useViewport.ts","src/hooks/useWindowDimensions.ts"],"sourcesContent":["/// <reference types=\"@types/google.maps\" />\nimport { importLibrary } from \"@googlemaps/js-api-loader\";\nimport { useEffect, useRef, useState, type JSX } from \"react\";\n\nimport { Loading, type IMaps, useGoogleMaps } from \"../../index\";\nimport { MapsStyled } from \"./styles\";\n\nexport default function Maps({\n apiKey,\n center,\n css,\n height = \"400px\",\n mapType = \"roadmap\",\n zoom = 12,\n}: IMaps): JSX.Element {\n const mapRef = useRef<HTMLDivElement>(null);\n const mapInstanceRef = useRef<unknown>(null);\n const [resolvedCenter, setResolvedCenter] = useState<{\n lat: number;\n lng: number;\n } | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [geoError, setGeoError] = useState<string | null>(null);\n\n // Initialize Google Maps (this sets options globally)\n useGoogleMaps({\n apiKey: apiKey || \"\",\n libraries: [\"maps\"],\n });\n\n useEffect(() => {\n if (!apiKey || !center) {\n setResolvedCenter(null);\n setIsLoading(false);\n\n return;\n }\n\n let isActive = true;\n const resolveCenter = async (): Promise<void> => {\n setIsLoading(true);\n setGeoError(null);\n\n if (typeof center === \"object\" && center.lat && center.lng) {\n if (!isActive) return;\n setResolvedCenter((prev) => {\n if (prev?.lat === center.lat && prev?.lng === center.lng) return prev;\n\n return center;\n });\n setIsLoading(false);\n\n return;\n }\n\n if (typeof center === \"string\") {\n try {\n const { Geocoder } = (await importLibrary(\"geocoding\")) as google.maps.GeocodingLibrary;\n\n if (!isActive) return;\n const geocoder = new Geocoder();\n\n geocoder.geocode(\n { address: center },\n (results: google.maps.GeocoderResult[] | null, status: google.maps.GeocoderStatus) => {\n if (!isActive) return;\n if (status === \"OK\" && results?.[0]?.geometry?.location) {\n const { location } = results[0].geometry;\n const newCenter = {\n lat: location.lat(),\n lng: location.lng(),\n };\n\n setResolvedCenter((prev) => {\n if (prev?.lat === newCenter.lat && prev?.lng === newCenter.lng) return prev;\n\n return newCenter;\n });\n } else {\n setResolvedCenter(null);\n setGeoError(\"Unable to locate that address.\");\n }\n setIsLoading(false);\n },\n );\n } catch {\n if (!isActive) return;\n setResolvedCenter(null);\n setGeoError(\"Failed to initialize geocoding service.\");\n setIsLoading(false);\n }\n }\n };\n\n resolveCenter();\n\n return (): void => {\n isActive = false;\n };\n }, [apiKey, center]);\n\n useEffect(() => {\n if (!apiKey || !mapRef.current || !resolvedCenter) return;\n\n let isActive = true;\n const initMap = async (): Promise<void> => {\n try {\n const { Map } = (await importLibrary(\"maps\")) as google.maps.MapsLibrary;\n\n if (!isActive) return;\n\n if (mapRef.current) {\n mapInstanceRef.current = new Map(mapRef.current, {\n center: resolvedCenter,\n mapTypeId: mapType,\n zoom,\n });\n }\n } catch {\n // Map initialization failed - component will show loading state\n }\n };\n\n initMap();\n\n return (): void => {\n isActive = false;\n };\n }, [apiKey, resolvedCenter, zoom, mapType]);\n\n if (!center || isLoading || !resolvedCenter) {\n return (\n <MapsStyled\n aria-live=\"polite\"\n css={{\n alignItems: \"center\",\n display: \"flex\",\n height: typeof height === \"number\" ? `${height}px` : height,\n justifyContent: \"center\",\n ...css,\n }}\n role=\"status\">\n {geoError ? geoError : <Loading />}\n </MapsStyled>\n );\n }\n\n return (\n <MapsStyled\n ref={mapRef}\n aria-busy={false}\n css={{\n height: typeof height === \"number\" ? `${height}px` : height,\n ...css,\n }}\n role=\"region\"\n />\n );\n}\n","import type { JSX } from \"react\";\n\nimport { type ILoading } from \"../../index\";\nimport { LoadingStyled } from \"./styles\";\n\nexport default function Loading({ css }: ILoading): JSX.Element {\n return (\n <LoadingStyled colored={false} css={css}>\n <svg viewBox=\"-20 -20 426.81 467.47\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M369.48,4.46h-224.77c-5.11,0-10.02,1.99-13.7,5.54L19.67,117.73c-9.72,9.4-15.17,22.38-15.06,35.9l.95,118.09c.08,9.9,8.13,17.89,18.03,17.89h99.01c.42.04.82.09,1.37.09,10.34,0,12.43,6.59,12.77,10.63v76.93c0,.57.06,1.12.08,1.68v26.49c0,9.49,7.7,17.19,17.19,17.19h67.4c.89,0,1.74-.11,2.59-.26l15.52.13c9.36.08,18.35-3.64,24.92-10.32l108.72-110.61c4.3-4.37,1.2-11.77-4.93-11.77l-221.69-.18s-.03,0-.05,0c-7.85,0-9.41-5.7-9.66-9.16V18.9c0-5.22,6.35-7.78,9.98-4.03l95.11,98.39c12.61,13.05,29.99,20.42,48.14,20.42h78.72c5.3,0,9.61-4.28,9.65-9.58l.7-109.92c.03-5.35-4.29-9.71-9.65-9.71Z\" />\n </svg>\n </LoadingStyled>\n );\n}\n","import { keyframes, styled } from \"../../stitches.config\";\n\nconst dashArrayValue = \"2500\";\nconst strokeWidthValue = \"30\";\nconst animationDuration = \"10s\";\n\nconst buildPath = keyframes({\n \"0%\": {\n fillOpacity: 0,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"2450\",\n },\n \"17.5%\": {\n fillOpacity: 0,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"20%\": {\n fillOpacity: 1,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"32.5%\": {\n fillOpacity: 1,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"35%\": {\n fillOpacity: 0,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"50%\": {\n fillOpacity: 0,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"-1950\",\n },\n \"65%\": {\n fillOpacity: 0,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"67.5%\": {\n fillOpacity: 1,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"80%\": {\n fillOpacity: 1,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"82.5%\": {\n fillOpacity: 0,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"0\",\n },\n \"100%\": {\n fillOpacity: 0,\n strokeDasharray: dashArrayValue,\n strokeDashoffset: \"2450\",\n },\n});\n\nconst colorCycle = keyframes({\n \"0%\": {\n color: \"$violet\",\n },\n \"25%\": {\n color: \"$blue\",\n },\n \"50%\": {\n color: \"$yellow\",\n },\n \"75%\": {\n color: \"$orange\",\n },\n \"100%\": {\n color: \"$violet\",\n },\n});\n\nexport const LoadingStyled = styled(\"span\", {\n \"& svg\": {\n \"& path\": {\n animation: `${buildPath} ${animationDuration} linear infinite`,\n fill: \"currentColor\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: strokeWidthValue,\n transition: \"color 1.5s ease-in-out\",\n },\n height: \"100%\",\n width: \"100%\",\n },\n display: \"inline-flex\",\n height: \"$medium\",\n position: \"relative\",\n\n variants: {\n colored: {\n true: {\n \"& svg path\": {\n animation: `${buildPath} ${animationDuration} linear infinite, ${colorCycle} 8s ease-in-out infinite`,\n },\n },\n },\n },\n\n width: \"$medium\",\n});\n\nexport const LoadingOverlayStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$text\",\n borderBottomColor: \"$text\",\n borderLeftColor: \"$text\",\n borderRadius: \"$default\",\n borderRightColor: \"$text\",\n borderStyle: \"solid\",\n borderTopColor: \"$text\",\n borderWidth: \"1px\",\n bottom: \"$medium\",\n boxShadow: \"$large\",\n color: \"$background\",\n display: \"flex\",\n justifyContent: \"center\",\n maxWidth: \"600px\",\n padding: \"$smallest $small\",\n phone: {\n left: \"50%\",\n maxWidth: \"95%\",\n textAlign: \"center\",\n transform: \"translateX(-50%)\",\n width: \"fit-content\",\n },\n pointerEvents: \"none\",\n position: \"fixed\",\n right: \"$medium\",\n userSelect: \"none\",\n zIndex: \"$toast\",\n});\n\nexport const LoadingOverlayTitleStyled = styled(\"div\", {\n marginLeft: \"$small\",\n});\n","/* eslint-disable perfectionist/sort-objects */\nimport { createStitches, createTheme, defaultThemeMap } from \"@stitches/react\";\n\nimport type {\n TBreakpointsConfig,\n TSpacingConfig,\n TThemeConfig,\n TDynamicViewportConfig,\n TStitchesUtils,\n TBreakpointName,\n} from \"./types/stitches\";\n\nexport const breakpoints: TBreakpointsConfig = {\n desktop: \"@media only screen and (max-width: 2200px)\",\n desktopX: \"@media only screen and (min-width: 1401px) and (max-width: 2200px)\",\n laptop: \"@media only screen and (max-width: 1400px)\",\n laptopX: \"@media only screen and (min-width: 1101px) and (max-width: 1400px)\",\n phone: \"@media only screen and (max-width: 800px)\",\n phoneX: \"@media only screen and (min-width: 376px) and (max-width: 800px)\",\n special: {\n micro: \"@media only screen and (max-width: 375px)\",\n print: \"@media print\",\n retina:\n \"@media only screen and (-webkit-min-device-pixel-ratio: 2), screen and (min-resolution: 2dppx)\",\n },\n tablet: \"@media only screen and (max-width: 1100px)\",\n tabletX: \"@media only screen and (min-width: 801px) and (max-width: 1100px)\",\n wide: \"@media only screen and (min-width: 2201px)\",\n};\n\nexport const spacings: TSpacingConfig = {\n auto: \"auto\",\n large: \"32px\",\n larger: \"48px\",\n largest: \"80px\",\n medium: \"16px\",\n none: \"0px\",\n small: \"8px\",\n smaller: \"4px\",\n smallest: \"2px\",\n};\n\nconst defaultTheme: TThemeConfig = {\n colors: {\n background: \"rgba(245, 245, 245, 1)\",\n border: \"rgba(0, 0, 0, 0.08)\",\n borderLight: \"rgba(0, 0, 0, 0.04)\",\n borderTop: \"rgba(0, 0, 0, 0.04)\",\n borderBottom: \"rgba(0, 0, 0, 0.12)\",\n borderStrong: \"rgba(0, 0, 0, 0.16)\",\n borderEmphasis: \"rgba(0, 0, 0, 0.20)\",\n overlay: \"rgba(0, 0, 0, 0.2)\",\n surface: \"rgba(255, 255, 255, 1)\",\n surfaceHover: \"rgba(0, 0, 0, 0.04)\",\n surfaceLight: \"rgba(0, 0, 0, 0.02)\",\n surfaceOverlay: \"rgba(255, 255, 255, 0.7)\",\n surfacePopover: \"rgba(255, 255, 255, 0.8)\",\n text: \"rgba(26, 26, 26, 1)\",\n textMuted: \"rgba(107, 107, 107, 1)\",\n\n // Accent colors - vibrant with rgba for stacking depth\n yellow: \"rgba(242, 201, 125, 1)\",\n yellowLight: \"rgba(242, 201, 125, 0.4)\",\n yellowDark: \"rgba(156, 115, 52, 1)\",\n yellowOverlay: \"rgba(242, 201, 125, 0.7)\",\n orange: \"rgba(234, 187, 171, 1)\",\n orangeLight: \"rgba(234, 187, 171, 0.4)\",\n orangeDark: \"rgba(156, 100, 77, 1)\",\n orangeOverlay: \"rgba(234, 187, 171, 0.7)\",\n green: \"rgba(178, 214, 201, 1)\",\n greenLight: \"rgba(178, 214, 201, 0.4)\",\n greenDark: \"rgba(88, 134, 111, 1)\",\n greenOverlay: \"rgba(178, 214, 201, 0.7)\",\n blue: \"rgba(175, 218, 241, 1)\",\n blueLight: \"rgba(175, 218, 241, 0.4)\",\n blueDark: \"rgba(87, 136, 171, 1)\",\n blueOverlay: \"rgba(175, 218, 241, 0.7)\",\n violet: \"rgba(188, 182, 215, 1)\",\n violetLight: \"rgba(188, 182, 215, 0.4)\",\n violetDark: \"rgba(94, 91, 134, 1)\",\n violetOverlay: \"rgba(188, 182, 215, 0.7)\",\n red: \"rgba(237, 164, 169, 1)\",\n redLight: \"rgba(237, 164, 169, 0.4)\",\n redDark: \"rgba(156, 68, 73, 1)\",\n redOverlay: \"rgba(237, 164, 169, 0.7)\",\n pink: \"rgba(243, 169, 196, 1)\",\n pinkLight: \"rgba(243, 169, 196, 0.4)\",\n pinkDark: \"rgba(160, 70, 103, 1)\",\n pinkOverlay: \"rgba(243, 169, 196, 0.7)\",\n },\n fonts: {\n default: \"var(--font-untitled-sans), apple-system, sans-serif\",\n heading: \"var(--font-tomato-grotesk), var(--font-untitled-sans), apple-system, sans-serif\",\n },\n fontSizes: {\n default: \"1rem\", // 16px - body text (standard base)\n h1: \"2.6rem\", // 40px\n h2: \"2.2rem\", // 32px\n h3: \"1.7rem\", // 28px\n h4: \"1.4rem\", // 24px\n h5: \"1.2rem\", // 20px\n h6: \"1.1rem\", // 18px - box headers\n micro: \"0.8125rem\", // 13px - badges, tiny text\n small: \"0.9375rem\", // 15px - secondary text\n },\n lineHeights: {\n default: \"1.5\",\n relaxed: \"1.75\",\n tight: \"1.25\",\n },\n opacities: {\n default: 0.75,\n light: 0.55,\n },\n radii: {\n small: \"6px\",\n default: \"8px\",\n large: \"12px\",\n full: \"9999px\",\n },\n shadows: {\n inset: \"inset 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n subtle: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n default: \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n medium: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n large: \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n largest: \"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n },\n sizes: spacings,\n space: spacings,\n transitions: {\n fast: \"all 0.15s cubic-bezier(0.4, 0, 0.2, 1)\",\n default: \"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n slow: \"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",\n bounce: \"all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1)\",\n },\n zIndices: {\n menu: 999,\n modal: 997,\n modalPopover: 1000,\n popover: 996,\n select: 995,\n special: 100,\n sticky: 10,\n table: 100,\n toast: 998,\n },\n};\n\nconst darkThemeConfig: Partial<TThemeConfig> = {\n colors: {\n background: \"rgba(18, 18, 18, 1)\",\n border: \"rgba(255, 255, 255, 0.10)\",\n borderLight: \"rgba(255, 255, 255, 0.06)\",\n borderTop: \"rgba(255, 255, 255, 0.06)\",\n borderBottom: \"rgba(255, 255, 255, 0.14)\",\n borderStrong: \"rgba(255, 255, 255, 0.18)\",\n borderEmphasis: \"rgba(255, 255, 255, 0.24)\",\n overlay: \"rgba(0, 0, 0, 0.5)\",\n surface: \"rgba(30, 30, 30, 1)\",\n surfaceHover: \"rgba(255, 255, 255, 0.08)\",\n surfaceLight: \"rgba(255, 255, 255, 0.04)\",\n surfaceOverlay: \"rgba(30, 30, 30, 0.6)\",\n surfacePopover: \"rgba(30, 30, 30, 0.4)\",\n text: \"rgba(229, 229, 229, 1)\",\n textMuted: \"rgba(160, 160, 160, 1)\",\n\n // Accent colors - inverted contrast for dark mode\n // Main colors: full opacity solid backgrounds for badges\n // Light variants: very subtle backgrounds for calendar/surfaces\n // Dark variants: deep rich colors that contrast well on light backgrounds\n yellow: \"rgba(242, 201, 125, 0.9)\",\n yellowLight: \"rgba(242, 201, 125, 0.1)\",\n yellowDark: \"rgba(100, 65, 20, 1)\",\n yellowOverlay: \"rgba(242, 201, 125, 0.6)\",\n orange: \"rgba(234, 187, 171, 0.9)\",\n orangeLight: \"rgba(234, 187, 171, 0.1)\",\n orangeDark: \"rgba(100, 55, 35, 1)\",\n orangeOverlay: \"rgba(234, 187, 171, 0.6)\",\n green: \"rgba(178, 214, 201, 0.9)\",\n greenLight: \"rgba(178, 214, 201, 0.1)\",\n greenDark: \"rgba(45, 75, 60, 1)\",\n greenOverlay: \"rgba(178, 214, 201, 0.6)\",\n blue: \"rgba(175, 218, 241, 0.9)\",\n blueLight: \"rgba(175, 218, 241, 0.1)\",\n blueDark: \"rgba(45, 80, 100, 1)\",\n blueOverlay: \"rgba(175, 218, 241, 0.6)\",\n violet: \"rgba(188, 182, 215, 0.9)\",\n violetLight: \"rgba(188, 182, 215, 0.1)\",\n violetDark: \"rgba(55, 50, 85, 1)\",\n violetOverlay: \"rgba(188, 182, 215, 0.6)\",\n red: \"rgba(237, 164, 169, 0.9)\",\n redLight: \"rgba(237, 164, 169, 0.1)\",\n redDark: \"rgba(100, 35, 40, 1)\",\n redOverlay: \"rgba(237, 164, 169, 0.6)\",\n pink: \"rgba(243, 169, 196, 0.9)\",\n pinkLight: \"rgba(243, 169, 196, 0.1)\",\n pinkDark: \"rgba(100, 35, 60, 1)\",\n pinkOverlay: \"rgba(243, 169, 196, 0.6)\",\n },\n};\n\n// Create stitches instance first\nexport const { css, getCssText, globalCss, keyframes, styled, theme } = createStitches({\n theme: defaultTheme,\n themeMap: { ...defaultThemeMap, opacity: \"opacities\" },\n utils: {\n // Theme utilities\n darkOnly: (value: unknown): Record<string, unknown> => ({\n // eslint-disable-next-line no-use-before-define\n [`.${darkTheme} &`]: value,\n }),\n lightOnly: (value: unknown): Record<string, unknown> => ({\n \"@media (prefers-color-scheme: light)\": value,\n }),\n wide: (value: unknown): Record<string, unknown> => ({\n [breakpoints.wide]: value,\n }),\n desktop: (value: unknown): Record<string, unknown> => ({\n [breakpoints.desktop]: value,\n }),\n desktopX: (value: unknown): Record<string, unknown> => ({\n [breakpoints.desktopX]: value,\n }),\n laptop: (value: unknown): Record<string, unknown> => ({\n [breakpoints.laptop]: value,\n }),\n laptopX: (value: unknown): Record<string, unknown> => ({\n [breakpoints.laptopX]: value,\n }),\n tablet: (value: unknown): Record<string, unknown> => ({\n [breakpoints.tablet]: value,\n }),\n tabletX: (value: unknown): Record<string, unknown> => ({\n [breakpoints.tabletX]: value,\n }),\n phone: (value: unknown): Record<string, unknown> => ({\n [breakpoints.phone]: value,\n }),\n phoneX: (value: unknown): Record<string, unknown> => ({\n [breakpoints.phoneX]: value,\n }),\n // Dynamic viewport utilities with modern fallback\n dynamicViewport: (config: TDynamicViewportConfig): Record<string, unknown> => {\n const { property, value, unit } = config;\n\n // Determine axis for feature query based on unit\n const isHeight =\n unit.endsWith(\"vh\") || unit.endsWith(\"dvh\") || unit.endsWith(\"svh\") || unit.endsWith(\"lvh\");\n const featureProp = isHeight ? \"height\" : \"width\";\n const dynamicViewportUnit = isHeight ? \"dvh\" : \"dvw\";\n const classicUnit = isHeight ? \"vh\" : \"vw\";\n\n return {\n // Classic viewport units as fallback\n [property]: `${value}${classicUnit}`,\n // Use dynamic viewport when supported (updates as UI chrome changes)\n [`@supports (${featureProp}: 100${dynamicViewportUnit})`]: {\n [property]: `${value}${dynamicViewportUnit}`,\n },\n };\n },\n // Special breakpoints\n micro: (value: unknown): Record<string, unknown> => ({\n [breakpoints.special.micro]: value,\n }),\n retina: (value: unknown): Record<string, unknown> => ({\n [breakpoints.special.retina]: value,\n }),\n print: (value: unknown): Record<string, unknown> => ({\n [breakpoints.special.print]: value,\n }),\n reduceMotion: (value: unknown): Record<string, unknown> => ({\n \"@media (prefers-reduced-motion: reduce)\": value,\n }),\n // Visibility utilities\n hidden: (value: TBreakpointName): Record<string, unknown> => ({\n [breakpoints[value]]: {\n display: \"none !important\",\n },\n }),\n hiddenInline: (value: TBreakpointName): Record<string, unknown> => ({\n [breakpoints[value]]: {\n display: \"none !important\",\n },\n display: \"inline-block !important\",\n }),\n hiddenSpecial: (value: \"micro\" | \"retina\" | \"print\"): Record<string, unknown> => ({\n [breakpoints.special[value]]: {\n display: \"none !important\",\n },\n }),\n visible: (value: TBreakpointName): Record<string, unknown> => ({\n [breakpoints[value]]: {\n display: \"block !important\",\n },\n display: \"none\",\n }),\n visibleInline: (value: TBreakpointName): Record<string, unknown> => ({\n [breakpoints[value]]: {\n display: \"inline-block !important\",\n },\n display: \"none\",\n }),\n visibleSpecial: (value: \"micro\" | \"retina\" | \"print\"): Record<string, unknown> => ({\n [breakpoints.special[value]]: {\n display: \"block !important\",\n },\n display: \"none\",\n }),\n } satisfies TStitchesUtils,\n});\n\n// Create dark theme after stitches instance\nexport const darkTheme = createTheme(darkThemeConfig);\n\n// Export keyframes with proper return types\nexport const fadeIn = keyframes({\n \"0%\": {\n opacity: 0,\n },\n \"100%\": {\n opacity: 1,\n },\n});\n\nexport const fadeOut = keyframes({\n \"0%\": {\n opacity: 1,\n },\n \"100%\": {\n opacity: 0,\n },\n});\n\n// Modal/Menu animations\nexport const slideInScale = keyframes({\n from: {\n opacity: 0,\n transform: \"scale(0.95)\",\n },\n to: {\n opacity: 1,\n transform: \"scale(1)\",\n },\n});\n\nexport const slideOutScale = keyframes({\n from: {\n opacity: 1,\n transform: \"scale(1)\",\n },\n to: {\n opacity: 0,\n transform: \"scale(0.95)\",\n },\n});\n\n// Drawer slide animations\nexport const slideInUp = keyframes({\n from: {\n transform: \"translateY(100%)\",\n },\n to: {\n transform: \"translateY(0)\",\n },\n});\n\nexport const slideOutDown = keyframes({\n from: {\n transform: \"translateY(0)\",\n },\n to: {\n transform: \"translateY(100%)\",\n },\n});\n\nexport const pulse = keyframes({\n // scale and opacity from 0.7 to 1.3 back to 1\n \"0%\": {\n opacity: 1,\n transform: \"scale(1)\",\n },\n \"50%\": {\n opacity: 0.75,\n transform: \"scale(1.3)\",\n },\n \"100%\": {\n opacity: 1,\n transform: \"scale(1)\",\n },\n});\n\n// Subtle vertical fade+lift used for small surfaces like popovers, lists\nexport const fadeInUp = keyframes({\n from: {\n opacity: 0,\n transform: \"translateY(4px)\",\n },\n to: {\n opacity: 1,\n transform: \"translateY(0)\",\n },\n});\n\nexport const fadeOutDown = keyframes({\n from: {\n opacity: 1,\n transform: \"translateY(0)\",\n },\n to: {\n opacity: 0,\n transform: \"translateY(4px)\",\n },\n});\n\n// Simple content fade for page transitions (supports animation-delay)\nexport const fadeInContent = keyframes({\n from: {\n opacity: 0,\n },\n to: {\n opacity: 1,\n },\n});\n","import { importLibrary, setOptions } from \"@googlemaps/js-api-loader\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\n\n// Track if options have been set globally\nlet optionsInitialized = false;\nlet currentApiKey: string | null = null;\n\n/**\n * Ensures Google Maps API options are set before loading any libraries.\n *\n * @param apiKey - Google Maps API key\n */\nfunction ensureGoogleMapsOptions(apiKey: string): void {\n if (!optionsInitialized || currentApiKey !== apiKey) {\n setOptions({\n key: apiKey,\n v: \"weekly\",\n });\n optionsInitialized = true;\n currentApiKey = apiKey;\n }\n}\n\ninterface UseGoogleMapsOptions {\n apiKey: string;\n libraries?: string[];\n}\n\ninterface UseGoogleMapsReturn<T = unknown> {\n isLoaded: boolean;\n isLoading: boolean;\n error: Error | null;\n library: T | null;\n}\n\n/**\n * Hook to load Google Maps libraries with proper initialization.\n *\n * @param options - Configuration object with apiKey and libraries to load\n * @returns Object containing loading state and loaded libraries\n *\n * @example\n * ```tsx\n * const { isLoaded, library } = useGoogleMaps<google.maps.PlacesLibrary>({\n * apiKey: \"YOUR_API_KEY\",\n * libraries: [\"places\"]\n * });\n * ```\n */\nexport function useGoogleMaps<T = unknown>({\n apiKey,\n libraries = [],\n}: UseGoogleMapsOptions): UseGoogleMapsReturn<T> {\n const [isLoaded, setIsLoaded] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const libraryRef = useRef<T | null>(null);\n\n // Create a stable string representation of libraries for dependency tracking\n const librariesKey = useMemo(() => libraries.join(\",\"), [libraries]);\n\n useEffect(() => {\n if (!apiKey || libraries.length === 0) return;\n\n let isActive = true;\n\n const loadLibraries = async (): Promise<void> => {\n try {\n setIsLoading(true);\n ensureGoogleMapsOptions(apiKey);\n\n // Load the first library as the primary one\n // (for most use cases, components only need one library at a time)\n const loadedLibrary = (await importLibrary(libraries[0])) as T;\n\n if (!isActive) return;\n\n libraryRef.current = loadedLibrary;\n setIsLoaded(true);\n setError(null);\n } catch (err) {\n if (!isActive) return;\n setError(err instanceof Error ? err : new Error(\"Failed to load Google Maps\"));\n setIsLoaded(false);\n } finally {\n if (isActive) {\n setIsLoading(false);\n }\n }\n };\n\n loadLibraries();\n\n return (): void => {\n isActive = false;\n };\n }, [apiKey, libraries, librariesKey]);\n\n return {\n error,\n isLoaded,\n isLoading,\n library: libraryRef.current,\n };\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const MapsStyled = styled(\"div\", {\n height: \"400px\",\n width: \"100%\",\n});\n\nexport default MapsStyled;\n","/**\n * UI Library - Main Entry Point\n *\n * A comprehensive React UI component library built with Stitches CSS-in-JS,\n * featuring a complete design system with dark mode support, responsive utilities,\n * and accessible components.\n *\n * @see README.md for full documentation\n */\n\n// ============================================================================\n// Stitches Configuration & Utilities\n// ============================================================================\n\nexport { css, styled, globalCss, keyframes, theme, darkTheme, getCssText } from \"./stitches.config\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport * from \"./types/components\";\nexport * from \"./types/hooks\";\nexport * from \"./types/stitches\";\n\n// ============================================================================\n// Icons\n// ============================================================================\n\nexport * from \"./icons\";\n\n// ============================================================================\n// Layout Components\n// ============================================================================\n\nexport { default as Stack } from \"./components/Stack\";\nexport { default as View } from \"./components/View\";\nexport { default as Box } from \"./components/Box\";\nexport { default as Divider } from \"./components/Divider\";\n\n// ============================================================================\n// Typography Components\n// ============================================================================\n\nexport { default as Text } from \"./components/Text\";\n\n// ============================================================================\n// Form Components\n// ============================================================================\n\nexport { default as Input } from \"./components/Input\";\nexport { default as Field } from \"./components/Field\";\nexport { default as Form } from \"./components/Form\";\nexport { default as Datepicker } from \"./components/Datepicker\";\nexport { default as Monthpicker } from \"./components/Monthpicker\";\nexport { default as Calendar } from \"./components/Calendar\";\n\n// ============================================================================\n// Interactive Components\n// ============================================================================\n\nexport { default as Button } from \"./components/Button\";\nexport { default as Badge } from \"./components/Badge\";\nexport { default as Menu } from \"./components/Menu\";\nexport { default as Select } from \"./components/Select\";\nexport { default as SelectMulti } from \"./components/Select/SelectMulti\";\n\n// ============================================================================\n// Overlay Components\n// ============================================================================\n\nexport { default as Modal } from \"./components/Modal\";\nexport { default as Drawer } from \"./components/Drawer\";\nexport { default as Popover } from \"./components/Popover\";\n\n// ============================================================================\n// Display Components\n// ============================================================================\n\nexport { default as Avatar } from \"./components/Avatar\";\nexport { default as Accordion } from \"./components/Accordion\";\nexport { default as Progress } from \"./components/Progress\";\nexport { default as Table } from \"./components/Table\";\nexport { default as Tabs } from \"./components/Tabs\";\nexport { default as Loading } from \"./components/Loading\";\nexport { default as LoadingOverlay } from \"./components/Loading/LoadingOverlay\";\nexport { default as Icon } from \"./components/Icon\";\n\n// ============================================================================\n// Utility Components\n// ============================================================================\n\nexport { default as Logo } from \"./components/Logo\";\nexport { default as Gradient } from \"./components/Gradient\";\nexport { default as Image } from \"./components/Image\";\nexport { default as Nodes } from \"./components/Nodes\";\nexport { default as Upload } from \"./components/Upload\";\n\n// ============================================================================\n// Special Components (Google Maps, etc.)\n// ============================================================================\n\nexport { default as Places } from \"./components/Places\";\nexport { default as Maps } from \"./components/Maps\";\n\n// Lazy-loaded Maps for better performance\nimport { lazy } from \"react\";\nexport const MapsLazy = lazy(() => import(\"./components/Maps\"));\n\n// ============================================================================\n// Provider & Theme Components\n// ============================================================================\n\nexport { default as Provider } from \"./components/Provider\";\nexport { default as ProviderToggle } from \"./components/Provider/ProviderToggle\";\n\n// ============================================================================\n// Hooks\n// ============================================================================\n\n// Theme & Styling Hooks\nexport { default as useTheme } from \"./hooks/useTheme\";\nexport { default as useBreakpoints } from \"./hooks/useBreakpoints\";\n\n// UI State Hooks\nexport { default as useCalendar } from \"./hooks/useCalendar\";\nexport { default as useModal } from \"./hooks/useModal\";\nexport { default as useFloatingUI } from \"./hooks/useFloatingUI\";\n\n// Utility Hooks\nexport { default as useDayjs } from \"./hooks/useDayjs\";\nexport { default as useDebounce } from \"./hooks/useDebounce\";\nexport { default as useEventListener } from \"./hooks/useEventListener\";\nexport { default as useLocalStorage } from \"./hooks/useLocalStorage\";\nexport { default as useLocalStorageReadOnly } from \"./hooks/useLocalStorageReadOnly\";\nexport { default as useMountSSR } from \"./hooks/useMountSSR\";\nexport { default as useOutsideClick } from \"./hooks/useOutsideClick\";\nexport { default as useViewport } from \"./hooks/useViewport\";\nexport { default as useWindowDimensions } from \"./hooks/useWindowDimensions\";\n\n// Google Maps Hooks\nexport { useGoogleMaps } from \"./hooks/useGoogleMaps\";\n","import type { ImageProps } from \"next/image\";\n\nimport { type CSS } from \"@stitches/react\";\nimport {\n ReactNode,\n ComponentPropsWithRef,\n ComponentPropsWithoutRef,\n MouseEventHandler,\n type JSX,\n CSSProperties,\n ReactElement,\n} from \"react\";\n\nimport { TextSizes } from \"../components/Text/styles\";\nimport { spacings } from \"../stitches.config\";\n\n/**\n * Avatar component props\n *\n * @example\n * ```tsx\n * <Avatar fallback=\"JD\" src=\"/avatar.jpg\" width={48} />\n * <Avatar fallback=\"AB\" theme=\"auto\" /> // Auto-assigns color based on first letter\n * <Avatar fallback=\"CD\" theme=\"blue\" />\n * ```\n */\nexport interface IAvatar {\n /** Alternative text for the avatar image */\n alt?: string;\n /** Visual theme/color scheme for the avatar. \"auto\" determines color from fallback text */\n theme?: \"default\" | \"blue\" | \"green\" | \"orange\" | \"red\" | \"violet\" | \"yellow\" | \"pink\" | \"auto\";\n /** Custom CSS styles */\n css?: CSS;\n /** Fallback text to display when image is not available */\n fallback?: string;\n /** Source URL for the avatar image */\n image?: ReactNode;\n /** Width of the avatar in pixels */\n width?: number;\n}\n\n/**\n * Base Datepicker props for date selection interface\n *\n * @example\n * ```tsx\n * <Datepicker\n * mode=\"range\"\n * minDate=\"2024-01-01\"\n * maxDate=\"2024-12-31\"\n * onSelection={(dates) => console.log(dates)}\n * timezone=\"Australia/Melbourne\"\n * />\n * ```\n */\nexport interface IDatepickerBase {\n /** Array of blocked/unavailable dates in YYYY-MM-DD format */\n blockedDates?: string[];\n /** Custom CSS styles */\n css?: CSS;\n /** Description text shown below header */\n description?: string;\n /** Initially selected end date (YYYY-MM-DD) */\n endDate?: string;\n /** Maximum selectable date (YYYY-MM-DD) */\n maxDate?: string;\n /** Maximum range length in days (range mode only) */\n maxLength?: number;\n /** Minimum selectable date (YYYY-MM-DD) */\n minDate?: string;\n /** Minimum range length in days (range mode only) */\n minLength?: number;\n /** Selection mode: 'single' for single date, 'range' for date range */\n mode?: \"range\" | \"single\";\n /** Callback when date(s) are selected */\n onSelection: (dates: { endDate: string; startDate: string }) => void;\n /** Callback when view month/year changes */\n onViewChange?: (dates: { endDate: string; startDate: string }) => void;\n /** Initially selected start date (YYYY-MM-DD) */\n startDate?: string;\n /** Timezone for date calculations (e.g., \"Australia/Melbourne\") */\n timezone?: string;\n}\n\n/**\n * Calendar component props - month view calendar for property management\n *\n * @example\n * ```tsx\n * <Calendar\n * month=\"2025-11\"\n * entries={calendarData}\n * onAvailableSelection={(date, data) => console.log(\"Available:\", date)}\n * onBookingSelection={(booking) => console.log(\"Booking:\", booking)}\n * onEventSelection={(event) => console.log(\"Event:\", event)}\n * getOtaLogo={(otaName) => <img src={`/logos/${otaName}.svg`} />}\n * timezone=\"Australia/Melbourne\"\n * />\n * ```\n */\nexport interface ICalendar {\n /** Calendar data entries (array format from API) */\n entries: Array<{\n /** Airbnb minimum stay requirement */\n airbnb_min_stay?: number;\n /** Airbnb nightly rate */\n airbnb_rate?: number;\n /** Total available units */\n availability?: number;\n /** Blocked reason if applicable */\n blocked_reason?: string | null;\n /** Array of bookings for this date */\n booking_details?: Array<{\n id: string; // database UUID (required)\n booking_id: string; // OTA booking ID\n check_in_date: string;\n check_out_date: string;\n guest_name: string;\n ota_name?: string;\n }>;\n /** Date in YYYY-MM-DD format */\n day: string;\n /** Array of events for this date */\n events?: Array<{\n end_date: string;\n event_id: string;\n start_date: string;\n title: string;\n }>;\n /** Whether day has a booking */\n has_booking?: boolean;\n /** Whether day has a check-in */\n has_check_in?: boolean;\n /** Whether day has a check-out */\n has_check_out?: boolean;\n /** Whether day is available for booking */\n is_available?: boolean;\n /** Whether day is blocked */\n is_blocked?: boolean;\n /** Minimum stay requirement */\n min_stay?: number;\n /** Nightly rate */\n rate?: number;\n /** Wheelhouse attribution breakdown */\n wh_attribution?: {\n availability?: number;\n custom_weekend?: number;\n historical_anchoring?: number;\n local_demand?: number;\n occupancy_pacing?: number;\n restriction?: number;\n scarcity?: number;\n seasonality?: number;\n time?: number;\n user_adjustment?: number;\n };\n /** Wheelhouse base price */\n wh_base_price?: number;\n /** Wheelhouse price change percentage */\n wh_price_change_pct?: number;\n /** Wheelhouse recommended price */\n wh_recommended_price?: number;\n }>;\n /** Function to render OTA logo for booking badges */\n getOtaLogo?: (otaName: string) => JSX.Element | null;\n /** Month to display in YYYY-MM format */\n month: string;\n /** Callback when an available day is selected */\n onAvailableSelection?: (date: string, data: ICalendar[\"entries\"][number]) => void;\n /** Callback when a blocked day is selected */\n onBlockSelection?: (date: string, data: ICalendar[\"entries\"][number]) => void;\n /** Callback when a booking is selected */\n onBookingSelection?: (\n booking: NonNullable<ICalendar[\"entries\"][number][\"booking_details\"]>[number],\n ) => void;\n /** Callback when an event is selected */\n onEventSelection?: (event: NonNullable<ICalendar[\"entries\"][number][\"events\"]>[number]) => void;\n /** Set of selected dates in YYYY-MM-DD format */\n selectedDates?: Set<string>;\n /** Timezone for date calculations (e.g., \"Australia/Melbourne\") */\n timezone?: string;\n}\n\n/**\n * Datepicker component props - date picker in a popover\n *\n * @example\n * ```tsx\n * <Datepicker\n * mode=\"range\"\n * minDate=\"2024-01-01\"\n * maxDate=\"2024-12-31\"\n * onSelection={(dates) => console.log(dates)}\n * trigger={<Button>Select dates</Button>}\n * />\n * ```\n */\nexport interface IDatepicker extends Omit<IDatepickerBase, \"css\"> {\n /** Trigger element */\n trigger: ReactNode;\n /** Custom CSS styles for the trigger */\n triggerCSS?: CSS;\n /** Custom CSS styles for the wrapper */\n wrapperCSS?: CSS;\n}\n\n/**\n * Badge component props - displays small status or informational labels\n *\n * @example\n * ```tsx\n * <Badge theme=\"blue\" icon={<CheckIcon />}>\n * Active\n * </Badge>\n * ```\n */\nexport interface IBadge extends ComponentPropsWithoutRef<\"span\"> {\n /** Whether the badge should take full width */\n block?: boolean;\n /** Content to display inside the badge */\n children?: ReactNode;\n /** Whether the badge can be closed/dismissed */\n closable?: boolean;\n /** Text or number to display in the badge */\n copy?: string | number | undefined;\n /** Custom CSS styles */\n css?: CSS;\n /** Icon to display alongside the badge content */\n icon?: ReactNode;\n /** Position of the icon relative to the content */\n iconPosition?: \"left\" | \"right\";\n /** Inline spacing around the badge */\n inline?: keyof typeof spacings | \"auto\";\n /** Whether the badge should appear as a clickable link */\n link?: boolean;\n /** Whether to show a loading state */\n loading?: boolean;\n /** Whether to show a small yellow dot indicator in the top right */\n new?: boolean;\n /** Click handler for interactive badges */\n onClick?: MouseEventHandler<HTMLSpanElement>;\n /** Whether to render a smaller version of the badge */\n small?: boolean;\n /** Visual theme/color scheme for the badge */\n theme?:\n | \"default\"\n | \"solid\"\n | \"border\"\n | \"green\"\n | \"blue\"\n | \"orange\"\n | \"red\"\n | \"yellow\"\n | \"violet\"\n | \"pink\";\n}\n\n/**\n * Box component props - versatile container with optional image, header, and footer\n *\n * @example\n * ```tsx\n * <Box\n * theme=\"solid\"\n * header={<Text as=\"h3\">Card Title</Text>}\n * image=\"/hero.jpg\"\n * expandable\n * onClick={() => console.log('Box clicked')}\n * >\n * Card content goes here\n * </Box>\n * ```\n */\nexport interface IBox {\n /** Content to display inside the box */\n children: ReactNode;\n /** Whether the box can be closed/dismissed */\n closable?: boolean;\n /** Custom CSS styles */\n css?: CSS;\n /** HTML id attribute for the box */\n id?: string;\n /** Call-to-action text for the box */\n cta?: string;\n /** Whether to enable hover interaction styles explicitly */\n hover?: boolean;\n /** Whether the box can be expanded/collapsed */\n expandable?: boolean;\n /** Height when expanded in pixels */\n expandableHeight?: number;\n /** Footer content to display at the bottom */\n footer?: ReactNode;\n /** Header content to display at the top */\n header?: ReactNode;\n /** Image to display in the box. Pass a URL string or a custom React element */\n image?: ReactNode;\n /** Call-to-action text for the image */\n imageCTA?: string;\n /** How the image should fit within its container */\n imageFit?: CSSProperties[\"objectFit\"];\n /** Height of the image */\n imageHeight?: string;\n /** Position of the image within its container */\n imagePosition?: CSSProperties[\"objectPosition\"];\n /** Target for image link */\n imageTarget?: \"_blank\" | \"_self\";\n /** Whether to show a loading state */\n loading?: boolean;\n /** Whether to render with minimal styling */\n minimal?: boolean;\n /** Click handler for the box */\n onClick?: MouseEventHandler<HTMLDivElement>;\n /** ARIA role */\n role?: string;\n /** Keyboard tab order */\n tabIndex?: number;\n /** Whether to render a smaller version */\n small?: boolean;\n /** Visual theme/color scheme for the box */\n theme?:\n | \"default\"\n | \"border\"\n | \"solid\"\n | \"fill\"\n | \"blue\"\n | \"green\"\n | \"orange\"\n | \"red\"\n | \"violet\"\n | \"yellow\"\n | \"pink\";\n}\n\n/**\n * Image component props - Next.js Image wrapper with custom styling\n *\n * @example\n * ```tsx\n * <Image\n * src=\"/photo.jpg\"\n * alt=\"Description\"\n * fill\n * fillFit=\"cover\"\n * borderRadius=\"default\"\n * />\n * ```\n */\nexport interface IImage extends Omit<ImageProps, \"style\"> {\n /** Border radius size */\n borderRadius?: keyof typeof spacings;\n /** Custom CSS styles */\n css?: CSS;\n /** Whether image should fill container */\n fill?: boolean;\n /** Object fit value when fill is true */\n fillFit?: CSSProperties[\"objectFit\"];\n /** Container height when fill is true */\n fillHeight?: string;\n /** Object position value */\n fillPosition?: string;\n /** Image quality (1-100) */\n quality?: number;\n}\n\n/**\n * Button component props - interactive element for user actions\n *\n * @example\n * ```tsx\n * <Button theme=\"solid\" icon={<PlusIcon />} loading={isSubmitting}>\n * Add Item\n * </Button>\n * ```\n */\nexport interface IButton extends ComponentPropsWithoutRef<\"button\"> {\n /** Whether the button should take full width */\n block?: boolean;\n /** Custom CSS styles */\n css?: CSS;\n /** Whether the button links to an external URL */\n external?: boolean;\n /** Icon to display alongside the button text */\n icon?: ReactNode;\n /** Position of the icon relative to the text */\n iconPosition?: \"left\" | \"right\";\n /** Inline spacing around the button */\n inline?: keyof typeof spacings | \"auto\";\n /** Whether to show a loading state with spinner */\n loading?: boolean;\n /** Whether to show a small yellow dot indicator in the top right */\n new?: boolean;\n /** Whether to render a smaller version of the button */\n small?: boolean;\n /** Visual theme/style variant for the button */\n theme?: \"default\" | \"fill\" | \"solid\" | \"minimal\" | \"warning\" | \"success\" | \"danger\";\n}\n\n/**\n * Drawer component props - slide-out panel that overlays content\n *\n * @example\n * ```tsx\n * <Drawer\n * title=\"Settings\"\n * trigger={<Button>Open Drawer</Button>}\n * small\n * >\n * <Text>Drawer content here</Text>\n * </Drawer>\n * ```\n */\nexport interface IDrawer {\n /** Content to display inside the drawer - can be ReactNode or a function that receives the close function */\n children: ReactNode | ((close: () => void) => ReactNode);\n /** Custom CSS styles for the drawer */\n css?: CSS;\n /** Whether the drawer trigger is disabled */\n disabled?: boolean;\n /** Whether to render a smaller version of the drawer */\n small?: boolean;\n /** Title text displayed in the drawer header */\n title: string;\n /** Element that triggers the drawer to open */\n trigger?: ReactNode;\n /** Custom CSS styles for the trigger element */\n triggerCSS?: CSS;\n /** Custom CSS styles for the drawer wrapper */\n wrapperCSS?: CSS;\n}\n\n/**\n * Modal component props - centered overlay dialog\n *\n * @example\n * ```tsx\n * <Modal\n * title=\"Confirm Action\"\n * trigger={<Button>Open Modal</Button>}\n * small\n * >\n * <Text>Are you sure you want to continue?</Text>\n * </Modal>\n * ```\n */\nexport interface IModal {\n /** Content to display inside the modal - can be ReactNode or a function that receives the close function */\n children: ReactNode | ((close: () => void) => ReactNode);\n /** Custom CSS styles for the modal */\n css?: CSS;\n /** Whether the modal trigger is disabled */\n disabled?: boolean;\n /** Footer content (typically actions/buttons) - can be ReactNode or a function that receives the close function */\n footer?: ReactNode | ((close: () => void) => ReactNode);\n /** Whether the modal is open (controlled mode) - when provided, modal is fully controlled */\n isOpen?: boolean;\n /** Callback function called when modal should close (required when isOpen is provided) */\n onClose?: () => void;\n /** Whether to render a smaller version of the modal */\n small?: boolean;\n /** Visual theme/color scheme for the modal header */\n theme?: \"default\" | \"green\" | \"blue\" | \"orange\" | \"red\" | \"violet\" | \"yellow\";\n /** Title text or element displayed in the modal header */\n title: ReactNode;\n /** Element that triggers the modal to open */\n trigger?: ReactNode;\n /** Custom CSS styles for the trigger element */\n triggerCSS?: CSS;\n /** Custom CSS styles for the modal wrapper */\n wrapperCSS?: CSS;\n}\n\n/**\n * Divider component props - visual separator line\n *\n * @example\n * ```tsx\n * <Divider top=\"large\" bottom=\"medium\" />\n * ```\n */\nexport interface IDivider {\n /** Bottom margin/spacing */\n bottom?: keyof typeof spacings;\n /** Custom CSS styles */\n css?: CSS;\n /** Top margin/spacing */\n top?: keyof typeof spacings;\n}\n\n/**\n * Field component props - multi-line textarea input with validation\n *\n * @example\n * ```tsx\n * <Field\n * name=\"description\"\n * placeholder=\"Enter description...\"\n * rows={4}\n * error={hasError}\n * errorMessage=\"Description is required\"\n * submitFunction={handleSubmit}\n * />\n * ```\n */\nexport interface IField extends ComponentPropsWithRef<\"textarea\"> {\n /** Whether to show a copy button for the field value */\n copy?: boolean;\n /** Custom CSS styles */\n css?: CSS;\n /** Custom action buttons to display alongside built-in actions */\n customActions?: ReactNode;\n /** Whether the field is in an error state */\n error?: boolean;\n /** Error message to display below the field */\n errorMessage?: string;\n /** HTML id attribute for the field */\n id?: string;\n /** Whether to show a loading state */\n loading?: boolean;\n /** Name attribute for the field (required) */\n name: string;\n /** Whether to show a reset button */\n reset?: boolean;\n /** Function to call when reset button is clicked */\n resetFunction?: () => void;\n /** Text for the cancel button */\n cancel?: string;\n /** Function to call when cancel button is clicked */\n cancelFunction?: () => void;\n /** Text for the submit button */\n submit?: string;\n /** Function to call when submit action is triggered */\n submitFunction?: (value: string) => void | Promise<void> | unknown;\n /** Function to validate field value before submit */\n submitValid?: (value: string) => boolean;\n /** Whether to listen for Enter key to submit (disables Enter for new lines) */\n listen?: boolean;\n /** Whether the field is in a success state */\n success?: boolean;\n /** Success message to display below the field */\n successMessage?: string;\n /** Whether the field is in a warning state */\n warning?: boolean;\n /** Warning message to display below the field */\n warningMessage?: string;\n /** Width of the field */\n width?: number | string;\n}\n\n/**\n * Form component props - form wrapper with validation and submission handling\n *\n * @example\n * // Boolean validity and arg-less submission (backward compatible)\n * ```tsx\n * <Form\n * name=\"userForm\"\n * submit=\"Submit\"\n * submitValid={isFormValid}\n * submitFunction={() => doSubmit()}\n * >\n * <Input name=\"email\" type=\"email\" />\n * </Form>\n * ```\n *\n * @example\n * // Function validity and data-aware submission\n * ```tsx\n * <Form\n * name=\"userForm\"\n * submit=\"Save\"\n * submitValid={(data) => Boolean(data.email)}\n * submitFunction={(data) => saveEmail(String(data.email))}\n * >\n * <Input name=\"email\" type=\"email\" />\n * </Form>\n * ```\n */\nexport interface IForm extends ComponentPropsWithRef<\"form\"> {\n /** Form content and input elements */\n children: ReactNode;\n /** Custom CSS styles */\n css?: CSS;\n /** Whether the form is disabled */\n disabled?: boolean;\n /** HTML id attribute for the form */\n id?: string;\n /** Whether to listen for form validation events */\n listen?: boolean;\n /** Whether the form is in a loading/submitting state */\n loading?: boolean;\n /** Name attribute for the form (required) */\n name: string;\n /** Text for the submit button */\n submit?: string;\n /**\n * Function to call when form is submitted.\n * If it declares parameters, it will receive a plain object of form data (name/value pairs).\n * If it declares no parameters, it's called with no args (backward compatible).\n */\n submitFunction:\n | ((data: Record<string, FormDataEntryValue>) => void | Promise<void> | unknown)\n | (() => void | Promise<void> | unknown);\n /**\n * Form validity. Can be a boolean or a function that receives current form data and returns a boolean.\n */\n submitValid?: boolean | ((data: Record<string, FormDataEntryValue>) => boolean);\n}\n\n/**\n * Image component props - enhanced Next.js Image with additional styling options\n *\n * @example\n * ```tsx\n * <Image\n * src=\"/hero.jpg\"\n * alt=\"Hero image\"\n * fill\n * fillFit=\"cover\"\n * />\n * ```\n */\n// Image component removed; use native <img> with props on containers instead\n\n/**\n * Input component props - form input field with validation and actions\n *\n * @example\n * ```tsx\n * <Input\n * name=\"email\"\n * type=\"email\"\n * placeholder=\"Enter your email\"\n * error={hasError}\n * errorMessage=\"Please enter a valid email\"\n * submitFunction={handleSubmit}\n * />\n * ```\n */\nexport interface IInput extends ComponentPropsWithRef<\"input\"> {\n /** Whether to show a copy button for the input value */\n copy?: boolean;\n /** Custom CSS styles */\n css?: CSS;\n /** Custom action buttons to display alongside built-in actions */\n customActions?: ReactNode;\n /** Whether the input is in an error state */\n error?: boolean;\n /** Error message to display below the input */\n errorMessage?: string;\n /** HTML id attribute for the input */\n id?: string;\n /** Whether to listen for form validation events */\n listen?: boolean;\n /** Whether to show a loading state */\n loading?: boolean;\n /** Name attribute for the input (required) */\n name: string;\n /** Whether to show a reset button */\n reset?: boolean;\n /** Function to call when reset button is clicked */\n resetFunction?: () => void;\n /** Whether to show/hide toggle for password inputs */\n reveal?: boolean;\n /** Text for the submit button */\n submit?: string;\n /** Function to call when submit action is triggered */\n submitFunction?: (value: string) => void | Promise<void> | unknown;\n /** Function to validate input value before submit */\n submitValid?: (value: string) => boolean;\n /** Whether the input is in a success state */\n success?: boolean;\n /** Success message to display below the input */\n successMessage?: string;\n /** Whether the input is in a warning state */\n warning?: boolean;\n /** Warning message to display below the input */\n warningMessage?: string;\n /** Width of the input field */\n width?: number | string;\n}\n\n/**\n * Places component props - Google Places autocomplete input with dropdown\n *\n * @example\n * ```tsx\n * <Places\n * name=\"location\"\n * placeholder=\"Search for places...\"\n * onPlaceSelect={(place) => console.log('Selected place:', place)}\n * apiKey={process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY}\n * />\n * ```\n */\nexport interface IPlaces extends Omit<\n IInput,\n \"submitFunction\" | \"submit\" | \"reveal\" | \"copy\" | \"reset\"\n> {\n /** Google Maps API key for Places API */\n apiKey: string;\n /** Callback when a place is selected from the dropdown */\n onPlaceSelect?: (place: {\n description: string;\n place_id: string;\n structured_formatting?: {\n main_text: string;\n secondary_text: string;\n };\n types: string[];\n }) => void;\n /** Country restrictions (ISO 3166-1 Alpha-2 country codes) */\n countries?: string[];\n /** Types of places to search for */\n types?: string[];\n /** Custom CSS styles for the dropdown */\n dropdownCSS?: CSS;\n /** Width of the dropdown */\n dropdownWidth?: number | string;\n /** Height of the dropdown */\n dropdownHeight?: number | string;\n}\n\n/**\n * Maps component props - simple Google Maps display\n *\n * @example\n * ```tsx\n * <Maps\n * apiKey={process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY}\n * center={{ lat: 40.7128, lng: -74.0060 }}\n * height=\"400px\"\n * zoom={12}\n * />\n * // Or with address\n * <Maps\n * apiKey={apiKey}\n * center=\"New York, NY\"\n * height=\"400px\"\n * />\n * // Shows loading when no center provided\n * <Maps apiKey={apiKey} height=\"400px\" />\n * ```\n */\nexport interface IMaps {\n /** Google Maps API key for Maps API */\n apiKey: string;\n /** Height of the map */\n height?: string | number;\n /** Custom CSS styles */\n css?: CSS;\n /** Map center - coordinates object or address string. Shows loading if not provided. */\n center?: { lat: number; lng: number } | string;\n /** Map zoom level */\n zoom?: number;\n /** Map type */\n mapType?: \"roadmap\" | \"satellite\" | \"hybrid\" | \"terrain\";\n /** Optional accessible label for the map region */\n ariaLabel?: string;\n}\n\n/**\n * Loading component props - animated loading spinner\n *\n * @example\n * ```tsx\n * <Loading theme=\"colored\" stroke=\"blue\" />\n * ```\n */\nexport interface ILoading {\n /** Custom CSS styles */\n css?: CSS;\n /** Width of the loading component */\n width?: number | string;\n}\n\n/**\n * LoadingOverlay component props - full-screen loading overlay with message\n *\n * @example\n * ```tsx\n * <LoadingOverlay title=\"Saving changes...\" />\n * ```\n */\nexport interface ILoadingOverlay extends ILoading {\n /** Title/message to display with the loading spinner */\n title: string;\n}\n\n/**\n * Menu component props - dropdown menu with nested options\n *\n * @example\n * ```tsx\n * <Menu\n * trigger={<Button>Menu</Button>}\n * options={[\n * { label: \"Edit\", value: \"edit\", icon: <EditIcon /> },\n * { label: \"Delete\", value: \"delete\", icon: <DeleteIcon /> }\n * ]}\n * onSelection={(value, label) => console.log(value, label)}\n * />\n * ```\n */\nexport interface IMenu {\n /** Accessible label for the menu container */\n ariaLabel?: string;\n /** Additional content to render in the menu - can be ReactNode or a function that receives the close function */\n children?: ReactNode | ((close: () => void) => ReactNode);\n /** Custom CSS styles */\n css?: CSS;\n /** Initially selected option value */\n initial?: string;\n /** Callback when menu option is selected */\n onSelection?: (value: string, label: string) => void;\n /** Array of menu options */\n options: Array<{\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n label: string;\n value: string;\n }>;\n /** Element that triggers the menu */\n trigger: ReactNode;\n /** Custom CSS styles for the trigger */\n triggerCSS?: CSS;\n /** Custom CSS styles for the menu wrapper */\n wrapperCSS?: CSS;\n /** Logo to display in the menu header */\n logo?: ReactNode;\n}\n\n/**\n * Popover usage now accepts ariaLabel for accessible description of the region\n *\n * @example\n * ```tsx\n * <Popover ariaLabel=\"More info\" trigger={<Button>Info</Button>}>\n * <Text>Details here</Text>\n * </Popover>\n * ```\n */\n\n/**\n * Popover component props - floating content overlay\n *\n * @example\n * ```tsx\n * <Popover\n * trigger={<Button>Show Info</Button>}\n * minimal\n * >\n * <Text>Additional information here</Text>\n * </Popover>\n * ```\n */\nexport interface IPopover {\n /** Accessible label for the popover content region */\n ariaLabel?: string;\n /** Content to display in the popover - can be ReactNode or a function that receives the close function */\n children: ReactNode | ((close: () => void) => ReactNode);\n /** Custom CSS styles */\n css?: CSS;\n /** Whether the popover trigger is disabled */\n disabled?: boolean;\n /** Whether to use minimal styling */\n minimal?: boolean;\n /** Whether to render a smaller popover */\n small?: boolean;\n /** Element that triggers the popover */\n trigger: ReactNode;\n /** Custom CSS styles for the trigger */\n triggerCSS?: CSS;\n /** Custom CSS styles for the popover wrapper */\n wrapperCSS?: CSS;\n}\n\n/**\n * Provider component props - theme and context provider for the UI library\n *\n * @example\n * ```tsx\n * <Provider dark={isDarkMode}>\n * <App />\n * </Provider>\n * ```\n */\nexport interface IProvider {\n /** Application content */\n children: ReactNode;\n /** Custom CSS styles */\n css?: CSS;\n /** Whether to use dark theme */\n dark?: boolean;\n}\n\n/**\n * Select component props - dropdown selection with filtering and positioning options\n *\n * @example\n * ```tsx\n * <Select\n * trigger={<Button>Select Option</Button>}\n * options={[\n * { label: \"Option 1\", value: \"opt1\", icon: <Icon1 /> },\n * { label: \"Option 2\", value: \"opt2\", icon: <Icon2 /> }\n * ]}\n * onSelection={(value, label) => console.log(value, label)}\n * filter\n * horizontal=\"left\"\n * />\n * ```\n */\nexport interface ISelect {\n /** Custom CSS styles */\n css?: CSS;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Whether to show a filter/search input */\n filter?: boolean;\n /** Height of the dropdown */\n height?: number | string;\n /** Horizontal alignment of the dropdown */\n horizontal?: \"left\" | \"right\" | \"center\";\n /** Initially selected option value */\n initial?: string;\n /** Label for the select component */\n label?: string;\n /** Whether this is the last select in a group (affects styling) */\n last?: boolean;\n /** Whether to show a loading state */\n loading?: boolean;\n /** Callback when an option is selected */\n onSelection?: (value: string, label: string) => void;\n /** Callback when sort order toggle is clicked (for sort selects) */\n onSortOrderToggle?: () => void;\n /** Array of selectable options */\n options?: Array<{\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n key?: string;\n label: string;\n value: string;\n }>;\n /** Current sort order ('asc' or 'desc'), enables sort order toggle behavior */\n sortOrder?: \"asc\" | \"desc\";\n /** Element that triggers the dropdown */\n trigger: ReactNode;\n /** Custom CSS styles for the trigger */\n triggerCSS?: CSS;\n /** Vertical positioning of the dropdown */\n vertical?: \"top\" | \"bottom\";\n /** Width of the dropdown */\n width?: number | string;\n /** Custom CSS styles for the dropdown wrapper */\n wrapperCSS?: CSS;\n}\n\n/**\n * SelectMulti component props - multi-selection dropdown with limit and reset options\n *\n * @example\n * ```tsx\n * <SelectMulti\n * trigger={<Button>Select Multiple</Button>}\n * options={[\n * { label: \"Tag 1\", value: \"tag1\" },\n * { label: \"Tag 2\", value: \"tag2\" },\n * { label: \"Tag 3\", value: \"tag3\" }\n * ]}\n * onSelection={(selections) => console.log(selections)}\n * limit={3}\n * reset\n * />\n * ```\n */\nexport interface ISelectMulti extends Omit<ISelect, \"onSelection\" | \"initial\" | \"last\"> {\n /** Initially selected options */\n initial?: Array<{ label: string; value: string }>;\n /** Maximum number of selections allowed */\n limit?: number;\n /** Callback when selections change */\n onSelection?: (value: Array<{ label: string; value: string }>) => void;\n /** Whether to show a reset/clear all button */\n reset?: boolean;\n}\n\n/**\n * Stack component props - responsive layout container with flexible spacing and alignment\n *\n * @example\n * ```tsx\n * <Stack\n * direction=\"column\"\n * align=\"center\"\n * width={80}\n * widthPhone={100}\n * top=\"large\"\n * bottom=\"medium\"\n * onClick={() => console.log('Stack clicked')}\n * >\n * <Text>Item 1</Text>\n * <Text>Item 2</Text>\n * </Stack>\n * ```\n */\nexport interface IStack {\n /** Text alignment within the stack */\n align?: CSSProperties[\"textAlign\"];\n /** HTML element type to render as */\n as?: keyof JSX.IntrinsicElements;\n /** Bottom margin/spacing */\n bottom?: keyof typeof spacings;\n /** Content to display in the stack */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** Custom CSS styles */\n css?: CSS;\n /** Direction of the flex layout */\n direction?: \"row\" | \"column\";\n /** Whether to remove text margins and align items */\n inline?: boolean;\n /** Whether to use minimal styling */\n minimal?: boolean;\n /** Click handler for the stack */\n onClick?: () => void;\n /** Top margin/spacing */\n top?: keyof typeof spacings;\n /** Default width percentage */\n width?: number;\n /** Responsive width percentages */\n widthResponsive?: {\n desktopX?: number;\n laptopX?: number;\n phone?: number;\n tabletX?: number;\n wide?: number;\n };\n /** Main axis alignment */\n justify?: CSSProperties[\"justifyContent\"];\n /** Gap between items */\n gap?: keyof typeof spacings;\n /** Whether to wrap items */\n wrap?: \"wrap\" | \"nowrap\" | \"wrap-reverse\";\n /** HTML id attribute */\n id?: string;\n /** Whether to use dark theme */\n inverted?: boolean;\n /** Cross-axis alignment */\n alignItems?: CSSProperties[\"alignItems\"];\n /** Content alignment */\n alignContent?: CSSProperties[\"alignContent\"];\n /** Flex basis */\n basis?: CSSProperties[\"flexBasis\"];\n /** Flex grow */\n grow?: CSSProperties[\"flexGrow\"];\n /** Flex shrink */\n shrink?: CSSProperties[\"flexShrink\"];\n /** Flex order */\n order?: CSSProperties[\"order\"];\n}\n\n/**\n * Progress component props - minimalist horizontal progress bar\n *\n * @example\n * ```tsx\n * <Progress value={75} max={100} theme=\"success\" showLabel />\n * <Progress value={30} theme=\"warning\" label=\"Loading...\" />\n * ```\n */\nexport interface IProgress {\n /** Custom CSS styles */\n css?: CSS;\n /** Custom label text (overrides percentage) */\n label?: string;\n /** Maximum value for progress calculation */\n max?: number;\n /** Whether to show percentage label */\n showLabel?: boolean;\n /** Size variant of the progress bar */\n size?: \"small\" | \"medium\" | \"large\";\n /** Color theme of the progress bar */\n theme?: \"default\" | \"green\" | \"blue\" | \"orange\" | \"red\" | \"yellow\" | \"violet\";\n /** Progress variant - linear bar or radial circle */\n variant?: \"linear\" | \"radial\";\n /** Current progress value */\n value?: number;\n}\n\n/**\n * Table component props - data table with sorting, pagination, and nested rows\n *\n * @example\n * ```tsx\n * <Table\n * columns={[\n * { key: \"name\", label: \"Name\", sortable: true },\n * { key: \"email\", label: \"Email\", align: \"left\" }\n * ]}\n * rows={[\n * { id: \"1\", cells: { name: \"John\", email: \"john@example.com\" } },\n * { id: \"2\", cells: { name: \"Jane\", email: \"jane@example.com\" } }\n * ]}\n * pagination\n * />\n * ```\n */\nexport interface ITable {\n /** Column definitions with keys, labels, and options */\n columns: Array<{\n key: string;\n label: string;\n align?: \"left\" | \"center\" | \"right\";\n width?: string;\n sortable?: boolean;\n }>;\n /** Row data with cells mapped to column keys */\n rows: Array<{\n id: string;\n cells: Record<string, ReactNode>;\n subRows?: Array<{\n id: string;\n cells: Record<string, ReactNode>;\n }>;\n }>;\n /** Custom CSS styles */\n css?: CSS;\n /** Error message to display */\n error?: string;\n /** Whether the table is in a loading state */\n loading?: boolean;\n /** Whether to show pagination controls */\n pagination?: boolean;\n /** Whether to enable keyboard navigation */\n kbd?: boolean;\n}\n\n/**\n * Text component props - versatile text element with styling and link options\n *\n * @example\n * ```tsx\n * <Text as=\"h2\" highlight=\"blue\" href=\"/link\" target=\"_blank\">\n * This is a highlighted heading that links somewhere\n * </Text>\n * ```\n */\nexport interface IText extends ComponentPropsWithRef<\"p\"> {\n /** Whether to use accent styling */\n accent?: boolean;\n /** HTML element type and text size */\n as?: keyof typeof TextSizes;\n /** Whether to use balanced text wrapping */\n balanced?: boolean;\n /** Bottom margin/spacing */\n bottom?: keyof typeof spacings;\n /** Text content */\n children: ReactNode;\n /** Custom CSS styles */\n css?: CSS;\n /** Whether to apply hero gradient styling */\n hero?: boolean;\n /** Highlight color theme */\n highlight?: \"yellow\" | \"default\";\n /** URL for link functionality */\n href?: string;\n /** Inline spacing around the text */\n inline?: keyof typeof spacings | \"auto\";\n /** Link styling variant */\n link?: \"minimal\" | \"default\";\n /** Whether to use muted styling with default opacity */\n muted?: boolean;\n /** Override the default size from 'as' prop */\n override?: keyof typeof TextSizes;\n /** Relationship attribute for links */\n rel?: string;\n /** Link target */\n target?: \"_blank\" | \"_self\";\n /** Top margin/spacing */\n top?: keyof typeof spacings;\n /** Number of lines to truncate text to (1-4) */\n truncate?: 1 | 2 | 3 | 4;\n}\n\n/**\n * Toast notification controller props - configuration for the ToastController component\n *\n * @example\n * ```tsx\n * <ToastController\n * position=\"top-right\"\n * toastOptions={{\n * duration: 4000,\n * style: { background: \"#333\", color: \"#fff\" }\n * }}\n * />\n * ```\n */\nexport interface IToast {\n /** Position where toasts appear on screen */\n position?:\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n /** Configuration options for individual toasts */\n toastOptions?: {\n /** Duration in milliseconds before auto-dismiss */\n duration?: number;\n /** Custom styling for toast notifications */\n style?: CSSProperties;\n /** Custom class name for toasts */\n className?: string;\n };\n /** Additional props passed to the underlying Toaster component */\n [key: string]: unknown;\n}\n\n/**\n * View component props - main layout container\n *\n * @example\n * ```tsx\n * <View container top=\"large\" bottom=\"large\">\n * <Text as=\"h1\">Welcome to our app</Text>\n * </View>\n * ```\n */\nexport interface IView {\n /** Whether this is an app-level view */\n app?: boolean;\n /** HTML element type to render as */\n as?: keyof JSX.IntrinsicElements;\n /** Bottom margin/spacing */\n bottom?: keyof typeof spacings;\n /** Content to display in the view */\n children: ReactNode;\n /** Whether to use container width constraints */\n container?: boolean;\n /** Custom CSS styles */\n css?: CSS;\n /** Whether to display hero gradient background with logo */\n hero?: boolean;\n /** HTML id attribute */\n id?: string;\n /** Whether to invert colors */\n inverted?: boolean;\n /** Top margin/spacing */\n top?: keyof typeof spacings;\n}\n\n/**\n * Icon component props - wrapper for Phosphor icons with consistent styling\n *\n * @example\n * ```tsx\n * <Icon icon={<ArrowRight />} forceColor=\"blue\" forceSize={24} inline=\"small\" weight=\"duotone\" />\n * ```\n */\nexport interface IIcon extends ComponentPropsWithoutRef<\"span\"> {\n /** Enable card wrapper with double-border Medusa effect */\n card?: boolean;\n /** Card size variant (only when card=true) */\n cardSize?: \"small\" | \"default\" | \"large\";\n /** Custom CSS styles */\n css?: CSS;\n /** Force a specific size in pixels */\n forceSize?: number;\n /** The icon element to render (required) */\n icon: ReactElement;\n /** Inline spacing around the icon */\n inline?: keyof typeof spacings;\n /** Visual theme/color scheme for the icon */\n theme?: \"default\" | \"blue\" | \"green\" | \"orange\" | \"red\" | \"violet\" | \"yellow\";\n /** Icon weight/style - defaults to context value (duotone) */\n weight?: \"thin\" | \"light\" | \"regular\" | \"bold\" | \"fill\" | \"duotone\";\n}\n\n/**\n * Tabs component props - tabbed interface for switching between content panels\n *\n * @example\n * ```tsx\n * const [active, setActive] = useState(\"home\");\n * <Tabs\n * options={[\n * { label: \"Home\", value: \"home\" },\n * { label: \"Profile\", value: \"profile\" }\n * ]}\n * active={active}\n * setActive={setActive}\n * />\n * ```\n */\nexport interface ITabs {\n /** Currently active tab value */\n active: string;\n /** Array of tab options */\n options: Array<{\n label: string;\n value: string;\n }>;\n /** Callback to set active tab */\n setActive: (value: string) => void;\n}\n\n/**\n * Accordion component props - collapsible content sections with optional multiple expansion\n *\n * @example\n * ```tsx\n * <Accordion\n * allowMultiple\n * options={[\n * {\n * label: \"Section 1\",\n * value: \"section1\",\n * children: <Text>Content for section 1</Text>,\n * icon: <ChevronIcon />\n * },\n * {\n * label: \"Section 2\",\n * value: \"section2\",\n * children: <Text>Content for section 2</Text>,\n * }\n * ]}\n * onToggle={(value, isOpen) => console.log(value, isOpen)}\n * />\n * ```\n */\nexport interface IAccordion {\n /** Whether multiple sections can be open simultaneously */\n allowMultiple?: boolean;\n /** Initially opened section value */\n initial?: string;\n /** Callback when section is toggled */\n onToggle?: (value: string, isOpen: boolean) => void;\n /** Array of accordion sections */\n options: Array<{\n children: ReactNode;\n icon?: ReactNode;\n label: ReactNode;\n value: string;\n }>;\n}\n\n/**\n * Monthpicker component props - month selection interface for calendar navigation\n *\n * @example\n * ```tsx\n * <Monthpicker\n * initial=\"2024-10\"\n * onSelect={(monthKey) => console.log('Selected:', monthKey)}\n * trigger={<Button>Select Month</Button>}\n * timezone=\"Australia/Melbourne\"\n * />\n * ```\n */\nexport interface IMonthpicker {\n /** Initial month in YYYY-MM format */\n initial?: string;\n /** Callback when month is selected */\n onSelect: (month: string) => void;\n /** Timezone for date calculations (e.g., \"Australia/Melbourne\") */\n timezone?: string;\n /** Trigger element */\n trigger: ReactNode;\n /** Custom CSS styles for the trigger */\n triggerCSS?: CSS;\n /** Custom CSS styles for the wrapper */\n wrapperCSS?: CSS;\n}\n\n/**\n * Logo component props - company logo with variants\n *\n * @example\n * ```tsx\n * <Logo variant=\"full\" size=\"medium\" theme=\"default\" />\n * <Logo variant=\"icon\" width={48} hover outline />\n * ```\n */\nexport interface ILogo {\n /** Logo variant - full includes icon and text, icon is just the mark */\n variant?: \"full\" | \"icon\";\n /** Size preset (only used with variant=\"full\") */\n size?: \"small\" | \"medium\" | \"large\";\n /** Custom width in pixels or string (used with variant=\"icon\") */\n width?: number | string;\n /** Whether to show hover effect */\n hover?: boolean;\n /** Whether to show outline style */\n outline?: boolean;\n /** Visual theme/color scheme */\n theme?: \"default\" | \"light\" | \"dark\";\n /** Custom CSS styles */\n css?: CSS;\n}\n","/**\n * Hook types for the AirIndex UI library\n *\n * Note: Simple return types like boolean, void, or T are used directly\n * in hooks rather than creating unnecessary type aliases.\n */\n\n/**\n * Theme mode options - system follows OS preference, dark/light are explicit modes\n *\n * @example\n * ```tsx\n * const { theme, setTheme } = useTheme();\n * setTheme(\"dark\"); // Force dark mode\n * setTheme(\"system\"); // Follow OS preference\n * ```\n */\nexport type TThemeMode = \"system\" | \"dark\" | \"light\";\n\n/**\n * Responsive breakpoint names with undefined for initial/unknown state\n *\n * @example\n * ```tsx\n * const { breakpoint, isPhone } = useBreakpoints();\n * if (breakpoint === \"phone\") {\n * // Mobile-specific logic\n * }\n * ```\n */\nexport type TBreakpoint = \"phone\" | \"tabletX\" | \"laptopX\" | \"desktopX\" | \"wide\" | undefined;\n\n/**\n * Responsive breakpoint detection with boolean helpers for each screen size\n *\n * @example\n * ```tsx\n * const { isPhone, isDesktop, breakpoint } = useBreakpoints();\n *\n * return (\n * <div>\n * {isPhone ? <MobileNav /> : <DesktopNav />}\n * <p>Current: {breakpoint}</p>\n * </div>\n * );\n * ```\n */\nexport interface IUseBreakpoints {\n /** Current active breakpoint name */\n breakpoint: TBreakpoint;\n /** Whether currently on desktop (desktopX) breakpoint */\n isDesktop: boolean;\n /** Whether currently on laptop (laptopX) breakpoint */\n isLaptop: boolean;\n /** Whether currently on phone breakpoint */\n isPhone: boolean;\n /** Whether currently on tablet (tabletX) breakpoint */\n isTablet: boolean;\n /** Whether currently on wide breakpoint */\n isWide: boolean;\n}\n\n/**\n * Theme management with dark mode detection and system preference support\n *\n * @example\n * ```tsx\n * const { isDarkTheme, setTheme, theme } = useTheme();\n *\n * return (\n * <button onClick={() => setTheme(isDarkTheme ? \"light\" : \"dark\")}>\n * Toggle theme\n * </button>\n * );\n * ```\n */\nexport interface IUseTheme {\n /** Whether dark theme is currently active (undefined during SSR) */\n isDarkTheme: boolean | undefined;\n /** Function to change the theme mode */\n setTheme: (theme: TThemeMode) => void;\n /** Current theme mode setting */\n theme: TThemeMode;\n}\n\n/**\n * Browser window dimensions with automatic updates on resize\n *\n * @example\n * ```tsx\n * const { width, height } = useWindowDimensions();\n *\n * return (\n * <div>\n * Viewport: {width} × {height}px\n * {width < 768 && <MobileWarning />}\n * </div>\n * );\n * ```\n */\nexport interface IUseWindowDimensions {\n /** Window inner height in pixels */\n height: number;\n /** Window inner width in pixels */\n width: number;\n}\n\n/**\n * Floating UI positioning with refs and state management for dropdowns/popovers\n *\n * @example\n * ```tsx\n * const { triggerRef, contentRef, isOpen, handleClick } = useFloatingUI();\n *\n * return (\n * <>\n * <button ref={triggerRef} onClick={handleClick}>\n * Toggle\n * </button>\n * {isMounted && (\n * <div ref={contentRef}>Floating content</div>\n * )}\n * </>\n * );\n * ```\n */\nexport interface IUseFloatingUI {\n /** Ref for the floating content element */\n contentRef: { current: null | HTMLDivElement };\n /** Toggle function for open/close state */\n handleClick: () => void;\n /** Function to close the floating element */\n handleClose: () => void;\n /** Whether the floating element is mounted in DOM */\n isMounted: boolean;\n /** Whether the floating element is visible */\n isOpen: boolean;\n /** Ref for the trigger element */\n triggerRef: { current: null | HTMLDivElement };\n}\n\n/**\n * Local storage state management with automatic persistence and sync across tabs\n *\n * @example\n * ```tsx\n * const [count, setCount] = useLocalStorage<number>(\"counter\", 0);\n *\n * return (\n * <button onClick={() => setCount(count + 1)}>\n * Count: {count}\n * </button>\n * );\n * ```\n */\nexport type TUseLocalStorage<T> = [T, (value: T) => void];\n\n/**\n * Clean modal state management with viewport handling for iOS issues\n * Similar to useFloatingUI but for full-screen overlays\n *\n * @param options - Configuration options for the modal\n * @param options.onClose - Callback fired when modal closes\n * @param options.preventBodyScroll - Whether to prevent body scrolling (default: true)\n * @param options.animationDuration - Animation duration in milliseconds (default: 200)\n *\n * @example\n * ```tsx\n * const modal = useModal({\n * onClose: () => console.log('Modal closed'),\n * preventBodyScroll: true\n * });\n *\n * return (\n * <>\n * <button onClick={modal.handleClick}>Toggle Modal</button>\n * {modal.isMounted && (\n * <ModalOverlay\n * css={{\n * height: '100dvh' // Dynamic viewport height with fallback\n * }}\n * >\n * <ModalContent ref={modal.modalRef}>\n * <h2>Modal Title</h2>\n * <button onClick={modal.handleClose}>Close</button>\n * </ModalContent>\n * </ModalOverlay>\n * )}\n * </>\n * );\n * ```\n */\nexport interface IUseModal {\n /** Whether the modal is currently open and visible */\n isOpen: boolean;\n /** Whether the modal is mounted in the DOM */\n isMounted: boolean;\n /** Ref to attach to the modal content element for scroll lock */\n modalRef: { current: HTMLDivElement | null };\n /** Function to open the modal */\n handleOpen: () => void;\n /** Function to close the modal */\n handleClose: () => void;\n /** Function to toggle modal open/closed state */\n handleClick: () => void;\n}\n\n/**\n * Calendar hook for managing calendar grid layout, booking badges, and day data\n *\n * @example\n * ```tsx\n * const { weeks, getBadgesForWeek, getDayData } = useCalendar({\n * entries: entriesByDate,\n * month: \"2025-11\",\n * timezone: \"Australia/Melbourne\"\n * });\n *\n * weeks.map((week, weekIndex) => {\n * const { bookingBadges } = getBadgesForWeek(week, weekIndex);\n * // Render week with badges...\n * });\n * ```\n */\nexport interface IUseCalendar {\n /** Function to get booking badges for a specific week */\n getBadgesForWeek: (\n week: Array<import(\"dayjs\").Dayjs | null>,\n weekIndex: number,\n ) => {\n bookingBadges: Array<{\n booking: {\n booking_id: string;\n check_in_date: string;\n check_out_date: string;\n guest_name: string;\n id: string; // database UUID (required)\n ota_name?: string;\n };\n bookingId: string;\n firstDayIndex: number;\n isCheckIn: boolean;\n isCheckOut: boolean;\n isSameDayTurnover: boolean;\n length: number;\n offset: \"checkin\" | \"checkout\" | \"full\";\n position: {\n left: string;\n width: string;\n };\n showName: boolean;\n weekIndex: number;\n }>;\n };\n /** Function to get day data for a specific date */\n getDayData: (date: import(\"dayjs\").Dayjs) => {\n dateStr: string;\n dayData:\n | {\n airbnb_min_stay?: number;\n airbnb_rate?: number;\n availability?: number;\n blocked_reason?: string | null;\n booking_details?: Array<{\n booking_id: string;\n check_in_date: string;\n check_out_date: string;\n guest_name: string;\n id: string; // database UUID (required)\n ota_name?: string;\n }>;\n day: string;\n events?: Array<{\n end_date: string;\n event_id: string;\n start_date: string;\n title: string;\n }>;\n has_booking?: boolean;\n has_check_in?: boolean;\n has_check_out?: boolean;\n is_available?: boolean;\n is_blocked?: boolean;\n min_stay?: number;\n rate?: number;\n wh_attribution?: {\n availability?: number;\n custom_weekend?: number;\n historical_anchoring?: number;\n local_demand?: number;\n occupancy_pacing?: number;\n restriction?: number;\n scarcity?: number;\n seasonality?: number;\n time?: number;\n user_adjustment?: number;\n };\n wh_base_price?: number;\n wh_price_change_pct?: number;\n wh_recommended_price?: number;\n }\n | undefined;\n isToday: boolean;\n };\n /** Array of weeks, each containing 7 days (or null for empty cells) */\n weeks: Array<Array<import(\"dayjs\").Dayjs | null>>;\n}\n","/**\n * Responsive breakpoint names available in the design system\n *\n * @category Design System\n */\nexport type TBreakpointName =\n | \"phone\"\n | \"phoneX\"\n | \"tablet\"\n | \"tabletX\"\n | \"laptop\"\n | \"laptopX\"\n | \"desktop\"\n | \"desktopX\"\n | \"wide\";\n\n/**\n * Special breakpoint names for edge cases\n *\n * @category Design System\n */\nexport type TSpecialBreakpointName = \"micro\" | \"retina\" | \"print\";\n\n/**\n * Responsive breakpoints configuration for media queries\n *\n * @category Design System\n * @example\n * ```tsx\n * // Usage in styled components\n * const Component = styled('div', {\n * fontSize: '16px',\n * phone: {\n * fontSize: '14px'\n * },\n * tablet: {\n * fontSize: '15px'\n * }\n * });\n * ```\n */\nexport type TBreakpointsConfig = Record<TBreakpointName, string> & {\n special: Record<TSpecialBreakpointName, string>;\n};\n\n/**\n * Spacing scale configuration used throughout the design system\n *\n * @category Design System\n * @example\n * ```tsx\n * const Component = styled('div', {\n * padding: '$medium', // 20px\n * marginTop: '$large', // 40px\n * gap: '$small' // 10px\n * });\n * ```\n */\nexport type TSpacingConfig = Record<\n \"none\" | \"smallest\" | \"smaller\" | \"small\" | \"medium\" | \"large\" | \"larger\" | \"largest\" | \"auto\",\n string\n>;\n\n/**\n * Theme configuration for c, typography, and design tokens\n *\n * @category Design System\n * @example\n * ```tsx\n * const Component = styled('div', {\n * backgroundColor: '$surface',\n * color: '$text',\n * fontSize: '$default'\n * });\n * ```\n */\nexport type TThemeConfig = {\n /** Color palette for the design system */\n colors: Record<\n | \"background\"\n | \"text\"\n | \"textMuted\"\n | \"border\"\n | \"borderLight\"\n | \"borderTop\"\n | \"borderBottom\"\n | \"borderStrong\"\n | \"borderEmphasis\"\n | \"surface\"\n | \"surfaceHover\"\n | \"surfaceLight\"\n | \"surfaceOverlay\"\n | \"surfacePopover\"\n | \"overlay\"\n | \"blue\"\n | \"blueLight\"\n | \"blueDark\"\n | \"blueOverlay\"\n | \"violet\"\n | \"violetLight\"\n | \"violetDark\"\n | \"violetOverlay\"\n | \"orange\"\n | \"orangeLight\"\n | \"orangeDark\"\n | \"orangeOverlay\"\n | \"green\"\n | \"greenLight\"\n | \"greenDark\"\n | \"greenOverlay\"\n | \"red\"\n | \"redLight\"\n | \"redDark\"\n | \"redOverlay\"\n | \"yellow\"\n | \"yellowLight\"\n | \"yellowDark\"\n | \"yellowOverlay\"\n | \"pink\"\n | \"pinkLight\"\n | \"pinkDark\"\n | \"pinkOverlay\",\n string\n >;\n /** Font family configuration */\n fonts: {\n default: string;\n heading: string;\n };\n /** Font size scale with responsive clamp values */\n fontSizes: Record<\n \"micro\" | \"small\" | \"default\" | \"h6\" | \"h5\" | \"h4\" | \"h3\" | \"h2\" | \"h1\",\n string\n >;\n /** Line height values */\n lineHeights: {\n default: string;\n relaxed: string;\n tight: string;\n };\n /** Opacity values */\n opacities: {\n default: number;\n light: number;\n };\n /** Border radius values */\n radii: Record<\"default\" | \"small\" | \"large\" | \"full\", string>;\n /** Box shadow configurations */\n shadows: Record<\"inset\" | \"subtle\" | \"default\" | \"medium\" | \"large\" | \"largest\", string>;\n /** Size scale (same as spacings) */\n sizes: TSpacingConfig;\n /** Space scale (same as spacings) */\n space: TSpacingConfig;\n /** Transition configurations */\n transitions: {\n bounce: string;\n default: string;\n fast: string;\n slow: string;\n };\n /** Z-index layering */\n zIndices: {\n menu: number;\n modal: number;\n modalPopover: number;\n popover: number;\n select: number;\n special: number;\n sticky: number;\n table: number;\n toast: number;\n };\n};\n\n/**\n * Dynamic viewport configuration object\n *\n * @category Utilities\n */\nexport type TDynamicViewportConfig = {\n property: string;\n value: string;\n unit: \"vh\" | \"vw\" | \"vi\" | \"vb\";\n};\n\n/**\n * Utility functions available in Stitches CSS-in-JS\n *\n * @category Utilities\n * @example\n * ```tsx\n * const Component = styled('div', {\n * // Theme utilities\n * darkOnly: {\n * backgroundColor: '$violet'\n * },\n * // Responsive utilities\n * phone: {\n * fontSize: '$small'\n * },\n * // Visibility utilities\n * hidden: 'tablet',\n * // Dynamic viewport utilities\n * dynamicViewport: { property: 'maxHeight', value: '100', unit: 'vh' }\n * });\n * ```\n */\nexport type TStitchesUtils = {\n /**\n * Apply styles only in dark theme\n * @param value - CSS styles to apply in dark mode\n */\n darkOnly: (value: unknown) => unknown;\n\n /**\n * Apply styles only in light theme\n * @param value - CSS styles to apply in light mode\n */\n lightOnly: (value: unknown) => unknown;\n\n /**\n * Apply styles at wide breakpoint (2201px+)\n * @param value - CSS styles to apply\n */\n wide: (value: unknown) => unknown;\n\n /**\n * Apply styles at desktop breakpoint (max 2200px)\n * @param value - CSS styles to apply\n */\n desktop: (value: unknown) => unknown;\n\n /**\n * Apply styles at laptop breakpoint (max 1400px)\n * @param value - CSS styles to apply\n */\n laptop: (value: unknown) => unknown;\n\n /**\n * Apply styles at tablet breakpoint (max 1100px)\n * @param value - CSS styles to apply\n */\n tablet: (value: unknown) => unknown;\n\n /**\n * Apply styles at phone breakpoint (max 800px)\n * @param value - CSS styles to apply\n */\n phone: (value: unknown) => unknown;\n\n /**\n * Apply styles at phoneX breakpoint (376px-800px)\n * @param value - CSS styles to apply\n */\n phoneX: (value: unknown) => unknown;\n\n /**\n * Apply styles at tabletX breakpoint (801px-1100px)\n * @param value - CSS styles to apply\n */\n tabletX: (value: unknown) => unknown;\n\n /**\n * Apply styles at laptopX breakpoint (1101px-1400px)\n * @param value - CSS styles to apply\n */\n laptopX: (value: unknown) => unknown;\n\n /**\n * Apply styles at desktopX breakpoint (1401px-2200px)\n * @param value - CSS styles to apply\n */\n desktopX: (value: unknown) => unknown;\n\n /**\n * Apply styles at micro breakpoint (max 375px)\n * @param value - CSS styles to apply\n */\n micro: (value: unknown) => unknown;\n\n /**\n * Apply styles for retina/high-DPI displays\n * @param value - CSS styles to apply\n */\n retina: (value: unknown) => unknown;\n\n /**\n * Apply styles for print media\n * @param value - CSS styles to apply\n */\n print: (value: unknown) => unknown;\n\n /**\n * Apply styles when user prefers reduced motion\n * @param value - CSS styles to apply\n */\n reduceMotion: (value: unknown) => unknown;\n\n /**\n * Hide element at specific breakpoint\n * @param value - Breakpoint name where element should be hidden\n */\n hidden: (value: TBreakpointName) => unknown;\n\n /**\n * Hide element inline at specific breakpoint\n * @param value - Breakpoint name where element should be hidden inline\n */\n hiddenInline: (value: TBreakpointName) => unknown;\n\n /**\n * Hide element at special breakpoint (micro, retina, print)\n * @param value - Special breakpoint name where element should be hidden\n */\n hiddenSpecial: (value: \"micro\" | \"retina\" | \"print\") => unknown;\n\n /**\n * Show element only at specific breakpoint\n * @param value - Breakpoint name where element should be visible\n */\n visible: (value: TBreakpointName) => unknown;\n\n /**\n * Show element inline only at specific breakpoint\n * @param value - Breakpoint name where element should be visible inline\n */\n visibleInline: (value: TBreakpointName) => unknown;\n\n /**\n * Show element only at special breakpoint (micro, retina, print)\n * @param value - Special breakpoint name where element should be visible\n */\n visibleSpecial: (value: \"micro\" | \"retina\" | \"print\") => unknown;\n\n /**\n * Apply dynamic viewport units with fallback support\n * @param config - Configuration object\n */\n dynamicViewport: (config: TDynamicViewportConfig) => unknown;\n};\n","/**\n * Icon exports - Phosphor Icons\n * All icons are configured with duotone weight and 21px size by default\n *\n * NOTE: This file is for use ONLY within the ui/ folder (design system).\n * Components and other code outside ui/ should use @/lib/icons instead.\n */\n\nimport {\n ArticleIcon,\n ArrowClockwise as ArrowClockwiseIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n ArrowUpIcon,\n ArrowUpRightIcon,\n ArrowsInIcon,\n ArrowsOutIcon,\n BedIcon,\n BellIcon,\n BookmarksIcon,\n CalendarIcon,\n CaretDownIcon,\n CaretLeftIcon,\n CaretRightIcon,\n CaretUpIcon,\n ChatIcon,\n ChatTextIcon,\n ChartLineIcon,\n CheckCircleIcon,\n CircleIcon,\n ClipboardIcon,\n CopyIcon,\n DatabaseIcon,\n DesktopIcon,\n EyeIcon,\n EyeSlashIcon,\n GearIcon,\n GlobeIcon,\n HeartIcon,\n HouseIcon,\n InfoIcon,\n LightningIcon,\n ListIcon,\n ListChecksIcon,\n MagnifyingGlass as MagnifyingGlassIcon,\n MonitorIcon,\n MoonIcon,\n PencilIcon,\n PlusIcon,\n PlugIcon,\n QuestionIcon,\n ShieldCheckIcon,\n SignInIcon,\n SignOutIcon,\n SmileyIcon,\n StarIcon,\n SunIcon,\n ThumbsDownIcon,\n ThumbsUpIcon,\n TrashIcon,\n UserIcon,\n UsersIcon,\n Warning as WarningCircleIcon,\n WarningIcon,\n X as XIcon,\n XCircleIcon,\n} from \"@phosphor-icons/react\";\n\n// Directional Icons\nexport {\n ArrowClockwiseIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n ArrowUpIcon,\n ArrowUpRightIcon,\n ArrowsInIcon,\n ArrowsOutIcon,\n CaretDownIcon,\n CaretLeftIcon,\n CaretRightIcon,\n CaretUpIcon,\n};\n\n// Action Icons\nexport {\n BookmarksIcon,\n CheckCircleIcon,\n ClipboardIcon,\n CopyIcon,\n SignInIcon,\n SignOutIcon,\n ListChecksIcon,\n LightningIcon,\n PencilIcon,\n PlusIcon,\n TrashIcon,\n};\n\n// UI Icons\nexport {\n BellIcon,\n CircleIcon,\n EyeIcon,\n EyeSlashIcon,\n InfoIcon,\n MagnifyingGlassIcon,\n QuestionIcon,\n WarningCircleIcon,\n WarningIcon,\n XCircleIcon,\n XIcon,\n};\n\n// Theme Icons\nexport { DesktopIcon, MoonIcon, SunIcon };\n\n// Status/Sentiment Icons\nexport { HeartIcon, SmileyIcon, StarIcon, ThumbsDownIcon, ThumbsUpIcon, UserIcon };\n\n// Content Icons\nexport { ArticleIcon, BedIcon, ChatIcon, ChatTextIcon, DatabaseIcon, GlobeIcon, ListIcon };\n\n// Navigation Icons\nexport {\n CalendarIcon,\n ChartLineIcon,\n GearIcon,\n HouseIcon,\n MonitorIcon,\n PlugIcon,\n ShieldCheckIcon,\n UsersIcon,\n};\n","import type { JSX } from \"react\";\n\nimport { CSS } from \"@stitches/react\";\n\nimport { type IStack } from \"../../index\";\nimport { darkTheme } from \"../../stitches.config\";\nimport { StackStyled } from \"./styles\";\n\nconst getFlexValue = (width: number): string => (width === 100 ? `0 0 100%` : `${width} 1 0%`);\n\nconst createResponsiveWidth = (widthResponsive: IStack[\"widthResponsive\"], css: CSS = {}): CSS => {\n const responsiveStyles: CSS = {};\n\n if (widthResponsive?.phone) {\n responsiveStyles.phone = {\n ...(css?.phone && typeof css.phone === \"object\" ? css.phone : {}),\n flex: getFlexValue(widthResponsive.phone),\n };\n }\n\n if (widthResponsive?.tabletX) {\n responsiveStyles.tabletX = {\n ...(css?.tabletX && typeof css.tabletX === \"object\" ? css.tabletX : {}),\n flex: getFlexValue(widthResponsive.tabletX),\n };\n }\n\n if (widthResponsive?.laptopX) {\n responsiveStyles.laptopX = {\n ...(css?.laptopX && typeof css.laptopX === \"object\" ? css.laptopX : {}),\n flex: getFlexValue(widthResponsive.laptopX),\n };\n }\n\n if (widthResponsive?.desktopX) {\n responsiveStyles.desktopX = {\n ...(css?.desktopX && typeof css.desktopX === \"object\" ? css.desktopX : {}),\n flex: getFlexValue(widthResponsive.desktopX),\n };\n }\n\n if (widthResponsive?.wide) {\n responsiveStyles.wide = {\n ...(css?.wide && typeof css.wide === \"object\" ? css.wide : {}),\n flex: getFlexValue(widthResponsive.wide),\n };\n }\n\n return responsiveStyles;\n};\n\nexport default function Stack({\n align,\n alignContent,\n alignItems,\n as,\n basis,\n bottom,\n children,\n className,\n css,\n direction,\n gap,\n grow,\n id,\n inline,\n inverted,\n justify,\n minimal,\n onClick,\n order,\n shrink,\n top,\n width,\n widthResponsive,\n wrap,\n ...rest\n}: IStack): JSX.Element {\n const effectiveMinimal = direction === \"row\" ? minimal !== false : minimal === true;\n const finalCSS: CSS = {\n ...(align && { textAlign: align }),\n ...(alignItems && { alignItems }),\n ...(alignContent && { alignContent }),\n ...(justify && { justifyContent: justify }),\n ...((gap || direction === \"row\") && { gap: `$${gap ?? \"small\"}` }),\n ...((wrap || direction === \"row\") && { flexWrap: wrap ?? \"wrap\" }),\n ...(basis && { flexBasis: basis }),\n ...(grow && { flexGrow: grow }),\n ...(shrink && { flexShrink: shrink }),\n ...(order && { order }),\n ...(top && { marginTop: 0, paddingTop: `$${top}` }),\n ...(bottom && { marginBottom: 0, paddingBottom: `$${bottom}` }),\n ...(width !== undefined && { flex: getFlexValue(width) }),\n ...css,\n ...(widthResponsive && createResponsiveWidth(widthResponsive, css)),\n };\n\n return (\n <StackStyled\n as={as}\n className={inverted ? darkTheme.className : className}\n css={finalCSS}\n direction={direction}\n id={id}\n inline={inline}\n minimal={effectiveMinimal}\n onClick={onClick}\n {...rest}>\n {children}\n </StackStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\nimport { TextStyled } from \"../Text/styles\";\n\nexport const StackStyled = styled(\"div\", {\n margin: 0,\n variants: {\n direction: {\n column: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n row: {\n display: \"flex\",\n flexDirection: \"row\",\n paddingLeft: \"$small\",\n paddingRight: \"$small\",\n phone: {\n paddingLeft: \"$smaller\",\n paddingRight: \"$smaller\",\n },\n },\n },\n inline: {\n true: {\n [`& ${TextStyled}`]: {\n marginBottom: \"0 !important\",\n verticalAlign: \"middle\",\n },\n },\n },\n inverted: {\n true: {\n backgroundColor: \"$background\",\n color: \"$text\",\n },\n },\n minimal: {\n true: {\n paddingLeft: \"0 !important\",\n paddingRight: \"0 !important\",\n },\n },\n },\n});\n\nexport default StackStyled;\n","import { styled } from \"../../stitches.config\";\n\nconst highlight = {\n padding: \"calc($smallest / 2) $smaller\",\n};\n\nconst link = {\n \"&:hover\": {\n backgroundColor: \"$surface\",\n },\n borderBottom: \"1px solid $border\",\n color: \"$text\",\n cursor: \"pointer\",\n margin: 0,\n transition: \"$default\",\n};\n\nconst mutedStyles = {\n color: \"$textMuted\",\n};\n\nexport const TextSizes = {\n a: {\n marginBottom: 0,\n },\n h1: {\n fontFamily: \"$heading\",\n fontSize: \"$h1\",\n fontWeight: 600,\n lineHeight: \"$tight\",\n marginBottom: \"$small\",\n },\n h2: {\n fontFamily: \"$heading\",\n fontSize: \"$h2\",\n fontWeight: 600,\n lineHeight: \"$tight\",\n marginBottom: \"$small\",\n },\n h3: {\n fontFamily: \"$heading\",\n fontSize: \"$h3\",\n fontWeight: 600,\n lineHeight: \"$tight\",\n marginBottom: \"$small\",\n },\n h4: {\n fontFamily: \"$heading\",\n fontSize: \"$h4\",\n fontWeight: 600,\n lineHeight: \"$tight\",\n marginBottom: \"$small\",\n },\n h5: {\n fontFamily: \"$heading\",\n fontSize: \"$h5\",\n fontWeight: 600,\n lineHeight: \"$tight\",\n marginBottom: \"$smaller\",\n },\n h6: {\n fontFamily: \"$heading\",\n fontSize: \"$h6\",\n fontWeight: 600,\n lineHeight: \"$tight\",\n marginBottom: \"$smaller\",\n },\n label: {\n color: \"$textMuted\",\n display: \"block\",\n fontFamily: \"$heading\",\n fontSize: \"$small\",\n fontWeight: 600,\n lineHeight: \"$default\",\n marginBottom: \"$smaller\",\n },\n li: {\n fontSize: \"$default\",\n lineHeight: \"$default\",\n marginBottom: \"$smaller\",\n },\n micro: {\n color: \"$textMuted\",\n display: \"block\",\n fontSize: \"$micro\",\n lineHeight: \"$default\",\n marginBottom: \"$smallest\",\n },\n ol: {\n listStyle: \"decimal inside !important\",\n listStylePosition: \"inside\",\n listStyleType: \"decimal\",\n marginBottom: 0,\n paddingLeft: \"$small\",\n },\n p: {\n color: \"$text\",\n fontFamily: \"$default\",\n fontSize: \"$default\",\n lineHeight: \"$default\",\n marginBottom: \"$smaller\",\n },\n small: {\n color: \"$textMuted\",\n display: \"block\",\n fontSize: \"$small\",\n lineHeight: \"$default\",\n marginBottom: \"$smallest\",\n },\n span: {\n fontSize: \"inherit\",\n fontWeight: 400,\n lineHeight: \"inherit\",\n },\n strong: {\n fontFamily: \"$heading\",\n fontSize: \"inherit\",\n fontWeight: 600,\n lineHeight: \"inherit\",\n },\n ul: {\n listStyle: \"disc inside !important\",\n listStylePosition: \"inside\",\n listStyleType: \"disc\",\n marginBottom: 0,\n paddingLeft: \"$small\",\n },\n};\n\nexport const TextStyled = styled(\"div\", {\n \"&:last-child\": {\n marginBottom: \"0 !important\",\n },\n color: \"$text\",\n variants: {\n accent: {\n true: mutedStyles,\n },\n hero: {\n true: {\n color: \"$text\",\n mask: \"linear-gradient(to bottom, black 0%, black 20%, rgba(0,0,0,0.8) 60%, rgba(0,0,0,0.35) 100%)\",\n WebkitMask:\n \"linear-gradient(to bottom, black 0%, black 20%, rgba(0,0,0,0.8) 60%, rgba(0,0,0,0.35) 100%)\",\n },\n },\n highlight: {\n default: {\n ...highlight,\n backgroundColor: \"$surface\",\n },\n yellow: {\n ...highlight,\n backgroundColor: \"$yellow\",\n },\n },\n inline: {\n false: {\n verticalAlign: \"baseline !important\",\n },\n true: {\n alignSelf: \"center\",\n display: \"inline-flex !important\",\n marginBottom: \"0 !important\",\n verticalAlign: \"middle\",\n },\n },\n link: {\n default: {\n ...link,\n },\n minimal: {\n ...link,\n borderColor: \"transparent\",\n },\n },\n muted: {\n true: mutedStyles,\n },\n size: TextSizes,\n truncate: {\n \"1\": {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n \"2\": {\n display: \"-webkit-box\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 2,\n },\n \"3\": {\n display: \"-webkit-box\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 3,\n },\n \"4\": {\n display: \"-webkit-box\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 4,\n },\n },\n },\n\n verticalAlign: \"baseline\",\n});\n\nexport default TextStyled;\n","import type { JSX } from \"react\";\n\nimport { useBreakpoints, Gradient, Logo, type IView } from \"../../index\";\nimport { darkTheme } from \"../../stitches.config\";\nimport { ViewStyled, ViewContainerStyled } from \"./styles\";\n\nfunction HeroBackground(): JSX.Element {\n const { isPhone } = useBreakpoints();\n\n return (\n <>\n <Gradient />\n <Logo\n css={{\n left: \"-100px\",\n opacity: 0.05,\n pointerEvents: \"none\",\n position: \"absolute\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n userSelect: \"none\",\n zIndex: 1.5,\n }}\n variant=\"icon\"\n width={isPhone ? 750 : 900}\n />\n </>\n );\n}\n\nexport default function View({\n app,\n as,\n bottom,\n children,\n container,\n css,\n hero,\n id,\n inverted,\n top,\n}: IView): JSX.Element {\n const needsContainer = container === true || app === true;\n\n return (\n <ViewStyled\n as={as}\n className={inverted ? darkTheme.className : \"\"}\n css={{\n ...(top && {\n marginTop: 0,\n paddingTop: `$${top}`,\n }),\n ...(bottom && {\n marginBottom: 0,\n paddingBottom: `$${bottom}`,\n }),\n ...css,\n }}\n hero={hero}\n id={id ? `view-${id}` : undefined}\n inverted={inverted}>\n {hero && <HeroBackground />}\n {needsContainer ? (\n <ViewContainerStyled app={app} container={container}>\n {children}\n </ViewContainerStyled>\n ) : (\n children\n )}\n </ViewStyled>\n );\n}\n","import type { JSX } from \"react\";\n\nimport { GradientStyled } from \"./styles\";\n\nexport default function Gradient(): JSX.Element {\n return (\n <GradientStyled>\n <svg\n height=\"100%\"\n style={{\n left: 0,\n opacity: 0.85,\n pointerEvents: \"none\",\n position: \"absolute\",\n top: 0,\n userSelect: \"none\",\n }}\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <radialGradient cx=\"50%\" cy=\"120%\" fx=\"50%\" fy=\"110%\" id=\"sunsetGradient\" r=\"100%\">\n {/* All theme colors with strategic spacing to prevent muddy blending */}\n <stop offset=\"0%\" stopColor=\"rgba(242, 201, 125, 0.25)\" />\n <stop offset=\"12%\" stopColor=\"rgba(234, 187, 171, 0.4)\" />\n <stop offset=\"24%\" stopColor=\"rgba(243, 169, 196, 0.55)\" />\n <stop offset=\"36%\" stopColor=\"rgba(237, 164, 169, 0.65)\" />\n <stop offset=\"48%\" stopColor=\"rgba(188, 182, 215, 0.75)\" />\n <stop offset=\"62%\" stopColor=\"rgba(175, 218, 241, 0.8)\" />\n <stop offset=\"78%\" stopColor=\"rgba(178, 214, 201, 0.75)\" />\n <stop offset=\"100%\" stopColor=\"transparent\" />\n <animate\n attributeName=\"r\"\n begin=\"0s\"\n calcMode=\"spline\"\n dur=\"40s\"\n keySplines=\"0.42 0 0.58 1; 0.42 0 0.58 1; 0.42 0 0.58 1; 0.42 0 0.58 1\"\n keyTimes=\"0; 0.25; 0.5; 0.75; 1\"\n repeatCount=\"indefinite\"\n values=\"95%; 105%; 100%; 105%; 95%\"\n />\n </radialGradient>\n </defs>\n <rect fill=\"url(#sunsetGradient)\" height=\"100%\" width=\"100%\" />\n </svg>\n </GradientStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const GradientStyled = styled(\"div\", {\n backgroundColor: \"$text\",\n darkOnly: {\n backgroundColor: \"$background\",\n },\n height: \"100%\",\n inset: 0,\n position: \"absolute\",\n transform: \"translateZ(0)\",\n width: \"100%\",\n willChange: \"transform\",\n zIndex: 0,\n});\n\nexport default GradientStyled;\n","import type { JSX } from \"react\";\n\nimport { type ILogo } from \"../../index\";\nimport Text from \"../Text\";\nimport { LogoStyled } from \"./styles\";\n\nconst sizePresets = {\n large: {\n iconWidth: 32,\n textSize: 26,\n },\n medium: {\n iconWidth: 24,\n textSize: 24,\n },\n small: {\n iconWidth: 20,\n textSize: 20,\n },\n} as const;\n\nconst IconSVG = (): JSX.Element => (\n <svg viewBox=\"0 0 386.81 427.47\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M369.48,4.46h-224.77c-5.11,0-10.02,1.99-13.7,5.54L19.67,117.73c-9.72,9.4-15.17,22.38-15.06,35.9l.95,118.09c.08,9.9,8.13,17.89,18.03,17.89h99.01c.42.04.82.09,1.37.09,10.34,0,12.43,6.59,12.77,10.63v76.93c0,.57.06,1.12.08,1.68v26.49c0,9.49,7.7,17.19,17.19,17.19h67.4c.89,0,1.74-.11,2.59-.26l15.52.13c9.36.08,18.35-3.64,24.92-10.32l108.72-110.61c4.3-4.37,1.2-11.77-4.93-11.77l-221.69-.18s-.03,0-.05,0c-7.85,0-9.41-5.7-9.66-9.16V18.9c0-5.22,6.35-7.78,9.98-4.03l95.11,98.39c12.61,13.05,29.99,20.42,48.14,20.42h78.72c5.3,0,9.61-4.28,9.65-9.58l.7-109.92c.03-5.35-4.29-9.71-9.65-9.71Z\" />\n </svg>\n);\n\nexport default function Logo({\n css,\n hover = true,\n outline = false,\n size = \"medium\",\n theme = \"default\",\n variant = \"full\",\n width = 32,\n}: ILogo): JSX.Element {\n const isIconOnly = variant === \"icon\";\n const useOutline = outline;\n const useHover = !outline && hover;\n\n // Icon aspect ratio\n const iconAspectRatio = 386.81 / 427.47;\n\n // For full variant, use size presets. For icon variant, use the width prop\n let iconWidth: number;\n let textSize: number;\n\n if (isIconOnly) {\n iconWidth = typeof width === \"number\" ? width : 32;\n textSize = 0; // Not used for icon variant\n } else {\n const { iconWidth: presetIconWidth, textSize: presetTextSize } = sizePresets[size];\n\n iconWidth = presetIconWidth;\n textSize = presetTextSize;\n }\n\n const iconHeight = iconWidth / iconAspectRatio;\n\n return (\n <LogoStyled\n css={{\n ...css,\n alignItems: \"center\",\n display: \"inline-flex\",\n gap: \"$small\",\n }}\n hover={useHover}\n outline={useOutline}\n theme={theme}>\n <div\n style={{\n display: \"flex\",\n height: `${iconHeight}px`,\n width: `${iconWidth}px`,\n }}>\n <IconSVG />\n </div>\n {!isIconOnly && (\n <Text\n as=\"span\"\n css={{\n fontFamily: \"$heading\",\n fontSize: `${textSize}px`,\n fontWeight: 600,\n lineHeight: 1,\n }}>\n consolia\n </Text>\n )}\n </LogoStyled>\n );\n}\n","import { Fragment, type JSX } from \"react\";\nimport { Balancer } from \"react-wrap-balancer\";\n\nimport { ArrowUpRightIcon } from \"../../icons\";\nimport { Icon, type IText } from \"../../index\";\nimport { TextStyled } from \"./styles\";\n\nexport default function Text({\n accent,\n as = \"p\",\n balanced,\n bottom,\n children,\n css,\n hero,\n highlight,\n href,\n inline,\n link,\n muted,\n override,\n rel,\n target,\n top,\n truncate,\n ...rest\n}: IText): JSX.Element {\n const TextBalancer = balanced ? Balancer : Fragment;\n const elementType = as || \"p\";\n const styleSize = override || as || \"p\";\n const isAnchor = as === \"a\";\n const isExternalLink = isAnchor && target === \"_blank\";\n const shouldShowInline = inline && ![\"span\", \"strong\"].includes(as);\n\n return (\n <TextStyled\n accent={accent}\n as={elementType}\n css={{\n ...(top && {\n marginTop: 0,\n paddingTop: top === \"none\" ? 0 : `$${top}`,\n }),\n ...(bottom && {\n marginBottom: 0,\n paddingBottom: bottom === \"none\" ? 0 : `$${bottom}`,\n }),\n ...(inline && {\n marginRight: inline === \"auto\" ? \"auto\" : `$${inline}`,\n }),\n ...css,\n }}\n hero={hero}\n highlight={highlight}\n href={isAnchor ? href : undefined}\n inline={shouldShowInline ? true : false}\n link={link || (isAnchor ? \"default\" : undefined)}\n muted={muted}\n rel={isAnchor ? (isExternalLink ? rel || \"noopener noreferrer\" : rel) : undefined}\n size={styleSize}\n target={isAnchor ? target : undefined}\n truncate={truncate}\n {...rest}>\n <TextBalancer>{children}</TextBalancer>\n {isExternalLink && (\n <Icon\n css={{\n marginLeft: \"$smallest\",\n marginTop: \"-$smallest\",\n }}\n forceSize={18}\n icon={<ArrowUpRightIcon />}\n />\n )}\n </TextStyled>\n );\n}\n","import { type JSX, cloneElement, isValidElement } from \"react\";\n\nimport type { IIcon } from \"../../types/components\";\n\nimport useMountSSR from \"../../hooks/useMountSSR\";\nimport { IconCardStyled, IconStyled } from \"./styles\";\n\nexport default function Icon({\n card,\n cardSize = \"default\",\n css,\n forceSize,\n icon,\n inline,\n theme,\n weight,\n ...rest\n}: IIcon): JSX.Element {\n const isMounted = useMountSSR();\n\n if (!isMounted || !icon) return <> </>;\n\n // Force duotone weight, use forceSize or default to 21\n const effectiveSize = forceSize ?? 21;\n const effectiveWeight = weight ?? \"duotone\";\n\n // Determine color based on theme - use Dark variant to match Badge\n const getThemeColor = (): string | undefined => {\n if (!theme || theme === \"default\") return undefined;\n\n const colorMap: Record<string, string> = {\n blue: \"blueDark\",\n green: \"greenDark\",\n orange: \"orangeDark\",\n red: \"redDark\",\n violet: \"violetDark\",\n yellow: \"yellowDark\",\n };\n\n return colorMap[theme] || theme;\n };\n\n const themeColor = getThemeColor();\n\n // Clone the icon element with props\n const iconWithProps = isValidElement(icon)\n ? cloneElement(icon, {\n size: effectiveSize,\n weight: effectiveWeight,\n } as Record<string, unknown>)\n : icon;\n\n const iconElement = (\n <IconStyled\n aria-hidden\n css={{\n ...(inline &&\n !card && {\n marginRight: inline === \"auto\" ? \"auto\" : `$${inline}`,\n }),\n ...(themeColor && {\n svg: {\n color: `$${themeColor} !important`,\n },\n }),\n ...(forceSize && {\n svg: {\n height: `${forceSize}px`,\n width: `${forceSize}px`,\n },\n }),\n ...(!card && css),\n }}\n role=\"img\"\n {...rest}>\n {iconWithProps}\n </IconStyled>\n );\n\n // If card variant, wrap in IconCardStyled\n if (card) {\n return (\n <IconCardStyled\n css={{\n ...(inline && {\n marginRight: inline === \"auto\" ? \"auto\" : `$${inline}`,\n }),\n ...css,\n }}\n size={cardSize}\n theme={theme}>\n {iconElement}\n </IconCardStyled>\n );\n }\n\n return iconElement;\n}\n","import { useEffect, useState, useRef, useDebugValue } from \"react\";\n\nexport default function useMountSSR(): boolean {\n const [isMounted, setIsMounted] = useState(false);\n const isMountedRef = useRef(false);\n const isDOM = typeof window !== \"undefined\" && window.document && window.document.documentElement;\n\n useDebugValue(isMounted ? \"Mounted\" : \"Not Mounted\");\n\n useEffect(() => {\n if (isDOM) {\n isMountedRef.current = true;\n setIsMounted(true);\n }\n\n return (): void => {\n isMountedRef.current = false;\n };\n }, [isDOM]);\n\n return isMountedRef.current && isMounted;\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const IconStyled = styled(\"span\", {\n display: \"inline-flex\",\n flexShrink: 0,\n verticalAlign: \"middle\",\n});\n\nexport const IconCardStyled = styled(\"div\", {\n // Inner icon container (double-border effect) - gets theme bg\n \"& > span\": {\n alignItems: \"center\",\n backgroundColor: \"$background\",\n border: \"1px solid $borderLight\",\n borderRadius: \"$small\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n // Outer card - always stays normal (no bg override)\n alignItems: \"center\",\n backgroundColor: \"$surface\",\n border: \"1px solid $border\",\n borderBottomColor: \"$borderBottom\",\n borderRadius: \"$default\",\n borderTopColor: \"$borderLight\",\n boxShadow: \"$subtle\",\n display: \"inline-flex\",\n justifyContent: \"center\",\n position: \"relative\",\n\n transition: \"$default\",\n\n variants: {\n size: {\n default: {\n \"& > span\": {\n padding: \"$small\",\n },\n padding: \"$small\",\n },\n large: {\n \"& > span\": {\n padding: \"$small\",\n },\n padding: \"$medium\",\n },\n small: {\n \"& > span\": {\n padding: \"$smaller\",\n },\n padding: \"$smaller\",\n },\n },\n theme: {\n blue: {\n \"& > span\": {\n backgroundColor: \"$blue\",\n borderColor: \"$blue\",\n },\n },\n default: {\n \"& > span\": {\n backgroundColor: \"$background\",\n borderColor: \"$borderLight\",\n },\n },\n green: {\n \"& > span\": {\n backgroundColor: \"$green\",\n borderColor: \"$green\",\n },\n },\n orange: {\n \"& > span\": {\n backgroundColor: \"$orange\",\n borderColor: \"$orange\",\n },\n },\n red: {\n \"& > span\": {\n backgroundColor: \"$red\",\n borderColor: \"$red\",\n },\n },\n violet: {\n \"& > span\": {\n backgroundColor: \"$violet\",\n borderColor: \"$violet\",\n },\n },\n yellow: {\n \"& > span\": {\n backgroundColor: \"$yellow\",\n borderColor: \"$yellow\",\n },\n },\n },\n },\n\n verticalAlign: \"middle\",\n});\n","import { keyframes, styled } from \"../../stitches.config\";\n\nconst fadeToOutline = keyframes({\n \"0%\": {\n fillOpacity: 1,\n strokeDasharray: \"2500\",\n strokeDashoffset: \"0\",\n },\n \"100%\": {\n fillOpacity: 0,\n strokeDasharray: \"2500\",\n strokeDashoffset: \"0\",\n },\n});\n\nconst fadeToFilled = keyframes({\n \"0%\": {\n fillOpacity: 0,\n strokeDasharray: \"2500\",\n strokeDashoffset: \"0\",\n },\n \"100%\": {\n fillOpacity: 1,\n strokeDasharray: \"2500\",\n strokeDashoffset: \"0\",\n },\n});\n\nconst strokeStyles = {\n stroke: \"currentColor\",\n strokeDasharray: \"2500\",\n strokeDashoffset: \"0\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"8\",\n} as const;\n\nexport const LogoStyled = styled(\"div\", {\n \"& svg\": {\n \"& path:last-of-type\": {\n fillOpacity: 1,\n ...strokeStyles,\n },\n fill: \"currentColor\",\n },\n variants: {\n hover: {\n true: {\n \"&:hover\": {\n \"& svg\": {\n \"& path:last-of-type\": {\n animation: `${fadeToOutline} 0.3s ease forwards`,\n },\n },\n },\n \"&:not(:hover)\": {\n \"& svg\": {\n \"& path:last-of-type\": {\n animation: `${fadeToFilled} 0.3s ease forwards`,\n },\n },\n },\n },\n },\n outline: {\n true: {\n \"& svg\": {\n \"& path:last-of-type\": {\n fillOpacity: 0,\n },\n },\n },\n },\n theme: {\n blue: {\n color: \"$blue\",\n },\n dark: {\n color: \"$text\",\n darkOnly: {\n color: \"$surface\",\n },\n },\n default: {\n color: \"$text\",\n },\n light: {\n color: \"$background\",\n darkOnly: {\n color: \"$text\",\n },\n },\n orange: {\n color: \"$orange\",\n },\n violet: {\n color: \"$violet\",\n },\n yellow: {\n color: \"$yellow\",\n },\n },\n },\n});\n","import { useEffect, useState } from \"react\";\n\nimport type { TBreakpoint, IUseBreakpoints } from \"../types/hooks\";\n\nimport { breakpoints } from \"../stitches.config\";\n\nconst extractMediaQuery = (cssRule: string): string => {\n return cssRule.replace(\"@media only screen and \", \"\");\n};\n\nconst getBreakpoint = (): TBreakpoint => {\n if (window.matchMedia(extractMediaQuery(breakpoints.phone)).matches) {\n return \"phone\";\n } else if (window.matchMedia(extractMediaQuery(breakpoints.tabletX)).matches) {\n return \"tabletX\";\n } else if (window.matchMedia(extractMediaQuery(breakpoints.laptopX)).matches) {\n return \"laptopX\";\n } else if (window.matchMedia(extractMediaQuery(breakpoints.desktopX)).matches) {\n return \"desktopX\";\n } else if (window.matchMedia(extractMediaQuery(breakpoints.wide)).matches) {\n return \"wide\";\n }\n\n return undefined;\n};\n\nexport default function useBreakpoints(): IUseBreakpoints {\n const [breakpoint, setBreakpoint] = useState<TBreakpoint>(\"phone\");\n\n const isPhone = breakpoint === \"phone\";\n const isTablet = breakpoint === \"tabletX\";\n const isLaptop = breakpoint === \"laptopX\";\n const isDesktop = breakpoint === \"desktopX\";\n const isWide = breakpoint === \"wide\";\n\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const breakpointListener = (): void => {\n const currentBreakpoint = getBreakpoint();\n\n setBreakpoint(currentBreakpoint);\n };\n\n breakpointListener();\n window.addEventListener(\"resize\", breakpointListener);\n\n return (): void => window.removeEventListener(\"resize\", breakpointListener);\n }\n\n return (): void => {};\n }, []);\n\n return { breakpoint, isDesktop, isLaptop, isPhone, isTablet, isWide };\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const ViewStyled = styled(\"section\", {\n backgroundColor: \"$background\",\n color: \"$text\",\n paddingLeft: \"$medium\",\n paddingRight: \"$medium\",\n phone: {\n paddingLeft: \"$small\",\n paddingRight: \"$small\",\n },\n position: \"relative\",\n variants: {\n hero: {\n true: {\n background: \"$text !important\",\n darkOnly: {\n background: \"$background\",\n },\n overflow: \"hidden\",\n },\n },\n inverted: {\n true: {\n backgroundColor: \"$background\",\n color: \"$text\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const ViewContainerStyled = styled(\"div\", {\n position: \"relative\",\n\n variants: {\n app: {\n false: {\n width: \"100%\",\n },\n true: {\n desktopX: {\n maxWidth: \"2400px\",\n },\n margin: \"0 auto\",\n wide: {\n maxWidth: \"2800px\",\n },\n width: \"98%\",\n },\n },\n container: {\n false: {\n width: \"100%\",\n },\n true: {\n desktopX: {\n maxWidth: \"1900px\",\n },\n margin: \"0 auto\",\n wide: {\n maxWidth: \"2200px\",\n },\n width: \"96%\",\n },\n },\n },\n\n zIndex: 2,\n});\n\nexport default ViewStyled;\n","import { useState, type JSX } from \"react\";\n\nimport { SignInIcon, SignOutIcon, XCircleIcon } from \"../../icons\";\nimport { Button, Loading, Icon, type IBox } from \"../../index\";\nimport {\n BoxExitStyled,\n BoxExpanderTrigger,\n BoxFlexStyled,\n BoxFooterStyled,\n BoxHeaderStyled,\n BoxInnerStyled,\n BoxLoadingStyled,\n BoxStyled,\n BoxImageStyled,\n} from \"./styles\";\n\nexport default function Box({\n children,\n closable,\n css,\n cta,\n expandable,\n expandableHeight,\n footer,\n header,\n hover,\n id,\n image,\n imageCTA,\n imageFit,\n imageHeight,\n imagePosition,\n imageTarget,\n loading,\n minimal,\n onClick,\n role,\n small,\n tabIndex,\n theme = \"default\",\n}: IBox): JSX.Element | null {\n const [isOpen, setIsOpen] = useState(true);\n const [isMounted, setIsMounted] = useState(true);\n const [isExpanded, setIsExpanded] = useState(false);\n\n function handleClose(): void {\n setIsOpen(false);\n setTimeout(() => {\n setIsMounted(false);\n }, 100);\n }\n\n const padding = header || footer || image || minimal ? \"none\" : small ? \"small\" : \"default\";\n const hasInteraction = !!(cta || imageCTA || onClick);\n const isHoverEnabled = !!(hover ?? hasInteraction);\n\n if (!isMounted) return null;\n\n return (\n <BoxStyled\n animation={!isOpen}\n aria-busy={!!loading || undefined}\n aria-label={cta ? (typeof header === \"string\" ? header : undefined) : undefined}\n as={cta ? \"a\" : \"div\"}\n collapsed={expandable && !isExpanded}\n css={{\n ...(expandable && expandableHeight && !isExpanded && { maxHeight: expandableHeight }),\n ...css,\n }}\n footer={!!footer}\n hover={!loading && isHoverEnabled}\n href={cta}\n id={id}\n loading={!!loading}\n padding={padding}\n rel={cta ? \"noopener noreferrer\" : undefined}\n role={role}\n tabIndex={tabIndex}\n target={cta ? \"_blank\" : undefined}\n theme={header ? \"default\" : theme || \"default\"}\n onClick={onClick}>\n {loading && (\n <BoxLoadingStyled>\n <Loading />\n </BoxLoadingStyled>\n )}\n\n <BoxFlexStyled>\n {image && (\n <BoxImageStyled\n css={{\n img: {\n height: imageHeight || \"100%\",\n objectFit: imageFit || \"cover\",\n objectPosition: imagePosition || \"center\",\n width: \"100%\",\n },\n }}>\n {imageCTA && !cta ? (\n <a href={imageCTA} rel=\"noopener noreferrer\" target={imageTarget || \"_blank\"}>\n {image}\n </a>\n ) : (\n image\n )}\n </BoxImageStyled>\n )}\n {header && (\n <BoxHeaderStyled\n padding={minimal ? \"none\" : small ? \"small\" : \"default\"}\n theme={theme === \"border\" ? \"border\" : \"default\"}>\n {header}\n </BoxHeaderStyled>\n )}\n\n {image || header || footer ? (\n <BoxInnerStyled padding={minimal ? \"none\" : small ? \"small\" : \"default\"}>\n {children}\n </BoxInnerStyled>\n ) : (\n children\n )}\n </BoxFlexStyled>\n\n {footer && (\n <BoxFooterStyled fill={!header} padding={minimal ? \"none\" : small ? \"small\" : \"default\"}>\n {footer}\n </BoxFooterStyled>\n )}\n\n {expandable && !cta && (\n <BoxExpanderTrigger expanded={isExpanded}>\n <Button\n icon={isExpanded ? <Icon icon={<SignInIcon />} /> : <Icon icon={<SignOutIcon />} />}\n small\n theme={isExpanded ? \"default\" : \"solid\"}\n onClick={() => setIsExpanded(!isExpanded)}>\n {isExpanded ? \"Collapse\" : \"Expand\"}\n </Button>\n </BoxExpanderTrigger>\n )}\n\n {closable && !cta && (\n <BoxExitStyled onClick={() => handleClose()}>\n <Button small theme=\"minimal\">\n <Icon icon={<XCircleIcon />} />\n </Button>\n </BoxExitStyled>\n )}\n </BoxStyled>\n );\n}\n","import { forwardRef, type JSX } from \"react\";\n\nimport { ArrowUpRightIcon } from \"../../icons\";\nimport { Loading, Icon, type IButton } from \"../../index\";\nimport { ButtonIconStyled, ButtonLoadingStyled, ButtonStyled, ButtonNewDotStyled } from \"./styles\";\n\nconst Button = forwardRef<HTMLButtonElement, IButton>(\n (\n {\n block,\n children,\n css,\n disabled,\n external,\n icon,\n iconPosition,\n inline,\n loading,\n new: isNew,\n onClick,\n small,\n theme,\n ...rest\n },\n ref,\n ): JSX.Element => {\n const isDisabled = disabled || loading;\n const showLeftIcon = icon && (iconPosition === \"left\" || !iconPosition) && !external;\n const showRightIcon = icon && iconPosition === \"right\" && !external;\n\n return (\n <ButtonStyled\n ref={ref}\n aria-busy={loading || undefined}\n block={block}\n css={{\n ...(inline && {\n alignSelf: \"center\",\n marginRight: inline === \"auto\" ? \"auto\" : `$${inline}`,\n verticalAlign: \"middle\",\n }),\n ...css,\n }}\n disabled={isDisabled}\n loading={loading}\n small={small}\n theme={theme || \"default\"}\n type=\"button\"\n onClick={!isDisabled ? onClick : undefined}\n {...rest}>\n {loading && (\n <ButtonLoadingStyled>\n <Loading />\n </ButtonLoadingStyled>\n )}\n\n {showLeftIcon && (\n <ButtonIconStyled align={small ? \"smallLeft\" : \"left\"}>{icon}</ButtonIconStyled>\n )}\n\n {children}\n\n {showRightIcon && (\n <ButtonIconStyled align={small ? \"smallRight\" : \"right\"}>{icon}</ButtonIconStyled>\n )}\n\n {external && (\n <ButtonIconStyled align={small ? \"smallRight\" : \"right\"}>\n <Icon icon={<ArrowUpRightIcon />} />\n </ButtonIconStyled>\n )}\n\n {isNew && (\n <ButtonNewDotStyled\n theme={theme === \"minimal\" || theme === \"solid\" ? theme : \"default\"}\n />\n )}\n </ButtonStyled>\n );\n },\n);\n\nexport default Button;\n","import { pulse, styled } from \"../../stitches.config\";\n\nexport const ButtonStyled = styled(\"button\", {\n \"&:active\": {\n boxShadow: \"$inset\",\n transform: \"translateY(0)\",\n transition: \"$fast\",\n },\n \"&:disabled\": {\n cursor: \"not-allowed\",\n opacity: \"$light\",\n },\n \"&:focus-visible\": {\n outline: \"2px solid $border\",\n outlineOffset: \"2px\",\n },\n alignContent: \"center\",\n alignItems: \"center\",\n appearance: \"none\",\n backgroundColor: \"$surface\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$subtle\",\n color: \"$text\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n fontFamily: \"$default\",\n fontSize: \"$default\",\n justifyContent: \"center\",\n lineHeight: \"$default\",\n minHeight: \"$large\",\n padding: \"$smallest $small\",\n phone: {\n minHeight: \"$medium\",\n },\n position: \"relative\",\n\n transition: \"$default\",\n variants: {\n block: {\n true: {\n display: \"block\",\n width: \"100%\",\n },\n },\n loading: {\n true: {\n cursor: \"wait\",\n opacity: \"$light\",\n },\n },\n small: {\n true: {\n fontSize: \"$small\",\n lineHeight: \"$small\",\n minHeight: \"$medium\",\n padding: \"$smallest $small\",\n phone: {\n minHeight: \"$small\",\n },\n },\n },\n theme: {\n danger: {\n \"&:not(:disabled):hover\": {\n boxShadow: \"$medium\",\n opacity: \"$default\",\n transform: \"translateY(-1px)\",\n },\n backgroundColor: \"$red\",\n borderColor: \"$red\",\n color: \"$text\",\n },\n default: {\n \"&:not(:disabled):hover\": {\n backgroundColor: \"$surfaceHover\",\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n boxShadow: \"$default\",\n transform: \"translateY(-1px)\",\n },\n },\n fill: {\n \"&:not(:disabled):hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n boxShadow: \"$medium\",\n transform: \"translateY(-1px)\",\n },\n backgroundColor: \"$surfaceLight\",\n },\n minimal: {\n \"&:not(:disabled):hover\": {\n backgroundColor: \"$surfaceHover\",\n },\n backgroundColor: \"transparent\",\n border: \"none\",\n boxShadow: \"none\",\n },\n solid: {\n \"&:not(:disabled):hover\": {\n boxShadow: \"$medium\",\n transform: \"translateY(-1px)\",\n },\n backgroundColor: \"$text\",\n borderColor: \"$text\",\n boxShadow: \"$default\",\n color: \"$background\",\n },\n success: {\n \"&:not(:disabled):hover\": {\n boxShadow: \"$medium\",\n opacity: \"$default\",\n transform: \"translateY(-1px)\",\n },\n backgroundColor: \"$green\",\n borderColor: \"$green\",\n color: \"$text\",\n },\n warning: {\n \"&:not(:disabled):hover\": {\n boxShadow: \"$medium\",\n opacity: \"$default\",\n transform: \"translateY(-1px)\",\n },\n backgroundColor: \"$orange\",\n borderColor: \"$orange\",\n color: \"$text\",\n },\n },\n },\n verticalAlign: \"middle\",\n whiteSpace: \"nowrap\",\n\n width: \"fit-content\",\n});\n\nexport const ButtonIconStyled = styled(\"span\", {\n display: \"inline-flex\",\n justifyContent: \"center\",\n transition: \"$default\",\n variants: {\n align: {\n left: {\n marginRight: \"$small\",\n },\n right: {\n [`${ButtonStyled}:hover &`]: {\n transform: \"translateX(2px)\",\n },\n marginLeft: \"$small\",\n },\n smallLeft: {\n marginRight: \"$smaller\",\n },\n smallRight: {\n [`${ButtonStyled}:hover &`]: {\n transform: \"translateX(2px)\",\n },\n marginLeft: \"$smaller\",\n },\n },\n },\n\n verticalAlign: \"middle\",\n});\n\nexport const ButtonLoadingStyled = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n inset: 0,\n justifyContent: \"center\",\n position: \"absolute\",\n zIndex: 1,\n});\n\nexport const ButtonNewDotStyled = styled(\"span\", {\n animation: `${pulse} 3s infinite linear`,\n borderRadius: \"$full\",\n height: \"$small\",\n position: \"absolute\",\n right: \"-3px\",\n top: \"-3px\",\n variants: {\n theme: {\n default: {\n backgroundColor: \"$yellow\",\n },\n minimal: {\n backgroundColor: \"$yellow\",\n },\n solid: {\n backgroundColor: \"$yellow\",\n },\n },\n },\n width: \"$small\",\n\n zIndex: 2,\n});\n","import { fadeOut, styled } from \"../../stitches.config\";\n\nexport const BoxStyled = styled(\"article\", {\n backgroundColor: \"$surface\",\n border: \"1px solid $border\",\n borderBottomColor: \"$borderBottom\",\n borderRadius: \"$default\",\n borderTopColor: \"$borderLight\",\n boxShadow: \"$subtle\",\n color: \"$text\",\n display: \"block\",\n height: \"100%\",\n overflow: \"hidden\",\n position: \"relative\",\n transition: \"$default\",\n variants: {\n animation: {\n true: {\n animation: `${fadeOut} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n },\n collapsed: {\n true: {\n \"&::after\": {\n background: \"linear-gradient(to bottom, transparent 0%, $background 100%)\",\n bottom: 0,\n content: \"\",\n height: \"40%\",\n left: 0,\n position: \"absolute\",\n right: 0,\n },\n },\n },\n footer: {\n true: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n },\n },\n hover: {\n true: {\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n boxShadow: \"$medium\",\n transform: \"translateY(-1px)\",\n transition: \"$default\",\n },\n cursor: \"pointer\",\n },\n },\n loading: {\n true: {\n cursor: \"wait\",\n opacity: 0.6,\n },\n },\n padding: {\n default: {\n padding: \"$small $medium\",\n },\n none: {\n padding: 0,\n },\n small: {\n padding: \"$smaller $small\",\n },\n },\n theme: {\n // Color themes apply to entire box - header rgb($surfaceLight) naturally darkens over colors\n blue: {\n backgroundColor: \"$blueLight\",\n },\n border: {\n backgroundColor: \"transparent\",\n boxShadow: \"none\",\n },\n default: {},\n fill: {\n backgroundColor: \"$surfaceLight\",\n },\n green: {\n backgroundColor: \"$greenLight\",\n },\n orange: {\n backgroundColor: \"$orangeLight\",\n },\n pink: {\n backgroundColor: \"$pinkLight\",\n },\n red: {\n backgroundColor: \"$redLight\",\n },\n solid: {\n backgroundColor: \"$text\",\n color: \"$background\",\n },\n violet: {\n backgroundColor: \"$violetLight\",\n },\n yellow: {\n backgroundColor: \"$yellowLight\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const BoxHeaderStyled = styled(\"div\", {\n backgroundColor: \"$surfaceLight\",\n borderBottom: \"1px solid $border\",\n color: \"$text\",\n\n variants: {\n padding: {\n default: {\n padding: \"$small $medium\",\n },\n none: {\n borderBottom: \"none\",\n padding: 0,\n },\n small: {\n padding: \"$small\",\n },\n },\n theme: {\n blue: {\n backgroundColor: \"$blueLight\",\n borderBottomColor: \"$blueDark\",\n },\n // Header always has $surfaceLight bg - it layers nicely over colored boxes\n border: {\n backgroundColor: \"transparent\",\n },\n default: {},\n green: {\n backgroundColor: \"$greenLight\",\n borderBottomColor: \"$greenDark\",\n },\n orange: {\n backgroundColor: \"$orangeLight\",\n borderBottomColor: \"$orangeDark\",\n },\n pink: {\n backgroundColor: \"$pinkLight\",\n borderBottomColor: \"$pinkDark\",\n },\n red: {\n backgroundColor: \"$redLight\",\n borderBottomColor: \"$redDark\",\n },\n solid: {\n backgroundColor: \"$text\",\n borderBottomColor: \"$text\",\n color: \"$background\",\n },\n violet: {\n backgroundColor: \"$violetLight\",\n borderBottomColor: \"$violetDark\",\n },\n yellow: {\n backgroundColor: \"$yellowLight\",\n borderBottomColor: \"$yellowDark\",\n },\n },\n },\n});\n\nexport const BoxImageStyled = styled(\"div\", {\n height: \"100%\",\n width: \"100%\",\n});\n\nexport const BoxFooterStyled = styled(\"div\", {\n backgroundColor: \"$surfaceLight\",\n borderTop: \"1px solid $border\",\n color: \"$text\",\n\n variants: {\n fill: {\n false: {\n backgroundColor: \"transparent\",\n },\n true: {\n backgroundColor: \"$surfaceLight\",\n },\n },\n padding: {\n default: {\n padding: \"$small $medium\",\n },\n none: {\n backgroundColor: \"transparent\",\n borderTop: \"none\",\n padding: 0,\n },\n small: {\n padding: \"$small\",\n },\n },\n },\n});\n\nexport const BoxInnerStyled = styled(\"div\", {\n variants: {\n padding: {\n default: {\n padding: \"$small $medium\",\n },\n none: {\n padding: 0,\n },\n small: {\n padding: \"$smaller $small\",\n },\n },\n },\n});\n\nexport const BoxFlexStyled = styled(\"div\", {\n height: \"100%\",\n position: \"relative\",\n width: \"100%\",\n});\n\nexport const BoxExitStyled = styled(\"div\", {\n position: \"absolute\",\n right: \"$small\",\n top: \"$small\",\n});\n\nexport const BoxLoadingStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$background\",\n display: \"flex\",\n inset: 0,\n justifyContent: \"center\",\n opacity: 0.95,\n position: \"absolute\",\n});\n\nexport const BoxExpanderTrigger = styled(\"div\", {\n bottom: \"$small\",\n display: \"flex\",\n justifyContent: \"center\",\n left: 0,\n position: \"absolute\",\n right: 0,\n\n variants: {\n expanded: {\n true: {\n bottom: \"auto\",\n justifyContent: \"flex-start\",\n padding: \"$medium $medium $small\",\n position: \"relative\",\n },\n },\n },\n});\n\nexport default BoxStyled;\n","import type { JSX } from \"react\";\n\nimport { type IDivider } from \"../../index\";\nimport { DividerStyled } from \"./styles\";\n\nexport default function Divider({ bottom, css, top, ...rest }: IDivider): JSX.Element {\n return (\n <DividerStyled\n aria-orientation=\"horizontal\"\n css={{\n ...(top && {\n marginTop: `$${top}`,\n }),\n ...(bottom && {\n marginBottom: `$${bottom}`,\n }),\n ...css,\n }}\n role=\"separator\"\n {...rest}\n />\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const DividerStyled = styled(\"hr\", {\n backgroundColor: \"transparent\",\n border: \"none\",\n borderBottom: \"1px solid $borderLight\",\n margin: \"$medium 0\",\n padding: 0,\n});\n","import React, { ChangeEvent, forwardRef, useState, type JSX } from \"react\";\nimport toast from \"react-hot-toast\";\n\nimport {\n ArrowRightIcon,\n CheckCircleIcon,\n ClipboardIcon,\n EyeIcon,\n EyeSlashIcon,\n WarningIcon,\n XCircleIcon,\n} from \"../../icons\";\nimport {\n Badge,\n Button,\n Loading,\n useEventListener,\n useBreakpoints,\n Icon,\n type IInput,\n} from \"../../index\";\nimport {\n InputAreaStyled,\n InputCallbackStyled,\n InputFunctionStyled,\n InputStyled,\n InputCoreStyled,\n} from \"./styles\";\n\nconst Input = forwardRef<HTMLInputElement, IInput>(\n (\n {\n copy,\n css,\n customActions,\n disabled,\n error,\n errorMessage,\n id,\n listen,\n loading,\n name,\n onChange,\n placeholder,\n reset,\n resetFunction,\n reveal,\n submit,\n submitFunction,\n submitValid,\n success,\n successMessage,\n type,\n value,\n warning,\n warningMessage,\n width,\n ...rest\n }: IInput,\n ref,\n ): JSX.Element => {\n const { isPhone } = useBreakpoints();\n const [inputValue, setInputValue] = useState((value as string) || \"\");\n const [isCopied, setIsCopied] = useState(false);\n const [isRevealed, setIsRevealed] = useState(false);\n const [isSubmitted, setIsSubmitted] = useState(false);\n\n const isSubmitDisabled = !submitValid || !submitValid(inputValue) || isSubmitted || disabled;\n const isSubmitValid = submitValid && submitValid(inputValue);\n const hasFunctions = loading || submit || copy || reveal || reset || customActions;\n const hasCallback = error || success || warning;\n\n const getTheme = (): \"success\" | \"warning\" | \"danger\" | undefined => {\n if (error) return \"danger\";\n if (success) return \"success\";\n if (warning) return \"warning\";\n\n return undefined;\n };\n\n function handleChange(event: ChangeEvent<HTMLInputElement>): void {\n setInputValue(event.target.value);\n setIsSubmitted(false);\n if (onChange) {\n onChange(event);\n }\n }\n\n function handleCopy(): void {\n if (copy && inputValue) {\n navigator?.clipboard?.writeText(inputValue.toString());\n setIsCopied(true);\n toast(\"Copied to clipboard\");\n setTimeout(() => {\n setIsCopied(false);\n }, 2000);\n } else {\n toast(\"Nothing to copy\");\n }\n }\n\n function handleReveal(): void {\n setIsRevealed(!isRevealed);\n }\n\n function handleReset(): void {\n setInputValue(\"\");\n if (resetFunction) {\n resetFunction();\n }\n }\n\n function handleSubmit(): void {\n if (submitFunction && isSubmitValid) {\n submitFunction(inputValue || \"\");\n setIsSubmitted(true);\n }\n }\n\n useEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (listen && event.key === \"Enter\" && submitFunction && isSubmitValid) {\n handleSubmit();\n }\n });\n\n return (\n <InputStyled\n css={{\n maxWidth: width || \"100%\",\n width: width || \"100%\",\n ...css,\n }}\n disabled={disabled}>\n <InputCoreStyled theme={getTheme()}>\n <InputAreaStyled\n ref={ref}\n aria-busy={loading || undefined}\n aria-describedby={error || success || warning ? `${id || name}-status` : undefined}\n aria-invalid={error || undefined}\n disabled={disabled}\n id={id || name}\n name={name}\n placeholder={placeholder}\n type={isRevealed ? \"text\" : type || \"text\"}\n value={inputValue}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => handleChange(event)}\n {...rest}\n />\n\n {hasFunctions && (\n <InputFunctionStyled>\n {loading && <Loading />}\n\n {customActions}\n\n {copy && (\n <Button\n disabled={isCopied || disabled}\n icon={!isPhone ? <Icon icon={<ClipboardIcon />} /> : undefined}\n small\n onClick={() => handleCopy()}>\n {!isPhone ? \"Copy\" : <Icon icon={<ClipboardIcon />} />}\n </Button>\n )}\n\n {reveal && (\n <Button\n disabled={disabled}\n icon={\n !isPhone ? (\n !isRevealed ? (\n <Icon icon={<EyeIcon />} />\n ) : (\n <Icon icon={<EyeSlashIcon />} />\n )\n ) : undefined\n }\n small\n onClick={() => handleReveal()}>\n {!isPhone ? (\n !isRevealed ? (\n \"Reveal\"\n ) : (\n \"Hide\"\n )\n ) : !isRevealed ? (\n <Icon icon={<EyeIcon />} />\n ) : (\n <Icon icon={<EyeSlashIcon />} />\n )}\n </Button>\n )}\n\n {reset && inputValue && (\n <Button disabled={disabled} small onClick={() => handleReset()}>\n <Icon icon={<XCircleIcon />} />\n </Button>\n )}\n\n {submit && (\n <Button\n disabled={isSubmitDisabled}\n icon={!isPhone ? <Icon icon={<ArrowRightIcon />} /> : undefined}\n iconPosition={!isPhone ? \"right\" : undefined}\n small\n theme={isSubmitValid ? \"solid\" : \"default\"}\n type=\"submit\"\n onClick={() => handleSubmit()}>\n {!isPhone ? submit : <Icon icon={<ArrowRightIcon />} />}\n </Button>\n )}\n </InputFunctionStyled>\n )}\n </InputCoreStyled>\n\n {hasCallback && (\n <InputCallbackStyled aria-live=\"polite\" id={`${id || name}-status`} role=\"status\">\n {error && (\n <Badge icon={<Icon icon={<WarningIcon />} />}>{errorMessage || \"Error\"}</Badge>\n )}\n {success && (\n <Badge icon={<Icon icon={<CheckCircleIcon />} />}>\n {successMessage || \"Success\"}\n </Badge>\n )}\n {warning && (\n <Badge icon={<Icon icon={<WarningIcon />} />}>{warningMessage || \"Warning\"}</Badge>\n )}\n </InputCallbackStyled>\n )}\n </InputStyled>\n );\n },\n);\n\nexport default Input;\n","import React, { useState, type JSX } from \"react\";\nimport { toast } from \"react-hot-toast\";\n\nimport { ClipboardIcon, XCircleIcon } from \"../../icons\";\nimport { Loading, Icon, type IBadge } from \"../../index\";\nimport { BadgeIconStyled, BadgeStyled, BadgeLoadingStyled, BadgeNewDotStyled } from \"./styles\";\n\nexport default function Badge({\n block,\n children,\n closable,\n copy,\n css,\n icon,\n iconPosition,\n inline,\n link,\n loading,\n new: isNew,\n onClick,\n small,\n theme = \"default\",\n ...rest\n}: IBadge): JSX.Element | null {\n const [isOpen, setIsOpen] = useState(true);\n const [isMounted, setIsMounted] = useState(true);\n\n function handleClose(): void {\n setIsOpen(false);\n setTimeout(() => {\n setIsMounted(false);\n }, 150);\n }\n\n function handleCopy(): void {\n if (copy) {\n navigator.clipboard.writeText(copy.toString());\n toast(\"Copied to clipboard\");\n } else {\n toast(\"Nothing to copy\");\n }\n }\n\n if (!isMounted) return null;\n\n const isInteractive = Boolean(link || onClick || copy);\n\n return (\n <BadgeStyled\n animation={!isOpen}\n aria-busy={loading || undefined}\n block={block}\n css={{\n ...(inline && {\n display: \"inline-flex\",\n marginRight: inline === \"auto\" ? \"auto\" : `$${inline}`,\n verticalAlign: \"middle\",\n }),\n ...css,\n }}\n link={isInteractive}\n loading={loading}\n role={isInteractive ? \"button\" : undefined}\n small={small}\n tabIndex={isInteractive ? 0 : undefined}\n theme={theme}\n onClick={copy ? handleCopy : onClick}\n onKeyDown={(e: React.KeyboardEvent): void => {\n if (!isInteractive) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n (e.currentTarget as HTMLElement).click();\n }\n }}\n {...rest}>\n {loading && (\n <BadgeLoadingStyled>\n <Loading />\n </BadgeLoadingStyled>\n )}\n\n {icon && iconPosition !== \"right\" && !copy && (\n <BadgeIconStyled align={small ? \"smallLeft\" : \"left\"}>{icon}</BadgeIconStyled>\n )}\n\n {copy && (\n <BadgeIconStyled align={small ? \"smallLeft\" : \"left\"} hover>\n <Icon icon={<ClipboardIcon />} />\n </BadgeIconStyled>\n )}\n\n {children}\n\n {icon && iconPosition === \"right\" && !closable && !copy && (\n <BadgeIconStyled align={small ? \"smallRight\" : \"right\"}>{icon}</BadgeIconStyled>\n )}\n\n {closable && (\n <BadgeIconStyled\n align={small ? \"smallRight\" : \"right\"}\n hover\n role=\"button\"\n tabIndex={0}\n onClick={(e: React.MouseEvent): void => {\n e.stopPropagation();\n handleClose();\n }}\n onKeyDown={(e: React.KeyboardEvent): void => {\n e.stopPropagation();\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleClose();\n }\n }}>\n <Icon icon={<XCircleIcon />} />\n </BadgeIconStyled>\n )}\n\n {isNew && <BadgeNewDotStyled theme={theme} />}\n </BadgeStyled>\n );\n}\n","import { styled, fadeOut, pulse } from \"../../stitches.config\";\n\nexport const BadgeStyled = styled(\"span\", {\n alignContent: \"center\",\n alignItems: \"center\",\n backgroundColor: \"$surface\",\n border: \"1px solid $border\",\n borderBottomColor: \"$borderBottom\",\n borderRadius: \"$default\",\n borderTopColor: \"$borderLight\",\n boxShadow: \"$subtle\",\n color: \"$text\",\n display: \"inline-flex\",\n fontFamily: \"$heading\",\n fontSize: \"$micro\",\n fontWeight: 600,\n justifyContent: \"center\",\n letterSpacing: \"0.01em\",\n lineHeight: \"1.2\",\n padding: \"$smallest $smaller\",\n position: \"relative\",\n transition: \"$default\",\n variants: {\n animation: {\n true: {\n animation: `${fadeOut} 150ms linear`,\n animationFillMode: \"forwards\",\n },\n },\n block: {\n true: {\n justifyContent: \"initial\",\n width: \"100%\",\n },\n },\n link: {\n true: {\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n cursor: \"pointer\",\n },\n },\n loading: {\n true: {\n cursor: \"wait\",\n opacity: \"$light\",\n },\n },\n small: {\n true: {\n fontSize: \"$micro\",\n padding: \"$smaller $small\",\n },\n },\n theme: {\n blue: {\n backgroundColor: \"$blue\",\n borderColor: \"$blue\",\n color: \"$blueDark\",\n },\n border: {\n backgroundColor: \"transparent\",\n borderColor: \"$border\",\n },\n default: {\n backgroundColor: \"$surface\",\n borderColor: \"$border\",\n color: \"$textMuted\",\n },\n green: {\n backgroundColor: \"$green\",\n borderColor: \"$green\",\n color: \"$greenDark\",\n },\n orange: {\n backgroundColor: \"$orange\",\n borderColor: \"$orange\",\n color: \"$orangeDark\",\n },\n pink: {\n backgroundColor: \"$pink\",\n borderColor: \"$pink\",\n color: \"$pinkDark\",\n },\n red: {\n backgroundColor: \"$red\",\n borderColor: \"$red\",\n color: \"$redDark\",\n },\n solid: {\n backgroundColor: \"$text\",\n borderColor: \"$text\",\n color: \"$background\",\n },\n violet: {\n backgroundColor: \"$violet\",\n borderColor: \"$violet\",\n color: \"$violetDark\",\n },\n yellow: {\n backgroundColor: \"$yellow\",\n borderColor: \"$yellow\",\n color: \"$yellowDark\",\n },\n },\n },\n\n verticalAlign: \"middle\",\n});\n\nexport const BadgeIconStyled = styled(\"span\", {\n color: \"inherit\",\n display: \"inline-flex\",\n variants: {\n align: {\n left: {\n marginRight: \"$small\",\n },\n right: {\n marginLeft: \"$small\",\n },\n smallLeft: {\n marginRight: \"$smaller\",\n },\n smallRight: {\n marginLeft: \"$smaller\",\n },\n },\n hover: {\n true: {\n \"&:hover\": {\n opacity: \"$light\",\n transition: \"$default\",\n },\n cursor: \"pointer\",\n },\n },\n },\n\n verticalAlign: \"middle\",\n});\n\nexport const BadgeLoadingStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$background\",\n display: \"flex\",\n inset: 0,\n justifyContent: \"center\",\n position: \"absolute\",\n});\n\nexport const BadgeNewDotStyled = styled(\"span\", {\n animation: `${pulse} 3s infinite`,\n backgroundColor: \"$text\",\n borderRadius: \"$full\",\n boxShadow: \"0 0 0 $smallest $background\",\n height: \"$small\",\n position: \"absolute\",\n right: \"-$smaller\",\n top: \"-$smaller\",\n variants: {\n theme: {\n blue: {\n backgroundColor: \"$blue\",\n },\n border: {\n backgroundColor: \"$text\",\n },\n default: {\n backgroundColor: \"$text\",\n },\n green: {\n backgroundColor: \"$green\",\n },\n orange: {\n backgroundColor: \"$orange\",\n },\n pink: {\n backgroundColor: \"$pink\",\n },\n red: {\n backgroundColor: \"$red\",\n },\n solid: {\n backgroundColor: \"$yellow\",\n },\n violet: {\n backgroundColor: \"$violet\",\n },\n yellow: {\n backgroundColor: \"$yellow\",\n },\n },\n },\n width: \"$small\",\n\n zIndex: 2,\n});\n","import { RefObject, useEffect, useRef } from \"react\";\n\nexport default function useEventListener<K extends keyof WindowEventMap>(\n eventName: K,\n handler: (event: WindowEventMap[K]) => void,\n element?: RefObject<Window | HTMLElement | null>,\n options?: boolean | AddEventListenerOptions,\n): void {\n const savedHandler = useRef(handler);\n\n useEffect(() => {\n const eventListener = ((event: WindowEventMap[K]) =>\n savedHandler.current(event)) as EventListener;\n\n const targetElement: Window | HTMLElement | null = element?.current || window;\n\n if (!targetElement) return;\n\n savedHandler.current = handler;\n targetElement.addEventListener(eventName, eventListener, options);\n\n return (): void => {\n targetElement.removeEventListener(eventName, eventListener, options);\n };\n }, [eventName, handler, options, element]);\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const InputStyled = styled(\"div\", {\n position: \"relative\",\n variants: {\n disabled: {\n true: {\n cursor: \"not-allowed\",\n opacity: \"$light\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const InputCoreStyled = styled(\"div\", {\n \"&:focus-visible\": {\n outline: 0,\n },\n \"&:focus-within\": {\n borderBottomColor: \"$borderEmphasis\",\n borderLeftColor: \"$borderStrong\",\n borderRightColor: \"$borderStrong\",\n borderTopColor: \"$border\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n alignItems: \"center\",\n backgroundColor: \"$surface\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$subtle\",\n display: \"flex\",\n justifyContent: \"space-between\",\n minHeight: \"$large\",\n transition: \"$default\",\n variants: {\n theme: {\n danger: {\n \"&:focus-within\": {\n borderColor: \"$red\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n borderColor: \"$red\",\n },\n success: {\n \"&:focus-within\": {\n borderColor: \"$green\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n borderColor: \"$green\",\n },\n warning: {\n \"&:focus-within\": {\n borderColor: \"$orange\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n borderColor: \"$orange\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const InputAreaStyled = styled(\"input\", {\n \"&::placeholder\": {\n color: \"$text\",\n opacity: \"$light\",\n },\n \"&:after\": {\n clear: \"both\",\n content: '\"\"',\n },\n appearance: \"none\",\n backgroundColor: \"transparent\",\n border: \"none\",\n color: \"$text\",\n display: \"block\",\n flex: \"1 1 auto\",\n fontFamily: \"$default\",\n fontSize: \"$default\",\n minWidth: 0,\n padding: \"0 $small\",\n phone: {\n fontSize: \"16px !important\",\n },\n});\n\nexport const InputFunctionStyled = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n flexBasis: \"auto\",\n flexDirection: \"row\",\n gap: \"$smaller\",\n justifyContent: \"flex-start\",\n padding: \"0 $small 0 0\",\n});\n\nexport const InputCallbackStyled = styled(\"div\", {\n display: \"block\",\n paddingTop: \"$small\",\n textAlign: \"left\",\n});\n","import {\n ChangeEvent,\n KeyboardEvent,\n forwardRef,\n useCallback,\n useEffect,\n useState,\n type JSX,\n} from \"react\";\nimport toast from \"react-hot-toast\";\n\nimport {\n ClipboardIcon,\n XCircleIcon,\n ArrowRightIcon,\n WarningIcon,\n CheckCircleIcon,\n} from \"../../icons\";\nimport { Badge, Button, Loading, useBreakpoints, Icon, type IField, Stack } from \"../../index\";\nimport {\n FieldStyled,\n FieldAreaStyled,\n FieldFunctionStyled,\n FieldCallbackStyled,\n FieldCoreStyled,\n} from \"./styles\";\n\nconst Field = forwardRef<HTMLTextAreaElement, IField>(\n (\n {\n cancel,\n cancelFunction,\n cols,\n copy,\n css,\n customActions,\n disabled,\n error,\n errorMessage,\n id,\n listen,\n loading,\n name,\n onChange,\n placeholder,\n reset,\n resetFunction,\n rows,\n submit,\n submitFunction,\n submitValid,\n success,\n successMessage,\n value,\n warning,\n warningMessage,\n width,\n ...rest\n }: IField,\n ref,\n ): JSX.Element => {\n useBreakpoints();\n const [inputValue, setInputValue] = useState((value as string) || \"\");\n\n // Sync internal state with value prop changes\n useEffect(() => {\n setInputValue((value as string) || \"\");\n }, [value]);\n const [isCopied, setIsCopied] = useState(false);\n const [isSubmitted, setIsSubmitted] = useState(false);\n\n const isSubmitDisabled = !submitValid || !submitValid(inputValue) || isSubmitted || disabled;\n const isSubmitValid = submitValid && submitValid(inputValue);\n const hasFunctions = loading || submit || copy || reset || cancel || customActions;\n const hasCallback = error || success || warning;\n\n const getTheme = (): \"success\" | \"warning\" | \"danger\" | undefined => {\n if (error) return \"danger\";\n if (success) return \"success\";\n if (warning) return \"warning\";\n\n return undefined;\n };\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLTextAreaElement>): void => {\n setInputValue(event.target.value);\n setIsSubmitted(false);\n if (onChange) {\n onChange(event);\n }\n },\n [onChange],\n );\n\n function handleCopy(): void {\n if (copy && inputValue) {\n navigator?.clipboard?.writeText(inputValue.toString());\n setIsCopied(true);\n toast(\"Copied to clipboard\");\n setTimeout(() => {\n setIsCopied(false);\n }, 2000);\n } else {\n toast(\"Nothing to copy\");\n }\n }\n\n function handleReset(): void {\n setInputValue(\"\");\n if (resetFunction) {\n resetFunction();\n }\n }\n\n const handleSubmit = useCallback(() => {\n if (submitFunction && isSubmitValid) {\n submitFunction(inputValue || \"\");\n setIsSubmitted(true);\n }\n }, [submitFunction, isSubmitValid, inputValue]);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLTextAreaElement>): void => {\n if (listen && event.key === \"Enter\" && submitFunction && isSubmitValid) {\n event.preventDefault();\n handleSubmit();\n }\n },\n [listen, submitFunction, isSubmitValid, handleSubmit],\n );\n\n return (\n <FieldStyled\n css={{\n maxWidth: width || \"100%\",\n width: width || \"100%\",\n ...css,\n }}\n disabled={disabled}>\n <FieldCoreStyled theme={getTheme()}>\n <FieldAreaStyled\n ref={ref}\n aria-busy={loading || undefined}\n aria-describedby={error || success || warning ? `${id || name}-status` : undefined}\n aria-invalid={error || undefined}\n cols={cols}\n disabled={disabled}\n id={id || name}\n name={name}\n placeholder={placeholder}\n rows={rows}\n value={inputValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n {...rest}\n />\n\n {hasFunctions && (\n <FieldFunctionStyled>\n <Stack direction=\"row\" gap=\"small\">\n {loading && <Loading />}\n {customActions}\n \n </Stack>\n <Stack>\n {copy && (\n <Button disabled={isCopied || disabled} small onClick={() => handleCopy()}>\n <Icon icon={<ClipboardIcon />} />\n </Button>\n )}\n\n {reset && inputValue && (\n <Button disabled={disabled} small onClick={() => handleReset()}>\n <Icon icon={<XCircleIcon />} />\n </Button>\n )}\n\n {cancel && (\n <Button disabled={disabled} small onClick={() => cancelFunction?.()}>\n {cancel}\n </Button>\n )}\n\n {submit && (\n <Button\n disabled={isSubmitDisabled}\n icon={<Icon icon={<ArrowRightIcon />} />}\n iconPosition=\"right\"\n small\n theme={isSubmitValid ? \"solid\" : \"default\"}\n type=\"submit\"\n onClick={() => handleSubmit()}>\n {submit}\n </Button>\n )}\n </Stack>\n </FieldFunctionStyled>\n )}\n </FieldCoreStyled>\n\n {hasCallback && (\n <FieldCallbackStyled aria-live=\"polite\" id={`${id || name}-status`} role=\"status\">\n {error && (\n <Badge icon={<Icon icon={<WarningIcon />} />}>{errorMessage || \"Error\"}</Badge>\n )}\n {success && (\n <Badge icon={<Icon icon={<CheckCircleIcon />} />}>\n {successMessage || \"Success\"}\n </Badge>\n )}\n {warning && (\n <Badge icon={<Icon icon={<WarningIcon />} />}>{warningMessage || \"Warning\"}</Badge>\n )}\n </FieldCallbackStyled>\n )}\n </FieldStyled>\n );\n },\n);\n\nexport default Field;\n","import { styled } from \"../../stitches.config\";\n\nexport const FieldStyled = styled(\"div\", {\n position: \"relative\",\n variants: {\n disabled: {\n true: {\n cursor: \"not-allowed\",\n opacity: \"$light\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const FieldCoreStyled = styled(\"div\", {\n \"&:focus-visible\": {\n outline: 0,\n },\n \"&:focus-within\": {\n borderBottomColor: \"$borderEmphasis\",\n borderLeftColor: \"$borderStrong\",\n borderRightColor: \"$borderStrong\",\n borderTopColor: \"$border\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n backgroundColor: \"$surface\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$subtle\",\n display: \"flex\",\n flexDirection: \"column\",\n transition: \"$default\",\n variants: {\n theme: {\n danger: {\n \"&:focus-within\": {\n borderColor: \"$red\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n borderColor: \"$red\",\n },\n success: {\n \"&:focus-within\": {\n borderColor: \"$green\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n borderColor: \"$green\",\n },\n warning: {\n \"&:focus-within\": {\n borderColor: \"$orange\",\n boxShadow: \"$default\",\n },\n \"&:hover\": {\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n },\n borderColor: \"$orange\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const FieldAreaStyled = styled(\"textarea\", {\n \"&::placeholder\": {\n color: \"$textMuted\",\n },\n \"&:after\": {\n clear: \"both\",\n content: '\"\"',\n },\n \"&:focus\": {\n outline: \"none\",\n },\n appearance: \"none\",\n backgroundColor: \"transparent\",\n border: \"none\",\n color: \"$text\",\n display: \"block\",\n fontFamily: \"$default\",\n fontSize: \"$default\",\n lineHeight: \"1.5\",\n minHeight: \"$largest\",\n padding: \"$small $medium\",\n phone: {\n fontSize: \"16px !important\",\n padding: \"$smaller $small\",\n },\n resize: \"vertical\",\n\n width: \"100%\",\n});\n\nexport const FieldFunctionStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$surface\",\n borderTop: \"1px solid $borderLight\",\n display: \"flex\",\n gap: \"$small\",\n justifyContent: \"space-between\",\n padding: \"$small $medium\",\n\n phone: {\n justifyContent: \"flex-start\",\n padding: \"$small\",\n },\n});\n\nexport const FieldCallbackStyled = styled(\"div\", {\n display: \"block\",\n paddingTop: \"$small\",\n textAlign: \"left\",\n});\n","import React, { useRef, useState, type JSX, type FormEvent } from \"react\";\n\nimport { Button, useEventListener, type IForm } from \"../../index\";\nimport { FormStyled } from \"./styles\";\n\nexport default function Form({\n children,\n css,\n disabled,\n id,\n listen,\n loading,\n name,\n submit,\n submitFunction,\n submitValid,\n ...rest\n}: IForm): JSX.Element {\n const [isSubmitted, setIsSubmitted] = useState(false);\n const formRef = useRef<HTMLFormElement | null>(null);\n\n function getFormData(form: HTMLFormElement): Record<string, FormDataEntryValue> {\n const data: Record<string, FormDataEntryValue> = {};\n const fd = new FormData(form);\n\n fd.forEach((value, key) => {\n data[key] = value;\n });\n\n return data;\n }\n\n function isValidNow(): boolean {\n if (!submitValid) return true;\n if (!formRef.current) return false;\n\n return typeof submitValid === \"function\"\n ? submitValid(getFormData(formRef.current))\n : submitValid;\n }\n\n function handleSubmit(formEl: HTMLFormElement): void {\n if ((submitFunction as unknown as { length: number }).length > 0) {\n (submitFunction as (data: Record<string, FormDataEntryValue>) => unknown)(\n getFormData(formEl),\n );\n } else {\n (submitFunction as () => unknown)();\n }\n setIsSubmitted(true);\n }\n\n function onSubmit(event: FormEvent<HTMLFormElement>): void {\n event.preventDefault();\n const formEl = event.currentTarget;\n\n if (!submit || disabled || isSubmitted) return;\n if (!isValidNow()) return;\n handleSubmit(formEl);\n }\n\n useEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (listen && event.key === \"Enter\" && submit && formRef.current && isValidNow()) {\n event.preventDefault();\n handleSubmit(formRef.current);\n }\n });\n\n return (\n <FormStyled\n ref={formRef}\n aria-busy={loading || undefined}\n aria-disabled={disabled || undefined}\n css={css}\n disabled={disabled}\n id={id || name}\n name={name}\n onChange={() => setIsSubmitted(false)}\n onKeyDown={(e: React.KeyboardEvent): void => {\n const { key } = e as unknown as KeyboardEvent;\n\n if (!listen && key === \"Enter\") {\n e.preventDefault();\n }\n }}\n onSubmit={(e: React.FormEvent<HTMLFormElement>): void => onSubmit(e)}\n {...rest}>\n {children}\n\n {submit && (\n <Button\n css={{ marginTop: \"$medium\" }}\n disabled={disabled || isSubmitted || !isValidNow()}\n loading={loading}\n type=\"submit\">\n {submit}\n </Button>\n )}\n {loading && (\n <div\n aria-live=\"polite\"\n role=\"status\"\n style={{\n height: 0,\n overflow: \"hidden\",\n position: \"absolute\",\n width: 0,\n }}>\n Submitting...\n </div>\n )}\n </FormStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const FormStyled = styled(\"form\", {\n variants: {\n disabled: {\n true: {\n cursor: \"not-allowed\",\n opacity: \"$light\",\n },\n },\n },\n width: \"100%\",\n});\n","import dayjs from \"dayjs\";\nimport { useEffect, useState, useMemo, type JSX, type ChangeEvent, type MouseEvent } from \"react\";\nimport toast from \"react-hot-toast\";\n\nimport useDayjs from \"../../hooks/useDayjs\";\nimport { CaretLeftIcon, CaretRightIcon } from \"../../icons\";\nimport { Button, Icon, Popover, type IDatepicker } from \"../../index\";\nimport {\n DatepickerContainer,\n DatepickerDayHeader,\n DatepickerDayHeaderGrid,\n DatepickerDescription,\n DatepickerGrid,\n DatepickerHeader,\n DatepickerSelect,\n} from \"./styles\";\n\nconst DAYS_OF_WEEK = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\nexport default function Datepicker({\n blockedDates = [],\n description,\n endDate,\n maxDate,\n maxLength,\n minDate,\n minLength = 2,\n mode = \"range\",\n onSelection,\n onViewChange,\n startDate,\n timezone,\n trigger,\n triggerCSS,\n wrapperCSS,\n}: IDatepicker): JSX.Element {\n const now = useDayjs(timezone);\n\n const [dates, setDates] = useState({\n endDate: endDate || \"\",\n startDate: startDate || now().format(\"YYYY-MM-DD\"),\n });\n const [viewDate, setViewDate] = useState(startDate || now().format(\"YYYY-MM-DD\"));\n\n const currentMonth = dayjs(viewDate);\n const year = currentMonth.year();\n const month = currentMonth.month();\n const firstDayOfMonth = dayjs(`${year}-${month + 1}-01`).day();\n\n const days = useMemo(\n () =>\n Array.from({ length: currentMonth.daysInMonth() }, (_, i) =>\n dayjs(`${year}-${month + 1}-${i + 1}`).format(\"YYYY-MM-DD\"),\n ),\n [currentMonth, year, month],\n );\n\n const validateSingleDate = (date: string): boolean => {\n const selectedDate = dayjs(date);\n\n if (\n (minDate && selectedDate.isBefore(dayjs(minDate), \"day\")) ||\n (maxDate && selectedDate.isAfter(dayjs(maxDate), \"day\"))\n ) {\n toast.error(\"Selected date is out of range\");\n\n return false;\n }\n\n onSelection({ endDate: date, startDate: date });\n\n return true;\n };\n\n const validateRange = (start: string, end: string): boolean => {\n const startDate = dayjs(start);\n const endDate = dayjs(end);\n let diff = endDate.diff(startDate, \"day\");\n\n const unavailableInRange = blockedDates.filter((unavailableDate) => {\n const unavailable = dayjs(unavailableDate);\n\n return (\n (unavailable.isAfter(startDate, \"day\") && unavailable.isBefore(endDate, \"day\")) ||\n unavailable.isSame(startDate, \"day\") ||\n unavailable.isSame(endDate, \"day\")\n );\n });\n\n if (unavailableInRange.length > 0) {\n toast.error(`Selected range includes unavailable dates: ${unavailableInRange.join(\", \")}`);\n\n return false;\n }\n\n if (endDate.isBefore(startDate)) {\n diff = startDate.diff(endDate, \"day\");\n if (\n (minLength === undefined || diff >= minLength) &&\n (maxLength === undefined || diff <= maxLength)\n ) {\n onSelection({ endDate: start, startDate: end });\n\n return true;\n }\n\n toast.error(`Date range must be between ${minLength ?? 0} and ${maxLength ?? \"∞\"} days`);\n\n return false;\n }\n\n if (minDate && endDate.isBefore(dayjs(minDate), \"day\")) {\n toast.error(`Selected date must be after ${minDate}`);\n\n return false;\n }\n\n if (maxDate && endDate.isAfter(dayjs(maxDate), \"day\")) {\n toast.error(`Selected date must be before ${maxDate}`);\n\n return false;\n }\n\n if (\n (minLength !== undefined && diff < minLength) ||\n (maxLength !== undefined && diff > maxLength)\n ) {\n toast.error(`Date range must be between ${minLength ?? 0} and ${maxLength ?? \"∞\"} days`);\n\n return false;\n }\n\n onSelection({ endDate: end, startDate: start });\n\n return true;\n };\n\n const handleDaySelection = (date: string): void => {\n if (mode === \"single\") {\n if (validateSingleDate(date)) {\n setDates({ endDate: date, startDate: date });\n }\n } else {\n if (!dates.startDate || dates.endDate) {\n setDates({ endDate: \"\", startDate: date });\n } else if (dates.startDate && validateRange(dates.startDate, date)) {\n setDates({ endDate: date, startDate: dates.startDate });\n }\n }\n };\n\n useEffect(() => {\n const initialViewDate = startDate || now().startOf(\"month\").format(\"YYYY-MM-DD\");\n\n setViewDate(initialViewDate);\n\n if (onViewChange) {\n onViewChange({\n endDate: dayjs(initialViewDate).endOf(\"month\").format(\"YYYY-MM-DD\"),\n startDate: initialViewDate,\n });\n }\n }, [now, onViewChange, startDate]);\n\n const isDateSelected = (date: string): boolean =>\n date === dates.startDate || date === dates.endDate;\n\n const isDateInRange = (date: string): boolean => {\n if (mode === \"single\" || !dates.startDate || !dates.endDate) return false;\n\n const dateObj = dayjs(date);\n const start = dayjs(dates.startDate);\n const end = dayjs(dates.endDate);\n\n return (\n (dateObj.isAfter(start, \"day\") && dateObj.isBefore(end, \"day\")) ||\n (dateObj.isAfter(end, \"day\") && dateObj.isBefore(start, \"day\"))\n );\n };\n\n const isDateDisabled = (date: string): boolean => {\n const dateObj = dayjs(date);\n\n return Boolean(\n (minDate && dateObj.isBefore(minDate, \"day\")) ||\n (maxDate && dateObj.isAfter(maxDate, \"day\")) ||\n blockedDates?.includes(date),\n );\n };\n\n const handleMonthChange = (e: ChangeEvent<HTMLSelectElement>): void => {\n const newMonth = parseInt(e.target.value, 10);\n const newViewDate = currentMonth.month(newMonth);\n\n setViewDate(newViewDate.format(\"YYYY-MM-DD\"));\n\n if (onViewChange) {\n onViewChange({\n endDate: newViewDate.endOf(\"month\").format(\"YYYY-MM-DD\"),\n startDate: newViewDate.startOf(\"month\").format(\"YYYY-MM-DD\"),\n });\n }\n };\n\n const handleYearChange = (e: ChangeEvent<HTMLSelectElement>): void => {\n const newYear = parseInt(e.target.value, 10);\n const newViewDate = currentMonth.year(newYear);\n\n setViewDate(newViewDate.format(\"YYYY-MM-DD\"));\n\n if (onViewChange) {\n onViewChange({\n endDate: newViewDate.endOf(\"month\").format(\"YYYY-MM-DD\"),\n startDate: newViewDate.startOf(\"month\").format(\"YYYY-MM-DD\"),\n });\n }\n };\n\n const currentYear = currentMonth.year();\n const currentMonthIndex = currentMonth.month();\n\n // Generate year options (current year -1 to +10 years, or use min/max date constraints)\n const minYear = minDate ? dayjs(minDate).year() : now().subtract(1, \"year\").year();\n const maxYear = maxDate ? dayjs(maxDate).year() : now().add(10, \"year\").year();\n const yearOptions = Array.from({ length: maxYear - minYear + 1 }, (_, i) => minYear + i);\n\n const isPrevDisabled = minDate\n ? currentMonth.subtract(1, \"month\").isBefore(dayjs(minDate), \"month\")\n : false;\n const isNextDisabled = maxDate\n ? currentMonth.add(1, \"month\").isAfter(dayjs(maxDate), \"month\")\n : false;\n\n const handlePrevMonth = (e: MouseEvent): void => {\n e.stopPropagation();\n\n const newViewDate = currentMonth.subtract(1, \"month\");\n\n setViewDate(newViewDate.format(\"YYYY-MM-DD\"));\n\n if (onViewChange) {\n onViewChange({\n endDate: newViewDate.endOf(\"month\").format(\"YYYY-MM-DD\"),\n startDate: newViewDate.startOf(\"month\").format(\"YYYY-MM-DD\"),\n });\n }\n };\n\n const handleNextMonth = (e: MouseEvent): void => {\n e.stopPropagation();\n\n const newViewDate = currentMonth.add(1, \"month\");\n\n setViewDate(newViewDate.format(\"YYYY-MM-DD\"));\n\n if (onViewChange) {\n onViewChange({\n endDate: newViewDate.endOf(\"month\").format(\"YYYY-MM-DD\"),\n startDate: newViewDate.startOf(\"month\").format(\"YYYY-MM-DD\"),\n });\n }\n };\n\n return (\n <Popover\n ariaLabel=\"Select date\"\n trigger={trigger}\n triggerCSS={triggerCSS}\n wrapperCSS={wrapperCSS}>\n <DatepickerContainer>\n {/* Header with month/year navigation */}\n <DatepickerHeader>\n <Button disabled={isPrevDisabled} small theme=\"default\" onClick={handlePrevMonth}>\n <Icon icon={<CaretLeftIcon />} />\n </Button>\n <div\n style={{\n alignItems: \"center\",\n display: \"flex\",\n gap: \"var(--space-smaller)\",\n }}>\n <Button\n css={{ position: \"relative\" }}\n small\n theme=\"default\"\n onClick={(e) => e.stopPropagation()}>\n {currentMonth.format(\"MMM\")}\n <DatepickerSelect\n value={currentMonthIndex}\n onChange={handleMonthChange}\n onClick={(e) => e.stopPropagation()}>\n <option value={0}>Jan</option>\n <option value={1}>Feb</option>\n <option value={2}>Mar</option>\n <option value={3}>Apr</option>\n <option value={4}>May</option>\n <option value={5}>Jun</option>\n <option value={6}>Jul</option>\n <option value={7}>Aug</option>\n <option value={8}>Sep</option>\n <option value={9}>Oct</option>\n <option value={10}>Nov</option>\n <option value={11}>Dec</option>\n </DatepickerSelect>\n </Button>\n <Button\n css={{ position: \"relative\" }}\n small\n theme=\"default\"\n onClick={(e) => e.stopPropagation()}>\n {currentYear}\n <DatepickerSelect\n value={currentYear}\n onChange={handleYearChange}\n onClick={(e) => e.stopPropagation()}>\n {yearOptions.map((year) => (\n <option key={year} value={year}>\n {year}\n </option>\n ))}\n </DatepickerSelect>\n </Button>\n </div>\n <Button disabled={isNextDisabled} small theme=\"default\" onClick={handleNextMonth}>\n <Icon icon={<CaretRightIcon />} />\n </Button>\n </DatepickerHeader>\n\n {description && <DatepickerDescription>{description}</DatepickerDescription>}\n\n {/* Day headers */}\n <DatepickerDayHeaderGrid>\n {DAYS_OF_WEEK.map((day) => (\n <DatepickerDayHeader key={day}>{day}</DatepickerDayHeader>\n ))}\n </DatepickerDayHeaderGrid>\n\n {/* Calendar grid */}\n <DatepickerGrid>\n {Array.from({ length: firstDayOfMonth }).map((_, i) => (\n <div key={`offset-${i}`} />\n ))}\n {days.map((date) => {\n const isSelected = isDateSelected(date);\n const isBetween = isDateInRange(date);\n const isDisabled = isDateDisabled(date);\n const today = now();\n const dateObj = dayjs(date);\n const isToday =\n today.format(\"YYYY-MM-DD\") === date &&\n today.month() === currentMonth.month() &&\n today.year() === currentMonth.year();\n\n return (\n <Button\n key={date}\n block\n css={{\n ...(isBetween &&\n !isSelected && {\n backgroundColor: \"$surfaceLight\",\n }),\n ...(isToday && {\n borderColor: \"$violet\",\n }),\n }}\n disabled={isDisabled}\n small\n theme={isSelected ? \"solid\" : \"minimal\"}\n onClick={(e) => {\n e.stopPropagation();\n if (!isDisabled) {\n handleDaySelection(date);\n }\n }}>\n {dateObj.format(\"D\")}\n </Button>\n );\n })}\n </DatepickerGrid>\n </DatepickerContainer>\n </Popover>\n );\n}\n","import dayjs from \"dayjs\";\nimport timezone from \"dayjs/plugin/timezone\";\nimport utc from \"dayjs/plugin/utc\";\nimport { useMemo } from \"react\";\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n/**\n * Hook that returns a timezone-aware dayjs function\n * @param tz - Optional timezone string (e.g., \"Australia/Melbourne\")\n * @returns A function that returns dayjs instances in the specified timezone\n */\nexport default function useDayjs(tz?: string): () => ReturnType<typeof dayjs> {\n return useMemo(\n () => () => {\n return tz ? dayjs().tz(tz) : dayjs();\n },\n [tz],\n );\n}\n","import React, { useId, type JSX, type MouseEvent } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { useEventListener, useOutsideClick, useFloatingUI, type IPopover } from \"../../index\";\nimport { PopoverStyled, PopoverContentStyled, PopoverTriggerStyled } from \"./styles\";\n\nexport default function Popover({\n ariaLabel,\n children,\n css,\n disabled,\n minimal = false,\n small = false,\n trigger,\n triggerCSS,\n wrapperCSS,\n}: IPopover): JSX.Element {\n const { contentRef, handleClick, handleClose, isMounted, isOpen, triggerRef } = useFloatingUI();\n const reactId = useId();\n const instanceId = `popover-${reactId}`;\n\n // Check if the popover is inside a modal\n const isInsideModal = triggerRef.current?.closest('[role=\"dialog\"]') !== null;\n\n function handleKeyDown(event: KeyboardEvent): void {\n if (event.key === \"Escape\") {\n event.preventDefault();\n handleClose();\n }\n }\n\n function handleTriggerClick(e: MouseEvent): void {\n e.stopPropagation();\n if (!disabled) {\n handleClick();\n }\n }\n\n useOutsideClick(contentRef, () => handleClose());\n useEventListener(\"keydown\", handleKeyDown);\n\n return (\n <PopoverStyled css={wrapperCSS}>\n <PopoverTriggerStyled\n ref={triggerRef}\n aria-controls={`${instanceId}-content`}\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n css={triggerCSS}\n onClick={(e: React.MouseEvent) => handleTriggerClick(e)}>\n {trigger}\n </PopoverTriggerStyled>\n\n {isMounted &&\n createPortal(\n <PopoverContentStyled\n ref={contentRef}\n animation={isOpen}\n aria-label={ariaLabel}\n css={{\n width: \"auto\",\n zIndex: isInsideModal ? \"$modalPopover\" : \"$popover\",\n ...css,\n }}\n data-popover=\"true\"\n id={`${instanceId}-content`}\n minimal={minimal}\n role=\"region\"\n small={small}>\n {typeof children === \"function\" ? children(handleClose) : children}\n </PopoverContentStyled>,\n document.body,\n )}\n </PopoverStyled>\n );\n}\n","import {\n computePosition,\n offset,\n flip,\n shift,\n size,\n autoUpdate,\n limitShift,\n type Strategy,\n type ComputePositionReturn,\n} from \"@floating-ui/dom\";\nimport { useState, useRef, useEffect } from \"react\";\n\nimport type { IUseFloatingUI } from \"../types/hooks\";\n\nexport default function useFloatingUI(): IUseFloatingUI {\n const [isOpen, setIsOpen] = useState(false);\n const [isMounted, setIsMounted] = useState(false);\n\n const triggerRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const cleanupRef = useRef<(() => void) | null>(null);\n\n const updatePosition = (): void => {\n if (!triggerRef.current || !contentRef.current) return;\n\n const strategy: Strategy = \"fixed\";\n\n computePosition(triggerRef.current, contentRef.current, {\n middleware: [\n offset(8),\n flip({\n fallbackPlacements: [\n \"bottom\",\n \"top\",\n \"bottom-start\",\n \"top-start\",\n \"bottom-end\",\n \"top-end\",\n ],\n padding: 8,\n }),\n shift({\n limiter: limitShift(),\n padding: 8,\n }),\n size({\n apply({ availableHeight, elements }) {\n const maxHeight = Math.min(availableHeight - 16, 400);\n\n Object.assign(elements.floating.style, {\n maxHeight: `${maxHeight}px`,\n });\n },\n padding: 8,\n }),\n ],\n placement: \"bottom\",\n strategy,\n }).then(({ x, y }: ComputePositionReturn) => {\n if (!contentRef.current || !triggerRef.current) return;\n\n contentRef.current.style.position = strategy;\n contentRef.current.style.left = `${Math.round(x)}px`;\n contentRef.current.style.top = `${Math.round(y)}px`;\n });\n };\n\n const prepareFloatingElement = (element: HTMLDivElement): void => {\n if (!element) return;\n element.style.position = \"fixed\";\n element.style.top = \"0\";\n element.style.left = \"0\";\n element.style.transform = \"\";\n };\n\n useEffect(() => {\n if (!isMounted || !triggerRef.current || !contentRef.current) {\n if (cleanupRef.current) {\n cleanupRef.current();\n cleanupRef.current = null;\n }\n\n return;\n }\n\n prepareFloatingElement(contentRef.current);\n\n updatePosition();\n\n cleanupRef.current = autoUpdate(triggerRef.current, contentRef.current, updatePosition, {\n ancestorResize: true,\n ancestorScroll: true,\n elementResize: true,\n });\n\n return (): void => {\n if (cleanupRef.current) {\n cleanupRef.current();\n cleanupRef.current = null;\n }\n };\n }, [isMounted]);\n\n useEffect(() => {\n return (): void => {\n if (cleanupRef.current) {\n cleanupRef.current();\n cleanupRef.current = null;\n }\n };\n }, []);\n\n function handleOpen(): void {\n setIsMounted(true);\n setIsOpen(true);\n }\n\n function handleClose(): void {\n setIsOpen(false);\n setTimeout(() => setIsMounted(false), 200);\n }\n\n function handleClick(): void {\n if (isOpen || isMounted) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n\n return {\n contentRef,\n handleClick,\n handleClose,\n isMounted,\n isOpen,\n triggerRef,\n };\n}\n","import { RefObject } from \"react\";\n\nimport { useEventListener } from \"../index\";\n\nexport default function useOutsideClick<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T | null>,\n handler: (event: MouseEvent) => void,\n mouseEvent: \"mousedown\" | \"mouseup\" = \"mousedown\",\n): void {\n useEventListener(mouseEvent, (event) => {\n const el = ref?.current;\n const target = event.target as Node;\n\n // Don't close if click is inside the ref element\n if (!el || el.contains(target)) {\n return;\n }\n\n // Don't close if click is inside ANY Select dropdown, Popover, or Modal dialog\n // This ensures that interactions within these UI elements don't trigger outside clicks\n const targetElement = target as HTMLElement;\n const isInsideSelectDropdown = targetElement.closest?.('[data-select-dropdown=\"true\"]');\n const isInsidePopover = targetElement.closest?.('[data-popover=\"true\"]');\n const isInsideAnyModal = targetElement.closest?.('[data-modal=\"true\"]');\n\n if (isInsideSelectDropdown || isInsidePopover || isInsideAnyModal) {\n return;\n }\n\n handler(event);\n });\n}\n","import { fadeInUp, fadeOutDown, styled } from \"../../stitches.config\";\n\nexport const PopoverStyled = styled(\"div\", {\n display: \"inline-flex\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const PopoverTriggerStyled = styled(\"div\", {\n cursor: \"pointer\",\n display: \"inline-flex\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const PopoverContentStyled = styled(\"div\", {\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n backdropFilter: \"blur(4px)\",\n backgroundColor: \"$surfacePopover\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$medium\",\n overflowY: \"auto\",\n padding: \"$smaller $medium\",\n pointerEvents: \"auto\",\n transformOrigin: \"top center\",\n variants: {\n animation: {\n false: {\n animation: `${fadeOutDown} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n true: {\n animation: `${fadeInUp} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n },\n minimal: {\n true: {\n padding: 0,\n },\n },\n small: {\n false: {\n maxWidth: \"420px\",\n minWidth: \"250px\",\n phone: {\n maxWidth: \"calc(100vw - $large)\",\n },\n },\n true: {\n maxWidth: \"280px\",\n minWidth: \"200px\",\n phone: {\n maxWidth: \"calc(100vw - $large)\",\n },\n },\n },\n },\n width: \"100%\",\n\n willChange: \"transform, opacity\",\n});\n\nexport default PopoverStyled;\n","import { styled } from \"../../stitches.config\";\n\nexport const DatepickerSelect = styled(\"select\", {\n \"&:focus\": {\n borderColor: \"$violet\",\n outline: \"none\",\n },\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n borderColor: \"$borderStrong\",\n },\n appearance: \"none\",\n backgroundColor: \"transparent\",\n border: \"none\",\n bottom: 0,\n color: \"$text\",\n cursor: \"pointer\",\n fontFamily: \"$default\",\n fontSize: \"$default\",\n fontWeight: 600,\n left: 0,\n opacity: 0,\n padding: \"$smallest $small\",\n position: \"absolute\",\n right: 0,\n top: 0,\n width: \"100%\",\n});\n\nexport const DatepickerContainer = styled(\"div\", {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"$medium\",\n minWidth: \"300px\",\n phone: {\n minWidth: \"100%\",\n },\n width: \"100%\",\n});\n\nexport const DatepickerHeader = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n flexWrap: \"nowrap\",\n gap: \"$smaller\",\n justifyContent: \"space-between\",\n whiteSpace: \"nowrap\",\n});\n\nexport const DatepickerDescription = styled(\"div\", {\n color: \"$textMuted\",\n fontSize: \"$small\",\n marginTop: \"-$smaller\",\n});\n\nexport const DatepickerDayHeaderGrid = styled(\"div\", {\n display: \"grid\",\n gap: \"$smaller\",\n gridTemplateColumns: \"repeat(7, 1fr)\",\n marginBottom: \"-$smallest\",\n});\n\nexport const DatepickerDayHeader = styled(\"div\", {\n color: \"$textMuted\",\n fontSize: \"$small\",\n fontWeight: 600,\n textAlign: \"center\",\n});\n\nexport const DatepickerGrid = styled(\"div\", {\n display: \"grid\",\n gap: \"$smaller\",\n gridTemplateColumns: \"repeat(7, 1fr)\",\n});\n","import dayjs from \"dayjs\";\nimport { JSX, useMemo, useState } from \"react\";\n\nimport useDayjs from \"../../hooks/useDayjs\";\nimport { CaretLeftIcon, CaretRightIcon } from \"../../icons\";\nimport { Button, Icon, Popover, Text } from \"../../index\";\nimport { IMonthpicker } from \"../../types/components\";\nimport { MonthGrid, MonthPickerContainer, YearHeader } from \"./styles\";\n\nexport default function Monthpicker({\n initial,\n onSelect,\n timezone,\n trigger,\n triggerCSS,\n wrapperCSS,\n}: IMonthpicker): JSX.Element {\n const now = useDayjs(timezone);\n\n const [selectedYear, setSelectedYear] = useState(() => dayjs(initial || undefined).year());\n\n // Set reasonable year limits (5 years ago to 5 years in the future)\n const minYear = now().subtract(5, \"year\").year();\n const maxYear = now().add(5, \"year\").year();\n\n const months = useMemo(() => {\n const monthNames = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ];\n\n return monthNames.map((name, index) => ({\n name,\n value: now().year(selectedYear).month(index).format(\"YYYY-MM\"),\n }));\n }, [now, selectedYear]);\n\n const canGoPrev = selectedYear > minYear;\n const canGoNext = selectedYear < maxYear;\n\n return (\n <Popover\n ariaLabel=\"Select month\"\n trigger={trigger}\n triggerCSS={triggerCSS}\n wrapperCSS={wrapperCSS}>\n <MonthPickerContainer>\n {/* Year navigation */}\n <YearHeader>\n <Button\n disabled={!canGoPrev}\n small\n theme=\"default\"\n onClick={() => setSelectedYear((prev) => prev - 1)}>\n <Icon icon={<CaretLeftIcon />} />\n </Button>\n <Text as=\"h6\">{selectedYear}</Text>\n <Button\n disabled={!canGoNext}\n small\n theme=\"default\"\n onClick={() => setSelectedYear((prev) => prev + 1)}>\n <Icon icon={<CaretRightIcon />} />\n </Button>\n </YearHeader>\n\n {/* Month grid */}\n <MonthGrid>\n {months.map((month) => {\n const isSelected = initial === month.value;\n const isCurrent = now().format(\"YYYY-MM\") === month.value;\n\n return (\n <Button\n key={month.value}\n block\n css={{\n ...(isCurrent && {\n borderColor: \"$violet\",\n }),\n }}\n small\n theme={isSelected ? \"solid\" : \"default\"}\n onClick={() => onSelect(month.value)}>\n {month.name}\n </Button>\n );\n })}\n </MonthGrid>\n </MonthPickerContainer>\n </Popover>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const MonthPickerContainer = styled(\"div\", {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"$medium\",\n width: \"100%\",\n});\n\nexport const YearHeader = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n gap: \"$medium\",\n justifyContent: \"space-between\",\n});\n\nexport const MonthGrid = styled(\"div\", {\n display: \"grid\",\n gap: \"$small\",\n gridTemplateColumns: \"repeat(3, 1fr)\",\n});\n","import dayjs from \"dayjs\";\nimport { type JSX, useMemo } from \"react\";\n\nimport useCalendar from \"../../hooks/useCalendar\";\nimport useDayjs from \"../../hooks/useDayjs\";\nimport { Badge, Button, Popover, Stack, Text, type ICalendar } from \"../../index\";\nimport {\n CalendarStyled,\n CalendarGridStyled,\n CalendarHeaderRowStyled,\n CalendarHeaderCellStyled,\n CalendarWeekRowStyled,\n CalendarDayCellStyled,\n CalendarBadgeOverlayStyled,\n CalendarBookingBadgeWrapperStyled,\n CalendarBookingBadgeStyled,\n} from \"./styles\";\n\nexport default function Calendar({\n entries,\n getOtaLogo,\n month,\n onAvailableSelection,\n onBlockSelection,\n onBookingSelection,\n onEventSelection,\n selectedDates,\n timezone,\n}: ICalendar): JSX.Element {\n const now = useDayjs(timezone);\n const today = now();\n\n const entriesByDate = useMemo(() => {\n return entries.reduce(\n (acc, entry) => {\n acc[entry.day] = entry;\n\n return acc;\n },\n {} as Record<string, ICalendar[\"entries\"][number]>,\n );\n }, [entries]);\n\n const { getBadgesForWeek, getDayData, weeks } = useCalendar({\n entries: entriesByDate,\n month,\n timezone,\n });\n\n const getBookingTheme = (\n checkInDate: string,\n checkOutDate: string,\n ): \"violet\" | \"green\" | \"blue\" => {\n const checkIn = dayjs(checkInDate);\n const checkOut = dayjs(checkOutDate);\n\n if (checkOut.isBefore(today, \"day\")) return \"violet\";\n\n if (\n (today.isSame(checkIn, \"day\") || today.isAfter(checkIn, \"day\")) &&\n (today.isSame(checkOut, \"day\") || today.isBefore(checkOut, \"day\"))\n ) {\n return \"green\";\n }\n\n return \"blue\";\n };\n\n const getBookingPosition = (\n isCheckIn: boolean,\n isCheckOut: boolean,\n isSameDayTurnover: boolean,\n ): \"checkin\" | \"checkout\" | \"middle\" | \"single\" | undefined => {\n if (isSameDayTurnover) return \"single\";\n if (isCheckIn && isCheckOut) return \"single\";\n if (isCheckIn) return \"checkin\";\n if (isCheckOut) return \"checkout\";\n\n return \"middle\";\n };\n\n const handleDayClick = (date: string, data: ICalendar[\"entries\"][number] | undefined): void => {\n if (data?.is_blocked) {\n onBlockSelection?.(date, data);\n } else if (data?.is_available) {\n onAvailableSelection?.(date, data);\n }\n };\n\n return (\n <CalendarStyled>\n <CalendarHeaderRowStyled>\n {[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"].map((day) => (\n <CalendarHeaderCellStyled key={day}>{day}</CalendarHeaderCellStyled>\n ))}\n </CalendarHeaderRowStyled>\n\n <CalendarGridStyled>\n {weeks.map((week, weekIndex) => {\n const { bookingBadges } = getBadgesForWeek(week, weekIndex);\n\n return (\n <div key={`week-wrapper-${weekIndex}`} style={{ position: \"relative\" }}>\n <CalendarWeekRowStyled>\n {week.map((date, dayIndex) => {\n if (!date) {\n return <CalendarDayCellStyled key={`empty-${weekIndex}-${dayIndex}`} empty />;\n }\n\n const { dateStr, dayData, isToday } = getDayData(date);\n const hasActiveBooking =\n dayData?.booking_details && dayData.booking_details.length > 0;\n const isCheckOutOnly =\n hasActiveBooking && dayData.has_check_out && !dayData.has_check_in;\n const showPrice = !hasActiveBooking || isCheckOutOnly;\n const eventCount = dayData?.events?.length || 0;\n const isSelected = selectedDates?.has(dateStr);\n\n return (\n <CalendarDayCellStyled\n key={dateStr}\n blocked={dayData?.is_blocked}\n selected={isSelected}\n today={isToday}\n onClick={() => handleDayClick(dateStr, dayData)}>\n {dayData?.is_blocked ? (\n <Stack gap=\"medium\">\n <Stack direction=\"row\" justify=\"space-between\">\n <Text as=\"h6\">{date.date()}</Text>\n <Badge small>Blocked</Badge>\n </Stack>\n {dayData.blocked_reason && (\n <Text\n as=\"small\"\n css={{ fontSize: \"$micro\", textAlign: \"center\" }}\n muted\n top=\"smaller\"\n truncate={2}>\n {dayData.blocked_reason}\n </Text>\n )}\n </Stack>\n ) : (\n <Stack gap=\"medium\">\n <Stack direction=\"row\" justify=\"space-between\">\n <Stack align=\"center\" direction=\"row\" gap=\"small\">\n <Text as=\"h6\">{date.date()}</Text>\n {eventCount > 0 && onEventSelection && (\n <span\n role=\"button\"\n style={{ display: \"inline-flex\" }}\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.stopPropagation();\n }\n }}>\n <Popover\n small\n trigger={\n <Badge css={{ cursor: \"pointer\" }} small>\n {eventCount}\n </Badge>\n }>\n <Stack gap=\"medium\">\n {dayData?.events?.map((event) => {\n const truncatedTitle =\n event.title.length > 50\n ? `${event.title.substring(0, 50)}...`\n : event.title;\n\n return (\n <Button\n key={event.event_id}\n block\n onClick={(e) => {\n e.stopPropagation();\n onEventSelection(event);\n }}>\n {truncatedTitle}\n </Button>\n );\n })}\n </Stack>\n </Popover>\n </span>\n )}\n </Stack>\n {dayData?.rate && showPrice ? (\n <Text as=\"small\" muted>\n ${dayData.rate}\n </Text>\n ) : null}\n </Stack>\n </Stack>\n )}\n </CalendarDayCellStyled>\n );\n })}\n </CalendarWeekRowStyled>\n\n <CalendarBadgeOverlayStyled>\n {bookingBadges.map((badge) => {\n const bookingTheme = getBookingTheme(\n badge.booking.check_in_date,\n badge.booking.check_out_date,\n );\n const badgePosition = getBookingPosition(\n badge.isCheckIn,\n badge.isCheckOut,\n badge.isSameDayTurnover,\n );\n\n return (\n <CalendarBookingBadgeWrapperStyled\n key={`booking-${badge.bookingId}`}\n css={{\n left: badge.position.left,\n width: badge.position.width,\n }}>\n <CalendarBookingBadgeStyled\n bookingTheme={bookingTheme}\n css={{\n cursor: onBookingSelection ? \"pointer\" : \"default\",\n width: \"100%\",\n }}\n icon={\n badge.showName && badge.booking.ota_name\n ? getOtaLogo?.(badge.booking.ota_name)\n : undefined\n }\n position={badgePosition}\n small\n onClick={(e) => {\n e.stopPropagation();\n onBookingSelection?.(badge.booking);\n }}>\n {badge.showName ? badge.booking.guest_name : \"\\u00A0\"}\n </CalendarBookingBadgeStyled>\n </CalendarBookingBadgeWrapperStyled>\n );\n })}\n </CalendarBadgeOverlayStyled>\n </div>\n );\n })}\n </CalendarGridStyled>\n </CalendarStyled>\n );\n}\n\nCalendar.displayName = \"Calendar\";\n","import dayjs, { type Dayjs } from \"dayjs\";\nimport { useMemo } from \"react\";\n\nimport type { ICalendar } from \"../types/components\";\nimport type { IUseCalendar } from \"../types/hooks\";\n\nimport useDayjs from \"./useDayjs\";\n\ntype BookingBadge = IUseCalendar[\"getBadgesForWeek\"] extends (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...args: any[]\n) => { bookingBadges: infer B }\n ? B extends Array<infer Item>\n ? Item\n : never\n : never;\n\ninterface UseCalendarProps {\n entries: Record<string, ICalendar[\"entries\"][number]>;\n month: string;\n timezone?: string;\n}\n\nexport default function useCalendar({ entries, month, timezone }: UseCalendarProps): IUseCalendar {\n const now = useDayjs(timezone);\n\n const weeks = useMemo(() => {\n const monthDate = dayjs(month, \"YYYY-MM\");\n const startOfMonth = monthDate.startOf(\"month\");\n const startDay = startOfMonth.day();\n const daysInMonth = monthDate.daysInMonth();\n\n const days: Array<Dayjs | null> = [];\n\n // Add empty cells for days before the month starts\n for (let i = 0; i < startDay; i++) {\n days.push(null);\n }\n\n // Add all days in the month\n for (let i = 1; i <= daysInMonth; i++) {\n days.push(monthDate.date(i));\n }\n\n // Pad the end to complete the last week (ensure we have a full 7-day row)\n const remainingDays = days.length % 7;\n\n if (remainingDays > 0) {\n for (let i = 0; i < 7 - remainingDays; i++) {\n days.push(null);\n }\n }\n\n const weeksArray: Array<Array<Dayjs | null>> = [];\n\n for (let i = 0; i < days.length; i += 7) {\n weeksArray.push(days.slice(i, i + 7));\n }\n\n return weeksArray;\n }, [month]);\n\n const getBadgePosition = (\n start: number,\n length: number,\n isCheckIn: boolean,\n isCheckOut: boolean,\n ): { left: string; width: string } => {\n const dayWidth = 100 / 7;\n const gap = 0.5; // Gap between checkout and check-in\n\n let startPercent = start * dayWidth;\n let widthPercent = length * dayWidth;\n\n // Adjust for check-in: start at 1/3 into the first day, plus half the gap\n if (isCheckIn) {\n startPercent += dayWidth / 3 + gap;\n widthPercent -= dayWidth / 3 + gap;\n }\n\n // Adjust for check-out: end at 1/3 of the last day, minus half the gap\n if (isCheckOut) {\n widthPercent -= (dayWidth * 2) / 3 + gap;\n }\n\n return {\n left: `${startPercent}%`,\n width: `${widthPercent}%`,\n };\n };\n\n const getBookingBadges = (week: Array<Dayjs | null>, weekIndex: number): BookingBadge[] => {\n const badges: BookingBadge[] = [];\n const processedBookings = new Set<string>();\n\n week.forEach((date, dayIndex) => {\n if (!date) return;\n\n const dateStr = date.format(\"YYYY-MM-DD\");\n const dayData = entries[dateStr];\n\n if (dayData?.booking_details) {\n dayData.booking_details.forEach((booking) => {\n // Use database id (UUID) for tracking processed bookings\n if (processedBookings.has(booking.id)) return;\n\n const bookingStart = dayjs(booking.check_in_date);\n const bookingEnd = dayjs(booking.check_out_date);\n\n const firstVisibleDay = week.findIndex((d) => {\n if (!d) return false;\n\n return (\n (d.isSame(bookingStart, \"day\") || d.isAfter(bookingStart, \"day\")) &&\n (d.isSame(bookingEnd, \"day\") || d.isBefore(bookingEnd, \"day\"))\n );\n });\n\n if (firstVisibleDay !== dayIndex) return;\n\n const startIndex = dayIndex;\n let endIndex = week.length - 1;\n\n for (let i = startIndex; i < week.length; i++) {\n const d = week[i];\n\n // Break if we hit a null day (end of month padding)\n if (!d) {\n endIndex = i - 1;\n break;\n }\n\n if (d.isAfter(bookingEnd, \"day\")) {\n endIndex = i - 1;\n break;\n }\n }\n\n const length = endIndex - startIndex + 1;\n const firstDayIndex = startIndex;\n const lastDayIndex = endIndex;\n\n const isCheckInDay = week[firstDayIndex]?.isSame(bookingStart, \"day\") ?? false;\n const isCheckOutDay = week[lastDayIndex]?.isSame(bookingEnd, \"day\") ?? false;\n const isSameDayTurnover = isCheckInDay && isCheckOutDay;\n\n const position = getBadgePosition(startIndex, length, isCheckInDay, isCheckOutDay);\n const showName = week[firstDayIndex]?.isSame(bookingStart, \"day\") || weekIndex === 0;\n\n let offset: \"checkin\" | \"checkout\" | \"full\" = \"full\";\n\n if (isCheckInDay && !isCheckOutDay) {\n offset = \"checkin\";\n } else if (isCheckOutDay && !isCheckInDay) {\n offset = \"checkout\";\n } else if (isSameDayTurnover) {\n offset = \"full\";\n }\n\n processedBookings.add(booking.id);\n\n badges.push({\n booking,\n bookingId: booking.id, // Use database id (UUID) instead of booking_id\n firstDayIndex,\n isCheckIn: isCheckInDay,\n isCheckOut: isCheckOutDay,\n isSameDayTurnover,\n length,\n offset,\n position,\n showName,\n weekIndex,\n });\n });\n }\n });\n\n return badges;\n };\n\n const getBadgesForWeek: IUseCalendar[\"getBadgesForWeek\"] = (week, weekIndex) => {\n return {\n bookingBadges: getBookingBadges(week, weekIndex),\n };\n };\n\n const getDayData: IUseCalendar[\"getDayData\"] = (date) => {\n const dateStr = date.format(\"YYYY-MM-DD\");\n const dayData = entries[dateStr];\n const isToday = date.isSame(now(), \"day\");\n\n return { dateStr, dayData, isToday };\n };\n\n return {\n getBadgesForWeek,\n getDayData,\n weeks,\n };\n}\n","import { styled } from \"../../stitches.config\";\nimport Badge from \"../Badge\";\n\nexport const CalendarStyled = styled(\"div\", {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n});\n\nexport const CalendarHeaderRowStyled = styled(\"div\", {\n borderBottom: \"1px solid $border\",\n display: \"grid\",\n gridTemplateColumns: \"repeat(7, 1fr)\",\n});\n\nexport const CalendarHeaderCellStyled = styled(\"div\", {\n fontSize: \"$micro\",\n padding: \"$smaller\",\n textAlign: \"center\",\n});\n\nexport const CalendarGridStyled = styled(\"div\", {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n});\n\nexport const CalendarWeekRowStyled = styled(\"div\", {\n \"&:last-child\": {\n borderBottom: \"none\",\n },\n borderBottom: \"1px solid $border\",\n display: \"grid\",\n gridTemplateColumns: \"repeat(7, 1fr)\",\n position: \"relative\",\n});\n\nexport const CalendarDayCellStyled = styled(\"div\", {\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n },\n \"&:last-child\": {\n borderRight: \"none\",\n },\n borderRight: \"1px solid $border\",\n cursor: \"pointer\",\n display: \"flex\",\n flexDirection: \"column\",\n minHeight: \"110px\",\n padding: \"$small\",\n position: \"relative\",\n transition: \"background-color 150ms ease\",\n\n variants: {\n blocked: {\n true: {\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n },\n backgroundColor: \"$surfaceHover\",\n },\n },\n empty: {\n true: {\n \"&:hover\": {\n backgroundColor: \"$surfaceLight\",\n },\n backgroundColor: \"$surfaceLight\",\n cursor: \"default\",\n },\n },\n selected: {\n true: {\n \"&:hover\": {\n backgroundColor: \"$surfaceLight\",\n },\n backgroundColor: \"$surfaceHover\",\n boxShadow: \"$medium\",\n },\n },\n today: {\n true: {\n \"&:hover\": {\n backgroundColor: \"$surfaceLight\",\n },\n backgroundColor: \"$surfaceLight\",\n },\n },\n },\n});\n\nexport const CalendarBadgeOverlayStyled = styled(\"div\", {\n inset: 0,\n pointerEvents: \"none\",\n position: \"absolute\",\n zIndex: 1,\n});\n\nexport const CalendarBookingBadgeWrapperStyled = styled(\"div\", {\n alignItems: \"flex-end\",\n bottom: \"$medium\",\n display: \"flex\",\n pointerEvents: \"auto\",\n position: \"absolute\",\n});\n\nexport const CalendarBookingBadgeStyled = styled(Badge, {\n alignItems: \"center\",\n display: \"flex\",\n height: \"40px\",\n justifyContent: \"center\",\n transition: \"background-color 150ms ease, border-color 150ms ease\",\n\n variants: {\n bookingTheme: {\n blue: {\n \"&:hover\": {\n backgroundColor: \"$blueDark\",\n color: \"$background\",\n },\n backgroundColor: \"$blue\",\n borderColor: \"$blueLight\",\n color: \"$blueDark\",\n },\n green: {\n \"&:hover\": {\n backgroundColor: \"$greenDark\",\n color: \"$background\",\n },\n backgroundColor: \"$green\",\n borderColor: \"$greenLight\",\n color: \"$greenDark\",\n },\n violet: {\n \"&:hover\": {\n backgroundColor: \"$violetDark\",\n color: \"$background\",\n },\n backgroundColor: \"$violet\",\n borderColor: \"$violetLight\",\n color: \"$violetDark\",\n },\n },\n position: {\n checkin: {\n borderBottomLeftRadius: \"$default\",\n borderBottomRightRadius: 0,\n borderTopLeftRadius: \"$default\",\n borderTopRightRadius: 0,\n },\n checkout: {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: \"$default\",\n borderTopLeftRadius: 0,\n borderTopRightRadius: \"$default\",\n },\n middle: {\n borderRadius: 0,\n },\n single: {\n borderRadius: \"$default\",\n },\n },\n },\n});\n","import React, { useEffect, useId, useState, type JSX } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { XCircleIcon } from \"../../icons\";\nimport { Button, useEventListener, useOutsideClick, useModal, Icon, type IMenu } from \"../../index\";\nimport {\n MenuGroupStyled,\n MenuItemStyled,\n MenuItemContentStyled,\n MenuItemIconStyled,\n MenuStyled,\n MenuTriggerStyled,\n MenuContentStyled,\n MenuHeaderStyled,\n MenuOverlayStyled,\n} from \"./styles\";\n\nexport default function Menu({\n ariaLabel,\n children,\n css,\n initial,\n logo,\n onSelection,\n options,\n trigger,\n triggerCSS,\n wrapperCSS,\n}: IMenu): JSX.Element {\n const reactId = useId();\n const instanceId = `menu-${reactId}`;\n\n const [focused, setFocused] = useState(\"\");\n\n const menu = useModal();\n\n function handleClick(): void {\n menu.handleClick();\n }\n\n function handleClose(): void {\n setFocused(\"\");\n menu.handleClose();\n }\n\n function handleSelection(value: string, label: string): void {\n if (onSelection) {\n onSelection(value, label);\n }\n handleClose();\n }\n\n function handleKeyDown(event: KeyboardEvent): void {\n if (!menu.isOpen) return;\n\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n const index = options.findIndex((option) => option.value === focused);\n\n if (index < options.length - 1) {\n setFocused(options[index + 1].value);\n }\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n const index = options.findIndex((option) => option.value === focused);\n\n if (index > 0) {\n setFocused(options[index - 1].value);\n }\n }\n\n if (event.key === \"Enter\") {\n event.preventDefault();\n const index = options.findIndex((option) => option.value === focused);\n\n if (index >= 0) {\n handleSelection(options[index].value, options[index].label);\n }\n }\n }\n\n function handleItemMouseOver(value: string): void {\n setFocused(value);\n }\n\n useEffect(() => {\n if (menu.isOpen && menu.modalRef.current) {\n menu.modalRef.current.focus();\n } else {\n setFocused(\"\");\n }\n }, [menu.isOpen, menu.modalRef]);\n\n useEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n handleClose();\n }\n });\n\n useEventListener(\"keydown\", handleKeyDown, menu.modalRef);\n\n useOutsideClick(menu.modalRef, () => handleClose());\n\n return (\n <MenuStyled css={wrapperCSS}>\n <MenuTriggerStyled\n aria-controls={`${instanceId}-content`}\n aria-expanded={menu.isOpen}\n aria-haspopup=\"menu\"\n css={triggerCSS}\n onClick={(e: React.MouseEvent): void => {\n e.stopPropagation();\n handleClick();\n }}>\n {trigger}\n </MenuTriggerStyled>\n\n {menu.isMounted &&\n createPortal(\n <MenuOverlayStyled animation={menu.isOpen}>\n <MenuGroupStyled\n ref={menu.modalRef}\n animation={menu.isOpen}\n aria-label={ariaLabel || \"Menu\"}\n css={css}\n id={`${instanceId}-content`}\n role=\"menu\"\n tabIndex={-1}>\n <MenuHeaderStyled>\n {logo && <div>{logo}</div>}\n <Button\n icon={<Icon icon={<XCircleIcon />} />}\n small\n theme=\"minimal\"\n onClick={() => handleClose()}>\n Close\n </Button>\n </MenuHeaderStyled>\n\n {options.map((option) => (\n <MenuItemStyled\n key={option.value}\n aria-checked={initial === option.value || undefined}\n focused={option.value === focused}\n role=\"menuitemradio\"\n selected={initial === option.value}\n onClick={() => handleSelection(option.value, option.label)}\n onMouseOver={() => handleItemMouseOver(option.value)}>\n <MenuItemContentStyled>\n {option.icon && option.iconPosition === \"left\" && (\n <MenuItemIconStyled align=\"left\">{option.icon}</MenuItemIconStyled>\n )}\n {option.label}\n {option.icon && option.iconPosition !== \"left\" && (\n <MenuItemIconStyled align=\"right\">{option.icon}</MenuItemIconStyled>\n )}\n </MenuItemContentStyled>\n </MenuItemStyled>\n ))}\n\n {children && (\n <MenuContentStyled>\n {typeof children === \"function\" ? children(handleClose) : children}\n </MenuContentStyled>\n )}\n </MenuGroupStyled>\n </MenuOverlayStyled>,\n document.body,\n )}\n </MenuStyled>\n );\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport type { IUseModal } from \"../types/hooks\";\n\nexport default function useModal({\n animationDuration = 200,\n isOpen: externalIsOpen,\n onClose: externalOnClose,\n preventBodyScroll = true,\n}: {\n animationDuration?: number;\n isOpen?: boolean;\n onClose?: () => void;\n preventBodyScroll?: boolean;\n} = {}): IUseModal {\n const [internalIsOpen, setInternalIsOpen] = useState(false);\n const [isMounted, setIsMounted] = useState(false);\n\n // Use external state if provided, otherwise use internal state\n const isOpen = externalIsOpen !== undefined ? externalIsOpen : internalIsOpen;\n const isControlled = externalIsOpen !== undefined;\n\n const modalRef = useRef<HTMLDivElement>(null);\n\n // Modal functions\n function handleOpen(): void {\n if (isControlled) {\n // In controlled mode, external state controls isOpen\n setIsMounted(true);\n } else {\n setInternalIsOpen(true);\n setIsMounted(true);\n }\n }\n\n const handleClose = useCallback((): void => {\n if (isControlled) {\n // In controlled mode, call external onClose\n setIsMounted(false);\n externalOnClose?.();\n } else {\n setInternalIsOpen(false);\n setTimeout(() => {\n setIsMounted(false);\n externalOnClose?.();\n }, animationDuration);\n }\n }, [isControlled, externalOnClose, animationDuration]);\n\n function handleClick(): void {\n if (isOpen || isMounted) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n\n // In controlled mode, sync isMounted with isOpen\n useEffect(() => {\n if (isControlled) {\n setIsMounted(externalIsOpen ?? false);\n }\n }, [isControlled, externalIsOpen]);\n\n // Clean scroll lock\n useEffect(() => {\n if (!preventBodyScroll || !isMounted) return;\n\n const originalOverflow = document.body.style.overflow;\n const originalPaddingRight = document.body.style.paddingRight;\n const scrollBarWidth = window.innerWidth - document.documentElement.clientWidth;\n\n document.body.style.overflow = \"hidden\";\n if (scrollBarWidth > 0) {\n document.body.style.paddingRight = `${scrollBarWidth}px`;\n }\n\n // iOS momentum scrolling prevention\n const preventScroll = (e: TouchEvent): void => {\n const target = e.target as Element;\n\n if (modalRef?.current && modalRef.current.contains(target)) {\n return;\n }\n\n e.preventDefault();\n };\n\n const isTouch = \"ontouchstart\" in window;\n\n if (isTouch) {\n document.addEventListener(\"touchmove\", preventScroll, { passive: false });\n }\n\n return (): void => {\n document.body.style.overflow = originalOverflow;\n document.body.style.paddingRight = originalPaddingRight;\n if (isTouch) {\n document.removeEventListener(\"touchmove\", preventScroll);\n }\n };\n }, [isMounted, preventBodyScroll]);\n\n // Keyboard handling\n useEffect(() => {\n if (!isMounted) return;\n\n const handleKeyDown = (e: KeyboardEvent): void => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n handleClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n\n return (): void => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isMounted, handleClose]);\n\n return {\n handleClick,\n handleClose,\n handleOpen,\n isMounted,\n isOpen,\n modalRef,\n };\n}\n","import { fadeIn, fadeOut, slideInScale, slideOutScale, styled } from \"../../stitches.config\";\n\nconst overlayBase = {\n alignItems: \"center\",\n backdropFilter: \"blur(2px)\",\n backgroundColor: \"$overlay\",\n display: \"flex\",\n dynamicViewport: { property: \"height\", unit: \"vh\", value: \"100\" },\n inset: 0,\n justifyContent: \"center\",\n overflow: \"hidden\",\n pointerEvents: \"auto\",\n position: \"fixed\",\n transition: \"$default\",\n variants: {\n animation: {\n false: {\n animation: `${fadeOut} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n true: {\n animation: `${fadeIn} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n },\n },\n} as const;\n\nconst dialogContainerBase = {\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n backgroundColor: \"$surface\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$largest\",\n dynamicViewport: { property: \"maxHeight\", unit: \"vh\", value: \"80\" },\n maxWidth: \"90%\",\n overflow: \"hidden\",\n overflowY: \"auto\",\n phone: {\n dynamicViewport: { property: \"maxHeight\", unit: \"vh\", value: \"90\" },\n maxWidth: \"95%\",\n },\n\n position: \"relative\",\n variants: {\n animation: {\n false: {\n animation: `${slideOutScale} 200ms ease-out`,\n animationFillMode: \"forwards\",\n },\n true: {\n animation: `${slideInScale} 200ms ease-out`,\n animationFillMode: \"forwards\",\n },\n },\n },\n width: \"100%\",\n} as const;\n\nexport const MenuStyled = styled(\"div\", {\n display: \"inline-flex\",\n height: \"100%\",\n verticalAlign: \"middle\",\n});\n\nexport const MenuTriggerStyled = styled(\"div\", {\n cursor: \"pointer\",\n display: \"inline-flex\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const MenuOverlayStyled = styled(\"div\", {\n ...overlayBase,\n zIndex: \"$menu\",\n});\n\nexport const MenuGroupStyled = styled(\"div\", {\n ...dialogContainerBase,\n boxShadow: \"$largest\",\n maxWidth: \"420px\",\n padding: \"$smaller\",\n});\n\nexport const MenuItemStyled = styled(\"div\", {\n \"&:active\": {\n boxShadow: \"$inset\",\n transform: \"translateY(0)\",\n transition: \"$fast\",\n },\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n boxShadow: \"$default\",\n },\n alignItems: \"center\",\n backgroundColor: \"$surface\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$small\",\n borderTopColor: \"$border\",\n boxShadow: \"$subtle\",\n color: \"$text\",\n cursor: \"pointer\",\n display: \"flex\",\n fontFamily: \"$heading\",\n fontSize: \"$default\",\n fontWeight: 600,\n justifyContent: \"space-between\",\n margin: \"$smallest 0\",\n padding: \"$smaller $small\",\n\n transition: \"$default\",\n userSelect: \"none\",\n\n variants: {\n focused: {\n true: {\n backgroundColor: \"$surfaceHover\",\n boxShadow: \"$default\",\n },\n },\n selected: {\n true: {\n \"&:hover\": {\n boxShadow: \"$medium\",\n },\n backgroundColor: \"$surfaceHover\",\n borderBottomColor: \"$borderEmphasis\",\n boxShadow: \"$default\",\n fontWeight: 600,\n },\n },\n },\n});\n\nexport const MenuItemContentStyled = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n gap: \"$small\",\n justifyContent: \"space-between\",\n width: \"100%\",\n});\n\nexport const MenuItemIconStyled = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"center\",\n variants: {\n align: {\n left: {\n order: -1,\n },\n right: {\n order: 1,\n },\n },\n },\n});\n\nexport const MenuContentStyled = styled(\"div\", {\n display: \"block\",\n padding: \"$medium $small\",\n});\n\nexport const MenuHeaderStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$surfaceLight\",\n borderBottom: \"1px solid $border\",\n display: \"flex\",\n fontFamily: \"$heading\",\n fontWeight: 600,\n justifyContent: \"space-between\",\n margin: \"-$smaller -$smaller $smaller -$smaller\",\n padding: \"$small $medium\",\n});\n\nexport default MenuStyled;\n","import React, { useEffect, useId, useRef, useState, type JSX } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { ArrowDownIcon, ArrowUpIcon } from \"../../icons\";\nimport {\n Input,\n Loading,\n Text,\n useBreakpoints,\n useEventListener,\n useOutsideClick,\n useFloatingUI,\n type ISelect,\n} from \"../../index\";\nimport {\n SelectStyled,\n SelectTriggerStyled,\n SelectGroupStyled,\n SelectItemStyled,\n SelectFilterStyled,\n SelectEmptyStyled,\n SelectLabelStyled,\n SelectIconStyled,\n} from \"./styles\";\n\nexport default function Select({\n css,\n disabled,\n filter,\n height,\n initial,\n label,\n last,\n loading,\n onSelection,\n onSortOrderToggle,\n options,\n sortOrder,\n trigger,\n triggerCSS,\n width,\n wrapperCSS,\n}: ISelect): JSX.Element {\n const reactId = useId();\n const instanceId = `select-${reactId}`;\n const { contentRef, handleClick, handleClose, isMounted, isOpen, triggerRef } = useFloatingUI();\n const { isPhone } = useBreakpoints();\n const optionRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const filterRef = useRef<HTMLInputElement | null>(null);\n\n const [search, setSearch] = useState(\"\");\n const [focused, setFocused] = useState(\"\");\n const [selected, setSelected] = useState<string>(initial || \"\");\n\n // Check if the select is inside a modal\n const isInsideModal = triggerRef.current?.closest('[role=\"dialog\"]') !== null;\n\n const shouldShowFilter = (options?.length ?? 0) > 8 || filter;\n const filteredOptions = options\n ? options.filter((option) => {\n if (search) {\n return option.label.toLowerCase().includes(search.toLowerCase());\n }\n\n return option;\n })\n : [];\n\n useEffect(() => {\n if (!isOpen) {\n setSearch(\"\");\n setFocused(\"\");\n } else if (shouldShowFilter) {\n filterRef.current?.focus();\n } else if (contentRef.current) {\n contentRef.current.focus();\n }\n }, [isOpen, shouldShowFilter, contentRef]);\n\n useEffect(() => {\n if (initial !== undefined) {\n setSelected(initial);\n }\n }, [initial]);\n\n function handleSelection(value: string, label: string): void {\n // If clicking the same option and sort order is enabled, toggle sort order\n if (sortOrder && value === selected && onSortOrderToggle) {\n onSortOrderToggle();\n handleClose();\n\n return;\n }\n\n setSelected(value);\n if (onSelection) {\n onSelection(value, label);\n }\n handleClose();\n }\n\n function handleKeyDown(event: KeyboardEvent): void {\n if (isPhone || !isOpen) return;\n const target = event.target as HTMLElement | null;\n\n if (target && target.getAttribute(\"name\") === \"select-filter\") return;\n\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n const index = filteredOptions.findIndex((option) => option.value === focused);\n\n if (index < filteredOptions.length - 1) {\n const nextValue = filteredOptions[index + 1].value;\n\n setFocused(nextValue);\n\n optionRefs.current[nextValue]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n const index = filteredOptions.findIndex((option) => option.value === focused);\n\n if (index > 0) {\n const prevValue = filteredOptions[index - 1].value;\n\n setFocused(prevValue);\n\n optionRefs.current[prevValue]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }\n\n if (event.key === \"Enter\") {\n event.preventDefault();\n const index = filteredOptions.findIndex((option) => option.value === focused);\n\n if (index >= 0) {\n handleSelection(filteredOptions[index].value, filteredOptions[index].label);\n }\n }\n }\n\n function handleEscapeKey(event: KeyboardEvent): void {\n if (event.key === \"Escape\") {\n event.preventDefault();\n handleClose();\n }\n }\n\n function handleItemMouseOver(value: string): void {\n if (!isPhone) {\n setFocused(value);\n }\n }\n\n useOutsideClick(contentRef, () => handleClose());\n useEventListener(\"keydown\", handleEscapeKey);\n useEventListener(\"keydown\", handleKeyDown, contentRef);\n\n return (\n <SelectStyled css={wrapperCSS}>\n <SelectTriggerStyled\n ref={triggerRef}\n aria-controls={`${instanceId}-listbox`}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n css={triggerCSS}\n onClick={(e: React.MouseEvent): void => {\n e.stopPropagation();\n if (!disabled) {\n handleClick();\n }\n }}>\n {trigger}\n </SelectTriggerStyled>\n {isMounted &&\n createPortal(\n <SelectGroupStyled\n ref={contentRef}\n animation={isOpen}\n aria-activedescendant={focused || undefined}\n aria-busy={loading || undefined}\n aria-labelledby={label ? `${instanceId}-label` : undefined}\n css={{\n height: height || \"auto\",\n maxWidth: width || \"500px\",\n minWidth: width || (filter ? \"200px\" : \"125px\"),\n phone: {\n maxWidth: \"100%\",\n },\n width: width || \"auto\",\n zIndex: isInsideModal ? \"$modalPopover\" : \"$select\",\n ...css,\n }}\n data-select-dropdown=\"true\"\n id={`${instanceId}-listbox`}\n role=\"listbox\"\n tabIndex={-1}>\n {label && (\n <SelectLabelStyled>\n <Text as=\"h6\" id={`${instanceId}-label`}>\n {label}\n </Text>\n </SelectLabelStyled>\n )}\n {shouldShowFilter && (\n <SelectFilterStyled>\n <Input\n ref={filterRef}\n aria-label=\"Filter options\"\n disabled={!options}\n name=\"select-filter\"\n placeholder=\"Type to search...\"\n submitValid={(): boolean => search.length > 0}\n value={search}\n onChange={(event): void => setSearch(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n const index = filteredOptions.findIndex((o) => o.value === focused);\n\n if (event.key === \"ArrowDown\") {\n const nextIndex =\n index < 0 ? 0 : Math.min(index + 1, filteredOptions.length - 1);\n const nextValue = filteredOptions[nextIndex]?.value;\n\n if (nextValue) {\n setFocused(nextValue);\n optionRefs.current[nextValue]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }\n if (event.key === \"ArrowUp\") {\n const prevIndex =\n index < 0 ? filteredOptions.length - 1 : Math.max(index - 1, 0);\n const prevValue = filteredOptions[prevIndex]?.value;\n\n if (prevValue) {\n setFocused(prevValue);\n optionRefs.current[prevValue]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n const idx = filteredOptions.findIndex((o) => o.value === focused);\n\n if (idx >= 0) {\n handleSelection(filteredOptions[idx].value, filteredOptions[idx].label);\n }\n }\n }}\n />\n </SelectFilterStyled>\n )}\n {loading ? (\n <Loading />\n ) : filteredOptions && filteredOptions.length > 0 ? (\n filteredOptions.map((option) => (\n <SelectItemStyled\n key={option.key || option.value}\n ref={(el: HTMLDivElement | null) => {\n optionRefs.current[option.value] = el;\n }}\n aria-selected={option.value === selected}\n focused={option.value === focused && !isPhone}\n id={option.value}\n last={last && !search}\n role=\"option\"\n selected={option.value === selected}\n onClick={() => handleSelection(option.value, option.label)}\n onMouseOver={() => handleItemMouseOver(option.value)}>\n {option.icon && option.iconPosition === \"left\" && (\n <SelectIconStyled align=\"left\">{option.icon}</SelectIconStyled>\n )}\n {option.label}\n {sortOrder && option.value === selected ? (\n <SelectIconStyled align=\"right\">\n {sortOrder === \"asc\" ? (\n <ArrowUpIcon size={16} weight=\"duotone\" />\n ) : (\n <ArrowDownIcon size={16} weight=\"duotone\" />\n )}\n </SelectIconStyled>\n ) : option.icon && option.iconPosition !== \"left\" ? (\n <SelectIconStyled align=\"right\">{option.icon}</SelectIconStyled>\n ) : null}\n </SelectItemStyled>\n ))\n ) : (\n <SelectEmptyStyled>No matching options</SelectEmptyStyled>\n )}\n </SelectGroupStyled>,\n document.body,\n )}\n </SelectStyled>\n );\n}\n","import { fadeInUp, fadeOutDown, styled } from \"../../stitches.config\";\n\nconst stickyBase = {\n backdropFilter: \"blur(4px)\",\n backgroundColor: \"$surfacePopover\",\n position: \"sticky\",\n top: 0,\n zIndex: 1,\n} as const;\n\nexport const SelectStyled = styled(\"div\", {\n display: \"inline-block\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const SelectTriggerStyled = styled(\"div\", {\n cursor: \"pointer\",\n display: \"inline-flex\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const SelectGroupStyled = styled(\"div\", {\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n backdropFilter: \"blur(4px)\",\n backgroundColor: \"$surfacePopover\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$medium\",\n overflowY: \"auto\",\n padding: \"$smaller\",\n pointerEvents: \"auto\",\n transformOrigin: \"top center\",\n variants: {\n animation: {\n false: {\n animation: `${fadeOutDown} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n true: {\n animation: `${fadeInUp} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n },\n },\n width: \"100%\",\n\n willChange: \"transform, opacity\",\n});\n\nexport const SelectFilterStyled = styled(\"div\", {\n ...stickyBase,\n marginBottom: \"$smaller\",\n padding: \"0 $small $smaller $small\",\n});\n\nexport const SelectItemStyled = styled(\"div\", {\n \"&:active\": {\n boxShadow: \"$inset\",\n transform: \"translateY(0)\",\n transition: \"$fast\",\n },\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n borderBottomColor: \"$borderEmphasis\",\n borderTopColor: \"$border\",\n boxShadow: \"$default\",\n },\n alignItems: \"center\",\n backgroundColor: \"$surfacePopover\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$small\",\n borderTopColor: \"$border\",\n boxShadow: \"$subtle\",\n color: \"$text\",\n cursor: \"pointer\",\n display: \"flex\",\n fontFamily: \"$default\",\n fontSize: \"$default\",\n gap: \"$smaller\",\n justifyContent: \"space-between\",\n margin: \"$smallest 0\",\n padding: \"$smaller $small\",\n\n transition: \"$default\",\n userSelect: \"none\",\n\n variants: {\n focused: {\n true: {\n backgroundColor: \"$surfaceHover\",\n boxShadow: \"$default\",\n },\n },\n last: {\n true: {\n borderTop: \"1px solid $borderLight\",\n marginTop: \"$smaller\",\n paddingTop: \"$smaller\",\n },\n },\n selected: {\n true: {\n \"&:hover\": {\n boxShadow: \"$medium\",\n },\n backgroundColor: \"$surfaceHover\",\n borderBottomColor: \"$borderEmphasis\",\n boxShadow: \"$default\",\n fontWeight: 600,\n },\n },\n },\n});\n\nexport const SelectEmptyStyled = styled(\"div\", {\n color: \"$textMuted\",\n fontSize: \"$small\",\n padding: \"$medium $small\",\n textAlign: \"center\",\n});\n\nexport const SelectLabelStyled = styled(\"div\", {\n ...stickyBase,\n borderBottom: \"1px solid $borderLight\",\n fontFamily: \"$default\",\n fontWeight: 400,\n marginBottom: \"$smaller\",\n padding: \"0 $small $smaller $small\",\n});\n\nexport const SelectIconStyled = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"center\",\n transition: \"$default\",\n variants: {\n align: {\n left: {\n order: -1,\n },\n right: {\n order: 1,\n },\n },\n },\n});\n\nexport default SelectStyled;\n","import React, { useEffect, useRef, useState, type JSX } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport toast from \"react-hot-toast\";\n\nimport { XCircleIcon } from \"../../../icons\";\nimport {\n Input,\n Loading,\n Text,\n useBreakpoints,\n useEventListener,\n useOutsideClick,\n useFloatingUI,\n Icon,\n type ISelectMulti,\n} from \"../../../index\";\nimport {\n SelectStyled,\n SelectTriggerStyled,\n SelectGroupStyled,\n SelectItemStyled,\n SelectFilterStyled,\n SelectEmptyStyled,\n SelectLabelStyled,\n SelectIconStyled,\n} from \"../styles\";\n\nexport default function SelectMulti({\n css,\n disabled,\n filter,\n height,\n initial,\n label,\n limit,\n loading,\n onSelection,\n options,\n reset = true,\n trigger,\n triggerCSS,\n width,\n wrapperCSS,\n}: ISelectMulti): JSX.Element {\n const { contentRef, handleClick, handleClose, isMounted, isOpen, triggerRef } = useFloatingUI();\n const { isPhone } = useBreakpoints();\n const optionRefs = useRef<Record<string, HTMLDivElement | null>>({});\n\n const [search, setSearch] = useState(\"\");\n const [focused, setFocused] = useState(\"\");\n const [selected, setSelected] = useState<Array<{ label: string; value: string }>>(initial || []);\n\n const shouldShowFilter = (options?.length || 0) > 10 && filter;\n const hasSelections = selected.length > 0;\n const canReset = reset && hasSelections;\n const filteredOptions = options\n ? options.filter((option) => {\n if (search) {\n return option.label.toLowerCase().includes(search.toLowerCase());\n }\n\n return option;\n })\n : [];\n\n useEffect(() => {\n if (!isOpen) {\n setSearch(\"\");\n setFocused(\"\");\n } else if (!shouldShowFilter && contentRef.current) {\n contentRef.current.focus();\n }\n }, [isOpen, shouldShowFilter, contentRef]);\n\n function handleSelection(option: { label: string; value: string }): void {\n const selectionIndex = selected.findIndex((item) => item.value === option.value);\n let newSelectedItems;\n\n if (selectionIndex === -1) {\n if (!limit || selected.length < limit) {\n newSelectedItems = [...selected, option];\n setSelected(newSelectedItems);\n if (onSelection) {\n onSelection(newSelectedItems);\n }\n } else {\n toast(`Maximum selections reached (${limit}).`);\n }\n } else {\n newSelectedItems = [\n ...selected.slice(0, selectionIndex),\n ...selected.slice(selectionIndex + 1),\n ];\n setSelected(newSelectedItems);\n if (onSelection) {\n onSelection(newSelectedItems);\n }\n }\n }\n\n function handleReset(): void {\n setSelected([]);\n if (onSelection) {\n onSelection([]);\n }\n }\n\n function handleKeyDown(event: KeyboardEvent): void {\n if (isPhone || !isOpen) return;\n\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n const index = filteredOptions.findIndex((option) => option.value === focused);\n\n if (index < filteredOptions.length - 1) {\n const nextValue = filteredOptions[index + 1].value;\n\n setFocused(nextValue);\n\n optionRefs.current[nextValue]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n const index = filteredOptions.findIndex((option) => option.value === focused);\n\n if (index > 0) {\n const prevValue = filteredOptions[index - 1].value;\n\n setFocused(prevValue);\n\n optionRefs.current[prevValue]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }\n\n if (event.key === \"Enter\") {\n event.preventDefault();\n const index = filteredOptions.findIndex((option) => option.value === focused);\n\n if (index >= 0) {\n handleSelection(filteredOptions[index]);\n }\n }\n }\n\n function handleItemMouseOver(value: string): void {\n if (!isPhone) {\n setFocused(value);\n }\n }\n\n function handleResetMouseOver(): void {\n if (!isPhone) {\n setFocused(\"\");\n }\n }\n\n function isOptionSelected(optionValue: string): boolean {\n return selected.findIndex((item) => item.value === optionValue) !== -1;\n }\n\n function handleEscapeKey(event: KeyboardEvent): void {\n if (event.key === \"Escape\") {\n event.preventDefault();\n handleClose();\n }\n }\n\n useOutsideClick(contentRef, () => handleClose());\n useEventListener(\"keydown\", handleEscapeKey);\n useEventListener(\"keydown\", handleKeyDown, contentRef);\n\n return (\n <SelectStyled css={wrapperCSS}>\n <SelectTriggerStyled\n ref={triggerRef}\n css={triggerCSS}\n onClick={(e: React.MouseEvent): void => {\n e.stopPropagation();\n if (!disabled) {\n handleClick();\n }\n }}>\n {trigger}\n </SelectTriggerStyled>\n {isMounted &&\n createPortal(\n <SelectGroupStyled\n ref={contentRef}\n animation={isOpen}\n css={{\n height: height || \"auto\",\n maxWidth: width || \"500px\",\n minWidth: width || filter ? \"200px\" : \"125px\",\n phone: {\n maxWidth: \"100%\",\n },\n width: width || \"auto\",\n ...css,\n }}\n tabIndex={-1}>\n {label && (\n <SelectLabelStyled>\n <Text as=\"h6\">{label}</Text>\n </SelectLabelStyled>\n )}\n {shouldShowFilter && (\n <SelectFilterStyled>\n <Input\n disabled={!options}\n name=\"select-multi-filter\"\n placeholder=\"Type to search...\"\n submitValid={(): boolean => search.length > 0}\n value={search}\n onChange={(event): void => setSearch(event.target.value)}\n />\n </SelectFilterStyled>\n )}\n {loading ? (\n <Loading />\n ) : filteredOptions && filteredOptions.length > 0 ? (\n filteredOptions.map((option) => (\n <SelectItemStyled\n key={option.value}\n ref={(el: HTMLDivElement | null) => {\n optionRefs.current[option.value] = el;\n }}\n focused={option.value === focused && !isPhone}\n selected={isOptionSelected(option.value)}\n onClick={() => handleSelection(option)}\n onMouseOver={() => handleItemMouseOver(option.value)}>\n {option.icon && option.iconPosition === \"left\" && (\n <SelectIconStyled align=\"left\">{option.icon}</SelectIconStyled>\n )}\n {option.label}\n {option.icon && option.iconPosition !== \"left\" && (\n <SelectIconStyled align=\"right\">{option.icon}</SelectIconStyled>\n )}\n </SelectItemStyled>\n ))\n ) : (\n <SelectEmptyStyled>No matching options</SelectEmptyStyled>\n )}\n {canReset && (\n <SelectItemStyled\n key=\"reset\"\n last\n onClick={() => handleReset()}\n onMouseOver={() => handleResetMouseOver()}>\n Reset\n <SelectIconStyled align=\"right\">\n <Icon icon={<XCircleIcon />} />\n </SelectIconStyled>\n </SelectItemStyled>\n )}\n </SelectGroupStyled>,\n document.body,\n )}\n </SelectStyled>\n );\n}\n","import { useId, type JSX, type MouseEvent } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { XCircleIcon } from \"../../icons\";\nimport {\n Button,\n Text,\n useEventListener,\n useOutsideClick,\n useModal,\n Icon,\n type IModal,\n} from \"../../index\";\nimport {\n ModalOverlayStyled,\n ModalGroupStyled,\n ModalHeaderStyled,\n ModalContentStyled,\n ModalFooterStyled,\n ModalStyled,\n ModalTriggerStyled,\n} from \"./styles\";\n\nexport default function Modal({\n children,\n css,\n disabled,\n footer,\n isOpen,\n onClose,\n small,\n theme = \"default\",\n title,\n trigger,\n triggerCSS,\n wrapperCSS,\n}: IModal): JSX.Element {\n const titleId = useId();\n const isControlled = isOpen !== undefined;\n const modal = useModal({\n isOpen,\n onClose,\n });\n\n function handleClick(): void {\n if (disabled) return;\n modal.handleClick();\n }\n\n // Use onClose from props when in controlled mode, otherwise use modal.handleClose\n const handleClose = isControlled && onClose ? onClose : modal.handleClose;\n\n useEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n handleClose();\n }\n });\n\n useOutsideClick(modal.modalRef, () => handleClose());\n\n return (\n <ModalStyled css={wrapperCSS}>\n {/* Only render trigger if not in controlled mode and trigger is provided */}\n {!isControlled && trigger && (\n <ModalTriggerStyled\n css={triggerCSS}\n onClick={(e: MouseEvent): void => {\n e.stopPropagation();\n handleClick();\n }}>\n {trigger}\n </ModalTriggerStyled>\n )}\n\n {modal.isMounted &&\n createPortal(\n <ModalOverlayStyled animation={modal.isOpen}>\n <ModalGroupStyled\n ref={modal.modalRef}\n animation={modal.isOpen}\n aria-labelledby={titleId}\n aria-modal=\"true\"\n css={css}\n data-modal=\"true\"\n role=\"dialog\"\n small={small}>\n <ModalHeaderStyled theme={theme}>\n {typeof title === \"string\" ? (\n <Text as=\"h4\" bottom=\"none\" id={titleId}>\n {title}\n </Text>\n ) : (\n <div id={titleId}>{title}</div>\n )}\n <Button\n icon={<Icon icon={<XCircleIcon />} />}\n small\n theme=\"minimal\"\n onClick={() => handleClose()}>\n Close\n </Button>\n </ModalHeaderStyled>\n\n <ModalContentStyled>\n {typeof children === \"function\" ? children(handleClose) : children}\n </ModalContentStyled>\n\n {footer && (\n <ModalFooterStyled>\n {typeof footer === \"function\" ? footer(handleClose) : footer}\n </ModalFooterStyled>\n )}\n </ModalGroupStyled>\n </ModalOverlayStyled>,\n document.body,\n )}\n </ModalStyled>\n );\n}\n\nModal.displayName = \"Modal\";\n","import { fadeIn, fadeOut, slideInScale, slideOutScale, styled } from \"../../stitches.config\";\n\nconst overlayBase = {\n alignItems: \"center\",\n backdropFilter: \"blur(4px)\",\n backgroundColor: \"$overlay\",\n display: \"flex\",\n dynamicViewport: { property: \"height\", unit: \"vh\", value: \"100\" },\n inset: 0,\n justifyContent: \"center\",\n overflow: \"hidden\",\n padding: \"$medium\",\n phone: {\n padding: \"$small\",\n },\n pointerEvents: \"auto\",\n position: \"fixed\",\n variants: {\n animation: {\n false: {\n animation: `${fadeOut} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n true: {\n animation: `${fadeIn} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n },\n },\n} as const;\n\nconst dialogContainerBase = {\n backgroundColor: \"transparent\",\n border: \"1px solid $border\",\n borderBottomColor: \"$borderBottom\",\n borderRadius: \"$default\",\n borderTopColor: \"$borderLight\",\n boxShadow: \"$largest\",\n display: \"flex\",\n dynamicViewport: { property: \"maxHeight\", unit: \"vh\", value: \"80\" },\n flexDirection: \"column\",\n maxWidth: \"90%\",\n overflow: \"hidden\",\n phone: {\n dynamicViewport: { property: \"maxHeight\", unit: \"vh\", value: \"90\" },\n maxWidth: \"95%\",\n },\n position: \"relative\",\n\n variants: {\n animation: {\n false: {\n animation: `${slideOutScale} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n true: {\n animation: `${slideInScale} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n },\n },\n width: \"100%\",\n willChange: \"transform, opacity\",\n} as const;\n\nexport const ModalStyled = styled(\"div\", {\n display: \"inline-flex\",\n height: \"100%\",\n verticalAlign: \"middle\",\n});\n\nexport const ModalTriggerStyled = styled(\"div\", {\n cursor: \"pointer\",\n display: \"inline-flex\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const ModalOverlayStyled = styled(\"div\", {\n ...overlayBase,\n zIndex: \"$modal\",\n});\n\nexport const ModalGroupStyled = styled(\"div\", {\n ...dialogContainerBase,\n maxWidth: \"600px\",\n variants: {\n ...dialogContainerBase.variants,\n small: {\n true: {\n maxWidth: \"280px\",\n },\n },\n },\n});\n\nexport const ModalHeaderStyled = styled(\"div\", {\n alignItems: \"center\",\n backdropFilter: \"blur(20px) saturate(180%)\",\n backgroundColor: \"$surfaceOverlay\",\n borderBottom: \"1px solid $border\",\n color: \"$text\",\n display: \"flex\",\n flexShrink: 0,\n fontFamily: \"$heading\",\n justifyContent: \"space-between\",\n padding: \"$small $medium\",\n position: \"sticky\",\n top: 0,\n variants: {\n theme: {\n blue: {\n backgroundColor: \"$blueOverlay\",\n borderBottom: \"none\",\n },\n default: {},\n green: {\n backgroundColor: \"$greenOverlay\",\n borderBottom: \"none\",\n },\n orange: {\n backgroundColor: \"$orangeOverlay\",\n borderBottom: \"none\",\n },\n red: {\n backgroundColor: \"$redOverlay\",\n borderBottom: \"none\",\n },\n violet: {\n backgroundColor: \"$violetOverlay\",\n borderBottom: \"none\",\n },\n yellow: {\n backgroundColor: \"$yellowOverlay\",\n borderBottom: \"none\",\n },\n },\n },\n\n zIndex: \"$sticky\",\n});\n\nexport const ModalContentStyled = styled(\"div\", {\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n backgroundColor: \"$surface\",\n flex: 1,\n overflowX: \"hidden\",\n overflowY: \"auto\",\n padding: \"$medium\",\n});\n\nexport const ModalFooterStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$surface\",\n borderTop: \"1px solid $border\",\n bottom: 0,\n color: \"$text\",\n display: \"flex\",\n flexDirection: \"row\",\n flexShrink: 0,\n gap: \"$small\",\n justifyContent: \"space-between\",\n padding: \"$small $medium\",\n position: \"sticky\",\n variants: {\n theme: {\n blue: {\n backgroundColor: \"$blueLight\",\n borderTopColor: \"$blueDark\",\n },\n default: {},\n green: {\n backgroundColor: \"$greenLight\",\n borderTopColor: \"$greenDark\",\n },\n orange: {\n backgroundColor: \"$orangeLight\",\n borderTopColor: \"$orangeDark\",\n },\n red: {\n backgroundColor: \"$redLight\",\n borderTopColor: \"$redDark\",\n },\n violet: {\n backgroundColor: \"$violetLight\",\n borderTopColor: \"$violetDark\",\n },\n yellow: {\n backgroundColor: \"$yellowLight\",\n borderTopColor: \"$yellowDark\",\n },\n },\n },\n width: \"100%\",\n zIndex: \"$sticky\",\n});\n","import React, { useId, type JSX } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { XCircleIcon } from \"../../icons\";\nimport {\n Button,\n Text,\n useEventListener,\n useOutsideClick,\n useModal,\n Icon,\n type IDrawer,\n} from \"../../index\";\nimport {\n DrawerContentStyled,\n DrawerCoreStyled,\n DrawerHeaderStyled,\n DrawerOverlayStyled,\n DrawerStyled,\n DrawerTriggerStyled,\n} from \"./styles\";\n\nexport default function Drawer({\n children,\n css,\n disabled,\n title,\n trigger,\n triggerCSS,\n wrapperCSS,\n}: IDrawer): JSX.Element {\n const titleId = useId();\n const drawer = useModal();\n\n function handleClick(): void {\n if (!disabled) {\n drawer.handleClick();\n }\n }\n\n useEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n drawer.handleClose();\n }\n });\n\n useOutsideClick(drawer.modalRef, () => {\n if (drawer.isOpen) {\n drawer.handleClose();\n }\n });\n\n return (\n <DrawerStyled css={wrapperCSS}>\n {trigger ? (\n <DrawerTriggerStyled\n css={triggerCSS}\n onClick={(e: React.MouseEvent): void => {\n e.stopPropagation();\n handleClick();\n }}>\n {trigger}\n </DrawerTriggerStyled>\n ) : (\n \"Missing trigger\"\n )}\n\n {drawer.isMounted &&\n createPortal(\n <DrawerOverlayStyled animation={drawer.isOpen}>\n <DrawerCoreStyled\n ref={drawer.modalRef}\n animation={drawer.isOpen}\n aria-labelledby={titleId}\n aria-modal=\"true\"\n css={css}\n role=\"dialog\">\n <DrawerHeaderStyled>\n <Text as=\"h6\" bottom=\"none\" id={titleId}>\n {title}\n </Text>\n <Button\n icon={<Icon icon={<XCircleIcon />} />}\n small\n onClick={() => drawer.handleClose()}>\n Close\n </Button>\n </DrawerHeaderStyled>\n\n <DrawerContentStyled>\n {typeof children === \"function\" ? children(drawer.handleClose) : children}\n </DrawerContentStyled>\n </DrawerCoreStyled>\n </DrawerOverlayStyled>,\n document.body,\n )}\n </DrawerStyled>\n );\n}\n","import { fadeIn, fadeOut, slideInUp, slideOutDown, styled } from \"../../stitches.config\";\n\nexport const DrawerStyled = styled(\"div\", {\n display: \"inline-block\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const DrawerTriggerStyled = styled(\"div\", {\n cursor: \"pointer\",\n display: \"inline-flex\",\n position: \"relative\",\n verticalAlign: \"middle\",\n});\n\nexport const DrawerOverlayStyled = styled(\"div\", {\n alignItems: \"flex-end\",\n backdropFilter: \"blur(2px)\",\n backgroundColor: \"$overlay\",\n display: \"flex\",\n dynamicViewport: { property: \"height\", unit: \"vh\", value: \"100\" },\n inset: 0,\n justifyContent: \"center\",\n overflow: \"hidden\",\n pointerEvents: \"auto\",\n position: \"fixed\",\n transition: \"$default\",\n variants: {\n animation: {\n false: {\n animation: `${fadeOut} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n true: {\n animation: `${fadeIn} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n },\n },\n zIndex: \"$modal\",\n});\n\nexport const DrawerCoreStyled = styled(\"div\", {\n backgroundColor: \"$surface\",\n borderTop: \"1px solid $border\",\n borderTopLeftRadius: \"$medium\",\n borderTopRightRadius: \"$medium\",\n boxShadow: \"$largest\",\n display: \"flex\",\n dynamicViewport: { property: \"maxHeight\", unit: \"vh\", value: \"70\" },\n flexDirection: \"column\",\n minHeight: \"30vh\",\n overflow: \"hidden\",\n phone: {\n dynamicViewport: { property: \"maxHeight\", unit: \"vh\", value: \"90\" },\n minHeight: \"50vh\",\n },\n position: \"relative\",\n transition: \"$default\",\n variants: {\n animation: {\n false: {\n animation: `${slideOutDown} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n true: {\n animation: `${slideInUp} 200ms ease-in-out`,\n animationFillMode: \"forwards\",\n },\n },\n },\n width: \"100%\",\n});\n\nexport const DrawerHeaderStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$surfaceLight\",\n borderBottom: \"1px solid $border\",\n display: \"flex\",\n flexShrink: 0,\n fontFamily: \"$heading\",\n justifyContent: \"space-between\",\n padding: \"$small $medium\",\n});\n\nexport const DrawerContentStyled = styled(\"div\", {\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n flex: 1,\n margin: \"0 auto\",\n maxWidth: \"600px\",\n overflowX: \"hidden\",\n overflowY: \"auto\",\n padding: \"$large $medium\",\n paddingBottom: \"calc($medium + env(safe-area-inset-bottom))\",\n width: \"100%\",\n});\n","import type { JSX } from \"react\";\n\nimport { Text, type IAvatar } from \"../../index\";\nimport { AvatarStyled } from \"./styles\";\n\ntype AvatarColorTheme =\n | \"default\"\n | \"blue\"\n | \"green\"\n | \"orange\"\n | \"red\"\n | \"violet\"\n | \"yellow\"\n | \"pink\";\n\n/**\n * Determines avatar color based on first character of fallback text\n * Uses simple algorithm to ensure consistent, distributed color assignment\n */\nfunction getAutoTheme(fallback?: string): AvatarColorTheme {\n if (!fallback || fallback.length === 0) return \"default\";\n\n const firstChar = fallback.charAt(0).toLowerCase();\n const charCode = firstChar.charCodeAt(0);\n\n // Map characters to colors in a distributed way\n // a-d → blue, e-h → green, i-l → orange, m-p → red, q-t → violet, u-w → yellow, x-z → pink\n // Numbers 0-9 also map to colors\n const colorMap: AvatarColorTheme[] = [\n \"blue\",\n \"green\",\n \"orange\",\n \"red\",\n \"violet\",\n \"yellow\",\n \"pink\",\n ];\n\n // For letters (a-z)\n if (charCode >= 97 && charCode <= 122) {\n const index = Math.floor(((charCode - 97) / 26) * colorMap.length);\n\n return colorMap[index] || \"blue\";\n }\n\n // For numbers (0-9)\n if (charCode >= 48 && charCode <= 57) {\n const index = (charCode - 48) % colorMap.length;\n\n return colorMap[index] || \"blue\";\n }\n\n // Default for special characters\n return \"default\";\n}\n\nexport default function Avatar({\n css,\n fallback,\n image,\n theme = \"default\",\n width = 32,\n}: IAvatar): JSX.Element {\n // Determine final theme - if \"auto\", calculate from fallback, otherwise use provided theme\n const finalTheme: AvatarColorTheme =\n theme === \"auto\" ? getAutoTheme(fallback) : (theme as AvatarColorTheme);\n\n return (\n <AvatarStyled\n css={{\n height: width,\n maxHeight: width,\n maxWidth: width,\n minHeight: width,\n minWidth: width,\n width: width,\n ...css,\n }}\n theme={finalTheme}>\n {image || <Text as=\"span\">{fallback}</Text>}\n </AvatarStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const AvatarStyled = styled(\"div\", {\n alignSelf: \"center\",\n border: \"$smallest solid $border\",\n borderRadius: \"$full\",\n borderTopColor: \"$borderLight\",\n boxShadow: \"$default\",\n display: \"inline-flex\",\n height: \"100%\",\n img: {\n height: \"100%\",\n objectFit: \"cover !important\",\n width: \"100%\",\n },\n justifyContent: \"center\",\n overflow: \"hidden\",\n\n span: {\n alignItems: \"center\",\n color: \"$text\",\n display: \"flex\",\n fontFamily: \"$heading\",\n fontSize: \"$small\",\n fontWeight: 600,\n justifyContent: \"center\",\n overflow: \"hidden\",\n textTransform: \"uppercase\",\n },\n\n variants: {\n theme: {\n blue: {\n backgroundColor: \"$blue\",\n span: {\n color: \"$blueDark\",\n },\n },\n default: {\n backgroundColor: \"$surface\",\n },\n green: {\n backgroundColor: \"$green\",\n span: {\n color: \"$greenDark\",\n },\n },\n orange: {\n backgroundColor: \"$orange\",\n span: {\n color: \"$orangeDark\",\n },\n },\n pink: {\n backgroundColor: \"$pink\",\n span: {\n color: \"$pinkDark\",\n },\n },\n red: {\n backgroundColor: \"$red\",\n span: {\n color: \"$redDark\",\n },\n },\n violet: {\n backgroundColor: \"$violet\",\n span: {\n color: \"$violetDark\",\n },\n },\n yellow: {\n backgroundColor: \"$yellow\",\n span: {\n color: \"$yellowDark\",\n },\n },\n },\n },\n\n verticalAlign: \"middle\",\n});\n","import { useState, useRef, type JSX } from \"react\";\n\nimport { CaretDownIcon, CaretUpIcon } from \"../../icons\";\nimport { Icon, type IAccordion } from \"../../index\";\nimport {\n AccordionStyled,\n AccordionItemStyled,\n AccordionButtonStyled,\n AccordionListContentStyled,\n} from \"./styles\";\n\nexport default function Accordion({\n allowMultiple = false,\n initial,\n onToggle,\n options,\n}: IAccordion): JSX.Element {\n const [openItems, setOpenItems] = useState<Set<string>>(new Set(initial ? [initial] : []));\n const contentRefs = useRef<Record<string, HTMLDivElement | null>>({});\n\n const hasOptions = options && options.length > 0;\n\n function handleToggle(value: string): void {\n const isOpen = openItems.has(value);\n\n if (allowMultiple) {\n const newOpenItems = new Set(openItems);\n\n if (isOpen) {\n newOpenItems.delete(value);\n } else {\n newOpenItems.add(value);\n }\n setOpenItems(newOpenItems);\n } else {\n setOpenItems(isOpen ? new Set() : new Set([value]));\n }\n\n if (!isOpen) {\n setTimeout(() => {\n const contentElement = contentRefs.current[value];\n\n if (contentElement) {\n contentElement.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n });\n window.scrollBy(0, 20);\n }\n }, 150);\n }\n\n if (onToggle) {\n onToggle(value, !isOpen);\n }\n }\n\n function handleItemClick(value: string): () => void {\n return () => handleToggle(value);\n }\n\n if (!hasOptions) {\n return <AccordionStyled />;\n }\n\n return (\n <AccordionStyled>\n {options.map((option) => {\n const isOpen = openItems.has(option.value);\n const buttonId = `accordion-${option.value}-button`;\n const panelId = `accordion-${option.value}-panel`;\n\n return (\n <AccordionItemStyled key={option.value}>\n <AccordionButtonStyled\n aria-controls={panelId}\n aria-expanded={isOpen}\n expanded={isOpen}\n icon={isOpen ? <Icon icon={<CaretUpIcon />} /> : <Icon icon={<CaretDownIcon />} />}\n iconPosition=\"right\"\n id={buttonId}\n onClick={handleItemClick(option.value)}>\n {option.label}\n </AccordionButtonStyled>\n <AccordionListContentStyled\n ref={(el: HTMLDivElement | null) => {\n contentRefs.current[option.value] = el;\n }}\n aria-labelledby={buttonId}\n expanded={isOpen}\n id={panelId}\n role=\"region\">\n <div>{option.children}</div>\n </AccordionListContentStyled>\n </AccordionItemStyled>\n );\n })}\n </AccordionStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\nimport Button from \"../Button\";\n\nexport const AccordionStyled = styled(\"div\", {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"$small\",\n position: \"relative\",\n width: \"100%\",\n});\n\n// Simple list item with border\nexport const AccordionItemStyled = styled(\"div\", {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\",\n width: \"100%\",\n});\n\n// Clean button - no backgrounds, just text and icon\nexport const AccordionButtonStyled = styled(Button, {\n \"& svg\": {\n flexShrink: 0,\n },\n alignItems: \"center\",\n appearance: \"none\",\n border: \"1px solid $border\",\n color: \"$text\",\n cursor: \"pointer\",\n display: \"flex\",\n fontFamily: \"$heading\",\n fontSize: \"$default\",\n fontWeight: 600,\n justifyContent: \"space-between\",\n lineHeight: \"$default\",\n textAlign: \"left\",\n transition: \"border-radius 200ms ease-out, border 200ms ease-out\",\n variants: {\n expanded: {\n false: {\n borderBottom: \"1px solid $border\",\n borderBottomLeftRadius: \"$default\",\n borderBottomRightRadius: \"$default\",\n },\n true: {\n borderBottom: \"none\",\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n },\n },\n },\n width: \"100%\",\n willChange: \"border-radius, border\",\n});\n// Content area - simple and clean\nexport const AccordionListContentStyled = styled(\"div\", {\n overflow: \"hidden\",\n paddingBottom: \"$small\",\n transition:\n \"height 200ms ease-out, opacity 150ms ease-out, border-radius 200ms ease-out, border 200ms ease-out\",\n variants: {\n expanded: {\n false: {\n border: \"1px solid transparent\",\n borderRadius: 0,\n height: 0,\n opacity: 0,\n paddingBottom: 0,\n },\n true: {\n border: \"1px solid $border\",\n borderRadius: \"$default\",\n borderTop: \"none\",\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n height: \"auto\",\n opacity: 1,\n padding: \"$small\",\n },\n },\n },\n willChange: \"height, opacity, border-radius, border\",\n});\n","import { type JSX } from \"react\";\n\nimport type { IProgress } from \"../../index\";\n\nimport { theme } from \"../../stitches.config\";\nimport {\n ProgressStyled,\n ProgressTrackStyled,\n ProgressFillStyled,\n ProgressLabelStyled,\n ProgressRadialStyled,\n ProgressRadialSVGStyled,\n ProgressRadialLabelStyled,\n} from \"./styles\";\n\nexport default function Progress({\n css,\n label,\n max = 100,\n showLabel = false,\n size = \"medium\",\n theme: themeVariant = \"default\",\n value = 0,\n variant = \"linear\",\n}: IProgress): JSX.Element {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n\n if (variant === \"radial\") {\n const sizeMap = { large: 120, medium: 80, small: 60 };\n const circleSize = sizeMap[size];\n const strokeWidth = 8;\n const radius = (circleSize - strokeWidth * 2) / 2;\n const circumference = 2 * Math.PI * radius;\n const strokeDashoffset = circumference - (percentage / 100) * circumference;\n const center = circleSize / 2;\n\n const themeColor =\n themeVariant === \"default\" ? theme.colors.textMuted.value : theme.colors[themeVariant].value;\n\n return (\n <ProgressRadialStyled css={css} size={size}>\n <ProgressRadialSVGStyled\n aria-valuemax={max}\n aria-valuemin={0}\n aria-valuenow={value}\n role=\"progressbar\"\n viewBox={`0 0 ${circleSize} ${circleSize}`}>\n <circle\n cx={center}\n cy={center}\n fill=\"none\"\n r={radius}\n stroke={theme.colors.border.value}\n strokeWidth={strokeWidth}\n />\n <circle\n cx={center}\n cy={center}\n fill=\"none\"\n r={radius}\n stroke={themeColor}\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n </ProgressRadialSVGStyled>\n {(showLabel || label) && (\n <ProgressRadialLabelStyled size={size}>\n {label || `${Math.round(percentage)}%`}\n </ProgressRadialLabelStyled>\n )}\n </ProgressRadialStyled>\n );\n }\n\n return (\n <ProgressStyled css={css}>\n <ProgressTrackStyled size={size} theme={themeVariant}>\n <ProgressFillStyled\n aria-valuemax={max}\n aria-valuemin={0}\n aria-valuenow={value}\n css={{ width: `${percentage}%` }}\n role=\"progressbar\"\n theme={themeVariant}\n />\n </ProgressTrackStyled>\n {(showLabel || label) && (\n <ProgressLabelStyled>{label || `${Math.round(percentage)}%`}</ProgressLabelStyled>\n )}\n </ProgressStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const ProgressStyled = styled(\"div\", {\n position: \"relative\",\n width: \"100%\",\n});\n\nexport const ProgressTrackStyled = styled(\"div\", {\n backgroundColor: \"$surface\",\n border: \"1px solid $border\",\n borderRadius: \"$small\",\n height: \"18px\",\n overflow: \"hidden\",\n position: \"relative\",\n variants: {\n size: {\n large: {\n height: \"24px\",\n },\n medium: {\n height: \"18px\",\n },\n small: {\n height: \"12px\",\n },\n },\n theme: {\n blue: {\n borderColor: \"$blue\",\n },\n default: {\n borderColor: \"$border\",\n },\n green: {\n borderColor: \"$green\",\n },\n orange: {\n borderColor: \"$orange\",\n },\n red: {\n borderColor: \"$red\",\n },\n violet: {\n borderColor: \"$violet\",\n },\n yellow: {\n borderColor: \"$yellow\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const ProgressFillStyled = styled(\"div\", {\n backgroundColor: \"$surface\",\n borderRadius: \"$small\",\n height: \"100%\",\n transition: \"width 0.3s ease\",\n variants: {\n theme: {\n blue: {\n backgroundColor: \"$blue\",\n },\n default: {\n backgroundColor: \"$surface\",\n },\n green: {\n backgroundColor: \"$green\",\n },\n orange: {\n backgroundColor: \"$orange\",\n },\n red: {\n backgroundColor: \"$red\",\n },\n violet: {\n backgroundColor: \"$violet\",\n },\n yellow: {\n backgroundColor: \"$yellow\",\n },\n },\n },\n\n width: \"0%\",\n});\n\nexport const ProgressLabelStyled = styled(\"div\", {\n color: \"$textMuted\",\n fontFamily: \"$heading\",\n fontSize: \"$small\",\n fontWeight: 600,\n marginTop: \"$smaller\",\n textAlign: \"right\",\n});\n\nexport const ProgressRadialStyled = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"center\",\n position: \"relative\",\n variants: {\n size: {\n large: {\n height: \"120px\",\n width: \"120px\",\n },\n medium: {\n height: \"80px\",\n width: \"80px\",\n },\n small: {\n height: \"32px\",\n width: \"32px\",\n },\n },\n },\n});\n\nexport const ProgressRadialSVGStyled = styled(\"svg\", {\n \"& circle\": {\n transition: \"stroke-dashoffset 0.3s ease\",\n },\n height: \"100%\",\n transform: \"rotate(-90deg)\",\n width: \"100%\",\n});\n\nexport const ProgressRadialLabelStyled = styled(\"div\", {\n color: \"$textMuted\",\n fontFamily: \"$heading\",\n fontWeight: 600,\n left: \"50%\",\n position: \"absolute\",\n textAlign: \"center\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n variants: {\n size: {\n large: {\n fontSize: \"$large\",\n },\n medium: {\n fontSize: \"$medium\",\n },\n small: {\n fontSize: \"$small\",\n },\n },\n },\n});\n","import { useState, useCallback, useMemo, Fragment, useRef, useEffect, type JSX } from \"react\";\n\nimport {\n WarningIcon,\n CaretDownIcon,\n CaretRightIcon,\n ArrowUpIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n} from \"../../icons\";\nimport { Loading, Stack, Text, Button, Badge, Box, Icon, type ITable } from \"../../index\";\nimport {\n TableStyled,\n TableCoreStyled,\n TableRowStyled,\n TableCellStyled,\n TableHeaderCellStyled,\n TableRowAnimatedStyled,\n TablePaginationBlockStyled,\n TableCellBlockStyled,\n TableSubRowStyled,\n TableSubCellStyled,\n TableMobileViewStyled,\n TableMobileRowStyled,\n TableMobileLabelStyled,\n TableMobileValueStyled,\n TableEmptyStateCellStyled,\n} from \"./styles\";\n\nexport default function Table({\n columns,\n css,\n error,\n kbd = false,\n loading,\n pagination = false,\n rows,\n}: ITable): JSX.Element {\n const tableRef = useRef<HTMLTableElement>(null);\n const tableHeaderRef = useRef<HTMLTableRowElement>(null);\n\n const [currentPage, setCurrentPage] = useState(1);\n const [expanded, setExpanded] = useState(new Set<string>());\n const [sortColumn, setSortColumn] = useState<string | null>(null);\n const [sortDirection, setSortDirection] = useState<\"asc\" | \"desc\">(\"asc\");\n\n const itemsPerPage = 25;\n const memoizedColumns = useMemo(() => columns, [columns]);\n const memoizedRows = useMemo(() => rows, [rows]);\n const hasData = !loading && !error && memoizedRows.length > 0;\n const isFirstPage = currentPage === 1;\n const showPagination = pagination && memoizedRows.length > itemsPerPage;\n\n const sortedRows = useMemo(() => {\n if (!sortColumn) return memoizedRows;\n\n return sortDirection === \"asc\"\n ? memoizedRows.sort((a, b) =>\n String(a.cells[sortColumn]).localeCompare(String(b.cells[sortColumn])),\n )\n : memoizedRows.sort((a, b) =>\n String(b.cells[sortColumn]).localeCompare(String(a.cells[sortColumn])),\n );\n }, [memoizedRows, sortColumn, sortDirection]);\n\n const totalPages = useMemo(\n () => Math.ceil(sortedRows.length / itemsPerPage),\n [sortedRows.length],\n );\n\n const paginatedRows = useMemo(() => {\n if (!pagination || sortedRows.length <= itemsPerPage) return sortedRows;\n\n const startIndex = (currentPage - 1) * itemsPerPage;\n\n return sortedRows.slice(startIndex, startIndex + itemsPerPage);\n }, [sortedRows, currentPage, pagination]);\n\n const isLastPage = currentPage === totalPages;\n const hasLimitedRows = paginatedRows.length < 20;\n\n const scrollToTop = useCallback(() => {\n if (tableHeaderRef.current) {\n tableHeaderRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n });\n }\n }, []);\n\n const handlePrevPage = useCallback(() => {\n setCurrentPage((prev) => Math.max(1, prev - 1));\n scrollToTop();\n }, [scrollToTop]);\n\n const handleNextPage = useCallback(() => {\n setCurrentPage((prev) => Math.min(totalPages, prev + 1));\n scrollToTop();\n }, [totalPages, scrollToTop]);\n\n const toggleRow = useCallback((id: string) => {\n setExpanded((prev) => {\n const next = new Set(prev);\n\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n const row = document.getElementById(id);\n\n row?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n }\n\n return next;\n });\n }, []);\n\n const handleSort = useCallback((columnKey: string) => {\n setSortColumn((prev) => {\n if (prev === columnKey) {\n setSortDirection((d) => (d === \"asc\" ? \"desc\" : \"asc\"));\n\n return columnKey;\n }\n setSortDirection(\"asc\");\n\n return columnKey;\n });\n }, []);\n\n const getSortButtonOpacity = useCallback(\n (colKey: string): string => {\n return sortColumn === colKey ? \"$default\" : \"$light\";\n },\n [sortColumn],\n );\n\n const renderLoadingState = useCallback((): JSX.Element => {\n return (\n <Stack css={{ alignItems: \"center\", gap: \"$medium\" }}>\n <Loading />\n <Text as=\"small\" css={{ opacity: \"$light\" }}>\n Loading data...\n </Text>\n </Stack>\n );\n }, []);\n\n const renderErrorState = useCallback((): JSX.Element => {\n return (\n <Stack css={{ alignItems: \"center\", gap: \"$small\" }}>\n <Badge icon={<Icon icon={<WarningIcon />} />}>{error}</Badge>\n </Stack>\n );\n }, [error]);\n\n const renderEmptyState = useCallback((): JSX.Element => {\n return (\n <Text as=\"small\" css={{ opacity: \"$light\" }}>\n No data available\n </Text>\n );\n }, []);\n\n useEffect(() => {\n if (!kbd || !pagination) return;\n\n function handleKeyDown(event: KeyboardEvent): void {\n if ((event.ctrlKey || event.metaKey) && event.key === \"ArrowLeft\") {\n event.preventDefault();\n handlePrevPage();\n } else if ((event.ctrlKey || event.metaKey) && event.key === \"ArrowRight\") {\n event.preventDefault();\n handleNextPage();\n }\n }\n\n document.addEventListener(\"keydown\", handleKeyDown);\n\n return (): void => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [kbd, pagination, handlePrevPage, handleNextPage]);\n\n const renderDesktopRow = useCallback(\n (row: ITable[\"rows\"][0], isSubRow = false) => {\n const hasSubRows = Boolean(row.subRows?.length);\n const isExpanded = expanded.has(row.id);\n const isFullWidth = Object.keys(row.cells).length === 1;\n const RowComponent = isSubRow ? TableSubRowStyled : TableRowAnimatedStyled;\n const CellComponent = isSubRow ? TableSubCellStyled : TableCellStyled;\n\n return (\n <Fragment key={row.id}>\n <RowComponent id={row.id}>\n {isFullWidth ? (\n <CellComponent colSpan={memoizedColumns.length} isFullWidth>\n {isSubRow ? (\n <Box>{row.cells[Object.keys(row.cells)[0]]}</Box>\n ) : (\n row.cells[Object.keys(row.cells)[0]]\n )}\n </CellComponent>\n ) : (\n memoizedColumns.map((col) => (\n <CellComponent\n key={`${row.id}-${col.key}`}\n align={col.align}\n css={{\n width: col.width || `calc(100% / ${memoizedColumns.length})`,\n }}\n hasLimitedRows={!isSubRow && hasLimitedRows}\n isAction={col.key === \"actions\"}>\n <TableCellBlockStyled\n css={{\n justifyContent: col.key === \"actions\" ? \"flex-end\" : \"flex-start\",\n }}>\n {col.key === \"actions\" && hasSubRows && !isSubRow && (\n <Button\n small\n theme=\"minimal\"\n onClick={(e) => {\n e.stopPropagation();\n toggleRow(row.id);\n }}>\n {isExpanded ? (\n <Icon icon={<CaretDownIcon />} />\n ) : (\n <Icon icon={<CaretRightIcon />} />\n )}\n </Button>\n )}\n {row.cells[col.key]}\n </TableCellBlockStyled>\n </CellComponent>\n ))\n )}\n </RowComponent>\n {isExpanded && hasSubRows && row.subRows?.map((subRow) => renderDesktopRow(subRow, true))}\n </Fragment>\n );\n },\n [expanded, memoizedColumns, toggleRow, hasLimitedRows],\n );\n\n const renderMobileCard = useCallback(\n (row: ITable[\"rows\"][0], isSubRow = false) => {\n const hasSubRows = Boolean(row.subRows?.length);\n const isExpanded = expanded.has(row.id);\n const isFullWidth = Object.keys(row.cells).length === 1;\n\n return (\n <Fragment key={row.id}>\n <Box theme={isSubRow ? \"border\" : \"default\"}>\n {isFullWidth ? (\n <div>{row.cells[Object.keys(row.cells)[0]]}</div>\n ) : (\n <>\n {memoizedColumns\n .filter((col) => col.key !== \"actions\")\n .map((col) => (\n <TableMobileRowStyled key={`${row.id}-${col.key}`}>\n <TableMobileLabelStyled>{col.label}</TableMobileLabelStyled>\n <TableMobileValueStyled>{row.cells[col.key]}</TableMobileValueStyled>\n </TableMobileRowStyled>\n ))}\n\n {(row.cells.actions || (hasSubRows && !isSubRow)) && (\n <TableMobileRowStyled isActions>\n <TableMobileValueStyled isActions>\n {hasSubRows && !isSubRow && (\n <Button\n small\n theme=\"minimal\"\n onClick={(e) => {\n e.stopPropagation();\n toggleRow(row.id);\n }}>\n {isExpanded ? (\n <Icon icon={<CaretDownIcon />} />\n ) : (\n <Icon icon={<CaretRightIcon />} />\n )}\n </Button>\n )}\n {row.cells.actions}\n </TableMobileValueStyled>\n </TableMobileRowStyled>\n )}\n </>\n )}\n </Box>\n {isExpanded && hasSubRows && row.subRows?.map((subRow) => renderMobileCard(subRow, true))}\n </Fragment>\n );\n },\n [expanded, memoizedColumns, toggleRow],\n );\n\n return (\n <TableStyled css={css}>\n <TableCoreStyled ref={tableRef} aria-busy={loading || undefined}>\n <thead>\n <TableRowStyled ref={tableHeaderRef}>\n {memoizedColumns.map((col) => (\n <TableHeaderCellStyled\n key={col.key}\n align={col.align}\n css={{\n width: col.width || `calc(100% / ${memoizedColumns.length})`,\n }}\n scope=\"col\">\n <div\n aria-sort={\n col.sortable && sortColumn === col.key\n ? sortDirection === \"asc\"\n ? \"ascending\"\n : \"descending\"\n : undefined\n }>\n {col.label}\n {col.sortable && (\n <Button\n css={{\n \"&:hover\": {\n backgroundColor: \"$surface\",\n opacity: 1,\n },\n opacity: getSortButtonOpacity(col.key),\n transition: \"$default\",\n }}\n small\n theme=\"minimal\"\n onClick={() => handleSort(col.key)}>\n {sortColumn === col.key ? (\n sortDirection === \"asc\" ? (\n <Icon icon={<ArrowUpIcon />} />\n ) : (\n <Icon icon={<ArrowDownIcon />} />\n )\n ) : (\n <Icon icon={<ArrowUpIcon />} />\n )}\n </Button>\n )}\n </div>\n </TableHeaderCellStyled>\n ))}\n </TableRowStyled>\n </thead>\n <tbody>\n {error ? (\n <tr>\n <TableEmptyStateCellStyled colSpan={columns.length}>\n {renderErrorState()}\n </TableEmptyStateCellStyled>\n </tr>\n ) : loading ? (\n <tr>\n <TableEmptyStateCellStyled colSpan={columns.length}>\n {renderLoadingState()}\n </TableEmptyStateCellStyled>\n </tr>\n ) : hasData ? (\n paginatedRows.map((row) => renderDesktopRow(row))\n ) : (\n <tr>\n <TableEmptyStateCellStyled colSpan={columns.length}>\n {renderEmptyState()}\n </TableEmptyStateCellStyled>\n </tr>\n )}\n </tbody>\n </TableCoreStyled>\n\n <TableMobileViewStyled>\n {error ? (\n <Box>\n <Stack css={{ alignItems: \"center\", gap: \"$small\", textAlign: \"center\" }}>\n {renderErrorState()}\n </Stack>\n </Box>\n ) : loading ? (\n <Box>\n <Stack\n css={{\n alignItems: \"center\",\n gap: \"$medium\",\n textAlign: \"center\",\n }}>\n {renderLoadingState()}\n </Stack>\n </Box>\n ) : hasData ? (\n paginatedRows.map((row) => renderMobileCard(row))\n ) : (\n <Box>\n <Stack\n css={{\n alignItems: \"center\",\n gap: \"$medium\",\n textAlign: \"center\",\n }}>\n {renderEmptyState()}\n </Stack>\n </Box>\n )}\n </TableMobileViewStyled>\n\n {showPagination && (\n <TablePaginationBlockStyled>\n <Text as=\"small\">\n Page {currentPage} of {totalPages} ({sortedRows.length} total)\n </Text>\n <Stack>\n <Button\n disabled={isFirstPage}\n icon={<Icon icon={<ArrowLeftIcon />} />}\n inline=\"small\"\n small\n onClick={handlePrevPage}>\n Previous\n </Button>\n <Button\n disabled={isLastPage}\n icon={<Icon icon={<ArrowRightIcon />} />}\n iconPosition=\"right\"\n small\n onClick={handleNextPage}>\n Next\n </Button>\n </Stack>\n </TablePaginationBlockStyled>\n )}\n </TableStyled>\n );\n}\n","import { fadeIn, styled } from \"../../stitches.config\";\n\nconst cellPaddingBase = {\n \"&:first-child\": {\n paddingLeft: \"$medium\",\n },\n \"&:last-child\": {\n paddingRight: \"$medium\",\n },\n};\n\nconst alignVariants = {\n center: { textAlign: \"center\" },\n left: { textAlign: \"left\" },\n right: { textAlign: \"right\" },\n} as const;\n\nconst rowHoverBase = {\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n transition: \"$fast\",\n },\n \"&:last-child\": {\n borderBottom: \"none\",\n },\n borderBottom: \"1px solid $borderLight\",\n transition: \"$default\",\n};\n\nexport const TableStyled = styled(\"div\", {\n backgroundColor: \"$surface\",\n border: \"1px solid $border\",\n borderBottomColor: \"$borderBottom\",\n borderRadius: \"$default\",\n borderTopColor: \"$borderLight\",\n boxShadow: \"$subtle\",\n overflow: \"hidden\",\n phone: {\n backgroundColor: \"transparent\",\n border: \"none\",\n borderRadius: 0,\n boxShadow: \"none\",\n overflow: \"visible\",\n },\n position: \"relative\",\n transition: \"$default\",\n width: \"100%\",\n});\n\nexport const TableCoreStyled = styled(\"table\", {\n borderCollapse: \"separate\",\n borderSpacing: 0,\n fontSize: \"$default\",\n phone: {\n display: \"none\",\n },\n tableLayout: \"fixed\",\n width: \"100%\",\n});\n\nexport const TableMobileViewStyled = styled(\"div\", {\n display: \"none\",\n phone: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"$small\",\n },\n});\n\nexport const TableRowStyled = styled(\"tr\", {\n ...rowHoverBase,\n \"tbody &\": {\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n },\n },\n});\n\nexport const TableMobileRowStyled = styled(\"div\", {\n \"&:not(:last-child)\": {\n borderBottom: \"1px solid $borderLight\",\n marginBottom: \"$smaller\",\n paddingBottom: \"$smaller\",\n },\n alignItems: \"flex-start\",\n display: \"flex\",\n gap: \"$small\",\n justifyContent: \"space-between\",\n padding: \"$smaller 0\",\n variants: {\n isActions: {\n true: {\n alignItems: \"center\",\n borderBottom: \"none\",\n justifyContent: \"flex-end\",\n marginBottom: 0,\n marginTop: \"$small\",\n paddingBottom: 0,\n paddingTop: \"$small\",\n },\n },\n },\n});\n\nexport const TableMobileLabelStyled = styled(\"span\", {\n color: \"$text\",\n fontFamily: \"$heading\",\n fontSize: \"$small\",\n fontWeight: 600,\n minWidth: \"50px\",\n opacity: \"$light\",\n});\n\nexport const TableMobileValueStyled = styled(\"div\", {\n alignItems: \"center\",\n color: \"$text\",\n display: \"flex\",\n flex: 1,\n fontSize: \"$default\",\n gap: \"$smaller\",\n justifyContent: \"flex-end\",\n textAlign: \"right\",\n variants: {\n isActions: {\n true: {\n flex: \"0 0 auto\",\n justifyContent: \"flex-end\",\n },\n },\n },\n});\n\nexport const TableCellStyled = styled(\"td\", {\n ...cellPaddingBase,\n borderBottom: \"1px solid $border\",\n color: \"$text\",\n fontSize: \"$default\",\n fontWeight: 400,\n lineHeight: \"$default\",\n padding: \"$medium $medium\",\n variants: {\n align: alignVariants,\n hasLimitedRows: {\n true: {\n padding: \"$medium $medium\",\n },\n },\n isAction: {\n true: {\n textAlign: \"right\",\n width: \"auto\",\n },\n },\n isFullWidth: {\n true: {\n textAlign: \"center\",\n },\n },\n },\n verticalAlign: \"middle\",\n});\n\nexport const TableHeaderCellStyled = styled(\"th\", {\n ...cellPaddingBase,\n \"& > div\": {\n alignItems: \"center\",\n display: \"inline-flex\",\n gap: \"$smaller\",\n },\n backgroundColor: \"$surfaceLight\",\n borderBottom: \"1px solid $border\",\n color: \"$text\",\n fontFamily: \"$heading\",\n fontSize: \"$small\",\n fontWeight: 600,\n padding: \"$small $medium\",\n textAlign: \"left\",\n variants: {\n align: alignVariants,\n },\n verticalAlign: \"middle\",\n});\n\nexport const TableRowAnimatedStyled = styled(TableRowStyled, {\n animation: `${fadeIn} 200ms ease-in-out`,\n});\n\nexport const TablePaginationBlockStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$surfaceLight\",\n borderTop: \"1px solid $border\",\n display: \"flex\",\n gap: \"$medium\",\n justifyContent: \"space-between\",\n padding: \"$small $medium\",\n phone: {\n alignItems: \"stretch\",\n backgroundColor: \"transparent\",\n border: \"none\",\n flexDirection: \"column\",\n gap: \"$small\",\n marginTop: \"$medium\",\n padding: \"$medium 0\",\n },\n width: \"100%\",\n});\n\nexport const TableCellBlockStyled = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n gap: \"$smaller\",\n minHeight: \"$small\",\n width: \"100%\",\n});\n\nexport const TableEmptyStateCellStyled = styled(\"td\", {\n padding: \"40px 0\",\n textAlign: \"center\",\n});\n\nexport const TableSubRowStyled = styled(\"tr\", {\n \"&:hover\": {\n backgroundColor: \"$surface\",\n },\n \"&:last-child\": {\n borderBottom: \"none\",\n },\n backgroundColor: \"$surface\",\n borderBottom: \"1px solid $borderLight\",\n transition: \"$default\",\n});\n\nexport const TableSubCellStyled = styled(\"td\", {\n backgroundColor: \"transparent\",\n color: \"$text\",\n fontSize: \"$small\",\n fontWeight: 400,\n padding: \"$medium\",\n variants: {\n align: alignVariants,\n isAction: {\n true: {\n textAlign: \"right\",\n width: \"auto\",\n },\n },\n isFullWidth: {\n true: {\n paddingLeft: \"$medium\",\n paddingRight: \"$medium\",\n textAlign: \"left\",\n },\n },\n },\n verticalAlign: \"top\",\n});\n\nexport default TableStyled;\n","import { type JSX } from \"react\";\n\nimport { type ITabs } from \"../../index\";\nimport { TabsListStyled, TabsStyled, TabsTriggerStyled } from \"./styles\";\n\nexport default function Tabs({ active, options, setActive }: ITabs): JSX.Element {\n return (\n <TabsStyled>\n <TabsListStyled>\n {options.map((option) => (\n <TabsTriggerStyled\n key={option.value}\n active={active === option.value}\n type=\"button\"\n onClick={() => setActive(option.value)}>\n {option.label}\n </TabsTriggerStyled>\n ))}\n </TabsListStyled>\n </TabsStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const TabsStyled = styled(\"div\", {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"$medium\",\n maxWidth: \"100%\",\n width: \"fit-content\",\n});\n\nexport const TabsListStyled = styled(\"div\", {\n // Custom scrollbar styling for webkit browsers\n \"&::-webkit-scrollbar\": {\n height: \"8px\",\n },\n \"&::-webkit-scrollbar-thumb\": {\n \"&:hover\": {\n backgroundColor: \"$borderStrong\",\n },\n backgroundColor: \"$border\",\n borderRadius: \"$small\",\n },\n \"&::-webkit-scrollbar-track\": {\n backgroundColor: \"$surface\",\n borderRadius: \"$small\",\n },\n // Box-like container for tabs\n backgroundColor: \"$surface\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$subtle\",\n display: \"inline-flex\",\n flexShrink: 0,\n gap: \"$smallest\",\n maxWidth: \"100%\",\n overflowX: \"auto\",\n overflowY: \"hidden\",\n padding: \"$smaller\",\n\n scrollbarColor: \"$border $surface\",\n scrollbarWidth: \"thin\",\n width: \"fit-content\",\n});\n\nexport const TabsTriggerStyled = styled(\"button\", {\n \"&:active\": {\n transform: \"scale(0.98)\",\n transition: \"$fast\",\n },\n \"&:disabled\": {\n cursor: \"not-allowed\",\n opacity: \"$light\",\n },\n \"&:focus-visible\": {\n outline: \"2px solid $yellow\",\n outlineOffset: \"2px\",\n },\n appearance: \"none\",\n border: \"none\",\n borderRadius: \"$small\",\n color: \"$text\",\n cursor: \"pointer\",\n fontFamily: \"$default\",\n fontSize: \"$default\",\n fontWeight: 400,\n lineHeight: \"$default\",\n minHeight: \"$medium\",\n padding: \"$smallest $small\",\n transition: \"$default\",\n variants: {\n active: {\n false: {\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n },\n backgroundColor: \"transparent\",\n },\n true: {\n \"&:hover\": {\n boxShadow: \"$medium\",\n opacity: 0.95,\n transform: \"translateY(-1px)\",\n },\n backgroundColor: \"$text\",\n boxShadow: \"$default\",\n color: \"$background\",\n },\n },\n },\n whiteSpace: \"nowrap\",\n});\n\nexport const TabsContentStyled = styled(\"div\", {\n animation: \"$fadeInContent 0.3s ease-in-out\",\n width: \"100%\",\n});\n","import type { JSX } from \"react\";\n\nimport { Loading, type ILoadingOverlay } from \"../../../index\";\nimport { LoadingOverlayStyled, LoadingOverlayTitleStyled } from \"../styles\";\n\nexport default function LoadingOverlay({ title }: ILoadingOverlay): JSX.Element {\n return (\n <LoadingOverlayStyled>\n <Loading />\n <LoadingOverlayTitleStyled>{title}</LoadingOverlayTitleStyled>\n </LoadingOverlayStyled>\n );\n}\n","import type { JSX } from \"react\";\n\nimport { default as NextImage } from \"next/image\";\n\nimport { type IImage } from \"../../index\";\nimport { ImageStyled } from \"./styles\";\n\nexport default function Image({\n borderRadius,\n css,\n fill,\n fillFit,\n fillHeight = \"100%\",\n fillPosition = \"center\",\n quality = 90,\n ...rest\n}: IImage): JSX.Element {\n return (\n <ImageStyled\n css={{\n ...(borderRadius && {\n borderRadius: `$${borderRadius}`,\n img: {\n borderRadius: `$${borderRadius}`,\n },\n }),\n height: fillHeight,\n ...css,\n }}>\n <NextImage\n {...rest}\n fill={fill}\n quality={quality}\n style={{\n objectFit: fill ? fillFit || \"cover\" : \"contain\",\n objectPosition: fillPosition,\n }}\n />\n </ImageStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nexport const ImageStyled = styled(\"div\", {\n height: \"100%\",\n overflow: \"hidden\",\n position: \"relative\",\n transition: \"$default\",\n width: \"100%\",\n});\n","import { JSX, ReactNode } from \"react\";\n\nimport { useNodesLogic } from \"./hooks\";\nimport { ConnectingLine, NodeRow, NodesContainer, NodesSVG } from \"./styles\";\n\ninterface INodes {\n height?: number;\n nodes: Array<{ children: ReactNode; color?: string }>;\n parent: ReactNode;\n}\n\nexport default function Nodes({ height, nodes, parent }: INodes): JSX.Element {\n const { containerRef, nodesRef, parentRef, paths } = useNodesLogic(nodes, parent);\n\n const hasCustomHeight = Boolean(height);\n const containerHeight = hasCustomHeight ? `${height}px` : undefined;\n\n const renderNode = (\n node: { children: ReactNode; color?: string },\n index: number,\n ): JSX.Element => {\n return (\n <div key={index} ref={(el) => void (nodesRef.current[index] = el)}>\n {node.children}\n </div>\n );\n };\n\n const renderConnectingLines = (): JSX.Element => (\n <NodesSVG>\n {/* Base lines */}\n {paths.map((path, i) => (\n <ConnectingLine key={`base-${i}`} css={{ stroke: \"$border\" }} d={path} />\n ))}\n {/* Animated flow lines */}\n {paths.map((path, i) => {\n const nodeColor = nodes[i]?.color;\n const strokeColor = nodeColor ? `$${nodeColor}` : \"$text\";\n\n return <ConnectingLine key={`flow-${i}`} animate css={{ stroke: strokeColor }} d={path} />;\n })}\n </NodesSVG>\n );\n\n return (\n <NodesContainer ref={containerRef} css={{ height: containerHeight }}>\n <NodeRow>{nodes.map(renderNode)}</NodeRow>\n\n {renderConnectingLines()}\n\n <NodeRow>\n <div ref={parentRef}>{parent}</div>\n </NodeRow>\n </NodesContainer>\n );\n}\n","import { useCallback, useEffect, useRef, useState, ReactNode, RefObject } from \"react\";\n\nconst CALCULATION_DELAY = 100;\nconst RESIZE_DEBOUNCE_DELAY = 100;\nconst SPREAD_FACTOR = 0.6;\nconst CURVE_INTENSITY = 0.3;\n\nconst debounce = <T extends unknown[]>(\n fn: (...args: T) => void,\n delay: number,\n): ((...args: T) => void) => {\n let timeoutId: ReturnType<typeof setTimeout>;\n\n return (...args: T): void => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n};\n\nconst createPath = (\n start: { x: number; y: number },\n end: { x: number; y: number; width: number },\n index: number,\n total: number,\n): string => {\n const totalDistance = end.y - start.y;\n const spreadWidth = end.width * SPREAD_FACTOR;\n const spreadStep = spreadWidth / Math.max(total - 1, 1);\n const entryX = end.x - spreadWidth / 2 + index * spreadStep;\n\n const controlPoint1Y = start.y + totalDistance * CURVE_INTENSITY;\n const controlPoint2Y = end.y - totalDistance * CURVE_INTENSITY;\n\n return `M ${start.x} ${start.y} C ${start.x} ${controlPoint1Y}, ${entryX} ${controlPoint2Y}, ${entryX} ${end.y}`;\n};\n\nexport const useNodeRefs = (): {\n nodesRef: RefObject<(HTMLDivElement | null)[]>;\n parentRef: RefObject<HTMLDivElement | null>;\n containerRef: RefObject<HTMLDivElement | null>;\n getNodeRefs: () => (HTMLDivElement | null)[];\n getContainerRect: () => DOMRect | undefined;\n getParentRect: () => DOMRect | undefined;\n} => {\n const nodesRef = useRef<(HTMLDivElement | null)[]>([]);\n const parentRef = useRef<HTMLDivElement | null>(null);\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n const getNodeRefs = (): (HTMLDivElement | null)[] => nodesRef.current;\n const getContainerRect = (): DOMRect | undefined => containerRef.current?.getBoundingClientRect();\n const getParentRect = (): DOMRect | undefined => parentRef.current?.getBoundingClientRect();\n\n return {\n containerRef,\n getContainerRect,\n getNodeRefs,\n getParentRect,\n nodesRef,\n parentRef,\n };\n};\n\nexport const useNodePaths = (\n nodeCount: number,\n getContainerRect: () => DOMRect | undefined,\n getParentRect: () => DOMRect | undefined,\n getNodeRefs: () => (HTMLDivElement | null)[],\n): {\n paths: string[];\n calculatePaths: () => void;\n} => {\n const [paths, setPaths] = useState<string[]>([]);\n\n const calculateParentCenter = (\n containerRect: DOMRect,\n parentRect: DOMRect,\n ): { x: number; y: number; width: number } => ({\n width: parentRect.width,\n x: parentRect.left + parentRect.width / 2 - containerRect.left,\n y: parentRect.top - containerRect.top,\n });\n\n const calculateNodePosition = (\n nodeRect: DOMRect,\n containerRect: DOMRect,\n ): { x: number; y: number } => ({\n x: nodeRect.left + nodeRect.width / 2 - containerRect.left,\n y: nodeRect.bottom - containerRect.top,\n });\n\n const calculatePaths = useCallback((): void => {\n const containerRect = getContainerRect();\n const parentRect = getParentRect();\n\n if (!containerRect || !parentRect) return;\n\n const parentCenter = calculateParentCenter(containerRect, parentRect);\n const nodeRefs = getNodeRefs();\n\n const newPaths = nodeRefs.map((nodeRef, index) => {\n if (!nodeRef) return \"\";\n\n const nodeRect = nodeRef.getBoundingClientRect();\n const nodePosition = calculateNodePosition(nodeRect, containerRect);\n\n return createPath(nodePosition, parentCenter, index, nodeCount);\n });\n\n setPaths(newPaths);\n }, [nodeCount, getContainerRect, getParentRect, getNodeRefs]);\n\n return {\n calculatePaths,\n paths,\n };\n};\n\nexport const useResizeHandler = (\n calculatePaths: () => void,\n nodes: { children: ReactNode; color?: string }[],\n parent: ReactNode,\n): void => {\n useEffect(() => {\n const timer = setTimeout(calculatePaths, CALCULATION_DELAY);\n const debouncedResize = debounce(calculatePaths, RESIZE_DEBOUNCE_DELAY);\n\n window.addEventListener(\"resize\", debouncedResize);\n\n return (): void => {\n clearTimeout(timer);\n window.removeEventListener(\"resize\", debouncedResize);\n };\n }, [calculatePaths, nodes, parent]);\n};\n\nexport const useNodesLogic = (\n nodes: { children: ReactNode; color?: string }[],\n parent: ReactNode,\n): {\n nodesRef: RefObject<(HTMLDivElement | null)[]>;\n parentRef: RefObject<HTMLDivElement | null>;\n containerRef: RefObject<HTMLDivElement | null>;\n paths: string[];\n calculatePaths: () => void;\n} => {\n const nodeCount = nodes.length;\n\n const { containerRef, getContainerRect, getNodeRefs, getParentRect, nodesRef, parentRef } =\n useNodeRefs();\n\n const { calculatePaths, paths } = useNodePaths(\n nodeCount,\n getContainerRect,\n getParentRect,\n getNodeRefs,\n );\n\n useResizeHandler(calculatePaths, nodes, parent);\n\n return {\n calculatePaths,\n containerRef,\n nodesRef,\n parentRef,\n paths,\n };\n};\n","import { keyframes, styled } from \"../../stitches.config\";\n\nconst flowDown = keyframes({\n \"0%\": {\n strokeDashoffset: 550,\n },\n \"100%\": {\n strokeDashoffset: 0,\n },\n});\n\nexport const NodesContainer = styled(\"div\", {\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n height: \"500px\",\n justifyContent: \"space-between\",\n overflow: \"hidden\",\n position: \"relative\",\n width: \"100%\",\n});\n\nexport const NodeRow = styled(\"div\", {\n display: \"flex\",\n gap: \"$medium\",\n justifyContent: \"center\",\n position: \"relative\",\n width: \"100%\",\n zIndex: 1,\n});\n\nexport const NodesSVG = styled(\"svg\", {\n height: \"100%\",\n inset: 0,\n pointerEvents: \"none\",\n position: \"absolute\",\n width: \"100%\",\n});\n\nexport const ConnectingLine = styled(\"path\", {\n fill: \"none\",\n opacity: \"$light\",\n stroke: \"$text\",\n strokeLinecap: \"round\",\n strokeWidth: \"0.5rem\",\n transition: \"opacity 200ms ease-out\",\n\n variants: {\n animate: {\n true: {\n animation: `${flowDown} 5s linear infinite`,\n opacity: \"$default\",\n strokeDasharray: \"50, 500\",\n },\n },\n },\n});\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type CSS } from \"@stitches/react\";\nimport { ChangeEvent, useRef, useState, type JSX } from \"react\";\nimport toast from \"react-hot-toast\";\n\nimport { CheckCircleIcon, WarningIcon, ArrowUpIcon, PlusIcon } from \"../../icons\";\nimport { Badge, Button, Icon, Loading, Text } from \"../../index\";\nimport {\n UploadCoreStyled,\n UploadFooterStyled,\n UploadInputStyled,\n UploadStyled,\n UploadCallbackStyled,\n} from \"./styles\";\n\ninterface IUpload<T extends boolean = false> {\n accept?: string;\n css?: CSS;\n disabled?: boolean;\n error?: boolean;\n errorMessage?: string;\n loading?: boolean;\n maxFiles?: number;\n maxSize?: number;\n multiple?: T;\n onUpload: T extends true ? (files: FileList) => void : (file: File) => void;\n success?: boolean;\n successMessage?: string;\n width?: number | string;\n}\n\nexport default function Upload<T extends boolean>({\n accept,\n css,\n disabled,\n error,\n errorMessage,\n loading,\n maxFiles = 25,\n maxSize = 5000000,\n multiple,\n onUpload,\n success,\n successMessage,\n width,\n}: IUpload<T>): JSX.Element {\n const ref = useRef<HTMLInputElement>(null);\n const [forceError, setForceError] = useState(error);\n\n const maxSizeMB = maxSize / 1000000;\n const isUploadSuccessful = success;\n const hasError = forceError || error;\n const hasCallback = hasError || success;\n const isDisabled = disabled || loading;\n\n function formatAccept(accept: string | undefined): string | undefined {\n const capitalize = (s: string): string => {\n return s.charAt(0).toUpperCase() + s.slice(1);\n };\n\n if (!accept) {\n return \"Any file type\";\n }\n\n if (accept.includes(\"/*\")) {\n return capitalize(accept.replace(\"/*\", \"s\"));\n }\n\n return capitalize(accept);\n }\n\n function checkFileSize(size: number): boolean {\n if (size > maxSize) {\n setForceError(true);\n toast.error(`File size must be less than ${maxSizeMB}MB`);\n\n return false;\n }\n\n return true;\n }\n\n function handleUpload(event: ChangeEvent<HTMLInputElement>): void {\n if (isDisabled) return;\n\n const { files } = event.target;\n\n if (files && files.length > 0) {\n setForceError(false);\n const filesArray = Array.from(files);\n const validFiles = filesArray.filter(({ size }) => checkFileSize(size));\n\n if (validFiles.length === 0) {\n return;\n }\n\n if (multiple && validFiles.length > maxFiles) {\n toast.error(`You can only upload up to ${maxFiles} files at once.`);\n\n return;\n }\n\n if (multiple) {\n onUpload(files as any);\n } else {\n onUpload(validFiles[0] as any);\n }\n }\n\n event.target.value = \"\";\n }\n\n function handleButtonClick(): void {\n if (isDisabled) return;\n\n if (ref && ref.current) {\n ref.current.click();\n }\n }\n\n return (\n <UploadStyled\n css={{\n maxWidth: width || \"100%\",\n width: width || \"100%\",\n ...css,\n }}\n disabled={isDisabled}>\n <UploadCoreStyled>\n <Button\n block\n disabled={isDisabled}\n icon={\n isUploadSuccessful ? (\n <Icon icon={<CheckCircleIcon />} />\n ) : multiple ? (\n <Icon icon={<PlusIcon />} />\n ) : (\n <Icon icon={<ArrowUpIcon />} />\n )\n }\n onClick={() => handleButtonClick()}>\n {isUploadSuccessful ? \"Uploaded\" : multiple ? \"Upload files\" : \"Upload file\"}\n </Button>\n <UploadInputStyled\n ref={ref}\n accept={accept}\n disabled={isDisabled}\n multiple={multiple}\n type=\"file\"\n onChange={(event) => handleUpload(event)}\n />\n </UploadCoreStyled>\n\n <UploadFooterStyled>\n <Text accent as=\"small\" bottom=\"none\">\n <a\n href={`https://google.com/search?q=${accept}%20file%20format`}\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n {formatAccept(accept)} (Max {maxSizeMB}MB)\n </a>\n </Text>\n {loading && <Loading />}\n </UploadFooterStyled>\n\n {hasCallback && (\n <UploadCallbackStyled>\n {hasError && (\n <Badge\n icon={!errorMessage ? <Icon icon={<WarningIcon />} /> : undefined}\n theme=\"orange\">\n {errorMessage || \"Upload error\"}\n </Badge>\n )}\n {success && (\n <Badge\n icon={!successMessage ? <Icon icon={<CheckCircleIcon />} /> : undefined}\n theme=\"blue\">\n {successMessage || \"Upload successful\"}\n </Badge>\n )}\n </UploadCallbackStyled>\n )}\n </UploadStyled>\n );\n}\n","import { styled } from \"../../stitches.config\";\n\nconst interactiveStyles = {\n borderColor: \"$text\",\n boxShadow: \"$small\",\n};\n\nexport const UploadStyled = styled(\"div\", {\n \"&:focus-within\": interactiveStyles,\n \"&:hover\": interactiveStyles,\n border: \"1px solid $border\",\n borderRadius: \"$medium\",\n position: \"relative\",\n transition: \"$default\",\n variants: {\n disabled: {\n true: {\n \"&:focus-within\": {\n borderColor: \"$border\",\n boxShadow: \"none\",\n },\n \"&:hover\": {\n borderColor: \"$border\",\n boxShadow: \"none\",\n },\n cursor: \"not-allowed\",\n opacity: \"$light\",\n },\n },\n },\n\n width: \"100%\",\n});\n\nexport const UploadCoreStyled = styled(\"div\", {\n padding: \"$medium\",\n width: \"100%\",\n});\n\nexport const UploadInputStyled = styled(\"input\", {\n display: \"none\",\n});\n\nexport const UploadFooterStyled = styled(\"div\", {\n alignItems: \"center\",\n backgroundColor: \"$surfaceLight\",\n borderBottomLeftRadius: \"$medium\",\n borderBottomRightRadius: \"$medium\",\n borderTop: \"1px solid $borderLight\",\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: \"$small $medium\",\n width: \"100%\",\n});\n\nexport const UploadCallbackStyled = styled(\"div\", {\n display: \"block\",\n paddingTop: \"$small\",\n textAlign: \"left\",\n});\n","import { importLibrary } from \"@googlemaps/js-api-loader\";\nimport {\n ChangeEvent,\n KeyboardEvent,\n MouseEvent,\n useEffect,\n useId,\n useState,\n useRef,\n type JSX,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport {\n Input,\n Loading,\n Text,\n useDebounce,\n useOutsideClick,\n useFloatingUI,\n useGoogleMaps,\n type IPlaces,\n} from \"../../index\";\nimport { PlacesStyled, PlacesDropdownStyled, PlacesItemStyled, PlacesEmptyStyled } from \"./styles\";\n\ninterface PlacePrediction {\n description: string;\n place_id: string;\n structured_formatting?: {\n main_text: string;\n secondary_text: string;\n };\n types: string[];\n}\n\ninterface AutocompleteService {\n getPlacePredictions: (\n request: Record<string, unknown>,\n callback: (results: PlacePrediction[] | null, status: string) => void,\n ) => void;\n}\n\nexport default function Places({\n apiKey,\n countries,\n css,\n disabled,\n dropdownCSS,\n dropdownHeight,\n dropdownWidth,\n error,\n errorMessage,\n id,\n loading: externalLoading,\n name,\n onChange,\n onPlaceSelect,\n placeholder = \"Search for places...\",\n success,\n successMessage,\n types,\n value,\n warning,\n warningMessage,\n width,\n ...inputProps\n}: IPlaces): JSX.Element {\n const { contentRef, handleClick, handleClose, isMounted, isOpen, triggerRef } = useFloatingUI();\n const reactId = useId();\n const instanceId = `places-${reactId}`;\n\n const [inputValue, setInputValue] = useState((value as string) || \"\");\n const [predictions, setPredictions] = useState<PlacePrediction[]>([]);\n const [loading, setLoading] = useState(false);\n const [isReady, setIsReady] = useState(false);\n const [selectedPlace, setSelectedPlace] = useState<string>(\"\");\n const [selectionKey, setSelectionKey] = useState(0);\n\n const debouncedValue = useDebounce(inputValue, 300);\n const serviceRef = useRef<unknown>(null);\n\n // Initialize Google Maps (this sets options globally)\n useGoogleMaps({\n apiKey: apiKey || \"\",\n libraries: [\"places\"],\n });\n\n useEffect(() => {\n if (!apiKey || isReady) return;\n\n const initGoogleMaps = async (): Promise<void> => {\n try {\n const placesLibrary = (await importLibrary(\"places\")) as google.maps.PlacesLibrary;\n\n if (placesLibrary?.AutocompleteService) {\n serviceRef.current = new placesLibrary.AutocompleteService();\n setIsReady(true);\n }\n } catch {\n // Places initialization failed - input will remain disabled\n }\n };\n\n initGoogleMaps();\n }, [apiKey, isReady]);\n\n useEffect(() => {\n if (!debouncedValue.trim() || !isOpen || !serviceRef.current) {\n setPredictions([]);\n\n return;\n }\n\n setLoading(true);\n const request = {\n input: debouncedValue,\n ...(countries && { componentRestrictions: { country: countries } }),\n ...(types && { types }),\n };\n\n (serviceRef.current as AutocompleteService).getPlacePredictions(\n request,\n (results: PlacePrediction[] | null, status: string) => {\n setLoading(false);\n setPredictions(status === \"OK\" && results ? results : []);\n },\n );\n }, [debouncedValue, isOpen, countries, types]);\n\n useEffect(() => {\n if (value !== undefined && !selectedPlace) {\n setInputValue(value as string);\n }\n }, [value, selectedPlace]);\n\n function handleInputChange(event: ChangeEvent<HTMLInputElement>): void {\n setInputValue(event.target.value);\n setSelectedPlace(\"\");\n\n if (!isOpen && event.target.value.trim() && isReady) {\n handleClick();\n }\n\n if (onChange) onChange(event);\n }\n\n function handleSelection(prediction: PlacePrediction): void {\n const selectedValue = prediction.description;\n\n setSelectedPlace(selectedValue);\n setInputValue(selectedValue);\n setSelectionKey((prev) => prev + 1);\n handleClose();\n\n if (onChange) {\n const syntheticEvent = {\n currentTarget: { name: name, value: selectedValue },\n preventDefault: () => {},\n stopPropagation: () => {},\n target: { name: name, value: selectedValue },\n } as ChangeEvent<HTMLInputElement>;\n\n onChange(syntheticEvent);\n }\n\n if (onPlaceSelect) onPlaceSelect(prediction);\n }\n\n function handleInputFocus(): void {\n if (!disabled && isReady) {\n handleClick();\n }\n }\n\n function handleInputKeyDown(event: KeyboardEvent): void {\n if (event.key === \"Escape\" && isOpen) {\n event.preventDefault();\n handleClose();\n }\n }\n\n const handleItemClick =\n (prediction: PlacePrediction) =>\n (e: MouseEvent): void => {\n e.stopPropagation();\n handleSelection(prediction);\n };\n\n useOutsideClick(contentRef, handleClose);\n\n return (\n <PlacesStyled css={css}>\n <div ref={triggerRef}>\n <Input\n key={selectionKey}\n {...inputProps}\n aria-controls={`${instanceId}-listbox`}\n aria-expanded={isOpen}\n css={{ width: width || \"100%\", ...css }}\n disabled={disabled || !isReady}\n error={error}\n errorMessage={errorMessage}\n id={id || name}\n loading={externalLoading || !isReady}\n name={name}\n placeholder={isReady ? placeholder : \"Loading...\"}\n success={success}\n successMessage={successMessage}\n value={selectedPlace || inputValue}\n warning={warning}\n warningMessage={warningMessage}\n onChange={(e) => {\n handleInputChange(e);\n }}\n onFocus={() => {\n handleInputFocus();\n }}\n onKeyDown={(e) => {\n handleInputKeyDown(e);\n }}\n />\n </div>\n\n {isMounted &&\n isOpen &&\n createPortal(\n <PlacesDropdownStyled\n ref={contentRef}\n animation={isOpen}\n css={{\n maxWidth: dropdownWidth || \"500px\",\n minWidth: dropdownWidth || \"200px\",\n width: dropdownWidth || \"100%\",\n ...dropdownCSS,\n }}\n id={`${instanceId}-listbox`}\n role=\"listbox\">\n {loading ? (\n <Loading />\n ) : predictions.length > 0 ? (\n predictions.map((prediction) => (\n <PlacesItemStyled\n key={prediction.place_id}\n role=\"option\"\n onClick={handleItemClick(prediction)}>\n {prediction.structured_formatting ? (\n <div>\n <Text as=\"strong\">{prediction.structured_formatting.main_text}</Text>\n <Text as=\"small\">{prediction.structured_formatting.secondary_text}</Text>\n </div>\n ) : (\n <Text as=\"p\" css={{ margin: 0 }}>\n {prediction.description}\n </Text>\n )}\n </PlacesItemStyled>\n ))\n ) : debouncedValue.trim() ? (\n <PlacesEmptyStyled>No places found</PlacesEmptyStyled>\n ) : (\n <PlacesEmptyStyled>Start typing to search</PlacesEmptyStyled>\n )}\n </PlacesDropdownStyled>,\n document.body,\n )}\n </PlacesStyled>\n );\n}\n","import { useEffect, useState } from \"react\";\n\nexport default function useDebounce<T>(value: T, delay?: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay || 500);\n\n return (): void => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import { fadeInUp, fadeOutDown, styled } from \"../../stitches.config\";\n\nexport const PlacesStyled = styled(\"div\", {\n display: \"block\",\n position: \"relative\",\n width: \"100%\",\n});\n\nexport const PlacesDropdownStyled = styled(\"div\", {\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n backgroundColor: \"$surface\",\n border: \"1px solid $borderStrong\",\n borderBottomColor: \"$borderEmphasis\",\n borderRadius: \"$default\",\n borderTopColor: \"$border\",\n boxShadow: \"$medium\",\n lineBreak: \"auto\",\n overflowY: \"auto\",\n padding: \"$smallest $smaller\",\n pointerEvents: \"auto\",\n textAlign: \"left !important\",\n transformOrigin: \"top center\",\n variants: {\n animation: {\n false: {\n animation: `${fadeOutDown} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n true: {\n animation: `${fadeInUp} 200ms ease-out`,\n animationFillMode: \"forwards\",\n reduceMotion: {\n animation: \"none\",\n },\n },\n },\n },\n width: \"100%\",\n willChange: \"transform, opacity\",\n zIndex: \"$select\",\n});\n\nexport const PlacesItemStyled = styled(\"div\", {\n \"&:active\": {\n transform: \"translateY(1px)\",\n },\n \"&:hover\": {\n backgroundColor: \"$surfaceHover\",\n },\n alignItems: \"center\",\n cursor: \"pointer\",\n display: \"flex\",\n gap: \"$small\",\n justifyContent: \"space-between\",\n margin: \"$smaller\",\n padding: \"$smaller $small\",\n textAlign: \"left\",\n transition: \"$default\",\n userSelect: \"none\",\n});\n\nexport const PlacesEmptyStyled = styled(\"div\", {\n color: \"$text\",\n fontSize: \"$small\",\n opacity: \"$light\",\n padding: \"$medium\",\n textAlign: \"center\",\n});\n\nexport default PlacesStyled;\n","import { IconContext } from \"@phosphor-icons/react\";\nimport { useEffect, type JSX } from \"react\";\n\nimport { type IProvider } from \"../../index\";\nimport { darkTheme } from \"../../stitches.config\";\nimport { ProviderStyled, providerReset } from \"./styles\";\nimport { ToastController } from \"./ToastController\";\n\nexport default function Provider({ children, css, dark }: IProvider): JSX.Element {\n const isDarkMode = Boolean(dark);\n\n providerReset();\n\n useEffect(() => {\n if (isDarkMode) {\n document.body.classList.add(darkTheme);\n } else {\n document.body.classList.remove(darkTheme);\n }\n\n return (): void => {\n document.body.classList.remove(darkTheme);\n };\n }, [isDarkMode]);\n\n return (\n <ProviderStyled css={css}>\n <IconContext.Provider value={{ size: 21, weight: \"duotone\" }}>\n <ToastController />\n {children}\n </IconContext.Provider>\n </ProviderStyled>\n );\n}\n","import { darkTheme, globalCss, styled, theme } from \"../../stitches.config\";\n\nexport const ProviderStyled = styled(\"main\", {\n position: \"relative\",\n});\n\nexport const ProviderToastStyled = styled(\"div\", {\n cursor: \"pointer\",\n marginBottom: \"$small\",\n maxWidth: \"400px\",\n minWidth: \"320px\",\n phone: {\n \"&:last-child\": {\n marginBottom: \"$small\",\n },\n margin: \"0 auto\",\n marginBottom: \"0\",\n marginTop: \"$small\",\n maxWidth: \"90%\",\n minWidth: \"unset\",\n },\n pointerEvents: \"all\",\n width: \"100%\",\n});\n\nconst disabledStyles = {\n cursor: \"not-allowed\",\n opacity: \"$light\",\n} as const;\n\nexport const providerReset = globalCss({\n \"*\": {\n boxSizing: \"border-box\",\n margin: 0,\n padding: 0,\n },\n\n \"*:focus\": {\n outline: theme.colors.yellow,\n },\n\n \"::selection\": {\n backgroundColor: theme.colors.text,\n color: theme.colors.background,\n },\n\n \"a, a:visited, a:active, a:hover\": {\n color: \"inherit\",\n textDecoration: \"none\",\n WebkitTapHighlightColor: \"transparent\",\n },\n\n body: {\n [`.${darkTheme}`]: {\n backgroundColor: \"$background\",\n color: \"$text\",\n colorScheme: \"dark\",\n },\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n fontFamily: theme.fonts.default,\n fontFeatureSettings: '\"zero\" 1, \"tnum\" 1, \"calt\" 1, \"liga\" 1, \"case\" 1',\n fontOpticalSizing: \"auto\",\n fontSize: \"17px\", // Explicit 17px base - don't use rem on body\n fontWeight: 400,\n lineHeight: theme.lineHeights.default,\n margin: 0,\n MozOsxFontSmoothing: \"grayscale\",\n overflowX: \"hidden\",\n padding: 0,\n textRendering: \"optimizeLegibility\",\n WebkitFontSmoothing: \"antialiased\",\n },\n\n \"button, input, textarea, select\": {\n \"&:disabled\": disabledStyles,\n cursor: \"pointer\",\n fontFamily: \"inherit\",\n fontSize: \"inherit\",\n },\n\n \"h1, h2, h3, h4, h5, h6\": {\n fontFamily: theme.fonts.heading,\n fontFeatureSettings: '\"zero\" 1, \"tnum\" 1, \"calt\" 1, \"liga\" 1, \"case\" 1',\n fontWeight: 600,\n lineHeight: theme.lineHeights.tight,\n margin: 0,\n textRendering: \"optimizeLegibility\",\n },\n\n html: {\n fontSize: \"100%\", // 17px base - our rem values are already calculated\n scrollBehavior: \"smooth\",\n },\n\n \"img, svg\": {\n display: \"block\",\n maxWidth: \"100%\",\n },\n\n \"input, textarea, select\": {\n cursor: \"text\",\n },\n\n p: {\n lineHeight: theme.lineHeights.default,\n margin: 0,\n },\n\n reduceMotion: {\n \"*:not([data-allow-motion])\": {\n animation: \"none !important\",\n scrollBehavior: \"auto !important\",\n transition: \"none !important\",\n },\n },\n\n svg: {\n alignSelf: \"center\",\n verticalAlign: \"middle\",\n },\n\n \"ul, ol\": {\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n },\n});\n\nexport default ProviderStyled;\n","import dayjs from \"dayjs\";\nimport { useEffect, type JSX } from \"react\";\nimport toast, { Toast, useToaster, Toaster } from \"react-hot-toast\";\n\nimport { CheckCircleIcon, InfoIcon, WarningIcon, XCircleIcon } from \"../../../icons\";\nimport { Box, Icon, Stack, Text, useEventListener, type IToast } from \"../../../index\";\nimport { ProviderToastStyled } from \"../styles\";\n\nconst TOAST_LIMIT = 4;\nconst DEFAULT_DURATION = 3000;\n\nfunction prepareMessage(message: Toast[\"message\"]): string {\n if (!message) return \"No information provided.\";\n\n return message.toString().replace(/\\.$/, \"\");\n}\n\nfunction getToastTheme(type: Toast[\"type\"]): \"green\" | \"red\" | \"orange\" | \"default\" {\n switch (type) {\n case \"success\":\n return \"green\";\n case \"error\":\n return \"red\";\n case \"loading\":\n return \"orange\";\n default:\n return \"default\";\n }\n}\n\nfunction getToastIcon(type: Toast[\"type\"]): JSX.Element {\n switch (type) {\n case \"success\":\n return <CheckCircleIcon />;\n case \"error\":\n return <XCircleIcon />;\n case \"loading\":\n return <WarningIcon />;\n default:\n return <InfoIcon />;\n }\n}\n\nexport function ToastController({\n position = \"top-right\",\n toastOptions,\n ...props\n}: IToast): JSX.Element {\n const { handlers, toasts } = useToaster();\n const { endPause, startPause } = handlers;\n\n const visibleToasts = toasts.filter((t) => t.visible);\n const excessToasts = visibleToasts.filter((_, i) => i >= TOAST_LIMIT);\n const shouldDismissOnEscape = (key: string): boolean => key === \"Escape\" || key === \"Enter\";\n\n const handleKeyboardDismiss = (event: KeyboardEvent): void => {\n if (shouldDismissOnEscape(event.key)) {\n event.preventDefault();\n toast.dismiss();\n }\n };\n\n const handleToastClick = (id: string): void => {\n toast.remove(id);\n };\n\n const renderToast = (t: Toast): JSX.Element => {\n const message = prepareMessage(t.message);\n const theme = getToastTheme(t.type);\n const icon = getToastIcon(t.type);\n\n return (\n <ProviderToastStyled\n onClick={() => handleToastClick(t.id)}\n onMouseEnter={startPause}\n onMouseLeave={endPause}>\n <Box\n footer={\n <Text as=\"small\">\n {t.type ? t.type.charAt(0).toUpperCase() + t.type.slice(1) : \"Info\"} (\n {dayjs().format(\"HH:mm\")})\n </Text>\n }\n small>\n <Stack alignItems=\"center\" direction=\"row\" gap=\"small\" wrap=\"nowrap\">\n <Stack\n css={{\n minWidth: \"35px\",\n }}>\n <Icon\n card\n cardSize=\"small\"\n css={{\n display: \"block\",\n }}\n forceSize={15}\n icon={icon}\n theme={theme}\n />\n </Stack>\n <Text truncate={3}>{message}</Text>\n </Stack>\n </Box>\n </ProviderToastStyled>\n );\n };\n\n useEventListener(\"keydown\", handleKeyboardDismiss);\n\n useEffect(() => {\n excessToasts.forEach((t) => toast.dismiss(t.id));\n }, [toasts, excessToasts]);\n\n return (\n <Toaster\n {...props}\n position={position}\n toastOptions={{\n duration: toastOptions?.duration || DEFAULT_DURATION,\n style: {\n background: \"transparent\",\n padding: 0,\n },\n ...toastOptions,\n }}>\n {renderToast}\n </Toaster>\n );\n}\n","import type { JSX } from \"react\";\n\nimport { MoonIcon, SunIcon, DesktopIcon } from \"../../../icons\";\nimport { useMountSSR, Select, Button, useTheme, Icon, type ISelect } from \"../../../index\";\n\nexport default function ProviderToggle(): JSX.Element {\n const { setTheme, theme } = useTheme();\n const isMounted = useMountSSR();\n\n const options = [\n {\n icon: <Icon icon={<MoonIcon />} />,\n iconPosition: \"right\",\n label: \"Dark\",\n value: \"dark\",\n },\n {\n icon: <Icon icon={<SunIcon />} />,\n iconPosition: \"right\",\n label: \"Light\",\n value: \"light\",\n },\n {\n icon: <Icon icon={<DesktopIcon />} />,\n iconPosition: \"right\",\n label: \"System\",\n value: \"system\",\n },\n ] as ISelect[\"options\"];\n\n const currentTheme = isMounted ? theme : \"system\";\n const currentThemeOption = options?.find((option) => option.value === currentTheme);\n const currentThemeIcon = currentThemeOption?.icon;\n const isCurrentTheme = (value: string): boolean => value === currentTheme;\n\n const handleSelection = (value: string): void => {\n if (isCurrentTheme(value)) {\n return;\n }\n setTheme(value as \"dark\" | \"light\" | \"system\");\n };\n\n const renderTrigger = (): JSX.Element => (\n <Button\n css={{\n textTransform: \"capitalize\",\n }}\n small>\n {currentThemeIcon}\n </Button>\n );\n\n return (\n <Select\n initial={currentTheme}\n options={options}\n trigger={renderTrigger()}\n onSelection={handleSelection}\n />\n );\n}\n","import { useEffect, useState, useCallback } from \"react\";\n\nimport type { TThemeMode, IUseTheme } from \"../types/hooks\";\n\nimport { useLocalStorage, useMountSSR } from \"../index\";\n\nexport default function useTheme(): IUseTheme {\n const isBrowser = useMountSSR();\n const [systemTheme, setSystemTheme] = useState<boolean>(false);\n const [theme, setLocalStorageTheme] = useLocalStorage<TThemeMode>(\"cosmo-ui-theme\", \"system\");\n const [isDarkTheme, setIsDarkTheme] = useState<boolean | undefined>();\n\n const checkDarkMode = (): boolean => {\n return document.documentElement.classList.contains(\"dark\");\n };\n\n const mutateTheme = useCallback(\n (currentTheme: TThemeMode): void => {\n const rootElement = document.documentElement;\n\n rootElement.classList.remove(\"dark\", \"light\");\n\n if (currentTheme === \"dark\" || (currentTheme === \"system\" && systemTheme)) {\n rootElement.classList.add(\"dark\");\n } else {\n rootElement.classList.add(\"light\");\n }\n },\n [systemTheme],\n );\n\n const setTheme = (newTheme: TThemeMode): void => {\n setLocalStorageTheme(newTheme);\n mutateTheme(newTheme);\n };\n\n useEffect(() => {\n if (theme === \"system\") {\n setIsDarkTheme(systemTheme);\n } else {\n setIsDarkTheme(theme === \"dark\");\n }\n\n if (isBrowser) {\n const themeMediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n\n const handleThemeChange = (e: MediaQueryListEvent): void => {\n setSystemTheme(e.matches);\n if (theme === \"system\") {\n mutateTheme(\"system\");\n }\n };\n\n themeMediaQuery.addEventListener(\"change\", handleThemeChange);\n\n setSystemTheme(themeMediaQuery.matches);\n mutateTheme(theme);\n\n const mutationObserver = new MutationObserver(() => {\n setIsDarkTheme(checkDarkMode());\n });\n\n mutationObserver.observe(document.documentElement, {\n attributeFilter: [\"class\"],\n attributes: true,\n });\n\n return (): void => {\n themeMediaQuery.removeEventListener(\"change\", handleThemeChange);\n mutationObserver.disconnect();\n };\n }\n\n return (): void => {};\n }, [isBrowser, mutateTheme, systemTheme, theme]);\n\n return {\n isDarkTheme,\n setTheme,\n theme,\n };\n}\n","import { useState, useEffect } from \"react\";\n\nimport type { TUseLocalStorage } from \"../types/hooks\";\n\nconst isBrowser = typeof window !== \"undefined\";\n\nfunction getStorageValue<T>(key: string, defaultValue: T): T {\n if (!isBrowser) return defaultValue;\n\n const saved = localStorage.getItem(key);\n const initial = saved ? JSON.parse(saved) : defaultValue;\n\n return initial;\n}\n\nexport default function useLocalStorage<T>(key: string, defaultValue: T): TUseLocalStorage<T> {\n const [value, setValue] = useState<T>(() => getStorageValue<T>(key, defaultValue));\n\n useEffect(() => {\n const listener = (e: StorageEvent): void => {\n if (e.storageArea === localStorage && e.key === key) {\n try {\n setValue(e.newValue ? JSON.parse(e.newValue) : defaultValue);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(`Error parsing JSON from local storage key \"${key}\":`, error);\n }\n }\n };\n\n window.addEventListener(\"storage\", listener);\n\n return (): void => {\n window.removeEventListener(\"storage\", listener);\n };\n }, [key, defaultValue]);\n\n useEffect(() => {\n if (isBrowser) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n }, [key, value]);\n\n return [value, setValue];\n}\n","import { useState } from \"react\";\n\nconst isBrowser = typeof window !== \"undefined\";\n\nfunction getStorageValue<T>(key: string): T | null {\n if (!isBrowser) return null;\n\n const saved = localStorage.getItem(key);\n const initial = saved ? JSON.parse(saved) : null;\n\n return initial;\n}\n\nexport default function useLocalStorageReadOnly<T>(key: string): T | null {\n const [value] = useState(() => {\n return getStorageValue<T>(key);\n });\n\n return value;\n}\n","import { useEffect, useMemo, useState } from \"react\";\n\ntype ViewportInfo = {\n heightPx: number;\n widthPx: number;\n supportsSmallVH: boolean;\n supportsDynamicVH: boolean;\n};\n\nfunction detectSupport(): {\n supportsSmallVH: boolean;\n supportsDynamicVH: boolean;\n} {\n if (typeof window === \"undefined\") return { supportsDynamicVH: false, supportsSmallVH: false };\n try {\n const supportsSmallVH = CSS?.supports?.(\"height\", \"100svh\") ?? false;\n const supportsDynamicVH = CSS?.supports?.(\"height\", \"100dvh\") ?? false;\n\n return { supportsDynamicVH, supportsSmallVH };\n } catch {\n return { supportsDynamicVH: false, supportsSmallVH: false };\n }\n}\n\nexport function useViewport(): ViewportInfo {\n const [{ supportsDynamicVH, supportsSmallVH }] = useState(detectSupport);\n const [size, setSize] = useState<{ h: number; w: number }>(() => ({\n h: typeof window !== \"undefined\" ? window.innerHeight : 0,\n w: typeof window !== \"undefined\" ? window.innerWidth : 0,\n }));\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const update = (): void => setSize({ h: window.innerHeight, w: window.innerWidth });\n\n update();\n window.addEventListener(\"resize\", update);\n window.addEventListener(\"orientationchange\", update);\n const vv = window.visualViewport;\n\n vv?.addEventListener(\"resize\", update);\n\n return (): void => {\n window.removeEventListener(\"resize\", update);\n window.removeEventListener(\"orientationchange\", update);\n vv?.removeEventListener(\"resize\", update);\n };\n }, []);\n\n return useMemo(\n () => ({\n heightPx: size.h,\n supportsDynamicVH,\n supportsSmallVH,\n widthPx: size.w,\n }),\n [size.h, size.w, supportsSmallVH, supportsDynamicVH],\n );\n}\n\nexport default useViewport;\n","import { useState, useEffect } from \"react\";\n\nimport type { IUseWindowDimensions } from \"../types/hooks\";\n\nexport default function useWindowDimensions(): IUseWindowDimensions {\n const [windowDimensions, setWindowDimensions] = useState({\n height: typeof window !== \"undefined\" ? window.innerHeight : 0,\n width: typeof window !== \"undefined\" ? window.innerWidth : 0,\n });\n\n useEffect(() => {\n function handleResize(): void {\n setWindowDimensions({\n height: window.innerHeight,\n width: window.innerWidth,\n });\n }\n\n window.addEventListener(\"resize\", handleResize);\n\n return (): void => window.removeEventListener(\"resize\", handleResize);\n }, []);\n\n return windowDimensions;\n}\n"],"names":[],"version":3,"file":"index.js.map"}
|