@dynamic-labs-sdk/droplet 0.0.0 → 0.27.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +292 -0
- package/dist/components/ask-ai-sheet/ask-ai-sheet.d.ts +11 -0
- package/dist/components/ask-ai-sheet/ask-ai-sheet.d.ts.map +1 -0
- package/dist/components/ask-ai-sheet/index.d.ts +2 -0
- package/dist/components/ask-ai-sheet/index.d.ts.map +1 -0
- package/dist/components/asset-icon/asset-icon.d.ts +7 -0
- package/dist/components/asset-icon/asset-icon.d.ts.map +1 -0
- package/dist/components/asset-icon/index.d.ts +2 -0
- package/dist/components/asset-icon/index.d.ts.map +1 -0
- package/dist/components/code-block/code-block.d.ts +24 -0
- package/dist/components/code-block/code-block.d.ts.map +1 -0
- package/dist/components/code-block/code-block.stories.d.ts +38 -0
- package/dist/components/code-block/code-block.stories.d.ts.map +1 -0
- package/dist/components/code-block/index.d.ts +3 -0
- package/dist/components/code-block/index.d.ts.map +1 -0
- package/dist/components/copy-button/copy-button.d.ts +9 -0
- package/dist/components/copy-button/copy-button.d.ts.map +1 -0
- package/dist/components/copy-button/copy-button.stories.d.ts +33 -0
- package/dist/components/copy-button/copy-button.stories.d.ts.map +1 -0
- package/dist/components/copy-button/index.d.ts +2 -0
- package/dist/components/copy-button/index.d.ts.map +1 -0
- package/dist/components/danger-zone/danger-zone.d.ts +11 -0
- package/dist/components/danger-zone/danger-zone.d.ts.map +1 -0
- package/dist/components/danger-zone/danger-zone.stories.d.ts +20 -0
- package/dist/components/danger-zone/danger-zone.stories.d.ts.map +1 -0
- package/dist/components/danger-zone/index.d.ts +2 -0
- package/dist/components/danger-zone/index.d.ts.map +1 -0
- package/dist/components/domain-list/domain-list.d.ts +10 -0
- package/dist/components/domain-list/domain-list.d.ts.map +1 -0
- package/dist/components/domain-list/domain-list.stories.d.ts +14 -0
- package/dist/components/domain-list/domain-list.stories.d.ts.map +1 -0
- package/dist/components/domain-list/index.d.ts +2 -0
- package/dist/components/domain-list/index.d.ts.map +1 -0
- package/dist/components/empty-state/empty-state.d.ts +13 -0
- package/dist/components/empty-state/empty-state.d.ts.map +1 -0
- package/dist/components/empty-state/empty-state.stories.d.ts +15 -0
- package/dist/components/empty-state/empty-state.stories.d.ts.map +1 -0
- package/dist/components/empty-state/index.d.ts +2 -0
- package/dist/components/empty-state/index.d.ts.map +1 -0
- package/dist/components/icon-config/icon-config.d.ts +11 -0
- package/dist/components/icon-config/icon-config.d.ts.map +1 -0
- package/dist/components/icon-config/index.d.ts +2 -0
- package/dist/components/icon-config/index.d.ts.map +1 -0
- package/dist/components/icons/animated-icon/animated-icon.d.ts +26 -0
- package/dist/components/icons/animated-icon/animated-icon.d.ts.map +1 -0
- package/dist/components/icons/animated-icon/index.d.ts +3 -0
- package/dist/components/icons/animated-icon/index.d.ts.map +1 -0
- package/dist/components/icons/arrow-up-right/arrow-up-right.d.ts +6 -0
- package/dist/components/icons/arrow-up-right/arrow-up-right.d.ts.map +1 -0
- package/dist/components/icons/arrow-up-right/index.d.ts +3 -0
- package/dist/components/icons/arrow-up-right/index.d.ts.map +1 -0
- package/dist/components/icons/chart-bar-increasing/chart-bar-increasing.d.ts +11 -0
- package/dist/components/icons/chart-bar-increasing/chart-bar-increasing.d.ts.map +1 -0
- package/dist/components/icons/chart-bar-increasing/index.d.ts +3 -0
- package/dist/components/icons/chart-bar-increasing/index.d.ts.map +1 -0
- package/dist/components/icons/chevron-down/chevron-down.d.ts +6 -0
- package/dist/components/icons/chevron-down/chevron-down.d.ts.map +1 -0
- package/dist/components/icons/chevron-down/index.d.ts +3 -0
- package/dist/components/icons/chevron-down/index.d.ts.map +1 -0
- package/dist/components/icons/chevron-right/chevron-right.d.ts +6 -0
- package/dist/components/icons/chevron-right/chevron-right.d.ts.map +1 -0
- package/dist/components/icons/chevron-right/index.d.ts +3 -0
- package/dist/components/icons/chevron-right/index.d.ts.map +1 -0
- package/dist/components/icons/copy/copy.d.ts +6 -0
- package/dist/components/icons/copy/copy.d.ts.map +1 -0
- package/dist/components/icons/copy/index.d.ts +3 -0
- package/dist/components/icons/copy/index.d.ts.map +1 -0
- package/dist/components/icons/copy-check/copy-check.d.ts +12 -0
- package/dist/components/icons/copy-check/copy-check.d.ts.map +1 -0
- package/dist/components/icons/copy-check/index.d.ts +3 -0
- package/dist/components/icons/copy-check/index.d.ts.map +1 -0
- package/dist/components/icons/dollar-sign/dollar-sign.d.ts +6 -0
- package/dist/components/icons/dollar-sign/dollar-sign.d.ts.map +1 -0
- package/dist/components/icons/dollar-sign/index.d.ts +3 -0
- package/dist/components/icons/dollar-sign/index.d.ts.map +1 -0
- package/dist/components/icons/download/download.d.ts +6 -0
- package/dist/components/icons/download/download.d.ts.map +1 -0
- package/dist/components/icons/download/index.d.ts +3 -0
- package/dist/components/icons/download/index.d.ts.map +1 -0
- package/dist/components/icons/fingerprint/fingerprint.d.ts +6 -0
- package/dist/components/icons/fingerprint/fingerprint.d.ts.map +1 -0
- package/dist/components/icons/fingerprint/index.d.ts +3 -0
- package/dist/components/icons/fingerprint/index.d.ts.map +1 -0
- package/dist/components/icons/home/home.d.ts +6 -0
- package/dist/components/icons/home/home.d.ts.map +1 -0
- package/dist/components/icons/home/index.d.ts +3 -0
- package/dist/components/icons/home/index.d.ts.map +1 -0
- package/dist/components/icons/key/index.d.ts +3 -0
- package/dist/components/icons/key/index.d.ts.map +1 -0
- package/dist/components/icons/key/key.d.ts +6 -0
- package/dist/components/icons/key/key.d.ts.map +1 -0
- package/dist/components/icons/layout-panel-top/index.d.ts +3 -0
- package/dist/components/icons/layout-panel-top/index.d.ts.map +1 -0
- package/dist/components/icons/layout-panel-top/layout-panel-top.d.ts +6 -0
- package/dist/components/icons/layout-panel-top/layout-panel-top.d.ts.map +1 -0
- package/dist/components/icons/link/index.d.ts +3 -0
- package/dist/components/icons/link/index.d.ts.map +1 -0
- package/dist/components/icons/link/link.d.ts +6 -0
- package/dist/components/icons/link/link.d.ts.map +1 -0
- package/dist/components/icons/mcp-tools/index.d.ts +2 -0
- package/dist/components/icons/mcp-tools/index.d.ts.map +1 -0
- package/dist/components/icons/mcp-tools/mcp-tools.d.ts +11 -0
- package/dist/components/icons/mcp-tools/mcp-tools.d.ts.map +1 -0
- package/dist/components/icons/moon/index.d.ts +3 -0
- package/dist/components/icons/moon/index.d.ts.map +1 -0
- package/dist/components/icons/moon/moon.d.ts +6 -0
- package/dist/components/icons/moon/moon.d.ts.map +1 -0
- package/dist/components/icons/panel-left-close/index.d.ts +3 -0
- package/dist/components/icons/panel-left-close/index.d.ts.map +1 -0
- package/dist/components/icons/panel-left-close/panel-left-close.d.ts +6 -0
- package/dist/components/icons/panel-left-close/panel-left-close.d.ts.map +1 -0
- package/dist/components/icons/panel-left-open/index.d.ts +3 -0
- package/dist/components/icons/panel-left-open/index.d.ts.map +1 -0
- package/dist/components/icons/panel-left-open/panel-left-open.d.ts +6 -0
- package/dist/components/icons/panel-left-open/panel-left-open.d.ts.map +1 -0
- package/dist/components/icons/plus/index.d.ts +3 -0
- package/dist/components/icons/plus/index.d.ts.map +1 -0
- package/dist/components/icons/plus/plus.d.ts +6 -0
- package/dist/components/icons/plus/plus.d.ts.map +1 -0
- package/dist/components/icons/refresh-cw/index.d.ts +3 -0
- package/dist/components/icons/refresh-cw/index.d.ts.map +1 -0
- package/dist/components/icons/refresh-cw/refresh-cw.d.ts +6 -0
- package/dist/components/icons/refresh-cw/refresh-cw.d.ts.map +1 -0
- package/dist/components/icons/search/index.d.ts +3 -0
- package/dist/components/icons/search/index.d.ts.map +1 -0
- package/dist/components/icons/search/search.d.ts +6 -0
- package/dist/components/icons/search/search.d.ts.map +1 -0
- package/dist/components/icons/settings/index.d.ts +3 -0
- package/dist/components/icons/settings/index.d.ts.map +1 -0
- package/dist/components/icons/settings/settings.d.ts +6 -0
- package/dist/components/icons/settings/settings.d.ts.map +1 -0
- package/dist/components/icons/shield-check/index.d.ts +3 -0
- package/dist/components/icons/shield-check/index.d.ts.map +1 -0
- package/dist/components/icons/shield-check/shield-check.d.ts +6 -0
- package/dist/components/icons/shield-check/shield-check.d.ts.map +1 -0
- package/dist/components/icons/sun/index.d.ts +3 -0
- package/dist/components/icons/sun/index.d.ts.map +1 -0
- package/dist/components/icons/sun/sun.d.ts +6 -0
- package/dist/components/icons/sun/sun.d.ts.map +1 -0
- package/dist/components/icons/terminal/index.d.ts +3 -0
- package/dist/components/icons/terminal/index.d.ts.map +1 -0
- package/dist/components/icons/terminal/terminal.d.ts +6 -0
- package/dist/components/icons/terminal/terminal.d.ts.map +1 -0
- package/dist/components/icons/users/index.d.ts +3 -0
- package/dist/components/icons/users/index.d.ts.map +1 -0
- package/dist/components/icons/users/users.d.ts +6 -0
- package/dist/components/icons/users/users.d.ts.map +1 -0
- package/dist/components/info-banner/index.d.ts +2 -0
- package/dist/components/info-banner/index.d.ts.map +1 -0
- package/dist/components/info-banner/info-banner.d.ts +9 -0
- package/dist/components/info-banner/info-banner.d.ts.map +1 -0
- package/dist/components/info-banner/info-banner.stories.d.ts +23 -0
- package/dist/components/info-banner/info-banner.stories.d.ts.map +1 -0
- package/dist/components/loading-skeleton/index.d.ts +2 -0
- package/dist/components/loading-skeleton/index.d.ts.map +1 -0
- package/dist/components/loading-skeleton/loading-skeleton.d.ts +19 -0
- package/dist/components/loading-skeleton/loading-skeleton.d.ts.map +1 -0
- package/dist/components/metric-card/index.d.ts +2 -0
- package/dist/components/metric-card/index.d.ts.map +1 -0
- package/dist/components/metric-card/metric-card.d.ts +31 -0
- package/dist/components/metric-card/metric-card.d.ts.map +1 -0
- package/dist/components/metric-card/metric-card.stories.d.ts +16 -0
- package/dist/components/metric-card/metric-card.stories.d.ts.map +1 -0
- package/dist/components/migration/banner/banner.d.ts +24 -0
- package/dist/components/migration/banner/banner.d.ts.map +1 -0
- package/dist/components/migration/banner/banner.stories.d.ts +39 -0
- package/dist/components/migration/banner/banner.stories.d.ts.map +1 -0
- package/dist/components/migration/banner/index.d.ts +2 -0
- package/dist/components/migration/banner/index.d.ts.map +1 -0
- package/dist/components/migration/double-section/double-section.d.ts +29 -0
- package/dist/components/migration/double-section/double-section.d.ts.map +1 -0
- package/dist/components/migration/double-section/double-section.stories.d.ts +32 -0
- package/dist/components/migration/double-section/double-section.stories.d.ts.map +1 -0
- package/dist/components/migration/double-section/index.d.ts +2 -0
- package/dist/components/migration/double-section/index.d.ts.map +1 -0
- package/dist/components/migration/field/field.d.ts +19 -0
- package/dist/components/migration/field/field.d.ts.map +1 -0
- package/dist/components/migration/field/field.stories.d.ts +43 -0
- package/dist/components/migration/field/field.stories.d.ts.map +1 -0
- package/dist/components/migration/field/index.d.ts +2 -0
- package/dist/components/migration/field/index.d.ts.map +1 -0
- package/dist/components/migration/index.d.ts +16 -0
- package/dist/components/migration/index.d.ts.map +1 -0
- package/dist/components/migration/settings-section-v2/index.d.ts +2 -0
- package/dist/components/migration/settings-section-v2/index.d.ts.map +1 -0
- package/dist/components/migration/settings-section-v2/settings-section-v2.d.ts +45 -0
- package/dist/components/migration/settings-section-v2/settings-section-v2.d.ts.map +1 -0
- package/dist/components/migration/settings-section-v2/settings-section-v2.stories.d.ts +40 -0
- package/dist/components/migration/settings-section-v2/settings-section-v2.stories.d.ts.map +1 -0
- package/dist/components/migration/sub-section/index.d.ts +2 -0
- package/dist/components/migration/sub-section/index.d.ts.map +1 -0
- package/dist/components/migration/sub-section/sub-section.d.ts +26 -0
- package/dist/components/migration/sub-section/sub-section.d.ts.map +1 -0
- package/dist/components/migration/sub-section/sub-section.stories.d.ts +33 -0
- package/dist/components/migration/sub-section/sub-section.stories.d.ts.map +1 -0
- package/dist/components/migration/toggle-group/index.d.ts +2 -0
- package/dist/components/migration/toggle-group/index.d.ts.map +1 -0
- package/dist/components/migration/toggle-group/toggle-group.d.ts +22 -0
- package/dist/components/migration/toggle-group/toggle-group.d.ts.map +1 -0
- package/dist/components/migration/toggle-group/toggle-group.stories.d.ts +21 -0
- package/dist/components/migration/toggle-group/toggle-group.stories.d.ts.map +1 -0
- package/dist/components/page-actions/index.d.ts +2 -0
- package/dist/components/page-actions/index.d.ts.map +1 -0
- package/dist/components/page-actions/page-actions.d.ts +5 -0
- package/dist/components/page-actions/page-actions.d.ts.map +1 -0
- package/dist/components/patterns/config-tab-with-pill/config-tab-with-pill.stories.d.ts +17 -0
- package/dist/components/patterns/config-tab-with-pill/config-tab-with-pill.stories.d.ts.map +1 -0
- package/dist/components/patterns/cors-list/cors-list.stories.d.ts +17 -0
- package/dist/components/patterns/cors-list/cors-list.stories.d.ts.map +1 -0
- package/dist/components/patterns/rounded-row-list/rounded-row-list.stories.d.ts +17 -0
- package/dist/components/patterns/rounded-row-list/rounded-row-list.stories.d.ts.map +1 -0
- package/dist/components/patterns/save-in-modal/save-in-modal.stories.d.ts +18 -0
- package/dist/components/patterns/save-in-modal/save-in-modal.stories.d.ts.map +1 -0
- package/dist/components/patterns/stat-card-grid/stat-card-grid.stories.d.ts +17 -0
- package/dist/components/patterns/stat-card-grid/stat-card-grid.stories.d.ts.map +1 -0
- package/dist/components/product-page-layout/index.d.ts +2 -0
- package/dist/components/product-page-layout/index.d.ts.map +1 -0
- package/dist/components/product-page-layout/product-page-layout.d.ts +20 -0
- package/dist/components/product-page-layout/product-page-layout.d.ts.map +1 -0
- package/dist/components/product-page-layout/product-page-layout.stories.d.ts +14 -0
- package/dist/components/product-page-layout/product-page-layout.stories.d.ts.map +1 -0
- package/dist/components/settings-section/index.d.ts +2 -0
- package/dist/components/settings-section/index.d.ts.map +1 -0
- package/dist/components/settings-section/settings-section.d.ts +10 -0
- package/dist/components/settings-section/settings-section.d.ts.map +1 -0
- package/dist/components/settings-section/settings-section.stories.d.ts +26 -0
- package/dist/components/settings-section/settings-section.stories.d.ts.map +1 -0
- package/dist/components/status-badge/index.d.ts +2 -0
- package/dist/components/status-badge/index.d.ts.map +1 -0
- package/dist/components/status-badge/status-badge.d.ts +9 -0
- package/dist/components/status-badge/status-badge.d.ts.map +1 -0
- package/dist/components/status-badge/status-badge.stories.d.ts +24 -0
- package/dist/components/status-badge/status-badge.stories.d.ts.map +1 -0
- package/dist/components/toggle-card/index.d.ts +2 -0
- package/dist/components/toggle-card/index.d.ts.map +1 -0
- package/dist/components/toggle-card/toggle-card.d.ts +113 -0
- package/dist/components/toggle-card/toggle-card.d.ts.map +1 -0
- package/dist/components/toggle-card/toggle-card.stories.d.ts +45 -0
- package/dist/components/toggle-card/toggle-card.stories.d.ts.map +1 -0
- package/dist/components/toggle-row/index.d.ts +2 -0
- package/dist/components/toggle-row/index.d.ts.map +1 -0
- package/dist/components/toggle-row/toggle-row.d.ts +16 -0
- package/dist/components/toggle-row/toggle-row.d.ts.map +1 -0
- package/dist/components/toggle-row/toggle-row.stories.d.ts +33 -0
- package/dist/components/toggle-row/toggle-row.stories.d.ts.map +1 -0
- package/dist/components/tokens/colors/colors.stories.d.ts +22 -0
- package/dist/components/tokens/colors/colors.stories.d.ts.map +1 -0
- package/dist/components/tokens/radius/radius.stories.d.ts +18 -0
- package/dist/components/tokens/radius/radius.stories.d.ts.map +1 -0
- package/dist/components/tokens/shadows/shadows.stories.d.ts +18 -0
- package/dist/components/tokens/shadows/shadows.stories.d.ts.map +1 -0
- package/dist/components/tokens/spacing/spacing.stories.d.ts +17 -0
- package/dist/components/tokens/spacing/spacing.stories.d.ts.map +1 -0
- package/dist/components/tokens/typography/typography.stories.d.ts +17 -0
- package/dist/components/tokens/typography/typography.stories.d.ts.map +1 -0
- package/dist/components/ui/accordion/accordion.d.ts +8 -0
- package/dist/components/ui/accordion/accordion.d.ts.map +1 -0
- package/dist/components/ui/accordion/index.d.ts +2 -0
- package/dist/components/ui/accordion/index.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog/alert-dialog.d.ts +19 -0
- package/dist/components/ui/alert-dialog/alert-dialog.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog/alert-dialog.stories.d.ts +13 -0
- package/dist/components/ui/alert-dialog/alert-dialog.stories.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog/index.d.ts +2 -0
- package/dist/components/ui/alert-dialog/index.d.ts.map +1 -0
- package/dist/components/ui/avatar/avatar.d.ts +12 -0
- package/dist/components/ui/avatar/avatar.d.ts.map +1 -0
- package/dist/components/ui/avatar/avatar.stories.d.ts +17 -0
- package/dist/components/ui/avatar/avatar.stories.d.ts.map +1 -0
- package/dist/components/ui/avatar/index.d.ts +2 -0
- package/dist/components/ui/avatar/index.d.ts.map +1 -0
- package/dist/components/ui/badge/badge.d.ts +10 -0
- package/dist/components/ui/badge/badge.d.ts.map +1 -0
- package/dist/components/ui/badge/badge.stories.d.ts +29 -0
- package/dist/components/ui/badge/badge.stories.d.ts.map +1 -0
- package/dist/components/ui/badge/index.d.ts +2 -0
- package/dist/components/ui/badge/index.d.ts.map +1 -0
- package/dist/components/ui/button/button.d.ts +11 -0
- package/dist/components/ui/button/button.d.ts.map +1 -0
- package/dist/components/ui/button/button.stories.d.ts +42 -0
- package/dist/components/ui/button/button.stories.d.ts.map +1 -0
- package/dist/components/ui/button/index.d.ts +2 -0
- package/dist/components/ui/button/index.d.ts.map +1 -0
- package/dist/components/ui/card/card.d.ts +10 -0
- package/dist/components/ui/card/card.d.ts.map +1 -0
- package/dist/components/ui/card/card.stories.d.ts +14 -0
- package/dist/components/ui/card/card.stories.d.ts.map +1 -0
- package/dist/components/ui/card/index.d.ts +2 -0
- package/dist/components/ui/card/index.d.ts.map +1 -0
- package/dist/components/ui/check-icon/check-icon.d.ts +7 -0
- package/dist/components/ui/check-icon/check-icon.d.ts.map +1 -0
- package/dist/components/ui/check-icon/index.d.ts +2 -0
- package/dist/components/ui/check-icon/index.d.ts.map +1 -0
- package/dist/components/ui/checkbox/checkbox.d.ts +5 -0
- package/dist/components/ui/checkbox/checkbox.d.ts.map +1 -0
- package/dist/components/ui/checkbox/checkbox.stories.d.ts +18 -0
- package/dist/components/ui/checkbox/checkbox.stories.d.ts.map +1 -0
- package/dist/components/ui/checkbox/index.d.ts +2 -0
- package/dist/components/ui/checkbox/index.d.ts.map +1 -0
- package/dist/components/ui/collapsible/collapsible.d.ts +7 -0
- package/dist/components/ui/collapsible/collapsible.d.ts.map +1 -0
- package/dist/components/ui/collapsible/collapsible.stories.d.ts +14 -0
- package/dist/components/ui/collapsible/collapsible.stories.d.ts.map +1 -0
- package/dist/components/ui/collapsible/index.d.ts +2 -0
- package/dist/components/ui/collapsible/index.d.ts.map +1 -0
- package/dist/components/ui/command/command.d.ts +18 -0
- package/dist/components/ui/command/command.d.ts.map +1 -0
- package/dist/components/ui/command/index.d.ts +2 -0
- package/dist/components/ui/command/index.d.ts.map +1 -0
- package/dist/components/ui/dialog/dialog.d.ts +19 -0
- package/dist/components/ui/dialog/dialog.d.ts.map +1 -0
- package/dist/components/ui/dialog/dialog.stories.d.ts +15 -0
- package/dist/components/ui/dialog/dialog.stories.d.ts.map +1 -0
- package/dist/components/ui/dialog/index.d.ts +2 -0
- package/dist/components/ui/dialog/index.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +26 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu.stories.d.ts +14 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu.stories.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu/index.d.ts +2 -0
- package/dist/components/ui/dropdown-menu/index.d.ts.map +1 -0
- package/dist/components/ui/flush-card-detach/flush-card-detach.stories.d.ts +17 -0
- package/dist/components/ui/flush-card-detach/flush-card-detach.stories.d.ts.map +1 -0
- package/dist/components/ui/icon/icon.d.ts +4 -0
- package/dist/components/ui/icon/icon.d.ts.map +1 -0
- package/dist/components/ui/icon/index.d.ts +2 -0
- package/dist/components/ui/icon/index.d.ts.map +1 -0
- package/dist/components/ui/input/index.d.ts +2 -0
- package/dist/components/ui/input/index.d.ts.map +1 -0
- package/dist/components/ui/input/input.d.ts +24 -0
- package/dist/components/ui/input/input.d.ts.map +1 -0
- package/dist/components/ui/input/input.stories.d.ts +36 -0
- package/dist/components/ui/input/input.stories.d.ts.map +1 -0
- package/dist/components/ui/kbd/index.d.ts +2 -0
- package/dist/components/ui/kbd/index.d.ts.map +1 -0
- package/dist/components/ui/kbd/kbd.d.ts +5 -0
- package/dist/components/ui/kbd/kbd.d.ts.map +1 -0
- package/dist/components/ui/label/index.d.ts +2 -0
- package/dist/components/ui/label/index.d.ts.map +1 -0
- package/dist/components/ui/label/label.d.ts +4 -0
- package/dist/components/ui/label/label.d.ts.map +1 -0
- package/dist/components/ui/label/label.stories.d.ts +14 -0
- package/dist/components/ui/label/label.stories.d.ts.map +1 -0
- package/dist/components/ui/popover/index.d.ts +2 -0
- package/dist/components/ui/popover/index.d.ts.map +1 -0
- package/dist/components/ui/popover/popover.d.ts +11 -0
- package/dist/components/ui/popover/popover.d.ts.map +1 -0
- package/dist/components/ui/popover/popover.stories.d.ts +13 -0
- package/dist/components/ui/popover/popover.stories.d.ts.map +1 -0
- package/dist/components/ui/progress/index.d.ts +2 -0
- package/dist/components/ui/progress/index.d.ts.map +1 -0
- package/dist/components/ui/progress/progress.d.ts +12 -0
- package/dist/components/ui/progress/progress.d.ts.map +1 -0
- package/dist/components/ui/progress/progress.stories.d.ts +17 -0
- package/dist/components/ui/progress/progress.stories.d.ts.map +1 -0
- package/dist/components/ui/radio-group/index.d.ts +2 -0
- package/dist/components/ui/radio-group/index.d.ts.map +1 -0
- package/dist/components/ui/radio-group/radio-group.d.ts +6 -0
- package/dist/components/ui/radio-group/radio-group.d.ts.map +1 -0
- package/dist/components/ui/radio-group/radio-group.stories.d.ts +14 -0
- package/dist/components/ui/radio-group/radio-group.stories.d.ts.map +1 -0
- package/dist/components/ui/scroll-area/index.d.ts +2 -0
- package/dist/components/ui/scroll-area/index.d.ts.map +1 -0
- package/dist/components/ui/scroll-area/scroll-area.d.ts +6 -0
- package/dist/components/ui/scroll-area/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/search-input/index.d.ts +2 -0
- package/dist/components/ui/search-input/index.d.ts.map +1 -0
- package/dist/components/ui/search-input/search-input.d.ts +7 -0
- package/dist/components/ui/search-input/search-input.d.ts.map +1 -0
- package/dist/components/ui/select/index.d.ts +2 -0
- package/dist/components/ui/select/index.d.ts.map +1 -0
- package/dist/components/ui/select/select.d.ts +16 -0
- package/dist/components/ui/select/select.d.ts.map +1 -0
- package/dist/components/ui/select/select.stories.d.ts +16 -0
- package/dist/components/ui/select/select.stories.d.ts.map +1 -0
- package/dist/components/ui/selectable-card/index.d.ts +2 -0
- package/dist/components/ui/selectable-card/index.d.ts.map +1 -0
- package/dist/components/ui/selectable-card/selectable-card.d.ts +14 -0
- package/dist/components/ui/selectable-card/selectable-card.d.ts.map +1 -0
- package/dist/components/ui/selectable-card/selectable-card.stories.d.ts +20 -0
- package/dist/components/ui/selectable-card/selectable-card.stories.d.ts.map +1 -0
- package/dist/components/ui/separator/index.d.ts +2 -0
- package/dist/components/ui/separator/index.d.ts.map +1 -0
- package/dist/components/ui/separator/separator.d.ts +3 -0
- package/dist/components/ui/separator/separator.d.ts.map +1 -0
- package/dist/components/ui/separator/separator.stories.d.ts +14 -0
- package/dist/components/ui/separator/separator.stories.d.ts.map +1 -0
- package/dist/components/ui/sheet/index.d.ts +2 -0
- package/dist/components/ui/sheet/index.d.ts.map +1 -0
- package/dist/components/ui/sheet/sheet.d.ts +16 -0
- package/dist/components/ui/sheet/sheet.d.ts.map +1 -0
- package/dist/components/ui/sheet/sheet.stories.d.ts +14 -0
- package/dist/components/ui/sheet/sheet.stories.d.ts.map +1 -0
- package/dist/components/ui/skeleton/index.d.ts +2 -0
- package/dist/components/ui/skeleton/index.d.ts.map +1 -0
- package/dist/components/ui/skeleton/skeleton.d.ts +4 -0
- package/dist/components/ui/skeleton/skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeleton/skeleton.stories.d.ts +15 -0
- package/dist/components/ui/skeleton/skeleton.stories.d.ts.map +1 -0
- package/dist/components/ui/sonner/index.d.ts +2 -0
- package/dist/components/ui/sonner/index.d.ts.map +1 -0
- package/dist/components/ui/sonner/sonner.d.ts +4 -0
- package/dist/components/ui/sonner/sonner.d.ts.map +1 -0
- package/dist/components/ui/spinner/index.d.ts +2 -0
- package/dist/components/ui/spinner/index.d.ts.map +1 -0
- package/dist/components/ui/spinner/spinner.d.ts +5 -0
- package/dist/components/ui/spinner/spinner.d.ts.map +1 -0
- package/dist/components/ui/spinner/spinner.stories.d.ts +17 -0
- package/dist/components/ui/spinner/spinner.stories.d.ts.map +1 -0
- package/dist/components/ui/switch/index.d.ts +2 -0
- package/dist/components/ui/switch/index.d.ts.map +1 -0
- package/dist/components/ui/switch/switch.d.ts +5 -0
- package/dist/components/ui/switch/switch.d.ts.map +1 -0
- package/dist/components/ui/switch/switch.stories.d.ts +29 -0
- package/dist/components/ui/switch/switch.stories.d.ts.map +1 -0
- package/dist/components/ui/table/index.d.ts +2 -0
- package/dist/components/ui/table/index.d.ts.map +1 -0
- package/dist/components/ui/table/table.d.ts +11 -0
- package/dist/components/ui/table/table.d.ts.map +1 -0
- package/dist/components/ui/table/table.stories.d.ts +13 -0
- package/dist/components/ui/table/table.stories.d.ts.map +1 -0
- package/dist/components/ui/tabs/index.d.ts +2 -0
- package/dist/components/ui/tabs/index.d.ts.map +1 -0
- package/dist/components/ui/tabs/tabs.d.ts +12 -0
- package/dist/components/ui/tabs/tabs.d.ts.map +1 -0
- package/dist/components/ui/tabs/tabs.stories.d.ts +13 -0
- package/dist/components/ui/tabs/tabs.stories.d.ts.map +1 -0
- package/dist/components/ui/textarea/index.d.ts +2 -0
- package/dist/components/ui/textarea/index.d.ts.map +1 -0
- package/dist/components/ui/textarea/textarea.d.ts +4 -0
- package/dist/components/ui/textarea/textarea.d.ts.map +1 -0
- package/dist/components/ui/textarea/textarea.stories.d.ts +14 -0
- package/dist/components/ui/textarea/textarea.stories.d.ts.map +1 -0
- package/dist/components/ui/tooltip/index.d.ts +2 -0
- package/dist/components/ui/tooltip/index.d.ts.map +1 -0
- package/dist/components/ui/tooltip/tooltip.d.ts +6 -0
- package/dist/components/ui/tooltip/tooltip.d.ts.map +1 -0
- package/dist/components/ui/tooltip/tooltip.stories.d.ts +14 -0
- package/dist/components/ui/tooltip/tooltip.stories.d.ts.map +1 -0
- package/dist/components/ui/well/index.d.ts +2 -0
- package/dist/components/ui/well/index.d.ts.map +1 -0
- package/dist/components/ui/well/well.d.ts +15 -0
- package/dist/components/ui/well/well.d.ts.map +1 -0
- package/dist/components/ui/well/well.stories.d.ts +39 -0
- package/dist/components/ui/well/well.stories.d.ts.map +1 -0
- package/dist/components/unsaved-changes-bar/index.d.ts +2 -0
- package/dist/components/unsaved-changes-bar/index.d.ts.map +1 -0
- package/dist/components/unsaved-changes-bar/unsaved-changes-bar.d.ts +22 -0
- package/dist/components/unsaved-changes-bar/unsaved-changes-bar.d.ts.map +1 -0
- package/dist/components/unsaved-changes-bar/unsaved-changes-bar.stories.d.ts +15 -0
- package/dist/components/unsaved-changes-bar/unsaved-changes-bar.stories.d.ts.map +1 -0
- package/dist/index.cjs +4064 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.js +3851 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/migration.cjs +328 -0
- package/dist/migration.cjs.map +1 -0
- package/dist/migration.esm.js +322 -0
- package/dist/migration.esm.js.map +1 -0
- package/dist/toggle-row-7lfPUutt.cjs +320 -0
- package/dist/toggle-row-7lfPUutt.cjs.map +1 -0
- package/dist/toggle-row-B5iXNWCJ.esm.js +278 -0
- package/dist/toggle-row-B5iXNWCJ.esm.js.map +1 -0
- package/package.json +91 -1
- package/src/styles/globals.css +615 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","names":["spring","Root","Trigger","Content","Root","Trigger","Portal","Overlay","Content","Title","Description","CommandPrimitive","Root","Trigger","Portal","Content","Item","CheckIcon","RadioGroup","Label","Separator","ChevronRightIcon","Root","Group","Trigger","Icon","Portal","Content","Label","Item","ItemIndicator","Separator","Root","Sonner","Root","Trigger","Portal","Content","aliases: Record<string, string>","spring","ariaLabel: string | undefined","Icon","spring","trendColor: Record<Trend, string>","Icon","statusConfig: Record<StatusType, { dot: boolean, label: string; variant: 'success' | 'inactive' | 'danger' | 'warning' | 'brand' | 'process'; }>","ToggleCard: FC<ToggleCardProps>","AccordionContent","AccordionRoot","AccordionItem","AccordionHeader","AccordionTrigger","LINE_VARIANTS: Variants","LINE_VARIANTS","DEFAULT_TRANSITION: Transition","DEFAULT_TRANSITION","SPRING_TRANSITION: Transition","DOLLAR_MAIN_VARIANTS: Variants","DOLLAR_SECONDARY_VARIANTS: Variants","PATH_VARIANTS: Variants","PATH_VARIANTS","DEFAULT_TRANSITION: Transition","PATH_VARIANTS: Variants","DEFAULT_TRANSITION","PATH_VARIANTS","PATH_VARIANTS: Variants","PATH_VARIANTS","SVG_VARIANTS: Variants","SVG_TRANSITION: Transition","DEFAULT_TRANSITION: Transition","PATH_VARIANTS: Variants","DEFAULT_TRANSITION","PATH_VARIANTS","DEFAULT_TRANSITION: Transition","PATH_VARIANTS: Variants","PATH_VARIANTS","PATH_VARIANTS: Variants","PATH_VARIANTS","PATH_VARIANTS: Variants","PATH_VARIANTS","LINE_VARIANTS: Variants","PATH_VARIANTS: Variants"],"sources":["../src/components/unsaved-changes-bar/unsaved-changes-bar.tsx","../src/components/ui/accordion/accordion.tsx","../src/components/ui/alert-dialog/alert-dialog.tsx","../src/components/ui/avatar/avatar.tsx","../src/components/ui/badge/badge.tsx","../src/components/ui/card/card.tsx","../src/components/ui/check-icon/check-icon.tsx","../src/components/ui/checkbox/checkbox.tsx","../src/components/ui/collapsible/collapsible.tsx","../src/components/ui/dialog/dialog.tsx","../src/components/icons/animated-icon/animated-icon.tsx","../src/components/icons/search/search.tsx","../src/components/ui/command/command.tsx","../src/components/ui/dropdown-menu/dropdown-menu.tsx","../src/components/icon-config/icon-config.tsx","../src/components/ui/icon/icon.tsx","../src/components/ui/kbd/kbd.tsx","../src/components/ui/popover/popover.tsx","../src/components/ui/progress/progress.tsx","../src/components/ui/radio-group/radio-group.tsx","../src/components/ui/scroll-area/scroll-area.tsx","../src/components/ui/search-input/search-input.tsx","../src/components/ui/select/select.tsx","../src/components/ui/selectable-card/selectable-card.tsx","../src/components/ui/separator/separator.tsx","../src/components/ui/sheet/sheet.tsx","../src/components/ui/skeleton/skeleton.tsx","../src/components/ui/sonner/sonner.tsx","../src/components/ui/spinner/spinner.tsx","../src/components/ui/table/table.tsx","../src/components/ui/tabs/tabs.tsx","../src/components/ui/textarea/textarea.tsx","../src/components/ui/tooltip/tooltip.tsx","../src/components/ui/well/well.tsx","../src/components/asset-icon/asset-icon.tsx","../src/components/copy-button/copy-button.tsx","../src/components/code-block/code-block.tsx","../src/components/danger-zone/danger-zone.tsx","../src/components/domain-list/domain-list.tsx","../src/components/empty-state/empty-state.tsx","../src/components/info-banner/info-banner.tsx","../src/components/loading-skeleton/loading-skeleton.tsx","../src/components/metric-card/metric-card.tsx","../src/components/ask-ai-sheet/ask-ai-sheet.tsx","../src/components/page-actions/page-actions.tsx","../src/components/product-page-layout/product-page-layout.tsx","../src/components/settings-section/settings-section.tsx","../src/components/status-badge/status-badge.tsx","../src/components/toggle-card/toggle-card.tsx","../src/components/icons/arrow-up-right/arrow-up-right.tsx","../src/components/icons/chart-bar-increasing/chart-bar-increasing.tsx","../src/components/icons/chevron-down/chevron-down.tsx","../src/components/icons/chevron-right/chevron-right.tsx","../src/components/icons/copy/copy.tsx","../src/components/icons/copy-check/copy-check.tsx","../src/components/icons/dollar-sign/dollar-sign.tsx","../src/components/icons/download/download.tsx","../src/components/icons/fingerprint/fingerprint.tsx","../src/components/icons/home/home.tsx","../src/components/icons/key/key.tsx","../src/components/icons/layout-panel-top/layout-panel-top.tsx","../src/components/icons/link/link.tsx","../src/components/icons/mcp-tools/mcp-tools.tsx","../src/components/icons/moon/moon.tsx","../src/components/icons/panel-left-close/panel-left-close.tsx","../src/components/icons/panel-left-open/panel-left-open.tsx","../src/components/icons/plus/plus.tsx","../src/components/icons/refresh-cw/refresh-cw.tsx","../src/components/icons/settings/settings.tsx","../src/components/icons/shield-check/shield-check.tsx","../src/components/icons/sun/sun.tsx","../src/components/icons/terminal/terminal.tsx","../src/components/icons/users/users.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { AnimatePresence, motion, useReducedMotion } from 'motion/react'\nimport { HugeiconsIcon } from '@hugeicons/react'\nimport { CheckmarkCircle02Icon, InformationCircleIcon } from '@hugeicons/core-free-icons'\n\nimport { Button } from '../ui/button'\n\nconst spring = { bounce: 0, duration: 0.35, type: 'spring' as const }\n\nconst BLUR_STEPS = 6\nconst BLUR_STRENGTH = 32\n\n// Stable identity keys for the fixed-length blur stack — Sonar flags\n// index-derived keys, and these are computed once at module load.\nconst BLUR_STEP_IDS = Array.from({ length: BLUR_STEPS }, () => crypto.randomUUID())\n\nconst ProgressiveBlur = () => {\n const factor = 0.5\n const base = Math.pow(BLUR_STRENGTH / factor, 1 / (BLUR_STEPS - 1))\n\n const getBlur = (i: number) => factor * Math.pow(base, BLUR_STEPS - i - 1)\n\n return (\n <div\n className='fixed -bottom-10 left-1/2 -translate-x-1/2 pointer-events-none z-40'\n style={{ height: '160px', width: '900px' }}\n >\n {BLUR_STEP_IDS.map((id, i) => {\n const blur = getBlur(i)\n const spread = 20 + ((BLUR_STEPS - i) / BLUR_STEPS) * 30\n const mask = `radial-gradient(ellipse ${spread}% ${spread}% at 50% 60%, rgba(0,0,0,1), rgba(0,0,0,0))`\n return (\n <div\n key={id}\n className='absolute inset-0'\n style={{\n backdropFilter: `blur(${blur}px)`,\n mask,\n WebkitBackdropFilter: `blur(${blur}px)`,\n WebkitMask: mask,\n }}\n />\n )\n })}\n <div\n className='absolute inset-0'\n style={{\n background: 'radial-gradient(ellipse 40% 50% at 50% 60%, var(--background), transparent)',\n }}\n />\n </div>\n )\n}\n\ntype BarState = 'unsaved' | 'saved'\n\nconst popTransition = { ...spring, duration: 0.25 }\n\nconst StatusIcon = ({ state }: { state: BarState }) => {\n return (\n <div className='relative size-[18px] shrink-0'>\n <AnimatePresence mode='popLayout' initial={false}>\n <motion.div\n key={state}\n initial={{ filter: 'blur(4px)', opacity: 0, scale: 0.25 }}\n animate={{ filter: 'blur(0px)', opacity: 1, scale: 1 }}\n exit={{ filter: 'blur(4px)', opacity: 0, scale: 0.25 }}\n transition={popTransition}\n className='absolute inset-0 will-change-[opacity,transform,filter]'\n >\n {state === 'unsaved' && <span className='text-zinc-400 dark:text-zinc-400'><HugeiconsIcon icon={InformationCircleIcon} size={18} /></span>}\n {state === 'saved' && <span className='text-emerald-400 dark:text-emerald-600'><HugeiconsIcon icon={CheckmarkCircle02Icon} size={18} /></span>}\n </motion.div>\n </AnimatePresence>\n </div>\n )\n}\n\nconst StatusText = ({ state }: { state: BarState }) => {\n const text = state === 'unsaved' ? 'Unsaved changes' : 'Changes saved'\n\n return (\n <AnimatePresence mode='popLayout' initial={false}>\n <motion.span\n key={text}\n initial={{ filter: 'blur(4px)', opacity: 0, scale: 0.95 }}\n animate={{ filter: 'blur(0px)', opacity: 1, scale: 1 }}\n exit={{ filter: 'blur(4px)', opacity: 0, scale: 0.95 }}\n transition={popTransition}\n className='text-[13px] font-medium text-white dark:text-zinc-800 whitespace-nowrap will-change-[opacity,transform,filter]'\n >\n {text}\n </motion.span>\n </AnimatePresence>\n )\n}\n\nexport interface UnsavedChangesBarProps {\n hasChanges: boolean\n onReset: () => void,\n onSave: () => void,\n /**\n * When true, hide the bar even if there are unsaved changes.\n * Use when a config modal (auto-opened from a toggle) owns its own Save button —\n * keeps save affordance in one place. See feedback_save_pattern_auto_modal.md.\n */\n suppressed?: boolean\n}\n\nexport const UnsavedChangesBar = ({ hasChanges, onSave, onReset, suppressed = false }: UnsavedChangesBarProps) => {\n const prefersReduced = useReducedMotion()\n const [barState, setBarState] = useState<BarState>('unsaved')\n const [visible, setVisible] = useState(false)\n const shouldRender = visible && !suppressed\n\n const dismissTimer = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const handleSave = () => {\n onSave()\n setBarState('saved')\n dismissTimer.current = setTimeout(() => {\n setVisible(false)\n setBarState('unsaved')\n }, 1800)\n }\n\n useEffect(() => {\n if (hasChanges) {\n // If reappearing while dismiss is pending, cancel the dismiss\n if (dismissTimer.current) {\n clearTimeout(dismissTimer.current)\n dismissTimer.current = null\n }\n setVisible(true)\n setBarState('unsaved')\n } else if (!dismissTimer.current) {\n // Only hide immediately if we're not in a post-save dismiss flow\n setVisible(false)\n }\n }, [hasChanges])\n\n return (\n <>\n <AnimatePresence>\n {shouldRender && (\n <motion.div\n key='blur'\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={spring}\n >\n <ProgressiveBlur />\n </motion.div>\n )}\n </AnimatePresence>\n <div className='fixed bottom-10 left-1/2 -translate-x-1/2 z-50'>\n <AnimatePresence>\n {shouldRender && (\n <motion.div\n initial={prefersReduced ? { opacity: 0 } : { opacity: 0, scale: 0.95, y: 20 }}\n animate={prefersReduced ? { opacity: 1 } : { opacity: 1, scale: 1, y: 0 }}\n exit={prefersReduced ? { opacity: 0 } : { opacity: 0, scale: 0.95, y: 20 }}\n transition={spring}\n style={{ willChange: 'opacity, transform' }}\n className='flex items-center gap-1.5 rounded-xl bg-zinc-900 dark:bg-[oklch(0.940_0.008_231)] shadow-[0_0_0_1px_rgba(0,0,0,0.08),0_8px_24px_-4px_rgba(0,0,0,0.25),0_20px_50px_-8px_rgba(0,0,0,0.20)] dark:shadow-[0_0_0_1px_rgba(0,0,0,0.08),0_8px_20px_-4px_rgba(0,0,0,0.10),0_20px_50px_-8px_rgba(0,0,0,0.08)] pl-3 pr-1.5 py-1.5'\n >\n <StatusIcon state={barState} />\n <StatusText state={barState} />\n\n <motion.div\n animate={{ opacity: barState === 'unsaved' ? 1 : 0 }}\n transition={popTransition}\n className='flex items-center gap-1.5 ml-0.5'\n style={{ pointerEvents: barState === 'unsaved' ? 'auto' : 'none' }}\n >\n <Button\n variant='ghost'\n size='sm'\n className='rounded-md text-zinc-400 hover:text-white hover:bg-white/10 dark:text-zinc-500 dark:hover:text-zinc-800 dark:hover:bg-black/[0.06] shrink-0 touch-manipulation'\n onClick={onReset}\n >\n Reset\n </Button>\n <Button\n size='sm'\n className='rounded-md shrink-0 touch-manipulation'\n onClick={handleSave}\n >\n Save changes\n </Button>\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </>\n )\n}\n\n// localStorage-backed store — survives page refresh and browser restart\nconst sessionStore = {\n // eslint-disable-next-line custom-rules/require-single-object-param\n get(key: string): { savedValues: unknown, values: unknown; } | undefined {\n if (globalThis.window === undefined) return undefined\n try {\n const stored = localStorage.getItem(`dashboard-${key}`)\n return stored ? JSON.parse(stored) : undefined\n } catch { return undefined }\n },\n // eslint-disable-next-line custom-rules/require-single-object-param\n set(key: string, value: { savedValues: unknown, values: unknown; }) {\n if (globalThis.window === undefined) return\n try {\n localStorage.setItem(`dashboard-${key}`, JSON.stringify(value))\n } catch { /* quota exceeded, ignore */ }\n },\n}\n\n// Hook to track changes\n// Pass a unique `key` to persist values across client-side navigation.\n// eslint-disable-next-line custom-rules/require-single-object-param\nexport const useUnsavedChanges = <T extends Record<string, unknown>>(initialValues: T, storeKey?: string) => {\n const cached = storeKey ? sessionStore.get(storeKey) as { savedValues: T, values: T; } | undefined : undefined\n\n const [values, setValues] = useState<T>(cached?.values ?? initialValues)\n const [savedValues, setSavedValues] = useState<T>(cached?.savedValues ?? initialValues)\n\n // Sync to session store on every change\n useEffect(() => {\n if (storeKey) {\n sessionStore.set(storeKey, { savedValues, values })\n }\n }, [storeKey, values, savedValues])\n\n const hasChanges = useMemo(() => {\n return JSON.stringify(values) !== JSON.stringify(savedValues)\n }, [values, savedValues])\n\n // eslint-disable-next-line custom-rules/require-single-object-param\n const updateValue = <K extends keyof T>(key: K, value: T[K]) => {\n setValues(prev => ({ ...prev, [key]: value }))\n }\n\n const save = () => {\n setSavedValues(values)\n }\n\n const reset = () => {\n setValues(savedValues)\n }\n\n const commit = (partial?: Partial<T>): T => {\n const next = partial ? { ...values, ...partial } : values\n setValues(next)\n setSavedValues(next)\n return next\n }\n\n return {\n commit,\n hasChanges,\n reset,\n save,\n setValues,\n updateValue,\n values,\n }\n}\n","'use client'\n\nimport { type ComponentProps } from 'react'\nimport { HugeiconsIcon } from '@hugeicons/react'\nimport { ArrowRight01Icon } from '@hugeicons/core-free-icons'\nimport * as AccordionPrimitive from '@radix-ui/react-accordion'\n\nimport { cn } from '../../../lib/utils'\n\nconst Accordion = ({\n ...props\n}: ComponentProps<typeof AccordionPrimitive.Root>) => (\n <AccordionPrimitive.Root data-slot='accordion' {...props} />\n)\n\nconst AccordionItem = ({\n className,\n ...props\n}: ComponentProps<typeof AccordionPrimitive.Item>) => {\n return (\n <AccordionPrimitive.Item\n data-slot='accordion-item'\n className={cn('border-b border-[var(--border-divider)] last:border-b-0', className)}\n {...props}\n />\n )\n}\n\nconst AccordionTrigger = ({\n className,\n children,\n ...props\n}: ComponentProps<typeof AccordionPrimitive.Trigger>) => {\n return (\n <AccordionPrimitive.Header className='flex'>\n <AccordionPrimitive.Trigger\n data-slot='accordion-trigger'\n className={cn(\n 'focus-visible:ring-ring/50 flex flex-1 items-center justify-between gap-4 rounded-md px-1 py-4 text-left text-sm font-medium touch-manipulation transition-[color,background-color,opacity] duration-150 ease-out outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 cursor-pointer',\n className\n )}\n {...props}\n >\n {children}\n <HugeiconsIcon icon={ArrowRight01Icon} size={16} className=\"text-muted-foreground/60 pointer-events-none shrink-0 transition-transform duration-200 [*[data-state=open]>&]:rotate-90\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nconst AccordionContent = ({\n className,\n children,\n ...props\n}: ComponentProps<typeof AccordionPrimitive.Content>) => {\n return (\n <AccordionPrimitive.Content\n data-slot='accordion-content'\n className='data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down motion-reduce:animate-none overflow-hidden text-sm'\n {...props}\n >\n <div className={cn('px-1 pt-0 pb-4', className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","'use client';\n\nimport { type ComponentProps } from 'react';\nimport {\n Action,\n Cancel,\n Content,\n Description,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n} from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\n\nconst AlertDialog = Root;\nconst AlertDialogTrigger = Trigger;\nconst AlertDialogPortal = Portal;\n\nconst AlertDialogOverlay = ({ className, ...props }: ComponentProps<typeof Overlay>) => (\n <Overlay\n data-slot='alert-dialog-overlay'\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-[var(--overlay-md)] backdrop-blur-[2px] will-change-[opacity] duration-200 motion-reduce:animate-none',\n className,\n )}\n {...props}\n />\n);\n\nconst AlertDialogContent = ({\n className,\n size = 'default',\n ...props\n}: ComponentProps<typeof Content> & { size?: 'default' | 'sm' }) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <Content\n data-slot='alert-dialog-content'\n data-size={size}\n className={cn(\n 'bg-muted overflow-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-98 data-[state=open]:zoom-in-95 group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] rounded-[16px] border-0 shadow-none duration-200 data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md will-change-[opacity,transform] motion-reduce:animate-none',\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n);\n\nconst AlertDialogHeader = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot='alert-dialog-header'\n className={cn(\n 'grid grid-rows-[auto_1fr] place-items-center gap-1.5 px-5 py-4 border-b bg-card text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]',\n className,\n )}\n {...props}\n />\n);\n\nconst AlertDialogFooter = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot='alert-dialog-footer'\n className={cn('grid grid-cols-2 gap-2 px-5 py-4 bg-muted', className)}\n {...props}\n />\n);\n\nconst AlertDialogTitle = ({ className, ...props }: ComponentProps<typeof Title>) => (\n <Title\n data-slot='alert-dialog-title'\n className={cn(\n 'text-lg font-semibold text-balance sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n className,\n )}\n {...props}\n />\n);\n\nconst AlertDialogDescription = ({ className, ...props }: ComponentProps<typeof Description>) => (\n <Description\n data-slot='alert-dialog-description'\n className={cn('text-muted-foreground text-sm text-pretty', className)}\n {...props}\n />\n);\n\nconst AlertDialogMedia = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot='alert-dialog-media'\n className={cn(\n \"bg-muted mb-2 inline-flex size-16 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\",\n className,\n )}\n {...props}\n />\n);\n\nconst AlertDialogAction = ({\n className,\n variant = 'default',\n size = 'default',\n ...props\n}: ComponentProps<typeof Action> &\n Pick<ComponentProps<typeof Button>, 'variant' | 'size'>) => (\n <Button variant={variant} size={size} asChild>\n <Action data-slot='alert-dialog-action' className={cn(className)} {...props} />\n </Button>\n);\n\nconst AlertDialogCancel = ({\n className,\n variant = 'outline',\n size = 'default',\n ...props\n}: ComponentProps<typeof Cancel> &\n Pick<ComponentProps<typeof Button>, 'variant' | 'size'>) => (\n <Button variant={variant} size={size} asChild>\n <Cancel data-slot='alert-dialog-cancel' className={cn(className)} {...props} />\n </Button>\n);\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n};\n","'use client'\n\nimport { type ComponentProps } from 'react'\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\n\nimport { cn } from '../../../lib/utils'\n\nconst Avatar = ({\n className,\n size = 'default',\n ...props\n}: ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: 'default' | 'sm' | 'lg'\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 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6',\n className\n )}\n {...props}\n />\n )\n}\n\nconst AvatarImage = ({\n className,\n ...props\n}: ComponentProps<typeof AvatarPrimitive.Image>) => {\n return (\n <AvatarPrimitive.Image\n data-slot='avatar-image'\n className={cn('aspect-square size-full outline-1 -outline-offset-1 outline-black/10', className)}\n {...props}\n />\n )\n}\n\nconst AvatarFallback = ({\n className,\n ...props\n}: ComponentProps<typeof AvatarPrimitive.Fallback>) => {\n return (\n <AvatarPrimitive.Fallback\n data-slot='avatar-fallback'\n className={cn(\n 'bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm group-data-[size=sm]/avatar:text-xs',\n className\n )}\n {...props}\n />\n )\n}\n\nconst AvatarBadge = ({ className, ...props }: ComponentProps<'span'>) => {\n return (\n <span\n data-slot='avatar-badge'\n className={cn(\n 'bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full ring-2 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 className\n )}\n {...props}\n />\n )\n}\n\nconst AvatarGroup = ({ className, ...props }: ComponentProps<'div'>) => {\n return (\n <div\n data-slot='avatar-group'\n className={cn(\n '*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2',\n className\n )}\n {...props}\n />\n )\n}\n\nconst AvatarGroupCount = ({\n className,\n ...props\n}: ComponentProps<'div'>) => {\n return (\n <div\n data-slot='avatar-group-count'\n className={cn(\n 'bg-muted text-muted-foreground ring-background relative flex size-8 shrink-0 items-center justify-center rounded-full text-sm ring-2 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3',\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 { type ComponentProps } from 'react';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../../lib/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center justify-center rounded-[5px] border border-transparent px-1.5 py-0.5 text-xs font-medium tabular-nums w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 [&>svg]:[stroke-width:2.5] gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow,background-color] duration-150 overflow-hidden',\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n brand:\n 'bg-[var(--brand-light)] text-[var(--brand-accented)] dark:text-[oklch(0.650_0.085_256)] border-[var(--brand-default)]/20 dark:border-[oklch(0.450_0.070_256)]/30 [a&]:hover:bg-[var(--brand-light)]/80',\n danger:\n 'bg-[var(--danger-light)] text-[var(--text-danger)] border-[var(--border-danger)]/20 [a&]:hover:bg-[var(--danger-light)]/80',\n dashed:\n 'border-dashed border-[var(--border-default)] text-muted-foreground bg-transparent',\n 'dashed-brand':\n 'border-dashed border-[var(--brand-default)] text-[var(--brand-accented)] bg-transparent',\n default: 'bg-primary text-primary-foreground [a&]:hover:bg-primary/90',\n destructive:\n 'bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',\n ghost: '[a&]:hover:bg-accent [a&]:hover:text-accent-foreground',\n 'gradient-brand':\n 'bg-gradient-to-r from-[var(--brand-default)] to-[var(--process-default)] text-white border-transparent',\n 'gradient-premium':\n 'bg-gradient-to-r from-amber-500 to-orange-400 text-white border-transparent',\n inactive:\n 'bg-[var(--inactive-light)] text-muted-foreground border-[var(--border-inactive)]/40 [a&]:hover:bg-[var(--inactive-light)]/80',\n link: 'text-primary underline-offset-4 [a&]:hover:underline',\n outline:\n 'border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground',\n process:\n 'bg-[var(--process-light)] text-[var(--text-process)] border-[var(--border-process)]/20 [a&]:hover:bg-[var(--process-light)]/80',\n secondary:\n 'bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90',\n success:\n 'bg-[var(--success-light)] text-[var(--text-success)] border-[var(--border-success)]/20 [a&]:hover:bg-[var(--success-light)]/80',\n warning:\n 'bg-[var(--warning-light)] text-[var(--text-warning)] border-[var(--border-warning)]/20 [a&]:hover:bg-[var(--warning-light)]/80',\n },\n },\n },\n);\n\nconst Badge = ({\n className,\n variant = 'default',\n asChild = false,\n ...props\n}: ComponentProps<'span'> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) => {\n const Comp = asChild ? Slot : 'span';\n\n return (\n <Comp\n data-slot='badge'\n data-variant={variant}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n );\n};\n\nexport { Badge, badgeVariants };\n","import { type ComponentProps } from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst Card = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot='card'\n className={cn(\n 'bg-card text-card-foreground flex flex-col rounded-[16px] border-0 shadow-[var(--shadow-card)] overflow-hidden has-data-[slot=card-footer]:bg-muted/50',\n className,\n )}\n {...props}\n />\n);\n\nconst CardHeader = ({ className, ...props }: ComponentProps<'div'>) => (\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-1.5 px-5 py-4 border-b bg-card has-data-[slot=card-action]:grid-cols-[1fr_auto]',\n className,\n )}\n {...props}\n />\n);\n\nconst CardTitle = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot='card-title'\n className={cn('text-sm leading-none font-semibold text-balance', className)}\n {...props}\n />\n);\n\nconst CardDescription = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot='card-description'\n className={cn('text-muted-foreground text-[13px] text-pretty', className)}\n {...props}\n />\n);\n\nconst CardAction = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot='card-action'\n className={cn(\n 'col-start-2 row-span-2 row-start-1 self-center justify-self-end',\n className,\n )}\n {...props}\n />\n);\n\nconst CardContent = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot='card-content'\n className={cn('px-5 py-3.5 bg-card', className)}\n {...props}\n />\n);\n\nconst CardFooter = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot='card-footer'\n className={cn('flex items-center px-5 py-4 bg-muted/50', className)}\n {...props}\n />\n);\n\nexport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n};\n","import { type SVGProps } from 'react';\n\nconst CheckIcon = ({\n size = 14,\n strokeWidth = 3,\n className,\n ...props\n}: {\n size?: number;\n strokeWidth?: number;\n} & Omit<SVGProps<SVGSVGElement>, 'strokeWidth'>) => (\n <svg\n aria-hidden='true'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n style={{ height: size, width: size }}\n className={className}\n {...props}\n >\n <path d='M4 12L9 17L20 6' pathLength={1} strokeWidth={strokeWidth} />\n </svg>\n);\n\nexport { CheckIcon };\n","'use client'\n\nimport { type ComponentProps } from 'react'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\n\nimport { cn } from '../../../lib/utils'\n\nconst Checkbox = ({\n className,\n ...props\n}: ComponentProps<typeof CheckboxPrimitive.Root>) => {\n return (\n <CheckboxPrimitive.Root\n data-slot='checkbox'\n className={cn(\n \"group peer dark:bg-input/30 data-[state=checked]:bg-[var(--action)] data-[state=checked]:text-white dark:data-[state=checked]:bg-[var(--action)] data-[state=indeterminate]:bg-[var(--action)] data-[state=indeterminate]:text-white relative size-4 shrink-0 touch-manipulation rounded-[4px] border-0 shadow-[0_0_0_1px_rgba(31,41,55,0.20),0_1px_2px_0_rgba(0,0,0,0.06),0_0_1px_0_rgba(0,0,0,0.02)] dark:shadow-[0_0_0_1px_rgba(255,255,255,0.15),0_1px_2px_0_rgba(0,0,0,0.20),0_0_1px_0_rgba(0,0,0,0.06)] data-[state=checked]:shadow-[0_0_0_1px_var(--action),0px_1px_1px_0px_rgba(255,255,255,0.15)_inset,0px_2px_3px_0px_rgba(31,41,55,0.30),0px_1px_1px_0px_rgba(0,0,0,0.28)] dark:data-[state=checked]:shadow-[0px_1px_1px_0px_rgba(255,255,255,0.10)_inset,0px_2px_3px_0px_rgba(0,0,0,0.50),0px_1px_1px_0px_rgba(0,0,0,0.30)] data-[state=indeterminate]:shadow-[0_0_0_1px_var(--action),0px_1px_1px_0px_rgba(255,255,255,0.15)_inset,0px_2px_3px_0px_rgba(31,41,55,0.30),0px_1px_1px_0px_rgba(0,0,0,0.28)] dark:data-[state=indeterminate]:shadow-[0px_1px_1px_0px_rgba(255,255,255,0.10)_inset,0px_2px_3px_0px_rgba(0,0,0,0.50),0px_1px_1px_0px_rgba(0,0,0,0.30)] transition-[color,box-shadow,background-color] duration-200 ease outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:shadow-[0_0_0_1px_var(--destructive)] disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer before:absolute before:-inset-[12px] before:content-['']\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot='checkbox-indicator'\n className='relative grid place-content-center text-current size-full'\n forceMount\n >\n {/* Minus for indeterminate */}\n <svg className='size-3.5 absolute inset-0 m-auto transition-[opacity,transform,filter] duration-200 opacity-0 scale-[0.25] blur-[4px] group-data-[state=indeterminate]:opacity-100 group-data-[state=indeterminate]:scale-100 group-data-[state=indeterminate]:blur-none' viewBox='0 0 24 24' fill='none' stroke='currentColor' strokeLinecap='round' strokeLinejoin='round'>\n <path d='M5 12L19 12' pathLength={1} strokeWidth={3} />\n </svg>\n {/* Checkmark for checked */}\n <svg className='size-3.5 absolute inset-0 m-auto transition-[opacity,transform,filter] duration-200 opacity-0 scale-[0.25] blur-[4px] group-data-[state=checked]:opacity-100 group-data-[state=checked]:scale-100 group-data-[state=checked]:blur-none' viewBox='0 0 24 24' fill='none' stroke='currentColor' strokeLinecap='round' strokeLinejoin='round'>\n <path d='M4 12L9 17L20 6' pathLength={1} strokeWidth={3} />\n </svg>\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","'use client'\n\nimport { type ComponentProps } from 'react'\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible'\n\nimport { cn } from '../../../lib/utils'\n\nconst Collapsible = ({\n ...props\n}: ComponentProps<typeof CollapsiblePrimitive.Root>) => (\n <CollapsiblePrimitive.Root data-slot='collapsible' {...props} />\n)\n\nconst CollapsibleTrigger = ({\n className,\n ...props\n}: ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) => {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot='collapsible-trigger'\n className={cn('touch-manipulation', className)}\n {...props}\n />\n )\n}\n\nconst CollapsibleContent = ({\n ...props\n}: ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) => (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot='collapsible-content'\n {...props}\n />\n)\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","'use client';\n\nimport { type ComponentProps } from 'react';\nimport {\n Close,\n Content,\n Description,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n} from '@radix-ui/react-dialog';\nimport { HugeiconsIcon } from '@hugeicons/react';\nimport { Cancel01Icon } from '@hugeicons/core-free-icons';\n\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\n\nconst Dialog = Root;\nconst DialogTrigger = Trigger;\nconst DialogPortal = Portal;\nconst DialogClose = Close;\n\nconst DialogOverlay = ({ className, ...props }: ComponentProps<typeof Overlay>) => (\n <Overlay\n data-slot='dialog-overlay'\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-[var(--overlay-md)] backdrop-blur-[2px] will-change-[opacity] duration-200 data-[state=open]:ease-out data-[state=closed]:ease-in motion-reduce:animate-none',\n className,\n )}\n {...props}\n />\n);\n\nconst DialogContent = ({\n className,\n children,\n ...props\n}: ComponentProps<typeof Content>) => (\n <DialogPortal data-slot='dialog-portal'>\n <DialogOverlay />\n <Content\n data-slot='dialog-content'\n className={cn(\n 'bg-card overflow-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-98 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] rounded-[16px] border-0 shadow-none duration-200 data-[state=open]:ease-out data-[state=closed]:ease-in outline-none sm:max-w-md will-change-[opacity,transform] motion-reduce:animate-none',\n className,\n )}\n {...props}\n >\n {children}\n </Content>\n </DialogPortal>\n);\n\nconst DialogHeader = ({\n className,\n showCloseButton = true,\n children,\n ...props\n}: ComponentProps<'div'> & { showCloseButton?: boolean }) => (\n <div\n data-slot='dialog-header'\n className={cn(\n 'relative flex flex-col gap-1.5 px-5 pt-4 pb-4 border-b bg-card sm:text-left',\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <Close\n data-slot='dialog-close'\n className='absolute top-3 right-3 inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground opacity-70 transition-[opacity,background-color] duration-150 ease hover:opacity-100 hover:bg-accent focus-visible:ring-2 focus-visible:ring-ring/50 focus:outline-hidden cursor-pointer touch-manipulation before:absolute before:-inset-[6px] before:content-[\"\"]'\n >\n <HugeiconsIcon icon={Cancel01Icon} size={14} />\n <span className='sr-only'>Close</span>\n </Close>\n )}\n </div>\n);\n\nconst DialogBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot='dialog-body'\n className={cn('px-5 py-5 bg-card', className)}\n {...props}\n />\n);\n\nconst DialogFooter = ({\n className,\n showCloseButton = false,\n children,\n ...props\n}: ComponentProps<'div'> & { showCloseButton?: boolean }) => (\n <div\n data-slot='dialog-footer'\n className={cn('grid grid-cols-2 gap-2 px-5 py-4 bg-muted', className)}\n {...props}\n >\n {children}\n {showCloseButton && (\n <Close asChild>\n <Button variant='outline'>Close</Button>\n </Close>\n )}\n </div>\n);\n\nconst DialogTitle = ({ className, ...props }: ComponentProps<typeof Title>) => (\n <Title\n data-slot='dialog-title'\n className={cn('text-lg leading-none font-semibold text-balance', className)}\n {...props}\n />\n);\n\nconst DialogDescription = ({\n className,\n ...props\n}: ComponentProps<typeof Description>) => (\n <Description\n data-slot='dialog-description'\n className={cn('text-muted-foreground text-sm text-pretty', className)}\n {...props}\n />\n);\n\nexport {\n Dialog,\n DialogBody,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","'use client';\n\n/**\n * Base wrapper for animated icons. Handles ref (startAnimation/stopAnimation),\n * mouse enter/leave animation, and the outer div. Use via render prop:\n *\n * <AnimatedIcon ref={ref} size={28} {...props}>\n * {(controls, size) => (\n * <svg height={size} ...> or <motion.svg animate={controls} ...>...</motion.svg>\n * )}\n * </AnimatedIcon>\n *\n * Icons with custom handle logic (e.g. triggerCopied, custom startAnimation)\n * keep their own useImperativeHandle and do not use this base.\n */\n\nimport type { HTMLAttributes, MouseEvent, ReactNode } from 'react';\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';\nimport { useAnimation } from 'motion/react';\n\nimport { cn } from '../../../lib/utils';\n\nexport interface AnimatedIconHandle {\n startAnimation: () => void;\n stopAnimation: () => void;\n}\n\nexport interface AnimatedIconProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n children: (\n controls: ReturnType<typeof useAnimation>,\n size: number,\n ) => ReactNode;\n size?: number;\n}\n\nconst AnimatedIcon = forwardRef<AnimatedIconHandle, AnimatedIconProps>(\n (\n { children, className, onMouseEnter, onMouseLeave, size = 28, ...props },\n ref,\n ) => {\n const controls = useAnimation();\n const isControlledRef = useRef(false);\n\n useImperativeHandle(ref, () => {\n isControlledRef.current = true;\n return {\n startAnimation: () => controls.start('animate'),\n stopAnimation: () => controls.start('normal'),\n };\n });\n\n const handleMouseEnter = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n if (isControlledRef.current) {\n onMouseEnter?.(e);\n } else {\n controls.start('animate').catch(() => undefined);\n }\n },\n [controls, onMouseEnter],\n );\n\n const handleMouseLeave = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n if (isControlledRef.current) {\n onMouseLeave?.(e);\n } else {\n controls.start('normal').catch(() => undefined);\n }\n },\n [controls, onMouseLeave],\n );\n\n return (\n <div\n aria-hidden='true'\n className={cn('inline-flex items-center justify-center', className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n >\n {children(controls, size)}\n </div>\n );\n },\n);\n\nAnimatedIcon.displayName = 'AnimatedIcon';\n\nexport { AnimatedIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type SearchIconHandle = AnimatedIconHandle;\n\ntype SearchIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst SearchIcon = forwardRef<SearchIconHandle, SearchIconProps>(\n (props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <motion.svg\n animate={controls}\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n transition={{\n bounce: 0.3,\n duration: 1,\n }}\n variants={{\n animate: {\n x: [0, 0, -3, 0],\n y: [0, -4, 0, 0],\n },\n normal: { x: 0, y: 0 },\n }}\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <circle cx='11' cy='11' r='8' />\n <path d='m21 21-4.3-4.3' />\n </motion.svg>\n )}\n </AnimatedIcon>\n ),\n);\n\nSearchIcon.displayName = 'SearchIcon';\n\nexport { SearchIcon };\n","'use client';\n\nimport { type ComponentProps } from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '../../../lib/utils';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '../dialog';\nimport { SearchIcon } from '../../icons/search';\n\nconst Command = ({ className, ...props }: ComponentProps<typeof CommandPrimitive>) => (\n <CommandPrimitive\n data-slot='command'\n className={cn(\n 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n className,\n )}\n {...props}\n />\n);\n\nconst CommandDialog = ({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n ...props\n}: ComponentProps<typeof Dialog> & {\n className?: string;\n description?: string;\n title?: string;\n}) => (\n <Dialog {...props}>\n <DialogHeader className='sr-only'>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className={cn('overflow-hidden p-0', className)}>\n <Command className='[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[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\nconst CommandInput = ({\n className,\n ...props\n}: ComponentProps<typeof CommandPrimitive.Input>) => (\n <div data-slot='command-input-wrapper' className='flex h-9 items-center gap-2 border-b px-3'>\n <SearchIcon className='size-4 shrink-0 opacity-50' />\n <CommandPrimitive.Input\n data-slot='command-input'\n className={cn(\n 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </div>\n);\n\nconst CommandList = ({\n className,\n ...props\n}: ComponentProps<typeof CommandPrimitive.List>) => (\n <CommandPrimitive.List\n data-slot='command-list'\n className={cn('max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto', className)}\n {...props}\n />\n);\n\nconst CommandEmpty = ({ ...props }: ComponentProps<typeof CommandPrimitive.Empty>) => (\n <CommandPrimitive.Empty\n data-slot='command-empty'\n className='py-6 text-center text-sm'\n {...props}\n />\n);\n\nconst CommandGroup = ({\n className,\n ...props\n}: ComponentProps<typeof CommandPrimitive.Group>) => (\n <CommandPrimitive.Group\n data-slot='command-group'\n className={cn(\n 'text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',\n className,\n )}\n {...props}\n />\n);\n\nconst CommandSeparator = ({\n className,\n ...props\n}: ComponentProps<typeof CommandPrimitive.Separator>) => (\n <CommandPrimitive.Separator\n data-slot='command-separator'\n className={cn('bg-border -mx-1 h-px', className)}\n {...props}\n />\n);\n\nconst CommandItem = ({\n className,\n ...props\n}: ComponentProps<typeof CommandPrimitive.Item>) => (\n <CommandPrimitive.Item\n data-slot='command-item'\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n);\n\nconst CommandShortcut = ({ className, ...props }: ComponentProps<'span'>) => (\n <span\n data-slot='command-shortcut'\n className={cn('text-muted-foreground ml-auto text-xs tracking-widest', className)}\n {...props}\n />\n);\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n};\n","'use client';\n\nimport type {\n ComponentPropsWithoutRef,\n ComponentRef,\n HTMLAttributes} from 'react';\nimport {\n forwardRef\n} from 'react';\nimport {\n CheckboxItem,\n Content,\n Group,\n Item,\n ItemIndicator,\n Label,\n Portal,\n RadioGroup,\n RadioItem,\n Root,\n Separator,\n Sub,\n SubContent,\n SubTrigger,\n Trigger,\n} from '@radix-ui/react-dropdown-menu';\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\n\nimport { cn } from '../../../lib/utils';\n\nconst DropdownMenu = Root;\n\nconst DropdownMenuTrigger = Trigger;\n\nconst DropdownMenuGroup = Group;\n\nconst DropdownMenuSub = Sub;\n\nconst DropdownMenuContent = forwardRef<\n ComponentRef<typeof Content>,\n ComponentPropsWithoutRef<typeof Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <Portal>\n <Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 min-w-32 overflow-hidden rounded-md bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]: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',\n className,\n )}\n {...props}\n />\n </Portal>\n));\nDropdownMenuContent.displayName = Content.displayName;\n\nconst DropdownMenuItem = forwardRef<\n ComponentRef<typeof Item>,\n ComponentPropsWithoutRef<typeof Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <Item\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\"size-\"])]:size-4',\n inset && 'pl-8',\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = Item.displayName;\n\nconst DropdownMenuCheckboxItem = forwardRef<\n ComponentRef<typeof CheckboxItem>,\n ComponentPropsWithoutRef<typeof CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <CheckboxItem\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50',\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className='absolute left-2 flex size-3.5 items-center justify-center'>\n <ItemIndicator>\n <CheckIcon className='size-4' />\n </ItemIndicator>\n </span>\n {children}\n </CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = CheckboxItem.displayName;\n\nconst DropdownMenuRadioGroup = RadioGroup;\n\nconst DropdownMenuRadioItem = forwardRef<\n ComponentRef<typeof RadioItem>,\n ComponentPropsWithoutRef<typeof RadioItem>\n>(({ className, children, ...props }, ref) => (\n <RadioItem\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <span className='absolute left-2 flex size-3.5 items-center justify-center'>\n <ItemIndicator>\n <CircleIcon className='size-2 fill-current' />\n </ItemIndicator>\n </span>\n {children}\n </RadioItem>\n));\nDropdownMenuRadioItem.displayName = RadioItem.displayName;\n\nconst DropdownMenuLabel = forwardRef<\n ComponentRef<typeof Label>,\n ComponentPropsWithoutRef<typeof Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <Label\n ref={ref}\n className={cn(\n 'px-2 py-1.5 text-sm font-medium',\n inset && 'pl-8',\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = Label.displayName;\n\nconst DropdownMenuSeparator = forwardRef<\n ComponentRef<typeof Separator>,\n ComponentPropsWithoutRef<typeof Separator>\n>(({ className, ...props }, ref) => (\n <Separator\n ref={ref}\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\n 'ml-auto text-xs tracking-widest text-muted-foreground',\n className,\n )}\n {...props}\n />\n);\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n\nconst DropdownMenuSubTrigger = forwardRef<\n ComponentRef<typeof SubTrigger>,\n ComponentPropsWithoutRef<typeof SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <SubTrigger\n ref={ref}\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent',\n inset && 'pl-8',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className='ml-auto size-4' />\n </SubTrigger>\n));\nDropdownMenuSubTrigger.displayName = SubTrigger.displayName;\n\nconst DropdownMenuSubContent = forwardRef<\n ComponentRef<typeof SubContent>,\n ComponentPropsWithoutRef<typeof SubContent>\n>(({ className, ...props }, ref) => (\n <SubContent\n ref={ref}\n className={cn(\n 'z-50 min-w-32 overflow-hidden rounded-md bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]: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',\n className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName = SubContent.displayName;\n\nexport {\n DropdownMenu,\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","'use client'\n\nimport { type ReactNode, createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\n\ninterface IconConfig {\n // undefined = icon's built-in default\n setStrokeWidth: (v: number | undefined) => void, \n strokeWidth: number | undefined\n}\n\nconst IconConfigContext = createContext<IconConfig>({\n setStrokeWidth: () => {},\n strokeWidth: undefined,\n})\n\nexport const IconConfigProvider = ({ children }: { children: ReactNode }) => {\n const [strokeWidth, setStrokeWidth] = useState<number | undefined>(() => {\n if (globalThis.window === undefined) return undefined\n const stored = localStorage.getItem('icon-stroke-width')\n if (stored === 'default') return undefined\n const n = Number.parseFloat(stored ?? '')\n return Number.isNaN(n) ? undefined : n\n })\n\n // Sync to CSS variable so all HugeiconsIcon instances respond (not just <Icon> wrapper)\n useEffect(() => {\n document.documentElement.style.setProperty('--icon-stroke-width', String(strokeWidth ?? 1.75))\n }, [strokeWidth])\n\n const applyStrokeWidth = useCallback((v: number | undefined) => {\n setStrokeWidth(v)\n localStorage.setItem('icon-stroke-width', v === undefined ? 'default' : String(v))\n }, [])\n\n // Memoize the context value so consumers don't re-render on every parent render.\n const value = useMemo(\n () => ({ setStrokeWidth: applyStrokeWidth, strokeWidth }),\n [applyStrokeWidth, strokeWidth],\n )\n\n return (\n <IconConfigContext.Provider value={value}>\n {children}\n </IconConfigContext.Provider>\n )\n}\n\nexport const useIconConfig = () => useContext(IconConfigContext)\n","'use client'\n\nimport { HugeiconsIcon } from '@hugeicons/react'\nimport type { HugeiconsIconProps } from '@hugeicons/react'\n\nimport { useIconConfig } from '../../icon-config'\n\n/** Drop-in replacement for HugeiconsIcon — reads global strokeWidth from IconConfigContext */\nexport const Icon = (props: HugeiconsIconProps) => {\n const { strokeWidth } = useIconConfig()\n return <HugeiconsIcon strokeWidth={strokeWidth ?? 1.75} {...props} />\n}\n","import { type ComponentProps } from 'react'\n\nimport { cn } from '../../../lib/utils'\n\nconst Kbd = ({ className, ...props }: ComponentProps<'kbd'>) => {\n return (\n <kbd\n data-slot='kbd'\n className={cn(\n \"bg-muted text-muted-foreground pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs font-medium select-none\",\n \"[&_svg:not([class*='size-'])]:size-3\",\n '[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10',\n className\n )}\n {...props}\n />\n )\n}\n\nconst KbdGroup = ({ className, ...props }: 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","'use client'\n\nimport { type ComponentProps } from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\n\nimport { cn } from '../../../lib/utils'\n\nconst Popover = ({\n ...props\n}: ComponentProps<typeof PopoverPrimitive.Root>) => (\n <PopoverPrimitive.Root data-slot='popover' {...props} />\n)\n\nconst PopoverTrigger = ({\n ...props\n}: ComponentProps<typeof PopoverPrimitive.Trigger>) => (\n <PopoverPrimitive.Trigger data-slot='popover-trigger' {...props} />\n)\n\nconst PopoverContent = ({\n className,\n align = 'center',\n sideOffset = 4,\n ...props\n}: 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 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-98 data-[state=open]: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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-xl border-0 p-4 shadow-[var(--shadow-elevated)] outline-hidden will-change-[opacity,transform] motion-reduce:animate-none',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nconst PopoverAnchor = ({\n ...props\n}: ComponentProps<typeof PopoverPrimitive.Anchor>) => (\n <PopoverPrimitive.Anchor data-slot='popover-anchor' {...props} />\n)\n\nconst PopoverHeader = ({ className, ...props }: 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\nconst PopoverTitle = ({ className, ...props }: ComponentProps<'h2'>) => {\n return (\n <div\n data-slot='popover-title'\n className={cn('font-medium text-balance', className)}\n {...props}\n />\n )\n}\n\nconst PopoverDescription = ({\n className,\n ...props\n}: ComponentProps<'p'>) => {\n return (\n <p\n data-slot='popover-description'\n className={cn('text-muted-foreground', 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 { type ComponentProps } from 'react';\nimport { type VariantProps, cva } from 'class-variance-authority';\n\nimport { cn } from '../../../lib/utils';\n\nconst progressVariants = cva(\n 'h-full w-full flex-1 transition-transform duration-500 ease-out motion-reduce:transition-none',\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n brand: 'bg-[var(--brand-default)]',\n danger: 'bg-[var(--danger-default)]',\n default: 'bg-primary',\n process: 'bg-[var(--process-default)]',\n success: 'bg-[var(--success-default)]',\n warning: 'bg-[var(--warning-default)]',\n },\n },\n },\n);\n\nexport interface ProgressProps\n extends Omit<ComponentProps<'div'>, 'children'>,\n VariantProps<typeof progressVariants> {\n indeterminate?: boolean;\n value?: number;\n}\n\nconst Progress = ({\n className,\n indeterminate = false,\n value,\n variant,\n ...props\n}: ProgressProps) => (\n <div\n data-slot='progress'\n className={cn('bg-primary/20 relative h-2 w-full overflow-hidden rounded-full', className)}\n {...props}\n >\n {/* Native semantic element drives screen-reader announcements; the styled\n bars below are visual only. */}\n <progress\n aria-label='Progress'\n className='sr-only'\n max={100}\n value={indeterminate ? undefined : (value ?? 0)}\n />\n <div\n data-slot='progress-indicator'\n className={cn(\n progressVariants({ variant }),\n indeterminate && 'animate-progress-indeterminate motion-reduce:animate-none',\n )}\n style={\n indeterminate ? undefined : { transform: `translateX(-${100 - (value ?? 0)}%)` }\n }\n />\n </div>\n);\n\nexport { Progress };\n","'use client'\n\nimport { type ComponentProps } from 'react'\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\n\nimport { cn } from '../../../lib/utils'\n\nconst RadioGroup = ({\n className,\n ...props\n}: 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\nconst RadioGroupItem = ({\n className,\n ...props\n}: ComponentProps<typeof RadioGroupPrimitive.Item>) => {\n return (\n <RadioGroupPrimitive.Item\n data-slot='radio-group-item'\n className={cn(\n \"text-[var(--action)] dark:bg-input/30 relative aspect-square size-4 shrink-0 touch-manipulation rounded-full border border-[rgba(31,41,55,0.30)] dark:border-[rgba(255,255,255,0.20)] data-[state=checked]:border-[var(--action)] shadow-[0_1px_2px_rgba(0,0,0,0.06),0_0_1px_rgba(31,41,55,0.08)] dark:shadow-[0_1px_2px_rgba(0,0,0,0.20),0_0_1px_rgba(0,0,0,0.15)] transition-[color,box-shadow,border-color] duration-100 ease-out outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-[var(--destructive)] disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer before:absolute before:-inset-[12px] before:content-['']\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot='radio-group-indicator'\n className='group/indicator relative flex items-center justify-center'\n forceMount\n >\n <span className=\"bg-[var(--action)] absolute top-1/2 left-1/2 size-2 rounded-full -translate-x-1/2 -translate-y-1/2 transition-[opacity,transform] duration-150 ease-out group-data-[state=unchecked]/indicator:scale-0 group-data-[state=unchecked]/indicator:opacity-0\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","'use client'\n\nimport { type ComponentProps } from 'react'\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area'\n\nimport { cn } from '../../../lib/utils'\n\nconst ScrollArea = ({\n className,\n children,\n ...props\n}: 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='focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1'\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nconst ScrollBar = ({\n className,\n orientation = 'vertical',\n ...props\n}: 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 touch-manipulation p-px transition-[background-color] 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='bg-border relative flex-1 rounded-full'\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","'use client'\n\nimport { type ComponentProps } from 'react'\nimport { HugeiconsIcon } from '@hugeicons/react'\nimport { Search01Icon } from '@hugeicons/core-free-icons'\n\nimport { Kbd } from '../kbd'\nimport { cn } from '../../../lib/utils'\n\nconst SearchInput = ({\n className,\n placeholder = 'Search...',\n shortcut = '⌘K',\n onClick,\n ...props\n}: ComponentProps<'button'> & {\n placeholder?: string\n shortcut?: string\n}) => {\n return (\n <button\n type='button'\n data-slot='search-input'\n className={cn(\n // Same height/radius as Input, subtle border for muted surfaces\n 'h-8 min-h-11 w-full touch-manipulation rounded-md border border-border bg-background dark:bg-input/30 md:min-h-0',\n 'hover:border-foreground/20',\n 'transition-[color,box-shadow,border-color] duration-100 ease-out',\n 'outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50',\n 'flex items-center gap-2 px-3',\n 'text-sm text-muted-foreground/60 cursor-pointer',\n className\n )}\n onClick={onClick}\n {...props}\n >\n <HugeiconsIcon icon={Search01Icon} size={14} className='shrink-0 text-muted-foreground' />\n <span className='flex-1 text-left'>{placeholder}</span>\n {shortcut && <Kbd>{shortcut}</Kbd>}\n </button>\n )\n}\n\nexport { SearchInput }\n","'use client';\n\nimport { type ComponentProps } from 'react';\nimport {\n ArrowDown01Icon,\n ArrowUp01Icon,\n Tick01Icon,\n} from '@hugeicons/core-free-icons';\nimport { HugeiconsIcon } from '@hugeicons/react';\nimport {\n Content,\n Group,\n Icon,\n Item,\n ItemIndicator,\n ItemText,\n Label,\n Portal,\n Root,\n ScrollDownButton,\n ScrollUpButton,\n Separator,\n Trigger,\n Value,\n Viewport,\n} from '@radix-ui/react-select';\n\nimport { cn } from '../../../lib/utils';\n\nconst Select = ({ ...props }: ComponentProps<typeof Root>) => (\n <Root data-slot='select' {...props} />\n);\n\nconst SelectGroup = ({ ...props }: ComponentProps<typeof Group>) => (\n <Group data-slot='select-group' {...props} />\n);\n\nconst SelectValue = ({ ...props }: ComponentProps<typeof Value>) => (\n <Value data-slot='select-value' {...props} />\n);\n\nconst SelectTrigger = ({\n className,\n size = 'default',\n children,\n ...props\n}: ComponentProps<typeof Trigger> & {\n size?: 'sm' | 'default';\n}) => (\n <Trigger\n data-slot='select-trigger'\n data-size={size}\n className={cn(\n \"data-[placeholder]:text-muted-foreground/60 [&_svg:not([class*='text-'])]:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 flex w-fit touch-manipulation items-center justify-between gap-1.5 rounded-md border-0 bg-transparent px-3 py-2 text-[13px] whitespace-nowrap shadow-[var(--shadow-input)] hover:shadow-[var(--shadow-input-hover)] transition-[color,box-shadow] duration-100 ease-out outline-none focus-visible:shadow-[0_0_0_1px_var(--ring),0_0_0_4px_rgba(0,114,239,0.15)] aria-invalid:shadow-[0_0_0_1px_var(--destructive)] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:text-[13px] data-[size=sm]:px-2.5 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <Icon asChild>\n <HugeiconsIcon icon={ArrowDown01Icon} size={16} className='opacity-50' />\n </Icon>\n </Trigger>\n);\n\nconst SelectContent = ({\n className,\n children,\n position = 'popper',\n align = 'start',\n ...props\n}: ComponentProps<typeof Content>) => (\n <Portal>\n <Content\n data-slot='select-content'\n className={cn(\n \"bg-popover text-popover-foreground will-change-[opacity,transform] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]: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 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-xl border-0 shadow-[var(--shadow-elevated)]\",\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 {...props}\n >\n <SelectScrollUpButton />\n <Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1',\n )}\n >\n {children}\n </Viewport>\n <SelectScrollDownButton />\n </Content>\n </Portal>\n);\n\nconst SelectLabel = ({\n className,\n ...props\n}: ComponentProps<typeof Label>) => (\n <Label\n data-slot='select-label'\n className={cn('text-muted-foreground px-2 py-1.5 text-xs', className)}\n {...props}\n />\n);\n\nconst SelectItem = ({\n className,\n children,\n ...props\n}: ComponentProps<typeof Item>) => (\n <Item\n data-slot='select-item'\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <span\n data-slot='select-item-indicator'\n className='absolute right-2 flex size-3.5 items-center justify-center'\n >\n <ItemIndicator>\n <HugeiconsIcon icon={Tick01Icon} size={16} />\n </ItemIndicator>\n </span>\n <ItemText>{children}</ItemText>\n </Item>\n);\n\nconst SelectSeparator = ({\n className,\n ...props\n}: ComponentProps<typeof Separator>) => (\n <Separator\n data-slot='select-separator'\n className={cn('bg-border pointer-events-none -mx-1 my-1 h-px', className)}\n {...props}\n />\n);\n\nconst SelectScrollUpButton = ({\n className,\n ...props\n}: ComponentProps<typeof ScrollUpButton>) => (\n <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 <HugeiconsIcon icon={ArrowUp01Icon} size={16} />\n </ScrollUpButton>\n);\n\nconst SelectScrollDownButton = ({\n className,\n ...props\n}: ComponentProps<typeof ScrollDownButton>) => (\n <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 <HugeiconsIcon icon={ArrowDown01Icon} size={16} />\n </ScrollDownButton>\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 { type ButtonHTMLAttributes, type ReactNode } from 'react';\nimport { HugeiconsIcon } from '@hugeicons/react';\n\nimport { CheckIcon } from '../check-icon';\nimport { cn } from '../../../lib/utils';\n\ntype IconComponent = Parameters<typeof HugeiconsIcon>[0]['icon'];\n\ninterface SelectableCardProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'title'> {\n badge?: ReactNode;\n description: string;\n icon?: IconComponent;\n iconSize?: number;\n label: string;\n selected: boolean;\n}\n\nconst SelectableCard = ({\n badge,\n className,\n description,\n icon,\n iconSize = 20,\n label,\n selected,\n ...props\n}: SelectableCardProps) => (\n <button\n data-slot='selectable-card'\n data-selected={selected}\n className={cn(\n 'group/card relative flex flex-col items-start gap-2.5 p-4 rounded-xl text-left transition-[box-shadow,background-color,scale] duration-150 touch-manipulation active:scale-[0.96] cursor-pointer w-full outline-none focus-visible:shadow-[0_0_0_1.5px_var(--action),0_0_0_4px_oklch(from_var(--action)_l_c_h_/_0.25)]',\n selected\n ? 'bg-[var(--action)]/5 shadow-[0_0_0_1.5px_var(--action)]'\n : 'shadow-[0_0_0_1px_oklch(0.278_0.03_256.85_/_0.12)] hover:shadow-[0_0_0_1px_oklch(0.278_0.03_256.85_/_0.20)]',\n className,\n )}\n {...props}\n >\n {icon && (\n <HugeiconsIcon icon={icon} size={iconSize} className='text-[var(--action)]' />\n )}\n <div className='w-full pr-7'>\n <div className='flex items-center gap-2'>\n <p className='text-sm font-medium text-balance'>{label}</p>\n {badge && <span className='shrink-0'>{badge}</span>}\n </div>\n <p className='text-xs text-muted-foreground mt-0.5 text-pretty'>{description}</p>\n </div>\n <div className='absolute top-4 right-4'>\n <div\n className={cn(\n 'relative size-4 shrink-0 rounded-[4px] transition-[color,box-shadow,background-color] duration-200 ease',\n selected\n ? 'bg-[var(--action)] text-white shadow-[0_0_0_1px_var(--action),0px_1px_1px_0px_oklch(1_0_0_/_0.07)_inset,0px_2px_3px_0px_oklch(0.278_0.03_256.85_/_0.20),0px_1px_1px_0px_oklch(0_0_0_/_0.24)]'\n : 'shadow-[0_0_0_1px_oklch(0.278_0.03_256.85_/_0.20),0_1px_2px_0_oklch(0_0_0_/_0.06),0_0_1px_0_oklch(0_0_0_/_0.02)] group-hover/card:shadow-[0_0_0_1px_oklch(0.278_0.03_256.85_/_0.30),0_1px_2px_0_oklch(0_0_0_/_0.06),0_0_1px_0_oklch(0_0_0_/_0.02)]',\n )}\n >\n <CheckIcon\n size={14}\n className={cn(\n 'absolute inset-0 m-auto text-current transition-[opacity,transform,filter] duration-200',\n selected\n ? 'opacity-100 scale-100 blur-none'\n : 'opacity-0 scale-[0.25] blur-[4px]',\n )}\n />\n </div>\n </div>\n </button>\n);\n\nexport { SelectableCard };\n","'use client';\n\nimport type { ComponentPropsWithoutRef, ComponentRef} from 'react';\nimport { forwardRef } from 'react';\nimport { Root } from '@radix-ui/react-separator';\n\nimport { cn } from '../../../lib/utils';\n\nconst Separator = forwardRef<\n ComponentRef<typeof Root>,\n ComponentPropsWithoutRef<typeof Root>\n>(\n (\n { className, orientation = 'horizontal', decorative = true, ...props },\n ref,\n ) => (\n <Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',\n className,\n )}\n {...props}\n />\n ),\n);\nSeparator.displayName = Root.displayName;\n\nexport { Separator };\n","'use client'\n\nimport { type ComponentProps } from 'react'\nimport { HugeiconsIcon } from '@hugeicons/react'\nimport { Cancel01Icon } from '@hugeicons/core-free-icons'\nimport * as SheetPrimitive from '@radix-ui/react-dialog'\n\nimport { cn } from '../../../lib/utils'\n\nconst Sheet = ({ ...props }: ComponentProps<typeof SheetPrimitive.Root>) => (\n <SheetPrimitive.Root data-slot='sheet' {...props} />\n)\n\nconst SheetTrigger = ({\n ...props\n}: ComponentProps<typeof SheetPrimitive.Trigger>) => (\n <SheetPrimitive.Trigger data-slot='sheet-trigger' {...props} />\n)\n\nconst SheetClose = ({\n ...props\n}: ComponentProps<typeof SheetPrimitive.Close>) => (\n <SheetPrimitive.Close data-slot='sheet-close' {...props} />\n)\n\nconst SheetPortal = ({\n ...props\n}: ComponentProps<typeof SheetPrimitive.Portal>) => (\n <SheetPrimitive.Portal data-slot='sheet-portal' {...props} />\n)\n\nconst SheetOverlay = ({\n className,\n ...props\n}: ComponentProps<typeof SheetPrimitive.Overlay>) => {\n return (\n <SheetPrimitive.Overlay\n data-slot='sheet-overlay'\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-[var(--overlay-md)] will-change-[opacity] data-[state=closed]:duration-100 data-[state=open]:duration-150 [animation-timing-function:cubic-bezier(0.16,1,0.3,1)] motion-reduce:animate-none',\n className\n )}\n {...props}\n />\n )\n}\n\nconst SheetContent = ({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n overlayClassName,\n ...props\n}: ComponentProps<typeof SheetPrimitive.Content> & {\n overlayClassName?: string,\n showCloseButton?: boolean\n side?: 'top' | 'right' | 'bottom' | 'left'\n}) => {\n return (\n <SheetPortal>\n <SheetOverlay className={overlayClassName} />\n <SheetPrimitive.Content\n data-slot='sheet-content'\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 border-0 shadow-[var(--shadow-elevated)] [animation-timing-function:cubic-bezier(0.32,0.72,0,1)] data-[state=closed]:duration-150 data-[state=open]:duration-200 will-change-[opacity,transform] motion-reduce:animate-none',\n side === 'right' &&\n 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 sm:max-w-sm rounded-l-xl rounded-r-md',\n side === 'left' &&\n 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 sm:max-w-sm rounded-r-xl rounded-l-md',\n side === 'top' &&\n 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto rounded-b-md',\n side === 'bottom' &&\n 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto rounded-t-md',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"absolute top-3 right-3 inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground opacity-70 transition-[opacity,background-color] duration-150 ease hover:opacity-100 hover:bg-accent focus-visible:ring-2 focus-visible:ring-ring/50 focus:outline-hidden disabled:pointer-events-none cursor-pointer touch-manipulation before:absolute before:-inset-[6px] before:content-['']\">\n <HugeiconsIcon icon={Cancel01Icon} size={14} />\n <span className='sr-only'>Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nconst SheetHeader = ({ className, ...props }: ComponentProps<'div'>) => {\n return (\n <div\n data-slot='sheet-header'\n className={cn('flex flex-col gap-1.5 p-4', className)}\n {...props}\n />\n )\n}\n\nconst SheetFooter = ({ className, ...props }: ComponentProps<'div'>) => {\n return (\n <div\n data-slot='sheet-footer'\n className={cn('mt-auto flex flex-col gap-2 p-4', className)}\n {...props}\n />\n )\n}\n\nconst SheetTitle = ({\n className,\n ...props\n}: ComponentProps<typeof SheetPrimitive.Title>) => {\n return (\n <SheetPrimitive.Title\n data-slot='sheet-title'\n className={cn('text-foreground font-semibold', className)}\n {...props}\n />\n )\n}\n\nconst SheetDescription = ({\n className,\n ...props\n}: ComponentProps<typeof SheetPrimitive.Description>) => {\n return (\n <SheetPrimitive.Description\n data-slot='sheet-description'\n className={cn('text-muted-foreground text-sm', className)}\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","import { type ComponentProps } from 'react'\n\nimport { cn } from '../../../lib/utils'\n\nconst Skeleton = ({ className, ...props }: ComponentProps<'div'>) => {\n return (\n <div\n data-slot='skeleton'\n className={cn(\n 'bg-accent animate-shimmer motion-reduce:animate-none rounded-md bg-[length:200%_100%] bg-gradient-to-r from-accent via-accent/50 to-accent',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","'use client'\n\nimport { type CSSProperties } from 'react'\nimport { HugeiconsIcon } from '@hugeicons/react'\nimport { Alert01Icon, Cancel01Icon, CheckmarkCircle02Icon, InformationCircleIcon } from '@hugeicons/core-free-icons'\nimport { useTheme } from 'next-themes'\nimport { Toaster as Sonner, type ToasterProps } from 'sonner'\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = 'system' } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps['theme']}\n className='toaster group'\n icons={{\n error: <HugeiconsIcon icon={Cancel01Icon} size={16} />,\n info: <HugeiconsIcon icon={InformationCircleIcon} size={16} />,\n loading: <svg className='size-4 animate-spin' viewBox='0 0 24 24' fill='none'><circle className='opacity-25' cx='12' cy='12' r='10' stroke='currentColor' strokeWidth='4' /><path className='opacity-75' fill='currentColor' d='M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z' /></svg>,\n success: <HugeiconsIcon icon={CheckmarkCircle02Icon} size={16} />,\n warning: <HugeiconsIcon icon={Alert01Icon} size={16} />,\n }}\n style={\n {\n '--border-radius': 'var(--radius)',\n '--normal-bg': 'var(--popover)',\n '--normal-border': 'var(--border)',\n '--normal-text': 'var(--popover-foreground)',\n } as CSSProperties\n }\n {...props}\n />\n )\n}\n\nexport { Toaster }\n","import { cn } from '../../../lib/utils';\n\nconst Spinner = ({ className }: { className?: string }) => (\n <output aria-label='Loading' className='inline-flex'>\n <svg\n viewBox='0 0 24 24'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n className={cn('size-4 animate-spin motion-reduce:animate-none', className)}\n >\n <circle\n className='opacity-25'\n cx='12'\n cy='12'\n r='10'\n stroke='currentColor'\n strokeWidth='4'\n />\n <path\n className='opacity-75'\n fill='currentColor'\n d='M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z'\n />\n </svg>\n </output>\n);\n\nexport { Spinner };\n","'use client'\n\nimport { type ComponentProps } from 'react'\n\nimport { cn } from '../../../lib/utils'\n\nconst Table = ({ className, ...props }: 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\nconst TableHeader = ({ className, ...props }: ComponentProps<'thead'>) => {\n return (\n <thead\n data-slot='table-header'\n className={cn(\n '[&_tr]:border-b [&_tr]:border-[var(--border-divider)] [&_tr]:hover:bg-transparent bg-[var(--bg-accented)]/50 sticky top-0 z-10',\n className\n )}\n {...props}\n />\n )\n}\n\nconst TableBody = ({ className, ...props }: 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\nconst TableFooter = ({ className, ...props }: ComponentProps<'tfoot'>) => {\n return (\n <tfoot\n data-slot='table-footer'\n className={cn(\n 'bg-muted/50 border-t font-medium [&>tr]:last:border-b-0',\n className\n )}\n {...props}\n />\n )\n}\n\nconst TableRow = ({ className, ...props }: ComponentProps<'tr'>) => {\n return (\n <tr\n data-slot='table-row'\n className={cn(\n 'hover:bg-[var(--overlay-hover)] data-[state=selected]:bg-[var(--overlay-selected)] border-b border-[var(--border-divider)] transition-[background-color] duration-100',\n className\n )}\n {...props}\n />\n )\n}\n\nconst TableHead = ({ className, ...props }: ComponentProps<'th'>) => {\n return (\n <th\n data-slot='table-head'\n className={cn(\n 'text-muted-foreground h-10 px-3 text-left align-middle text-xs font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className\n )}\n {...props}\n />\n )\n}\n\nconst TableCell = ({ className, ...props }: ComponentProps<'td'>) => {\n return (\n <td\n data-slot='table-cell'\n className={cn(\n 'px-3 py-2.5 align-middle whitespace-nowrap tabular-nums [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className\n )}\n {...props}\n />\n )\n}\n\nconst TableCaption = ({\n className,\n ...props\n}: ComponentProps<'caption'>) => {\n return (\n <caption\n data-slot='table-caption'\n className={cn('text-muted-foreground mt-4 text-sm', 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 { type ComponentProps } from 'react'\nimport { type VariantProps, cva } from 'class-variance-authority'\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\n\nimport { cn } from '../../../lib/utils'\n\nconst Tabs = ({\n className,\n orientation = 'horizontal',\n ...props\n}: ComponentProps<typeof TabsPrimitive.Root>) => {\n return (\n <TabsPrimitive.Root\n data-slot='tabs'\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n 'group/tabs flex gap-2 data-[orientation=horizontal]:flex-col',\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: 'bg-muted',\n line: 'gap-1 bg-transparent',\n },\n },\n }\n)\n\nconst TabsList = ({\n className,\n variant = 'default',\n ...props\n}: ComponentProps<typeof TabsPrimitive.List> &\n VariantProps<typeof tabsListVariants>) => {\n return (\n <TabsPrimitive.List\n data-slot='tabs-list'\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nconst TabsTrigger = ({\n className,\n ...props\n}: ComponentProps<typeof TabsPrimitive.Trigger>) => {\n return (\n <TabsPrimitive.Trigger\n data-slot='tabs-trigger'\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap touch-manipulation transition-[color,background-color,border-color,box-shadow,opacity] duration-150 group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent\",\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 data-[state=active]:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-[opacity] group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst TabsContent = ({\n className,\n ...props\n}: ComponentProps<typeof TabsPrimitive.Content>) => {\n return (\n <TabsPrimitive.Content\n data-slot='tabs-content'\n className={cn('flex-1 outline-none', className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","import { type ComponentProps } from 'react'\n\nimport { cn } from '../../../lib/utils'\n\nconst Textarea = ({ className, ...props }: ComponentProps<'textarea'>) => {\n return (\n <textarea\n data-slot='textarea'\n className={cn(\n 'placeholder:text-muted-foreground/60 dark:bg-input/30 flex field-sizing-content min-h-16 w-full touch-manipulation rounded-md border-0 bg-background px-3 py-2 text-base shadow-[var(--shadow-input)] transition-[color,box-shadow] duration-100 ease-out outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'hover:shadow-[var(--shadow-input-hover)]',\n 'focus-visible:shadow-[0_0_0_1px_var(--ring),0_0_0_4px_rgba(0,114,239,0.15)]',\n 'aria-invalid:shadow-[0_0_0_1px_var(--destructive),0_0_1px_0_var(--destructive)]',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","'use client';\n\nimport {\n Content,\n Portal,\n Provider,\n Root,\n Trigger,\n} from '@radix-ui/react-tooltip';\nimport type { ComponentPropsWithoutRef, ComponentRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst TooltipProvider = Provider;\n\nconst Tooltip = Root;\n\nconst TooltipTrigger = Trigger;\n\nconst TooltipContent = forwardRef<\n ComponentRef<typeof Content>,\n ComponentPropsWithoutRef<typeof Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <Portal>\n <Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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',\n className\n )}\n {...props}\n />\n </Portal>\n));\nTooltipContent.displayName = Content.displayName;\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n","'use client';\n\nimport { type ComponentProps, type ReactNode } from 'react';\nimport { type VariantProps, cva } from 'class-variance-authority';\n\nimport { cn } from '../../../lib/utils';\n\nconst wellVariants = cva('rounded-2xl', {\n defaultVariants: {\n gap: 'sm',\n spacing: 'default',\n variant: 'inset',\n },\n variants: {\n gap: {\n default: 'space-y-4',\n lg: 'space-y-5',\n none: '',\n sm: 'space-y-3',\n },\n spacing: {\n default: 'p-4',\n lg: 'p-5',\n none: 'p-0',\n sm: 'p-3',\n },\n variant: {\n default: 'bg-muted/50',\n inset: 'bg-muted/50 border border-border',\n outline: 'border border-border',\n },\n },\n});\n\nconst Well = ({\n className,\n gap,\n spacing,\n variant,\n ...props\n}: ComponentProps<'div'> & VariantProps<typeof wellVariants>) => (\n <div\n data-slot='well'\n data-spacing={spacing ?? 'default'}\n className={cn(wellVariants({ gap, spacing, variant }), className)}\n {...props}\n />\n);\n\nconst WellReveal = ({\n children,\n className,\n open,\n}: {\n children: ReactNode;\n className?: string;\n open: boolean;\n}) => (\n <div\n className='grid transition-[grid-template-rows] duration-[220ms] ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none'\n style={{ gridTemplateRows: open ? '1fr' : '0fr' }}\n aria-hidden={!open}\n >\n <div className='overflow-hidden'>\n <div\n className={cn(\n 'px-0.5 pb-0.5 [&>[data-slot=well]:not([data-spacing=none])]:p-[22px]',\n className,\n )}\n >\n {children}\n </div>\n </div>\n </div>\n);\n\nexport { Well, WellReveal, wellVariants };\n","import { cn } from '../../lib/utils'\n\nconst aliases: Record<string, string> = {\n arbitrum: 'arb',\n 'arbitrum-one': 'arb',\n 'arbitrum-sepolia': 'arb',\n avalanche: 'avax',\n 'base-sepolia': 'base',\n 'binance-smart-chain': 'bnb',\n bitcoin: 'btc',\n 'bitcoin-mainnet': 'btc',\n 'bitcoin-testnet': 'btc',\n bsc: 'bnb',\n cosmos: 'atom',\n 'cosmos-hub': 'atom',\n 'cosmos-testnet': 'atom',\n ethereum: 'eth',\n fantom: 'ftm',\n gnosis: 'gnosis',\n linea: 'linea',\n mantle: 'mantle',\n optimism: 'optimism',\n osmosis: 'osmo',\n polygon: 'matic',\n 'polygon-amoy': 'matic',\n scroll: 'scroll',\n sei: 'sei',\n 'sei-network': 'sei',\n sepolia: 'eth',\n solana: 'sol',\n 'solana-devnet': 'sol',\n 'solana-mainnet': 'sol',\n starknet: 'generic',\n sui: 'sui',\n zksync: 'zkevm',\n}\n\nexport interface AssetIconProps {\n className?: string,\n size?: number\n symbol: string,\n}\n\nexport const AssetIcon = ({ symbol, size = 32, className }: AssetIconProps) => {\n const resolved = aliases[symbol.toLowerCase()] ?? symbol.toLowerCase()\n return (\n <img\n src={`/assets/${resolved}.svg`}\n alt={symbol}\n width={size}\n height={size}\n className={cn('object-contain', className)}\n onError={(e) => {\n const target = e.currentTarget\n if (!target.src.endsWith('/assets/generic.svg')) {\n target.src = '/assets/generic.svg'\n }\n }}\n />\n )\n}\n","'use client'\n\nimport { useEffect, useRef, useState } from 'react'\nimport { HugeiconsIcon } from '@hugeicons/react'\nimport { Copy01Icon, Tick01Icon } from '@hugeicons/core-free-icons'\nimport { AnimatePresence, motion, useReducedMotion } from 'motion/react'\n\nimport { Button } from '../ui/button'\nimport { cn } from '../../lib/utils'\n\nconst spring = { bounce: 0, duration: 0.35, type: 'spring' as const }\n\nexport interface CopyButtonProps {\n className?: string,\n label?: string\n size?: 'default' | 'sm' | 'xs' | 'icon' | 'icon-xs' | 'icon-sm',\n value: string,\n variant?: 'default' | 'outline' | 'ghost' | 'secondary'\n}\n\nexport const CopyButton = ({\n value,\n label,\n variant = 'outline',\n size = 'icon-xs',\n className,\n}: CopyButtonProps) => {\n const [copied, setCopied] = useState(false)\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const shouldReduceMotion = useReducedMotion()\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current)\n }\n }, [])\n\n const handleCopy = async () => {\n await navigator.clipboard.writeText(value)\n setCopied(true)\n if (timeoutRef.current) clearTimeout(timeoutRef.current)\n timeoutRef.current = setTimeout(() => setCopied(false), 2000)\n }\n\n let ariaLabel: string | undefined\n if (!label) {\n ariaLabel = copied ? 'Copied' : 'Copy to clipboard'\n }\n\n return (\n <Button\n variant={variant}\n size={size}\n onClick={handleCopy}\n aria-label={ariaLabel}\n className={cn(\n 'transition-[color,background-color,box-shadow] duration-150',\n copied && 'text-[var(--text-success)]',\n className\n )}\n >\n <AnimatePresence mode='wait' initial={false}>\n {copied ? (\n <motion.span\n key='check'\n initial={shouldReduceMotion ? false : { opacity: 0, scale: 0.25 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={shouldReduceMotion ? undefined : { opacity: 0, scale: 0.25 }}\n transition={spring}\n className='flex items-center gap-1.5'\n >\n <HugeiconsIcon icon={Tick01Icon} size={14} />\n {label && <span>Copied</span>}\n </motion.span>\n ) : (\n <motion.span\n key='copy'\n initial={shouldReduceMotion ? false : { opacity: 0, scale: 0.25 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={shouldReduceMotion ? undefined : { opacity: 0, scale: 0.25 }}\n transition={spring}\n className='flex items-center gap-1.5'\n >\n <HugeiconsIcon icon={Copy01Icon} size={14} />\n {label && <span>{label}</span>}\n </motion.span>\n )}\n </AnimatePresence>\n </Button>\n )\n}\n","'use client'\n\nimport { forwardRef, useMemo, useRef, useState } from 'react'\nimport { motion, useReducedMotion } from 'motion/react'\n\nimport { cn } from '../../lib/utils'\nimport { CopyButton } from '../copy-button'\n\nconst spring = { bounce: 0, duration: 0.35, type: 'spring' as const }\n\ntype CodeBlockVariant = 'dark' | 'light'\n\ninterface CodeBlockProps {\n className?: string,\n code: string,\n language?: string\n showLineNumbers?: boolean\n showTerminalPrompt?: boolean\n showWindowChrome?: boolean,\n title?: string,\n variant?: CodeBlockVariant\n}\n\nconst variantStyles = {\n dark: {\n chromeDot: 'bg-[var(--border-hover)]',\n code: 'text-[var(--foreground)]',\n copyBtn: 'text-[var(--text-disabled)] hover:text-[var(--foreground)] hover:bg-white/[0.06]',\n header: 'border-white/[0.05] bg-[var(--bg-default)]',\n headerText: 'text-[var(--muted-foreground)]',\n lineNumber: 'text-[var(--text-disabled)]',\n prompt: 'text-[var(--muted-foreground)]',\n tabActive: 'bg-white/[0.08] text-[var(--foreground)]',\n tabInactive: 'text-[var(--text-disabled)] hover:text-[var(--foreground)]',\n wrapper: 'bg-[var(--card)] text-[var(--foreground)] shadow-[0_0_0_1px_var(--border)]',\n },\n light: {\n chromeDot: 'bg-muted-foreground/15',\n code: 'text-foreground',\n copyBtn: 'text-muted-foreground/60 hover:text-foreground hover:bg-black/[0.04]',\n header: 'border-border/60 bg-[var(--muted)]/40',\n headerText: 'text-muted-foreground',\n lineNumber: 'text-muted-foreground/30',\n prompt: 'text-muted-foreground/40',\n tabActive: 'bg-background text-foreground shadow-[0_1px_2px_rgba(0,0,0,0.05)]',\n tabInactive: 'text-muted-foreground hover:text-foreground',\n wrapper: 'bg-white text-foreground shadow-[var(--shadow-card)]',\n },\n}\n\nconst CodeBlock = forwardRef<HTMLDivElement, CodeBlockProps>(\n (\n {\n code,\n title,\n language: _language,\n showLineNumbers = false,\n showTerminalPrompt = false,\n variant = 'dark',\n showWindowChrome = false,\n className,\n },\n ref\n ) => {\n const lines = code.split('\\n')\n const s = variantStyles[variant]\n\n return (\n <div\n ref={ref}\n className={cn('rounded-xl overflow-hidden', s.wrapper, className)}\n >\n {(title || showWindowChrome) && (\n <div\n className={cn(\n 'flex items-center justify-between border-b px-4 py-2.5',\n s.header\n )}\n >\n <div className='flex items-center gap-3'>\n {showWindowChrome && (\n <div className='flex gap-[6px]' aria-hidden='true'>\n <div className={cn('size-[9px] rounded-full', s.chromeDot)} />\n <div className={cn('size-[9px] rounded-full', s.chromeDot)} />\n <div className={cn('size-[9px] rounded-full', s.chromeDot)} />\n </div>\n )}\n {title && (\n <span className={cn('text-[13px] font-medium', s.headerText)}>\n {title}\n </span>\n )}\n </div>\n <CopyButton\n value={code}\n variant='ghost'\n size='icon-xs'\n className={s.copyBtn}\n />\n </div>\n )}\n <div className='relative group'>\n {!title && !showWindowChrome && (\n <div className='absolute top-2.5 right-2.5 opacity-0 group-hover:opacity-100 transition-[opacity] duration-150'>\n <CopyButton\n value={code}\n variant='ghost'\n size='icon-xs'\n className={s.copyBtn}\n />\n </div>\n )}\n <pre\n className={cn(\n 'overflow-x-auto px-4 py-3.5 text-[13px] font-mono leading-relaxed',\n !title && !showWindowChrome && 'pr-10',\n variant === 'dark' && 'bg-[var(--background)]'\n )}\n >\n <code>\n {showLineNumbers\n ? lines.map((line, i) => (\n <span key={`L${i}:${line}`} className='table-row'>\n <span\n className={cn(\n 'table-cell pr-4 text-right select-none tabular-nums w-[2ch]',\n s.lineNumber\n )}\n >\n {i + 1}\n </span>\n <span className='table-cell'>\n {showTerminalPrompt && i === 0 && (\n <span className={cn('select-none mr-2', s.prompt)}>$</span>\n )}\n {line}\n </span>\n {i < lines.length - 1 && '\\n'}\n </span>\n ))\n : (\n <>\n {showTerminalPrompt && (\n <span className={cn('select-none mr-2', s.prompt)}>$</span>\n )}\n {code}\n </>\n )}\n </code>\n </pre>\n </div>\n </div>\n )\n }\n)\n\nCodeBlock.displayName = 'CodeBlock'\n\ninterface PackageManagerTabsProps {\n className?: string,\n npm: string,\n pnpm?: string\n showTerminalPrompt?: boolean,\n variant?: CodeBlockVariant,\n yarn?: string\n}\n\nconst PackageManagerTabs = ({\n npm,\n yarn,\n pnpm,\n variant = 'dark',\n showTerminalPrompt = true,\n className,\n}: PackageManagerTabsProps) => {\n const tabs = useMemo(\n () => [\n { code: npm, id: 'npm' as const, label: 'npm' },\n ...(yarn ? [{ code: yarn, id: 'yarn' as const, label: 'yarn' }] : []),\n ...(pnpm ? [{ code: pnpm, id: 'pnpm' as const, label: 'pnpm' }] : []),\n ],\n [npm, yarn, pnpm]\n )\n\n const [activeIndex, setActiveIndex] = useState(0)\n const tabRefs = useRef<(HTMLButtonElement | null)[]>([])\n const shouldReduceMotion = useReducedMotion()\n\n const s = variantStyles[variant]\n const activeTab = tabs[activeIndex]\n const activeCode = activeTab?.code || npm\n\n // eslint-disable-next-line custom-rules/require-single-object-param\n const handleKeyDown = (e: React.KeyboardEvent, index: number) => {\n let nextIndex: number\n switch (e.key) {\n case 'ArrowRight':\n nextIndex = (index + 1) % tabs.length\n break\n case 'ArrowLeft':\n nextIndex = (index - 1 + tabs.length) % tabs.length\n break\n case 'Home':\n nextIndex = 0\n break\n case 'End':\n nextIndex = tabs.length - 1\n break\n default:\n return\n }\n e.preventDefault()\n setActiveIndex(nextIndex)\n tabRefs.current[nextIndex]?.focus()\n }\n\n return (\n <div\n className={cn('rounded-xl overflow-hidden', s.wrapper, className)}\n >\n <div\n className={cn(\n 'flex items-center justify-between border-b px-3 py-2',\n s.header\n )}\n >\n <div\n className='flex gap-0.5 rounded-lg p-0.5'\n role='tablist'\n aria-label='Package manager'\n >\n {tabs.map((tab, i) => (\n <button\n key={tab.id}\n ref={(el) => { tabRefs.current[i] = el }}\n role='tab'\n aria-selected={activeIndex === i}\n aria-controls={`panel-${tab.id}`}\n tabIndex={activeIndex === i ? 0 : -1}\n onClick={() => setActiveIndex(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n className={cn(\n 'relative px-3 py-1 rounded-md text-[13px] font-medium transition-[color,background-color,box-shadow] duration-150 touch-manipulation cursor-pointer',\n activeIndex === i ? s.tabActive : s.tabInactive\n )}\n >\n <motion.span\n whileTap={shouldReduceMotion ? undefined : { scale: 0.95 }}\n transition={spring}\n >\n {tab.label}\n </motion.span>\n </button>\n ))}\n </div>\n <CopyButton\n value={activeCode}\n variant='ghost'\n size='icon-xs'\n className={s.copyBtn}\n />\n </div>\n <div\n id={`panel-${activeTab?.id}`}\n role='tabpanel'\n aria-labelledby={activeTab?.id}\n >\n <pre className={cn('overflow-x-auto px-4 py-3.5 text-[13px] font-mono', variant === 'dark' && 'bg-[var(--background)]')}>\n <code>\n {showTerminalPrompt && (\n <span className={cn('select-none mr-2', s.prompt)}>$</span>\n )}\n {activeCode}\n </code>\n </pre>\n </div>\n </div>\n )\n}\n\nexport { CodeBlock, PackageManagerTabs }\nexport type { CodeBlockProps, PackageManagerTabsProps, CodeBlockVariant }\n","'use client'\n\nimport { HugeiconsIcon } from '@hugeicons/react'\nimport { Alert01Icon } from '@hugeicons/core-free-icons'\n\nimport { Button } from '../ui/button'\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from '../ui/alert-dialog'\nimport { cn } from '../../lib/utils'\n\nexport interface DangerZoneProps {\n actionLabel: string,\n className?: string,\n confirmDescription?: string,\n confirmTitle?: string\n description: string,\n onConfirm: () => void\n title: string\n}\n\nexport const DangerZone = ({\n title,\n description,\n actionLabel,\n confirmTitle,\n confirmDescription,\n onConfirm,\n className,\n}: DangerZoneProps) => {\n return (\n <div className={cn(\n 'rounded-xl border border-[var(--border-danger)]/30 p-6 shadow-[var(--shadow-card)] bg-card',\n className\n )}>\n <div className='flex items-start gap-3'>\n <div className='flex size-8 shrink-0 items-center justify-center rounded-lg bg-[var(--danger-light)]'>\n <HugeiconsIcon icon={Alert01Icon} size={16} className='text-[var(--text-danger)]' />\n </div>\n <div className='flex-1 min-w-0'>\n <h3 className='text-sm font-semibold text-[var(--text-danger)] text-balance'>{title}</h3>\n <p className='text-sm text-muted-foreground mt-1 text-pretty'>{description}</p>\n <div className='mt-4'>\n <AlertDialog>\n <AlertDialogTrigger asChild>\n <Button variant='destructive'>{actionLabel}</Button>\n </AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{confirmTitle || title}</AlertDialogTitle>\n <AlertDialogDescription>\n {confirmDescription || description}\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={onConfirm}\n className='bg-destructive text-white hover:bg-destructive/90'\n >\n {actionLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </div>\n </div>\n </div>\n </div>\n )\n}\n","'use client';\n\nimport { useState } from 'react';\nimport { Add01Icon, Cancel01Icon } from '@hugeicons/core-free-icons';\nimport { HugeiconsIcon } from '@hugeicons/react';\n\nimport { Button } from '../ui/button';\nimport { Input } from '../ui/input';\nimport { cn } from '../../lib/utils';\n\nexport interface DomainListProps {\n className?: string;\n domains: string[];\n onChange: (domains: string[]) => void;\n placeholder?: string;\n validate?: (domain: string) => string | null;\n}\n\nconst DomainList = ({\n className,\n domains,\n onChange,\n placeholder = 'https://example.com',\n validate,\n}: DomainListProps) => {\n const [inputValue, setInputValue] = useState('');\n const [error, setError] = useState<string | null>(null);\n\n const handleAdd = () => {\n const trimmed = inputValue.trim();\n if (!trimmed) return;\n\n if (validate) {\n const validationError = validate(trimmed);\n if (validationError) {\n setError(validationError);\n return;\n }\n }\n\n if (domains.includes(trimmed)) {\n setError('Already added');\n return;\n }\n\n onChange([...domains, trimmed]);\n setInputValue('');\n setError(null);\n };\n\n // eslint-disable-next-line custom-rules/require-single-object-param\n const handleRemove = (domain: string) => {\n onChange(domains.filter((d) => d !== domain));\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleAdd();\n }\n };\n\n return (\n <div className={cn('space-y-3', className)}>\n <div className='flex gap-2'>\n <div className='flex-1'>\n <Input\n value={inputValue}\n onChange={(e) => {\n setInputValue(e.target.value);\n setError(null);\n }}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n aria-invalid={!!error}\n />\n {error && (\n <p className='text-xs text-[var(--text-danger)] mt-1'>{error}</p>\n )}\n </div>\n <Button\n variant='outline'\n size='default'\n onClick={handleAdd}\n disabled={!inputValue.trim()}\n type='button'\n >\n <HugeiconsIcon icon={Add01Icon} size={16} />\n Add\n </Button>\n </div>\n {domains.length > 0 && (\n <ul className='space-y-1.5'>\n {domains.map((domain) => (\n <li\n key={domain}\n className='flex items-center justify-between gap-2 rounded-md border bg-[var(--bg-bottom)] px-3 py-2 text-sm'\n >\n <span className='font-mono text-sm truncate'>{domain}</span>\n <button\n type='button'\n onClick={() => handleRemove(domain)}\n className=\"shrink-0 rounded-sm p-0.5 text-muted-foreground hover:text-[var(--text-danger)] transition-[color] duration-150 relative before:absolute before:-inset-[11px] before:content-['']\"\n >\n <HugeiconsIcon icon={Cancel01Icon} size={14} />\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n};\n\nexport { DomainList };\n","import { type ComponentType, type ReactNode } from 'react'\n\nimport { cn } from '../../lib/utils'\n\nexport interface EmptyStateProps {\n action?: ReactNode,\n className?: string,\n description: string\n icon: ComponentType<{ className?: string; size?: number }>,\n title: string\n}\n\nexport const EmptyState = ({ icon: Icon, title, description, action, className }: EmptyStateProps) => {\n return (\n <div className={cn('flex flex-col items-center justify-center py-16 px-8 text-center', className)}>\n <div className='flex size-12 items-center justify-center rounded-xl bg-muted mb-4'>\n <Icon className='size-6 text-muted-foreground' />\n </div>\n <h3 className='text-sm font-semibold'>{title}</h3>\n <p className='text-sm text-muted-foreground mt-1 max-w-sm'>{description}</p>\n {action && <div className='mt-4'>{action}</div>}\n </div>\n )\n}\n","'use client'\n\nimport { type ReactNode, useState } from 'react'\nimport { motion, useReducedMotion } from 'motion/react'\nimport { HugeiconsIcon } from '@hugeicons/react'\nimport { Cancel01Icon, InformationCircleIcon } from '@hugeicons/core-free-icons'\n\nimport { cn } from '../../lib/utils'\n\nconst spring = { bounce: 0, duration: 0.35, type: 'spring' as const }\n\nexport interface InfoBannerProps {\n children: ReactNode\n className?: string,\n dismissible?: boolean,\n onDismiss?: () => void\n}\n\nexport const InfoBanner = ({\n children,\n dismissible = false,\n onDismiss,\n className,\n}: InfoBannerProps) => {\n const [dismissed, setDismissed] = useState(false)\n const shouldReduceMotion = useReducedMotion()\n\n if (dismissed) return null\n\n return (\n <div className={cn(\n 'flex items-center gap-2 rounded-lg border border-border bg-muted/50 px-3 py-2 text-sm text-muted-foreground',\n className\n )}>\n <span className='text-muted-foreground shrink-0'><HugeiconsIcon icon={InformationCircleIcon} size={16} /></span>\n <div className='flex-1 min-w-0 text-pretty'>{children}</div>\n {dismissible && (\n <motion.button\n whileTap={shouldReduceMotion ? undefined : { scale: 0.96 }}\n transition={spring}\n onClick={() => {\n setDismissed(true)\n onDismiss?.()\n }}\n className=\"relative before:absolute before:-inset-[13px] before:content-[''] shrink-0 rounded-sm p-0.5 opacity-70 hover:opacity-100 transition-[opacity] touch-manipulation cursor-pointer\"\n >\n <HugeiconsIcon icon={Cancel01Icon} size={14} />\n </motion.button>\n )}\n </div>\n )\n}\n","import { useMemo } from 'react'\n\nimport { Skeleton } from '../ui/skeleton'\nimport { cn } from '../../lib/utils'\n\nconst buildIdList = (length: number): string[] =>\n Array.from({ length }, () => crypto.randomUUID())\n\n/** Full-page skeleton with header and content area */\nexport const PageSkeleton = ({ className }: { className?: string }) => {\n return (\n <div className={cn('space-y-6 p-6', className)}>\n <div className='space-y-2'>\n <Skeleton className='h-8 w-48' />\n <Skeleton className='h-4 w-96' />\n </div>\n <div className='grid grid-cols-1 md:grid-cols-3 gap-4'>\n <StatCardSkeleton />\n <StatCardSkeleton />\n <StatCardSkeleton />\n </div>\n <TableSkeleton rows={5} />\n </div>\n )\n}\n\n/** Stat/metric card skeleton */\nexport const StatCardSkeleton = ({ className }: { className?: string }) => {\n return (\n <div className={cn('rounded-xl p-5 shadow-[var(--shadow-card)] bg-card', className)}>\n <div className='flex items-center justify-between mb-3'>\n <Skeleton className='h-4 w-24' />\n <Skeleton className='size-8 rounded-lg' />\n </div>\n <Skeleton className='h-8 w-20 mb-1' />\n <Skeleton className='h-4 w-16' />\n </div>\n )\n}\n\n/** Table skeleton with configurable rows */\nexport const TableSkeleton = ({\n rows = 5,\n columns = 4,\n className,\n}: {\n className?: string,\n columns?: number\n rows?: number\n}) => {\n // Stable identity keys so React doesn't remount on re-render. Indices are\n // unsuitable here because the lists are fixed-length but Sonar's S6479 flags\n // index-derived keys.\n const headerIds = useMemo(() => buildIdList(columns), [columns])\n const rowIds = useMemo(() => buildIdList(rows), [rows])\n const colIds = useMemo(() => buildIdList(columns), [columns])\n\n return (\n <div className={cn('rounded-xl border shadow-[var(--shadow-card)] bg-card overflow-hidden', className)}>\n {/* Header */}\n <div className='flex items-center gap-4 px-4 py-3 border-b'>\n {headerIds.map((id) => (\n <Skeleton key={id} className='h-4 flex-1' />\n ))}\n </div>\n {/* Rows */}\n {rowIds.map((rowId) => (\n <div\n key={rowId}\n className='flex items-center gap-4 px-4 py-3 border-b last:border-b-0'\n >\n {colIds.map((colId, colIdx) => (\n <Skeleton\n key={`${rowId}-${colId}`}\n className={cn(\n 'h-4 flex-1',\n colIdx === 0 && 'max-w-32',\n colIdx === columns - 1 && 'max-w-16'\n )}\n />\n ))}\n </div>\n ))}\n </div>\n )\n}\n\n/** Card skeleton */\nexport const CardSkeleton = ({ className }: { className?: string }) => {\n return (\n <div className={cn('rounded-xl p-6 shadow-[var(--shadow-card)] bg-card space-y-4', className)}>\n <div className='space-y-2'>\n <Skeleton className='h-5 w-32' />\n <Skeleton className='h-4 w-48' />\n </div>\n <Skeleton className='h-24 w-full' />\n <div className='flex gap-2'>\n <Skeleton className='h-9 w-20' />\n <Skeleton className='h-9 w-20' />\n </div>\n </div>\n )\n}\n","import { type ComponentType } from 'react'\n\nimport { cn } from '../../lib/utils'\nimport { Skeleton } from '../ui/skeleton'\n\ntype Trend = 'up' | 'down' | 'neutral'\n\ntype IconComponent = ComponentType<{ className?: string; size?: number }>\n\ninterface MetricCardBaseProps {\n className?: string,\n icon?: IconComponent\n label: string,\n loading?: boolean\n}\n\nexport interface MetricCardActiveProps extends MetricCardBaseProps {\n inactive?: false\n trend?: Trend,\n trendValue?: string,\n value: string | number\n}\n\nexport interface MetricCardInactiveProps extends MetricCardBaseProps {\n inactive: true\n onSetup: () => void,\n setupDescription?: string,\n setupLabel: string,\n trend?: never,\n trendValue?: never,\n value?: never\n}\n\ntype MetricCardProps = MetricCardActiveProps | MetricCardInactiveProps\n\nconst trendColor: Record<Trend, string> = {\n down: 'text-[var(--text-danger)]',\n neutral: 'text-muted-foreground',\n up: 'text-[var(--text-success)]',\n}\n\nexport const MetricCard = (props: MetricCardProps) => {\n const { label, icon: Icon, loading = false, className } = props\n\n if (loading) {\n return (\n <div className={cn('rounded-[16px] bg-card shadow-[var(--shadow-card)] px-5 py-4', className)}>\n <Skeleton className='h-3.5 w-20 mb-2.5' />\n <Skeleton className='h-7 w-24' />\n </div>\n )\n }\n\n if (props.inactive) {\n return (\n <div\n className={cn('rounded-[16px] bg-card shadow-[var(--shadow-card)] px-5 py-4', className)}\n >\n <div className='flex items-center gap-1.5'>\n {Icon && <Icon className='size-3.5 text-muted-foreground' />}\n <span className='text-[13px] text-muted-foreground font-medium'>{label}</span>\n </div>\n <div className='text-2xl font-semibold tracking-tight text-muted-foreground/30 tabular-nums mt-1.5'>0</div>\n </div>\n )\n }\n\n return (\n <div className={cn('rounded-[16px] bg-card shadow-[var(--shadow-card)] px-5 py-4', className)}>\n <div className='flex items-center gap-1.5'>\n {Icon && <Icon className='size-3.5 text-muted-foreground' />}\n <span className='text-[13px] text-muted-foreground font-medium'>{label}</span>\n </div>\n <div className='flex items-baseline gap-2 mt-1.5'>\n <span className='text-2xl font-semibold tracking-tight tabular-nums'>{props.value}</span>\n {props.trend && props.trendValue && (\n <span className={cn('text-xs font-medium tabular-nums', trendColor[props.trend])}>\n {props.trendValue}\n </span>\n )}\n </div>\n </div>\n )\n}\n","'use client';\n\n/**\n * Placeholder stub for the docs-AI sheet.\n *\n * Renders nothing in droplet — the real sheet lives in the consumer app and\n * subscribes to the `docsPath` to surface contextual AI help. Kept here so\n * `PageActions` can mount it unconditionally without each consumer wiring it.\n */\nexport const AskAISheet = ({ docsPath: _docsPath }: { docsPath?: string }) => {\n return null;\n};\n","import { HugeiconsIcon } from '@hugeicons/react'\nimport { WebhookIcon } from '@hugeicons/core-free-icons'\nimport Link from 'next/link'\n\nimport { Button } from '../ui/button'\nimport { AskAISheet } from '../ask-ai-sheet'\n\nexport const AskAIAction = ({ docsPath }: { docsPath?: string }) => {\n return <AskAISheet docsPath={docsPath} />\n}\n\nexport const WebhooksAction = () => {\n return (\n <Button variant='outline' size='sm' asChild>\n <Link href='/dashboard/developers?tab=webhooks'>\n <HugeiconsIcon icon={WebhookIcon} size={14} />\n Webhooks\n </Link>\n </Button>\n )\n}\n","'use client'\n\nimport { type ReactNode } from 'react'\nimport { motion, useReducedMotion } from 'motion/react'\n\nimport { cn } from '../../lib/utils'\n\nconst spring = { bounce: 0, duration: 0.35, type: 'spring' as const }\n\ninterface Tab {\n description?: string,\n heading?: string,\n id: string,\n label: string\n}\n\nexport interface ProductPageLayoutProps {\n activeTab: string,\n children: ReactNode,\n headerActions?: ReactNode,\n headerContent?: ReactNode,\n onTabChange: (tabId: string) => void,\n sidebarFooter?: ReactNode,\n tabs: Tab[],\n title: string\n}\n\nexport const ProductPageLayout = ({\n title,\n tabs,\n activeTab,\n onTabChange,\n children,\n headerActions,\n headerContent,\n sidebarFooter,\n}: ProductPageLayoutProps) => {\n const activeTabConfig = tabs.find((t) => t.id === activeTab)\n const shouldReduceMotion = useReducedMotion()\n\n return (\n <div className='flex h-full'>\n {/* Sub-nav sidebar */}\n <nav className='w-52 shrink-0 bg-background overflow-y-auto py-4 px-3 flex flex-col'>\n <h2 className='px-3 mb-3 text-sm font-semibold text-balance'>{title}</h2>\n <div className='flex flex-col gap-0.5'>\n {tabs.map((tab) => (\n <motion.button\n key={tab.id}\n whileTap={shouldReduceMotion ? undefined : { scale: 0.96 }}\n transition={spring}\n onClick={() => onTabChange(tab.id)}\n className={cn(\n 'flex items-center rounded-md px-3 py-1.5 text-[13px] font-medium transition-[color,background-color] text-left touch-manipulation',\n activeTab === tab.id\n ? 'bg-muted text-foreground'\n : 'text-muted-foreground hover:bg-muted/50 hover:text-foreground'\n )}\n >\n {tab.label}\n </motion.button>\n ))}\n </div>\n {sidebarFooter && (\n <div className='mt-auto pt-4'>\n {sidebarFooter}\n </div>\n )}\n </nav>\n\n {/* Content area */}\n <div className='flex-1 overflow-auto'>\n <div className='px-10 py-8 space-y-8'>\n {headerContent ?? (\n <div className='flex items-start justify-between gap-4'>\n <div>\n <h1 className='text-2xl font-semibold text-balance'>{activeTabConfig?.heading ?? activeTabConfig?.label ?? activeTab}</h1>\n {activeTabConfig?.description && (\n <p className='text-sm text-muted-foreground mt-1 text-pretty'>{activeTabConfig.description}</p>\n )}\n </div>\n {headerActions && (\n <div className='flex items-center gap-2 shrink-0'>\n {headerActions}\n </div>\n )}\n </div>\n )}\n {children}\n </div>\n </div>\n </div>\n )\n}\n","import { type ReactNode } from 'react'\n\nimport { cn } from '../../lib/utils'\n\nexport interface SettingsSectionProps {\n children: ReactNode,\n className?: string,\n description?: string,\n title: string,\n variant?: 'default' | 'danger'\n}\n\nexport const SettingsSection = ({\n title,\n description,\n children,\n variant = 'default',\n className,\n}: SettingsSectionProps) => {\n return (\n <div className={cn(\n 'rounded-xl border p-6 shadow-[var(--shadow-card)] bg-card',\n variant === 'danger' && 'border-[var(--border-danger)]/30',\n className\n )}>\n <div className='mb-4'>\n <h3 className={cn(\n 'text-sm font-semibold text-balance',\n variant === 'danger' && 'text-[var(--text-danger)]'\n )}>\n {title}\n </h3>\n {description && (\n <p className='text-sm text-muted-foreground mt-1 text-pretty'>{description}</p>\n )}\n </div>\n <div className='space-y-4'>\n {children}\n </div>\n </div>\n )\n}\n","import { Badge } from '../ui/badge'\nimport { cn } from '../../lib/utils'\n\ntype StatusType = 'active' | 'inactive' | 'blocked' | 'pending' | 'live' | 'sandbox' | 'processing'\n\nconst statusConfig: Record<StatusType, { dot: boolean, label: string; variant: 'success' | 'inactive' | 'danger' | 'warning' | 'brand' | 'process'; }> = {\n active: { dot: true, label: 'Active', variant: 'success' },\n blocked: { dot: true, label: 'Blocked', variant: 'danger' },\n inactive: { dot: true, label: 'Inactive', variant: 'inactive' },\n live: { dot: true, label: 'Live', variant: 'success' },\n pending: { dot: true, label: 'Pending', variant: 'warning' },\n processing: { dot: true, label: 'Processing', variant: 'process' },\n sandbox: { dot: true, label: 'Sandbox', variant: 'warning' },\n}\n\nexport interface StatusBadgeProps {\n className?: string,\n label?: string\n status: StatusType\n}\n\nexport const StatusBadge = ({ status, label, className }: StatusBadgeProps) => {\n const config = statusConfig[status]\n\n return (\n <Badge variant={config.variant} className={cn('gap-1.5', className)}>\n {config.dot && (\n <span className='size-1.5 rounded-full bg-current opacity-70' />\n )}\n {label || config.label}\n </Badge>\n )\n}\n","/**\n * ToggleCard — droplet's rich toggle composite.\n *\n * Rebuilt from Northstar's SingleToggleCard to support the redcoast dashboard\n * migration. ToggleRow (sibling primitive) remains the minimal/canonical\n * single-line toggle; ToggleCard is the multi-feature card variant with:\n * - Accordion expand/collapse for nested children\n * - Pluggable input type: switch (default), radio, or checkbox\n * - Optional left icon\n * - Tags row above the title and a RightSideTags slot on the right\n * - Optional notification dot in the trigger\n * - Optional `actionLink` rendered below content\n * - Optional `customActionIcon` rendered alongside the trigger affordance\n * - Whole-card click handler\n *\n * The API mirrors Northstar SingleToggleCard so a redcoast migration can be a\n * mechanical rename. Where the Northstar API surfaced layout-tuning props\n * (`disableHover`, `dontSeparateContentFromHeader`, `descriptionModificators`,\n * `titleModificators`) the equivalent expression here is via Tailwind classes\n * on `className` or `triggerClassName`.\n *\n * Authored in droplet so a single canonical card is available across teams.\n * Backed by Card + Switch/Checkbox/RadioGroup + Radix Accordion.\n */\nimport {\n type ChangeEvent,\n type FC,\n type ReactElement,\n type ReactNode,\n useId,\n} from 'react';\nimport {\n Content as AccordionContent,\n Header as AccordionHeader,\n Item as AccordionItem,\n Root as AccordionRoot,\n Trigger as AccordionTrigger,\n} from '@radix-ui/react-accordion';\n\nimport { cn } from '../../lib/utils';\nimport { Switch } from '../ui/switch';\nimport { Checkbox } from '../ui/checkbox';\nimport { RadioGroup, RadioGroupItem } from '../ui/radio-group';\n\ntype ToggleCardInputType = 'toggle' | 'radio' | 'checkbox';\n\nexport type ToggleCardInputProps = {\n checked?: boolean;\n disabled?: boolean;\n /** Hide the input control entirely (useful when the row is informational). */\n hidden?: boolean;\n id?: string;\n /** When true, renders a lock badge instead of a switch — signals the value\n * is fixed and cannot be toggled via this UI. Implies disabled. */\n isLocked?: boolean;\n /** Indicates the saved/unsaved state via styling — informational, optional. */\n isSaved?: boolean;\n /** When true, paints the input with the warning accent (informational). */\n isWarning?: boolean;\n name?: string;\n /** Native onChange — receives a synthetic event for parity with HTML inputs. */\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n /** Controls which control element renders next to the title. */\n type?: ToggleCardInputType;\n};\n\nexport type ToggleCardTag = {\n Tag: ReactElement;\n id: string;\n};\n\nexport type ToggleCardActionLink = {\n onClick: () => void;\n text: string;\n};\n\nexport type ToggleCardCustomActionIcon = {\n Icon: ReactElement;\n className?: string;\n};\n\nexport type ToggleCardProps = {\n /** Optional icon rendered before the title. */\n Icon?: ReactElement;\n /** Tags shown on the RIGHT side of the trigger (e.g. status badges). */\n RightSideTags?: ToggleCardTag[];\n /** Tags shown ABOVE the title (e.g. status pills). */\n Tags?: ToggleCardTag[];\n /** Required key for Radix Accordion item identity. */\n accordionKey: string;\n /** Action button rendered at the bottom of expanded content. */\n actionLink?: ToggleCardActionLink;\n /** Whether the accordion CAN expand. Defaults to true. */\n allowExpand?: boolean;\n /** Children — rendered inside the AccordionContent when expanded. */\n children?: ReactNode;\n /** className applied to the outer Accordion root. */\n className?: string;\n /** Whether the accordion can be collapsed (Radix `collapsible`). */\n collapsible?: boolean;\n /** Replaces the default chevron with a custom icon. */\n customActionIcon?: ToggleCardCustomActionIcon;\n /** Whether the accordion is expanded by default. */\n defaultExpanded?: boolean;\n /** Optional secondary line below the title. */\n description?: string;\n /** Disables the entire card (input + trigger). */\n disabled?: boolean;\n /** Inputs (toggle/radio/checkbox) rendered alongside the title. */\n inputProps?: ToggleCardInputProps;\n /** When true, draws a notification dot on the trigger. */\n notification?: boolean;\n /**\n * Click handler for the whole card surface.\n *\n * @deprecated Currently a no-op: attaching onClick to a wrapper that nests\n * interactive children (AccordionTrigger, Switch / Checkbox / RadioGroup)\n * is an a11y anti-pattern. Kept in the type signature for Northstar\n * mechanical-rename parity. A future iteration may re-introduce this with\n * a dedicated click target (e.g. an overlay button) outside the nested\n * interactives.\n */\n onCardClick?: () => void;\n /** Accordion value-change handler. */\n onValueChange?: (value: string | undefined) => void;\n /** Card title — rendered as the primary label inside the trigger. */\n title?: string;\n /** className applied to the trigger row. */\n triggerClassName?: string;\n /** Test id applied to the accordion trigger element. */\n triggerTestId?: string;\n /** Controlled accordion value. */\n value?: string;\n};\n\nconst inputCommon =\n 'shrink-0 touch-manipulation cursor-pointer disabled:cursor-not-allowed disabled:opacity-50';\n\n// Internal helper — two positional params are clearer here than wrapping in\n// an object. Signature is private to this module.\n// eslint-disable-next-line custom-rules/require-single-object-param\nconst renderInput = (input: ToggleCardInputProps | undefined, id: string) => {\n if (!input || input.hidden) return null;\n // Locked state: render a compact lock badge instead of a switch. Signals to\n // users that the value is fixed by an external constraint (plan tier,\n // global setting, etc.) and cannot be changed via this control.\n if (input.isLocked) {\n return (\n <div\n aria-label='Locked'\n title='Locked'\n className='shrink-0 inline-flex items-center justify-center size-5 rounded-full bg-muted text-muted-foreground mt-0.5'\n >\n <svg\n className='size-3'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n aria-hidden\n >\n <rect x='3' y='11' width='18' height='11' rx='2' ry='2' />\n <path d='M7 11V7a5 5 0 0110 0v4' />\n </svg>\n </div>\n );\n }\n const type = input.type ?? 'toggle';\n // Internal handler — single boolean is the natural shape for an onChange\n // callback. Wrapping in an object would be ceremony.\n // eslint-disable-next-line custom-rules/require-single-object-param\n const handleChange = (next: boolean) => {\n if (!input.onChange) return;\n // Synthesize a minimal ChangeEvent so consumers expecting native event\n // shape keep working.\n input.onChange({\n target: { checked: next, name: input.name ?? '' },\n } as ChangeEvent<HTMLInputElement>);\n };\n if (type === 'toggle') {\n return (\n <Switch\n id={input.id ?? id}\n checked={Boolean(input.checked)}\n disabled={input.disabled}\n onCheckedChange={handleChange}\n className={cn(inputCommon, 'mt-0.5')}\n />\n );\n }\n if (type === 'checkbox') {\n return (\n <Checkbox\n id={input.id ?? id}\n checked={Boolean(input.checked)}\n disabled={input.disabled}\n onCheckedChange={(state) => handleChange(state === true)}\n className={cn(inputCommon, 'mt-1')}\n />\n );\n }\n // radio — wrap in a single-item RadioGroup so semantics are preserved\n return (\n <RadioGroup\n value={input.checked ? input.id ?? id : ''}\n onValueChange={(v) => handleChange(v === (input.id ?? id))}\n disabled={input.disabled}\n className='shrink-0 mt-0.5'\n >\n <RadioGroupItem\n id={input.id ?? id}\n value={input.id ?? id}\n className={inputCommon}\n />\n </RadioGroup>\n );\n};\n\nexport const ToggleCard: FC<ToggleCardProps> = ({\n accordionKey,\n title,\n description,\n // Note: the `Icon` prop is accepted in ToggleCardProps for API parity with\n // Northstar's SingleToggleCard but intentionally not destructured/rendered\n // here (toggle cards do not render a leading icon per droplet design).\n // Drop the prop at the migration sweep when touching each consumer.\n inputProps,\n allowExpand = true,\n defaultExpanded,\n value,\n onValueChange,\n collapsible = true,\n Tags,\n RightSideTags,\n notification,\n actionLink,\n customActionIcon,\n // Intentionally unused — see ToggleCardProps['onCardClick'] JSDoc.\n onCardClick: _onCardClick,\n children,\n disabled,\n triggerTestId,\n className,\n triggerClassName,\n}) => {\n const generatedId = useId();\n const inputId = inputProps?.id ?? generatedId;\n // Parent-with-nested-children mode: the trigger row is the \"section header\"\n // for a group of sub-toggles. Visual hierarchy reads correctly when the\n // header sits on a muted/grey surface and the nested children get the\n // clean white card surface below.\n const isParentMode = !allowExpand && Boolean(children);\n\n // Extracted to keep the main render's cognitive complexity below the\n // Sonar threshold. Content sits inside an AccordionContent when\n // expandable, or directly under the header when not.\n const renderContent = () => {\n const actionLinkButton = actionLink ? (\n <button\n type='button'\n onClick={actionLink.onClick}\n className='mt-3 text-sm font-medium text-(--action) hover:underline underline-offset-4 cursor-pointer'\n >\n {actionLink.text}\n </button>\n ) : null;\n\n if (allowExpand) {\n return (\n <AccordionContent className='border-t border-border-divider px-5 py-4'>\n {children}\n {actionLinkButton}\n </AccordionContent>\n );\n }\n\n // When the accordion can't expand, children still render as nested\n // content below the header. Used for the \"parent + sub-toggles\"\n // pattern. Children sit on the clean card surface (white) so the\n // visual contrast with the grey header above signals the hierarchy.\n if (!children && !actionLink) return null;\n return (\n <div className='border-t border-border-divider bg-card px-5 py-3 space-y-2'>\n {children}\n {actionLinkButton}\n </div>\n );\n };\n\n return (\n <AccordionRoot\n type='single'\n collapsible={collapsible}\n defaultValue={defaultExpanded ? accordionKey : undefined}\n value={value}\n onValueChange={onValueChange}\n data-slot='toggle-card'\n className={cn(\n 'rounded-xl bg-card shadow-card overflow-hidden',\n disabled && 'opacity-60',\n className,\n )}\n >\n <AccordionItem value={accordionKey} className='border-0'>\n <AccordionHeader className='m-0'>\n {/* The wrapper is intentionally non-interactive. `onCardClick` is\n kept in the API for Northstar parity but currently no-ops —\n attaching an onClick here is an a11y anti-pattern because the\n wrapper nests an AccordionTrigger button and the input control\n (switch / checkbox / radio). Adding role='button' + tabIndex\n would either nest two interactives or trigger Sonar's \"use\n <button> instead of role\" rule. Consumers that need\n whole-card-click should wire it to a specific child instead. */}\n <div\n className={cn(\n 'group flex items-start gap-3 px-5 py-4',\n isParentMode && 'bg-bg-bottom',\n triggerClassName,\n )}\n >\n {renderInput(inputProps, inputId)}\n <div className='flex-1 min-w-0'>\n {title && (\n <div className='flex items-baseline gap-1.5 flex-wrap leading-5'>\n <label\n htmlFor={inputId}\n className={cn(\n 'text-sm font-medium select-none leading-5',\n disabled && 'text-muted-foreground',\n )}\n >\n {title}\n {notification && (\n <span\n aria-hidden\n className='inline-block ml-1.5 size-1.5 rounded-full bg-destructive align-middle'\n />\n )}\n </label>\n {Tags && Tags.length > 0 && (\n <>\n {Tags.map((t) => (\n <span key={t.id} className='leading-5'>\n {t.Tag}\n </span>\n ))}\n </>\n )}\n </div>\n )}\n {!title && Tags && Tags.length > 0 && (\n <div className='flex items-baseline gap-1.5 mb-1 leading-5'>\n {Tags.map((t) => (\n <span key={t.id} className='leading-5'>\n {t.Tag}\n </span>\n ))}\n </div>\n )}\n {description && (\n <p className='text-sm text-muted-foreground mt-0.5 text-pretty'>\n {description}\n </p>\n )}\n </div>\n <div className='flex items-center gap-2 shrink-0 self-start'>\n {RightSideTags && RightSideTags.length > 0 && (\n <div className='flex items-center gap-1.5'>\n {RightSideTags.map((t) => (\n <span key={t.id}>{t.Tag}</span>\n ))}\n </div>\n )}\n {allowExpand && (\n <AccordionTrigger\n data-testid={triggerTestId}\n className={cn(\n 'shrink-0 inline-flex size-7 items-center justify-center rounded-md text-muted-foreground transition-[transform,background-color] duration-150 hover:bg-overlay-hover [&[data-state=open]>svg]:rotate-180',\n customActionIcon?.className,\n )}\n disabled={!allowExpand}\n >\n {customActionIcon ? (\n customActionIcon.Icon\n ) : (\n <svg\n className='size-4'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n aria-hidden\n >\n <polyline points='6 9 12 15 18 9' />\n </svg>\n )}\n </AccordionTrigger>\n )}\n </div>\n </div>\n </AccordionHeader>\n {renderContent()}\n </AccordionItem>\n </AccordionRoot>\n );\n};\n","'use client';\n\nimport { forwardRef } from 'react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type ArrowUpRightIconHandle = AnimatedIconHandle;\n\ntype ArrowUpRightIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst ArrowUpRightIcon = forwardRef<ArrowUpRightIconHandle, ArrowUpRightIconProps>(\n (props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <motion.path\n animate={controls}\n d='M7 17 17 7'\n transition={{ duration: 0.3, times: [0, 0.4, 1] }}\n variants={{ animate: { x: [0, 2, 0], y: [0, -2, 0] }, normal: { x: 0, y: 0 } }}\n />\n <motion.path\n animate={controls}\n d='M7 7h10v10'\n transition={{ duration: 0.3, times: [0, 0.4, 1] }}\n variants={{ animate: { x: [0, 2, 0], y: [0, -2, 0] }, normal: { x: 0, y: 0 } }}\n />\n </svg>\n )}\n </AnimatedIcon>\n ),\n);\n\nArrowUpRightIcon.displayName = 'ArrowUpRightIcon';\n\nexport { ArrowUpRightIcon };\n","'use client';\n\nimport type { HTMLAttributes, MouseEvent } from 'react';\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';\nimport type { Variants } from 'motion/react';\nimport { motion, useAnimation } from 'motion/react';\n\nimport { cn } from '../../../lib/utils';\n\nexport interface ChartBarIncreasingIconHandle {\n startAnimation: () => void;\n stopAnimation: () => void;\n}\n\ninterface ChartBarIncreasingIconProps extends HTMLAttributes<HTMLDivElement> {\n size?: number;\n}\n\nconst LINE_VARIANTS: Variants = {\n hidden: { opacity: 0, pathLength: 0 },\n visible: { opacity: 1, pathLength: 1 },\n};\n\nconst transitionFor = (i: number) => ({\n delay: i * 0.1,\n duration: 0.3,\n});\n\nconst ChartBarIncreasingIcon = forwardRef<\n ChartBarIncreasingIconHandle,\n ChartBarIncreasingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n const controls = useAnimation();\n const isControlledRef = useRef(false);\n\n useImperativeHandle(ref, () => {\n isControlledRef.current = true;\n return {\n startAnimation: async () => {\n await controls.start((i) => ({\n opacity: 0,\n pathLength: 0,\n transition: transitionFor(i),\n }));\n await controls.start((i) => ({\n opacity: 1,\n pathLength: 1,\n transition: transitionFor(i),\n }));\n },\n stopAnimation: () => controls.start('visible'),\n };\n });\n\n const handleMouseEnter = useCallback(\n async (e: MouseEvent<HTMLDivElement>) => {\n if (isControlledRef.current) {\n onMouseEnter?.(e);\n } else {\n await controls.start((i) => ({\n opacity: 0,\n pathLength: 0,\n transition: transitionFor(i),\n }));\n await controls.start((i) => ({\n opacity: 1,\n pathLength: 1,\n transition: transitionFor(i),\n }));\n }\n },\n [controls, onMouseEnter],\n );\n\n const handleMouseLeave = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n if (isControlledRef.current) {\n onMouseLeave?.(e);\n } else {\n controls.start('visible').catch(() => undefined);\n }\n },\n [controls, onMouseLeave],\n );\n\n return (\n <div\n aria-hidden='true'\n className={cn('inline-flex items-center justify-center', className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n >\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <path d='M3 3v16a2 2 0 0 0 2 2h16' />\n <motion.path\n animate={controls}\n custom={1}\n d='M7 11h8'\n initial='visible'\n variants={LINE_VARIANTS}\n />\n <motion.path\n animate={controls}\n custom={2}\n d='M7 16h12'\n initial='visible'\n variants={LINE_VARIANTS}\n />\n <motion.path\n animate={controls}\n custom={0}\n d='M7 6h3'\n initial='visible'\n variants={LINE_VARIANTS}\n />\n </svg>\n </div>\n );\n});\n\nChartBarIncreasingIcon.displayName = 'ChartBarIncreasingIcon';\n\nexport { ChartBarIncreasingIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport type { Transition } from 'motion/react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type ChevronDownIconHandle = AnimatedIconHandle;\n\ntype ChevronDownIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst DEFAULT_TRANSITION: Transition = {\n duration: 0.5,\n times: [0, 0.4, 1],\n};\n\nconst ChevronDownIcon = forwardRef<ChevronDownIconHandle, ChevronDownIconProps>(\n (props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <motion.path\n animate={controls}\n d='m6 9 6 6 6-6'\n transition={DEFAULT_TRANSITION}\n variants={{\n animate: { y: [0, 2, 0] },\n normal: { y: 0 },\n }}\n />\n </svg>\n )}\n </AnimatedIcon>\n ),\n);\n\nChevronDownIcon.displayName = 'ChevronDownIcon';\n\nexport { ChevronDownIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type ChevronRightIconHandle = AnimatedIconHandle;\n\ntype ChevronRightIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst ChevronRightIcon = forwardRef<ChevronRightIconHandle, ChevronRightIconProps>(\n (props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <motion.path\n animate={controls}\n d='m9 18 6-6-6-6'\n transition={{ duration: 0.5, times: [0, 0.4, 1] }}\n variants={{ animate: { x: [0, 2, 0] }, normal: { x: 0 } }}\n />\n </svg>\n )}\n </AnimatedIcon>\n ),\n);\n\nChevronRightIcon.displayName = 'ChevronRightIcon';\n\nexport { ChevronRightIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type CopyIconHandle = AnimatedIconHandle;\n\ntype CopyIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst springTransition = {\n damping: 17,\n mass: 1,\n stiffness: 160,\n type: 'spring' as const,\n};\n\nconst CopyIcon = forwardRef<CopyIconHandle, CopyIconProps>((props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <motion.rect\n animate={controls}\n height='14'\n rx='2'\n ry='2'\n transition={springTransition}\n variants={{\n animate: { translateX: -3, translateY: -3 },\n normal: { translateX: 0, translateY: 0 },\n }}\n width='14'\n x='8'\n y='8'\n />\n <motion.path\n animate={controls}\n d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'\n transition={springTransition}\n variants={{\n animate: { x: 3, y: 3 },\n normal: { x: 0, y: 0 },\n }}\n />\n </svg>\n )}\n </AnimatedIcon>\n));\n\nCopyIcon.displayName = 'CopyIcon';\n\nexport { CopyIcon };\n","'use client';\n\nimport type { HTMLAttributes, MouseEvent } from 'react';\nimport {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport type { Transition } from 'motion/react';\nimport { AnimatePresence, motion, useAnimation } from 'motion/react';\n\nimport { cn } from '../../../lib/utils';\n\nexport interface CopyCheckIconHandle {\n startAnimation: () => void;\n stopAnimation: () => void;\n triggerCopied: () => void;\n}\n\ninterface CopyCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n size?: number;\n}\n\nconst SPRING_TRANSITION: Transition = {\n damping: 17,\n mass: 1,\n stiffness: 160,\n type: 'spring',\n};\n\nconst CopyCheckIcon = forwardRef<CopyCheckIconHandle, CopyCheckIconProps>(\n ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n const controls = useAnimation();\n const isControlledRef = useRef(false);\n const [copied, setCopied] = useState(false);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const triggerCopied = useCallback(() => {\n setCopied(true);\n if (timerRef.current) clearTimeout(timerRef.current);\n timerRef.current = setTimeout(() => setCopied(false), 1500);\n }, []);\n\n useImperativeHandle(ref, () => {\n isControlledRef.current = true;\n\n return {\n startAnimation: () => controls.start('animate'),\n stopAnimation: () => controls.start('normal'),\n triggerCopied,\n };\n });\n\n const handleMouseEnter = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n if (!copied) {\n if (isControlledRef.current) {\n onMouseEnter?.(e);\n } else {\n controls.start('animate').catch(() => undefined);\n }\n }\n },\n [controls, onMouseEnter, copied],\n );\n\n const handleMouseLeave = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n if (!copied) {\n if (isControlledRef.current) {\n onMouseLeave?.(e);\n } else {\n controls.start('normal').catch(() => undefined);\n }\n }\n },\n [controls, onMouseLeave, copied],\n );\n\n return (\n <div\n aria-hidden='true'\n className={cn(\n 'relative inline-flex items-center justify-center',\n className,\n )}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n >\n <AnimatePresence mode='wait'>\n {copied ? (\n <motion.svg\n key='check'\n initial={{ opacity: 0, scale: 0.5 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.5 }}\n transition={{ duration: 0.15 }}\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n className='text-green-500'\n >\n <motion.path\n d='M20 6 9 17l-5-5'\n initial={{ pathLength: 0 }}\n animate={{ pathLength: 1 }}\n transition={{ delay: 0.1, duration: 0.3 }}\n />\n </motion.svg>\n ) : (\n <motion.div\n key='copy'\n initial={{ opacity: 0, scale: 0.5 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.5 }}\n transition={{ duration: 0.15 }}\n >\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <motion.rect\n animate={controls}\n height='14'\n rx='2'\n ry='2'\n transition={SPRING_TRANSITION}\n variants={{\n animate: { translateX: -3, translateY: -3 },\n normal: { translateX: 0, translateY: 0 },\n }}\n width='14'\n x='8'\n y='8'\n />\n <motion.path\n animate={controls}\n d='M8 4V2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.75a2 2 0 0 0-2-2H16a2 2 0 0 0-2-2h-2z'\n transition={SPRING_TRANSITION}\n variants={{\n animate: { x: 3, y: 3 },\n normal: { x: 0, y: 0 },\n }}\n />\n </svg>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n },\n);\n\nCopyCheckIcon.displayName = 'CopyCheckIcon';\n\nexport { CopyCheckIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport type { Variants } from 'motion/react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type DollarSignIconHandle = AnimatedIconHandle;\n\ntype DollarSignIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst DOLLAR_MAIN_VARIANTS: Variants = {\n animate: {\n opacity: [0, 1],\n pathLength: [0, 1],\n transition: { duration: 0.6, opacity: { duration: 0.1 } },\n },\n normal: {\n opacity: 1,\n pathLength: 1,\n transition: { duration: 0.4, opacity: { duration: 0.1 } },\n },\n};\n\nconst DOLLAR_SECONDARY_VARIANTS: Variants = {\n animate: {\n opacity: [0, 1],\n pathLength: [0, 1],\n pathOffset: [1, 0],\n transition: {\n delay: 0.5,\n duration: 0.4,\n opacity: { delay: 0.5, duration: 0.1 },\n },\n },\n normal: {\n opacity: 1,\n pathLength: 1,\n pathOffset: 0,\n transition: {\n delay: 0.3,\n duration: 0.3,\n opacity: { delay: 0.3, duration: 0.1 },\n },\n },\n};\n\nconst DollarSignIcon = forwardRef<DollarSignIconHandle, DollarSignIconProps>(\n (props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <motion.path\n animate={controls}\n d='M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6'\n initial='normal'\n variants={DOLLAR_MAIN_VARIANTS}\n />\n <motion.path\n animate={controls}\n d='M12 22 L12 2'\n initial='normal'\n variants={DOLLAR_SECONDARY_VARIANTS}\n />\n </svg>\n )}\n </AnimatedIcon>\n ),\n);\n\nDollarSignIcon.displayName = 'DollarSignIcon';\n\nexport { DollarSignIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type DownloadIconHandle = AnimatedIconHandle;\n\ntype DownloadIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst DownloadIcon = forwardRef<DownloadIconHandle, DownloadIconProps>((props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <motion.path\n animate={controls}\n d='M12 15V3'\n transition={{ duration: 0.3, times: [0, 0.4, 1] }}\n variants={{ animate: { y: [0, 2, 0] }, normal: { y: 0 } }}\n />\n <motion.path\n animate={controls}\n d='m8 11 4 4 4-4'\n transition={{ duration: 0.3, times: [0, 0.4, 1] }}\n variants={{ animate: { y: [0, 2, 0] }, normal: { y: 0 } }}\n />\n <path d='M20 21H4' />\n </svg>\n )}\n </AnimatedIcon>\n));\n\nDownloadIcon.displayName = 'DownloadIcon';\n\nexport { DownloadIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport type { Variants } from 'motion/react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type FingerprintIconHandle = AnimatedIconHandle;\n\ntype FingerprintIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst PATH_VARIANTS: Variants = {\n animate: {\n opacity: [0, 0, 1, 1, 1],\n pathLength: [0.1, 0.3, 0.5, 0.7, 0.9, 1],\n transition: { opacity: { duration: 0.5 }, pathLength: { duration: 2 } },\n },\n normal: { opacity: 1, pathLength: 1 },\n};\n\nconst FINGERPRINT_PATHS = [\n { d: 'M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4' },\n { d: 'M14 13.12c0 2.38 0 6.38-1 8.88' },\n { d: 'M17.29 21.02c.12-.6.43-2.3.5-3.02' },\n { d: 'M2 12a10 10 0 0 1 18-6' },\n { d: 'M2 16h.01' },\n { d: 'M21.8 16c.2-2 .131-5.354 0-6' },\n { d: 'M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2' },\n { d: 'M8.65 22c.21-.66.45-1.32.57-2' },\n { d: 'M9 6.8a6 6 0 0 1 9 5.2v2' },\n] as const;\n\nconst FingerprintIcon = forwardRef<FingerprintIconHandle, FingerprintIconProps>(\n (props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n {FINGERPRINT_PATHS.map(({ d }) => (\n <path d={d} key={d} strokeOpacity={0.4} />\n ))}\n {FINGERPRINT_PATHS.map(({ d }) => (\n <motion.path\n animate={controls}\n d={d}\n key={`motion-${d}`}\n variants={PATH_VARIANTS}\n />\n ))}\n </svg>\n )}\n </AnimatedIcon>\n ),\n);\n\nFingerprintIcon.displayName = 'FingerprintIcon';\n\nexport { FingerprintIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport type { Transition, Variants } from 'motion/react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type HomeIconHandle = AnimatedIconHandle;\n\ntype HomeIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst DEFAULT_TRANSITION: Transition = {\n duration: 0.6,\n opacity: { duration: 0.2 },\n};\n\nconst PATH_VARIANTS: Variants = {\n animate: { opacity: [0, 1], pathLength: [0, 1] },\n normal: { opacity: 1, pathLength: 1 },\n};\n\nconst HomeIcon = forwardRef<HomeIconHandle, HomeIconProps>((props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <path d='M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z' />\n <motion.path\n animate={controls}\n d='M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8'\n transition={DEFAULT_TRANSITION}\n variants={PATH_VARIANTS}\n />\n </svg>\n )}\n </AnimatedIcon>\n));\n\nHomeIcon.displayName = 'HomeIcon';\n\nexport { HomeIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type KeyIconHandle = AnimatedIconHandle;\n\ntype KeyIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst KeyIcon = forwardRef<KeyIconHandle, KeyIconProps>((props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <motion.svg\n animate={controls}\n fill='none'\n height={size}\n initial='normal'\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n style={{ originX: 0.3, originY: 0.7 }}\n variants={{\n animate: {\n rotate: [-3, -33, -25, -28],\n transition: {\n duration: 0.6,\n ease: 'easeInOut',\n times: [0, 0.6, 0.8, 1],\n },\n },\n normal: {\n rotate: 0,\n transition: {\n damping: 14,\n duration: 0.8,\n stiffness: 120,\n type: 'spring',\n },\n },\n }}\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <path d='m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4' />\n <path d='m21 2-9.6 9.6' />\n <circle cx='7.5' cy='15.5' r='5.5' />\n </motion.svg>\n )}\n </AnimatedIcon>\n));\n\nKeyIcon.displayName = 'KeyIcon';\n\nexport { KeyIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type LayoutPanelTopIconHandle = AnimatedIconHandle;\n\ntype LayoutPanelTopIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst LayoutPanelTopIcon = forwardRef<\n LayoutPanelTopIconHandle,\n LayoutPanelTopIconProps\n>((props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <motion.rect\n animate={controls}\n height='7'\n initial='normal'\n rx='1'\n variants={{\n animate: {\n opacity: [0, 1],\n transition: {\n duration: 0.5,\n opacity: { duration: 0.5, times: [0.2, 1] },\n },\n translateY: [-5, 0],\n },\n normal: { opacity: 1, translateY: 0 },\n }}\n width='18'\n x='3'\n y='3'\n />\n <motion.rect\n animate={controls}\n height='7'\n initial='normal'\n rx='1'\n variants={{\n animate: {\n opacity: [0, 1],\n transition: {\n duration: 0.5,\n opacity: { duration: 0.7, times: [0.5, 1] },\n translateX: { delay: 0.3 },\n },\n translateX: [-10, 0],\n },\n normal: { opacity: 1, translateX: 0 },\n }}\n width='7'\n x='3'\n y='14'\n />\n <motion.rect\n animate={controls}\n height='7'\n initial='normal'\n rx='1'\n variants={{\n animate: {\n opacity: [0, 1],\n transition: {\n duration: 0.5,\n opacity: { duration: 0.8, times: [0.5, 1] },\n translateX: { delay: 0.4 },\n },\n translateX: [10, 0],\n },\n normal: { opacity: 1, translateX: 0 },\n }}\n width='7'\n x='14'\n y='14'\n />\n </svg>\n )}\n </AnimatedIcon>\n));\n\nLayoutPanelTopIcon.displayName = 'LayoutPanelTopIcon';\n\nexport { LayoutPanelTopIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport type { Variants } from 'motion/react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type LinkIconHandle = AnimatedIconHandle;\n\ntype LinkIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst PATH_VARIANTS: Variants = {\n animate: {\n pathLength: [1, 0.97, 1, 0.97, 1],\n pathOffset: [0, 0.05, 0, 0.05, 0],\n rotate: [0, -5, 0],\n transition: {\n duration: 1,\n ease: 'easeInOut',\n rotate: { duration: 0.5 },\n times: [0, 0.2, 0.4, 0.6, 1],\n },\n },\n normal: { pathLength: 1, pathOffset: 0, rotate: 0 },\n};\n\nconst LinkIcon = forwardRef<LinkIconHandle, LinkIconProps>((props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <motion.path\n animate={controls}\n d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'\n variants={PATH_VARIANTS}\n />\n <motion.path\n animate={controls}\n d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'\n variants={PATH_VARIANTS}\n />\n </svg>\n )}\n </AnimatedIcon>\n));\n\nLinkIcon.displayName = 'LinkIcon';\n\nexport { LinkIcon };\n","import { type SVGProps } from 'react';\n\ninterface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const ClaudeLogo = ({ size = 32, ...props }: IconProps) => (\n <svg\n width={size}\n height={size}\n viewBox='0 0 24 24'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n {...props}\n >\n <path\n d='M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z'\n fill='#D97757'\n fillRule='nonzero'\n />\n </svg>\n);\n\nexport const CursorLogo = ({ size = 32, ...props }: IconProps) => (\n <svg\n width={size}\n height={size}\n viewBox='0 0 24 24'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n {...props}\n >\n <rect width='24' height='24' rx='5' fill='#F5F5F5' />\n <path d='M12 4L5 8v8l7 4 7-4V8l-7-4z' fill='#E5E5E5' />\n <path d='M12 4L5 8l7 4 7-4-7-4z' fill='#808080' />\n <path d='M12 12l7-4v8l-7 4v-8z' fill='#666' />\n <path d='M12 12L5 8v8l7 4v-8z' fill='#999' />\n </svg>\n);\n\nexport const VSCodeLogo = ({ size = 32, ...props }: IconProps) => (\n <svg\n width={size}\n height={size}\n viewBox='0 0 100 100'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n {...props}\n >\n <mask\n id='vsc-mask'\n maskUnits='userSpaceOnUse'\n x='0'\n y='0'\n width='100'\n height='100'\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M70.912 99.317C72.487 99.931 74.283 99.891 75.873 99.126L96.461 89.22C98.624 88.179 100 85.989 100 83.587V16.413C100 14.011 98.624 11.822 96.461 10.781L75.873 0.874C73.786 -0.13 71.345 0.116 69.513 1.447C69.252 1.637 69.003 1.849 68.769 2.083L29.355 38.041L12.187 25.01C10.589 23.797 8.354 23.896 6.869 25.246L1.363 30.255C-0.453 31.906 -0.455 34.763 1.359 36.417L16.247 50L1.359 63.583C-0.455 65.237 -0.453 68.094 1.363 69.745L6.869 74.754C8.354 76.104 10.589 76.204 12.187 74.99L29.355 61.959L68.769 97.917C69.392 98.541 70.125 99.01 70.912 99.317ZM75.015 27.299L45.109 50L75.015 72.701V27.299Z'\n fill='#fff'\n />\n </mask>\n <g mask='url(#vsc-mask)'>\n <path\n d='M96.461 10.796L75.857 0.876C73.472 -0.273 70.622 0.212 68.75 2.083L1.299 63.583C-0.516 65.237 -0.514 68.094 1.303 69.745L6.813 74.754C8.298 76.104 10.535 76.204 12.134 74.99L93.361 13.37C96.086 11.303 100 13.246 100 16.667V16.427C100 14.027 98.625 11.838 96.461 10.796Z'\n fill='#0065A9'\n />\n <path\n d='M96.461 89.204L75.857 99.124C73.472 100.273 70.622 99.788 68.75 97.917L1.299 36.417C-0.516 34.763 -0.514 31.906 1.303 30.255L6.813 25.246C8.298 23.896 10.535 23.796 12.134 25.009L93.361 86.63C96.086 88.697 100 86.754 100 83.333V83.573C100 85.974 98.625 88.162 96.461 89.204Z'\n fill='#007ACC'\n />\n <path\n d='M75.858 99.126C73.472 100.274 70.622 99.788 68.75 97.917C71.056 100.223 75 98.59 75 95.328V4.672C75 1.41 71.056 -0.223 68.75 2.083C70.622 0.211 73.472 -0.274 75.858 0.874L96.459 10.781C98.623 11.822 100 14.011 100 16.413V83.587C100 85.989 98.623 88.179 96.459 89.22L75.858 99.126Z'\n fill='#1F9CF0'\n />\n </g>\n </svg>\n);\n\nexport const OpenAILogo = ({ size = 32, ...props }: IconProps) => (\n <svg\n width={size}\n height={size}\n viewBox='0 0 24 24'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n {...props}\n >\n <defs>\n <linearGradient\n gradientUnits='userSpaceOnUse'\n id='codex-grad'\n x1='12'\n x2='12'\n y1='3'\n y2='21'\n >\n <stop stopColor='#B1A7FF' />\n <stop offset='.5' stopColor='#7A9DFF' />\n <stop offset='1' stopColor='#3941FF' />\n </linearGradient>\n </defs>\n <path\n d='M19.503 0H4.496A4.496 4.496 0 000 4.496v15.007A4.496 4.496 0 004.496 24h15.007A4.496 4.496 0 0024 19.503V4.496A4.496 4.496 0 0019.503 0z'\n fill='#F0F6FF'\n />\n <path\n d='M9.064 3.344a4.578 4.578 0 012.285-.312c1 .115 1.891.54 2.673 1.275.01.01.024.017.037.021a.09.09 0 00.043 0 4.55 4.55 0 013.046.275l.047.022.116.057a4.581 4.581 0 012.188 2.399c.209.51.313 1.041.315 1.595a4.24 4.24 0 01-.134 1.223.123.123 0 00.03.115c.594.607.988 1.33 1.183 2.17.289 1.425-.007 2.71-.887 3.854l-.136.166a4.548 4.548 0 01-2.201 1.388.123.123 0 00-.081.076c-.191.551-.383 1.023-.74 1.494-.9 1.187-2.222 1.846-3.711 1.838-1.187-.006-2.239-.44-3.157-1.302a.107.107 0 00-.105-.024c-.388.125-.78.143-1.204.138a4.441 4.441 0 01-1.945-.466 4.544 4.544 0 01-1.61-1.335c-.152-.202-.303-.392-.414-.617a5.81 5.81 0 01-.37-.961 4.582 4.582 0 01-.014-2.298.124.124 0 00.006-.056.085.085 0 00-.027-.048 4.467 4.467 0 01-1.034-1.651 3.896 3.896 0 01-.251-1.192 5.189 5.189 0 01.141-1.6c.337-1.112.982-1.985 1.933-2.618.212-.141.413-.251.601-.33.215-.089.43-.164.646-.227a.098.098 0 00.065-.066 4.51 4.51 0 01.829-1.615 4.535 4.535 0 011.837-1.388zm3.482 10.565a.637.637 0 000 1.272h3.636a.637.637 0 100-1.272h-3.636zM8.462 9.23a.637.637 0 00-1.106.631l1.272 2.224-1.266 2.136a.636.636 0 101.095.649l1.454-2.455a.636.636 0 00.005-.64L8.462 9.23z'\n fill='url(#codex-grad)'\n />\n </svg>\n);\n\nexport const WindsurfLogo = ({ size = 32, ...props }: IconProps) => (\n <svg\n width={size}\n height={size}\n viewBox='0 0 1024 1024'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n {...props}\n >\n <path\n d='M897.246 286.869H889.819C850.735 286.808 819.017 318.46 819.017 357.539V515.589C819.017 547.15 792.93 572.716 761.882 572.716C743.436 572.716 725.02 563.433 714.093 547.85L552.673 317.304C539.28 298.16 517.486 286.747 493.895 286.747C457.094 286.747 423.976 318.034 423.976 356.657V515.619C423.976 547.181 398.103 572.746 366.842 572.746C348.335 572.746 329.949 563.463 319.021 547.881L138.395 289.882C134.316 284.038 125.154 286.93 125.154 294.052V431.892C125.154 438.862 127.285 445.619 131.272 451.34L309.037 705.2C319.539 720.204 335.033 731.344 352.9 735.392C397.616 745.557 438.77 711.135 438.77 667.278V508.406C438.77 476.845 464.339 451.279 495.904 451.279H495.995C515.02 451.279 532.857 460.562 543.785 476.145L705.235 706.661C718.659 725.835 739.327 737.218 763.983 737.218C801.606 737.218 833.841 705.9 833.841 667.308V508.376C833.841 476.815 859.41 451.249 890.975 451.249H897.276C901.233 451.249 904.43 448.053 904.43 444.097V294.021C904.43 290.065 901.233 286.869 897.276 286.869H897.246Z'\n fill='#0B100F'\n />\n </svg>\n);\n","'use client';\n\nimport { forwardRef } from 'react';\nimport type { Transition, Variants } from 'motion/react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type MoonIconHandle = AnimatedIconHandle;\n\ntype MoonIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst SVG_VARIANTS: Variants = {\n animate: { rotate: [0, -10, 10, -5, 5, 0] },\n normal: { rotate: 0 },\n};\n\nconst SVG_TRANSITION: Transition = {\n duration: 1.2,\n ease: 'easeInOut',\n};\n\nconst MoonIcon = forwardRef<MoonIconHandle, MoonIconProps>((props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <motion.svg\n animate={controls}\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n transition={SVG_TRANSITION}\n variants={SVG_VARIANTS}\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <path d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z' />\n </motion.svg>\n )}\n </AnimatedIcon>\n));\n\nMoonIcon.displayName = 'MoonIcon';\n\nexport { MoonIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport type { Transition, Variants } from 'motion/react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type PanelLeftCloseIconHandle = AnimatedIconHandle;\n\ntype PanelLeftCloseIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst DEFAULT_TRANSITION: Transition = {\n duration: 0.5,\n times: [0, 0.4, 1],\n};\n\nconst PATH_VARIANTS: Variants = {\n animate: { x: [0, -1.5, 0] },\n normal: { x: 0 },\n};\n\nconst PanelLeftCloseIcon = forwardRef<\n PanelLeftCloseIconHandle,\n PanelLeftCloseIconProps\n>((props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <rect height='18' rx='2' width='18' x='3' y='3' />\n <path d='M9 3v18' />\n <motion.path\n animate={controls}\n d='m16 15-3-3 3-3'\n transition={DEFAULT_TRANSITION}\n variants={PATH_VARIANTS}\n />\n </svg>\n )}\n </AnimatedIcon>\n));\n\nPanelLeftCloseIcon.displayName = 'PanelLeftCloseIcon';\n\nexport { PanelLeftCloseIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport type { Transition, Variants } from 'motion/react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type PanelLeftOpenIconHandle = AnimatedIconHandle;\n\ntype PanelLeftOpenIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst DEFAULT_TRANSITION: Transition = {\n duration: 0.5,\n times: [0, 0.4, 1],\n};\n\nconst PATH_VARIANTS: Variants = {\n animate: { x: [0, 1.5, 0] },\n normal: { x: 0 },\n};\n\nconst PanelLeftOpenIcon = forwardRef<\n PanelLeftOpenIconHandle,\n PanelLeftOpenIconProps\n>((props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <rect height='18' rx='2' width='18' x='3' y='3' />\n <path d='M9 3v18' />\n <motion.path\n animate={controls}\n d='m14 9 3 3-3 3'\n transition={DEFAULT_TRANSITION}\n variants={PATH_VARIANTS}\n />\n </svg>\n )}\n </AnimatedIcon>\n));\n\nPanelLeftOpenIcon.displayName = 'PanelLeftOpenIcon';\n\nexport { PanelLeftOpenIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type PlusIconHandle = AnimatedIconHandle;\n\ntype PlusIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst PlusIcon = forwardRef<PlusIconHandle, PlusIconProps>((props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <motion.svg\n animate={controls}\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n transition={{ damping: 15, stiffness: 100, type: 'spring' }}\n variants={{ animate: { rotate: 180 }, normal: { rotate: 0 } }}\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <path d='M5 12h14' />\n <path d='M12 5v14' />\n </motion.svg>\n )}\n </AnimatedIcon>\n));\n\nPlusIcon.displayName = 'PlusIcon';\n\nexport { PlusIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type RefreshCWIconHandle = AnimatedIconHandle;\n\ntype RefreshCWIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst RefreshCWIcon = forwardRef<RefreshCWIconHandle, RefreshCWIconProps>(\n (props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <motion.svg\n animate={controls}\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n transition={{ damping: 25, stiffness: 250, type: 'spring' }}\n variants={{ animate: { rotate: '50deg' }, normal: { rotate: '0deg' } }}\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <path d='M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8' />\n <path d='M21 3v5h-5' />\n <path d='M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16' />\n <path d='M8 16H3v5' />\n </motion.svg>\n )}\n </AnimatedIcon>\n ),\n);\n\nRefreshCWIcon.displayName = 'RefreshCWIcon';\n\nexport { RefreshCWIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type SettingsIconHandle = AnimatedIconHandle;\n\ntype SettingsIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst SettingsIcon = forwardRef<SettingsIconHandle, SettingsIconProps>(\n (props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <motion.svg\n animate={controls}\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n transition={{ damping: 10, stiffness: 50, type: 'spring' }}\n variants={{\n animate: { rotate: 180 },\n normal: { rotate: 0 },\n }}\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <path d='M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z' />\n <circle cx='12' cy='12' r='3' />\n </motion.svg>\n )}\n </AnimatedIcon>\n ),\n);\n\nSettingsIcon.displayName = 'SettingsIcon';\n\nexport { SettingsIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport type { Variants } from 'motion/react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type ShieldCheckIconHandle = AnimatedIconHandle;\n\ntype ShieldCheckIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst PATH_VARIANTS: Variants = {\n animate: {\n opacity: [0, 1],\n pathLength: [0, 1],\n scale: [0.5, 1],\n transition: { duration: 0.4, opacity: { duration: 0.1 } },\n },\n normal: {\n opacity: 1,\n pathLength: 1,\n scale: 1,\n transition: { duration: 0.3, opacity: { duration: 0.1 } },\n },\n};\n\nconst ShieldCheckIcon = forwardRef<ShieldCheckIconHandle, ShieldCheckIconProps>(\n (props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <path d='M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z' />\n <motion.path\n animate={controls}\n d='m9 12 2 2 4-4'\n initial='normal'\n variants={PATH_VARIANTS}\n />\n </svg>\n )}\n </AnimatedIcon>\n ),\n);\n\nShieldCheckIcon.displayName = 'ShieldCheckIcon';\n\nexport { ShieldCheckIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport type { Variants } from 'motion/react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type SunIconHandle = AnimatedIconHandle;\n\ntype SunIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst PATH_VARIANTS: Variants = {\n animate: (i: number) => ({\n opacity: [0, 1],\n transition: { delay: i * 0.1, duration: 0.3 },\n }),\n normal: { opacity: 1 },\n};\n\nconst SUN_PATHS = [\n 'M12 2v2',\n 'm19.07 4.93-1.41 1.41',\n 'M20 12h2',\n 'm17.66 17.66 1.41 1.41',\n 'M12 20v2',\n 'm6.34 17.66-1.41 1.41',\n 'M2 12h2',\n 'm4.93 4.93 1.41 1.41',\n];\n\nconst SunIcon = forwardRef<SunIconHandle, SunIconProps>((props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <circle cx='12' cy='12' r='4' />\n {SUN_PATHS.map((d, index) => (\n <motion.path\n animate={controls}\n custom={index + 1}\n d={d}\n key={d}\n variants={PATH_VARIANTS}\n />\n ))}\n </svg>\n )}\n </AnimatedIcon>\n));\n\nSunIcon.displayName = 'SunIcon';\n\nexport { SunIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport type { Variants } from 'motion/react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type TerminalIconHandle = AnimatedIconHandle;\n\ntype TerminalIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst LINE_VARIANTS: Variants = {\n animate: {\n opacity: [1, 0, 1],\n transition: { duration: 0.8, ease: 'linear', repeat: Infinity },\n },\n normal: { opacity: 1 },\n};\n\nconst TerminalIcon = forwardRef<TerminalIconHandle, TerminalIconProps>(\n (props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <polyline points='4 17 10 11 4 5' />\n <motion.line\n animate={controls}\n initial='normal'\n variants={LINE_VARIANTS}\n x1='12'\n x2='20'\n y1='19'\n y2='19'\n />\n </svg>\n )}\n </AnimatedIcon>\n ),\n);\n\nTerminalIcon.displayName = 'TerminalIcon';\n\nexport { TerminalIcon };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport type { Variants } from 'motion/react';\nimport { motion } from 'motion/react';\n\nimport {\n AnimatedIcon,\n type AnimatedIconHandle,\n type AnimatedIconProps,\n} from '../animated-icon';\n\nexport type UsersIconHandle = AnimatedIconHandle;\n\ntype UsersIconProps = Omit<AnimatedIconProps, 'children'>;\n\nconst PATH_VARIANTS: Variants = {\n animate: {\n transition: { damping: 13, delay: 0.1, stiffness: 200, type: 'spring' },\n translateX: [-6, 0],\n },\n normal: {\n transition: { damping: 13, stiffness: 200, type: 'spring' },\n translateX: 0,\n },\n};\n\nconst UsersIcon = forwardRef<UsersIconHandle, UsersIconProps>((props, ref) => (\n <AnimatedIcon ref={ref} {...props}>\n {(controls, size) => (\n <svg\n fill='none'\n height={size}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n viewBox='0 0 24 24'\n width={size}\n xmlns='http://www.w3.org/2000/svg'\n >\n <path d='M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2' />\n <circle cx='9' cy='7' r='4' />\n <motion.path\n animate={controls}\n d='M22 21v-2a4 4 0 0 0-3-3.87'\n variants={PATH_VARIANTS}\n />\n <motion.path\n animate={controls}\n d='M16 3.13a4 4 0 0 1 0 7.75'\n variants={PATH_VARIANTS}\n />\n </svg>\n )}\n </AnimatedIcon>\n));\n\nUsersIcon.displayName = 'UsersIcon';\n\nexport { UsersIcon };\n"],"mappings":"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"}
|