@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,320 @@
|
|
|
1
|
+
const require_index = require('./index.cjs');
|
|
2
|
+
let clsx = require("clsx");
|
|
3
|
+
let tailwind_merge = require("tailwind-merge");
|
|
4
|
+
let react = require("react");
|
|
5
|
+
let motion_react = require("motion/react");
|
|
6
|
+
let _hugeicons_react = require("@hugeicons/react");
|
|
7
|
+
let _hugeicons_core_free_icons = require("@hugeicons/core-free-icons");
|
|
8
|
+
let class_variance_authority = require("class-variance-authority");
|
|
9
|
+
let _radix_ui_react_slot = require("@radix-ui/react-slot");
|
|
10
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
11
|
+
let _paper_design_shaders_react = require("@paper-design/shaders-react");
|
|
12
|
+
let _radix_ui_react_label = require("@radix-ui/react-label");
|
|
13
|
+
let _radix_ui_react_switch = require("@radix-ui/react-switch");
|
|
14
|
+
|
|
15
|
+
//#region src/lib/utils.ts
|
|
16
|
+
const cn = (...inputs) => (0, tailwind_merge.twMerge)((0, clsx.clsx)(inputs));
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
//#region src/components/ui/button/button.tsx
|
|
20
|
+
const buttonVariants = (0, class_variance_authority.cva)("relative isolate inline-flex items-center justify-center gap-1.5 whitespace-nowrap select-none text-[13px] font-medium leading-[calc(18/13)] touch-manipulation transition-[background-color,color,opacity,box-shadow,transform,filter,scale] duration-150 ease active:scale-[0.96] cursor-pointer border-0 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40", {
|
|
21
|
+
defaultVariants: {
|
|
22
|
+
size: "default",
|
|
23
|
+
variant: "default"
|
|
24
|
+
},
|
|
25
|
+
variants: {
|
|
26
|
+
size: {
|
|
27
|
+
default: "rounded-md px-3 py-1.5 h-8 has-[>svg]:px-2.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
28
|
+
"icon": "size-9 rounded-md",
|
|
29
|
+
"icon-sm": "size-7 rounded-md [&_svg:not([class*='size-'])]:size-3.5 relative before:absolute before:-inset-[6px] before:content-['']",
|
|
30
|
+
"icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3 relative before:absolute before:-inset-[9px] before:content-['']",
|
|
31
|
+
lg: "rounded-md px-5 py-2.5 h-10 has-[>svg]:px-4 [&_svg:not([class*='size-'])]:size-4",
|
|
32
|
+
sm: "rounded-md px-2.5 py-1 h-7 has-[>svg]:px-2 [&_svg:not([class*='size-'])]:size-3 before:absolute before:-inset-y-[6px] before:inset-x-0 before:content-['']",
|
|
33
|
+
xs: "rounded-md px-3 py-1 h-7 [&_svg:not([class*='size-'])]:size-3"
|
|
34
|
+
},
|
|
35
|
+
variant: {
|
|
36
|
+
default: "bg-(--action) text-white shadow-[0_0_0_1px_var(--action),var(--shadow-button)] hover:brightness-105 [text-shadow:0_1px_1px_rgba(0,0,0,0.16)]",
|
|
37
|
+
destructive: "bg-destructive text-white shadow-[0_0_0_1px_var(--destructive),var(--shadow-button)] hover:brightness-105 [text-shadow:0_1px_1px_rgba(0,0,0,0.16)] focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
|
|
38
|
+
ghost: "text-muted-foreground hover:bg-[#f8f8f9] hover:text-foreground dark:hover:bg-white/[0.06]",
|
|
39
|
+
link: "text-(--action) underline-offset-4 hover:underline",
|
|
40
|
+
outline: "bg-white shadow-[var(--shadow-input)] hover:bg-[#f8f8f9] hover:shadow-[var(--shadow-input-hover)] dark:bg-input/30 dark:hover:bg-white/[0.06]",
|
|
41
|
+
secondary: "bg-white shadow-[var(--shadow-secondary)] hover:bg-[#f8f8f9] hover:shadow-[var(--shadow-secondary-hover)] dark:bg-input/30 dark:hover:bg-white/[0.06]"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
const Button = ({ className, variant = "default", size = "default", asChild = false, ...props }) => {
|
|
46
|
+
if (asChild) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_slot.Slot, {
|
|
47
|
+
"data-slot": "button",
|
|
48
|
+
"data-size": size,
|
|
49
|
+
"data-variant": variant,
|
|
50
|
+
className: cn(buttonVariants({
|
|
51
|
+
className,
|
|
52
|
+
size,
|
|
53
|
+
variant
|
|
54
|
+
})),
|
|
55
|
+
...props
|
|
56
|
+
});
|
|
57
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
58
|
+
"data-slot": "button",
|
|
59
|
+
"data-size": size,
|
|
60
|
+
"data-variant": variant,
|
|
61
|
+
className: cn(buttonVariants({
|
|
62
|
+
className,
|
|
63
|
+
size,
|
|
64
|
+
variant
|
|
65
|
+
})),
|
|
66
|
+
...props
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
//#endregion
|
|
71
|
+
//#region src/components/ui/input/input.tsx
|
|
72
|
+
const shaderDefaults = {
|
|
73
|
+
bloom: 0,
|
|
74
|
+
colors: [
|
|
75
|
+
"#BDDCFF",
|
|
76
|
+
"#57A7FF",
|
|
77
|
+
"#DEEAFC"
|
|
78
|
+
],
|
|
79
|
+
inset: 1,
|
|
80
|
+
intensity: 0,
|
|
81
|
+
pulse: .3,
|
|
82
|
+
roundness: .6,
|
|
83
|
+
scale: 1,
|
|
84
|
+
smoke: .75,
|
|
85
|
+
smokeSize: .7,
|
|
86
|
+
softness: .6,
|
|
87
|
+
speed: 2.2,
|
|
88
|
+
spots: 8,
|
|
89
|
+
spotSize: .75,
|
|
90
|
+
thickness: .04
|
|
91
|
+
};
|
|
92
|
+
const spring = {
|
|
93
|
+
bounce: 0,
|
|
94
|
+
duration: .35,
|
|
95
|
+
type: "spring"
|
|
96
|
+
};
|
|
97
|
+
const Input = (0, react.forwardRef)(({ className, type, shaderBorder, style, ...props }, ref) => {
|
|
98
|
+
const prefersReducedMotion = (0, motion_react.useReducedMotion)();
|
|
99
|
+
const inputClassName = cn("file:text-foreground placeholder:text-muted-foreground/60 selection:bg-primary selection:text-primary-foreground dark:bg-input/30 h-8 w-full min-w-0 touch-manipulation rounded-md border-0 bg-background px-3 py-1 text-base shadow-[var(--shadow-input)] transition-[color,box-shadow] duration-100 ease-out outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "hover:shadow-[var(--shadow-input-hover)]", "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),0_0_1px_0_var(--destructive)] dark:aria-invalid:shadow-[0_0_0_1px_var(--destructive)]", className);
|
|
100
|
+
const isActive = !!shaderBorder;
|
|
101
|
+
const config = typeof shaderBorder === "object" ? {
|
|
102
|
+
...shaderDefaults,
|
|
103
|
+
...shaderBorder
|
|
104
|
+
} : shaderDefaults;
|
|
105
|
+
const inset = config.inset;
|
|
106
|
+
if (shaderBorder !== void 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
107
|
+
className: "relative",
|
|
108
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(motion_react.AnimatePresence, {
|
|
109
|
+
initial: false,
|
|
110
|
+
children: isActive && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(motion_react.motion.div, {
|
|
111
|
+
initial: prefersReducedMotion ? false : { opacity: 0 },
|
|
112
|
+
animate: { opacity: 1 },
|
|
113
|
+
exit: { opacity: 0 },
|
|
114
|
+
transition: prefersReducedMotion ? { duration: 0 } : spring,
|
|
115
|
+
className: "absolute pointer-events-none z-20",
|
|
116
|
+
style: {
|
|
117
|
+
borderRadius: `${8 + inset}px`,
|
|
118
|
+
inset: `-${inset}px`,
|
|
119
|
+
willChange: "opacity"
|
|
120
|
+
},
|
|
121
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_paper_design_shaders_react.PulsingBorder, {
|
|
122
|
+
colorBack: "#00000000",
|
|
123
|
+
colors: config.colors,
|
|
124
|
+
speed: config.speed,
|
|
125
|
+
scale: config.scale,
|
|
126
|
+
roundness: config.roundness,
|
|
127
|
+
thickness: config.thickness,
|
|
128
|
+
softness: config.softness,
|
|
129
|
+
intensity: config.intensity,
|
|
130
|
+
bloom: config.bloom,
|
|
131
|
+
spots: config.spots,
|
|
132
|
+
spotSize: config.spotSize,
|
|
133
|
+
pulse: config.pulse,
|
|
134
|
+
smoke: config.smoke,
|
|
135
|
+
smokeSize: config.smokeSize,
|
|
136
|
+
webGlContextAttributes: {
|
|
137
|
+
alpha: true,
|
|
138
|
+
premultipliedAlpha: true
|
|
139
|
+
},
|
|
140
|
+
className: "size-full",
|
|
141
|
+
style: { borderRadius: `${8 + inset}px` }
|
|
142
|
+
})
|
|
143
|
+
}, "shader-border")
|
|
144
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
145
|
+
ref,
|
|
146
|
+
type,
|
|
147
|
+
"data-slot": "input",
|
|
148
|
+
className: cn(inputClassName, isActive && "animate-shimmer motion-reduce:animate-none"),
|
|
149
|
+
style: isActive ? {
|
|
150
|
+
backgroundClip: "text",
|
|
151
|
+
backgroundImage: `linear-gradient(to right, color-mix(in srgb, ${config.colors[0]} 70%, #000), color-mix(in srgb, ${config.colors[1] || config.colors[0]} 70%, #000), color-mix(in srgb, ${config.colors[2] || config.colors[0]} 70%, #000), color-mix(in srgb, ${config.colors[0]} 70%, #000))`,
|
|
152
|
+
backgroundSize: "200% 100%",
|
|
153
|
+
boxShadow: "none",
|
|
154
|
+
color: "transparent",
|
|
155
|
+
WebkitBackgroundClip: "text",
|
|
156
|
+
...style
|
|
157
|
+
} : style,
|
|
158
|
+
...props
|
|
159
|
+
})]
|
|
160
|
+
});
|
|
161
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
162
|
+
ref,
|
|
163
|
+
type,
|
|
164
|
+
"data-slot": "input",
|
|
165
|
+
className: inputClassName,
|
|
166
|
+
style,
|
|
167
|
+
...props
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
Input.displayName = "Input";
|
|
171
|
+
|
|
172
|
+
//#endregion
|
|
173
|
+
//#region src/components/ui/label/label.tsx
|
|
174
|
+
const labelVariants = (0, class_variance_authority.cva)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70");
|
|
175
|
+
const Label = (0, react.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_label.Root, {
|
|
176
|
+
ref,
|
|
177
|
+
className: cn(labelVariants(), className),
|
|
178
|
+
...props
|
|
179
|
+
}));
|
|
180
|
+
Label.displayName = _radix_ui_react_label.Root.displayName;
|
|
181
|
+
|
|
182
|
+
//#endregion
|
|
183
|
+
//#region src/components/ui/switch/switch.tsx
|
|
184
|
+
const Switch = (0, react.forwardRef)(({ className, size = "default", ...props }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_switch.Root, {
|
|
185
|
+
ref,
|
|
186
|
+
"data-slot": "switch",
|
|
187
|
+
"data-size": size,
|
|
188
|
+
className: cn("peer data-[state=checked]:bg-(--action) data-[state=unchecked]:bg-input hover:data-[state=unchecked]:bg-[rgba(31,41,55,0.14)] group-hover/toggle:data-[state=unchecked]:bg-[rgba(31,41,55,0.14)] focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 dark:hover:data-[state=unchecked]:bg-[rgba(255,255,255,0.12)] dark:group-hover/toggle:data-[state=unchecked]:bg-[rgba(255,255,255,0.12)] relative group/switch inline-flex shrink-0 touch-manipulation items-center rounded-full 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)] transition-[color,background-color,box-shadow] duration-200 ease outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer data-[size=default]:h-[18px] data-[size=default]:w-[30px] data-[size=sm]:h-3.5 data-[size=sm]:w-[22px] before:absolute before:-inset-[13px] before:content-['']", className),
|
|
189
|
+
...props,
|
|
190
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_switch.Thumb, {
|
|
191
|
+
"data-slot": "switch-thumb",
|
|
192
|
+
className: cn("bg-background dark:data-[state=checked]:bg-white dark:data-[state=unchecked]:bg-[oklch(0.500_0.013_253)] pointer-events-none block rounded-full shadow-[0_2px_2px_-1px_rgba(0,0,0,0.06),0_0_0_1px_rgba(0,0,0,0.06),0_4px_4px_-2px_rgba(0,0,0,0.06)] dark:shadow-[0_2px_2px_-1px_rgba(0,0,0,0.20),0_0_0_1px_rgba(0,0,0,0.15),0_4px_4px_-2px_rgba(0,0,0,0.15)] ring-0 transition-[transform,background-color] duration-150 ease group-data-[size=default]/switch:size-3.5 group-data-[size=sm]/switch:size-2.5 data-[state=unchecked]:translate-x-0.5 group-data-[size=default]/switch:data-[state=checked]:translate-x-[14px] group-data-[size=sm]/switch:data-[state=checked]:translate-x-[10px]")
|
|
193
|
+
})
|
|
194
|
+
}));
|
|
195
|
+
Switch.displayName = "Switch";
|
|
196
|
+
|
|
197
|
+
//#endregion
|
|
198
|
+
//#region src/components/toggle-row/toggle-row.tsx
|
|
199
|
+
const ToggleRow = ({ label, description, checked, onCheckedChange, disabled = false, switchPosition = "left", icon, badge, onSettings, children, className }) => {
|
|
200
|
+
const switchId = (0, react.useId)();
|
|
201
|
+
const descId = (0, react.useId)();
|
|
202
|
+
const cursorClass = disabled ? "cursor-not-allowed" : "cursor-pointer";
|
|
203
|
+
if (switchPosition === "left") return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
204
|
+
className,
|
|
205
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
206
|
+
className: cn("flex items-start gap-2.5 touch-manipulation group/toggle"),
|
|
207
|
+
children: [
|
|
208
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Switch, {
|
|
209
|
+
id: switchId,
|
|
210
|
+
"aria-describedby": description ? descId : void 0,
|
|
211
|
+
checked,
|
|
212
|
+
onCheckedChange,
|
|
213
|
+
disabled,
|
|
214
|
+
className: "mt-0.5"
|
|
215
|
+
}),
|
|
216
|
+
icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
|
|
217
|
+
htmlFor: switchId,
|
|
218
|
+
className: cn("text-muted-foreground shrink-0 self-start", cursorClass),
|
|
219
|
+
children: icon
|
|
220
|
+
}),
|
|
221
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
222
|
+
className: "flex-1 min-w-0",
|
|
223
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
224
|
+
className: "flex items-center gap-2",
|
|
225
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
|
|
226
|
+
htmlFor: switchId,
|
|
227
|
+
className: cn("font-medium select-none", disabled && "text-muted-foreground", cursorClass),
|
|
228
|
+
children: label
|
|
229
|
+
}), badge]
|
|
230
|
+
}), description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
|
|
231
|
+
htmlFor: switchId,
|
|
232
|
+
id: descId,
|
|
233
|
+
className: cn("block text-sm font-normal text-muted-foreground mt-1 text-pretty select-none", cursorClass),
|
|
234
|
+
children: description
|
|
235
|
+
})]
|
|
236
|
+
})
|
|
237
|
+
]
|
|
238
|
+
}), children]
|
|
239
|
+
});
|
|
240
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
241
|
+
className: cn("space-y-3", className),
|
|
242
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
243
|
+
className: "flex items-center justify-between gap-4",
|
|
244
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
|
|
245
|
+
htmlFor: switchId,
|
|
246
|
+
className: cn("text-sm font-medium select-none", cursorClass),
|
|
247
|
+
children: label
|
|
248
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
249
|
+
className: "flex items-center gap-2 shrink-0",
|
|
250
|
+
children: [onSettings && checked && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
|
|
251
|
+
variant: "ghost",
|
|
252
|
+
size: "icon-xs",
|
|
253
|
+
onClick: onSettings,
|
|
254
|
+
className: "text-muted-foreground hover:text-foreground",
|
|
255
|
+
"aria-label": "Configure",
|
|
256
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hugeicons_react.HugeiconsIcon, {
|
|
257
|
+
icon: _hugeicons_core_free_icons.Setting07Icon,
|
|
258
|
+
size: 14
|
|
259
|
+
})
|
|
260
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Switch, {
|
|
261
|
+
id: switchId,
|
|
262
|
+
"aria-describedby": description ? descId : void 0,
|
|
263
|
+
checked,
|
|
264
|
+
onCheckedChange,
|
|
265
|
+
disabled
|
|
266
|
+
})]
|
|
267
|
+
})]
|
|
268
|
+
}), description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
|
|
269
|
+
htmlFor: switchId,
|
|
270
|
+
id: descId,
|
|
271
|
+
className: cn("block text-sm font-normal text-muted-foreground mt-0.5 text-pretty select-none", cursorClass),
|
|
272
|
+
children: description
|
|
273
|
+
})] }), checked && children && children]
|
|
274
|
+
});
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
//#endregion
|
|
278
|
+
Object.defineProperty(exports, 'Button', {
|
|
279
|
+
enumerable: true,
|
|
280
|
+
get: function () {
|
|
281
|
+
return Button;
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
Object.defineProperty(exports, 'Input', {
|
|
285
|
+
enumerable: true,
|
|
286
|
+
get: function () {
|
|
287
|
+
return Input;
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
Object.defineProperty(exports, 'Label', {
|
|
291
|
+
enumerable: true,
|
|
292
|
+
get: function () {
|
|
293
|
+
return Label;
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
Object.defineProperty(exports, 'Switch', {
|
|
297
|
+
enumerable: true,
|
|
298
|
+
get: function () {
|
|
299
|
+
return Switch;
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
Object.defineProperty(exports, 'ToggleRow', {
|
|
303
|
+
enumerable: true,
|
|
304
|
+
get: function () {
|
|
305
|
+
return ToggleRow;
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
Object.defineProperty(exports, 'buttonVariants', {
|
|
309
|
+
enumerable: true,
|
|
310
|
+
get: function () {
|
|
311
|
+
return buttonVariants;
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
Object.defineProperty(exports, 'cn', {
|
|
315
|
+
enumerable: true,
|
|
316
|
+
get: function () {
|
|
317
|
+
return cn;
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
//# sourceMappingURL=toggle-row-7lfPUutt.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggle-row-7lfPUutt.cjs","names":["Slot","shaderDefaults: Required<ShaderBorderConfig>","AnimatePresence","motion","PulsingBorder","Root","Root","Thumb","HugeiconsIcon","Setting07Icon"],"sources":["../src/lib/utils.ts","../src/components/ui/button/button.tsx","../src/components/ui/input/input.tsx","../src/components/ui/label/label.tsx","../src/components/ui/switch/switch.tsx","../src/components/toggle-row/toggle-row.tsx"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs));\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 buttonVariants = cva(\n \"relative isolate inline-flex items-center justify-center gap-1.5 whitespace-nowrap select-none text-[13px] font-medium leading-[calc(18/13)] touch-manipulation transition-[background-color,color,opacity,box-shadow,transform,filter,scale] duration-150 ease active:scale-[0.96] cursor-pointer border-0 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\",\n {\n defaultVariants: {\n size: 'default',\n variant: 'default',\n },\n variants: {\n size: {\n default: \"rounded-md px-3 py-1.5 h-8 has-[>svg]:px-2.5 [&_svg:not([class*='size-'])]:size-3.5\",\n \"icon\": 'size-9 rounded-md',\n \"icon-sm\": \"size-7 rounded-md [&_svg:not([class*='size-'])]:size-3.5 relative before:absolute before:-inset-[6px] before:content-['']\",\n \"icon-xs\": \"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3 relative before:absolute before:-inset-[9px] before:content-['']\",\n lg: \"rounded-md px-5 py-2.5 h-10 has-[>svg]:px-4 [&_svg:not([class*='size-'])]:size-4\",\n sm: \"rounded-md px-2.5 py-1 h-7 has-[>svg]:px-2 [&_svg:not([class*='size-'])]:size-3 before:absolute before:-inset-y-[6px] before:inset-x-0 before:content-['']\",\n xs: \"rounded-md px-3 py-1 h-7 [&_svg:not([class*='size-'])]:size-3\",\n },\n variant: {\n default:\n 'bg-(--action) text-white shadow-[0_0_0_1px_var(--action),var(--shadow-button)] hover:brightness-105 [text-shadow:0_1px_1px_rgba(0,0,0,0.16)]',\n destructive:\n 'bg-destructive text-white shadow-[0_0_0_1px_var(--destructive),var(--shadow-button)] hover:brightness-105 [text-shadow:0_1px_1px_rgba(0,0,0,0.16)] focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40',\n ghost:\n 'text-muted-foreground hover:bg-[#f8f8f9] hover:text-foreground dark:hover:bg-white/[0.06]',\n link: 'text-(--action) underline-offset-4 hover:underline',\n outline:\n 'bg-white shadow-[var(--shadow-input)] hover:bg-[#f8f8f9] hover:shadow-[var(--shadow-input-hover)] dark:bg-input/30 dark:hover:bg-white/[0.06]',\n secondary:\n 'bg-white shadow-[var(--shadow-secondary)] hover:bg-[#f8f8f9] hover:shadow-[var(--shadow-secondary-hover)] dark:bg-input/30 dark:hover:bg-white/[0.06]',\n },\n },\n },\n);\n\nconst Button = ({\n className,\n variant = 'default',\n size = 'default',\n asChild = false,\n ...props\n}: ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }) => {\n if (asChild) {\n return (\n <Slot\n data-slot='button'\n data-size={size}\n data-variant={variant}\n className={cn(buttonVariants({ className, size, variant }))}\n {...props}\n />\n );\n }\n\n return (\n <button\n data-slot='button'\n data-size={size}\n data-variant={variant}\n className={cn(buttonVariants({ className, size, variant }))}\n {...props}\n />\n );\n};\n\nexport { Button, buttonVariants };\n","'use client';\n\nimport type { ComponentProps } from 'react';\nimport { forwardRef } from 'react';\nimport { AnimatePresence, motion, useReducedMotion } from 'motion/react';\nimport { PulsingBorder } from '@paper-design/shaders-react';\n\nimport { cn } from '../../../lib/utils';\n\ntype ShaderBorderConfig = {\n bloom?: number;\n colors?: string[];\n inset?: number;\n intensity?: number;\n pulse?: number;\n roundness?: number;\n scale?: number;\n smoke?: number;\n smokeSize?: number;\n softness?: number;\n speed?: number;\n spotSize?: number;\n spots?: number;\n thickness?: number;\n};\n\nconst shaderDefaults: Required<ShaderBorderConfig> = {\n bloom: 0,\n colors: ['#BDDCFF', '#57A7FF', '#DEEAFC'],\n inset: 1,\n intensity: 0,\n pulse: 0.3,\n roundness: 0.6,\n scale: 1,\n smoke: 0.75,\n smokeSize: 0.7,\n softness: 0.6,\n speed: 2.2,\n spots: 8,\n spotSize: 0.75,\n thickness: 0.04,\n};\n\nconst spring = { bounce: 0, duration: 0.35, type: 'spring' as const };\n\ntype InputProps = ComponentProps<'input'> & {\n shaderBorder?: boolean | ShaderBorderConfig;\n};\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, shaderBorder, style, ...props }, ref) => {\n const prefersReducedMotion = useReducedMotion();\n const inputClassName = cn(\n 'file:text-foreground placeholder:text-muted-foreground/60 selection:bg-primary selection:text-primary-foreground dark:bg-input/30 h-8 w-full min-w-0 touch-manipulation rounded-md border-0 bg-background px-3 py-1 text-base shadow-[var(--shadow-input)] transition-[color,box-shadow] duration-100 ease-out outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-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)] dark:aria-invalid:shadow-[0_0_0_1px_var(--destructive)]',\n className,\n );\n\n const isActive = !!shaderBorder;\n const config =\n typeof shaderBorder === 'object'\n ? { ...shaderDefaults, ...shaderBorder }\n : shaderDefaults;\n const inset = config.inset;\n\n if (shaderBorder !== undefined) {\n return (\n <div className='relative'>\n <AnimatePresence initial={false}>\n {isActive && (\n <motion.div\n key='shader-border'\n initial={prefersReducedMotion ? false : { opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={prefersReducedMotion ? { duration: 0 } : spring}\n className='absolute pointer-events-none z-20'\n style={{\n borderRadius: `${8 + inset}px`,\n inset: `-${inset}px`,\n willChange: 'opacity',\n }}\n >\n <PulsingBorder\n colorBack='#00000000'\n colors={config.colors}\n speed={config.speed}\n scale={config.scale}\n roundness={config.roundness}\n thickness={config.thickness}\n softness={config.softness}\n intensity={config.intensity}\n bloom={config.bloom}\n spots={config.spots}\n spotSize={config.spotSize}\n pulse={config.pulse}\n smoke={config.smoke}\n smokeSize={config.smokeSize}\n webGlContextAttributes={{\n alpha: true,\n premultipliedAlpha: true,\n }}\n className='size-full'\n style={{ borderRadius: `${8 + inset}px` }}\n />\n </motion.div>\n )}\n </AnimatePresence>\n <input\n ref={ref}\n type={type}\n data-slot='input'\n className={cn(\n inputClassName,\n isActive && 'animate-shimmer motion-reduce:animate-none',\n )}\n style={\n isActive\n ? {\n backgroundClip: 'text',\n backgroundImage: `linear-gradient(to right, color-mix(in srgb, ${config.colors[0]} 70%, #000), color-mix(in srgb, ${config.colors[1] || config.colors[0]} 70%, #000), color-mix(in srgb, ${config.colors[2] || config.colors[0]} 70%, #000), color-mix(in srgb, ${config.colors[0]} 70%, #000))`,\n backgroundSize: '200% 100%',\n boxShadow: 'none',\n color: 'transparent',\n WebkitBackgroundClip: 'text',\n ...style,\n }\n : style\n }\n {...props}\n />\n </div>\n );\n }\n\n return (\n <input\n ref={ref}\n type={type}\n data-slot='input'\n className={inputClassName}\n style={style}\n {...props}\n />\n );\n },\n);\nInput.displayName = 'Input';\n\nexport { Input };\nexport type { ShaderBorderConfig };\n","'use client';\n\nimport type { ComponentPropsWithoutRef, ComponentRef} from 'react';\nimport { forwardRef } from 'react';\nimport { Root } from '@radix-ui/react-label';\nimport { type VariantProps, cva } from 'class-variance-authority';\n\nimport { cn } from '../../../lib/utils';\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n);\n\nconst Label = forwardRef<\n ComponentRef<typeof Root>,\n ComponentPropsWithoutRef<typeof Root> & VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n));\nLabel.displayName = Root.displayName;\n\nexport { Label };\n","'use client';\n\nimport type { ComponentPropsWithoutRef, ComponentRef } from 'react';\nimport { forwardRef } from 'react';\nimport { Root, Thumb } from '@radix-ui/react-switch';\n\nimport { cn } from '../../../lib/utils';\n\nconst Switch = forwardRef<\n ComponentRef<typeof Root>,\n ComponentPropsWithoutRef<typeof Root> & {\n size?: 'sm' | 'default';\n }\n>(({ className, size = 'default', ...props }, ref) => (\n <Root\n ref={ref}\n data-slot='switch'\n data-size={size}\n className={cn(\n \"peer data-[state=checked]:bg-(--action) data-[state=unchecked]:bg-input hover:data-[state=unchecked]:bg-[rgba(31,41,55,0.14)] group-hover/toggle:data-[state=unchecked]:bg-[rgba(31,41,55,0.14)] focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 dark:hover:data-[state=unchecked]:bg-[rgba(255,255,255,0.12)] dark:group-hover/toggle:data-[state=unchecked]:bg-[rgba(255,255,255,0.12)] relative group/switch inline-flex shrink-0 touch-manipulation items-center rounded-full 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)] transition-[color,background-color,box-shadow] duration-200 ease outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer data-[size=default]:h-[18px] data-[size=default]:w-[30px] data-[size=sm]:h-3.5 data-[size=sm]:w-[22px] before:absolute before:-inset-[13px] before:content-['']\",\n className,\n )}\n {...props}\n >\n <Thumb\n data-slot='switch-thumb'\n className={cn(\n \"bg-background dark:data-[state=checked]:bg-white dark:data-[state=unchecked]:bg-[oklch(0.500_0.013_253)] pointer-events-none block rounded-full shadow-[0_2px_2px_-1px_rgba(0,0,0,0.06),0_0_0_1px_rgba(0,0,0,0.06),0_4px_4px_-2px_rgba(0,0,0,0.06)] dark:shadow-[0_2px_2px_-1px_rgba(0,0,0,0.20),0_0_0_1px_rgba(0,0,0,0.15),0_4px_4px_-2px_rgba(0,0,0,0.15)] ring-0 transition-[transform,background-color] duration-150 ease group-data-[size=default]/switch:size-3.5 group-data-[size=sm]/switch:size-2.5 data-[state=unchecked]:translate-x-0.5 group-data-[size=default]/switch:data-[state=checked]:translate-x-[14px] group-data-[size=sm]/switch:data-[state=checked]:translate-x-[10px]\",\n )}\n />\n </Root>\n));\nSwitch.displayName = 'Switch';\n\nexport { Switch };\n","'use client'\n\nimport { type ReactNode, useId } from 'react'\nimport { HugeiconsIcon } from '@hugeicons/react'\nimport { Setting07Icon } from '@hugeicons/core-free-icons'\n\nimport { Switch } from '../ui/switch'\nimport { Button } from '../ui/button'\nimport { cn } from '../../lib/utils'\n\nexport interface ToggleRowProps {\n badge?: ReactNode,\n checked: boolean,\n children?: ReactNode,\n className?: string,\n description?: string,\n disabled?: boolean,\n icon?: ReactNode\n label: string,\n onCheckedChange: (checked: boolean) => void,\n onSettings?: () => void,\n switchPosition?: 'left' | 'right'\n}\n\nexport const ToggleRow = ({\n label,\n description,\n checked,\n onCheckedChange,\n disabled = false,\n switchPosition = 'left',\n icon,\n badge,\n onSettings,\n children,\n className,\n}: ToggleRowProps) => {\n const switchId = useId()\n const descId = useId()\n\n const cursorClass = disabled ? 'cursor-not-allowed' : 'cursor-pointer'\n\n if (switchPosition === 'left') {\n return (\n <div className={className}>\n <div className={cn('flex items-start gap-2.5 touch-manipulation group/toggle')}>\n <Switch\n id={switchId}\n aria-describedby={description ? descId : undefined}\n checked={checked}\n onCheckedChange={onCheckedChange}\n disabled={disabled}\n className='mt-0.5'\n />\n {icon && (\n <label\n htmlFor={switchId}\n className={cn('text-muted-foreground shrink-0 self-start', cursorClass)}\n >\n {icon}\n </label>\n )}\n <div className='flex-1 min-w-0'>\n <div className='flex items-center gap-2'>\n <label\n htmlFor={switchId}\n className={cn(\n 'font-medium select-none',\n disabled && 'text-muted-foreground',\n cursorClass\n )}\n >\n {label}\n </label>\n {badge}\n </div>\n {description && (\n <label\n htmlFor={switchId}\n id={descId}\n className={cn(\n 'block text-sm font-normal text-muted-foreground mt-1 text-pretty select-none',\n cursorClass\n )}\n >\n {description}\n </label>\n )}\n </div>\n </div>\n {children}\n </div>\n )\n }\n\n // switchPosition === \"right\"\n return (\n <div className={cn('space-y-3', className)}>\n <div>\n <div className='flex items-center justify-between gap-4'>\n <label\n htmlFor={switchId}\n className={cn('text-sm font-medium select-none', cursorClass)}\n >\n {label}\n </label>\n <div className='flex items-center gap-2 shrink-0'>\n {onSettings && checked && (\n <Button\n variant='ghost'\n size='icon-xs'\n onClick={onSettings}\n className='text-muted-foreground hover:text-foreground'\n aria-label='Configure'\n >\n <HugeiconsIcon icon={Setting07Icon} size={14} />\n </Button>\n )}\n <Switch\n id={switchId}\n aria-describedby={description ? descId : undefined}\n checked={checked}\n onCheckedChange={onCheckedChange}\n disabled={disabled}\n />\n </div>\n </div>\n {description && (\n <label\n htmlFor={switchId}\n id={descId}\n className={cn(\n 'block text-sm font-normal text-muted-foreground mt-0.5 text-pretty select-none',\n cursorClass\n )}\n >\n {description}\n </label>\n )}\n </div>\n {checked && children && children}\n </div>\n )\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { clsx } from "clsx";
|
|
2
|
+
import { twMerge } from "tailwind-merge";
|
|
3
|
+
import { forwardRef, useId } from "react";
|
|
4
|
+
import { AnimatePresence, motion, useReducedMotion } from "motion/react";
|
|
5
|
+
import { HugeiconsIcon } from "@hugeicons/react";
|
|
6
|
+
import { Setting07Icon } from "@hugeicons/core-free-icons";
|
|
7
|
+
import { cva } from "class-variance-authority";
|
|
8
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
9
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
import { PulsingBorder } from "@paper-design/shaders-react";
|
|
11
|
+
import { Root } from "@radix-ui/react-label";
|
|
12
|
+
import { Root as Root$1, Thumb } from "@radix-ui/react-switch";
|
|
13
|
+
|
|
14
|
+
//#region src/lib/utils.ts
|
|
15
|
+
const cn = (...inputs) => twMerge(clsx(inputs));
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region src/components/ui/button/button.tsx
|
|
19
|
+
const buttonVariants = cva("relative isolate inline-flex items-center justify-center gap-1.5 whitespace-nowrap select-none text-[13px] font-medium leading-[calc(18/13)] touch-manipulation transition-[background-color,color,opacity,box-shadow,transform,filter,scale] duration-150 ease active:scale-[0.96] cursor-pointer border-0 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40", {
|
|
20
|
+
defaultVariants: {
|
|
21
|
+
size: "default",
|
|
22
|
+
variant: "default"
|
|
23
|
+
},
|
|
24
|
+
variants: {
|
|
25
|
+
size: {
|
|
26
|
+
default: "rounded-md px-3 py-1.5 h-8 has-[>svg]:px-2.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
27
|
+
"icon": "size-9 rounded-md",
|
|
28
|
+
"icon-sm": "size-7 rounded-md [&_svg:not([class*='size-'])]:size-3.5 relative before:absolute before:-inset-[6px] before:content-['']",
|
|
29
|
+
"icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3 relative before:absolute before:-inset-[9px] before:content-['']",
|
|
30
|
+
lg: "rounded-md px-5 py-2.5 h-10 has-[>svg]:px-4 [&_svg:not([class*='size-'])]:size-4",
|
|
31
|
+
sm: "rounded-md px-2.5 py-1 h-7 has-[>svg]:px-2 [&_svg:not([class*='size-'])]:size-3 before:absolute before:-inset-y-[6px] before:inset-x-0 before:content-['']",
|
|
32
|
+
xs: "rounded-md px-3 py-1 h-7 [&_svg:not([class*='size-'])]:size-3"
|
|
33
|
+
},
|
|
34
|
+
variant: {
|
|
35
|
+
default: "bg-(--action) text-white shadow-[0_0_0_1px_var(--action),var(--shadow-button)] hover:brightness-105 [text-shadow:0_1px_1px_rgba(0,0,0,0.16)]",
|
|
36
|
+
destructive: "bg-destructive text-white shadow-[0_0_0_1px_var(--destructive),var(--shadow-button)] hover:brightness-105 [text-shadow:0_1px_1px_rgba(0,0,0,0.16)] focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
|
|
37
|
+
ghost: "text-muted-foreground hover:bg-[#f8f8f9] hover:text-foreground dark:hover:bg-white/[0.06]",
|
|
38
|
+
link: "text-(--action) underline-offset-4 hover:underline",
|
|
39
|
+
outline: "bg-white shadow-[var(--shadow-input)] hover:bg-[#f8f8f9] hover:shadow-[var(--shadow-input-hover)] dark:bg-input/30 dark:hover:bg-white/[0.06]",
|
|
40
|
+
secondary: "bg-white shadow-[var(--shadow-secondary)] hover:bg-[#f8f8f9] hover:shadow-[var(--shadow-secondary-hover)] dark:bg-input/30 dark:hover:bg-white/[0.06]"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
const Button = ({ className, variant = "default", size = "default", asChild = false, ...props }) => {
|
|
45
|
+
if (asChild) return /* @__PURE__ */ jsx(Slot, {
|
|
46
|
+
"data-slot": "button",
|
|
47
|
+
"data-size": size,
|
|
48
|
+
"data-variant": variant,
|
|
49
|
+
className: cn(buttonVariants({
|
|
50
|
+
className,
|
|
51
|
+
size,
|
|
52
|
+
variant
|
|
53
|
+
})),
|
|
54
|
+
...props
|
|
55
|
+
});
|
|
56
|
+
return /* @__PURE__ */ jsx("button", {
|
|
57
|
+
"data-slot": "button",
|
|
58
|
+
"data-size": size,
|
|
59
|
+
"data-variant": variant,
|
|
60
|
+
className: cn(buttonVariants({
|
|
61
|
+
className,
|
|
62
|
+
size,
|
|
63
|
+
variant
|
|
64
|
+
})),
|
|
65
|
+
...props
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
//#endregion
|
|
70
|
+
//#region src/components/ui/input/input.tsx
|
|
71
|
+
const shaderDefaults = {
|
|
72
|
+
bloom: 0,
|
|
73
|
+
colors: [
|
|
74
|
+
"#BDDCFF",
|
|
75
|
+
"#57A7FF",
|
|
76
|
+
"#DEEAFC"
|
|
77
|
+
],
|
|
78
|
+
inset: 1,
|
|
79
|
+
intensity: 0,
|
|
80
|
+
pulse: .3,
|
|
81
|
+
roundness: .6,
|
|
82
|
+
scale: 1,
|
|
83
|
+
smoke: .75,
|
|
84
|
+
smokeSize: .7,
|
|
85
|
+
softness: .6,
|
|
86
|
+
speed: 2.2,
|
|
87
|
+
spots: 8,
|
|
88
|
+
spotSize: .75,
|
|
89
|
+
thickness: .04
|
|
90
|
+
};
|
|
91
|
+
const spring = {
|
|
92
|
+
bounce: 0,
|
|
93
|
+
duration: .35,
|
|
94
|
+
type: "spring"
|
|
95
|
+
};
|
|
96
|
+
const Input = forwardRef(({ className, type, shaderBorder, style, ...props }, ref) => {
|
|
97
|
+
const prefersReducedMotion = useReducedMotion();
|
|
98
|
+
const inputClassName = cn("file:text-foreground placeholder:text-muted-foreground/60 selection:bg-primary selection:text-primary-foreground dark:bg-input/30 h-8 w-full min-w-0 touch-manipulation rounded-md border-0 bg-background px-3 py-1 text-base shadow-[var(--shadow-input)] transition-[color,box-shadow] duration-100 ease-out outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "hover:shadow-[var(--shadow-input-hover)]", "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),0_0_1px_0_var(--destructive)] dark:aria-invalid:shadow-[0_0_0_1px_var(--destructive)]", className);
|
|
99
|
+
const isActive = !!shaderBorder;
|
|
100
|
+
const config = typeof shaderBorder === "object" ? {
|
|
101
|
+
...shaderDefaults,
|
|
102
|
+
...shaderBorder
|
|
103
|
+
} : shaderDefaults;
|
|
104
|
+
const inset = config.inset;
|
|
105
|
+
if (shaderBorder !== void 0) return /* @__PURE__ */ jsxs("div", {
|
|
106
|
+
className: "relative",
|
|
107
|
+
children: [/* @__PURE__ */ jsx(AnimatePresence, {
|
|
108
|
+
initial: false,
|
|
109
|
+
children: isActive && /* @__PURE__ */ jsx(motion.div, {
|
|
110
|
+
initial: prefersReducedMotion ? false : { opacity: 0 },
|
|
111
|
+
animate: { opacity: 1 },
|
|
112
|
+
exit: { opacity: 0 },
|
|
113
|
+
transition: prefersReducedMotion ? { duration: 0 } : spring,
|
|
114
|
+
className: "absolute pointer-events-none z-20",
|
|
115
|
+
style: {
|
|
116
|
+
borderRadius: `${8 + inset}px`,
|
|
117
|
+
inset: `-${inset}px`,
|
|
118
|
+
willChange: "opacity"
|
|
119
|
+
},
|
|
120
|
+
children: /* @__PURE__ */ jsx(PulsingBorder, {
|
|
121
|
+
colorBack: "#00000000",
|
|
122
|
+
colors: config.colors,
|
|
123
|
+
speed: config.speed,
|
|
124
|
+
scale: config.scale,
|
|
125
|
+
roundness: config.roundness,
|
|
126
|
+
thickness: config.thickness,
|
|
127
|
+
softness: config.softness,
|
|
128
|
+
intensity: config.intensity,
|
|
129
|
+
bloom: config.bloom,
|
|
130
|
+
spots: config.spots,
|
|
131
|
+
spotSize: config.spotSize,
|
|
132
|
+
pulse: config.pulse,
|
|
133
|
+
smoke: config.smoke,
|
|
134
|
+
smokeSize: config.smokeSize,
|
|
135
|
+
webGlContextAttributes: {
|
|
136
|
+
alpha: true,
|
|
137
|
+
premultipliedAlpha: true
|
|
138
|
+
},
|
|
139
|
+
className: "size-full",
|
|
140
|
+
style: { borderRadius: `${8 + inset}px` }
|
|
141
|
+
})
|
|
142
|
+
}, "shader-border")
|
|
143
|
+
}), /* @__PURE__ */ jsx("input", {
|
|
144
|
+
ref,
|
|
145
|
+
type,
|
|
146
|
+
"data-slot": "input",
|
|
147
|
+
className: cn(inputClassName, isActive && "animate-shimmer motion-reduce:animate-none"),
|
|
148
|
+
style: isActive ? {
|
|
149
|
+
backgroundClip: "text",
|
|
150
|
+
backgroundImage: `linear-gradient(to right, color-mix(in srgb, ${config.colors[0]} 70%, #000), color-mix(in srgb, ${config.colors[1] || config.colors[0]} 70%, #000), color-mix(in srgb, ${config.colors[2] || config.colors[0]} 70%, #000), color-mix(in srgb, ${config.colors[0]} 70%, #000))`,
|
|
151
|
+
backgroundSize: "200% 100%",
|
|
152
|
+
boxShadow: "none",
|
|
153
|
+
color: "transparent",
|
|
154
|
+
WebkitBackgroundClip: "text",
|
|
155
|
+
...style
|
|
156
|
+
} : style,
|
|
157
|
+
...props
|
|
158
|
+
})]
|
|
159
|
+
});
|
|
160
|
+
return /* @__PURE__ */ jsx("input", {
|
|
161
|
+
ref,
|
|
162
|
+
type,
|
|
163
|
+
"data-slot": "input",
|
|
164
|
+
className: inputClassName,
|
|
165
|
+
style,
|
|
166
|
+
...props
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
Input.displayName = "Input";
|
|
170
|
+
|
|
171
|
+
//#endregion
|
|
172
|
+
//#region src/components/ui/label/label.tsx
|
|
173
|
+
const labelVariants = cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70");
|
|
174
|
+
const Label = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Root, {
|
|
175
|
+
ref,
|
|
176
|
+
className: cn(labelVariants(), className),
|
|
177
|
+
...props
|
|
178
|
+
}));
|
|
179
|
+
Label.displayName = Root.displayName;
|
|
180
|
+
|
|
181
|
+
//#endregion
|
|
182
|
+
//#region src/components/ui/switch/switch.tsx
|
|
183
|
+
const Switch = forwardRef(({ className, size = "default", ...props }, ref) => /* @__PURE__ */ jsx(Root$1, {
|
|
184
|
+
ref,
|
|
185
|
+
"data-slot": "switch",
|
|
186
|
+
"data-size": size,
|
|
187
|
+
className: cn("peer data-[state=checked]:bg-(--action) data-[state=unchecked]:bg-input hover:data-[state=unchecked]:bg-[rgba(31,41,55,0.14)] group-hover/toggle:data-[state=unchecked]:bg-[rgba(31,41,55,0.14)] focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 dark:hover:data-[state=unchecked]:bg-[rgba(255,255,255,0.12)] dark:group-hover/toggle:data-[state=unchecked]:bg-[rgba(255,255,255,0.12)] relative group/switch inline-flex shrink-0 touch-manipulation items-center rounded-full 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)] transition-[color,background-color,box-shadow] duration-200 ease outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer data-[size=default]:h-[18px] data-[size=default]:w-[30px] data-[size=sm]:h-3.5 data-[size=sm]:w-[22px] before:absolute before:-inset-[13px] before:content-['']", className),
|
|
188
|
+
...props,
|
|
189
|
+
children: /* @__PURE__ */ jsx(Thumb, {
|
|
190
|
+
"data-slot": "switch-thumb",
|
|
191
|
+
className: cn("bg-background dark:data-[state=checked]:bg-white dark:data-[state=unchecked]:bg-[oklch(0.500_0.013_253)] pointer-events-none block rounded-full shadow-[0_2px_2px_-1px_rgba(0,0,0,0.06),0_0_0_1px_rgba(0,0,0,0.06),0_4px_4px_-2px_rgba(0,0,0,0.06)] dark:shadow-[0_2px_2px_-1px_rgba(0,0,0,0.20),0_0_0_1px_rgba(0,0,0,0.15),0_4px_4px_-2px_rgba(0,0,0,0.15)] ring-0 transition-[transform,background-color] duration-150 ease group-data-[size=default]/switch:size-3.5 group-data-[size=sm]/switch:size-2.5 data-[state=unchecked]:translate-x-0.5 group-data-[size=default]/switch:data-[state=checked]:translate-x-[14px] group-data-[size=sm]/switch:data-[state=checked]:translate-x-[10px]")
|
|
192
|
+
})
|
|
193
|
+
}));
|
|
194
|
+
Switch.displayName = "Switch";
|
|
195
|
+
|
|
196
|
+
//#endregion
|
|
197
|
+
//#region src/components/toggle-row/toggle-row.tsx
|
|
198
|
+
const ToggleRow = ({ label, description, checked, onCheckedChange, disabled = false, switchPosition = "left", icon, badge, onSettings, children, className }) => {
|
|
199
|
+
const switchId = useId();
|
|
200
|
+
const descId = useId();
|
|
201
|
+
const cursorClass = disabled ? "cursor-not-allowed" : "cursor-pointer";
|
|
202
|
+
if (switchPosition === "left") return /* @__PURE__ */ jsxs("div", {
|
|
203
|
+
className,
|
|
204
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
205
|
+
className: cn("flex items-start gap-2.5 touch-manipulation group/toggle"),
|
|
206
|
+
children: [
|
|
207
|
+
/* @__PURE__ */ jsx(Switch, {
|
|
208
|
+
id: switchId,
|
|
209
|
+
"aria-describedby": description ? descId : void 0,
|
|
210
|
+
checked,
|
|
211
|
+
onCheckedChange,
|
|
212
|
+
disabled,
|
|
213
|
+
className: "mt-0.5"
|
|
214
|
+
}),
|
|
215
|
+
icon && /* @__PURE__ */ jsx("label", {
|
|
216
|
+
htmlFor: switchId,
|
|
217
|
+
className: cn("text-muted-foreground shrink-0 self-start", cursorClass),
|
|
218
|
+
children: icon
|
|
219
|
+
}),
|
|
220
|
+
/* @__PURE__ */ jsxs("div", {
|
|
221
|
+
className: "flex-1 min-w-0",
|
|
222
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
223
|
+
className: "flex items-center gap-2",
|
|
224
|
+
children: [/* @__PURE__ */ jsx("label", {
|
|
225
|
+
htmlFor: switchId,
|
|
226
|
+
className: cn("font-medium select-none", disabled && "text-muted-foreground", cursorClass),
|
|
227
|
+
children: label
|
|
228
|
+
}), badge]
|
|
229
|
+
}), description && /* @__PURE__ */ jsx("label", {
|
|
230
|
+
htmlFor: switchId,
|
|
231
|
+
id: descId,
|
|
232
|
+
className: cn("block text-sm font-normal text-muted-foreground mt-1 text-pretty select-none", cursorClass),
|
|
233
|
+
children: description
|
|
234
|
+
})]
|
|
235
|
+
})
|
|
236
|
+
]
|
|
237
|
+
}), children]
|
|
238
|
+
});
|
|
239
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
240
|
+
className: cn("space-y-3", className),
|
|
241
|
+
children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("div", {
|
|
242
|
+
className: "flex items-center justify-between gap-4",
|
|
243
|
+
children: [/* @__PURE__ */ jsx("label", {
|
|
244
|
+
htmlFor: switchId,
|
|
245
|
+
className: cn("text-sm font-medium select-none", cursorClass),
|
|
246
|
+
children: label
|
|
247
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
248
|
+
className: "flex items-center gap-2 shrink-0",
|
|
249
|
+
children: [onSettings && checked && /* @__PURE__ */ jsx(Button, {
|
|
250
|
+
variant: "ghost",
|
|
251
|
+
size: "icon-xs",
|
|
252
|
+
onClick: onSettings,
|
|
253
|
+
className: "text-muted-foreground hover:text-foreground",
|
|
254
|
+
"aria-label": "Configure",
|
|
255
|
+
children: /* @__PURE__ */ jsx(HugeiconsIcon, {
|
|
256
|
+
icon: Setting07Icon,
|
|
257
|
+
size: 14
|
|
258
|
+
})
|
|
259
|
+
}), /* @__PURE__ */ jsx(Switch, {
|
|
260
|
+
id: switchId,
|
|
261
|
+
"aria-describedby": description ? descId : void 0,
|
|
262
|
+
checked,
|
|
263
|
+
onCheckedChange,
|
|
264
|
+
disabled
|
|
265
|
+
})]
|
|
266
|
+
})]
|
|
267
|
+
}), description && /* @__PURE__ */ jsx("label", {
|
|
268
|
+
htmlFor: switchId,
|
|
269
|
+
id: descId,
|
|
270
|
+
className: cn("block text-sm font-normal text-muted-foreground mt-0.5 text-pretty select-none", cursorClass),
|
|
271
|
+
children: description
|
|
272
|
+
})] }), checked && children && children]
|
|
273
|
+
});
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
//#endregion
|
|
277
|
+
export { Button as a, Input as i, Switch as n, buttonVariants as o, Label as r, cn as s, ToggleRow as t };
|
|
278
|
+
//# sourceMappingURL=toggle-row-B5iXNWCJ.esm.js.map
|