@deriv-ds/design-intelligence-layer 0.4.4 → 0.4.6
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/README.md +16 -20
- package/dist/index.cjs +361 -3072
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +551 -2909
- package/dist/index.js.map +1 -0
- package/package.json +9 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../components/ui/icon.tsx","../components/ui/accordion.tsx","../lib/utils.ts","../components/ui/badge.tsx","../components/ui/notification.tsx","../components/ui/section-message.tsx","../components/ui/aspect-ratio.tsx","../components/ui/avatar.tsx","../components/ui/tag.tsx","../components/ui/breadcrumb.tsx","../components/ui/button.tsx","../components/ui/chip.tsx","../components/ui/calendar.tsx","../components/ui/card.tsx","../components/ui/carousel.tsx","../components/ui/chart.tsx","../components/ui/checkbox.tsx","../components/ui/collapsible.tsx","../components/ui/list-item.tsx","../components/ui/separator.tsx","../components/ui/combobox.tsx","../components/ui/input-group.tsx","../components/ui/textarea.tsx","../components/ui/command.tsx","../components/ui/dialog.tsx","../components/ui/context-menu.tsx","../components/ui/direction.tsx","../components/ui/drawer.tsx","../components/ui/dropdown-menu.tsx","../components/ui/empty.tsx","../components/ui/field.tsx","../components/ui/label.tsx","../components/ui/form.tsx","../components/ui/hover-card.tsx","../components/ui/input.tsx","../components/ui/search-field.tsx","../components/ui/input-otp.tsx","../components/ui/code-input.tsx","../components/ui/kbd.tsx","../components/ui/link.tsx","../components/ui/native-select.tsx","../components/ui/pagination.tsx","../components/ui/popover.tsx","../components/ui/progress.tsx","../components/ui/radio-group.tsx","../components/ui/resizable.tsx","../components/ui/scroll-area.tsx","../components/ui/select.tsx","../components/ui/sheet.tsx","../components/ui/sidebar.tsx","../hooks/use-mobile.ts","../components/ui/skeleton.tsx","../components/ui/tooltip.tsx","../components/ui/slider.tsx","../components/ui/snackbar.tsx","../components/ui/stepper.tsx","../components/ui/spinner.tsx","../components/ui/loading-spinner.tsx","../components/ui/switch.tsx","../components/ui/table.tsx","../components/ui/segmented-control.tsx","../components/ui/tab.tsx","../components/ui/toggle.tsx","../components/ui/toggle-group.tsx","../components/blocks/hero-action-button.tsx","../components/blocks/hero-mobile-home.tsx","../components/blocks/hero-desktop-home.tsx","../components/blocks/hero-mobile-main.tsx","../components/blocks/hero-desktop-main.tsx","../components/blocks/hero-mobile-secondary.tsx","../components/blocks/hero-desktop-secondary.tsx","../components/blocks/hero-mobile-transaction.tsx","../components/blocks/nav-mobile-bottom-bar.tsx","../components/blocks/nav-desktop-sidebar.tsx","../components/blocks/navbar.tsx"],"sourcesContent":["// Components\nexport * from \"../components/ui/icon\"\nexport * from \"../components/ui/accordion\"\nexport * from \"../components/ui/badge\"\nexport * from \"../components/ui/notification\"\nexport * from \"../components/ui/section-message\"\nexport * from \"../components/ui/aspect-ratio\"\nexport * from \"../components/ui/avatar\"\nexport * from \"../components/ui/tag\"\nexport * from \"../components/ui/breadcrumb\"\nexport * from \"../components/ui/button\"\nexport * from \"../components/ui/chip\"\nexport * from \"../components/ui/calendar\"\nexport * from \"../components/ui/card\"\nexport * from \"../components/ui/carousel\"\nexport * from \"../components/ui/chart\"\nexport * from \"../components/ui/checkbox\"\nexport * from \"../components/ui/collapsible\"\nexport * from \"../components/ui/combobox\"\nexport * from \"../components/ui/command\"\nexport * from \"../components/ui/context-menu\"\nexport * from \"../components/ui/dialog\"\nexport * from \"../components/ui/direction\"\nexport * from \"../components/ui/drawer\"\nexport * from \"../components/ui/dropdown-menu\"\nexport * from \"../components/ui/empty\"\nexport * from \"../components/ui/field\"\nexport * from \"../components/ui/form\"\nexport * from \"../components/ui/hover-card\"\nexport * from \"../components/ui/input\"\nexport * from \"../components/ui/input-group\"\nexport * from \"../components/ui/search-field\"\nexport * from \"../components/ui/input-otp\"\nexport * from \"../components/ui/code-input\"\nexport * from \"../components/ui/list-item\"\nexport * from \"../components/ui/kbd\"\nexport * from \"../components/ui/label\"\nexport * from \"../components/ui/link\"\nexport * from \"../components/ui/native-select\"\nexport * from \"../components/ui/pagination\"\nexport * from \"../components/ui/popover\"\nexport * from \"../components/ui/progress\"\nexport * from \"../components/ui/radio-group\"\nexport * from \"../components/ui/resizable\"\nexport * from \"../components/ui/scroll-area\"\nexport * from \"../components/ui/select\"\nexport * from \"../components/ui/separator\"\nexport * from \"../components/ui/sheet\"\nexport * from \"../components/ui/sidebar\"\nexport * from \"../components/ui/skeleton\"\nexport * from \"../components/ui/slider\"\nexport * from \"../components/ui/snackbar\"\nexport * from \"../components/ui/stepper\"\nexport * from \"../components/ui/spinner\"\nexport * from \"../components/ui/loading-spinner\"\nexport * from \"../components/ui/switch\"\nexport * from \"../components/ui/table\"\nexport * from \"../components/ui/segmented-control\"\nexport * from \"../components/ui/tab\"\nexport * from \"../components/ui/textarea\"\nexport * from \"../components/ui/toggle\"\nexport * from \"../components/ui/toggle-group\"\nexport * from \"../components/ui/tooltip\"\n\n// Utilities\nexport { cn } from \"../lib/utils\"\n\n// Hooks\nexport { useIsMobile } from \"../hooks/use-mobile\"\n\n// Blocks\nexport * from \"../components/blocks/hero-action-button\"\nexport * from \"../components/blocks/hero-mobile-home\"\nexport * from \"../components/blocks/hero-desktop-home\"\nexport * from \"../components/blocks/hero-mobile-main\"\nexport * from \"../components/blocks/hero-desktop-main\"\nexport * from \"../components/blocks/hero-mobile-secondary\"\nexport * from \"../components/blocks/hero-desktop-secondary\"\nexport * from \"../components/blocks/hero-mobile-transaction\"\nexport * from \"../components/blocks/nav-mobile-bottom-bar\"\nexport * from \"../components/blocks/nav-desktop-sidebar\"\nexport * from \"../components/blocks/navbar\"\n","\"use client\"\n\nimport * as React from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport type { IconDefinition } from \"@fortawesome/fontawesome-svg-core\"\n\n/* ─────────────────────────────────────────────────────────────────────────────\n * Icon — three-weight wrapper around FontAwesome Pro 6\n *\n * weight ladder (lightest → heaviest):\n * \"regular\" → @fortawesome/pro-light-svg-icons (thin outline, ~1px)\n * \"bold\" → @fortawesome/pro-regular-svg-icons (medium outline, ~2px) — default\n * \"fill\" → @fortawesome/pro-solid-svg-icons (filled glyph)\n *\n * Default weight is \"bold\" so existing usages keep their current visual\n * weight after the three-weight rollout — nothing shifts.\n * ────────────────────────────────────────────────────────────────────────── */\n\n// ── Light weight (pro-light) — \"regular\" in the public API ───────────────────\nimport {\n faArrowDownToLine as faArrowDownToLineLight,\n faArrowLeft as faArrowLeftLight,\n faArrowRight as faArrowRightLight,\n faArrowRightArrowLeft as faArrowRightArrowLeftLight,\n faArrowsLeftRight as faArrowsLeftRightLight,\n faArrowTrendDown as faArrowTrendDownLight,\n faArrowTrendUp as faArrowTrendUpLight,\n faArrowUpFromLine as faArrowUpFromLineLight,\n faArrowUpRight as faArrowUpRightLight,\n faArrowUpRightFromSquare as faArrowUpRightFromSquareLight,\n faBell as faBellLight,\n faBookOpen as faBookOpenLight,\n faCalculator as faCalculatorLight,\n faChartBar as faChartBarLight,\n faChartCandlestick as faChartCandlestickLight,\n faChartLine as faChartLineLight,\n faCheck as faCheckLight,\n faChevronDown as faChevronDownLight,\n faChevronLeft as faChevronLeftLight,\n faChevronRight as faChevronRightLight,\n faChevronUp as faChevronUpLight,\n faCircle as faCircleLight,\n faCircleCheck as faCircleCheckLight,\n faCircleExclamation as faCircleExclamationLight,\n faCircleInfo as faCircleInfoLight,\n faClockRotateLeft as faClockRotateLeftLight,\n faCopy as faCopyLight,\n faDollarSign as faDollarSignLight,\n faEllipsis as faEllipsisLight,\n faEnvelope as faEnvelopeLight,\n faEnvelopeOpen as faEnvelopeOpenLight,\n faEye as faEyeLight,\n faEyeSlash as faEyeSlashLight,\n faFileLines as faFileLinesLight,\n faFileXmark as faFileXmarkLight,\n faFingerprint as faFingerprintLight,\n faGear as faGearLight,\n faGripVertical as faGripVerticalLight,\n faHouse as faHouseLight,\n faHouseBlank as faHouseBlankLight,\n faImage as faImageLight,\n faInbox as faInboxLight,\n faMagnifyingGlass as faMagnifyingGlassLight,\n faMinus as faMinusLight,\n faMoon as faMoonLight,\n faPhone as faPhoneLight,\n faPlus as faPlusLight,\n faRightFromBracket as faRightFromBracketLight,\n faRotateRight as faRotateRightLight,\n faSparkles as faSparklesLight,\n faSpinner as faSpinnerLight,\n faSquare as faSquareLight,\n faSquareCheck as faSquareCheckLight,\n faSquareMinus as faSquareMinusLight,\n faStar as faStarLight,\n faSun as faSunLight,\n faTableCellsLarge as faTableCellsLargeLight,\n faTableColumns as faTableColumnsLight,\n faTrash as faTrashLight,\n faTrashCan as faTrashCanLight,\n faTriangleExclamation as faTriangleExclamationLight,\n faUser as faUserLight,\n faWallet as faWalletLight,\n faXmark as faXmarkLight,\n} from \"@fortawesome/pro-light-svg-icons\"\n\n// ── Regular weight (pro-regular) — \"bold\" in the public API ──────────────────\nimport {\n faArrowDownToLine,\n faArrowLeft,\n faArrowRight,\n faArrowRightArrowLeft,\n faArrowsLeftRight,\n faArrowTrendDown,\n faArrowTrendUp,\n faArrowUpFromLine,\n faArrowUpRight,\n faArrowUpRightFromSquare,\n faBell,\n faBookOpen,\n faCalculator,\n faChartBar,\n faChartCandlestick,\n faChartLine,\n faCheck,\n faChevronDown,\n faChevronLeft,\n faChevronRight,\n faChevronUp,\n faCircle,\n faCircleCheck,\n faCircleExclamation,\n faCircleInfo,\n faClockRotateLeft,\n faCopy,\n faDollarSign,\n faEllipsis,\n faEnvelope,\n faEnvelopeOpen,\n faEye,\n faEyeSlash,\n faFileLines,\n faFileXmark,\n faFingerprint,\n faGear,\n faGripVertical,\n faHouse,\n faHouseBlank,\n faImage,\n faInbox,\n faMagnifyingGlass,\n faMinus,\n faMoon,\n faPhone,\n faPlus,\n faRightFromBracket,\n faRotateRight,\n faSparkles,\n faSquare,\n faStar,\n faSun,\n faTableCellsLarge,\n faTableColumns,\n faTrash,\n faTrashCan,\n faTriangleExclamation,\n faUser,\n faWallet,\n faXmark,\n} from \"@fortawesome/pro-regular-svg-icons\"\n\n// ── Solid weight (pro-solid) — \"fill\" in the public API ──────────────────────\nimport {\n faArrowDownToLine as faArrowDownToLineFill,\n faArrowLeft as faArrowLeftFill,\n faArrowRight as faArrowRightFill,\n faArrowRightArrowLeft as faArrowRightArrowLeftFill,\n faArrowsLeftRight as faArrowsLeftRightFill,\n faArrowTrendDown as faArrowTrendDownFill,\n faArrowTrendUp as faArrowTrendUpFill,\n faArrowUpFromLine as faArrowUpFromLineFill,\n faArrowUpRight as faArrowUpRightFill,\n faArrowUpRightFromSquare as faArrowUpRightFromSquareFill,\n faBell as faBellFill,\n faBookOpen as faBookOpenFill,\n faCalculator as faCalculatorFill,\n faChartBar as faChartBarFill,\n faChartCandlestick as faChartCandlestickFill,\n faChartLine as faChartLineFill,\n faCheck as faCheckFill,\n faChevronDown as faChevronDownFill,\n faChevronLeft as faChevronLeftFill,\n faChevronRight as faChevronRightFill,\n faChevronUp as faChevronUpFill,\n faCircle as faCircleFill,\n faCircleCheck as faCircleCheckFill,\n faCircleExclamation as faCircleExclamationFill,\n faCircleInfo as faCircleInfoFill,\n faClockRotateLeft as faClockRotateLeftFill,\n faCopy as faCopyFill,\n faDollarSign as faDollarSignFill,\n faEllipsis as faEllipsisFill,\n faEnvelope as faEnvelopeFill,\n faEnvelopeOpen as faEnvelopeOpenFill,\n faEye as faEyeFill,\n faEyeSlash as faEyeSlashFill,\n faFileLines as faFileLinesFill,\n faFileXmark as faFileXmarkFill,\n faFingerprint as faFingerprintFill,\n faGear as faGearFill,\n faGripVertical as faGripVerticalFill,\n faHouse as faHouseFill,\n faHouseBlank as faHouseBlankFill,\n faImage as faImageFill,\n faInbox as faInboxFill,\n faMagnifyingGlass as faMagnifyingGlassFill,\n faMinus as faMinusFill,\n faMoon as faMoonFill,\n faPhone as faPhoneFill,\n faPlus as faPlusFill,\n faRightFromBracket as faRightFromBracketFill,\n faRotateRight as faRotateRightFill,\n faSparkles as faSparklesFill,\n faSpinner,\n faSquare as faSquareFill,\n faSquareCheck as faSquareCheckFill,\n faSquareMinus as faSquareMinusFill,\n faStar as faStarFill,\n faSun as faSunFill,\n faTableCellsLarge as faTableCellsLargeFill,\n faTableColumns as faTableColumnsFill,\n faTrash as faTrashFill,\n faTrashCan as faTrashCanFill,\n faTriangleExclamation as faTriangleExclamationFill,\n faUser as faUserFill,\n faWallet as faWalletFill,\n faXmark as faXmarkFill,\n} from \"@fortawesome/pro-solid-svg-icons\"\n\n// ── Custom icons — Deriv FontAwesome kit (a9f9eb613f) ─────────────────────────\n// Export names encode the weight: faLight* → \"regular\", faRegular* → \"bold\",\n// faSolid* → \"fill\". Brand marks ship in a single weight (mapped to bold).\nimport {\n faBrandHarmonyOs,\n faBrandHuawei,\n faBrandHuaweiAppGallery,\n faBrandIos,\n faBrandIpados,\n faBrandMacos,\n faBrandMicrosoftStore,\n faBrandTrustpilot,\n faDeriv,\n faLightBookCircleQuestion,\n faLightBookOpenCoverCircleQuestion,\n faLightBoxArchiveCircleArrowDown,\n faLightBoxArchiveCircleArrowUp,\n faLightChartLineUpDownClock,\n faLightChartTradingview,\n faLightChartTrendDown,\n faLightChartTrendStill,\n faLightChartTrendUp,\n faLightCircleUserSlash,\n faLightDealCancellation,\n faLightDealProtection,\n faLightDeriv,\n faLightDerivP2p,\n faLightFiatOfframp,\n faLightFiatOnramp,\n faLightFieldPassword,\n faLightHandGestureSwipeLeftRight,\n faLightHandGestureTapLeft,\n faLightHandGestureTapRight,\n faLightHorizontalRuleDashed,\n faLightLockPattern,\n faLightMobileNotchRotate,\n faLightOhlc,\n faLightOptions,\n faLightPageCircleArrowRight,\n faLightPasskey,\n faLightPlaybackSpeed,\n faLightPuzzlesPieceTwo,\n faLightRotateDevice,\n faLightStopLoss,\n faLightTakeProfit,\n faLightUserCircleArrowRight,\n faLightUserCircleArrowUp,\n faLightUserTieCircleDollar,\n faLightWalletCircleMinus,\n faLightWalletCirclePlus,\n faLightWalletSignal,\n faRegularBookCircleQuestion,\n faRegularBoxArchiveCircleArrowDown,\n faRegularBoxArchiveCircleArrowUp,\n faRegularChartLineUpDownClock,\n faRegularChartTradingview,\n faRegularChartTrendDown,\n faRegularChartTrendStill,\n faRegularChartTrendUp,\n faRegularCircleUserSlash,\n faRegularDealCancellation,\n faRegularDealProtection,\n faRegularDerivP2p,\n faRegularFiatOfframp,\n faRegularFiatOnramp,\n faRegularFieldPassword,\n faRegularHandGestureSwipeLeftRight,\n faRegularHandGestureTapLeft,\n faRegularHandGestureTapRight,\n faRegularHorizontalRuleDashed,\n faRegularLockPattern,\n faRegularMobileNotchRotate,\n faRegularOhlc,\n faRegularPageCircleArrowRight,\n faRegularPasskey,\n faRegularPlaybackSpeed,\n faRegularPuzzlesPieceTwo,\n faRegularRotateDevice,\n faRegularStopLoss,\n faRegularTakeProfit,\n faRegularUserCircleArrowRight,\n faRegularUserCircleArrowUp,\n faRegularUserTieCircleDollar,\n faRegularWalletCircleMinus,\n faRegularWalletCirclePlus,\n faRegularWalletSignal,\n faSolidBookCircleQuestion,\n faSolidBoxArchiveCircleArrowDown,\n faSolidBoxArchiveCircleArrowUp,\n faSolidChartLineUpDownClock,\n faSolidChartTradingview,\n faSolidChartTrendDown,\n faSolidChartTrendStill,\n faSolidChartTrendUp,\n faSolidCircleUserSlash,\n faSolidDealCancellation,\n faSolidDealProtection,\n faSolidDeriv,\n faSolidDerivP2p,\n faSolidFiatOfframp,\n faSolidFiatOnramp,\n faSolidFieldPassword,\n faSolidHandGestureSwipeLeftRight,\n faSolidHandGestureTapLeft,\n faSolidHandGestureTapRight,\n faSolidHorizontalRuleDashed,\n faSolidLockPattern,\n faSolidMobileNotchRotate,\n faSolidOhlc,\n faSolidOptions,\n faSolidPageCircleArrowRight,\n faSolidPasskey,\n faSolidPlaybackSpeed,\n faSolidPuzzlesPieceTwo,\n faSolidQuill,\n faSolidRotateDevice,\n faSolidStopLoss,\n faSolidTakeProfit,\n faSolidUserCircleArrowRight,\n faSolidUserCircleArrowUp,\n faSolidUserTieCircleDollar,\n faSolidWalletCircleMinus,\n faSolidWalletCirclePlus,\n faSolidWalletSignal,\n} from \"@awesome.me/kit-a9f9eb613f/icons/kit/custom\"\n\n// ── Custom icons — Deriv FontAwesome kit (394c25e5aa) ─────────────────────────\n// This kit's customs ship in light + regular weights only (no solid uploads),\n// so these names have no \"fill\" mapping and fall back to bold.\n// Overlapping uploads (deriv, box-archive-*, wallet-circle-*, page-circle-arrow-right)\n// come from the a9f9eb613f kit above and are not re-imported here.\nimport {\n faLightCalendarCircleArrowLeft,\n faLightCalendarCircleArrowRight,\n faLightChartLineClock,\n faLightCrosshairsSlash,\n faLightFileLinesMagnifyingGlass,\n faLightHandshakeLock,\n faLightHandshakeShield,\n faLightMemoShield,\n faLightPenFieldCircleXmark,\n faLightPenFieldLock,\n faLightPenFieldSlash,\n faLightRectangleHistoryCircleDollar,\n faLightShieldCircleCheck,\n faLightShieldHalvedCircleMinus,\n faLightShieldHalvedLock,\n faLightShieldLock,\n faLightUserCircleDollar,\n faLightUserLargeCircleDollar,\n faLightUsersLineCircleDollar,\n faLightUsersRectangleCircleDollar,\n faRegularCalendarCircleArrowLeft,\n faRegularCalendarCircleArrowRight,\n faRegularCrosshairsSlash,\n faRegularFileLinesMagnifyingGlass,\n faRegularHandshakeLock,\n faRegularHandshakeShield,\n faRegularMemoShield,\n faRegularPenFieldCircleXmark,\n faRegularPenFieldLock,\n faRegularPenFieldSlash,\n faRegularRectangleHistoryCircleDollar,\n faRegularShieldCircleCheck,\n faRegularShieldHalvedCircleMinus,\n faRegularShieldHalvedLock,\n faRegularShieldLock,\n faRegularUserCircleDollar,\n faRegularUserLargeCircleDollar,\n faRegularUsersLineCircleDollar,\n faRegularUsersRectangleCircleDollar,\n} from \"@awesome.me/kit-394c25e5aa/icons/kit/custom\"\n\n/* ─── Bold map (formerly \"regular\") — defines the IconName surface ────────── */\n\nconst boldIconMap = {\n \"arrow-down-to-line\": faArrowDownToLine,\n \"arrow-left\": faArrowLeft,\n \"arrow-right\": faArrowRight,\n \"arrow-right-arrow-left\": faArrowRightArrowLeft,\n \"arrows-left-right\": faArrowsLeftRight,\n \"arrow-trend-down\": faArrowTrendDown,\n \"arrow-trend-up\": faArrowTrendUp,\n \"arrow-up-from-line\": faArrowUpFromLine,\n \"arrow-up-right\": faArrowUpRight,\n \"arrow-up-right-from-square\": faArrowUpRightFromSquare,\n \"bell\": faBell,\n \"book-open\": faBookOpen,\n \"calculator\": faCalculator,\n \"chart-bar\": faChartBar,\n \"chart-candlestick\": faChartCandlestick,\n \"chart-line\": faChartLine,\n \"check\": faCheck,\n \"chevron-down\": faChevronDown,\n \"chevron-left\": faChevronLeft,\n \"chevron-right\": faChevronRight,\n \"chevron-up\": faChevronUp,\n \"circle\": faCircle,\n \"circle-check\": faCircleCheck,\n \"circle-exclamation\": faCircleExclamation,\n \"circle-info\": faCircleInfo,\n \"clock-rotate-left\": faClockRotateLeft,\n \"copy\": faCopy,\n \"dollar-sign\": faDollarSign,\n \"ellipsis\": faEllipsis,\n \"envelope\": faEnvelope,\n \"envelope-open\": faEnvelopeOpen,\n \"eye\": faEye,\n \"eye-slash\": faEyeSlash,\n \"file-lines\": faFileLines,\n \"file-xmark\": faFileXmark,\n \"fingerprint\": faFingerprint,\n \"gear\": faGear,\n \"grip-vertical\": faGripVertical,\n \"house\": faHouse,\n \"house-blank\": faHouseBlank,\n \"image\": faImage,\n \"inbox\": faInbox,\n \"magnifying-glass\": faMagnifyingGlass,\n \"minus\": faMinus,\n \"moon\": faMoon,\n \"phone\": faPhone,\n \"plus\": faPlus,\n \"right-from-bracket\": faRightFromBracket,\n \"rotate-right\": faRotateRight,\n \"sparkles\": faSparkles,\n \"spinner\": faSpinner,\n \"square\": faSquare,\n \"square-check\": faSquareCheckFill, // square-check is only sensible as a filled glyph\n \"square-minus\": faSquareMinusFill, // ditto for indeterminate checkbox\n \"star\": faStar,\n \"sun\": faSun,\n \"table-cells-large\": faTableCellsLarge,\n \"table-columns\": faTableColumns,\n \"trash\": faTrash,\n \"trash-can\": faTrashCan,\n \"triangle-exclamation\": faTriangleExclamation,\n \"user\": faUser,\n \"wallet\": faWallet,\n \"xmark\": faXmark,\n // ── Custom icons (Deriv kit) ──\n \"brand-harmony-os\": faBrandHarmonyOs,\n \"brand-huawei\": faBrandHuawei,\n \"brand-huawei-app-gallery\": faBrandHuaweiAppGallery,\n \"brand-ios\": faBrandIos,\n \"brand-ipados\": faBrandIpados,\n \"brand-macos\": faBrandMacos,\n \"brand-microsoft-store\": faBrandMicrosoftStore,\n \"brand-trustpilot\": faBrandTrustpilot,\n \"deriv\": faDeriv,\n \"box-archive-circle-arrow-down\": faRegularBoxArchiveCircleArrowDown,\n \"box-archive-circle-arrow-up\": faRegularBoxArchiveCircleArrowUp,\n \"chart-line-up-down-clock\": faRegularChartLineUpDownClock,\n \"chart-trend-down\": faRegularChartTrendDown,\n \"chart-trend-still\": faRegularChartTrendStill,\n \"chart-trend-up\": faRegularChartTrendUp,\n \"circle-user-slash\": faRegularCircleUserSlash,\n \"deal-cancellation\": faRegularDealCancellation,\n \"deal-protection\": faRegularDealProtection,\n \"deriv-p2p\": faRegularDerivP2p,\n \"fiat-offramp\": faRegularFiatOfframp,\n \"fiat-onramp\": faRegularFiatOnramp,\n \"field-password\": faRegularFieldPassword,\n \"horizontal-rule-dashed\": faRegularHorizontalRuleDashed,\n \"lock-pattern\": faRegularLockPattern,\n \"mobile-notch-rotate\": faRegularMobileNotchRotate,\n \"ohlc\": faRegularOhlc,\n \"passkey\": faRegularPasskey,\n \"stop-loss\": faRegularStopLoss,\n \"take-profit\": faRegularTakeProfit,\n \"user-tie-circle-dollar\": faRegularUserTieCircleDollar,\n \"wallet-circle-minus\": faRegularWalletCircleMinus,\n \"wallet-circle-plus\": faRegularWalletCirclePlus,\n \"wallet-signal\": faRegularWalletSignal,\n \"book-circle-question\": faRegularBookCircleQuestion,\n \"book-open-cover-circle-question\": faLightBookOpenCoverCircleQuestion, // kit upload is light-only\n \"chart-tradingview\": faRegularChartTradingview,\n \"hand-gesture-swipe-left-right\": faRegularHandGestureSwipeLeftRight,\n \"hand-gesture-tap-left\": faRegularHandGestureTapLeft,\n \"hand-gesture-tap-right\": faRegularHandGestureTapRight,\n \"options\": faLightOptions, // kit upload has no regular weight\n \"playback-speed\": faRegularPlaybackSpeed,\n \"puzzles-piece-two\": faRegularPuzzlesPieceTwo,\n \"quill\": faSolidQuill, // kit upload is solid-only\n \"rotate-device\": faRegularRotateDevice,\n \"user-circle-arrow-right\": faRegularUserCircleArrowRight,\n \"user-circle-arrow-up\": faRegularUserCircleArrowUp,\n \"calendar-circle-arrow-left\": faRegularCalendarCircleArrowLeft,\n \"calendar-circle-arrow-right\": faRegularCalendarCircleArrowRight,\n \"chart-line-clock\": faLightChartLineClock, // kit upload is light-only\n \"crosshairs-slash\": faRegularCrosshairsSlash,\n \"file-lines-magnifying-glass\": faRegularFileLinesMagnifyingGlass,\n \"handshake-lock\": faRegularHandshakeLock,\n \"handshake-shield\": faRegularHandshakeShield,\n \"memo-shield\": faRegularMemoShield,\n \"page-circle-arrow-right\": faRegularPageCircleArrowRight,\n \"pen-field-circle-xmark\": faRegularPenFieldCircleXmark,\n \"pen-field-lock\": faRegularPenFieldLock,\n \"pen-field-slash\": faRegularPenFieldSlash,\n \"rectangle-history-circle-dollar\": faRegularRectangleHistoryCircleDollar,\n \"shield-circle-check\": faRegularShieldCircleCheck,\n \"shield-halved-circle-minus\": faRegularShieldHalvedCircleMinus,\n \"shield-halved-lock\": faRegularShieldHalvedLock,\n \"shield-lock\": faRegularShieldLock,\n \"user-circle-dollar\": faRegularUserCircleDollar,\n \"user-large-circle-dollar\": faRegularUserLargeCircleDollar,\n \"users-line-circle-dollar\": faRegularUsersLineCircleDollar,\n \"users-rectangle-circle-dollar\": faRegularUsersRectangleCircleDollar,\n} satisfies Record<string, IconDefinition>\n\n/* ─── Light map (\"regular\" weight) ────────────────────────────────────────── */\n\nconst lightIconMap: Partial<Record<keyof typeof boldIconMap, IconDefinition>> = {\n \"arrow-down-to-line\": faArrowDownToLineLight,\n \"arrow-left\": faArrowLeftLight,\n \"arrow-right\": faArrowRightLight,\n \"arrow-right-arrow-left\": faArrowRightArrowLeftLight,\n \"arrows-left-right\": faArrowsLeftRightLight,\n \"arrow-trend-down\": faArrowTrendDownLight,\n \"arrow-trend-up\": faArrowTrendUpLight,\n \"arrow-up-from-line\": faArrowUpFromLineLight,\n \"arrow-up-right\": faArrowUpRightLight,\n \"arrow-up-right-from-square\": faArrowUpRightFromSquareLight,\n \"bell\": faBellLight,\n \"book-open\": faBookOpenLight,\n \"calculator\": faCalculatorLight,\n \"chart-bar\": faChartBarLight,\n \"chart-candlestick\": faChartCandlestickLight,\n \"chart-line\": faChartLineLight,\n \"check\": faCheckLight,\n \"chevron-down\": faChevronDownLight,\n \"chevron-left\": faChevronLeftLight,\n \"chevron-right\": faChevronRightLight,\n \"chevron-up\": faChevronUpLight,\n \"circle\": faCircleLight,\n \"circle-check\": faCircleCheckLight,\n \"circle-exclamation\": faCircleExclamationLight,\n \"circle-info\": faCircleInfoLight,\n \"clock-rotate-left\": faClockRotateLeftLight,\n \"copy\": faCopyLight,\n \"dollar-sign\": faDollarSignLight,\n \"ellipsis\": faEllipsisLight,\n \"envelope\": faEnvelopeLight,\n \"envelope-open\": faEnvelopeOpenLight,\n \"eye\": faEyeLight,\n \"eye-slash\": faEyeSlashLight,\n \"file-lines\": faFileLinesLight,\n \"file-xmark\": faFileXmarkLight,\n \"fingerprint\": faFingerprintLight,\n \"gear\": faGearLight,\n \"grip-vertical\": faGripVerticalLight,\n \"house\": faHouseLight,\n \"house-blank\": faHouseBlankLight,\n \"image\": faImageLight,\n \"inbox\": faInboxLight,\n \"magnifying-glass\": faMagnifyingGlassLight,\n \"minus\": faMinusLight,\n \"moon\": faMoonLight,\n \"phone\": faPhoneLight,\n \"plus\": faPlusLight,\n \"right-from-bracket\": faRightFromBracketLight,\n \"rotate-right\": faRotateRightLight,\n \"sparkles\": faSparklesLight,\n \"spinner\": faSpinnerLight,\n \"square\": faSquareLight,\n \"square-check\": faSquareCheckLight,\n \"square-minus\": faSquareMinusLight,\n \"star\": faStarLight,\n \"sun\": faSunLight,\n \"table-cells-large\": faTableCellsLargeLight,\n \"table-columns\": faTableColumnsLight,\n \"trash\": faTrashLight,\n \"trash-can\": faTrashCanLight,\n \"triangle-exclamation\": faTriangleExclamationLight,\n \"user\": faUserLight,\n \"wallet\": faWalletLight,\n \"xmark\": faXmarkLight,\n // ── Custom icons (Deriv kit) ──\n \"box-archive-circle-arrow-down\": faLightBoxArchiveCircleArrowDown,\n \"box-archive-circle-arrow-up\": faLightBoxArchiveCircleArrowUp,\n \"chart-line-up-down-clock\": faLightChartLineUpDownClock,\n \"chart-trend-down\": faLightChartTrendDown,\n \"chart-trend-still\": faLightChartTrendStill,\n \"chart-trend-up\": faLightChartTrendUp,\n \"circle-user-slash\": faLightCircleUserSlash,\n \"deal-cancellation\": faLightDealCancellation,\n \"deal-protection\": faLightDealProtection,\n \"deriv-p2p\": faLightDerivP2p,\n \"fiat-offramp\": faLightFiatOfframp,\n \"fiat-onramp\": faLightFiatOnramp,\n \"field-password\": faLightFieldPassword,\n \"horizontal-rule-dashed\": faLightHorizontalRuleDashed,\n \"lock-pattern\": faLightLockPattern,\n \"mobile-notch-rotate\": faLightMobileNotchRotate,\n \"ohlc\": faLightOhlc,\n \"passkey\": faLightPasskey,\n \"stop-loss\": faLightStopLoss,\n \"take-profit\": faLightTakeProfit,\n \"user-tie-circle-dollar\": faLightUserTieCircleDollar,\n \"wallet-circle-minus\": faLightWalletCircleMinus,\n \"wallet-circle-plus\": faLightWalletCirclePlus,\n \"wallet-signal\": faLightWalletSignal,\n \"book-circle-question\": faLightBookCircleQuestion,\n \"book-open-cover-circle-question\": faLightBookOpenCoverCircleQuestion,\n \"chart-tradingview\": faLightChartTradingview,\n \"deriv\": faLightDeriv,\n \"hand-gesture-swipe-left-right\": faLightHandGestureSwipeLeftRight,\n \"hand-gesture-tap-left\": faLightHandGestureTapLeft,\n \"hand-gesture-tap-right\": faLightHandGestureTapRight,\n \"options\": faLightOptions,\n \"page-circle-arrow-right\": faLightPageCircleArrowRight,\n \"playback-speed\": faLightPlaybackSpeed,\n \"puzzles-piece-two\": faLightPuzzlesPieceTwo,\n \"rotate-device\": faLightRotateDevice,\n \"user-circle-arrow-right\": faLightUserCircleArrowRight,\n \"user-circle-arrow-up\": faLightUserCircleArrowUp,\n \"calendar-circle-arrow-left\": faLightCalendarCircleArrowLeft,\n \"calendar-circle-arrow-right\": faLightCalendarCircleArrowRight,\n \"chart-line-clock\": faLightChartLineClock,\n \"crosshairs-slash\": faLightCrosshairsSlash,\n \"file-lines-magnifying-glass\": faLightFileLinesMagnifyingGlass,\n \"handshake-lock\": faLightHandshakeLock,\n \"handshake-shield\": faLightHandshakeShield,\n \"memo-shield\": faLightMemoShield,\n \"pen-field-circle-xmark\": faLightPenFieldCircleXmark,\n \"pen-field-lock\": faLightPenFieldLock,\n \"pen-field-slash\": faLightPenFieldSlash,\n \"rectangle-history-circle-dollar\": faLightRectangleHistoryCircleDollar,\n \"shield-circle-check\": faLightShieldCircleCheck,\n \"shield-halved-circle-minus\": faLightShieldHalvedCircleMinus,\n \"shield-halved-lock\": faLightShieldHalvedLock,\n \"shield-lock\": faLightShieldLock,\n \"user-circle-dollar\": faLightUserCircleDollar,\n \"user-large-circle-dollar\": faLightUserLargeCircleDollar,\n \"users-line-circle-dollar\": faLightUsersLineCircleDollar,\n \"users-rectangle-circle-dollar\": faLightUsersRectangleCircleDollar,\n}\n\n/* ─── Fill map (\"fill\" weight) ────────────────────────────────────────────── */\n\nconst fillIconMap: Partial<Record<keyof typeof boldIconMap, IconDefinition>> = {\n \"arrow-down-to-line\": faArrowDownToLineFill,\n \"arrow-left\": faArrowLeftFill,\n \"arrow-right\": faArrowRightFill,\n \"arrow-right-arrow-left\": faArrowRightArrowLeftFill,\n \"arrows-left-right\": faArrowsLeftRightFill,\n \"arrow-trend-down\": faArrowTrendDownFill,\n \"arrow-trend-up\": faArrowTrendUpFill,\n \"arrow-up-from-line\": faArrowUpFromLineFill,\n \"arrow-up-right\": faArrowUpRightFill,\n \"arrow-up-right-from-square\": faArrowUpRightFromSquareFill,\n \"bell\": faBellFill,\n \"book-open\": faBookOpenFill,\n \"calculator\": faCalculatorFill,\n \"chart-bar\": faChartBarFill,\n \"chart-candlestick\": faChartCandlestickFill,\n \"chart-line\": faChartLineFill,\n \"check\": faCheckFill,\n \"chevron-down\": faChevronDownFill,\n \"chevron-left\": faChevronLeftFill,\n \"chevron-right\": faChevronRightFill,\n \"chevron-up\": faChevronUpFill,\n \"circle\": faCircleFill,\n \"circle-check\": faCircleCheckFill,\n \"circle-exclamation\": faCircleExclamationFill,\n \"circle-info\": faCircleInfoFill,\n \"clock-rotate-left\": faClockRotateLeftFill,\n \"copy\": faCopyFill,\n \"dollar-sign\": faDollarSignFill,\n \"ellipsis\": faEllipsisFill,\n \"envelope\": faEnvelopeFill,\n \"envelope-open\": faEnvelopeOpenFill,\n \"eye\": faEyeFill,\n \"eye-slash\": faEyeSlashFill,\n \"file-lines\": faFileLinesFill,\n \"file-xmark\": faFileXmarkFill,\n \"fingerprint\": faFingerprintFill,\n \"gear\": faGearFill,\n \"grip-vertical\": faGripVerticalFill,\n \"house\": faHouseFill,\n \"house-blank\": faHouseBlankFill,\n \"image\": faImageFill,\n \"inbox\": faInboxFill,\n \"magnifying-glass\": faMagnifyingGlassFill,\n \"minus\": faMinusFill,\n \"moon\": faMoonFill,\n \"phone\": faPhoneFill,\n \"plus\": faPlusFill,\n \"right-from-bracket\": faRightFromBracketFill,\n \"rotate-right\": faRotateRightFill,\n \"sparkles\": faSparklesFill,\n \"spinner\": faSpinner,\n \"square\": faSquareFill,\n \"square-check\": faSquareCheckFill,\n \"square-minus\": faSquareMinusFill,\n \"star\": faStarFill,\n \"sun\": faSunFill,\n \"table-cells-large\": faTableCellsLargeFill,\n \"table-columns\": faTableColumnsFill,\n \"trash\": faTrashFill,\n \"trash-can\": faTrashCanFill,\n \"triangle-exclamation\": faTriangleExclamationFill,\n \"user\": faUserFill,\n \"wallet\": faWalletFill,\n \"xmark\": faXmarkFill,\n // ── Custom icons (Deriv kit) ──\n \"box-archive-circle-arrow-down\": faSolidBoxArchiveCircleArrowDown,\n \"box-archive-circle-arrow-up\": faSolidBoxArchiveCircleArrowUp,\n \"chart-line-up-down-clock\": faSolidChartLineUpDownClock,\n \"chart-trend-down\": faSolidChartTrendDown,\n \"chart-trend-still\": faSolidChartTrendStill,\n \"chart-trend-up\": faSolidChartTrendUp,\n \"circle-user-slash\": faSolidCircleUserSlash,\n \"deal-cancellation\": faSolidDealCancellation,\n \"deal-protection\": faSolidDealProtection,\n \"deriv-p2p\": faSolidDerivP2p,\n \"fiat-offramp\": faSolidFiatOfframp,\n \"fiat-onramp\": faSolidFiatOnramp,\n \"field-password\": faSolidFieldPassword,\n \"horizontal-rule-dashed\": faSolidHorizontalRuleDashed,\n \"lock-pattern\": faSolidLockPattern,\n \"mobile-notch-rotate\": faSolidMobileNotchRotate,\n \"ohlc\": faSolidOhlc,\n \"passkey\": faSolidPasskey,\n \"stop-loss\": faSolidStopLoss,\n \"take-profit\": faSolidTakeProfit,\n \"user-tie-circle-dollar\": faSolidUserTieCircleDollar,\n \"wallet-circle-minus\": faSolidWalletCircleMinus,\n \"wallet-circle-plus\": faSolidWalletCirclePlus,\n \"wallet-signal\": faSolidWalletSignal,\n \"book-circle-question\": faSolidBookCircleQuestion,\n \"chart-tradingview\": faSolidChartTradingview,\n \"deriv\": faSolidDeriv,\n \"hand-gesture-swipe-left-right\": faSolidHandGestureSwipeLeftRight,\n \"hand-gesture-tap-left\": faSolidHandGestureTapLeft,\n \"hand-gesture-tap-right\": faSolidHandGestureTapRight,\n \"options\": faSolidOptions,\n \"page-circle-arrow-right\": faSolidPageCircleArrowRight,\n \"playback-speed\": faSolidPlaybackSpeed,\n \"puzzles-piece-two\": faSolidPuzzlesPieceTwo,\n \"quill\": faSolidQuill,\n \"rotate-device\": faSolidRotateDevice,\n \"user-circle-arrow-right\": faSolidUserCircleArrowRight,\n \"user-circle-arrow-up\": faSolidUserCircleArrowUp,\n}\n\n/* ─── Public types ────────────────────────────────────────────────────────── */\n\nexport type IconName = keyof typeof boldIconMap\nexport type IconWeight = \"regular\" | \"bold\" | \"fill\"\n\nexport interface IconProps {\n name: IconName\n /**\n * Weight on the density ramp:\n * - \"regular\" → thin outline (pro-light)\n * - \"bold\" → medium outline (pro-regular) — default\n * - \"fill\" → filled glyph (pro-solid)\n *\n * If the requested weight isn't mapped for this icon, falls back to bold.\n */\n weight?: IconWeight\n className?: string\n style?: React.CSSProperties\n \"aria-hidden\"?: boolean | \"true\" | \"false\"\n \"aria-label\"?: string\n title?: string\n}\n\n/* ─── Icon component ──────────────────────────────────────────────────────── */\n\nexport function Icon({ name, weight = \"bold\", className, style, ...rest }: IconProps) {\n // Help the TS narrower — one branch at a time keeps the union simple\n let iconDef: IconDefinition\n if (weight === \"regular\") {\n iconDef = lightIconMap[name] ?? boldIconMap[name]\n } else if (weight === \"fill\") {\n iconDef = fillIconMap[name] ?? boldIconMap[name]\n } else {\n iconDef = boldIconMap[name]\n }\n\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <FontAwesomeIcon\n icon={iconDef}\n className={className}\n // FA v3 style type intersects with --fa-* CSS variables; relax to unknown\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n style={style as any}\n {...(rest as object)}\n />\n )\n}\n\n/* ─── Introspection helpers (for the Foundation library page) ─────────────── */\n\n/** Every icon name in the system, alphabetical. */\nexport const ICON_NAMES = Object.keys(boldIconMap).sort() as IconName[]\n\n/** Which weights are mapped for a given icon — used by the library page. */\nexport function iconAvailableWeights(name: IconName): IconWeight[] {\n const out: IconWeight[] = []\n if (lightIconMap[name]) out.push(\"regular\")\n if (boldIconMap[name]) out.push(\"bold\")\n if (fillIconMap[name]) out.push(\"fill\")\n return out\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Icon } from \"./icon\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\n// ── Types ────────────────────────────────────────────────────────────\n\ntype AccordionVariant = \"fill\" | \"elevate\" | \"outline\" | \"flush\"\ntype AccordionSize = \"xs\" | \"sm\" | \"md\" | \"lg\"\n\n// ── Context ──────────────────────────────────────────────────────────\n\nconst AccordionContext = React.createContext<{\n variant: AccordionVariant\n size: AccordionSize\n}>({ variant: \"fill\", size: \"md\" })\n\nfunction useAccordionCtx() {\n return React.useContext(AccordionContext)\n}\n\n// ── Size maps ─────────────────────────────────────────────────────────\n\n/** Trigger padding and inter-column gap */\nconst TRIGGER_PADDING: Record<AccordionSize, string> = {\n xs: \"p-4 gap-4\",\n sm: \"p-6 gap-6\",\n md: \"p-6 gap-6\",\n lg: \"p-6 gap-6\",\n}\n\n/** Content area padding */\nconst CONTENT_PADDING: Record<AccordionSize, string> = {\n xs: \"p-4\",\n sm: \"p-6\",\n md: \"p-6\",\n lg: \"p-6\",\n}\n\n/** Title typography — size scales from body/md (xs,sm) → body/lg (md) → body/xl (lg) */\nconst TITLE_CLASSES: Record<AccordionSize, string> = {\n xs: \"text-base leading-6\",\n sm: \"text-base leading-6\",\n md: \"text-lg leading-7\",\n lg: \"text-xl leading-[1.5]\",\n}\n\n/** Subtitle typography — size scales from body/sm (xs,sm) → body/md (md) → body/lg (lg) */\nconst SUBTITLE_CLASSES: Record<AccordionSize, string> = {\n xs: \"text-sm leading-5\",\n sm: \"text-sm leading-5\",\n md: \"text-base leading-6\",\n lg: \"text-lg leading-7\",\n}\n\n// ── Accordion (root) ──────────────────────────────────────────────────\n\n/**\n * Root accordion container. Sets variant and size for all child items.\n *\n * @example\n * // Fill accordion (default), medium size\n * <Accordion type=\"single\" collapsible>\n * <AccordionItem value=\"item-1\">\n * <AccordionTrigger title=\"Title\" subtitle=\"Subtitle\" />\n * <AccordionContent>Content here</AccordionContent>\n * </AccordionItem>\n * </Accordion>\n *\n * @example\n * // Elevate accordion (fill + shadow), medium size\n * <Accordion type=\"single\" collapsible variant=\"elevate\">…</Accordion>\n *\n * @example\n * // Outline accordion, small size\n * <Accordion type=\"multiple\" variant=\"outline\" size=\"sm\">…</Accordion>\n *\n * @example\n * // Flush accordion with custom trigger content\n * <Accordion type=\"single\" collapsible variant=\"flush\">\n * <AccordionItem value=\"item-1\">\n * <AccordionTrigger><MyCustomHeader /></AccordionTrigger>\n * <AccordionContent>Content</AccordionContent>\n * </AccordionItem>\n * </Accordion>\n */\nfunction Accordion({\n variant = \"fill\",\n size = \"md\",\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root> & {\n /** Visual style of each accordion card. @default \"fill\" */\n variant?: AccordionVariant\n /** Controls padding, font size, and trigger height. @default \"md\" */\n size?: AccordionSize\n}) {\n return (\n <AccordionContext.Provider value={{ variant, size }}>\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n data-variant={variant}\n data-size={size}\n className={cn(\n \"flex w-full flex-col\",\n // Fill, elevate, and outline items are spaced apart; flush items stack flush\n variant !== \"flush\" && \"gap-2\",\n className\n )}\n {...props}\n />\n </AccordionContext.Provider>\n )\n}\n\n// ── AccordionItem ─────────────────────────────────────────────────────\n\n/**\n * Individual accordion item. Styling is derived from the parent `Accordion`\n * variant — no extra props required.\n */\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n const { variant } = useAccordionCtx()\n\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\n \"relative\",\n\n // ── Fill ──────────────────────────────────────────────────────\n // Flat white card, no shadow.\n variant === \"fill\" && [\n \"overflow-hidden rounded-[var(--accordion-radius)]\",\n \"bg-accordion-bg-default\",\n \"data-[state=open]:bg-accordion-bg-expand\",\n ],\n\n // ── Elevate ───────────────────────────────────────────────────\n // White card with drop-shadow. overflow-hidden is intentionally\n // omitted here because it clips the box-shadow painted outside the\n // border-box. The trigger's own border-radius clips hover/active\n // backgrounds instead.\n variant === \"elevate\" && [\n \"rounded-[var(--accordion-radius)]\",\n \"bg-accordion-bg-default shadow-accordion-fill\",\n \"data-[state=open]:bg-accordion-bg-expand\",\n ],\n\n // ── Outline ───────────────────────────────────────────────────\n // Bordered card; no background change on expand.\n // overflow-hidden is intentionally omitted: applying it to a\n // transparent element with a border causes browsers to square off\n // the border corners. The trigger's own border-radius handles\n // clipping of hover/active backgrounds instead.\n variant === \"outline\" && [\n \"rounded-[var(--accordion-radius)]\",\n \"border-2 border-accordion-border\",\n ],\n\n // ── Flush ─────────────────────────────────────────────────────\n // Flat items separated by thin dividers; background tints when open\n variant === \"flush\" && [\n \"border-t border-accordion-border last:border-b\",\n \"data-[state=open]:bg-accordion-bg-expand\",\n ],\n\n className\n )}\n {...props}\n />\n )\n}\n\n// ── AccordionTrigger ──────────────────────────────────────────────────\n\n/**\n * Clickable trigger row that expands/collapses the accordion item.\n *\n * **Default layout** (when `title` prop is supplied):\n * Three-column structure — `[icon] [title + subtitle] [chevron]`\n *\n * **Custom layout** (when `title` is omitted):\n * Pass arbitrary `children`; the chevron is always appended automatically.\n *\n * @example\n * // Default — structured header\n * <AccordionTrigger\n * icon={<UserIcon />}\n * title=\"Account settings\"\n * subtitle=\"Manage your profile\"\n * />\n *\n * @example\n * // Default — no icon, no subtitle\n * <AccordionTrigger title=\"Frequently asked questions\" />\n *\n * @example\n * // Custom — free-form header slot\n * <AccordionTrigger><MyBadge /><MyTag /></AccordionTrigger>\n */\nfunction AccordionTrigger({\n className,\n children,\n icon,\n title,\n subtitle,\n titleBold = false,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger> & {\n /**\n * Optional leading icon (default layout only).\n * Pass any React node — typically a 24 × 24 icon from lucide-react.\n */\n icon?: React.ReactNode\n /**\n * Title text. When provided the trigger uses the **default three-column layout**.\n * Omit to render `children` in a custom layout.\n */\n title?: string\n /** Secondary line below the title (default layout only). */\n subtitle?: string\n /** Render title in semibold weight. @default false */\n titleBold?: boolean\n}) {\n const { variant, size } = useAccordionCtx()\n const isDefaultLayout = Boolean(title)\n\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n // ── Base ──────────────────────────────────────────────────\n \"group flex w-full cursor-pointer items-center outline-none\",\n \"transition-colors duration-base ease-standard\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"disabled:pointer-events-none\",\n\n // ── Size-based padding and column gap ─────────────────────\n TRIGGER_PADDING[size],\n\n // ── Interactive state backgrounds ─────────────────────────\n \"hover:bg-accordion-bg-hover\",\n \"active:bg-accordion-bg-active\",\n\n // ── Fill / elevate / outline: rounded on all corners when closed,\n // square bottom corners when open so header connects to content\n (variant === \"fill\" || variant === \"elevate\" || variant === \"outline\") && [\n \"rounded-[var(--accordion-radius)]\",\n \"data-[state=open]:rounded-b-none\",\n ],\n\n className\n )}\n {...props}\n >\n {/* ── Default layout: [icon] [title + subtitle] [chevron] ── */}\n {isDefaultLayout ? (\n <>\n {icon !== undefined && (\n <span\n className=\"flex size-6 shrink-0 items-center justify-center text-accordion-icon group-disabled:text-accordion-icon-disabled\"\n aria-hidden\n >\n {icon}\n </span>\n )}\n\n <div className=\"flex min-w-0 flex-1 flex-col gap-1 text-left\">\n <span\n className={cn(\n \"font-body text-accordion-title group-disabled:text-accordion-title-disabled\",\n TITLE_CLASSES[size],\n titleBold ? \"font-semibold\" : \"font-normal\"\n )}\n >\n {title}\n </span>\n {subtitle && (\n <span\n className={cn(\n \"font-body font-normal text-accordion-subtitle group-disabled:text-accordion-subtitle-disabled\",\n SUBTITLE_CLASSES[size]\n )}\n >\n {subtitle}\n </span>\n )}\n </div>\n </>\n ) : (\n /* ── Custom layout: arbitrary children slot ── */\n <div className=\"flex min-w-0 flex-1 items-center\">{children}</div>\n )}\n\n {/* ── Chevron (always present) ── */}\n <Icon\n name=\"chevron-down\"\n className={cn(\n \"ml-auto size-5 shrink-0 text-accordion-icon group-disabled:text-accordion-icon-disabled\",\n \"transition-transform duration-base ease-standard\",\n \"group-data-[state=open]:rotate-180\"\n )}\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\n// ── AccordionContent ──────────────────────────────────────────────────\n\n/**\n * Collapsible content area. Accepts any React children as the body slot.\n * Padding automatically matches the parent accordion's size.\n */\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n const { size } = useAccordionCtx()\n\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(CONTENT_PADDING[size], className)}>\n {children}\n </div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\nexport type { AccordionVariant, AccordionSize }\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Badge({\n count,\n className,\n ...props\n}: React.ComponentProps<\"span\"> & {\n count: number\n}) {\n const display = count > 99 ? \"+99\" : String(count)\n return (\n <span\n data-slot=\"badge\"\n className={cn(\n \"inline-flex items-center justify-center shrink-0 font-body text-badge-text bg-badge-bg-number rounded-[var(--badge-md-radius)] [font-weight:var(--badge-font-weight)] h-[var(--badge-md-height)] min-w-[var(--badge-md-min-width)] max-w-[var(--badge-md-max-width)] px-[var(--badge-md-padding-horizontal)] [font-size:var(--badge-md-font-size)]\",\n className\n )}\n {...props}\n >\n {display}\n </span>\n )\n}\n\nconst dotColorMap = {\n red: \"bg-badge-status-red\",\n yellow: \"bg-badge-status-yellow\",\n green: \"bg-badge-status-green\",\n blue: \"bg-badge-status-blue\",\n} as const\n\nfunction BadgeDot({\n size = \"md\",\n color = \"red\",\n className,\n ...props\n}: React.ComponentProps<\"span\"> & {\n size?: \"sm\" | \"md\"\n color?: keyof typeof dotColorMap\n}) {\n return (\n <span\n data-slot=\"badge-dot\"\n className={cn(\n \"inline-block rounded-full shrink-0\",\n dotColorMap[color],\n size === \"sm\"\n ? \"h-[var(--badge-sm-dot-size)] w-[var(--badge-sm-dot-size)]\"\n : \"h-[var(--badge-md-dot-size)] w-[var(--badge-md-dot-size)]\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Badge, BadgeDot }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Icon, type IconName } from \"./icon\"\n\nimport { cn } from \"../../lib/utils\"\nimport { BadgeDot } from \"./badge\"\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype NotificationVariant = \"information\" | \"success\" | \"warning\" | \"danger\"\n\n// ─── Variant maps ─────────────────────────────────────────────────────────────\n\nconst variantIconMap: Record<NotificationVariant, IconName> = {\n information: \"circle-info\",\n success: \"circle-check\",\n warning: \"triangle-exclamation\",\n danger: \"circle-exclamation\",\n}\n\nconst variantIconBgClass: Record<NotificationVariant, string> = {\n information: \"bg-notification-bg-icon-information\",\n success: \"bg-notification-bg-icon-success\",\n warning: \"bg-notification-bg-icon-warning\",\n danger: \"bg-notification-bg-icon-danger\",\n}\n\n/** Icon colour inside the tinted item container */\nconst variantIconNormalClass: Record<NotificationVariant, string> = {\n information: \"text-notification-icon-normal-information\",\n success: \"text-notification-icon-normal-success\",\n warning: \"text-notification-icon-normal-warning\",\n danger: \"text-notification-icon-normal-danger\",\n}\n\n// ─── NotificationBanner ───────────────────────────────────────────────────────\n// Static display — no internal state. Parent is responsible for unmounting.\n// Grid layout mirrors section-message: icon col aligns to the title's first line.\n\ninterface NotificationBannerProps {\n title: React.ReactNode\n description?: React.ReactNode\n /** Optional content before the default Info icon (e.g. anatomy markers). */\n slotBeforeIcon?: React.ReactNode\n /** Optional content before the close button when onClose is set (e.g. anatomy markers). */\n slotBeforeClose?: React.ReactNode\n onClose?: () => void\n className?: string\n}\n\nfunction NotificationBanner({\n title,\n description,\n slotBeforeIcon,\n slotBeforeClose,\n onClose,\n className,\n}: NotificationBannerProps) {\n return (\n <div\n data-slot=\"notification-banner\"\n className={cn(\n // Grid: [icon] [text] [close] — icon aligns to title start (same as section-message pattern)\n \"grid w-full rounded-[var(--notification-radius)] bg-notification-bg-banner\",\n \"min-w-[var(--notification-min-width-banner)] max-w-[var(--notification-max-width-banner)]\",\n \"grid-cols-[auto_1fr_auto] items-start gap-x-[var(--notification-gap-md)]\",\n \"px-[var(--notification-padding-horizontal)] py-[var(--notification-padding-vertical)]\",\n className\n )}\n >\n {/* Icon row: fixed height for title alignment; min-width only so slotBeforeIcon (e.g. anatomy Num) + icon fit */}\n <div className=\"flex h-[var(--notification-size-icon-banner)] min-w-[var(--notification-size-icon-banner)] shrink-0 items-center justify-center gap-1\">\n {slotBeforeIcon}\n <Icon\n name=\"circle-info\"\n className=\"text-notification-icon-inverse-information\"\n style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }}\n />\n </div>\n\n {/* Text */}\n <div className=\"flex flex-col\" style={{ gap: 0 }}>\n <p\n className=\"flex w-full min-w-0 items-center gap-1 overflow-hidden text-ellipsis whitespace-nowrap text-notification-title-banner leading-[1.5]\"\n style={{\n fontSize: \"var(--notification-font-size-md)\",\n fontWeight: \"var(--notification-font-weight-semibold)\",\n }}\n >\n {title}\n </p>\n {description != null && description !== \"\" && (\n <p\n className=\"flex w-full min-w-0 items-center gap-1 text-notification-description-banner leading-[1.5]\"\n style={{\n fontSize: \"var(--notification-font-size-sm)\",\n fontWeight: \"var(--notification-font-weight-regular)\",\n }}\n >\n {description}\n </p>\n )}\n </div>\n\n {/* Close — [INFERRED] colour: text-notification-title-banner (no dedicated close token) */}\n {onClose && (\n <div className=\"flex items-center justify-center gap-1 self-center\">\n {slotBeforeClose}\n <button\n type=\"button\"\n onClick={onClose}\n className=\"flex items-center justify-center text-notification-title-banner opacity-60 hover:opacity-100 transition-opacity\"\n style={{ width: \"var(--button-sm-icon-size)\", height: \"var(--button-sm-icon-size)\" }}\n aria-label=\"Close notification\"\n >\n <Icon\n name=\"xmark\"\n style={{ width: \"var(--semantic-size-width-height-16)\", height: \"var(--semantic-size-width-height-16)\" }}\n />\n </button>\n </div>\n )}\n </div>\n )\n}\n\n// ─── NotificationItem ─────────────────────────────────────────────────────────\n// Purely controlled. isRead is a prop; swipe position is ephemeral UI state.\n// Pointer-capture approach keeps drag tracking reliable on desktop and touch.\n\ninterface NotificationItemProps {\n variant?: NotificationVariant\n title: React.ReactNode\n description?: React.ReactNode\n dateTime?: React.ReactNode\n /** Optional content before the variant icon column (e.g. anatomy markers). */\n slotBeforeIcon?: React.ReactNode\n /** Optional content after the icon + badge cell (e.g. anatomy markers for the unread dot). */\n slotAfterIcon?: React.ReactNode\n /** Optional content before the desktop action buttons (e.g. anatomy markers). */\n slotBeforeActions?: React.ReactNode\n isRead: boolean\n /** desktop=true → hover reveals icon-only actions (no swipe). default false = mobile swipe mode. */\n desktop?: boolean\n onRead?: () => void\n onUnread?: () => void\n onDelete?: () => void\n className?: string\n}\n\n// ── Shared inner content (icon + text block) used in both mobile and desktop ──\nfunction NotificationItemContent({\n variant,\n title,\n description,\n dateTime,\n isRead,\n slotBeforeIcon,\n slotAfterIcon,\n}: Pick<\n NotificationItemProps,\n | \"variant\"\n | \"title\"\n | \"description\"\n | \"dateTime\"\n | \"isRead\"\n | \"slotBeforeIcon\"\n | \"slotAfterIcon\"\n>) {\n const variantIconName = variantIconMap[variant ?? \"information\"]\n return (\n <>\n {/* Icon with optional unread badge dot */}\n <div className=\"flex shrink-0 items-start gap-1\">\n {slotBeforeIcon}\n <div className=\"relative shrink-0\">\n <div\n className={cn(\"flex items-center justify-center rounded-[var(--notification-radius-icon)]\", variantIconBgClass[variant ?? \"information\"])}\n style={{ width: \"var(--notification-size-icon-container)\", height: \"var(--notification-size-icon-container)\" }}\n >\n <Icon\n name={variantIconName}\n className={variantIconNormalClass[variant ?? \"information\"]}\n style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }}\n />\n </div>\n {!isRead && (\n <BadgeDot color=\"red\" size=\"sm\" className=\"absolute top-0 left-6\" />\n )}\n </div>\n {slotAfterIcon}\n </div>\n\n {/* Text column */}\n <div\n className=\"flex h-full min-w-0 flex-1 flex-col items-start justify-center leading-[1.5] whitespace-nowrap\"\n style={{ gap: \"var(--notification-gap-sm)\" }}\n >\n <div className=\"flex w-full flex-col items-start\">\n <p\n className=\"flex w-full min-w-0 items-center gap-1 overflow-hidden text-ellipsis text-notification-title-item\"\n style={{ fontSize: \"var(--notification-font-size-md)\", fontWeight: \"var(--notification-font-weight-semibold)\" }}\n >\n {title}\n </p>\n {description != null && description !== \"\" && (\n <p\n className={cn(\n \"flex w-full min-w-0 items-center gap-1 overflow-hidden text-ellipsis\",\n isRead ? \"text-notification-description-item-read\" : \"text-notification-description-item-unread\"\n )}\n style={{\n fontSize: \"var(--notification-font-size-sm)\",\n fontWeight: isRead ? \"var(--notification-font-weight-regular)\" : \"var(--notification-font-weight-medium)\",\n }}\n >\n {description}\n </p>\n )}\n </div>\n {dateTime != null && dateTime !== \"\" && (\n <span\n className=\"flex w-full min-w-0 items-center gap-1 overflow-hidden text-ellipsis text-notification-date-time-item\"\n style={{ fontSize: \"var(--notification-font-size-xs)\", fontWeight: \"var(--notification-font-weight-regular)\" }}\n >\n {dateTime}\n </span>\n )}\n </div>\n </>\n )\n}\n\n// ── Desktop variant — hover-reveal icon-only actions, no hooks needed ──────────\nfunction NotificationItemDesktop({\n variant = \"information\",\n title,\n description,\n dateTime,\n isRead,\n slotBeforeIcon,\n slotAfterIcon,\n slotBeforeActions,\n onRead,\n onUnread,\n onDelete,\n className,\n}: Omit<NotificationItemProps, \"desktop\">) {\n return (\n <div\n data-slot=\"notification-item\"\n data-read={isRead}\n data-desktop=\"true\"\n className={cn(\n \"group relative flex items-start\",\n \"h-[var(--notification-height-item)]\",\n \"gap-[var(--notification-gap-icon-content)]\",\n \"px-[var(--notification-padding-horizontal)] py-[var(--notification-padding-vertical)]\",\n \"bg-notification-bg-item-default\",\n \"transition-colors duration-[var(--duration-fast,150ms)]\",\n \"hover:bg-notification-bg-item-hover\",\n \"cursor-default select-none\",\n className\n )}\n >\n <NotificationItemContent\n variant={variant}\n title={title}\n description={description}\n dateTime={dateTime}\n isRead={isRead}\n slotBeforeIcon={slotBeforeIcon}\n slotAfterIcon={slotAfterIcon}\n />\n\n {/* Action icons — no labels, appear on group-hover */}\n <div\n className={cn(\n \"flex shrink-0 items-center self-center\",\n \"gap-[var(--notification-gap-md)]\",\n \"opacity-0 transition-opacity duration-[var(--duration-fast,150ms)]\",\n \"group-hover:opacity-100\"\n )}\n aria-hidden=\"true\"\n >\n {slotBeforeActions}\n <button\n type=\"button\"\n className=\"flex items-center justify-center rounded text-notification-icon-read-unread hover:bg-notification-bg-button-press active:bg-notification-bg-button-press transition-colors\"\n style={{ width: \"var(--notification-size-icon-container)\", height: \"var(--notification-size-icon-container)\" }}\n onClick={() => { if (!isRead) onRead?.(); else onUnread?.() }}\n aria-label={isRead ? \"Mark as unread\" : \"Mark as read\"}\n >\n <Icon\n name={isRead ? \"envelope\" : \"envelope-open\"}\n style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }}\n />\n </button>\n <button\n type=\"button\"\n className=\"flex items-center justify-center rounded text-notification-icon-delete hover:bg-notification-bg-button-press active:bg-notification-bg-button-press transition-colors\"\n style={{ width: \"var(--notification-size-icon-container)\", height: \"var(--notification-size-icon-container)\" }}\n onClick={() => onDelete?.()}\n aria-label=\"Delete notification\"\n >\n <Icon name=\"trash\" style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }} />\n </button>\n </div>\n </div>\n )\n}\n\n// ── Mobile variant — swipe-to-reveal labelled actions ───────────────────────\n// All hooks live here unconditionally, satisfying React's Rules of Hooks.\nfunction NotificationItemMobile({\n variant = \"information\",\n title,\n description,\n dateTime,\n isRead,\n slotBeforeIcon,\n slotAfterIcon,\n slotBeforeActions: _slotBeforeActions,\n onRead,\n onUnread,\n onDelete,\n className,\n}: Omit<NotificationItemProps, \"desktop\">) {\n // isSwiped drives only a11y attributes (tabIndex / aria-hidden).\n // The visual transform is applied directly to the DOM via contentRef\n // so React re-renders are never triggered during a drag — zero lag.\n const [isSwiped, setIsSwiped] = React.useState(false)\n const [readPressed, setReadPressed] = React.useState(false)\n const [deletePressed, setDeletePressed] = React.useState(false)\n const isSwipedRef = React.useRef(false)\n const contentRef = React.useRef<HTMLDivElement>(null)\n const actionsRef = React.useRef<HTMLDivElement>(null)\n const startXRef = React.useRef<number>(0)\n\n const SNAP_THRESHOLD = 40 // px delta to commit open/close\n const TAP_THRESHOLD = 5 // px delta below which we treat as tap\n\n const actionsWidth = () => actionsRef.current?.offsetWidth ?? 161\n\n const move = (x: number, animate: boolean) => {\n const el = contentRef.current\n if (!el) return\n el.style.transition = animate ? \"transform var(--duration-fast, 150ms) ease\" : \"none\"\n el.style.transform = `translateX(${x}px)`\n }\n\n const collapse = React.useCallback(() => {\n isSwipedRef.current = false\n setIsSwiped(false)\n move(0, true)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const handlePointerDown = (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.pointerType === \"mouse\" && e.button !== 0) return\n startXRef.current = e.clientX\n contentRef.current?.setPointerCapture(e.pointerId)\n move(isSwipedRef.current ? -actionsWidth() : 0, false)\n }\n\n const handlePointerMove = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!contentRef.current?.hasPointerCapture(e.pointerId)) return\n const base = isSwipedRef.current ? -actionsWidth() : 0\n const clamped = Math.min(0, Math.max(-actionsWidth(), base + (e.clientX - startXRef.current)))\n move(clamped, false)\n }\n\n const handlePointerUp = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!contentRef.current?.hasPointerCapture(e.pointerId)) return\n contentRef.current.releasePointerCapture(e.pointerId)\n\n const delta = e.clientX - startXRef.current\n\n if (Math.abs(delta) < TAP_THRESHOLD) {\n if (isSwipedRef.current) collapse()\n return\n }\n\n const target = (isSwipedRef.current ? -actionsWidth() : 0) + delta\n\n if (target < -SNAP_THRESHOLD) {\n isSwipedRef.current = true\n setIsSwiped(true)\n move(-actionsWidth(), true)\n } else {\n collapse()\n }\n }\n\n return (\n <div\n data-slot=\"notification-item\"\n data-read={isRead}\n className={cn(\n \"relative overflow-hidden bg-notification-bg-item-default\",\n \"h-[var(--notification-height-item)]\",\n className\n )}\n >\n {/* Action buttons — fixed at right-0, revealed when content slides left */}\n <div ref={actionsRef} className=\"absolute inset-y-0 right-0 flex\" aria-hidden={!isSwiped}>\n {/* Read / Unread */}\n <button\n type=\"button\"\n tabIndex={isSwiped ? 0 : -1}\n className={cn(\n \"flex h-full flex-col items-center justify-center gap-[var(--notification-gap-sm)] overflow-hidden\",\n \"text-notification-text-read-unread\",\n readPressed ? \"bg-notification-bg-button-press\" : \"bg-notification-bg-button-default\"\n )}\n style={{ width: \"var(--notification-width-button)\" }}\n onMouseDown={() => setReadPressed(true)}\n onMouseUp={() => {\n setReadPressed(false)\n if (!isRead) onRead?.(); else onUnread?.()\n collapse()\n }}\n onMouseLeave={() => setReadPressed(false)}\n onTouchStart={(e) => { e.stopPropagation(); setReadPressed(true) }}\n onTouchEnd={(e) => {\n e.preventDefault(); e.stopPropagation()\n setReadPressed(false)\n if (!isRead) onRead?.(); else onUnread?.()\n collapse()\n }}\n aria-label={isRead ? \"Mark as unread\" : \"Mark as read\"}\n >\n <Icon\n name={isRead ? \"envelope\" : \"envelope-open\"}\n className=\"shrink-0 text-notification-icon-read-unread\"\n style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }}\n />\n <span className=\"text-center leading-[1.5]\" style={{ fontSize: \"var(--notification-font-size-xs)\", fontWeight: \"var(--notification-font-weight-medium)\" }}>\n {isRead ? \"Unread\" : \"Read\"}\n </span>\n </button>\n\n {/* Divider */}\n <div className=\"h-full bg-notification-bg-divider\" style={{ width: \"var(--notification-width-divider)\" }} />\n\n {/* Delete */}\n <button\n type=\"button\"\n tabIndex={isSwiped ? 0 : -1}\n className={cn(\n \"flex h-full flex-col items-center justify-center gap-[var(--notification-gap-sm)] overflow-hidden\",\n \"text-notification-text-delete\",\n deletePressed ? \"bg-notification-bg-button-press\" : \"bg-notification-bg-button-default\"\n )}\n style={{ width: \"var(--notification-width-button)\" }}\n onMouseDown={() => setDeletePressed(true)}\n onMouseUp={() => { setDeletePressed(false); onDelete?.() }}\n onMouseLeave={() => setDeletePressed(false)}\n onTouchStart={(e) => { e.stopPropagation(); setDeletePressed(true) }}\n onTouchEnd={(e) => {\n e.preventDefault(); e.stopPropagation()\n setDeletePressed(false); onDelete?.()\n }}\n aria-label=\"Delete notification\"\n >\n <Icon name=\"trash\" className=\"shrink-0 text-notification-icon-delete\" style={{ width: \"var(--notification-size-icon)\", height: \"var(--notification-size-icon)\" }} />\n <span className=\"text-center leading-[1.5]\" style={{ fontSize: \"var(--notification-font-size-xs)\", fontWeight: \"var(--notification-font-weight-medium)\" }}>\n Delete\n </span>\n </button>\n </div>\n\n {/* Main content — transform driven directly via DOM ref, no React re-render during drag */}\n <div\n ref={contentRef}\n className={cn(\n \"absolute inset-0 flex items-start touch-pan-y\",\n \"gap-[var(--notification-gap-icon-content)]\",\n \"px-[var(--notification-padding-horizontal)] py-[var(--notification-padding-vertical)]\",\n \"bg-notification-bg-item-default\",\n \"cursor-default select-none\"\n )}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n >\n <NotificationItemContent\n variant={variant}\n title={title}\n description={description}\n dateTime={dateTime}\n isRead={isRead}\n slotBeforeIcon={slotBeforeIcon}\n slotAfterIcon={slotAfterIcon}\n />\n </div>\n </div>\n )\n}\n\n// ── Public API — thin wrapper, delegates to the correct internal component ────\nfunction NotificationItem({ desktop = false, ...props }: NotificationItemProps) {\n if (desktop) return <NotificationItemDesktop {...props} />\n return <NotificationItemMobile {...props} />\n}\n\n// ─── NotificationDivider ─────────────────────────────────────────────────────\n\nfunction NotificationDivider({ className }: { className?: string }) {\n return (\n <div\n data-slot=\"notification-divider\"\n className={cn(\"w-full bg-notification-bg-divider\", className)}\n style={{ height: \"var(--notification-width-divider)\" }}\n />\n )\n}\n\nexport { NotificationBanner, NotificationItem, NotificationDivider }\n\nexport type { NotificationVariant, NotificationBannerProps, NotificationItemProps }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst sectionMessageVariants = cva(\n [\n \"relative w-full rounded-[var(--section-message-radius)] border-0\",\n \"px-[var(--section-message-padding-horizontal)] py-[var(--section-message-padding-vertical)]\",\n \"text-section-message-title\",\n // grid layout — triggered by the icon container slot\n \"has-[[data-slot=section-message-icon]]:grid\",\n \"has-[[data-slot=section-message-icon]]:grid-cols-[auto_1fr]\",\n \"has-[[data-slot=section-message-icon]]:items-center\",\n \"has-[[data-slot=section-message-icon]]:gap-x-[var(--section-message-gap-horizontal)]\",\n \"[&_[data-slot=section-message-icon]]:pointer-events-none\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n /* ── token-backed section-message variants ── */\n default:\n \"bg-section-message-fill-bg-default [&_[data-slot=section-message-icon]]:text-section-message-icon-close\",\n danger:\n \"bg-section-message-fill-bg-danger [&_[data-slot=section-message-icon]]:text-section-message-icon-danger\",\n information:\n \"bg-section-message-fill-bg-information [&_[data-slot=section-message-icon]]:text-section-message-icon-information\",\n success:\n \"bg-section-message-fill-bg-success [&_[data-slot=section-message-icon]]:text-section-message-icon-success\",\n warning:\n \"bg-section-message-fill-bg-warning [&_[data-slot=section-message-icon]]:text-section-message-icon-warning\",\n info: \"bg-section-message-fill-bg-information [&_[data-slot=section-message-icon]]:text-section-message-icon-information\",\n error:\n \"bg-section-message-fill-bg-danger [&_[data-slot=section-message-icon]]:text-section-message-icon-danger\",\n },\n size: {\n sm: [\n \"[font-size:var(--section-message-sm-font-size-message)]\",\n // icon container: 24×24; icon glyph: 16px\n // `!w` / `!h` beat FA's un-layered `height: 1em` which overrides @layer utilities\n \"[&_[data-slot=section-message-icon]]:size-6\",\n \"[&_[data-slot=section-message-icon]_svg]:!w-4\",\n \"[&_[data-slot=section-message-icon]_svg]:!h-4\",\n \"[&_[data-slot=section-message-title]]:text-[length:var(--section-message-sm-font-size-title)]\",\n \"[&_[data-slot=section-message-description]]:gap-[var(--section-message-sm-gap-vertical-2)]\",\n ],\n md: [\n \"[font-size:var(--section-message-md-font-size-message)]\",\n // icon container: 28×28; icon glyph: 18px\n // `!w` / `!h` beat FA's un-layered `height: 1em` which overrides @layer utilities\n \"[&_[data-slot=section-message-icon]]:size-7\",\n \"[&_[data-slot=section-message-icon]_svg]:!w-[18px]\",\n \"[&_[data-slot=section-message-icon]_svg]:!h-[18px]\",\n \"[&_[data-slot=section-message-title]]:text-[length:var(--section-message-md-font-size-title)]\",\n \"[&_[data-slot=section-message-description]]:gap-[var(--section-message-md-gap-vertical-2)]\",\n ],\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nfunction SectionMessage({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof sectionMessageVariants>) {\n return (\n <div\n data-slot=\"section-message\"\n role=\"alert\"\n className={cn(sectionMessageVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nfunction SectionMessageTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"section-message-title\"\n className={cn(\n \"col-start-2 font-bold leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SectionMessageDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"section-message-description\"\n className={cn(\n \"col-start-2 grid justify-items-start gap-[var(--section-message-gap-vertical-1)] text-section-message-description [&_p]:leading-relaxed\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SectionMessageIcon({ className, children, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"section-message-icon\"\n className={cn(\"flex shrink-0 items-center justify-center\", className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { SectionMessage, SectionMessageIcon, SectionMessageTitle, SectionMessageDescription }\n","\"use client\"\n\nimport { AspectRatio as AspectRatioPrimitive } from \"radix-ui\"\n\nfunction AspectRatio({\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />\n}\n\nexport { AspectRatio }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: \"default\" | \"sm\" | \"lg\" | \"xl\"\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n \"group/avatar relative flex size-8 shrink-0 rounded-full select-none data-[size=sm]:size-6 data-[size=lg]:size-10 data-[size=xl]:[width:var(--avatar-size-xl)] data-[size=xl]:[height:var(--avatar-size-xl)]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full overflow-hidden rounded-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"flex size-full items-center justify-center overflow-hidden rounded-full bg-secondary-surface text-sm text-subtle group-data-[size=sm]/avatar:text-xs group-data-[size=xl]/avatar:text-base\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n \"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-prominent-static-inverse ring-2 ring-primary-surface select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n \"group-data-[size=xl]/avatar:size-3.5 group-data-[size=xl]/avatar:[&>svg]:size-2.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n \"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-primary-surface\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n \"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-secondary-surface text-sm text-subtle ring-2 ring-primary-surface group-has-data-[size=sm]/avatar-group:size-6 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=xl]/avatar-group:[width:var(--avatar-size-xl)] group-has-data-[size=xl]/avatar-group:[height:var(--avatar-size-xl)] [&>svg]:size-4 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=xl]/avatar-group:[&>svg]:size-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarBadge,\n AvatarGroup,\n AvatarGroupCount,\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst tagVariants = cva(\n \"inline-flex w-fit shrink-0 items-center justify-center overflow-hidden border font-body font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [&>svg]:pointer-events-none [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n /* ── fill: tinted background, no border ── */\n \"fill-neutral\": \"bg-tag-fill-bg-neutral text-tag-text-neutral border-transparent [&>svg]:text-tag-icon-default\",\n \"fill-red\": \"bg-tag-fill-bg-red text-tag-text-red border-transparent [&>svg]:text-tag-icon-red\",\n \"fill-yellow\": \"bg-tag-fill-bg-yellow text-tag-text-yellow border-transparent [&>svg]:text-tag-icon-yellow\",\n \"fill-green\": \"bg-tag-fill-bg-green text-tag-text-green border-transparent [&>svg]:text-tag-icon-green\",\n \"fill-blue\": \"bg-tag-fill-bg-blue text-tag-text-blue border-transparent [&>svg]:text-tag-icon-blue\",\n /* ── outline: transparent background, coloured border ── */\n \"outline-neutral\": \"bg-transparent border-tag-outline-border-neutral text-tag-text-neutral [&>svg]:text-tag-icon-default\",\n \"outline-red\": \"bg-transparent border-tag-outline-border-red text-tag-text-red [&>svg]:text-tag-icon-red\",\n \"outline-yellow\": \"bg-transparent border-tag-outline-border-yellow text-tag-text-yellow [&>svg]:text-tag-icon-yellow\",\n \"outline-green\": \"bg-transparent border-tag-outline-border-green text-tag-text-green [&>svg]:text-tag-icon-green\",\n \"outline-blue\": \"bg-transparent border-tag-outline-border-blue text-tag-text-blue [&>svg]:text-tag-icon-blue\",\n },\n size: {\n sm: [\n \"h-[var(--tag-sm-height)]\",\n \"min-w-[var(--tag-sm-min-width)]\",\n \"px-[var(--tag-sm-padding-horizontal)]\",\n \"gap-[var(--tag-sm-gap)]\",\n \"[font-size:var(--tag-sm-font-size)]\",\n \"[font-weight:var(--tag-sm-font-weight)]\",\n \"rounded-[var(--tag-sm-radius)]\",\n \"[&>svg]:[width:var(--tag-sm-icon-size)] [&>svg]:[height:var(--tag-sm-icon-size)]\",\n ],\n md: [\n \"h-[var(--tag-md-height)]\",\n \"min-w-[var(--tag-md-min-width)]\",\n \"px-[var(--tag-md-padding-horizontal)]\",\n \"gap-[var(--tag-md-gap)]\",\n \"[font-size:var(--tag-md-font-size)]\",\n \"[font-weight:var(--tag-md-font-weight)]\",\n \"rounded-[var(--tag-md-radius)]\",\n \"[&>svg]:[width:var(--tag-md-icon-size)] [&>svg]:[height:var(--tag-md-icon-size)]\",\n ],\n },\n },\n defaultVariants: {\n variant: \"fill-neutral\",\n size: \"md\",\n },\n }\n)\n\nfunction Tag({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof tagVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n\n return (\n <Comp\n data-slot=\"tag\"\n data-variant={variant}\n className={cn(tagVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nexport { Tag, tagVariants }\n","import * as React from \"react\"\nimport { Icon } from \"./icon\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\ntype BreadcrumbSize = \"sm\" | \"md\"\n\nconst BreadcrumbContext = React.createContext<{ size: BreadcrumbSize }>({ size: \"md\" })\n\n/**\n * Breadcrumb navigation container.\n *\n * @param size - \"sm\" (14px) | \"md\" (16px). Default: \"md\"\n *\n * @example\n * <Breadcrumb size=\"sm\">\n * <BreadcrumbList>\n * <BreadcrumbItem>\n * <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n * </BreadcrumbItem>\n * <BreadcrumbSeparator />\n * <BreadcrumbItem>\n * <BreadcrumbPage>Current</BreadcrumbPage>\n * </BreadcrumbItem>\n * </BreadcrumbList>\n * </Breadcrumb>\n */\nfunction Breadcrumb({\n size = \"md\",\n ...props\n}: React.ComponentProps<\"nav\"> & { size?: BreadcrumbSize }) {\n return (\n <BreadcrumbContext.Provider value={{ size }}>\n <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n </BreadcrumbContext.Provider>\n )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n const { size } = React.useContext(BreadcrumbContext)\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"flex flex-wrap items-center break-words\",\n size === \"sm\" ? \"gap-1 text-sm\" : \"gap-1 text-base\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n )\n}\n\n/**\n * Navigable breadcrumb link — \"default\" state in Figma.\n * Uses `text-breadcrumb-default` (72% opacity) with hover lift to `text-prominent`.\n */\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot.Root : \"a\"\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\n \"text-breadcrumb-default transition-colors hover:text-prominent\",\n className\n )}\n {...props}\n />\n )\n}\n\n/**\n * Current / active page — \"selected\" state in Figma.\n * Renders muted (48% opacity), non-interactive, aria-current=\"page\".\n */\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-breadcrumb-selected\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n const { size } = React.useContext(BreadcrumbContext)\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n \"text-breadcrumb-sep\",\n size === \"sm\" ? \"[&>svg]:size-3.5\" : \"[&>svg]:size-4\",\n className\n )}\n {...props}\n >\n {children ?? <Icon name=\"chevron-right\" />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center text-breadcrumb-default\", className)}\n {...props}\n >\n <Icon name=\"ellipsis\" className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-24 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 font-display font-semibold\",\n {\n variants: {\n variant: {\n primary:\n \"border-transparent bg-button-primary-bg text-button-primary-text hover:bg-button-primary-bg-hover active:bg-button-primary-bg-pressed\",\n secondary:\n \"bg-transparent border-button-secondary-border text-button-secondary-text hover:bg-button-secondary-bg-hover active:bg-button-secondary-bg-pressed\",\n tertiary:\n \"border-transparent bg-button-tertiary-bg text-button-tertiary-text hover:bg-button-tertiary-bg-hover active:bg-button-tertiary-bg-pressed\",\n ghost:\n \"border-transparent bg-transparent text-button-ghost-text hover:bg-button-ghost-bg-hover active:bg-button-ghost-bg-pressed\",\n },\n size: {\n lg: \"h-[var(--button-lg-height)] w-fit min-w-[var(--button-lg-min-width)] gap-[var(--button-lg-gap)] rounded-[var(--button-lg-radius)] px-[var(--button-lg-padding-horizontal)] [font-size:var(--button-lg-font-size)] [border-width:var(--button-lg-border-width)] [&_svg:not([class*='size-'])]:size-5\",\n md: \"h-[var(--button-md-height)] w-fit min-w-[var(--button-md-min-width)] gap-[var(--button-md-gap)] rounded-[var(--button-md-radius)] px-[var(--button-md-padding-horizontal)] [font-size:var(--button-md-font-size)] [border-width:var(--button-md-border-width)] [&_svg:not([class*='size-'])]:size-4\",\n sm: \"h-[var(--button-sm-height)] w-fit min-w-[var(--button-sm-min-width)] gap-[var(--button-sm-gap)] rounded-[var(--button-sm-radius)] px-[var(--button-sm-padding-horizontal)] [font-size:var(--button-sm-font-size)] [border-width:var(--button-sm-border-width)] [&_svg:not([class*='size-'])]:size-4\",\n xs: \"h-6 w-fit gap-1 rounded-full px-2 text-xs [border-width:1.5px] [&_svg:not([class*='size-'])]:size-3\", /* no token — kept as-is */\n icon: \"size-[var(--button-lg-icon-size)] rounded-[var(--button-lg-radius)] [border-width:var(--button-lg-border-width)] [&_svg:not([class*='size-'])]:size-5\",\n \"icon-lg\": \"size-[var(--button-lg-icon-size)] rounded-[var(--button-lg-radius)] [border-width:var(--button-lg-border-width)] [&_svg:not([class*='size-'])]:size-5\",\n \"icon-md\": \"size-[var(--button-md-icon-size)] rounded-[var(--button-md-radius)] [border-width:var(--button-md-border-width)] [&_svg:not([class*='size-'])]:size-4\",\n \"icon-sm\": \"size-[var(--button-sm-icon-size)] rounded-[var(--button-sm-radius)] [border-width:var(--button-sm-border-width)] [&_svg:not([class*='size-'])]:size-4\",\n \"icon-xs\": \"size-6 rounded-full [border-width:1.5px] [&_svg:not([class*='size-'])]:size-3\", /* no token — kept as-is */\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"lg\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"primary\",\n size = \"lg\",\n asChild = false,\n loading = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n loading?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n data-loading={loading || undefined}\n className={cn(buttonVariants({ variant, size, className }), loading && \"pointer-events-none opacity-24\")}\n aria-busy={loading || undefined}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst chipVariants = cva(\n [\n /* layout */\n \"inline-flex w-fit shrink-0 items-center justify-center whitespace-nowrap\",\n /* typography */\n \"font-body font-medium text-chip-text-prominent\",\n /* border + shape */\n \"border border-chip-border-default bg-transparent\",\n \"[border-width:var(--chip-border-width)]\",\n \"rounded-[var(--chip-radius)]\",\n /* interactive states */\n \"cursor-pointer\",\n \"hover:bg-chip-bg-hover\",\n \"active:bg-chip-bg-pressed\",\n /* selected state */\n \"data-[selected]:bg-chip-bg-selected\",\n \"data-[selected]:border-chip-border-selected\",\n \"data-[selected]:[border-width:var(--chip-border-width-selected)]\",\n /* disabled state */\n \"disabled:pointer-events-none\",\n \"disabled:text-chip-text-disabled\",\n \"disabled:border-chip-border-disabled\",\n \"disabled:[&>svg]:text-chip-icon-disabled\",\n /* icon */\n \"[&>svg]:pointer-events-none [&>svg]:shrink-0 [&>svg]:text-chip-icon-prominent\",\n /* focus */\n \"outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n /* transitions */\n \"transition-[color,background-color,border-color,border-width]\",\n ],\n {\n variants: {\n size: {\n sm: [\n \"h-[var(--chip-sm-height)]\",\n \"px-[var(--chip-sm-padding-horizontal)]\",\n \"gap-[var(--chip-sm-gap)]\",\n \"[font-size:var(--chip-sm-font-size)]\",\n \"[&>svg]:[width:var(--chip-sm-icon-size)] [&>svg]:[height:var(--chip-sm-icon-size)]\",\n ],\n md: [\n \"h-[var(--chip-md-height)]\",\n \"px-[var(--chip-md-padding-horizontal)]\",\n \"gap-[var(--chip-md-gap)]\",\n \"[font-size:var(--chip-md-font-size)]\",\n \"[&>svg]:[width:var(--chip-md-icon-size)] [&>svg]:[height:var(--chip-md-icon-size)]\",\n ],\n lg: [\n \"h-[var(--chip-lg-height)]\",\n \"px-[var(--chip-lg-padding-horizontal)]\",\n \"gap-[var(--chip-lg-gap)]\",\n \"[font-size:var(--chip-lg-font-size)]\",\n \"[&>svg]:[width:var(--chip-lg-icon-size)] [&>svg]:[height:var(--chip-lg-icon-size)]\",\n ],\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nfunction Chip({\n className,\n size,\n selected = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof chipVariants> & {\n selected?: boolean\n }) {\n return (\n <button\n type=\"button\"\n data-slot=\"chip\"\n data-selected={selected || undefined}\n aria-pressed={selected}\n className={cn(chipVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nexport { Chip, chipVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Icon } from \"./icon\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n} from \"react-day-picker\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button, buttonVariants } from \"./button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker>) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"group/calendar bg-card rounded-md border border-border/50 p-4 [--cell-size:--spacing(10)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=card-content]_&]:border-0 [[data-slot=card-content]_&]:shadow-none [[data-slot=popover-content]_&]:bg-transparent [[data-slot=popover-content]_&]:border-0 [[data-slot=popover-content]_&]:shadow-none\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"relative flex flex-col gap-4 md:flex-row\",\n defaultClassNames.months\n ),\n month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n nav: cn(\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: \"ghost\", size: \"icon-sm\" }),\n \"p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: \"ghost\", size: \"icon-sm\" }),\n \"p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute inset-0 bg-primary-surface opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"font-body font-medium select-none\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-subtle\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"flex-1 rounded-md text-[0.8rem] font-body font-normal text-subtle select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n week_number_header: cn(\n \"w-(--cell-size) select-none\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] text-subtle select-none\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"group/day relative aspect-square h-full w-full p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-md\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-xs bg-prominent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-xs bg-prominent\", defaultClassNames.range_end),\n today: defaultClassNames.today,\n outside: cn(\n \"opacity-50 text-subtle aria-selected:text-subtle\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-subtle opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation }) => {\n if (orientation === \"left\") {\n return <Icon name=\"chevron-left\" className={cn(\"size-4\", className)} />\n }\n if (orientation === \"right\") {\n return <Icon name=\"chevron-right\" className={cn(\"size-4\", className)} />\n }\n return <Icon name=\"chevron-down\" className={cn(\"size-4\", className)} />\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"tertiary\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-today={modifiers.today || undefined}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-body font-normal rounded-xs bg-transparent border-transparent shadow-none text-prominent hover:!bg-secondary-hover hover:text-prominent hover:no-underline hover:shadow-none group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 data-[range-end=true]:rounded-xs data-[range-end=true]:bg-prominent data-[range-end=true]:border-transparent data-[range-end=true]:text-primary-surface data-[range-end=true]:hover:!bg-prominent data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-prominent/10 data-[range-middle=true]:text-prominent data-[range-start=true]:rounded-xs data-[range-start=true]:bg-prominent data-[range-start=true]:border-transparent data-[range-start=true]:text-primary-surface data-[range-start=true]:hover:!bg-prominent data-[selected-single=true]:bg-prominent data-[selected-single=true]:border-transparent data-[selected-single=true]:text-primary-surface data-[selected-single=true]:hover:!bg-prominent [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n// ── Card ──────────────────────────────────────────────────────────────────────\n\nconst cardVariants = cva(\n \"flex flex-col gap-6 rounded-2xl py-6 text-prominent\",\n {\n variants: {\n variant: {\n /** Elevated card — white surface lifted by a shadow, no border */\n elevate: \"bg-card border border-transparent shadow-accordion-fill\",\n /** Outlined card — white surface with a subtle 8% border, no shadow */\n outline: \"bg-card border border-default/50\",\n },\n },\n defaultVariants: {\n variant: \"outline\",\n },\n }\n)\n\nfunction Card({\n className,\n variant = \"outline\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof cardVariants>) {\n return (\n <div\n data-slot=\"card\"\n data-variant={variant}\n className={cn(cardVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\n// ── CardHeader ────────────────────────────────────────────────────────────────\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── CardTitle ─────────────────────────────────────────────────────────────────\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\n// ── CardDescription ───────────────────────────────────────────────────────────\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-sm text-subtle\", className)}\n {...props}\n />\n )\n}\n\n// ── CardAction ────────────────────────────────────────────────────────────────\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── CardContent ───────────────────────────────────────────────────────────────\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\n// ── CardFooter ────────────────────────────────────────────────────────────────\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n cardVariants,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { Icon } from \"./icon\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) return\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel()\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"secondary\",\n size = \"icon-md\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute rounded-sm\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <Icon name=\"arrow-left\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"secondary\",\n size = \"icon-md\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute rounded-sm\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <Icon name=\"arrow-right\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR } — light-only\nconst THEMES = { light: \"\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-default/50 bg-primary-surface px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-subtle\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-subtle\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium text-prominent tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-subtle\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Icon } from \"./icon\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Checkbox — raw Radix primitive */\n/* */\n/* Visual model (matches Figma Quill spec — fully icon-driven): */\n/* • Root — 24×24 touch target (no visual of its own) */\n/* • unchecked — fa-square regular 16px, text-subtle */\n/* • checked — fa-square-check solid 16px, text-selected */\n/* • indeterminate — fa-square-minus solid 16px, text-selected */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n // 24×24 touch/focus target — no visual box on the root itself\n \"group peer relative flex size-6 shrink-0 items-center justify-center rounded-[4px]\",\n \"cursor-pointer outline-none\",\n \"focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n {/*\n * Unchecked visual — fa-square regular.\n * Wrapped in a <span> so `hidden` targets a plain HTML element;\n * FA's un-layered `.svg-inline--fa { display: inline-block }` would\n * otherwise win over the `hidden` utility applied directly to the SVG.\n */}\n <span className=\"contents group-data-[state=checked]:hidden group-data-[state=indeterminate]:hidden\">\n <Icon\n name=\"square\"\n aria-hidden\n className=\"size-4 shrink-0 text-subtle\"\n />\n </span>\n\n {/*\n * Indicator only mounts when state is checked or indeterminate.\n * `group` lets children read the Indicator's own data-state.\n * Each icon is wrapped in a <span> so `hidden` applies to a plain\n * HTML element — not the SVG that carries FA's inline display style.\n */}\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"group flex size-4 shrink-0 items-center justify-center transition-none\"\n >\n {/* Checked → fa-square-check solid */}\n <span className=\"contents group-data-[state=indeterminate]:hidden\">\n <Icon\n name=\"square-check\"\n className=\"size-4 shrink-0 text-selected\"\n />\n </span>\n {/* Indeterminate → fa-square-minus solid */}\n <span className=\"contents group-data-[state=checked]:hidden\">\n <Icon\n name=\"square-minus\"\n className=\"size-4 shrink-0 text-selected\"\n />\n </span>\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* CheckboxField — composite: checkbox + label + optional info icon */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ntype CheckboxFieldProps = Omit<\n React.ComponentProps<typeof CheckboxPrimitive.Root>,\n \"children\"\n> & {\n /**\n * Visual size variant.\n * - `sm` → 14 px label, 14 px info icon\n * - `md` → 16 px label, 16 px info icon (default)\n */\n size?: \"sm\" | \"md\"\n /** Label text rendered next to the checkbox. */\n label?: React.ReactNode\n /** When `true`, renders a Lucide `InfoIcon` after the label text. */\n info?: boolean\n}\n\nfunction CheckboxField({\n id,\n label,\n info = false,\n size = \"md\",\n disabled,\n className,\n ...props\n}: CheckboxFieldProps) {\n return (\n <label\n data-slot=\"checkbox-field\"\n data-size={size}\n className={cn(\n \"inline-flex items-center gap-2 cursor-pointer select-none\",\n \"has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n className\n )}\n >\n <Checkbox id={id} disabled={disabled} {...props} />\n\n {label != null && (\n <span\n className={cn(\n \"inline-flex items-center gap-2 text-prominent\",\n size === \"sm\" ? \"text-sm leading-5\" : \"text-base leading-6\"\n )}\n >\n <span>{label}</span>\n {info && (\n <Icon\n name=\"circle-info\"\n aria-hidden=\"true\"\n className={cn(\n \"shrink-0 text-prominent\",\n size === \"sm\" ? \"size-3.5\" : \"size-4\"\n )}\n />\n )}\n </span>\n )}\n </label>\n )\n}\n\nexport { Checkbox, CheckboxField }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Collapsible as CollapsiblePrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { ListItem } from \"./list-item\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* Collapsible */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* CollapsibleTrigger */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* CollapsibleContent */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction CollapsibleContent({\n className,\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n className={cn(\"flex flex-col gap-0.5\", className)}\n {...props}\n />\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* CollapsibleItem */\n/* */\n/* A thin wrapper over ListItem locked to type=\"primary\" size=\"md\". */\n/* Renders each row inside CollapsibleContent with the exact same visual */\n/* as a primary md list item (bg, hover, pressed, selected, disabled states). */\n/* Pass asChild to render as a button/link for interactive items. */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction CollapsibleItem({\n className,\n ...props\n}: Omit<React.ComponentProps<typeof ListItem>, \"type\" | \"size\">) {\n return (\n <ListItem\n data-slot=\"collapsible-item\"\n type=\"primary\"\n size=\"md\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nexport {\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n CollapsibleItem,\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Separator } from \"./separator\"\n\n// ── ListItemGroup ─────────────────────────────────────────────────────────────\n\nfunction ListItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"list\"\n data-slot=\"list-item-group\"\n className={cn(\"group/list-item-group flex flex-col\", className)}\n {...props}\n />\n )\n}\n\n// ── ListItemSeparator ─────────────────────────────────────────────────────────\n\nfunction ListItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"list-item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-0\", className)}\n {...props}\n />\n )\n}\n\n// ── ListItem ──────────────────────────────────────────────────────────────────\n\nconst listItemVariants = cva(\n [\n \"group/list-item flex flex-wrap items-center\",\n \"rounded-[var(--list-item-radius)]\",\n \"border border-transparent\",\n \"transition-colors duration-instant\",\n \"outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"text-list-item-text-prominent [font-weight:var(--list-item-md-font-weight,400)]\",\n // icon slot inherits token color\n \"[&_[data-slot=list-item-icon]]:text-list-item-icon-prominent\",\n // disabled: mute text, icons, and block interaction\n \"data-[disabled]:text-list-item-text-disabled\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n \"data-[disabled]:[&_[data-slot=list-item-icon]]:text-list-item-icon-disabled\",\n ].join(\" \"),\n {\n variants: {\n type: {\n /** Primary surface — default bg, no border */\n primary: [\n \"bg-list-item-primary-bg-default\",\n \"hover:bg-list-item-primary-bg-hover\",\n \"active:bg-list-item-primary-bg-pressed\",\n \"data-[selected]:bg-list-item-primary-bg-selected data-[selected]:border-list-item-border-selected\",\n \"data-[disabled]:bg-list-item-primary-bg-disabled\",\n ],\n /** Secondary surface — used for lists on elevated or card backgrounds */\n secondary: [\n \"bg-list-item-secondary-bg-default\",\n \"hover:bg-list-item-secondary-bg-hover\",\n \"active:bg-list-item-secondary-bg-pressed\",\n \"data-[selected]:bg-list-item-secondary-bg-selected data-[selected]:border-list-item-border-selected\",\n \"data-[disabled]:bg-list-item-secondary-bg-disabled\",\n ],\n },\n size: {\n md: \"gap-[var(--list-item-md-gap)] px-[var(--list-item-md-padding-horizontal)] min-h-[var(--list-item-md-height)] py-2 [font-size:var(--list-item-md-font-size)]\",\n sm: \"gap-[var(--list-item-sm-gap)] px-[var(--list-item-sm-padding-horizontal)] min-h-[var(--list-item-sm-height)] py-1 [font-size:var(--list-item-sm-font-size)]\",\n },\n },\n defaultVariants: {\n type: \"primary\",\n size: \"md\",\n },\n }\n)\n\nfunction ListItem({\n className,\n type = \"primary\",\n size = \"md\",\n selected,\n disabled,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof listItemVariants> & {\n asChild?: boolean\n selected?: boolean\n disabled?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"div\"\n return (\n <Comp\n role=\"listitem\"\n data-slot=\"list-item\"\n data-type={type}\n data-size={size}\n data-selected={selected || undefined}\n data-disabled={disabled || undefined}\n className={cn(listItemVariants({ type, size }), className)}\n {...props}\n />\n )\n}\n\n// ── ListItemIcon ──────────────────────────────────────────────────────────────\n// Bare Lucide icon wrapper. Color is set by the parent ListItem via\n// [data-slot=list-item-icon] selectors, mapping to icon-prominent/icon-disabled tokens.\n\nfunction ListItemIcon({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"list-item-icon\"\n aria-hidden=\"true\"\n className={cn(\n \"shrink-0 flex items-center justify-center\",\n \"[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-5\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemFlag ──────────────────────────────────────────────────────────────\n// Country flag thumbnail. Renders a coloured placeholder when no src is given.\n\nfunction ListItemFlag({\n src,\n alt = \"\",\n className,\n ...props\n}: Omit<React.ComponentProps<\"div\">, \"children\"> & {\n src?: string\n alt?: string\n}) {\n return (\n <div\n data-slot=\"list-item-flag\"\n className={cn(\n \"shrink-0 h-4 w-6 overflow-hidden rounded-2xs bg-list-item-flag-placeholder\",\n className\n )}\n {...props}\n >\n {src && (\n <img src={src} alt={alt} className=\"size-full object-cover\" />\n )}\n </div>\n )\n}\n\n// ── ListItemMedia ─────────────────────────────────────────────────────────────\n// Structural media container: use variant=\"icon\" for a boxed icon cell,\n// variant=\"image\" for a thumbnail, or leave as default for a bare icon.\n\nconst listItemMediaVariants = cva(\n [\n \"flex shrink-0 items-center justify-center gap-2\",\n \"group-has-[[data-slot=list-item-description]]/list-item:translate-y-0.5\",\n \"group-has-[[data-slot=list-item-description]]/list-item:self-start\",\n \"[&_svg]:pointer-events-none\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"size-8 rounded-sm border bg-secondary-surface [&_svg:not([class*='size-'])]:size-4\",\n image: \"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction ListItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof listItemMediaVariants>) {\n return (\n <div\n data-slot=\"list-item-media\"\n data-variant={variant}\n className={cn(listItemMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\n// ── ListItemContent ───────────────────────────────────────────────────────────\n\nfunction ListItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-item-content\"\n className={cn(\n \"flex flex-1 flex-col gap-1 [&+[data-slot=list-item-content]]:flex-none\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemTitle ─────────────────────────────────────────────────────────────\n\nfunction ListItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-item-title\"\n className={cn(\n \"flex w-fit items-center gap-2 [font-size:var(--list-item-md-font-size)] leading-snug font-medium text-list-item-text-prominent\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemDescription ───────────────────────────────────────────────────────\n\nfunction ListItemDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"list-item-description\"\n className={cn(\n \"line-clamp-2 text-sm leading-normal font-normal text-balance text-subtle\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemActions ───────────────────────────────────────────────────────────\n\nfunction ListItemActions({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-item-actions\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\n// ── ListItemHeader ────────────────────────────────────────────────────────────\n\nfunction ListItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-item-header\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ── ListItemFooter ────────────────────────────────────────────────────────────\n\nfunction ListItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"list-item-footer\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ListItem,\n ListItemGroup,\n ListItemSeparator,\n ListItemIcon,\n ListItemFlag,\n ListItemMedia,\n ListItemContent,\n ListItemTitle,\n ListItemDescription,\n ListItemActions,\n ListItemHeader,\n ListItemFooter,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Separator as SeparatorPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n // Only apply h-full as the default for vertical when the consumer hasn't\n // provided an explicit height class. This prevents specificity conflicts\n // where data-[orientation=vertical]:h-full would override a passed h-* class.\n const hasHeightClass = /\\bh-/.test(className ?? \"\")\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border-subtle data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px\",\n orientation === \"vertical\" && !hasHeightClass && \"h-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\nimport { Icon } from \"./icon\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from \"./input-group\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Trigger.Props) {\n return (\n <ComboboxPrimitive.Trigger\n data-slot=\"combobox-trigger\"\n className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n {...props}\n >\n {children}\n <Icon\n name=\"chevron-down\"\n className=\"pointer-events-none size-4 text-subtle\"\n />\n </ComboboxPrimitive.Trigger>\n )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"secondary\" size=\"icon-xs\" />}\n className={cn(className)}\n {...props}\n >\n <Icon name=\"xmark\" className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled = false,\n showTrigger = true,\n showClear = false,\n ...props\n}: ComboboxPrimitive.Input.Props & {\n showTrigger?: boolean\n showClear?: boolean\n}) {\n return (\n <InputGroup className={cn(\"w-auto\", className)}>\n <ComboboxPrimitive.Input\n render={<InputGroupInput disabled={disabled} />}\n {...props}\n />\n <InputGroupAddon align=\"inline-end\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"secondary\"\n asChild\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n >\n <ComboboxTrigger />\n </InputGroupButton>\n )}\n {showClear && <ComboboxClear disabled={disabled} />}\n </InputGroupAddon>\n {children}\n </InputGroup>\n )\n}\n\nfunction ComboboxContent({\n className,\n side = \"bottom\",\n sideOffset = 6,\n align = \"start\",\n alignOffset = 0,\n anchor,\n ...props\n}: ComboboxPrimitive.Popup.Props &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n >) {\n return (\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n className=\"isolate z-[65]\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n data-chips={!!anchor}\n className={cn(\n \"group/combobox-content relative max-h-96 w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-primary-surface text-prominent shadow-md ring-1 ring-default duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n />\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n return (\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className={cn(\n \"max-h-[min(calc(--spacing(96)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxItem({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Item.Props) {\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-highlighted:bg-primary/10 data-highlighted:text-prominent data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ComboboxPrimitive.ItemIndicator\n data-slot=\"combobox-item-indicator\"\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <Icon name=\"check\" className=\"pointer-events-none size-4 pointer-coarse:size-5\" />\n </ComboboxPrimitive.ItemIndicator>\n </ComboboxPrimitive.Item>\n )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n return (\n <ComboboxPrimitive.Group\n data-slot=\"combobox-group\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxLabel({\n className,\n ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-label\"\n className={cn(\n \"px-2 py-1.5 text-xs text-subtle pointer-coarse:px-3 pointer-coarse:py-2 pointer-coarse:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n return (\n <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={cn(\n \"hidden w-full justify-center py-2 text-center text-sm text-subtle group-data-empty/combobox-content:flex\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxSeparator({\n className,\n ...props\n}: ComboboxPrimitive.Separator.Props) {\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxChips({\n className,\n ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n ComboboxPrimitive.Chips.Props) {\n return (\n <ComboboxPrimitive.Chips\n data-slot=\"combobox-chips\"\n className={cn(\n \"flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border border-input bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-[3px] has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxChip({\n className,\n children,\n showRemove = true,\n ...props\n}: ComboboxPrimitive.Chip.Props & {\n showRemove?: boolean\n}) {\n return (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n className={cn(\n \"flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-sm bg-secondary-surface px-1.5 text-xs font-medium whitespace-nowrap text-prominent has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\",\n className\n )}\n {...props}\n >\n {children}\n {showRemove && (\n <ComboboxPrimitive.ChipRemove\n render={<Button variant=\"secondary\" size=\"icon-xs\" />}\n className=\"-ml-1 opacity-50 hover:opacity-100\"\n data-slot=\"combobox-chip-remove\"\n >\n <Icon name=\"xmark\" className=\"pointer-events-none\" />\n </ComboboxPrimitive.ChipRemove>\n )}\n </ComboboxPrimitive.Chip>\n )\n}\n\nfunction ComboboxChipsInput({\n className,\n children: _children,\n ...props\n}: ComboboxPrimitive.Input.Props) {\n return (\n <ComboboxPrimitive.Input\n data-slot=\"combobox-chip-input\"\n className={cn(\"min-w-16 flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nfunction useComboboxAnchor() {\n return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n Combobox,\n ComboboxInput,\n ComboboxContent,\n ComboboxList,\n ComboboxItem,\n ComboboxGroup,\n ComboboxLabel,\n ComboboxCollection,\n ComboboxEmpty,\n ComboboxSeparator,\n ComboboxChips,\n ComboboxChip,\n ComboboxChipsInput,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport { Textarea } from \"./textarea\"\n\nconst inputGroupVariants = cva(\n [\n \"group/input-group relative flex w-full items-center min-w-0 overflow-hidden\",\n \"[border-width:var(--semantic-size-border-1)] border-solid\",\n \"transition-[color,border-color,border-width,background-color,box-shadow] duration-200\",\n \"h-[var(--field-height)] rounded-[var(--field-radius)]\",\n \"focus-within:[border-width:var(--semantic-size-border-1-5)]\",\n // Disabled when the input control itself is disabled (not just a button at min/max boundary)\n \"has-[[data-slot=input-group-control]:disabled]:pointer-events-none has-[[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[[data-slot=input-group-control]:disabled]:opacity-50\",\n // Disabled when the group is explicitly marked disabled via data-disabled (e.g. labelled stepper with no input control)\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50\",\n \"has-[>[data-align=inline-start]]:[&_[data-slot=input-group-control]]:pl-[var(--semantic-size-spacing-8)]\",\n \"has-[>[data-align=inline-end]]:[&_[data-slot=input-group-control]]:pr-[var(--semantic-size-spacing-8)]\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&_[data-slot=input-group-control]]:pb-[var(--semantic-size-spacing-12)]\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&_[data-slot=input-group-control]]:pt-[var(--semantic-size-spacing-12)]\",\n \"has-[>textarea]:h-auto\",\n ].join(\" \"),\n {\n variants: {\n // Size sets the field height and font-size on the wrapper; children inherit font-size.\n // Mirrors the same pattern used in inputWrapperVariants (input.tsx).\n size: {\n md: \"[font-size:var(--field-font-size-md)]\",\n sm: \"h-[var(--field-sm-height)] [font-size:var(--semantic-size-width-height-14)]\",\n },\n variant: {\n outline: [\n \"bg-field-outline-bg-default border-field-outline-border-default\",\n \"hover:border-field-outline-border-focus\",\n \"focus-within:bg-field-outline-bg-focus focus-within:border-field-outline-border-focus\",\n \"has-[:disabled]:bg-field-outline-bg-disabled has-[:disabled]:border-field-outline-border-disabled\",\n ].join(\" \"),\n fill: [\n \"bg-field-fill-bg-default border-transparent\",\n \"hover:bg-field-fill-bg-hover\",\n \"focus-within:bg-field-fill-bg-focus focus-within:border-field-fill-border-focus\",\n \"has-[:disabled]:bg-field-fill-bg-disabled\",\n ].join(\" \"),\n },\n status: {\n default: \"\",\n success: \"border-field-outline-border-success\",\n error: \"border-field-outline-border-error\",\n },\n },\n compoundVariants: [\n {\n variant: \"outline\",\n status: \"success\",\n className: \"hover:border-field-outline-border-success focus-within:border-field-outline-border-success\",\n },\n {\n variant: \"outline\",\n status: \"error\",\n className: \"hover:border-field-outline-border-error focus-within:border-field-outline-border-error\",\n },\n {\n variant: \"fill\",\n status: \"success\",\n className: [\n \"bg-field-fill-bg-success-default hover:bg-field-fill-bg-success-hover\",\n \"focus-within:bg-field-fill-bg-success-focus focus-within:border-field-fill-border-success\",\n \"border-transparent\",\n ].join(\" \"),\n },\n {\n variant: \"fill\",\n status: \"error\",\n className: [\n \"bg-field-fill-bg-error-default hover:bg-field-fill-bg-error-hover\",\n \"focus-within:bg-field-fill-bg-error-focus focus-within:border-field-fill-border-error\",\n \"border-transparent\",\n ].join(\" \"),\n },\n ],\n defaultVariants: {\n size: \"md\",\n variant: \"outline\",\n status: \"default\",\n },\n }\n)\n\nfunction InputGroup({\n className,\n size,\n variant,\n status,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupVariants>) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(inputGroupVariants({ size, variant, status }), className)}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n [\n \"flex h-full cursor-text items-center justify-center select-none\",\n \"gap-[var(--semantic-size-spacing-8)]\",\n \"text-field-text-subtle\",\n \"[&>svg:not([class*='size-'])]:size-4\",\n ].join(\" \"),\n {\n variants: {\n align: {\n \"inline-start\": \"order-first px-[var(--semantic-size-spacing-12)]\",\n \"inline-end\": [\n \"order-last px-[var(--semantic-size-spacing-12)]\",\n \"has-[>button]:pl-0 has-[>button]:pr-[var(--semantic-size-spacing-8)]\",\n ].join(\" \"),\n \"block-start\": \"order-first w-full justify-start px-[var(--semantic-size-spacing-16)] pt-[var(--semantic-size-spacing-8)]\",\n \"block-end\": \"order-last w-full justify-start px-[var(--semantic-size-spacing-16)] pb-[var(--semantic-size-spacing-8)]\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5\",\n \"icon-xs\":\n \"size-6 min-w-0 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 min-w-0 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"secondary\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"flex items-center gap-[var(--semantic-size-spacing-8)] text-field-text-subtle [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 h-full min-w-0 rounded-none border-0 bg-transparent outline-none shadow-none\",\n \"px-[var(--semantic-size-spacing-16)]\",\n \"[font-weight:var(--field-font-weight)]\",\n \"text-field-text-prominent placeholder:text-field-text-subtle\",\n \"disabled:text-field-text-disabled disabled:pointer-events-none disabled:cursor-not-allowed\",\n \"file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"focus-visible:ring-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n inputGroupVariants,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Wrapper: flex row, items-start so icons align to top of the field.\n// Border grows 1px → 1.5px on focus, matching input.tsx behaviour.\nconst textareaWrapperVariants = cva(\n [\n \"flex items-start w-full min-w-0 cursor-text\",\n \"gap-[var(--semantic-size-spacing-8)]\",\n \"[border-width:var(--semantic-size-border-1)] border-solid\",\n \"transition-[color,border-color,border-width,background-color,box-shadow] duration-200\",\n \"rounded-[var(--field-radius)]\",\n \"focus-within:[border-width:var(--semantic-size-border-1-5)]\",\n \"group has-[:disabled]:pointer-events-none has-[:disabled]:cursor-not-allowed\",\n \"pb-px\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n outline: [\n \"bg-field-outline-bg-default border-field-outline-border-default\",\n \"hover:border-field-outline-border-focus\",\n \"focus-within:bg-field-outline-bg-focus focus-within:border-field-outline-border-focus\",\n \"has-[:disabled]:bg-field-outline-bg-disabled has-[:disabled]:border-field-outline-border-disabled\",\n ].join(\" \"),\n fill: [\n \"bg-field-fill-bg-default border-transparent\",\n \"hover:bg-field-fill-bg-hover\",\n \"focus-within:bg-field-fill-bg-focus focus-within:border-field-fill-border-focus\",\n \"has-[:disabled]:bg-field-fill-bg-disabled\",\n ].join(\" \"),\n },\n status: {\n default: \"\",\n success: \"border-field-outline-border-success\",\n error: \"border-field-outline-border-error\",\n },\n },\n compoundVariants: [\n {\n variant: \"outline\",\n status: \"success\",\n className: \"hover:border-field-outline-border-success focus-within:border-field-outline-border-success\",\n },\n {\n variant: \"outline\",\n status: \"error\",\n className: \"hover:border-field-outline-border-error focus-within:border-field-outline-border-error\",\n },\n {\n variant: \"fill\",\n status: \"success\",\n className: [\n \"bg-field-fill-bg-success-default hover:bg-field-fill-bg-success-hover\",\n \"focus-within:bg-field-fill-bg-success-focus focus-within:border-field-fill-border-success\",\n \"border-transparent\",\n ].join(\" \"),\n },\n {\n variant: \"fill\",\n status: \"error\",\n className: [\n \"bg-field-fill-bg-error-default hover:bg-field-fill-bg-error-hover\",\n \"focus-within:bg-field-fill-bg-error-focus focus-within:border-field-fill-border-error\",\n \"border-transparent\",\n ].join(\" \"),\n },\n ],\n defaultVariants: {\n variant: \"outline\",\n status: \"default\",\n },\n }\n)\n\ninterface TextareaProps\n extends Omit<React.ComponentProps<\"textarea\">, \"size\">\n , VariantProps<typeof textareaWrapperVariants> {\n label?: string\n helperText?: string\n iconLeft?: React.ReactNode\n iconRight?: React.ReactNode\n /**\n * When `true` (default), renders a floating label above the text area.\n * When `false`, renders the labelless variant where the label acts as a\n * placeholder that cross-fades with the typed text.\n */\n labeled?: boolean\n /**\n * Controls the minimum height for the **labelless** variant only.\n * - `\"md\"` (default) → 128 px\n * - `\"sm\"` → 104 px\n *\n * Ignored when `labeled={true}`, which always uses the 128 px height.\n */\n size?: \"sm\" | \"md\"\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea({\n className,\n variant,\n size = \"md\",\n status,\n label,\n helperText,\n iconLeft,\n iconRight,\n labeled = true,\n required,\n maxLength,\n value,\n defaultValue,\n disabled,\n readOnly,\n placeholder,\n id: idProp,\n autoFocus,\n onChange,\n onFocus,\n onBlur,\n ...props\n}, ref) {\n const generatedId = React.useId()\n const id = idProp ?? generatedId\n const descriptionId = `${id}-description`\n\n const internalRef = React.useRef<HTMLTextAreaElement>(null)\n React.useImperativeHandle(ref, () => internalRef.current!)\n\n const [charCount, setCharCount] = React.useState<number>(() => {\n if (typeof defaultValue === \"string\") return defaultValue.length\n return 0\n })\n const [isFocused, setIsFocused] = React.useState(false)\n\n React.useEffect(() => {\n if (autoFocus && internalRef.current === document.activeElement) {\n setIsFocused(true)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const controlledLength = value !== undefined ? String(value).length : null\n const currentLength = controlledLength ?? charCount\n\n const isFloating = isFocused || currentLength > 0\n const hasDescription = helperText !== undefined || maxLength !== undefined\n\n // Accept `placeholder` as a label fallback for back-compat; the label is\n // the visual placeholder in both the labelled and labelless variants.\n const effectiveLabel = label ?? placeholder ?? \"Label\"\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (value === undefined) setCharCount(e.target.value.length)\n onChange?.(e)\n }\n\n const handleFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setIsFocused(true)\n onFocus?.(e)\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setIsFocused(false)\n onBlur?.(e)\n }\n\n const labelColorClass = disabled\n ? \"text-field-text-disabled\"\n : status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\"\n\n const isSmLabelless = !labeled && size === \"sm\"\n\n // Sizing: labelled always uses the same padding/height as \"md\".\n // min-h values (128 px / 104 px) are component-specific layout constraints\n // — no token exists for textarea heights.\n const wrapperSizeClasses = isSmLabelless\n ? \"min-h-[104px] pt-[var(--semantic-size-spacing-4)] px-[var(--semantic-size-spacing-8)] text-sm\"\n : \"min-h-[128px] pt-[var(--semantic-size-spacing-6)] px-[var(--semantic-size-spacing-16)] text-base\"\n\n // Icon spans: no extra vertical offset — items-start on the wrapper already\n // aligns them to the top of the content area alongside the label/text.\n const iconSpanClass =\n \"shrink-0 flex items-start justify-center text-field-text-subtle group-has-[:disabled]:text-field-icon-disabled [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6\"\n\n // Base classes shared by every <textarea> element in both variants.\n // field-sizing-content lets the element auto-grow with typed content,\n // consistent with the old Textarea implementation and input.tsx behaviour.\n const textareaBaseClass = cn(\n \"w-full resize-none field-sizing-content bg-transparent border-0 outline-none ring-0\",\n \"leading-[1.5] [font-weight:var(--field-font-weight)]\",\n \"text-field-text-prominent\",\n \"disabled:text-field-text-disabled\",\n \"placeholder:text-field-text-subtle\",\n )\n\n // Description row px mirrors the wrapper's horizontal padding per size.\n const descriptionPaddingClass = isSmLabelless\n ? \"px-[var(--semantic-size-spacing-8)]\"\n : \"px-[var(--semantic-size-spacing-16)]\"\n\n return (\n <div className={cn(\"w-full\", className)}>\n <div\n data-slot=\"textarea\"\n data-variant={variant ?? \"outline\"}\n data-status={status ?? \"default\"}\n className={cn(\n textareaWrapperVariants({ variant, status }),\n wrapperSizeClasses,\n readOnly && \"cursor-default\",\n )}\n onClick={(e) => {\n if (e.target !== internalRef.current) internalRef.current?.focus()\n }}\n >\n {iconLeft && (\n <span className={iconSpanClass}>\n {iconLeft}\n </span>\n )}\n\n {labeled ? (\n /* ── Labelled layout ─────────────────────────────────────────────\n Label is always rendered at the top of the column. Its font-size\n transitions from 16 px (body) when empty/unfocused → 12 px\n (caption) when floating. The textarea uses field-sizing-content\n so it auto-grows, and the wrapper's min-h ensures a visual floor. */\n <div className=\"flex-1 flex flex-col min-w-0\">\n <div className=\"flex items-start gap-[var(--semantic-size-spacing-4)] shrink-0\">\n <label\n htmlFor={id}\n className={cn(\n \"pointer-events-none select-none leading-[1.5]\",\n \"transition-all duration-200 ease-out\",\n labelColorClass,\n isFloating\n ? \"[font-size:var(--field-font-size-sm)]\"\n : \"text-base\",\n )}\n >\n {effectiveLabel}\n </label>\n {required && (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"text-field-text-error leading-[1.5] transition-all duration-200\",\n isFloating ? \"[font-size:var(--field-font-size-sm)]\" : \"text-base\",\n )}\n >\n *\n </span>\n )}\n </div>\n\n <div\n className={cn(\n \"transition-opacity duration-200\",\n isFloating ? \"opacity-100\" : \"opacity-0 pointer-events-none\",\n )}\n >\n <textarea\n ref={internalRef}\n id={id}\n required={required}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n textareaBaseClass,\n \"pb-[var(--semantic-size-spacing-16)]\",\n )}\n {...props}\n />\n </div>\n </div>\n ) : (\n /* ── Labelless layout ───────────────────────────────────────────\n Label and textarea share the same grid cell via [grid-area:1/1].\n They cross-fade on focus / value change, matching the labelless\n behaviour in input.tsx. field-sizing-content auto-grows the\n textarea; the wrapper's min-h sets the visual floor. */\n <div className=\"flex-1 min-w-0 grid items-start\">\n <label\n htmlFor={id}\n className={cn(\n \"[grid-area:1/1] flex items-start gap-[var(--semantic-size-spacing-4)]\",\n \"pointer-events-none select-none leading-[1.5]\",\n \"transition-opacity duration-200 ease-out\",\n labelColorClass,\n isFloating ? \"opacity-0\" : \"opacity-100\",\n )}\n >\n <span>{effectiveLabel}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </label>\n\n <textarea\n ref={internalRef}\n id={id}\n required={required}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n textareaBaseClass,\n \"[grid-area:1/1] pb-[var(--semantic-size-spacing-16)]\",\n \"transition-opacity duration-200 ease-out\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n {...props}\n />\n </div>\n )}\n\n {iconRight && (\n <span className={iconSpanClass}>\n {iconRight}\n </span>\n )}\n </div>\n\n {hasDescription && (\n <div\n id={descriptionId}\n className={cn(\n \"flex w-full items-center justify-between\",\n \"mt-[var(--semantic-size-spacing-4)]\",\n descriptionPaddingClass,\n \"[font-size:var(--field-font-size-sm)]\",\n status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\",\n )}\n >\n <span>{helperText ?? \"\"}</span>\n {maxLength !== undefined && (\n <span>{currentLength}/{maxLength}</span>\n )}\n </div>\n )}\n </div>\n )\n})\n\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea, textareaWrapperVariants as textareaVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { Icon } from \"./icon\"\n\nimport { cn } from \"../../lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"./dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-sm bg-primary-surface text-prominent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"**:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-subtle [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <Icon name=\"magnifying-glass\" className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-subtle disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"overflow-hidden p-1 text-prominent [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-primary/10 data-[selected=true]:text-prominent [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"ml-auto text-xs tracking-widest text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Icon } from \"./icon\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport { Card } from \"./card\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-[70] bg-overlay data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n type = \"text\",\n icon,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n type?: \"text\" | \"icon-and-text\"\n icon?: React.ReactNode\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-[50%] left-[50%] z-[70] w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] duration-base outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-[512px]\",\n className\n )}\n {...props}\n >\n <Card className=\"relative gap-0 rounded-4xl border-0 p-0 shadow-lg overflow-hidden\">\n {type === \"icon-and-text\" && (\n <div\n data-slot=\"dialog-icon-zone\"\n className=\"flex w-full shrink-0 items-center justify-center bg-primary-surface py-6\"\n >\n {icon}\n </div>\n )}\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n data-slot=\"dialog-close\"\n className=\"absolute top-4 right-4\"\n aria-label=\"Close\"\n >\n <Icon name=\"xmark\" />\n </Button>\n </DialogPrimitive.Close>\n )}\n </Card>\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-8 px-8 pt-8 pb-6\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col gap-2 px-8 pt-6 pb-8 [&_[data-slot=button]]:!w-full [&_[data-slot=dialog-close]]:!w-full\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"secondary\" size=\"lg\">Close</Button>\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-2xl font-extrabold leading-8 font-display text-prominent\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-base leading-6 text-dialog-description\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Icon } from \"./icon\"\nimport { ContextMenu as ContextMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n )\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n )\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n )\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-secondary-hover data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-subtle\",\n className\n )}\n {...props}\n >\n {children}\n <Icon name=\"chevron-right\" className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n )\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"z-[65] min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border border-default bg-primary-surface p-1 text-prominent shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"z-[65] max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-default bg-primary-surface p-1 text-prominent shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n )\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-subtle data-[variant=destructive]:*:[svg]:text-destructive!\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Icon name=\"check\" className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Icon name=\"circle\" className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n )\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium text-prominent data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"ml-auto text-xs tracking-widest text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Direction } from \"radix-ui\"\n\nfunction DirectionProvider({\n dir,\n direction,\n children,\n}: React.ComponentProps<typeof Direction.DirectionProvider> & {\n direction?: React.ComponentProps<typeof Direction.DirectionProvider>[\"dir\"]\n}) {\n return (\n <Direction.DirectionProvider dir={direction ?? dir}>\n {children}\n </Direction.DirectionProvider>\n )\n}\n\nconst useDirection = Direction.useDirection\n\nexport { DirectionProvider, useDirection }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\nfunction DrawerTrigger({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n \"fixed inset-0 z-[70] bg-overlay data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n \"group/drawer-content fixed z-[70] flex h-auto flex-col bg-primary-surface\",\n \"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=top]:border-default\",\n \"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-[24px] data-[vaul-drawer-direction=bottom]:pb-6\",\n \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:border-default data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:border-default data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n className\n )}\n {...props}\n >\n <div\n className=\"hidden w-full items-center justify-center group-data-[vaul-drawer-direction=bottom]/drawer-content:flex h-8 shrink-0\"\n >\n <div\n className=\"h-[4px] w-[40px] rounded-full\"\n style={{ backgroundColor: \"var(--bottom-sheet-bg-handle-bar)\" }}\n />\n </div>\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n \"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4 [&>*]:w-full\", className)}\n {...props}\n />\n )\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn(\n \"font-semibold font-display text-prominent\",\n \"group-data-[vaul-drawer-direction=bottom]/drawer-content:text-xl group-data-[vaul-drawer-direction=bottom]/drawer-content:leading-[1.4] group-data-[vaul-drawer-direction=bottom]/drawer-content:font-extrabold\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn(\"text-sm text-subtle\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Icon } from \"./icon\"\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"z-[65] max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--field-radius)] border border-dropdown-field-outline-border-default bg-dropdown-field-outline-bg-default p-1 text-dropdown-field-text-prominent shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-[var(--field-radius)] px-[var(--semantic-size-spacing-8)] py-1.5 [font-size:var(--field-font-size-md)] text-dropdown-field-text-prominent outline-hidden select-none hover:bg-dropdown-field-fill-bg-neutral-hover focus:bg-dropdown-field-fill-bg-neutral-hover data-[disabled]:pointer-events-none data-[disabled]:text-dropdown-field-text-disabled data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-dropdown-field-text-error data-[variant=destructive]:focus:bg-dropdown-field-fill-bg-error-hover [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-dropdown-field-text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-[var(--field-radius)] py-1.5 pr-2 pl-8 [font-size:var(--field-font-size-md)] text-dropdown-field-text-prominent outline-hidden select-none hover:bg-dropdown-field-fill-bg-neutral-hover focus:bg-dropdown-field-fill-bg-neutral-hover data-[disabled]:pointer-events-none data-[disabled]:text-dropdown-field-text-disabled data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Icon name=\"check\" className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-[var(--field-radius)] py-1.5 pr-2 pl-8 [font-size:var(--field-font-size-md)] text-dropdown-field-text-prominent outline-hidden select-none hover:bg-dropdown-field-fill-bg-neutral-hover focus:bg-dropdown-field-fill-bg-neutral-hover data-[disabled]:pointer-events-none data-[disabled]:text-dropdown-field-text-disabled data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Icon name=\"circle\" className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"ml-auto text-xs tracking-widest text-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center gap-2 rounded-[var(--field-radius)] px-[var(--semantic-size-spacing-8)] py-1.5 [font-size:var(--field-font-size-md)] text-dropdown-field-text-prominent outline-hidden select-none focus:bg-dropdown-field-fill-bg-neutral-hover data-[inset]:pl-8 data-[state=open]:bg-dropdown-field-fill-bg-neutral-hover [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-dropdown-field-text-subtle\",\n className\n )}\n {...props}\n >\n {children}\n <Icon name=\"chevron-right\" className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"z-[65] min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-[var(--field-radius)] border border-dropdown-field-outline-border-default bg-dropdown-field-outline-bg-default p-1 text-dropdown-field-text-prominent shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty\"\n className={cn(\n \"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-sm border-dashed p-6 text-center text-balance md:p-12\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(\n \"flex max-w-sm flex-col items-center gap-1 text-center\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"flex size-10 shrink-0 items-center justify-center rounded-lg bg-secondary-surface text-prominent [&_svg:not([class*='size-'])]:size-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(\"text-base leading-6 font-bold text-prominent\", className)}\n {...props}\n />\n )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(\n \"text-sm leading-5 text-section-message-description [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(\n \"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n}\n","\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Label } from \"./label\"\nimport { Separator } from \"./separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-6\",\n \"has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium\",\n \"data-[variant=legend]:text-base\",\n \"data-[variant=label]:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\",\n {\n variants: {\n orientation: {\n vertical: [\"flex-col [&>*]:w-full [&>.sr-only]:w-auto\"],\n horizontal: [\n \"flex-row items-center\",\n \"[&>[data-slot=field-label]]:flex-auto\",\n \"has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n responsive: [\n \"flex-col @md/field-group:flex-row @md/field-group:items-center [&>*]:w-full @md/field-group:[&>*]:w-auto [&>.sr-only]:w-auto\",\n \"@md/field-group:[&>[data-slot=field-label]]:flex-auto\",\n \"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4\",\n \"has-data-[state=checked]:border-primary has-data-[state=checked]:bg-primary/5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-sm leading-normal font-normal text-subtle group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"relative mx-auto block w-fit bg-primary-surface px-2 text-subtle\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-sm font-normal text-destructive\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Label as LabelPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","\"use client\"\n\nimport * as React from \"react\"\nimport type { Label as LabelPrimitive } from \"radix-ui\"\nimport { Slot } from \"radix-ui\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Label } from \"./label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState } = useFormContext()\n const formState = useFormState({ name: fieldContext.name })\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n )\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot.Root>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot.Root\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-sm text-subtle\", className)}\n {...props}\n />\n )\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? \"\") : props.children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-sm text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n )\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { HoverCard as HoverCardPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-[65] w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border border-default bg-primary-surface p-4 text-prominent shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Wrapper: flex row with icons + content. Border grows 1px → 1.5px on focus.\nconst inputWrapperVariants = cva(\n [\n \"flex items-center w-full min-w-0 cursor-text\",\n \"gap-[var(--semantic-size-spacing-8)] px-[var(--semantic-size-spacing-16)]\",\n \"[border-width:var(--semantic-size-border-1)] border-solid\",\n \"transition-[color,border-color,border-width,background-color,box-shadow] duration-200\",\n \"rounded-[var(--field-radius)]\",\n \"focus-within:[border-width:var(--semantic-size-border-1-5)]\",\n \"group has-[:disabled]:pointer-events-none has-[:disabled]:cursor-not-allowed\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n outline: [\n \"bg-field-outline-bg-default border-field-outline-border-default\",\n \"hover:border-field-outline-border-focus\",\n \"focus-within:bg-field-outline-bg-focus focus-within:border-field-outline-border-focus\",\n \"has-[:disabled]:bg-field-outline-bg-disabled has-[:disabled]:border-field-outline-border-disabled\",\n ].join(\" \"),\n fill: [\n \"bg-field-fill-bg-default border-transparent\",\n \"hover:bg-field-fill-bg-hover\",\n \"focus-within:bg-field-fill-bg-focus focus-within:border-field-fill-border-focus\",\n \"has-[:disabled]:bg-field-fill-bg-disabled\",\n ].join(\" \"),\n },\n size: {\n sm: \"h-[var(--field-sm-height)] text-sm\",\n md: \"h-[var(--field-md-height)] text-base\",\n lg: \"h-[var(--field-lg-height)] text-base\",\n },\n status: {\n default: \"\",\n success: \"border-field-outline-border-success\",\n error: \"border-field-outline-border-error\",\n },\n },\n compoundVariants: [\n {\n variant: \"outline\",\n status: \"success\",\n className: \"hover:border-field-outline-border-success focus-within:border-field-outline-border-success\",\n },\n {\n variant: \"outline\",\n status: \"error\",\n className: \"hover:border-field-outline-border-error focus-within:border-field-outline-border-error\",\n },\n {\n variant: \"fill\",\n status: \"success\",\n className: [\n \"bg-field-fill-bg-success-default hover:bg-field-fill-bg-success-hover\",\n \"focus-within:bg-field-fill-bg-success-focus focus-within:border-field-fill-border-success\",\n \"border-transparent\",\n ].join(\" \"),\n },\n {\n variant: \"fill\",\n status: \"error\",\n className: [\n \"bg-field-fill-bg-error-default hover:bg-field-fill-bg-error-hover\",\n \"focus-within:bg-field-fill-bg-error-focus focus-within:border-field-fill-border-error\",\n \"border-transparent\",\n ].join(\" \"),\n },\n ],\n defaultVariants: {\n variant: \"outline\",\n size: \"lg\",\n status: \"default\",\n },\n }\n)\n\ninterface InputProps\n extends Omit<React.ComponentProps<\"input\">, \"size\">\n , VariantProps<typeof inputWrapperVariants> {\n label?: string\n helperText?: string\n iconLeft?: React.ReactNode\n iconRight?: React.ReactNode\n /** When false, renders the labelless variant: label and input cross-fade at the same size. */\n labeled?: boolean\n /** Horizontal text alignment for both label and input. Default is \"left\". */\n align?: \"left\" | \"center\"\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(function Input({\n className,\n type,\n variant,\n size,\n status,\n label = \"Label\",\n helperText,\n iconLeft,\n iconRight,\n labeled = true,\n align = \"left\",\n required,\n maxLength,\n value,\n defaultValue,\n disabled,\n readOnly,\n id: idProp,\n autoFocus,\n onChange,\n onFocus,\n onBlur,\n ...props\n}, ref) {\n const generatedId = React.useId()\n const id = idProp ?? generatedId\n const descriptionId = `${id}-description`\n\n const internalRef = React.useRef<HTMLInputElement>(null)\n React.useImperativeHandle(ref, () => internalRef.current!)\n\n const [charCount, setCharCount] = React.useState<number>(() => {\n if (typeof defaultValue === \"string\") return defaultValue.length\n if (typeof defaultValue === \"number\") return String(defaultValue).length\n return 0\n })\n const [isFocused, setIsFocused] = React.useState(false)\n\n React.useEffect(() => {\n if (autoFocus && internalRef.current === document.activeElement) {\n setIsFocused(true)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const controlledLength = value !== undefined ? String(value).length : null\n const currentLength = controlledLength ?? charCount\n\n const isFloating = isFocused || currentLength > 0\n const hasDescription = helperText !== undefined || maxLength !== undefined\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (value === undefined) setCharCount(e.target.value.length)\n onChange?.(e)\n }\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true)\n onFocus?.(e)\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false)\n onBlur?.(e)\n }\n\n const labelColorClass = disabled\n ? \"text-field-text-disabled\"\n : status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\"\n\n return (\n <div className={cn(\"w-full\", className)}>\n <div\n data-slot=\"input\"\n data-variant={variant ?? \"outline\"}\n data-status={status ?? \"default\"}\n className={cn(\n inputWrapperVariants({ variant, size, status }),\n readOnly && \"cursor-default\",\n )}\n onClick={(e) => {\n if (e.target !== internalRef.current) internalRef.current?.focus()\n }}\n >\n {iconLeft && (\n <span className=\"shrink-0 flex items-center justify-center text-field-text-subtle group-has-[:disabled]:text-field-icon-disabled [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6\">\n {iconLeft}\n </span>\n )}\n\n {labeled ? (\n /* ── Labelled layout: label floats to top, input fades in below ── */\n <div className=\"relative flex-1 min-w-0 h-full\">\n <label\n htmlFor={id}\n className={cn(\n \"absolute pointer-events-none select-none leading-[1.5]\",\n \"left-0 flex items-center gap-[var(--semantic-size-spacing-4)]\",\n \"transition-all duration-200 ease-out\",\n labelColorClass,\n isFloating\n ? \"top-[var(--semantic-size-spacing-8)] [font-size:var(--field-font-size-sm)]\"\n : \"top-1/2 -translate-y-1/2\",\n )}\n >\n <span>{label}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </label>\n\n <input\n ref={internalRef}\n id={id}\n type={type}\n required={required}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n \"absolute left-0 right-0 bottom-[var(--semantic-size-spacing-6)] p-0\",\n \"[padding:0_var(--semantic-size-spacing-16)]\",\n \"bg-transparent border-0 outline-none ring-0 leading-[1.5]\",\n \"[font-weight:var(--field-font-weight)]\",\n \"transition-opacity duration-200 ease-out\",\n \"placeholder:text-field-text-subtle\",\n \"file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"text-field-text-prominent\",\n \"disabled:text-field-text-disabled\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n {...props}\n />\n </div>\n ) : (\n /* ── Labelless layout: label and input cross-fade at the same size/position ── */\n <div className=\"relative flex-1 min-w-0 h-full\">\n {/* Label — shown when field is empty and unfocused */}\n <label\n htmlFor={id}\n className={cn(\n \"absolute inset-0 pointer-events-none select-none leading-[1.5]\",\n \"flex items-center gap-[var(--semantic-size-spacing-4)]\",\n \"transition-opacity duration-200 ease-out\",\n labelColorClass,\n align === \"center\" ? \"justify-center\" : \"justify-start\",\n isFloating ? \"opacity-0\" : \"opacity-100\",\n )}\n >\n <span>{label}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </label>\n\n {/* Input — shown when focused or has a value */}\n <input\n ref={internalRef}\n id={id}\n type={type}\n required={required}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n \"absolute inset-0 p-0 w-full\",\n \"bg-transparent border-0 outline-none ring-0 leading-[1.5]\",\n \"[font-weight:var(--field-font-weight)]\",\n \"transition-opacity duration-200 ease-out\",\n \"placeholder:text-field-text-subtle\",\n \"file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"text-field-text-prominent\",\n \"disabled:text-field-text-disabled\",\n align === \"center\" ? \"text-center\" : \"text-left\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n {...props}\n />\n </div>\n )}\n\n {iconRight && (\n <span className=\"shrink-0 flex items-center justify-center text-field-text-subtle group-has-[:disabled]:text-field-icon-disabled [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6\">\n {iconRight}\n </span>\n )}\n </div>\n\n {hasDescription && (\n <div\n id={descriptionId}\n className={cn(\n \"flex w-full items-center justify-between\",\n \"mt-[var(--semantic-size-spacing-4)] px-[var(--semantic-size-spacing-4)]\",\n \"[font-size:var(--field-font-size-sm)]\",\n status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\",\n )}\n >\n <span>{helperText ?? \"\"}</span>\n {maxLength !== undefined && (\n <span>{currentLength}/{maxLength}</span>\n )}\n </div>\n )}\n </div>\n )\n})\n\nInput.displayName = \"Input\"\n\nexport { Input, inputWrapperVariants as inputVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Icon } from \"./icon\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst searchFieldVariants = cva(\n [\n \"flex items-center\",\n \"rounded-[var(--search-field-radius)]\",\n \"[font-weight:var(--search-field-font-weight)]\",\n \"border\",\n \"transition-colors\",\n ],\n {\n variants: {\n variant: {\n outline: [\n \"bg-search-field-outline-bg-default\",\n \"border-search-field-outline-border-default\",\n \"hover:border-search-field-outline-border-focus\",\n \"focus-within:bg-search-field-outline-bg-focus\",\n \"focus-within:[border-width:1.5px]\",\n \"focus-within:border-search-field-outline-border-focus\",\n \"has-[:disabled]:pointer-events-none\",\n \"has-[:disabled]:bg-search-field-outline-bg-disabled\",\n \"has-[:disabled]:border-search-field-outline-border-disabled\",\n ],\n fill: [\n \"bg-search-field-fill-bg-default\",\n \"border-transparent\",\n \"hover:bg-search-field-fill-bg-hover\",\n \"focus-within:bg-search-field-fill-bg-focus\",\n \"focus-within:[border-width:1.5px]\",\n \"focus-within:border-search-field-fill-border-focus\",\n \"has-[:disabled]:pointer-events-none\",\n \"has-[:disabled]:bg-search-field-fill-bg-disabled\",\n ],\n },\n size: {\n sm: [\n \"h-[var(--search-field-sm-height)]\",\n \"px-[var(--search-field-sm-padding-horizontal)]\",\n \"gap-[var(--search-field-sm-gap)]\",\n \"[font-size:var(--search-field-sm-font-size)]\",\n \"[--sf-icon:var(--search-field-sm-icon-size)]\",\n ],\n md: [\n \"h-[var(--search-field-md-height)]\",\n \"px-[var(--search-field-md-padding-horizontal)]\",\n \"gap-[var(--search-field-md-gap)]\",\n \"[font-size:var(--search-field-md-font-size)]\",\n \"[--sf-icon:var(--search-field-md-icon-size)]\",\n ],\n },\n },\n defaultVariants: {\n variant: \"outline\",\n size: \"md\",\n },\n }\n)\n\ntype SearchFieldProps = Omit<React.ComponentProps<\"div\">, \"children\"> &\n VariantProps<typeof searchFieldVariants> & {\n placeholder?: string\n disabled?: boolean\n value?: string\n defaultValue?: string\n onChange?: React.ChangeEventHandler<HTMLInputElement>\n }\n\nfunction SearchField({\n variant,\n size,\n className,\n placeholder = \"Search\",\n disabled,\n value,\n defaultValue,\n onChange,\n ...props\n}: SearchFieldProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? \"\")\n const isControlled = value !== undefined\n const currentValue = isControlled ? value : internalValue\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n if (!isControlled) setInternalValue(e.target.value)\n onChange?.(e)\n }\n\n function handleClear() {\n if (!isControlled) setInternalValue(\"\")\n onChange?.({ target: { value: \"\" } } as React.ChangeEvent<HTMLInputElement>)\n }\n\n return (\n <div\n data-slot=\"search-field\"\n className={cn(searchFieldVariants({ variant, size }), className)}\n {...props}\n >\n <Icon\n name=\"magnifying-glass\"\n aria-hidden=\"true\"\n className=\"shrink-0 w-[var(--sf-icon)] h-[var(--sf-icon)] text-search-field-icon-subtle\"\n />\n <input\n type=\"text\"\n data-slot=\"search-field-input\"\n disabled={disabled}\n placeholder={placeholder}\n value={currentValue}\n onChange={handleChange}\n onKeyDown={(e) => {\n if (e.ctrlKey && e.key === \"a\") {\n e.preventDefault()\n e.currentTarget.select()\n }\n }}\n className=\"flex-1 min-w-0 bg-transparent outline-none text-search-field-text-prominent placeholder:text-search-field-text-subtle disabled:text-search-field-text-disabled\"\n />\n {currentValue && !disabled && (\n <button\n type=\"button\"\n aria-label=\"Clear search\"\n onClick={handleClear}\n className=\"shrink-0 text-search-field-icon-subtle hover:text-search-field-text-prominent transition-colors\"\n >\n <Icon name=\"xmark\" className=\"w-[var(--sf-icon)] h-[var(--sf-icon)]\" />\n </button>\n )}\n </div>\n )\n}\n\nexport { SearchField, searchFieldVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { Icon } from \"./icon\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\nconst inputOTPSlotVariants = cva(\n \"relative flex items-center justify-center border bg-code-input-fill-bg-default text-code-input-text-prominent [font-size:var(--code-input-font-size)] [font-weight:var(--code-input-font-weight)] font-body rounded-[var(--code-input-radius)] transition-[color,box-shadow] outline-none first:rounded-l-[var(--code-input-radius)] last:rounded-r-[var(--code-input-radius)] border-transparent hover:bg-code-input-fill-bg-hover data-[active=true]:bg-code-input-fill-bg-focus data-[active=true]:border-code-input-fill-border-focus data-[active=true]:z-10 disabled:bg-code-input-fill-bg-disabled disabled:text-code-input-text-disabled\",\n {\n variants: {\n size: {\n sm: \"h-[var(--code-input-sm-height)] w-[var(--code-input-sm-width)]\",\n md: \"h-[var(--code-input-md-height)] w-[var(--code-input-md-width)]\",\n },\n status: {\n default: \"\",\n success:\n \"bg-code-input-fill-bg-success border-code-input-fill-border-success text-code-input-text-success data-[active=true]:bg-code-input-fill-bg-success data-[active=true]:border-code-input-fill-border-success\",\n error:\n \"bg-code-input-fill-bg-error border-code-input-fill-border-error text-code-input-text-error data-[active=true]:bg-code-input-fill-bg-error data-[active=true]:border-code-input-fill-border-error\",\n },\n },\n defaultVariants: {\n size: \"md\",\n status: \"default\",\n },\n }\n)\n\nfunction InputOTPSlot({\n index,\n className,\n size,\n status,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n} & VariantProps<typeof inputOTPSlotVariants>) {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(inputOTPSlotVariants({ size, status }), className)}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-code-input-text-prominent duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <Icon name=\"minus\" />\n </div>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator, inputOTPSlotVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { Icon } from \"./icon\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction CodeInput({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"code-input\"\n containerClassName={cn(\n // has-disabled:opacity-50 — invented: no container opacity token in component-code-input\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction CodeInputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"code-input-group\"\n className={cn(\"flex items-center gap-[var(--code-input-gap)]\", className)}\n {...props}\n />\n )\n}\n\nconst codeInputSlotVariants = cva(\n // first/last rounded corners — invented: shadcn group-rounding pattern, no grouped-cell token\n // ring-primary/[0.08] — invented: pending standardisation per design-tokens.mdc\n // animate-caret-blink — invented: no animation token in component-code-input\n \"relative flex items-center justify-center border bg-code-input-fill-bg-default text-code-input-text-prominent [font-size:var(--code-input-font-size)] [font-weight:var(--code-input-font-weight)] font-body rounded-[var(--code-input-radius)] transition-[color,box-shadow] outline-none first:rounded-l-[var(--code-input-radius)] last:rounded-r-[var(--code-input-radius)] border-transparent hover:bg-code-input-fill-bg-hover data-[active=true]:bg-code-input-fill-bg-focus data-[active=true]:border-code-input-fill-border-focus data-[active=true]:[border-width:var(--code-input-border-width-focus)] data-[active=true]:ring-[3px] data-[active=true]:ring-primary/[0.08] data-[active=true]:z-10 disabled:bg-code-input-fill-bg-disabled disabled:text-code-input-text-disabled\",\n {\n variants: {\n size: {\n sm: \"h-[var(--code-input-sm-height)] w-[var(--code-input-sm-width)]\",\n md: \"h-[var(--code-input-md-height)] w-[var(--code-input-md-width)]\",\n },\n status: {\n default: \"\",\n success:\n \"bg-code-input-fill-bg-success border-code-input-fill-border-success text-code-input-text-success data-[active=true]:bg-code-input-fill-bg-success data-[active=true]:border-code-input-fill-border-success\",\n error:\n \"bg-code-input-fill-bg-error border-code-input-fill-border-error text-code-input-text-error data-[active=true]:bg-code-input-fill-bg-error data-[active=true]:border-code-input-fill-border-error\",\n },\n },\n defaultVariants: {\n size: \"md\",\n status: \"default\",\n },\n }\n)\n\nfunction CodeInputSlot({\n index,\n className,\n size,\n status,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n} & VariantProps<typeof codeInputSlotVariants>) {\n const codeInputContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = codeInputContext?.slots[index] ?? {}\n\n return (\n <div\n data-slot=\"code-input-slot\"\n data-active={isActive}\n className={cn(codeInputSlotVariants({ size, status }), className)}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-code-input-text-prominent duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\n// Legacy: CodeInputSeparator — no separator concept in component-code-input tokens\nfunction CodeInputSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"code-input-separator\" role=\"separator\" {...props}>\n <Icon name=\"minus\" />\n </div>\n )\n}\n\nexport { CodeInput, CodeInputGroup, CodeInputSlot, CodeInputSeparator, codeInputSlotVariants }\n","import { cn } from \"../../lib/utils\"\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n \"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-secondary-surface px-1 font-sans text-xs font-medium text-subtle select-none\",\n \"[&_svg:not([class*='size-'])]:size-3\",\n \"[[data-slot=tooltip-content]_&]:bg-border [[data-slot=tooltip-content]_&]:text-prominent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <kbd\n data-slot=\"kbd-group\"\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n />\n )\n}\n\nexport { Kbd, KbdGroup }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst linkVariants = cva(\n // ⚑ hover:underline, focus-visible:ring, active:opacity-60, gap-1.5, shrink-0, whitespace-nowrap, svg sizing — not in tokens.json (shadcn/UX additions, preserved)\n \"inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 active:opacity-60 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:inline font-sans normal-case underline decoration-2 underline-offset-4\",\n {\n variants: {\n variant: {\n primary:\n \"text-link-primary-default aria-disabled:text-link-primary-disabled aria-disabled:pointer-events-none\",\n \"secondary-normal\":\n \"text-link-secondary-normal-default dark:text-link-secondary-inverse-default aria-disabled:text-link-secondary-normal-disabled dark:aria-disabled:text-link-secondary-inverse-disabled aria-disabled:pointer-events-none\",\n \"secondary-inverse\":\n \"text-link-secondary-inverse-default aria-disabled:text-link-secondary-inverse-disabled aria-disabled:pointer-events-none\",\n \"secondary-static-light\":\n \"text-link-secondary-static-light-default aria-disabled:text-link-secondary-static-light-disabled aria-disabled:pointer-events-none\",\n \"secondary-static-dark\":\n \"text-link-secondary-static-dark-default aria-disabled:text-link-secondary-static-dark-disabled aria-disabled:pointer-events-none\",\n },\n size: {\n lg: \"[font-size:var(--link-lg-font-size)] [font-weight:var(--link-lg-font-weight)] [&_svg:not([class*='size-'])]:size-4\",\n md: \"[font-size:var(--link-md-font-size)] [font-weight:var(--link-md-font-weight)] [&_svg:not([class*='size-'])]:size-4\",\n sm: \"[font-size:var(--link-sm-font-size)] [font-weight:var(--link-sm-font-weight)] [&_svg:not([class*='size-'])]:size-3.5\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"lg\",\n },\n }\n)\n\nfunction Link({\n className,\n variant = \"primary\",\n size = \"lg\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"a\"> &\n VariantProps<typeof linkVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"a\"\n\n return (\n <Comp\n data-slot=\"link\"\n data-size={size}\n data-variant={variant}\n className={cn(linkVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nexport { Link, linkVariants }\n","import * as React from \"react\"\nimport { Icon } from \"./icon\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction NativeSelect({\n className,\n size = \"default\",\n ...props\n}: Omit<React.ComponentProps<\"select\">, \"size\"> & { size?: \"sm\" | \"default\" }) {\n return (\n <div\n className=\"group/native-select relative w-fit has-[select:disabled]:opacity-50\"\n data-slot=\"native-select-wrapper\"\n >\n <select\n data-slot=\"native-select\"\n data-size={size}\n className={cn(\n \"h-9 w-full min-w-0 appearance-none rounded-md border border-input bg-transparent px-3 py-2 pr-9 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-prominent-static-inverse placeholder:text-subtle disabled:pointer-events-none disabled:cursor-not-allowed data-[size=sm]:h-8 data-[size=sm]:py-1\",\n \"focus-visible:border-field-outline-border-focus\",\n className\n )}\n {...props}\n />\n <Icon\n name=\"chevron-down\"\n className=\"pointer-events-none absolute top-1/2 right-3.5 size-4 -translate-y-1/2 text-subtle opacity-50 select-none\"\n aria-hidden=\"true\"\n />\n </div>\n )\n}\n\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\"option\">) {\n return <option data-slot=\"native-select-option\" {...props} />\n}\n\nfunction NativeSelectOptGroup({\n className,\n ...props\n}: React.ComponentProps<\"optgroup\">) {\n return (\n <optgroup\n data-slot=\"native-select-optgroup\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Icon } from \"./icon\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button, type Button as ButtonType } from \"./button\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n )\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn(\"flex flex-row items-center gap-[var(--pagination-gap)]\", className)}\n {...props}\n />\n )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<React.ComponentProps<typeof ButtonType>, \"size\"> &\n React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n className,\n isActive,\n size: _size = \"icon-md\",\n ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n \"inline-flex shrink-0 items-center justify-center h-[var(--pagination-number-height)] w-[var(--pagination-number-width)] rounded-[var(--pagination-radius)] [font-size:var(--pagination-font-size)] font-display uppercase tracking-wide whitespace-nowrap transition-[color,background-color,border-color] outline-none border\",\n isActive\n ? \"bg-[var(--pagination-bg-number-selected)] border-[var(--pagination-border-number-selected)] [border-width:var(--pagination-border-width-selected)] [font-weight:var(--pagination-font-selected-weight)] text-[var(--pagination-text-default)]\"\n : \"bg-[var(--pagination-bg-number-default)] border-transparent [font-weight:var(--pagination-font-default-weight)] text-[var(--pagination-text-default)] hover:bg-[var(--pagination-bg-number-hover)] active:bg-[var(--pagination-bg-number-pressed)]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<\"a\">) {\n return (\n <Button asChild variant=\"ghost\" size=\"icon-md\" className={cn(className)}>\n <a aria-label=\"Go to previous page\" data-slot=\"pagination-link\" {...props}>\n <Icon name=\"chevron-left\" className=\"size-5\" />\n </a>\n </Button>\n )\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<\"a\">) {\n return (\n <Button asChild variant=\"ghost\" size=\"icon-md\" className={cn(className)}>\n <a aria-label=\"Go to next page\" data-slot=\"pagination-link\" {...props}>\n <Icon name=\"chevron-right\" className=\"size-5\" />\n </a>\n </Button>\n )\n}\n\n// ── PaginationEllipsis ────────────────────────────────────────────────────────\n// Without `pages`: renders a static decorative \"…\" (backward-compatible).\n// With `pages`: renders an interactive button that opens a compact dropdown\n// listing the hidden page numbers.\n\ntype PaginationEllipsisProps = {\n /** Hidden page numbers this ellipsis represents. Makes the ellipsis interactive. */\n pages?: number[]\n /** Called with the selected page number when the user picks one from the dropdown. */\n onPageSelect?: (page: number) => void\n} & Omit<React.ComponentProps<\"span\">, \"onClick\">\n\nfunction PaginationEllipsis({\n className,\n pages,\n onPageSelect,\n ...props\n}: PaginationEllipsisProps) {\n const [open, setOpen] = React.useState(false)\n\n const sharedClass = cn(\n \"flex h-[var(--pagination-number-height)] w-[var(--pagination-number-width)] items-center justify-center rounded-[var(--pagination-radius)]\",\n className\n )\n\n if (!pages?.length) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={sharedClass}\n {...props}\n >\n <span aria-hidden>...</span>\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n aria-label=\"Show more pages\"\n aria-expanded={open}\n data-slot=\"pagination-ellipsis\"\n className={cn(\n sharedClass,\n \"cursor-pointer border border-transparent transition-colors duration-instant outline-none\",\n \"bg-[var(--pagination-bg-number-default)]\",\n \"hover:bg-[var(--pagination-bg-number-hover)]\",\n \"active:bg-[var(--pagination-bg-number-pressed)]\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n )}\n >\n <span aria-hidden>...</span>\n </button>\n </PopoverTrigger>\n\n <PopoverContent\n align=\"center\"\n sideOffset={4}\n className={cn(\n \"z-[65] w-12 p-1\",\n \"bg-card border border-default/50 rounded-md\",\n \"shadow-[var(--menu-shadow)]\",\n \"max-h-[440px] overflow-y-auto overflow-x-hidden\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"origin-(--radix-popover-content-transform-origin)\"\n )}\n >\n {pages.map((page) => (\n <button\n key={page}\n type=\"button\"\n onClick={() => {\n onPageSelect?.(page)\n setOpen(false)\n }}\n className={cn(\n \"flex h-8 w-full items-center justify-center rounded-md\",\n \"[font-size:var(--pagination-font-size)] font-display [font-weight:var(--pagination-font-default-weight)] tracking-wide text-list-item-text-prominent\",\n \"transition-colors duration-instant cursor-pointer outline-none\",\n \"bg-transparent\",\n \"hover:bg-list-item-secondary-bg-hover\",\n \"active:bg-list-item-secondary-bg-pressed\",\n \"focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n )}\n >\n {page}\n </button>\n ))}\n </PopoverContent>\n </Popover>\n )\n}\n\n// ── PaginationBullets ─────────────────────────────────────────────────────────\n// Dot-style pagination. All tokens reuse the existing --pagination-* set.\n\ntype PaginationBulletsProps = {\n /** Total number of pages (= number of dots). */\n count: number\n /** Currently active page (1-based). */\n page: number\n /** Called with the new page number when a dot or nav button is clicked. */\n onPageChange?: (page: number) => void\n /** Show prev/next chevron buttons. Default: true. */\n showNavigation?: boolean\n className?: string\n}\n\nfunction PaginationBullets({\n count,\n page,\n onPageChange,\n showNavigation = true,\n className,\n}: PaginationBulletsProps) {\n return (\n <div\n data-slot=\"pagination-bullets\"\n className={cn(\"flex items-center justify-center gap-[var(--pagination-gap)]\", className)}\n >\n {showNavigation && (\n <PaginationPrevious\n href=\"#\"\n onClick={(e) => { e.preventDefault(); onPageChange?.(page - 1) }}\n aria-disabled={page <= 1}\n className={page <= 1 ? \"pointer-events-none opacity-40\" : \"\"}\n />\n )}\n\n {Array.from({ length: count }, (_, i) => {\n const dotPage = i + 1\n const isActive = dotPage === page\n return (\n <button\n key={dotPage}\n type=\"button\"\n aria-label={`Go to page ${dotPage}`}\n aria-current={isActive ? \"page\" : undefined}\n onClick={() => !isActive && onPageChange?.(dotPage)}\n className={cn(\n \"size-[var(--pagination-dot-size)] shrink-0 rounded-full\",\n \"outline-none transition-colors duration-instant\",\n \"focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n isActive\n ? \"bg-[var(--pagination-bg-dot-selected)] cursor-default\"\n : \"bg-[var(--pagination-bg-dot-default)] cursor-pointer hover:bg-[var(--pagination-bg-dot-hover)]\",\n )}\n />\n )\n })}\n\n {showNavigation && (\n <PaginationNext\n href=\"#\"\n onClick={(e) => { e.preventDefault(); onPageChange?.(page + 1) }}\n aria-disabled={page >= count}\n className={page >= count ? \"pointer-events-none opacity-40\" : \"\"}\n />\n )}\n </div>\n )\n}\n\nexport {\n Pagination,\n PaginationBullets,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-[65] w-72 origin-(--radix-popover-content-transform-origin) rounded-md border border-default bg-primary-surface p-4 text-prominent shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn(\"flex flex-col gap-1 text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\"h2\">) {\n return (\n <div\n data-slot=\"popover-title\"\n className={cn(\"font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"popover-description\"\n className={cn(\"text-subtle\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverHeader,\n PopoverTitle,\n PopoverDescription,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Progress as ProgressPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst progressVariants = cva(\n \"relative w-full overflow-hidden\",\n {\n variants: {\n size: {\n sm: \"h-[var(--progress-sm-height)] rounded-[var(--progress-sm-radius)]\",\n md: \"h-[var(--progress-md-height)] rounded-[var(--progress-md-radius)]\",\n },\n variant: {\n normal: \"bg-[var(--progress-bar-bg-normal-track-default)]\",\n inverse: \"bg-[var(--progress-bar-bg-inverse-track-default)]\",\n },\n color: {\n default: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-default)]\",\n green: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-green)]\",\n red: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-red)]\",\n yellow: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-yellow)]\",\n blue: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-normal-progress-blue)]\",\n },\n },\n compoundVariants: [\n {\n variant: \"inverse\",\n color: \"default\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n {\n variant: \"inverse\",\n color: \"green\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n {\n variant: \"inverse\",\n color: \"red\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n {\n variant: \"inverse\",\n color: \"yellow\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n {\n variant: \"inverse\",\n color: \"blue\",\n className: \"[&>[data-slot=progress-indicator]]:bg-[var(--progress-bar-bg-inverse-progress-default)]\",\n },\n ],\n defaultVariants: {\n size: \"md\",\n variant: \"normal\",\n color: \"default\",\n },\n }\n)\n\nfunction Progress({\n className,\n value,\n size = \"md\",\n variant = \"normal\",\n color = \"default\",\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root> &\n VariantProps<typeof progressVariants>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n data-size={size}\n className={cn(progressVariants({ size, variant, color }), className)}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"h-full w-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress, progressVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Icon } from \"./icon\"\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* RadioGroup — root wrapper */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* RadioGroupItem — raw Radix primitive */\n/* */\n/* Visual model (Figma Quill spec, node 24504-1814): */\n/* • unselected — transparent bg, ~50% opacity prominent border (circle) */\n/* • selected — entire circle fills with bg-selected (dark ↔ light mode) */\n/* Indicator renders a bg-background hole in the centre, */\n/* replicating the Figma circle-dot icon (●◌) appearance */\n/* • disabled — opacity-50 on the item itself */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"peer aspect-square size-4 shrink-0 rounded-full border border-prominent/50\",\n \"transition-colors duration-instant outline-none\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n // selected: fill entire circle dark (light mode) / white (dark mode)\n \"data-[state=checked]:bg-selected data-[state=checked]:border-selected\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"flex items-center justify-center\"\n >\n {/* bg-background circle punches a hole through bg-selected,\n producing the circle-dot (●◌) appearance from the Figma spec */}\n <span className=\"size-[6px] rounded-full bg-background\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────────────────── */\n/* RadioGroupField — composite: radio item + label + optional info icon */\n/* */\n/* Mirrors CheckboxField pattern exactly: */\n/* • size=\"sm\" → 14px label, size-3.5 info icon */\n/* • size=\"md\" → 16px label, size-4 info icon (default) */\n/* • items-center alignment for correct single-line layout */\n/* • has-[:disabled]:opacity-50 dims the full field uniformly */\n/* ─────────────────────────────────────────────────────────────────────────── */\n\ntype RadioGroupFieldProps = React.ComponentProps<\n typeof RadioGroupPrimitive.Item\n> & {\n /**\n * Visual size variant.\n * - `sm` → 14 px label, 14 px info icon\n * - `md` → 16 px label, 16 px info icon (default)\n */\n size?: \"sm\" | \"md\"\n /** Label text rendered next to the radio button. */\n label?: React.ReactNode\n /** When `true`, renders a Lucide `InfoIcon` after the label text. */\n info?: boolean\n}\n\nfunction RadioGroupField({\n id,\n label,\n info = false,\n size = \"md\",\n disabled,\n className,\n ...props\n}: RadioGroupFieldProps) {\n return (\n <label\n data-slot=\"radio-group-field\"\n data-size={size}\n className={cn(\n \"inline-flex items-center gap-2 cursor-pointer select-none\",\n \"has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n className\n )}\n >\n <RadioGroupItem id={id} disabled={disabled} {...props} />\n\n {label != null && (\n <span\n className={cn(\n \"inline-flex items-center gap-2 text-prominent\",\n size === \"sm\" ? \"text-sm leading-5\" : \"text-base leading-6\"\n )}\n >\n <span>{label}</span>\n {info && (\n <Icon\n name=\"circle-info\"\n aria-hidden=\"true\"\n className={cn(\n \"shrink-0 text-prominent\",\n size === \"sm\" ? \"size-3.5\" : \"size-4\"\n )}\n />\n )}\n </span>\n )}\n </label>\n )\n}\n\nexport { RadioGroup, RadioGroupItem, RadioGroupField }\n","\"use client\"\n\nimport { Icon } from \"./icon\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: ResizablePrimitive.GroupProps) {\n return (\n <ResizablePrimitive.Group\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full aria-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: ResizablePrimitive.SeparatorProps & {\n withHandle?: boolean\n}) {\n return (\n <ResizablePrimitive.Separator\n data-slot=\"resizable-handle\"\n className={cn(\n \"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\",\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-xs border bg-border\">\n <Icon name=\"grip-vertical\" className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.Separator>\n )\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"relative flex-1 rounded-full bg-border\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Icon } from \"./icon\"\nimport { Select as SelectPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { inputVariants } from \"./input\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n readOnly = false,\n children,\n label,\n labeled = true,\n align = \"left\",\n required,\n status = \"default\",\n variant = \"outline\",\n iconLeft,\n helperText,\n disabled,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"md\" | \"lg\" | \"default\"\n readOnly?: boolean\n label?: string\n /** When false, label and value cross-fade at the same position instead of floating. Default true. */\n labeled?: boolean\n align?: \"left\" | \"center\"\n status?: \"default\" | \"success\" | \"error\"\n variant?: \"outline\" | \"fill\"\n iconLeft?: React.ReactNode\n helperText?: string\n required?: boolean\n}) {\n const effectiveSize = (size === \"default\" ? \"lg\" : size) as \"sm\" | \"md\" | \"lg\"\n\n const triggerRef = React.useRef<HTMLButtonElement>(null)\n const isFocusedRef = React.useRef(false)\n const [isFloating, setIsFloating] = React.useState(false)\n const descriptionId = React.useId()\n\n const updateFloating = React.useCallback(() => {\n const el = triggerRef.current\n if (!el || !label) return\n const hasValue = !el.hasAttribute(\"data-placeholder\")\n const open = el.getAttribute(\"data-state\") === \"open\"\n setIsFloating(isFocusedRef.current || hasValue || open)\n }, [label])\n\n React.useEffect(() => {\n const el = triggerRef.current\n if (!el || !label) return\n updateFloating()\n const observer = new MutationObserver(updateFloating)\n observer.observe(el, {\n attributes: true,\n attributeFilter: [\"data-placeholder\", \"data-state\"],\n })\n return () => observer.disconnect()\n }, [label, updateFloating])\n\n const handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n isFocusedRef.current = true\n updateFloating()\n onFocusProp?.(e)\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n isFocusedRef.current = false\n updateFloating()\n onBlurProp?.(e)\n }\n\n const labelColorClass = disabled\n ? \"text-field-text-disabled\"\n : status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\"\n\n return (\n <div className={cn(\"w-full\", className)}>\n <SelectPrimitive.Trigger\n ref={triggerRef}\n data-slot=\"select-trigger\"\n data-size={effectiveSize}\n data-readonly={readOnly ? \"\" : undefined}\n disabled={readOnly || disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n aria-required={required}\n aria-invalid={status === \"error\" ? true : undefined}\n aria-describedby={helperText ? descriptionId : undefined}\n className={cn(\n inputVariants({ variant, size: effectiveSize, status }),\n // Override cursor-text → cursor-pointer for button element\n \"cursor-pointer text-left\",\n // Override has-[:disabled]: (doesn't fire on button itself) with disabled:\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n variant === \"outline\" && \"disabled:bg-field-outline-bg-disabled disabled:border-field-outline-border-disabled\",\n variant === \"fill\" && \"disabled:bg-field-fill-bg-disabled\",\n // Maintain focus visual state when dropdown is open (focus moves to portal)\n \"data-[state=open]:[border-width:var(--semantic-size-border-1-5)]\",\n variant === \"outline\" && \"data-[state=open]:bg-field-outline-bg-focus data-[state=open]:border-field-outline-border-focus\",\n variant === \"fill\" && \"data-[state=open]:bg-field-fill-bg-focus data-[state=open]:border-field-fill-border-focus\",\n \"data-[readonly]:cursor-default data-[readonly]:opacity-100\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n )}\n {...props}\n >\n {/* Icon left */}\n {iconLeft && (\n <span className=\"shrink-0 flex items-center justify-center text-field-text-subtle group-disabled:text-field-icon-disabled [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6\">\n {iconLeft}\n </span>\n )}\n\n {/* Content area */}\n {label ? (\n labeled ? (\n /* Floating label: label rises to top, value fades in below */\n <div className=\"relative flex-1 min-w-0 h-full\">\n <span\n className={cn(\n \"absolute pointer-events-none select-none leading-[1.5]\",\n \"left-0 flex items-center gap-[var(--semantic-size-spacing-4)]\",\n \"transition-all duration-200 ease-out\",\n labelColorClass,\n isFloating\n ? \"top-[var(--semantic-size-spacing-8)] [font-size:var(--field-font-size-sm)]\"\n : \"top-1/2 -translate-y-1/2\",\n )}\n >\n <span>{label}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </span>\n <span\n className={cn(\n \"absolute left-0 right-0 bottom-[var(--semantic-size-spacing-6)]\",\n \"leading-[1.5] [font-weight:var(--field-font-weight)]\",\n \"transition-opacity duration-200 ease-out truncate\",\n \"text-field-text-prominent group-data-[placeholder]:text-field-text-subtle\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n >\n {children}\n </span>\n </div>\n ) : (\n /* Labelless: label and value cross-fade at same position */\n <div className=\"relative flex-1 min-w-0 h-full\">\n <span\n className={cn(\n \"absolute inset-0 pointer-events-none select-none leading-[1.5]\",\n \"flex items-center gap-[var(--semantic-size-spacing-4)]\",\n \"transition-opacity duration-200 ease-out\",\n labelColorClass,\n align === \"center\" ? \"justify-center\" : \"justify-start\",\n isFloating ? \"opacity-0\" : \"opacity-100\",\n )}\n >\n <span>{label}</span>\n {required && (\n <span aria-hidden=\"true\" className=\"text-field-text-error\">*</span>\n )}\n </span>\n <span\n className={cn(\n \"absolute inset-0 flex items-center\",\n \"leading-[1.5] [font-weight:var(--field-font-weight)]\",\n \"transition-opacity duration-200 ease-out\",\n \"text-field-text-prominent\",\n align === \"center\" ? \"justify-center\" : \"justify-start\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n >\n {children}\n </span>\n </div>\n )\n ) : (\n /* No label — backwards-compatible bare-bones layout */\n <span className=\"flex-1 min-w-0 flex items-center gap-2 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 group-data-[placeholder]:text-dropdown-field-text-subtle\">\n {children}\n </span>\n )}\n\n {/* Status icon */}\n {status === \"error\" && !readOnly && !disabled && (\n <Icon name=\"triangle-exclamation\" className=\"size-5 shrink-0 text-field-text-error\" />\n )}\n {status === \"success\" && !readOnly && !disabled && (\n <Icon name=\"circle-check\" className=\"size-5 shrink-0 text-field-text-success\" />\n )}\n\n {/* Chevron */}\n <SelectPrimitive.Icon asChild>\n <Icon name=\"chevron-down\" className={cn(\"size-4 shrink-0\", readOnly ? \"opacity-30\" : \"opacity-50\")} />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n\n {helperText && (\n <div\n id={descriptionId}\n className={cn(\n \"flex w-full items-center\",\n \"mt-[var(--semantic-size-spacing-4)] px-[var(--semantic-size-spacing-4)]\",\n \"[font-size:var(--field-font-size-sm)]\",\n status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\",\n )}\n >\n {helperText}\n </div>\n )}\n </div>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n align = \"start\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"relative z-[65] max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--field-radius)] border border-dropdown-field-outline-border-default bg-dropdown-field-outline-bg-default text-dropdown-field-text-prominent shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n align={align}\n sideOffset={sideOffset}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-2\",\n position === \"popper\" &&\n \"w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"px-4 py-1.5 [font-size:var(--field-font-size-sm)] text-subtle\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"relative flex h-12 w-full cursor-default items-center gap-2 rounded-xs px-4 [font-size:var(--field-font-size-md)] outline-hidden select-none focus:bg-dropdown-field-fill-bg-neutral-hover focus:text-dropdown-field-text-prominent data-[state=checked]:!bg-dropdown-field-fill-bg-neutral-selected data-[state=checked]:!text-dropdown-field-text-selected data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-dropdown-field-text-subtle *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"pointer-events-none -mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <Icon name=\"chevron-up\" className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <Icon name=\"chevron-down\" className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Icon } from \"./icon\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\nimport { Drawer as VaulPrimitive } from \"vaul\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Context lets every sub-component know which primitive family is in use.\ntype SheetSide = \"top\" | \"right\" | \"bottom\" | \"left\"\nconst SheetSideContext = React.createContext<SheetSide>(\"right\")\n\n// ── Sheet (root) ─────────────────────────────────────────────────────────────\n// side=\"bottom\" → Vaul (drag-to-dismiss). All other sides → Radix Dialog.\n\nfunction Sheet({\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Root> & { side?: SheetSide }) {\n return (\n <SheetSideContext.Provider value={side}>\n {side === \"bottom\" ? (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <VaulPrimitive.Root direction=\"bottom\" data-slot=\"sheet\" {...(props as any)} />\n ) : (\n <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n )}\n </SheetSideContext.Provider>\n )\n}\n\n// ── SheetTrigger ─────────────────────────────────────────────────────────────\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n const side = React.useContext(SheetSideContext)\n if (side === \"bottom\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return <VaulPrimitive.Trigger data-slot=\"sheet-trigger\" {...(props as any)} />\n }\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\n// ── SheetClose ───────────────────────────────────────────────────────────────\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n const side = React.useContext(SheetSideContext)\n if (side === \"bottom\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return <VaulPrimitive.Close data-slot=\"sheet-close\" {...(props as any)} />\n }\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\n// ── SheetPortal ──────────────────────────────────────────────────────────────\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n const side = React.useContext(SheetSideContext)\n if (side === \"bottom\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return <VaulPrimitive.Portal {...(props as any)} />\n }\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\n// ── SheetOverlay ─────────────────────────────────────────────────────────────\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n const side = React.useContext(SheetSideContext)\n const baseClass = cn(\n \"fixed inset-0 z-[70] bg-overlay data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )\n if (side === \"bottom\") {\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <VaulPrimitive.Overlay data-slot=\"sheet-overlay\" className={baseClass} {...(props as any)} />\n )\n }\n return (\n <SheetPrimitive.Overlay data-slot=\"sheet-overlay\" className={baseClass} {...props} />\n )\n}\n\n// ── SheetContent ─────────────────────────────────────────────────────────────\n\nfunction SheetContent({\n className,\n children,\n side: sideProp,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: SheetSide\n showCloseButton?: boolean\n}) {\n const sideContext = React.useContext(SheetSideContext)\n const side = sideProp ?? sideContext\n\n // Bottom sheet → Vaul (drag-to-dismiss, rounded top, handle bar)\n if (sideContext === \"bottom\") {\n return (\n <SheetPortal>\n <SheetOverlay />\n <VaulPrimitive.Content\n data-slot=\"sheet-content\"\n data-side=\"bottom\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n {...(props as any)}\n className={cn(\n \"group/sheet-content bg-primary-surface\",\n \"fixed inset-x-0 bottom-0 z-[70]\",\n \"mt-24 flex max-h-[80vh] flex-col pb-6 overflow-hidden\",\n className\n )}\n style={{\n borderTopLeftRadius: \"var(--bottom-sheet-radius)\",\n borderTopRightRadius: \"var(--bottom-sheet-radius)\",\n }}\n >\n {/* Handle bar — 40px wide, 4px tall; inherits sheet background */}\n <div className=\"flex w-full shrink-0 items-center justify-center h-8\">\n <div\n className=\"h-[4px] w-[40px] rounded-full\"\n style={{ backgroundColor: \"var(--bottom-sheet-bg-handle-bar)\" }}\n />\n </div>\n {children}\n </VaulPrimitive.Content>\n </SheetPortal>\n )\n }\n\n // All other sides → Radix Dialog (unchanged)\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn(\n \"group/sheet-content fixed z-[70] flex flex-col gap-4 bg-primary-surface shadow-lg transition ease-standard data-[state=closed]:animate-out data-[state=closed]:duration-slow data-[state=open]:animate-in data-[state=open]:duration-open\",\n side === \"right\" &&\n \"inset-y-0 right-0 h-full w-3/4 border-l border-default data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n side === \"left\" &&\n \"inset-y-0 left-0 h-full w-3/4 border-r border-default data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n side === \"top\" &&\n \"inset-x-0 top-0 h-auto border-b border-default data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <Icon name=\"xmark\" className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\n// ── SheetHeader ──────────────────────────────────────────────────────────────\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\n \"flex flex-col gap-1.5 p-4\",\n \"group-data-[side=bottom]/sheet-content:text-center\",\n className,\n )}\n {...props}\n />\n )\n}\n\n// ── SheetFooter ──────────────────────────────────────────────────────────────\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4 [&>*]:w-full\", className)}\n {...props}\n />\n )\n}\n\n// ── SheetTitle ───────────────────────────────────────────────────────────────\n// Vaul has no Dialog context, so render a plain element for bottom sheets.\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n const side = React.useContext(SheetSideContext)\n const cls = cn(\"font-semibold text-prominent\", className)\n const bottomCls = cn(\"text-xl leading-[1.4] font-extrabold font-display text-prominent\", className)\n if (side === \"bottom\") {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={bottomCls}\n {...props}\n />\n )\n }\n return (\n <SheetPrimitive.Title data-slot=\"sheet-title\" className={cls} {...props} />\n )\n}\n\n// ── SheetDescription ─────────────────────────────────────────────────────────\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n const cls = cn(\"text-sm text-subtle\", className)\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cls}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Icon } from \"./icon\"\nimport { Slot } from \"radix-ui\"\n\nimport { useIsMobile } from \"../../hooks/use-mobile\"\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport { Separator } from \"./separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"./sheet\"\nimport { Skeleton } from \"./skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-base ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-base ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"secondary\"\n size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <Icon name=\"table-columns\" />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"relative flex w-full flex-1 flex-col bg-primary-surface\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"h-8 w-full bg-primary-surface shadow-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"div\"\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-sm p-2 text-left text-sidebar-foreground text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-secondary-hover hover:text-primary focus-visible:ring-2 active:bg-secondary-hover active:text-primary disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-secondary-hover data-[active=true]:font-semibold data-[active=true]:text-primary data-[active=true]:hover:bg-secondary-hover data-[active=true]:hover:text-primary data-[state=open]:hover:bg-secondary-hover data-[state=open]:hover:text-primary [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 data-[active=true]:[&>svg]:text-primary\",\n {\n variants: {\n variant: {\n default: \"\",\n outline:\n \"bg-primary-surface ring-1 ring-sidebar-border hover:ring-primary/40 data-[active=true]:ring-primary/40\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot.Root : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform peer-hover/menu-button:text-sidebar-accent-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground data-[state=open]:opacity-100 md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n}) {\n // Fixed width for skeleton bars (avoids impure Math.random in render; still reads like varied line length).\n const width = \"70%\"\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n}) {\n const Comp = asChild ? Slot.Root : \"a\"\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-sm px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden hover:bg-secondary-hover hover:text-primary focus-visible:ring-2 active:bg-secondary-hover active:text-primary disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 data-[active=true]:[&>svg]:text-primary\",\n \"data-[active=true]:bg-secondary-hover data-[active=true]:text-primary\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n","import { cn } from \"../../lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"animate-pulse rounded-md bg-secondary-surface\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 6,\n variant = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content> & {\n variant?: \"default\" | \"error\"\n}) {\n const bgVar = variant === \"error\" ? \"var(--tooltip-bg-error)\" : \"var(--tooltip-bg-default)\"\n const textVar = variant === \"error\" ? \"var(--tooltip-text-error)\" : \"var(--tooltip-text-default)\"\n\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n data-variant={variant}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-[var(--tooltip-radius)] border-0 px-[var(--tooltip-padding-horizontal)] py-[var(--tooltip-padding-vertical)] min-w-[var(--tooltip-min-width)] max-w-[var(--tooltip-max-width)] [font-size:var(--tooltip-font-size)] [font-weight:var(--tooltip-font-weight)] text-balance fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n className\n )}\n style={{ backgroundColor: bgVar, color: textVar }}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow style={{ fill: bgVar }} />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Slider as SliderPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root> & {\n size?: \"sm\" | \"default\"\n}) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min],\n [value, defaultValue, min]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n data-size={size}\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"group/slider relative flex w-full touch-none items-center select-none\",\n \"data-[disabled]:opacity-50\",\n \"data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"relative grow overflow-hidden rounded-full bg-slider-track\",\n \"data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full\",\n \"group-data-[size=sm]/slider:data-[orientation=horizontal]:h-1 group-data-[size=sm]/slider:data-[orientation=vertical]:w-1\",\n \"group-data-[size=default]/slider:data-[orientation=horizontal]:h-1.5 group-data-[size=default]/slider:data-[orientation=vertical]:w-1.5\",\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className=\"absolute bg-slider-range data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className={cn(\n \"block shrink-0 rounded-full bg-toggle-knob border-0 cursor-pointer\",\n \"shadow-sm transition-[color,box-shadow] duration-fast ease-standard\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"group-data-[size=sm]/slider:size-4\",\n \"group-data-[size=default]/slider:size-5\",\n )}\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","\"use client\"\n\n/**\n * Snackbar — Quill equivalent of shadcn's Sonner.\n * Renamed from sonner.tsx. Same imperative API: import { toast } from \"sonner\".\n *\n * Variants: default | fail (only variants in component-snackbar tokens.json)\n *\n * Flagged — present in original sonner.tsx but no token match; removed:\n * • success / info / warning / loading icon overrides — no variants in tokens\n * • --normal-border — no border token in component-snackbar\n *\n * Fixed from original:\n * • --border-radius now uses --snackbar-radius (was pointing to global --radius)\n *\n * Icons: suppressed on all variants — no icons per design spec.\n */\n\nimport { useTheme } from \"next-themes\"\nimport { Toaster as SonnerToaster, type ToasterProps } from \"sonner\"\n\nimport { buttonVariants } from \"./button\"\n\nconst Snackbar = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <SonnerToaster\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n position=\"bottom-center\"\n richColors\n closeButton\n toastOptions={{\n classNames: {\n /* button.tsx ghost/sm: height 32px, radius 999px, font-size 14px, padding-h 12px.\n Color states are enforced via !important overrides in globals.css using\n --snackbar-btn-* → component-button/sm ghost-static-dark (light) / ghost-static-light (dark). */\n actionButton: buttonVariants({ variant: \"ghost\", size: \"sm\" }),\n cancelButton: buttonVariants({ variant: \"ghost\", size: \"sm\" }),\n /* button.tsx ghost/icon-sm: 32×32 circle.\n Pulled into inline flex flow via CSS override; sonner's built-in X SVG is coloured\n via --snackbar-btn-text (white in light mode, dark in dark mode). */\n closeButton: buttonVariants({ variant: \"ghost\", size: \"icon-sm\" }),\n },\n }}\n style={\n {\n /* component-snackbar/mode-1 colour tokens */\n \"--normal-bg\": \"var(--snackbar-bg-default)\",\n \"--normal-text\": \"var(--snackbar-text)\",\n \"--error-bg\": \"var(--snackbar-bg-fail)\",\n \"--error-text\": \"var(--snackbar-text-fail)\",\n\n /* component-snackbar/mode-1 size tokens — only vars sonner actually reads */\n \"--border-radius\": \"var(--snackbar-radius)\",\n \"--width\": \"var(--snackbar-max-width)\",\n\n /* Remove sonner's default borders — no border in component-snackbar tokens */\n \"--normal-border\": \"transparent\",\n \"--error-border\": \"transparent\",\n } as React.CSSProperties\n }\n {...props}\n />\n )\n}\n\nexport { Snackbar }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Icon } from \"./icon\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupText,\n type inputGroupVariants,\n} from \"./input-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\ntype InputGroupVariantProps = VariantProps<typeof inputGroupVariants>\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max)\n}\n\nfunction getDecimalPlaces(n: number) {\n const s = String(n)\n const i = s.indexOf(\".\")\n return i === -1 ? 0 : s.length - i - 1\n}\n\nfunction formatValue(value: number, decimalPlaces: number) {\n return decimalPlaces > 0 ? value.toFixed(decimalPlaces) : String(value)\n}\n\ninterface StepperProps {\n value?: number\n defaultValue?: number\n onValueChange?: (value: number) => void\n min?: number\n max?: number\n step?: number\n disabled?: boolean\n placeholder?: string\n className?: string\n id?: string\n name?: string\n \"aria-label\"?: string\n /** \"split\" — [−] on far left, editable input centered, [+] on far right.\n * \"right-aligned\" — editable input left-aligned (flex-1), both [−][+] grouped on the right. */\n layout?: \"split\" | \"right-aligned\"\n /** When provided, renders the labelled variant: uses Input as the base with a\n * floating label and stepper buttons in the iconRight slot. */\n label?: string\n /** Short unit/currency label inside the field, right of the decrement button (split only). */\n labelLeft?: string\n /** Short unit/currency label inside the field, left of the increment button (split only). */\n labelRight?: string\n /** Helper message shown in the footer row below the field. */\n helperText?: string\n /** When true, renders a currentValue/max counter on the right of the footer row. Requires a finite `max`. */\n showCounter?: boolean\n /** Visual style of the field. Defaults to \"outline\". */\n variant?: InputGroupVariantProps[\"variant\"]\n /** Validation state. Affects border colour and footer text colour. */\n status?: InputGroupVariantProps[\"status\"]\n /** Field height and font size. \"md\" (default, 56px / 16px) and \"sm\" (32px / 14px).\n * Applies to the labelless variant only — ignored when `label` is set. */\n size?: \"md\" | \"sm\"\n}\n\nfunction Stepper({\n value: controlledValue,\n defaultValue,\n onValueChange,\n min = -Infinity,\n max = Infinity,\n step = 1,\n disabled,\n placeholder,\n className,\n id,\n name,\n \"aria-label\": ariaLabel,\n layout = \"split\",\n label,\n labelLeft,\n labelRight,\n helperText,\n showCounter,\n variant,\n status,\n size = \"md\",\n}: StepperProps) {\n const isControlled = controlledValue !== undefined\n // Numeric state always has a value (defaults to 0) so buttons work even when display is empty\n const [internalValue, setInternalValue] = React.useState(\n clamp(defaultValue ?? 0, min, max)\n )\n const currentValue = isControlled ? controlledValue : internalValue\n const decimalPlaces = getDecimalPlaces(step)\n\n // Labeled mode without an explicit defaultValue starts empty so the floating\n // label sits at center (identical to an empty Input.tsx labelled field).\n // All other modes always show a formatted number.\n const [displayString, setDisplayString] = React.useState(() =>\n label !== undefined && defaultValue === undefined\n ? \"\"\n : formatValue(clamp(defaultValue ?? 0, min, max), decimalPlaces)\n )\n const [isFocused, setIsFocused] = React.useState(false)\n\n // Sync display string when controlled value changes externally (not while typing).\n // Skip the sync when labeled mode has an empty display — the user intentionally\n // cleared the field and the label should remain at center.\n React.useEffect(() => {\n if (!isFocused) {\n setDisplayString((prev) => {\n if (label && prev === \"\") return \"\"\n return formatValue(currentValue, decimalPlaces)\n })\n }\n }, [currentValue, decimalPlaces, isFocused, label])\n\n function commit(next: number) {\n const clamped = clamp(next, min, max)\n const rounded =\n decimalPlaces > 0\n ? parseFloat(clamped.toFixed(decimalPlaces))\n : Math.round(clamped)\n\n if (!isControlled) setInternalValue(rounded)\n setDisplayString(formatValue(rounded, decimalPlaces))\n onValueChange?.(rounded)\n }\n\n function handleDecrement() {\n commit(currentValue - step)\n }\n\n function handleIncrement() {\n commit(currentValue + step)\n }\n\n function handleInputChange(e: React.ChangeEvent<HTMLInputElement>) {\n setDisplayString(e.target.value)\n }\n\n function handleBlur() {\n setIsFocused(false)\n // Labeled mode: keep empty display so the floating label drops back to center.\n // Labelless mode: reset to the last valid number when cleared.\n if (displayString === \"\") {\n if (!label) setDisplayString(formatValue(currentValue, decimalPlaces))\n return\n }\n const parsed = parseFloat(displayString)\n if (Number.isNaN(parsed)) {\n setDisplayString(label ? \"\" : formatValue(currentValue, decimalPlaces))\n } else {\n commit(parsed)\n }\n }\n\n function handleFocus() {\n setIsFocused(true)\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === \"ArrowUp\") {\n e.preventDefault()\n handleIncrement()\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault()\n handleDecrement()\n } else if (e.key === \"Enter\") {\n e.preventDefault()\n const parsed = parseFloat(displayString)\n if (Number.isNaN(parsed)) {\n setDisplayString(formatValue(currentValue, decimalPlaces))\n } else {\n commit(parsed)\n }\n }\n }\n\n // ── Labelled variant: use Input as the base so the floating label works correctly ──\n if (label) {\n const stepperButtons = (\n // stopPropagation prevents Input's wrapper onClick from stealing focus when\n // the user clicks a stepper button\n <div\n className=\"flex items-center gap-[var(--semantic-size-spacing-8)]\"\n onClick={(e) => e.stopPropagation()}\n >\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"rounded-full min-w-0\"\n onClick={handleDecrement}\n disabled={disabled || currentValue <= min}\n aria-label=\"Decrease value\"\n >\n <Icon name=\"minus\" className=\"size-4\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"rounded-full min-w-0\"\n onClick={handleIncrement}\n disabled={disabled || currentValue >= max}\n aria-label=\"Increase value\"\n >\n <Icon name=\"plus\" className=\"size-4\" />\n </Button>\n </div>\n )\n\n return (\n <Input\n role=\"spinbutton\"\n aria-valuemin={min === -Infinity ? undefined : min}\n aria-valuemax={max === Infinity ? undefined : max}\n aria-valuenow={currentValue}\n aria-label={ariaLabel}\n id={id}\n name={name}\n label={label}\n variant={variant}\n status={status}\n value={displayString}\n placeholder={placeholder}\n helperText={helperText}\n disabled={disabled}\n inputMode=\"numeric\"\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n iconRight={stepperButtons}\n className={cn(\"w-full\", className)}\n />\n )\n }\n\n // ── Labelless variant: use InputGroup for the bare field ──\n const hasFooter = helperText !== undefined || (showCounter && max !== Infinity)\n const footerColorClass =\n status === \"success\"\n ? \"text-field-text-success\"\n : status === \"error\"\n ? \"text-field-text-error\"\n : \"text-field-text-subtle\"\n\n const isSm = size === \"sm\"\n const btnSize = isSm ? \"icon-xs\" : \"icon-sm\"\n const iconClass = isSm ? \"size-3\" : \"size-4\"\n\n return (\n <div className={cn(\"w-full\", className)}>\n <InputGroup\n data-slot=\"stepper\"\n data-disabled={disabled || undefined}\n size={size}\n variant={variant}\n status={status}\n >\n {layout === \"split\" ? (\n <>\n {/* flex-1 basis-0 on both addons keeps the three columns equal so the\n centered input stays centered relative to the whole field,\n regardless of labelLeft/labelRight widths */}\n {/* pl-16 = field left edge; pr-0 = input's pl-8 (reduced by group rule) provides the gap */}\n <InputGroupAddon align=\"inline-start\" className=\"flex-1 basis-0 min-w-fit justify-start !pl-[var(--semantic-size-spacing-16)] !pr-0\">\n <InputGroupButton\n size={btnSize}\n variant=\"ghost\"\n className=\"rounded-full\"\n onClick={handleDecrement}\n disabled={disabled || currentValue <= min}\n aria-label=\"Decrease value\"\n >\n <Icon name=\"minus\" className={iconClass} />\n </InputGroupButton>\n {labelLeft && (\n <InputGroupText>{labelLeft}</InputGroupText>\n )}\n </InputGroupAddon>\n\n <InputGroupInput\n type=\"text\"\n inputMode=\"numeric\"\n role=\"spinbutton\"\n aria-valuemin={min === -Infinity ? undefined : min}\n aria-valuemax={max === Infinity ? undefined : max}\n aria-valuenow={currentValue}\n aria-label={ariaLabel}\n value={displayString}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n placeholder={placeholder}\n id={id}\n name={name}\n className=\"text-center [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none\"\n />\n\n {/* input's pr-8 (reduced by group rule) provides the gap; pr-16 = field right edge */}\n <InputGroupAddon align=\"inline-end\" className=\"flex-1 basis-0 min-w-fit justify-end !pr-[var(--semantic-size-spacing-16)]\">\n {labelRight && (\n <InputGroupText>{labelRight}</InputGroupText>\n )}\n <InputGroupButton\n size={btnSize}\n variant=\"ghost\"\n className=\"rounded-full\"\n onClick={handleIncrement}\n disabled={disabled || currentValue >= max}\n aria-label=\"Increase value\"\n >\n <Icon name=\"plus\" className={iconClass} />\n </InputGroupButton>\n </InputGroupAddon>\n </>\n ) : (\n <>\n <InputGroupInput\n type=\"text\"\n inputMode=\"numeric\"\n role=\"spinbutton\"\n aria-valuemin={min === -Infinity ? undefined : min}\n aria-valuemax={max === Infinity ? undefined : max}\n aria-valuenow={currentValue}\n aria-label={ariaLabel}\n value={displayString}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n placeholder={placeholder}\n id={id}\n name={name}\n className=\"text-left [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none\"\n />\n {/* pr-16 = field right edge */}\n <InputGroupAddon align=\"inline-end\" className=\"!pr-[var(--semantic-size-spacing-16)]\">\n <InputGroupButton\n size={btnSize}\n variant=\"ghost\"\n className=\"rounded-full\"\n onClick={handleDecrement}\n disabled={disabled || currentValue <= min}\n aria-label=\"Decrease value\"\n >\n <Icon name=\"minus\" className={iconClass} />\n </InputGroupButton>\n <InputGroupButton\n size={btnSize}\n variant=\"ghost\"\n className=\"rounded-full\"\n onClick={handleIncrement}\n disabled={disabled || currentValue >= max}\n aria-label=\"Increase value\"\n >\n <Icon name=\"plus\" className={iconClass} />\n </InputGroupButton>\n </InputGroupAddon>\n </>\n )}\n </InputGroup>\n\n {hasFooter && (\n <div className={cn(\"flex w-full items-center justify-between mt-[var(--semantic-size-spacing-4)] px-[var(--semantic-size-spacing-4)] [font-size:var(--field-font-size-sm)]\", footerColorClass)}>\n <span>{helperText ?? \"\"}</span>\n {showCounter && max !== Infinity && (\n <span>{currentValue}/{max}</span>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport { Stepper }\nexport type { StepperProps }\n","import { cn } from \"../../lib/utils\"\n\nconst PILL_COUNT = 8\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"relative inline-block size-4 text-current\", className)}\n {...props}\n >\n <style>{`\n @keyframes spinner-fade {\n 0% { opacity: 1; }\n 100% { opacity: 0.15; }\n }\n `}</style>\n {Array.from({ length: PILL_COUNT }, (_, i) => (\n <span\n key={i}\n style={{\n position: \"absolute\",\n left: \"50%\",\n top: \"0\",\n width: \"12%\",\n height: \"30%\",\n borderRadius: \"9999px\",\n backgroundColor: \"var(--loading-spinner-bg-default)\",\n transformOrigin: \"50% 167%\",\n transform: `translateX(-50%) rotate(${i * 45}deg)`,\n animation: `spinner-fade 0.8s linear ${(i * 0.8) / PILL_COUNT}s infinite`,\n }}\n />\n ))}\n </div>\n )\n}\n\nexport { Spinner }\n","import { cn } from \"../../lib/utils\"\n\nfunction LoadingSpinner({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n data-slot=\"loading-spinner\"\n className={cn(\n \"inline-block animate-spin rounded-full\",\n \"border-2 border-loading-spinner-bg-default border-t-transparent\",\n \"size-4\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport { LoadingSpinner }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Switch as SwitchPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Switch({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n \"peer group/switch relative inline-flex shrink-0 cursor-pointer items-center rounded-full p-0.5\",\n \"transition-colors duration-fast outline-none\",\n \"bg-toggle-track-off hover:bg-toggle-track-off-hover active:bg-toggle-track-off-active\",\n \"data-[state=checked]:bg-toggle-track-on data-[state=checked]:hover:bg-toggle-track-on-hover data-[state=checked]:active:bg-toggle-track-on-active\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-info\",\n \"data-[size=default]:h-6 data-[size=default]:w-11\",\n \"data-[size=sm]:h-5 data-[size=sm]:w-9\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"pointer-events-none block rounded-full bg-toggle-knob shadow-sm\",\n \"transition-transform duration-fast\",\n \"data-[state=unchecked]:translate-x-0\",\n \"group-data-[size=default]/switch:size-5 data-[state=checked]:group-data-[size=default]/switch:translate-x-5\",\n \"group-data-[size=sm]/switch:size-4 data-[state=checked]:group-data-[size=sm]/switch:translate-x-4\",\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"border-t bg-secondary-surface/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"border-b transition-colors hover:bg-secondary-surface/50 data-[state=selected]:bg-secondary-surface\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-prominent [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-4 text-sm text-subtle\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Tabs as TabsPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Quill component: SegmentedControl\n// tokens.json entry: component-segmented-control\n// Sizes from tokens.json: md (default), lg\n// Orientation: horizontal only (vertical not in tokens.json)\n// Icon position: inline only (iconPosition=\"top\" not in tokens.json)\n// Elevation: active segment shadow via --segmented-elevation-selected (two-layer alpha-black shadow)\n\nconst segmentedControlListVariants = cva(\n \"group/segmented-list inline-flex w-fit items-center bg-segmented-control-container-bg\",\n {\n variants: {\n size: {\n md: [\n \"h-[var(--segmented-md-container-height)]\",\n \"min-w-[var(--segmented-md-container-min-width)]\",\n \"rounded-[var(--segmented-md-container-radius)]\",\n \"p-[var(--segmented-md-container-padding)]\",\n \"gap-[var(--segmented-md-container-gap)]\",\n ],\n lg: [\n \"h-[var(--segmented-lg-container-height)]\",\n \"min-w-[var(--segmented-lg-container-min-width)]\",\n \"rounded-[var(--segmented-lg-container-radius)]\",\n \"p-[var(--segmented-lg-container-padding)]\",\n \"gap-[var(--segmented-lg-container-gap)]\",\n ],\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nfunction SegmentedControl({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"segmented-control\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SegmentedControlList({\n className,\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n VariantProps<typeof segmentedControlListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"segmented-control-list\"\n data-size={size}\n className={cn(segmentedControlListVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction SegmentedControlTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"segmented-control-trigger\"\n className={cn(\n \"relative inline-flex flex-1 items-center justify-center gap-1.5 whitespace-nowrap transition-all\",\n // md defaults (container group is md)\n \"h-[var(--segmented-md-segment-height)]\",\n \"min-w-[var(--segmented-md-segment-min-width)]\",\n \"rounded-[var(--segmented-md-segment-radius)]\",\n \"px-[var(--segmented-md-segment-padding)]\",\n \"[font-size:var(--segmented-md-font-size)]\",\n \"[font-weight:var(--segmented-md-font-weight-default)]\",\n // lg overrides via parent data-size\n \"group-data-[size=lg]/segmented-list:h-[var(--segmented-lg-segment-height)]\",\n \"group-data-[size=lg]/segmented-list:min-w-[var(--segmented-lg-segment-min-width)]\",\n \"group-data-[size=lg]/segmented-list:rounded-[var(--segmented-lg-segment-radius)]\",\n \"group-data-[size=lg]/segmented-list:px-[var(--segmented-lg-segment-padding)]\",\n \"group-data-[size=lg]/segmented-list:[font-size:var(--segmented-lg-font-size)]\",\n // colors — default (unselected): 72% opacity; selected: solid\n \"text-segmented-control-text-default\",\n \"data-[state=active]:text-segmented-control-text-prominent\",\n \"[&_svg]:text-segmented-control-icon-prominent\",\n // icon sizes: md=20px, lg=24px\n \"group-data-[size=md]/segmented-list:[&_svg:not([class*='size-'])]:size-5\",\n \"group-data-[size=lg]/segmented-list:[&_svg:not([class*='size-'])]:size-6\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n // interactive states\n \"hover:bg-segmented-control-segment-bg-hover\",\n \"active:bg-segmented-control-segment-bg-pressed\",\n // disabled\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"disabled:text-segmented-control-text-disabled\",\n \"disabled:[&_svg]:text-segmented-control-icon-disabled\",\n // selected state — white pill + elevation shadow\n \"data-[state=active]:bg-segmented-control-segment-bg-selected\",\n \"data-[state=active]:[font-weight:var(--segmented-md-font-weight-selected)]\",\n \"group-data-[size=lg]/segmented-list:data-[state=active]:[font-weight:var(--segmented-lg-font-weight-selected)]\",\n \"data-[state=active]:shadow-[var(--segmented-elevation-selected)]\",\n // focus\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SegmentedControlContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"segmented-control-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport {\n SegmentedControl,\n SegmentedControlList,\n SegmentedControlTrigger,\n SegmentedControlContent,\n segmentedControlListVariants,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Tabs as TabsPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Quill component: Tab (line / underline variant)\n// tokens.json entry: component-tab\n// Sizes from tokens.json: sm, md (default), lg\n// Orientation: horizontal and vertical\n// Icon position: inline\n\nconst tabListVariants = cva(\n \"group/tab-list inline-flex w-fit items-center gap-1 bg-transparent border-b border-border-subtle\",\n {\n variants: {\n size: {\n sm: \"h-[var(--tab-sm-height)]\",\n md: \"h-[var(--tab-md-height)]\",\n lg: \"h-[var(--tab-lg-height)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nfunction Tab({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tab\"\n className={cn(\n \"group/tab flex flex-col gap-2\",\n \"data-[orientation=vertical]:flex-row data-[orientation=vertical]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabList({\n className,\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n VariantProps<typeof tabListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tab-list\"\n data-size={size}\n className={cn(\n tabListVariants({ size }),\n // vertical: stack triggers in a column, auto height\n \"group-data-[orientation=vertical]/tab:flex-col group-data-[orientation=vertical]/tab:h-auto group-data-[orientation=vertical]/tab:w-fit\",\n \"group-data-[orientation=vertical]/tab:border-b-0 group-data-[orientation=vertical]/tab:border-r group-data-[orientation=vertical]/tab:border-border-subtle\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tab-trigger\"\n className={cn(\n \"relative inline-flex flex-1 items-center justify-center gap-1.5 bg-transparent whitespace-nowrap transition-all\",\n // md defaults\n \"h-full\",\n \"min-w-[var(--tab-md-min-width)]\",\n \"rounded-[var(--tab-md-radius)]\",\n \"px-[var(--tab-md-padding-horizontal)]\",\n \"[font-size:var(--tab-md-font-size)]\",\n \"[font-weight:var(--tab-md-font-weight-default)]\",\n // sm overrides\n \"group-data-[size=sm]/tab-list:gap-1\",\n \"group-data-[size=sm]/tab-list:min-w-[var(--tab-sm-min-width)]\",\n \"group-data-[size=sm]/tab-list:rounded-[var(--tab-sm-radius)]\",\n \"group-data-[size=sm]/tab-list:px-[var(--tab-sm-padding-horizontal)]\",\n \"group-data-[size=sm]/tab-list:[font-size:var(--tab-sm-font-size)]\",\n // lg overrides\n \"group-data-[size=lg]/tab-list:gap-2\",\n \"group-data-[size=lg]/tab-list:min-w-[var(--tab-lg-min-width)]\",\n \"group-data-[size=lg]/tab-list:rounded-[var(--tab-lg-radius)]\",\n \"group-data-[size=lg]/tab-list:px-[var(--tab-lg-padding-horizontal)]\",\n \"group-data-[size=lg]/tab-list:[font-size:var(--tab-lg-font-size)]\",\n // vertical layout — full width, left-aligned, fixed height from size token\n \"group-data-[orientation=vertical]/tab:w-full group-data-[orientation=vertical]/tab:justify-start\",\n \"group-data-[orientation=vertical]/tab:h-[var(--tab-md-height)]\",\n \"group-data-[size=sm]/tab-list:group-data-[orientation=vertical]/tab:h-[var(--tab-sm-height)]\",\n \"group-data-[size=lg]/tab-list:group-data-[orientation=vertical]/tab:h-[var(--tab-lg-height)]\",\n // colors\n \"text-tab-text border border-transparent\",\n \"hover:bg-transparent hover:text-primary\",\n \"active:bg-tab-bg-pressed\",\n // disabled\n \"disabled:pointer-events-none disabled:text-tab-text-disabled disabled:opacity-50\",\n // focus\n \"focus-visible:border-tab-border-focus focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring\",\n // icons\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n // active state\n \"data-[state=active]:bg-transparent\",\n \"data-[state=active]:text-tab-text-selected\",\n \"data-[state=active]:[font-weight:var(--tab-md-font-weight-selected)]\",\n \"group-data-[size=sm]/tab-list:data-[state=active]:[font-weight:var(--tab-sm-font-weight-selected)]\",\n \"group-data-[size=lg]/tab-list:data-[state=active]:[font-weight:var(--tab-lg-font-weight-selected)]\",\n // active indicator — horizontal: bottom underline; vertical: right-side bar\n \"after:absolute after:bg-tab-border-selected after:opacity-0 after:transition-opacity\",\n // horizontal indicator\n \"after:inset-x-0 after:bottom-[-2px] after:h-[var(--tab-md-border-width)] after:w-auto\",\n \"group-data-[size=sm]/tab-list:after:h-[var(--tab-sm-border-width)]\",\n \"group-data-[size=lg]/tab-list:after:h-[var(--tab-lg-border-width)]\",\n // vertical indicator — right edge bar\n \"group-data-[orientation=vertical]/tab:after:inset-y-0 group-data-[orientation=vertical]/tab:after:left-auto group-data-[orientation=vertical]/tab:after:right-[-2px] group-data-[orientation=vertical]/tab:after:h-auto group-data-[orientation=vertical]/tab:after:w-[var(--tab-md-border-width)]\",\n \"data-[state=active]:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tab-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tab, TabList, TabTrigger, TabContent, tabListVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst toggleVariants = cva(\n [\n \"relative inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full p-0.5\",\n \"transition-colors duration-fast outline-none\",\n \"bg-toggle-track-off hover:bg-toggle-track-off-hover active:bg-toggle-track-off-active\",\n \"data-[state=on]:bg-toggle-track-on data-[state=on]:hover:bg-toggle-track-on-hover data-[state=on]:active:bg-toggle-track-on-active\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-info\",\n ],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\nfunction Toggle({\n className,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ className }))}\n {...props}\n >\n <span\n aria-hidden\n className={cn(\n \"pointer-events-none block size-5 rounded-full bg-toggle-knob shadow-sm\",\n \"transition-transform duration-fast\",\n \"translate-x-0 [[data-state=on]_&]:translate-x-5\",\n )}\n />\n </TogglePrimitive.Root>\n )\n}\n\nexport { Toggle, toggleVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { type VariantProps } from \"class-variance-authority\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\nimport { toggleVariants } from \"./toggle\"\n\nfunction ToggleGroup({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root>) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n className={cn(\"flex flex-wrap items-center gap-3\", className)}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n className={cn(toggleVariants({ className }))}\n {...props}\n >\n <span\n aria-hidden\n className={cn(\n \"pointer-events-none block size-5 rounded-full bg-toggle-knob shadow-sm\",\n \"transition-transform duration-fast\",\n \"translate-x-0 [[data-state=on]_&]:translate-x-5\",\n )}\n />\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n","\"use client\";\n\nimport React from \"react\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\nexport type ActionButtonState = \"default\" | \"disabled\" | \"loading\";\nexport type ActionButtonSurface = \"dark\" | \"light\";\n\ninterface HeroActionButtonProps {\n label: string;\n icon: React.ElementType;\n primary?: boolean;\n state?: ActionButtonState;\n surface?: ActionButtonSurface;\n colClass?: string;\n onClick?: () => void;\n}\n\nexport function HeroActionButton({\n label,\n icon: Icon,\n primary = false,\n state = \"default\",\n surface = \"dark\",\n colClass = \"flex-1\",\n onClick,\n}: HeroActionButtonProps) {\n const isDark = surface === \"dark\";\n\n if (state === \"loading\") {\n const skelBg = isDark ? \"bg-on-prominent-static-inverse/[0.04]\" : \"bg-prominent/[0.04]\";\n return (\n <div className={`${colClass} flex flex-col gap-2 items-center h-[76px]`}>\n <Skeleton className={`size-[48px] rounded-full ${skelBg}`} />\n <Skeleton className={`h-[8px] w-[56px] rounded-[8px] ${skelBg}`} />\n </div>\n );\n }\n\n const isDisabled = state === \"disabled\";\n\n if (primary) {\n return (\n <div className={`${colClass} flex flex-col gap-2 items-center h-[76px]`}>\n <button\n className={`size-[48px] rounded-full flex items-center justify-center shrink-0 transition-all bg-button-primary-bg ${\n isDisabled\n ? \"opacity-24 pointer-events-none\"\n : \"hover:bg-button-primary-bg-hover active:bg-button-primary-bg-pressed cursor-pointer\"\n }`}\n aria-label={label}\n aria-disabled={isDisabled}\n disabled={isDisabled}\n onClick={onClick}\n >\n <Icon className=\"size-4 text-on-prominent-static-inverse\" />\n </button>\n <span\n className={`text-xs leading-5 font-normal text-center whitespace-nowrap ${\n isDark\n ? isDisabled ? \"text-on-prominent-static-inverse/24\" : \"text-on-prominent-static-inverse\"\n : isDisabled ? \"text-prominent/[0.24]\" : \"text-prominent\"\n }`}\n >\n {label}\n </span>\n </div>\n );\n }\n\n return (\n <div className={`${colClass} flex flex-col gap-2 items-center h-[76px]`}>\n {isDark ? (\n <button\n className={`size-[48px] rounded-full flex items-center justify-center shrink-0 transition-all border border-on-prominent-static-inverse text-on-prominent-static-inverse ${\n isDisabled\n ? \"opacity-24 pointer-events-none\"\n : \"hover:bg-on-prominent-static-inverse/10 active:bg-on-prominent-static-inverse/20 cursor-pointer\"\n }`}\n aria-label={label}\n aria-disabled={isDisabled}\n disabled={isDisabled}\n onClick={onClick}\n >\n <Icon className=\"size-4\" />\n </button>\n ) : (\n <button\n className={`size-[48px] rounded-full flex items-center justify-center shrink-0 transition-all border border-button-secondary-border dark:border-[var(--primitive-slate-200)] text-button-secondary-text ${\n isDisabled\n ? \"opacity-24 pointer-events-none\"\n : \"hover:bg-button-secondary-bg-hover active:bg-button-secondary-bg-pressed cursor-pointer\"\n }`}\n aria-label={label}\n aria-disabled={isDisabled}\n disabled={isDisabled}\n onClick={onClick}\n >\n <Icon className=\"size-4\" />\n </button>\n )}\n <span\n className={`text-xs leading-5 font-normal text-center whitespace-nowrap ${\n isDark\n ? isDisabled\n ? \"text-on-prominent-static-inverse/24\"\n : \"text-on-prominent-static-inverse\"\n : isDisabled\n ? \"text-prominent/[0.24]\"\n : \"text-prominent\"\n }`}\n >\n {label}\n </span>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\nimport { Icon } from \"@/components/ui/icon\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\nconst STEPS = [\n { id: 1, title: \"Set up your profile\", cta: \"Try real trading\" },\n { id: 2, title: \"Make your first deposit\", cta: \"Deposit now\" },\n];\n\nconst TOTAL_STEPS = STEPS.length;\n\nconst HERO_BG = \"#181c25\";\nconst PROGRESS_TRACK = \"rgba(255,255,255,0.08)\";\nconst PROGRESS_ACTIVE = \"rgba(255,255,255,0.24)\";\nconst PROGRESS_DONE = \"#008832\";\n\nconst imgStepIcons: Record<number, string> = {\n 1: \"/assets/icon-setup-profile.png\",\n 2: \"/assets/icon-make-deposit.svg\",\n};\n\nfunction ExpandedContent({ label }: { label: string }) {\n return (\n <div className=\"px-6 pb-6 pt-4\">\n <div className=\"rounded-xl border border-dashed border-on-prominent-static-inverse/20 flex items-center justify-center py-8\">\n <p className=\"text-sm text-on-prominent-static-inverse/40 text-center\">\n — {label} —<br />\n <span className=\"text-xs text-on-prominent-static-inverse/24\">Content placeholder</span>\n </p>\n </div>\n </div>\n );\n}\n\nexport function HeroMobileHomeTitleSkeleton() {\n return (\n <div\n className=\"rounded-b-[24px] p-6 w-full\"\n style={{ backgroundColor: HERO_BG }}\n >\n <div className=\"flex gap-4 items-center w-full\">\n <div className=\"flex flex-col gap-6 flex-1 min-w-0\">\n <div className=\"flex flex-col gap-4\">\n <Skeleton className=\"h-[8px] w-[64px] rounded-[8px] bg-on-prominent-static-inverse/[0.04]\" />\n <Skeleton className=\"h-[16px] w-[128px] rounded-[96px] bg-on-prominent-static-inverse/[0.04]\" />\n <div className=\"flex gap-1 w-[96px]\">\n {Array.from({ length: 2 }).map((_, i) => (\n <Skeleton key={i} className=\"flex-1 h-[4px] rounded-[8px] bg-on-prominent-static-inverse/[0.04]\" />\n ))}\n </div>\n </div>\n <Skeleton className=\"h-[48px] w-[96px] rounded-[96px] bg-on-prominent-static-inverse/[0.04]\" />\n </div>\n <div className=\"shrink-0 size-[128px] flex items-center justify-center\">\n <Skeleton className=\"size-[96px] rounded-[8px] bg-on-prominent-static-inverse/[0.04]\" />\n </div>\n </div>\n </div>\n );\n}\n\nexport function HeroMobileHomeTotalAssetsSkeleton() {\n return (\n <div\n className=\"rounded-b-[24px] p-6 w-full\"\n style={{ backgroundColor: HERO_BG }}\n >\n <div className=\"flex gap-4 items-start w-full\">\n <div className=\"flex flex-col gap-2 flex-1 min-w-0\">\n <Skeleton className=\"h-[8px] w-[64px] rounded-[8px] bg-on-prominent-static-inverse/[0.04]\" />\n <Skeleton className=\"h-[16px] w-[128px] rounded-[96px] bg-on-prominent-static-inverse/[0.04]\" />\n <Skeleton className=\"h-[8px] w-[96px] rounded-[8px] bg-on-prominent-static-inverse/[0.04]\" />\n </div>\n <Skeleton className=\"h-[48px] w-[96px] rounded-[96px] bg-on-prominent-static-inverse/[0.04] shrink-0\" />\n </div>\n </div>\n );\n}\n\nexport function HeroMobileHomeTitle({ onReset: _onReset }: { onReset?: () => void }) {\n const [step, setStep] = useState(0);\n const [snap, setSnap] = useState<string | number | null>(\"148px\");\n\n const currentStep = STEPS[step]!;\n const isLastStep = step === TOTAL_STEPS - 1;\n\n function handleCta() {\n if (!isLastStep) setStep((s) => s + 1);\n }\n\n useEffect(() => { /* reset handled via key prop on parent */ }, []);\n\n return (\n <DrawerPrimitive.Root\n snapPoints={[\"148px\", \"280px\"]}\n activeSnapPoint={snap}\n setActiveSnapPoint={setSnap}\n direction=\"bottom\"\n modal={false}\n >\n <div\n className=\"rounded-b-[24px] p-6 w-full\"\n style={{ backgroundColor: HERO_BG }}\n >\n <div className=\"flex gap-4 items-center w-full\">\n <div className=\"flex flex-col gap-6 flex-1 min-w-0\">\n <div className=\"flex flex-col gap-4\">\n <p\n key={`title-${step}`}\n className=\"text-xl font-extrabold leading-[30px] text-on-prominent-static-inverse animate-in fade-in duration-300\"\n >\n {currentStep.title}\n </p>\n\n <div className=\"flex gap-1 w-[96px]\" role=\"progressbar\" aria-label={`Step ${step + 1} of ${TOTAL_STEPS}`}>\n {Array.from({ length: TOTAL_STEPS }).map((_, i) => (\n <div\n key={i}\n className=\"flex-1 h-[4px] rounded-[96px] overflow-hidden\"\n style={{ backgroundColor: PROGRESS_TRACK }}\n >\n <div\n className=\"h-full w-full transition-colors duration-500\"\n style={{\n backgroundColor:\n i < step ? PROGRESS_DONE :\n i === step ? PROGRESS_ACTIVE :\n PROGRESS_TRACK,\n }}\n />\n </div>\n ))}\n </div>\n </div>\n\n <Button\n key={`cta-${step}`}\n size=\"lg\"\n className=\"w-fit font-extrabold animate-in fade-in duration-300\"\n onClick={handleCta}\n disabled={isLastStep}\n >\n {currentStep.cta}\n </Button>\n </div>\n\n <div\n key={`img-${step}`}\n className=\"shrink-0 size-[128px] flex items-center justify-center animate-in fade-in duration-300\"\n aria-hidden=\"true\"\n >\n {imgStepIcons[step + 1] ? (\n <img\n src={imgStepIcons[step + 1]}\n alt=\"\"\n className=\"size-[96px] object-contain\"\n />\n ) : (\n <div className=\"size-[96px] rounded-[8px] bg-on-prominent-static-inverse/[0.06]\" />\n )}\n </div>\n </div>\n </div>\n\n <DrawerPrimitive.Portal>\n <DrawerPrimitive.Content\n className=\"fixed bottom-0 left-0 right-0 z-50 rounded-b-[24px] outline-none\"\n style={{ backgroundColor: HERO_BG }}\n >\n <ExpandedContent label=\"Expanded stats placeholder\" />\n </DrawerPrimitive.Content>\n </DrawerPrimitive.Portal>\n </DrawerPrimitive.Root>\n );\n}\n\nexport function HeroMobileHomeTotalAssets() {\n const [visible, setVisible] = useState(true);\n const [snap, setSnap] = useState<string | number | null>(\"120px\");\n const [refreshing, setRefreshing] = useState(false);\n const [timestamp, setTimestamp] = useState(\"Updated 1 min. ago\");\n\n function handleRefresh() {\n if (refreshing) return;\n setRefreshing(true);\n setTimeout(() => {\n setRefreshing(false);\n setTimestamp(\"Just now\");\n }, 1000);\n }\n\n return (\n <DrawerPrimitive.Root\n snapPoints={[\"120px\", \"260px\"]}\n activeSnapPoint={snap}\n setActiveSnapPoint={setSnap}\n direction=\"bottom\"\n modal={false}\n >\n <div\n className=\"rounded-b-[24px] p-6 w-full\"\n style={{ backgroundColor: HERO_BG }}\n >\n <div className=\"flex flex-col gap-0 w-full\">\n <div className=\"flex gap-4 items-start w-full\">\n <div className=\"flex flex-col flex-1 min-w-0\">\n <div className=\"flex items-center gap-0.5\">\n <span className=\"text-xs leading-5 font-normal text-on-prominent-static-inverse/72\">\n Total assets\n </span>\n <Icon name=\"chevron-right\" className=\"size-3.5 text-on-prominent-static-inverse/72\" aria-hidden=\"true\" />\n </div>\n\n <div className=\"flex items-center gap-2 mt-0.5\">\n <span className=\"text-xl font-extrabold leading-7 text-on-prominent-static-inverse whitespace-nowrap\">\n {visible ? \"24,531.80 USD\" : \"••••••\"}\n </span>\n <div className=\"flex items-center gap-1\">\n <button\n className=\"size-6 flex items-center justify-center text-on-prominent-static-inverse hover:text-on-prominent-static-inverse/70 transition-colors\"\n aria-label=\"Refresh balance\"\n onClick={handleRefresh}\n >\n <Icon name=\"rotate-right\" weight=\"fill\" className={`size-[18px] ${refreshing ? \"animate-spin\" : \"\"}`} />\n </button>\n <button\n className=\"size-6 flex items-center justify-center text-on-prominent-static-inverse hover:text-on-prominent-static-inverse/70 transition-colors\"\n aria-label={visible ? \"Hide balance\" : \"Show balance\"}\n onClick={() => setVisible((v) => !v)}\n >\n {visible ? <Icon name=\"eye\" className=\"size-4\" /> : <Icon name=\"eye-slash\" className=\"size-4\" />}\n </button>\n </div>\n </div>\n\n <p className=\"text-xs leading-5 font-normal mt-0.5 text-on-prominent-static-inverse/72\">\n {timestamp}\n </p>\n </div>\n\n <Button size=\"lg\" className=\"shrink-0 self-start font-extrabold\">\n Deposit\n </Button>\n </div>\n </div>\n </div>\n\n <DrawerPrimitive.Portal>\n <DrawerPrimitive.Content\n className=\"fixed bottom-0 left-0 right-0 z-50 rounded-b-[24px] outline-none\"\n style={{ backgroundColor: HERO_BG }}\n >\n <ExpandedContent label=\"Balance breakdown placeholder\" />\n </DrawerPrimitive.Content>\n </DrawerPrimitive.Portal>\n </DrawerPrimitive.Root>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Icon } from \"@/components/ui/icon\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\nconst HERO_BG = \"#181c25\";\nconst PROGRESS_TRACK = \"rgba(255,255,255,0.08)\";\nconst PROGRESS_ACTIVE = \"rgba(255,255,255,0.24)\";\nconst PROGRESS_DONE = \"#008832\";\n\nconst STEPS = [\n { id: 1, title: \"Set up your profile\", cta: \"Try real trading\" },\n { id: 2, title: \"Make your first deposit\", cta: \"Deposit now\" },\n];\n\nconst TOTAL_STEPS = STEPS.length;\n\nconst imgStepIcons: Record<number, string> = {\n 1: \"/assets/icon-setup-profile.png\",\n 2: \"/assets/icon-make-deposit.svg\",\n};\n\nexport function HeroDesktopHomeOnboardingSkeleton() {\n return (\n <div\n className=\"rounded-[24px] p-6 w-full flex items-center justify-between\"\n style={{ backgroundColor: HERO_BG }}\n >\n <div className=\"flex flex-col gap-6 flex-1 min-w-0\">\n <div className=\"flex flex-col gap-4\">\n <Skeleton className=\"h-[8px] w-[64px] rounded-[8px] bg-on-prominent-static-inverse/[0.04]\" />\n <Skeleton className=\"h-[16px] w-[200px] rounded-[96px] bg-on-prominent-static-inverse/[0.04]\" />\n <div className=\"flex gap-1\">\n <Skeleton className=\"h-[4px] w-[46px] rounded-[8px] bg-on-prominent-static-inverse/[0.04]\" />\n <Skeleton className=\"h-[4px] w-[46px] rounded-[8px] bg-on-prominent-static-inverse/[0.04]\" />\n </div>\n </div>\n <Skeleton className=\"h-[48px] w-[96px] rounded-[96px] bg-on-prominent-static-inverse/[0.04]\" />\n </div>\n <div className=\"shrink-0 size-[128px] p-2\">\n <Skeleton className=\"w-full h-full rounded-[16px] bg-on-prominent-static-inverse/[0.04]\" />\n </div>\n </div>\n );\n}\n\nexport function HeroDesktopHomeWithBalanceSkeleton() {\n return (\n <div\n className=\"rounded-[24px] p-6 w-full flex flex-col gap-4\"\n style={{ backgroundColor: HERO_BG }}\n >\n <div className=\"flex items-center justify-end w-full\">\n <Skeleton className=\"size-[32px] rounded-full bg-on-prominent-static-inverse/[0.04]\" />\n </div>\n <div className=\"flex items-center gap-8 w-full\">\n <div className=\"flex flex-col gap-2 flex-1 min-w-0\">\n <Skeleton className=\"h-[8px] w-[80px] rounded-[8px] bg-on-prominent-static-inverse/[0.04]\" />\n <Skeleton className=\"h-[20px] w-[160px] rounded-[96px] bg-on-prominent-static-inverse/[0.04]\" />\n </div>\n <Skeleton className=\"h-[48px] w-[96px] rounded-[96px] bg-on-prominent-static-inverse/[0.04] shrink-0\" />\n </div>\n </div>\n );\n}\n\nexport function HeroDesktopHomeOnboarding({ onReset: _onReset }: { onReset?: () => void }) {\n const [step, setStep] = useState(0);\n\n const currentStep = STEPS[step]!;\n const isLastStep = step === TOTAL_STEPS - 1;\n\n function handleCta() {\n if (!isLastStep) setStep((s) => s + 1);\n }\n\n return (\n <div\n className=\"rounded-[24px] p-6 w-full flex items-center justify-between\"\n style={{ backgroundColor: HERO_BG }}\n >\n <div className=\"flex flex-col gap-6 flex-1 min-w-0\">\n <div className=\"flex flex-col gap-4\">\n <p\n key={`title-${step}`}\n className=\"text-on-prominent-static-inverse font-extrabold w-full animate-in fade-in duration-300\"\n style={{ fontSize: \"28px\", lineHeight: \"36px\" }}\n >\n {currentStep.title}\n </p>\n\n <div className=\"flex gap-1 w-[96px]\" role=\"progressbar\" aria-label={`Step ${step + 1} of ${TOTAL_STEPS}`}>\n {Array.from({ length: TOTAL_STEPS }).map((_, i) => (\n <div\n key={i}\n className=\"flex-1 h-[4px] rounded-[96px] overflow-hidden\"\n style={{ backgroundColor: PROGRESS_TRACK }}\n >\n <div\n className=\"h-full w-full transition-colors duration-500\"\n style={{\n backgroundColor:\n i < step ? PROGRESS_DONE :\n i === step ? PROGRESS_ACTIVE :\n PROGRESS_TRACK,\n }}\n />\n </div>\n ))}\n </div>\n </div>\n\n <Button\n key={`cta-${step}`}\n size=\"lg\"\n className=\"w-fit font-extrabold gap-2 animate-in fade-in duration-300\"\n onClick={handleCta}\n disabled={isLastStep}\n >\n {currentStep.cta}\n <Icon name=\"arrow-right\" className=\"size-4\" />\n </Button>\n </div>\n\n <div\n key={`img-${step}`}\n className=\"shrink-0 size-[128px] flex items-center justify-center animate-in fade-in duration-300\"\n aria-hidden=\"true\"\n >\n {imgStepIcons[step + 1] ? (\n <img\n src={imgStepIcons[step + 1]}\n alt=\"\"\n className=\"size-[96px] object-contain\"\n />\n ) : (\n <div className=\"size-[96px] rounded-[16px] bg-on-prominent-static-inverse/[0.06]\" />\n )}\n </div>\n </div>\n );\n}\n\nexport function HeroDesktopHomeWithBalance() {\n const [visible, setVisible] = useState(true);\n const [refreshing, setRefreshing] = useState(false);\n\n function handleRefresh() {\n if (refreshing) return;\n setRefreshing(true);\n setTimeout(() => setRefreshing(false), 1000);\n }\n\n return (\n <div\n className=\"rounded-[24px] p-6 w-full flex flex-col gap-4\"\n style={{ backgroundColor: HERO_BG }}\n >\n <div className=\"flex items-center justify-end w-full\">\n <button\n className=\"size-8 rounded-full flex items-center justify-center text-on-prominent-static-inverse hover:text-on-prominent-static-inverse/70 transition-colors\"\n style={{ backgroundColor: \"rgba(255,255,255,0.04)\" }}\n aria-label={visible ? \"Hide balance\" : \"Show balance\"}\n onClick={() => setVisible((v) => !v)}\n >\n {visible ? <Icon name=\"eye\" className=\"size-4\" /> : <Icon name=\"eye-slash\" className=\"size-4\" />}\n </button>\n </div>\n\n <div className=\"flex items-center gap-8 w-full\">\n <div className=\"flex flex-col flex-1 min-w-0\">\n <div className=\"flex items-center gap-0.5\">\n <span className=\"text-xs leading-5 font-normal whitespace-nowrap text-on-prominent-static-inverse/72\">\n Total assets\n </span>\n <Icon name=\"chevron-right\" className=\"size-3.5 text-on-prominent-static-inverse/72\" aria-hidden=\"true\" />\n </div>\n\n <div className=\"flex items-center gap-2\">\n <span\n className=\"text-on-prominent-static-inverse font-extrabold whitespace-nowrap\"\n style={{ fontSize: \"28px\", lineHeight: \"36px\" }}\n >\n {visible ? \"24,531.80 USD\" : \"••••••\"}\n </span>\n <button\n className=\"size-6 flex items-center justify-center text-on-prominent-static-inverse hover:text-on-prominent-static-inverse/70 transition-colors\"\n aria-label=\"Refresh balance\"\n onClick={handleRefresh}\n >\n <Icon name=\"rotate-right\" weight=\"fill\" className={`size-[18px] ${refreshing ? \"animate-spin\" : \"\"}`} />\n </button>\n </div>\n </div>\n\n <Button size=\"lg\" className=\"shrink-0 self-start font-extrabold\">\n Deposit\n </Button>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Icon } from \"@/components/ui/icon\";\n\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { HeroActionButton, type ActionButtonState } from \"@/components/blocks/hero-action-button\";\n\nconst HERO_BG = \"#181c25\";\nconst CORAL = \"#ff444f\";\n\nconst TABS = [\n { id: \"real\", label: \"Real\" },\n { id: \"demo\", label: \"Demo\" },\n];\n\nconst ACTIONS: { id: string; label: string; icon: React.ElementType; primary: boolean; state: ActionButtonState }[] = [\n { id: \"trade\", label: \"Trade\", icon: ({ className }: { className?: string }) => <Icon name=\"chart-candlestick\" className={className} />, primary: true, state: \"default\" },\n { id: \"transfer\", label: \"Transfer\", icon: ({ className }: { className?: string }) => <Icon name=\"arrow-right-arrow-left\" className={className} />, primary: false, state: \"default\" },\n { id: \"deposit\", label: \"Deposit\", icon: ({ className }: { className?: string }) => <Icon name=\"plus\" weight=\"fill\" className={className} />, primary: false, state: \"default\" },\n { id: \"withdraw\", label: \"Withdraw\", icon: ({ className }: { className?: string }) => <Icon name=\"minus\" weight=\"fill\" className={className} />, primary: false, state: \"default\" },\n];\n\ntype TabData = {\n label: string;\n balance: string;\n actions: typeof ACTIONS;\n};\n\nconst TAB_DATA: Record<string, TabData> = {\n real: {\n label: \"Total trading value\",\n balance: \"8,342.15 USD\",\n actions: ACTIONS,\n },\n demo: {\n label: \"Demo trading value\",\n balance: \"10,000.00 USD\",\n actions: ACTIONS.filter((a) => a.id === \"trade\"),\n },\n};\n\nexport function HeroMobileMainSkeleton() {\n return (\n <div\n className=\"rounded-b-[24px] px-6 pb-6 w-full\"\n style={{ backgroundColor: HERO_BG }}\n >\n <div className=\"flex flex-col gap-4 w-full\">\n <div className=\"flex gap-4 items-center w-full\">\n {Array.from({ length: 4 }).map((_, i) => (\n <Skeleton key={i} className=\"h-[16px] w-[48px] rounded-[96px] bg-on-prominent-static-inverse/[0.04]\" />\n ))}\n </div>\n <div className=\"flex flex-col gap-1\">\n <Skeleton className=\"h-[8px] w-[64px] rounded-[8px] bg-on-prominent-static-inverse/[0.04]\" />\n <Skeleton className=\"h-[16px] w-[128px] rounded-[96px] bg-on-prominent-static-inverse/[0.04]\" />\n </div>\n <div className=\"flex items-center w-full\">\n {Array.from({ length: 4 }).map((_, i) => (\n <div key={i} className=\"flex flex-1 flex-col gap-2 items-center\">\n <Skeleton className=\"size-[48px] rounded-full bg-on-prominent-static-inverse/[0.04]\" />\n <Skeleton className=\"h-[8px] w-[56px] rounded-[8px] bg-on-prominent-static-inverse/[0.04]\" />\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nexport function HeroMobileMain() {\n const [activeTab, setActiveTab] = useState(\"real\");\n const [refreshing, setRefreshing] = useState(false);\n const tab = TAB_DATA[activeTab]!;\n\n function handleRefresh() {\n if (refreshing) return;\n setRefreshing(true);\n setTimeout(() => setRefreshing(false), 1000);\n }\n\n return (\n <div\n className=\"rounded-b-[24px] px-6 pb-6 w-full\"\n style={{ backgroundColor: HERO_BG }}\n >\n <div className=\"flex flex-col gap-4 w-full\">\n <div className=\"flex gap-4 items-start w-full\" role=\"tablist\" aria-label=\"Account type\">\n {TABS.map((t) => {\n const isSelected = t.id === activeTab;\n return (\n <button\n key={t.id}\n role=\"tab\"\n aria-selected={isSelected}\n onClick={() => setActiveTab(t.id)}\n className=\"flex flex-col gap-1 items-center min-w-[24px] shrink-0\"\n >\n <span\n className=\"text-base leading-6 whitespace-nowrap\"\n style={{\n fontWeight: isSelected ? 700 : 400,\n color: isSelected ? \"var(--on-prominent-static-inverse)\" : \"rgba(255,255,255,0.72)\",\n }}\n >\n {t.label}\n </span>\n <div className=\"flex flex-col items-center w-full\">\n {isSelected && (\n <div className=\"h-[4px] w-[24px] rounded-[2px]\" style={{ backgroundColor: CORAL }} />\n )}\n </div>\n </button>\n );\n })}\n </div>\n\n <div className=\"flex flex-col items-start\">\n <span className=\"text-xs leading-5 font-normal text-on-prominent-static-inverse/72\">\n {tab.label}\n </span>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-on-prominent-static-inverse font-extrabold whitespace-nowrap\" style={{ fontSize: \"20px\", lineHeight: \"28px\" }}>\n {tab.balance}\n </span>\n <button\n className=\"size-6 flex items-center justify-center text-on-prominent-static-inverse hover:text-on-prominent-static-inverse/70 transition-colors\"\n aria-label=\"Refresh balance\"\n onClick={handleRefresh}\n >\n <Icon name=\"rotate-right\" weight=\"fill\" className={`size-[18px] ${refreshing ? \"animate-spin\" : \"\"}`} />\n </button>\n </div>\n </div>\n\n <div className=\"flex items-center w-full\" role=\"group\" aria-label=\"Account actions\">\n {tab.actions.map(({ id, label, icon, primary, state }) => (\n <HeroActionButton\n key={id}\n label={label}\n icon={icon}\n primary={primary}\n state={state}\n surface=\"dark\"\n colClass=\"flex-1\"\n />\n ))}\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Icon } from \"@/components/ui/icon\";\n\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { HeroActionButton, type ActionButtonState } from \"@/components/blocks/hero-action-button\";\n\nconst HERO_BG = \"#181c25\";\nconst CORAL = \"#ff444f\";\n\nconst TABS = [\n { id: \"real\", label: \"Real\" },\n { id: \"demo\", label: \"Demo\" },\n];\n\nconst ACTIONS: { id: string; label: string; icon: React.ElementType; primary: boolean; state: ActionButtonState }[] = [\n { id: \"trade\", label: \"Trade\", icon: ({ className }: { className?: string }) => <Icon name=\"chart-candlestick\" className={className} />, primary: true, state: \"default\" },\n { id: \"transfer\", label: \"Transfer\", icon: ({ className }: { className?: string }) => <Icon name=\"arrow-right-arrow-left\" className={className} />, primary: false, state: \"default\" },\n { id: \"deposit\", label: \"Deposit\", icon: ({ className }: { className?: string }) => <Icon name=\"plus\" weight=\"fill\" className={className} />, primary: false, state: \"default\" },\n { id: \"withdraw\", label: \"Withdraw\", icon: ({ className }: { className?: string }) => <Icon name=\"minus\" weight=\"fill\" className={className} />, primary: false, state: \"default\" },\n];\n\ntype TabData = {\n label: string;\n balance: string;\n actions: typeof ACTIONS;\n};\n\nconst TAB_DATA: Record<string, TabData> = {\n real: {\n label: \"Total trading value\",\n balance: \"8,342.15 USD\",\n actions: ACTIONS,\n },\n demo: {\n label: \"Demo trading value\",\n balance: \"10,000.00 USD\",\n actions: ACTIONS.filter((a) => a.id === \"trade\"),\n },\n};\n\nexport function HeroDesktopMainSkeleton() {\n return (\n <div\n className=\"rounded-[24px] p-6 w-full flex flex-col gap-0\"\n style={{ backgroundColor: HERO_BG }}\n >\n <div className=\"flex items-center justify-end w-full mb-0\">\n <Skeleton className=\"size-[32px] rounded-full bg-on-prominent-static-inverse/[0.04]\" />\n </div>\n\n <div className=\"flex gap-4 items-center w-full\">\n {Array.from({ length: 4 }).map((_, i) => (\n <Skeleton key={i} className=\"h-[16px] w-[48px] rounded-[96px] bg-on-prominent-static-inverse/[0.04]\" />\n ))}\n </div>\n\n <div className=\"flex items-center gap-4 w-full pt-4\">\n <div className=\"flex flex-col gap-1 flex-1 min-w-0\">\n <Skeleton className=\"h-[8px] w-[64px] rounded-[8px] bg-on-prominent-static-inverse/[0.04]\" />\n <Skeleton className=\"h-[16px] w-[128px] rounded-[96px] bg-on-prominent-static-inverse/[0.04]\" />\n </div>\n\n <div className=\"flex items-center shrink-0\">\n {Array.from({ length: 4 }).map((_, i) => (\n <div key={i} className=\"flex flex-col gap-2 items-center w-[96px]\">\n <Skeleton className=\"size-[48px] rounded-full bg-on-prominent-static-inverse/[0.04]\" />\n <Skeleton className=\"h-[8px] w-[56px] rounded-[8px] bg-on-prominent-static-inverse/[0.04]\" />\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nexport function HeroDesktopMain() {\n const [activeTab, setActiveTab] = useState(\"real\");\n const [visible, setVisible] = useState(true);\n const [refreshing, setRefreshing] = useState(false);\n const tab = TAB_DATA[activeTab]!;\n\n function handleRefresh() {\n if (refreshing) return;\n setRefreshing(true);\n setTimeout(() => setRefreshing(false), 1000);\n }\n\n return (\n <div\n className=\"rounded-[24px] p-6 w-full flex flex-col gap-0\"\n style={{ backgroundColor: HERO_BG }}\n >\n <div className=\"flex items-center justify-end w-full\">\n <button\n className=\"size-8 rounded-full flex items-center justify-center text-on-prominent-static-inverse hover:text-on-prominent-static-inverse/70 transition-colors\"\n style={{ backgroundColor: \"rgba(255,255,255,0.04)\" }}\n aria-label={visible ? \"Hide balance\" : \"Show balance\"}\n onClick={() => setVisible((v) => !v)}\n >\n {visible ? <Icon name=\"eye\" className=\"size-4\" /> : <Icon name=\"eye-slash\" className=\"size-4\" />}\n </button>\n </div>\n\n <div className=\"flex gap-4 items-start w-full\" role=\"tablist\" aria-label=\"Account type\">\n {TABS.map((t) => {\n const isSelected = t.id === activeTab;\n return (\n <button\n key={t.id}\n role=\"tab\"\n aria-selected={isSelected}\n onClick={() => setActiveTab(t.id)}\n className=\"flex flex-col gap-1 items-center min-w-[24px] shrink-0\"\n >\n <span\n className=\"text-base leading-6 whitespace-nowrap\"\n style={{\n fontWeight: isSelected ? 700 : 400,\n color: isSelected ? \"var(--on-prominent-static-inverse)\" : \"rgba(255,255,255,0.72)\",\n }}\n >\n {t.label}\n </span>\n <div className=\"flex flex-col items-center w-full\">\n {isSelected && (\n <div className=\"h-[4px] w-[24px] rounded-[2px]\" style={{ backgroundColor: CORAL }} />\n )}\n </div>\n </button>\n );\n })}\n </div>\n\n <div className=\"flex items-center gap-4 w-full pt-4\">\n <div className=\"flex flex-col flex-1 min-w-0\">\n <span className=\"text-xs leading-5 font-normal text-on-prominent-static-inverse/72\">\n {tab.label}\n </span>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-on-prominent-static-inverse font-extrabold whitespace-nowrap\" style={{ fontSize: \"28px\", lineHeight: \"36px\" }}>\n {visible ? tab.balance : \"••••••\"}\n </span>\n <button\n className=\"size-6 flex items-center justify-center text-on-prominent-static-inverse hover:text-on-prominent-static-inverse/70 transition-colors\"\n aria-label=\"Refresh balance\"\n onClick={handleRefresh}\n >\n <Icon name=\"rotate-right\" weight=\"fill\" className={`size-[18px] ${refreshing ? \"animate-spin\" : \"\"}`} />\n </button>\n </div>\n </div>\n\n <div className=\"flex items-center shrink-0\" role=\"group\" aria-label=\"Account actions\">\n {tab.actions.map(({ id, label, icon, primary, state }) => (\n <HeroActionButton\n key={id}\n label={label}\n icon={icon}\n primary={primary}\n state={state}\n surface=\"dark\"\n colClass=\"w-[96px]\"\n />\n ))}\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { Icon } from \"@/components/ui/icon\";\n\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { HeroActionButton, type ActionButtonState } from \"@/components/blocks/hero-action-button\";\n\nconst imgAccountGold = \"/assets/account-gold.svg\";\n\nconst ACTIONS: { id: string; label: string; icon: React.ElementType; primary: boolean; state: ActionButtonState }[] = [\n { id: \"trade\", label: \"Trade\", icon: ({ className }: { className?: string }) => <Icon name=\"chart-candlestick\" className={className} />, primary: true, state: \"default\" },\n { id: \"transfer\", label: \"Transfer\", icon: ({ className }: { className?: string }) => <Icon name=\"arrow-right-arrow-left\" className={className} />, primary: false, state: \"default\" },\n { id: \"details\", label: \"Details\", icon: ({ className }: { className?: string }) => <Icon name=\"ellipsis\" className={className} />, primary: false, state: \"default\" },\n];\n\nexport function HeroMobileSecondarySkeleton() {\n return (\n <div className=\"bg-primary-canvas w-full flex flex-col gap-4 items-center p-6\">\n <Skeleton className=\"size-[96px] rounded-full shrink-0 bg-prominent/[0.08]\" />\n <div className=\"flex flex-col items-center gap-2 w-full\">\n <Skeleton className=\"h-[16px] w-[128px] rounded-[96px] bg-prominent/[0.08]\" />\n <Skeleton className=\"h-[8px] w-[64px] rounded-[8px] bg-prominent/[0.08]\" />\n </div>\n <div className=\"flex items-center w-full\">\n {Array.from({ length: 3 }).map((_, i) => (\n <div key={i} className=\"flex flex-1 flex-col gap-2 items-center\">\n <Skeleton className=\"size-[48px] rounded-full bg-prominent/[0.08]\" />\n <Skeleton className=\"h-[8px] w-[56px] rounded-[8px] bg-prominent/[0.08]\" />\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nexport function HeroMobileSecondary() {\n return (\n <div className=\"bg-primary-canvas w-full flex flex-col gap-4 items-center p-6\">\n <div className=\"size-[96px] shrink-0 overflow-hidden rounded-[12px]\" aria-hidden=\"true\">\n <img src={imgAccountGold} alt=\"\" className=\"size-full object-cover\" />\n </div>\n\n <div className=\"flex flex-col items-center gap-1 w-full\">\n <span\n className=\"font-extrabold text-center text-prominent whitespace-nowrap\"\n style={{ fontSize: \"24px\", lineHeight: \"32px\" }}\n >\n 8,342.15 USD\n </span>\n\n <span className=\"text-base leading-6 font-normal text-center text-prominent/[0.72] whitespace-nowrap\">\n Gold\n </span>\n </div>\n\n <div className=\"flex items-center w-full\" role=\"group\" aria-label=\"Account actions\">\n {ACTIONS.map(({ id, label, icon, primary, state }) => (\n <HeroActionButton\n key={id}\n label={label}\n icon={icon}\n primary={primary}\n state={state}\n surface=\"light\"\n colClass=\"flex-1\"\n />\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Icon } from \"@/components/ui/icon\";\n\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { HeroActionButton, type ActionButtonState } from \"@/components/blocks/hero-action-button\";\n\nconst imgAccountGold = \"/assets/account-gold.svg\";\n\nconst ACTIONS: { id: string; label: string; icon: React.ElementType; primary: boolean; state: ActionButtonState }[] = [\n { id: \"trade\", label: \"Trade\", icon: ({ className }: { className?: string }) => <Icon name=\"chart-candlestick\" className={className} />, primary: true, state: \"default\" },\n { id: \"transfer\", label: \"Transfer\", icon: ({ className }: { className?: string }) => <Icon name=\"arrow-right-arrow-left\" className={className} />, primary: false, state: \"default\" },\n { id: \"details\", label: \"Details\", icon: ({ className }: { className?: string }) => <Icon name=\"ellipsis\" className={className} />, primary: false, state: \"default\" },\n];\n\nexport function HeroDesktopSecondarySkeleton() {\n return (\n <div className=\"bg-primary-canvas rounded-[24px] p-6 w-full flex flex-col gap-4\">\n <div className=\"flex items-center justify-between w-full h-[40px]\">\n <Skeleton className=\"size-[32px] rounded-full bg-prominent/[0.08]\" />\n <Skeleton className=\"size-[32px] rounded-full bg-prominent/[0.08]\" />\n </div>\n\n <div className=\"flex items-center gap-4 w-full\">\n <div className=\"flex items-center gap-6 flex-1 min-w-0\">\n <Skeleton className=\"size-[64px] rounded-full shrink-0 bg-prominent/[0.08]\" />\n <div className=\"flex flex-col gap-2 flex-1 min-w-0\">\n <Skeleton className=\"h-[16px] w-[128px] rounded-[96px] bg-prominent/[0.08]\" />\n <Skeleton className=\"h-[8px] w-[64px] rounded-[8px] bg-prominent/[0.08]\" />\n </div>\n </div>\n\n <div className=\"flex items-center shrink-0\">\n {Array.from({ length: 3 }).map((_, i) => (\n <div key={i} className=\"flex flex-col gap-2 items-center w-[96px]\">\n <Skeleton className=\"size-[48px] rounded-full bg-prominent/[0.08]\" />\n <Skeleton className=\"h-[8px] w-[56px] rounded-[8px] bg-prominent/[0.08]\" />\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nexport function HeroDesktopSecondary() {\n const [visible, setVisible] = useState(true);\n\n return (\n <div className=\"bg-primary-canvas rounded-[24px] p-6 w-full flex flex-col gap-4\">\n <div className=\"flex items-center justify-between w-full h-[40px]\">\n <button\n className=\"size-[32px] rounded-full flex items-center justify-center bg-prominent/[0.04] text-prominent hover:bg-prominent/[0.08] transition-colors\"\n aria-label=\"Go back\"\n >\n <Icon name=\"arrow-left\" className=\"size-4\" />\n </button>\n\n <button\n className=\"size-[32px] rounded-full flex items-center justify-center bg-prominent/[0.04] text-prominent hover:bg-prominent/[0.08] transition-colors\"\n aria-label={visible ? \"Hide balance\" : \"Show balance\"}\n onClick={() => setVisible((v) => !v)}\n >\n {visible ? <Icon name=\"eye\" className=\"size-4\" /> : <Icon name=\"eye-slash\" className=\"size-4\" />}\n </button>\n </div>\n\n <div className=\"flex items-center gap-4 w-full\">\n <div className=\"flex items-center gap-6 flex-1 min-w-0\">\n <div className=\"size-[64px] shrink-0 overflow-hidden rounded-[8px]\" aria-hidden=\"true\">\n <img src={imgAccountGold} alt=\"\" className=\"size-full object-cover\" />\n </div>\n\n <div className=\"flex flex-col flex-1 min-w-0\">\n <span\n className=\"font-extrabold text-prominent whitespace-nowrap\"\n style={{ fontSize: \"28px\", lineHeight: \"36px\" }}\n >\n {visible ? \"8,342.15 USD\" : \"••••••\"}\n </span>\n <span className=\"text-base leading-6 font-normal text-prominent/[0.72] whitespace-nowrap\">\n Gold\n </span>\n </div>\n </div>\n\n <div className=\"flex items-center shrink-0\" role=\"group\" aria-label=\"Account actions\">\n {ACTIONS.map(({ id, label, icon, primary, state }) => (\n <HeroActionButton\n key={id}\n label={label}\n icon={icon}\n primary={primary}\n state={state}\n surface=\"light\"\n colClass=\"w-[96px]\"\n />\n ))}\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { Icon } from \"@/components/ui/icon\";\n\ntype TransactionType = \"deposit\" | \"withdraw\" | \"transfer\" | \"convert\";\n\ninterface TypeConfig {\n label: string;\n iconBg: string;\n icon: React.ReactNode;\n amountClass: string;\n subLabel: (from?: string, to?: string) => React.ReactNode;\n}\n\nconst TYPE_CONFIG: Record<TransactionType, TypeConfig> = {\n deposit: {\n label: \"Deposit\",\n iconBg: \"rgba(0,136,50,0.16)\",\n icon: <Icon name=\"plus\" weight=\"fill\" className=\"size-8\" style={{ color: \"var(--text-success-default)\" }} />,\n amountClass: \"text-[var(--text-success-default)]\",\n subLabel: () => <span>Deposit</span>,\n },\n withdraw: {\n label: \"Withdraw\",\n iconBg: \"rgba(230,25,14,0.16)\",\n icon: <Icon name=\"minus\" weight=\"fill\" className=\"size-8\" style={{ color: \"var(--text-error-default)\" }} />,\n amountClass: \"text-[var(--text-error-default)]\",\n subLabel: () => <span>Withdraw</span>,\n },\n transfer: {\n label: \"Transfer\",\n iconBg: \"rgba(0,0,0,0.16)\",\n icon: <Icon name=\"arrow-right-arrow-left\" className=\"size-8 text-prominent\" />,\n amountClass: \"text-prominent\",\n subLabel: (from = \"[From]\", to = \"[To]\") => (\n <span className=\"flex items-center gap-1 justify-center\">\n <span>{from}</span>\n <span>→</span>\n <span>{to}</span>\n </span>\n ),\n },\n convert: {\n label: \"Convert\",\n iconBg: \"rgba(0,0,0,0.16)\",\n icon: <Icon name=\"arrows-left-right\" className=\"size-8 text-prominent\" />,\n amountClass: \"text-prominent\",\n subLabel: (from = \"[From]\", to = \"[To]\") => (\n <span className=\"flex items-center gap-1 justify-center\">\n <span>{from}</span>\n <span>→</span>\n <span>{to}</span>\n </span>\n ),\n },\n};\n\nconst DUMMY: Record<TransactionType, { balance: string; from?: string; to?: string }> = {\n deposit: { balance: \"1,250.00 USD\" },\n withdraw: { balance: \"500.00 USD\" },\n transfer: { balance: \"750.00 USD\", from: \"Real account\", to: \"Demo account\" },\n convert: { balance: \"320.00 USD\", from: \"USD\", to: \"EUR\" },\n};\n\nexport { type TransactionType };\n\nexport function HeroMobileTransaction({ type }: { type: TransactionType }) {\n const config = TYPE_CONFIG[type];\n const data = DUMMY[type];\n\n return (\n <div className=\"bg-primary-canvas w-full flex flex-col gap-4 items-center p-6\">\n <div\n className=\"flex items-center justify-center p-2 rounded-[32px] shrink-0\"\n style={{ backgroundColor: config.iconBg }}\n aria-hidden=\"true\"\n >\n <div className=\"size-[48px] flex items-center justify-center\">\n {config.icon}\n </div>\n </div>\n\n <div className=\"flex flex-col items-center w-full gap-0.5\">\n <span\n className={`font-extrabold text-center w-full ${config.amountClass}`}\n style={{ fontSize: \"24px\", lineHeight: \"32px\" }}\n >\n {data.balance}\n </span>\n\n <span className=\"text-sm leading-5 font-normal text-center w-full text-prominent/[0.48]\">\n {config.subLabel(data.from, data.to)}\n </span>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { Icon } from \"@/components/ui/icon\";\n\nimport { Badge } from \"@/components/ui/badge\";\n\nconst NAV_ITEMS = [\n { id: \"home\", label: \"Home\" },\n { id: \"cfds\", label: \"CFDs\" },\n { id: \"options\", label: \"Options\" },\n { id: \"portfolio\", label: \"Portfolio\" },\n] as const;\n\nexport type NavMobileBottomBarItemId = (typeof NAV_ITEMS)[number][\"id\"];\n\nfunction NavItem({\n label,\n active,\n badge,\n onClick,\n children,\n}: {\n label: string;\n active: boolean;\n badge?: number;\n onClick: () => void;\n children: React.ReactNode;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n aria-current={active ? \"page\" : undefined}\n className={[\n \"flex flex-1 flex-col items-center justify-center gap-0.5 h-12 min-w-0 rounded-lg\",\n \"transition-colors duration-fast cursor-pointer bg-transparent border-none\",\n active ? \"text-[var(--text-utility-brand)]\" : \"text-prominent\",\n ].join(\" \")}\n >\n <div className=\"relative size-6 flex items-center justify-center shrink-0\">\n {children}\n {badge !== undefined && badge > 0 && (\n <Badge\n count={badge}\n className=\"absolute -top-2 left-[calc(100%-6px)] pointer-events-none\"\n aria-label={`${badge} notification${badge === 1 ? \"\" : \"s\"}`}\n />\n )}\n </div>\n <span className=\"body-xs font-normal\">{label}</span>\n </button>\n );\n}\n\nexport function NavMobileBottomBar({\n activeId = \"home\",\n badges = {},\n onTabChange,\n}: {\n activeId?: NavMobileBottomBarItemId;\n badges?: Partial<Record<NavMobileBottomBarItemId, number>>;\n onTabChange?: (id: NavMobileBottomBarItemId) => void;\n}) {\n return (\n <nav\n aria-label=\"Primary\"\n className=\"bg-[var(--background-secondary-canvas)] border-t border-[var(--border-subtle-default)] w-full\"\n >\n <div className=\"flex items-center gap-2 px-4 min-h-14\">\n {NAV_ITEMS.map(({ id, label }) => {\n const active = id === activeId;\n return (\n <NavItem\n key={id}\n label={label}\n active={active}\n badge={badges[id]}\n onClick={() => onTabChange?.(id)}\n >\n {id === \"home\" && <Icon name=\"house-blank\" weight={active ? \"fill\" : \"regular\"} className=\"size-6\" />}\n {id === \"cfds\" && <Icon name=\"chart-candlestick\" weight={active ? \"bold\" : \"regular\"} className=\"size-6\" />}\n {id === \"options\" && <Icon name=\"options\" weight={active ? \"fill\" : \"regular\"} className=\"size-6\" />}\n {id === \"portfolio\" && <Icon name=\"wallet\" weight={active ? \"fill\" : \"regular\"} className=\"size-6\" />}\n </NavItem>\n );\n })}\n </div>\n </nav>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Icon } from \"@/components/ui/icon\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Badge } from \"@/components/ui/badge\";\n\n// Sparkles path data (FA Pro Solid 512×512) used for the CSS mask on the icon\nconst SPARKLES_MASK = `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M327.5 85.2c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L384 128l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L448 128l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L448 64 426.8 7.5C425.1 3 420.8 0 416 0s-9.1 3-10.8 7.5L384 64 327.5 85.2zM205.1 73.3c-2.6-5.7-8.3-9.3-14.5-9.3s-11.9 3.6-14.5 9.3L123.3 187.3 9.3 240C3.6 242.6 0 248.3 0 254.6s3.6 11.9 9.3 14.5l114.1 52.7L176 435.8c2.6 5.7 8.3 9.3 14.5 9.3s11.9-3.6 14.5-9.3l52.7-114.1 114.1-52.7c5.7-2.6 9.3-8.3 9.3-14.5s-3.6-11.9-9.3-14.5L257.8 187.4 205.1 73.3zM384 384l-56.5 21.2c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L384 448l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L448 448l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L448 384l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L384 384z'/%3E%3C/svg%3E\")`\n\nconst NAV_ITEMS = [\n { id: \"home\", label: \"Home\" },\n { id: \"cfds\", label: \"CFDs\" },\n { id: \"options\", label: \"Options\" },\n { id: \"portfolio\", label: \"Portfolio\" },\n] as const;\n\nexport type NavDesktopSidebarItemId = (typeof NAV_ITEMS)[number][\"id\"];\n\nfunction NavIcon({ id, selected }: { id: string; selected: boolean }) {\n if (id === \"home\") return <Icon name=\"house-blank\" weight={selected ? \"fill\" : \"regular\"} className=\"size-5\" />;\n if (id === \"cfds\") return <Icon name=\"chart-candlestick\" weight={selected ? \"bold\" : \"regular\"} className=\"size-5\" />;\n if (id === \"options\") return <Icon name=\"options\" weight={selected ? \"fill\" : \"regular\"} className=\"size-5\" />;\n if (id === \"portfolio\") return <Icon name=\"wallet\" weight={selected ? \"fill\" : \"regular\"} className=\"size-5\" />;\n return null;\n}\n\nfunction AskAmyPill() {\n return (\n <button\n type=\"button\"\n aria-label=\"Ask Amy\"\n className=\"amy-button-bg flex items-center justify-center w-full h-10 rounded-[56px] border-none cursor-pointer gap-1.5 px-4\"\n >\n <span\n aria-hidden=\"true\"\n className=\"amy-gradient shrink-0\"\n style={{\n display: \"inline-block\",\n width: \"14px\",\n height: \"14px\",\n WebkitMaskImage: SPARKLES_MASK,\n maskImage: SPARKLES_MASK,\n WebkitMaskSize: \"contain\",\n maskSize: \"contain\",\n WebkitMaskRepeat: \"no-repeat\",\n maskRepeat: \"no-repeat\",\n WebkitMaskPosition: \"center\",\n maskPosition: \"center\",\n }}\n />\n <span\n className=\"amy-gradient text-sm font-extrabold whitespace-nowrap\"\n style={{\n WebkitBackgroundClip: \"text\",\n backgroundClip: \"text\",\n WebkitTextFillColor: \"transparent\",\n display: \"inline-block\",\n }}\n >\n Ask Amy\n </span>\n </button>\n );\n}\n\nexport function NavDesktopSidebar({\n activeId = \"home\",\n badges = {},\n onNavChange,\n}: {\n activeId?: NavDesktopSidebarItemId;\n badges?: Partial<Record<NavDesktopSidebarItemId, number>>;\n onNavChange?: (id: NavDesktopSidebarItemId) => void;\n}) {\n const [bannerVisible, setBannerVisible] = useState(true);\n\n return (\n <aside\n aria-label=\"Main navigation\"\n className=\"w-[296px] shrink-0 flex flex-col bg-primary-surface border-r border-border-subtle\"\n >\n <div className=\"flex items-center justify-between p-6 shrink-0\">\n <div className=\"h-6 overflow-hidden shrink-0\" style={{ width: \"72px\" }}>\n <img\n src=\"/assets/deriv-wordmark.svg\"\n alt=\"Deriv\"\n className=\"h-full w-full object-contain object-left\"\n />\n </div>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"bg-[var(--background-default-opacity-default)] rounded-full\"\n aria-label=\"Notifications\"\n >\n <Icon name=\"bell\" className=\"size-4\" />\n </Button>\n </div>\n\n <div className=\"flex flex-col gap-4 shrink-0\">\n <div className=\"flex flex-col px-4\">\n {NAV_ITEMS.map(({ id, label }) => {\n const active = id === activeId;\n return (\n <button\n key={id}\n type=\"button\"\n aria-current={active ? \"page\" : undefined}\n onClick={() => onNavChange?.(id)}\n className={[\n \"flex items-center gap-2 h-10 min-h-[40px] max-h-[40px] px-2 rounded-lg\",\n \"w-full text-left bg-transparent border-none cursor-pointer\",\n \"transition-colors duration-fast hover:bg-[var(--background-hover-default)]\",\n active\n ? \"text-[var(--text-utility-brand)]\"\n : \"text-prominent\",\n ].join(\" \")}\n >\n <span className=\"size-6 flex items-center justify-center shrink-0\">\n <NavIcon id={id} selected={active} />\n </span>\n <span className=\"text-sm font-normal leading-5 flex-1 min-w-0 truncate\">\n {label}\n </span>\n {badges[id] !== undefined && badges[id]! > 0 && (\n <Badge\n count={badges[id]}\n className=\"shrink-0 pointer-events-none\"\n aria-label={`${badges[id]} notification${badges[id] === 1 ? \"\" : \"s\"}`}\n />\n )}\n </button>\n );\n })}\n </div>\n </div>\n\n <div className=\"p-4 shrink-0\">\n <AskAmyPill />\n </div>\n\n <div className=\"flex flex-col flex-1 justify-end p-4\">\n {bannerVisible && (\n <div className=\"relative flex flex-col items-center gap-4 p-6 rounded-3xl w-full bg-secondary-surface\">\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Dismiss\"\n className=\"absolute top-2 right-2\"\n onClick={() => setBannerVisible(false)}\n >\n <Icon name=\"xmark\" className=\"size-3.5\" />\n </Button>\n <div className=\"w-full\">\n <p className=\"text-base font-bold leading-6 text-prominent\">\n Deriv is on mobile\n </p>\n <p className=\"text-sm font-normal leading-5 text-subtle\">\n Scan to download\n </p>\n </div>\n <div className=\"size-24 overflow-hidden shrink-0\">\n <img\n src=\"/assets/nav-qr-code.svg\"\n alt=\"QR code — download Deriv app\"\n className=\"size-full object-cover\"\n />\n </div>\n <p className=\"text-xs font-normal leading-5 text-subtle w-full\">\n Available on the App Store, Google Play, and Huawei AppGallery.\n </p>\n </div>\n )}\n </div>\n\n <div className=\"flex items-center gap-6 h-[92px] px-6 shrink-0\">\n <div className=\"flex items-center justify-center size-8 rounded-3xl shrink-0 bg-secondary-surface\">\n <span className=\"text-xs font-bold leading-5 text-prominent\">\n WM\n </span>\n </div>\n <div className=\"flex flex-col flex-1 min-w-0\">\n <span className=\"text-base font-bold leading-6 text-prominent truncate\">\n Waqas Malhotra\n </span>\n <span className=\"text-xs font-normal leading-5 text-subtle truncate\">\n @waqasmalhotra\n </span>\n </div>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"View profile\"\n className=\"shrink-0\"\n >\n <Icon name=\"chevron-right\" className=\"size-5\" />\n </Button>\n </div>\n </aside>\n );\n}\n","\"use client\";\n\nimport { useIsMobile } from \"@/hooks/use-mobile\";\nimport { NavDesktopSidebar } from \"@/components/blocks/nav-desktop-sidebar\";\nimport { NavMobileBottomBar } from \"@/components/blocks/nav-mobile-bottom-bar\";\n\nexport type NavbarItemId = \"home\" | \"cfds\" | \"options\" | \"portfolio\";\n\nexport function Navbar({\n activeId = \"home\",\n badges = {},\n onNavChange,\n}: {\n activeId?: NavbarItemId;\n badges?: Partial<Record<NavbarItemId, number>>;\n onNavChange?: (id: NavbarItemId) => void;\n}) {\n const isMobile = useIsMobile();\n\n if (isMobile) {\n return (\n <NavMobileBottomBar\n activeId={activeId}\n badges={badges}\n onTabChange={onNavChange}\n />\n );\n }\n\n return (\n <NavDesktopSidebar\n activeId={activeId}\n badges={badges}\n onNavChange={onNavChange}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","names":["Tooltip","import_custom","faSquareCheckFill","faSquareMinusFill","faArrowDownToLineLight","faArrowLeftLight","faArrowRightLight","faArrowRightArrowLeftLight","faArrowsLeftRightLight","faArrowTrendDownLight","faArrowTrendUpLight","faArrowUpFromLineLight","faArrowUpRightLight","faArrowUpRightFromSquareLight","faBellLight","faBookOpenLight","faCalculatorLight","faChartBarLight","faChartCandlestickLight","faChartLineLight","faCheckLight","faChevronDownLight","faChevronLeftLight","faChevronRightLight","faChevronUpLight","faCircleLight","faCircleCheckLight","faCircleExclamationLight","faCircleInfoLight","faClockRotateLeftLight","faCopyLight","faDollarSignLight","faEllipsisLight","faEnvelopeLight","faEnvelopeOpenLight","faEyeLight","faEyeSlashLight","faFileLinesLight","faFileXmarkLight","faFingerprintLight","faGearLight","faGripVerticalLight","faHouseLight","faHouseBlankLight","faImageLight","faInboxLight","faMagnifyingGlassLight","faMinusLight","faMoonLight","faPhoneLight","faPlusLight","faRightFromBracketLight","faRotateRightLight","faSparklesLight","faSpinnerLight","faSquareLight","faSquareCheckLight","faSquareMinusLight","faStarLight","faSunLight","faTableCellsLargeLight","faTableColumnsLight","faTrashLight","faTrashCanLight","faTriangleExclamationLight","faUserLight","faWalletLight","faXmarkLight","faArrowDownToLineFill","faArrowLeftFill","faArrowRightFill","faArrowRightArrowLeftFill","faArrowsLeftRightFill","faArrowTrendDownFill","faArrowTrendUpFill","faArrowUpFromLineFill","faArrowUpRightFill","faArrowUpRightFromSquareFill","faBellFill","faBookOpenFill","faCalculatorFill","faChartBarFill","faChartCandlestickFill","faChartLineFill","faCheckFill","faChevronDownFill","faChevronLeftFill","faChevronRightFill","faChevronUpFill","faCircleFill","faCircleCheckFill","faCircleExclamationFill","faCircleInfoFill","faClockRotateLeftFill","faCopyFill","faDollarSignFill","faEllipsisFill","faEnvelopeFill","faEnvelopeOpenFill","faEyeFill","faEyeSlashFill","faFileLinesFill","faFileXmarkFill","faFingerprintFill","faGearFill","faGripVerticalFill","faHouseFill","faHouseBlankFill","faImageFill","faInboxFill","faMagnifyingGlassFill","faMinusFill","faMoonFill","faPhoneFill","faPlusFill","faRightFromBracketFill","faRotateRightFill","faSparklesFill","faSquareFill","faStarFill","faSunFill","faTableCellsLargeFill","faTableColumnsFill","faTrashFill","faTrashCanFill","faTriangleExclamationFill","faUserFill","faWalletFill","faXmarkFill","_a","_b","import_jsx_runtime","AccordionPrimitive","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_radix_ui","import_jsx_runtime","AspectRatioPrimitive","import_radix_ui","import_jsx_runtime","AvatarPrimitive","import_class_variance_authority","import_radix_ui","import_jsx_runtime","React","import_radix_ui","import_jsx_runtime","import_class_variance_authority","import_radix_ui","import_jsx_runtime","import_class_variance_authority","import_jsx_runtime","React","import_jsx_runtime","_a","_b","className","props","import_class_variance_authority","import_jsx_runtime","React","import_jsx_runtime","useEmblaCarousel","api","React","import_jsx_runtime","config","import_radix_ui","import_jsx_runtime","CheckboxPrimitive","import_radix_ui","import_class_variance_authority","import_radix_ui","import_radix_ui","import_jsx_runtime","SeparatorPrimitive","import_jsx_runtime","import_jsx_runtime","CollapsiblePrimitive","React","import_class_variance_authority","React","import_class_variance_authority","import_jsx_runtime","Textarea","_a","import_jsx_runtime","_a","_b","import_jsx_runtime","ComboboxPrimitive","import_radix_ui","import_jsx_runtime","DialogPrimitive","import_jsx_runtime","CommandPrimitive","import_radix_ui","import_jsx_runtime","ContextMenuPrimitive","import_radix_ui","import_jsx_runtime","import_jsx_runtime","DrawerPrimitive","import_radix_ui","import_jsx_runtime","DropdownMenuPrimitive","import_class_variance_authority","import_jsx_runtime","import_react","import_class_variance_authority","import_radix_ui","import_jsx_runtime","LabelPrimitive","import_jsx_runtime","_a","React","import_radix_ui","import_jsx_runtime","_a","import_radix_ui","import_jsx_runtime","HoverCardPrimitive","React","import_class_variance_authority","import_jsx_runtime","Input","_a","React","import_class_variance_authority","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","_a","React","import_input_otp","import_class_variance_authority","import_jsx_runtime","_a","import_jsx_runtime","import_class_variance_authority","import_radix_ui","import_jsx_runtime","import_jsx_runtime","React","import_radix_ui","import_jsx_runtime","PopoverPrimitive","import_jsx_runtime","import_class_variance_authority","import_radix_ui","import_jsx_runtime","ProgressPrimitive","import_radix_ui","import_jsx_runtime","RadioGroupPrimitive","import_jsx_runtime","import_radix_ui","import_jsx_runtime","ScrollAreaPrimitive","React","import_radix_ui","import_jsx_runtime","SelectPrimitive","React","import_radix_ui","import_vaul","import_jsx_runtime","VaulPrimitive","SheetPrimitive","React","import_class_variance_authority","import_radix_ui","React","import_jsx_runtime","import_radix_ui","import_jsx_runtime","TooltipPrimitive","Tooltip","import_jsx_runtime","open","Tooltip","React","import_radix_ui","import_jsx_runtime","SliderPrimitive","import_jsx_runtime","SonnerToaster","React","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_radix_ui","import_jsx_runtime","SwitchPrimitive","import_jsx_runtime","import_class_variance_authority","import_radix_ui","import_jsx_runtime","TabsPrimitive","import_class_variance_authority","import_radix_ui","import_jsx_runtime","TabsPrimitive","import_class_variance_authority","import_radix_ui","import_jsx_runtime","TogglePrimitive","import_radix_ui","import_jsx_runtime","ToggleGroupPrimitive","import_jsx_runtime","Icon","import_react","import_vaul","import_jsx_runtime","DrawerPrimitive","import_react","import_jsx_runtime","HERO_BG","PROGRESS_TRACK","PROGRESS_ACTIVE","PROGRESS_DONE","STEPS","TOTAL_STEPS","imgStepIcons","import_react","import_jsx_runtime","HERO_BG","import_react","import_jsx_runtime","HERO_BG","CORAL","TABS","ACTIONS","TAB_DATA","import_jsx_runtime","ACTIONS","import_react","import_jsx_runtime","imgAccountGold","ACTIONS","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","NAV_ITEMS","import_jsx_runtime"]}
|