@deriv-ds/design-intelligence-layer 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../components/ui/icon.tsx","../lib/utils.ts","../components/ui/accordion.tsx","../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","../components/blocks/section.tsx","../components/blocks/trading-account-card.tsx","../components/blocks/account-activated-card.tsx","../components/blocks/home-banner.tsx","../components/blocks/home-explore-deriv.tsx","../components/blocks/home-highlight-card.tsx","../components/blocks/home-highlights.tsx","../components/blocks/feedback-success-screen.tsx","../components/blocks/header.tsx","../components/blocks/trading-action-buttons.tsx","../components/blocks/trading-empty.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\n/* ─────────────────────────────────────────────────────────────────────────────\n * Icon — three-weight wrapper around @deriv/quill-icons\n *\n * weight ladder (lightest → heaviest):\n * \"regular\" → LabelPaired …MdRegularIcon\n * \"bold\" → LabelPaired …MdBoldIcon — default\n * \"fill\" → LabelPaired …MdFillIcon\n *\n * Brand / standalone icons ship in a single weight; all three weights\n * resolve to the same component.\n * ────────────────────────────────────────────────────────────────────────── */\n\nimport {\n // ── Arrow / navigation ────────────────────────────────────────────────────\n LabelPairedArrowDownToLineMdBoldIcon,\n LabelPairedArrowDownToLineMdRegularIcon,\n LabelPairedArrowDownToLineMdFillIcon,\n LabelPairedArrowLeftMdBoldIcon,\n LabelPairedArrowLeftMdRegularIcon,\n LabelPairedArrowLeftMdFillIcon,\n LabelPairedArrowRightMdBoldIcon,\n LabelPairedArrowRightMdRegularIcon,\n LabelPairedArrowRightMdFillIcon,\n LabelPairedArrowRightArrowLeftMdBoldIcon,\n LabelPairedArrowRightArrowLeftMdRegularIcon,\n LabelPairedArrowRightArrowLeftMdFillIcon,\n LabelPairedArrowUpRightMdBoldIcon,\n LabelPairedArrowUpRightMdRegularIcon,\n LabelPairedArrowUpRightMdFillIcon,\n LabelPairedArrowUpRightFromSquareMdBoldIcon,\n LabelPairedArrowUpRightFromSquareMdRegularIcon,\n LabelPairedArrowUpRightFromSquareMdFillIcon,\n LabelPairedArrowRotateRightMdBoldIcon,\n LabelPairedArrowRotateRightMdRegularIcon,\n LabelPairedArrowRotateRightMdFillIcon,\n LabelPairedArrowRotateLeftMdBoldIcon,\n LabelPairedArrowRotateLeftMdRegularIcon,\n LabelPairedArrowRotateLeftMdFillIcon,\n LabelPairedArrowUpToLineMdBoldIcon,\n LabelPairedArrowUpToLineMdRegularIcon,\n LabelPairedArrowUpToLineMdFillIcon,\n // ── Chevrons ──────────────────────────────────────────────────────────────\n LabelPairedChevronDownMdBoldIcon,\n LabelPairedChevronDownMdRegularIcon,\n LabelPairedChevronDownMdFillIcon,\n LabelPairedChevronLeftMdBoldIcon,\n LabelPairedChevronLeftMdRegularIcon,\n LabelPairedChevronLeftMdFillIcon,\n LabelPairedChevronRightMdBoldIcon,\n LabelPairedChevronRightMdRegularIcon,\n LabelPairedChevronRightMdFillIcon,\n LabelPairedChevronUpMdBoldIcon,\n LabelPairedChevronUpMdRegularIcon,\n LabelPairedChevronUpMdFillIcon,\n // ── Circle variants ───────────────────────────────────────────────────────\n LabelPairedCircleMdBoldIcon,\n LabelPairedCircleMdRegularIcon,\n LabelPairedCircleMdFillIcon,\n LabelPairedCircleCheckMdBoldIcon,\n LabelPairedCircleCheckMdRegularIcon,\n LabelPairedCircleCheckMdFillIcon,\n LabelPairedCircleExclamationMdBoldIcon,\n LabelPairedCircleExclamationMdRegularIcon,\n LabelPairedCircleExclamationMdFillIcon,\n LabelPairedCircleInfoMdBoldIcon,\n LabelPairedCircleInfoMdRegularIcon,\n LabelPairedCircleInfoMdFillIcon,\n LabelPairedCircleUserMdBoldIcon,\n LabelPairedCircleUserMdRegularIcon,\n LabelPairedCircleUserMdFillIcon,\n LabelPairedCircleUserSlashMdBoldIcon,\n LabelPairedCircleUserSlashMdRegularIcon,\n LabelPairedCircleUserSlashMdFillIcon,\n LabelPairedCircleDollarMdBoldIcon,\n LabelPairedCircleDollarMdRegularIcon,\n LabelPairedCircleDollarMdFillIcon,\n // ── Communication / files ─────────────────────────────────────────────────\n LabelPairedEnvelopeMdBoldIcon,\n LabelPairedEnvelopeMdRegularIcon,\n LabelPairedEnvelopeMdFillIcon,\n LabelPairedFileLinesMdBoldIcon,\n LabelPairedFileLinesMdRegularIcon,\n LabelPairedFileLinesMdFillIcon,\n LabelPairedFolderOpenMdBoldIcon,\n LabelPairedFolderOpenMdRegularIcon,\n LabelPairedFolderOpenMdFillIcon,\n LabelPairedMemoPadMdBoldIcon,\n LabelPairedMemoPadMdRegularIcon,\n LabelPairedMemoPadMdFillIcon,\n LabelPairedHandshakeMdBoldIcon,\n LabelPairedHandshakeMdRegularIcon,\n LabelPairedHandshakeMdFillIcon,\n // ── UI primitives ─────────────────────────────────────────────────────────\n LabelPairedBellMdBoldIcon,\n LabelPairedBellMdRegularIcon,\n LabelPairedBellMdFillIcon,\n LabelPairedCheckMdBoldIcon,\n LabelPairedCheckMdRegularIcon,\n LabelPairedCheckMdFillIcon,\n LabelPairedOptionsMdRegularIcon,\n LabelPairedOptionsMdFillIcon,\n LabelPairedCopyMdBoldIcon,\n LabelPairedCopyMdRegularIcon,\n LabelPairedCopyMdFillIcon,\n LabelPairedDollarSignMdBoldIcon,\n LabelPairedDollarSignMdRegularIcon,\n LabelPairedDollarSignMdFillIcon,\n LabelPairedEllipsisMdBoldIcon,\n LabelPairedEllipsisMdRegularIcon,\n LabelPairedEllipsisMdFillIcon,\n LabelPairedEyeMdBoldIcon,\n LabelPairedEyeMdRegularIcon,\n LabelPairedEyeMdFillIcon,\n LabelPairedEyeSlashMdBoldIcon,\n LabelPairedEyeSlashMdRegularIcon,\n LabelPairedEyeSlashMdFillIcon,\n LabelPairedFingerprintMdBoldIcon,\n LabelPairedFingerprintMdRegularIcon,\n LabelPairedFingerprintMdFillIcon,\n LabelPairedGearMdBoldIcon,\n LabelPairedGearMdRegularIcon,\n LabelPairedGearMdFillIcon,\n LabelPairedGlobeMdBoldIcon,\n LabelPairedGlobeMdRegularIcon,\n LabelPairedGlobeMdFillIcon,\n LabelPairedGripDotsVerticalMdBoldIcon,\n LabelPairedGripDotsVerticalMdRegularIcon,\n LabelPairedGripDotsVerticalMdFillIcon,\n LabelPairedImageMdBoldIcon,\n LabelPairedImageMdRegularIcon,\n LabelPairedImageMdFillIcon,\n LabelPairedLoaderMdBoldIcon,\n LabelPairedLoaderMdRegularIcon,\n LabelPairedLoaderMdFillIcon,\n LabelPairedMinusMdBoldIcon,\n LabelPairedMinusMdRegularIcon,\n LabelPairedMinusMdFillIcon,\n LabelPairedMoonMdBoldIcon,\n LabelPairedMoonMdRegularIcon,\n LabelPairedMoonMdFillIcon,\n LabelPairedPenMdBoldIcon,\n LabelPairedPenMdRegularIcon,\n LabelPairedPenMdFillIcon,\n LabelPairedPhoneMdBoldIcon,\n LabelPairedPhoneMdRegularIcon,\n LabelPairedPhoneMdFillIcon,\n LabelPairedPlusMdBoldIcon,\n LabelPairedPlusMdRegularIcon,\n LabelPairedPlusMdFillIcon,\n LabelPairedRightFromBracketMdBoldIcon,\n LabelPairedRightFromBracketMdRegularIcon,\n LabelPairedRightFromBracketMdFillIcon,\n LabelPairedSearchMdBoldIcon,\n LabelPairedSearchMdRegularIcon,\n LabelPairedSearchMdFillIcon,\n LabelPairedShieldCheckMdBoldIcon,\n LabelPairedShieldCheckMdRegularIcon,\n LabelPairedShieldCheckMdFillIcon,\n LabelPairedSparklesMdBoldIcon,\n LabelPairedSparklesMdRegularIcon,\n LabelPairedSparklesMdFillIcon,\n LabelPairedSquareMdBoldIcon,\n LabelPairedSquareMdRegularIcon,\n LabelPairedSquareMdFillIcon,\n LabelPairedSquareCheckMdBoldIcon,\n LabelPairedSquareCheckMdRegularIcon,\n LabelPairedSquareCheckMdFillIcon,\n LabelPairedSquareMinusMdBoldIcon,\n LabelPairedSquareMinusMdRegularIcon,\n LabelPairedSquareMinusMdFillIcon,\n LabelPairedStarMdBoldIcon,\n LabelPairedStarMdRegularIcon,\n LabelPairedStarMdFillIcon,\n LabelPairedSunBrightMdBoldIcon,\n LabelPairedSunBrightMdRegularIcon,\n LabelPairedSunBrightMdFillIcon,\n LabelPairedTrashMdBoldIcon,\n LabelPairedTrashMdRegularIcon,\n LabelPairedTrashMdFillIcon,\n LabelPairedTriangleExclamationMdBoldIcon,\n LabelPairedTriangleExclamationMdRegularIcon,\n LabelPairedTriangleExclamationMdFillIcon,\n LabelPairedUserMdBoldIcon,\n LabelPairedUserMdRegularIcon,\n LabelPairedUserMdFillIcon,\n LabelPairedWalletMdBoldIcon,\n LabelPairedWalletMdRegularIcon,\n LabelPairedWalletMdFillIcon,\n LabelPairedXmarkMdBoldIcon,\n LabelPairedXmarkMdRegularIcon,\n LabelPairedXmarkMdFillIcon,\n LabelPairedArrowDownToBracketMdBoldIcon,\n LabelPairedArrowDownToBracketMdRegularIcon,\n LabelPairedArrowDownToBracketMdFillIcon,\n LabelPairedCalendarMdBoldIcon,\n LabelPairedCalendarMdRegularIcon,\n LabelPairedCalendarMdFillIcon,\n // ── Charts ────────────────────────────────────────────────────────────────\n LabelPairedChartLineMdBoldIcon,\n LabelPairedChartLineMdRegularIcon,\n LabelPairedChartLineMdFillIcon,\n LabelPairedChartCandlestickMdBoldIcon,\n LabelPairedChartCandlestickMdRegularIcon,\n LabelPairedChartCandlestickMdFillIcon,\n LabelPairedChartMixedMdBoldIcon,\n LabelPairedChartMixedMdRegularIcon,\n LabelPairedChartMixedMdFillIcon,\n LabelPairedChartOhlcMdBoldIcon,\n LabelPairedChartOhlcMdRegularIcon,\n LabelPairedChartOhlcMdFillIcon,\n LabelPairedChartTradingviewMdBoldIcon,\n LabelPairedChartTradingviewMdRegularIcon,\n LabelPairedChartTradingviewMdFillIcon,\n LabelPairedChartTrendDownMdBoldIcon,\n LabelPairedChartTrendDownMdRegularIcon,\n LabelPairedChartTrendDownMdFillIcon,\n LabelPairedChartTrendSidewayMdBoldIcon,\n LabelPairedChartTrendSidewayMdRegularIcon,\n LabelPairedChartTrendSidewayMdFillIcon,\n LabelPairedChartTrendUpMdBoldIcon,\n LabelPairedChartTrendUpMdRegularIcon,\n LabelPairedChartTrendUpMdFillIcon,\n LabelPairedLightChartLineUpDownClockMdBoldIcon,\n LabelPairedLightChartLineUpDownClockMdRegularIcon,\n LabelPairedLightChartLineUpDownClockMdFillIcon,\n // ── Layout ────────────────────────────────────────────────────────────────\n LabelPairedGrid2MdBoldIcon,\n LabelPairedGrid2MdRegularIcon,\n LabelPairedGrid2MdFillIcon,\n LabelPairedObjectsColumnMdBoldIcon,\n LabelPairedObjectsColumnMdRegularIcon,\n LabelPairedObjectsColumnMdFillIcon,\n LabelPairedHouseBlankMdBoldIcon,\n LabelPairedHouseBlankMdRegularIcon,\n LabelPairedHouseBlankMdFillIcon,\n LabelPairedLocationCrosshairsSlashMdBoldIcon,\n LabelPairedLocationCrosshairsSlashMdRegularIcon,\n LabelPairedLocationCrosshairsSlashMdFillIcon,\n // ── Deriv-specific icons ──────────────────────────────────────────────────\n LabelPairedBookCircleQuestionMdBoldIcon,\n LabelPairedBookCircleQuestionMdRegularIcon,\n LabelPairedBookCircleQuestionMdFillIcon,\n LabelPairedBoxArchiveCircleArrowDownMdBoldIcon,\n LabelPairedBoxArchiveCircleArrowDownMdRegularIcon,\n LabelPairedBoxArchiveCircleArrowDownMdFillIcon,\n LabelPairedBoxArchiveCircleArrowUpMdBoldIcon,\n LabelPairedBoxArchiveCircleArrowUpMdRegularIcon,\n LabelPairedBoxArchiveCircleArrowUpMdFillIcon,\n LabelPairedDealCancellationMdBoldIcon,\n LabelPairedDealCancellationMdRegularIcon,\n LabelPairedDealCancellationMdFillIcon,\n LabelPairedDealProtectionMdBoldIcon,\n LabelPairedDealProtectionMdRegularIcon,\n LabelPairedDealProtectionMdFillIcon,\n LabelPairedDerivP2pMdBoldIcon,\n LabelPairedDerivP2pMdRegularIcon,\n LabelPairedDerivP2pMdFillIcon,\n LabelPairedFiatOfframpMdBoldIcon,\n LabelPairedFiatOfframpMdRegularIcon,\n LabelPairedFiatOfframpMdFillIcon,\n LabelPairedFiatOnrampMdBoldIcon,\n LabelPairedFiatOnrampMdRegularIcon,\n LabelPairedFiatOnrampMdFillIcon,\n LabelPairedFieldPasswordMdBoldIcon,\n LabelPairedFieldPasswordMdRegularIcon,\n LabelPairedFieldPasswordMdFillIcon,\n LabelPairedHandGestureSwipeLeftRightMdBoldIcon,\n LabelPairedHandGestureSwipeLeftRightMdRegularIcon,\n LabelPairedHandGestureSwipeLeftRightMdFillIcon,\n LabelPairedHandGestureTapLeftMdBoldIcon,\n LabelPairedHandGestureTapLeftMdRegularIcon,\n LabelPairedHandGestureTapLeftMdFillIcon,\n LabelPairedHandGestureTapRightMdBoldIcon,\n LabelPairedHandGestureTapRightMdRegularIcon,\n LabelPairedHandGestureTapRightMdFillIcon,\n LabelPairedHorizontalRuleDashedMdBoldIcon,\n LabelPairedHorizontalRuleDashedMdRegularIcon,\n LabelPairedHorizontalRuleDashedMdFillIcon,\n LabelPairedLightUserTieCircleDollarMdBoldIcon,\n LabelPairedLightUserTieCircleDollarMdRegularIcon,\n LabelPairedLightUserTieCircleDollarMdFillIcon,\n LabelPairedLockPatternMdBoldIcon,\n LabelPairedLockPatternMdRegularIcon,\n LabelPairedLockPatternMdFillIcon,\n LabelPairedMobileNotchRotateMdBoldIcon,\n LabelPairedMobileNotchRotateMdRegularIcon,\n LabelPairedMobileNotchRotateMdFillIcon,\n LabelPairedPageCircleArrowRightMdBoldIcon,\n LabelPairedPageCircleArrowRightMdRegularIcon,\n LabelPairedPageCircleArrowRightMdFillIcon,\n LabelPairedPasskeyMdBoldIcon,\n LabelPairedPasskeyMdRegularIcon,\n LabelPairedPasskeyMdFillIcon,\n LabelPairedPlaybackSpeedMdBoldIcon,\n LabelPairedPlaybackSpeedMdRegularIcon,\n LabelPairedPlaybackSpeedMdFillIcon,\n LabelPairedPuzzlePieceTwoMdBoldIcon,\n LabelPairedPuzzlePieceTwoMdRegularIcon,\n LabelPairedPuzzlePieceTwoMdFillIcon,\n LabelPairedRotateDeviceMdBoldIcon,\n LabelPairedRotateDeviceMdRegularIcon,\n LabelPairedRotateDeviceMdFillIcon,\n LabelPairedStopLossMdBoldIcon,\n LabelPairedStopLossMdRegularIcon,\n LabelPairedStopLossMdFillIcon,\n LabelPairedTakeProfitMdBoldIcon,\n LabelPairedTakeProfitMdRegularIcon,\n LabelPairedTakeProfitMdFillIcon,\n LabelPairedWalletCircleMinusMdBoldIcon,\n LabelPairedWalletCircleMinusMdRegularIcon,\n LabelPairedWalletCircleMinusMdFillIcon,\n LabelPairedWalletCirclePlusMdBoldIcon,\n LabelPairedWalletCirclePlusMdRegularIcon,\n LabelPairedWalletCirclePlusMdFillIcon,\n LabelPairedWalletSignalMdBoldIcon,\n LabelPairedWalletSignalMdRegularIcon,\n LabelPairedWalletSignalMdFillIcon,\n // ── Deriv logo ────────────────────────────────────────────────────────────\n LabelPairedDerivMdIcon,\n LabelPairedDerivBrandLogoMdRegularIcon,\n LabelPairedDerivBrandLogoMdFillIcon,\n} from \"@deriv/quill-icons/LabelPaired\"\n\nimport {\n // ── Sm size variants ──────────────────────────────────────────────────────\n LabelPairedArrowDownToLineSmBoldIcon,\n LabelPairedArrowDownToLineSmRegularIcon,\n LabelPairedArrowDownToLineSmFillIcon,\n LabelPairedArrowLeftSmBoldIcon,\n LabelPairedArrowLeftSmRegularIcon,\n LabelPairedArrowLeftSmFillIcon,\n LabelPairedArrowRightSmBoldIcon,\n LabelPairedArrowRightSmRegularIcon,\n LabelPairedArrowRightSmFillIcon,\n LabelPairedArrowRightArrowLeftSmBoldIcon,\n LabelPairedArrowRightArrowLeftSmRegularIcon,\n LabelPairedArrowRightArrowLeftSmFillIcon,\n LabelPairedArrowUpRightSmBoldIcon,\n LabelPairedArrowUpRightSmRegularIcon,\n LabelPairedArrowUpRightSmFillIcon,\n LabelPairedArrowUpRightFromSquareSmBoldIcon,\n LabelPairedArrowUpRightFromSquareSmRegularIcon,\n LabelPairedArrowUpRightFromSquareSmFillIcon,\n LabelPairedArrowRotateRightSmBoldIcon,\n LabelPairedArrowRotateRightSmRegularIcon,\n LabelPairedArrowRotateRightSmFillIcon,\n LabelPairedArrowRotateLeftSmBoldIcon,\n LabelPairedArrowRotateLeftSmRegularIcon,\n LabelPairedArrowRotateLeftSmFillIcon,\n LabelPairedArrowUpToLineSmBoldIcon,\n LabelPairedArrowUpToLineSmRegularIcon,\n LabelPairedArrowUpToLineSmFillIcon,\n LabelPairedChevronDownSmBoldIcon,\n LabelPairedChevronDownSmRegularIcon,\n LabelPairedChevronDownSmFillIcon,\n LabelPairedChevronLeftSmBoldIcon,\n LabelPairedChevronLeftSmRegularIcon,\n LabelPairedChevronLeftSmFillIcon,\n LabelPairedChevronRightSmBoldIcon,\n LabelPairedChevronRightSmRegularIcon,\n LabelPairedChevronRightSmFillIcon,\n LabelPairedChevronUpSmBoldIcon,\n LabelPairedChevronUpSmRegularIcon,\n LabelPairedChevronUpSmFillIcon,\n LabelPairedCircleSmBoldIcon,\n LabelPairedCircleSmRegularIcon,\n LabelPairedCircleSmFillIcon,\n LabelPairedCircleCheckSmBoldIcon,\n LabelPairedCircleCheckSmRegularIcon,\n LabelPairedCircleCheckSmFillIcon,\n LabelPairedCircleExclamationSmBoldIcon,\n LabelPairedCircleExclamationSmRegularIcon,\n LabelPairedCircleExclamationSmFillIcon,\n LabelPairedCircleInfoSmBoldIcon,\n LabelPairedCircleInfoSmRegularIcon,\n LabelPairedCircleInfoSmFillIcon,\n LabelPairedCircleUserSmBoldIcon,\n LabelPairedCircleUserSmRegularIcon,\n LabelPairedCircleUserSmFillIcon,\n LabelPairedCircleUserSlashSmBoldIcon,\n LabelPairedCircleUserSlashSmRegularIcon,\n LabelPairedCircleUserSlashSmFillIcon,\n LabelPairedCircleDollarSmBoldIcon,\n LabelPairedCircleDollarSmRegularIcon,\n LabelPairedCircleDollarSmFillIcon,\n LabelPairedEnvelopeSmBoldIcon,\n LabelPairedEnvelopeSmRegularIcon,\n LabelPairedEnvelopeSmFillIcon,\n LabelPairedFileLinesSmBoldIcon,\n LabelPairedFileLinesSmRegularIcon,\n LabelPairedFileLinesSmFillIcon,\n LabelPairedFolderOpenSmBoldIcon,\n LabelPairedFolderOpenSmRegularIcon,\n LabelPairedFolderOpenSmFillIcon,\n LabelPairedMemoPadSmBoldIcon,\n LabelPairedMemoPadSmRegularIcon,\n LabelPairedMemoPadSmFillIcon,\n LabelPairedHandshakeSmBoldIcon,\n LabelPairedHandshakeSmRegularIcon,\n LabelPairedHandshakeSmFillIcon,\n LabelPairedBellSmBoldIcon,\n LabelPairedBellSmRegularIcon,\n LabelPairedBellSmFillIcon,\n LabelPairedCheckSmBoldIcon,\n LabelPairedCheckSmRegularIcon,\n LabelPairedCheckSmFillIcon,\n LabelPairedOptionsSmRegularIcon,\n LabelPairedOptionsSmFillIcon,\n LabelPairedCopySmBoldIcon,\n LabelPairedCopySmRegularIcon,\n LabelPairedCopySmFillIcon,\n LabelPairedDollarSignSmBoldIcon,\n LabelPairedDollarSignSmRegularIcon,\n LabelPairedDollarSignSmFillIcon,\n LabelPairedEllipsisSmBoldIcon,\n LabelPairedEllipsisSmRegularIcon,\n LabelPairedEllipsisSmFillIcon,\n LabelPairedEyeSmBoldIcon,\n LabelPairedEyeSmRegularIcon,\n LabelPairedEyeSmFillIcon,\n LabelPairedEyeSlashSmBoldIcon,\n LabelPairedEyeSlashSmRegularIcon,\n LabelPairedEyeSlashSmFillIcon,\n LabelPairedFingerprintSmBoldIcon,\n LabelPairedFingerprintSmRegularIcon,\n LabelPairedFingerprintSmFillIcon,\n LabelPairedGearSmBoldIcon,\n LabelPairedGearSmRegularIcon,\n LabelPairedGearSmFillIcon,\n LabelPairedGlobeSmBoldIcon,\n LabelPairedGlobeSmRegularIcon,\n LabelPairedGlobeSmFillIcon,\n LabelPairedGripDotsVerticalSmBoldIcon,\n LabelPairedGripDotsVerticalSmRegularIcon,\n LabelPairedGripDotsVerticalSmFillIcon,\n LabelPairedImageSmBoldIcon,\n LabelPairedImageSmRegularIcon,\n LabelPairedImageSmFillIcon,\n LabelPairedLoaderSmBoldIcon,\n LabelPairedLoaderSmRegularIcon,\n LabelPairedLoaderSmFillIcon,\n LabelPairedMinusSmBoldIcon,\n LabelPairedMinusSmRegularIcon,\n LabelPairedMinusSmFillIcon,\n LabelPairedMoonSmBoldIcon,\n LabelPairedMoonSmRegularIcon,\n LabelPairedMoonSmFillIcon,\n LabelPairedPenSmBoldIcon,\n LabelPairedPenSmRegularIcon,\n LabelPairedPenSmFillIcon,\n LabelPairedPhoneSmBoldIcon,\n LabelPairedPhoneSmRegularIcon,\n LabelPairedPhoneSmFillIcon,\n LabelPairedPlusSmBoldIcon,\n LabelPairedPlusSmRegularIcon,\n LabelPairedPlusSmFillIcon,\n LabelPairedRightFromBracketSmBoldIcon,\n LabelPairedRightFromBracketSmRegularIcon,\n LabelPairedRightFromBracketSmFillIcon,\n LabelPairedSearchSmBoldIcon,\n LabelPairedSearchSmRegularIcon,\n LabelPairedSearchSmFillIcon,\n LabelPairedShieldCheckSmBoldIcon,\n LabelPairedShieldCheckSmRegularIcon,\n LabelPairedShieldCheckSmFillIcon,\n LabelPairedSparklesSmBoldIcon,\n LabelPairedSparklesSmRegularIcon,\n LabelPairedSparklesSmFillIcon,\n LabelPairedSquareSmBoldIcon,\n LabelPairedSquareSmRegularIcon,\n LabelPairedSquareSmFillIcon,\n LabelPairedSquareCheckSmBoldIcon,\n LabelPairedSquareCheckSmRegularIcon,\n LabelPairedSquareCheckSmFillIcon,\n LabelPairedSquareMinusSmBoldIcon,\n LabelPairedSquareMinusSmRegularIcon,\n LabelPairedSquareMinusSmFillIcon,\n LabelPairedStarSmBoldIcon,\n LabelPairedStarSmRegularIcon,\n LabelPairedStarSmFillIcon,\n LabelPairedSunBrightSmBoldIcon,\n LabelPairedSunBrightSmRegularIcon,\n LabelPairedSunBrightSmFillIcon,\n LabelPairedTrashSmBoldIcon,\n LabelPairedTrashSmRegularIcon,\n LabelPairedTrashSmFillIcon,\n LabelPairedTriangleExclamationSmBoldIcon,\n LabelPairedTriangleExclamationSmRegularIcon,\n LabelPairedTriangleExclamationSmFillIcon,\n LabelPairedUserSmBoldIcon,\n LabelPairedUserSmRegularIcon,\n LabelPairedUserSmFillIcon,\n LabelPairedWalletSmBoldIcon,\n LabelPairedWalletSmRegularIcon,\n LabelPairedWalletSmFillIcon,\n LabelPairedXmarkSmBoldIcon,\n LabelPairedXmarkSmRegularIcon,\n LabelPairedXmarkSmFillIcon,\n LabelPairedArrowDownToBracketSmBoldIcon,\n LabelPairedArrowDownToBracketSmRegularIcon,\n LabelPairedArrowDownToBracketSmFillIcon,\n LabelPairedCalendarSmBoldIcon,\n LabelPairedCalendarSmRegularIcon,\n LabelPairedCalendarSmFillIcon,\n LabelPairedChartLineSmBoldIcon,\n LabelPairedChartLineSmRegularIcon,\n LabelPairedChartLineSmFillIcon,\n LabelPairedChartCandlestickSmBoldIcon,\n LabelPairedChartCandlestickSmRegularIcon,\n LabelPairedChartCandlestickSmFillIcon,\n LabelPairedChartMixedSmBoldIcon,\n LabelPairedChartMixedSmRegularIcon,\n LabelPairedChartMixedSmFillIcon,\n LabelPairedChartOhlcSmBoldIcon,\n LabelPairedChartOhlcSmRegularIcon,\n LabelPairedChartOhlcSmFillIcon,\n LabelPairedChartTradingviewSmBoldIcon,\n LabelPairedChartTradingviewSmRegularIcon,\n LabelPairedChartTradingviewSmFillIcon,\n LabelPairedChartTrendDownSmBoldIcon,\n LabelPairedChartTrendDownSmRegularIcon,\n LabelPairedChartTrendDownSmFillIcon,\n LabelPairedChartTrendSidewaySmBoldIcon,\n LabelPairedChartTrendSidewaySmRegularIcon,\n LabelPairedChartTrendSidewaySmFillIcon,\n LabelPairedChartTrendUpSmBoldIcon,\n LabelPairedChartTrendUpSmRegularIcon,\n LabelPairedChartTrendUpSmFillIcon,\n LabelPairedLightChartLineUpDownClockSmBoldIcon,\n LabelPairedLightChartLineUpDownClockSmRegularIcon,\n LabelPairedLightChartLineUpDownClockSmFillIcon,\n LabelPairedGrid2SmBoldIcon,\n LabelPairedGrid2SmRegularIcon,\n LabelPairedGrid2SmFillIcon,\n LabelPairedObjectsColumnSmBoldIcon,\n LabelPairedObjectsColumnSmRegularIcon,\n LabelPairedObjectsColumnSmFillIcon,\n LabelPairedHouseBlankSmBoldIcon,\n LabelPairedHouseBlankSmRegularIcon,\n LabelPairedHouseBlankSmFillIcon,\n LabelPairedLocationCrosshairsSlashSmBoldIcon,\n LabelPairedLocationCrosshairsSlashSmRegularIcon,\n LabelPairedLocationCrosshairsSlashSmFillIcon,\n LabelPairedBookCircleQuestionSmBoldIcon,\n LabelPairedBookCircleQuestionSmRegularIcon,\n LabelPairedBookCircleQuestionSmFillIcon,\n LabelPairedBoxArchiveCircleArrowDownSmBoldIcon,\n LabelPairedBoxArchiveCircleArrowDownSmRegularIcon,\n LabelPairedBoxArchiveCircleArrowDownSmFillIcon,\n LabelPairedBoxArchiveCircleArrowUpSmBoldIcon,\n LabelPairedBoxArchiveCircleArrowUpSmRegularIcon,\n LabelPairedBoxArchiveCircleArrowUpSmFillIcon,\n LabelPairedDealCancellationSmBoldIcon,\n LabelPairedDealCancellationSmRegularIcon,\n LabelPairedDealCancellationSmFillIcon,\n LabelPairedDealProtectionSmBoldIcon,\n LabelPairedDealProtectionSmRegularIcon,\n LabelPairedDealProtectionSmFillIcon,\n LabelPairedDerivP2pSmBoldIcon,\n LabelPairedDerivP2pSmRegularIcon,\n LabelPairedDerivP2pSmFillIcon,\n LabelPairedFiatOfframpSmBoldIcon,\n LabelPairedFiatOfframpSmRegularIcon,\n LabelPairedFiatOfframpSmFillIcon,\n LabelPairedFiatOnrampSmBoldIcon,\n LabelPairedFiatOnrampSmRegularIcon,\n LabelPairedFiatOnrampSmFillIcon,\n LabelPairedFieldPasswordSmBoldIcon,\n LabelPairedFieldPasswordSmRegularIcon,\n LabelPairedFieldPasswordSmFillIcon,\n LabelPairedHandGestureSwipeLeftRightSmBoldIcon,\n LabelPairedHandGestureSwipeLeftRightSmRegularIcon,\n LabelPairedHandGestureSwipeLeftRightSmFillIcon,\n LabelPairedHandGestureTapLeftSmBoldIcon,\n LabelPairedHandGestureTapLeftSmRegularIcon,\n LabelPairedHandGestureTapLeftSmFillIcon,\n LabelPairedHandGestureTapRightSmBoldIcon,\n LabelPairedHandGestureTapRightSmRegularIcon,\n LabelPairedHandGestureTapRightSmFillIcon,\n LabelPairedHorizontalRuleDashedSmBoldIcon,\n LabelPairedHorizontalRuleDashedSmRegularIcon,\n LabelPairedHorizontalRuleDashedSmFillIcon,\n LabelPairedLightUserTieCircleDollarSmBoldIcon,\n LabelPairedLightUserTieCircleDollarSmRegularIcon,\n LabelPairedLightUserTieCircleDollarSmFillIcon,\n LabelPairedLockPatternSmBoldIcon,\n LabelPairedLockPatternSmRegularIcon,\n LabelPairedLockPatternSmFillIcon,\n LabelPairedMobileNotchRotateSmBoldIcon,\n LabelPairedMobileNotchRotateSmRegularIcon,\n LabelPairedMobileNotchRotateSmFillIcon,\n LabelPairedPageCircleArrowRightSmBoldIcon,\n LabelPairedPageCircleArrowRightSmRegularIcon,\n LabelPairedPageCircleArrowRightSmFillIcon,\n LabelPairedPasskeySmBoldIcon,\n LabelPairedPasskeySmRegularIcon,\n LabelPairedPasskeySmFillIcon,\n LabelPairedPlaybackSpeedSmBoldIcon,\n LabelPairedPlaybackSpeedSmRegularIcon,\n LabelPairedPlaybackSpeedSmFillIcon,\n LabelPairedPuzzlePieceTwoSmBoldIcon,\n LabelPairedPuzzlePieceTwoSmRegularIcon,\n LabelPairedPuzzlePieceTwoSmFillIcon,\n LabelPairedRotateDeviceSmBoldIcon,\n LabelPairedRotateDeviceSmRegularIcon,\n LabelPairedRotateDeviceSmFillIcon,\n LabelPairedStopLossSmBoldIcon,\n LabelPairedStopLossSmRegularIcon,\n LabelPairedStopLossSmFillIcon,\n LabelPairedTakeProfitSmBoldIcon,\n LabelPairedTakeProfitSmRegularIcon,\n LabelPairedTakeProfitSmFillIcon,\n LabelPairedWalletCircleMinusSmBoldIcon,\n LabelPairedWalletCircleMinusSmRegularIcon,\n LabelPairedWalletCircleMinusSmFillIcon,\n LabelPairedWalletCirclePlusSmBoldIcon,\n LabelPairedWalletCirclePlusSmRegularIcon,\n LabelPairedWalletCirclePlusSmFillIcon,\n LabelPairedWalletSignalSmBoldIcon,\n LabelPairedWalletSignalSmRegularIcon,\n LabelPairedWalletSignalSmFillIcon,\n LabelPairedDerivSmIcon,\n LabelPairedDerivBrandLogoSmRegularIcon,\n LabelPairedDerivBrandLogoSmFillIcon,\n} from \"@deriv/quill-icons/LabelPaired\"\n\nimport {\n // ── Lg size variants ──────────────────────────────────────────────────────\n LabelPairedArrowDownToLineLgBoldIcon,\n LabelPairedArrowDownToLineLgRegularIcon,\n LabelPairedArrowDownToLineLgFillIcon,\n LabelPairedArrowLeftLgBoldIcon,\n LabelPairedArrowLeftLgRegularIcon,\n LabelPairedArrowLeftLgFillIcon,\n LabelPairedArrowRightLgBoldIcon,\n LabelPairedArrowRightLgRegularIcon,\n LabelPairedArrowRightLgFillIcon,\n LabelPairedArrowRightArrowLeftLgBoldIcon,\n LabelPairedArrowRightArrowLeftLgRegularIcon,\n LabelPairedArrowRightArrowLeftLgFillIcon,\n LabelPairedArrowUpRightLgBoldIcon,\n LabelPairedArrowUpRightLgRegularIcon,\n LabelPairedArrowUpRightLgFillIcon,\n LabelPairedArrowUpRightFromSquareLgBoldIcon,\n LabelPairedArrowUpRightFromSquareLgRegularIcon,\n LabelPairedArrowUpRightFromSquareLgFillIcon,\n LabelPairedArrowRotateRightLgBoldIcon,\n LabelPairedArrowRotateRightLgRegularIcon,\n LabelPairedArrowRotateRightLgFillIcon,\n LabelPairedArrowRotateLeftLgBoldIcon,\n LabelPairedArrowRotateLeftLgRegularIcon,\n LabelPairedArrowRotateLeftLgFillIcon,\n LabelPairedArrowUpToLineLgBoldIcon,\n LabelPairedArrowUpToLineLgRegularIcon,\n LabelPairedArrowUpToLineLgFillIcon,\n LabelPairedChevronDownLgBoldIcon,\n LabelPairedChevronDownLgRegularIcon,\n LabelPairedChevronDownLgFillIcon,\n LabelPairedChevronLeftLgBoldIcon,\n LabelPairedChevronLeftLgRegularIcon,\n LabelPairedChevronLeftLgFillIcon,\n LabelPairedChevronRightLgBoldIcon,\n LabelPairedChevronRightLgRegularIcon,\n LabelPairedChevronRightLgFillIcon,\n LabelPairedChevronUpLgBoldIcon,\n LabelPairedChevronUpLgRegularIcon,\n LabelPairedChevronUpLgFillIcon,\n LabelPairedCircleLgBoldIcon,\n LabelPairedCircleLgRegularIcon,\n LabelPairedCircleLgFillIcon,\n LabelPairedCircleCheckLgBoldIcon,\n LabelPairedCircleCheckLgRegularIcon,\n LabelPairedCircleCheckLgFillIcon,\n LabelPairedCircleExclamationLgBoldIcon,\n LabelPairedCircleExclamationLgRegularIcon,\n LabelPairedCircleExclamationLgFillIcon,\n LabelPairedCircleInfoLgBoldIcon,\n LabelPairedCircleInfoLgRegularIcon,\n LabelPairedCircleInfoLgFillIcon,\n LabelPairedCircleUserLgBoldIcon,\n LabelPairedCircleUserLgRegularIcon,\n LabelPairedCircleUserLgFillIcon,\n LabelPairedCircleUserSlashLgBoldIcon,\n LabelPairedCircleUserSlashLgRegularIcon,\n LabelPairedCircleUserSlashLgFillIcon,\n LabelPairedCircleDollarLgBoldIcon,\n LabelPairedCircleDollarLgRegularIcon,\n LabelPairedCircleDollarLgFillIcon,\n LabelPairedEnvelopeLgBoldIcon,\n LabelPairedEnvelopeLgRegularIcon,\n LabelPairedEnvelopeLgFillIcon,\n LabelPairedFileLinesLgBoldIcon,\n LabelPairedFileLinesLgRegularIcon,\n LabelPairedFileLinesLgFillIcon,\n LabelPairedFolderOpenLgBoldIcon,\n LabelPairedFolderOpenLgRegularIcon,\n LabelPairedFolderOpenLgFillIcon,\n LabelPairedMemoPadLgBoldIcon,\n LabelPairedMemoPadLgRegularIcon,\n LabelPairedMemoPadLgFillIcon,\n LabelPairedHandshakeLgBoldIcon,\n LabelPairedHandshakeLgRegularIcon,\n LabelPairedHandshakeLgFillIcon,\n LabelPairedBellLgBoldIcon,\n LabelPairedBellLgRegularIcon,\n LabelPairedBellLgFillIcon,\n LabelPairedCheckLgBoldIcon,\n LabelPairedCheckLgRegularIcon,\n LabelPairedCheckLgFillIcon,\n LabelPairedOptionsLgRegularIcon,\n LabelPairedOptionsLgFillIcon,\n LabelPairedCopyLgBoldIcon,\n LabelPairedCopyLgRegularIcon,\n LabelPairedCopyLgFillIcon,\n LabelPairedDollarSignLgBoldIcon,\n LabelPairedDollarSignLgRegularIcon,\n LabelPairedDollarSignLgFillIcon,\n LabelPairedEllipsisLgBoldIcon,\n LabelPairedEllipsisLgRegularIcon,\n LabelPairedEllipsisLgFillIcon,\n LabelPairedEyeLgBoldIcon,\n LabelPairedEyeLgRegularIcon,\n LabelPairedEyeLgFillIcon,\n LabelPairedEyeSlashLgBoldIcon,\n LabelPairedEyeSlashLgRegularIcon,\n LabelPairedEyeSlashLgFillIcon,\n LabelPairedFingerprintLgBoldIcon,\n LabelPairedFingerprintLgRegularIcon,\n LabelPairedFingerprintLgFillIcon,\n LabelPairedGearLgBoldIcon,\n LabelPairedGearLgRegularIcon,\n LabelPairedGearLgFillIcon,\n LabelPairedGlobeLgBoldIcon,\n LabelPairedGlobeLgRegularIcon,\n LabelPairedGlobeLgFillIcon,\n LabelPairedGripDotsVerticalLgBoldIcon,\n LabelPairedGripDotsVerticalLgRegularIcon,\n LabelPairedGripDotsVerticalLgFillIcon,\n LabelPairedImageLgBoldIcon,\n LabelPairedImageLgRegularIcon,\n LabelPairedImageLgFillIcon,\n LabelPairedLoaderLgBoldIcon,\n LabelPairedLoaderLgRegularIcon,\n LabelPairedLoaderLgFillIcon,\n LabelPairedMinusLgBoldIcon,\n LabelPairedMinusLgRegularIcon,\n LabelPairedMinusLgFillIcon,\n LabelPairedMoonLgBoldIcon,\n LabelPairedMoonLgRegularIcon,\n LabelPairedMoonLgFillIcon,\n LabelPairedPenLgBoldIcon,\n LabelPairedPenLgRegularIcon,\n LabelPairedPenLgFillIcon,\n LabelPairedPhoneLgBoldIcon,\n LabelPairedPhoneLgRegularIcon,\n LabelPairedPhoneLgFillIcon,\n LabelPairedPlusLgBoldIcon,\n LabelPairedPlusLgRegularIcon,\n LabelPairedPlusLgFillIcon,\n LabelPairedRightFromBracketLgBoldIcon,\n LabelPairedRightFromBracketLgRegularIcon,\n LabelPairedRightFromBracketLgFillIcon,\n LabelPairedSearchLgBoldIcon,\n LabelPairedSearchLgRegularIcon,\n LabelPairedSearchLgFillIcon,\n LabelPairedShieldCheckLgBoldIcon,\n LabelPairedShieldCheckLgRegularIcon,\n LabelPairedShieldCheckLgFillIcon,\n LabelPairedSparklesLgBoldIcon,\n LabelPairedSparklesLgRegularIcon,\n LabelPairedSparklesLgFillIcon,\n LabelPairedSquareLgBoldIcon,\n LabelPairedSquareLgRegularIcon,\n LabelPairedSquareLgFillIcon,\n LabelPairedSquareCheckLgBoldIcon,\n LabelPairedSquareCheckLgRegularIcon,\n LabelPairedSquareCheckLgFillIcon,\n LabelPairedSquareMinusLgBoldIcon,\n LabelPairedSquareMinusLgRegularIcon,\n LabelPairedSquareMinusLgFillIcon,\n LabelPairedStarLgBoldIcon,\n LabelPairedStarLgRegularIcon,\n LabelPairedStarLgFillIcon,\n LabelPairedSunBrightLgBoldIcon,\n LabelPairedSunBrightLgRegularIcon,\n LabelPairedSunBrightLgFillIcon,\n LabelPairedTrashLgBoldIcon,\n LabelPairedTrashLgRegularIcon,\n LabelPairedTrashLgFillIcon,\n LabelPairedTriangleExclamationLgBoldIcon,\n LabelPairedTriangleExclamationLgRegularIcon,\n LabelPairedTriangleExclamationLgFillIcon,\n LabelPairedUserLgBoldIcon,\n LabelPairedUserLgRegularIcon,\n LabelPairedUserLgFillIcon,\n LabelPairedWalletLgBoldIcon,\n LabelPairedWalletLgRegularIcon,\n LabelPairedWalletLgFillIcon,\n LabelPairedXmarkLgBoldIcon,\n LabelPairedXmarkLgRegularIcon,\n LabelPairedXmarkLgFillIcon,\n LabelPairedArrowDownToBracketLgBoldIcon,\n LabelPairedArrowDownToBracketLgRegularIcon,\n LabelPairedArrowDownToBracketLgFillIcon,\n LabelPairedCalendarLgBoldIcon,\n LabelPairedCalendarLgRegularIcon,\n LabelPairedCalendarLgFillIcon,\n LabelPairedChartLineLgBoldIcon,\n LabelPairedChartLineLgRegularIcon,\n LabelPairedChartLineLgFillIcon,\n LabelPairedChartCandlestickLgBoldIcon,\n LabelPairedChartCandlestickLgRegularIcon,\n LabelPairedChartCandlestickLgFillIcon,\n LabelPairedChartMixedLgBoldIcon,\n LabelPairedChartMixedLgRegularIcon,\n LabelPairedChartMixedLgFillIcon,\n LabelPairedChartOhlcLgBoldIcon,\n LabelPairedChartOhlcLgRegularIcon,\n LabelPairedChartOhlcLgFillIcon,\n LabelPairedChartTradingviewLgBoldIcon,\n LabelPairedChartTradingviewLgRegularIcon,\n LabelPairedChartTradingviewLgFillIcon,\n LabelPairedChartTrendDownLgBoldIcon,\n LabelPairedChartTrendDownLgRegularIcon,\n LabelPairedChartTrendDownLgFillIcon,\n LabelPairedChartTrendSidewayLgBoldIcon,\n LabelPairedChartTrendSidewayLgRegularIcon,\n LabelPairedChartTrendSidewayLgFillIcon,\n LabelPairedChartTrendUpLgBoldIcon,\n LabelPairedChartTrendUpLgRegularIcon,\n LabelPairedChartTrendUpLgFillIcon,\n LabelPairedLightChartLineUpDownClockLgBoldIcon,\n LabelPairedLightChartLineUpDownClockLgRegularIcon,\n LabelPairedLightChartLineUpDownClockLgFillIcon,\n LabelPairedGrid2LgBoldIcon,\n LabelPairedGrid2LgRegularIcon,\n LabelPairedGrid2LgFillIcon,\n LabelPairedObjectsColumnLgBoldIcon,\n LabelPairedObjectsColumnLgRegularIcon,\n LabelPairedObjectsColumnLgFillIcon,\n LabelPairedHouseBlankLgBoldIcon,\n LabelPairedHouseBlankLgRegularIcon,\n LabelPairedHouseBlankLgFillIcon,\n LabelPairedLocationCrosshairsSlashLgBoldIcon,\n LabelPairedLocationCrosshairsSlashLgRegularIcon,\n LabelPairedLocationCrosshairsSlashLgFillIcon,\n LabelPairedBookCircleQuestionLgBoldIcon,\n LabelPairedBookCircleQuestionLgRegularIcon,\n LabelPairedBookCircleQuestionLgFillIcon,\n LabelPairedBoxArchiveCircleArrowDownLgBoldIcon,\n LabelPairedBoxArchiveCircleArrowDownLgRegularIcon,\n LabelPairedBoxArchiveCircleArrowDownLgFillIcon,\n LabelPairedBoxArchiveCircleArrowUpLgBoldIcon,\n LabelPairedBoxArchiveCircleArrowUpLgRegularIcon,\n LabelPairedBoxArchiveCircleArrowUpLgFillIcon,\n LabelPairedDealCancellationLgBoldIcon,\n LabelPairedDealCancellationLgRegularIcon,\n LabelPairedDealCancellationLgFillIcon,\n LabelPairedDealProtectionLgBoldIcon,\n LabelPairedDealProtectionLgRegularIcon,\n LabelPairedDealProtectionLgFillIcon,\n LabelPairedDerivP2pLgBoldIcon,\n LabelPairedDerivP2pLgRegularIcon,\n LabelPairedDerivP2pLgFillIcon,\n LabelPairedFiatOfframpLgBoldIcon,\n LabelPairedFiatOfframpLgRegularIcon,\n LabelPairedFiatOfframpLgFillIcon,\n LabelPairedFiatOnrampLgBoldIcon,\n LabelPairedFiatOnrampLgRegularIcon,\n LabelPairedFiatOnrampLgFillIcon,\n LabelPairedFieldPasswordLgBoldIcon,\n LabelPairedFieldPasswordLgRegularIcon,\n LabelPairedFieldPasswordLgFillIcon,\n LabelPairedHandGestureSwipeLeftRightLgBoldIcon,\n LabelPairedHandGestureSwipeLeftRightLgRegularIcon,\n LabelPairedHandGestureSwipeLeftRightLgFillIcon,\n LabelPairedHandGestureTapLeftLgBoldIcon,\n LabelPairedHandGestureTapLeftLgRegularIcon,\n LabelPairedHandGestureTapLeftLgFillIcon,\n LabelPairedHandGestureTapRightLgBoldIcon,\n LabelPairedHandGestureTapRightLgRegularIcon,\n LabelPairedHandGestureTapRightLgFillIcon,\n LabelPairedHorizontalRuleDashedLgBoldIcon,\n LabelPairedHorizontalRuleDashedLgRegularIcon,\n LabelPairedHorizontalRuleDashedLgFillIcon,\n LabelPairedLightUserTieCircleDollarLgBoldIcon,\n LabelPairedLightUserTieCircleDollarLgRegularIcon,\n LabelPairedLightUserTieCircleDollarLgFillIcon,\n LabelPairedLockPatternLgBoldIcon,\n LabelPairedLockPatternLgRegularIcon,\n LabelPairedLockPatternLgFillIcon,\n LabelPairedMobileNotchRotateLgBoldIcon,\n LabelPairedMobileNotchRotateLgRegularIcon,\n LabelPairedMobileNotchRotateLgFillIcon,\n LabelPairedPageCircleArrowRightLgBoldIcon,\n LabelPairedPageCircleArrowRightLgRegularIcon,\n LabelPairedPageCircleArrowRightLgFillIcon,\n LabelPairedPasskeyLgBoldIcon,\n LabelPairedPasskeyLgRegularIcon,\n LabelPairedPasskeyLgFillIcon,\n LabelPairedPlaybackSpeedLgBoldIcon,\n LabelPairedPlaybackSpeedLgRegularIcon,\n LabelPairedPlaybackSpeedLgFillIcon,\n LabelPairedPuzzlePieceTwoLgBoldIcon,\n LabelPairedPuzzlePieceTwoLgRegularIcon,\n LabelPairedPuzzlePieceTwoLgFillIcon,\n LabelPairedRotateDeviceLgBoldIcon,\n LabelPairedRotateDeviceLgRegularIcon,\n LabelPairedRotateDeviceLgFillIcon,\n LabelPairedStopLossLgBoldIcon,\n LabelPairedStopLossLgRegularIcon,\n LabelPairedStopLossLgFillIcon,\n LabelPairedTakeProfitLgBoldIcon,\n LabelPairedTakeProfitLgRegularIcon,\n LabelPairedTakeProfitLgFillIcon,\n LabelPairedWalletCircleMinusLgBoldIcon,\n LabelPairedWalletCircleMinusLgRegularIcon,\n LabelPairedWalletCircleMinusLgFillIcon,\n LabelPairedWalletCirclePlusLgBoldIcon,\n LabelPairedWalletCirclePlusLgRegularIcon,\n LabelPairedWalletCirclePlusLgFillIcon,\n LabelPairedWalletSignalLgBoldIcon,\n LabelPairedWalletSignalLgRegularIcon,\n LabelPairedWalletSignalLgFillIcon,\n LabelPairedDerivLgIcon,\n LabelPairedDerivBrandLogoLgRegularIcon,\n LabelPairedDerivBrandLogoLgFillIcon,\n} from \"@deriv/quill-icons/LabelPaired\"\n\nimport {\n StandaloneHarmonyOsIcon,\n StandaloneHuaweiIcon,\n StandaloneHuaweiAppGalleryIcon,\n StandaloneIosIcon,\n StandaloneIpadosIcon,\n StandaloneMacosIcon,\n StandaloneMicrosoftStoreIcon,\n StandaloneTrustpilotIcon,\n} from \"@deriv/quill-icons/Standalone\"\n\n/* ─── Types ───────────────────────────────────────────────────────────────── */\n\n// Quill icons are ForwardRefExoticComponent, not directly assignable to ComponentType.\n// Using a loose callable type avoids per-entry `as` casts while keeping JSX render safe.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype QIcon = (props: any) => React.ReactNode\ntype WeightTuple = { regular?: QIcon; bold: QIcon; fill?: QIcon }\n\n/* ─── Icon name keys ─────────────────────────────────────────────────────── */\n// This object is the sole source of truth for `IconName`. Values are 1 so that\n// no Quill component types appear in this object's inferred type, which prevents\n// TS4023 \"cannot be named\" errors during declaration-file generation.\nconst _iconKeys = {\n \"arrow-down-to-line\": 1, \"arrow-left\": 1, \"arrow-right\": 1,\n \"arrow-right-arrow-left\": 1, \"arrows-left-right\": 1,\n \"arrow-up-right\": 1, \"arrow-up-right-from-square\": 1,\n \"rotate-right\": 1, \"clock-rotate-left\": 1, \"arrow-up-from-line\": 1,\n \"chevron-down\": 1, \"chevron-left\": 1, \"chevron-right\": 1, \"chevron-up\": 1,\n \"bell\": 1,\n \"chart-bar\": 1, \"chart-candlestick\": 1, \"chart-line\": 1, \"chart-tradingview\": 1,\n \"chart-trend-down\": 1, \"chart-trend-still\": 1, \"chart-trend-up\": 1,\n \"arrow-trend-down\": 1, \"arrow-trend-up\": 1,\n \"ohlc\": 1, \"chart-line-up-down-clock\": 1, \"chart-line-clock\": 1,\n \"circle\": 1, \"circle-check\": 1, \"circle-exclamation\": 1, \"circle-info\": 1,\n \"circle-user-slash\": 1,\n \"copy\": 1, \"dollar-sign\": 1, \"ellipsis\": 1,\n \"envelope\": 1, \"envelope-open\": 1,\n \"eye\": 1, \"eye-slash\": 1,\n \"file-lines\": 1, \"file-xmark\": 1,\n \"fingerprint\": 1, \"gear\": 1, \"globe\": 1, \"grip-vertical\": 1,\n \"house\": 1, \"house-blank\": 1,\n \"image\": 1, \"inbox\": 1,\n \"magnifying-glass\": 1,\n \"minus\": 1, \"moon\": 1, \"phone\": 1, \"plus\": 1,\n \"right-from-bracket\": 1,\n \"sparkles\": 1, \"spinner\": 1,\n \"square\": 1, \"square-check\": 1, \"square-minus\": 1,\n \"star\": 1, \"sun\": 1,\n \"table-cells-large\": 1, \"table-columns\": 1,\n \"trash\": 1, \"trash-can\": 1,\n \"triangle-exclamation\": 1, \"user\": 1, \"wallet\": 1, \"xmark\": 1,\n \"check\": 1, \"options\": 1,\n \"crosshairs-slash\": 1, \"book-open\": 1, \"calculator\": 1,\n \"deriv\": 1,\n \"book-circle-question\": 1, \"book-open-cover-circle-question\": 1,\n \"box-archive-circle-arrow-down\": 1, \"box-archive-circle-arrow-up\": 1,\n \"deal-cancellation\": 1, \"deal-protection\": 1, \"deriv-p2p\": 1,\n \"fiat-offramp\": 1, \"fiat-onramp\": 1, \"field-password\": 1,\n \"hand-gesture-swipe-left-right\": 1, \"hand-gesture-tap-left\": 1, \"hand-gesture-tap-right\": 1,\n \"horizontal-rule-dashed\": 1, \"lock-pattern\": 1, \"mobile-notch-rotate\": 1,\n \"page-circle-arrow-right\": 1, \"passkey\": 1, \"playback-speed\": 1,\n \"puzzles-piece-two\": 1, \"quill\": 1, \"rotate-device\": 1,\n \"stop-loss\": 1, \"take-profit\": 1,\n \"user-tie-circle-dollar\": 1,\n \"wallet-circle-minus\": 1, \"wallet-circle-plus\": 1, \"wallet-signal\": 1,\n \"user-circle-arrow-right\": 1, \"user-circle-arrow-up\": 1,\n \"calendar-circle-arrow-left\": 1, \"calendar-circle-arrow-right\": 1,\n \"file-lines-magnifying-glass\": 1,\n \"handshake-lock\": 1, \"handshake-shield\": 1, \"memo-shield\": 1,\n \"pen-field-circle-xmark\": 1, \"pen-field-lock\": 1, \"pen-field-slash\": 1,\n \"rectangle-history-circle-dollar\": 1,\n \"shield-circle-check\": 1, \"shield-halved-circle-minus\": 1,\n \"shield-halved-lock\": 1, \"shield-lock\": 1,\n \"user-circle-dollar\": 1, \"user-large-circle-dollar\": 1,\n \"users-line-circle-dollar\": 1, \"users-rectangle-circle-dollar\": 1,\n \"brand-harmony-os\": 1, \"brand-huawei\": 1, \"brand-huawei-app-gallery\": 1,\n \"brand-ios\": 1, \"brand-ipados\": 1, \"brand-macos\": 1,\n \"brand-microsoft-store\": 1, \"brand-trustpilot\": 1,\n} as const\n\n/* ─── Icon map ────────────────────────────────────────────────────────────── */\n\n// Explicitly typed so TypeScript uses the annotation for DTS — it never infers\n// value types from the Quill components, preventing TS4023 during declaration emit.\nconst iconMap: Record<keyof typeof _iconKeys, WeightTuple> = {\n // ── Arrows / navigation ───────────────────────────────────────────────────\n \"arrow-down-to-line\": {\n regular: LabelPairedArrowDownToLineMdRegularIcon,\n bold: LabelPairedArrowDownToLineMdBoldIcon,\n fill: LabelPairedArrowDownToLineMdFillIcon,\n },\n \"arrow-left\": {\n regular: LabelPairedArrowLeftMdRegularIcon,\n bold: LabelPairedArrowLeftMdBoldIcon,\n fill: LabelPairedArrowLeftMdFillIcon,\n },\n \"arrow-right\": {\n regular: LabelPairedArrowRightMdRegularIcon,\n bold: LabelPairedArrowRightMdBoldIcon,\n fill: LabelPairedArrowRightMdFillIcon,\n },\n \"arrow-right-arrow-left\": {\n regular: LabelPairedArrowRightArrowLeftMdRegularIcon,\n bold: LabelPairedArrowRightArrowLeftMdBoldIcon,\n fill: LabelPairedArrowRightArrowLeftMdFillIcon,\n },\n // arrows-left-right (↔) — closest visual is ArrowRightArrowLeft\n \"arrows-left-right\": {\n regular: LabelPairedArrowRightArrowLeftMdRegularIcon,\n bold: LabelPairedArrowRightArrowLeftMdBoldIcon,\n fill: LabelPairedArrowRightArrowLeftMdFillIcon,\n },\n \"arrow-up-right\": {\n regular: LabelPairedArrowUpRightMdRegularIcon,\n bold: LabelPairedArrowUpRightMdBoldIcon,\n fill: LabelPairedArrowUpRightMdFillIcon,\n },\n \"arrow-up-right-from-square\": {\n regular: LabelPairedArrowUpRightFromSquareMdRegularIcon,\n bold: LabelPairedArrowUpRightFromSquareMdBoldIcon,\n fill: LabelPairedArrowUpRightFromSquareMdFillIcon,\n },\n // rotate-right (↻) → ArrowRotateRight\n \"rotate-right\": {\n regular: LabelPairedArrowRotateRightMdRegularIcon,\n bold: LabelPairedArrowRotateRightMdBoldIcon,\n fill: LabelPairedArrowRotateRightMdFillIcon,\n },\n // clock-rotate-left (↺) → ArrowRotateLeft\n \"clock-rotate-left\": {\n regular: LabelPairedArrowRotateLeftMdRegularIcon,\n bold: LabelPairedArrowRotateLeftMdBoldIcon,\n fill: LabelPairedArrowRotateLeftMdFillIcon,\n },\n // arrow-up-from-line → ArrowUpToLine (closest)\n \"arrow-up-from-line\": {\n regular: LabelPairedArrowUpToLineMdRegularIcon,\n bold: LabelPairedArrowUpToLineMdBoldIcon,\n fill: LabelPairedArrowUpToLineMdFillIcon,\n },\n // ── Chevrons ──────────────────────────────────────────────────────────────\n \"chevron-down\": {\n regular: LabelPairedChevronDownMdRegularIcon,\n bold: LabelPairedChevronDownMdBoldIcon,\n fill: LabelPairedChevronDownMdFillIcon,\n },\n \"chevron-left\": {\n regular: LabelPairedChevronLeftMdRegularIcon,\n bold: LabelPairedChevronLeftMdBoldIcon,\n fill: LabelPairedChevronLeftMdFillIcon,\n },\n \"chevron-right\": {\n regular: LabelPairedChevronRightMdRegularIcon,\n bold: LabelPairedChevronRightMdBoldIcon,\n fill: LabelPairedChevronRightMdFillIcon,\n },\n \"chevron-up\": {\n regular: LabelPairedChevronUpMdRegularIcon,\n bold: LabelPairedChevronUpMdBoldIcon,\n fill: LabelPairedChevronUpMdFillIcon,\n },\n // ── Bell ──────────────────────────────────────────────────────────────────\n \"bell\": {\n regular: LabelPairedBellMdRegularIcon,\n bold: LabelPairedBellMdBoldIcon,\n fill: LabelPairedBellMdFillIcon,\n },\n \"check\": {\n regular: LabelPairedCheckMdRegularIcon,\n bold: LabelPairedCheckMdBoldIcon,\n fill: LabelPairedCheckMdFillIcon,\n },\n // ── Charts ────────────────────────────────────────────────────────────────\n \"chart-bar\": {\n regular: LabelPairedChartMixedMdRegularIcon,\n bold: LabelPairedChartMixedMdBoldIcon,\n fill: LabelPairedChartMixedMdFillIcon,\n },\n \"chart-candlestick\": {\n regular: LabelPairedChartCandlestickMdRegularIcon,\n bold: LabelPairedChartCandlestickMdBoldIcon,\n fill: LabelPairedChartCandlestickMdFillIcon,\n },\n \"chart-line\": {\n regular: LabelPairedChartLineMdRegularIcon,\n bold: LabelPairedChartLineMdBoldIcon,\n fill: LabelPairedChartLineMdFillIcon,\n },\n \"chart-tradingview\": {\n regular: LabelPairedChartTradingviewMdRegularIcon,\n bold: LabelPairedChartTradingviewMdBoldIcon,\n fill: LabelPairedChartTradingviewMdFillIcon,\n },\n \"chart-trend-down\": {\n regular: LabelPairedChartTrendDownMdRegularIcon,\n bold: LabelPairedChartTrendDownMdBoldIcon,\n fill: LabelPairedChartTrendDownMdFillIcon,\n },\n \"chart-trend-still\": {\n regular: LabelPairedChartTrendSidewayMdRegularIcon,\n bold: LabelPairedChartTrendSidewayMdBoldIcon,\n fill: LabelPairedChartTrendSidewayMdFillIcon,\n },\n \"chart-trend-up\": {\n regular: LabelPairedChartTrendUpMdRegularIcon,\n bold: LabelPairedChartTrendUpMdBoldIcon,\n fill: LabelPairedChartTrendUpMdFillIcon,\n },\n // arrow-trend-* → same as chart-trend-*\n \"arrow-trend-down\": {\n regular: LabelPairedChartTrendDownMdRegularIcon,\n bold: LabelPairedChartTrendDownMdBoldIcon,\n fill: LabelPairedChartTrendDownMdFillIcon,\n },\n \"arrow-trend-up\": {\n regular: LabelPairedChartTrendUpMdRegularIcon,\n bold: LabelPairedChartTrendUpMdBoldIcon,\n fill: LabelPairedChartTrendUpMdFillIcon,\n },\n \"ohlc\": {\n regular: LabelPairedChartOhlcMdRegularIcon,\n bold: LabelPairedChartOhlcMdBoldIcon,\n fill: LabelPairedChartOhlcMdFillIcon,\n },\n \"chart-line-up-down-clock\": {\n regular: LabelPairedLightChartLineUpDownClockMdRegularIcon,\n bold: LabelPairedLightChartLineUpDownClockMdBoldIcon,\n fill: LabelPairedLightChartLineUpDownClockMdFillIcon,\n },\n // chart-line-clock — no direct quill equivalent; falls back to chart-line TODO: design team review\n \"chart-line-clock\": {\n regular: LabelPairedChartLineMdRegularIcon,\n bold: LabelPairedChartLineMdBoldIcon,\n fill: LabelPairedChartLineMdFillIcon,\n },\n // ── Circle variants ───────────────────────────────────────────────────────\n \"circle\": {\n regular: LabelPairedCircleMdRegularIcon,\n bold: LabelPairedCircleMdBoldIcon,\n fill: LabelPairedCircleMdFillIcon,\n },\n \"circle-check\": {\n regular: LabelPairedCircleCheckMdRegularIcon,\n bold: LabelPairedCircleCheckMdBoldIcon,\n fill: LabelPairedCircleCheckMdFillIcon,\n },\n \"circle-exclamation\": {\n regular: LabelPairedCircleExclamationMdRegularIcon,\n bold: LabelPairedCircleExclamationMdBoldIcon,\n fill: LabelPairedCircleExclamationMdFillIcon,\n },\n \"circle-info\": {\n regular: LabelPairedCircleInfoMdRegularIcon,\n bold: LabelPairedCircleInfoMdBoldIcon,\n fill: LabelPairedCircleInfoMdFillIcon,\n },\n \"circle-user-slash\": {\n regular: LabelPairedCircleUserSlashMdRegularIcon,\n bold: LabelPairedCircleUserSlashMdBoldIcon,\n fill: LabelPairedCircleUserSlashMdFillIcon,\n },\n // ── Copy / files ──────────────────────────────────────────────────────────\n \"copy\": {\n regular: LabelPairedCopyMdRegularIcon,\n bold: LabelPairedCopyMdBoldIcon,\n fill: LabelPairedCopyMdFillIcon,\n },\n \"dollar-sign\": {\n regular: LabelPairedDollarSignMdRegularIcon,\n bold: LabelPairedDollarSignMdBoldIcon,\n fill: LabelPairedDollarSignMdFillIcon,\n },\n \"ellipsis\": {\n regular: LabelPairedEllipsisMdRegularIcon,\n bold: LabelPairedEllipsisMdBoldIcon,\n fill: LabelPairedEllipsisMdFillIcon,\n },\n \"envelope\": {\n regular: LabelPairedEnvelopeMdRegularIcon,\n bold: LabelPairedEnvelopeMdBoldIcon,\n fill: LabelPairedEnvelopeMdFillIcon,\n },\n // envelope-open — no direct Quill equivalent; falls back to Envelope TODO: design team review\n \"envelope-open\": {\n regular: LabelPairedEnvelopeMdRegularIcon,\n bold: LabelPairedEnvelopeMdBoldIcon,\n fill: LabelPairedEnvelopeMdFillIcon,\n },\n \"eye\": {\n regular: LabelPairedEyeMdRegularIcon,\n bold: LabelPairedEyeMdBoldIcon,\n fill: LabelPairedEyeMdFillIcon,\n },\n \"eye-slash\": {\n regular: LabelPairedEyeSlashMdRegularIcon,\n bold: LabelPairedEyeSlashMdBoldIcon,\n fill: LabelPairedEyeSlashMdFillIcon,\n },\n \"file-lines\": {\n regular: LabelPairedFileLinesMdRegularIcon,\n bold: LabelPairedFileLinesMdBoldIcon,\n fill: LabelPairedFileLinesMdFillIcon,\n },\n // file-xmark — no direct Quill equivalent; falls back to FileLines TODO: design team review\n \"file-xmark\": {\n regular: LabelPairedFileLinesMdRegularIcon,\n bold: LabelPairedFileLinesMdBoldIcon,\n fill: LabelPairedFileLinesMdFillIcon,\n },\n \"fingerprint\": {\n regular: LabelPairedFingerprintMdRegularIcon,\n bold: LabelPairedFingerprintMdBoldIcon,\n fill: LabelPairedFingerprintMdFillIcon,\n },\n \"gear\": {\n regular: LabelPairedGearMdRegularIcon,\n bold: LabelPairedGearMdBoldIcon,\n fill: LabelPairedGearMdFillIcon,\n },\n \"globe\": {\n regular: LabelPairedGlobeMdRegularIcon,\n bold: LabelPairedGlobeMdBoldIcon,\n fill: LabelPairedGlobeMdFillIcon,\n },\n \"grip-vertical\": {\n regular: LabelPairedGripDotsVerticalMdRegularIcon,\n bold: LabelPairedGripDotsVerticalMdBoldIcon,\n fill: LabelPairedGripDotsVerticalMdFillIcon,\n },\n // house → HouseBlank\n \"house\": {\n regular: LabelPairedHouseBlankMdRegularIcon,\n bold: LabelPairedHouseBlankMdBoldIcon,\n fill: LabelPairedHouseBlankMdFillIcon,\n },\n \"house-blank\": {\n regular: LabelPairedHouseBlankMdRegularIcon,\n bold: LabelPairedHouseBlankMdBoldIcon,\n fill: LabelPairedHouseBlankMdFillIcon,\n },\n \"image\": {\n regular: LabelPairedImageMdRegularIcon,\n bold: LabelPairedImageMdBoldIcon,\n fill: LabelPairedImageMdFillIcon,\n },\n // inbox — no direct Quill equivalent; falls back to ArrowDownToBracket TODO: design team review\n \"inbox\": {\n regular: LabelPairedArrowDownToBracketMdRegularIcon,\n bold: LabelPairedArrowDownToBracketMdBoldIcon,\n fill: LabelPairedArrowDownToBracketMdFillIcon,\n },\n // magnifying-glass → Search\n \"magnifying-glass\": {\n regular: LabelPairedSearchMdRegularIcon,\n bold: LabelPairedSearchMdBoldIcon,\n fill: LabelPairedSearchMdFillIcon,\n },\n \"minus\": {\n regular: LabelPairedMinusMdRegularIcon,\n bold: LabelPairedMinusMdBoldIcon,\n fill: LabelPairedMinusMdFillIcon,\n },\n \"moon\": {\n regular: LabelPairedMoonMdRegularIcon,\n bold: LabelPairedMoonMdBoldIcon,\n fill: LabelPairedMoonMdFillIcon,\n },\n \"phone\": {\n regular: LabelPairedPhoneMdRegularIcon,\n bold: LabelPairedPhoneMdBoldIcon,\n fill: LabelPairedPhoneMdFillIcon,\n },\n \"plus\": {\n regular: LabelPairedPlusMdRegularIcon,\n bold: LabelPairedPlusMdBoldIcon,\n fill: LabelPairedPlusMdFillIcon,\n },\n \"right-from-bracket\": {\n regular: LabelPairedRightFromBracketMdRegularIcon,\n bold: LabelPairedRightFromBracketMdBoldIcon,\n fill: LabelPairedRightFromBracketMdFillIcon,\n },\n \"sparkles\": {\n regular: LabelPairedSparklesMdRegularIcon,\n bold: LabelPairedSparklesMdBoldIcon,\n fill: LabelPairedSparklesMdFillIcon,\n },\n // spinner → Loader\n \"spinner\": {\n regular: LabelPairedLoaderMdRegularIcon,\n bold: LabelPairedLoaderMdBoldIcon,\n fill: LabelPairedLoaderMdFillIcon,\n },\n \"square\": {\n regular: LabelPairedSquareMdRegularIcon,\n bold: LabelPairedSquareMdBoldIcon,\n fill: LabelPairedSquareMdFillIcon,\n },\n \"square-check\": {\n regular: LabelPairedSquareCheckMdRegularIcon,\n bold: LabelPairedSquareCheckMdBoldIcon,\n fill: LabelPairedSquareCheckMdFillIcon,\n },\n \"square-minus\": {\n regular: LabelPairedSquareMinusMdRegularIcon,\n bold: LabelPairedSquareMinusMdBoldIcon,\n fill: LabelPairedSquareMinusMdFillIcon,\n },\n \"star\": {\n regular: LabelPairedStarMdRegularIcon,\n bold: LabelPairedStarMdBoldIcon,\n fill: LabelPairedStarMdFillIcon,\n },\n // sun → SunBright\n \"sun\": {\n regular: LabelPairedSunBrightMdRegularIcon,\n bold: LabelPairedSunBrightMdBoldIcon,\n fill: LabelPairedSunBrightMdFillIcon,\n },\n // table-cells-large → Grid2\n \"table-cells-large\": {\n regular: LabelPairedGrid2MdRegularIcon,\n bold: LabelPairedGrid2MdBoldIcon,\n fill: LabelPairedGrid2MdFillIcon,\n },\n // table-columns → ObjectsColumn\n \"table-columns\": {\n regular: LabelPairedObjectsColumnMdRegularIcon,\n bold: LabelPairedObjectsColumnMdBoldIcon,\n fill: LabelPairedObjectsColumnMdFillIcon,\n },\n \"trash\": {\n regular: LabelPairedTrashMdRegularIcon,\n bold: LabelPairedTrashMdBoldIcon,\n fill: LabelPairedTrashMdFillIcon,\n },\n // trash-can → same as trash\n \"trash-can\": {\n regular: LabelPairedTrashMdRegularIcon,\n bold: LabelPairedTrashMdBoldIcon,\n fill: LabelPairedTrashMdFillIcon,\n },\n \"triangle-exclamation\": {\n regular: LabelPairedTriangleExclamationMdRegularIcon,\n bold: LabelPairedTriangleExclamationMdBoldIcon,\n fill: LabelPairedTriangleExclamationMdFillIcon,\n },\n \"user\": {\n regular: LabelPairedUserMdRegularIcon,\n bold: LabelPairedUserMdBoldIcon,\n fill: LabelPairedUserMdFillIcon,\n },\n \"wallet\": {\n regular: LabelPairedWalletMdRegularIcon,\n bold: LabelPairedWalletMdBoldIcon,\n fill: LabelPairedWalletMdFillIcon,\n },\n \"xmark\": {\n regular: LabelPairedXmarkMdRegularIcon,\n bold: LabelPairedXmarkMdBoldIcon,\n fill: LabelPairedXmarkMdFillIcon,\n },\n // crosshairs-slash → LocationCrosshairsSlash\n \"crosshairs-slash\": {\n regular: LabelPairedLocationCrosshairsSlashMdRegularIcon,\n bold: LabelPairedLocationCrosshairsSlashMdBoldIcon,\n fill: LabelPairedLocationCrosshairsSlashMdFillIcon,\n },\n // ── Layout ────────────────────────────────────────────────────────────────\n // book-open — no direct Quill equivalent; falls back to FolderOpen TODO: design team review\n \"book-open\": {\n regular: LabelPairedFolderOpenMdRegularIcon,\n bold: LabelPairedFolderOpenMdBoldIcon,\n fill: LabelPairedFolderOpenMdFillIcon,\n },\n // calculator — no direct Quill equivalent; falls back to Gear TODO: design team review\n \"calculator\": {\n regular: LabelPairedGearMdRegularIcon,\n bold: LabelPairedGearMdBoldIcon,\n fill: LabelPairedGearMdFillIcon,\n },\n // ── Deriv icons ───────────────────────────────────────────────────────────\n // deriv logo — DerivBrandLogo has Regular + Fill only; Bold falls back to Fill\n \"deriv\": {\n regular: LabelPairedDerivBrandLogoMdRegularIcon,\n bold: LabelPairedDerivMdIcon,\n fill: LabelPairedDerivBrandLogoMdFillIcon,\n },\n \"book-circle-question\": {\n regular: LabelPairedBookCircleQuestionMdRegularIcon,\n bold: LabelPairedBookCircleQuestionMdBoldIcon,\n fill: LabelPairedBookCircleQuestionMdFillIcon,\n },\n // book-open-cover-circle-question — falls back to BookCircleQuestion TODO: design team review\n \"book-open-cover-circle-question\": {\n regular: LabelPairedBookCircleQuestionMdRegularIcon,\n bold: LabelPairedBookCircleQuestionMdBoldIcon,\n fill: LabelPairedBookCircleQuestionMdFillIcon,\n },\n \"box-archive-circle-arrow-down\": {\n regular: LabelPairedBoxArchiveCircleArrowDownMdRegularIcon,\n bold: LabelPairedBoxArchiveCircleArrowDownMdBoldIcon,\n fill: LabelPairedBoxArchiveCircleArrowDownMdFillIcon,\n },\n \"box-archive-circle-arrow-up\": {\n regular: LabelPairedBoxArchiveCircleArrowUpMdRegularIcon,\n bold: LabelPairedBoxArchiveCircleArrowUpMdBoldIcon,\n fill: LabelPairedBoxArchiveCircleArrowUpMdFillIcon,\n },\n \"deal-cancellation\": {\n regular: LabelPairedDealCancellationMdRegularIcon,\n bold: LabelPairedDealCancellationMdBoldIcon,\n fill: LabelPairedDealCancellationMdFillIcon,\n },\n \"deal-protection\": {\n regular: LabelPairedDealProtectionMdRegularIcon,\n bold: LabelPairedDealProtectionMdBoldIcon,\n fill: LabelPairedDealProtectionMdFillIcon,\n },\n \"deriv-p2p\": {\n regular: LabelPairedDerivP2pMdRegularIcon,\n bold: LabelPairedDerivP2pMdBoldIcon,\n fill: LabelPairedDerivP2pMdFillIcon,\n },\n \"fiat-offramp\": {\n regular: LabelPairedFiatOfframpMdRegularIcon,\n bold: LabelPairedFiatOfframpMdBoldIcon,\n fill: LabelPairedFiatOfframpMdFillIcon,\n },\n \"fiat-onramp\": {\n regular: LabelPairedFiatOnrampMdRegularIcon,\n bold: LabelPairedFiatOnrampMdBoldIcon,\n fill: LabelPairedFiatOnrampMdFillIcon,\n },\n \"field-password\": {\n regular: LabelPairedFieldPasswordMdRegularIcon,\n bold: LabelPairedFieldPasswordMdBoldIcon,\n fill: LabelPairedFieldPasswordMdFillIcon,\n },\n \"hand-gesture-swipe-left-right\": {\n regular: LabelPairedHandGestureSwipeLeftRightMdRegularIcon,\n bold: LabelPairedHandGestureSwipeLeftRightMdBoldIcon,\n fill: LabelPairedHandGestureSwipeLeftRightMdFillIcon,\n },\n \"hand-gesture-tap-left\": {\n regular: LabelPairedHandGestureTapLeftMdRegularIcon,\n bold: LabelPairedHandGestureTapLeftMdBoldIcon,\n fill: LabelPairedHandGestureTapLeftMdFillIcon,\n },\n \"hand-gesture-tap-right\": {\n regular: LabelPairedHandGestureTapRightMdRegularIcon,\n bold: LabelPairedHandGestureTapRightMdBoldIcon,\n fill: LabelPairedHandGestureTapRightMdFillIcon,\n },\n \"horizontal-rule-dashed\": {\n regular: LabelPairedHorizontalRuleDashedMdRegularIcon,\n bold: LabelPairedHorizontalRuleDashedMdBoldIcon,\n fill: LabelPairedHorizontalRuleDashedMdFillIcon,\n },\n \"lock-pattern\": {\n regular: LabelPairedLockPatternMdRegularIcon,\n bold: LabelPairedLockPatternMdBoldIcon,\n fill: LabelPairedLockPatternMdFillIcon,\n },\n \"mobile-notch-rotate\": {\n regular: LabelPairedMobileNotchRotateMdRegularIcon,\n bold: LabelPairedMobileNotchRotateMdBoldIcon,\n fill: LabelPairedMobileNotchRotateMdFillIcon,\n },\n \"page-circle-arrow-right\": {\n regular: LabelPairedPageCircleArrowRightMdRegularIcon,\n bold: LabelPairedPageCircleArrowRightMdBoldIcon,\n fill: LabelPairedPageCircleArrowRightMdFillIcon,\n },\n \"passkey\": {\n regular: LabelPairedPasskeyMdRegularIcon,\n bold: LabelPairedPasskeyMdBoldIcon,\n fill: LabelPairedPasskeyMdFillIcon,\n },\n \"playback-speed\": {\n regular: LabelPairedPlaybackSpeedMdRegularIcon,\n bold: LabelPairedPlaybackSpeedMdBoldIcon,\n fill: LabelPairedPlaybackSpeedMdFillIcon,\n },\n \"puzzles-piece-two\": {\n regular: LabelPairedPuzzlePieceTwoMdRegularIcon,\n bold: LabelPairedPuzzlePieceTwoMdBoldIcon,\n fill: LabelPairedPuzzlePieceTwoMdFillIcon,\n },\n // options — Quill has no Md Bold variant; uses Fill for bold TODO: design team review\n \"options\": {\n regular: LabelPairedOptionsMdRegularIcon,\n bold: LabelPairedOptionsMdFillIcon,\n fill: LabelPairedOptionsMdFillIcon,\n },\n // quill — no dedicated Quill equivalent; falls back to Pen TODO: design team review\n \"quill\": {\n regular: LabelPairedPenMdRegularIcon,\n bold: LabelPairedPenMdBoldIcon,\n fill: LabelPairedPenMdFillIcon,\n },\n \"rotate-device\": {\n regular: LabelPairedRotateDeviceMdRegularIcon,\n bold: LabelPairedRotateDeviceMdBoldIcon,\n fill: LabelPairedRotateDeviceMdFillIcon,\n },\n \"stop-loss\": {\n regular: LabelPairedStopLossMdRegularIcon,\n bold: LabelPairedStopLossMdBoldIcon,\n fill: LabelPairedStopLossMdFillIcon,\n },\n \"take-profit\": {\n regular: LabelPairedTakeProfitMdRegularIcon,\n bold: LabelPairedTakeProfitMdBoldIcon,\n fill: LabelPairedTakeProfitMdFillIcon,\n },\n \"user-tie-circle-dollar\": {\n regular: LabelPairedLightUserTieCircleDollarMdRegularIcon,\n bold: LabelPairedLightUserTieCircleDollarMdBoldIcon,\n fill: LabelPairedLightUserTieCircleDollarMdFillIcon,\n },\n \"wallet-circle-minus\": {\n regular: LabelPairedWalletCircleMinusMdRegularIcon,\n bold: LabelPairedWalletCircleMinusMdBoldIcon,\n fill: LabelPairedWalletCircleMinusMdFillIcon,\n },\n \"wallet-circle-plus\": {\n regular: LabelPairedWalletCirclePlusMdRegularIcon,\n bold: LabelPairedWalletCirclePlusMdBoldIcon,\n fill: LabelPairedWalletCirclePlusMdFillIcon,\n },\n \"wallet-signal\": {\n regular: LabelPairedWalletSignalMdRegularIcon,\n bold: LabelPairedWalletSignalMdBoldIcon,\n fill: LabelPairedWalletSignalMdFillIcon,\n },\n // ── Custom Deriv kit icons — pending Quill equivalents TODO: design team review ──\n // These were FA Pro kit (a9f9eb613f / 394c25e5aa) custom uploads that don't\n // have a matching LabelPaired icon. Mapped to nearest visual substitute.\n \"user-circle-arrow-right\": {\n regular: LabelPairedCircleUserMdRegularIcon,\n bold: LabelPairedCircleUserMdBoldIcon,\n fill: LabelPairedCircleUserMdFillIcon,\n },\n \"user-circle-arrow-up\": {\n regular: LabelPairedCircleUserMdRegularIcon,\n bold: LabelPairedCircleUserMdBoldIcon,\n fill: LabelPairedCircleUserMdFillIcon,\n },\n \"calendar-circle-arrow-left\": {\n regular: LabelPairedCalendarMdRegularIcon,\n bold: LabelPairedCalendarMdBoldIcon,\n fill: LabelPairedCalendarMdFillIcon,\n },\n \"calendar-circle-arrow-right\": {\n regular: LabelPairedCalendarMdRegularIcon,\n bold: LabelPairedCalendarMdBoldIcon,\n fill: LabelPairedCalendarMdFillIcon,\n },\n \"file-lines-magnifying-glass\": {\n regular: LabelPairedFileLinesMdRegularIcon,\n bold: LabelPairedFileLinesMdBoldIcon,\n fill: LabelPairedFileLinesMdFillIcon,\n },\n \"handshake-lock\": {\n regular: LabelPairedHandshakeMdRegularIcon,\n bold: LabelPairedHandshakeMdBoldIcon,\n fill: LabelPairedHandshakeMdFillIcon,\n },\n \"handshake-shield\": {\n regular: LabelPairedHandshakeMdRegularIcon,\n bold: LabelPairedHandshakeMdBoldIcon,\n fill: LabelPairedHandshakeMdFillIcon,\n },\n \"memo-shield\": {\n regular: LabelPairedMemoPadMdRegularIcon,\n bold: LabelPairedMemoPadMdBoldIcon,\n fill: LabelPairedMemoPadMdFillIcon,\n },\n \"pen-field-circle-xmark\": {\n regular: LabelPairedPenMdRegularIcon,\n bold: LabelPairedPenMdBoldIcon,\n fill: LabelPairedPenMdFillIcon,\n },\n \"pen-field-lock\": {\n regular: LabelPairedPenMdRegularIcon,\n bold: LabelPairedPenMdBoldIcon,\n fill: LabelPairedPenMdFillIcon,\n },\n \"pen-field-slash\": {\n regular: LabelPairedPenMdRegularIcon,\n bold: LabelPairedPenMdBoldIcon,\n fill: LabelPairedPenMdFillIcon,\n },\n \"rectangle-history-circle-dollar\": {\n regular: LabelPairedCircleDollarMdRegularIcon,\n bold: LabelPairedCircleDollarMdBoldIcon,\n fill: LabelPairedCircleDollarMdFillIcon,\n },\n \"shield-circle-check\": {\n regular: LabelPairedShieldCheckMdRegularIcon,\n bold: LabelPairedShieldCheckMdBoldIcon,\n fill: LabelPairedShieldCheckMdFillIcon,\n },\n \"shield-halved-circle-minus\": {\n regular: LabelPairedShieldCheckMdRegularIcon,\n bold: LabelPairedShieldCheckMdBoldIcon,\n fill: LabelPairedShieldCheckMdFillIcon,\n },\n \"shield-halved-lock\": {\n regular: LabelPairedShieldCheckMdRegularIcon,\n bold: LabelPairedShieldCheckMdBoldIcon,\n fill: LabelPairedShieldCheckMdFillIcon,\n },\n \"shield-lock\": {\n regular: LabelPairedShieldCheckMdRegularIcon,\n bold: LabelPairedShieldCheckMdBoldIcon,\n fill: LabelPairedShieldCheckMdFillIcon,\n },\n \"user-circle-dollar\": {\n regular: LabelPairedCircleDollarMdRegularIcon,\n bold: LabelPairedCircleDollarMdBoldIcon,\n fill: LabelPairedCircleDollarMdFillIcon,\n },\n \"user-large-circle-dollar\": {\n regular: LabelPairedCircleDollarMdRegularIcon,\n bold: LabelPairedCircleDollarMdBoldIcon,\n fill: LabelPairedCircleDollarMdFillIcon,\n },\n \"users-line-circle-dollar\": {\n regular: LabelPairedCircleDollarMdRegularIcon,\n bold: LabelPairedCircleDollarMdBoldIcon,\n fill: LabelPairedCircleDollarMdFillIcon,\n },\n \"users-rectangle-circle-dollar\": {\n regular: LabelPairedCircleDollarMdRegularIcon,\n bold: LabelPairedCircleDollarMdBoldIcon,\n fill: LabelPairedCircleDollarMdFillIcon,\n },\n // ── Brand / standalone icons (single weight) ──────────────────────────────\n \"brand-harmony-os\": {\n bold: StandaloneHarmonyOsIcon,\n },\n \"brand-huawei\": {\n bold: StandaloneHuaweiIcon,\n },\n \"brand-huawei-app-gallery\": {\n bold: StandaloneHuaweiAppGalleryIcon,\n },\n \"brand-ios\": {\n bold: StandaloneIosIcon,\n },\n \"brand-ipados\": {\n bold: StandaloneIpadosIcon,\n },\n \"brand-macos\": {\n bold: StandaloneMacosIcon,\n },\n \"brand-microsoft-store\": {\n bold: StandaloneMicrosoftStoreIcon,\n },\n \"brand-trustpilot\": {\n bold: StandaloneTrustpilotIcon,\n },\n}\n\nconst iconMapSm: Partial<Record<keyof typeof _iconKeys, WeightTuple>> = {\n // ── Arrows / navigation ───────────────────────────────────────────────────\n \"arrow-down-to-line\": {\n regular: LabelPairedArrowDownToLineSmRegularIcon,\n bold: LabelPairedArrowDownToLineSmBoldIcon,\n fill: LabelPairedArrowDownToLineSmFillIcon,\n },\n \"arrow-left\": {\n regular: LabelPairedArrowLeftSmRegularIcon,\n bold: LabelPairedArrowLeftSmBoldIcon,\n fill: LabelPairedArrowLeftSmFillIcon,\n },\n \"arrow-right\": {\n regular: LabelPairedArrowRightSmRegularIcon,\n bold: LabelPairedArrowRightSmBoldIcon,\n fill: LabelPairedArrowRightSmFillIcon,\n },\n \"arrow-right-arrow-left\": {\n regular: LabelPairedArrowRightArrowLeftSmRegularIcon,\n bold: LabelPairedArrowRightArrowLeftSmBoldIcon,\n fill: LabelPairedArrowRightArrowLeftSmFillIcon,\n },\n // arrows-left-right (↔) — closest visual is ArrowRightArrowLeft\n \"arrows-left-right\": {\n regular: LabelPairedArrowRightArrowLeftSmRegularIcon,\n bold: LabelPairedArrowRightArrowLeftSmBoldIcon,\n fill: LabelPairedArrowRightArrowLeftSmFillIcon,\n },\n \"arrow-up-right\": {\n regular: LabelPairedArrowUpRightSmRegularIcon,\n bold: LabelPairedArrowUpRightSmBoldIcon,\n fill: LabelPairedArrowUpRightSmFillIcon,\n },\n \"arrow-up-right-from-square\": {\n regular: LabelPairedArrowUpRightFromSquareSmRegularIcon,\n bold: LabelPairedArrowUpRightFromSquareSmBoldIcon,\n fill: LabelPairedArrowUpRightFromSquareSmFillIcon,\n },\n // rotate-right (↻) → ArrowRotateRight\n \"rotate-right\": {\n regular: LabelPairedArrowRotateRightSmRegularIcon,\n bold: LabelPairedArrowRotateRightSmBoldIcon,\n fill: LabelPairedArrowRotateRightSmFillIcon,\n },\n // clock-rotate-left (↺) → ArrowRotateLeft\n \"clock-rotate-left\": {\n regular: LabelPairedArrowRotateLeftSmRegularIcon,\n bold: LabelPairedArrowRotateLeftSmBoldIcon,\n fill: LabelPairedArrowRotateLeftSmFillIcon,\n },\n // arrow-up-from-line → ArrowUpToLine (closest)\n \"arrow-up-from-line\": {\n regular: LabelPairedArrowUpToLineSmRegularIcon,\n bold: LabelPairedArrowUpToLineSmBoldIcon,\n fill: LabelPairedArrowUpToLineSmFillIcon,\n },\n // ── Chevrons ──────────────────────────────────────────────────────────────\n \"chevron-down\": {\n regular: LabelPairedChevronDownSmRegularIcon,\n bold: LabelPairedChevronDownSmBoldIcon,\n fill: LabelPairedChevronDownSmFillIcon,\n },\n \"chevron-left\": {\n regular: LabelPairedChevronLeftSmRegularIcon,\n bold: LabelPairedChevronLeftSmBoldIcon,\n fill: LabelPairedChevronLeftSmFillIcon,\n },\n \"chevron-right\": {\n regular: LabelPairedChevronRightSmRegularIcon,\n bold: LabelPairedChevronRightSmBoldIcon,\n fill: LabelPairedChevronRightSmFillIcon,\n },\n \"chevron-up\": {\n regular: LabelPairedChevronUpSmRegularIcon,\n bold: LabelPairedChevronUpSmBoldIcon,\n fill: LabelPairedChevronUpSmFillIcon,\n },\n // ── Bell ──────────────────────────────────────────────────────────────────\n \"bell\": {\n regular: LabelPairedBellSmRegularIcon,\n bold: LabelPairedBellSmBoldIcon,\n fill: LabelPairedBellSmFillIcon,\n },\n \"check\": {\n regular: LabelPairedCheckSmRegularIcon,\n bold: LabelPairedCheckSmBoldIcon,\n fill: LabelPairedCheckSmFillIcon,\n },\n // ── Charts ────────────────────────────────────────────────────────────────\n \"chart-bar\": {\n regular: LabelPairedChartMixedSmRegularIcon,\n bold: LabelPairedChartMixedSmBoldIcon,\n fill: LabelPairedChartMixedSmFillIcon,\n },\n \"chart-candlestick\": {\n regular: LabelPairedChartCandlestickSmRegularIcon,\n bold: LabelPairedChartCandlestickSmBoldIcon,\n fill: LabelPairedChartCandlestickSmFillIcon,\n },\n \"chart-line\": {\n regular: LabelPairedChartLineSmRegularIcon,\n bold: LabelPairedChartLineSmBoldIcon,\n fill: LabelPairedChartLineSmFillIcon,\n },\n \"chart-tradingview\": {\n regular: LabelPairedChartTradingviewSmRegularIcon,\n bold: LabelPairedChartTradingviewSmBoldIcon,\n fill: LabelPairedChartTradingviewSmFillIcon,\n },\n \"chart-trend-down\": {\n regular: LabelPairedChartTrendDownSmRegularIcon,\n bold: LabelPairedChartTrendDownSmBoldIcon,\n fill: LabelPairedChartTrendDownSmFillIcon,\n },\n \"chart-trend-still\": {\n regular: LabelPairedChartTrendSidewaySmRegularIcon,\n bold: LabelPairedChartTrendSidewaySmBoldIcon,\n fill: LabelPairedChartTrendSidewaySmFillIcon,\n },\n \"chart-trend-up\": {\n regular: LabelPairedChartTrendUpSmRegularIcon,\n bold: LabelPairedChartTrendUpSmBoldIcon,\n fill: LabelPairedChartTrendUpSmFillIcon,\n },\n // arrow-trend-* → same as chart-trend-*\n \"arrow-trend-down\": {\n regular: LabelPairedChartTrendDownSmRegularIcon,\n bold: LabelPairedChartTrendDownSmBoldIcon,\n fill: LabelPairedChartTrendDownSmFillIcon,\n },\n \"arrow-trend-up\": {\n regular: LabelPairedChartTrendUpSmRegularIcon,\n bold: LabelPairedChartTrendUpSmBoldIcon,\n fill: LabelPairedChartTrendUpSmFillIcon,\n },\n \"ohlc\": {\n regular: LabelPairedChartOhlcSmRegularIcon,\n bold: LabelPairedChartOhlcSmBoldIcon,\n fill: LabelPairedChartOhlcSmFillIcon,\n },\n \"chart-line-up-down-clock\": {\n regular: LabelPairedLightChartLineUpDownClockSmRegularIcon,\n bold: LabelPairedLightChartLineUpDownClockSmBoldIcon,\n fill: LabelPairedLightChartLineUpDownClockSmFillIcon,\n },\n // chart-line-clock — no direct quill equivalent; falls back to chart-line TODO: design team review\n \"chart-line-clock\": {\n regular: LabelPairedChartLineSmRegularIcon,\n bold: LabelPairedChartLineSmBoldIcon,\n fill: LabelPairedChartLineSmFillIcon,\n },\n // ── Circle variants ───────────────────────────────────────────────────────\n \"circle\": {\n regular: LabelPairedCircleSmRegularIcon,\n bold: LabelPairedCircleSmBoldIcon,\n fill: LabelPairedCircleSmFillIcon,\n },\n \"circle-check\": {\n regular: LabelPairedCircleCheckSmRegularIcon,\n bold: LabelPairedCircleCheckSmBoldIcon,\n fill: LabelPairedCircleCheckSmFillIcon,\n },\n \"circle-exclamation\": {\n regular: LabelPairedCircleExclamationSmRegularIcon,\n bold: LabelPairedCircleExclamationSmBoldIcon,\n fill: LabelPairedCircleExclamationSmFillIcon,\n },\n \"circle-info\": {\n regular: LabelPairedCircleInfoSmRegularIcon,\n bold: LabelPairedCircleInfoSmBoldIcon,\n fill: LabelPairedCircleInfoSmFillIcon,\n },\n \"circle-user-slash\": {\n regular: LabelPairedCircleUserSlashSmRegularIcon,\n bold: LabelPairedCircleUserSlashSmBoldIcon,\n fill: LabelPairedCircleUserSlashSmFillIcon,\n },\n // ── Copy / files ──────────────────────────────────────────────────────────\n \"copy\": {\n regular: LabelPairedCopySmRegularIcon,\n bold: LabelPairedCopySmBoldIcon,\n fill: LabelPairedCopySmFillIcon,\n },\n \"dollar-sign\": {\n regular: LabelPairedDollarSignSmRegularIcon,\n bold: LabelPairedDollarSignSmBoldIcon,\n fill: LabelPairedDollarSignSmFillIcon,\n },\n \"ellipsis\": {\n regular: LabelPairedEllipsisSmRegularIcon,\n bold: LabelPairedEllipsisSmBoldIcon,\n fill: LabelPairedEllipsisSmFillIcon,\n },\n \"envelope\": {\n regular: LabelPairedEnvelopeSmRegularIcon,\n bold: LabelPairedEnvelopeSmBoldIcon,\n fill: LabelPairedEnvelopeSmFillIcon,\n },\n // envelope-open — no direct Quill equivalent; falls back to Envelope TODO: design team review\n \"envelope-open\": {\n regular: LabelPairedEnvelopeSmRegularIcon,\n bold: LabelPairedEnvelopeSmBoldIcon,\n fill: LabelPairedEnvelopeSmFillIcon,\n },\n \"eye\": {\n regular: LabelPairedEyeSmRegularIcon,\n bold: LabelPairedEyeSmBoldIcon,\n fill: LabelPairedEyeSmFillIcon,\n },\n \"eye-slash\": {\n regular: LabelPairedEyeSlashSmRegularIcon,\n bold: LabelPairedEyeSlashSmBoldIcon,\n fill: LabelPairedEyeSlashSmFillIcon,\n },\n \"file-lines\": {\n regular: LabelPairedFileLinesSmRegularIcon,\n bold: LabelPairedFileLinesSmBoldIcon,\n fill: LabelPairedFileLinesSmFillIcon,\n },\n // file-xmark — no direct Quill equivalent; falls back to FileLines TODO: design team review\n \"file-xmark\": {\n regular: LabelPairedFileLinesSmRegularIcon,\n bold: LabelPairedFileLinesSmBoldIcon,\n fill: LabelPairedFileLinesSmFillIcon,\n },\n \"fingerprint\": {\n regular: LabelPairedFingerprintSmRegularIcon,\n bold: LabelPairedFingerprintSmBoldIcon,\n fill: LabelPairedFingerprintSmFillIcon,\n },\n \"gear\": {\n regular: LabelPairedGearSmRegularIcon,\n bold: LabelPairedGearSmBoldIcon,\n fill: LabelPairedGearSmFillIcon,\n },\n \"globe\": {\n regular: LabelPairedGlobeSmRegularIcon,\n bold: LabelPairedGlobeSmBoldIcon,\n fill: LabelPairedGlobeSmFillIcon,\n },\n \"grip-vertical\": {\n regular: LabelPairedGripDotsVerticalSmRegularIcon,\n bold: LabelPairedGripDotsVerticalSmBoldIcon,\n fill: LabelPairedGripDotsVerticalSmFillIcon,\n },\n // house → HouseBlank\n \"house\": {\n regular: LabelPairedHouseBlankSmRegularIcon,\n bold: LabelPairedHouseBlankSmBoldIcon,\n fill: LabelPairedHouseBlankSmFillIcon,\n },\n \"house-blank\": {\n regular: LabelPairedHouseBlankSmRegularIcon,\n bold: LabelPairedHouseBlankSmBoldIcon,\n fill: LabelPairedHouseBlankSmFillIcon,\n },\n \"image\": {\n regular: LabelPairedImageSmRegularIcon,\n bold: LabelPairedImageSmBoldIcon,\n fill: LabelPairedImageSmFillIcon,\n },\n // inbox — no direct Quill equivalent; falls back to ArrowDownToBracket TODO: design team review\n \"inbox\": {\n regular: LabelPairedArrowDownToBracketSmRegularIcon,\n bold: LabelPairedArrowDownToBracketSmBoldIcon,\n fill: LabelPairedArrowDownToBracketSmFillIcon,\n },\n // magnifying-glass → Search\n \"magnifying-glass\": {\n regular: LabelPairedSearchSmRegularIcon,\n bold: LabelPairedSearchSmBoldIcon,\n fill: LabelPairedSearchSmFillIcon,\n },\n \"minus\": {\n regular: LabelPairedMinusSmRegularIcon,\n bold: LabelPairedMinusSmBoldIcon,\n fill: LabelPairedMinusSmFillIcon,\n },\n \"moon\": {\n regular: LabelPairedMoonSmRegularIcon,\n bold: LabelPairedMoonSmBoldIcon,\n fill: LabelPairedMoonSmFillIcon,\n },\n \"phone\": {\n regular: LabelPairedPhoneSmRegularIcon,\n bold: LabelPairedPhoneSmBoldIcon,\n fill: LabelPairedPhoneSmFillIcon,\n },\n \"plus\": {\n regular: LabelPairedPlusSmRegularIcon,\n bold: LabelPairedPlusSmBoldIcon,\n fill: LabelPairedPlusSmFillIcon,\n },\n \"right-from-bracket\": {\n regular: LabelPairedRightFromBracketSmRegularIcon,\n bold: LabelPairedRightFromBracketSmBoldIcon,\n fill: LabelPairedRightFromBracketSmFillIcon,\n },\n \"sparkles\": {\n regular: LabelPairedSparklesSmRegularIcon,\n bold: LabelPairedSparklesSmBoldIcon,\n fill: LabelPairedSparklesSmFillIcon,\n },\n // spinner → Loader\n \"spinner\": {\n regular: LabelPairedLoaderSmRegularIcon,\n bold: LabelPairedLoaderSmBoldIcon,\n fill: LabelPairedLoaderSmFillIcon,\n },\n \"square\": {\n regular: LabelPairedSquareSmRegularIcon,\n bold: LabelPairedSquareSmBoldIcon,\n fill: LabelPairedSquareSmFillIcon,\n },\n \"square-check\": {\n regular: LabelPairedSquareCheckSmRegularIcon,\n bold: LabelPairedSquareCheckSmBoldIcon,\n fill: LabelPairedSquareCheckSmFillIcon,\n },\n \"square-minus\": {\n regular: LabelPairedSquareMinusSmRegularIcon,\n bold: LabelPairedSquareMinusSmBoldIcon,\n fill: LabelPairedSquareMinusSmFillIcon,\n },\n \"star\": {\n regular: LabelPairedStarSmRegularIcon,\n bold: LabelPairedStarSmBoldIcon,\n fill: LabelPairedStarSmFillIcon,\n },\n // sun → SunBright\n \"sun\": {\n regular: LabelPairedSunBrightSmRegularIcon,\n bold: LabelPairedSunBrightSmBoldIcon,\n fill: LabelPairedSunBrightSmFillIcon,\n },\n // table-cells-large → Grid2\n \"table-cells-large\": {\n regular: LabelPairedGrid2SmRegularIcon,\n bold: LabelPairedGrid2SmBoldIcon,\n fill: LabelPairedGrid2SmFillIcon,\n },\n // table-columns → ObjectsColumn\n \"table-columns\": {\n regular: LabelPairedObjectsColumnSmRegularIcon,\n bold: LabelPairedObjectsColumnSmBoldIcon,\n fill: LabelPairedObjectsColumnSmFillIcon,\n },\n \"trash\": {\n regular: LabelPairedTrashSmRegularIcon,\n bold: LabelPairedTrashSmBoldIcon,\n fill: LabelPairedTrashSmFillIcon,\n },\n // trash-can → same as trash\n \"trash-can\": {\n regular: LabelPairedTrashSmRegularIcon,\n bold: LabelPairedTrashSmBoldIcon,\n fill: LabelPairedTrashSmFillIcon,\n },\n \"triangle-exclamation\": {\n regular: LabelPairedTriangleExclamationSmRegularIcon,\n bold: LabelPairedTriangleExclamationSmBoldIcon,\n fill: LabelPairedTriangleExclamationSmFillIcon,\n },\n \"user\": {\n regular: LabelPairedUserSmRegularIcon,\n bold: LabelPairedUserSmBoldIcon,\n fill: LabelPairedUserSmFillIcon,\n },\n \"wallet\": {\n regular: LabelPairedWalletSmRegularIcon,\n bold: LabelPairedWalletSmBoldIcon,\n fill: LabelPairedWalletSmFillIcon,\n },\n \"xmark\": {\n regular: LabelPairedXmarkSmRegularIcon,\n bold: LabelPairedXmarkSmBoldIcon,\n fill: LabelPairedXmarkSmFillIcon,\n },\n // crosshairs-slash → LocationCrosshairsSlash\n \"crosshairs-slash\": {\n regular: LabelPairedLocationCrosshairsSlashSmRegularIcon,\n bold: LabelPairedLocationCrosshairsSlashSmBoldIcon,\n fill: LabelPairedLocationCrosshairsSlashSmFillIcon,\n },\n // ── Layout ────────────────────────────────────────────────────────────────\n // book-open — no direct Quill equivalent; falls back to FolderOpen TODO: design team review\n \"book-open\": {\n regular: LabelPairedFolderOpenSmRegularIcon,\n bold: LabelPairedFolderOpenSmBoldIcon,\n fill: LabelPairedFolderOpenSmFillIcon,\n },\n // calculator — no direct Quill equivalent; falls back to Gear TODO: design team review\n \"calculator\": {\n regular: LabelPairedGearSmRegularIcon,\n bold: LabelPairedGearSmBoldIcon,\n fill: LabelPairedGearSmFillIcon,\n },\n // ── Deriv icons ───────────────────────────────────────────────────────────\n // deriv logo — DerivBrandLogo has Regular + Fill only; Bold falls back to Fill\n \"deriv\": {\n regular: LabelPairedDerivBrandLogoSmRegularIcon,\n bold: LabelPairedDerivSmIcon,\n fill: LabelPairedDerivBrandLogoSmFillIcon,\n },\n \"book-circle-question\": {\n regular: LabelPairedBookCircleQuestionSmRegularIcon,\n bold: LabelPairedBookCircleQuestionSmBoldIcon,\n fill: LabelPairedBookCircleQuestionSmFillIcon,\n },\n // book-open-cover-circle-question — falls back to BookCircleQuestion TODO: design team review\n \"book-open-cover-circle-question\": {\n regular: LabelPairedBookCircleQuestionSmRegularIcon,\n bold: LabelPairedBookCircleQuestionSmBoldIcon,\n fill: LabelPairedBookCircleQuestionSmFillIcon,\n },\n \"box-archive-circle-arrow-down\": {\n regular: LabelPairedBoxArchiveCircleArrowDownSmRegularIcon,\n bold: LabelPairedBoxArchiveCircleArrowDownSmBoldIcon,\n fill: LabelPairedBoxArchiveCircleArrowDownSmFillIcon,\n },\n \"box-archive-circle-arrow-up\": {\n regular: LabelPairedBoxArchiveCircleArrowUpSmRegularIcon,\n bold: LabelPairedBoxArchiveCircleArrowUpSmBoldIcon,\n fill: LabelPairedBoxArchiveCircleArrowUpSmFillIcon,\n },\n \"deal-cancellation\": {\n regular: LabelPairedDealCancellationSmRegularIcon,\n bold: LabelPairedDealCancellationSmBoldIcon,\n fill: LabelPairedDealCancellationSmFillIcon,\n },\n \"deal-protection\": {\n regular: LabelPairedDealProtectionSmRegularIcon,\n bold: LabelPairedDealProtectionSmBoldIcon,\n fill: LabelPairedDealProtectionSmFillIcon,\n },\n \"deriv-p2p\": {\n regular: LabelPairedDerivP2pSmRegularIcon,\n bold: LabelPairedDerivP2pSmBoldIcon,\n fill: LabelPairedDerivP2pSmFillIcon,\n },\n \"fiat-offramp\": {\n regular: LabelPairedFiatOfframpSmRegularIcon,\n bold: LabelPairedFiatOfframpSmBoldIcon,\n fill: LabelPairedFiatOfframpSmFillIcon,\n },\n \"fiat-onramp\": {\n regular: LabelPairedFiatOnrampSmRegularIcon,\n bold: LabelPairedFiatOnrampSmBoldIcon,\n fill: LabelPairedFiatOnrampSmFillIcon,\n },\n \"field-password\": {\n regular: LabelPairedFieldPasswordSmRegularIcon,\n bold: LabelPairedFieldPasswordSmBoldIcon,\n fill: LabelPairedFieldPasswordSmFillIcon,\n },\n \"hand-gesture-swipe-left-right\": {\n regular: LabelPairedHandGestureSwipeLeftRightSmRegularIcon,\n bold: LabelPairedHandGestureSwipeLeftRightSmBoldIcon,\n fill: LabelPairedHandGestureSwipeLeftRightSmFillIcon,\n },\n \"hand-gesture-tap-left\": {\n regular: LabelPairedHandGestureTapLeftSmRegularIcon,\n bold: LabelPairedHandGestureTapLeftSmBoldIcon,\n fill: LabelPairedHandGestureTapLeftSmFillIcon,\n },\n \"hand-gesture-tap-right\": {\n regular: LabelPairedHandGestureTapRightSmRegularIcon,\n bold: LabelPairedHandGestureTapRightSmBoldIcon,\n fill: LabelPairedHandGestureTapRightSmFillIcon,\n },\n \"horizontal-rule-dashed\": {\n regular: LabelPairedHorizontalRuleDashedSmRegularIcon,\n bold: LabelPairedHorizontalRuleDashedSmBoldIcon,\n fill: LabelPairedHorizontalRuleDashedSmFillIcon,\n },\n \"lock-pattern\": {\n regular: LabelPairedLockPatternSmRegularIcon,\n bold: LabelPairedLockPatternSmBoldIcon,\n fill: LabelPairedLockPatternSmFillIcon,\n },\n \"mobile-notch-rotate\": {\n regular: LabelPairedMobileNotchRotateSmRegularIcon,\n bold: LabelPairedMobileNotchRotateSmBoldIcon,\n fill: LabelPairedMobileNotchRotateSmFillIcon,\n },\n \"page-circle-arrow-right\": {\n regular: LabelPairedPageCircleArrowRightSmRegularIcon,\n bold: LabelPairedPageCircleArrowRightSmBoldIcon,\n fill: LabelPairedPageCircleArrowRightSmFillIcon,\n },\n \"passkey\": {\n regular: LabelPairedPasskeySmRegularIcon,\n bold: LabelPairedPasskeySmBoldIcon,\n fill: LabelPairedPasskeySmFillIcon,\n },\n \"playback-speed\": {\n regular: LabelPairedPlaybackSpeedSmRegularIcon,\n bold: LabelPairedPlaybackSpeedSmBoldIcon,\n fill: LabelPairedPlaybackSpeedSmFillIcon,\n },\n \"puzzles-piece-two\": {\n regular: LabelPairedPuzzlePieceTwoSmRegularIcon,\n bold: LabelPairedPuzzlePieceTwoSmBoldIcon,\n fill: LabelPairedPuzzlePieceTwoSmFillIcon,\n },\n // options — Quill has no Md Bold variant; uses Fill for bold TODO: design team review\n \"options\": {\n regular: LabelPairedOptionsSmRegularIcon,\n bold: LabelPairedOptionsSmFillIcon,\n fill: LabelPairedOptionsSmFillIcon,\n },\n // quill — no dedicated Quill equivalent; falls back to Pen TODO: design team review\n \"quill\": {\n regular: LabelPairedPenSmRegularIcon,\n bold: LabelPairedPenSmBoldIcon,\n fill: LabelPairedPenSmFillIcon,\n },\n \"rotate-device\": {\n regular: LabelPairedRotateDeviceSmRegularIcon,\n bold: LabelPairedRotateDeviceSmBoldIcon,\n fill: LabelPairedRotateDeviceSmFillIcon,\n },\n \"stop-loss\": {\n regular: LabelPairedStopLossSmRegularIcon,\n bold: LabelPairedStopLossSmBoldIcon,\n fill: LabelPairedStopLossSmFillIcon,\n },\n \"take-profit\": {\n regular: LabelPairedTakeProfitSmRegularIcon,\n bold: LabelPairedTakeProfitSmBoldIcon,\n fill: LabelPairedTakeProfitSmFillIcon,\n },\n \"user-tie-circle-dollar\": {\n regular: LabelPairedLightUserTieCircleDollarSmRegularIcon,\n bold: LabelPairedLightUserTieCircleDollarSmBoldIcon,\n fill: LabelPairedLightUserTieCircleDollarSmFillIcon,\n },\n \"wallet-circle-minus\": {\n regular: LabelPairedWalletCircleMinusSmRegularIcon,\n bold: LabelPairedWalletCircleMinusSmBoldIcon,\n fill: LabelPairedWalletCircleMinusSmFillIcon,\n },\n \"wallet-circle-plus\": {\n regular: LabelPairedWalletCirclePlusSmRegularIcon,\n bold: LabelPairedWalletCirclePlusSmBoldIcon,\n fill: LabelPairedWalletCirclePlusSmFillIcon,\n },\n \"wallet-signal\": {\n regular: LabelPairedWalletSignalSmRegularIcon,\n bold: LabelPairedWalletSignalSmBoldIcon,\n fill: LabelPairedWalletSignalSmFillIcon,\n },\n // ── Custom Deriv kit icons — pending Quill equivalents TODO: design team review ──\n // These were FA Pro kit (a9f9eb613f / 394c25e5aa) custom uploads that don't\n // have a matching LabelPaired icon. Mapped to nearest visual substitute.\n \"user-circle-arrow-right\": {\n regular: LabelPairedCircleUserSmRegularIcon,\n bold: LabelPairedCircleUserSmBoldIcon,\n fill: LabelPairedCircleUserSmFillIcon,\n },\n \"user-circle-arrow-up\": {\n regular: LabelPairedCircleUserSmRegularIcon,\n bold: LabelPairedCircleUserSmBoldIcon,\n fill: LabelPairedCircleUserSmFillIcon,\n },\n \"calendar-circle-arrow-left\": {\n regular: LabelPairedCalendarSmRegularIcon,\n bold: LabelPairedCalendarSmBoldIcon,\n fill: LabelPairedCalendarSmFillIcon,\n },\n \"calendar-circle-arrow-right\": {\n regular: LabelPairedCalendarSmRegularIcon,\n bold: LabelPairedCalendarSmBoldIcon,\n fill: LabelPairedCalendarSmFillIcon,\n },\n \"file-lines-magnifying-glass\": {\n regular: LabelPairedFileLinesSmRegularIcon,\n bold: LabelPairedFileLinesSmBoldIcon,\n fill: LabelPairedFileLinesSmFillIcon,\n },\n \"handshake-lock\": {\n regular: LabelPairedHandshakeSmRegularIcon,\n bold: LabelPairedHandshakeSmBoldIcon,\n fill: LabelPairedHandshakeSmFillIcon,\n },\n \"handshake-shield\": {\n regular: LabelPairedHandshakeSmRegularIcon,\n bold: LabelPairedHandshakeSmBoldIcon,\n fill: LabelPairedHandshakeSmFillIcon,\n },\n \"memo-shield\": {\n regular: LabelPairedMemoPadSmRegularIcon,\n bold: LabelPairedMemoPadSmBoldIcon,\n fill: LabelPairedMemoPadSmFillIcon,\n },\n \"pen-field-circle-xmark\": {\n regular: LabelPairedPenSmRegularIcon,\n bold: LabelPairedPenSmBoldIcon,\n fill: LabelPairedPenSmFillIcon,\n },\n \"pen-field-lock\": {\n regular: LabelPairedPenSmRegularIcon,\n bold: LabelPairedPenSmBoldIcon,\n fill: LabelPairedPenSmFillIcon,\n },\n \"pen-field-slash\": {\n regular: LabelPairedPenSmRegularIcon,\n bold: LabelPairedPenSmBoldIcon,\n fill: LabelPairedPenSmFillIcon,\n },\n \"rectangle-history-circle-dollar\": {\n regular: LabelPairedCircleDollarSmRegularIcon,\n bold: LabelPairedCircleDollarSmBoldIcon,\n fill: LabelPairedCircleDollarSmFillIcon,\n },\n \"shield-circle-check\": {\n regular: LabelPairedShieldCheckSmRegularIcon,\n bold: LabelPairedShieldCheckSmBoldIcon,\n fill: LabelPairedShieldCheckSmFillIcon,\n },\n \"shield-halved-circle-minus\": {\n regular: LabelPairedShieldCheckSmRegularIcon,\n bold: LabelPairedShieldCheckSmBoldIcon,\n fill: LabelPairedShieldCheckSmFillIcon,\n },\n \"shield-halved-lock\": {\n regular: LabelPairedShieldCheckSmRegularIcon,\n bold: LabelPairedShieldCheckSmBoldIcon,\n fill: LabelPairedShieldCheckSmFillIcon,\n },\n \"shield-lock\": {\n regular: LabelPairedShieldCheckSmRegularIcon,\n bold: LabelPairedShieldCheckSmBoldIcon,\n fill: LabelPairedShieldCheckSmFillIcon,\n },\n \"user-circle-dollar\": {\n regular: LabelPairedCircleDollarSmRegularIcon,\n bold: LabelPairedCircleDollarSmBoldIcon,\n fill: LabelPairedCircleDollarSmFillIcon,\n },\n \"user-large-circle-dollar\": {\n regular: LabelPairedCircleDollarSmRegularIcon,\n bold: LabelPairedCircleDollarSmBoldIcon,\n fill: LabelPairedCircleDollarSmFillIcon,\n },\n \"users-line-circle-dollar\": {\n regular: LabelPairedCircleDollarSmRegularIcon,\n bold: LabelPairedCircleDollarSmBoldIcon,\n fill: LabelPairedCircleDollarSmFillIcon,\n },\n \"users-rectangle-circle-dollar\": {\n regular: LabelPairedCircleDollarSmRegularIcon,\n bold: LabelPairedCircleDollarSmBoldIcon,\n fill: LabelPairedCircleDollarSmFillIcon,\n },\n}\n\nconst iconMapLg: Partial<Record<keyof typeof _iconKeys, WeightTuple>> = {\n // ── Arrows / navigation ───────────────────────────────────────────────────\n \"arrow-down-to-line\": {\n regular: LabelPairedArrowDownToLineLgRegularIcon,\n bold: LabelPairedArrowDownToLineLgBoldIcon,\n fill: LabelPairedArrowDownToLineLgFillIcon,\n },\n \"arrow-left\": {\n regular: LabelPairedArrowLeftLgRegularIcon,\n bold: LabelPairedArrowLeftLgBoldIcon,\n fill: LabelPairedArrowLeftLgFillIcon,\n },\n \"arrow-right\": {\n regular: LabelPairedArrowRightLgRegularIcon,\n bold: LabelPairedArrowRightLgBoldIcon,\n fill: LabelPairedArrowRightLgFillIcon,\n },\n \"arrow-right-arrow-left\": {\n regular: LabelPairedArrowRightArrowLeftLgRegularIcon,\n bold: LabelPairedArrowRightArrowLeftLgBoldIcon,\n fill: LabelPairedArrowRightArrowLeftLgFillIcon,\n },\n // arrows-left-right (↔) — closest visual is ArrowRightArrowLeft\n \"arrows-left-right\": {\n regular: LabelPairedArrowRightArrowLeftLgRegularIcon,\n bold: LabelPairedArrowRightArrowLeftLgBoldIcon,\n fill: LabelPairedArrowRightArrowLeftLgFillIcon,\n },\n \"arrow-up-right\": {\n regular: LabelPairedArrowUpRightLgRegularIcon,\n bold: LabelPairedArrowUpRightLgBoldIcon,\n fill: LabelPairedArrowUpRightLgFillIcon,\n },\n \"arrow-up-right-from-square\": {\n regular: LabelPairedArrowUpRightFromSquareLgRegularIcon,\n bold: LabelPairedArrowUpRightFromSquareLgBoldIcon,\n fill: LabelPairedArrowUpRightFromSquareLgFillIcon,\n },\n // rotate-right (↻) → ArrowRotateRight\n \"rotate-right\": {\n regular: LabelPairedArrowRotateRightLgRegularIcon,\n bold: LabelPairedArrowRotateRightLgBoldIcon,\n fill: LabelPairedArrowRotateRightLgFillIcon,\n },\n // clock-rotate-left (↺) → ArrowRotateLeft\n \"clock-rotate-left\": {\n regular: LabelPairedArrowRotateLeftLgRegularIcon,\n bold: LabelPairedArrowRotateLeftLgBoldIcon,\n fill: LabelPairedArrowRotateLeftLgFillIcon,\n },\n // arrow-up-from-line → ArrowUpToLine (closest)\n \"arrow-up-from-line\": {\n regular: LabelPairedArrowUpToLineLgRegularIcon,\n bold: LabelPairedArrowUpToLineLgBoldIcon,\n fill: LabelPairedArrowUpToLineLgFillIcon,\n },\n // ── Chevrons ──────────────────────────────────────────────────────────────\n \"chevron-down\": {\n regular: LabelPairedChevronDownLgRegularIcon,\n bold: LabelPairedChevronDownLgBoldIcon,\n fill: LabelPairedChevronDownLgFillIcon,\n },\n \"chevron-left\": {\n regular: LabelPairedChevronLeftLgRegularIcon,\n bold: LabelPairedChevronLeftLgBoldIcon,\n fill: LabelPairedChevronLeftLgFillIcon,\n },\n \"chevron-right\": {\n regular: LabelPairedChevronRightLgRegularIcon,\n bold: LabelPairedChevronRightLgBoldIcon,\n fill: LabelPairedChevronRightLgFillIcon,\n },\n \"chevron-up\": {\n regular: LabelPairedChevronUpLgRegularIcon,\n bold: LabelPairedChevronUpLgBoldIcon,\n fill: LabelPairedChevronUpLgFillIcon,\n },\n // ── Bell ──────────────────────────────────────────────────────────────────\n \"bell\": {\n regular: LabelPairedBellLgRegularIcon,\n bold: LabelPairedBellLgBoldIcon,\n fill: LabelPairedBellLgFillIcon,\n },\n \"check\": {\n regular: LabelPairedCheckLgRegularIcon,\n bold: LabelPairedCheckLgBoldIcon,\n fill: LabelPairedCheckLgFillIcon,\n },\n // ── Charts ────────────────────────────────────────────────────────────────\n \"chart-bar\": {\n regular: LabelPairedChartMixedLgRegularIcon,\n bold: LabelPairedChartMixedLgBoldIcon,\n fill: LabelPairedChartMixedLgFillIcon,\n },\n \"chart-candlestick\": {\n regular: LabelPairedChartCandlestickLgRegularIcon,\n bold: LabelPairedChartCandlestickLgBoldIcon,\n fill: LabelPairedChartCandlestickLgFillIcon,\n },\n \"chart-line\": {\n regular: LabelPairedChartLineLgRegularIcon,\n bold: LabelPairedChartLineLgBoldIcon,\n fill: LabelPairedChartLineLgFillIcon,\n },\n \"chart-tradingview\": {\n regular: LabelPairedChartTradingviewLgRegularIcon,\n bold: LabelPairedChartTradingviewLgBoldIcon,\n fill: LabelPairedChartTradingviewLgFillIcon,\n },\n \"chart-trend-down\": {\n regular: LabelPairedChartTrendDownLgRegularIcon,\n bold: LabelPairedChartTrendDownLgBoldIcon,\n fill: LabelPairedChartTrendDownLgFillIcon,\n },\n \"chart-trend-still\": {\n regular: LabelPairedChartTrendSidewayLgRegularIcon,\n bold: LabelPairedChartTrendSidewayLgBoldIcon,\n fill: LabelPairedChartTrendSidewayLgFillIcon,\n },\n \"chart-trend-up\": {\n regular: LabelPairedChartTrendUpLgRegularIcon,\n bold: LabelPairedChartTrendUpLgBoldIcon,\n fill: LabelPairedChartTrendUpLgFillIcon,\n },\n // arrow-trend-* → same as chart-trend-*\n \"arrow-trend-down\": {\n regular: LabelPairedChartTrendDownLgRegularIcon,\n bold: LabelPairedChartTrendDownLgBoldIcon,\n fill: LabelPairedChartTrendDownLgFillIcon,\n },\n \"arrow-trend-up\": {\n regular: LabelPairedChartTrendUpLgRegularIcon,\n bold: LabelPairedChartTrendUpLgBoldIcon,\n fill: LabelPairedChartTrendUpLgFillIcon,\n },\n \"ohlc\": {\n regular: LabelPairedChartOhlcLgRegularIcon,\n bold: LabelPairedChartOhlcLgBoldIcon,\n fill: LabelPairedChartOhlcLgFillIcon,\n },\n \"chart-line-up-down-clock\": {\n regular: LabelPairedLightChartLineUpDownClockLgRegularIcon,\n bold: LabelPairedLightChartLineUpDownClockLgBoldIcon,\n fill: LabelPairedLightChartLineUpDownClockLgFillIcon,\n },\n // chart-line-clock — no direct quill equivalent; falls back to chart-line TODO: design team review\n \"chart-line-clock\": {\n regular: LabelPairedChartLineLgRegularIcon,\n bold: LabelPairedChartLineLgBoldIcon,\n fill: LabelPairedChartLineLgFillIcon,\n },\n // ── Circle variants ───────────────────────────────────────────────────────\n \"circle\": {\n regular: LabelPairedCircleLgRegularIcon,\n bold: LabelPairedCircleLgBoldIcon,\n fill: LabelPairedCircleLgFillIcon,\n },\n \"circle-check\": {\n regular: LabelPairedCircleCheckLgRegularIcon,\n bold: LabelPairedCircleCheckLgBoldIcon,\n fill: LabelPairedCircleCheckLgFillIcon,\n },\n \"circle-exclamation\": {\n regular: LabelPairedCircleExclamationLgRegularIcon,\n bold: LabelPairedCircleExclamationLgBoldIcon,\n fill: LabelPairedCircleExclamationLgFillIcon,\n },\n \"circle-info\": {\n regular: LabelPairedCircleInfoLgRegularIcon,\n bold: LabelPairedCircleInfoLgBoldIcon,\n fill: LabelPairedCircleInfoLgFillIcon,\n },\n \"circle-user-slash\": {\n regular: LabelPairedCircleUserSlashLgRegularIcon,\n bold: LabelPairedCircleUserSlashLgBoldIcon,\n fill: LabelPairedCircleUserSlashLgFillIcon,\n },\n // ── Copy / files ──────────────────────────────────────────────────────────\n \"copy\": {\n regular: LabelPairedCopyLgRegularIcon,\n bold: LabelPairedCopyLgBoldIcon,\n fill: LabelPairedCopyLgFillIcon,\n },\n \"dollar-sign\": {\n regular: LabelPairedDollarSignLgRegularIcon,\n bold: LabelPairedDollarSignLgBoldIcon,\n fill: LabelPairedDollarSignLgFillIcon,\n },\n \"ellipsis\": {\n regular: LabelPairedEllipsisLgRegularIcon,\n bold: LabelPairedEllipsisLgBoldIcon,\n fill: LabelPairedEllipsisLgFillIcon,\n },\n \"envelope\": {\n regular: LabelPairedEnvelopeLgRegularIcon,\n bold: LabelPairedEnvelopeLgBoldIcon,\n fill: LabelPairedEnvelopeLgFillIcon,\n },\n // envelope-open — no direct Quill equivalent; falls back to Envelope TODO: design team review\n \"envelope-open\": {\n regular: LabelPairedEnvelopeLgRegularIcon,\n bold: LabelPairedEnvelopeLgBoldIcon,\n fill: LabelPairedEnvelopeLgFillIcon,\n },\n \"eye\": {\n regular: LabelPairedEyeLgRegularIcon,\n bold: LabelPairedEyeLgBoldIcon,\n fill: LabelPairedEyeLgFillIcon,\n },\n \"eye-slash\": {\n regular: LabelPairedEyeSlashLgRegularIcon,\n bold: LabelPairedEyeSlashLgBoldIcon,\n fill: LabelPairedEyeSlashLgFillIcon,\n },\n \"file-lines\": {\n regular: LabelPairedFileLinesLgRegularIcon,\n bold: LabelPairedFileLinesLgBoldIcon,\n fill: LabelPairedFileLinesLgFillIcon,\n },\n // file-xmark — no direct Quill equivalent; falls back to FileLines TODO: design team review\n \"file-xmark\": {\n regular: LabelPairedFileLinesLgRegularIcon,\n bold: LabelPairedFileLinesLgBoldIcon,\n fill: LabelPairedFileLinesLgFillIcon,\n },\n \"fingerprint\": {\n regular: LabelPairedFingerprintLgRegularIcon,\n bold: LabelPairedFingerprintLgBoldIcon,\n fill: LabelPairedFingerprintLgFillIcon,\n },\n \"gear\": {\n regular: LabelPairedGearLgRegularIcon,\n bold: LabelPairedGearLgBoldIcon,\n fill: LabelPairedGearLgFillIcon,\n },\n \"globe\": {\n regular: LabelPairedGlobeLgRegularIcon,\n bold: LabelPairedGlobeLgBoldIcon,\n fill: LabelPairedGlobeLgFillIcon,\n },\n \"grip-vertical\": {\n regular: LabelPairedGripDotsVerticalLgRegularIcon,\n bold: LabelPairedGripDotsVerticalLgBoldIcon,\n fill: LabelPairedGripDotsVerticalLgFillIcon,\n },\n // house → HouseBlank\n \"house\": {\n regular: LabelPairedHouseBlankLgRegularIcon,\n bold: LabelPairedHouseBlankLgBoldIcon,\n fill: LabelPairedHouseBlankLgFillIcon,\n },\n \"house-blank\": {\n regular: LabelPairedHouseBlankLgRegularIcon,\n bold: LabelPairedHouseBlankLgBoldIcon,\n fill: LabelPairedHouseBlankLgFillIcon,\n },\n \"image\": {\n regular: LabelPairedImageLgRegularIcon,\n bold: LabelPairedImageLgBoldIcon,\n fill: LabelPairedImageLgFillIcon,\n },\n // inbox — no direct Quill equivalent; falls back to ArrowDownToBracket TODO: design team review\n \"inbox\": {\n regular: LabelPairedArrowDownToBracketLgRegularIcon,\n bold: LabelPairedArrowDownToBracketLgBoldIcon,\n fill: LabelPairedArrowDownToBracketLgFillIcon,\n },\n // magnifying-glass → Search\n \"magnifying-glass\": {\n regular: LabelPairedSearchLgRegularIcon,\n bold: LabelPairedSearchLgBoldIcon,\n fill: LabelPairedSearchLgFillIcon,\n },\n \"minus\": {\n regular: LabelPairedMinusLgRegularIcon,\n bold: LabelPairedMinusLgBoldIcon,\n fill: LabelPairedMinusLgFillIcon,\n },\n \"moon\": {\n regular: LabelPairedMoonLgRegularIcon,\n bold: LabelPairedMoonLgBoldIcon,\n fill: LabelPairedMoonLgFillIcon,\n },\n \"phone\": {\n regular: LabelPairedPhoneLgRegularIcon,\n bold: LabelPairedPhoneLgBoldIcon,\n fill: LabelPairedPhoneLgFillIcon,\n },\n \"plus\": {\n regular: LabelPairedPlusLgRegularIcon,\n bold: LabelPairedPlusLgBoldIcon,\n fill: LabelPairedPlusLgFillIcon,\n },\n \"right-from-bracket\": {\n regular: LabelPairedRightFromBracketLgRegularIcon,\n bold: LabelPairedRightFromBracketLgBoldIcon,\n fill: LabelPairedRightFromBracketLgFillIcon,\n },\n \"sparkles\": {\n regular: LabelPairedSparklesLgRegularIcon,\n bold: LabelPairedSparklesLgBoldIcon,\n fill: LabelPairedSparklesLgFillIcon,\n },\n // spinner → Loader\n \"spinner\": {\n regular: LabelPairedLoaderLgRegularIcon,\n bold: LabelPairedLoaderLgBoldIcon,\n fill: LabelPairedLoaderLgFillIcon,\n },\n \"square\": {\n regular: LabelPairedSquareLgRegularIcon,\n bold: LabelPairedSquareLgBoldIcon,\n fill: LabelPairedSquareLgFillIcon,\n },\n \"square-check\": {\n regular: LabelPairedSquareCheckLgRegularIcon,\n bold: LabelPairedSquareCheckLgBoldIcon,\n fill: LabelPairedSquareCheckLgFillIcon,\n },\n \"square-minus\": {\n regular: LabelPairedSquareMinusLgRegularIcon,\n bold: LabelPairedSquareMinusLgBoldIcon,\n fill: LabelPairedSquareMinusLgFillIcon,\n },\n \"star\": {\n regular: LabelPairedStarLgRegularIcon,\n bold: LabelPairedStarLgBoldIcon,\n fill: LabelPairedStarLgFillIcon,\n },\n // sun → SunBright\n \"sun\": {\n regular: LabelPairedSunBrightLgRegularIcon,\n bold: LabelPairedSunBrightLgBoldIcon,\n fill: LabelPairedSunBrightLgFillIcon,\n },\n // table-cells-large → Grid2\n \"table-cells-large\": {\n regular: LabelPairedGrid2LgRegularIcon,\n bold: LabelPairedGrid2LgBoldIcon,\n fill: LabelPairedGrid2LgFillIcon,\n },\n // table-columns → ObjectsColumn\n \"table-columns\": {\n regular: LabelPairedObjectsColumnLgRegularIcon,\n bold: LabelPairedObjectsColumnLgBoldIcon,\n fill: LabelPairedObjectsColumnLgFillIcon,\n },\n \"trash\": {\n regular: LabelPairedTrashLgRegularIcon,\n bold: LabelPairedTrashLgBoldIcon,\n fill: LabelPairedTrashLgFillIcon,\n },\n // trash-can → same as trash\n \"trash-can\": {\n regular: LabelPairedTrashLgRegularIcon,\n bold: LabelPairedTrashLgBoldIcon,\n fill: LabelPairedTrashLgFillIcon,\n },\n \"triangle-exclamation\": {\n regular: LabelPairedTriangleExclamationLgRegularIcon,\n bold: LabelPairedTriangleExclamationLgBoldIcon,\n fill: LabelPairedTriangleExclamationLgFillIcon,\n },\n \"user\": {\n regular: LabelPairedUserLgRegularIcon,\n bold: LabelPairedUserLgBoldIcon,\n fill: LabelPairedUserLgFillIcon,\n },\n \"wallet\": {\n regular: LabelPairedWalletLgRegularIcon,\n bold: LabelPairedWalletLgBoldIcon,\n fill: LabelPairedWalletLgFillIcon,\n },\n \"xmark\": {\n regular: LabelPairedXmarkLgRegularIcon,\n bold: LabelPairedXmarkLgBoldIcon,\n fill: LabelPairedXmarkLgFillIcon,\n },\n // crosshairs-slash → LocationCrosshairsSlash\n \"crosshairs-slash\": {\n regular: LabelPairedLocationCrosshairsSlashLgRegularIcon,\n bold: LabelPairedLocationCrosshairsSlashLgBoldIcon,\n fill: LabelPairedLocationCrosshairsSlashLgFillIcon,\n },\n // ── Layout ────────────────────────────────────────────────────────────────\n // book-open — no direct Quill equivalent; falls back to FolderOpen TODO: design team review\n \"book-open\": {\n regular: LabelPairedFolderOpenLgRegularIcon,\n bold: LabelPairedFolderOpenLgBoldIcon,\n fill: LabelPairedFolderOpenLgFillIcon,\n },\n // calculator — no direct Quill equivalent; falls back to Gear TODO: design team review\n \"calculator\": {\n regular: LabelPairedGearLgRegularIcon,\n bold: LabelPairedGearLgBoldIcon,\n fill: LabelPairedGearLgFillIcon,\n },\n // ── Deriv icons ───────────────────────────────────────────────────────────\n // deriv logo — DerivBrandLogo has Regular + Fill only; Bold falls back to Fill\n \"deriv\": {\n regular: LabelPairedDerivBrandLogoLgRegularIcon,\n bold: LabelPairedDerivLgIcon,\n fill: LabelPairedDerivBrandLogoLgFillIcon,\n },\n \"book-circle-question\": {\n regular: LabelPairedBookCircleQuestionLgRegularIcon,\n bold: LabelPairedBookCircleQuestionLgBoldIcon,\n fill: LabelPairedBookCircleQuestionLgFillIcon,\n },\n // book-open-cover-circle-question — falls back to BookCircleQuestion TODO: design team review\n \"book-open-cover-circle-question\": {\n regular: LabelPairedBookCircleQuestionLgRegularIcon,\n bold: LabelPairedBookCircleQuestionLgBoldIcon,\n fill: LabelPairedBookCircleQuestionLgFillIcon,\n },\n \"box-archive-circle-arrow-down\": {\n regular: LabelPairedBoxArchiveCircleArrowDownLgRegularIcon,\n bold: LabelPairedBoxArchiveCircleArrowDownLgBoldIcon,\n fill: LabelPairedBoxArchiveCircleArrowDownLgFillIcon,\n },\n \"box-archive-circle-arrow-up\": {\n regular: LabelPairedBoxArchiveCircleArrowUpLgRegularIcon,\n bold: LabelPairedBoxArchiveCircleArrowUpLgBoldIcon,\n fill: LabelPairedBoxArchiveCircleArrowUpLgFillIcon,\n },\n \"deal-cancellation\": {\n regular: LabelPairedDealCancellationLgRegularIcon,\n bold: LabelPairedDealCancellationLgBoldIcon,\n fill: LabelPairedDealCancellationLgFillIcon,\n },\n \"deal-protection\": {\n regular: LabelPairedDealProtectionLgRegularIcon,\n bold: LabelPairedDealProtectionLgBoldIcon,\n fill: LabelPairedDealProtectionLgFillIcon,\n },\n \"deriv-p2p\": {\n regular: LabelPairedDerivP2pLgRegularIcon,\n bold: LabelPairedDerivP2pLgBoldIcon,\n fill: LabelPairedDerivP2pLgFillIcon,\n },\n \"fiat-offramp\": {\n regular: LabelPairedFiatOfframpLgRegularIcon,\n bold: LabelPairedFiatOfframpLgBoldIcon,\n fill: LabelPairedFiatOfframpLgFillIcon,\n },\n \"fiat-onramp\": {\n regular: LabelPairedFiatOnrampLgRegularIcon,\n bold: LabelPairedFiatOnrampLgBoldIcon,\n fill: LabelPairedFiatOnrampLgFillIcon,\n },\n \"field-password\": {\n regular: LabelPairedFieldPasswordLgRegularIcon,\n bold: LabelPairedFieldPasswordLgBoldIcon,\n fill: LabelPairedFieldPasswordLgFillIcon,\n },\n \"hand-gesture-swipe-left-right\": {\n regular: LabelPairedHandGestureSwipeLeftRightLgRegularIcon,\n bold: LabelPairedHandGestureSwipeLeftRightLgBoldIcon,\n fill: LabelPairedHandGestureSwipeLeftRightLgFillIcon,\n },\n \"hand-gesture-tap-left\": {\n regular: LabelPairedHandGestureTapLeftLgRegularIcon,\n bold: LabelPairedHandGestureTapLeftLgBoldIcon,\n fill: LabelPairedHandGestureTapLeftLgFillIcon,\n },\n \"hand-gesture-tap-right\": {\n regular: LabelPairedHandGestureTapRightLgRegularIcon,\n bold: LabelPairedHandGestureTapRightLgBoldIcon,\n fill: LabelPairedHandGestureTapRightLgFillIcon,\n },\n \"horizontal-rule-dashed\": {\n regular: LabelPairedHorizontalRuleDashedLgRegularIcon,\n bold: LabelPairedHorizontalRuleDashedLgBoldIcon,\n fill: LabelPairedHorizontalRuleDashedLgFillIcon,\n },\n \"lock-pattern\": {\n regular: LabelPairedLockPatternLgRegularIcon,\n bold: LabelPairedLockPatternLgBoldIcon,\n fill: LabelPairedLockPatternLgFillIcon,\n },\n \"mobile-notch-rotate\": {\n regular: LabelPairedMobileNotchRotateLgRegularIcon,\n bold: LabelPairedMobileNotchRotateLgBoldIcon,\n fill: LabelPairedMobileNotchRotateLgFillIcon,\n },\n \"page-circle-arrow-right\": {\n regular: LabelPairedPageCircleArrowRightLgRegularIcon,\n bold: LabelPairedPageCircleArrowRightLgBoldIcon,\n fill: LabelPairedPageCircleArrowRightLgFillIcon,\n },\n \"passkey\": {\n regular: LabelPairedPasskeyLgRegularIcon,\n bold: LabelPairedPasskeyLgBoldIcon,\n fill: LabelPairedPasskeyLgFillIcon,\n },\n \"playback-speed\": {\n regular: LabelPairedPlaybackSpeedLgRegularIcon,\n bold: LabelPairedPlaybackSpeedLgBoldIcon,\n fill: LabelPairedPlaybackSpeedLgFillIcon,\n },\n \"puzzles-piece-two\": {\n regular: LabelPairedPuzzlePieceTwoLgRegularIcon,\n bold: LabelPairedPuzzlePieceTwoLgBoldIcon,\n fill: LabelPairedPuzzlePieceTwoLgFillIcon,\n },\n // options — Quill has no Md Bold variant; uses Fill for bold TODO: design team review\n \"options\": {\n regular: LabelPairedOptionsLgRegularIcon,\n bold: LabelPairedOptionsLgFillIcon,\n fill: LabelPairedOptionsLgFillIcon,\n },\n // quill — no dedicated Quill equivalent; falls back to Pen TODO: design team review\n \"quill\": {\n regular: LabelPairedPenLgRegularIcon,\n bold: LabelPairedPenLgBoldIcon,\n fill: LabelPairedPenLgFillIcon,\n },\n \"rotate-device\": {\n regular: LabelPairedRotateDeviceLgRegularIcon,\n bold: LabelPairedRotateDeviceLgBoldIcon,\n fill: LabelPairedRotateDeviceLgFillIcon,\n },\n \"stop-loss\": {\n regular: LabelPairedStopLossLgRegularIcon,\n bold: LabelPairedStopLossLgBoldIcon,\n fill: LabelPairedStopLossLgFillIcon,\n },\n \"take-profit\": {\n regular: LabelPairedTakeProfitLgRegularIcon,\n bold: LabelPairedTakeProfitLgBoldIcon,\n fill: LabelPairedTakeProfitLgFillIcon,\n },\n \"user-tie-circle-dollar\": {\n regular: LabelPairedLightUserTieCircleDollarLgRegularIcon,\n bold: LabelPairedLightUserTieCircleDollarLgBoldIcon,\n fill: LabelPairedLightUserTieCircleDollarLgFillIcon,\n },\n \"wallet-circle-minus\": {\n regular: LabelPairedWalletCircleMinusLgRegularIcon,\n bold: LabelPairedWalletCircleMinusLgBoldIcon,\n fill: LabelPairedWalletCircleMinusLgFillIcon,\n },\n \"wallet-circle-plus\": {\n regular: LabelPairedWalletCirclePlusLgRegularIcon,\n bold: LabelPairedWalletCirclePlusLgBoldIcon,\n fill: LabelPairedWalletCirclePlusLgFillIcon,\n },\n \"wallet-signal\": {\n regular: LabelPairedWalletSignalLgRegularIcon,\n bold: LabelPairedWalletSignalLgBoldIcon,\n fill: LabelPairedWalletSignalLgFillIcon,\n },\n // ── Custom Deriv kit icons — pending Quill equivalents TODO: design team review ──\n // These were FA Pro kit (a9f9eb613f / 394c25e5aa) custom uploads that don't\n // have a matching LabelPaired icon. Mapped to nearest visual substitute.\n \"user-circle-arrow-right\": {\n regular: LabelPairedCircleUserLgRegularIcon,\n bold: LabelPairedCircleUserLgBoldIcon,\n fill: LabelPairedCircleUserLgFillIcon,\n },\n \"user-circle-arrow-up\": {\n regular: LabelPairedCircleUserLgRegularIcon,\n bold: LabelPairedCircleUserLgBoldIcon,\n fill: LabelPairedCircleUserLgFillIcon,\n },\n \"calendar-circle-arrow-left\": {\n regular: LabelPairedCalendarLgRegularIcon,\n bold: LabelPairedCalendarLgBoldIcon,\n fill: LabelPairedCalendarLgFillIcon,\n },\n \"calendar-circle-arrow-right\": {\n regular: LabelPairedCalendarLgRegularIcon,\n bold: LabelPairedCalendarLgBoldIcon,\n fill: LabelPairedCalendarLgFillIcon,\n },\n \"file-lines-magnifying-glass\": {\n regular: LabelPairedFileLinesLgRegularIcon,\n bold: LabelPairedFileLinesLgBoldIcon,\n fill: LabelPairedFileLinesLgFillIcon,\n },\n \"handshake-lock\": {\n regular: LabelPairedHandshakeLgRegularIcon,\n bold: LabelPairedHandshakeLgBoldIcon,\n fill: LabelPairedHandshakeLgFillIcon,\n },\n \"handshake-shield\": {\n regular: LabelPairedHandshakeLgRegularIcon,\n bold: LabelPairedHandshakeLgBoldIcon,\n fill: LabelPairedHandshakeLgFillIcon,\n },\n \"memo-shield\": {\n regular: LabelPairedMemoPadLgRegularIcon,\n bold: LabelPairedMemoPadLgBoldIcon,\n fill: LabelPairedMemoPadLgFillIcon,\n },\n \"pen-field-circle-xmark\": {\n regular: LabelPairedPenLgRegularIcon,\n bold: LabelPairedPenLgBoldIcon,\n fill: LabelPairedPenLgFillIcon,\n },\n \"pen-field-lock\": {\n regular: LabelPairedPenLgRegularIcon,\n bold: LabelPairedPenLgBoldIcon,\n fill: LabelPairedPenLgFillIcon,\n },\n \"pen-field-slash\": {\n regular: LabelPairedPenLgRegularIcon,\n bold: LabelPairedPenLgBoldIcon,\n fill: LabelPairedPenLgFillIcon,\n },\n \"rectangle-history-circle-dollar\": {\n regular: LabelPairedCircleDollarLgRegularIcon,\n bold: LabelPairedCircleDollarLgBoldIcon,\n fill: LabelPairedCircleDollarLgFillIcon,\n },\n \"shield-circle-check\": {\n regular: LabelPairedShieldCheckLgRegularIcon,\n bold: LabelPairedShieldCheckLgBoldIcon,\n fill: LabelPairedShieldCheckLgFillIcon,\n },\n \"shield-halved-circle-minus\": {\n regular: LabelPairedShieldCheckLgRegularIcon,\n bold: LabelPairedShieldCheckLgBoldIcon,\n fill: LabelPairedShieldCheckLgFillIcon,\n },\n \"shield-halved-lock\": {\n regular: LabelPairedShieldCheckLgRegularIcon,\n bold: LabelPairedShieldCheckLgBoldIcon,\n fill: LabelPairedShieldCheckLgFillIcon,\n },\n \"shield-lock\": {\n regular: LabelPairedShieldCheckLgRegularIcon,\n bold: LabelPairedShieldCheckLgBoldIcon,\n fill: LabelPairedShieldCheckLgFillIcon,\n },\n \"user-circle-dollar\": {\n regular: LabelPairedCircleDollarLgRegularIcon,\n bold: LabelPairedCircleDollarLgBoldIcon,\n fill: LabelPairedCircleDollarLgFillIcon,\n },\n \"user-large-circle-dollar\": {\n regular: LabelPairedCircleDollarLgRegularIcon,\n bold: LabelPairedCircleDollarLgBoldIcon,\n fill: LabelPairedCircleDollarLgFillIcon,\n },\n \"users-line-circle-dollar\": {\n regular: LabelPairedCircleDollarLgRegularIcon,\n bold: LabelPairedCircleDollarLgBoldIcon,\n fill: LabelPairedCircleDollarLgFillIcon,\n },\n \"users-rectangle-circle-dollar\": {\n regular: LabelPairedCircleDollarLgRegularIcon,\n bold: LabelPairedCircleDollarLgBoldIcon,\n fill: LabelPairedCircleDollarLgFillIcon,\n },\n}\n\n/* ─── Public types ────────────────────────────────────────────────────────── */\n\nexport type IconName = keyof typeof _iconKeys\nexport type IconWeight = \"regular\" | \"bold\" | \"fill\"\nexport type IconQuillSize = \"sm\" | \"md\" | \"lg\"\n\n/** Context — set by Chip/Tag to auto-select the correct Quill size variant for children. */\nexport const IconSizeContext = React.createContext<IconQuillSize>(\"md\")\n\nexport interface IconProps {\n name: IconName\n weight?: IconWeight\n /** Quill size variant (sm=14×22, md=16×24, lg=20×30). Overrides IconSizeContext. */\n quillSize?: IconQuillSize\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\", quillSize, className, style, ...rest }: IconProps) {\n const contextSize = React.useContext(IconSizeContext)\n const resolvedSize = quillSize ?? contextSize\n const sizeMap =\n resolvedSize === \"sm\" ? iconMapSm :\n resolvedSize === \"lg\" ? iconMapLg :\n iconMap\n const entry = sizeMap[name] ?? iconMap[name]\n const Comp =\n weight === \"fill\" ? (entry?.fill ?? entry?.bold) :\n weight === \"regular\" ? (entry?.regular ?? entry?.bold) :\n entry?.bold\n if (!Comp) return null\n return (\n <Comp\n fill=\"currentColor\"\n className={cn(\"shrink-0\", className)}\n style={style}\n {...(rest as React.SVGProps<SVGSVGElement>)}\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(iconMap).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 entry = iconMap[name]\n const out: IconWeight[] = []\n if (entry?.regular != null) out.push(\"regular\")\n out.push(\"bold\")\n if (entry?.fill != null) out.push(\"fill\")\n return out\n}\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\"\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.\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","\"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 \"flex 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 \"items-center gap-[var(--notification-gap-md)]\",\n \"px-[var(--notification-padding-horizontal)] py-[var(--notification-padding-vertical)]\",\n className\n )}\n >\n {/* Icon column: self-stretch so the icon pins to the title top when description wraps */}\n <div className=\"flex self-stretch shrink-0 gap-1\">\n {slotBeforeIcon}\n <div className=\"flex h-full items-start\">\n <div className=\"flex size-6 shrink-0 items-center justify-center\">\n <Icon\n name=\"circle-info\"\n weight=\"fill\"\n className=\"size-6 text-notification-icon-inverse-information\"\n />\n </div>\n </div>\n </div>\n\n {/* Text */}\n <div className=\"flex min-w-0 flex-1 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 */}\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 size-8 shrink-0 items-center justify-center text-notification-title-banner opacity-60 hover:opacity-100 transition-opacity\"\n aria-label=\"Close notification\"\n >\n <Icon name=\"xmark\" className=\"size-6\" />\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 size-8 items-center justify-center rounded-[var(--notification-radius-icon)]\", variantIconBgClass[variant ?? \"information\"])}\n >\n <Icon\n name={variantIconName}\n className={cn(\"size-6\", variantIconNormalClass[variant ?? \"information\"])}\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 size-8 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 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 className=\"size-6\"\n />\n </button>\n <button\n type=\"button\"\n className=\"flex size-8 items-center justify-center rounded text-notification-icon-delete hover:bg-notification-bg-button-press active:bg-notification-bg-button-press transition-colors\"\n onClick={() => onDelete?.()}\n aria-label=\"Delete notification\"\n >\n <Icon name=\"trash\" className=\"size-6\" />\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=\"size-6 shrink-0 text-notification-icon-read-unread\"\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=\"size-6 shrink-0 text-notification-icon-delete\" />\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: 32×32; icon glyph: 24px (size-6)\n \"[&_[data-slot=section-message-icon]]:size-8\",\n \"[&_[data-slot=section-message-icon]_svg]:!w-6\",\n \"[&_[data-slot=section-message-icon]_svg]:!h-6\",\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: 32×32; icon glyph: 24px (Quill Md natural height)\n \"[&_[data-slot=section-message-icon]]:size-8\",\n \"[&_[data-slot=section-message-icon]_svg]:!w-6\",\n \"[&_[data-slot=section-message-icon]_svg]:!h-6\",\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 top-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\"\nimport { IconSizeContext, type IconQuillSize } from \"./icon\"\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 \"2xs\": [\n \"h-[var(--tag-2xs-height)]\",\n \"min-w-[var(--tag-2xs-min-width)]\",\n \"px-[var(--tag-2xs-padding-horizontal)]\",\n \"gap-[var(--tag-2xs-gap)]\",\n \"[font-size:var(--tag-2xs-font-size)]\",\n \"[font-weight:var(--tag-2xs-font-weight)]\",\n \"rounded-[var(--tag-2xs-radius)]\",\n \"[&>svg]:!w-2.5 [&>svg]:!h-2.5\",\n ],\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]:!w-[18px] [&>svg]:!h-[18px]\",\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]:!w-5 [&>svg]:!h-5\",\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 children,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof tagVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n const quillSize: IconQuillSize = size === \"sm\" ? \"sm\" : \"md\"\n\n return (\n // Provider wraps Comp (not children) so Slot.Root still clones the real\n // consumer element under asChild; the Provider renders no DOM of its own.\n <IconSizeContext.Provider value={quillSize}>\n <Comp\n data-slot=\"tag\"\n data-variant={variant}\n className={cn(tagVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </Comp>\n </IconSizeContext.Provider>\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-5\" />\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-extrabold\",\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-5\",\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-5\",\n xs: \"h-6 w-fit gap-1 rounded-full px-2 text-xs [border-width:1.5px] [&_svg:not([class*='size-'])]:size-4\", /* 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-5\",\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-5\",\n \"icon-xs\": \"size-6 rounded-full [border-width:1.5px] [&_svg:not([class*='size-'])]:size-4\", /* 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\"\nimport { IconSizeContext, type IconQuillSize } from \"./icon\"\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\nconst chipSizeMap: Record<NonNullable<VariantProps<typeof chipVariants>[\"size\"]>, IconQuillSize> = {\n sm: \"sm\",\n md: \"md\",\n lg: \"lg\",\n}\n\nfunction Chip({\n className,\n size,\n selected = false,\n children,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof chipVariants> & {\n selected?: boolean\n }) {\n const quillSize = chipSizeMap[size ?? \"md\"]\n return (\n <IconSizeContext.Provider value={quillSize}>\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 {children}\n </button>\n </IconSizeContext.Provider>\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-5\", className)} />\n }\n if (orientation === \"right\") {\n return <Icon name=\"chevron-right\" className={cn(\"size-5\", className)} />\n }\n return <Icon name=\"chevron-down\" className={cn(\"size-5\", 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\" className=\"size-5\" />\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\" className=\"size-5\" />\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\"\nimport { StandaloneSquareCheckFillIcon } from \"@deriv/quill-icons/Standalone\"\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 — square 16px, text-subtle */\n/* • checked — square-check 16px, text-selected */\n/* • indeterminate — square-minus 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 — square.\n * Wrapped in a <span> so `hidden` targets a plain HTML element;\n * the SVG's `display: inline-block` would otherwise win over the\n * `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-6 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-6 shrink-0 items-center justify-center transition-none\"\n >\n {/* Checked → square-check fill */}\n <span className=\"contents group-data-[state=indeterminate]:hidden\">\n <StandaloneSquareCheckFillIcon\n fill=\"currentColor\"\n className=\"size-6 shrink-0 text-selected\"\n />\n </span>\n {/* Indeterminate → square-minus */}\n <span className=\"contents group-data-[state=checked]:hidden\">\n <Icon\n name=\"square-minus\"\n className=\"size-6 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 an info icon 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// 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-5\", 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-5\",\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-5 pointer-coarse:size-6\" />\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-5\",\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-4\",\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-5\",\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-5 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-5 [&_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\" className=\"size-5\" />\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-5 [&_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-5 [&_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-5\",\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-5\" />\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-5\",\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-5 [&_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-5\",\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-5\" />\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-5\",\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-5 [&_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-5\" />\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\" className=\"size-4\" />\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\" className=\"size-4\" />\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-5\",\n md: \"[font-size:var(--link-md-font-size)] [font-weight:var(--link-md-font-weight)] [&_svg:not([class*='size-'])]:size-5\",\n sm: \"[font-size:var(--link-sm-font-size)] [font-weight:var(--link-sm-font-weight)] [&_svg:not([class*='size-'])]:size-4\",\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-6\" />\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-6\" />\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 an info icon 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-6 shrink-0 text-field-text-error\" />\n )}\n {status === \"success\" && !readOnly && !disabled && (\n <Icon name=\"circle-check\" className=\"size-6 shrink-0 text-field-text-success\" />\n )}\n\n {/* Chevron */}\n <SelectPrimitive.Icon asChild>\n <Icon name=\"chevron-down\" className={cn(\"size-5 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-5\" />\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-5\" />\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-5\" />\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\" className=\"size-5\" />\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-5 [&>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-5 [&>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-5 [&>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-5 [&>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-5 [&>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-5\" />\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-5\" />\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-4\" : \"size-5\"\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-5\",\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-5 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-5\" />\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-5\" />\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-5 ${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-5\" /> : <Icon name=\"eye-slash\" className=\"size-5\" />}\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-center 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-5\" />\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-5\" /> : <Icon name=\"eye-slash\" className=\"size-5\" />}\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-5 ${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-5 ${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-5\" /> : <Icon name=\"eye-slash\" className=\"size-5\" />}\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-5 ${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\";\nimport { DerivLightMt5GoldIcon } from \"@deriv/quill-icons/Illustration\";\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 <DerivLightMt5GoldIcon 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\";\nimport { DerivLightMt5GoldIcon } from \"@deriv/quill-icons/Illustration\";\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-5\" />\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-5\" /> : <Icon name=\"eye-slash\" className=\"size-5\" />}\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 <DerivLightMt5GoldIcon 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 (Quill LabelPairedSparklesMdBold 16×24) 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 16 24'%3E%3Cpath d='M10.219 6.688 12 6l.656-1.75c.031-.156.188-.25.344-.25.125 0 .281.094.313.25L14 6l1.75.688c.156.03.25.187.25.312 0 .156-.094.313-.25.344L14 8l-.687 1.781c-.032.125-.188.219-.313.219-.156 0-.312-.094-.344-.219L12 8l-1.781-.656C10.094 7.312 10 7.156 10 7c0-.125.094-.281.219-.312M.28 11.5l.532-.219.25-.125h.03l2.75-1.281 1.282-2.781.125-.25.25-.532A.47.47 0 0 1 5.938 6c.187 0 .375.125.468.313l.25.53.094.25.031.032 1.25 2.75 2.781 1.281.25.125.532.25a.47.47 0 0 1 .312.438.55.55 0 0 1-.312.469l-.531.218-.25.125-2.782 1.281-1.281 2.75v.032l-.125.25-.219.531a.55.55 0 0 1-.468.313.47.47 0 0 1-.438-.313l-.25-.531-.125-.25v-.032l-1.281-2.75-2.75-1.28h-.032l-.25-.126-.53-.219A.52.52 0 0 1 0 11.97c0-.188.094-.375.281-.469m2.594.469 1.594.75c.312.125.593.406.75.719l.718 1.593.75-1.594c.157-.312.407-.593.72-.718L9 11.969l-1.594-.75c-.312-.125-.562-.406-.718-.719l-.75-1.594-.72 1.594c-.155.313-.437.594-.75.719zM12 16l.656-1.75c.031-.156.188-.25.344-.25.125 0 .281.094.313.25L14 16l1.75.688c.156.03.25.187.25.312 0 .156-.094.313-.25.344L14 18l-.687 1.781c-.032.125-.188.219-.313.219-.156 0-.312-.094-.344-.219L12 18l-1.781-.656C10.094 17.312 10 17.156 10 17c0-.125.094-.281.219-.312z'/%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-6\" />;\n if (id === \"cfds\") return <Icon name=\"chart-candlestick\" weight={selected ? \"bold\" : \"regular\"} className=\"size-6\" />;\n if (id === \"options\") return <Icon name=\"options\" weight={selected ? \"fill\" : \"regular\"} className=\"size-6\" />;\n if (id === \"portfolio\") return <Icon name=\"wallet\" weight={selected ? \"fill\" : \"regular\"} className=\"size-6\" />;\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-5\" />\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-6\" />\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","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { Tag } from \"@/components/ui/tag\";\nimport {\n SegmentedControl,\n SegmentedControlList,\n SegmentedControlTrigger,\n} from \"@/components/ui/segmented-control\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Section (block)\n 1:1 with Figma \"section (slots)\" — node 10560:87036.\n A section header pattern: eyebrow tag, title (+ chevron), an optional\n right-aligned control cluster (button / nav arrows / compact switcher),\n a description, an optional full-width segmented control, and a content slot.\n ────────────────────────────────────────────────────────────────────────── */\n\nexport type SectionTitleSize =\n | \"titleLg\"\n | \"titleMd\"\n | \"titleSm\"\n | \"titleCaption\"\n | \"loading\";\n\nconst TITLE_SIZE_CLASS: Record<Exclude<SectionTitleSize, \"loading\">, string> = {\n titleLg: \"text-lg font-bold leading-7\", // body/lg/bold — 18px / 700 / 28px\n titleMd: \"text-base font-bold leading-6\", // body/md/bold — 16px / 700 / 24px\n titleSm: \"text-sm font-bold leading-5\", // body/sm/bold — 14px / 700 / 20px\n titleCaption: \"text-xs font-bold leading-[18px]\", // caption/bold — 12px / 700 / 18px\n};\n\nconst SKELETON_WIDTH: Record<Exclude<SectionTitleSize, \"loading\">, string> = {\n titleLg: \"h-7 w-40\",\n titleMd: \"h-6 w-36\",\n titleSm: \"h-5 w-32\",\n titleCaption: \"h-[18px] w-28\",\n};\n\nexport interface SectionTag {\n label: string;\n /** Show a leading icon inside the tag. */\n showIcon?: boolean;\n /** Icon name (defaults to a sparkle) when showIcon is true. */\n icon?: React.ComponentProps<typeof Icon>[\"name\"];\n}\n\nexport interface SectionProps {\n /** Section title text. */\n title?: string;\n /** Supporting description below the title row. */\n description?: string;\n /** Title typography size, or \"loading\" to render a skeleton title. */\n titleSize?: SectionTitleSize;\n\n /** Eyebrow tag above the title. */\n showTag?: boolean;\n tag?: SectionTag;\n\n showTitle?: boolean;\n /** Trailing chevron next to the title (affordance for \"see all\"). */\n showChevron?: boolean;\n /** Click handler for the title row (when it acts as a link). */\n onTitleClick?: () => void;\n\n /** Right-aligned control cluster (button + navigation + compact switcher). */\n showControlSection?: boolean;\n\n /** Grey pill button inside the control cluster. */\n showButton?: boolean;\n buttonLabel?: string;\n onButtonClick?: () => void;\n\n /** Grey previous/next chevron control. */\n showNavigation?: boolean;\n onPrev?: () => void;\n onNext?: () => void;\n\n /** Compact segmented control inside the control cluster (desktop). */\n controlSegments?: string[];\n\n showDescription?: boolean;\n\n /** Full-width segmented control below the description. */\n showSegmentedControl?: boolean;\n segments?: string[];\n value?: string;\n onValueChange?: (value: string) => void;\n\n /** Content rendered in the section's slot. */\n children?: React.ReactNode;\n className?: string;\n}\n\n/* Grey pill button — matches the 24px control in Figma. */\nfunction GreyButton({\n label,\n onClick,\n}: {\n label: string;\n onClick?: () => void;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className=\"inline-flex h-6 shrink-0 items-center justify-center rounded-2xl bg-[var(--background-default-opacity-default)] px-4 text-xs font-normal text-prominent transition-colors hover:bg-[var(--background-hover-default)]\"\n >\n {label}\n </button>\n );\n}\n\n/* Grey previous/next chevron control — two joined 24px buttons. */\nfunction GreyNav({\n onPrev,\n onNext,\n}: {\n onPrev?: () => void;\n onNext?: () => void;\n}) {\n return (\n <div className=\"flex shrink-0 items-center gap-[2px]\">\n <button\n type=\"button\"\n onClick={onPrev}\n aria-label=\"Previous\"\n className=\"flex size-6 items-center justify-center rounded-l-full bg-[var(--background-default-opacity-default)] text-prominent transition-colors hover:bg-[var(--background-hover-default)]\"\n >\n <Icon name=\"chevron-left\" className=\"size-5\" aria-hidden />\n </button>\n <button\n type=\"button\"\n onClick={onNext}\n aria-label=\"Next\"\n className=\"flex size-6 items-center justify-center rounded-r-full bg-[var(--background-default-opacity-default)] text-prominent transition-colors hover:bg-[var(--background-hover-default)]\"\n >\n <Icon name=\"chevron-right\" className=\"size-5\" aria-hidden />\n </button>\n </div>\n );\n}\n\nexport function Section({\n title = \"Title\",\n description = \"Description goes here\",\n titleSize = \"titleLg\",\n showTag = false,\n tag = { label: \"Label\" },\n showTitle = true,\n showChevron = false,\n onTitleClick,\n showControlSection = false,\n showButton = false,\n buttonLabel = \"Label\",\n onButtonClick,\n showNavigation = false,\n onPrev,\n onNext,\n controlSegments = [\"Label\", \"Label\"],\n showDescription = false,\n showSegmentedControl = false,\n segments = [\"Label\", \"Label\"],\n value,\n onValueChange,\n children,\n className,\n}: SectionProps) {\n const isLoading = titleSize === \"loading\";\n const sizeKey: Exclude<SectionTitleSize, \"loading\"> = isLoading\n ? \"titleLg\"\n : titleSize;\n\n const TitleTag = onTitleClick ? \"button\" : \"div\";\n\n return (\n <section\n className={cn(\n \"flex w-full max-w-[608px] flex-col gap-4 bg-primary-surface px-6\",\n className,\n )}\n data-slot=\"section\"\n >\n {/* container - title */}\n <div className=\"flex w-full flex-col justify-center gap-2\">\n {showTag && (\n <Tag variant=\"outline-neutral\" size=\"2xs\">\n {tag.showIcon && (\n <Icon name={tag.icon ?? \"sparkles\"} aria-hidden />\n )}\n {tag.label}\n </Tag>\n )}\n\n {/* title, chevron, control section */}\n <div className=\"flex w-full items-center justify-between gap-4\">\n {showTitle && (\n <TitleTag\n type={onTitleClick ? \"button\" : undefined}\n onClick={onTitleClick}\n className={cn(\n \"flex min-w-0 flex-1 items-center gap-2\",\n onTitleClick && \"cursor-pointer text-left\",\n )}\n >\n {isLoading ? (\n <Skeleton className={SKELETON_WIDTH[sizeKey]} />\n ) : (\n <>\n <span\n className={cn(\n \"truncate text-prominent\",\n TITLE_SIZE_CLASS[sizeKey],\n )}\n >\n {title}\n </span>\n {showChevron && (\n <Icon\n name=\"chevron-right\"\n weight=\"fill\"\n className=\"size-6 shrink-0 text-prominent\"\n aria-hidden\n />\n )}\n </>\n )}\n </TitleTag>\n )}\n\n {showControlSection && (\n <div className=\"flex shrink-0 items-center gap-2\">\n {showButton && (\n <GreyButton label={buttonLabel} onClick={onButtonClick} />\n )}\n {showNavigation && <GreyNav onPrev={onPrev} onNext={onNext} />}\n <SegmentedControl defaultValue=\"seg-0\" className=\"w-[200px]\">\n <SegmentedControlList size=\"md\" className=\"w-full\">\n {controlSegments.map((label, i) => (\n <SegmentedControlTrigger key={i} value={`seg-${i}`}>\n {label}\n </SegmentedControlTrigger>\n ))}\n </SegmentedControlList>\n </SegmentedControl>\n </div>\n )}\n </div>\n\n {showDescription && (\n <p className=\"body-md min-w-full text-subtle\">{description}</p>\n )}\n </div>\n\n {/* container - full-width segmented control */}\n {showSegmentedControl && (\n <SegmentedControl\n value={value}\n onValueChange={onValueChange}\n defaultValue={value ? undefined : \"seg-0\"}\n className=\"w-full\"\n >\n <SegmentedControlList size=\"md\" className=\"w-full\">\n {segments.map((label, i) => (\n <SegmentedControlTrigger key={i} value={`seg-${i}`}>\n {label}\n </SegmentedControlTrigger>\n ))}\n </SegmentedControlList>\n </SegmentedControl>\n )}\n\n {/* slot */}\n {children}\n </section>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { DerivLightMt5StandardIcon } from \"@deriv/quill-icons/Illustration\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { Tag } from \"@/components/ui/tag\";\nimport { HeroActionButton } from \"./hero-action-button\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Trading Account Card (block)\n 1:1 with Figma \"card / trading account\" — mobile node 32858:12607,\n desktop node 32989:24677.\n\n A trading-account summary card with a logo, subtitle/title, optional\n verification affordances, and a Trade / Transfer / Details action cluster.\n\n Responsive by default: renders the mobile layout below the `md` breakpoint\n and the desktop layout from `md` up (CSS-only, SSR-safe). Pass `layout` to\n force a single layout (used by the playground to show both side by side).\n ────────────────────────────────────────────────────────────────────────── */\n\nexport type TradingAccountCardLayout = \"mobile\" | \"desktop\";\nexport type TradingAccountCardType = \"loading\" | \"real\" | \"demo\";\n\nexport interface TradingAccountCardProps {\n /** Force a layout. Omit (default) = responsive: mobile < md, desktop ≥ md. */\n layout?: TradingAccountCardLayout;\n /** Card state. \"loading\" renders skeletons. */\n type?: TradingAccountCardType;\n /** Account name (bold). */\n subtitle?: string;\n /** Balance / supporting line below the subtitle. */\n title?: string;\n /** Account logo — Quill illustration component or image src. Falls back to a neutral block. */\n logo?: React.ReactNode;\n /** @deprecated use `logo` instead */\n logoSrc?: string;\n /** real only — \"Verification required\" tag next to the title. */\n verificationTag?: boolean;\n /** real only — standalone warning icon next to the title. */\n showVerificationNeeded?: boolean;\n /** desktop only — refresh icon next to the subtitle. */\n showIconRefresh?: boolean;\n onTrade?: () => void;\n onTransfer?: () => void;\n onDetails?: () => void;\n className?: string;\n}\n\n/* Action-cluster icons wrapped as ElementType for HeroActionButton. */\nconst TradeIcon = ({ className }: { className?: string }) => (\n <Icon name=\"chart-candlestick\" className={className} />\n);\nconst TransferIcon = ({ className }: { className?: string }) => (\n <Icon name=\"arrow-right-arrow-left\" className={className} />\n);\nconst DetailsIcon = ({ className }: { className?: string }) => (\n <Icon name=\"ellipsis\" className={className} />\n);\n\n/* Account logo — Quill illustration, legacy src, or neutral placeholder. */\nfunction Logo({ node, src, loading }: { node?: React.ReactNode; src?: string; loading?: boolean }) {\n if (loading) {\n return <Skeleton className=\"size-12 shrink-0 rounded-lg\" />;\n }\n return (\n <div className=\"relative size-12 shrink-0 overflow-hidden rounded-lg\">\n {node ?? (src ? (\n <img\n alt=\"\"\n src={src}\n className=\"absolute inset-0 size-full object-cover\"\n />\n ) : (\n <div className=\"size-full bg-[var(--background-default-opacity-default)]\" />\n ))}\n </div>\n );\n}\n\n/* Verification required tag / standalone warning. */\nfunction TitleTags({\n type,\n verificationTag,\n showVerificationNeeded,\n}: Pick<\n TradingAccountCardProps,\n \"type\" | \"verificationTag\" | \"showVerificationNeeded\"\n>) {\n return (\n <>\n {type === \"real\" && showVerificationNeeded && (\n <Icon\n name=\"circle-exclamation\"\n weight=\"regular\"\n className=\"size-6 shrink-0 text-warning\"\n aria-label=\"Verification needed\"\n />\n )}\n {type === \"real\" && verificationTag && (\n <Tag variant=\"outline-yellow\" size=\"2xs\" className=\"shrink-0\">\n <Icon name=\"circle-exclamation\" aria-hidden />\n Verification required\n </Tag>\n )}\n {type === \"demo\" && (\n <Tag variant=\"outline-neutral\" size=\"2xs\" className=\"shrink-0\">\n Demo\n </Tag>\n )}\n </>\n );\n}\n\n/* Title + subtitle column, shared by both layouts. */\nfunction TitleBlock({\n type,\n subtitle,\n title,\n verificationTag,\n showVerificationNeeded,\n showIconRefresh,\n}: Pick<\n TradingAccountCardProps,\n | \"type\"\n | \"subtitle\"\n | \"title\"\n | \"verificationTag\"\n | \"showVerificationNeeded\"\n | \"showIconRefresh\"\n>) {\n if (type === \"loading\") {\n return (\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <Skeleton className=\"h-4 w-32 rounded-full\" />\n <Skeleton className=\"h-2 w-16 rounded-full\" />\n </div>\n );\n }\n\n return (\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <div className=\"flex items-center gap-2\">\n <span className=\"truncate text-lg font-bold leading-7 text-prominent\">\n {subtitle}\n </span>\n {showIconRefresh && (\n <Icon\n name=\"rotate-right\"\n weight=\"fill\"\n className=\"size-6 shrink-0 text-prominent\"\n aria-label=\"Refresh\"\n />\n )}\n </div>\n <div className=\"flex items-center gap-1\">\n <span className=\"whitespace-nowrap text-base leading-6 text-subtle\">\n {title}\n </span>\n <TitleTags\n type={type}\n verificationTag={verificationTag}\n showVerificationNeeded={showVerificationNeeded}\n />\n </div>\n </div>\n );\n}\n\n/* Trade / Transfer / Details cluster, shared by both layouts. */\nfunction Actions({\n type,\n colClass,\n onTrade,\n onTransfer,\n onDetails,\n}: Pick<\n TradingAccountCardProps,\n \"type\" | \"onTrade\" | \"onTransfer\" | \"onDetails\"\n> & { colClass: string }) {\n if (type === \"loading\") {\n return (\n <>\n <HeroActionButton\n label=\"\"\n icon={TradeIcon}\n surface=\"light\"\n state=\"loading\"\n colClass={colClass}\n />\n <HeroActionButton\n label=\"\"\n icon={TransferIcon}\n surface=\"light\"\n state=\"loading\"\n colClass={colClass}\n />\n <HeroActionButton\n label=\"\"\n icon={DetailsIcon}\n surface=\"light\"\n state=\"loading\"\n colClass={colClass}\n />\n </>\n );\n }\n\n return (\n <>\n <HeroActionButton\n label=\"Trade\"\n icon={TradeIcon}\n primary\n surface=\"light\"\n colClass={colClass}\n onClick={onTrade}\n />\n {type === \"real\" && (\n <HeroActionButton\n label=\"Transfer\"\n icon={TransferIcon}\n surface=\"light\"\n colClass={colClass}\n onClick={onTransfer}\n />\n )}\n <HeroActionButton\n label=\"Details\"\n icon={DetailsIcon}\n surface=\"light\"\n colClass={colClass}\n onClick={onDetails}\n />\n </>\n );\n}\n\nfunction renderCard(\n concrete: TradingAccountCardLayout,\n props: TradingAccountCardProps,\n responsive: boolean,\n) {\n const {\n type = \"loading\",\n subtitle = \"Subtitle\",\n title = \"Title\",\n logo: logoProp,\n logoSrc,\n verificationTag = false,\n showVerificationNeeded = false,\n showIconRefresh = false,\n onTrade,\n onTransfer,\n onDetails,\n } = props;\n\n const loading = type === \"loading\";\n const resolvedLogo = logoProp ?? (logoSrc ? undefined : <DerivLightMt5StandardIcon className=\"absolute inset-0 size-full object-cover\" />);\n const logo = <Logo node={resolvedLogo} src={logoSrc} loading={loading} />;\n const titleBlock = (\n <TitleBlock\n type={type}\n subtitle={subtitle}\n title={title}\n verificationTag={verificationTag}\n showVerificationNeeded={showVerificationNeeded}\n showIconRefresh={concrete === \"desktop\" ? showIconRefresh : false}\n />\n );\n\n if (concrete === \"mobile\") {\n return (\n <div\n className={cn(\n \"flex flex-col gap-4 rounded-2xl bg-[var(--background-default-opacity-default)] p-4\",\n responsive ? \"w-full\" : \"w-[280px]\",\n )}\n data-slot=\"trading-account-card\"\n data-layout=\"mobile\"\n data-type={type}\n >\n {/* content */}\n <div className=\"flex items-center gap-2\">\n {titleBlock}\n {logo}\n </div>\n {/* actions */}\n <div className=\"flex items-center\">\n <Actions\n type={type}\n colClass=\"flex-1\"\n onTrade={onTrade}\n onTransfer={onTransfer}\n onDetails={onDetails}\n />\n </div>\n </div>\n );\n }\n\n // desktop\n return (\n <div\n className={cn(\n \"flex items-center gap-4 rounded-2xl bg-[var(--background-default-opacity-default)] p-6\",\n responsive ? \"w-full\" : \"w-[800px]\",\n )}\n data-slot=\"trading-account-card\"\n data-layout=\"desktop\"\n data-type={type}\n >\n {/* content */}\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n {logo}\n {titleBlock}\n </div>\n {/* actions */}\n <div className=\"flex shrink-0 items-center\">\n <Actions\n type={type}\n colClass=\"w-24 shrink-0\"\n onTrade={onTrade}\n onTransfer={onTransfer}\n onDetails={onDetails}\n />\n </div>\n </div>\n );\n}\n\nexport function TradingAccountCard({ layout, className, ...props }: TradingAccountCardProps) {\n // Forced layout — render just that one.\n if (layout) {\n return (\n <div className={className}>{renderCard(layout, props, false)}</div>\n );\n }\n\n // Responsive (default) — mobile < md, desktop ≥ md (CSS-only, SSR-safe).\n return (\n <div className={className}>\n <div className=\"md:hidden\">{renderCard(\"mobile\", props, true)}</div>\n <div className=\"hidden md:block\">{renderCard(\"desktop\", props, true)}</div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Account (activated) Card (block)\n 1:1 with Figma \"card / account (activated)\" — default node 12758:60820,\n loading node 12848:159954.\n\n A compact 200px account summary card with logo, name, and balance.\n `state=\"loading\"` renders skeleton placeholders. Optional `tag` adds a\n small outline label in the top-right corner.\n ────────────────────────────────────────────────────────────────────────── */\n\nexport type AccountActivatedCardState = \"default\" | \"hover\" | \"pressed\" | \"loading\";\n\nexport interface AccountActivatedCardProps {\n state?: AccountActivatedCardState;\n /** Account name (e.g. \"Standard\"). */\n name?: string;\n /** Numeric balance string (e.g. \"1,000.00\"). */\n balance?: string;\n /** Currency code shown next to the balance (e.g. \"USD\"). */\n currency?: string;\n /** Account logo — Quill illustration component or React node. Falls back to a neutral block. */\n logo?: React.ReactNode;\n /** @deprecated use `logo` instead */\n logoSrc?: string;\n /** Optional outline tag in the top-right corner. */\n tag?: string;\n /** Wire up real hover/active bg transitions (renders as a button). */\n interactive?: boolean;\n onClick?: () => void;\n className?: string;\n}\n\n/* ── Logo — 48px square, neutral fallback. ─────────────────────────────── */\nfunction Logo({ node, src }: { node?: React.ReactNode; src?: string }) {\n return (\n <div className=\"relative size-12 shrink-0 overflow-hidden rounded-lg\">\n {node ?? (src ? (\n <img\n alt=\"\"\n src={src}\n className=\"absolute inset-0 size-full object-cover\"\n />\n ) : (\n <div className=\"size-full bg-[var(--background-default-opacity-default)]\" />\n ))}\n </div>\n );\n}\n\n/* ── Top-right outline tag. ────────────────────────────────────────────── */\nfunction CornerTag({ label }: { label: string }) {\n return (\n <div className=\"absolute top-2 right-2 flex items-center justify-center h-4 px-1 rounded-[4px] border border-solid border-[var(--border-selected-default)]\">\n <span className=\"font-semibold whitespace-nowrap text-prominent text-[8px] leading-[8px]\">\n {label}\n </span>\n </div>\n );\n}\n\n/* ── Loading body ──────────────────────────────────────────────────────── */\n/* Skeleton bg is overridden to background-hover-default (slate @ 8%) so it\n stacks visibly over the card's own 4% surface. The default Skeleton\n secondary-surface fill is too close to that surface to be perceptible. */\nconst SKELETON_FILL = \"bg-[var(--background-hover-default)]\";\n\nfunction LoadingBody() {\n return (\n <>\n <div className=\"flex flex-col items-start w-full\">\n <div className=\"size-12 shrink-0 p-[6.55px]\">\n <Skeleton className={cn(\"size-full rounded-lg\", SKELETON_FILL)} />\n </div>\n <div className=\"flex h-6 items-center w-full\">\n <Skeleton className={cn(\"h-2 w-16 rounded-full\", SKELETON_FILL)} />\n </div>\n </div>\n <div className=\"flex h-6 items-center w-full\">\n <Skeleton className={cn(\"h-2 w-24 rounded-full\", SKELETON_FILL)} />\n </div>\n </>\n );\n}\n\n/* ── Default body ──────────────────────────────────────────────────────── */\nfunction DefaultBody({\n name,\n balance,\n currency,\n logo,\n logoSrc,\n}: Required<Pick<AccountActivatedCardProps, \"name\" | \"balance\" | \"currency\">> & {\n logo?: React.ReactNode;\n logoSrc?: string;\n}) {\n return (\n <>\n <div className=\"flex flex-col items-start w-full\">\n <Logo node={logo} src={logoSrc} />\n <p className=\"text-base leading-6 text-prominent\">{name}</p>\n </div>\n <div className=\"flex items-end gap-0.5 whitespace-nowrap\">\n <span className=\"text-base leading-6 text-prominent\">{balance}</span>\n <span className=\"text-xs leading-5 text-subtle\">{currency}</span>\n </div>\n </>\n );\n}\n\n/* ── Public export ─────────────────────────────────────────────────────── */\nexport function AccountActivatedCard({\n state = \"default\",\n name = \"Name\",\n balance = \"1,000.00\",\n currency = \"USD\",\n logo,\n logoSrc,\n tag,\n interactive = false,\n onClick,\n className,\n}: AccountActivatedCardProps) {\n const bgClass =\n state === \"hover\"\n ? \"bg-[var(--background-hover-default)]\"\n : state === \"pressed\"\n ? \"bg-[var(--background-pressed-default)]\"\n : \"bg-[var(--background-default-opacity-default)]\";\n\n const interactiveClass = interactive\n ? \"cursor-pointer transition-colors hover:bg-[var(--background-hover-default)] active:bg-[var(--background-pressed-default)]\"\n : \"\";\n\n const baseClass = cn(\n \"relative flex flex-col items-start gap-2 w-[200px] p-4 rounded-2xl\",\n bgClass,\n interactiveClass,\n className,\n );\n\n const content = (\n <>\n {state === \"loading\" ? (\n <LoadingBody />\n ) : (\n <DefaultBody\n name={name}\n balance={balance}\n currency={currency}\n logo={logo}\n logoSrc={logoSrc}\n />\n )}\n {state !== \"loading\" && tag && <CornerTag label={tag} />}\n </>\n );\n\n if (interactive) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={baseClass}\n data-slot=\"account-activated-card\"\n data-state={state}\n >\n {content}\n </button>\n );\n }\n\n return (\n <div\n className={baseClass}\n data-slot=\"account-activated-card\"\n data-state={state}\n >\n {content}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"@/components/ui/icon\";\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n type CarouselApi,\n} from \"@/components/ui/carousel\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Home Banner (block)\n 1:1 with Figma carousel - banner — desktop node 10572:12895.\n Mobile node: 10409:5271 (h-96, pl-16, gap-8, media 128px).\n\n A dismissible auto-advancing banner carousel with animated pagination.\n Assets (video / image) are passed as props — the block has no bundled media.\n\n bgClass defaults:\n light \"bg-[rgba(44,154,255,0.08)]\" — Figma semantic/color/blue/opacity/surface/low\n dark \"bg-[#181c25]\" — Figma semantic/color/slate/solid/surface/static/high\n These colours are not mapped to a Tailwind utility in this package; consumers\n may override with any class.\n ────────────────────────────────────────────────────────────────────────── */\n\nconst AUTOPLAY_MS_DEFAULT = 5000;\n\nexport type HomeBannerLayout = \"mobile\" | \"desktop\";\n\nexport interface BannerItem {\n id: string;\n /** Tailwind bg class for the card. Default: rgba(44,154,255,0.08) blue tint. */\n bgClass?: string;\n text: string;\n /** Tailwind text class. Default: text-prominent. */\n textClass?: string;\n /** Dismiss button bg + icon colour for this banner's surface. */\n closeSurface?: \"light\" | \"dark\";\n tag?: {\n label: string;\n /** Tailwind bg class. Default: bg-[#0c28f7] sapphire. */\n bgClass?: string;\n };\n /** src for a <video> or <img> in the media slot. */\n mediaSrc?: string;\n mediaType?: \"video\" | \"image\";\n}\n\nexport interface HomeBannerProps {\n items?: BannerItem[];\n autoplayMs?: number;\n /** Force a layout. Omit = responsive: mobile < md, desktop ≥ md. */\n layout?: HomeBannerLayout;\n className?: string;\n}\n\n/* ── Pagination ─────────────────────────────────────────────────────────── */\nfunction BannerPagination({\n count,\n current,\n autoplayMs,\n onSelect,\n}: {\n count: number;\n current: number;\n autoplayMs: number;\n onSelect: (i: number) => void;\n}) {\n return (\n <div className=\"flex items-center gap-2\" role=\"tablist\" aria-label=\"Banner pagination\">\n {Array.from({ length: count }).map((_, i) => {\n const isSelected = i === current;\n return (\n <button\n key={i}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-label={`Go to banner ${i + 1}`}\n onClick={() => onSelect(i)}\n className={cn(\n \"border-none p-0 cursor-pointer rounded-[96px] overflow-hidden transition-all duration-300 relative h-2\",\n \"bg-[var(--pagination-bg-dot-default)]\",\n isSelected ? \"w-12\" : \"size-2\",\n )}\n >\n {isSelected && (\n /* key=current remounts this element on every slide change,\n restarting the CSS animation from 0% automatically */\n <span\n key={current}\n className=\"bg-[var(--pagination-bg-dot-selected)] absolute inset-y-0 left-0 rounded-[96px]\"\n style={{\n width: \"0%\",\n animation: `banner-fill ${autoplayMs}ms linear forwards`,\n }}\n />\n )}\n </button>\n );\n })}\n </div>\n );\n}\n\n/* ── Shared media slot ──────────────────────────────────────────────────── */\nfunction BannerMedia({\n mediaSrc,\n mediaType,\n slotClass,\n}: {\n mediaSrc?: string;\n mediaType?: \"video\" | \"image\";\n slotClass: string;\n}) {\n if (!mediaSrc) return <div className={slotClass} aria-hidden=\"true\" />;\n return (\n <div className={cn(slotClass, \"overflow-hidden\")} aria-hidden=\"true\">\n {mediaType === \"image\" ? (\n <img src={mediaSrc} alt=\"\" className=\"w-full h-full object-cover\" />\n ) : (\n <video\n src={mediaSrc}\n autoPlay\n loop\n muted\n playsInline\n preload=\"none\"\n className=\"w-full h-full object-cover\"\n />\n )}\n </div>\n );\n}\n\n/* ── Close button ───────────────────────────────────────────────────────── */\nfunction CloseButton({\n surface = \"light\",\n onClose,\n}: {\n surface?: \"light\" | \"dark\";\n onClose: () => void;\n}) {\n return (\n <button\n type=\"button\"\n aria-label=\"Dismiss banner\"\n onClick={onClose}\n className={cn(\n \"absolute top-2 right-2 flex items-center justify-center rounded-full size-6 cursor-pointer border-none transition-colors duration-fast\",\n surface === \"dark\"\n ? \"bg-[var(--banner-close-bg-dark)] hover:bg-[var(--banner-close-bg-dark-hover)] text-on-prominent-static-inverse\"\n : \"bg-[var(--banner-close-bg-light)] hover:bg-[var(--banner-close-bg-light-hover)] text-prominent\",\n )}\n >\n <Icon name=\"xmark\" weight=\"fill\" className=\"size-4\" aria-hidden />\n </button>\n );\n}\n\n/* ── Desktop card — h-128, pl-24, gap-24, media 171px ──────────────────── */\nfunction DesktopBannerCard({\n banner,\n onClose,\n}: {\n banner: BannerItem;\n onClose: () => void;\n}) {\n return (\n <div\n className={cn(\n \"relative flex items-center h-[128px] overflow-hidden rounded-2xl pl-6 gap-6 w-full\",\n banner.bgClass ?? \"bg-[var(--banner-bg-surface-blue)]\",\n )}\n data-slot=\"banner-card\"\n >\n {banner.tag && (\n <div\n className={cn(\n \"absolute top-4 left-4 flex items-center justify-center h-4 px-1 rounded-[4px]\",\n banner.tag.bgClass ?? \"bg-[var(--banner-tag-bg-sapphire)]\",\n )}\n >\n <span\n className=\"font-semibold whitespace-nowrap text-on-prominent-static-inverse text-[8px] leading-[8px]\"\n >\n {banner.tag.label}\n </span>\n </div>\n )}\n\n <p\n className={cn(\n \"flex-1 min-w-0 font-bold text-lg leading-7\",\n banner.textClass ?? \"text-prominent\",\n )}\n >\n {banner.text}\n </p>\n\n <BannerMedia\n mediaSrc={banner.mediaSrc}\n mediaType={banner.mediaType}\n slotClass=\"shrink-0 w-[171px] h-full\"\n />\n\n <CloseButton surface={banner.closeSurface} onClose={onClose} />\n </div>\n );\n}\n\n/* ── Mobile card — h-96, pl-16, gap-8, media 128px ─────────────────────── */\nfunction MobileBannerCard({\n banner,\n onClose,\n}: {\n banner: BannerItem;\n onClose: () => void;\n}) {\n return (\n <div\n className={cn(\n \"relative flex items-center h-[96px] overflow-hidden rounded-2xl pl-4 gap-2 w-full\",\n banner.bgClass ?? \"bg-[var(--banner-bg-surface-blue)]\",\n )}\n data-slot=\"banner-card\"\n >\n {banner.tag && (\n <div\n className={cn(\n \"absolute top-2 left-2 flex items-center justify-center h-4 px-1 rounded-[4px]\",\n banner.tag.bgClass ?? \"bg-[var(--banner-tag-bg-sapphire)]\",\n )}\n >\n <span\n className=\"font-semibold whitespace-nowrap text-on-prominent-static-inverse text-[8px] leading-[8px]\"\n >\n {banner.tag.label}\n </span>\n </div>\n )}\n\n <p\n className={cn(\n \"flex-1 min-w-0 font-bold text-sm leading-5\",\n banner.textClass ?? \"text-prominent\",\n )}\n >\n {banner.text}\n </p>\n\n <BannerMedia\n mediaSrc={banner.mediaSrc}\n mediaType={banner.mediaType}\n slotClass=\"shrink-0 w-[128px] h-full\"\n />\n\n <CloseButton surface={banner.closeSurface} onClose={onClose} />\n </div>\n );\n}\n\n/* ── Public single-card export ──────────────────────────────────────────\n Renders a single banner card outside the carousel. Useful when a host\n wants exactly one banner without the auto-advancing / dismissible shell.\n `onClose` is optional — when omitted the dismiss button is hidden. */\nexport interface BannerCardProps {\n banner: BannerItem;\n /** Force a layout. Omit = responsive: mobile < md, desktop ≥ md. */\n layout?: HomeBannerLayout;\n onClose?: () => void;\n className?: string;\n}\n\nexport function BannerCard({ banner, layout, onClose, className }: BannerCardProps) {\n const noop = () => undefined;\n const handleClose = onClose ?? noop;\n const showClose = Boolean(onClose);\n\n const desktop = (\n <div className={showClose ? undefined : \"[&_[aria-label='Dismiss banner']]:hidden\"}>\n <DesktopBannerCard banner={banner} onClose={handleClose} />\n </div>\n );\n const mobile = (\n <div className={showClose ? undefined : \"[&_[aria-label='Dismiss banner']]:hidden\"}>\n <MobileBannerCard banner={banner} onClose={handleClose} />\n </div>\n );\n\n if (layout === \"desktop\") return <div className={className}>{desktop}</div>;\n if (layout === \"mobile\") return <div className={className}>{mobile}</div>;\n\n return (\n <div className={className}>\n <div className=\"md:hidden\">{mobile}</div>\n <div className=\"hidden md:block\">{desktop}</div>\n </div>\n );\n}\n\n/* ── Core carousel logic (shared between desktop and mobile renders) ────── */\nfunction BannerCarousel({\n items,\n autoplayMs,\n CardComponent,\n carouselItemStyle,\n}: {\n items: BannerItem[];\n autoplayMs: number;\n CardComponent: typeof DesktopBannerCard | typeof MobileBannerCard;\n carouselItemStyle: React.CSSProperties;\n}) {\n const [api, setApi] = React.useState<CarouselApi>();\n const [current, setCurrent] = React.useState(0);\n const [dismissed, setDismissed] = React.useState<Set<string>>(new Set());\n const timerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const visible = items.filter((b) => !dismissed.has(b.id));\n\n React.useEffect(() => {\n if (!api || visible.length <= 1) return;\n timerRef.current = setTimeout(() => {\n api.scrollTo((current + 1) % visible.length);\n }, autoplayMs);\n return () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n };\n }, [api, current, visible.length, autoplayMs]);\n\n function handleSetApi(emblaApi: CarouselApi) {\n if (!emblaApi) return;\n setApi(emblaApi);\n setCurrent(emblaApi.selectedScrollSnap());\n emblaApi.on(\"select\", () => setCurrent(emblaApi.selectedScrollSnap()));\n }\n\n function handleDismiss(id: string) {\n setDismissed((prev) => new Set(prev).add(id));\n setCurrent(0);\n }\n\n if (visible.length === 0) return null;\n\n return (\n <section aria-label=\"Promotional banners\" className=\"flex flex-col gap-4 w-full\">\n <div className=\"overflow-hidden w-full\">\n <Carousel\n opts={{ align: \"start\", loop: false, dragFree: false }}\n setApi={handleSetApi}\n className=\"w-full\"\n >\n <CarouselContent className=\"flex gap-2\" style={{ marginLeft: 0 }}>\n {visible.map((banner) => (\n <CarouselItem key={banner.id} style={carouselItemStyle}>\n <CardComponent\n banner={banner}\n onClose={() => handleDismiss(banner.id)}\n />\n </CarouselItem>\n ))}\n </CarouselContent>\n </Carousel>\n </div>\n\n {visible.length > 1 && (\n <div className=\"flex justify-center\">\n <BannerPagination\n count={visible.length}\n current={current}\n autoplayMs={autoplayMs}\n onSelect={(i) => api?.scrollTo(i)}\n />\n </div>\n )}\n </section>\n );\n}\n\n/* ── Public export ──────────────────────────────────────────────────────── */\nexport function HomeBanner({\n items,\n autoplayMs = AUTOPLAY_MS_DEFAULT,\n layout,\n className,\n}: HomeBannerProps) {\n const resolvedItems: BannerItem[] = items ?? [\n {\n id: \"banner-1\",\n text: \"Get a 20% bonus on your first MT5 Standard transfer.\",\n },\n {\n id: \"banner-2\",\n text: \"Up to 50% discount on Vol Indices spreads\",\n tag: { label: \"This weekend\", bgClass: \"bg-[var(--banner-tag-bg-sapphire)]\" },\n },\n ];\n\n /* Desktop: calc(100% - 48px) → ~40px peek of next card */\n const desktopItemStyle: React.CSSProperties = {\n flex: \"0 0 calc(100% - 48px)\",\n paddingLeft: 0,\n minWidth: 0,\n };\n /* Mobile: 320px fixed → peek via overflow */\n const mobileItemStyle: React.CSSProperties = {\n flex: \"0 0 320px\",\n paddingLeft: 0,\n minWidth: 0,\n };\n\n const desktopCarousel = (\n <BannerCarousel\n items={resolvedItems}\n autoplayMs={autoplayMs}\n CardComponent={DesktopBannerCard}\n carouselItemStyle={desktopItemStyle}\n />\n );\n\n const mobileCarousel = (\n <div className=\"px-6\">\n <BannerCarousel\n items={resolvedItems}\n autoplayMs={autoplayMs}\n CardComponent={MobileBannerCard}\n carouselItemStyle={mobileItemStyle}\n />\n </div>\n );\n\n if (layout === \"desktop\") {\n return <div className={cn(\"w-full\", className)} data-slot=\"home-banner\">{desktopCarousel}</div>;\n }\n if (layout === \"mobile\") {\n return <div className={cn(\"w-full\", className)} data-slot=\"home-banner\">{mobileCarousel}</div>;\n }\n\n return (\n <div className={cn(\"w-full\", className)} data-slot=\"home-banner\">\n <div className=\"md:hidden\">{mobileCarousel}</div>\n <div className=\"hidden md:block\">{desktopCarousel}</div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { DerivLightOptionsIcon, DerivLightCTraderIcon } from \"@deriv/quill-icons/Illustration\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Home — Explore Deriv (block)\n 1:1 with Figma launchpad grid/row.\n\n Mobile: 3-column grid (up to 2 rows).\n Desktop (md+): single flex row — all items visible.\n\n Icon images are passed as `imgSrc` props. When omitted a neutral\n placeholder circle is rendered — no bundled assets.\n ────────────────────────────────────────────────────────────────────────── */\n\nexport type HomeExploreDerivLayout = \"mobile\" | \"desktop\";\n\nexport interface ExploreItem {\n id: string;\n /** Quill illustration component. Takes precedence over imgSrc. */\n icon?: React.ComponentType<React.ImgHTMLAttributes<HTMLImageElement>>;\n /** Icon image src. Omit for neutral placeholder circle. */\n imgSrc?: string;\n label: string;\n /** Badge text, e.g. \"New\" or \"Copy trading\". */\n tag?: string;\n /** Tailwind bg class for the badge. Default: bg-[var(--primitive-emerald-700)]. */\n tagBgClass?: string;\n disabled?: boolean;\n onClick?: () => void;\n}\n\nexport interface HomeExploreDerivProps {\n title?: string;\n items?: ExploreItem[];\n /** Force a layout. Omit = responsive: mobile < md, desktop ≥ md. */\n layout?: HomeExploreDerivLayout;\n className?: string;\n}\n\nconst DEMO_ITEMS: ExploreItem[] = [\n { id: \"deposits\", label: \"Deposits\", imgSrc: \"/assets/icon-deposit.png\" },\n { id: \"cfds\", label: \"CFDs\", imgSrc: \"/assets/icon-cfds.png\" },\n { id: \"options\", label: \"Options\", icon: DerivLightOptionsIcon },\n { id: \"derivx\", label: \"Deriv X\", imgSrc: \"/assets/logo-deriv-x.png\", tag: \"New\" },\n { id: \"ctrader\", label: \"cTrader\", icon: DerivLightCTraderIcon, tag: \"Copy trading\" },\n { id: \"more\", label: \"More\", imgSrc: \"/assets/icon-more.png\" },\n];\n\n/* ── Single launchpad item ──────────────────────────────────────────────── */\nfunction ExploreItemButton({ item }: { item: ExploreItem }) {\n return (\n <button\n type=\"button\"\n onClick={item.onClick}\n disabled={item.disabled}\n aria-label={item.label}\n className={cn(\n \"flex flex-col items-center gap-2 bg-transparent border-none p-0 cursor-pointer group relative\",\n item.disabled && \"cursor-not-allowed\",\n )}\n data-slot=\"explore-item\"\n >\n {/* Icon circle */}\n <div\n className={cn(\n \"relative flex items-center justify-center size-16 rounded-[32px] transition-colors duration-fast\",\n \"bg-[var(--background-default-opacity-default)]\",\n !item.disabled && \"group-hover:bg-[var(--background-pressed-default)] group-active:bg-[var(--background-pressed-default)]\",\n item.disabled && \"opacity-[0.24]\",\n )}\n >\n {item.icon ? (\n <item.icon className=\"size-8 object-contain\" aria-hidden />\n ) : item.imgSrc ? (\n <img src={item.imgSrc} alt=\"\" className=\"size-8 object-contain\" aria-hidden />\n ) : (\n <Icon\n name=\"circle\"\n weight=\"regular\"\n className={cn(\n \"size-8\",\n item.disabled ? \"text-[var(--text-disabled-default)]\" : \"text-subtle\",\n )}\n aria-hidden\n />\n )}\n\n {/* Badge — positioned at top-right of the icon circle */}\n {item.tag && !item.disabled && (\n <span\n className={cn(\n \"absolute -top-1 -right-1 flex items-center justify-center h-4 rounded-[4px] px-1 whitespace-nowrap\",\n item.tagBgClass ?? \"bg-[var(--primitive-emerald-700)]\",\n )}\n >\n <span\n className=\"font-semibold text-on-prominent-static-inverse text-[8px] leading-[8px]\"\n >\n {item.tag}\n </span>\n </span>\n )}\n </div>\n\n {/* Label */}\n <span\n className={cn(\n \"text-xs font-normal leading-5 text-center max-w-[72px] break-words\",\n item.disabled ? \"text-[var(--text-disabled-default)]\" : \"text-prominent\",\n )}\n >\n {item.label}\n </span>\n </button>\n );\n}\n\n/* ── Responsive wrappers ────────────────────────────────────────────────── */\nfunction ExploreGrid({ items }: { items: ExploreItem[] }) {\n return (\n <div className=\"grid grid-cols-3 gap-x-4 gap-y-6\" data-slot=\"explore-grid\">\n {items.map((item) => (\n <div key={item.id} className=\"flex justify-center\">\n <ExploreItemButton item={item} />\n </div>\n ))}\n </div>\n );\n}\n\nfunction ExploreRow({ items }: { items: ExploreItem[] }) {\n return (\n <div className=\"flex items-start w-full\" data-slot=\"explore-row\">\n {items.map((item) => (\n <div key={item.id} className=\"flex-1 flex flex-col items-center min-w-0\">\n <ExploreItemButton item={item} />\n </div>\n ))}\n </div>\n );\n}\n\n/* ── Public export ──────────────────────────────────────────────────────── */\nexport function HomeExploreDeriv({\n title = \"Explore Deriv\",\n items,\n layout,\n className,\n}: HomeExploreDerivProps) {\n const resolvedItems = items ?? DEMO_ITEMS;\n\n const mobileView = (\n <div className=\"flex flex-col gap-4 max-w-[400px]\">\n <p className=\"text-base font-bold leading-6 text-prominent\">{title}</p>\n <ExploreGrid items={resolvedItems} />\n </div>\n );\n\n const desktopView = (\n <div className=\"flex flex-col gap-4\">\n <p className=\"text-base font-bold leading-6 text-prominent\">{title}</p>\n <ExploreRow items={resolvedItems} />\n </div>\n );\n\n if (layout === \"desktop\") {\n return (\n <div className={cn(\"w-full\", className)} data-slot=\"home-explore-deriv\">\n {desktopView}\n </div>\n );\n }\n if (layout === \"mobile\") {\n return (\n <div className={cn(\"w-full\", className)} data-slot=\"home-explore-deriv\">\n {mobileView}\n </div>\n );\n }\n\n return (\n <div className={cn(\"w-full\", className)} data-slot=\"home-explore-deriv\">\n <div className=\"md:hidden\">{mobileView}</div>\n <div className=\"hidden md:block\">{desktopView}</div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useEffect, useRef, useState, useCallback } from \"react\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Home — Highlight Card (block)\n Atom card used inside HomeHighlights carousel.\n\n Preview area (132px): renders a lazy-loaded video, a static image, or a\n neutral bg-subtle placeholder when neither is supplied.\n\n Tags row: single-line, overflow items replaced by a \"+N\" indicator.\n Videos are loaded via IntersectionObserver (preload=\"none\" until visible).\n ────────────────────────────────────────────────────────────────────────── */\n\nexport interface HomeHighlightCardProps {\n /** Static image src for the preview area. */\n previewSrc?: string;\n /** Video src — takes precedence over previewSrc. Lazy-loaded on viewport entry. */\n videoSrc?: string;\n /** Black background behind the preview image (for dark-on-dark media). */\n darkPreview?: boolean;\n /** Small overline text above the title. */\n overline?: string;\n title: string;\n description: string;\n tags: string[];\n /** Card width in px. Default 240. */\n width?: number;\n}\n\n/* ── Lazy video ─────────────────────────────────────────────────────────── */\n\nfunction LazyVideo({\n src,\n className,\n}: {\n src: string;\n className?: string;\n}) {\n const videoRef = useRef<HTMLVideoElement>(null);\n const observerRef = useRef<IntersectionObserver | null>(null);\n\n useEffect(() => {\n const el = videoRef.current;\n if (!el) return;\n observerRef.current = new IntersectionObserver(\n ([entry]) => {\n if (entry?.isIntersecting && el.getAttribute(\"data-src\")) {\n el.src = el.getAttribute(\"data-src\") as string;\n el.removeAttribute(\"data-src\");\n el.load();\n observerRef.current?.disconnect();\n }\n },\n { rootMargin: \"200px\" },\n );\n observerRef.current.observe(el);\n return () => observerRef.current?.disconnect();\n }, []);\n\n return (\n <video\n ref={videoRef}\n data-src={src}\n autoPlay\n loop\n muted\n playsInline\n preload=\"none\"\n className={className}\n aria-hidden=\"true\"\n />\n );\n}\n\n/* ── Tags row — single line, overflowing tags replaced by \"+N\" ──────────── */\n\nfunction TagsRow({ tags }: { tags: string[] }) {\n const containerRef = useRef<HTMLDivElement>(null);\n const tagsRef = useRef<(HTMLSpanElement | null)[]>([]);\n const [visibleCount, setVisibleCount] = useState(tags.length);\n const [measured, setMeasured] = useState(false);\n\n const measure = useCallback(() => {\n const container = containerRef.current;\n if (!container) return;\n\n tagsRef.current.forEach((el) => {\n if (el) {\n el.style.display = \"\";\n el.style.visibility = \"hidden\";\n }\n });\n\n const containerWidth = container.clientWidth;\n const gap = 4;\n const plusIndicatorWidth = 24;\n let usedWidth = 0;\n let count = 0;\n\n for (let i = 0; i < tags.length; i++) {\n const el = tagsRef.current[i];\n if (!el) break;\n const childWidth = el.offsetWidth;\n const gapBefore = i > 0 ? gap : 0;\n const newTotal = usedWidth + gapBefore + childWidth;\n\n if (i === tags.length - 1) {\n if (newTotal <= containerWidth) count = i + 1;\n } else {\n if (newTotal + gap + plusIndicatorWidth <= containerWidth) {\n count = i + 1;\n usedWidth = newTotal;\n } else {\n break;\n }\n }\n }\n\n tagsRef.current.forEach((el, i) => {\n if (el) {\n el.style.display = i < count ? \"\" : \"none\";\n el.style.visibility = \"\";\n }\n });\n\n setVisibleCount(count);\n setMeasured(true);\n }, [tags]);\n\n useEffect(() => {\n const raf = requestAnimationFrame(() => measure());\n const observer = new ResizeObserver(measure);\n if (containerRef.current) observer.observe(containerRef.current);\n return () => {\n cancelAnimationFrame(raf);\n observer.disconnect();\n };\n }, [measure]);\n\n const hiddenCount = tags.length - visibleCount;\n\n return (\n <div\n ref={containerRef}\n className=\"flex items-center w-full\"\n style={{ gap: \"4px\", flexWrap: \"nowrap\", overflow: \"hidden\" }}\n >\n {tags.map((t, i) => (\n <span\n key={t}\n ref={(el) => {\n tagsRef.current[i] = el;\n }}\n className=\"inline-flex items-center justify-center shrink-0 bg-[var(--background-default-opacity-default)]\"\n style={{\n height: \"24px\",\n padding: \"0 8px\",\n borderRadius: \"4px\",\n display: !measured || i < visibleCount ? undefined : \"none\",\n visibility: !measured ? \"hidden\" : undefined,\n }}\n >\n <span\n className=\"font-bold whitespace-nowrap text-prominent\"\n style={{ fontSize: \"12px\", lineHeight: \"20px\" }}\n >\n {t}\n </span>\n </span>\n ))}\n {hiddenCount > 0 && measured && (\n <span\n className=\"shrink-0 whitespace-nowrap text-subtle\"\n style={{ fontSize: \"14px\", lineHeight: \"20px\", fontWeight: 400 }}\n >\n +{hiddenCount}\n </span>\n )}\n </div>\n );\n}\n\n/* ── Public export ──────────────────────────────────────────────────────── */\n\nexport function HomeHighlightCard({\n previewSrc,\n videoSrc,\n darkPreview = false,\n overline,\n title,\n description,\n tags,\n width = 240,\n}: HomeHighlightCardProps) {\n return (\n <div\n className=\"flex flex-col bg-[var(--background-default-opacity-default)] overflow-hidden shrink-0\"\n style={{ width: `${width}px`, borderRadius: \"16px\" }}\n data-slot=\"home-highlight-card\"\n >\n {/* Preview — video > image > placeholder */}\n <div\n className={`relative shrink-0 overflow-hidden ${darkPreview ? \"bg-[#181c25]\" : \"bg-subtle\"}`}\n style={{ height: \"132px\", borderRadius: \"16px 16px 0 0\" }}\n >\n {videoSrc ? (\n <LazyVideo\n src={videoSrc}\n className=\"absolute inset-0 w-full h-full object-cover pointer-events-none\"\n />\n ) : previewSrc ? (\n <img\n src={previewSrc}\n alt=\"\"\n aria-hidden\n className=\"absolute inset-0 w-full h-full object-cover pointer-events-none\"\n />\n ) : null}\n </div>\n\n {/* Body */}\n <div\n className=\"flex flex-col flex-1 items-start\"\n style={{ padding: \"16px\", gap: \"16px\" }}\n >\n <div className=\"flex flex-col flex-1 items-start w-full\" style={{ gap: \"4px\" }}>\n {overline && (\n <span\n className=\"text-subtle whitespace-nowrap\"\n style={{ fontSize: \"12px\", lineHeight: \"20px\", fontWeight: 400 }}\n >\n {overline}\n </span>\n )}\n <p\n className=\"font-bold m-0 w-full text-prominent\"\n style={{ fontSize: \"18px\", lineHeight: \"28px\" }}\n >\n {title}\n </p>\n <p\n className=\"m-0 w-full text-subtle\"\n style={{ fontSize: \"14px\", lineHeight: \"20px\", fontWeight: 400 }}\n >\n {description}\n </p>\n </div>\n <TagsRow tags={tags} />\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"@/components/ui/icon\";\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n type CarouselApi,\n} from \"@/components/ui/carousel\";\nimport {\n HomeHighlightCard,\n type HomeHighlightCardProps,\n} from \"./home-highlight-card\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Home — Highlights (block)\n Carousel section: section header with title + desktop prev/next controls,\n horizontally scrollable cards. On mobile the carousel bleeds to screen\n edges; on desktop it is contained.\n\n Pass `title` and `cards` to customise. Omit both to render the built-in\n demo items (placeholder cards, no media).\n ────────────────────────────────────────────────────────────────────────── */\n\nconst DEMO_CARDS: HomeHighlightCardProps[] = [\n {\n title: \"Card 1\",\n description: \"Placeholder description for this highlight.\",\n tags: [\"Tag A\", \"Tag B\"],\n },\n {\n title: \"Card 2\",\n description: \"Placeholder description for this highlight.\",\n tags: [\"Tag C\"],\n },\n {\n title: \"Card 3\",\n description: \"Placeholder description for this highlight.\",\n tags: [\"Tag D\", \"Tag E\"],\n },\n {\n title: \"Card 4\",\n description: \"Placeholder description for this highlight.\",\n tags: [\"Tag F\"],\n },\n {\n title: \"Card 5\",\n description: \"Placeholder description for this highlight.\",\n tags: [\"Tag G\", \"Tag H\"],\n },\n];\n\nexport interface HomeHighlightsProps {\n title?: string;\n cards?: HomeHighlightCardProps[];\n className?: string;\n}\n\nexport function HomeHighlights({\n title = \"Title\",\n cards = DEMO_CARDS,\n className,\n}: HomeHighlightsProps) {\n const [api, setApi] = useState<CarouselApi>();\n const [canPrev, setCanPrev] = useState(false);\n const [canNext, setCanNext] = useState(true);\n\n function handleSetApi(emblaApi: CarouselApi) {\n if (!emblaApi) return;\n setApi(emblaApi);\n const update = () => {\n setCanPrev(emblaApi.canScrollPrev());\n setCanNext(emblaApi.canScrollNext());\n };\n update();\n emblaApi.on(\"select\", update);\n emblaApi.on(\"reInit\", update);\n }\n\n return (\n <section\n aria-label={title}\n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"16px\", paddingBottom: \"24px\" }}\n data-slot=\"home-highlights\"\n >\n {/* Header row */}\n <div className=\"flex items-center justify-between w-full\">\n <h2\n className=\"font-bold m-0 text-prominent\"\n style={{ fontSize: \"18px\", lineHeight: \"28px\" }}\n >\n {title}\n </h2>\n\n {/* Nav controls — desktop only */}\n <div className=\"hidden md:flex items-center\" style={{ gap: \"2px\" }}>\n <button\n type=\"button\"\n aria-label={`Previous ${title}`}\n disabled={!canPrev}\n onClick={() => api?.scrollPrev()}\n className=\"flex items-center justify-center size-6 border-none cursor-pointer disabled:opacity-30 disabled:cursor-default transition-opacity bg-menu-launchpad-icon-bg-default rounded-l-full\"\n >\n <Icon name=\"chevron-left\" weight=\"bold\" className=\"size-[10px] text-on-prominent\" aria-hidden />\n </button>\n <button\n type=\"button\"\n aria-label={`Next ${title}`}\n disabled={!canNext}\n onClick={() => api?.scrollNext()}\n className=\"flex items-center justify-center size-6 border-none cursor-pointer disabled:opacity-30 disabled:cursor-default transition-opacity bg-menu-launchpad-icon-bg-default rounded-r-full\"\n >\n <Icon name=\"chevron-right\" weight=\"bold\" className=\"size-[10px] text-on-prominent\" aria-hidden />\n </button>\n </div>\n </div>\n\n {/* Carousel — bleeds on mobile, contained on desktop */}\n <div className=\"-mx-6 md:mx-0\">\n <Carousel\n opts={{ align: \"start\", dragFree: true }}\n setApi={handleSetApi}\n className=\"w-full\"\n aria-label={title}\n >\n <CarouselContent className=\"items-stretch pl-6 md:pl-0 gap-4\" style={{ marginLeft: 0 }}>\n {cards.map((card) => (\n <CarouselItem key={card.title} className=\"p-0 basis-auto flex\">\n <HomeHighlightCard {...card} />\n </CarouselItem>\n ))}\n </CarouselContent>\n </Carousel>\n </div>\n </section>\n );\n}\n","\"use client\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n FeedbackSuccessScreen (block)\n Figma desktop node 10591:15338, mobile node 10591:15327.\n Full-page screen — no surrounding header or footer.\n\n Full-screen feedback / success message. Always renders on a dark\n background with a coral radial glow. Layout:\n 1. Asset placeholder — square (200 px desk / 160 px mob) or\n rectangle (320 × 160 desk / 256 × 128 mob)\n 2. Title, description, outline tag (all text-on-prominent-static-inverse)\n 3. slotActionNudge — open slot for any block or component\n 4. Footer — primary (coral) + secondary (outline) buttons\n Desktop: secondary LEFT, primary RIGHT (flex-row-reverse)\n Mobile: primary TOP, secondary BOTTOM (flex-col)\n\n Pass `layout=\"mobile\"` or `layout=\"desktop\"` to force a layout —\n required when rendering inside a constrained-width container in the\n playground (md: breakpoints fire at viewport width, not container width).\n Omit for fully responsive rendering.\n ────────────────────────────────────────────────────────────────────────── */\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../ui/icon\";\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n type CarouselApi,\n} from \"../ui/carousel\";\n\nexport type FeedbackSuccessAssetShape = \"square\" | \"rectangle\";\nexport type FeedbackSuccessLayout = \"mobile\" | \"desktop\";\n\nexport interface FeedbackSuccessScreenProps {\n /** Force a layout. Omit for responsive (mobile < md, desktop ≥ md). */\n layout?: FeedbackSuccessLayout;\n /** Shape of the 3-D asset placeholder. */\n assetShape?: FeedbackSuccessAssetShape;\n /** Real asset image src. Omit to show the dashed placeholder. */\n assetSrc?: string;\n title?: string;\n description?: string;\n /** Outline badge label below the description. */\n tag?: string;\n /** Slot for any block or component (e.g. a progress indicator). */\n slotActionNudge?: React.ReactNode;\n primaryLabel?: string;\n onPrimary?: () => void;\n secondaryLabel?: string;\n onSecondary?: () => void;\n className?: string;\n}\n\n/* ── Asset area (placeholder or real image) ────────────────────────────── */\nfunction AssetArea({\n shape,\n src,\n mob,\n desk,\n}: {\n shape: FeedbackSuccessAssetShape;\n src?: string;\n mob: boolean;\n desk: boolean;\n}) {\n const squareSize = mob ? \"size-[160px]\" : desk ? \"size-[200px]\" : \"size-[160px] md:size-[200px]\";\n const rectSize = mob\n ? \"h-[128px] w-[256px]\"\n : desk\n ? \"h-[160px] w-[320px]\"\n : \"h-[128px] w-[256px] md:h-[160px] md:w-[320px]\";\n const sizeClass = shape === \"square\" ? squareSize : rectSize;\n\n if (src) {\n return (\n <div className={cn(\"relative shrink-0 overflow-hidden rounded-2xl\", sizeClass)}>\n <img alt=\"\" src={src} className=\"absolute inset-0 size-full object-contain\" />\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center rounded-2xl border-2 border-dashed border-[var(--border-default-static-dark)]\",\n sizeClass,\n )}\n >\n <p className=\"px-3 text-center text-sm font-semibold leading-tight text-[var(--border-default-static-dark)]\">\n 3D asset goes here\n </p>\n </div>\n );\n}\n\n/* ── FeedbackTradeWithAccounts ─────────────────────────────────────────── */\n\nexport interface FeedbackTradeAccount {\n id: string;\n label: string;\n logo?: React.ReactNode;\n /** @deprecated use `logo` instead */\n logoSrc?: string;\n}\n\nexport interface FeedbackTradeWithAccountsProps {\n title?: string;\n accounts?: FeedbackTradeAccount[];\n autoplayMs?: number;\n className?: string;\n}\n\nconst TRADE_AUTOPLAY_MS = 3000;\n\nfunction TradeAccountPagination({\n count,\n current,\n autoplayMs,\n onSelect,\n}: {\n count: number;\n current: number;\n autoplayMs: number;\n onSelect: (i: number) => void;\n}) {\n return (\n <div className=\"flex items-center gap-2\" role=\"tablist\" aria-label=\"Account pagination\">\n {Array.from({ length: count }).map((_, i) => {\n const isSelected = i === current;\n return (\n <button\n key={i}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-label={`Go to account ${i + 1}`}\n onClick={() => onSelect(i)}\n className={cn(\n \"border-none p-0 cursor-pointer rounded-[96px] overflow-hidden transition-all duration-300 relative h-2\",\n \"bg-[var(--background-hover-static-dark)]\",\n isSelected ? \"w-12\" : \"size-2\",\n )}\n >\n {isSelected && (\n <span\n key={current}\n className=\"bg-on-prominent-static-inverse absolute inset-y-0 left-0 rounded-[96px]\"\n style={{\n width: \"0%\",\n animation: `banner-fill ${autoplayMs}ms linear forwards`,\n }}\n />\n )}\n </button>\n );\n })}\n </div>\n );\n}\n\nexport function FeedbackTradeWithAccounts({\n title = \"Trade with these CFD accounts\",\n accounts = [],\n autoplayMs = TRADE_AUTOPLAY_MS,\n className,\n}: FeedbackTradeWithAccountsProps) {\n const [api, setApi] = React.useState<CarouselApi>();\n const [current, setCurrent] = React.useState(0);\n const timerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n /* Embla auto-disables loop when total slide width ≤ 2× the viewport.\n With 4 × 108px = 432px and a 340px viewport, 432 < 680 so loop is\n silently disabled, preventing drag-to-loop. Doubling the slides\n (8 × 108 = 864px > 680px) restores loop for both drag and autoplay. */\n const slides = React.useMemo(\n () => (accounts.length > 0 ? [...accounts, ...accounts] : accounts),\n [accounts],\n );\n\n /* Map raw Embla snap index → logical account index for pagination */\n const accountIdx = accounts.length > 0 ? current % accounts.length : 0;\n\n React.useEffect(() => {\n if (!api || accounts.length <= 1) return;\n timerRef.current = setTimeout(() => {\n api.scrollNext();\n }, autoplayMs);\n return () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n };\n }, [api, current, accounts.length, autoplayMs]);\n\n function handleSetApi(emblaApi: CarouselApi) {\n if (!emblaApi) return;\n setApi(emblaApi);\n setCurrent(emblaApi.selectedScrollSnap());\n emblaApi.on(\"select\", () => setCurrent(emblaApi.selectedScrollSnap()));\n }\n\n return (\n <div className={cn(\"flex w-full flex-col items-center gap-4 py-5\", className)}>\n <p className=\"w-full text-center text-base font-bold leading-6 text-on-prominent-static-inverse\">\n {title}\n </p>\n\n <div className=\"w-[340px] max-w-full overflow-hidden\">\n <Carousel\n opts={{ align: \"start\", loop: true, dragFree: false }}\n setApi={handleSetApi}\n className=\"w-full\"\n >\n <CarouselContent className=\"flex\" style={{ marginLeft: -8 }}>\n {slides.map((account, idx) => (\n <CarouselItem\n key={`${account.id}-${idx}`}\n style={{ flex: \"0 0 116px\", paddingLeft: 8, minWidth: 0 }}\n >\n <div className=\"flex h-24 w-full flex-col items-center justify-center gap-2 rounded-2xl bg-[var(--background-default-opacity-static-dark)] px-4\">\n <div className=\"relative size-8 shrink-0\">\n {account.logo ?? (account.logoSrc && <img alt=\"\" src={account.logoSrc} className=\"absolute inset-0 size-full object-contain\" />)}\n </div>\n <p className=\"w-full text-center text-xs font-normal leading-5 text-on-prominent-static-inverse\">\n {account.label}\n </p>\n </div>\n </CarouselItem>\n ))}\n </CarouselContent>\n </Carousel>\n </div>\n\n {accounts.length > 1 && (\n <TradeAccountPagination\n count={accounts.length}\n current={accountIdx}\n autoplayMs={autoplayMs}\n onSelect={(i) => api?.scrollTo(i)}\n />\n )}\n </div>\n );\n}\n\n/* ── FeedbackTransferSuggestion ────────────────────────────────────────── */\n\nexport interface FeedbackTransferEndpoint {\n label: string;\n logo?: React.ReactNode;\n /** @deprecated use `logo` instead */\n logoSrc?: string;\n}\n\nexport interface FeedbackTransferSuggestionProps {\n title?: string;\n from: FeedbackTransferEndpoint;\n to: FeedbackTransferEndpoint;\n className?: string;\n}\n\nexport function FeedbackTransferSuggestion({\n title = \"Transfer funds to your account\",\n from,\n to,\n className,\n}: FeedbackTransferSuggestionProps) {\n return (\n <div className={cn(\"flex w-full flex-col items-center gap-4 py-5\", className)}>\n <p className=\"w-full text-center text-base font-bold leading-6 text-on-prominent-static-inverse\">\n {title}\n </p>\n <div className=\"flex flex-col items-center gap-2\">\n {/* Row 1: icons + arrow — all vertically centered */}\n <div className=\"flex items-center justify-center gap-2\">\n <div className=\"flex w-16 justify-center\">\n <div className=\"relative size-8 shrink-0 overflow-hidden rounded-full\">\n {from.logo ?? (from.logoSrc && <img alt=\"\" src={from.logoSrc} className=\"absolute inset-0 size-full object-contain\" />)}\n </div>\n </div>\n <Icon\n name=\"arrow-right\"\n weight=\"bold\"\n className=\"size-8 shrink-0 text-on-prominent-static-inverse\"\n />\n <div className=\"flex w-16 justify-center\">\n <div className=\"relative size-8 shrink-0 overflow-hidden rounded-full\">\n {to.logo ?? (to.logoSrc && <img alt=\"\" src={to.logoSrc} className=\"absolute inset-0 size-full object-contain\" />)}\n </div>\n </div>\n </div>\n {/* Row 2: labels — widths match icon columns */}\n <div className=\"flex items-start justify-center gap-2\">\n <p className=\"w-16 whitespace-nowrap text-center text-xs font-normal leading-5 text-on-prominent-static-inverse\">\n {from.label}\n </p>\n <div className=\"w-8 shrink-0\" />\n <p className=\"w-16 whitespace-nowrap text-center text-xs font-normal leading-5 text-on-prominent-static-inverse\">\n {to.label}\n </p>\n </div>\n </div>\n </div>\n );\n}\n\n/* ── FeedbackSuccessScreen ─────────────────────────────────────────────── */\nexport function FeedbackSuccessScreen({\n layout,\n assetShape = \"square\",\n assetSrc,\n title = \"Title\",\n description = \"Description goes here\",\n tag,\n slotActionNudge,\n primaryLabel = \"Label\",\n onPrimary,\n secondaryLabel = \"Label\",\n onSecondary,\n className,\n}: FeedbackSuccessScreenProps) {\n const mob = layout === \"mobile\";\n const desk = layout === \"desktop\";\n\n return (\n <div\n className={cn(\n \"relative flex w-full flex-col items-center justify-center\",\n !mob && \"min-h-screen\",\n className,\n )}\n style={{\n background: mob\n ? \"radial-gradient(ellipse 130% 70% at 50% 0%, var(--primitive-coral-alpha-300) 0%, transparent 70%), var(--feedback-success-bg)\"\n : \"radial-gradient(ellipse 80% 50% at 50% 0%, var(--primitive-coral-alpha-300) 0%, transparent 70%), var(--feedback-success-bg)\",\n }}\n data-slot=\"feedback-success-screen\"\n data-layout={layout ?? \"responsive\"}\n >\n <div\n className={cn(\n \"flex flex-col items-center justify-center gap-24 p-6\",\n mob ? \"w-full\" : desk ? \"w-[608px]\" : \"w-full md:w-[608px]\",\n )}\n >\n {/* ── Top: asset + title/description/tag — gap-6 (24px) within ── */}\n <div className=\"flex w-full flex-col items-center gap-6\">\n <AssetArea shape={assetShape} src={assetSrc} mob={mob} desk={desk} />\n\n {/* title + description + tag — gap-2 (8px) within */}\n <div className=\"flex w-full flex-col items-center gap-2 text-center\">\n <p\n className={cn(\n \"w-full font-extrabold text-on-prominent-static-inverse\",\n mob\n ? \"text-2xl leading-8\"\n : desk\n ? \"text-[28px] leading-9\"\n : \"text-2xl leading-8 md:text-[28px] md:leading-9\",\n )}\n >\n {title}\n </p>\n <p className=\"w-full text-base font-normal leading-6 text-on-prominent-static-inverse\">\n {description}\n </p>\n {tag && (\n <div className=\"flex h-6 items-center justify-center rounded-[6px] border border-[var(--feedback-success-tag-border)] px-2\">\n <span className=\"whitespace-nowrap text-xs font-semibold leading-[12px] text-on-prominent-static-inverse\">\n {tag}\n </span>\n </div>\n )}\n </div>\n </div>\n\n {/* ── Bottom: slot + buttons — gap-6 (24px) within ── */}\n <div className=\"flex w-full flex-col items-center gap-6\">\n {slotActionNudge && <div className=\"w-full\">{slotActionNudge}</div>}\n\n {/*\n DOM order: [primary, secondary].\n Mobile flex-col → primary TOP, secondary BOTTOM ✓\n Desktop flex-row-reverse → secondary LEFT, primary RIGHT ✓\n */}\n <div\n className={cn(\n \"flex w-full gap-2\",\n mob ? \"flex-col\" : desk ? \"flex-row-reverse\" : \"flex-col md:flex-row-reverse\",\n )}\n >\n <button\n type=\"button\"\n onClick={onPrimary}\n className={cn(\n \"flex h-12 items-center justify-center rounded-full bg-[var(--primitive-coral-700)] px-7 text-base font-extrabold leading-4 text-white transition-colors hover:bg-[var(--primitive-coral-800)] active:bg-[var(--primitive-coral-900)]\",\n mob ? \"w-full\" : desk ? \"w-[280px]\" : \"w-full md:w-[280px]\",\n )}\n >\n {primaryLabel}\n </button>\n\n <button\n type=\"button\"\n onClick={onSecondary}\n className={cn(\n \"flex h-12 items-center justify-center rounded-full border border-[var(--feedback-success-tag-border)] bg-transparent px-7 text-base font-extrabold leading-4 text-on-prominent-static-inverse transition-colors hover:bg-[var(--background-hover-static-dark)] active:bg-[var(--background-pressed-static-dark)]\",\n mob ? \"w-full\" : desk ? \"w-[280px]\" : \"w-full md:w-[280px]\",\n )}\n >\n {secondaryLabel}\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Header blocks\n Figma nodes:\n HeaderApp mobile 10603-17481\n HeaderApp desktop 10603-17525\n HeaderAppHome mobile 10603-17563\n HeaderBranding mobile 10603-17554\n\n Three related sub-components sharing a private IconButton and AskAmyPill.\n All sit on a light surface (bg-card / page background) — not always-dark.\n ────────────────────────────────────────────────────────────────────────── */\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../ui/icon\";\nimport { Avatar, AvatarFallback, AvatarBadge, AvatarImage } from \"../ui/avatar\";\nimport { Skeleton } from \"../ui/skeleton\";\nimport { Tab, TabList, TabTrigger } from \"../ui/tab\";\nimport {\n SegmentedControl,\n SegmentedControlList,\n SegmentedControlTrigger,\n} from \"../ui/segmented-control\";\n\n/* ── Types ─────────────────────────────────────────────────────────────── */\n\nexport type HeaderAppLayout = \"mobile\" | \"desktop\";\nexport type HeaderAppState = \"default\" | \"loading\";\n\nexport interface HeaderAppTab {\n id: string;\n label: string;\n}\n\nexport interface HeaderAppAction {\n id: string;\n iconName: string;\n onClick?: () => void;\n ariaLabel: string;\n}\n\nexport type HeaderAppCenter =\n | { kind: \"none\" }\n | {\n kind: \"segmentedControl\";\n items: { value: string; label: string }[];\n value: string;\n onValueChange: (v: string) => void;\n }\n | { kind: \"askAmy\"; onClick?: () => void };\n\nexport interface HeaderAppProps {\n layout?: HeaderAppLayout;\n state?: HeaderAppState;\n showBack?: boolean;\n onBack?: () => void;\n /** Optional leading logo — renders instead of back button (e.g. cTrader iframe). */\n leadingLogo?: { src: string; alt: string };\n tabs?: HeaderAppTab[];\n activeTabId?: string;\n onTabChange?: (id: string) => void;\n labelButton?: { label: string; onClick?: () => void };\n actions?: HeaderAppAction[];\n showAskAmyRight?: boolean;\n onAskAmyRight?: () => void;\n showClose?: boolean;\n onClose?: () => void;\n center?: HeaderAppCenter;\n className?: string;\n}\n\nexport interface HeaderAppHomeProps {\n state?: HeaderAppState;\n avatarSrc?: string;\n avatarFallback?: string;\n showNotificationBadge?: boolean;\n actions?: HeaderAppAction[];\n showAskAmy?: boolean;\n onAskAmy?: () => void;\n className?: string;\n}\n\nexport interface HeaderBrandingProps {\n languageCode?: string;\n onLanguageClick?: () => void;\n actions?: HeaderAppAction[];\n className?: string;\n}\n\n/* ── Private helpers ───────────────────────────────────────────────────── */\n\nfunction IconButton({\n iconName,\n ariaLabel,\n onClick,\n loading = false,\n className,\n}: {\n iconName: string;\n ariaLabel: string;\n onClick?: () => void;\n loading?: boolean;\n className?: string;\n}) {\n if (loading) {\n return (\n <Skeleton\n className={cn(\n \"size-8 shrink-0 rounded-full\",\n className,\n )}\n />\n );\n }\n return (\n <button\n type=\"button\"\n aria-label={ariaLabel}\n onClick={onClick}\n className={cn(\n \"flex size-8 shrink-0 items-center justify-center rounded-full\",\n \"bg-[var(--background-default-opacity-default)]\",\n \"transition-colors hover:bg-[var(--background-hover-default)]\",\n \"active:bg-[var(--background-pressed-default)]\",\n className,\n )}\n >\n <Icon name={iconName as Parameters<typeof Icon>[0][\"name\"]} weight=\"fill\" className=\"size-6 text-prominent\" />\n </button>\n );\n}\n\n// Sparkles path data (Quill LabelPairedSparklesMdBold 16×24) — same mask as NavDesktopSidebar\nconst SPARKLES_MASK = `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 24'%3E%3Cpath d='M10.219 6.688 12 6l.656-1.75c.031-.156.188-.25.344-.25.125 0 .281.094.313.25L14 6l1.75.688c.156.03.25.187.25.312 0 .156-.094.313-.25.344L14 8l-.687 1.781c-.032.125-.188.219-.313.219-.156 0-.312-.094-.344-.219L12 8l-1.781-.656C10.094 7.312 10 7.156 10 7c0-.125.094-.281.219-.312M.28 11.5l.532-.219.25-.125h.03l2.75-1.281 1.282-2.781.125-.25.25-.532A.47.47 0 0 1 5.938 6c.187 0 .375.125.468.313l.25.53.094.25.031.032 1.25 2.75 2.781 1.281.25.125.532.25a.47.47 0 0 1 .312.438.55.55 0 0 1-.312.469l-.531.218-.25.125-2.782 1.281-1.281 2.75v.032l-.125.25-.219.531a.55.55 0 0 1-.468.313.47.47 0 0 1-.438-.313l-.25-.531-.125-.25v-.032l-1.281-2.75-2.75-1.28h-.032l-.25-.126-.53-.219A.52.52 0 0 1 0 11.97c0-.188.094-.375.281-.469m2.594.469 1.594.75c.312.125.593.406.75.719l.718 1.593.75-1.594c.157-.312.407-.593.72-.718L9 11.969l-1.594-.75c-.312-.125-.562-.406-.718-.719l-.75-1.594-.72 1.594c-.155.313-.437.594-.75.719zM12 16l.656-1.75c.031-.156.188-.25.344-.25.125 0 .281.094.313.25L14 16l1.75.688c.156.03.25.187.25.312 0 .156-.094.313-.25.344L14 18l-.687 1.781c-.032.125-.188.219-.313.219-.156 0-.312-.094-.344-.219L12 18l-1.781-.656C10.094 17.312 10 17.156 10 17c0-.125.094-.281.219-.312z'/%3E%3C/svg%3E\")`\n\nfunction AskAmyPill({\n onClick,\n className,\n}: {\n onClick?: () => void;\n className?: string;\n}) {\n return (\n <button\n type=\"button\"\n aria-label=\"Ask Amy\"\n onClick={onClick}\n className={cn(\n \"amy-button-bg flex items-center justify-center rounded-[56px] border-none cursor-pointer gap-1.5 px-4 h-8\",\n className,\n )}\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\n/* ── HeaderApp ─────────────────────────────────────────────────────────── */\n\nexport function HeaderApp({\n layout,\n state = \"default\",\n showBack,\n onBack,\n leadingLogo,\n tabs,\n activeTabId,\n onTabChange,\n labelButton,\n actions = [],\n showAskAmyRight,\n onAskAmyRight,\n showClose,\n onClose,\n center,\n className,\n}: HeaderAppProps) {\n const mob = layout === \"mobile\";\n const desk = layout === \"desktop\";\n const loading = state === \"loading\";\n\n const containerHeight = mob\n ? \"h-14\"\n : desk\n ? \"h-20\"\n : \"h-14 md:h-20\";\n\n const containerWidth = mob\n ? \"w-[360px] max-w-full\"\n : desk\n ? \"w-full\"\n : \"w-full\";\n\n const hasTabs = tabs && tabs.length > 0;\n\n return (\n <div\n data-slot=\"header-app\"\n data-layout={layout ?? \"responsive\"}\n data-state={state}\n className={cn(\n \"relative flex items-center gap-4 bg-card px-6\",\n containerHeight,\n containerWidth,\n hasTabs && \"pb-0\",\n className,\n )}\n >\n {/* Leading area */}\n <div className=\"flex shrink-0 items-center\">\n {leadingLogo ? (\n <div className=\"relative size-8 shrink-0 overflow-hidden rounded-full\">\n <img alt={leadingLogo.alt} src={leadingLogo.src} className=\"absolute inset-0 size-full object-contain\" />\n </div>\n ) : showBack ? (\n loading ? (\n <Skeleton className=\"size-8 rounded-full\" />\n ) : (\n <IconButton iconName=\"arrow-left\" ariaLabel=\"Go back\" onClick={onBack} />\n )\n ) : null}\n </div>\n\n {/* Center slot — tabs */}\n {hasTabs && !center && (\n <div className=\"flex h-full flex-1 items-end\">\n <Tab\n value={activeTabId ?? tabs![0]?.id}\n onValueChange={onTabChange}\n className=\"h-full w-full\"\n >\n <TabList size=\"md\" className=\"h-full border-b-0\">\n {tabs!.map((t) => (\n <TabTrigger key={t.id} value={t.id}>\n {t.label}\n </TabTrigger>\n ))}\n </TabList>\n </Tab>\n </div>\n )}\n\n {/* Center slot — absolute overlay (segmented control / Ask Amy) */}\n {center && center.kind !== \"none\" && (\n <div className=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\">\n {center.kind === \"segmentedControl\" && (\n loading ? (\n <Skeleton className=\"h-9 w-40 rounded-full\" />\n ) : (\n <SegmentedControl\n value={center.value}\n onValueChange={center.onValueChange}\n >\n <SegmentedControlList size=\"md\">\n {center.items.map((item) => (\n <SegmentedControlTrigger key={item.value} value={item.value} className=\"px-4\">\n {item.label}\n </SegmentedControlTrigger>\n ))}\n </SegmentedControlList>\n </SegmentedControl>\n )\n )}\n {center.kind === \"askAmy\" && (\n loading ? (\n <Skeleton className=\"h-8 w-28 rounded-2xl\" />\n ) : (\n <AskAmyPill onClick={center.onClick} />\n )\n )}\n </div>\n )}\n\n {/* Spacer pushes right cluster to end when no center/tabs */}\n {(!hasTabs && (!center || center.kind === \"none\")) && <div className=\"flex-1\" />}\n\n {/* Right cluster */}\n <div className=\"ml-auto flex shrink-0 items-center gap-2\">\n {labelButton && (\n loading ? (\n <Skeleton className=\"h-8 w-20 rounded-full\" />\n ) : (\n <button\n type=\"button\"\n onClick={labelButton.onClick}\n className=\"flex h-8 items-center rounded-2xl bg-[var(--background-default-opacity-default)] px-4 text-sm font-semibold text-prominent transition-colors hover:bg-[var(--background-hover-default)] active:bg-[var(--background-pressed-default)]\"\n >\n {labelButton.label}\n </button>\n )\n )}\n\n {showAskAmyRight && (\n loading ? (\n <Skeleton className=\"size-8 rounded-full\" />\n ) : (\n <AskAmyPill onClick={onAskAmyRight} />\n )\n )}\n\n {actions.map((action) => (\n <IconButton\n key={action.id}\n iconName={action.iconName}\n ariaLabel={action.ariaLabel}\n onClick={action.onClick}\n loading={loading}\n />\n ))}\n\n {showClose && (\n <IconButton iconName=\"xmark\" ariaLabel=\"Close\" onClick={onClose} loading={loading} />\n )}\n </div>\n </div>\n );\n}\n\n/* ── HeaderAppHome ─────────────────────────────────────────────────────── */\n\nexport function HeaderAppHome({\n state = \"default\",\n avatarSrc,\n avatarFallback = \"U\",\n showNotificationBadge,\n actions = [],\n showAskAmy,\n onAskAmy,\n className,\n}: HeaderAppHomeProps) {\n const loading = state === \"loading\";\n\n return (\n <div\n data-slot=\"header-app-home\"\n data-state={state}\n className={cn(\n \"relative flex h-14 w-[360px] max-w-full items-center bg-card px-6\",\n className,\n )}\n >\n {/* Avatar — left */}\n {loading ? (\n <Skeleton className=\"size-8 shrink-0 rounded-full\" />\n ) : (\n <Avatar className=\"shrink-0\">\n {avatarSrc && <AvatarImage src={avatarSrc} alt=\"\" />}\n <AvatarFallback>{avatarFallback}</AvatarFallback>\n {showNotificationBadge && <AvatarBadge />}\n </Avatar>\n )}\n\n <div className=\"flex-1\" />\n\n {/* Ask Amy pill — absolute center */}\n {showAskAmy && (\n <div className=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\">\n {loading ? (\n <Skeleton className=\"h-8 w-28 rounded-2xl\" />\n ) : (\n <AskAmyPill onClick={onAskAmy} />\n )}\n </div>\n )}\n\n {/* Right actions */}\n <div className=\"flex shrink-0 items-center gap-2\">\n {actions.map((action) => (\n <IconButton\n key={action.id}\n iconName={action.iconName}\n ariaLabel={action.ariaLabel}\n onClick={action.onClick}\n loading={loading}\n />\n ))}\n </div>\n </div>\n );\n}\n\n/* ── HeaderBranding ────────────────────────────────────────────────────── */\n\nexport function HeaderBranding({\n languageCode = \"EN\",\n onLanguageClick,\n actions = [],\n className,\n}: HeaderBrandingProps) {\n return (\n <div\n data-slot=\"header-branding\"\n className={cn(\n \"flex h-14 w-[360px] max-w-full items-center gap-4 bg-card px-6\",\n className,\n )}\n >\n {/* Deriv wordmark — left */}\n <img src=\"/assets/deriv-wordmark.svg\" alt=\"Deriv\" className=\"h-6 w-[72px] shrink-0\" />\n\n <div className=\"flex-1\" />\n\n {/* Language pill — right */}\n <button\n type=\"button\"\n aria-label={`Language: ${languageCode}`}\n onClick={onLanguageClick}\n className=\"flex h-8 items-center gap-0.5 rounded-2xl bg-[var(--background-default-opacity-default)] px-4 transition-colors hover:bg-[var(--background-hover-default)] active:bg-[var(--background-pressed-default)]\"\n >\n <Icon name=\"globe\" weight=\"bold\" className=\"size-6 shrink-0 text-prominent\" />\n <span className=\"text-sm font-extrabold text-prominent\">{languageCode}</span>\n </button>\n\n {/* Optional extra actions */}\n {actions.length > 0 && (\n <div className=\"flex shrink-0 items-center gap-2\">\n {actions.map((action) => (\n <IconButton\n key={action.id}\n iconName={action.iconName}\n ariaLabel={action.ariaLabel}\n onClick={action.onClick}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\n\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { HeroActionButton, type ActionButtonState } from \"@/components/blocks/hero-action-button\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n TradingActionButtons (block)\n\n Standalone row of 4 action buttons: Trade, Transfer, Deposit, Withdraw.\n No background wrapper — consumers place these on their own surface.\n\n Primary (surface=\"dark\") — styled for placement on #181C25 canvas.\n Secondary (surface=\"light\") — styled for placement on a light canvas.\n\n Each button's state is controlled independently via tradeState,\n transferState, depositState, withdrawState props.\n ────────────────────────────────────────────────────────────────────────── */\n\nexport interface TradingActionButtonsProps {\n tradeState?: ActionButtonState;\n transferState?: ActionButtonState;\n depositState?: ActionButtonState;\n withdrawState?: ActionButtonState;\n}\n\n/* ── Primary ─────────────────────────────────────────────────────────────── */\n\nexport function TradingActionButtonsPrimarySkeleton() {\n return (\n <div className=\"flex items-center\" role=\"group\" aria-label=\"Loading action buttons\">\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 );\n}\n\nexport function TradingActionButtonsPrimary({\n tradeState = \"default\",\n transferState = \"default\",\n depositState = \"default\",\n withdrawState = \"default\",\n}: TradingActionButtonsProps) {\n return (\n <div\n className=\"flex items-center\"\n data-slot=\"trading-action-buttons-primary\"\n role=\"group\"\n aria-label=\"Account actions\"\n >\n <HeroActionButton\n label=\"Trade\"\n icon={({ className }: { className?: string }) => <Icon name=\"chart-candlestick\" className={className} />}\n primary\n state={tradeState}\n surface=\"dark\"\n colClass=\"w-[96px]\"\n />\n <HeroActionButton\n label=\"Transfer\"\n icon={({ className }: { className?: string }) => <Icon name=\"arrow-right-arrow-left\" className={className} />}\n state={transferState}\n surface=\"dark\"\n colClass=\"w-[96px]\"\n />\n <HeroActionButton\n label=\"Deposit\"\n icon={({ className }: { className?: string }) => <Icon name=\"plus\" weight=\"fill\" className={className} />}\n state={depositState}\n surface=\"dark\"\n colClass=\"w-[96px]\"\n />\n <HeroActionButton\n label=\"Withdraw\"\n icon={({ className }: { className?: string }) => <Icon name=\"minus\" weight=\"fill\" className={className} />}\n state={withdrawState}\n surface=\"dark\"\n colClass=\"w-[96px]\"\n />\n </div>\n );\n}\n\n/* ── Secondary ───────────────────────────────────────────────────────────── */\n\nexport function TradingActionButtonsSecondarySkeleton() {\n return (\n <div className=\"flex items-center w-full\" role=\"group\" aria-label=\"Loading action buttons\">\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-prominent/[0.08]\" />\n <Skeleton className=\"h-[8px] w-[56px] rounded-[8px] bg-prominent/[0.08]\" />\n </div>\n ))}\n </div>\n );\n}\n\nexport function TradingActionButtonsSecondary({\n tradeState = \"default\",\n transferState = \"default\",\n depositState = \"default\",\n withdrawState = \"default\",\n}: TradingActionButtonsProps) {\n return (\n <div\n className=\"flex items-center w-full\"\n data-slot=\"trading-action-buttons-secondary\"\n role=\"group\"\n aria-label=\"Account actions\"\n >\n <HeroActionButton\n label=\"Trade\"\n icon={({ className }: { className?: string }) => <Icon name=\"chart-candlestick\" className={className} />}\n primary\n state={tradeState}\n surface=\"light\"\n colClass=\"flex-1\"\n />\n <HeroActionButton\n label=\"Transfer\"\n icon={({ className }: { className?: string }) => <Icon name=\"arrow-right-arrow-left\" className={className} />}\n state={transferState}\n surface=\"light\"\n colClass=\"flex-1\"\n />\n <HeroActionButton\n label=\"Deposit\"\n icon={({ className }: { className?: string }) => <Icon name=\"plus\" weight=\"fill\" className={className} />}\n state={depositState}\n surface=\"light\"\n colClass=\"flex-1\"\n />\n <HeroActionButton\n label=\"Withdraw\"\n icon={({ className }: { className?: string }) => <Icon name=\"minus\" weight=\"fill\" className={className} />}\n state={withdrawState}\n surface=\"light\"\n colClass=\"flex-1\"\n />\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\n\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n TradingEmpty (block)\n Figma desktop node 10619:9947 / mobile node 10619:9941\n \"Test — Product Design System\"\n\n Empty state: centred image + title + description.\n No layout variants — desktop and mobile are visually identical.\n\n Tokens:\n title text-prominent → var(--text-prominent-default) #181C25\n description text-prominent/[0.72] → #181C25 @ 72% (Figma: rgba(0,0,0,0.72))\n NB: text-subtle is 48% — wrong. 72% must use opacity modifier.\n ────────────────────────────────────────────────────────────────────────── */\n\nexport interface TradingEmptyProps {\n /** Quill illustration component or React node shown above the text. */\n image?: React.ReactNode;\n /** @deprecated use `image` instead */\n imageSrc?: string;\n /** Primary heading. */\n title?: string;\n /** Supporting body copy. */\n description?: string;\n}\n\n/* ── Skeleton ─────────────────────────────────────────────────────────────── */\n\nexport function TradingEmptySkeleton() {\n return (\n <div className=\"flex flex-col gap-2 items-center p-6 w-full\">\n <Skeleton className=\"size-16 rounded-full bg-prominent/[0.08]\" />\n <div className=\"flex flex-col gap-1 items-center w-full\">\n <Skeleton className=\"h-4 w-40 rounded-full bg-prominent/[0.08]\" />\n <Skeleton className=\"h-3 w-full rounded-full bg-prominent/[0.08]\" />\n <Skeleton className=\"h-3 w-3/4 rounded-full bg-prominent/[0.08]\" />\n </div>\n </div>\n );\n}\n\n/* ── Component ────────────────────────────────────────────────────────────── */\n\nexport function TradingEmpty({\n image,\n imageSrc,\n title = \"No transactions yet\",\n description = \"Start by making your first transfer to see your trading activity here.\",\n}: TradingEmptyProps) {\n return (\n <div\n className=\"flex flex-col gap-2 items-center p-6 w-full\"\n data-slot=\"trading-empty\"\n >\n {(image ?? (imageSrc && (\n <div className=\"size-16 shrink-0 overflow-hidden\" aria-hidden=\"true\">\n <img src={imageSrc} alt=\"\" className=\"size-full object-contain\" />\n </div>\n )))}\n\n <div className=\"flex flex-col gap-1 items-center w-full text-center\">\n <p\n className=\"font-bold text-base leading-6 text-prominent w-full\"\n style={{ wordBreak: \"break-word\" }}\n >\n {title}\n </p>\n <p\n className=\"font-normal text-sm leading-5 text-prominent/[0.72] w-full\"\n style={{ wordBreak: \"break-word\" }}\n >\n {description}\n </p>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,YAAY,WAAW;;;ACFvB,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ADYA;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;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","names":["_a","_b","React","jsx","jsx","React","Fragment","jsx","jsxs","jsx","jsx","jsx","cva","jsx","cva","React","Slot","jsx","jsxs","Slot","cva","Slot","jsx","cva","Slot","cva","jsx","cva","React","jsx","_a","_b","className","props","cva","jsx","cva","React","jsx","jsxs","api","React","Fragment","jsx","jsxs","config","jsx","jsxs","cva","Slot","jsx","jsx","cva","Slot","jsx","React","cva","React","cva","jsx","jsxs","cva","Textarea","_a","jsx","cva","_a","_b","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","cva","jsx","cva","useMemo","cva","jsx","jsx","jsxs","cva","useMemo","_a","React","Slot","jsx","Slot","_a","jsx","React","cva","jsx","jsxs","cva","Input","_a","React","cva","jsx","jsxs","cva","React","cva","jsx","jsxs","cva","_a","React","OTPInput","OTPInputContext","cva","jsx","jsxs","OTPInput","cva","_a","OTPInputContext","jsx","cva","Slot","jsx","cva","Slot","jsx","jsxs","React","jsx","jsx","jsxs","cva","jsx","cva","jsx","jsxs","jsx","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","cva","Slot","React","jsx","jsx","jsxs","Tooltip","jsx","jsxs","open","Slot","cva","Tooltip","React","jsx","jsxs","jsx","React","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","cva","jsx","cva","cva","TabsPrimitive","jsx","cva","TabsPrimitive","cva","jsx","cva","jsx","jsx","jsxs","Icon","useEffect","useState","DrawerPrimitive","jsx","jsxs","useState","useEffect","DrawerPrimitive","useState","jsx","jsxs","HERO_BG","PROGRESS_TRACK","PROGRESS_ACTIVE","PROGRESS_DONE","STEPS","TOTAL_STEPS","imgStepIcons","useState","useState","jsx","jsxs","HERO_BG","useState","useState","jsx","jsxs","HERO_BG","CORAL","TABS","ACTIONS","TAB_DATA","useState","jsx","jsxs","ACTIONS","useState","DerivLightMt5GoldIcon","jsx","jsxs","ACTIONS","useState","jsx","jsxs","jsxs","jsx","jsx","jsxs","useState","jsx","jsxs","NAV_ITEMS","useState","jsx","Fragment","jsx","jsxs","Fragment","jsx","jsxs","Fragment","jsx","jsxs","Logo","React","jsx","jsxs","jsx","jsxs","useEffect","useRef","useState","useCallback","jsx","jsxs","useState","jsx","jsxs","useState","React","jsx","jsxs","jsx","jsxs","SPARKLES_MASK","AskAmyPill","jsx","jsxs","jsx","jsxs"]}
1
+ {"version":3,"sources":["../components/ui/icon.tsx","../lib/utils.ts","../components/ui/accordion.tsx","../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/phone-input.tsx","../lib/countries.ts","../components/ui/popover.tsx","../components/ui/email-or-phone-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/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","../components/blocks/section.tsx","../components/blocks/trading-account-card.tsx","../components/blocks/account-activated-card.tsx","../components/blocks/home-banner.tsx","../components/blocks/home-explore-deriv.tsx","../components/blocks/home-highlight-card.tsx","../components/blocks/home-highlights.tsx","../components/blocks/feedback-success-screen.tsx","../components/blocks/header.tsx","../components/blocks/trading-action-buttons.tsx","../components/blocks/trading-empty.tsx","../components/blocks/referral.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\n/* ─────────────────────────────────────────────────────────────────────────────\n * Icon — three-weight wrapper around @deriv/quill-icons\n *\n * weight ladder (lightest → heaviest):\n * \"regular\" → LabelPaired …MdRegularIcon\n * \"bold\" → LabelPaired …MdBoldIcon — default\n * \"fill\" → LabelPaired …MdFillIcon\n *\n * Brand / standalone icons ship in a single weight; all three weights\n * resolve to the same component.\n * ────────────────────────────────────────────────────────────────────────── */\n\nimport {\n // ── Arrow / navigation ────────────────────────────────────────────────────\n LabelPairedArrowDownToLineMdBoldIcon,\n LabelPairedArrowDownToLineMdRegularIcon,\n LabelPairedArrowDownToLineMdFillIcon,\n LabelPairedArrowLeftMdBoldIcon,\n LabelPairedArrowLeftMdRegularIcon,\n LabelPairedArrowLeftMdFillIcon,\n LabelPairedArrowRightMdBoldIcon,\n LabelPairedArrowRightMdRegularIcon,\n LabelPairedArrowRightMdFillIcon,\n LabelPairedArrowRightArrowLeftMdBoldIcon,\n LabelPairedArrowRightArrowLeftMdRegularIcon,\n LabelPairedArrowRightArrowLeftMdFillIcon,\n LabelPairedArrowUpRightMdBoldIcon,\n LabelPairedArrowUpRightMdRegularIcon,\n LabelPairedArrowUpRightMdFillIcon,\n LabelPairedArrowUpRightFromSquareMdBoldIcon,\n LabelPairedArrowUpRightFromSquareMdRegularIcon,\n LabelPairedArrowUpRightFromSquareMdFillIcon,\n LabelPairedArrowRotateRightMdBoldIcon,\n LabelPairedArrowRotateRightMdRegularIcon,\n LabelPairedArrowRotateRightMdFillIcon,\n LabelPairedArrowRotateLeftMdBoldIcon,\n LabelPairedArrowRotateLeftMdRegularIcon,\n LabelPairedArrowRotateLeftMdFillIcon,\n LabelPairedArrowUpToLineMdBoldIcon,\n LabelPairedArrowUpToLineMdRegularIcon,\n LabelPairedArrowUpToLineMdFillIcon,\n // ── Chevrons ──────────────────────────────────────────────────────────────\n LabelPairedChevronDownMdBoldIcon,\n LabelPairedChevronDownMdRegularIcon,\n LabelPairedChevronDownMdFillIcon,\n LabelPairedChevronLeftMdBoldIcon,\n LabelPairedChevronLeftMdRegularIcon,\n LabelPairedChevronLeftMdFillIcon,\n LabelPairedChevronRightMdBoldIcon,\n LabelPairedChevronRightMdRegularIcon,\n LabelPairedChevronRightMdFillIcon,\n LabelPairedChevronUpMdBoldIcon,\n LabelPairedChevronUpMdRegularIcon,\n LabelPairedChevronUpMdFillIcon,\n // ── Circle variants ───────────────────────────────────────────────────────\n LabelPairedCircleMdBoldIcon,\n LabelPairedCircleMdRegularIcon,\n LabelPairedCircleMdFillIcon,\n LabelPairedCircleCheckMdBoldIcon,\n LabelPairedCircleCheckMdRegularIcon,\n LabelPairedCircleCheckMdFillIcon,\n LabelPairedCircleExclamationMdBoldIcon,\n LabelPairedCircleExclamationMdRegularIcon,\n LabelPairedCircleExclamationMdFillIcon,\n LabelPairedCircleInfoMdBoldIcon,\n LabelPairedCircleInfoMdRegularIcon,\n LabelPairedCircleInfoMdFillIcon,\n LabelPairedCircleUserMdBoldIcon,\n LabelPairedCircleUserMdRegularIcon,\n LabelPairedCircleUserMdFillIcon,\n LabelPairedCircleUserSlashMdBoldIcon,\n LabelPairedCircleUserSlashMdRegularIcon,\n LabelPairedCircleUserSlashMdFillIcon,\n LabelPairedCircleDollarMdBoldIcon,\n LabelPairedCircleDollarMdRegularIcon,\n LabelPairedCircleDollarMdFillIcon,\n // ── Communication / files ─────────────────────────────────────────────────\n LabelPairedEnvelopeMdBoldIcon,\n LabelPairedEnvelopeMdRegularIcon,\n LabelPairedEnvelopeMdFillIcon,\n LabelPairedFileLinesMdBoldIcon,\n LabelPairedFileLinesMdRegularIcon,\n LabelPairedFileLinesMdFillIcon,\n LabelPairedFolderOpenMdBoldIcon,\n LabelPairedFolderOpenMdRegularIcon,\n LabelPairedFolderOpenMdFillIcon,\n LabelPairedMemoPadMdBoldIcon,\n LabelPairedMemoPadMdRegularIcon,\n LabelPairedMemoPadMdFillIcon,\n LabelPairedHandshakeMdBoldIcon,\n LabelPairedHandshakeMdRegularIcon,\n LabelPairedHandshakeMdFillIcon,\n // ── UI primitives ─────────────────────────────────────────────────────────\n LabelPairedBellMdBoldIcon,\n LabelPairedBellMdRegularIcon,\n LabelPairedBellMdFillIcon,\n LabelPairedCheckMdBoldIcon,\n LabelPairedCheckMdRegularIcon,\n LabelPairedCheckMdFillIcon,\n LabelPairedOptionsMdRegularIcon,\n LabelPairedOptionsMdFillIcon,\n LabelPairedCopyMdBoldIcon,\n LabelPairedCopyMdRegularIcon,\n LabelPairedCopyMdFillIcon,\n LabelPairedDollarSignMdBoldIcon,\n LabelPairedDollarSignMdRegularIcon,\n LabelPairedDollarSignMdFillIcon,\n LabelPairedEllipsisMdBoldIcon,\n LabelPairedEllipsisMdRegularIcon,\n LabelPairedEllipsisMdFillIcon,\n LabelPairedEyeMdBoldIcon,\n LabelPairedEyeMdRegularIcon,\n LabelPairedEyeMdFillIcon,\n LabelPairedEyeSlashMdBoldIcon,\n LabelPairedEyeSlashMdRegularIcon,\n LabelPairedEyeSlashMdFillIcon,\n LabelPairedFingerprintMdBoldIcon,\n LabelPairedFingerprintMdRegularIcon,\n LabelPairedFingerprintMdFillIcon,\n LabelPairedGearMdBoldIcon,\n LabelPairedGearMdRegularIcon,\n LabelPairedGearMdFillIcon,\n LabelPairedGlobeMdBoldIcon,\n LabelPairedGlobeMdRegularIcon,\n LabelPairedGlobeMdFillIcon,\n LabelPairedGripDotsVerticalMdBoldIcon,\n LabelPairedGripDotsVerticalMdRegularIcon,\n LabelPairedGripDotsVerticalMdFillIcon,\n LabelPairedImageMdBoldIcon,\n LabelPairedImageMdRegularIcon,\n LabelPairedImageMdFillIcon,\n LabelPairedLoaderMdBoldIcon,\n LabelPairedLoaderMdRegularIcon,\n LabelPairedLoaderMdFillIcon,\n LabelPairedMinusMdBoldIcon,\n LabelPairedMinusMdRegularIcon,\n LabelPairedMinusMdFillIcon,\n LabelPairedMoonMdBoldIcon,\n LabelPairedMoonMdRegularIcon,\n LabelPairedMoonMdFillIcon,\n LabelPairedPenMdBoldIcon,\n LabelPairedPenMdRegularIcon,\n LabelPairedPenMdFillIcon,\n LabelPairedPhoneMdBoldIcon,\n LabelPairedPhoneMdRegularIcon,\n LabelPairedPhoneMdFillIcon,\n LabelPairedPlusMdBoldIcon,\n LabelPairedPlusMdRegularIcon,\n LabelPairedPlusMdFillIcon,\n LabelPairedRightFromBracketMdBoldIcon,\n LabelPairedRightFromBracketMdRegularIcon,\n LabelPairedRightFromBracketMdFillIcon,\n LabelPairedSearchMdBoldIcon,\n LabelPairedSearchMdRegularIcon,\n LabelPairedSearchMdFillIcon,\n LabelPairedShieldCheckMdBoldIcon,\n LabelPairedShieldCheckMdRegularIcon,\n LabelPairedShieldCheckMdFillIcon,\n LabelPairedSparklesMdBoldIcon,\n LabelPairedSparklesMdRegularIcon,\n LabelPairedSparklesMdFillIcon,\n LabelPairedSquareMdBoldIcon,\n LabelPairedSquareMdRegularIcon,\n LabelPairedSquareMdFillIcon,\n LabelPairedSquareCheckMdBoldIcon,\n LabelPairedSquareCheckMdRegularIcon,\n LabelPairedSquareCheckMdFillIcon,\n LabelPairedSquareMinusMdBoldIcon,\n LabelPairedSquareMinusMdRegularIcon,\n LabelPairedSquareMinusMdFillIcon,\n LabelPairedStarMdBoldIcon,\n LabelPairedStarMdRegularIcon,\n LabelPairedStarMdFillIcon,\n LabelPairedSunBrightMdBoldIcon,\n LabelPairedSunBrightMdRegularIcon,\n LabelPairedSunBrightMdFillIcon,\n LabelPairedTrashMdBoldIcon,\n LabelPairedTrashMdRegularIcon,\n LabelPairedTrashMdFillIcon,\n LabelPairedTriangleExclamationMdBoldIcon,\n LabelPairedTriangleExclamationMdRegularIcon,\n LabelPairedTriangleExclamationMdFillIcon,\n LabelPairedUserMdBoldIcon,\n LabelPairedUserMdRegularIcon,\n LabelPairedUserMdFillIcon,\n LabelPairedWalletMdBoldIcon,\n LabelPairedWalletMdRegularIcon,\n LabelPairedWalletMdFillIcon,\n LabelPairedXmarkMdBoldIcon,\n LabelPairedXmarkMdRegularIcon,\n LabelPairedXmarkMdFillIcon,\n LabelPairedArrowDownToBracketMdBoldIcon,\n LabelPairedArrowDownToBracketMdRegularIcon,\n LabelPairedArrowDownToBracketMdFillIcon,\n LabelPairedCalendarMdBoldIcon,\n LabelPairedCalendarMdRegularIcon,\n LabelPairedCalendarMdFillIcon,\n // ── Charts ────────────────────────────────────────────────────────────────\n LabelPairedChartLineMdBoldIcon,\n LabelPairedChartLineMdRegularIcon,\n LabelPairedChartLineMdFillIcon,\n LabelPairedChartCandlestickMdBoldIcon,\n LabelPairedChartCandlestickMdRegularIcon,\n LabelPairedChartCandlestickMdFillIcon,\n LabelPairedChartMixedMdBoldIcon,\n LabelPairedChartMixedMdRegularIcon,\n LabelPairedChartMixedMdFillIcon,\n LabelPairedChartOhlcMdBoldIcon,\n LabelPairedChartOhlcMdRegularIcon,\n LabelPairedChartOhlcMdFillIcon,\n LabelPairedChartTradingviewMdBoldIcon,\n LabelPairedChartTradingviewMdRegularIcon,\n LabelPairedChartTradingviewMdFillIcon,\n LabelPairedChartTrendDownMdBoldIcon,\n LabelPairedChartTrendDownMdRegularIcon,\n LabelPairedChartTrendDownMdFillIcon,\n LabelPairedChartTrendSidewayMdBoldIcon,\n LabelPairedChartTrendSidewayMdRegularIcon,\n LabelPairedChartTrendSidewayMdFillIcon,\n LabelPairedChartTrendUpMdBoldIcon,\n LabelPairedChartTrendUpMdRegularIcon,\n LabelPairedChartTrendUpMdFillIcon,\n LabelPairedLightChartLineUpDownClockMdBoldIcon,\n LabelPairedLightChartLineUpDownClockMdRegularIcon,\n LabelPairedLightChartLineUpDownClockMdFillIcon,\n // ── Layout ────────────────────────────────────────────────────────────────\n LabelPairedGrid2MdBoldIcon,\n LabelPairedGrid2MdRegularIcon,\n LabelPairedGrid2MdFillIcon,\n LabelPairedObjectsColumnMdBoldIcon,\n LabelPairedObjectsColumnMdRegularIcon,\n LabelPairedObjectsColumnMdFillIcon,\n LabelPairedHouseBlankMdBoldIcon,\n LabelPairedHouseBlankMdRegularIcon,\n LabelPairedHouseBlankMdFillIcon,\n LabelPairedLocationCrosshairsSlashMdBoldIcon,\n LabelPairedLocationCrosshairsSlashMdRegularIcon,\n LabelPairedLocationCrosshairsSlashMdFillIcon,\n // ── Deriv-specific icons ──────────────────────────────────────────────────\n LabelPairedBookCircleQuestionMdBoldIcon,\n LabelPairedBookCircleQuestionMdRegularIcon,\n LabelPairedBookCircleQuestionMdFillIcon,\n LabelPairedBoxArchiveCircleArrowDownMdBoldIcon,\n LabelPairedBoxArchiveCircleArrowDownMdRegularIcon,\n LabelPairedBoxArchiveCircleArrowDownMdFillIcon,\n LabelPairedBoxArchiveCircleArrowUpMdBoldIcon,\n LabelPairedBoxArchiveCircleArrowUpMdRegularIcon,\n LabelPairedBoxArchiveCircleArrowUpMdFillIcon,\n LabelPairedDealCancellationMdBoldIcon,\n LabelPairedDealCancellationMdRegularIcon,\n LabelPairedDealCancellationMdFillIcon,\n LabelPairedDealProtectionMdBoldIcon,\n LabelPairedDealProtectionMdRegularIcon,\n LabelPairedDealProtectionMdFillIcon,\n LabelPairedDerivP2pMdBoldIcon,\n LabelPairedDerivP2pMdRegularIcon,\n LabelPairedDerivP2pMdFillIcon,\n LabelPairedFiatOfframpMdBoldIcon,\n LabelPairedFiatOfframpMdRegularIcon,\n LabelPairedFiatOfframpMdFillIcon,\n LabelPairedFiatOnrampMdBoldIcon,\n LabelPairedFiatOnrampMdRegularIcon,\n LabelPairedFiatOnrampMdFillIcon,\n LabelPairedFieldPasswordMdBoldIcon,\n LabelPairedFieldPasswordMdRegularIcon,\n LabelPairedFieldPasswordMdFillIcon,\n LabelPairedHandGestureSwipeLeftRightMdBoldIcon,\n LabelPairedHandGestureSwipeLeftRightMdRegularIcon,\n LabelPairedHandGestureSwipeLeftRightMdFillIcon,\n LabelPairedHandGestureTapLeftMdBoldIcon,\n LabelPairedHandGestureTapLeftMdRegularIcon,\n LabelPairedHandGestureTapLeftMdFillIcon,\n LabelPairedHandGestureTapRightMdBoldIcon,\n LabelPairedHandGestureTapRightMdRegularIcon,\n LabelPairedHandGestureTapRightMdFillIcon,\n LabelPairedHorizontalRuleDashedMdBoldIcon,\n LabelPairedHorizontalRuleDashedMdRegularIcon,\n LabelPairedHorizontalRuleDashedMdFillIcon,\n LabelPairedLightUserTieCircleDollarMdBoldIcon,\n LabelPairedLightUserTieCircleDollarMdRegularIcon,\n LabelPairedLightUserTieCircleDollarMdFillIcon,\n LabelPairedLockPatternMdBoldIcon,\n LabelPairedLockPatternMdRegularIcon,\n LabelPairedLockPatternMdFillIcon,\n LabelPairedMobileNotchRotateMdBoldIcon,\n LabelPairedMobileNotchRotateMdRegularIcon,\n LabelPairedMobileNotchRotateMdFillIcon,\n LabelPairedPageCircleArrowRightMdBoldIcon,\n LabelPairedPageCircleArrowRightMdRegularIcon,\n LabelPairedPageCircleArrowRightMdFillIcon,\n LabelPairedPasskeyMdBoldIcon,\n LabelPairedPasskeyMdRegularIcon,\n LabelPairedPasskeyMdFillIcon,\n LabelPairedPlaybackSpeedMdBoldIcon,\n LabelPairedPlaybackSpeedMdRegularIcon,\n LabelPairedPlaybackSpeedMdFillIcon,\n LabelPairedPuzzlePieceTwoMdBoldIcon,\n LabelPairedPuzzlePieceTwoMdRegularIcon,\n LabelPairedPuzzlePieceTwoMdFillIcon,\n LabelPairedRotateDeviceMdBoldIcon,\n LabelPairedRotateDeviceMdRegularIcon,\n LabelPairedRotateDeviceMdFillIcon,\n LabelPairedStopLossMdBoldIcon,\n LabelPairedStopLossMdRegularIcon,\n LabelPairedStopLossMdFillIcon,\n LabelPairedTakeProfitMdBoldIcon,\n LabelPairedTakeProfitMdRegularIcon,\n LabelPairedTakeProfitMdFillIcon,\n LabelPairedWalletCircleMinusMdBoldIcon,\n LabelPairedWalletCircleMinusMdRegularIcon,\n LabelPairedWalletCircleMinusMdFillIcon,\n LabelPairedWalletCirclePlusMdBoldIcon,\n LabelPairedWalletCirclePlusMdRegularIcon,\n LabelPairedWalletCirclePlusMdFillIcon,\n LabelPairedWalletSignalMdBoldIcon,\n LabelPairedWalletSignalMdRegularIcon,\n LabelPairedWalletSignalMdFillIcon,\n // ── Deriv logo ────────────────────────────────────────────────────────────\n LabelPairedDerivMdIcon,\n LabelPairedDerivBrandLogoMdRegularIcon,\n LabelPairedDerivBrandLogoMdFillIcon,\n} from \"@deriv/quill-icons/LabelPaired\"\n\nimport {\n // ── Sm size variants ──────────────────────────────────────────────────────\n LabelPairedArrowDownToLineSmBoldIcon,\n LabelPairedArrowDownToLineSmRegularIcon,\n LabelPairedArrowDownToLineSmFillIcon,\n LabelPairedArrowLeftSmBoldIcon,\n LabelPairedArrowLeftSmRegularIcon,\n LabelPairedArrowLeftSmFillIcon,\n LabelPairedArrowRightSmBoldIcon,\n LabelPairedArrowRightSmRegularIcon,\n LabelPairedArrowRightSmFillIcon,\n LabelPairedArrowRightArrowLeftSmBoldIcon,\n LabelPairedArrowRightArrowLeftSmRegularIcon,\n LabelPairedArrowRightArrowLeftSmFillIcon,\n LabelPairedArrowUpRightSmBoldIcon,\n LabelPairedArrowUpRightSmRegularIcon,\n LabelPairedArrowUpRightSmFillIcon,\n LabelPairedArrowUpRightFromSquareSmBoldIcon,\n LabelPairedArrowUpRightFromSquareSmRegularIcon,\n LabelPairedArrowUpRightFromSquareSmFillIcon,\n LabelPairedArrowRotateRightSmBoldIcon,\n LabelPairedArrowRotateRightSmRegularIcon,\n LabelPairedArrowRotateRightSmFillIcon,\n LabelPairedArrowRotateLeftSmBoldIcon,\n LabelPairedArrowRotateLeftSmRegularIcon,\n LabelPairedArrowRotateLeftSmFillIcon,\n LabelPairedArrowUpToLineSmBoldIcon,\n LabelPairedArrowUpToLineSmRegularIcon,\n LabelPairedArrowUpToLineSmFillIcon,\n LabelPairedChevronDownSmBoldIcon,\n LabelPairedChevronDownSmRegularIcon,\n LabelPairedChevronDownSmFillIcon,\n LabelPairedChevronLeftSmBoldIcon,\n LabelPairedChevronLeftSmRegularIcon,\n LabelPairedChevronLeftSmFillIcon,\n LabelPairedChevronRightSmBoldIcon,\n LabelPairedChevronRightSmRegularIcon,\n LabelPairedChevronRightSmFillIcon,\n LabelPairedChevronUpSmBoldIcon,\n LabelPairedChevronUpSmRegularIcon,\n LabelPairedChevronUpSmFillIcon,\n LabelPairedCircleSmBoldIcon,\n LabelPairedCircleSmRegularIcon,\n LabelPairedCircleSmFillIcon,\n LabelPairedCircleCheckSmBoldIcon,\n LabelPairedCircleCheckSmRegularIcon,\n LabelPairedCircleCheckSmFillIcon,\n LabelPairedCircleExclamationSmBoldIcon,\n LabelPairedCircleExclamationSmRegularIcon,\n LabelPairedCircleExclamationSmFillIcon,\n LabelPairedCircleInfoSmBoldIcon,\n LabelPairedCircleInfoSmRegularIcon,\n LabelPairedCircleInfoSmFillIcon,\n LabelPairedCircleUserSmBoldIcon,\n LabelPairedCircleUserSmRegularIcon,\n LabelPairedCircleUserSmFillIcon,\n LabelPairedCircleUserSlashSmBoldIcon,\n LabelPairedCircleUserSlashSmRegularIcon,\n LabelPairedCircleUserSlashSmFillIcon,\n LabelPairedCircleDollarSmBoldIcon,\n LabelPairedCircleDollarSmRegularIcon,\n LabelPairedCircleDollarSmFillIcon,\n LabelPairedEnvelopeSmBoldIcon,\n LabelPairedEnvelopeSmRegularIcon,\n LabelPairedEnvelopeSmFillIcon,\n LabelPairedFileLinesSmBoldIcon,\n LabelPairedFileLinesSmRegularIcon,\n LabelPairedFileLinesSmFillIcon,\n LabelPairedFolderOpenSmBoldIcon,\n LabelPairedFolderOpenSmRegularIcon,\n LabelPairedFolderOpenSmFillIcon,\n LabelPairedMemoPadSmBoldIcon,\n LabelPairedMemoPadSmRegularIcon,\n LabelPairedMemoPadSmFillIcon,\n LabelPairedHandshakeSmBoldIcon,\n LabelPairedHandshakeSmRegularIcon,\n LabelPairedHandshakeSmFillIcon,\n LabelPairedBellSmBoldIcon,\n LabelPairedBellSmRegularIcon,\n LabelPairedBellSmFillIcon,\n LabelPairedCheckSmBoldIcon,\n LabelPairedCheckSmRegularIcon,\n LabelPairedCheckSmFillIcon,\n LabelPairedOptionsSmRegularIcon,\n LabelPairedOptionsSmFillIcon,\n LabelPairedCopySmBoldIcon,\n LabelPairedCopySmRegularIcon,\n LabelPairedCopySmFillIcon,\n LabelPairedDollarSignSmBoldIcon,\n LabelPairedDollarSignSmRegularIcon,\n LabelPairedDollarSignSmFillIcon,\n LabelPairedEllipsisSmBoldIcon,\n LabelPairedEllipsisSmRegularIcon,\n LabelPairedEllipsisSmFillIcon,\n LabelPairedEyeSmBoldIcon,\n LabelPairedEyeSmRegularIcon,\n LabelPairedEyeSmFillIcon,\n LabelPairedEyeSlashSmBoldIcon,\n LabelPairedEyeSlashSmRegularIcon,\n LabelPairedEyeSlashSmFillIcon,\n LabelPairedFingerprintSmBoldIcon,\n LabelPairedFingerprintSmRegularIcon,\n LabelPairedFingerprintSmFillIcon,\n LabelPairedGearSmBoldIcon,\n LabelPairedGearSmRegularIcon,\n LabelPairedGearSmFillIcon,\n LabelPairedGlobeSmBoldIcon,\n LabelPairedGlobeSmRegularIcon,\n LabelPairedGlobeSmFillIcon,\n LabelPairedGripDotsVerticalSmBoldIcon,\n LabelPairedGripDotsVerticalSmRegularIcon,\n LabelPairedGripDotsVerticalSmFillIcon,\n LabelPairedImageSmBoldIcon,\n LabelPairedImageSmRegularIcon,\n LabelPairedImageSmFillIcon,\n LabelPairedLoaderSmBoldIcon,\n LabelPairedLoaderSmRegularIcon,\n LabelPairedLoaderSmFillIcon,\n LabelPairedMinusSmBoldIcon,\n LabelPairedMinusSmRegularIcon,\n LabelPairedMinusSmFillIcon,\n LabelPairedMoonSmBoldIcon,\n LabelPairedMoonSmRegularIcon,\n LabelPairedMoonSmFillIcon,\n LabelPairedPenSmBoldIcon,\n LabelPairedPenSmRegularIcon,\n LabelPairedPenSmFillIcon,\n LabelPairedPhoneSmBoldIcon,\n LabelPairedPhoneSmRegularIcon,\n LabelPairedPhoneSmFillIcon,\n LabelPairedPlusSmBoldIcon,\n LabelPairedPlusSmRegularIcon,\n LabelPairedPlusSmFillIcon,\n LabelPairedRightFromBracketSmBoldIcon,\n LabelPairedRightFromBracketSmRegularIcon,\n LabelPairedRightFromBracketSmFillIcon,\n LabelPairedSearchSmBoldIcon,\n LabelPairedSearchSmRegularIcon,\n LabelPairedSearchSmFillIcon,\n LabelPairedShieldCheckSmBoldIcon,\n LabelPairedShieldCheckSmRegularIcon,\n LabelPairedShieldCheckSmFillIcon,\n LabelPairedSparklesSmBoldIcon,\n LabelPairedSparklesSmRegularIcon,\n LabelPairedSparklesSmFillIcon,\n LabelPairedSquareSmBoldIcon,\n LabelPairedSquareSmRegularIcon,\n LabelPairedSquareSmFillIcon,\n LabelPairedSquareCheckSmBoldIcon,\n LabelPairedSquareCheckSmRegularIcon,\n LabelPairedSquareCheckSmFillIcon,\n LabelPairedSquareMinusSmBoldIcon,\n LabelPairedSquareMinusSmRegularIcon,\n LabelPairedSquareMinusSmFillIcon,\n LabelPairedStarSmBoldIcon,\n LabelPairedStarSmRegularIcon,\n LabelPairedStarSmFillIcon,\n LabelPairedSunBrightSmBoldIcon,\n LabelPairedSunBrightSmRegularIcon,\n LabelPairedSunBrightSmFillIcon,\n LabelPairedTrashSmBoldIcon,\n LabelPairedTrashSmRegularIcon,\n LabelPairedTrashSmFillIcon,\n LabelPairedTriangleExclamationSmBoldIcon,\n LabelPairedTriangleExclamationSmRegularIcon,\n LabelPairedTriangleExclamationSmFillIcon,\n LabelPairedUserSmBoldIcon,\n LabelPairedUserSmRegularIcon,\n LabelPairedUserSmFillIcon,\n LabelPairedWalletSmBoldIcon,\n LabelPairedWalletSmRegularIcon,\n LabelPairedWalletSmFillIcon,\n LabelPairedXmarkSmBoldIcon,\n LabelPairedXmarkSmRegularIcon,\n LabelPairedXmarkSmFillIcon,\n LabelPairedArrowDownToBracketSmBoldIcon,\n LabelPairedArrowDownToBracketSmRegularIcon,\n LabelPairedArrowDownToBracketSmFillIcon,\n LabelPairedCalendarSmBoldIcon,\n LabelPairedCalendarSmRegularIcon,\n LabelPairedCalendarSmFillIcon,\n LabelPairedChartLineSmBoldIcon,\n LabelPairedChartLineSmRegularIcon,\n LabelPairedChartLineSmFillIcon,\n LabelPairedChartCandlestickSmBoldIcon,\n LabelPairedChartCandlestickSmRegularIcon,\n LabelPairedChartCandlestickSmFillIcon,\n LabelPairedChartMixedSmBoldIcon,\n LabelPairedChartMixedSmRegularIcon,\n LabelPairedChartMixedSmFillIcon,\n LabelPairedChartOhlcSmBoldIcon,\n LabelPairedChartOhlcSmRegularIcon,\n LabelPairedChartOhlcSmFillIcon,\n LabelPairedChartTradingviewSmBoldIcon,\n LabelPairedChartTradingviewSmRegularIcon,\n LabelPairedChartTradingviewSmFillIcon,\n LabelPairedChartTrendDownSmBoldIcon,\n LabelPairedChartTrendDownSmRegularIcon,\n LabelPairedChartTrendDownSmFillIcon,\n LabelPairedChartTrendSidewaySmBoldIcon,\n LabelPairedChartTrendSidewaySmRegularIcon,\n LabelPairedChartTrendSidewaySmFillIcon,\n LabelPairedChartTrendUpSmBoldIcon,\n LabelPairedChartTrendUpSmRegularIcon,\n LabelPairedChartTrendUpSmFillIcon,\n LabelPairedLightChartLineUpDownClockSmBoldIcon,\n LabelPairedLightChartLineUpDownClockSmRegularIcon,\n LabelPairedLightChartLineUpDownClockSmFillIcon,\n LabelPairedGrid2SmBoldIcon,\n LabelPairedGrid2SmRegularIcon,\n LabelPairedGrid2SmFillIcon,\n LabelPairedObjectsColumnSmBoldIcon,\n LabelPairedObjectsColumnSmRegularIcon,\n LabelPairedObjectsColumnSmFillIcon,\n LabelPairedHouseBlankSmBoldIcon,\n LabelPairedHouseBlankSmRegularIcon,\n LabelPairedHouseBlankSmFillIcon,\n LabelPairedLocationCrosshairsSlashSmBoldIcon,\n LabelPairedLocationCrosshairsSlashSmRegularIcon,\n LabelPairedLocationCrosshairsSlashSmFillIcon,\n LabelPairedBookCircleQuestionSmBoldIcon,\n LabelPairedBookCircleQuestionSmRegularIcon,\n LabelPairedBookCircleQuestionSmFillIcon,\n LabelPairedBoxArchiveCircleArrowDownSmBoldIcon,\n LabelPairedBoxArchiveCircleArrowDownSmRegularIcon,\n LabelPairedBoxArchiveCircleArrowDownSmFillIcon,\n LabelPairedBoxArchiveCircleArrowUpSmBoldIcon,\n LabelPairedBoxArchiveCircleArrowUpSmRegularIcon,\n LabelPairedBoxArchiveCircleArrowUpSmFillIcon,\n LabelPairedDealCancellationSmBoldIcon,\n LabelPairedDealCancellationSmRegularIcon,\n LabelPairedDealCancellationSmFillIcon,\n LabelPairedDealProtectionSmBoldIcon,\n LabelPairedDealProtectionSmRegularIcon,\n LabelPairedDealProtectionSmFillIcon,\n LabelPairedDerivP2pSmBoldIcon,\n LabelPairedDerivP2pSmRegularIcon,\n LabelPairedDerivP2pSmFillIcon,\n LabelPairedFiatOfframpSmBoldIcon,\n LabelPairedFiatOfframpSmRegularIcon,\n LabelPairedFiatOfframpSmFillIcon,\n LabelPairedFiatOnrampSmBoldIcon,\n LabelPairedFiatOnrampSmRegularIcon,\n LabelPairedFiatOnrampSmFillIcon,\n LabelPairedFieldPasswordSmBoldIcon,\n LabelPairedFieldPasswordSmRegularIcon,\n LabelPairedFieldPasswordSmFillIcon,\n LabelPairedHandGestureSwipeLeftRightSmBoldIcon,\n LabelPairedHandGestureSwipeLeftRightSmRegularIcon,\n LabelPairedHandGestureSwipeLeftRightSmFillIcon,\n LabelPairedHandGestureTapLeftSmBoldIcon,\n LabelPairedHandGestureTapLeftSmRegularIcon,\n LabelPairedHandGestureTapLeftSmFillIcon,\n LabelPairedHandGestureTapRightSmBoldIcon,\n LabelPairedHandGestureTapRightSmRegularIcon,\n LabelPairedHandGestureTapRightSmFillIcon,\n LabelPairedHorizontalRuleDashedSmBoldIcon,\n LabelPairedHorizontalRuleDashedSmRegularIcon,\n LabelPairedHorizontalRuleDashedSmFillIcon,\n LabelPairedLightUserTieCircleDollarSmBoldIcon,\n LabelPairedLightUserTieCircleDollarSmRegularIcon,\n LabelPairedLightUserTieCircleDollarSmFillIcon,\n LabelPairedLockPatternSmBoldIcon,\n LabelPairedLockPatternSmRegularIcon,\n LabelPairedLockPatternSmFillIcon,\n LabelPairedMobileNotchRotateSmBoldIcon,\n LabelPairedMobileNotchRotateSmRegularIcon,\n LabelPairedMobileNotchRotateSmFillIcon,\n LabelPairedPageCircleArrowRightSmBoldIcon,\n LabelPairedPageCircleArrowRightSmRegularIcon,\n LabelPairedPageCircleArrowRightSmFillIcon,\n LabelPairedPasskeySmBoldIcon,\n LabelPairedPasskeySmRegularIcon,\n LabelPairedPasskeySmFillIcon,\n LabelPairedPlaybackSpeedSmBoldIcon,\n LabelPairedPlaybackSpeedSmRegularIcon,\n LabelPairedPlaybackSpeedSmFillIcon,\n LabelPairedPuzzlePieceTwoSmBoldIcon,\n LabelPairedPuzzlePieceTwoSmRegularIcon,\n LabelPairedPuzzlePieceTwoSmFillIcon,\n LabelPairedRotateDeviceSmBoldIcon,\n LabelPairedRotateDeviceSmRegularIcon,\n LabelPairedRotateDeviceSmFillIcon,\n LabelPairedStopLossSmBoldIcon,\n LabelPairedStopLossSmRegularIcon,\n LabelPairedStopLossSmFillIcon,\n LabelPairedTakeProfitSmBoldIcon,\n LabelPairedTakeProfitSmRegularIcon,\n LabelPairedTakeProfitSmFillIcon,\n LabelPairedWalletCircleMinusSmBoldIcon,\n LabelPairedWalletCircleMinusSmRegularIcon,\n LabelPairedWalletCircleMinusSmFillIcon,\n LabelPairedWalletCirclePlusSmBoldIcon,\n LabelPairedWalletCirclePlusSmRegularIcon,\n LabelPairedWalletCirclePlusSmFillIcon,\n LabelPairedWalletSignalSmBoldIcon,\n LabelPairedWalletSignalSmRegularIcon,\n LabelPairedWalletSignalSmFillIcon,\n LabelPairedDerivSmIcon,\n LabelPairedDerivBrandLogoSmRegularIcon,\n LabelPairedDerivBrandLogoSmFillIcon,\n} from \"@deriv/quill-icons/LabelPaired\"\n\nimport {\n // ── Lg size variants ──────────────────────────────────────────────────────\n LabelPairedArrowDownToLineLgBoldIcon,\n LabelPairedArrowDownToLineLgRegularIcon,\n LabelPairedArrowDownToLineLgFillIcon,\n LabelPairedArrowLeftLgBoldIcon,\n LabelPairedArrowLeftLgRegularIcon,\n LabelPairedArrowLeftLgFillIcon,\n LabelPairedArrowRightLgBoldIcon,\n LabelPairedArrowRightLgRegularIcon,\n LabelPairedArrowRightLgFillIcon,\n LabelPairedArrowRightArrowLeftLgBoldIcon,\n LabelPairedArrowRightArrowLeftLgRegularIcon,\n LabelPairedArrowRightArrowLeftLgFillIcon,\n LabelPairedArrowUpRightLgBoldIcon,\n LabelPairedArrowUpRightLgRegularIcon,\n LabelPairedArrowUpRightLgFillIcon,\n LabelPairedArrowUpRightFromSquareLgBoldIcon,\n LabelPairedArrowUpRightFromSquareLgRegularIcon,\n LabelPairedArrowUpRightFromSquareLgFillIcon,\n LabelPairedArrowRotateRightLgBoldIcon,\n LabelPairedArrowRotateRightLgRegularIcon,\n LabelPairedArrowRotateRightLgFillIcon,\n LabelPairedArrowRotateLeftLgBoldIcon,\n LabelPairedArrowRotateLeftLgRegularIcon,\n LabelPairedArrowRotateLeftLgFillIcon,\n LabelPairedArrowUpToLineLgBoldIcon,\n LabelPairedArrowUpToLineLgRegularIcon,\n LabelPairedArrowUpToLineLgFillIcon,\n LabelPairedChevronDownLgBoldIcon,\n LabelPairedChevronDownLgRegularIcon,\n LabelPairedChevronDownLgFillIcon,\n LabelPairedChevronLeftLgBoldIcon,\n LabelPairedChevronLeftLgRegularIcon,\n LabelPairedChevronLeftLgFillIcon,\n LabelPairedChevronRightLgBoldIcon,\n LabelPairedChevronRightLgRegularIcon,\n LabelPairedChevronRightLgFillIcon,\n LabelPairedChevronUpLgBoldIcon,\n LabelPairedChevronUpLgRegularIcon,\n LabelPairedChevronUpLgFillIcon,\n LabelPairedCircleLgBoldIcon,\n LabelPairedCircleLgRegularIcon,\n LabelPairedCircleLgFillIcon,\n LabelPairedCircleCheckLgBoldIcon,\n LabelPairedCircleCheckLgRegularIcon,\n LabelPairedCircleCheckLgFillIcon,\n LabelPairedCircleExclamationLgBoldIcon,\n LabelPairedCircleExclamationLgRegularIcon,\n LabelPairedCircleExclamationLgFillIcon,\n LabelPairedCircleInfoLgBoldIcon,\n LabelPairedCircleInfoLgRegularIcon,\n LabelPairedCircleInfoLgFillIcon,\n LabelPairedCircleUserLgBoldIcon,\n LabelPairedCircleUserLgRegularIcon,\n LabelPairedCircleUserLgFillIcon,\n LabelPairedCircleUserSlashLgBoldIcon,\n LabelPairedCircleUserSlashLgRegularIcon,\n LabelPairedCircleUserSlashLgFillIcon,\n LabelPairedCircleDollarLgBoldIcon,\n LabelPairedCircleDollarLgRegularIcon,\n LabelPairedCircleDollarLgFillIcon,\n LabelPairedEnvelopeLgBoldIcon,\n LabelPairedEnvelopeLgRegularIcon,\n LabelPairedEnvelopeLgFillIcon,\n LabelPairedFileLinesLgBoldIcon,\n LabelPairedFileLinesLgRegularIcon,\n LabelPairedFileLinesLgFillIcon,\n LabelPairedFolderOpenLgBoldIcon,\n LabelPairedFolderOpenLgRegularIcon,\n LabelPairedFolderOpenLgFillIcon,\n LabelPairedMemoPadLgBoldIcon,\n LabelPairedMemoPadLgRegularIcon,\n LabelPairedMemoPadLgFillIcon,\n LabelPairedHandshakeLgBoldIcon,\n LabelPairedHandshakeLgRegularIcon,\n LabelPairedHandshakeLgFillIcon,\n LabelPairedBellLgBoldIcon,\n LabelPairedBellLgRegularIcon,\n LabelPairedBellLgFillIcon,\n LabelPairedCheckLgBoldIcon,\n LabelPairedCheckLgRegularIcon,\n LabelPairedCheckLgFillIcon,\n LabelPairedOptionsLgRegularIcon,\n LabelPairedOptionsLgFillIcon,\n LabelPairedCopyLgBoldIcon,\n LabelPairedCopyLgRegularIcon,\n LabelPairedCopyLgFillIcon,\n LabelPairedDollarSignLgBoldIcon,\n LabelPairedDollarSignLgRegularIcon,\n LabelPairedDollarSignLgFillIcon,\n LabelPairedEllipsisLgBoldIcon,\n LabelPairedEllipsisLgRegularIcon,\n LabelPairedEllipsisLgFillIcon,\n LabelPairedEyeLgBoldIcon,\n LabelPairedEyeLgRegularIcon,\n LabelPairedEyeLgFillIcon,\n LabelPairedEyeSlashLgBoldIcon,\n LabelPairedEyeSlashLgRegularIcon,\n LabelPairedEyeSlashLgFillIcon,\n LabelPairedFingerprintLgBoldIcon,\n LabelPairedFingerprintLgRegularIcon,\n LabelPairedFingerprintLgFillIcon,\n LabelPairedGearLgBoldIcon,\n LabelPairedGearLgRegularIcon,\n LabelPairedGearLgFillIcon,\n LabelPairedGlobeLgBoldIcon,\n LabelPairedGlobeLgRegularIcon,\n LabelPairedGlobeLgFillIcon,\n LabelPairedGripDotsVerticalLgBoldIcon,\n LabelPairedGripDotsVerticalLgRegularIcon,\n LabelPairedGripDotsVerticalLgFillIcon,\n LabelPairedImageLgBoldIcon,\n LabelPairedImageLgRegularIcon,\n LabelPairedImageLgFillIcon,\n LabelPairedLoaderLgBoldIcon,\n LabelPairedLoaderLgRegularIcon,\n LabelPairedLoaderLgFillIcon,\n LabelPairedMinusLgBoldIcon,\n LabelPairedMinusLgRegularIcon,\n LabelPairedMinusLgFillIcon,\n LabelPairedMoonLgBoldIcon,\n LabelPairedMoonLgRegularIcon,\n LabelPairedMoonLgFillIcon,\n LabelPairedPenLgBoldIcon,\n LabelPairedPenLgRegularIcon,\n LabelPairedPenLgFillIcon,\n LabelPairedPhoneLgBoldIcon,\n LabelPairedPhoneLgRegularIcon,\n LabelPairedPhoneLgFillIcon,\n LabelPairedPlusLgBoldIcon,\n LabelPairedPlusLgRegularIcon,\n LabelPairedPlusLgFillIcon,\n LabelPairedRightFromBracketLgBoldIcon,\n LabelPairedRightFromBracketLgRegularIcon,\n LabelPairedRightFromBracketLgFillIcon,\n LabelPairedSearchLgBoldIcon,\n LabelPairedSearchLgRegularIcon,\n LabelPairedSearchLgFillIcon,\n LabelPairedShieldCheckLgBoldIcon,\n LabelPairedShieldCheckLgRegularIcon,\n LabelPairedShieldCheckLgFillIcon,\n LabelPairedSparklesLgBoldIcon,\n LabelPairedSparklesLgRegularIcon,\n LabelPairedSparklesLgFillIcon,\n LabelPairedSquareLgBoldIcon,\n LabelPairedSquareLgRegularIcon,\n LabelPairedSquareLgFillIcon,\n LabelPairedSquareCheckLgBoldIcon,\n LabelPairedSquareCheckLgRegularIcon,\n LabelPairedSquareCheckLgFillIcon,\n LabelPairedSquareMinusLgBoldIcon,\n LabelPairedSquareMinusLgRegularIcon,\n LabelPairedSquareMinusLgFillIcon,\n LabelPairedStarLgBoldIcon,\n LabelPairedStarLgRegularIcon,\n LabelPairedStarLgFillIcon,\n LabelPairedSunBrightLgBoldIcon,\n LabelPairedSunBrightLgRegularIcon,\n LabelPairedSunBrightLgFillIcon,\n LabelPairedTrashLgBoldIcon,\n LabelPairedTrashLgRegularIcon,\n LabelPairedTrashLgFillIcon,\n LabelPairedTriangleExclamationLgBoldIcon,\n LabelPairedTriangleExclamationLgRegularIcon,\n LabelPairedTriangleExclamationLgFillIcon,\n LabelPairedUserLgBoldIcon,\n LabelPairedUserLgRegularIcon,\n LabelPairedUserLgFillIcon,\n LabelPairedWalletLgBoldIcon,\n LabelPairedWalletLgRegularIcon,\n LabelPairedWalletLgFillIcon,\n LabelPairedXmarkLgBoldIcon,\n LabelPairedXmarkLgRegularIcon,\n LabelPairedXmarkLgFillIcon,\n LabelPairedArrowDownToBracketLgBoldIcon,\n LabelPairedArrowDownToBracketLgRegularIcon,\n LabelPairedArrowDownToBracketLgFillIcon,\n LabelPairedCalendarLgBoldIcon,\n LabelPairedCalendarLgRegularIcon,\n LabelPairedCalendarLgFillIcon,\n LabelPairedChartLineLgBoldIcon,\n LabelPairedChartLineLgRegularIcon,\n LabelPairedChartLineLgFillIcon,\n LabelPairedChartCandlestickLgBoldIcon,\n LabelPairedChartCandlestickLgRegularIcon,\n LabelPairedChartCandlestickLgFillIcon,\n LabelPairedChartMixedLgBoldIcon,\n LabelPairedChartMixedLgRegularIcon,\n LabelPairedChartMixedLgFillIcon,\n LabelPairedChartOhlcLgBoldIcon,\n LabelPairedChartOhlcLgRegularIcon,\n LabelPairedChartOhlcLgFillIcon,\n LabelPairedChartTradingviewLgBoldIcon,\n LabelPairedChartTradingviewLgRegularIcon,\n LabelPairedChartTradingviewLgFillIcon,\n LabelPairedChartTrendDownLgBoldIcon,\n LabelPairedChartTrendDownLgRegularIcon,\n LabelPairedChartTrendDownLgFillIcon,\n LabelPairedChartTrendSidewayLgBoldIcon,\n LabelPairedChartTrendSidewayLgRegularIcon,\n LabelPairedChartTrendSidewayLgFillIcon,\n LabelPairedChartTrendUpLgBoldIcon,\n LabelPairedChartTrendUpLgRegularIcon,\n LabelPairedChartTrendUpLgFillIcon,\n LabelPairedLightChartLineUpDownClockLgBoldIcon,\n LabelPairedLightChartLineUpDownClockLgRegularIcon,\n LabelPairedLightChartLineUpDownClockLgFillIcon,\n LabelPairedGrid2LgBoldIcon,\n LabelPairedGrid2LgRegularIcon,\n LabelPairedGrid2LgFillIcon,\n LabelPairedObjectsColumnLgBoldIcon,\n LabelPairedObjectsColumnLgRegularIcon,\n LabelPairedObjectsColumnLgFillIcon,\n LabelPairedHouseBlankLgBoldIcon,\n LabelPairedHouseBlankLgRegularIcon,\n LabelPairedHouseBlankLgFillIcon,\n LabelPairedLocationCrosshairsSlashLgBoldIcon,\n LabelPairedLocationCrosshairsSlashLgRegularIcon,\n LabelPairedLocationCrosshairsSlashLgFillIcon,\n LabelPairedBookCircleQuestionLgBoldIcon,\n LabelPairedBookCircleQuestionLgRegularIcon,\n LabelPairedBookCircleQuestionLgFillIcon,\n LabelPairedBoxArchiveCircleArrowDownLgBoldIcon,\n LabelPairedBoxArchiveCircleArrowDownLgRegularIcon,\n LabelPairedBoxArchiveCircleArrowDownLgFillIcon,\n LabelPairedBoxArchiveCircleArrowUpLgBoldIcon,\n LabelPairedBoxArchiveCircleArrowUpLgRegularIcon,\n LabelPairedBoxArchiveCircleArrowUpLgFillIcon,\n LabelPairedDealCancellationLgBoldIcon,\n LabelPairedDealCancellationLgRegularIcon,\n LabelPairedDealCancellationLgFillIcon,\n LabelPairedDealProtectionLgBoldIcon,\n LabelPairedDealProtectionLgRegularIcon,\n LabelPairedDealProtectionLgFillIcon,\n LabelPairedDerivP2pLgBoldIcon,\n LabelPairedDerivP2pLgRegularIcon,\n LabelPairedDerivP2pLgFillIcon,\n LabelPairedFiatOfframpLgBoldIcon,\n LabelPairedFiatOfframpLgRegularIcon,\n LabelPairedFiatOfframpLgFillIcon,\n LabelPairedFiatOnrampLgBoldIcon,\n LabelPairedFiatOnrampLgRegularIcon,\n LabelPairedFiatOnrampLgFillIcon,\n LabelPairedFieldPasswordLgBoldIcon,\n LabelPairedFieldPasswordLgRegularIcon,\n LabelPairedFieldPasswordLgFillIcon,\n LabelPairedHandGestureSwipeLeftRightLgBoldIcon,\n LabelPairedHandGestureSwipeLeftRightLgRegularIcon,\n LabelPairedHandGestureSwipeLeftRightLgFillIcon,\n LabelPairedHandGestureTapLeftLgBoldIcon,\n LabelPairedHandGestureTapLeftLgRegularIcon,\n LabelPairedHandGestureTapLeftLgFillIcon,\n LabelPairedHandGestureTapRightLgBoldIcon,\n LabelPairedHandGestureTapRightLgRegularIcon,\n LabelPairedHandGestureTapRightLgFillIcon,\n LabelPairedHorizontalRuleDashedLgBoldIcon,\n LabelPairedHorizontalRuleDashedLgRegularIcon,\n LabelPairedHorizontalRuleDashedLgFillIcon,\n LabelPairedLightUserTieCircleDollarLgBoldIcon,\n LabelPairedLightUserTieCircleDollarLgRegularIcon,\n LabelPairedLightUserTieCircleDollarLgFillIcon,\n LabelPairedLockPatternLgBoldIcon,\n LabelPairedLockPatternLgRegularIcon,\n LabelPairedLockPatternLgFillIcon,\n LabelPairedMobileNotchRotateLgBoldIcon,\n LabelPairedMobileNotchRotateLgRegularIcon,\n LabelPairedMobileNotchRotateLgFillIcon,\n LabelPairedPageCircleArrowRightLgBoldIcon,\n LabelPairedPageCircleArrowRightLgRegularIcon,\n LabelPairedPageCircleArrowRightLgFillIcon,\n LabelPairedPasskeyLgBoldIcon,\n LabelPairedPasskeyLgRegularIcon,\n LabelPairedPasskeyLgFillIcon,\n LabelPairedPlaybackSpeedLgBoldIcon,\n LabelPairedPlaybackSpeedLgRegularIcon,\n LabelPairedPlaybackSpeedLgFillIcon,\n LabelPairedPuzzlePieceTwoLgBoldIcon,\n LabelPairedPuzzlePieceTwoLgRegularIcon,\n LabelPairedPuzzlePieceTwoLgFillIcon,\n LabelPairedRotateDeviceLgBoldIcon,\n LabelPairedRotateDeviceLgRegularIcon,\n LabelPairedRotateDeviceLgFillIcon,\n LabelPairedStopLossLgBoldIcon,\n LabelPairedStopLossLgRegularIcon,\n LabelPairedStopLossLgFillIcon,\n LabelPairedTakeProfitLgBoldIcon,\n LabelPairedTakeProfitLgRegularIcon,\n LabelPairedTakeProfitLgFillIcon,\n LabelPairedWalletCircleMinusLgBoldIcon,\n LabelPairedWalletCircleMinusLgRegularIcon,\n LabelPairedWalletCircleMinusLgFillIcon,\n LabelPairedWalletCirclePlusLgBoldIcon,\n LabelPairedWalletCirclePlusLgRegularIcon,\n LabelPairedWalletCirclePlusLgFillIcon,\n LabelPairedWalletSignalLgBoldIcon,\n LabelPairedWalletSignalLgRegularIcon,\n LabelPairedWalletSignalLgFillIcon,\n LabelPairedDerivLgIcon,\n LabelPairedDerivBrandLogoLgRegularIcon,\n LabelPairedDerivBrandLogoLgFillIcon,\n} from \"@deriv/quill-icons/LabelPaired\"\n\nimport {\n StandaloneHarmonyOsIcon,\n StandaloneHuaweiIcon,\n StandaloneHuaweiAppGalleryIcon,\n StandaloneIosIcon,\n StandaloneIpadosIcon,\n StandaloneMacosIcon,\n StandaloneMicrosoftStoreIcon,\n StandaloneTrustpilotIcon,\n} from \"@deriv/quill-icons/Standalone\"\n\n/* ─── Types ───────────────────────────────────────────────────────────────── */\n\n// Quill icons are ForwardRefExoticComponent, not directly assignable to ComponentType.\n// Using a loose callable type avoids per-entry `as` casts while keeping JSX render safe.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype QIcon = (props: any) => React.ReactNode\ntype WeightTuple = { regular?: QIcon; bold: QIcon; fill?: QIcon }\n\n/* ─── Icon name keys ─────────────────────────────────────────────────────── */\n// This object is the sole source of truth for `IconName`. Values are 1 so that\n// no Quill component types appear in this object's inferred type, which prevents\n// TS4023 \"cannot be named\" errors during declaration-file generation.\nconst _iconKeys = {\n \"arrow-down-to-line\": 1, \"arrow-left\": 1, \"arrow-right\": 1,\n \"arrow-right-arrow-left\": 1, \"arrows-left-right\": 1,\n \"arrow-up-right\": 1, \"arrow-up-right-from-square\": 1,\n \"rotate-right\": 1, \"clock-rotate-left\": 1, \"arrow-up-from-line\": 1,\n \"chevron-down\": 1, \"chevron-left\": 1, \"chevron-right\": 1, \"chevron-up\": 1,\n \"bell\": 1,\n \"chart-bar\": 1, \"chart-candlestick\": 1, \"chart-line\": 1, \"chart-tradingview\": 1,\n \"chart-trend-down\": 1, \"chart-trend-still\": 1, \"chart-trend-up\": 1,\n \"arrow-trend-down\": 1, \"arrow-trend-up\": 1,\n \"ohlc\": 1, \"chart-line-up-down-clock\": 1, \"chart-line-clock\": 1,\n \"circle\": 1, \"circle-check\": 1, \"circle-exclamation\": 1, \"circle-info\": 1,\n \"circle-user-slash\": 1,\n \"copy\": 1, \"dollar-sign\": 1, \"ellipsis\": 1,\n \"envelope\": 1, \"envelope-open\": 1,\n \"eye\": 1, \"eye-slash\": 1,\n \"file-lines\": 1, \"file-xmark\": 1,\n \"fingerprint\": 1, \"gear\": 1, \"globe\": 1, \"grip-vertical\": 1,\n \"house\": 1, \"house-blank\": 1,\n \"image\": 1, \"inbox\": 1,\n \"magnifying-glass\": 1,\n \"minus\": 1, \"moon\": 1, \"phone\": 1, \"plus\": 1,\n \"right-from-bracket\": 1,\n \"sparkles\": 1, \"spinner\": 1,\n \"square\": 1, \"square-check\": 1, \"square-minus\": 1,\n \"star\": 1, \"sun\": 1,\n \"table-cells-large\": 1, \"table-columns\": 1,\n \"trash\": 1, \"trash-can\": 1,\n \"triangle-exclamation\": 1, \"user\": 1, \"wallet\": 1, \"xmark\": 1,\n \"check\": 1, \"options\": 1,\n \"crosshairs-slash\": 1, \"book-open\": 1, \"calculator\": 1,\n \"deriv\": 1,\n \"book-circle-question\": 1, \"book-open-cover-circle-question\": 1,\n \"box-archive-circle-arrow-down\": 1, \"box-archive-circle-arrow-up\": 1,\n \"deal-cancellation\": 1, \"deal-protection\": 1, \"deriv-p2p\": 1,\n \"fiat-offramp\": 1, \"fiat-onramp\": 1, \"field-password\": 1,\n \"hand-gesture-swipe-left-right\": 1, \"hand-gesture-tap-left\": 1, \"hand-gesture-tap-right\": 1,\n \"horizontal-rule-dashed\": 1, \"lock-pattern\": 1, \"mobile-notch-rotate\": 1,\n \"page-circle-arrow-right\": 1, \"passkey\": 1, \"playback-speed\": 1,\n \"puzzles-piece-two\": 1, \"quill\": 1, \"rotate-device\": 1,\n \"stop-loss\": 1, \"take-profit\": 1,\n \"user-tie-circle-dollar\": 1,\n \"wallet-circle-minus\": 1, \"wallet-circle-plus\": 1, \"wallet-signal\": 1,\n \"user-circle-arrow-right\": 1, \"user-circle-arrow-up\": 1,\n \"calendar-circle-arrow-left\": 1, \"calendar-circle-arrow-right\": 1,\n \"file-lines-magnifying-glass\": 1,\n \"handshake-lock\": 1, \"handshake-shield\": 1, \"memo-shield\": 1,\n \"pen-field-circle-xmark\": 1, \"pen-field-lock\": 1, \"pen-field-slash\": 1,\n \"rectangle-history-circle-dollar\": 1,\n \"shield-circle-check\": 1, \"shield-halved-circle-minus\": 1,\n \"shield-halved-lock\": 1, \"shield-lock\": 1,\n \"user-circle-dollar\": 1, \"user-large-circle-dollar\": 1,\n \"users-line-circle-dollar\": 1, \"users-rectangle-circle-dollar\": 1,\n \"brand-harmony-os\": 1, \"brand-huawei\": 1, \"brand-huawei-app-gallery\": 1,\n \"brand-ios\": 1, \"brand-ipados\": 1, \"brand-macos\": 1,\n \"brand-microsoft-store\": 1, \"brand-trustpilot\": 1,\n} as const\n\n/* ─── Icon map ────────────────────────────────────────────────────────────── */\n\n// Explicitly typed so TypeScript uses the annotation for DTS — it never infers\n// value types from the Quill components, preventing TS4023 during declaration emit.\nconst iconMap: Record<keyof typeof _iconKeys, WeightTuple> = {\n // ── Arrows / navigation ───────────────────────────────────────────────────\n \"arrow-down-to-line\": {\n regular: LabelPairedArrowDownToLineMdRegularIcon,\n bold: LabelPairedArrowDownToLineMdBoldIcon,\n fill: LabelPairedArrowDownToLineMdFillIcon,\n },\n \"arrow-left\": {\n regular: LabelPairedArrowLeftMdRegularIcon,\n bold: LabelPairedArrowLeftMdBoldIcon,\n fill: LabelPairedArrowLeftMdFillIcon,\n },\n \"arrow-right\": {\n regular: LabelPairedArrowRightMdRegularIcon,\n bold: LabelPairedArrowRightMdBoldIcon,\n fill: LabelPairedArrowRightMdFillIcon,\n },\n \"arrow-right-arrow-left\": {\n regular: LabelPairedArrowRightArrowLeftMdRegularIcon,\n bold: LabelPairedArrowRightArrowLeftMdBoldIcon,\n fill: LabelPairedArrowRightArrowLeftMdFillIcon,\n },\n // arrows-left-right (↔) — closest visual is ArrowRightArrowLeft\n \"arrows-left-right\": {\n regular: LabelPairedArrowRightArrowLeftMdRegularIcon,\n bold: LabelPairedArrowRightArrowLeftMdBoldIcon,\n fill: LabelPairedArrowRightArrowLeftMdFillIcon,\n },\n \"arrow-up-right\": {\n regular: LabelPairedArrowUpRightMdRegularIcon,\n bold: LabelPairedArrowUpRightMdBoldIcon,\n fill: LabelPairedArrowUpRightMdFillIcon,\n },\n \"arrow-up-right-from-square\": {\n regular: LabelPairedArrowUpRightFromSquareMdRegularIcon,\n bold: LabelPairedArrowUpRightFromSquareMdBoldIcon,\n fill: LabelPairedArrowUpRightFromSquareMdFillIcon,\n },\n // rotate-right (↻) → ArrowRotateRight\n \"rotate-right\": {\n regular: LabelPairedArrowRotateRightMdRegularIcon,\n bold: LabelPairedArrowRotateRightMdBoldIcon,\n fill: LabelPairedArrowRotateRightMdFillIcon,\n },\n // clock-rotate-left (↺) → ArrowRotateLeft\n \"clock-rotate-left\": {\n regular: LabelPairedArrowRotateLeftMdRegularIcon,\n bold: LabelPairedArrowRotateLeftMdBoldIcon,\n fill: LabelPairedArrowRotateLeftMdFillIcon,\n },\n // arrow-up-from-line → ArrowUpToLine (closest)\n \"arrow-up-from-line\": {\n regular: LabelPairedArrowUpToLineMdRegularIcon,\n bold: LabelPairedArrowUpToLineMdBoldIcon,\n fill: LabelPairedArrowUpToLineMdFillIcon,\n },\n // ── Chevrons ──────────────────────────────────────────────────────────────\n \"chevron-down\": {\n regular: LabelPairedChevronDownMdRegularIcon,\n bold: LabelPairedChevronDownMdBoldIcon,\n fill: LabelPairedChevronDownMdFillIcon,\n },\n \"chevron-left\": {\n regular: LabelPairedChevronLeftMdRegularIcon,\n bold: LabelPairedChevronLeftMdBoldIcon,\n fill: LabelPairedChevronLeftMdFillIcon,\n },\n \"chevron-right\": {\n regular: LabelPairedChevronRightMdRegularIcon,\n bold: LabelPairedChevronRightMdBoldIcon,\n fill: LabelPairedChevronRightMdFillIcon,\n },\n \"chevron-up\": {\n regular: LabelPairedChevronUpMdRegularIcon,\n bold: LabelPairedChevronUpMdBoldIcon,\n fill: LabelPairedChevronUpMdFillIcon,\n },\n // ── Bell ──────────────────────────────────────────────────────────────────\n \"bell\": {\n regular: LabelPairedBellMdRegularIcon,\n bold: LabelPairedBellMdBoldIcon,\n fill: LabelPairedBellMdFillIcon,\n },\n \"check\": {\n regular: LabelPairedCheckMdRegularIcon,\n bold: LabelPairedCheckMdBoldIcon,\n fill: LabelPairedCheckMdFillIcon,\n },\n // ── Charts ────────────────────────────────────────────────────────────────\n \"chart-bar\": {\n regular: LabelPairedChartMixedMdRegularIcon,\n bold: LabelPairedChartMixedMdBoldIcon,\n fill: LabelPairedChartMixedMdFillIcon,\n },\n \"chart-candlestick\": {\n regular: LabelPairedChartCandlestickMdRegularIcon,\n bold: LabelPairedChartCandlestickMdBoldIcon,\n fill: LabelPairedChartCandlestickMdFillIcon,\n },\n \"chart-line\": {\n regular: LabelPairedChartLineMdRegularIcon,\n bold: LabelPairedChartLineMdBoldIcon,\n fill: LabelPairedChartLineMdFillIcon,\n },\n \"chart-tradingview\": {\n regular: LabelPairedChartTradingviewMdRegularIcon,\n bold: LabelPairedChartTradingviewMdBoldIcon,\n fill: LabelPairedChartTradingviewMdFillIcon,\n },\n \"chart-trend-down\": {\n regular: LabelPairedChartTrendDownMdRegularIcon,\n bold: LabelPairedChartTrendDownMdBoldIcon,\n fill: LabelPairedChartTrendDownMdFillIcon,\n },\n \"chart-trend-still\": {\n regular: LabelPairedChartTrendSidewayMdRegularIcon,\n bold: LabelPairedChartTrendSidewayMdBoldIcon,\n fill: LabelPairedChartTrendSidewayMdFillIcon,\n },\n \"chart-trend-up\": {\n regular: LabelPairedChartTrendUpMdRegularIcon,\n bold: LabelPairedChartTrendUpMdBoldIcon,\n fill: LabelPairedChartTrendUpMdFillIcon,\n },\n // arrow-trend-* → same as chart-trend-*\n \"arrow-trend-down\": {\n regular: LabelPairedChartTrendDownMdRegularIcon,\n bold: LabelPairedChartTrendDownMdBoldIcon,\n fill: LabelPairedChartTrendDownMdFillIcon,\n },\n \"arrow-trend-up\": {\n regular: LabelPairedChartTrendUpMdRegularIcon,\n bold: LabelPairedChartTrendUpMdBoldIcon,\n fill: LabelPairedChartTrendUpMdFillIcon,\n },\n \"ohlc\": {\n regular: LabelPairedChartOhlcMdRegularIcon,\n bold: LabelPairedChartOhlcMdBoldIcon,\n fill: LabelPairedChartOhlcMdFillIcon,\n },\n \"chart-line-up-down-clock\": {\n regular: LabelPairedLightChartLineUpDownClockMdRegularIcon,\n bold: LabelPairedLightChartLineUpDownClockMdBoldIcon,\n fill: LabelPairedLightChartLineUpDownClockMdFillIcon,\n },\n // chart-line-clock — no direct quill equivalent; falls back to chart-line TODO: design team review\n \"chart-line-clock\": {\n regular: LabelPairedChartLineMdRegularIcon,\n bold: LabelPairedChartLineMdBoldIcon,\n fill: LabelPairedChartLineMdFillIcon,\n },\n // ── Circle variants ───────────────────────────────────────────────────────\n \"circle\": {\n regular: LabelPairedCircleMdRegularIcon,\n bold: LabelPairedCircleMdBoldIcon,\n fill: LabelPairedCircleMdFillIcon,\n },\n \"circle-check\": {\n regular: LabelPairedCircleCheckMdRegularIcon,\n bold: LabelPairedCircleCheckMdBoldIcon,\n fill: LabelPairedCircleCheckMdFillIcon,\n },\n \"circle-exclamation\": {\n regular: LabelPairedCircleExclamationMdRegularIcon,\n bold: LabelPairedCircleExclamationMdBoldIcon,\n fill: LabelPairedCircleExclamationMdFillIcon,\n },\n \"circle-info\": {\n regular: LabelPairedCircleInfoMdRegularIcon,\n bold: LabelPairedCircleInfoMdBoldIcon,\n fill: LabelPairedCircleInfoMdFillIcon,\n },\n \"circle-user-slash\": {\n regular: LabelPairedCircleUserSlashMdRegularIcon,\n bold: LabelPairedCircleUserSlashMdBoldIcon,\n fill: LabelPairedCircleUserSlashMdFillIcon,\n },\n // ── Copy / files ──────────────────────────────────────────────────────────\n \"copy\": {\n regular: LabelPairedCopyMdRegularIcon,\n bold: LabelPairedCopyMdBoldIcon,\n fill: LabelPairedCopyMdFillIcon,\n },\n \"dollar-sign\": {\n regular: LabelPairedDollarSignMdRegularIcon,\n bold: LabelPairedDollarSignMdBoldIcon,\n fill: LabelPairedDollarSignMdFillIcon,\n },\n \"ellipsis\": {\n regular: LabelPairedEllipsisMdRegularIcon,\n bold: LabelPairedEllipsisMdBoldIcon,\n fill: LabelPairedEllipsisMdFillIcon,\n },\n \"envelope\": {\n regular: LabelPairedEnvelopeMdRegularIcon,\n bold: LabelPairedEnvelopeMdBoldIcon,\n fill: LabelPairedEnvelopeMdFillIcon,\n },\n // envelope-open — no direct Quill equivalent; falls back to Envelope TODO: design team review\n \"envelope-open\": {\n regular: LabelPairedEnvelopeMdRegularIcon,\n bold: LabelPairedEnvelopeMdBoldIcon,\n fill: LabelPairedEnvelopeMdFillIcon,\n },\n \"eye\": {\n regular: LabelPairedEyeMdRegularIcon,\n bold: LabelPairedEyeMdBoldIcon,\n fill: LabelPairedEyeMdFillIcon,\n },\n \"eye-slash\": {\n regular: LabelPairedEyeSlashMdRegularIcon,\n bold: LabelPairedEyeSlashMdBoldIcon,\n fill: LabelPairedEyeSlashMdFillIcon,\n },\n \"file-lines\": {\n regular: LabelPairedFileLinesMdRegularIcon,\n bold: LabelPairedFileLinesMdBoldIcon,\n fill: LabelPairedFileLinesMdFillIcon,\n },\n // file-xmark — no direct Quill equivalent; falls back to FileLines TODO: design team review\n \"file-xmark\": {\n regular: LabelPairedFileLinesMdRegularIcon,\n bold: LabelPairedFileLinesMdBoldIcon,\n fill: LabelPairedFileLinesMdFillIcon,\n },\n \"fingerprint\": {\n regular: LabelPairedFingerprintMdRegularIcon,\n bold: LabelPairedFingerprintMdBoldIcon,\n fill: LabelPairedFingerprintMdFillIcon,\n },\n \"gear\": {\n regular: LabelPairedGearMdRegularIcon,\n bold: LabelPairedGearMdBoldIcon,\n fill: LabelPairedGearMdFillIcon,\n },\n \"globe\": {\n regular: LabelPairedGlobeMdRegularIcon,\n bold: LabelPairedGlobeMdBoldIcon,\n fill: LabelPairedGlobeMdFillIcon,\n },\n \"grip-vertical\": {\n regular: LabelPairedGripDotsVerticalMdRegularIcon,\n bold: LabelPairedGripDotsVerticalMdBoldIcon,\n fill: LabelPairedGripDotsVerticalMdFillIcon,\n },\n // house → HouseBlank\n \"house\": {\n regular: LabelPairedHouseBlankMdRegularIcon,\n bold: LabelPairedHouseBlankMdBoldIcon,\n fill: LabelPairedHouseBlankMdFillIcon,\n },\n \"house-blank\": {\n regular: LabelPairedHouseBlankMdRegularIcon,\n bold: LabelPairedHouseBlankMdBoldIcon,\n fill: LabelPairedHouseBlankMdFillIcon,\n },\n \"image\": {\n regular: LabelPairedImageMdRegularIcon,\n bold: LabelPairedImageMdBoldIcon,\n fill: LabelPairedImageMdFillIcon,\n },\n // inbox — no direct Quill equivalent; falls back to ArrowDownToBracket TODO: design team review\n \"inbox\": {\n regular: LabelPairedArrowDownToBracketMdRegularIcon,\n bold: LabelPairedArrowDownToBracketMdBoldIcon,\n fill: LabelPairedArrowDownToBracketMdFillIcon,\n },\n // magnifying-glass → Search\n \"magnifying-glass\": {\n regular: LabelPairedSearchMdRegularIcon,\n bold: LabelPairedSearchMdBoldIcon,\n fill: LabelPairedSearchMdFillIcon,\n },\n \"minus\": {\n regular: LabelPairedMinusMdRegularIcon,\n bold: LabelPairedMinusMdBoldIcon,\n fill: LabelPairedMinusMdFillIcon,\n },\n \"moon\": {\n regular: LabelPairedMoonMdRegularIcon,\n bold: LabelPairedMoonMdBoldIcon,\n fill: LabelPairedMoonMdFillIcon,\n },\n \"phone\": {\n regular: LabelPairedPhoneMdRegularIcon,\n bold: LabelPairedPhoneMdBoldIcon,\n fill: LabelPairedPhoneMdFillIcon,\n },\n \"plus\": {\n regular: LabelPairedPlusMdRegularIcon,\n bold: LabelPairedPlusMdBoldIcon,\n fill: LabelPairedPlusMdFillIcon,\n },\n \"right-from-bracket\": {\n regular: LabelPairedRightFromBracketMdRegularIcon,\n bold: LabelPairedRightFromBracketMdBoldIcon,\n fill: LabelPairedRightFromBracketMdFillIcon,\n },\n \"sparkles\": {\n regular: LabelPairedSparklesMdRegularIcon,\n bold: LabelPairedSparklesMdBoldIcon,\n fill: LabelPairedSparklesMdFillIcon,\n },\n // spinner → Loader\n \"spinner\": {\n regular: LabelPairedLoaderMdRegularIcon,\n bold: LabelPairedLoaderMdBoldIcon,\n fill: LabelPairedLoaderMdFillIcon,\n },\n \"square\": {\n regular: LabelPairedSquareMdRegularIcon,\n bold: LabelPairedSquareMdBoldIcon,\n fill: LabelPairedSquareMdFillIcon,\n },\n \"square-check\": {\n regular: LabelPairedSquareCheckMdRegularIcon,\n bold: LabelPairedSquareCheckMdBoldIcon,\n fill: LabelPairedSquareCheckMdFillIcon,\n },\n \"square-minus\": {\n regular: LabelPairedSquareMinusMdRegularIcon,\n bold: LabelPairedSquareMinusMdBoldIcon,\n fill: LabelPairedSquareMinusMdFillIcon,\n },\n \"star\": {\n regular: LabelPairedStarMdRegularIcon,\n bold: LabelPairedStarMdBoldIcon,\n fill: LabelPairedStarMdFillIcon,\n },\n // sun → SunBright\n \"sun\": {\n regular: LabelPairedSunBrightMdRegularIcon,\n bold: LabelPairedSunBrightMdBoldIcon,\n fill: LabelPairedSunBrightMdFillIcon,\n },\n // table-cells-large → Grid2\n \"table-cells-large\": {\n regular: LabelPairedGrid2MdRegularIcon,\n bold: LabelPairedGrid2MdBoldIcon,\n fill: LabelPairedGrid2MdFillIcon,\n },\n // table-columns → ObjectsColumn\n \"table-columns\": {\n regular: LabelPairedObjectsColumnMdRegularIcon,\n bold: LabelPairedObjectsColumnMdBoldIcon,\n fill: LabelPairedObjectsColumnMdFillIcon,\n },\n \"trash\": {\n regular: LabelPairedTrashMdRegularIcon,\n bold: LabelPairedTrashMdBoldIcon,\n fill: LabelPairedTrashMdFillIcon,\n },\n // trash-can → same as trash\n \"trash-can\": {\n regular: LabelPairedTrashMdRegularIcon,\n bold: LabelPairedTrashMdBoldIcon,\n fill: LabelPairedTrashMdFillIcon,\n },\n \"triangle-exclamation\": {\n regular: LabelPairedTriangleExclamationMdRegularIcon,\n bold: LabelPairedTriangleExclamationMdBoldIcon,\n fill: LabelPairedTriangleExclamationMdFillIcon,\n },\n \"user\": {\n regular: LabelPairedUserMdRegularIcon,\n bold: LabelPairedUserMdBoldIcon,\n fill: LabelPairedUserMdFillIcon,\n },\n \"wallet\": {\n regular: LabelPairedWalletMdRegularIcon,\n bold: LabelPairedWalletMdBoldIcon,\n fill: LabelPairedWalletMdFillIcon,\n },\n \"xmark\": {\n regular: LabelPairedXmarkMdRegularIcon,\n bold: LabelPairedXmarkMdBoldIcon,\n fill: LabelPairedXmarkMdFillIcon,\n },\n // crosshairs-slash → LocationCrosshairsSlash\n \"crosshairs-slash\": {\n regular: LabelPairedLocationCrosshairsSlashMdRegularIcon,\n bold: LabelPairedLocationCrosshairsSlashMdBoldIcon,\n fill: LabelPairedLocationCrosshairsSlashMdFillIcon,\n },\n // ── Layout ────────────────────────────────────────────────────────────────\n // book-open — no direct Quill equivalent; falls back to FolderOpen TODO: design team review\n \"book-open\": {\n regular: LabelPairedFolderOpenMdRegularIcon,\n bold: LabelPairedFolderOpenMdBoldIcon,\n fill: LabelPairedFolderOpenMdFillIcon,\n },\n // calculator — no direct Quill equivalent; falls back to Gear TODO: design team review\n \"calculator\": {\n regular: LabelPairedGearMdRegularIcon,\n bold: LabelPairedGearMdBoldIcon,\n fill: LabelPairedGearMdFillIcon,\n },\n // ── Deriv icons ───────────────────────────────────────────────────────────\n // deriv logo — DerivBrandLogo has Regular + Fill only; Bold falls back to Fill\n \"deriv\": {\n regular: LabelPairedDerivBrandLogoMdRegularIcon,\n bold: LabelPairedDerivMdIcon,\n fill: LabelPairedDerivBrandLogoMdFillIcon,\n },\n \"book-circle-question\": {\n regular: LabelPairedBookCircleQuestionMdRegularIcon,\n bold: LabelPairedBookCircleQuestionMdBoldIcon,\n fill: LabelPairedBookCircleQuestionMdFillIcon,\n },\n // book-open-cover-circle-question — falls back to BookCircleQuestion TODO: design team review\n \"book-open-cover-circle-question\": {\n regular: LabelPairedBookCircleQuestionMdRegularIcon,\n bold: LabelPairedBookCircleQuestionMdBoldIcon,\n fill: LabelPairedBookCircleQuestionMdFillIcon,\n },\n \"box-archive-circle-arrow-down\": {\n regular: LabelPairedBoxArchiveCircleArrowDownMdRegularIcon,\n bold: LabelPairedBoxArchiveCircleArrowDownMdBoldIcon,\n fill: LabelPairedBoxArchiveCircleArrowDownMdFillIcon,\n },\n \"box-archive-circle-arrow-up\": {\n regular: LabelPairedBoxArchiveCircleArrowUpMdRegularIcon,\n bold: LabelPairedBoxArchiveCircleArrowUpMdBoldIcon,\n fill: LabelPairedBoxArchiveCircleArrowUpMdFillIcon,\n },\n \"deal-cancellation\": {\n regular: LabelPairedDealCancellationMdRegularIcon,\n bold: LabelPairedDealCancellationMdBoldIcon,\n fill: LabelPairedDealCancellationMdFillIcon,\n },\n \"deal-protection\": {\n regular: LabelPairedDealProtectionMdRegularIcon,\n bold: LabelPairedDealProtectionMdBoldIcon,\n fill: LabelPairedDealProtectionMdFillIcon,\n },\n \"deriv-p2p\": {\n regular: LabelPairedDerivP2pMdRegularIcon,\n bold: LabelPairedDerivP2pMdBoldIcon,\n fill: LabelPairedDerivP2pMdFillIcon,\n },\n \"fiat-offramp\": {\n regular: LabelPairedFiatOfframpMdRegularIcon,\n bold: LabelPairedFiatOfframpMdBoldIcon,\n fill: LabelPairedFiatOfframpMdFillIcon,\n },\n \"fiat-onramp\": {\n regular: LabelPairedFiatOnrampMdRegularIcon,\n bold: LabelPairedFiatOnrampMdBoldIcon,\n fill: LabelPairedFiatOnrampMdFillIcon,\n },\n \"field-password\": {\n regular: LabelPairedFieldPasswordMdRegularIcon,\n bold: LabelPairedFieldPasswordMdBoldIcon,\n fill: LabelPairedFieldPasswordMdFillIcon,\n },\n \"hand-gesture-swipe-left-right\": {\n regular: LabelPairedHandGestureSwipeLeftRightMdRegularIcon,\n bold: LabelPairedHandGestureSwipeLeftRightMdBoldIcon,\n fill: LabelPairedHandGestureSwipeLeftRightMdFillIcon,\n },\n \"hand-gesture-tap-left\": {\n regular: LabelPairedHandGestureTapLeftMdRegularIcon,\n bold: LabelPairedHandGestureTapLeftMdBoldIcon,\n fill: LabelPairedHandGestureTapLeftMdFillIcon,\n },\n \"hand-gesture-tap-right\": {\n regular: LabelPairedHandGestureTapRightMdRegularIcon,\n bold: LabelPairedHandGestureTapRightMdBoldIcon,\n fill: LabelPairedHandGestureTapRightMdFillIcon,\n },\n \"horizontal-rule-dashed\": {\n regular: LabelPairedHorizontalRuleDashedMdRegularIcon,\n bold: LabelPairedHorizontalRuleDashedMdBoldIcon,\n fill: LabelPairedHorizontalRuleDashedMdFillIcon,\n },\n \"lock-pattern\": {\n regular: LabelPairedLockPatternMdRegularIcon,\n bold: LabelPairedLockPatternMdBoldIcon,\n fill: LabelPairedLockPatternMdFillIcon,\n },\n \"mobile-notch-rotate\": {\n regular: LabelPairedMobileNotchRotateMdRegularIcon,\n bold: LabelPairedMobileNotchRotateMdBoldIcon,\n fill: LabelPairedMobileNotchRotateMdFillIcon,\n },\n \"page-circle-arrow-right\": {\n regular: LabelPairedPageCircleArrowRightMdRegularIcon,\n bold: LabelPairedPageCircleArrowRightMdBoldIcon,\n fill: LabelPairedPageCircleArrowRightMdFillIcon,\n },\n \"passkey\": {\n regular: LabelPairedPasskeyMdRegularIcon,\n bold: LabelPairedPasskeyMdBoldIcon,\n fill: LabelPairedPasskeyMdFillIcon,\n },\n \"playback-speed\": {\n regular: LabelPairedPlaybackSpeedMdRegularIcon,\n bold: LabelPairedPlaybackSpeedMdBoldIcon,\n fill: LabelPairedPlaybackSpeedMdFillIcon,\n },\n \"puzzles-piece-two\": {\n regular: LabelPairedPuzzlePieceTwoMdRegularIcon,\n bold: LabelPairedPuzzlePieceTwoMdBoldIcon,\n fill: LabelPairedPuzzlePieceTwoMdFillIcon,\n },\n // options — Quill has no Md Bold variant; uses Fill for bold TODO: design team review\n \"options\": {\n regular: LabelPairedOptionsMdRegularIcon,\n bold: LabelPairedOptionsMdFillIcon,\n fill: LabelPairedOptionsMdFillIcon,\n },\n // quill — no dedicated Quill equivalent; falls back to Pen TODO: design team review\n \"quill\": {\n regular: LabelPairedPenMdRegularIcon,\n bold: LabelPairedPenMdBoldIcon,\n fill: LabelPairedPenMdFillIcon,\n },\n \"rotate-device\": {\n regular: LabelPairedRotateDeviceMdRegularIcon,\n bold: LabelPairedRotateDeviceMdBoldIcon,\n fill: LabelPairedRotateDeviceMdFillIcon,\n },\n \"stop-loss\": {\n regular: LabelPairedStopLossMdRegularIcon,\n bold: LabelPairedStopLossMdBoldIcon,\n fill: LabelPairedStopLossMdFillIcon,\n },\n \"take-profit\": {\n regular: LabelPairedTakeProfitMdRegularIcon,\n bold: LabelPairedTakeProfitMdBoldIcon,\n fill: LabelPairedTakeProfitMdFillIcon,\n },\n \"user-tie-circle-dollar\": {\n regular: LabelPairedLightUserTieCircleDollarMdRegularIcon,\n bold: LabelPairedLightUserTieCircleDollarMdBoldIcon,\n fill: LabelPairedLightUserTieCircleDollarMdFillIcon,\n },\n \"wallet-circle-minus\": {\n regular: LabelPairedWalletCircleMinusMdRegularIcon,\n bold: LabelPairedWalletCircleMinusMdBoldIcon,\n fill: LabelPairedWalletCircleMinusMdFillIcon,\n },\n \"wallet-circle-plus\": {\n regular: LabelPairedWalletCirclePlusMdRegularIcon,\n bold: LabelPairedWalletCirclePlusMdBoldIcon,\n fill: LabelPairedWalletCirclePlusMdFillIcon,\n },\n \"wallet-signal\": {\n regular: LabelPairedWalletSignalMdRegularIcon,\n bold: LabelPairedWalletSignalMdBoldIcon,\n fill: LabelPairedWalletSignalMdFillIcon,\n },\n // ── Custom Deriv kit icons — pending Quill equivalents TODO: design team review ──\n // These were FA Pro kit (a9f9eb613f / 394c25e5aa) custom uploads that don't\n // have a matching LabelPaired icon. Mapped to nearest visual substitute.\n \"user-circle-arrow-right\": {\n regular: LabelPairedCircleUserMdRegularIcon,\n bold: LabelPairedCircleUserMdBoldIcon,\n fill: LabelPairedCircleUserMdFillIcon,\n },\n \"user-circle-arrow-up\": {\n regular: LabelPairedCircleUserMdRegularIcon,\n bold: LabelPairedCircleUserMdBoldIcon,\n fill: LabelPairedCircleUserMdFillIcon,\n },\n \"calendar-circle-arrow-left\": {\n regular: LabelPairedCalendarMdRegularIcon,\n bold: LabelPairedCalendarMdBoldIcon,\n fill: LabelPairedCalendarMdFillIcon,\n },\n \"calendar-circle-arrow-right\": {\n regular: LabelPairedCalendarMdRegularIcon,\n bold: LabelPairedCalendarMdBoldIcon,\n fill: LabelPairedCalendarMdFillIcon,\n },\n \"file-lines-magnifying-glass\": {\n regular: LabelPairedFileLinesMdRegularIcon,\n bold: LabelPairedFileLinesMdBoldIcon,\n fill: LabelPairedFileLinesMdFillIcon,\n },\n \"handshake-lock\": {\n regular: LabelPairedHandshakeMdRegularIcon,\n bold: LabelPairedHandshakeMdBoldIcon,\n fill: LabelPairedHandshakeMdFillIcon,\n },\n \"handshake-shield\": {\n regular: LabelPairedHandshakeMdRegularIcon,\n bold: LabelPairedHandshakeMdBoldIcon,\n fill: LabelPairedHandshakeMdFillIcon,\n },\n \"memo-shield\": {\n regular: LabelPairedMemoPadMdRegularIcon,\n bold: LabelPairedMemoPadMdBoldIcon,\n fill: LabelPairedMemoPadMdFillIcon,\n },\n \"pen-field-circle-xmark\": {\n regular: LabelPairedPenMdRegularIcon,\n bold: LabelPairedPenMdBoldIcon,\n fill: LabelPairedPenMdFillIcon,\n },\n \"pen-field-lock\": {\n regular: LabelPairedPenMdRegularIcon,\n bold: LabelPairedPenMdBoldIcon,\n fill: LabelPairedPenMdFillIcon,\n },\n \"pen-field-slash\": {\n regular: LabelPairedPenMdRegularIcon,\n bold: LabelPairedPenMdBoldIcon,\n fill: LabelPairedPenMdFillIcon,\n },\n \"rectangle-history-circle-dollar\": {\n regular: LabelPairedCircleDollarMdRegularIcon,\n bold: LabelPairedCircleDollarMdBoldIcon,\n fill: LabelPairedCircleDollarMdFillIcon,\n },\n \"shield-circle-check\": {\n regular: LabelPairedShieldCheckMdRegularIcon,\n bold: LabelPairedShieldCheckMdBoldIcon,\n fill: LabelPairedShieldCheckMdFillIcon,\n },\n \"shield-halved-circle-minus\": {\n regular: LabelPairedShieldCheckMdRegularIcon,\n bold: LabelPairedShieldCheckMdBoldIcon,\n fill: LabelPairedShieldCheckMdFillIcon,\n },\n \"shield-halved-lock\": {\n regular: LabelPairedShieldCheckMdRegularIcon,\n bold: LabelPairedShieldCheckMdBoldIcon,\n fill: LabelPairedShieldCheckMdFillIcon,\n },\n \"shield-lock\": {\n regular: LabelPairedShieldCheckMdRegularIcon,\n bold: LabelPairedShieldCheckMdBoldIcon,\n fill: LabelPairedShieldCheckMdFillIcon,\n },\n \"user-circle-dollar\": {\n regular: LabelPairedCircleDollarMdRegularIcon,\n bold: LabelPairedCircleDollarMdBoldIcon,\n fill: LabelPairedCircleDollarMdFillIcon,\n },\n \"user-large-circle-dollar\": {\n regular: LabelPairedCircleDollarMdRegularIcon,\n bold: LabelPairedCircleDollarMdBoldIcon,\n fill: LabelPairedCircleDollarMdFillIcon,\n },\n \"users-line-circle-dollar\": {\n regular: LabelPairedCircleDollarMdRegularIcon,\n bold: LabelPairedCircleDollarMdBoldIcon,\n fill: LabelPairedCircleDollarMdFillIcon,\n },\n \"users-rectangle-circle-dollar\": {\n regular: LabelPairedCircleDollarMdRegularIcon,\n bold: LabelPairedCircleDollarMdBoldIcon,\n fill: LabelPairedCircleDollarMdFillIcon,\n },\n // ── Brand / standalone icons (single weight) ──────────────────────────────\n \"brand-harmony-os\": {\n bold: StandaloneHarmonyOsIcon,\n },\n \"brand-huawei\": {\n bold: StandaloneHuaweiIcon,\n },\n \"brand-huawei-app-gallery\": {\n bold: StandaloneHuaweiAppGalleryIcon,\n },\n \"brand-ios\": {\n bold: StandaloneIosIcon,\n },\n \"brand-ipados\": {\n bold: StandaloneIpadosIcon,\n },\n \"brand-macos\": {\n bold: StandaloneMacosIcon,\n },\n \"brand-microsoft-store\": {\n bold: StandaloneMicrosoftStoreIcon,\n },\n \"brand-trustpilot\": {\n bold: StandaloneTrustpilotIcon,\n },\n}\n\nconst iconMapSm: Partial<Record<keyof typeof _iconKeys, WeightTuple>> = {\n // ── Arrows / navigation ───────────────────────────────────────────────────\n \"arrow-down-to-line\": {\n regular: LabelPairedArrowDownToLineSmRegularIcon,\n bold: LabelPairedArrowDownToLineSmBoldIcon,\n fill: LabelPairedArrowDownToLineSmFillIcon,\n },\n \"arrow-left\": {\n regular: LabelPairedArrowLeftSmRegularIcon,\n bold: LabelPairedArrowLeftSmBoldIcon,\n fill: LabelPairedArrowLeftSmFillIcon,\n },\n \"arrow-right\": {\n regular: LabelPairedArrowRightSmRegularIcon,\n bold: LabelPairedArrowRightSmBoldIcon,\n fill: LabelPairedArrowRightSmFillIcon,\n },\n \"arrow-right-arrow-left\": {\n regular: LabelPairedArrowRightArrowLeftSmRegularIcon,\n bold: LabelPairedArrowRightArrowLeftSmBoldIcon,\n fill: LabelPairedArrowRightArrowLeftSmFillIcon,\n },\n // arrows-left-right (↔) — closest visual is ArrowRightArrowLeft\n \"arrows-left-right\": {\n regular: LabelPairedArrowRightArrowLeftSmRegularIcon,\n bold: LabelPairedArrowRightArrowLeftSmBoldIcon,\n fill: LabelPairedArrowRightArrowLeftSmFillIcon,\n },\n \"arrow-up-right\": {\n regular: LabelPairedArrowUpRightSmRegularIcon,\n bold: LabelPairedArrowUpRightSmBoldIcon,\n fill: LabelPairedArrowUpRightSmFillIcon,\n },\n \"arrow-up-right-from-square\": {\n regular: LabelPairedArrowUpRightFromSquareSmRegularIcon,\n bold: LabelPairedArrowUpRightFromSquareSmBoldIcon,\n fill: LabelPairedArrowUpRightFromSquareSmFillIcon,\n },\n // rotate-right (↻) → ArrowRotateRight\n \"rotate-right\": {\n regular: LabelPairedArrowRotateRightSmRegularIcon,\n bold: LabelPairedArrowRotateRightSmBoldIcon,\n fill: LabelPairedArrowRotateRightSmFillIcon,\n },\n // clock-rotate-left (↺) → ArrowRotateLeft\n \"clock-rotate-left\": {\n regular: LabelPairedArrowRotateLeftSmRegularIcon,\n bold: LabelPairedArrowRotateLeftSmBoldIcon,\n fill: LabelPairedArrowRotateLeftSmFillIcon,\n },\n // arrow-up-from-line → ArrowUpToLine (closest)\n \"arrow-up-from-line\": {\n regular: LabelPairedArrowUpToLineSmRegularIcon,\n bold: LabelPairedArrowUpToLineSmBoldIcon,\n fill: LabelPairedArrowUpToLineSmFillIcon,\n },\n // ── Chevrons ──────────────────────────────────────────────────────────────\n \"chevron-down\": {\n regular: LabelPairedChevronDownSmRegularIcon,\n bold: LabelPairedChevronDownSmBoldIcon,\n fill: LabelPairedChevronDownSmFillIcon,\n },\n \"chevron-left\": {\n regular: LabelPairedChevronLeftSmRegularIcon,\n bold: LabelPairedChevronLeftSmBoldIcon,\n fill: LabelPairedChevronLeftSmFillIcon,\n },\n \"chevron-right\": {\n regular: LabelPairedChevronRightSmRegularIcon,\n bold: LabelPairedChevronRightSmBoldIcon,\n fill: LabelPairedChevronRightSmFillIcon,\n },\n \"chevron-up\": {\n regular: LabelPairedChevronUpSmRegularIcon,\n bold: LabelPairedChevronUpSmBoldIcon,\n fill: LabelPairedChevronUpSmFillIcon,\n },\n // ── Bell ──────────────────────────────────────────────────────────────────\n \"bell\": {\n regular: LabelPairedBellSmRegularIcon,\n bold: LabelPairedBellSmBoldIcon,\n fill: LabelPairedBellSmFillIcon,\n },\n \"check\": {\n regular: LabelPairedCheckSmRegularIcon,\n bold: LabelPairedCheckSmBoldIcon,\n fill: LabelPairedCheckSmFillIcon,\n },\n // ── Charts ────────────────────────────────────────────────────────────────\n \"chart-bar\": {\n regular: LabelPairedChartMixedSmRegularIcon,\n bold: LabelPairedChartMixedSmBoldIcon,\n fill: LabelPairedChartMixedSmFillIcon,\n },\n \"chart-candlestick\": {\n regular: LabelPairedChartCandlestickSmRegularIcon,\n bold: LabelPairedChartCandlestickSmBoldIcon,\n fill: LabelPairedChartCandlestickSmFillIcon,\n },\n \"chart-line\": {\n regular: LabelPairedChartLineSmRegularIcon,\n bold: LabelPairedChartLineSmBoldIcon,\n fill: LabelPairedChartLineSmFillIcon,\n },\n \"chart-tradingview\": {\n regular: LabelPairedChartTradingviewSmRegularIcon,\n bold: LabelPairedChartTradingviewSmBoldIcon,\n fill: LabelPairedChartTradingviewSmFillIcon,\n },\n \"chart-trend-down\": {\n regular: LabelPairedChartTrendDownSmRegularIcon,\n bold: LabelPairedChartTrendDownSmBoldIcon,\n fill: LabelPairedChartTrendDownSmFillIcon,\n },\n \"chart-trend-still\": {\n regular: LabelPairedChartTrendSidewaySmRegularIcon,\n bold: LabelPairedChartTrendSidewaySmBoldIcon,\n fill: LabelPairedChartTrendSidewaySmFillIcon,\n },\n \"chart-trend-up\": {\n regular: LabelPairedChartTrendUpSmRegularIcon,\n bold: LabelPairedChartTrendUpSmBoldIcon,\n fill: LabelPairedChartTrendUpSmFillIcon,\n },\n // arrow-trend-* → same as chart-trend-*\n \"arrow-trend-down\": {\n regular: LabelPairedChartTrendDownSmRegularIcon,\n bold: LabelPairedChartTrendDownSmBoldIcon,\n fill: LabelPairedChartTrendDownSmFillIcon,\n },\n \"arrow-trend-up\": {\n regular: LabelPairedChartTrendUpSmRegularIcon,\n bold: LabelPairedChartTrendUpSmBoldIcon,\n fill: LabelPairedChartTrendUpSmFillIcon,\n },\n \"ohlc\": {\n regular: LabelPairedChartOhlcSmRegularIcon,\n bold: LabelPairedChartOhlcSmBoldIcon,\n fill: LabelPairedChartOhlcSmFillIcon,\n },\n \"chart-line-up-down-clock\": {\n regular: LabelPairedLightChartLineUpDownClockSmRegularIcon,\n bold: LabelPairedLightChartLineUpDownClockSmBoldIcon,\n fill: LabelPairedLightChartLineUpDownClockSmFillIcon,\n },\n // chart-line-clock — no direct quill equivalent; falls back to chart-line TODO: design team review\n \"chart-line-clock\": {\n regular: LabelPairedChartLineSmRegularIcon,\n bold: LabelPairedChartLineSmBoldIcon,\n fill: LabelPairedChartLineSmFillIcon,\n },\n // ── Circle variants ───────────────────────────────────────────────────────\n \"circle\": {\n regular: LabelPairedCircleSmRegularIcon,\n bold: LabelPairedCircleSmBoldIcon,\n fill: LabelPairedCircleSmFillIcon,\n },\n \"circle-check\": {\n regular: LabelPairedCircleCheckSmRegularIcon,\n bold: LabelPairedCircleCheckSmBoldIcon,\n fill: LabelPairedCircleCheckSmFillIcon,\n },\n \"circle-exclamation\": {\n regular: LabelPairedCircleExclamationSmRegularIcon,\n bold: LabelPairedCircleExclamationSmBoldIcon,\n fill: LabelPairedCircleExclamationSmFillIcon,\n },\n \"circle-info\": {\n regular: LabelPairedCircleInfoSmRegularIcon,\n bold: LabelPairedCircleInfoSmBoldIcon,\n fill: LabelPairedCircleInfoSmFillIcon,\n },\n \"circle-user-slash\": {\n regular: LabelPairedCircleUserSlashSmRegularIcon,\n bold: LabelPairedCircleUserSlashSmBoldIcon,\n fill: LabelPairedCircleUserSlashSmFillIcon,\n },\n // ── Copy / files ──────────────────────────────────────────────────────────\n \"copy\": {\n regular: LabelPairedCopySmRegularIcon,\n bold: LabelPairedCopySmBoldIcon,\n fill: LabelPairedCopySmFillIcon,\n },\n \"dollar-sign\": {\n regular: LabelPairedDollarSignSmRegularIcon,\n bold: LabelPairedDollarSignSmBoldIcon,\n fill: LabelPairedDollarSignSmFillIcon,\n },\n \"ellipsis\": {\n regular: LabelPairedEllipsisSmRegularIcon,\n bold: LabelPairedEllipsisSmBoldIcon,\n fill: LabelPairedEllipsisSmFillIcon,\n },\n \"envelope\": {\n regular: LabelPairedEnvelopeSmRegularIcon,\n bold: LabelPairedEnvelopeSmBoldIcon,\n fill: LabelPairedEnvelopeSmFillIcon,\n },\n // envelope-open — no direct Quill equivalent; falls back to Envelope TODO: design team review\n \"envelope-open\": {\n regular: LabelPairedEnvelopeSmRegularIcon,\n bold: LabelPairedEnvelopeSmBoldIcon,\n fill: LabelPairedEnvelopeSmFillIcon,\n },\n \"eye\": {\n regular: LabelPairedEyeSmRegularIcon,\n bold: LabelPairedEyeSmBoldIcon,\n fill: LabelPairedEyeSmFillIcon,\n },\n \"eye-slash\": {\n regular: LabelPairedEyeSlashSmRegularIcon,\n bold: LabelPairedEyeSlashSmBoldIcon,\n fill: LabelPairedEyeSlashSmFillIcon,\n },\n \"file-lines\": {\n regular: LabelPairedFileLinesSmRegularIcon,\n bold: LabelPairedFileLinesSmBoldIcon,\n fill: LabelPairedFileLinesSmFillIcon,\n },\n // file-xmark — no direct Quill equivalent; falls back to FileLines TODO: design team review\n \"file-xmark\": {\n regular: LabelPairedFileLinesSmRegularIcon,\n bold: LabelPairedFileLinesSmBoldIcon,\n fill: LabelPairedFileLinesSmFillIcon,\n },\n \"fingerprint\": {\n regular: LabelPairedFingerprintSmRegularIcon,\n bold: LabelPairedFingerprintSmBoldIcon,\n fill: LabelPairedFingerprintSmFillIcon,\n },\n \"gear\": {\n regular: LabelPairedGearSmRegularIcon,\n bold: LabelPairedGearSmBoldIcon,\n fill: LabelPairedGearSmFillIcon,\n },\n \"globe\": {\n regular: LabelPairedGlobeSmRegularIcon,\n bold: LabelPairedGlobeSmBoldIcon,\n fill: LabelPairedGlobeSmFillIcon,\n },\n \"grip-vertical\": {\n regular: LabelPairedGripDotsVerticalSmRegularIcon,\n bold: LabelPairedGripDotsVerticalSmBoldIcon,\n fill: LabelPairedGripDotsVerticalSmFillIcon,\n },\n // house → HouseBlank\n \"house\": {\n regular: LabelPairedHouseBlankSmRegularIcon,\n bold: LabelPairedHouseBlankSmBoldIcon,\n fill: LabelPairedHouseBlankSmFillIcon,\n },\n \"house-blank\": {\n regular: LabelPairedHouseBlankSmRegularIcon,\n bold: LabelPairedHouseBlankSmBoldIcon,\n fill: LabelPairedHouseBlankSmFillIcon,\n },\n \"image\": {\n regular: LabelPairedImageSmRegularIcon,\n bold: LabelPairedImageSmBoldIcon,\n fill: LabelPairedImageSmFillIcon,\n },\n // inbox — no direct Quill equivalent; falls back to ArrowDownToBracket TODO: design team review\n \"inbox\": {\n regular: LabelPairedArrowDownToBracketSmRegularIcon,\n bold: LabelPairedArrowDownToBracketSmBoldIcon,\n fill: LabelPairedArrowDownToBracketSmFillIcon,\n },\n // magnifying-glass → Search\n \"magnifying-glass\": {\n regular: LabelPairedSearchSmRegularIcon,\n bold: LabelPairedSearchSmBoldIcon,\n fill: LabelPairedSearchSmFillIcon,\n },\n \"minus\": {\n regular: LabelPairedMinusSmRegularIcon,\n bold: LabelPairedMinusSmBoldIcon,\n fill: LabelPairedMinusSmFillIcon,\n },\n \"moon\": {\n regular: LabelPairedMoonSmRegularIcon,\n bold: LabelPairedMoonSmBoldIcon,\n fill: LabelPairedMoonSmFillIcon,\n },\n \"phone\": {\n regular: LabelPairedPhoneSmRegularIcon,\n bold: LabelPairedPhoneSmBoldIcon,\n fill: LabelPairedPhoneSmFillIcon,\n },\n \"plus\": {\n regular: LabelPairedPlusSmRegularIcon,\n bold: LabelPairedPlusSmBoldIcon,\n fill: LabelPairedPlusSmFillIcon,\n },\n \"right-from-bracket\": {\n regular: LabelPairedRightFromBracketSmRegularIcon,\n bold: LabelPairedRightFromBracketSmBoldIcon,\n fill: LabelPairedRightFromBracketSmFillIcon,\n },\n \"sparkles\": {\n regular: LabelPairedSparklesSmRegularIcon,\n bold: LabelPairedSparklesSmBoldIcon,\n fill: LabelPairedSparklesSmFillIcon,\n },\n // spinner → Loader\n \"spinner\": {\n regular: LabelPairedLoaderSmRegularIcon,\n bold: LabelPairedLoaderSmBoldIcon,\n fill: LabelPairedLoaderSmFillIcon,\n },\n \"square\": {\n regular: LabelPairedSquareSmRegularIcon,\n bold: LabelPairedSquareSmBoldIcon,\n fill: LabelPairedSquareSmFillIcon,\n },\n \"square-check\": {\n regular: LabelPairedSquareCheckSmRegularIcon,\n bold: LabelPairedSquareCheckSmBoldIcon,\n fill: LabelPairedSquareCheckSmFillIcon,\n },\n \"square-minus\": {\n regular: LabelPairedSquareMinusSmRegularIcon,\n bold: LabelPairedSquareMinusSmBoldIcon,\n fill: LabelPairedSquareMinusSmFillIcon,\n },\n \"star\": {\n regular: LabelPairedStarSmRegularIcon,\n bold: LabelPairedStarSmBoldIcon,\n fill: LabelPairedStarSmFillIcon,\n },\n // sun → SunBright\n \"sun\": {\n regular: LabelPairedSunBrightSmRegularIcon,\n bold: LabelPairedSunBrightSmBoldIcon,\n fill: LabelPairedSunBrightSmFillIcon,\n },\n // table-cells-large → Grid2\n \"table-cells-large\": {\n regular: LabelPairedGrid2SmRegularIcon,\n bold: LabelPairedGrid2SmBoldIcon,\n fill: LabelPairedGrid2SmFillIcon,\n },\n // table-columns → ObjectsColumn\n \"table-columns\": {\n regular: LabelPairedObjectsColumnSmRegularIcon,\n bold: LabelPairedObjectsColumnSmBoldIcon,\n fill: LabelPairedObjectsColumnSmFillIcon,\n },\n \"trash\": {\n regular: LabelPairedTrashSmRegularIcon,\n bold: LabelPairedTrashSmBoldIcon,\n fill: LabelPairedTrashSmFillIcon,\n },\n // trash-can → same as trash\n \"trash-can\": {\n regular: LabelPairedTrashSmRegularIcon,\n bold: LabelPairedTrashSmBoldIcon,\n fill: LabelPairedTrashSmFillIcon,\n },\n \"triangle-exclamation\": {\n regular: LabelPairedTriangleExclamationSmRegularIcon,\n bold: LabelPairedTriangleExclamationSmBoldIcon,\n fill: LabelPairedTriangleExclamationSmFillIcon,\n },\n \"user\": {\n regular: LabelPairedUserSmRegularIcon,\n bold: LabelPairedUserSmBoldIcon,\n fill: LabelPairedUserSmFillIcon,\n },\n \"wallet\": {\n regular: LabelPairedWalletSmRegularIcon,\n bold: LabelPairedWalletSmBoldIcon,\n fill: LabelPairedWalletSmFillIcon,\n },\n \"xmark\": {\n regular: LabelPairedXmarkSmRegularIcon,\n bold: LabelPairedXmarkSmBoldIcon,\n fill: LabelPairedXmarkSmFillIcon,\n },\n // crosshairs-slash → LocationCrosshairsSlash\n \"crosshairs-slash\": {\n regular: LabelPairedLocationCrosshairsSlashSmRegularIcon,\n bold: LabelPairedLocationCrosshairsSlashSmBoldIcon,\n fill: LabelPairedLocationCrosshairsSlashSmFillIcon,\n },\n // ── Layout ────────────────────────────────────────────────────────────────\n // book-open — no direct Quill equivalent; falls back to FolderOpen TODO: design team review\n \"book-open\": {\n regular: LabelPairedFolderOpenSmRegularIcon,\n bold: LabelPairedFolderOpenSmBoldIcon,\n fill: LabelPairedFolderOpenSmFillIcon,\n },\n // calculator — no direct Quill equivalent; falls back to Gear TODO: design team review\n \"calculator\": {\n regular: LabelPairedGearSmRegularIcon,\n bold: LabelPairedGearSmBoldIcon,\n fill: LabelPairedGearSmFillIcon,\n },\n // ── Deriv icons ───────────────────────────────────────────────────────────\n // deriv logo — DerivBrandLogo has Regular + Fill only; Bold falls back to Fill\n \"deriv\": {\n regular: LabelPairedDerivBrandLogoSmRegularIcon,\n bold: LabelPairedDerivSmIcon,\n fill: LabelPairedDerivBrandLogoSmFillIcon,\n },\n \"book-circle-question\": {\n regular: LabelPairedBookCircleQuestionSmRegularIcon,\n bold: LabelPairedBookCircleQuestionSmBoldIcon,\n fill: LabelPairedBookCircleQuestionSmFillIcon,\n },\n // book-open-cover-circle-question — falls back to BookCircleQuestion TODO: design team review\n \"book-open-cover-circle-question\": {\n regular: LabelPairedBookCircleQuestionSmRegularIcon,\n bold: LabelPairedBookCircleQuestionSmBoldIcon,\n fill: LabelPairedBookCircleQuestionSmFillIcon,\n },\n \"box-archive-circle-arrow-down\": {\n regular: LabelPairedBoxArchiveCircleArrowDownSmRegularIcon,\n bold: LabelPairedBoxArchiveCircleArrowDownSmBoldIcon,\n fill: LabelPairedBoxArchiveCircleArrowDownSmFillIcon,\n },\n \"box-archive-circle-arrow-up\": {\n regular: LabelPairedBoxArchiveCircleArrowUpSmRegularIcon,\n bold: LabelPairedBoxArchiveCircleArrowUpSmBoldIcon,\n fill: LabelPairedBoxArchiveCircleArrowUpSmFillIcon,\n },\n \"deal-cancellation\": {\n regular: LabelPairedDealCancellationSmRegularIcon,\n bold: LabelPairedDealCancellationSmBoldIcon,\n fill: LabelPairedDealCancellationSmFillIcon,\n },\n \"deal-protection\": {\n regular: LabelPairedDealProtectionSmRegularIcon,\n bold: LabelPairedDealProtectionSmBoldIcon,\n fill: LabelPairedDealProtectionSmFillIcon,\n },\n \"deriv-p2p\": {\n regular: LabelPairedDerivP2pSmRegularIcon,\n bold: LabelPairedDerivP2pSmBoldIcon,\n fill: LabelPairedDerivP2pSmFillIcon,\n },\n \"fiat-offramp\": {\n regular: LabelPairedFiatOfframpSmRegularIcon,\n bold: LabelPairedFiatOfframpSmBoldIcon,\n fill: LabelPairedFiatOfframpSmFillIcon,\n },\n \"fiat-onramp\": {\n regular: LabelPairedFiatOnrampSmRegularIcon,\n bold: LabelPairedFiatOnrampSmBoldIcon,\n fill: LabelPairedFiatOnrampSmFillIcon,\n },\n \"field-password\": {\n regular: LabelPairedFieldPasswordSmRegularIcon,\n bold: LabelPairedFieldPasswordSmBoldIcon,\n fill: LabelPairedFieldPasswordSmFillIcon,\n },\n \"hand-gesture-swipe-left-right\": {\n regular: LabelPairedHandGestureSwipeLeftRightSmRegularIcon,\n bold: LabelPairedHandGestureSwipeLeftRightSmBoldIcon,\n fill: LabelPairedHandGestureSwipeLeftRightSmFillIcon,\n },\n \"hand-gesture-tap-left\": {\n regular: LabelPairedHandGestureTapLeftSmRegularIcon,\n bold: LabelPairedHandGestureTapLeftSmBoldIcon,\n fill: LabelPairedHandGestureTapLeftSmFillIcon,\n },\n \"hand-gesture-tap-right\": {\n regular: LabelPairedHandGestureTapRightSmRegularIcon,\n bold: LabelPairedHandGestureTapRightSmBoldIcon,\n fill: LabelPairedHandGestureTapRightSmFillIcon,\n },\n \"horizontal-rule-dashed\": {\n regular: LabelPairedHorizontalRuleDashedSmRegularIcon,\n bold: LabelPairedHorizontalRuleDashedSmBoldIcon,\n fill: LabelPairedHorizontalRuleDashedSmFillIcon,\n },\n \"lock-pattern\": {\n regular: LabelPairedLockPatternSmRegularIcon,\n bold: LabelPairedLockPatternSmBoldIcon,\n fill: LabelPairedLockPatternSmFillIcon,\n },\n \"mobile-notch-rotate\": {\n regular: LabelPairedMobileNotchRotateSmRegularIcon,\n bold: LabelPairedMobileNotchRotateSmBoldIcon,\n fill: LabelPairedMobileNotchRotateSmFillIcon,\n },\n \"page-circle-arrow-right\": {\n regular: LabelPairedPageCircleArrowRightSmRegularIcon,\n bold: LabelPairedPageCircleArrowRightSmBoldIcon,\n fill: LabelPairedPageCircleArrowRightSmFillIcon,\n },\n \"passkey\": {\n regular: LabelPairedPasskeySmRegularIcon,\n bold: LabelPairedPasskeySmBoldIcon,\n fill: LabelPairedPasskeySmFillIcon,\n },\n \"playback-speed\": {\n regular: LabelPairedPlaybackSpeedSmRegularIcon,\n bold: LabelPairedPlaybackSpeedSmBoldIcon,\n fill: LabelPairedPlaybackSpeedSmFillIcon,\n },\n \"puzzles-piece-two\": {\n regular: LabelPairedPuzzlePieceTwoSmRegularIcon,\n bold: LabelPairedPuzzlePieceTwoSmBoldIcon,\n fill: LabelPairedPuzzlePieceTwoSmFillIcon,\n },\n // options — Quill has no Md Bold variant; uses Fill for bold TODO: design team review\n \"options\": {\n regular: LabelPairedOptionsSmRegularIcon,\n bold: LabelPairedOptionsSmFillIcon,\n fill: LabelPairedOptionsSmFillIcon,\n },\n // quill — no dedicated Quill equivalent; falls back to Pen TODO: design team review\n \"quill\": {\n regular: LabelPairedPenSmRegularIcon,\n bold: LabelPairedPenSmBoldIcon,\n fill: LabelPairedPenSmFillIcon,\n },\n \"rotate-device\": {\n regular: LabelPairedRotateDeviceSmRegularIcon,\n bold: LabelPairedRotateDeviceSmBoldIcon,\n fill: LabelPairedRotateDeviceSmFillIcon,\n },\n \"stop-loss\": {\n regular: LabelPairedStopLossSmRegularIcon,\n bold: LabelPairedStopLossSmBoldIcon,\n fill: LabelPairedStopLossSmFillIcon,\n },\n \"take-profit\": {\n regular: LabelPairedTakeProfitSmRegularIcon,\n bold: LabelPairedTakeProfitSmBoldIcon,\n fill: LabelPairedTakeProfitSmFillIcon,\n },\n \"user-tie-circle-dollar\": {\n regular: LabelPairedLightUserTieCircleDollarSmRegularIcon,\n bold: LabelPairedLightUserTieCircleDollarSmBoldIcon,\n fill: LabelPairedLightUserTieCircleDollarSmFillIcon,\n },\n \"wallet-circle-minus\": {\n regular: LabelPairedWalletCircleMinusSmRegularIcon,\n bold: LabelPairedWalletCircleMinusSmBoldIcon,\n fill: LabelPairedWalletCircleMinusSmFillIcon,\n },\n \"wallet-circle-plus\": {\n regular: LabelPairedWalletCirclePlusSmRegularIcon,\n bold: LabelPairedWalletCirclePlusSmBoldIcon,\n fill: LabelPairedWalletCirclePlusSmFillIcon,\n },\n \"wallet-signal\": {\n regular: LabelPairedWalletSignalSmRegularIcon,\n bold: LabelPairedWalletSignalSmBoldIcon,\n fill: LabelPairedWalletSignalSmFillIcon,\n },\n // ── Custom Deriv kit icons — pending Quill equivalents TODO: design team review ──\n // These were FA Pro kit (a9f9eb613f / 394c25e5aa) custom uploads that don't\n // have a matching LabelPaired icon. Mapped to nearest visual substitute.\n \"user-circle-arrow-right\": {\n regular: LabelPairedCircleUserSmRegularIcon,\n bold: LabelPairedCircleUserSmBoldIcon,\n fill: LabelPairedCircleUserSmFillIcon,\n },\n \"user-circle-arrow-up\": {\n regular: LabelPairedCircleUserSmRegularIcon,\n bold: LabelPairedCircleUserSmBoldIcon,\n fill: LabelPairedCircleUserSmFillIcon,\n },\n \"calendar-circle-arrow-left\": {\n regular: LabelPairedCalendarSmRegularIcon,\n bold: LabelPairedCalendarSmBoldIcon,\n fill: LabelPairedCalendarSmFillIcon,\n },\n \"calendar-circle-arrow-right\": {\n regular: LabelPairedCalendarSmRegularIcon,\n bold: LabelPairedCalendarSmBoldIcon,\n fill: LabelPairedCalendarSmFillIcon,\n },\n \"file-lines-magnifying-glass\": {\n regular: LabelPairedFileLinesSmRegularIcon,\n bold: LabelPairedFileLinesSmBoldIcon,\n fill: LabelPairedFileLinesSmFillIcon,\n },\n \"handshake-lock\": {\n regular: LabelPairedHandshakeSmRegularIcon,\n bold: LabelPairedHandshakeSmBoldIcon,\n fill: LabelPairedHandshakeSmFillIcon,\n },\n \"handshake-shield\": {\n regular: LabelPairedHandshakeSmRegularIcon,\n bold: LabelPairedHandshakeSmBoldIcon,\n fill: LabelPairedHandshakeSmFillIcon,\n },\n \"memo-shield\": {\n regular: LabelPairedMemoPadSmRegularIcon,\n bold: LabelPairedMemoPadSmBoldIcon,\n fill: LabelPairedMemoPadSmFillIcon,\n },\n \"pen-field-circle-xmark\": {\n regular: LabelPairedPenSmRegularIcon,\n bold: LabelPairedPenSmBoldIcon,\n fill: LabelPairedPenSmFillIcon,\n },\n \"pen-field-lock\": {\n regular: LabelPairedPenSmRegularIcon,\n bold: LabelPairedPenSmBoldIcon,\n fill: LabelPairedPenSmFillIcon,\n },\n \"pen-field-slash\": {\n regular: LabelPairedPenSmRegularIcon,\n bold: LabelPairedPenSmBoldIcon,\n fill: LabelPairedPenSmFillIcon,\n },\n \"rectangle-history-circle-dollar\": {\n regular: LabelPairedCircleDollarSmRegularIcon,\n bold: LabelPairedCircleDollarSmBoldIcon,\n fill: LabelPairedCircleDollarSmFillIcon,\n },\n \"shield-circle-check\": {\n regular: LabelPairedShieldCheckSmRegularIcon,\n bold: LabelPairedShieldCheckSmBoldIcon,\n fill: LabelPairedShieldCheckSmFillIcon,\n },\n \"shield-halved-circle-minus\": {\n regular: LabelPairedShieldCheckSmRegularIcon,\n bold: LabelPairedShieldCheckSmBoldIcon,\n fill: LabelPairedShieldCheckSmFillIcon,\n },\n \"shield-halved-lock\": {\n regular: LabelPairedShieldCheckSmRegularIcon,\n bold: LabelPairedShieldCheckSmBoldIcon,\n fill: LabelPairedShieldCheckSmFillIcon,\n },\n \"shield-lock\": {\n regular: LabelPairedShieldCheckSmRegularIcon,\n bold: LabelPairedShieldCheckSmBoldIcon,\n fill: LabelPairedShieldCheckSmFillIcon,\n },\n \"user-circle-dollar\": {\n regular: LabelPairedCircleDollarSmRegularIcon,\n bold: LabelPairedCircleDollarSmBoldIcon,\n fill: LabelPairedCircleDollarSmFillIcon,\n },\n \"user-large-circle-dollar\": {\n regular: LabelPairedCircleDollarSmRegularIcon,\n bold: LabelPairedCircleDollarSmBoldIcon,\n fill: LabelPairedCircleDollarSmFillIcon,\n },\n \"users-line-circle-dollar\": {\n regular: LabelPairedCircleDollarSmRegularIcon,\n bold: LabelPairedCircleDollarSmBoldIcon,\n fill: LabelPairedCircleDollarSmFillIcon,\n },\n \"users-rectangle-circle-dollar\": {\n regular: LabelPairedCircleDollarSmRegularIcon,\n bold: LabelPairedCircleDollarSmBoldIcon,\n fill: LabelPairedCircleDollarSmFillIcon,\n },\n}\n\nconst iconMapLg: Partial<Record<keyof typeof _iconKeys, WeightTuple>> = {\n // ── Arrows / navigation ───────────────────────────────────────────────────\n \"arrow-down-to-line\": {\n regular: LabelPairedArrowDownToLineLgRegularIcon,\n bold: LabelPairedArrowDownToLineLgBoldIcon,\n fill: LabelPairedArrowDownToLineLgFillIcon,\n },\n \"arrow-left\": {\n regular: LabelPairedArrowLeftLgRegularIcon,\n bold: LabelPairedArrowLeftLgBoldIcon,\n fill: LabelPairedArrowLeftLgFillIcon,\n },\n \"arrow-right\": {\n regular: LabelPairedArrowRightLgRegularIcon,\n bold: LabelPairedArrowRightLgBoldIcon,\n fill: LabelPairedArrowRightLgFillIcon,\n },\n \"arrow-right-arrow-left\": {\n regular: LabelPairedArrowRightArrowLeftLgRegularIcon,\n bold: LabelPairedArrowRightArrowLeftLgBoldIcon,\n fill: LabelPairedArrowRightArrowLeftLgFillIcon,\n },\n // arrows-left-right (↔) — closest visual is ArrowRightArrowLeft\n \"arrows-left-right\": {\n regular: LabelPairedArrowRightArrowLeftLgRegularIcon,\n bold: LabelPairedArrowRightArrowLeftLgBoldIcon,\n fill: LabelPairedArrowRightArrowLeftLgFillIcon,\n },\n \"arrow-up-right\": {\n regular: LabelPairedArrowUpRightLgRegularIcon,\n bold: LabelPairedArrowUpRightLgBoldIcon,\n fill: LabelPairedArrowUpRightLgFillIcon,\n },\n \"arrow-up-right-from-square\": {\n regular: LabelPairedArrowUpRightFromSquareLgRegularIcon,\n bold: LabelPairedArrowUpRightFromSquareLgBoldIcon,\n fill: LabelPairedArrowUpRightFromSquareLgFillIcon,\n },\n // rotate-right (↻) → ArrowRotateRight\n \"rotate-right\": {\n regular: LabelPairedArrowRotateRightLgRegularIcon,\n bold: LabelPairedArrowRotateRightLgBoldIcon,\n fill: LabelPairedArrowRotateRightLgFillIcon,\n },\n // clock-rotate-left (↺) → ArrowRotateLeft\n \"clock-rotate-left\": {\n regular: LabelPairedArrowRotateLeftLgRegularIcon,\n bold: LabelPairedArrowRotateLeftLgBoldIcon,\n fill: LabelPairedArrowRotateLeftLgFillIcon,\n },\n // arrow-up-from-line → ArrowUpToLine (closest)\n \"arrow-up-from-line\": {\n regular: LabelPairedArrowUpToLineLgRegularIcon,\n bold: LabelPairedArrowUpToLineLgBoldIcon,\n fill: LabelPairedArrowUpToLineLgFillIcon,\n },\n // ── Chevrons ──────────────────────────────────────────────────────────────\n \"chevron-down\": {\n regular: LabelPairedChevronDownLgRegularIcon,\n bold: LabelPairedChevronDownLgBoldIcon,\n fill: LabelPairedChevronDownLgFillIcon,\n },\n \"chevron-left\": {\n regular: LabelPairedChevronLeftLgRegularIcon,\n bold: LabelPairedChevronLeftLgBoldIcon,\n fill: LabelPairedChevronLeftLgFillIcon,\n },\n \"chevron-right\": {\n regular: LabelPairedChevronRightLgRegularIcon,\n bold: LabelPairedChevronRightLgBoldIcon,\n fill: LabelPairedChevronRightLgFillIcon,\n },\n \"chevron-up\": {\n regular: LabelPairedChevronUpLgRegularIcon,\n bold: LabelPairedChevronUpLgBoldIcon,\n fill: LabelPairedChevronUpLgFillIcon,\n },\n // ── Bell ──────────────────────────────────────────────────────────────────\n \"bell\": {\n regular: LabelPairedBellLgRegularIcon,\n bold: LabelPairedBellLgBoldIcon,\n fill: LabelPairedBellLgFillIcon,\n },\n \"check\": {\n regular: LabelPairedCheckLgRegularIcon,\n bold: LabelPairedCheckLgBoldIcon,\n fill: LabelPairedCheckLgFillIcon,\n },\n // ── Charts ────────────────────────────────────────────────────────────────\n \"chart-bar\": {\n regular: LabelPairedChartMixedLgRegularIcon,\n bold: LabelPairedChartMixedLgBoldIcon,\n fill: LabelPairedChartMixedLgFillIcon,\n },\n \"chart-candlestick\": {\n regular: LabelPairedChartCandlestickLgRegularIcon,\n bold: LabelPairedChartCandlestickLgBoldIcon,\n fill: LabelPairedChartCandlestickLgFillIcon,\n },\n \"chart-line\": {\n regular: LabelPairedChartLineLgRegularIcon,\n bold: LabelPairedChartLineLgBoldIcon,\n fill: LabelPairedChartLineLgFillIcon,\n },\n \"chart-tradingview\": {\n regular: LabelPairedChartTradingviewLgRegularIcon,\n bold: LabelPairedChartTradingviewLgBoldIcon,\n fill: LabelPairedChartTradingviewLgFillIcon,\n },\n \"chart-trend-down\": {\n regular: LabelPairedChartTrendDownLgRegularIcon,\n bold: LabelPairedChartTrendDownLgBoldIcon,\n fill: LabelPairedChartTrendDownLgFillIcon,\n },\n \"chart-trend-still\": {\n regular: LabelPairedChartTrendSidewayLgRegularIcon,\n bold: LabelPairedChartTrendSidewayLgBoldIcon,\n fill: LabelPairedChartTrendSidewayLgFillIcon,\n },\n \"chart-trend-up\": {\n regular: LabelPairedChartTrendUpLgRegularIcon,\n bold: LabelPairedChartTrendUpLgBoldIcon,\n fill: LabelPairedChartTrendUpLgFillIcon,\n },\n // arrow-trend-* → same as chart-trend-*\n \"arrow-trend-down\": {\n regular: LabelPairedChartTrendDownLgRegularIcon,\n bold: LabelPairedChartTrendDownLgBoldIcon,\n fill: LabelPairedChartTrendDownLgFillIcon,\n },\n \"arrow-trend-up\": {\n regular: LabelPairedChartTrendUpLgRegularIcon,\n bold: LabelPairedChartTrendUpLgBoldIcon,\n fill: LabelPairedChartTrendUpLgFillIcon,\n },\n \"ohlc\": {\n regular: LabelPairedChartOhlcLgRegularIcon,\n bold: LabelPairedChartOhlcLgBoldIcon,\n fill: LabelPairedChartOhlcLgFillIcon,\n },\n \"chart-line-up-down-clock\": {\n regular: LabelPairedLightChartLineUpDownClockLgRegularIcon,\n bold: LabelPairedLightChartLineUpDownClockLgBoldIcon,\n fill: LabelPairedLightChartLineUpDownClockLgFillIcon,\n },\n // chart-line-clock — no direct quill equivalent; falls back to chart-line TODO: design team review\n \"chart-line-clock\": {\n regular: LabelPairedChartLineLgRegularIcon,\n bold: LabelPairedChartLineLgBoldIcon,\n fill: LabelPairedChartLineLgFillIcon,\n },\n // ── Circle variants ───────────────────────────────────────────────────────\n \"circle\": {\n regular: LabelPairedCircleLgRegularIcon,\n bold: LabelPairedCircleLgBoldIcon,\n fill: LabelPairedCircleLgFillIcon,\n },\n \"circle-check\": {\n regular: LabelPairedCircleCheckLgRegularIcon,\n bold: LabelPairedCircleCheckLgBoldIcon,\n fill: LabelPairedCircleCheckLgFillIcon,\n },\n \"circle-exclamation\": {\n regular: LabelPairedCircleExclamationLgRegularIcon,\n bold: LabelPairedCircleExclamationLgBoldIcon,\n fill: LabelPairedCircleExclamationLgFillIcon,\n },\n \"circle-info\": {\n regular: LabelPairedCircleInfoLgRegularIcon,\n bold: LabelPairedCircleInfoLgBoldIcon,\n fill: LabelPairedCircleInfoLgFillIcon,\n },\n \"circle-user-slash\": {\n regular: LabelPairedCircleUserSlashLgRegularIcon,\n bold: LabelPairedCircleUserSlashLgBoldIcon,\n fill: LabelPairedCircleUserSlashLgFillIcon,\n },\n // ── Copy / files ──────────────────────────────────────────────────────────\n \"copy\": {\n regular: LabelPairedCopyLgRegularIcon,\n bold: LabelPairedCopyLgBoldIcon,\n fill: LabelPairedCopyLgFillIcon,\n },\n \"dollar-sign\": {\n regular: LabelPairedDollarSignLgRegularIcon,\n bold: LabelPairedDollarSignLgBoldIcon,\n fill: LabelPairedDollarSignLgFillIcon,\n },\n \"ellipsis\": {\n regular: LabelPairedEllipsisLgRegularIcon,\n bold: LabelPairedEllipsisLgBoldIcon,\n fill: LabelPairedEllipsisLgFillIcon,\n },\n \"envelope\": {\n regular: LabelPairedEnvelopeLgRegularIcon,\n bold: LabelPairedEnvelopeLgBoldIcon,\n fill: LabelPairedEnvelopeLgFillIcon,\n },\n // envelope-open — no direct Quill equivalent; falls back to Envelope TODO: design team review\n \"envelope-open\": {\n regular: LabelPairedEnvelopeLgRegularIcon,\n bold: LabelPairedEnvelopeLgBoldIcon,\n fill: LabelPairedEnvelopeLgFillIcon,\n },\n \"eye\": {\n regular: LabelPairedEyeLgRegularIcon,\n bold: LabelPairedEyeLgBoldIcon,\n fill: LabelPairedEyeLgFillIcon,\n },\n \"eye-slash\": {\n regular: LabelPairedEyeSlashLgRegularIcon,\n bold: LabelPairedEyeSlashLgBoldIcon,\n fill: LabelPairedEyeSlashLgFillIcon,\n },\n \"file-lines\": {\n regular: LabelPairedFileLinesLgRegularIcon,\n bold: LabelPairedFileLinesLgBoldIcon,\n fill: LabelPairedFileLinesLgFillIcon,\n },\n // file-xmark — no direct Quill equivalent; falls back to FileLines TODO: design team review\n \"file-xmark\": {\n regular: LabelPairedFileLinesLgRegularIcon,\n bold: LabelPairedFileLinesLgBoldIcon,\n fill: LabelPairedFileLinesLgFillIcon,\n },\n \"fingerprint\": {\n regular: LabelPairedFingerprintLgRegularIcon,\n bold: LabelPairedFingerprintLgBoldIcon,\n fill: LabelPairedFingerprintLgFillIcon,\n },\n \"gear\": {\n regular: LabelPairedGearLgRegularIcon,\n bold: LabelPairedGearLgBoldIcon,\n fill: LabelPairedGearLgFillIcon,\n },\n \"globe\": {\n regular: LabelPairedGlobeLgRegularIcon,\n bold: LabelPairedGlobeLgBoldIcon,\n fill: LabelPairedGlobeLgFillIcon,\n },\n \"grip-vertical\": {\n regular: LabelPairedGripDotsVerticalLgRegularIcon,\n bold: LabelPairedGripDotsVerticalLgBoldIcon,\n fill: LabelPairedGripDotsVerticalLgFillIcon,\n },\n // house → HouseBlank\n \"house\": {\n regular: LabelPairedHouseBlankLgRegularIcon,\n bold: LabelPairedHouseBlankLgBoldIcon,\n fill: LabelPairedHouseBlankLgFillIcon,\n },\n \"house-blank\": {\n regular: LabelPairedHouseBlankLgRegularIcon,\n bold: LabelPairedHouseBlankLgBoldIcon,\n fill: LabelPairedHouseBlankLgFillIcon,\n },\n \"image\": {\n regular: LabelPairedImageLgRegularIcon,\n bold: LabelPairedImageLgBoldIcon,\n fill: LabelPairedImageLgFillIcon,\n },\n // inbox — no direct Quill equivalent; falls back to ArrowDownToBracket TODO: design team review\n \"inbox\": {\n regular: LabelPairedArrowDownToBracketLgRegularIcon,\n bold: LabelPairedArrowDownToBracketLgBoldIcon,\n fill: LabelPairedArrowDownToBracketLgFillIcon,\n },\n // magnifying-glass → Search\n \"magnifying-glass\": {\n regular: LabelPairedSearchLgRegularIcon,\n bold: LabelPairedSearchLgBoldIcon,\n fill: LabelPairedSearchLgFillIcon,\n },\n \"minus\": {\n regular: LabelPairedMinusLgRegularIcon,\n bold: LabelPairedMinusLgBoldIcon,\n fill: LabelPairedMinusLgFillIcon,\n },\n \"moon\": {\n regular: LabelPairedMoonLgRegularIcon,\n bold: LabelPairedMoonLgBoldIcon,\n fill: LabelPairedMoonLgFillIcon,\n },\n \"phone\": {\n regular: LabelPairedPhoneLgRegularIcon,\n bold: LabelPairedPhoneLgBoldIcon,\n fill: LabelPairedPhoneLgFillIcon,\n },\n \"plus\": {\n regular: LabelPairedPlusLgRegularIcon,\n bold: LabelPairedPlusLgBoldIcon,\n fill: LabelPairedPlusLgFillIcon,\n },\n \"right-from-bracket\": {\n regular: LabelPairedRightFromBracketLgRegularIcon,\n bold: LabelPairedRightFromBracketLgBoldIcon,\n fill: LabelPairedRightFromBracketLgFillIcon,\n },\n \"sparkles\": {\n regular: LabelPairedSparklesLgRegularIcon,\n bold: LabelPairedSparklesLgBoldIcon,\n fill: LabelPairedSparklesLgFillIcon,\n },\n // spinner → Loader\n \"spinner\": {\n regular: LabelPairedLoaderLgRegularIcon,\n bold: LabelPairedLoaderLgBoldIcon,\n fill: LabelPairedLoaderLgFillIcon,\n },\n \"square\": {\n regular: LabelPairedSquareLgRegularIcon,\n bold: LabelPairedSquareLgBoldIcon,\n fill: LabelPairedSquareLgFillIcon,\n },\n \"square-check\": {\n regular: LabelPairedSquareCheckLgRegularIcon,\n bold: LabelPairedSquareCheckLgBoldIcon,\n fill: LabelPairedSquareCheckLgFillIcon,\n },\n \"square-minus\": {\n regular: LabelPairedSquareMinusLgRegularIcon,\n bold: LabelPairedSquareMinusLgBoldIcon,\n fill: LabelPairedSquareMinusLgFillIcon,\n },\n \"star\": {\n regular: LabelPairedStarLgRegularIcon,\n bold: LabelPairedStarLgBoldIcon,\n fill: LabelPairedStarLgFillIcon,\n },\n // sun → SunBright\n \"sun\": {\n regular: LabelPairedSunBrightLgRegularIcon,\n bold: LabelPairedSunBrightLgBoldIcon,\n fill: LabelPairedSunBrightLgFillIcon,\n },\n // table-cells-large → Grid2\n \"table-cells-large\": {\n regular: LabelPairedGrid2LgRegularIcon,\n bold: LabelPairedGrid2LgBoldIcon,\n fill: LabelPairedGrid2LgFillIcon,\n },\n // table-columns → ObjectsColumn\n \"table-columns\": {\n regular: LabelPairedObjectsColumnLgRegularIcon,\n bold: LabelPairedObjectsColumnLgBoldIcon,\n fill: LabelPairedObjectsColumnLgFillIcon,\n },\n \"trash\": {\n regular: LabelPairedTrashLgRegularIcon,\n bold: LabelPairedTrashLgBoldIcon,\n fill: LabelPairedTrashLgFillIcon,\n },\n // trash-can → same as trash\n \"trash-can\": {\n regular: LabelPairedTrashLgRegularIcon,\n bold: LabelPairedTrashLgBoldIcon,\n fill: LabelPairedTrashLgFillIcon,\n },\n \"triangle-exclamation\": {\n regular: LabelPairedTriangleExclamationLgRegularIcon,\n bold: LabelPairedTriangleExclamationLgBoldIcon,\n fill: LabelPairedTriangleExclamationLgFillIcon,\n },\n \"user\": {\n regular: LabelPairedUserLgRegularIcon,\n bold: LabelPairedUserLgBoldIcon,\n fill: LabelPairedUserLgFillIcon,\n },\n \"wallet\": {\n regular: LabelPairedWalletLgRegularIcon,\n bold: LabelPairedWalletLgBoldIcon,\n fill: LabelPairedWalletLgFillIcon,\n },\n \"xmark\": {\n regular: LabelPairedXmarkLgRegularIcon,\n bold: LabelPairedXmarkLgBoldIcon,\n fill: LabelPairedXmarkLgFillIcon,\n },\n // crosshairs-slash → LocationCrosshairsSlash\n \"crosshairs-slash\": {\n regular: LabelPairedLocationCrosshairsSlashLgRegularIcon,\n bold: LabelPairedLocationCrosshairsSlashLgBoldIcon,\n fill: LabelPairedLocationCrosshairsSlashLgFillIcon,\n },\n // ── Layout ────────────────────────────────────────────────────────────────\n // book-open — no direct Quill equivalent; falls back to FolderOpen TODO: design team review\n \"book-open\": {\n regular: LabelPairedFolderOpenLgRegularIcon,\n bold: LabelPairedFolderOpenLgBoldIcon,\n fill: LabelPairedFolderOpenLgFillIcon,\n },\n // calculator — no direct Quill equivalent; falls back to Gear TODO: design team review\n \"calculator\": {\n regular: LabelPairedGearLgRegularIcon,\n bold: LabelPairedGearLgBoldIcon,\n fill: LabelPairedGearLgFillIcon,\n },\n // ── Deriv icons ───────────────────────────────────────────────────────────\n // deriv logo — DerivBrandLogo has Regular + Fill only; Bold falls back to Fill\n \"deriv\": {\n regular: LabelPairedDerivBrandLogoLgRegularIcon,\n bold: LabelPairedDerivLgIcon,\n fill: LabelPairedDerivBrandLogoLgFillIcon,\n },\n \"book-circle-question\": {\n regular: LabelPairedBookCircleQuestionLgRegularIcon,\n bold: LabelPairedBookCircleQuestionLgBoldIcon,\n fill: LabelPairedBookCircleQuestionLgFillIcon,\n },\n // book-open-cover-circle-question — falls back to BookCircleQuestion TODO: design team review\n \"book-open-cover-circle-question\": {\n regular: LabelPairedBookCircleQuestionLgRegularIcon,\n bold: LabelPairedBookCircleQuestionLgBoldIcon,\n fill: LabelPairedBookCircleQuestionLgFillIcon,\n },\n \"box-archive-circle-arrow-down\": {\n regular: LabelPairedBoxArchiveCircleArrowDownLgRegularIcon,\n bold: LabelPairedBoxArchiveCircleArrowDownLgBoldIcon,\n fill: LabelPairedBoxArchiveCircleArrowDownLgFillIcon,\n },\n \"box-archive-circle-arrow-up\": {\n regular: LabelPairedBoxArchiveCircleArrowUpLgRegularIcon,\n bold: LabelPairedBoxArchiveCircleArrowUpLgBoldIcon,\n fill: LabelPairedBoxArchiveCircleArrowUpLgFillIcon,\n },\n \"deal-cancellation\": {\n regular: LabelPairedDealCancellationLgRegularIcon,\n bold: LabelPairedDealCancellationLgBoldIcon,\n fill: LabelPairedDealCancellationLgFillIcon,\n },\n \"deal-protection\": {\n regular: LabelPairedDealProtectionLgRegularIcon,\n bold: LabelPairedDealProtectionLgBoldIcon,\n fill: LabelPairedDealProtectionLgFillIcon,\n },\n \"deriv-p2p\": {\n regular: LabelPairedDerivP2pLgRegularIcon,\n bold: LabelPairedDerivP2pLgBoldIcon,\n fill: LabelPairedDerivP2pLgFillIcon,\n },\n \"fiat-offramp\": {\n regular: LabelPairedFiatOfframpLgRegularIcon,\n bold: LabelPairedFiatOfframpLgBoldIcon,\n fill: LabelPairedFiatOfframpLgFillIcon,\n },\n \"fiat-onramp\": {\n regular: LabelPairedFiatOnrampLgRegularIcon,\n bold: LabelPairedFiatOnrampLgBoldIcon,\n fill: LabelPairedFiatOnrampLgFillIcon,\n },\n \"field-password\": {\n regular: LabelPairedFieldPasswordLgRegularIcon,\n bold: LabelPairedFieldPasswordLgBoldIcon,\n fill: LabelPairedFieldPasswordLgFillIcon,\n },\n \"hand-gesture-swipe-left-right\": {\n regular: LabelPairedHandGestureSwipeLeftRightLgRegularIcon,\n bold: LabelPairedHandGestureSwipeLeftRightLgBoldIcon,\n fill: LabelPairedHandGestureSwipeLeftRightLgFillIcon,\n },\n \"hand-gesture-tap-left\": {\n regular: LabelPairedHandGestureTapLeftLgRegularIcon,\n bold: LabelPairedHandGestureTapLeftLgBoldIcon,\n fill: LabelPairedHandGestureTapLeftLgFillIcon,\n },\n \"hand-gesture-tap-right\": {\n regular: LabelPairedHandGestureTapRightLgRegularIcon,\n bold: LabelPairedHandGestureTapRightLgBoldIcon,\n fill: LabelPairedHandGestureTapRightLgFillIcon,\n },\n \"horizontal-rule-dashed\": {\n regular: LabelPairedHorizontalRuleDashedLgRegularIcon,\n bold: LabelPairedHorizontalRuleDashedLgBoldIcon,\n fill: LabelPairedHorizontalRuleDashedLgFillIcon,\n },\n \"lock-pattern\": {\n regular: LabelPairedLockPatternLgRegularIcon,\n bold: LabelPairedLockPatternLgBoldIcon,\n fill: LabelPairedLockPatternLgFillIcon,\n },\n \"mobile-notch-rotate\": {\n regular: LabelPairedMobileNotchRotateLgRegularIcon,\n bold: LabelPairedMobileNotchRotateLgBoldIcon,\n fill: LabelPairedMobileNotchRotateLgFillIcon,\n },\n \"page-circle-arrow-right\": {\n regular: LabelPairedPageCircleArrowRightLgRegularIcon,\n bold: LabelPairedPageCircleArrowRightLgBoldIcon,\n fill: LabelPairedPageCircleArrowRightLgFillIcon,\n },\n \"passkey\": {\n regular: LabelPairedPasskeyLgRegularIcon,\n bold: LabelPairedPasskeyLgBoldIcon,\n fill: LabelPairedPasskeyLgFillIcon,\n },\n \"playback-speed\": {\n regular: LabelPairedPlaybackSpeedLgRegularIcon,\n bold: LabelPairedPlaybackSpeedLgBoldIcon,\n fill: LabelPairedPlaybackSpeedLgFillIcon,\n },\n \"puzzles-piece-two\": {\n regular: LabelPairedPuzzlePieceTwoLgRegularIcon,\n bold: LabelPairedPuzzlePieceTwoLgBoldIcon,\n fill: LabelPairedPuzzlePieceTwoLgFillIcon,\n },\n // options — Quill has no Md Bold variant; uses Fill for bold TODO: design team review\n \"options\": {\n regular: LabelPairedOptionsLgRegularIcon,\n bold: LabelPairedOptionsLgFillIcon,\n fill: LabelPairedOptionsLgFillIcon,\n },\n // quill — no dedicated Quill equivalent; falls back to Pen TODO: design team review\n \"quill\": {\n regular: LabelPairedPenLgRegularIcon,\n bold: LabelPairedPenLgBoldIcon,\n fill: LabelPairedPenLgFillIcon,\n },\n \"rotate-device\": {\n regular: LabelPairedRotateDeviceLgRegularIcon,\n bold: LabelPairedRotateDeviceLgBoldIcon,\n fill: LabelPairedRotateDeviceLgFillIcon,\n },\n \"stop-loss\": {\n regular: LabelPairedStopLossLgRegularIcon,\n bold: LabelPairedStopLossLgBoldIcon,\n fill: LabelPairedStopLossLgFillIcon,\n },\n \"take-profit\": {\n regular: LabelPairedTakeProfitLgRegularIcon,\n bold: LabelPairedTakeProfitLgBoldIcon,\n fill: LabelPairedTakeProfitLgFillIcon,\n },\n \"user-tie-circle-dollar\": {\n regular: LabelPairedLightUserTieCircleDollarLgRegularIcon,\n bold: LabelPairedLightUserTieCircleDollarLgBoldIcon,\n fill: LabelPairedLightUserTieCircleDollarLgFillIcon,\n },\n \"wallet-circle-minus\": {\n regular: LabelPairedWalletCircleMinusLgRegularIcon,\n bold: LabelPairedWalletCircleMinusLgBoldIcon,\n fill: LabelPairedWalletCircleMinusLgFillIcon,\n },\n \"wallet-circle-plus\": {\n regular: LabelPairedWalletCirclePlusLgRegularIcon,\n bold: LabelPairedWalletCirclePlusLgBoldIcon,\n fill: LabelPairedWalletCirclePlusLgFillIcon,\n },\n \"wallet-signal\": {\n regular: LabelPairedWalletSignalLgRegularIcon,\n bold: LabelPairedWalletSignalLgBoldIcon,\n fill: LabelPairedWalletSignalLgFillIcon,\n },\n // ── Custom Deriv kit icons — pending Quill equivalents TODO: design team review ──\n // These were FA Pro kit (a9f9eb613f / 394c25e5aa) custom uploads that don't\n // have a matching LabelPaired icon. Mapped to nearest visual substitute.\n \"user-circle-arrow-right\": {\n regular: LabelPairedCircleUserLgRegularIcon,\n bold: LabelPairedCircleUserLgBoldIcon,\n fill: LabelPairedCircleUserLgFillIcon,\n },\n \"user-circle-arrow-up\": {\n regular: LabelPairedCircleUserLgRegularIcon,\n bold: LabelPairedCircleUserLgBoldIcon,\n fill: LabelPairedCircleUserLgFillIcon,\n },\n \"calendar-circle-arrow-left\": {\n regular: LabelPairedCalendarLgRegularIcon,\n bold: LabelPairedCalendarLgBoldIcon,\n fill: LabelPairedCalendarLgFillIcon,\n },\n \"calendar-circle-arrow-right\": {\n regular: LabelPairedCalendarLgRegularIcon,\n bold: LabelPairedCalendarLgBoldIcon,\n fill: LabelPairedCalendarLgFillIcon,\n },\n \"file-lines-magnifying-glass\": {\n regular: LabelPairedFileLinesLgRegularIcon,\n bold: LabelPairedFileLinesLgBoldIcon,\n fill: LabelPairedFileLinesLgFillIcon,\n },\n \"handshake-lock\": {\n regular: LabelPairedHandshakeLgRegularIcon,\n bold: LabelPairedHandshakeLgBoldIcon,\n fill: LabelPairedHandshakeLgFillIcon,\n },\n \"handshake-shield\": {\n regular: LabelPairedHandshakeLgRegularIcon,\n bold: LabelPairedHandshakeLgBoldIcon,\n fill: LabelPairedHandshakeLgFillIcon,\n },\n \"memo-shield\": {\n regular: LabelPairedMemoPadLgRegularIcon,\n bold: LabelPairedMemoPadLgBoldIcon,\n fill: LabelPairedMemoPadLgFillIcon,\n },\n \"pen-field-circle-xmark\": {\n regular: LabelPairedPenLgRegularIcon,\n bold: LabelPairedPenLgBoldIcon,\n fill: LabelPairedPenLgFillIcon,\n },\n \"pen-field-lock\": {\n regular: LabelPairedPenLgRegularIcon,\n bold: LabelPairedPenLgBoldIcon,\n fill: LabelPairedPenLgFillIcon,\n },\n \"pen-field-slash\": {\n regular: LabelPairedPenLgRegularIcon,\n bold: LabelPairedPenLgBoldIcon,\n fill: LabelPairedPenLgFillIcon,\n },\n \"rectangle-history-circle-dollar\": {\n regular: LabelPairedCircleDollarLgRegularIcon,\n bold: LabelPairedCircleDollarLgBoldIcon,\n fill: LabelPairedCircleDollarLgFillIcon,\n },\n \"shield-circle-check\": {\n regular: LabelPairedShieldCheckLgRegularIcon,\n bold: LabelPairedShieldCheckLgBoldIcon,\n fill: LabelPairedShieldCheckLgFillIcon,\n },\n \"shield-halved-circle-minus\": {\n regular: LabelPairedShieldCheckLgRegularIcon,\n bold: LabelPairedShieldCheckLgBoldIcon,\n fill: LabelPairedShieldCheckLgFillIcon,\n },\n \"shield-halved-lock\": {\n regular: LabelPairedShieldCheckLgRegularIcon,\n bold: LabelPairedShieldCheckLgBoldIcon,\n fill: LabelPairedShieldCheckLgFillIcon,\n },\n \"shield-lock\": {\n regular: LabelPairedShieldCheckLgRegularIcon,\n bold: LabelPairedShieldCheckLgBoldIcon,\n fill: LabelPairedShieldCheckLgFillIcon,\n },\n \"user-circle-dollar\": {\n regular: LabelPairedCircleDollarLgRegularIcon,\n bold: LabelPairedCircleDollarLgBoldIcon,\n fill: LabelPairedCircleDollarLgFillIcon,\n },\n \"user-large-circle-dollar\": {\n regular: LabelPairedCircleDollarLgRegularIcon,\n bold: LabelPairedCircleDollarLgBoldIcon,\n fill: LabelPairedCircleDollarLgFillIcon,\n },\n \"users-line-circle-dollar\": {\n regular: LabelPairedCircleDollarLgRegularIcon,\n bold: LabelPairedCircleDollarLgBoldIcon,\n fill: LabelPairedCircleDollarLgFillIcon,\n },\n \"users-rectangle-circle-dollar\": {\n regular: LabelPairedCircleDollarLgRegularIcon,\n bold: LabelPairedCircleDollarLgBoldIcon,\n fill: LabelPairedCircleDollarLgFillIcon,\n },\n}\n\n/* ─── Public types ────────────────────────────────────────────────────────── */\n\nexport type IconName = keyof typeof _iconKeys\nexport type IconWeight = \"regular\" | \"bold\" | \"fill\"\nexport type IconQuillSize = \"sm\" | \"md\" | \"lg\"\n\n/** Context — set by Chip/Tag to auto-select the correct Quill size variant for children. */\nexport const IconSizeContext = React.createContext<IconQuillSize>(\"md\")\n\nexport interface IconProps {\n name: IconName\n weight?: IconWeight\n /** Quill size variant (sm=14×22, md=16×24, lg=20×30). Overrides IconSizeContext. */\n quillSize?: IconQuillSize\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\", quillSize, className, style, ...rest }: IconProps) {\n const contextSize = React.useContext(IconSizeContext)\n const resolvedSize = quillSize ?? contextSize\n const sizeMap =\n resolvedSize === \"sm\" ? iconMapSm :\n resolvedSize === \"lg\" ? iconMapLg :\n iconMap\n const entry = sizeMap[name] ?? iconMap[name]\n const Comp =\n weight === \"fill\" ? (entry?.fill ?? entry?.bold) :\n weight === \"regular\" ? (entry?.regular ?? entry?.bold) :\n entry?.bold\n if (!Comp) return null\n return (\n <Comp\n fill=\"currentColor\"\n className={cn(\"shrink-0\", className)}\n style={style}\n {...(rest as React.SVGProps<SVGSVGElement>)}\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(iconMap).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 entry = iconMap[name]\n const out: IconWeight[] = []\n if (entry?.regular != null) out.push(\"regular\")\n out.push(\"bold\")\n if (entry?.fill != null) out.push(\"fill\")\n return out\n}\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\"\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.\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:cursor-not-allowed\",\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","\"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 \"flex 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 \"items-center gap-[var(--notification-gap-md)]\",\n \"px-[var(--notification-padding-horizontal)] py-[var(--notification-padding-vertical)]\",\n className\n )}\n >\n {/* Icon column: self-stretch so the icon pins to the title top when description wraps */}\n <div className=\"flex self-stretch shrink-0 gap-1\">\n {slotBeforeIcon}\n <div className=\"flex h-full items-start\">\n <div className=\"flex size-6 shrink-0 items-center justify-center\">\n <Icon\n name=\"circle-info\"\n weight=\"fill\"\n className=\"size-6 text-notification-icon-inverse-information\"\n />\n </div>\n </div>\n </div>\n\n {/* Text */}\n <div className=\"flex min-w-0 flex-1 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 */}\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 size-8 shrink-0 items-center justify-center text-notification-title-banner opacity-60 hover:opacity-100 transition-opacity\"\n aria-label=\"Close notification\"\n >\n <Icon name=\"xmark\" className=\"size-6\" />\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 size-8 items-center justify-center rounded-[var(--notification-radius-icon)]\", variantIconBgClass[variant ?? \"information\"])}\n >\n <Icon\n name={variantIconName}\n className={cn(\"size-6\", variantIconNormalClass[variant ?? \"information\"])}\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 size-8 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 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 className=\"size-6\"\n />\n </button>\n <button\n type=\"button\"\n className=\"flex size-8 items-center justify-center rounded text-notification-icon-delete hover:bg-notification-bg-button-press active:bg-notification-bg-button-press transition-colors\"\n onClick={() => onDelete?.()}\n aria-label=\"Delete notification\"\n >\n <Icon name=\"trash\" className=\"size-6\" />\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=\"size-6 shrink-0 text-notification-icon-read-unread\"\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=\"size-6 shrink-0 text-notification-icon-delete\" />\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: 32×32; icon glyph: 24px (size-6)\n \"[&_[data-slot=section-message-icon]]:size-8\",\n \"[&_[data-slot=section-message-icon]_svg]:!w-6\",\n \"[&_[data-slot=section-message-icon]_svg]:!h-6\",\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: 32×32; icon glyph: 24px (Quill Md natural height)\n \"[&_[data-slot=section-message-icon]]:size-8\",\n \"[&_[data-slot=section-message-icon]_svg]:!w-6\",\n \"[&_[data-slot=section-message-icon]_svg]:!h-6\",\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 top-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\"\nimport { IconSizeContext, type IconQuillSize } from \"./icon\"\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 /* ── fill-emerald: solid #00c390 bg, white text (--primitive-emerald-700; no semantic token yet) ── */\n \"fill-emerald\": \"bg-[var(--primitive-emerald-700)] text-white border-transparent [&>svg]:text-white\",\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 \"2xs\": [\n \"h-[var(--tag-2xs-height)]\",\n \"min-w-[var(--tag-2xs-min-width)]\",\n \"px-[var(--tag-2xs-padding-horizontal)]\",\n \"gap-[var(--tag-2xs-gap)]\",\n \"[font-size:var(--tag-2xs-font-size)]\",\n \"[font-weight:var(--tag-2xs-font-weight)]\",\n \"rounded-[var(--tag-2xs-radius)]\",\n \"[&>svg]:!w-2.5 [&>svg]:!h-2.5\",\n ],\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]:!w-[18px] [&>svg]:!h-[18px]\",\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]:!w-5 [&>svg]:!h-5\",\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 children,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof tagVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n const quillSize: IconQuillSize = size === \"sm\" ? \"sm\" : \"md\"\n\n return (\n // Provider wraps Comp (not children) so Slot.Root still clones the real\n // consumer element under asChild; the Provider renders no DOM of its own.\n <IconSizeContext.Provider value={quillSize}>\n <Comp\n data-slot=\"tag\"\n data-variant={variant}\n className={cn(tagVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </Comp>\n </IconSizeContext.Provider>\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-5\" />\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\"\nimport {\n SocialGoogleBrandIcon,\n SocialFacebookBrandIcon,\n SocialAppleBlackIcon,\n SocialAppleWhiteIcon,\n SocialXTwitterBlackIcon,\n SocialXTwitterWhiteIcon,\n} from \"@deriv/quill-icons/Social\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all cursor-pointer outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-24 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 font-display font-extrabold\",\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 xl: \"h-[var(--button-xl-height)] w-fit min-w-[var(--button-xl-min-width)] gap-[var(--button-xl-gap)] rounded-[var(--button-xl-radius)] px-[var(--button-xl-padding-horizontal)] [font-size:var(--button-xl-font-size)] [border-width:var(--button-xl-border-width)] [&_svg:not([class*='size-'])]:size-6\",\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-3\",\n xs: \"h-6 w-fit gap-1 rounded-full px-2 text-xs [border-width:1.5px] [&_svg:not([class*='size-'])]:size-4\", /* 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-xl\": \"size-[var(--button-xl-icon-size)] rounded-[var(--button-xl-radius)] [border-width:var(--button-xl-border-width)] [&_svg:not([class*='size-'])]:size-6\",\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-5\",\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-5\",\n \"icon-xs\": \"size-6 rounded-full [border-width:1.5px] [&_svg:not([class*='size-'])]:size-4\", /* 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\n/* ── Social button ─────────────────────────────────────────────\n * Pill-shaped OAuth button: provider logo (left) + optically-centred\n * label + invisible trailing spacer (equal width to the logo box, so\n * the label stays centred regardless of the glyph's intrinsic size).\n *\n * Two variants (per Figma): `secondary` (default) — transparent fill +\n * faint 8% neutral border; `primary` — subtle 4% neutral fill, no\n * border. Colours are neutral overlays that flip with the theme. Sizes\n * are a social-specific scale (md=32, lg=48, xl=64) — note md here is\n * 32, NOT the regular Button's 40 — so it lives in its own cva.\n */\nconst socialButtonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all cursor-pointer outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-24 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 font-display font-extrabold rounded-full text-button-secondary-text\",\n {\n variants: {\n variant: {\n primary:\n \"border-transparent bg-[var(--button-social-primary-bg)] hover:bg-[var(--button-social-primary-bg-hover)] active:bg-[var(--button-social-primary-bg-pressed)]\",\n secondary:\n \"bg-transparent border-[var(--button-social-border)] hover:bg-[var(--button-social-secondary-bg-hover)] active:bg-[var(--button-social-secondary-bg-pressed)]\",\n },\n size: {\n md: \"h-[var(--button-social-md-height)] gap-[var(--button-social-md-gap)] px-[var(--button-social-md-padding-horizontal)] [font-size:var(--button-social-md-font-size)] [border-width:var(--button-social-md-border-width)]\",\n lg: \"h-[var(--button-social-lg-height)] gap-[var(--button-social-lg-gap)] px-[var(--button-social-lg-padding-horizontal)] [font-size:var(--button-social-lg-font-size)] [border-width:var(--button-social-lg-border-width)]\",\n xl: \"h-[var(--button-social-xl-height)] gap-[var(--button-social-xl-gap)] px-[var(--button-social-xl-padding-horizontal)] [font-size:var(--button-social-xl-font-size)] [border-width:var(--button-social-xl-border-width)]\",\n },\n },\n defaultVariants: {\n variant: \"secondary\",\n size: \"lg\",\n },\n }\n)\n\ntype SocialProvider = \"google\" | \"apple\" | \"facebook\" | \"x\"\ntype SocialButtonSize = \"md\" | \"lg\" | \"xl\"\ntype SocialButtonVariant = \"primary\" | \"secondary\"\n\nconst SOCIAL_LOGO_SIZE: Record<SocialButtonSize, string> = {\n md: \"size-5\",\n lg: \"size-6\",\n xl: \"size-8\",\n}\n\n/* Google & Facebook ship self-coloured brand glyphs (theme-agnostic).\n * Apple & X have no brand glyph — render the Black variant in light\n * mode and swap to White in dark mode so they stay visible. Each glyph\n * fills its fixed-size box (`size-full`) so logo and spacer match. */\nconst PROVIDER_LOGOS: Record<SocialProvider, () => React.ReactNode> = {\n google: () => <SocialGoogleBrandIcon className=\"size-full\" />,\n facebook: () => <SocialFacebookBrandIcon className=\"size-full\" />,\n apple: () => (\n <>\n <SocialAppleBlackIcon className=\"size-full dark:hidden\" />\n <SocialAppleWhiteIcon className=\"size-full hidden dark:block\" />\n </>\n ),\n x: () => (\n <>\n <SocialXTwitterBlackIcon className=\"size-full dark:hidden\" />\n <SocialXTwitterWhiteIcon className=\"size-full hidden dark:block\" />\n </>\n ),\n}\n\nfunction SocialButton({\n className,\n provider,\n variant = \"secondary\",\n size = \"lg\",\n asChild = false,\n loading = false,\n children,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof socialButtonVariants> & {\n provider: SocialProvider\n asChild?: boolean\n loading?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"button\"\n const logoCls = SOCIAL_LOGO_SIZE[(size ?? \"lg\") as SocialButtonSize]\n\n return (\n <Comp\n data-slot=\"social-button\"\n data-provider={provider}\n data-variant={variant}\n data-size={size}\n data-loading={loading || undefined}\n className={cn(socialButtonVariants({ variant, size, className }), loading && \"pointer-events-none opacity-24\")}\n aria-busy={loading || undefined}\n {...props}\n >\n <span className={cn(logoCls, \"grid shrink-0 place-items-center\")}>{PROVIDER_LOGOS[provider]()}</span>\n <span className=\"flex-1 text-center\">{children}</span>\n <span aria-hidden className={cn(logoCls, \"shrink-0\")} />\n </Comp>\n )\n}\n\nexport { Button, buttonVariants, SocialButton, socialButtonVariants }\nexport type { SocialProvider, SocialButtonSize, SocialButtonVariant }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { IconSizeContext, type IconQuillSize } from \"./icon\"\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:cursor-not-allowed\",\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\nconst chipSizeMap: Record<NonNullable<VariantProps<typeof chipVariants>[\"size\"]>, IconQuillSize> = {\n sm: \"sm\",\n md: \"md\",\n lg: \"lg\",\n}\n\nfunction Chip({\n className,\n size,\n selected = false,\n children,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof chipVariants> & {\n selected?: boolean\n }) {\n const quillSize = chipSizeMap[size ?? \"md\"]\n return (\n <IconSizeContext.Provider value={quillSize}>\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 {children}\n </button>\n </IconSizeContext.Provider>\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-5\", className)} />\n }\n if (orientation === \"right\") {\n return <Icon name=\"chevron-right\" className={cn(\"size-5\", className)} />\n }\n return <Icon name=\"chevron-down\" className={cn(\"size-5\", 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\" className=\"size-5\" />\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\" className=\"size-5\" />\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\"\nimport { StandaloneSquareCheckFillIcon } from \"@deriv/quill-icons/Standalone\"\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 — square 16px, text-subtle */\n/* • checked — square-check 16px, text-selected */\n/* • indeterminate — square-minus 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 — square.\n * Wrapped in a <span> so `hidden` targets a plain HTML element;\n * the SVG's `display: inline-block` would otherwise win over the\n * `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-6 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-6 shrink-0 items-center justify-center transition-none\"\n >\n {/* Checked → square-check fill */}\n <span className=\"contents group-data-[state=indeterminate]:hidden\">\n <StandaloneSquareCheckFillIcon\n fill=\"currentColor\"\n className=\"size-6 shrink-0 text-selected\"\n />\n </span>\n {/* Indeterminate → square-minus */}\n <span className=\"contents group-data-[state=checked]:hidden\">\n <Icon\n name=\"square-minus\"\n className=\"size-6 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 an info icon 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// 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-5\", 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-5\",\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-5 pointer-coarse:size-6\" />\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: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-5\",\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-4\",\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-5\",\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-5 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-5 [&_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\" className=\"size-5\" />\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-5 [&_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-5 [&_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-5\",\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-5\" />\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-5\",\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-5 [&_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-5\",\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-5\" />\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-5\",\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-5 [&_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-5\" />\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]: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 * as FlagIcons from \"@deriv/quill-icons/Flags\"\n\nimport { cn } from \"../../lib/utils\"\nimport { COUNTRIES, DEFAULT_COUNTRY, type Country } from \"../../lib/countries\"\nimport { Icon } from \"./icon\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\"\n\n/* Keys that are allowed through the numeric-only filter even though they\n * aren't digits (navigation / editing). Everything else is blocked. */\nconst NUMERIC_ALLOWED_KEYS = new Set([\n \"Backspace\", \"Delete\", \"ArrowLeft\", \"ArrowRight\", \"ArrowUp\", \"ArrowDown\",\n \"Tab\", \"Home\", \"End\", \"Enter\", \"Escape\",\n])\n\n/* Resolve a country's flag glyph from the Quill `Flags` subpath via its\n * pre-computed PascalCase `flagKey` (e.g. \"AntiguaAndBarbuda\" → FlagAntiguaAndBarbudaIcon).\n * Falls back to the placeholder flag when a key isn't found. */\nfunction FlagGlyph({ country, className }: { country: Country; className?: string }) {\n const map = FlagIcons as unknown as Record<string, React.ElementType>\n const Glyph = map[`Flag${country.flagKey}Icon`] ?? map.FlagPlaceholderIcon\n return Glyph ? <Glyph className={className} iconSize=\"sm\" /> : null\n}\n\ntype PhoneInputStatus = \"default\" | \"success\" | \"error\"\n\ninterface PhoneInputProps\n extends Omit<React.ComponentProps<\"input\">, \"value\" | \"defaultValue\" | \"onChange\"> {\n /** External label rendered above the field (only when `floatingLabel` is false). */\n label?: string\n /** Floating caption shown inside the textfield half when `floatingLabel` is true. */\n fieldLabel?: string\n /** Controlled dial code, e.g. \"+376\". */\n dialCode?: string\n /** Uncontrolled initial dial code. Defaults to Andorra (+376). */\n defaultDialCode?: string\n onDialCodeChange?: (dialCode: string, country: Country) => void\n helperText?: string\n status?: PhoneInputStatus\n /** Phone number value (passed to the inner input). */\n value?: string\n defaultValue?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n /** When true, renders the floating-label layout (Code / fieldLabel captions inside both halves). */\n floatingLabel?: boolean\n /** When true, the numeric-only filter is lifted so non-digit characters pass\n * through untouched. Used by EmailOrPhoneInput so a typed letter/symbol can\n * bubble up and morph the field back to email mode. */\n allowNonNumeric?: boolean\n}\n\nconst PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(function PhoneInput(\n {\n className,\n label,\n fieldLabel = \"Phone number\",\n dialCode: dialCodeProp,\n defaultDialCode = DEFAULT_COUNTRY.dialCode,\n onDialCodeChange,\n helperText,\n status = \"default\",\n disabled,\n floatingLabel = false,\n allowNonNumeric = false,\n placeholder,\n value,\n defaultValue,\n onChange,\n onFocus,\n onBlur,\n onKeyDown,\n ...inputProps\n },\n ref,\n) {\n const [open, setOpen] = React.useState(false)\n const [query, setQuery] = React.useState(\"\")\n const [internalDial, setInternalDial] = React.useState(defaultDialCode)\n const activeDial = dialCodeProp ?? internalDial\n const selected =\n COUNTRIES.find((c) => c.dialCode === activeDial) ?? DEFAULT_COUNTRY\n\n const internalRef = React.useRef<HTMLInputElement>(null)\n React.useImperativeHandle(ref, () => internalRef.current!)\n\n // Track focus + value length to drive the floating-label empty state.\n const [isFocused, setIsFocused] = React.useState(false)\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 controlledLength = value !== undefined ? String(value).length : null\n const currentLength = controlledLength ?? charCount\n // true → label sits at 12px top, input row visible\n // false → label centered at 16px, input row hidden (empty + unfocused)\n const isFloating = isFocused || currentLength > 0\n\n const selectCountry = (country: Country) => {\n if (dialCodeProp === undefined) setInternalDial(country.dialCode)\n onDialCodeChange?.(country.dialCode, country)\n setOpen(false)\n }\n\n const handleOpenChange = (next: boolean) => {\n setOpen(next)\n if (!next) setQuery(\"\")\n }\n\n const normalizedQuery = query.trim().toLowerCase()\n const filteredCountries = normalizedQuery\n ? COUNTRIES.filter(\n (c) =>\n c.name.toLowerCase().includes(normalizedQuery) ||\n c.dialCode.includes(normalizedQuery),\n )\n : COUNTRIES\n\n // ── Numeric-only handlers ──\n const handleNumberChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!allowNonNumeric) {\n const digits = e.target.value.replace(/[^0-9]/g, \"\")\n if (digits !== e.target.value) e.target.value = digits\n }\n if (value === undefined) setCharCount(e.target.value.length)\n onChange?.(e)\n }\n\n const handleNumberKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (\n allowNonNumeric ||\n e.metaKey ||\n e.ctrlKey ||\n NUMERIC_ALLOWED_KEYS.has(e.key) ||\n /^[0-9]$/.test(e.key)\n ) {\n onKeyDown?.(e)\n return\n }\n e.preventDefault()\n }\n\n const handleNumberFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true)\n onFocus?.(e)\n }\n\n const handleNumberBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false)\n onBlur?.(e)\n }\n\n // Shared props for the phone number <input>.\n const numberInputProps = {\n ref: internalRef,\n type: \"tel\" as const,\n inputMode: \"numeric\" as const,\n disabled,\n placeholder,\n value,\n defaultValue,\n \"aria-invalid\": status === \"error\" ? true : undefined,\n onChange: handleNumberChange,\n onKeyDown: handleNumberKeyDown,\n onFocus: handleNumberFocus,\n onBlur: handleNumberBlur,\n ...inputProps,\n }\n\n const borderStatus =\n status === \"error\"\n ? \"border-field-outline-border-error\"\n : status === \"success\"\n ? \"border-field-outline-border-success\"\n : \"border-field-outline-border-default focus-within:border-field-outline-border-focus hover:border-field-outline-border-focus\"\n\n return (\n <div className={cn(\"w-full\", className)}>\n {/* floatingLabel=false external label — 14px */}\n {!floatingLabel && label && (\n <label className=\"mb-[var(--semantic-size-spacing-8)] block [font-size:var(--semantic-size-width-height-14)] text-prominent\">\n {label}\n </label>\n )}\n\n <div\n data-slot=\"phone-input\"\n data-status={status}\n className={cn(\n \"flex w-full items-stretch overflow-hidden bg-field-outline-bg-default\",\n \"h-[var(--field-height)] rounded-[var(--field-radius)]\",\n \"[border-width:var(--semantic-size-border-1)] border-solid\",\n \"transition-[color,border-color,background-color] duration-200\",\n \"focus-within:bg-field-outline-bg-focus\",\n borderStatus,\n disabled && \"pointer-events-none opacity-50 bg-field-outline-bg-disabled\",\n )}\n >\n {/* ── Left: country dial-code dropdown ── */}\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n aria-label={`Country code, currently ${selected.name} ${selected.dialCode}`}\n className={cn(\n \"flex h-full shrink-0 cursor-pointer items-center outline-none\",\n \"gap-[var(--semantic-size-spacing-8)] px-[var(--semantic-size-spacing-16)]\",\n \"border-r-[length:var(--semantic-size-border-1)] border-solid border-field-outline-border-default\",\n \"text-field-text-prominent\",\n )}\n >\n <FlagGlyph country={selected} className=\"h-4 w-6 shrink-0\" />\n {floatingLabel ? (\n <span className=\"flex flex-col items-start\">\n <span className=\"leading-[1.5] [font-size:var(--field-font-size-sm)] text-field-text-subtle\">\n Code\n </span>\n <span className=\"leading-[1.5] [font-size:var(--field-font-size-md)]\">\n {activeDial}\n </span>\n </span>\n ) : (\n <span className=\"leading-[1.5] [font-size:var(--field-font-size-md)]\">\n {activeDial}\n </span>\n )}\n <Icon name=\"chevron-down\" className=\"size-4 shrink-0 text-field-text-subtle\" />\n </button>\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n sideOffset={8}\n className=\"flex max-h-[420px] w-[var(--radix-popover-trigger-width)] min-w-[280px] flex-col p-0\"\n >\n {/* Search */}\n <div className=\"border-b-[length:var(--semantic-size-border-1)] border-solid border-field-outline-border-default p-[var(--semantic-size-spacing-8)]\">\n <div className=\"relative flex items-center\">\n <Icon\n name=\"magnifying-glass\"\n className=\"pointer-events-none absolute left-2 size-4 text-field-text-subtle\"\n />\n <input\n autoFocus\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder=\"Search country…\"\n aria-label=\"Search country\"\n className={cn(\n \"h-10 w-full rounded-[var(--semantic-size-radius-4)] bg-secondary-surface\",\n \"pl-8 pr-2 outline-none [font-size:var(--field-font-size-md)]\",\n \"text-prominent placeholder:text-field-text-subtle\",\n )}\n />\n </div>\n </div>\n\n {/* Country list */}\n <div className=\"overflow-y-auto p-[var(--semantic-size-spacing-8)]\">\n {filteredCountries.length === 0 ? (\n <p className=\"px-4 py-6 text-center [font-size:var(--field-font-size-sm)] text-field-text-subtle\">\n No countries found\n </p>\n ) : (\n filteredCountries.map((c) => {\n const isSelected = c.dialCode === activeDial && c.iso2 === selected.iso2\n return (\n <button\n key={c.iso2}\n type=\"button\"\n onClick={() => selectCountry(c)}\n className={cn(\n \"flex h-12 w-full items-center gap-[var(--semantic-size-spacing-8)]\",\n \"rounded-[var(--semantic-size-radius-4)] px-[var(--semantic-size-spacing-16)]\",\n \"[font-size:var(--field-font-size-md)] outline-none transition-colors duration-150\",\n isSelected\n ? \"bg-prominent text-on-prominent-static-inverse dark:text-on-prominent-static\"\n : \"text-prominent hover:bg-secondary-surface\",\n )}\n >\n <FlagGlyph country={c} className=\"h-4 w-6 shrink-0\" />\n <span className=\"flex-1 truncate text-left\">{c.name}</span>\n <span className={cn(\"shrink-0\", !isSelected && \"text-field-text-subtle\")}>\n ({c.dialCode})\n </span>\n </button>\n )\n })\n )}\n </div>\n </PopoverContent>\n </Popover>\n\n {/* ── Right: phone number input ── */}\n {floatingLabel ? (\n /* Floating-label layout: label animates between centered-16px (empty)\n * and top-12px (has value or focused), mirroring the Input component. */\n <div\n className=\"relative flex-1 min-w-0 h-full\"\n onClick={(e) => {\n if (e.target !== internalRef.current) internalRef.current?.focus()\n }}\n >\n <label\n className={cn(\n \"absolute pointer-events-none select-none leading-[1.5]\",\n \"left-[var(--semantic-size-spacing-16)] flex items-center\",\n \"transition-all duration-200 ease-out text-field-text-subtle\",\n isFloating\n ? \"top-[6px] [font-size:var(--field-font-size-sm)]\"\n : \"top-1/2 -translate-y-1/2 [font-size:var(--field-font-size-md)]\",\n )}\n >\n {fieldLabel}\n </label>\n <input\n {...numberInputProps}\n className={cn(\n \"absolute left-0 right-0 bottom-[6px]\",\n \"[padding:0_var(--semantic-size-spacing-16)]\",\n \"bg-transparent outline-none border-0\",\n \"leading-[1.5] [font-size:var(--field-font-size-md)] [font-weight:var(--field-font-weight)]\",\n \"text-field-text-prominent placeholder:text-field-text-subtle\",\n \"transition-opacity duration-200 ease-out\",\n isFloating ? \"opacity-100\" : \"opacity-0\",\n )}\n />\n </div>\n ) : (\n <div className=\"flex flex-1 min-w-0 items-center px-[var(--semantic-size-spacing-16)]\">\n <input\n {...numberInputProps}\n className={cn(\n \"w-full bg-transparent p-0 outline-none border-0\",\n \"leading-[1.5] [font-size:var(--field-font-size-md)] [font-weight:var(--field-font-weight)]\",\n \"text-field-text-prominent placeholder:text-field-text-subtle\",\n )}\n />\n </div>\n )}\n </div>\n\n {helperText && (\n <p\n className={cn(\n \"mt-[var(--semantic-size-spacing-4)] px-[var(--semantic-size-spacing-16)]\",\n \"[font-size:var(--field-font-size-sm)]\",\n status === \"error\"\n ? \"text-field-text-error\"\n : status === \"success\"\n ? \"text-field-text-success\"\n : \"text-field-text-subtle\",\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n )\n})\n\nPhoneInput.displayName = \"PhoneInput\"\n\nexport { PhoneInput }\nexport type { PhoneInputProps, PhoneInputStatus }\n","export interface Country {\n name: string\n iso2: string\n dialCode: string\n /** Pascal-case key used to look up Flag{key}Icon from @deriv/quill-icons/Flags */\n flagKey: string\n}\n\nexport const COUNTRIES: Country[] = [\n { name: \"Afghanistan\", iso2: \"AF\", dialCode: \"+93\", flagKey: \"Afghanistan\" },\n { name: \"Albania\", iso2: \"AL\", dialCode: \"+355\", flagKey: \"Albania\" },\n { name: \"Algeria\", iso2: \"DZ\", dialCode: \"+213\", flagKey: \"Algeria\" },\n { name: \"American Samoa\", iso2: \"AS\", dialCode: \"+1684\", flagKey: \"AmericanSamoa\" },\n { name: \"Andorra\", iso2: \"AD\", dialCode: \"+376\", flagKey: \"Andorra\" },\n { name: \"Angola\", iso2: \"AO\", dialCode: \"+244\", flagKey: \"Angola\" },\n { name: \"Anguilla\", iso2: \"AI\", dialCode: \"+1264\", flagKey: \"Anguilla\" },\n { name: \"Antigua and Barbuda\", iso2: \"AG\", dialCode: \"+1268\", flagKey: \"AntiguaAndBarbuda\" },\n { name: \"Argentina\", iso2: \"AR\", dialCode: \"+54\", flagKey: \"Argentina\" },\n { name: \"Armenia\", iso2: \"AM\", dialCode: \"+374\", flagKey: \"Armenia\" },\n { name: \"Aruba\", iso2: \"AW\", dialCode: \"+297\", flagKey: \"Aruba\" },\n { name: \"Australia\", iso2: \"AU\", dialCode: \"+61\", flagKey: \"Australia\" },\n { name: \"Austria\", iso2: \"AT\", dialCode: \"+43\", flagKey: \"Austria\" },\n { name: \"Azerbaijan\", iso2: \"AZ\", dialCode: \"+994\", flagKey: \"Azerbaijan\" },\n { name: \"Bahamas\", iso2: \"BS\", dialCode: \"+1242\", flagKey: \"Bahamas\" },\n { name: \"Bahrain\", iso2: \"BH\", dialCode: \"+973\", flagKey: \"Bahrain\" },\n { name: \"Bangladesh\", iso2: \"BD\", dialCode: \"+880\", flagKey: \"Bangladesh\" },\n { name: \"Barbados\", iso2: \"BB\", dialCode: \"+1246\", flagKey: \"Barbados\" },\n { name: \"Belarus\", iso2: \"BY\", dialCode: \"+375\", flagKey: \"Belarus\" },\n { name: \"Belgium\", iso2: \"BE\", dialCode: \"+32\", flagKey: \"Belgium\" },\n { name: \"Belize\", iso2: \"BZ\", dialCode: \"+501\", flagKey: \"Belize\" },\n { name: \"Benin\", iso2: \"BJ\", dialCode: \"+229\", flagKey: \"Benin\" },\n { name: \"Bermuda\", iso2: \"BM\", dialCode: \"+1441\", flagKey: \"Bermuda\" },\n { name: \"Bhutan\", iso2: \"BT\", dialCode: \"+975\", flagKey: \"Bhutan\" },\n { name: \"Bolivia\", iso2: \"BO\", dialCode: \"+591\", flagKey: \"Bolivia\" },\n { name: \"Bosnia and Herzegovina\", iso2: \"BA\", dialCode: \"+387\", flagKey: \"BosniaAndHerzegovina\" },\n { name: \"Botswana\", iso2: \"BW\", dialCode: \"+267\", flagKey: \"Botswana\" },\n { name: \"Brazil\", iso2: \"BR\", dialCode: \"+55\", flagKey: \"Brazil\" },\n { name: \"British Virgin Islands\", iso2: \"VG\", dialCode: \"+1284\", flagKey: \"BritishVirginIslands\" },\n { name: \"Brunei\", iso2: \"BN\", dialCode: \"+673\", flagKey: \"Brunei\" },\n { name: \"Bulgaria\", iso2: \"BG\", dialCode: \"+359\", flagKey: \"Bulgaria\" },\n { name: \"Burkina Faso\", iso2: \"BF\", dialCode: \"+226\", flagKey: \"BurkinaFaso\" },\n { name: \"Burundi\", iso2: \"BI\", dialCode: \"+257\", flagKey: \"Burundi\" },\n { name: \"Cambodia\", iso2: \"KH\", dialCode: \"+855\", flagKey: \"Cambodia\" },\n { name: \"Cameroon\", iso2: \"CM\", dialCode: \"+237\", flagKey: \"Cameroon\" },\n { name: \"Canada\", iso2: \"CA\", dialCode: \"+1\", flagKey: \"Canada\" },\n { name: \"Cape Verde\", iso2: \"CV\", dialCode: \"+238\", flagKey: \"CapeVerde\" },\n { name: \"Cayman Islands\", iso2: \"KY\", dialCode: \"+1345\", flagKey: \"CaymanIslands\" },\n { name: \"Central African Republic\", iso2: \"CF\", dialCode: \"+236\", flagKey: \"CentralAfricanRepublic\" },\n { name: \"Chad\", iso2: \"TD\", dialCode: \"+235\", flagKey: \"Chad\" },\n { name: \"Chile\", iso2: \"CL\", dialCode: \"+56\", flagKey: \"Chile\" },\n { name: \"China\", iso2: \"CN\", dialCode: \"+86\", flagKey: \"China\" },\n { name: \"Colombia\", iso2: \"CO\", dialCode: \"+57\", flagKey: \"Colombia\" },\n { name: \"Comoros\", iso2: \"KM\", dialCode: \"+269\", flagKey: \"Comoros\" },\n { name: \"Congo\", iso2: \"CG\", dialCode: \"+242\", flagKey: \"CongoBrazzaville\" },\n { name: \"Cook Islands\", iso2: \"CK\", dialCode: \"+682\", flagKey: \"CookIslands\" },\n { name: \"Costa Rica\", iso2: \"CR\", dialCode: \"+506\", flagKey: \"CostaRica\" },\n { name: \"Côte d'Ivoire\", iso2: \"CI\", dialCode: \"+225\", flagKey: \"CTeDIvoire\" },\n { name: \"Croatia\", iso2: \"HR\", dialCode: \"+385\", flagKey: \"Croatia\" },\n { name: \"Cuba\", iso2: \"CU\", dialCode: \"+53\", flagKey: \"Cuba\" },\n { name: \"Cyprus\", iso2: \"CY\", dialCode: \"+357\", flagKey: \"Cyprus\" },\n { name: \"Czech Republic\", iso2: \"CZ\", dialCode: \"+420\", flagKey: \"CzechRepublic\" },\n { name: \"Denmark\", iso2: \"DK\", dialCode: \"+45\", flagKey: \"Denmark\" },\n { name: \"Djibouti\", iso2: \"DJ\", dialCode: \"+253\", flagKey: \"Djibouti\" },\n { name: \"Dominica\", iso2: \"DM\", dialCode: \"+1767\", flagKey: \"Dominica\" },\n { name: \"Dominican Republic\", iso2: \"DO\", dialCode: \"+1809\", flagKey: \"DomincanRepublic\" },\n { name: \"Ecuador\", iso2: \"EC\", dialCode: \"+593\", flagKey: \"Ecuador\" },\n { name: \"Egypt\", iso2: \"EG\", dialCode: \"+20\", flagKey: \"Egypt\" },\n { name: \"El Salvador\", iso2: \"SV\", dialCode: \"+503\", flagKey: \"ElSalvador\" },\n { name: \"Equatorial Guinea\", iso2: \"GQ\", dialCode: \"+240\", flagKey: \"EquatorialGuinea\" },\n { name: \"Eritrea\", iso2: \"ER\", dialCode: \"+291\", flagKey: \"Eritrea\" },\n { name: \"Estonia\", iso2: \"EE\", dialCode: \"+372\", flagKey: \"Estonia\" },\n { name: \"Ethiopia\", iso2: \"ET\", dialCode: \"+251\", flagKey: \"Ethiopia\" },\n { name: \"Falkland Islands\", iso2: \"FK\", dialCode: \"+500\", flagKey: \"FalklandIslands\" },\n { name: \"Fiji\", iso2: \"FJ\", dialCode: \"+679\", flagKey: \"Fiji\" },\n { name: \"Finland\", iso2: \"FI\", dialCode: \"+358\", flagKey: \"Finland\" },\n { name: \"France\", iso2: \"FR\", dialCode: \"+33\", flagKey: \"France\" },\n { name: \"French Guiana\", iso2: \"GF\", dialCode: \"+594\", flagKey: \"FrenchGuiana\" },\n { name: \"French Polynesia\", iso2: \"PF\", dialCode: \"+689\", flagKey: \"FrenchPolynesia\" },\n { name: \"Gabon\", iso2: \"GA\", dialCode: \"+241\", flagKey: \"Gabon\" },\n { name: \"Gambia\", iso2: \"GM\", dialCode: \"+220\", flagKey: \"Gambia\" },\n { name: \"Georgia\", iso2: \"GE\", dialCode: \"+995\", flagKey: \"Georgia\" },\n { name: \"Germany\", iso2: \"DE\", dialCode: \"+49\", flagKey: \"Germany\" },\n { name: \"Ghana\", iso2: \"GH\", dialCode: \"+233\", flagKey: \"Ghana\" },\n { name: \"Gibraltar\", iso2: \"GI\", dialCode: \"+350\", flagKey: \"Gibraltar\" },\n { name: \"Greece\", iso2: \"GR\", dialCode: \"+30\", flagKey: \"Greece\" },\n { name: \"Greenland\", iso2: \"GL\", dialCode: \"+299\", flagKey: \"Greenland\" },\n { name: \"Grenada\", iso2: \"GD\", dialCode: \"+1473\", flagKey: \"Grenada\" },\n { name: \"Guadeloupe\", iso2: \"GP\", dialCode: \"+590\", flagKey: \"Guadeloupe1\" },\n { name: \"Guam\", iso2: \"GU\", dialCode: \"+1671\", flagKey: \"Guam\" },\n { name: \"Guatemala\", iso2: \"GT\", dialCode: \"+502\", flagKey: \"Guatemala\" },\n { name: \"Guinea\", iso2: \"GN\", dialCode: \"+224\", flagKey: \"Guinea\" },\n { name: \"Guinea-Bissau\", iso2: \"GW\", dialCode: \"+245\", flagKey: \"GuineaBissau\" },\n { name: \"Guyana\", iso2: \"GY\", dialCode: \"+592\", flagKey: \"Guyana\" },\n { name: \"Haiti\", iso2: \"HT\", dialCode: \"+509\", flagKey: \"Haiti\" },\n { name: \"Honduras\", iso2: \"HN\", dialCode: \"+504\", flagKey: \"Honduras\" },\n { name: \"Hong Kong\", iso2: \"HK\", dialCode: \"+852\", flagKey: \"HongKong\" },\n { name: \"Hungary\", iso2: \"HU\", dialCode: \"+36\", flagKey: \"Hungary\" },\n { name: \"Iceland\", iso2: \"IS\", dialCode: \"+354\", flagKey: \"Iceland\" },\n { name: \"India\", iso2: \"IN\", dialCode: \"+91\", flagKey: \"India\" },\n { name: \"Indonesia\", iso2: \"ID\", dialCode: \"+62\", flagKey: \"Indonesia\" },\n { name: \"Iran\", iso2: \"IR\", dialCode: \"+98\", flagKey: \"Iran\" },\n { name: \"Iraq\", iso2: \"IQ\", dialCode: \"+964\", flagKey: \"Iraq\" },\n { name: \"Ireland\", iso2: \"IE\", dialCode: \"+353\", flagKey: \"Ireland\" },\n { name: \"Israel\", iso2: \"IL\", dialCode: \"+972\", flagKey: \"Israel\" },\n { name: \"Italy\", iso2: \"IT\", dialCode: \"+39\", flagKey: \"Italy\" },\n { name: \"Jamaica\", iso2: \"JM\", dialCode: \"+1876\", flagKey: \"Jamaica\" },\n { name: \"Japan\", iso2: \"JP\", dialCode: \"+81\", flagKey: \"Japan\" },\n { name: \"Jordan\", iso2: \"JO\", dialCode: \"+962\", flagKey: \"Jordan\" },\n { name: \"Kazakhstan\", iso2: \"KZ\", dialCode: \"+7\", flagKey: \"Kazakhstan\" },\n { name: \"Kenya\", iso2: \"KE\", dialCode: \"+254\", flagKey: \"Kenya\" },\n { name: \"Kiribati\", iso2: \"KI\", dialCode: \"+686\", flagKey: \"Kiribati\" },\n { name: \"Kuwait\", iso2: \"KW\", dialCode: \"+965\", flagKey: \"Kuwait\" },\n { name: \"Kyrgyzstan\", iso2: \"KG\", dialCode: \"+996\", flagKey: \"Kyrgyzstan\" },\n { name: \"Laos\", iso2: \"LA\", dialCode: \"+856\", flagKey: \"Laos\" },\n { name: \"Latvia\", iso2: \"LV\", dialCode: \"+371\", flagKey: \"Latvia\" },\n { name: \"Lebanon\", iso2: \"LB\", dialCode: \"+961\", flagKey: \"Lebanon\" },\n { name: \"Lesotho\", iso2: \"LS\", dialCode: \"+266\", flagKey: \"Lesotho\" },\n { name: \"Liberia\", iso2: \"LR\", dialCode: \"+231\", flagKey: \"Liberia\" },\n { name: \"Libya\", iso2: \"LY\", dialCode: \"+218\", flagKey: \"Libya\" },\n { name: \"Liechtenstein\", iso2: \"LI\", dialCode: \"+423\", flagKey: \"Liechtenstein\" },\n { name: \"Lithuania\", iso2: \"LT\", dialCode: \"+370\", flagKey: \"Lithuania\" },\n { name: \"Luxembourg\", iso2: \"LU\", dialCode: \"+352\", flagKey: \"Luxembourg\" },\n { name: \"Macau\", iso2: \"MO\", dialCode: \"+853\", flagKey: \"Macau\" },\n { name: \"Macedonia\", iso2: \"MK\", dialCode: \"+389\", flagKey: \"Macedonia\" },\n { name: \"Madagascar\", iso2: \"MG\", dialCode: \"+261\", flagKey: \"Madagascar\" },\n { name: \"Malawi\", iso2: \"MW\", dialCode: \"+265\", flagKey: \"Malawi\" },\n { name: \"Malaysia\", iso2: \"MY\", dialCode: \"+60\", flagKey: \"Malaysia\" },\n { name: \"Maldives\", iso2: \"MV\", dialCode: \"+960\", flagKey: \"Maldives\" },\n { name: \"Mali\", iso2: \"ML\", dialCode: \"+223\", flagKey: \"Mali\" },\n { name: \"Malta\", iso2: \"MT\", dialCode: \"+356\", flagKey: \"Malta\" },\n { name: \"Marshall Islands\", iso2: \"MH\", dialCode: \"+692\", flagKey: \"MarshallIslands\" },\n { name: \"Martinique\", iso2: \"MQ\", dialCode: \"+596\", flagKey: \"Martinique\" },\n { name: \"Mauritania\", iso2: \"MR\", dialCode: \"+222\", flagKey: \"Mauritania\" },\n { name: \"Mauritius\", iso2: \"MU\", dialCode: \"+230\", flagKey: \"Mauritius\" },\n { name: \"Mexico\", iso2: \"MX\", dialCode: \"+52\", flagKey: \"Mexico\" },\n { name: \"Micronesia\", iso2: \"FM\", dialCode: \"+691\", flagKey: \"Micronesia\" },\n { name: \"Moldova\", iso2: \"MD\", dialCode: \"+373\", flagKey: \"Moldova\" },\n { name: \"Monaco\", iso2: \"MC\", dialCode: \"+377\", flagKey: \"Monaco\" },\n { name: \"Mongolia\", iso2: \"MN\", dialCode: \"+976\", flagKey: \"Mongolia\" },\n { name: \"Montenegro\", iso2: \"ME\", dialCode: \"+382\", flagKey: \"Montenegro\" },\n { name: \"Montserrat\", iso2: \"MS\", dialCode: \"+1664\", flagKey: \"Montserrat\" },\n { name: \"Morocco\", iso2: \"MA\", dialCode: \"+212\", flagKey: \"Morocco\" },\n { name: \"Mozambique\", iso2: \"MZ\", dialCode: \"+258\", flagKey: \"Mozambique\" },\n { name: \"Myanmar\", iso2: \"MM\", dialCode: \"+95\", flagKey: \"Myanmar\" },\n { name: \"Namibia\", iso2: \"NA\", dialCode: \"+264\", flagKey: \"Namibia\" },\n { name: \"Nauru\", iso2: \"NR\", dialCode: \"+674\", flagKey: \"Nauru\" },\n { name: \"Nepal\", iso2: \"NP\", dialCode: \"+977\", flagKey: \"Nepal\" },\n { name: \"Netherlands\", iso2: \"NL\", dialCode: \"+31\", flagKey: \"Netherland\" },\n { name: \"New Caledonia\", iso2: \"NC\", dialCode: \"+687\", flagKey: \"NewCaledonia\" },\n { name: \"New Zealand\", iso2: \"NZ\", dialCode: \"+64\", flagKey: \"NewZealand\" },\n { name: \"Nicaragua\", iso2: \"NI\", dialCode: \"+505\", flagKey: \"Nicaragua\" },\n { name: \"Niger\", iso2: \"NE\", dialCode: \"+227\", flagKey: \"Niger\" },\n { name: \"Nigeria\", iso2: \"NG\", dialCode: \"+234\", flagKey: \"Nigeria\" },\n { name: \"Niue\", iso2: \"NU\", dialCode: \"+683\", flagKey: \"Niue\" },\n { name: \"Northern Mariana Islands\", iso2: \"MP\", dialCode: \"+1670\", flagKey: \"NorthernMarianaIslands\" },\n { name: \"North Korea\", iso2: \"KP\", dialCode: \"+850\", flagKey: \"NorthKorea\" },\n { name: \"Norway\", iso2: \"NO\", dialCode: \"+47\", flagKey: \"Norway\" },\n { name: \"Oman\", iso2: \"OM\", dialCode: \"+968\", flagKey: \"Oman\" },\n { name: \"Pakistan\", iso2: \"PK\", dialCode: \"+92\", flagKey: \"Pakistan\" },\n { name: \"Palau\", iso2: \"PW\", dialCode: \"+680\", flagKey: \"Palau\" },\n { name: \"Palestine\", iso2: \"PS\", dialCode: \"+970\", flagKey: \"Palestine\" },\n { name: \"Panama\", iso2: \"PA\", dialCode: \"+507\", flagKey: \"Panama\" },\n { name: \"Papua New Guinea\", iso2: \"PG\", dialCode: \"+675\", flagKey: \"PapuaNewGuinea\" },\n { name: \"Paraguay\", iso2: \"PY\", dialCode: \"+595\", flagKey: \"Paraguay\" },\n { name: \"Peru\", iso2: \"PE\", dialCode: \"+51\", flagKey: \"Peru\" },\n { name: \"Philippines\", iso2: \"PH\", dialCode: \"+63\", flagKey: \"Philippines\" },\n { name: \"Poland\", iso2: \"PL\", dialCode: \"+48\", flagKey: \"Poland\" },\n { name: \"Portugal\", iso2: \"PT\", dialCode: \"+351\", flagKey: \"Portugal\" },\n { name: \"Puerto Rico\", iso2: \"PR\", dialCode: \"+1787\", flagKey: \"PuertoRico\" },\n { name: \"Qatar\", iso2: \"QA\", dialCode: \"+974\", flagKey: \"Qatar\" },\n { name: \"Romania\", iso2: \"RO\", dialCode: \"+40\", flagKey: \"Romania\" },\n { name: \"Russia\", iso2: \"RU\", dialCode: \"+7\", flagKey: \"Russia\" },\n { name: \"Rwanda\", iso2: \"RW\", dialCode: \"+250\", flagKey: \"Rwanda\" },\n { name: \"Saint Kitts and Nevis\", iso2: \"KN\", dialCode: \"+1869\", flagKey: \"SaintKittsAndNevis\" },\n { name: \"Saint Lucia\", iso2: \"LC\", dialCode: \"+1758\", flagKey: \"SaintLucia\" },\n { name: \"Saint Vincent and the Grenadines\", iso2: \"VC\", dialCode: \"+1784\", flagKey: \"SaintVincentAndGrenadines\" },\n { name: \"Samoa\", iso2: \"WS\", dialCode: \"+685\", flagKey: \"Samoa\" },\n { name: \"San Marino\", iso2: \"SM\", dialCode: \"+378\", flagKey: \"SanMarino\" },\n { name: \"São Tomé and Príncipe\", iso2: \"ST\", dialCode: \"+239\", flagKey: \"SaoTomeAndPrincipe\" },\n { name: \"Saudi Arabia\", iso2: \"SA\", dialCode: \"+966\", flagKey: \"SaudiArabia\" },\n { name: \"Senegal\", iso2: \"SN\", dialCode: \"+221\", flagKey: \"Senegal\" },\n { name: \"Serbia\", iso2: \"RS\", dialCode: \"+381\", flagKey: \"Serbia\" },\n { name: \"Seychelles\", iso2: \"SC\", dialCode: \"+248\", flagKey: \"Seychelles\" },\n { name: \"Sierra Leone\", iso2: \"SL\", dialCode: \"+232\", flagKey: \"SeirraLeone\" },\n { name: \"Singapore\", iso2: \"SG\", dialCode: \"+65\", flagKey: \"Singapore\" },\n { name: \"Slovakia\", iso2: \"SK\", dialCode: \"+421\", flagKey: \"Slovakia\" },\n { name: \"Slovenia\", iso2: \"SI\", dialCode: \"+386\", flagKey: \"Slovenia\" },\n { name: \"Solomon Islands\", iso2: \"SB\", dialCode: \"+677\", flagKey: \"SolomonIslands\" },\n { name: \"Somalia\", iso2: \"SO\", dialCode: \"+252\", flagKey: \"Somalia\" },\n { name: \"South Africa\", iso2: \"ZA\", dialCode: \"+27\", flagKey: \"SouthAfrica\" },\n { name: \"South Korea\", iso2: \"KR\", dialCode: \"+82\", flagKey: \"SouthKorea\" },\n { name: \"South Sudan\", iso2: \"SS\", dialCode: \"+211\", flagKey: \"SouthSudan\" },\n { name: \"Spain\", iso2: \"ES\", dialCode: \"+34\", flagKey: \"Spain\" },\n { name: \"Sri Lanka\", iso2: \"LK\", dialCode: \"+94\", flagKey: \"SriLanka\" },\n { name: \"Sudan\", iso2: \"SD\", dialCode: \"+249\", flagKey: \"Sudan\" },\n { name: \"Suriname\", iso2: \"SR\", dialCode: \"+597\", flagKey: \"Suriname\" },\n { name: \"Swaziland\", iso2: \"SZ\", dialCode: \"+268\", flagKey: \"Swaziland\" },\n { name: \"Sweden\", iso2: \"SE\", dialCode: \"+46\", flagKey: \"Sweden\" },\n { name: \"Switzerland\", iso2: \"CH\", dialCode: \"+41\", flagKey: \"Switzerland\" },\n { name: \"Syria\", iso2: \"SY\", dialCode: \"+963\", flagKey: \"Syria\" },\n { name: \"Taiwan\", iso2: \"TW\", dialCode: \"+886\", flagKey: \"Taiwan\" },\n { name: \"Tajikistan\", iso2: \"TJ\", dialCode: \"+992\", flagKey: \"Tajikistan\" },\n { name: \"Tanzania\", iso2: \"TZ\", dialCode: \"+255\", flagKey: \"Tanzania\" },\n { name: \"Thailand\", iso2: \"TH\", dialCode: \"+66\", flagKey: \"Thailand\" },\n { name: \"Timor-Leste\", iso2: \"TL\", dialCode: \"+670\", flagKey: \"TimorLeste\" },\n { name: \"Togo\", iso2: \"TG\", dialCode: \"+228\", flagKey: \"Togo\" },\n { name: \"Tonga\", iso2: \"TO\", dialCode: \"+676\", flagKey: \"Tonga\" },\n { name: \"Trinidad and Tobago\", iso2: \"TT\", dialCode: \"+1868\", flagKey: \"TrinidadAndTobago\" },\n { name: \"Tunisia\", iso2: \"TN\", dialCode: \"+216\", flagKey: \"Tunisia\" },\n { name: \"Turkey\", iso2: \"TR\", dialCode: \"+90\", flagKey: \"Turkey\" },\n { name: \"Turkmenistan\", iso2: \"TM\", dialCode: \"+993\", flagKey: \"Turkmenistan\" },\n { name: \"Turks and Caicos Islands\", iso2: \"TC\", dialCode: \"+1649\", flagKey: \"TurksAndCaicosIslands\" },\n { name: \"Tuvalu\", iso2: \"TV\", dialCode: \"+688\", flagKey: \"Tuvalu\" },\n { name: \"Uganda\", iso2: \"UG\", dialCode: \"+256\", flagKey: \"Uganda\" },\n { name: \"Ukraine\", iso2: \"UA\", dialCode: \"+380\", flagKey: \"Ukraine\" },\n { name: \"United Arab Emirates\", iso2: \"AE\", dialCode: \"+971\", flagKey: \"UnitedArabEmirates\" },\n { name: \"United Kingdom\", iso2: \"GB\", dialCode: \"+44\", flagKey: \"UnitedKingdom\" },\n { name: \"United States\", iso2: \"US\", dialCode: \"+1\", flagKey: \"Usa\" },\n { name: \"Uruguay\", iso2: \"UY\", dialCode: \"+598\", flagKey: \"Uruguay\" },\n { name: \"Uzbekistan\", iso2: \"UZ\", dialCode: \"+998\", flagKey: \"Uzbekistan\" },\n { name: \"Vanuatu\", iso2: \"VU\", dialCode: \"+678\", flagKey: \"Vanuatu\" },\n { name: \"Vatican City\", iso2: \"VA\", dialCode: \"+379\", flagKey: \"VaticanCity\" },\n { name: \"Venezuela\", iso2: \"VE\", dialCode: \"+58\", flagKey: \"Venezuela\" },\n { name: \"Vietnam\", iso2: \"VN\", dialCode: \"+84\", flagKey: \"Vietnam\" },\n { name: \"Wallis and Futuna\", iso2: \"WF\", dialCode: \"+681\", flagKey: \"WallisAndFutuna\" },\n { name: \"Yemen\", iso2: \"YE\", dialCode: \"+967\", flagKey: \"Yemen\" },\n { name: \"Zambia\", iso2: \"ZM\", dialCode: \"+260\", flagKey: \"Zambia\" },\n { name: \"Zimbabwe\", iso2: \"ZW\", dialCode: \"+263\", flagKey: \"Zimbabwe\" },\n]\n\nexport const DEFAULT_COUNTRY: Country = COUNTRIES.find((c) => c.iso2 === \"AD\")!\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\"\n\nimport { cn } from \"../../lib/utils\"\nimport { DEFAULT_COUNTRY, type Country } from \"../../lib/countries\"\nimport { Input } from \"./input\"\nimport { Label } from \"./label\"\nimport { PhoneInput, type PhoneInputStatus } from \"./phone-input\"\nimport { Tag } from \"./tag\"\n\ninterface EmailOrPhoneInputProps {\n /** Label text — \"Email/Phone number\". */\n label?: string\n /** \"floating\" floats the label inside the field; \"external\" renders it above. */\n labelVariant?: \"floating\" | \"external\"\n /** Placeholder shown in email mode for the external variant. */\n placeholder?: string\n /** Initial dial code once the field morphs to phone mode. Defaults to +376 (AD). */\n defaultDialCode?: string\n status?: PhoneInputStatus\n helperText?: string\n disabled?: boolean\n defaultValue?: string\n onValueChange?: (value: string, mode: \"email\" | \"phone\", dialCode?: string) => void\n className?: string\n /** Shows an emerald \"Last used\" badge clipped above the top-right corner of the field. */\n showLastUsed?: boolean\n}\n\n/* A login field that accepts an email but auto-morphs into a PhoneInput the\n * moment the user types 2+ leading digits, carrying the typed digits across.\n * Typing any non-digit (or clearing the digits) reverts to the email field,\n * keeping the typed characters — so emails like \"123456john@gmail.com\" work. */\nfunction EmailOrPhoneInput({\n label = \"Email/Phone number\",\n labelVariant = \"floating\",\n placeholder = \"Email or phone (without country code)\",\n defaultDialCode = DEFAULT_COUNTRY.dialCode,\n status = \"default\",\n helperText,\n disabled,\n defaultValue = \"\",\n onValueChange,\n className,\n showLastUsed = false,\n}: EmailOrPhoneInputProps) {\n const [value, setValue] = React.useState(defaultValue)\n const [dialCode, setDialCode] = React.useState(defaultDialCode)\n\n // Phone mode = 2+ leading digits AND nothing but digits. The moment a\n // non-digit appears anywhere (letter, \"@\", \".\"), this fails and the field\n // reverts to email — so values like \"123456afiq@gmail.com\" can be typed.\n const isPhone = /^\\d{2,}$/.test(value)\n\n // When the field morphs phone → email (deleting digits down past 2), React\n // swaps PhoneInput for a freshly-mounted Input, which would otherwise drop\n // focus + caret — stranding the last digit. On that transition, re-focus the\n // email Input and drop the caret at the end so the next backspace clears it,\n // mirroring PhoneInput's autoFocus on the opposite swap.\n const emailInputRef = React.useRef<HTMLInputElement>(null)\n const wasPhone = React.useRef(isPhone)\n React.useEffect(() => {\n if (wasPhone.current && !isPhone) {\n const el = emailInputRef.current\n if (el) {\n el.focus()\n const end = el.value.length\n el.setSelectionRange(end, end)\n }\n }\n wasPhone.current = isPhone\n }, [isPhone])\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const next = e.target.value\n setValue(next)\n onValueChange?.(next, /^\\d{2,}$/.test(next) ? \"phone\" : \"email\", dialCode)\n }\n\n const handleDialChange = (code: string, _country: Country) => {\n setDialCode(code)\n onValueChange?.(value, \"phone\", code)\n }\n\n const lastUsedTag = showLastUsed ? (\n <Tag variant=\"fill-emerald\" size=\"2xs\" className=\"absolute right-0 -top-2 pointer-events-none\">\n Last used\n </Tag>\n ) : null\n\n if (isPhone) {\n return (\n <div className={cn(\"relative w-full\", className)}>\n <PhoneInput\n floatingLabel={labelVariant === \"floating\"}\n label={labelVariant === \"external\" ? label : undefined}\n fieldLabel={label}\n value={value}\n onChange={handleChange}\n dialCode={dialCode}\n onDialCodeChange={handleDialChange}\n status={status}\n helperText={helperText}\n disabled={disabled}\n allowNonNumeric\n autoFocus\n />\n {lastUsedTag}\n </div>\n )\n }\n\n // Email mode\n if (labelVariant === \"external\") {\n return (\n <div className={cn(\"w-full\", className)}>\n <Label className=\"mb-[var(--semantic-size-spacing-8)] text-prominent\">{label}</Label>\n <div className=\"relative\">\n <Input\n ref={emailInputRef}\n labeled={false}\n label={placeholder}\n value={value}\n onChange={handleChange}\n status={status}\n helperText={helperText}\n disabled={disabled}\n inputMode=\"email\"\n />\n {lastUsedTag}\n </div>\n </div>\n )\n }\n\n return (\n <div className={cn(\"relative w-full\", className)}>\n <Input\n ref={emailInputRef}\n label={label}\n value={value}\n onChange={handleChange}\n status={status}\n helperText={helperText}\n disabled={disabled}\n inputMode=\"email\"\n />\n {lastUsedTag}\n </div>\n )\n}\n\nexport { EmailOrPhoneInput }\nexport type { EmailOrPhoneInputProps }\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\" className=\"size-4\" />\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\" className=\"size-4\" />\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-5\",\n md: \"[font-size:var(--link-md-font-size)] [font-weight:var(--link-md-font-weight)] [&_svg:not([class*='size-'])]:size-5\",\n sm: \"[font-size:var(--link-sm-font-size)] [font-weight:var(--link-sm-font-weight)] [&_svg:not([class*='size-'])]:size-4\",\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: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-6\" />\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-6\" />\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 { 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 an info icon 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: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-6 shrink-0 text-field-text-error\" />\n )}\n {status === \"success\" && !readOnly && !disabled && (\n <Icon name=\"circle-check\" className=\"size-6 shrink-0 text-field-text-success\" />\n )}\n\n {/* Chevron */}\n <SelectPrimitive.Icon asChild>\n <Icon name=\"chevron-down\" className={cn(\"size-5 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-5\" />\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-5\" />\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-5\" />\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\" className=\"size-5\" />\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-5 [&>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-5 [&>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-5 [&>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-5 [&>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-5 [&>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-5\" />\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-5\" />\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-4\" : \"size-5\"\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: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 \"cursor-pointer\",\n \"hover:bg-segmented-control-segment-bg-hover\",\n \"active:bg-segmented-control-segment-bg-pressed\",\n // disabled\n \"disabled:cursor-not-allowed 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 \"cursor-pointer text-tab-text border border-transparent\",\n \"hover:bg-transparent hover:text-primary\",\n \"active:bg-tab-bg-pressed\",\n // disabled\n \"disabled:cursor-not-allowed 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-5\",\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:cursor-not-allowed 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-6 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-6\" />\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-6\" />\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-5 ${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-5\" /> : <Icon name=\"eye-slash\" className=\"size-5\" />}\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-center 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-5\" />\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-5\" /> : <Icon name=\"eye-slash\" className=\"size-5\" />}\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-5 ${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-5 ${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-6\" /> : <Icon name=\"eye-slash\" className=\"size-6\" />}\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-5 ${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\";\nimport { DerivLightMt5GoldIcon } from \"@deriv/quill-icons/Illustration\";\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 <DerivLightMt5GoldIcon 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\";\nimport { DerivLightMt5GoldIcon } from \"@deriv/quill-icons/Illustration\";\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-6\" />\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-6\" /> : <Icon name=\"eye-slash\" className=\"size-6\" />}\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 <DerivLightMt5GoldIcon 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 (Quill LabelPairedSparklesMdBold 16×24) 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 16 24'%3E%3Cpath d='M10.219 6.688 12 6l.656-1.75c.031-.156.188-.25.344-.25.125 0 .281.094.313.25L14 6l1.75.688c.156.03.25.187.25.312 0 .156-.094.313-.25.344L14 8l-.687 1.781c-.032.125-.188.219-.313.219-.156 0-.312-.094-.344-.219L12 8l-1.781-.656C10.094 7.312 10 7.156 10 7c0-.125.094-.281.219-.312M.28 11.5l.532-.219.25-.125h.03l2.75-1.281 1.282-2.781.125-.25.25-.532A.47.47 0 0 1 5.938 6c.187 0 .375.125.468.313l.25.53.094.25.031.032 1.25 2.75 2.781 1.281.25.125.532.25a.47.47 0 0 1 .312.438.55.55 0 0 1-.312.469l-.531.218-.25.125-2.782 1.281-1.281 2.75v.032l-.125.25-.219.531a.55.55 0 0 1-.468.313.47.47 0 0 1-.438-.313l-.25-.531-.125-.25v-.032l-1.281-2.75-2.75-1.28h-.032l-.25-.126-.53-.219A.52.52 0 0 1 0 11.97c0-.188.094-.375.281-.469m2.594.469 1.594.75c.312.125.593.406.75.719l.718 1.593.75-1.594c.157-.312.407-.593.72-.718L9 11.969l-1.594-.75c-.312-.125-.562-.406-.718-.719l-.75-1.594-.72 1.594c-.155.313-.437.594-.75.719zM12 16l.656-1.75c.031-.156.188-.25.344-.25.125 0 .281.094.313.25L14 16l1.75.688c.156.03.25.187.25.312 0 .156-.094.313-.25.344L14 18l-.687 1.781c-.032.125-.188.219-.313.219-.156 0-.312-.094-.344-.219L12 18l-1.781-.656C10.094 17.312 10 17.156 10 17c0-.125.094-.281.219-.312z'/%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-6\" />;\n if (id === \"cfds\") return <Icon name=\"chart-candlestick\" weight={selected ? \"bold\" : \"regular\"} className=\"size-6\" />;\n if (id === \"options\") return <Icon name=\"options\" weight={selected ? \"fill\" : \"regular\"} className=\"size-6\" />;\n if (id === \"portfolio\") return <Icon name=\"wallet\" weight={selected ? \"fill\" : \"regular\"} className=\"size-6\" />;\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-5\" />\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-6\" />\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","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { Tag } from \"@/components/ui/tag\";\nimport {\n SegmentedControl,\n SegmentedControlList,\n SegmentedControlTrigger,\n} from \"@/components/ui/segmented-control\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Section (block)\n 1:1 with Figma \"section (slots)\" — node 10560:87036.\n A section header pattern: eyebrow tag, title (+ chevron), an optional\n right-aligned control cluster (button / nav arrows / compact switcher),\n a description, an optional full-width segmented control, and a content slot.\n ────────────────────────────────────────────────────────────────────────── */\n\nexport type SectionTitleSize =\n | \"titleLg\"\n | \"titleMd\"\n | \"titleSm\"\n | \"titleCaption\"\n | \"loading\";\n\nconst TITLE_SIZE_CLASS: Record<Exclude<SectionTitleSize, \"loading\">, string> = {\n titleLg: \"text-lg font-bold leading-7\", // body/lg/bold — 18px / 700 / 28px\n titleMd: \"text-base font-bold leading-6\", // body/md/bold — 16px / 700 / 24px\n titleSm: \"text-sm font-bold leading-5\", // body/sm/bold — 14px / 700 / 20px\n titleCaption: \"text-xs font-bold leading-[18px]\", // caption/bold — 12px / 700 / 18px\n};\n\nconst SKELETON_WIDTH: Record<Exclude<SectionTitleSize, \"loading\">, string> = {\n titleLg: \"h-7 w-40\",\n titleMd: \"h-6 w-36\",\n titleSm: \"h-5 w-32\",\n titleCaption: \"h-[18px] w-28\",\n};\n\nexport interface SectionTag {\n label: string;\n /** Show a leading icon inside the tag. */\n showIcon?: boolean;\n /** Icon name (defaults to a sparkle) when showIcon is true. */\n icon?: React.ComponentProps<typeof Icon>[\"name\"];\n}\n\nexport interface SectionProps {\n /** Section title text. */\n title?: string;\n /** Supporting description below the title row. */\n description?: string;\n /** Title typography size, or \"loading\" to render a skeleton title. */\n titleSize?: SectionTitleSize;\n\n /** Eyebrow tag above the title. */\n showTag?: boolean;\n tag?: SectionTag;\n\n showTitle?: boolean;\n /** Trailing chevron next to the title (affordance for \"see all\"). */\n showChevron?: boolean;\n /** Click handler for the title row (when it acts as a link). */\n onTitleClick?: () => void;\n\n /** Right-aligned control cluster (button + navigation + compact switcher). */\n showControlSection?: boolean;\n\n /** Grey pill button inside the control cluster. */\n showButton?: boolean;\n buttonLabel?: string;\n onButtonClick?: () => void;\n\n /** Grey previous/next chevron control. */\n showNavigation?: boolean;\n onPrev?: () => void;\n onNext?: () => void;\n\n /** Compact segmented control inside the control cluster (desktop). */\n controlSegments?: string[];\n\n showDescription?: boolean;\n\n /** Full-width segmented control below the description. */\n showSegmentedControl?: boolean;\n segments?: string[];\n value?: string;\n onValueChange?: (value: string) => void;\n\n /** Content rendered in the section's slot. */\n children?: React.ReactNode;\n className?: string;\n}\n\n/* Grey pill button — matches the 24px control in Figma. */\nfunction GreyButton({\n label,\n onClick,\n}: {\n label: string;\n onClick?: () => void;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className=\"inline-flex h-6 shrink-0 items-center justify-center rounded-2xl bg-[var(--background-default-opacity-default)] px-4 text-xs font-normal text-prominent transition-colors hover:bg-[var(--background-hover-default)]\"\n >\n {label}\n </button>\n );\n}\n\n/* Grey previous/next chevron control — two joined 24px buttons. */\nfunction GreyNav({\n onPrev,\n onNext,\n}: {\n onPrev?: () => void;\n onNext?: () => void;\n}) {\n return (\n <div className=\"flex shrink-0 items-center gap-[2px]\">\n <button\n type=\"button\"\n onClick={onPrev}\n aria-label=\"Previous\"\n className=\"flex size-6 items-center justify-center rounded-l-full bg-[var(--background-default-opacity-default)] text-prominent transition-colors hover:bg-[var(--background-hover-default)]\"\n >\n <Icon name=\"chevron-left\" className=\"size-5\" aria-hidden />\n </button>\n <button\n type=\"button\"\n onClick={onNext}\n aria-label=\"Next\"\n className=\"flex size-6 items-center justify-center rounded-r-full bg-[var(--background-default-opacity-default)] text-prominent transition-colors hover:bg-[var(--background-hover-default)]\"\n >\n <Icon name=\"chevron-right\" className=\"size-5\" aria-hidden />\n </button>\n </div>\n );\n}\n\nexport function Section({\n title = \"Title\",\n description = \"Description goes here\",\n titleSize = \"titleLg\",\n showTag = false,\n tag = { label: \"Label\" },\n showTitle = true,\n showChevron = false,\n onTitleClick,\n showControlSection = false,\n showButton = false,\n buttonLabel = \"Label\",\n onButtonClick,\n showNavigation = false,\n onPrev,\n onNext,\n controlSegments = [\"Label\", \"Label\"],\n showDescription = false,\n showSegmentedControl = false,\n segments = [\"Label\", \"Label\"],\n value,\n onValueChange,\n children,\n className,\n}: SectionProps) {\n const isLoading = titleSize === \"loading\";\n const sizeKey: Exclude<SectionTitleSize, \"loading\"> = isLoading\n ? \"titleLg\"\n : titleSize;\n\n const TitleTag = onTitleClick ? \"button\" : \"div\";\n\n return (\n <section\n className={cn(\n \"flex w-full max-w-[608px] flex-col gap-4 bg-primary-surface px-6\",\n className,\n )}\n data-slot=\"section\"\n >\n {/* container - title */}\n <div className=\"flex w-full flex-col justify-center gap-2\">\n {showTag && (\n <Tag variant=\"outline-neutral\" size=\"2xs\">\n {tag.showIcon && (\n <Icon name={tag.icon ?? \"sparkles\"} aria-hidden />\n )}\n {tag.label}\n </Tag>\n )}\n\n {/* title, chevron, control section */}\n <div className=\"flex w-full items-center justify-between gap-4\">\n {showTitle && (\n <TitleTag\n type={onTitleClick ? \"button\" : undefined}\n onClick={onTitleClick}\n className={cn(\n \"flex min-w-0 flex-1 items-center gap-2\",\n onTitleClick && \"cursor-pointer text-left\",\n )}\n >\n {isLoading ? (\n <Skeleton className={SKELETON_WIDTH[sizeKey]} />\n ) : (\n <>\n <span\n className={cn(\n \"truncate text-prominent\",\n TITLE_SIZE_CLASS[sizeKey],\n )}\n >\n {title}\n </span>\n {showChevron && (\n <Icon\n name=\"chevron-right\"\n weight=\"fill\"\n className=\"size-6 shrink-0 text-prominent\"\n aria-hidden\n />\n )}\n </>\n )}\n </TitleTag>\n )}\n\n {showControlSection && (\n <div className=\"flex shrink-0 items-center gap-2\">\n {showButton && (\n <GreyButton label={buttonLabel} onClick={onButtonClick} />\n )}\n {showNavigation && <GreyNav onPrev={onPrev} onNext={onNext} />}\n <SegmentedControl defaultValue=\"seg-0\" className=\"w-[200px]\">\n <SegmentedControlList size=\"md\" className=\"w-full\">\n {controlSegments.map((label, i) => (\n <SegmentedControlTrigger key={i} value={`seg-${i}`}>\n {label}\n </SegmentedControlTrigger>\n ))}\n </SegmentedControlList>\n </SegmentedControl>\n </div>\n )}\n </div>\n\n {showDescription && (\n <p className=\"body-md min-w-full text-subtle\">{description}</p>\n )}\n </div>\n\n {/* container - full-width segmented control */}\n {showSegmentedControl && (\n <SegmentedControl\n value={value}\n onValueChange={onValueChange}\n defaultValue={value ? undefined : \"seg-0\"}\n className=\"w-full\"\n >\n <SegmentedControlList size=\"md\" className=\"w-full\">\n {segments.map((label, i) => (\n <SegmentedControlTrigger key={i} value={`seg-${i}`}>\n {label}\n </SegmentedControlTrigger>\n ))}\n </SegmentedControlList>\n </SegmentedControl>\n )}\n\n {/* slot */}\n {children}\n </section>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { DerivLightMt5StandardIcon } from \"@deriv/quill-icons/Illustration\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { Tag } from \"@/components/ui/tag\";\nimport { HeroActionButton } from \"./hero-action-button\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Trading Account Card (block)\n 1:1 with Figma \"card / trading account\" — mobile node 32858:12607,\n desktop node 32989:24677.\n\n A trading-account summary card with a logo, subtitle/title, optional\n verification affordances, and a Trade / Transfer / Details action cluster.\n\n Responsive by default: renders the mobile layout below the `md` breakpoint\n and the desktop layout from `md` up (CSS-only, SSR-safe). Pass `layout` to\n force a single layout (used by the playground to show both side by side).\n ────────────────────────────────────────────────────────────────────────── */\n\nexport type TradingAccountCardLayout = \"mobile\" | \"desktop\";\nexport type TradingAccountCardType = \"loading\" | \"real\" | \"demo\";\n\nexport interface TradingAccountCardProps {\n /** Force a layout. Omit (default) = responsive: mobile < md, desktop ≥ md. */\n layout?: TradingAccountCardLayout;\n /** Card state. \"loading\" renders skeletons. */\n type?: TradingAccountCardType;\n /** Account name (bold). */\n subtitle?: string;\n /** Balance / supporting line below the subtitle. */\n title?: string;\n /** Account logo — Quill illustration component or image src. Falls back to a neutral block. */\n logo?: React.ReactNode;\n /** @deprecated use `logo` instead */\n logoSrc?: string;\n /** real only — \"Verification required\" tag next to the title. */\n verificationTag?: boolean;\n /** real only — standalone warning icon next to the title. */\n showVerificationNeeded?: boolean;\n /** desktop only — refresh icon next to the subtitle. */\n showIconRefresh?: boolean;\n onTrade?: () => void;\n onTransfer?: () => void;\n onDetails?: () => void;\n className?: string;\n}\n\n/* Action-cluster icons wrapped as ElementType for HeroActionButton. */\nconst TradeIcon = ({ className }: { className?: string }) => (\n <Icon name=\"chart-candlestick\" className={className} />\n);\nconst TransferIcon = ({ className }: { className?: string }) => (\n <Icon name=\"arrow-right-arrow-left\" className={className} />\n);\nconst DetailsIcon = ({ className }: { className?: string }) => (\n <Icon name=\"ellipsis\" className={className} />\n);\n\n/* Account logo — Quill illustration, legacy src, or neutral placeholder. */\nfunction Logo({ node, src, loading }: { node?: React.ReactNode; src?: string; loading?: boolean }) {\n if (loading) {\n return <Skeleton className=\"size-12 shrink-0 rounded-lg\" />;\n }\n return (\n <div className=\"relative size-12 shrink-0 overflow-hidden rounded-lg\">\n {node ?? (src ? (\n <img\n alt=\"\"\n src={src}\n className=\"absolute inset-0 size-full object-cover\"\n />\n ) : (\n <div className=\"size-full bg-[var(--background-default-opacity-default)]\" />\n ))}\n </div>\n );\n}\n\n/* Verification required tag / standalone warning. */\nfunction TitleTags({\n type,\n verificationTag,\n showVerificationNeeded,\n}: Pick<\n TradingAccountCardProps,\n \"type\" | \"verificationTag\" | \"showVerificationNeeded\"\n>) {\n return (\n <>\n {type === \"real\" && showVerificationNeeded && (\n <Icon\n name=\"circle-exclamation\"\n weight=\"regular\"\n className=\"size-6 shrink-0 text-warning\"\n aria-label=\"Verification needed\"\n />\n )}\n {type === \"real\" && verificationTag && (\n <Tag variant=\"outline-yellow\" size=\"2xs\" className=\"shrink-0\">\n <Icon name=\"circle-exclamation\" aria-hidden />\n Verification required\n </Tag>\n )}\n {type === \"demo\" && (\n <Tag variant=\"outline-neutral\" size=\"2xs\" className=\"shrink-0\">\n Demo\n </Tag>\n )}\n </>\n );\n}\n\n/* Title + subtitle column, shared by both layouts. */\nfunction TitleBlock({\n type,\n subtitle,\n title,\n verificationTag,\n showVerificationNeeded,\n showIconRefresh,\n}: Pick<\n TradingAccountCardProps,\n | \"type\"\n | \"subtitle\"\n | \"title\"\n | \"verificationTag\"\n | \"showVerificationNeeded\"\n | \"showIconRefresh\"\n>) {\n if (type === \"loading\") {\n return (\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <Skeleton className=\"h-4 w-32 rounded-full\" />\n <Skeleton className=\"h-2 w-16 rounded-full\" />\n </div>\n );\n }\n\n return (\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <div className=\"flex items-center gap-2\">\n <span className=\"truncate text-lg font-bold leading-7 text-prominent\">\n {subtitle}\n </span>\n {showIconRefresh && (\n <Icon\n name=\"rotate-right\"\n weight=\"fill\"\n className=\"size-6 shrink-0 text-prominent\"\n aria-label=\"Refresh\"\n />\n )}\n </div>\n <div className=\"flex items-center gap-1\">\n <span className=\"whitespace-nowrap text-base leading-6 text-subtle\">\n {title}\n </span>\n <TitleTags\n type={type}\n verificationTag={verificationTag}\n showVerificationNeeded={showVerificationNeeded}\n />\n </div>\n </div>\n );\n}\n\n/* Trade / Transfer / Details cluster, shared by both layouts. */\nfunction Actions({\n type,\n colClass,\n onTrade,\n onTransfer,\n onDetails,\n}: Pick<\n TradingAccountCardProps,\n \"type\" | \"onTrade\" | \"onTransfer\" | \"onDetails\"\n> & { colClass: string }) {\n if (type === \"loading\") {\n return (\n <>\n <HeroActionButton\n label=\"\"\n icon={TradeIcon}\n surface=\"light\"\n state=\"loading\"\n colClass={colClass}\n />\n <HeroActionButton\n label=\"\"\n icon={TransferIcon}\n surface=\"light\"\n state=\"loading\"\n colClass={colClass}\n />\n <HeroActionButton\n label=\"\"\n icon={DetailsIcon}\n surface=\"light\"\n state=\"loading\"\n colClass={colClass}\n />\n </>\n );\n }\n\n return (\n <>\n <HeroActionButton\n label=\"Trade\"\n icon={TradeIcon}\n primary\n surface=\"light\"\n colClass={colClass}\n onClick={onTrade}\n />\n {type === \"real\" && (\n <HeroActionButton\n label=\"Transfer\"\n icon={TransferIcon}\n surface=\"light\"\n colClass={colClass}\n onClick={onTransfer}\n />\n )}\n <HeroActionButton\n label=\"Details\"\n icon={DetailsIcon}\n surface=\"light\"\n colClass={colClass}\n onClick={onDetails}\n />\n </>\n );\n}\n\nfunction renderCard(\n concrete: TradingAccountCardLayout,\n props: TradingAccountCardProps,\n responsive: boolean,\n) {\n const {\n type = \"loading\",\n subtitle = \"Subtitle\",\n title = \"Title\",\n logo: logoProp,\n logoSrc,\n verificationTag = false,\n showVerificationNeeded = false,\n showIconRefresh = false,\n onTrade,\n onTransfer,\n onDetails,\n } = props;\n\n const loading = type === \"loading\";\n const resolvedLogo = logoProp ?? (logoSrc ? undefined : <DerivLightMt5StandardIcon className=\"absolute inset-0 size-full object-cover\" />);\n const logo = <Logo node={resolvedLogo} src={logoSrc} loading={loading} />;\n const titleBlock = (\n <TitleBlock\n type={type}\n subtitle={subtitle}\n title={title}\n verificationTag={verificationTag}\n showVerificationNeeded={showVerificationNeeded}\n showIconRefresh={concrete === \"desktop\" ? showIconRefresh : false}\n />\n );\n\n if (concrete === \"mobile\") {\n return (\n <div\n className={cn(\n \"flex flex-col gap-4 rounded-2xl bg-[var(--background-default-opacity-default)] p-4\",\n responsive ? \"w-full\" : \"w-[280px]\",\n )}\n data-slot=\"trading-account-card\"\n data-layout=\"mobile\"\n data-type={type}\n >\n {/* content */}\n <div className=\"flex items-center gap-2\">\n {titleBlock}\n {logo}\n </div>\n {/* actions */}\n <div className=\"flex items-center\">\n <Actions\n type={type}\n colClass=\"flex-1\"\n onTrade={onTrade}\n onTransfer={onTransfer}\n onDetails={onDetails}\n />\n </div>\n </div>\n );\n }\n\n // desktop\n return (\n <div\n className={cn(\n \"flex items-center gap-4 rounded-2xl bg-[var(--background-default-opacity-default)] p-6\",\n responsive ? \"w-full\" : \"w-[800px]\",\n )}\n data-slot=\"trading-account-card\"\n data-layout=\"desktop\"\n data-type={type}\n >\n {/* content */}\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n {logo}\n {titleBlock}\n </div>\n {/* actions */}\n <div className=\"flex shrink-0 items-center\">\n <Actions\n type={type}\n colClass=\"w-24 shrink-0\"\n onTrade={onTrade}\n onTransfer={onTransfer}\n onDetails={onDetails}\n />\n </div>\n </div>\n );\n}\n\nexport function TradingAccountCard({ layout, className, ...props }: TradingAccountCardProps) {\n // Forced layout — render just that one.\n if (layout) {\n return (\n <div className={className}>{renderCard(layout, props, false)}</div>\n );\n }\n\n // Responsive (default) — mobile < md, desktop ≥ md (CSS-only, SSR-safe).\n return (\n <div className={className}>\n <div className=\"md:hidden\">{renderCard(\"mobile\", props, true)}</div>\n <div className=\"hidden md:block\">{renderCard(\"desktop\", props, true)}</div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Account (activated) Card (block)\n 1:1 with Figma \"card / account (activated)\" — default node 12758:60820,\n loading node 12848:159954.\n\n A compact 200px account summary card with logo, name, and balance.\n `state=\"loading\"` renders skeleton placeholders. Optional `tag` adds a\n small outline label in the top-right corner.\n ────────────────────────────────────────────────────────────────────────── */\n\nexport type AccountActivatedCardState = \"default\" | \"hover\" | \"pressed\" | \"loading\";\n\nexport interface AccountActivatedCardProps {\n state?: AccountActivatedCardState;\n /** Account name (e.g. \"Standard\"). */\n name?: string;\n /** Numeric balance string (e.g. \"1,000.00\"). */\n balance?: string;\n /** Currency code shown next to the balance (e.g. \"USD\"). */\n currency?: string;\n /** Account logo — Quill illustration component or React node. Falls back to a neutral block. */\n logo?: React.ReactNode;\n /** @deprecated use `logo` instead */\n logoSrc?: string;\n /** Optional outline tag in the top-right corner. */\n tag?: string;\n /** Wire up real hover/active bg transitions (renders as a button). */\n interactive?: boolean;\n onClick?: () => void;\n className?: string;\n}\n\n/* ── Logo — 48px square, neutral fallback. ─────────────────────────────── */\nfunction Logo({ node, src }: { node?: React.ReactNode; src?: string }) {\n return (\n <div className=\"relative size-12 shrink-0 overflow-hidden rounded-lg\">\n {node ?? (src ? (\n <img\n alt=\"\"\n src={src}\n className=\"absolute inset-0 size-full object-cover\"\n />\n ) : (\n <div className=\"size-full bg-[var(--background-default-opacity-default)]\" />\n ))}\n </div>\n );\n}\n\n/* ── Top-right outline tag. ────────────────────────────────────────────── */\nfunction CornerTag({ label }: { label: string }) {\n return (\n <div className=\"absolute top-2 right-2 flex items-center justify-center h-4 px-1 rounded-[4px] border border-solid border-[var(--border-selected-default)]\">\n <span className=\"font-semibold whitespace-nowrap text-prominent text-[8px] leading-[8px]\">\n {label}\n </span>\n </div>\n );\n}\n\n/* ── Loading body ──────────────────────────────────────────────────────── */\n/* Skeleton bg is overridden to background-hover-default (slate @ 8%) so it\n stacks visibly over the card's own 4% surface. The default Skeleton\n secondary-surface fill is too close to that surface to be perceptible. */\nconst SKELETON_FILL = \"bg-[var(--background-hover-default)]\";\n\nfunction LoadingBody() {\n return (\n <>\n <div className=\"flex flex-col items-start w-full\">\n <div className=\"size-12 shrink-0 p-[6.55px]\">\n <Skeleton className={cn(\"size-full rounded-lg\", SKELETON_FILL)} />\n </div>\n <div className=\"flex h-6 items-center w-full\">\n <Skeleton className={cn(\"h-2 w-16 rounded-full\", SKELETON_FILL)} />\n </div>\n </div>\n <div className=\"flex h-6 items-center w-full\">\n <Skeleton className={cn(\"h-2 w-24 rounded-full\", SKELETON_FILL)} />\n </div>\n </>\n );\n}\n\n/* ── Default body ──────────────────────────────────────────────────────── */\nfunction DefaultBody({\n name,\n balance,\n currency,\n logo,\n logoSrc,\n}: Required<Pick<AccountActivatedCardProps, \"name\" | \"balance\" | \"currency\">> & {\n logo?: React.ReactNode;\n logoSrc?: string;\n}) {\n return (\n <>\n <div className=\"flex flex-col items-start w-full\">\n <Logo node={logo} src={logoSrc} />\n <p className=\"text-base leading-6 text-prominent\">{name}</p>\n </div>\n <div className=\"flex items-end gap-0.5 whitespace-nowrap\">\n <span className=\"text-base leading-6 text-prominent\">{balance}</span>\n <span className=\"text-xs leading-5 text-subtle\">{currency}</span>\n </div>\n </>\n );\n}\n\n/* ── Public export ─────────────────────────────────────────────────────── */\nexport function AccountActivatedCard({\n state = \"default\",\n name = \"Name\",\n balance = \"1,000.00\",\n currency = \"USD\",\n logo,\n logoSrc,\n tag,\n interactive = false,\n onClick,\n className,\n}: AccountActivatedCardProps) {\n const bgClass =\n state === \"hover\"\n ? \"bg-[var(--background-hover-default)]\"\n : state === \"pressed\"\n ? \"bg-[var(--background-pressed-default)]\"\n : \"bg-[var(--background-default-opacity-default)]\";\n\n const interactiveClass = interactive\n ? \"cursor-pointer transition-colors hover:bg-[var(--background-hover-default)] active:bg-[var(--background-pressed-default)]\"\n : \"\";\n\n const baseClass = cn(\n \"relative flex flex-col items-start gap-2 w-[200px] p-4 rounded-2xl\",\n bgClass,\n interactiveClass,\n className,\n );\n\n const content = (\n <>\n {state === \"loading\" ? (\n <LoadingBody />\n ) : (\n <DefaultBody\n name={name}\n balance={balance}\n currency={currency}\n logo={logo}\n logoSrc={logoSrc}\n />\n )}\n {state !== \"loading\" && tag && <CornerTag label={tag} />}\n </>\n );\n\n if (interactive) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={baseClass}\n data-slot=\"account-activated-card\"\n data-state={state}\n >\n {content}\n </button>\n );\n }\n\n return (\n <div\n className={baseClass}\n data-slot=\"account-activated-card\"\n data-state={state}\n >\n {content}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"@/components/ui/icon\";\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n type CarouselApi,\n} from \"@/components/ui/carousel\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Home Banner (block)\n 1:1 with Figma carousel - banner — desktop node 10572:12895.\n Mobile node: 10409:5271 (h-96, pl-16, gap-8, media 128px).\n\n A dismissible auto-advancing banner carousel with animated pagination.\n Assets (video / image) are passed as props — the block has no bundled media.\n\n bgClass defaults:\n light \"bg-[rgba(44,154,255,0.08)]\" — Figma semantic/color/blue/opacity/surface/low\n dark \"bg-[#181c25]\" — Figma semantic/color/slate/solid/surface/static/high\n These colours are not mapped to a Tailwind utility in this package; consumers\n may override with any class.\n ────────────────────────────────────────────────────────────────────────── */\n\nconst AUTOPLAY_MS_DEFAULT = 5000;\n\nexport type HomeBannerLayout = \"mobile\" | \"desktop\";\n\nexport interface BannerItem {\n id: string;\n /** Tailwind bg class for the card. Default: rgba(44,154,255,0.08) blue tint. */\n bgClass?: string;\n text: string;\n /** Tailwind text class. Default: text-prominent. */\n textClass?: string;\n /** Dismiss button bg + icon colour for this banner's surface. */\n closeSurface?: \"light\" | \"dark\";\n tag?: {\n label: string;\n /** Tailwind bg class. Default: bg-[#0c28f7] sapphire. */\n bgClass?: string;\n };\n /** src for a <video> or <img> in the media slot. */\n mediaSrc?: string;\n mediaType?: \"video\" | \"image\";\n}\n\nexport interface HomeBannerProps {\n items?: BannerItem[];\n autoplayMs?: number;\n /** Force a layout. Omit = responsive: mobile < md, desktop ≥ md. */\n layout?: HomeBannerLayout;\n className?: string;\n}\n\n/* ── Pagination ─────────────────────────────────────────────────────────── */\nfunction BannerPagination({\n count,\n current,\n autoplayMs,\n onSelect,\n}: {\n count: number;\n current: number;\n autoplayMs: number;\n onSelect: (i: number) => void;\n}) {\n return (\n <div className=\"flex items-center gap-2\" role=\"tablist\" aria-label=\"Banner pagination\">\n {Array.from({ length: count }).map((_, i) => {\n const isSelected = i === current;\n return (\n <button\n key={i}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-label={`Go to banner ${i + 1}`}\n onClick={() => onSelect(i)}\n className={cn(\n \"border-none p-0 cursor-pointer rounded-[96px] overflow-hidden transition-all duration-300 relative h-2\",\n \"bg-[var(--pagination-bg-dot-default)]\",\n isSelected ? \"w-12\" : \"size-2\",\n )}\n >\n {isSelected && (\n /* key=current remounts this element on every slide change,\n restarting the CSS animation from 0% automatically */\n <span\n key={current}\n className=\"bg-[var(--pagination-bg-dot-selected)] absolute inset-y-0 left-0 rounded-[96px]\"\n style={{\n width: \"0%\",\n animation: `banner-fill ${autoplayMs}ms linear forwards`,\n }}\n />\n )}\n </button>\n );\n })}\n </div>\n );\n}\n\n/* ── Shared media slot ──────────────────────────────────────────────────── */\nfunction BannerMedia({\n mediaSrc,\n mediaType,\n slotClass,\n}: {\n mediaSrc?: string;\n mediaType?: \"video\" | \"image\";\n slotClass: string;\n}) {\n if (!mediaSrc) return <div className={slotClass} aria-hidden=\"true\" />;\n return (\n <div className={cn(slotClass, \"overflow-hidden\")} aria-hidden=\"true\">\n {mediaType === \"image\" ? (\n <img src={mediaSrc} alt=\"\" className=\"w-full h-full object-cover\" />\n ) : (\n <video\n src={mediaSrc}\n autoPlay\n loop\n muted\n playsInline\n preload=\"none\"\n className=\"w-full h-full object-cover\"\n />\n )}\n </div>\n );\n}\n\n/* ── Close button ───────────────────────────────────────────────────────── */\nfunction CloseButton({\n surface = \"light\",\n onClose,\n}: {\n surface?: \"light\" | \"dark\";\n onClose: () => void;\n}) {\n return (\n <button\n type=\"button\"\n aria-label=\"Dismiss banner\"\n onClick={onClose}\n className={cn(\n \"absolute top-2 right-2 flex items-center justify-center rounded-full size-6 cursor-pointer border-none transition-colors duration-fast\",\n surface === \"dark\"\n ? \"bg-[var(--banner-close-bg-dark)] hover:bg-[var(--banner-close-bg-dark-hover)] text-on-prominent-static-inverse\"\n : \"bg-[var(--banner-close-bg-light)] hover:bg-[var(--banner-close-bg-light-hover)] text-prominent\",\n )}\n >\n <Icon name=\"xmark\" weight=\"fill\" className=\"size-4\" aria-hidden />\n </button>\n );\n}\n\n/* ── Desktop card — h-128, pl-24, gap-24, media 171px ──────────────────── */\nfunction DesktopBannerCard({\n banner,\n onClose,\n}: {\n banner: BannerItem;\n onClose: () => void;\n}) {\n return (\n <div\n className={cn(\n \"relative flex items-center h-[128px] overflow-hidden rounded-2xl pl-6 gap-6 w-full\",\n banner.bgClass ?? \"bg-[var(--banner-bg-surface-blue)]\",\n )}\n data-slot=\"banner-card\"\n >\n {banner.tag && (\n <div\n className={cn(\n \"absolute top-4 left-4 flex items-center justify-center h-4 px-1 rounded-[4px]\",\n banner.tag.bgClass ?? \"bg-[var(--banner-tag-bg-sapphire)]\",\n )}\n >\n <span\n className=\"font-semibold whitespace-nowrap text-on-prominent-static-inverse text-[8px] leading-[8px]\"\n >\n {banner.tag.label}\n </span>\n </div>\n )}\n\n <p\n className={cn(\n \"flex-1 min-w-0 font-bold text-lg leading-7\",\n banner.textClass ?? \"text-prominent\",\n )}\n >\n {banner.text}\n </p>\n\n <BannerMedia\n mediaSrc={banner.mediaSrc}\n mediaType={banner.mediaType}\n slotClass=\"shrink-0 w-[171px] h-full\"\n />\n\n <CloseButton surface={banner.closeSurface} onClose={onClose} />\n </div>\n );\n}\n\n/* ── Mobile card — h-96, pl-16, gap-8, media 128px ─────────────────────── */\nfunction MobileBannerCard({\n banner,\n onClose,\n}: {\n banner: BannerItem;\n onClose: () => void;\n}) {\n return (\n <div\n className={cn(\n \"relative flex items-center h-[96px] overflow-hidden rounded-2xl pl-4 gap-2 w-full\",\n banner.bgClass ?? \"bg-[var(--banner-bg-surface-blue)]\",\n )}\n data-slot=\"banner-card\"\n >\n {banner.tag && (\n <div\n className={cn(\n \"absolute top-2 left-2 flex items-center justify-center h-4 px-1 rounded-[4px]\",\n banner.tag.bgClass ?? \"bg-[var(--banner-tag-bg-sapphire)]\",\n )}\n >\n <span\n className=\"font-semibold whitespace-nowrap text-on-prominent-static-inverse text-[8px] leading-[8px]\"\n >\n {banner.tag.label}\n </span>\n </div>\n )}\n\n <p\n className={cn(\n \"flex-1 min-w-0 font-bold text-sm leading-5\",\n banner.textClass ?? \"text-prominent\",\n )}\n >\n {banner.text}\n </p>\n\n <BannerMedia\n mediaSrc={banner.mediaSrc}\n mediaType={banner.mediaType}\n slotClass=\"shrink-0 w-[128px] h-full\"\n />\n\n <CloseButton surface={banner.closeSurface} onClose={onClose} />\n </div>\n );\n}\n\n/* ── Public single-card export ──────────────────────────────────────────\n Renders a single banner card outside the carousel. Useful when a host\n wants exactly one banner without the auto-advancing / dismissible shell.\n `onClose` is optional — when omitted the dismiss button is hidden. */\nexport interface BannerCardProps {\n banner: BannerItem;\n /** Force a layout. Omit = responsive: mobile < md, desktop ≥ md. */\n layout?: HomeBannerLayout;\n onClose?: () => void;\n className?: string;\n}\n\nexport function BannerCard({ banner, layout, onClose, className }: BannerCardProps) {\n const noop = () => undefined;\n const handleClose = onClose ?? noop;\n const showClose = Boolean(onClose);\n\n const desktop = (\n <div className={showClose ? undefined : \"[&_[aria-label='Dismiss banner']]:hidden\"}>\n <DesktopBannerCard banner={banner} onClose={handleClose} />\n </div>\n );\n const mobile = (\n <div className={showClose ? undefined : \"[&_[aria-label='Dismiss banner']]:hidden\"}>\n <MobileBannerCard banner={banner} onClose={handleClose} />\n </div>\n );\n\n if (layout === \"desktop\") return <div className={className}>{desktop}</div>;\n if (layout === \"mobile\") return <div className={className}>{mobile}</div>;\n\n return (\n <div className={className}>\n <div className=\"md:hidden\">{mobile}</div>\n <div className=\"hidden md:block\">{desktop}</div>\n </div>\n );\n}\n\n/* ── Core carousel logic (shared between desktop and mobile renders) ────── */\nfunction BannerCarousel({\n items,\n autoplayMs,\n CardComponent,\n carouselItemStyle,\n}: {\n items: BannerItem[];\n autoplayMs: number;\n CardComponent: typeof DesktopBannerCard | typeof MobileBannerCard;\n carouselItemStyle: React.CSSProperties;\n}) {\n const [api, setApi] = React.useState<CarouselApi>();\n const [current, setCurrent] = React.useState(0);\n const [dismissed, setDismissed] = React.useState<Set<string>>(new Set());\n const timerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const visible = items.filter((b) => !dismissed.has(b.id));\n\n React.useEffect(() => {\n if (!api || visible.length <= 1) return;\n timerRef.current = setTimeout(() => {\n api.scrollTo((current + 1) % visible.length);\n }, autoplayMs);\n return () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n };\n }, [api, current, visible.length, autoplayMs]);\n\n function handleSetApi(emblaApi: CarouselApi) {\n if (!emblaApi) return;\n setApi(emblaApi);\n setCurrent(emblaApi.selectedScrollSnap());\n emblaApi.on(\"select\", () => setCurrent(emblaApi.selectedScrollSnap()));\n }\n\n function handleDismiss(id: string) {\n setDismissed((prev) => new Set(prev).add(id));\n setCurrent(0);\n }\n\n if (visible.length === 0) return null;\n\n return (\n <section aria-label=\"Promotional banners\" className=\"flex flex-col gap-4 w-full\">\n <div className=\"overflow-hidden w-full\">\n <Carousel\n opts={{ align: \"start\", loop: false, dragFree: false }}\n setApi={handleSetApi}\n className=\"w-full\"\n >\n <CarouselContent className=\"flex gap-2\" style={{ marginLeft: 0 }}>\n {visible.map((banner) => (\n <CarouselItem key={banner.id} style={carouselItemStyle}>\n <CardComponent\n banner={banner}\n onClose={() => handleDismiss(banner.id)}\n />\n </CarouselItem>\n ))}\n </CarouselContent>\n </Carousel>\n </div>\n\n {visible.length > 1 && (\n <div className=\"flex justify-center\">\n <BannerPagination\n count={visible.length}\n current={current}\n autoplayMs={autoplayMs}\n onSelect={(i) => api?.scrollTo(i)}\n />\n </div>\n )}\n </section>\n );\n}\n\n/* ── Public export ──────────────────────────────────────────────────────── */\nexport function HomeBanner({\n items,\n autoplayMs = AUTOPLAY_MS_DEFAULT,\n layout,\n className,\n}: HomeBannerProps) {\n const resolvedItems: BannerItem[] = items ?? [\n {\n id: \"banner-1\",\n text: \"Get a 20% bonus on your first MT5 Standard transfer.\",\n },\n {\n id: \"banner-2\",\n text: \"Up to 50% discount on Vol Indices spreads\",\n tag: { label: \"This weekend\", bgClass: \"bg-[var(--banner-tag-bg-sapphire)]\" },\n },\n ];\n\n /* Desktop: calc(100% - 48px) → ~40px peek of next card */\n const desktopItemStyle: React.CSSProperties = {\n flex: \"0 0 calc(100% - 48px)\",\n paddingLeft: 0,\n minWidth: 0,\n };\n /* Mobile: 320px fixed → peek via overflow */\n const mobileItemStyle: React.CSSProperties = {\n flex: \"0 0 320px\",\n paddingLeft: 0,\n minWidth: 0,\n };\n\n const desktopCarousel = (\n <BannerCarousel\n items={resolvedItems}\n autoplayMs={autoplayMs}\n CardComponent={DesktopBannerCard}\n carouselItemStyle={desktopItemStyle}\n />\n );\n\n const mobileCarousel = (\n <div className=\"px-6\">\n <BannerCarousel\n items={resolvedItems}\n autoplayMs={autoplayMs}\n CardComponent={MobileBannerCard}\n carouselItemStyle={mobileItemStyle}\n />\n </div>\n );\n\n if (layout === \"desktop\") {\n return <div className={cn(\"w-full\", className)} data-slot=\"home-banner\">{desktopCarousel}</div>;\n }\n if (layout === \"mobile\") {\n return <div className={cn(\"w-full\", className)} data-slot=\"home-banner\">{mobileCarousel}</div>;\n }\n\n return (\n <div className={cn(\"w-full\", className)} data-slot=\"home-banner\">\n <div className=\"md:hidden\">{mobileCarousel}</div>\n <div className=\"hidden md:block\">{desktopCarousel}</div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { DerivLightOptionsIcon, DerivLightCTraderIcon } from \"@deriv/quill-icons/Illustration\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Home — Explore Deriv (block)\n 1:1 with Figma launchpad grid/row.\n\n Mobile: 3-column grid (up to 2 rows).\n Desktop (md+): single flex row — all items visible.\n\n Icon images are passed as `imgSrc` props. When omitted a neutral\n placeholder circle is rendered — no bundled assets.\n ────────────────────────────────────────────────────────────────────────── */\n\nexport type HomeExploreDerivLayout = \"mobile\" | \"desktop\";\n\nexport interface ExploreItem {\n id: string;\n /** Quill illustration component. Takes precedence over imgSrc. */\n icon?: React.ComponentType<React.ImgHTMLAttributes<HTMLImageElement>>;\n /** Icon image src. Omit for neutral placeholder circle. */\n imgSrc?: string;\n label: string;\n /** Badge text, e.g. \"New\" or \"Copy trading\". */\n tag?: string;\n /** Tailwind bg class for the badge. Default: bg-[var(--primitive-emerald-700)]. */\n tagBgClass?: string;\n disabled?: boolean;\n onClick?: () => void;\n}\n\nexport interface HomeExploreDerivProps {\n title?: string;\n items?: ExploreItem[];\n /** Force a layout. Omit = responsive: mobile < md, desktop ≥ md. */\n layout?: HomeExploreDerivLayout;\n className?: string;\n}\n\nconst DEMO_ITEMS: ExploreItem[] = [\n { id: \"deposits\", label: \"Deposits\", imgSrc: \"/assets/icon-deposit.png\" },\n { id: \"cfds\", label: \"CFDs\", imgSrc: \"/assets/icon-cfds.png\" },\n { id: \"options\", label: \"Options\", icon: DerivLightOptionsIcon },\n { id: \"derivx\", label: \"Deriv X\", imgSrc: \"/assets/logo-deriv-x.png\", tag: \"New\" },\n { id: \"ctrader\", label: \"cTrader\", icon: DerivLightCTraderIcon, tag: \"Copy trading\" },\n { id: \"more\", label: \"More\", imgSrc: \"/assets/icon-more.png\" },\n];\n\n/* ── Single launchpad item ──────────────────────────────────────────────── */\nfunction ExploreItemButton({ item }: { item: ExploreItem }) {\n return (\n <button\n type=\"button\"\n onClick={item.onClick}\n disabled={item.disabled}\n aria-label={item.label}\n className={cn(\n \"flex flex-col items-center gap-2 bg-transparent border-none p-0 cursor-pointer group relative\",\n item.disabled && \"cursor-not-allowed\",\n )}\n data-slot=\"explore-item\"\n >\n {/* Icon circle */}\n <div\n className={cn(\n \"relative flex items-center justify-center size-16 rounded-[32px] transition-colors duration-fast\",\n \"bg-[var(--background-default-opacity-default)]\",\n !item.disabled && \"group-hover:bg-[var(--background-pressed-default)] group-active:bg-[var(--background-pressed-default)]\",\n item.disabled && \"opacity-[0.24]\",\n )}\n >\n {item.icon ? (\n <item.icon className=\"size-8 object-contain\" aria-hidden />\n ) : item.imgSrc ? (\n <img src={item.imgSrc} alt=\"\" className=\"size-8 object-contain\" aria-hidden />\n ) : (\n <Icon\n name=\"circle\"\n weight=\"regular\"\n className={cn(\n \"size-8\",\n item.disabled ? \"text-[var(--text-disabled-default)]\" : \"text-subtle\",\n )}\n aria-hidden\n />\n )}\n\n {/* Badge — positioned at top-right of the icon circle */}\n {item.tag && !item.disabled && (\n <span\n className={cn(\n \"absolute -top-1 -right-1 flex items-center justify-center h-4 rounded-[4px] px-1 whitespace-nowrap\",\n item.tagBgClass ?? \"bg-[var(--primitive-emerald-700)]\",\n )}\n >\n <span\n className=\"font-semibold text-on-prominent-static-inverse text-[8px] leading-[8px]\"\n >\n {item.tag}\n </span>\n </span>\n )}\n </div>\n\n {/* Label */}\n <span\n className={cn(\n \"text-xs font-normal leading-5 text-center max-w-[72px] break-words\",\n item.disabled ? \"text-[var(--text-disabled-default)]\" : \"text-prominent\",\n )}\n >\n {item.label}\n </span>\n </button>\n );\n}\n\n/* ── Responsive wrappers ────────────────────────────────────────────────── */\nfunction ExploreGrid({ items }: { items: ExploreItem[] }) {\n return (\n <div className=\"grid grid-cols-3 gap-x-4 gap-y-6\" data-slot=\"explore-grid\">\n {items.map((item) => (\n <div key={item.id} className=\"flex justify-center\">\n <ExploreItemButton item={item} />\n </div>\n ))}\n </div>\n );\n}\n\nfunction ExploreRow({ items }: { items: ExploreItem[] }) {\n return (\n <div className=\"flex items-start w-full\" data-slot=\"explore-row\">\n {items.map((item) => (\n <div key={item.id} className=\"flex-1 flex flex-col items-center min-w-0\">\n <ExploreItemButton item={item} />\n </div>\n ))}\n </div>\n );\n}\n\n/* ── Public export ──────────────────────────────────────────────────────── */\nexport function HomeExploreDeriv({\n title = \"Explore Deriv\",\n items,\n layout,\n className,\n}: HomeExploreDerivProps) {\n const resolvedItems = items ?? DEMO_ITEMS;\n\n const mobileView = (\n <div className=\"flex flex-col gap-4 max-w-[400px]\">\n <p className=\"text-base font-bold leading-6 text-prominent\">{title}</p>\n <ExploreGrid items={resolvedItems} />\n </div>\n );\n\n const desktopView = (\n <div className=\"flex flex-col gap-4\">\n <p className=\"text-base font-bold leading-6 text-prominent\">{title}</p>\n <ExploreRow items={resolvedItems} />\n </div>\n );\n\n if (layout === \"desktop\") {\n return (\n <div className={cn(\"w-full\", className)} data-slot=\"home-explore-deriv\">\n {desktopView}\n </div>\n );\n }\n if (layout === \"mobile\") {\n return (\n <div className={cn(\"w-full\", className)} data-slot=\"home-explore-deriv\">\n {mobileView}\n </div>\n );\n }\n\n return (\n <div className={cn(\"w-full\", className)} data-slot=\"home-explore-deriv\">\n <div className=\"md:hidden\">{mobileView}</div>\n <div className=\"hidden md:block\">{desktopView}</div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useEffect, useRef, useState, useCallback } from \"react\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Home — Highlight Card (block)\n Atom card used inside HomeHighlights carousel.\n\n Preview area (132px): renders a lazy-loaded video, a static image, or a\n neutral bg-subtle placeholder when neither is supplied.\n\n Tags row: single-line, overflow items replaced by a \"+N\" indicator.\n Videos are loaded via IntersectionObserver (preload=\"none\" until visible).\n ────────────────────────────────────────────────────────────────────────── */\n\nexport interface HomeHighlightCardProps {\n /** Static image src for the preview area. */\n previewSrc?: string;\n /** Video src — takes precedence over previewSrc. Lazy-loaded on viewport entry. */\n videoSrc?: string;\n /** Black background behind the preview image (for dark-on-dark media). */\n darkPreview?: boolean;\n /** Small overline text above the title. */\n overline?: string;\n title: string;\n description: string;\n tags: string[];\n /** Card width in px. Default 240. */\n width?: number;\n}\n\n/* ── Lazy video ─────────────────────────────────────────────────────────── */\n\nfunction LazyVideo({\n src,\n className,\n}: {\n src: string;\n className?: string;\n}) {\n const videoRef = useRef<HTMLVideoElement>(null);\n const observerRef = useRef<IntersectionObserver | null>(null);\n\n useEffect(() => {\n const el = videoRef.current;\n if (!el) return;\n observerRef.current = new IntersectionObserver(\n ([entry]) => {\n if (entry?.isIntersecting && el.getAttribute(\"data-src\")) {\n el.src = el.getAttribute(\"data-src\") as string;\n el.removeAttribute(\"data-src\");\n el.load();\n observerRef.current?.disconnect();\n }\n },\n { rootMargin: \"200px\" },\n );\n observerRef.current.observe(el);\n return () => observerRef.current?.disconnect();\n }, []);\n\n return (\n <video\n ref={videoRef}\n data-src={src}\n autoPlay\n loop\n muted\n playsInline\n preload=\"none\"\n className={className}\n aria-hidden=\"true\"\n />\n );\n}\n\n/* ── Tags row — single line, overflowing tags replaced by \"+N\" ──────────── */\n\nfunction TagsRow({ tags }: { tags: string[] }) {\n const containerRef = useRef<HTMLDivElement>(null);\n const tagsRef = useRef<(HTMLSpanElement | null)[]>([]);\n const [visibleCount, setVisibleCount] = useState(tags.length);\n const [measured, setMeasured] = useState(false);\n\n const measure = useCallback(() => {\n const container = containerRef.current;\n if (!container) return;\n\n tagsRef.current.forEach((el) => {\n if (el) {\n el.style.display = \"\";\n el.style.visibility = \"hidden\";\n }\n });\n\n const containerWidth = container.clientWidth;\n const gap = 4;\n const plusIndicatorWidth = 24;\n let usedWidth = 0;\n let count = 0;\n\n for (let i = 0; i < tags.length; i++) {\n const el = tagsRef.current[i];\n if (!el) break;\n const childWidth = el.offsetWidth;\n const gapBefore = i > 0 ? gap : 0;\n const newTotal = usedWidth + gapBefore + childWidth;\n\n if (i === tags.length - 1) {\n if (newTotal <= containerWidth) count = i + 1;\n } else {\n if (newTotal + gap + plusIndicatorWidth <= containerWidth) {\n count = i + 1;\n usedWidth = newTotal;\n } else {\n break;\n }\n }\n }\n\n tagsRef.current.forEach((el, i) => {\n if (el) {\n el.style.display = i < count ? \"\" : \"none\";\n el.style.visibility = \"\";\n }\n });\n\n setVisibleCount(count);\n setMeasured(true);\n }, [tags]);\n\n useEffect(() => {\n const raf = requestAnimationFrame(() => measure());\n const observer = new ResizeObserver(measure);\n if (containerRef.current) observer.observe(containerRef.current);\n return () => {\n cancelAnimationFrame(raf);\n observer.disconnect();\n };\n }, [measure]);\n\n const hiddenCount = tags.length - visibleCount;\n\n return (\n <div\n ref={containerRef}\n className=\"flex items-center w-full\"\n style={{ gap: \"4px\", flexWrap: \"nowrap\", overflow: \"hidden\" }}\n >\n {tags.map((t, i) => (\n <span\n key={t}\n ref={(el) => {\n tagsRef.current[i] = el;\n }}\n className=\"inline-flex items-center justify-center shrink-0 bg-[var(--background-default-opacity-default)]\"\n style={{\n height: \"24px\",\n padding: \"0 8px\",\n borderRadius: \"4px\",\n display: !measured || i < visibleCount ? undefined : \"none\",\n visibility: !measured ? \"hidden\" : undefined,\n }}\n >\n <span\n className=\"font-bold whitespace-nowrap text-prominent\"\n style={{ fontSize: \"12px\", lineHeight: \"20px\" }}\n >\n {t}\n </span>\n </span>\n ))}\n {hiddenCount > 0 && measured && (\n <span\n className=\"shrink-0 whitespace-nowrap text-subtle\"\n style={{ fontSize: \"14px\", lineHeight: \"20px\", fontWeight: 400 }}\n >\n +{hiddenCount}\n </span>\n )}\n </div>\n );\n}\n\n/* ── Public export ──────────────────────────────────────────────────────── */\n\nexport function HomeHighlightCard({\n previewSrc,\n videoSrc,\n darkPreview = false,\n overline,\n title,\n description,\n tags,\n width = 240,\n}: HomeHighlightCardProps) {\n return (\n <div\n className=\"flex flex-col bg-[var(--background-default-opacity-default)] overflow-hidden shrink-0\"\n style={{ width: `${width}px`, borderRadius: \"16px\" }}\n data-slot=\"home-highlight-card\"\n >\n {/* Preview — video > image > placeholder */}\n <div\n className={`relative shrink-0 overflow-hidden ${darkPreview ? \"bg-[#181c25]\" : \"bg-subtle\"}`}\n style={{ height: \"132px\", borderRadius: \"16px 16px 0 0\" }}\n >\n {videoSrc ? (\n <LazyVideo\n src={videoSrc}\n className=\"absolute inset-0 w-full h-full object-cover pointer-events-none\"\n />\n ) : previewSrc ? (\n <img\n src={previewSrc}\n alt=\"\"\n aria-hidden\n className=\"absolute inset-0 w-full h-full object-cover pointer-events-none\"\n />\n ) : null}\n </div>\n\n {/* Body */}\n <div\n className=\"flex flex-col flex-1 items-start\"\n style={{ padding: \"16px\", gap: \"16px\" }}\n >\n <div className=\"flex flex-col flex-1 items-start w-full\" style={{ gap: \"4px\" }}>\n {overline && (\n <span\n className=\"text-subtle whitespace-nowrap\"\n style={{ fontSize: \"12px\", lineHeight: \"20px\", fontWeight: 400 }}\n >\n {overline}\n </span>\n )}\n <p\n className=\"font-bold m-0 w-full text-prominent\"\n style={{ fontSize: \"18px\", lineHeight: \"28px\" }}\n >\n {title}\n </p>\n <p\n className=\"m-0 w-full text-subtle\"\n style={{ fontSize: \"14px\", lineHeight: \"20px\", fontWeight: 400 }}\n >\n {description}\n </p>\n </div>\n <TagsRow tags={tags} />\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"@/components/ui/icon\";\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n type CarouselApi,\n} from \"@/components/ui/carousel\";\nimport {\n HomeHighlightCard,\n type HomeHighlightCardProps,\n} from \"./home-highlight-card\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Home — Highlights (block)\n Carousel section: section header with title + desktop prev/next controls,\n horizontally scrollable cards. On mobile the carousel bleeds to screen\n edges; on desktop it is contained.\n\n Pass `title` and `cards` to customise. Omit both to render the built-in\n demo items (placeholder cards, no media).\n ────────────────────────────────────────────────────────────────────────── */\n\nconst DEMO_CARDS: HomeHighlightCardProps[] = [\n {\n title: \"Card 1\",\n description: \"Placeholder description for this highlight.\",\n tags: [\"Tag A\", \"Tag B\"],\n },\n {\n title: \"Card 2\",\n description: \"Placeholder description for this highlight.\",\n tags: [\"Tag C\"],\n },\n {\n title: \"Card 3\",\n description: \"Placeholder description for this highlight.\",\n tags: [\"Tag D\", \"Tag E\"],\n },\n {\n title: \"Card 4\",\n description: \"Placeholder description for this highlight.\",\n tags: [\"Tag F\"],\n },\n {\n title: \"Card 5\",\n description: \"Placeholder description for this highlight.\",\n tags: [\"Tag G\", \"Tag H\"],\n },\n];\n\nexport interface HomeHighlightsProps {\n title?: string;\n cards?: HomeHighlightCardProps[];\n className?: string;\n}\n\nexport function HomeHighlights({\n title = \"Title\",\n cards = DEMO_CARDS,\n className,\n}: HomeHighlightsProps) {\n const [api, setApi] = useState<CarouselApi>();\n const [canPrev, setCanPrev] = useState(false);\n const [canNext, setCanNext] = useState(true);\n\n function handleSetApi(emblaApi: CarouselApi) {\n if (!emblaApi) return;\n setApi(emblaApi);\n const update = () => {\n setCanPrev(emblaApi.canScrollPrev());\n setCanNext(emblaApi.canScrollNext());\n };\n update();\n emblaApi.on(\"select\", update);\n emblaApi.on(\"reInit\", update);\n }\n\n return (\n <section\n aria-label={title}\n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"16px\", paddingBottom: \"24px\" }}\n data-slot=\"home-highlights\"\n >\n {/* Header row */}\n <div className=\"flex items-center justify-between w-full\">\n <h2\n className=\"font-bold m-0 text-prominent\"\n style={{ fontSize: \"18px\", lineHeight: \"28px\" }}\n >\n {title}\n </h2>\n\n {/* Nav controls — desktop only */}\n <div className=\"hidden md:flex items-center\" style={{ gap: \"2px\" }}>\n <button\n type=\"button\"\n aria-label={`Previous ${title}`}\n disabled={!canPrev}\n onClick={() => api?.scrollPrev()}\n className=\"flex items-center justify-center size-6 border-none cursor-pointer disabled:opacity-30 disabled:cursor-default transition-opacity bg-menu-launchpad-icon-bg-default rounded-l-full\"\n >\n <Icon name=\"chevron-left\" weight=\"bold\" className=\"size-[10px] text-on-prominent\" aria-hidden />\n </button>\n <button\n type=\"button\"\n aria-label={`Next ${title}`}\n disabled={!canNext}\n onClick={() => api?.scrollNext()}\n className=\"flex items-center justify-center size-6 border-none cursor-pointer disabled:opacity-30 disabled:cursor-default transition-opacity bg-menu-launchpad-icon-bg-default rounded-r-full\"\n >\n <Icon name=\"chevron-right\" weight=\"bold\" className=\"size-[10px] text-on-prominent\" aria-hidden />\n </button>\n </div>\n </div>\n\n {/* Carousel — bleeds on mobile, contained on desktop */}\n <div className=\"-mx-6 md:mx-0\">\n <Carousel\n opts={{ align: \"start\", dragFree: true }}\n setApi={handleSetApi}\n className=\"w-full\"\n aria-label={title}\n >\n <CarouselContent className=\"items-stretch pl-6 md:pl-0 gap-4\" style={{ marginLeft: 0 }}>\n {cards.map((card) => (\n <CarouselItem key={card.title} className=\"p-0 basis-auto flex\">\n <HomeHighlightCard {...card} />\n </CarouselItem>\n ))}\n </CarouselContent>\n </Carousel>\n </div>\n </section>\n );\n}\n","\"use client\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n FeedbackSuccessScreen (block)\n Figma desktop node 10591:15338, mobile node 10591:15327.\n Full-page screen — no surrounding header or footer.\n\n Full-screen feedback / success message. Always renders on a dark\n background with a coral radial glow. Layout:\n 1. Asset placeholder — square (200 px desk / 160 px mob) or\n rectangle (320 × 160 desk / 256 × 128 mob)\n 2. Title, description, outline tag (all text-on-prominent-static-inverse)\n 3. slotActionNudge — open slot for any block or component\n 4. Footer — primary (coral) + secondary (outline) buttons\n Desktop: secondary LEFT, primary RIGHT (flex-row-reverse)\n Mobile: primary TOP, secondary BOTTOM (flex-col)\n\n Pass `layout=\"mobile\"` or `layout=\"desktop\"` to force a layout —\n required when rendering inside a constrained-width container in the\n playground (md: breakpoints fire at viewport width, not container width).\n Omit for fully responsive rendering.\n ────────────────────────────────────────────────────────────────────────── */\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../ui/icon\";\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n type CarouselApi,\n} from \"../ui/carousel\";\n\nexport type FeedbackSuccessAssetShape = \"square\" | \"rectangle\";\nexport type FeedbackSuccessLayout = \"mobile\" | \"desktop\";\n\nexport interface FeedbackSuccessScreenProps {\n /** Force a layout. Omit for responsive (mobile < md, desktop ≥ md). */\n layout?: FeedbackSuccessLayout;\n /** Shape of the 3-D asset placeholder. */\n assetShape?: FeedbackSuccessAssetShape;\n /** Real asset image src. Omit to show the dashed placeholder. */\n assetSrc?: string;\n title?: string;\n description?: string;\n /** Outline badge label below the description. */\n tag?: string;\n /** Slot for any block or component (e.g. a progress indicator). */\n slotActionNudge?: React.ReactNode;\n primaryLabel?: string;\n onPrimary?: () => void;\n secondaryLabel?: string;\n onSecondary?: () => void;\n className?: string;\n}\n\n/* ── Asset area (placeholder or real image) ────────────────────────────── */\nfunction AssetArea({\n shape,\n src,\n mob,\n desk,\n}: {\n shape: FeedbackSuccessAssetShape;\n src?: string;\n mob: boolean;\n desk: boolean;\n}) {\n const squareSize = mob ? \"size-[160px]\" : desk ? \"size-[200px]\" : \"size-[160px] md:size-[200px]\";\n const rectSize = mob\n ? \"h-[128px] w-[256px]\"\n : desk\n ? \"h-[160px] w-[320px]\"\n : \"h-[128px] w-[256px] md:h-[160px] md:w-[320px]\";\n const sizeClass = shape === \"square\" ? squareSize : rectSize;\n\n if (src) {\n return (\n <div className={cn(\"relative shrink-0 overflow-hidden rounded-2xl\", sizeClass)}>\n <img alt=\"\" src={src} className=\"absolute inset-0 size-full object-contain\" />\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center rounded-2xl border-2 border-dashed border-[var(--border-default-static-dark)]\",\n sizeClass,\n )}\n >\n <p className=\"px-3 text-center text-sm font-semibold leading-tight text-[var(--border-default-static-dark)]\">\n 3D asset goes here\n </p>\n </div>\n );\n}\n\n/* ── FeedbackTradeWithAccounts ─────────────────────────────────────────── */\n\nexport interface FeedbackTradeAccount {\n id: string;\n label: string;\n logo?: React.ReactNode;\n /** @deprecated use `logo` instead */\n logoSrc?: string;\n}\n\nexport interface FeedbackTradeWithAccountsProps {\n title?: string;\n accounts?: FeedbackTradeAccount[];\n autoplayMs?: number;\n className?: string;\n}\n\nconst TRADE_AUTOPLAY_MS = 3000;\n\nfunction TradeAccountPagination({\n count,\n current,\n autoplayMs,\n onSelect,\n}: {\n count: number;\n current: number;\n autoplayMs: number;\n onSelect: (i: number) => void;\n}) {\n return (\n <div className=\"flex items-center gap-2\" role=\"tablist\" aria-label=\"Account pagination\">\n {Array.from({ length: count }).map((_, i) => {\n const isSelected = i === current;\n return (\n <button\n key={i}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-label={`Go to account ${i + 1}`}\n onClick={() => onSelect(i)}\n className={cn(\n \"border-none p-0 cursor-pointer rounded-[96px] overflow-hidden transition-all duration-300 relative h-2\",\n \"bg-[var(--background-hover-static-dark)]\",\n isSelected ? \"w-12\" : \"size-2\",\n )}\n >\n {isSelected && (\n <span\n key={current}\n className=\"bg-on-prominent-static-inverse absolute inset-y-0 left-0 rounded-[96px]\"\n style={{\n width: \"0%\",\n animation: `banner-fill ${autoplayMs}ms linear forwards`,\n }}\n />\n )}\n </button>\n );\n })}\n </div>\n );\n}\n\nexport function FeedbackTradeWithAccounts({\n title = \"Trade with these CFD accounts\",\n accounts = [],\n autoplayMs = TRADE_AUTOPLAY_MS,\n className,\n}: FeedbackTradeWithAccountsProps) {\n const [api, setApi] = React.useState<CarouselApi>();\n const [current, setCurrent] = React.useState(0);\n const timerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n /* Embla auto-disables loop when total slide width ≤ 2× the viewport.\n With 4 × 108px = 432px and a 340px viewport, 432 < 680 so loop is\n silently disabled, preventing drag-to-loop. Doubling the slides\n (8 × 108 = 864px > 680px) restores loop for both drag and autoplay. */\n const slides = React.useMemo(\n () => (accounts.length > 0 ? [...accounts, ...accounts] : accounts),\n [accounts],\n );\n\n /* Map raw Embla snap index → logical account index for pagination */\n const accountIdx = accounts.length > 0 ? current % accounts.length : 0;\n\n React.useEffect(() => {\n if (!api || accounts.length <= 1) return;\n timerRef.current = setTimeout(() => {\n api.scrollNext();\n }, autoplayMs);\n return () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n };\n }, [api, current, accounts.length, autoplayMs]);\n\n function handleSetApi(emblaApi: CarouselApi) {\n if (!emblaApi) return;\n setApi(emblaApi);\n setCurrent(emblaApi.selectedScrollSnap());\n emblaApi.on(\"select\", () => setCurrent(emblaApi.selectedScrollSnap()));\n }\n\n return (\n <div className={cn(\"flex w-full flex-col items-center gap-4 py-5\", className)}>\n <p className=\"w-full text-center text-base font-bold leading-6 text-on-prominent-static-inverse\">\n {title}\n </p>\n\n <div className=\"w-[340px] max-w-full overflow-hidden\">\n <Carousel\n opts={{ align: \"start\", loop: true, dragFree: false }}\n setApi={handleSetApi}\n className=\"w-full\"\n >\n <CarouselContent className=\"flex\" style={{ marginLeft: -8 }}>\n {slides.map((account, idx) => (\n <CarouselItem\n key={`${account.id}-${idx}`}\n style={{ flex: \"0 0 116px\", paddingLeft: 8, minWidth: 0 }}\n >\n <div className=\"flex h-24 w-full flex-col items-center justify-center gap-2 rounded-2xl bg-[var(--background-default-opacity-static-dark)] px-4\">\n <div className=\"relative size-8 shrink-0\">\n {account.logo ?? (account.logoSrc && <img alt=\"\" src={account.logoSrc} className=\"absolute inset-0 size-full object-contain\" />)}\n </div>\n <p className=\"w-full text-center text-xs font-normal leading-5 text-on-prominent-static-inverse\">\n {account.label}\n </p>\n </div>\n </CarouselItem>\n ))}\n </CarouselContent>\n </Carousel>\n </div>\n\n {accounts.length > 1 && (\n <TradeAccountPagination\n count={accounts.length}\n current={accountIdx}\n autoplayMs={autoplayMs}\n onSelect={(i) => api?.scrollTo(i)}\n />\n )}\n </div>\n );\n}\n\n/* ── FeedbackTransferSuggestion ────────────────────────────────────────── */\n\nexport interface FeedbackTransferEndpoint {\n label: string;\n logo?: React.ReactNode;\n /** @deprecated use `logo` instead */\n logoSrc?: string;\n}\n\nexport interface FeedbackTransferSuggestionProps {\n title?: string;\n from: FeedbackTransferEndpoint;\n to: FeedbackTransferEndpoint;\n className?: string;\n}\n\nexport function FeedbackTransferSuggestion({\n title = \"Transfer funds to your account\",\n from,\n to,\n className,\n}: FeedbackTransferSuggestionProps) {\n return (\n <div className={cn(\"flex w-full flex-col items-center gap-4 py-5\", className)}>\n <p className=\"w-full text-center text-base font-bold leading-6 text-on-prominent-static-inverse\">\n {title}\n </p>\n <div className=\"flex flex-col items-center gap-2\">\n {/* Row 1: icons + arrow — all vertically centered */}\n <div className=\"flex items-center justify-center gap-2\">\n <div className=\"flex w-16 justify-center\">\n <div className=\"relative size-8 shrink-0 overflow-hidden rounded-full\">\n {from.logo ?? (from.logoSrc && <img alt=\"\" src={from.logoSrc} className=\"absolute inset-0 size-full object-contain\" />)}\n </div>\n </div>\n <Icon\n name=\"arrow-right\"\n weight=\"bold\"\n className=\"size-8 shrink-0 text-on-prominent-static-inverse\"\n />\n <div className=\"flex w-16 justify-center\">\n <div className=\"relative size-8 shrink-0 overflow-hidden rounded-full\">\n {to.logo ?? (to.logoSrc && <img alt=\"\" src={to.logoSrc} className=\"absolute inset-0 size-full object-contain\" />)}\n </div>\n </div>\n </div>\n {/* Row 2: labels — widths match icon columns */}\n <div className=\"flex items-start justify-center gap-2\">\n <p className=\"w-16 whitespace-nowrap text-center text-xs font-normal leading-5 text-on-prominent-static-inverse\">\n {from.label}\n </p>\n <div className=\"w-8 shrink-0\" />\n <p className=\"w-16 whitespace-nowrap text-center text-xs font-normal leading-5 text-on-prominent-static-inverse\">\n {to.label}\n </p>\n </div>\n </div>\n </div>\n );\n}\n\n/* ── FeedbackSuccessScreen ─────────────────────────────────────────────── */\nexport function FeedbackSuccessScreen({\n layout,\n assetShape = \"square\",\n assetSrc,\n title = \"Title\",\n description = \"Description goes here\",\n tag,\n slotActionNudge,\n primaryLabel = \"Label\",\n onPrimary,\n secondaryLabel = \"Label\",\n onSecondary,\n className,\n}: FeedbackSuccessScreenProps) {\n const mob = layout === \"mobile\";\n const desk = layout === \"desktop\";\n\n return (\n <div\n className={cn(\n \"relative flex w-full flex-col items-center justify-center\",\n !mob && \"min-h-screen\",\n className,\n )}\n style={{\n background: mob\n ? \"radial-gradient(ellipse 130% 70% at 50% 0%, var(--primitive-coral-alpha-300) 0%, transparent 70%), var(--feedback-success-bg)\"\n : \"radial-gradient(ellipse 80% 50% at 50% 0%, var(--primitive-coral-alpha-300) 0%, transparent 70%), var(--feedback-success-bg)\",\n }}\n data-slot=\"feedback-success-screen\"\n data-layout={layout ?? \"responsive\"}\n >\n <div\n className={cn(\n \"flex flex-col items-center justify-center gap-24 p-6\",\n mob ? \"w-full\" : desk ? \"w-[608px]\" : \"w-full md:w-[608px]\",\n )}\n >\n {/* ── Top: asset + title/description/tag — gap-6 (24px) within ── */}\n <div className=\"flex w-full flex-col items-center gap-6\">\n <AssetArea shape={assetShape} src={assetSrc} mob={mob} desk={desk} />\n\n {/* title + description + tag — gap-2 (8px) within */}\n <div className=\"flex w-full flex-col items-center gap-2 text-center\">\n <p\n className={cn(\n \"w-full font-extrabold text-on-prominent-static-inverse\",\n mob\n ? \"text-2xl leading-8\"\n : desk\n ? \"text-[28px] leading-9\"\n : \"text-2xl leading-8 md:text-[28px] md:leading-9\",\n )}\n >\n {title}\n </p>\n <p className=\"w-full text-base font-normal leading-6 text-on-prominent-static-inverse\">\n {description}\n </p>\n {tag && (\n <div className=\"flex h-6 items-center justify-center rounded-[6px] border border-[var(--feedback-success-tag-border)] px-2\">\n <span className=\"whitespace-nowrap text-xs font-semibold leading-[12px] text-on-prominent-static-inverse\">\n {tag}\n </span>\n </div>\n )}\n </div>\n </div>\n\n {/* ── Bottom: slot + buttons — gap-6 (24px) within ── */}\n <div className=\"flex w-full flex-col items-center gap-6\">\n {slotActionNudge && <div className=\"w-full\">{slotActionNudge}</div>}\n\n {/*\n DOM order: [primary, secondary].\n Mobile flex-col → primary TOP, secondary BOTTOM ✓\n Desktop flex-row-reverse → secondary LEFT, primary RIGHT ✓\n */}\n <div\n className={cn(\n \"flex w-full gap-2\",\n mob ? \"flex-col\" : desk ? \"flex-row-reverse\" : \"flex-col md:flex-row-reverse\",\n )}\n >\n <button\n type=\"button\"\n onClick={onPrimary}\n className={cn(\n \"flex h-12 items-center justify-center rounded-full bg-[var(--primitive-coral-700)] px-7 text-base font-extrabold leading-4 text-white transition-colors hover:bg-[var(--primitive-coral-800)] active:bg-[var(--primitive-coral-900)]\",\n mob ? \"w-full\" : desk ? \"w-[280px]\" : \"w-full md:w-[280px]\",\n )}\n >\n {primaryLabel}\n </button>\n\n <button\n type=\"button\"\n onClick={onSecondary}\n className={cn(\n \"flex h-12 items-center justify-center rounded-full border border-[var(--feedback-success-tag-border)] bg-transparent px-7 text-base font-extrabold leading-4 text-on-prominent-static-inverse transition-colors hover:bg-[var(--background-hover-static-dark)] active:bg-[var(--background-pressed-static-dark)]\",\n mob ? \"w-full\" : desk ? \"w-[280px]\" : \"w-full md:w-[280px]\",\n )}\n >\n {secondaryLabel}\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Header blocks\n Figma nodes:\n HeaderApp mobile 10603-17481\n HeaderApp desktop 10603-17525\n HeaderAppHome mobile 10603-17563\n HeaderBranding mobile 10603-17554\n\n Three related sub-components sharing a private IconButton and AskAmyPill.\n All sit on a light surface (bg-card / page background) — not always-dark.\n ────────────────────────────────────────────────────────────────────────── */\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../ui/icon\";\nimport { Avatar, AvatarFallback, AvatarBadge, AvatarImage } from \"../ui/avatar\";\nimport { Skeleton } from \"../ui/skeleton\";\nimport { Tab, TabList, TabTrigger } from \"../ui/tab\";\nimport {\n SegmentedControl,\n SegmentedControlList,\n SegmentedControlTrigger,\n} from \"../ui/segmented-control\";\n\n/* ── Types ─────────────────────────────────────────────────────────────── */\n\nexport type HeaderAppLayout = \"mobile\" | \"desktop\";\nexport type HeaderAppState = \"default\" | \"loading\";\n\nexport interface HeaderAppTab {\n id: string;\n label: string;\n}\n\nexport interface HeaderAppAction {\n id: string;\n iconName: string;\n onClick?: () => void;\n ariaLabel: string;\n}\n\nexport type HeaderAppCenter =\n | { kind: \"none\" }\n | {\n kind: \"segmentedControl\";\n items: { value: string; label: string }[];\n value: string;\n onValueChange: (v: string) => void;\n }\n | { kind: \"askAmy\"; onClick?: () => void };\n\nexport interface HeaderAppProps {\n layout?: HeaderAppLayout;\n state?: HeaderAppState;\n showBack?: boolean;\n onBack?: () => void;\n /** Optional leading logo — renders instead of back button (e.g. cTrader iframe). */\n leadingLogo?: { src: string; alt: string };\n tabs?: HeaderAppTab[];\n activeTabId?: string;\n onTabChange?: (id: string) => void;\n labelButton?: { label: string; onClick?: () => void };\n actions?: HeaderAppAction[];\n showAskAmyRight?: boolean;\n onAskAmyRight?: () => void;\n showClose?: boolean;\n onClose?: () => void;\n center?: HeaderAppCenter;\n className?: string;\n}\n\nexport interface HeaderAppHomeProps {\n state?: HeaderAppState;\n avatarSrc?: string;\n avatarFallback?: string;\n showNotificationBadge?: boolean;\n actions?: HeaderAppAction[];\n showAskAmy?: boolean;\n onAskAmy?: () => void;\n className?: string;\n}\n\nexport interface HeaderBrandingProps {\n languageCode?: string;\n onLanguageClick?: () => void;\n actions?: HeaderAppAction[];\n className?: string;\n}\n\n/* ── Private helpers ───────────────────────────────────────────────────── */\n\nfunction IconButton({\n iconName,\n ariaLabel,\n onClick,\n loading = false,\n className,\n}: {\n iconName: string;\n ariaLabel: string;\n onClick?: () => void;\n loading?: boolean;\n className?: string;\n}) {\n if (loading) {\n return (\n <Skeleton\n className={cn(\n \"size-8 shrink-0 rounded-full\",\n className,\n )}\n />\n );\n }\n return (\n <button\n type=\"button\"\n aria-label={ariaLabel}\n onClick={onClick}\n className={cn(\n \"flex size-8 shrink-0 items-center justify-center rounded-full\",\n \"bg-[var(--background-default-opacity-default)]\",\n \"transition-colors hover:bg-[var(--background-hover-default)]\",\n \"active:bg-[var(--background-pressed-default)]\",\n className,\n )}\n >\n <Icon name={iconName as Parameters<typeof Icon>[0][\"name\"]} weight=\"fill\" className=\"size-6 text-prominent\" />\n </button>\n );\n}\n\n// Sparkles path data (Quill LabelPairedSparklesMdBold 16×24) — same mask as NavDesktopSidebar\nconst SPARKLES_MASK = `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 24'%3E%3Cpath d='M10.219 6.688 12 6l.656-1.75c.031-.156.188-.25.344-.25.125 0 .281.094.313.25L14 6l1.75.688c.156.03.25.187.25.312 0 .156-.094.313-.25.344L14 8l-.687 1.781c-.032.125-.188.219-.313.219-.156 0-.312-.094-.344-.219L12 8l-1.781-.656C10.094 7.312 10 7.156 10 7c0-.125.094-.281.219-.312M.28 11.5l.532-.219.25-.125h.03l2.75-1.281 1.282-2.781.125-.25.25-.532A.47.47 0 0 1 5.938 6c.187 0 .375.125.468.313l.25.53.094.25.031.032 1.25 2.75 2.781 1.281.25.125.532.25a.47.47 0 0 1 .312.438.55.55 0 0 1-.312.469l-.531.218-.25.125-2.782 1.281-1.281 2.75v.032l-.125.25-.219.531a.55.55 0 0 1-.468.313.47.47 0 0 1-.438-.313l-.25-.531-.125-.25v-.032l-1.281-2.75-2.75-1.28h-.032l-.25-.126-.53-.219A.52.52 0 0 1 0 11.97c0-.188.094-.375.281-.469m2.594.469 1.594.75c.312.125.593.406.75.719l.718 1.593.75-1.594c.157-.312.407-.593.72-.718L9 11.969l-1.594-.75c-.312-.125-.562-.406-.718-.719l-.75-1.594-.72 1.594c-.155.313-.437.594-.75.719zM12 16l.656-1.75c.031-.156.188-.25.344-.25.125 0 .281.094.313.25L14 16l1.75.688c.156.03.25.187.25.312 0 .156-.094.313-.25.344L14 18l-.687 1.781c-.032.125-.188.219-.313.219-.156 0-.312-.094-.344-.219L12 18l-1.781-.656C10.094 17.312 10 17.156 10 17c0-.125.094-.281.219-.312z'/%3E%3C/svg%3E\")`\n\nfunction AskAmyPill({\n onClick,\n className,\n}: {\n onClick?: () => void;\n className?: string;\n}) {\n return (\n <button\n type=\"button\"\n aria-label=\"Ask Amy\"\n onClick={onClick}\n className={cn(\n \"amy-button-bg flex items-center justify-center rounded-[56px] border-none cursor-pointer gap-1.5 px-4 h-8\",\n className,\n )}\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\n/* ── HeaderApp ─────────────────────────────────────────────────────────── */\n\nexport function HeaderApp({\n layout,\n state = \"default\",\n showBack,\n onBack,\n leadingLogo,\n tabs,\n activeTabId,\n onTabChange,\n labelButton,\n actions = [],\n showAskAmyRight,\n onAskAmyRight,\n showClose,\n onClose,\n center,\n className,\n}: HeaderAppProps) {\n const mob = layout === \"mobile\";\n const desk = layout === \"desktop\";\n const loading = state === \"loading\";\n\n const containerHeight = mob\n ? \"h-14\"\n : desk\n ? \"h-20\"\n : \"h-14 md:h-20\";\n\n const containerWidth = mob\n ? \"w-[360px] max-w-full\"\n : desk\n ? \"w-full\"\n : \"w-full\";\n\n const hasTabs = tabs && tabs.length > 0;\n\n return (\n <div\n data-slot=\"header-app\"\n data-layout={layout ?? \"responsive\"}\n data-state={state}\n className={cn(\n \"relative flex items-center gap-4 bg-card px-6\",\n containerHeight,\n containerWidth,\n hasTabs && \"pb-0\",\n className,\n )}\n >\n {/* Leading area */}\n <div className=\"flex shrink-0 items-center\">\n {leadingLogo ? (\n <div className=\"relative size-8 shrink-0 overflow-hidden rounded-full\">\n <img alt={leadingLogo.alt} src={leadingLogo.src} className=\"absolute inset-0 size-full object-contain\" />\n </div>\n ) : showBack ? (\n loading ? (\n <Skeleton className=\"size-8 rounded-full\" />\n ) : (\n <IconButton iconName=\"arrow-left\" ariaLabel=\"Go back\" onClick={onBack} />\n )\n ) : null}\n </div>\n\n {/* Center slot — tabs */}\n {hasTabs && !center && (\n <div className=\"flex h-full flex-1 items-end\">\n <Tab\n value={activeTabId ?? tabs![0]?.id}\n onValueChange={onTabChange}\n className=\"h-full w-full\"\n >\n <TabList size=\"md\" className=\"h-full border-b-0\">\n {tabs!.map((t) => (\n <TabTrigger key={t.id} value={t.id}>\n {t.label}\n </TabTrigger>\n ))}\n </TabList>\n </Tab>\n </div>\n )}\n\n {/* Center slot — absolute overlay (segmented control / Ask Amy) */}\n {center && center.kind !== \"none\" && (\n <div className=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\">\n {center.kind === \"segmentedControl\" && (\n loading ? (\n <Skeleton className=\"h-9 w-40 rounded-full\" />\n ) : (\n <SegmentedControl\n value={center.value}\n onValueChange={center.onValueChange}\n >\n <SegmentedControlList size=\"md\">\n {center.items.map((item) => (\n <SegmentedControlTrigger key={item.value} value={item.value} className=\"px-4\">\n {item.label}\n </SegmentedControlTrigger>\n ))}\n </SegmentedControlList>\n </SegmentedControl>\n )\n )}\n {center.kind === \"askAmy\" && (\n loading ? (\n <Skeleton className=\"h-8 w-28 rounded-2xl\" />\n ) : (\n <AskAmyPill onClick={center.onClick} />\n )\n )}\n </div>\n )}\n\n {/* Spacer pushes right cluster to end when no center/tabs */}\n {(!hasTabs && (!center || center.kind === \"none\")) && <div className=\"flex-1\" />}\n\n {/* Right cluster */}\n <div className=\"ml-auto flex shrink-0 items-center gap-2\">\n {labelButton && (\n loading ? (\n <Skeleton className=\"h-8 w-20 rounded-full\" />\n ) : (\n <button\n type=\"button\"\n onClick={labelButton.onClick}\n className=\"flex h-8 items-center rounded-2xl bg-[var(--background-default-opacity-default)] px-4 text-sm font-semibold text-prominent transition-colors hover:bg-[var(--background-hover-default)] active:bg-[var(--background-pressed-default)]\"\n >\n {labelButton.label}\n </button>\n )\n )}\n\n {showAskAmyRight && (\n loading ? (\n <Skeleton className=\"size-8 rounded-full\" />\n ) : (\n <AskAmyPill onClick={onAskAmyRight} />\n )\n )}\n\n {actions.map((action) => (\n <IconButton\n key={action.id}\n iconName={action.iconName}\n ariaLabel={action.ariaLabel}\n onClick={action.onClick}\n loading={loading}\n />\n ))}\n\n {showClose && (\n <IconButton iconName=\"xmark\" ariaLabel=\"Close\" onClick={onClose} loading={loading} />\n )}\n </div>\n </div>\n );\n}\n\n/* ── HeaderAppHome ─────────────────────────────────────────────────────── */\n\nexport function HeaderAppHome({\n state = \"default\",\n avatarSrc,\n avatarFallback = \"U\",\n showNotificationBadge,\n actions = [],\n showAskAmy,\n onAskAmy,\n className,\n}: HeaderAppHomeProps) {\n const loading = state === \"loading\";\n\n return (\n <div\n data-slot=\"header-app-home\"\n data-state={state}\n className={cn(\n \"relative flex h-14 w-[360px] max-w-full items-center bg-card px-6\",\n className,\n )}\n >\n {/* Avatar — left */}\n {loading ? (\n <Skeleton className=\"size-8 shrink-0 rounded-full\" />\n ) : (\n <Avatar className=\"shrink-0\">\n {avatarSrc && <AvatarImage src={avatarSrc} alt=\"\" />}\n <AvatarFallback>{avatarFallback}</AvatarFallback>\n {showNotificationBadge && <AvatarBadge />}\n </Avatar>\n )}\n\n <div className=\"flex-1\" />\n\n {/* Ask Amy pill — absolute center */}\n {showAskAmy && (\n <div className=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\">\n {loading ? (\n <Skeleton className=\"h-8 w-28 rounded-2xl\" />\n ) : (\n <AskAmyPill onClick={onAskAmy} />\n )}\n </div>\n )}\n\n {/* Right actions */}\n <div className=\"flex shrink-0 items-center gap-2\">\n {actions.map((action) => (\n <IconButton\n key={action.id}\n iconName={action.iconName}\n ariaLabel={action.ariaLabel}\n onClick={action.onClick}\n loading={loading}\n />\n ))}\n </div>\n </div>\n );\n}\n\n/* ── HeaderBranding ────────────────────────────────────────────────────── */\n\nexport function HeaderBranding({\n languageCode = \"EN\",\n onLanguageClick,\n actions = [],\n className,\n}: HeaderBrandingProps) {\n return (\n <div\n data-slot=\"header-branding\"\n className={cn(\n \"flex h-14 w-[360px] max-w-full items-center gap-4 bg-card px-6\",\n className,\n )}\n >\n {/* Deriv wordmark — left */}\n <img src=\"/assets/deriv-wordmark.svg\" alt=\"Deriv\" className=\"h-6 w-[72px] shrink-0\" />\n\n <div className=\"flex-1\" />\n\n {/* Language pill — right */}\n <button\n type=\"button\"\n aria-label={`Language: ${languageCode}`}\n onClick={onLanguageClick}\n className=\"flex h-8 items-center gap-0.5 rounded-2xl bg-[var(--background-default-opacity-default)] px-4 transition-colors hover:bg-[var(--background-hover-default)] active:bg-[var(--background-pressed-default)]\"\n >\n <Icon name=\"globe\" weight=\"bold\" className=\"size-6 shrink-0 text-prominent\" />\n <span className=\"text-sm font-extrabold text-prominent\">{languageCode}</span>\n </button>\n\n {/* Optional extra actions */}\n {actions.length > 0 && (\n <div className=\"flex shrink-0 items-center gap-2\">\n {actions.map((action) => (\n <IconButton\n key={action.id}\n iconName={action.iconName}\n ariaLabel={action.ariaLabel}\n onClick={action.onClick}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\n\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { HeroActionButton, type ActionButtonState } from \"@/components/blocks/hero-action-button\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n TradingActionButtons (block)\n\n Standalone row of 4 action buttons: Trade, Transfer, Deposit, Withdraw.\n No background wrapper — consumers place these on their own surface.\n\n Primary (surface=\"dark\") — styled for placement on #181C25 canvas.\n Secondary (surface=\"light\") — styled for placement on a light canvas.\n\n Each button's state is controlled independently via tradeState,\n transferState, depositState, withdrawState props.\n ────────────────────────────────────────────────────────────────────────── */\n\nexport interface TradingActionButtonsProps {\n tradeState?: ActionButtonState;\n transferState?: ActionButtonState;\n depositState?: ActionButtonState;\n withdrawState?: ActionButtonState;\n}\n\n/* ── Primary ─────────────────────────────────────────────────────────────── */\n\nexport function TradingActionButtonsPrimarySkeleton() {\n return (\n <div className=\"flex items-center\" role=\"group\" aria-label=\"Loading action buttons\">\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 );\n}\n\nexport function TradingActionButtonsPrimary({\n tradeState = \"default\",\n transferState = \"default\",\n depositState = \"default\",\n withdrawState = \"default\",\n}: TradingActionButtonsProps) {\n return (\n <div\n className=\"flex items-center\"\n data-slot=\"trading-action-buttons-primary\"\n role=\"group\"\n aria-label=\"Account actions\"\n >\n <HeroActionButton\n label=\"Trade\"\n icon={({ className }: { className?: string }) => <Icon name=\"chart-candlestick\" className={className} />}\n primary\n state={tradeState}\n surface=\"dark\"\n colClass=\"w-[96px]\"\n />\n <HeroActionButton\n label=\"Transfer\"\n icon={({ className }: { className?: string }) => <Icon name=\"arrow-right-arrow-left\" className={className} />}\n state={transferState}\n surface=\"dark\"\n colClass=\"w-[96px]\"\n />\n <HeroActionButton\n label=\"Deposit\"\n icon={({ className }: { className?: string }) => <Icon name=\"plus\" weight=\"fill\" className={className} />}\n state={depositState}\n surface=\"dark\"\n colClass=\"w-[96px]\"\n />\n <HeroActionButton\n label=\"Withdraw\"\n icon={({ className }: { className?: string }) => <Icon name=\"minus\" weight=\"fill\" className={className} />}\n state={withdrawState}\n surface=\"dark\"\n colClass=\"w-[96px]\"\n />\n </div>\n );\n}\n\n/* ── Secondary ───────────────────────────────────────────────────────────── */\n\nexport function TradingActionButtonsSecondarySkeleton() {\n return (\n <div className=\"flex items-center w-full\" role=\"group\" aria-label=\"Loading action buttons\">\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-prominent/[0.08]\" />\n <Skeleton className=\"h-[8px] w-[56px] rounded-[8px] bg-prominent/[0.08]\" />\n </div>\n ))}\n </div>\n );\n}\n\nexport function TradingActionButtonsSecondary({\n tradeState = \"default\",\n transferState = \"default\",\n depositState = \"default\",\n withdrawState = \"default\",\n}: TradingActionButtonsProps) {\n return (\n <div\n className=\"flex items-center w-full\"\n data-slot=\"trading-action-buttons-secondary\"\n role=\"group\"\n aria-label=\"Account actions\"\n >\n <HeroActionButton\n label=\"Trade\"\n icon={({ className }: { className?: string }) => <Icon name=\"chart-candlestick\" className={className} />}\n primary\n state={tradeState}\n surface=\"light\"\n colClass=\"flex-1\"\n />\n <HeroActionButton\n label=\"Transfer\"\n icon={({ className }: { className?: string }) => <Icon name=\"arrow-right-arrow-left\" className={className} />}\n state={transferState}\n surface=\"light\"\n colClass=\"flex-1\"\n />\n <HeroActionButton\n label=\"Deposit\"\n icon={({ className }: { className?: string }) => <Icon name=\"plus\" weight=\"fill\" className={className} />}\n state={depositState}\n surface=\"light\"\n colClass=\"flex-1\"\n />\n <HeroActionButton\n label=\"Withdraw\"\n icon={({ className }: { className?: string }) => <Icon name=\"minus\" weight=\"fill\" className={className} />}\n state={withdrawState}\n surface=\"light\"\n colClass=\"flex-1\"\n />\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\n\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n TradingEmpty (block)\n Figma desktop node 10619:9947 / mobile node 10619:9941\n \"Test — Product Design System\"\n\n Empty state: centred image + title + description.\n No layout variants — desktop and mobile are visually identical.\n\n Tokens:\n title text-prominent → var(--text-prominent-default) #181C25\n description text-prominent/[0.72] → #181C25 @ 72% (Figma: rgba(0,0,0,0.72))\n NB: text-subtle is 48% — wrong. 72% must use opacity modifier.\n ────────────────────────────────────────────────────────────────────────── */\n\nexport interface TradingEmptyProps {\n /** Quill illustration component or React node shown above the text. */\n image?: React.ReactNode;\n /** @deprecated use `image` instead */\n imageSrc?: string;\n /** Primary heading. */\n title?: string;\n /** Supporting body copy. */\n description?: string;\n}\n\n/* ── Skeleton ─────────────────────────────────────────────────────────────── */\n\nexport function TradingEmptySkeleton() {\n return (\n <div className=\"flex flex-col gap-2 items-center p-6 w-full\">\n <Skeleton className=\"size-16 rounded-full bg-prominent/[0.08]\" />\n <div className=\"flex flex-col gap-1 items-center w-full\">\n <Skeleton className=\"h-4 w-40 rounded-full bg-prominent/[0.08]\" />\n <Skeleton className=\"h-3 w-full rounded-full bg-prominent/[0.08]\" />\n <Skeleton className=\"h-3 w-3/4 rounded-full bg-prominent/[0.08]\" />\n </div>\n </div>\n );\n}\n\n/* ── Component ────────────────────────────────────────────────────────────── */\n\nexport function TradingEmpty({\n image,\n imageSrc,\n title = \"No transactions yet\",\n description = \"Start by making your first transfer to see your trading activity here.\",\n}: TradingEmptyProps) {\n return (\n <div\n className=\"flex flex-col gap-2 items-center p-6 w-full\"\n data-slot=\"trading-empty\"\n >\n {(image ?? (imageSrc && (\n <div className=\"size-16 shrink-0 overflow-hidden\" aria-hidden=\"true\">\n <img src={imageSrc} alt=\"\" className=\"size-full object-contain\" />\n </div>\n )))}\n\n <div className=\"flex flex-col gap-1 items-center w-full text-center\">\n <p\n className=\"font-bold text-base leading-6 text-prominent w-full\"\n style={{ wordBreak: \"break-word\" }}\n >\n {title}\n </p>\n <p\n className=\"font-normal text-sm leading-5 text-prominent/[0.72] w-full\"\n style={{ wordBreak: \"break-word\" }}\n >\n {description}\n </p>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"@/components/ui/button\";\n\n/* ──────────────────────────────────────────────────────────────────────────\n Referral (block)\n 1:1 with Figma \"refer a friend\" — desktop node 10565:91896,\n mobile node 10565:91902.\n\n \"Refer a friend, get 10 USD\" screen. A centered card column:\n 1. Gift-box illustration (128px) — asset-agnostic, takes `assetSrc`.\n 2. Heading (extrabold, centered).\n 3. Share-link card: share title + referral URL + full-width Copy button\n + a 3-up metrics row (value over label) with vertical dividers.\n 4. How-to-earn card: title + numbered steps.\n\n Desktop and mobile are the same column at 390px content width; the only\n difference is the heading size (28/36 desktop, 24/32 mobile). Pass\n `layout=\"mobile\"` / `layout=\"desktop\"` to force a layout — required in the\n playground where md: breakpoints fire at viewport width, not container width.\n Omit for fully responsive rendering.\n\n Tokens used:\n border border-border-subtle → monochrome/border/normal/mid (8%)\n title/values text-prominent → texticon/normal/prominent\n url/labels text-subtle → texticon/normal/subtle\n step body text-[var(--referral-text-body)]→ texticon/normal/default (72%)\n Copy button <Button> (primary/lg) → component/button/bg/coral/primary\n ────────────────────────────────────────────────────────────────────────── */\n\nexport type ReferralLayout = \"mobile\" | \"desktop\";\n\nexport interface ReferralMetric {\n /** Stat value, e.g. \"0\" or \"0.00\". */\n value: string;\n /** Stat label below the value, e.g. \"Sign-ups\". */\n label: string;\n}\n\nexport interface ReferralProps {\n /** Force a layout. Omit (default) = responsive: mobile < md, desktop ≥ md. */\n layout?: ReferralLayout;\n /** Gift illustration src. Omit to show a neutral placeholder. */\n assetSrc?: string;\n /** Heading. Use \"\\n\" to control line breaks. */\n title?: string;\n /** Share-link card title. */\n shareTitle?: string;\n /** Referral URL shown under the share title. */\n referralLink?: string;\n /** Copy button label. */\n copyLabel?: string;\n /** Copy button handler. */\n onCopy?: () => void;\n /** Metrics row. Omit to use built-in demo metrics. */\n metrics?: ReferralMetric[];\n /** How-to-earn card title. */\n howToTitle?: string;\n /** How-to-earn steps. Omit to use built-in demo steps. */\n steps?: string[];\n className?: string;\n}\n\nconst DEMO_METRICS: ReferralMetric[] = [\n { value: \"0\", label: \"Sign-ups\" },\n { value: \"0\", label: \"Traded\" },\n { value: \"0.00\", label: \"Earned (USD)\" },\n];\n\nconst DEMO_STEPS: string[] = [\n \"Share your referral link to your friends.\",\n \"Earn 10 USD per friend that signs up, deposit, and trade with your link.\",\n];\n\n/* ── Gift illustration — 128px, neutral fallback. ──────────────────────── */\nfunction GiftAsset({ src }: { src?: string }) {\n return (\n <div className=\"relative size-32 shrink-0 overflow-hidden\">\n {src ? (\n <img alt=\"\" src={src} className=\"absolute inset-0 size-full object-contain\" />\n ) : (\n <div className=\"size-full rounded-2xl bg-[var(--background-default-opacity-default)]\" />\n )}\n </div>\n );\n}\n\n/* ── Numbered step badge. ──────────────────────────────────────────────── */\n/* Figma uses circle-1/circle-2 (not in the icon catalog) — render a numbered\n marker instead. prominent/inverse tokens auto-invert in dark mode. */\nfunction StepBadge({ n }: { n: number }) {\n return (\n <span className=\"mt-0.5 flex size-4 shrink-0 items-center justify-center rounded-full bg-[var(--text-prominent-default)] text-[10px] font-bold leading-none text-[var(--text-prominent-inverse)]\">\n {n}\n </span>\n );\n}\n\n/* ── Metrics row (value over label, divided). ──────────────────────────── */\nfunction Metrics({ metrics }: { metrics: ReferralMetric[] }) {\n return (\n <div className=\"flex w-full items-center gap-2\">\n {metrics.map((m, i) => (\n <React.Fragment key={`${m.label}-${i}`}>\n {i > 0 && <div className=\"h-8 w-px shrink-0 bg-border-subtle\" />}\n <div className=\"flex min-w-0 flex-1 flex-col items-center\">\n <p className=\"w-full text-center text-base font-bold leading-6 text-prominent\">{m.value}</p>\n <p className=\"whitespace-nowrap text-center text-xs font-normal leading-5 text-subtle\">{m.label}</p>\n </div>\n </React.Fragment>\n ))}\n </div>\n );\n}\n\n/* ── Public export ─────────────────────────────────────────────────────── */\nexport function Referral({\n layout,\n assetSrc,\n title = \"Refer a friend,\\nget 10 USD\",\n shareTitle = \"Share this link with your friend\",\n referralLink = \"https://home.deriv.com/refer/WAQAS2026\",\n copyLabel = \"Copy\",\n onCopy,\n metrics = DEMO_METRICS,\n howToTitle = \"How to earn?\",\n steps = DEMO_STEPS,\n className,\n}: ReferralProps) {\n const mob = layout === \"mobile\";\n const desk = layout === \"desktop\";\n\n const headingSize = mob\n ? \"text-2xl leading-8\"\n : desk\n ? \"text-[28px] leading-9\"\n : \"text-2xl leading-8 md:text-[28px] md:leading-9\";\n\n return (\n <div\n className={cn(\"flex w-full flex-col items-center gap-6 p-6\", className)}\n data-slot=\"referral\"\n data-layout={layout ?? \"responsive\"}\n >\n <GiftAsset src={assetSrc} />\n\n <h2 className={cn(\"w-full whitespace-pre-line text-center font-extrabold text-prominent\", headingSize)}>\n {title}\n </h2>\n\n {/* ── Share-link card ── */}\n <div className=\"flex w-full flex-col gap-6 rounded-2xl border border-border-subtle p-6\">\n <div className=\"flex w-full flex-col gap-6\">\n <div className=\"flex w-full flex-col text-center\">\n <p className=\"w-full text-base font-bold leading-6 text-prominent\">{shareTitle}</p>\n <p className=\"w-full overflow-hidden text-ellipsis whitespace-nowrap text-base font-normal leading-6 text-subtle\">\n {referralLink}\n </p>\n </div>\n <Button className=\"w-full\" onClick={onCopy}>\n {copyLabel}\n </Button>\n </div>\n <Metrics metrics={metrics} />\n </div>\n\n {/* ── How-to-earn card ── */}\n <div className=\"flex w-full flex-col gap-2 rounded-2xl border border-border-subtle p-6\">\n <p className=\"w-full text-base font-bold leading-6 text-prominent\">{howToTitle}</p>\n {steps.map((step, i) => (\n <div key={i} className=\"flex w-full items-start gap-1.5\">\n <StepBadge n={i + 1} />\n <p className=\"min-w-0 flex-1 text-sm font-normal leading-5 text-[var(--referral-text-body)]\">{step}</p>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,YAAY,WAAW;;;ACFvB,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ADYA;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;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","names":["_a","_b","React","jsx","jsx","React","Fragment","jsx","jsxs","jsx","jsx","jsx","cva","jsx","cva","React","Slot","jsx","jsxs","Slot","cva","Slot","Fragment","jsx","jsxs","cva","Slot","cva","jsx","cva","React","jsx","_a","_b","className","props","cva","jsx","cva","React","jsx","jsxs","api","React","Fragment","jsx","jsxs","config","jsx","jsxs","cva","Slot","jsx","jsx","cva","Slot","jsx","React","cva","React","cva","jsx","jsxs","cva","Textarea","_a","jsx","cva","_a","_b","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","cva","jsx","cva","useMemo","cva","jsx","jsx","jsxs","cva","useMemo","_a","React","Slot","jsx","Slot","_a","jsx","React","cva","jsx","jsxs","cva","Input","_a","React","jsx","jsx","jsxs","PhoneInput","_a","React","jsx","jsxs","React","cva","jsx","jsxs","cva","React","cva","jsx","jsxs","cva","_a","React","OTPInput","OTPInputContext","cva","jsx","jsxs","OTPInput","cva","_a","OTPInputContext","jsx","cva","Slot","jsx","cva","Slot","jsx","jsxs","React","jsx","jsxs","cva","jsx","cva","jsx","jsxs","jsx","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","cva","Slot","React","jsx","jsx","jsxs","Tooltip","jsx","jsxs","open","Slot","cva","Tooltip","React","jsx","jsxs","jsx","React","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","cva","jsx","cva","cva","TabsPrimitive","jsx","cva","TabsPrimitive","cva","jsx","cva","jsx","jsx","jsxs","Icon","useEffect","useState","DrawerPrimitive","jsx","jsxs","useState","useEffect","DrawerPrimitive","useState","jsx","jsxs","HERO_BG","PROGRESS_TRACK","PROGRESS_ACTIVE","PROGRESS_DONE","STEPS","TOTAL_STEPS","imgStepIcons","useState","useState","jsx","jsxs","HERO_BG","useState","useState","jsx","jsxs","HERO_BG","CORAL","TABS","ACTIONS","TAB_DATA","useState","jsx","jsxs","ACTIONS","useState","DerivLightMt5GoldIcon","jsx","jsxs","ACTIONS","useState","jsx","jsxs","jsxs","jsx","jsx","jsxs","useState","jsx","jsxs","NAV_ITEMS","useState","jsx","Fragment","jsx","jsxs","Fragment","jsx","jsxs","Fragment","jsx","jsxs","Logo","React","jsx","jsxs","jsx","jsxs","useEffect","useRef","useState","useCallback","jsx","jsxs","useState","jsx","jsxs","useState","React","jsx","jsxs","jsx","jsxs","SPARKLES_MASK","AskAmyPill","jsx","jsxs","jsx","jsxs","React","jsx","jsxs"]}