@dowel-ui/react 0.5.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/blocks/admin-dashboard/meta.js +31 -0
- package/dist/blocks/admin-dashboard/meta.js.map +1 -0
- package/dist/blocks/agent-console/meta.js +27 -0
- package/dist/blocks/agent-console/meta.js.map +1 -0
- package/dist/blocks/ai-dashboard/meta.js +25 -0
- package/dist/blocks/ai-dashboard/meta.js.map +1 -0
- package/dist/blocks/ai-workspace/meta.js +33 -0
- package/dist/blocks/ai-workspace/meta.js.map +1 -0
- package/dist/blocks/analytics/meta.js +24 -0
- package/dist/blocks/analytics/meta.js.map +1 -0
- package/dist/blocks/billing/meta.js +25 -0
- package/dist/blocks/billing/meta.js.map +1 -0
- package/dist/blocks/command-center/meta.js +28 -0
- package/dist/blocks/command-center/meta.js.map +1 -0
- package/dist/blocks/crm/meta.js +32 -0
- package/dist/blocks/crm/meta.js.map +1 -0
- package/dist/blocks/cta-banner/meta.js +18 -0
- package/dist/blocks/cta-banner/meta.js.map +1 -0
- package/dist/blocks/cta-centered/meta.js +18 -0
- package/dist/blocks/cta-centered/meta.js.map +1 -0
- package/dist/blocks/cta-split-image/meta.js +18 -0
- package/dist/blocks/cta-split-image/meta.js.map +1 -0
- package/dist/blocks/faq-accordion/meta.js +18 -0
- package/dist/blocks/faq-accordion/meta.js.map +1 -0
- package/dist/blocks/faq-categorized/meta.js +18 -0
- package/dist/blocks/faq-categorized/meta.js.map +1 -0
- package/dist/blocks/faq-searchable/meta.js +22 -0
- package/dist/blocks/faq-searchable/meta.js.map +1 -0
- package/dist/blocks/faq-tabbed-grid/meta.js +18 -0
- package/dist/blocks/faq-tabbed-grid/meta.js.map +1 -0
- package/dist/blocks/features-alternating/meta.js +18 -0
- package/dist/blocks/features-alternating/meta.js.map +1 -0
- package/dist/blocks/features-bento/meta.js +18 -0
- package/dist/blocks/features-bento/meta.js.map +1 -0
- package/dist/blocks/features-icon-grid/meta.js +18 -0
- package/dist/blocks/features-icon-grid/meta.js.map +1 -0
- package/dist/blocks/footer-mega/meta.js +22 -0
- package/dist/blocks/footer-mega/meta.js.map +1 -0
- package/dist/blocks/footer-minimal/meta.js +18 -0
- package/dist/blocks/footer-minimal/meta.js.map +1 -0
- package/dist/blocks/footer-newsletter/meta.js +22 -0
- package/dist/blocks/footer-newsletter/meta.js.map +1 -0
- package/dist/blocks/footer-simple/meta.js +18 -0
- package/dist/blocks/footer-simple/meta.js.map +1 -0
- package/dist/blocks/hero-grid/meta.js +18 -0
- package/dist/blocks/hero-grid/meta.js.map +1 -0
- package/dist/blocks/hero-minimal/meta.js +18 -0
- package/dist/blocks/hero-minimal/meta.js.map +1 -0
- package/dist/blocks/hero-perspective-grid/meta.js +18 -0
- package/dist/blocks/hero-perspective-grid/meta.js.map +1 -0
- package/dist/blocks/hero-product/meta.js +22 -0
- package/dist/blocks/hero-product/meta.js.map +1 -0
- package/dist/blocks/hero-split-image/meta.js +22 -0
- package/dist/blocks/hero-split-image/meta.js.map +1 -0
- package/dist/blocks/hero-spotlight/meta.js +18 -0
- package/dist/blocks/hero-spotlight/meta.js.map +1 -0
- package/dist/blocks/logo-cloud-simple/meta.js +18 -0
- package/dist/blocks/logo-cloud-simple/meta.js.map +1 -0
- package/dist/blocks/logo-grid-tooltips/meta.js +18 -0
- package/dist/blocks/logo-grid-tooltips/meta.js.map +1 -0
- package/dist/blocks/logo-links-marquee/meta.js +18 -0
- package/dist/blocks/logo-links-marquee/meta.js.map +1 -0
- package/dist/blocks/logo-marquee/meta.js +18 -0
- package/dist/blocks/logo-marquee/meta.js.map +1 -0
- package/dist/blocks/onboarding/meta.js +23 -0
- package/dist/blocks/onboarding/meta.js.map +1 -0
- package/dist/blocks/pricing-single-plan/meta.js +25 -0
- package/dist/blocks/pricing-single-plan/meta.js.map +1 -0
- package/dist/blocks/pricing-three-tier/meta.js +25 -0
- package/dist/blocks/pricing-three-tier/meta.js.map +1 -0
- package/dist/blocks/pricing-two-tier/meta.js +25 -0
- package/dist/blocks/pricing-two-tier/meta.js.map +1 -0
- package/dist/blocks/stats-grid/meta.js +18 -0
- package/dist/blocks/stats-grid/meta.js.map +1 -0
- package/dist/blocks/stats-trend-cards/meta.js +22 -0
- package/dist/blocks/stats-trend-cards/meta.js.map +1 -0
- package/dist/blocks/team-carousel/meta.js +22 -0
- package/dist/blocks/team-carousel/meta.js.map +1 -0
- package/dist/blocks/team-grid/meta.js +18 -0
- package/dist/blocks/team-grid/meta.js.map +1 -0
- package/dist/blocks/testimonial-rotator/meta.js +18 -0
- package/dist/blocks/testimonial-rotator/meta.js.map +1 -0
- package/dist/blocks/testimonial-spotlight/meta.js +22 -0
- package/dist/blocks/testimonial-spotlight/meta.js.map +1 -0
- package/dist/blocks/testimonial-star-grid/meta.js +18 -0
- package/dist/blocks/testimonial-star-grid/meta.js.map +1 -0
- package/dist/components/accordion/accordion.js +1 -1
- package/dist/components/accordion/accordion.js.map +1 -1
- package/dist/components/account-menu/account-menu.d.ts +56 -0
- package/dist/components/account-menu/account-menu.d.ts.map +1 -0
- package/dist/components/account-menu/account-menu.js +247 -0
- package/dist/components/account-menu/account-menu.js.map +1 -0
- package/dist/components/account-menu/index.d.ts +2 -0
- package/dist/components/account-menu/index.js +2 -0
- package/dist/components/account-menu/meta.js +24 -0
- package/dist/components/account-menu/meta.js.map +1 -0
- package/dist/components/action-node/action-node-spring.js +21 -0
- package/dist/components/action-node/action-node-spring.js.map +1 -0
- package/dist/components/action-node/action-node.d.ts +67 -0
- package/dist/components/action-node/action-node.d.ts.map +1 -0
- package/dist/components/action-node/action-node.js +374 -0
- package/dist/components/action-node/action-node.js.map +1 -0
- package/dist/components/action-node/index.d.ts +2 -0
- package/dist/components/action-node/index.js +2 -0
- package/dist/components/action-node/meta.js +17 -0
- package/dist/components/action-node/meta.js.map +1 -0
- package/dist/components/activity-feed/activity-feed.js +1 -1
- package/dist/components/activity-feed/activity-feed.js.map +1 -1
- package/dist/components/ai-agent-plan/ai-agent-plan.d.ts +13 -2
- package/dist/components/ai-agent-plan/ai-agent-plan.d.ts.map +1 -1
- package/dist/components/ai-agent-plan/ai-agent-plan.js +110 -43
- package/dist/components/ai-agent-plan/ai-agent-plan.js.map +1 -1
- package/dist/components/ai-agent-plan/index.d.ts +2 -2
- package/dist/components/ai-agent-plan/meta.js +1 -1
- package/dist/components/ai-agent-plan/meta.js.map +1 -1
- package/dist/components/ai-agent-status/ai-agent-status.d.ts +1 -1
- package/dist/components/ai-approval-request/ai-approval-request.d.ts +8 -1
- package/dist/components/ai-approval-request/ai-approval-request.d.ts.map +1 -1
- package/dist/components/ai-approval-request/ai-approval-request.js +67 -12
- package/dist/components/ai-approval-request/ai-approval-request.js.map +1 -1
- package/dist/components/ai-approval-request/meta.js +1 -1
- package/dist/components/ai-approval-request/meta.js.map +1 -1
- package/dist/components/ai-artifact/ai-artifact.d.ts +27 -0
- package/dist/components/ai-artifact/ai-artifact.d.ts.map +1 -0
- package/dist/components/ai-artifact/ai-artifact.js +142 -0
- package/dist/components/ai-artifact/ai-artifact.js.map +1 -0
- package/dist/components/ai-artifact/index.d.ts +2 -0
- package/dist/components/ai-artifact/index.js +2 -0
- package/dist/components/ai-artifact/meta.js +17 -0
- package/dist/components/ai-artifact/meta.js.map +1 -0
- package/dist/components/ai-branch/ai-branch.d.ts +32 -0
- package/dist/components/ai-branch/ai-branch.d.ts.map +1 -0
- package/dist/components/ai-branch/ai-branch.js +160 -0
- package/dist/components/ai-branch/ai-branch.js.map +1 -0
- package/dist/components/ai-branch/index.d.ts +2 -0
- package/dist/components/ai-branch/index.js +2 -0
- package/dist/components/ai-branch/meta.js +17 -0
- package/dist/components/ai-branch/meta.js.map +1 -0
- package/dist/components/ai-conversation/ai-conversation.d.ts +16 -4
- package/dist/components/ai-conversation/ai-conversation.d.ts.map +1 -1
- package/dist/components/ai-conversation/ai-conversation.js +78 -10
- package/dist/components/ai-conversation/ai-conversation.js.map +1 -1
- package/dist/components/ai-conversation/index.d.ts +2 -2
- package/dist/components/ai-extraction-review/ai-extraction-review.js +1 -1
- package/dist/components/ai-extraction-review/ai-extraction-review.js.map +1 -1
- package/dist/components/ai-loader/ai-loader.d.ts +22 -0
- package/dist/components/ai-loader/ai-loader.d.ts.map +1 -0
- package/dist/components/ai-loader/ai-loader.js +78 -0
- package/dist/components/ai-loader/ai-loader.js.map +1 -0
- package/dist/components/ai-loader/index.d.ts +2 -0
- package/dist/components/ai-loader/index.js +2 -0
- package/dist/components/ai-loader/meta.js +21 -0
- package/dist/components/ai-loader/meta.js.map +1 -0
- package/dist/components/ai-message/ai-message.d.ts +13 -2
- package/dist/components/ai-message/ai-message.d.ts.map +1 -1
- package/dist/components/ai-message/ai-message.js +29 -5
- package/dist/components/ai-message/ai-message.js.map +1 -1
- package/dist/components/ai-message/index.d.ts +2 -2
- package/dist/components/ai-message/index.js +2 -2
- package/dist/components/ai-message/meta.js +1 -1
- package/dist/components/ai-message/meta.js.map +1 -1
- package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
- package/dist/components/ai-prompt-input/ai-prompt-input.js +45 -26
- package/dist/components/ai-prompt-input/ai-prompt-input.js.map +1 -1
- package/dist/components/ai-reasoning/ai-reasoning.d.ts +39 -11
- package/dist/components/ai-reasoning/ai-reasoning.d.ts.map +1 -1
- package/dist/components/ai-reasoning/ai-reasoning.js +114 -10
- package/dist/components/ai-reasoning/ai-reasoning.js.map +1 -1
- package/dist/components/ai-reasoning/index.d.ts +2 -2
- package/dist/components/ai-reasoning/index.js +2 -2
- package/dist/components/ai-reasoning/meta.js +2 -2
- package/dist/components/ai-reasoning/meta.js.map +1 -1
- package/dist/components/ai-response/ai-response.d.ts +4 -0
- package/dist/components/ai-response/ai-response.d.ts.map +1 -1
- package/dist/components/ai-response/ai-response.js +7 -3
- package/dist/components/ai-response/ai-response.js.map +1 -1
- package/dist/components/ai-response/index.d.ts +2 -1
- package/dist/components/ai-response/index.js +2 -1
- package/dist/components/ai-response/meta.js +3 -3
- package/dist/components/ai-response/meta.js.map +1 -1
- package/dist/components/ai-response/response-text.d.ts +42 -0
- package/dist/components/ai-response/response-text.d.ts.map +1 -0
- package/dist/components/ai-response/response-text.js +63 -0
- package/dist/components/ai-response/response-text.js.map +1 -0
- package/dist/components/ai-sources/ai-sources.d.ts +31 -5
- package/dist/components/ai-sources/ai-sources.d.ts.map +1 -1
- package/dist/components/ai-sources/ai-sources.js +188 -47
- package/dist/components/ai-sources/ai-sources.js.map +1 -1
- package/dist/components/ai-sources/index.d.ts +2 -2
- package/dist/components/ai-sources/index.js +2 -2
- package/dist/components/ai-sources/meta.js +2 -2
- package/dist/components/ai-sources/meta.js.map +1 -1
- package/dist/components/ai-suggestions/ai-suggestions.d.ts +24 -0
- package/dist/components/ai-suggestions/ai-suggestions.d.ts.map +1 -0
- package/dist/components/ai-suggestions/ai-suggestions.js +68 -0
- package/dist/components/ai-suggestions/ai-suggestions.js.map +1 -0
- package/dist/components/ai-suggestions/index.d.ts +2 -0
- package/dist/components/ai-suggestions/index.js +2 -0
- package/dist/components/ai-suggestions/meta.js +17 -0
- package/dist/components/ai-suggestions/meta.js.map +1 -0
- package/dist/components/ai-token-usage/ai-token-usage.d.ts +40 -3
- package/dist/components/ai-token-usage/ai-token-usage.d.ts.map +1 -1
- package/dist/components/ai-token-usage/ai-token-usage.js +201 -24
- package/dist/components/ai-token-usage/ai-token-usage.js.map +1 -1
- package/dist/components/ai-token-usage/index.d.ts +2 -2
- package/dist/components/ai-token-usage/index.js +2 -2
- package/dist/components/ai-token-usage/meta.js +2 -2
- package/dist/components/ai-token-usage/meta.js.map +1 -1
- package/dist/components/ai-tool/ai-tool.d.ts +12 -1
- package/dist/components/ai-tool/ai-tool.d.ts.map +1 -1
- package/dist/components/ai-tool/ai-tool.js +83 -6
- package/dist/components/ai-tool/ai-tool.js.map +1 -1
- package/dist/components/ai-tool/meta.js +1 -1
- package/dist/components/ai-tool/meta.js.map +1 -1
- package/dist/components/alert/alert.d.ts +1 -1
- package/dist/components/animated-checklist/animated-checklist.d.ts +40 -0
- package/dist/components/animated-checklist/animated-checklist.d.ts.map +1 -0
- package/dist/components/animated-checklist/animated-checklist.js +198 -0
- package/dist/components/animated-checklist/animated-checklist.js.map +1 -0
- package/dist/components/animated-checklist/index.d.ts +2 -0
- package/dist/components/animated-checklist/index.js +2 -0
- package/dist/components/animated-checklist/meta.js +17 -0
- package/dist/components/animated-checklist/meta.js.map +1 -0
- package/dist/components/app-stack/app-stack.d.ts +40 -0
- package/dist/components/app-stack/app-stack.d.ts.map +1 -0
- package/dist/components/app-stack/app-stack.js +260 -0
- package/dist/components/app-stack/app-stack.js.map +1 -0
- package/dist/components/app-stack/index.d.ts +2 -0
- package/dist/components/app-stack/index.js +2 -0
- package/dist/components/app-stack/meta.js +17 -0
- package/dist/components/app-stack/meta.js.map +1 -0
- package/dist/components/aspect-morph/aspect-morph.d.ts +50 -0
- package/dist/components/aspect-morph/aspect-morph.d.ts.map +1 -0
- package/dist/components/aspect-morph/aspect-morph.js +171 -0
- package/dist/components/aspect-morph/aspect-morph.js.map +1 -0
- package/dist/components/aspect-morph/index.d.ts +2 -0
- package/dist/components/aspect-morph/index.js +2 -0
- package/dist/components/aspect-morph/meta.js +17 -0
- package/dist/components/aspect-morph/meta.js.map +1 -0
- package/dist/components/assignee-picker/assignee-picker-spring.js +21 -0
- package/dist/components/assignee-picker/assignee-picker-spring.js.map +1 -0
- package/dist/components/assignee-picker/assignee-picker.d.ts +47 -0
- package/dist/components/assignee-picker/assignee-picker.d.ts.map +1 -0
- package/dist/components/assignee-picker/assignee-picker.js +370 -0
- package/dist/components/assignee-picker/assignee-picker.js.map +1 -0
- package/dist/components/assignee-picker/index.d.ts +2 -0
- package/dist/components/assignee-picker/index.js +2 -0
- package/dist/components/assignee-picker/meta.js +17 -0
- package/dist/components/assignee-picker/meta.js.map +1 -0
- package/dist/components/avatar/avatar.d.ts +1 -1
- package/dist/components/avatar-group/avatar-group.d.ts +41 -0
- package/dist/components/avatar-group/avatar-group.d.ts.map +1 -0
- package/dist/components/avatar-group/avatar-group.js +103 -0
- package/dist/components/avatar-group/avatar-group.js.map +1 -0
- package/dist/components/avatar-group/index.d.ts +2 -0
- package/dist/components/avatar-group/index.js +2 -0
- package/dist/components/avatar-group/meta.js +17 -0
- package/dist/components/avatar-group/meta.js.map +1 -0
- package/dist/components/badge/badge.d.ts +1 -1
- package/dist/components/bar-loader/bar-loader.d.ts +170 -0
- package/dist/components/bar-loader/bar-loader.d.ts.map +1 -0
- package/dist/components/bar-loader/bar-loader.js +469 -0
- package/dist/components/bar-loader/bar-loader.js.map +1 -0
- package/dist/components/bar-loader/index.d.ts +2 -0
- package/dist/components/bar-loader/index.js +2 -0
- package/dist/components/bar-loader/meta.js +17 -0
- package/dist/components/bar-loader/meta.js.map +1 -0
- package/dist/components/book/book.d.ts +35 -0
- package/dist/components/book/book.d.ts.map +1 -0
- package/dist/components/book/book.js +183 -0
- package/dist/components/book/book.js.map +1 -0
- package/dist/components/book/index.d.ts +2 -0
- package/dist/components/book/index.js +2 -0
- package/dist/components/book/meta.js +17 -0
- package/dist/components/book/meta.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +60 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.js +158 -0
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/breadcrumb/index.d.ts +2 -0
- package/dist/components/breadcrumb/index.js +2 -0
- package/dist/components/breadcrumb/meta.js +17 -0
- package/dist/components/breadcrumb/meta.js.map +1 -0
- package/dist/components/browser-tabs/browser-tabs-spring.js +21 -0
- package/dist/components/browser-tabs/browser-tabs-spring.js.map +1 -0
- package/dist/components/browser-tabs/browser-tabs.d.ts +62 -0
- package/dist/components/browser-tabs/browser-tabs.d.ts.map +1 -0
- package/dist/components/browser-tabs/browser-tabs.js +418 -0
- package/dist/components/browser-tabs/browser-tabs.js.map +1 -0
- package/dist/components/browser-tabs/index.d.ts +2 -0
- package/dist/components/browser-tabs/index.js +2 -0
- package/dist/components/browser-tabs/meta.js +17 -0
- package/dist/components/browser-tabs/meta.js.map +1 -0
- package/dist/components/button/button.d.ts +4 -2
- package/dist/components/button/button.d.ts.map +1 -1
- package/dist/components/button/button.js +48 -5
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/calendar/calendar.js +2 -2
- package/dist/components/calendar/calendar.js.map +1 -1
- package/dist/components/canvas-toolbar/canvas-toolbar.d.ts +62 -0
- package/dist/components/canvas-toolbar/canvas-toolbar.d.ts.map +1 -0
- package/dist/components/canvas-toolbar/canvas-toolbar.js +256 -0
- package/dist/components/canvas-toolbar/canvas-toolbar.js.map +1 -0
- package/dist/components/canvas-toolbar/index.d.ts +2 -0
- package/dist/components/canvas-toolbar/index.js +2 -0
- package/dist/components/canvas-toolbar/meta.js +17 -0
- package/dist/components/canvas-toolbar/meta.js.map +1 -0
- package/dist/components/card-spread/card-spread-layouts.d.ts +46 -0
- package/dist/components/card-spread/card-spread-layouts.d.ts.map +1 -0
- package/dist/components/card-spread/card-spread-layouts.js +235 -0
- package/dist/components/card-spread/card-spread-layouts.js.map +1 -0
- package/dist/components/card-spread/card-spread.d.ts +52 -0
- package/dist/components/card-spread/card-spread.d.ts.map +1 -0
- package/dist/components/card-spread/card-spread.js +224 -0
- package/dist/components/card-spread/card-spread.js.map +1 -0
- package/dist/components/card-spread/index.d.ts +3 -0
- package/dist/components/card-spread/index.js +3 -0
- package/dist/components/card-spread/meta.js +17 -0
- package/dist/components/card-spread/meta.js.map +1 -0
- package/dist/components/card-stack/card-stack-layout.js +98 -0
- package/dist/components/card-stack/card-stack-layout.js.map +1 -0
- package/dist/components/card-stack/card-stack.d.ts +29 -0
- package/dist/components/card-stack/card-stack.d.ts.map +1 -0
- package/dist/components/card-stack/card-stack.js +229 -0
- package/dist/components/card-stack/card-stack.js.map +1 -0
- package/dist/components/card-stack/index.d.ts +2 -0
- package/dist/components/card-stack/index.js +2 -0
- package/dist/components/card-stack/meta.js +17 -0
- package/dist/components/card-stack/meta.js.map +1 -0
- package/dist/components/carousel-3d/carousel-3d.d.ts +43 -0
- package/dist/components/carousel-3d/carousel-3d.d.ts.map +1 -0
- package/dist/components/carousel-3d/carousel-3d.js +336 -0
- package/dist/components/carousel-3d/carousel-3d.js.map +1 -0
- package/dist/components/carousel-3d/index.d.ts +2 -0
- package/dist/components/carousel-3d/index.js +2 -0
- package/dist/components/carousel-3d/meta.js +17 -0
- package/dist/components/carousel-3d/meta.js.map +1 -0
- package/dist/components/checkbox/checkbox.d.ts.map +1 -1
- package/dist/components/checkbox/checkbox.js +18 -0
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/code-block/code-block.d.ts +1 -17
- package/dist/components/code-block/code-block.d.ts.map +1 -1
- package/dist/components/code-block/code-block.js +9 -79
- package/dist/components/code-block/code-block.js.map +1 -1
- package/dist/components/code-block/index.d.ts +3 -1
- package/dist/components/code-block/index.js +2 -1
- package/dist/components/code-block/meta.js +1 -1
- package/dist/components/code-block/meta.js.map +1 -1
- package/dist/components/collapsible/collapsible.d.ts +30 -0
- package/dist/components/collapsible/collapsible.d.ts.map +1 -0
- package/dist/components/collapsible/collapsible.js +38 -0
- package/dist/components/collapsible/collapsible.js.map +1 -0
- package/dist/components/collapsible/index.d.ts +2 -0
- package/dist/components/collapsible/index.js +2 -0
- package/dist/components/collapsible/meta.js +17 -0
- package/dist/components/collapsible/meta.js.map +1 -0
- package/dist/components/combobox/combobox.d.ts +28 -4
- package/dist/components/combobox/combobox.d.ts.map +1 -1
- package/dist/components/combobox/combobox.js +161 -66
- package/dist/components/combobox/combobox.js.map +1 -1
- package/dist/components/combobox/index.d.ts +2 -2
- package/dist/components/combobox/index.js +2 -2
- package/dist/components/combobox/meta.js +1 -1
- package/dist/components/combobox/meta.js.map +1 -1
- package/dist/components/command/command.js +1 -1
- package/dist/components/command/command.js.map +1 -1
- package/dist/components/command-bar/command-bar.d.ts +37 -0
- package/dist/components/command-bar/command-bar.d.ts.map +1 -0
- package/dist/components/command-bar/command-bar.js +91 -0
- package/dist/components/command-bar/command-bar.js.map +1 -0
- package/dist/components/command-bar/index.d.ts +2 -0
- package/dist/components/command-bar/index.js +2 -0
- package/dist/components/command-bar/meta.js +17 -0
- package/dist/components/command-bar/meta.js.map +1 -0
- package/dist/components/comment-bubble/comment-bubble.d.ts +32 -0
- package/dist/components/comment-bubble/comment-bubble.d.ts.map +1 -0
- package/dist/components/comment-bubble/comment-bubble.js +174 -0
- package/dist/components/comment-bubble/comment-bubble.js.map +1 -0
- package/dist/components/comment-bubble/index.d.ts +2 -0
- package/dist/components/comment-bubble/index.js +2 -0
- package/dist/components/comment-bubble/meta.js +17 -0
- package/dist/components/comment-bubble/meta.js.map +1 -0
- package/dist/components/context-menu/context-menu.d.ts +49 -0
- package/dist/components/context-menu/context-menu.d.ts.map +1 -0
- package/dist/components/context-menu/context-menu.js +151 -0
- package/dist/components/context-menu/context-menu.js.map +1 -0
- package/dist/components/context-menu/index.d.ts +2 -0
- package/dist/components/context-menu/index.js +2 -0
- package/dist/components/context-menu/meta.js +17 -0
- package/dist/components/context-menu/meta.js.map +1 -0
- package/dist/components/contribution-graph/contribution-graph.d.ts +37 -0
- package/dist/components/contribution-graph/contribution-graph.d.ts.map +1 -0
- package/dist/components/contribution-graph/contribution-graph.js +298 -0
- package/dist/components/contribution-graph/contribution-graph.js.map +1 -0
- package/dist/components/contribution-graph/index.d.ts +2 -0
- package/dist/components/contribution-graph/index.js +2 -0
- package/dist/components/contribution-graph/meta.js +17 -0
- package/dist/components/contribution-graph/meta.js.map +1 -0
- package/dist/components/copy-button/copy-button.d.ts +81 -0
- package/dist/components/copy-button/copy-button.d.ts.map +1 -0
- package/dist/components/copy-button/copy-button.js +146 -0
- package/dist/components/copy-button/copy-button.js.map +1 -0
- package/dist/components/copy-button/index.d.ts +2 -0
- package/dist/components/copy-button/index.js +2 -0
- package/dist/components/copy-button/meta.js +17 -0
- package/dist/components/copy-button/meta.js.map +1 -0
- package/dist/components/create-menu/create-menu.d.ts +42 -0
- package/dist/components/create-menu/create-menu.d.ts.map +1 -0
- package/dist/components/create-menu/create-menu.js +197 -0
- package/dist/components/create-menu/create-menu.js.map +1 -0
- package/dist/components/create-menu/index.d.ts +2 -0
- package/dist/components/create-menu/index.js +2 -0
- package/dist/components/create-menu/meta.js +17 -0
- package/dist/components/create-menu/meta.js.map +1 -0
- package/dist/components/cursor-follow/cursor-follow.d.ts +17 -0
- package/dist/components/cursor-follow/cursor-follow.d.ts.map +1 -0
- package/dist/components/cursor-follow/cursor-follow.js +116 -0
- package/dist/components/cursor-follow/cursor-follow.js.map +1 -0
- package/dist/components/cursor-follow/index.d.ts +2 -0
- package/dist/components/cursor-follow/index.js +2 -0
- package/dist/components/cursor-follow/meta.js +17 -0
- package/dist/components/cursor-follow/meta.js.map +1 -0
- package/dist/components/data-table/data-table.d.ts.map +1 -1
- package/dist/components/data-table/data-table.js +4 -1
- package/dist/components/data-table/data-table.js.map +1 -1
- package/dist/components/dial/dial.d.ts +32 -0
- package/dist/components/dial/dial.d.ts.map +1 -0
- package/dist/components/dial/dial.js +195 -0
- package/dist/components/dial/dial.js.map +1 -0
- package/dist/components/dial/index.d.ts +2 -0
- package/dist/components/dial/index.js +2 -0
- package/dist/components/dial/meta.js +17 -0
- package/dist/components/dial/meta.js.map +1 -0
- package/dist/components/dialog/dialog.d.ts +8 -1
- package/dist/components/dialog/dialog.d.ts.map +1 -1
- package/dist/components/dialog/dialog.js +24 -7
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/dialog/meta.js +1 -1
- package/dist/components/dialog/meta.js.map +1 -1
- package/dist/components/diff-viewer/diff-viewer.d.ts +12 -1
- package/dist/components/diff-viewer/diff-viewer.d.ts.map +1 -1
- package/dist/components/diff-viewer/diff-viewer.js +100 -28
- package/dist/components/diff-viewer/diff-viewer.js.map +1 -1
- package/dist/components/diff-viewer/meta.js +1 -1
- package/dist/components/diff-viewer/meta.js.map +1 -1
- package/dist/components/direction/direction.d.ts +35 -0
- package/dist/components/direction/direction.d.ts.map +1 -0
- package/dist/components/direction/direction.js +14 -0
- package/dist/components/direction/direction.js.map +1 -0
- package/dist/components/direction/index.d.ts +2 -0
- package/dist/components/direction/index.js +2 -0
- package/dist/components/direction/meta.js +17 -0
- package/dist/components/direction/meta.js.map +1 -0
- package/dist/components/dither-area/dither-area.d.ts +46 -0
- package/dist/components/dither-area/dither-area.d.ts.map +1 -0
- package/dist/components/dither-area/dither-area.js +186 -0
- package/dist/components/dither-area/dither-area.js.map +1 -0
- package/dist/components/dither-area/index.d.ts +2 -0
- package/dist/components/dither-area/index.js +2 -0
- package/dist/components/dither-area/meta.js +17 -0
- package/dist/components/dither-area/meta.js.map +1 -0
- package/dist/components/dither-bar/dither-bar.d.ts +47 -0
- package/dist/components/dither-bar/dither-bar.d.ts.map +1 -0
- package/dist/components/dither-bar/dither-bar.js +261 -0
- package/dist/components/dither-bar/dither-bar.js.map +1 -0
- package/dist/components/dither-bar/index.d.ts +2 -0
- package/dist/components/dither-bar/index.js +2 -0
- package/dist/components/dither-bar/meta.js +17 -0
- package/dist/components/dither-bar/meta.js.map +1 -0
- package/dist/components/dither-canvas/dither-canvas.d.ts +76 -0
- package/dist/components/dither-canvas/dither-canvas.d.ts.map +1 -0
- package/dist/components/dither-canvas/dither-canvas.js +236 -0
- package/dist/components/dither-canvas/dither-canvas.js.map +1 -0
- package/dist/components/dither-canvas/dither-engine.d.ts +132 -0
- package/dist/components/dither-canvas/dither-engine.d.ts.map +1 -0
- package/dist/components/dither-canvas/dither-engine.js +243 -0
- package/dist/components/dither-canvas/dither-engine.js.map +1 -0
- package/dist/components/dither-canvas/dither-geometry.d.ts +73 -0
- package/dist/components/dither-canvas/dither-geometry.d.ts.map +1 -0
- package/dist/components/dither-canvas/dither-geometry.js +205 -0
- package/dist/components/dither-canvas/dither-geometry.js.map +1 -0
- package/dist/components/dither-canvas/dither-scrubber.d.ts +64 -0
- package/dist/components/dither-canvas/dither-scrubber.d.ts.map +1 -0
- package/dist/components/dither-canvas/dither-scrubber.js +130 -0
- package/dist/components/dither-canvas/dither-scrubber.js.map +1 -0
- package/dist/components/dither-canvas/index.d.ts +5 -0
- package/dist/components/dither-canvas/index.js +5 -0
- package/dist/components/dither-canvas/meta.js +22 -0
- package/dist/components/dither-canvas/meta.js.map +1 -0
- package/dist/components/dither-donut/dither-donut.d.ts +46 -0
- package/dist/components/dither-donut/dither-donut.d.ts.map +1 -0
- package/dist/components/dither-donut/dither-donut.js +241 -0
- package/dist/components/dither-donut/dither-donut.js.map +1 -0
- package/dist/components/dither-donut/index.d.ts +2 -0
- package/dist/components/dither-donut/index.js +2 -0
- package/dist/components/dither-donut/meta.js +17 -0
- package/dist/components/dither-donut/meta.js.map +1 -0
- package/dist/components/dither-funnel/dither-funnel.d.ts +53 -0
- package/dist/components/dither-funnel/dither-funnel.d.ts.map +1 -0
- package/dist/components/dither-funnel/dither-funnel.js +176 -0
- package/dist/components/dither-funnel/dither-funnel.js.map +1 -0
- package/dist/components/dither-funnel/index.d.ts +2 -0
- package/dist/components/dither-funnel/index.js +2 -0
- package/dist/components/dither-funnel/meta.js +17 -0
- package/dist/components/dither-funnel/meta.js.map +1 -0
- package/dist/components/dither-gauge/dither-gauge.d.ts +48 -0
- package/dist/components/dither-gauge/dither-gauge.d.ts.map +1 -0
- package/dist/components/dither-gauge/dither-gauge.js +189 -0
- package/dist/components/dither-gauge/dither-gauge.js.map +1 -0
- package/dist/components/dither-gauge/index.d.ts +2 -0
- package/dist/components/dither-gauge/index.js +2 -0
- package/dist/components/dither-gauge/meta.js +17 -0
- package/dist/components/dither-gauge/meta.js.map +1 -0
- package/dist/components/dither-heatmap/dither-heatmap.d.ts +63 -0
- package/dist/components/dither-heatmap/dither-heatmap.d.ts.map +1 -0
- package/dist/components/dither-heatmap/dither-heatmap.js +298 -0
- package/dist/components/dither-heatmap/dither-heatmap.js.map +1 -0
- package/dist/components/dither-heatmap/index.d.ts +2 -0
- package/dist/components/dither-heatmap/index.js +2 -0
- package/dist/components/dither-heatmap/meta.js +17 -0
- package/dist/components/dither-heatmap/meta.js.map +1 -0
- package/dist/components/dither-line/dither-line.d.ts +41 -0
- package/dist/components/dither-line/dither-line.d.ts.map +1 -0
- package/dist/components/dither-line/dither-line.js +164 -0
- package/dist/components/dither-line/dither-line.js.map +1 -0
- package/dist/components/dither-line/index.d.ts +2 -0
- package/dist/components/dither-line/index.js +2 -0
- package/dist/components/dither-line/meta.js +17 -0
- package/dist/components/dither-line/meta.js.map +1 -0
- package/dist/components/dither-meter/dither-meter.d.ts +51 -0
- package/dist/components/dither-meter/dither-meter.d.ts.map +1 -0
- package/dist/components/dither-meter/dither-meter.js +211 -0
- package/dist/components/dither-meter/dither-meter.js.map +1 -0
- package/dist/components/dither-meter/index.d.ts +2 -0
- package/dist/components/dither-meter/index.js +2 -0
- package/dist/components/dither-meter/meta.js +17 -0
- package/dist/components/dither-meter/meta.js.map +1 -0
- package/dist/components/dither-scatter/dither-scatter.d.ts +53 -0
- package/dist/components/dither-scatter/dither-scatter.d.ts.map +1 -0
- package/dist/components/dither-scatter/dither-scatter.js +211 -0
- package/dist/components/dither-scatter/dither-scatter.js.map +1 -0
- package/dist/components/dither-scatter/index.d.ts +2 -0
- package/dist/components/dither-scatter/index.js +2 -0
- package/dist/components/dither-scatter/meta.js +17 -0
- package/dist/components/dither-scatter/meta.js.map +1 -0
- package/dist/components/dot-morph-button/dot-morph-button.d.ts +18 -0
- package/dist/components/dot-morph-button/dot-morph-button.d.ts.map +1 -0
- package/dist/components/dot-morph-button/dot-morph-button.js +43 -0
- package/dist/components/dot-morph-button/dot-morph-button.js.map +1 -0
- package/dist/components/dot-morph-button/index.d.ts +2 -0
- package/dist/components/dot-morph-button/index.js +2 -0
- package/dist/components/dot-morph-button/meta.js +17 -0
- package/dist/components/dot-morph-button/meta.js.map +1 -0
- package/dist/components/dots-loader/dots-loader.d.ts +186 -0
- package/dist/components/dots-loader/dots-loader.d.ts.map +1 -0
- package/dist/components/dots-loader/dots-loader.js +412 -0
- package/dist/components/dots-loader/dots-loader.js.map +1 -0
- package/dist/components/dots-loader/index.d.ts +2 -0
- package/dist/components/dots-loader/index.js +2 -0
- package/dist/components/dots-loader/meta.js +17 -0
- package/dist/components/dots-loader/meta.js.map +1 -0
- package/dist/components/drag-stepper/drag-stepper.d.ts +39 -0
- package/dist/components/drag-stepper/drag-stepper.d.ts.map +1 -0
- package/dist/components/drag-stepper/drag-stepper.js +232 -0
- package/dist/components/drag-stepper/drag-stepper.js.map +1 -0
- package/dist/components/drag-stepper/index.d.ts +2 -0
- package/dist/components/drag-stepper/index.js +2 -0
- package/dist/components/drag-stepper/meta.js +17 -0
- package/dist/components/drag-stepper/meta.js.map +1 -0
- package/dist/components/drawer/drawer.d.ts +9 -1
- package/dist/components/drawer/drawer.d.ts.map +1 -1
- package/dist/components/drawer/drawer.js +24 -5
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/drawer/meta.js +1 -1
- package/dist/components/drawer/meta.js.map +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.d.ts +5 -0
- package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.js +34 -13
- package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/components/dropdown-menu/meta.js +1 -1
- package/dist/components/dropdown-menu/meta.js.map +1 -1
- package/dist/components/effect-button/effect-button.d.ts +28 -0
- package/dist/components/effect-button/effect-button.d.ts.map +1 -0
- package/dist/components/effect-button/effect-button.js +176 -0
- package/dist/components/effect-button/effect-button.js.map +1 -0
- package/dist/components/effect-button/index.d.ts +2 -0
- package/dist/components/effect-button/index.js +2 -0
- package/dist/components/effect-button/meta.js +17 -0
- package/dist/components/effect-button/meta.js.map +1 -0
- package/dist/components/escape-button/escape-button.d.ts +25 -0
- package/dist/components/escape-button/escape-button.d.ts.map +1 -0
- package/dist/components/escape-button/escape-button.js +154 -0
- package/dist/components/escape-button/escape-button.js.map +1 -0
- package/dist/components/escape-button/index.d.ts +2 -0
- package/dist/components/escape-button/index.js +2 -0
- package/dist/components/escape-button/meta.js +17 -0
- package/dist/components/escape-button/meta.js.map +1 -0
- package/dist/components/expandable-cards/expandable-cards.d.ts +42 -0
- package/dist/components/expandable-cards/expandable-cards.d.ts.map +1 -0
- package/dist/components/expandable-cards/expandable-cards.js +312 -0
- package/dist/components/expandable-cards/expandable-cards.js.map +1 -0
- package/dist/components/expandable-cards/index.d.ts +2 -0
- package/dist/components/expandable-cards/index.js +2 -0
- package/dist/components/expandable-cards/meta.js +17 -0
- package/dist/components/expandable-cards/meta.js.map +1 -0
- package/dist/components/expandable-list/expandable-list.d.ts +35 -0
- package/dist/components/expandable-list/expandable-list.d.ts.map +1 -0
- package/dist/components/expandable-list/expandable-list.js +180 -0
- package/dist/components/expandable-list/expandable-list.js.map +1 -0
- package/dist/components/expandable-list/index.d.ts +2 -0
- package/dist/components/expandable-list/index.js +2 -0
- package/dist/components/expandable-list/meta.js +21 -0
- package/dist/components/expandable-list/meta.js.map +1 -0
- package/dist/components/expanding-search/expanding-search.d.ts +30 -0
- package/dist/components/expanding-search/expanding-search.d.ts.map +1 -0
- package/dist/components/expanding-search/expanding-search.js +141 -0
- package/dist/components/expanding-search/expanding-search.js.map +1 -0
- package/dist/components/expanding-search/index.d.ts +2 -0
- package/dist/components/expanding-search/index.js +2 -0
- package/dist/components/expanding-search/meta.js +17 -0
- package/dist/components/expanding-search/meta.js.map +1 -0
- package/dist/components/exposure-slider/exposure-slider.d.ts +33 -0
- package/dist/components/exposure-slider/exposure-slider.d.ts.map +1 -0
- package/dist/components/exposure-slider/exposure-slider.js +227 -0
- package/dist/components/exposure-slider/exposure-slider.js.map +1 -0
- package/dist/components/exposure-slider/index.d.ts +2 -0
- package/dist/components/exposure-slider/index.js +2 -0
- package/dist/components/exposure-slider/meta.js +17 -0
- package/dist/components/exposure-slider/meta.js.map +1 -0
- package/dist/components/file-upload/file-upload.d.ts +13 -2
- package/dist/components/file-upload/file-upload.d.ts.map +1 -1
- package/dist/components/file-upload/file-upload.js +166 -95
- package/dist/components/file-upload/file-upload.js.map +1 -1
- package/dist/components/file-upload/meta.js +1 -1
- package/dist/components/file-upload/meta.js.map +1 -1
- package/dist/components/focus-blur-links/focus-blur-links.d.ts +25 -0
- package/dist/components/focus-blur-links/focus-blur-links.d.ts.map +1 -0
- package/dist/components/focus-blur-links/focus-blur-links.js +92 -0
- package/dist/components/focus-blur-links/focus-blur-links.js.map +1 -0
- package/dist/components/focus-blur-links/index.d.ts +2 -0
- package/dist/components/focus-blur-links/index.js +2 -0
- package/dist/components/focus-blur-links/meta.js +17 -0
- package/dist/components/focus-blur-links/meta.js.map +1 -0
- package/dist/components/folding-frame/folding-frame.d.ts +38 -0
- package/dist/components/folding-frame/folding-frame.d.ts.map +1 -0
- package/dist/components/folding-frame/folding-frame.js +298 -0
- package/dist/components/folding-frame/folding-frame.js.map +1 -0
- package/dist/components/folding-frame/index.d.ts +2 -0
- package/dist/components/folding-frame/index.js +2 -0
- package/dist/components/folding-frame/meta.js +17 -0
- package/dist/components/folding-frame/meta.js.map +1 -0
- package/dist/components/form/form.d.ts +11 -2
- package/dist/components/form/form.d.ts.map +1 -1
- package/dist/components/form/form.js +55 -5
- package/dist/components/form/form.js.map +1 -1
- package/dist/components/form/meta.js +1 -1
- package/dist/components/form/meta.js.map +1 -1
- package/dist/components/glass-bubble/glass-bubble.d.ts +59 -0
- package/dist/components/glass-bubble/glass-bubble.d.ts.map +1 -0
- package/dist/components/glass-bubble/glass-bubble.js +308 -0
- package/dist/components/glass-bubble/glass-bubble.js.map +1 -0
- package/dist/components/glass-bubble/index.d.ts +2 -0
- package/dist/components/glass-bubble/index.js +2 -0
- package/dist/components/glass-bubble/meta.js +17 -0
- package/dist/components/glass-bubble/meta.js.map +1 -0
- package/dist/components/glow-card/glow-card.d.ts +34 -0
- package/dist/components/glow-card/glow-card.d.ts.map +1 -0
- package/dist/components/glow-card/glow-card.js +104 -0
- package/dist/components/glow-card/glow-card.js.map +1 -0
- package/dist/components/glow-card/index.d.ts +2 -0
- package/dist/components/glow-card/index.js +2 -0
- package/dist/components/glow-card/meta.js +17 -0
- package/dist/components/glow-card/meta.js.map +1 -0
- package/dist/components/goo-ball/goo-ball.d.ts +48 -0
- package/dist/components/goo-ball/goo-ball.d.ts.map +1 -0
- package/dist/components/goo-ball/goo-ball.js +295 -0
- package/dist/components/goo-ball/goo-ball.js.map +1 -0
- package/dist/components/goo-ball/index.d.ts +2 -0
- package/dist/components/goo-ball/index.js +2 -0
- package/dist/components/goo-ball/meta.js +21 -0
- package/dist/components/goo-ball/meta.js.map +1 -0
- package/dist/components/goo-tabs/goo-tabs.d.ts +37 -0
- package/dist/components/goo-tabs/goo-tabs.d.ts.map +1 -0
- package/dist/components/goo-tabs/goo-tabs.js +286 -0
- package/dist/components/goo-tabs/goo-tabs.js.map +1 -0
- package/dist/components/goo-tabs/index.d.ts +2 -0
- package/dist/components/goo-tabs/index.js +2 -0
- package/dist/components/goo-tabs/meta.js +17 -0
- package/dist/components/goo-tabs/meta.js.map +1 -0
- package/dist/components/gooey-popover/gooey-popover.d.ts +32 -0
- package/dist/components/gooey-popover/gooey-popover.d.ts.map +1 -0
- package/dist/components/gooey-popover/gooey-popover.js +257 -0
- package/dist/components/gooey-popover/gooey-popover.js.map +1 -0
- package/dist/components/gooey-popover/index.d.ts +2 -0
- package/dist/components/gooey-popover/index.js +2 -0
- package/dist/components/gooey-popover/meta.js +17 -0
- package/dist/components/gooey-popover/meta.js.map +1 -0
- package/dist/components/gradient-orb/gradient-orb.d.ts +39 -0
- package/dist/components/gradient-orb/gradient-orb.d.ts.map +1 -0
- package/dist/components/gradient-orb/gradient-orb.js +185 -0
- package/dist/components/gradient-orb/gradient-orb.js.map +1 -0
- package/dist/components/gradient-orb/index.d.ts +2 -0
- package/dist/components/gradient-orb/index.js +2 -0
- package/dist/components/gradient-orb/meta.js +17 -0
- package/dist/components/gradient-orb/meta.js.map +1 -0
- package/dist/components/grid-loader/grid-loader.d.ts +224 -0
- package/dist/components/grid-loader/grid-loader.d.ts.map +1 -0
- package/dist/components/grid-loader/grid-loader.js +271 -0
- package/dist/components/grid-loader/grid-loader.js.map +1 -0
- package/dist/components/grid-loader/index.d.ts +2 -0
- package/dist/components/grid-loader/index.js +2 -0
- package/dist/components/grid-loader/meta.js +17 -0
- package/dist/components/grid-loader/meta.js.map +1 -0
- package/dist/components/image-accordion/image-accordion.d.ts +40 -0
- package/dist/components/image-accordion/image-accordion.d.ts.map +1 -0
- package/dist/components/image-accordion/image-accordion.js +118 -0
- package/dist/components/image-accordion/image-accordion.js.map +1 -0
- package/dist/components/image-accordion/index.d.ts +2 -0
- package/dist/components/image-accordion/index.js +2 -0
- package/dist/components/image-accordion/meta.js +17 -0
- package/dist/components/image-accordion/meta.js.map +1 -0
- package/dist/components/image-metadata/image-metadata.d.ts +34 -0
- package/dist/components/image-metadata/image-metadata.d.ts.map +1 -0
- package/dist/components/image-metadata/image-metadata.js +178 -0
- package/dist/components/image-metadata/image-metadata.js.map +1 -0
- package/dist/components/image-metadata/index.d.ts +2 -0
- package/dist/components/image-metadata/index.js +2 -0
- package/dist/components/image-metadata/meta.js +17 -0
- package/dist/components/image-metadata/meta.js.map +1 -0
- package/dist/components/image-selector/image-selector.d.ts +37 -0
- package/dist/components/image-selector/image-selector.d.ts.map +1 -0
- package/dist/components/image-selector/image-selector.js +253 -0
- package/dist/components/image-selector/image-selector.js.map +1 -0
- package/dist/components/image-selector/index.d.ts +2 -0
- package/dist/components/image-selector/index.js +2 -0
- package/dist/components/image-selector/meta.js +17 -0
- package/dist/components/image-selector/meta.js.map +1 -0
- package/dist/components/inline-confirm/index.d.ts +2 -0
- package/dist/components/inline-confirm/index.js +2 -0
- package/dist/components/inline-confirm/inline-confirm.d.ts +38 -0
- package/dist/components/inline-confirm/inline-confirm.d.ts.map +1 -0
- package/dist/components/inline-confirm/inline-confirm.js +246 -0
- package/dist/components/inline-confirm/inline-confirm.js.map +1 -0
- package/dist/components/inline-confirm/meta.js +17 -0
- package/dist/components/inline-confirm/meta.js.map +1 -0
- package/dist/components/input/floating-label-input.d.ts +26 -0
- package/dist/components/input/floating-label-input.d.ts.map +1 -0
- package/dist/components/input/floating-label-input.js +47 -0
- package/dist/components/input/floating-label-input.js.map +1 -0
- package/dist/components/input/index.d.ts +2 -1
- package/dist/components/input/index.js +2 -1
- package/dist/components/input/input.js +1 -1
- package/dist/components/input/input.js.map +1 -1
- package/dist/components/input/meta.js +2 -2
- package/dist/components/input/meta.js.map +1 -1
- package/dist/components/invite-carousel/carousel-controls.js +189 -0
- package/dist/components/invite-carousel/carousel-controls.js.map +1 -0
- package/dist/components/invite-carousel/index.d.ts +2 -0
- package/dist/components/invite-carousel/index.js +2 -0
- package/dist/components/invite-carousel/invite-carousel.d.ts +56 -0
- package/dist/components/invite-carousel/invite-carousel.d.ts.map +1 -0
- package/dist/components/invite-carousel/invite-carousel.js +207 -0
- package/dist/components/invite-carousel/invite-carousel.js.map +1 -0
- package/dist/components/invite-carousel/meta.js +17 -0
- package/dist/components/invite-carousel/meta.js.map +1 -0
- package/dist/components/island/index.d.ts +2 -0
- package/dist/components/island/index.js +2 -0
- package/dist/components/island/island.d.ts +30 -0
- package/dist/components/island/island.d.ts.map +1 -0
- package/dist/components/island/island.js +94 -0
- package/dist/components/island/island.js.map +1 -0
- package/dist/components/island/meta.js +17 -0
- package/dist/components/island/meta.js.map +1 -0
- package/dist/components/liquid-toggle/index.d.ts +2 -0
- package/dist/components/liquid-toggle/index.js +2 -0
- package/dist/components/liquid-toggle/liquid-toggle.d.ts +19 -0
- package/dist/components/liquid-toggle/liquid-toggle.d.ts.map +1 -0
- package/dist/components/liquid-toggle/liquid-toggle.js +175 -0
- package/dist/components/liquid-toggle/liquid-toggle.js.map +1 -0
- package/dist/components/liquid-toggle/meta.js +21 -0
- package/dist/components/liquid-toggle/meta.js.map +1 -0
- package/dist/components/log-viewer/log-viewer.js +2 -2
- package/dist/components/log-viewer/log-viewer.js.map +1 -1
- package/dist/components/magnetic-button/index.d.ts +2 -0
- package/dist/components/magnetic-button/index.js +2 -0
- package/dist/components/magnetic-button/magnetic-button.d.ts +32 -0
- package/dist/components/magnetic-button/magnetic-button.d.ts.map +1 -0
- package/dist/components/magnetic-button/magnetic-button.js +138 -0
- package/dist/components/magnetic-button/magnetic-button.js.map +1 -0
- package/dist/components/magnetic-button/meta.js +17 -0
- package/dist/components/magnetic-button/meta.js.map +1 -0
- package/dist/components/magnetic-select/index.d.ts +2 -0
- package/dist/components/magnetic-select/index.js +2 -0
- package/dist/components/magnetic-select/magnetic-select-spring.js +21 -0
- package/dist/components/magnetic-select/magnetic-select-spring.js.map +1 -0
- package/dist/components/magnetic-select/magnetic-select.d.ts +44 -0
- package/dist/components/magnetic-select/magnetic-select.d.ts.map +1 -0
- package/dist/components/magnetic-select/magnetic-select.js +330 -0
- package/dist/components/magnetic-select/magnetic-select.js.map +1 -0
- package/dist/components/magnetic-select/meta.js +17 -0
- package/dist/components/magnetic-select/meta.js.map +1 -0
- package/dist/components/magnify-dock/index.d.ts +2 -0
- package/dist/components/magnify-dock/index.js +2 -0
- package/dist/components/magnify-dock/magnify-dock.d.ts +40 -0
- package/dist/components/magnify-dock/magnify-dock.d.ts.map +1 -0
- package/dist/components/magnify-dock/magnify-dock.js +183 -0
- package/dist/components/magnify-dock/magnify-dock.js.map +1 -0
- package/dist/components/magnify-dock/meta.js +17 -0
- package/dist/components/magnify-dock/meta.js.map +1 -0
- package/dist/components/marquee/index.d.ts +2 -0
- package/dist/components/marquee/index.js +2 -0
- package/dist/components/marquee/marquee.d.ts +30 -0
- package/dist/components/marquee/marquee.d.ts.map +1 -0
- package/dist/components/marquee/marquee.js +117 -0
- package/dist/components/marquee/marquee.js.map +1 -0
- package/dist/components/marquee/meta.js +17 -0
- package/dist/components/marquee/meta.js.map +1 -0
- package/dist/components/meter/meter.js +1 -1
- package/dist/components/meter/meter.js.map +1 -1
- package/dist/components/morph-button/index.d.ts +2 -0
- package/dist/components/morph-button/index.js +2 -0
- package/dist/components/morph-button/meta.js +17 -0
- package/dist/components/morph-button/meta.js.map +1 -0
- package/dist/components/morph-button/morph-button.d.ts +57 -0
- package/dist/components/morph-button/morph-button.d.ts.map +1 -0
- package/dist/components/morph-button/morph-button.js +220 -0
- package/dist/components/morph-button/morph-button.js.map +1 -0
- package/dist/components/morph-surface/index.d.ts +2 -0
- package/dist/components/morph-surface/index.js +2 -0
- package/dist/components/morph-surface/meta.js +17 -0
- package/dist/components/morph-surface/meta.js.map +1 -0
- package/dist/components/morph-surface/morph-surface.d.ts +51 -0
- package/dist/components/morph-surface/morph-surface.d.ts.map +1 -0
- package/dist/components/morph-surface/morph-surface.js +228 -0
- package/dist/components/morph-surface/morph-surface.js.map +1 -0
- package/dist/components/notification-badge/index.d.ts +2 -0
- package/dist/components/notification-badge/index.js +2 -0
- package/dist/components/notification-badge/meta.js +17 -0
- package/dist/components/notification-badge/meta.js.map +1 -0
- package/dist/components/notification-badge/notification-badge.d.ts +40 -0
- package/dist/components/notification-badge/notification-badge.d.ts.map +1 -0
- package/dist/components/notification-badge/notification-badge.js +107 -0
- package/dist/components/notification-badge/notification-badge.js.map +1 -0
- package/dist/components/notify-button/index.d.ts +2 -0
- package/dist/components/notify-button/index.js +2 -0
- package/dist/components/notify-button/meta.js +17 -0
- package/dist/components/notify-button/meta.js.map +1 -0
- package/dist/components/notify-button/notify-button.d.ts +28 -0
- package/dist/components/notify-button/notify-button.d.ts.map +1 -0
- package/dist/components/notify-button/notify-button.js +114 -0
- package/dist/components/notify-button/notify-button.js.map +1 -0
- package/dist/components/now-playing/index.d.ts +2 -0
- package/dist/components/now-playing/index.js +2 -0
- package/dist/components/now-playing/meta.js +17 -0
- package/dist/components/now-playing/meta.js.map +1 -0
- package/dist/components/now-playing/now-playing.d.ts +39 -0
- package/dist/components/now-playing/now-playing.d.ts.map +1 -0
- package/dist/components/now-playing/now-playing.js +354 -0
- package/dist/components/now-playing/now-playing.js.map +1 -0
- package/dist/components/number-flow/index.d.ts +2 -0
- package/dist/components/number-flow/index.js +2 -0
- package/dist/components/number-flow/meta.js +17 -0
- package/dist/components/number-flow/meta.js.map +1 -0
- package/dist/components/number-flow/number-flow.d.ts +45 -0
- package/dist/components/number-flow/number-flow.d.ts.map +1 -0
- package/dist/components/number-flow/number-flow.js +226 -0
- package/dist/components/number-flow/number-flow.js.map +1 -0
- package/dist/components/orb-face/index.d.ts +2 -0
- package/dist/components/orb-face/index.js +2 -0
- package/dist/components/orb-face/meta.js +17 -0
- package/dist/components/orb-face/meta.js.map +1 -0
- package/dist/components/orb-face/orb-face.d.ts +29 -0
- package/dist/components/orb-face/orb-face.d.ts.map +1 -0
- package/dist/components/orb-face/orb-face.js +353 -0
- package/dist/components/orb-face/orb-face.js.map +1 -0
- package/dist/components/otp-input/index.d.ts +2 -0
- package/dist/components/otp-input/index.js +2 -0
- package/dist/components/otp-input/meta.js +17 -0
- package/dist/components/otp-input/meta.js.map +1 -0
- package/dist/components/otp-input/otp-input.d.ts +36 -0
- package/dist/components/otp-input/otp-input.d.ts.map +1 -0
- package/dist/components/otp-input/otp-input.js +249 -0
- package/dist/components/otp-input/otp-input.js.map +1 -0
- package/dist/components/pagination/index.d.ts +2 -2
- package/dist/components/pagination/meta.js +2 -2
- package/dist/components/pagination/meta.js.map +1 -1
- package/dist/components/pagination/pagination-indicator.js +76 -0
- package/dist/components/pagination/pagination-indicator.js.map +1 -0
- package/dist/components/pagination/pagination.d.ts +10 -2
- package/dist/components/pagination/pagination.d.ts.map +1 -1
- package/dist/components/pagination/pagination.js +16 -6
- package/dist/components/pagination/pagination.js.map +1 -1
- package/dist/components/palette-generator/index.d.ts +2 -0
- package/dist/components/palette-generator/index.js +2 -0
- package/dist/components/palette-generator/meta.js +17 -0
- package/dist/components/palette-generator/meta.js.map +1 -0
- package/dist/components/palette-generator/palette-generator.d.ts +43 -0
- package/dist/components/palette-generator/palette-generator.d.ts.map +1 -0
- package/dist/components/palette-generator/palette-generator.js +199 -0
- package/dist/components/palette-generator/palette-generator.js.map +1 -0
- package/dist/components/permission-matrix/permission-matrix.js +3 -3
- package/dist/components/permission-matrix/permission-matrix.js.map +1 -1
- package/dist/components/photo-stack/index.d.ts +2 -0
- package/dist/components/photo-stack/index.js +2 -0
- package/dist/components/photo-stack/meta.js +17 -0
- package/dist/components/photo-stack/meta.js.map +1 -0
- package/dist/components/photo-stack/photo-stack.d.ts +30 -0
- package/dist/components/photo-stack/photo-stack.d.ts.map +1 -0
- package/dist/components/photo-stack/photo-stack.js +236 -0
- package/dist/components/photo-stack/photo-stack.js.map +1 -0
- package/dist/components/photo-tabs/index.d.ts +2 -0
- package/dist/components/photo-tabs/index.js +2 -0
- package/dist/components/photo-tabs/meta.js +17 -0
- package/dist/components/photo-tabs/meta.js.map +1 -0
- package/dist/components/photo-tabs/photo-tabs.d.ts +35 -0
- package/dist/components/photo-tabs/photo-tabs.d.ts.map +1 -0
- package/dist/components/photo-tabs/photo-tabs.js +82 -0
- package/dist/components/photo-tabs/photo-tabs.js.map +1 -0
- package/dist/components/pixel-avatar/index.d.ts +2 -0
- package/dist/components/pixel-avatar/index.js +2 -0
- package/dist/components/pixel-avatar/meta.js +17 -0
- package/dist/components/pixel-avatar/meta.js.map +1 -0
- package/dist/components/pixel-avatar/pixel-avatar.d.ts +23 -0
- package/dist/components/pixel-avatar/pixel-avatar.d.ts.map +1 -0
- package/dist/components/pixel-avatar/pixel-avatar.js +181 -0
- package/dist/components/pixel-avatar/pixel-avatar.js.map +1 -0
- package/dist/components/product-card/index.d.ts +2 -0
- package/dist/components/product-card/index.js +2 -0
- package/dist/components/product-card/meta.js +17 -0
- package/dist/components/product-card/meta.js.map +1 -0
- package/dist/components/product-card/product-card.d.ts +43 -0
- package/dist/components/product-card/product-card.d.ts.map +1 -0
- package/dist/components/product-card/product-card.js +249 -0
- package/dist/components/product-card/product-card.js.map +1 -0
- package/dist/components/progress/meta.js +1 -1
- package/dist/components/progress/meta.js.map +1 -1
- package/dist/components/progress/progress.d.ts +21 -2
- package/dist/components/progress/progress.d.ts.map +1 -1
- package/dist/components/progress/progress.js +56 -6
- package/dist/components/progress/progress.js.map +1 -1
- package/dist/components/pull-to-refresh/index.d.ts +2 -0
- package/dist/components/pull-to-refresh/index.js +2 -0
- package/dist/components/pull-to-refresh/meta.js +17 -0
- package/dist/components/pull-to-refresh/meta.js.map +1 -0
- package/dist/components/pull-to-refresh/pull-to-refresh.d.ts +47 -0
- package/dist/components/pull-to-refresh/pull-to-refresh.d.ts.map +1 -0
- package/dist/components/pull-to-refresh/pull-to-refresh.js +302 -0
- package/dist/components/pull-to-refresh/pull-to-refresh.js.map +1 -0
- package/dist/components/radial-menu/index.d.ts +2 -0
- package/dist/components/radial-menu/index.js +2 -0
- package/dist/components/radial-menu/meta.js +17 -0
- package/dist/components/radial-menu/meta.js.map +1 -0
- package/dist/components/radial-menu/radial-menu.d.ts +44 -0
- package/dist/components/radial-menu/radial-menu.d.ts.map +1 -0
- package/dist/components/radial-menu/radial-menu.js +313 -0
- package/dist/components/radial-menu/radial-menu.js.map +1 -0
- package/dist/components/radio-group/radio-group.d.ts.map +1 -1
- package/dist/components/radio-group/radio-group.js +4 -1
- package/dist/components/radio-group/radio-group.js.map +1 -1
- package/dist/components/range-dial/index.d.ts +2 -0
- package/dist/components/range-dial/index.js +2 -0
- package/dist/components/range-dial/meta.js +17 -0
- package/dist/components/range-dial/meta.js.map +1 -0
- package/dist/components/range-dial/range-dial.d.ts +33 -0
- package/dist/components/range-dial/range-dial.d.ts.map +1 -0
- package/dist/components/range-dial/range-dial.js +308 -0
- package/dist/components/range-dial/range-dial.js.map +1 -0
- package/dist/components/record-diff/record-diff.js +4 -4
- package/dist/components/record-diff/record-diff.js.map +1 -1
- package/dist/components/reorder-list/index.d.ts +2 -0
- package/dist/components/reorder-list/index.js +2 -0
- package/dist/components/reorder-list/meta.js +17 -0
- package/dist/components/reorder-list/meta.js.map +1 -0
- package/dist/components/reorder-list/reorder-list.d.ts +79 -0
- package/dist/components/reorder-list/reorder-list.d.ts.map +1 -0
- package/dist/components/reorder-list/reorder-list.js +471 -0
- package/dist/components/reorder-list/reorder-list.js.map +1 -0
- package/dist/components/reviews-carousel/carousel-controls.js +189 -0
- package/dist/components/reviews-carousel/carousel-controls.js.map +1 -0
- package/dist/components/reviews-carousel/index.d.ts +2 -0
- package/dist/components/reviews-carousel/index.js +2 -0
- package/dist/components/reviews-carousel/meta.js +17 -0
- package/dist/components/reviews-carousel/meta.js.map +1 -0
- package/dist/components/reviews-carousel/reviews-carousel.d.ts +46 -0
- package/dist/components/reviews-carousel/reviews-carousel.d.ts.map +1 -0
- package/dist/components/reviews-carousel/reviews-carousel.js +177 -0
- package/dist/components/reviews-carousel/reviews-carousel.js.map +1 -0
- package/dist/components/rich-popover/index.d.ts +2 -0
- package/dist/components/rich-popover/index.js +2 -0
- package/dist/components/rich-popover/meta.js +17 -0
- package/dist/components/rich-popover/meta.js.map +1 -0
- package/dist/components/rich-popover/rich-popover.d.ts +36 -0
- package/dist/components/rich-popover/rich-popover.d.ts.map +1 -0
- package/dist/components/rich-popover/rich-popover.js +157 -0
- package/dist/components/rich-popover/rich-popover.js.map +1 -0
- package/dist/components/ring-loader/index.d.ts +2 -0
- package/dist/components/ring-loader/index.js +2 -0
- package/dist/components/ring-loader/meta.js +17 -0
- package/dist/components/ring-loader/meta.js.map +1 -0
- package/dist/components/ring-loader/ring-loader.d.ts +31 -0
- package/dist/components/ring-loader/ring-loader.d.ts.map +1 -0
- package/dist/components/ring-loader/ring-loader.js +597 -0
- package/dist/components/ring-loader/ring-loader.js.map +1 -0
- package/dist/components/scramble-text/index.d.ts +2 -0
- package/dist/components/scramble-text/index.js +2 -0
- package/dist/components/scramble-text/meta.js +17 -0
- package/dist/components/scramble-text/meta.js.map +1 -0
- package/dist/components/scramble-text/scramble-text.d.ts +35 -0
- package/dist/components/scramble-text/scramble-text.d.ts.map +1 -0
- package/dist/components/scramble-text/scramble-text.js +151 -0
- package/dist/components/scramble-text/scramble-text.js.map +1 -0
- package/dist/components/scroll-reveal-text/index.d.ts +2 -0
- package/dist/components/scroll-reveal-text/index.js +2 -0
- package/dist/components/scroll-reveal-text/meta.js +17 -0
- package/dist/components/scroll-reveal-text/meta.js.map +1 -0
- package/dist/components/scroll-reveal-text/scroll-reveal-text.d.ts +22 -0
- package/dist/components/scroll-reveal-text/scroll-reveal-text.d.ts.map +1 -0
- package/dist/components/scroll-reveal-text/scroll-reveal-text.js +113 -0
- package/dist/components/scroll-reveal-text/scroll-reveal-text.js.map +1 -0
- package/dist/components/scrubber/index.d.ts +2 -0
- package/dist/components/scrubber/index.js +2 -0
- package/dist/components/scrubber/meta.js +17 -0
- package/dist/components/scrubber/meta.js.map +1 -0
- package/dist/components/scrubber/scrubber.d.ts +37 -0
- package/dist/components/scrubber/scrubber.d.ts.map +1 -0
- package/dist/components/scrubber/scrubber.js +217 -0
- package/dist/components/scrubber/scrubber.js.map +1 -0
- package/dist/components/select/meta.js +1 -1
- package/dist/components/select/meta.js.map +1 -1
- package/dist/components/select/select.d.ts +5 -0
- package/dist/components/select/select.d.ts.map +1 -1
- package/dist/components/select/select.js +29 -7
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/selection-list/index.d.ts +2 -0
- package/dist/components/selection-list/index.js +2 -0
- package/dist/components/selection-list/meta.js +17 -0
- package/dist/components/selection-list/meta.js.map +1 -0
- package/dist/components/selection-list/selection-list-spring.js +21 -0
- package/dist/components/selection-list/selection-list-spring.js.map +1 -0
- package/dist/components/selection-list/selection-list.d.ts +42 -0
- package/dist/components/selection-list/selection-list.d.ts.map +1 -0
- package/dist/components/selection-list/selection-list.js +355 -0
- package/dist/components/selection-list/selection-list.js.map +1 -0
- package/dist/components/shader-transition/index.d.ts +4 -0
- package/dist/components/shader-transition/index.js +4 -0
- package/dist/components/shader-transition/meta.js +21 -0
- package/dist/components/shader-transition/meta.js.map +1 -0
- package/dist/components/shader-transition/shader-transition-engine.d.ts +39 -0
- package/dist/components/shader-transition/shader-transition-engine.d.ts.map +1 -0
- package/dist/components/shader-transition/shader-transition-engine.js +294 -0
- package/dist/components/shader-transition/shader-transition-engine.js.map +1 -0
- package/dist/components/shader-transition/shader-transition-presets.d.ts +222 -0
- package/dist/components/shader-transition/shader-transition-presets.d.ts.map +1 -0
- package/dist/components/shader-transition/shader-transition-presets.js +346 -0
- package/dist/components/shader-transition/shader-transition-presets.js.map +1 -0
- package/dist/components/shader-transition/shader-transition.d.ts +35 -0
- package/dist/components/shader-transition/shader-transition.d.ts.map +1 -0
- package/dist/components/shader-transition/shader-transition.js +314 -0
- package/dist/components/shader-transition/shader-transition.js.map +1 -0
- package/dist/components/shape-loader/index.d.ts +2 -0
- package/dist/components/shape-loader/index.js +2 -0
- package/dist/components/shape-loader/meta.js +17 -0
- package/dist/components/shape-loader/meta.js.map +1 -0
- package/dist/components/shape-loader/shape-loader-variants.d.ts +8 -0
- package/dist/components/shape-loader/shape-loader-variants.d.ts.map +1 -0
- package/dist/components/shape-loader/shape-loader-variants.js +635 -0
- package/dist/components/shape-loader/shape-loader-variants.js.map +1 -0
- package/dist/components/shape-loader/shape-loader.d.ts +26 -0
- package/dist/components/shape-loader/shape-loader.d.ts.map +1 -0
- package/dist/components/shape-loader/shape-loader.js +99 -0
- package/dist/components/shape-loader/shape-loader.js.map +1 -0
- package/dist/components/sheet/meta.js +1 -1
- package/dist/components/sheet/meta.js.map +1 -1
- package/dist/components/sheet/sheet.d.ts +10 -2
- package/dist/components/sheet/sheet.d.ts.map +1 -1
- package/dist/components/sheet/sheet.js +25 -6
- package/dist/components/sheet/sheet.js.map +1 -1
- package/dist/components/shimmer-text/index.d.ts +2 -0
- package/dist/components/shimmer-text/index.js +2 -0
- package/dist/components/shimmer-text/meta.js +17 -0
- package/dist/components/shimmer-text/meta.js.map +1 -0
- package/dist/components/shimmer-text/shimmer-text.d.ts +33 -0
- package/dist/components/shimmer-text/shimmer-text.d.ts.map +1 -0
- package/dist/components/shimmer-text/shimmer-text.js +120 -0
- package/dist/components/shimmer-text/shimmer-text.js.map +1 -0
- package/dist/components/sidebar/index.d.ts +2 -0
- package/dist/components/sidebar/index.js +2 -0
- package/dist/components/sidebar/meta.js +17 -0
- package/dist/components/sidebar/meta.js.map +1 -0
- package/dist/components/sidebar/sidebar.d.ts +69 -0
- package/dist/components/sidebar/sidebar.d.ts.map +1 -0
- package/dist/components/sidebar/sidebar.js +256 -0
- package/dist/components/sidebar/sidebar.js.map +1 -0
- package/dist/components/skeleton/index.d.ts +2 -2
- package/dist/components/skeleton/meta.js +1 -1
- package/dist/components/skeleton/meta.js.map +1 -1
- package/dist/components/skeleton/skeleton.d.ts +14 -2
- package/dist/components/skeleton/skeleton.d.ts.map +1 -1
- package/dist/components/skeleton/skeleton.js +24 -5
- package/dist/components/skeleton/skeleton.js.map +1 -1
- package/dist/components/slide-to-confirm/index.d.ts +2 -0
- package/dist/components/slide-to-confirm/index.js +2 -0
- package/dist/components/slide-to-confirm/meta.js +21 -0
- package/dist/components/slide-to-confirm/meta.js.map +1 -0
- package/dist/components/slide-to-confirm/slide-to-confirm.d.ts +38 -0
- package/dist/components/slide-to-confirm/slide-to-confirm.d.ts.map +1 -0
- package/dist/components/slide-to-confirm/slide-to-confirm.js +389 -0
- package/dist/components/slide-to-confirm/slide-to-confirm.js.map +1 -0
- package/dist/components/slosh-slider/index.d.ts +2 -0
- package/dist/components/slosh-slider/index.js +2 -0
- package/dist/components/slosh-slider/meta.js +21 -0
- package/dist/components/slosh-slider/meta.js.map +1 -0
- package/dist/components/slosh-slider/slosh-slider.d.ts +43 -0
- package/dist/components/slosh-slider/slosh-slider.d.ts.map +1 -0
- package/dist/components/slosh-slider/slosh-slider.js +140 -0
- package/dist/components/slosh-slider/slosh-slider.js.map +1 -0
- package/dist/components/social-selector/index.d.ts +2 -0
- package/dist/components/social-selector/index.js +2 -0
- package/dist/components/social-selector/meta.js +17 -0
- package/dist/components/social-selector/meta.js.map +1 -0
- package/dist/components/social-selector/social-selector.d.ts +45 -0
- package/dist/components/social-selector/social-selector.d.ts.map +1 -0
- package/dist/components/social-selector/social-selector.js +128 -0
- package/dist/components/social-selector/social-selector.js.map +1 -0
- package/dist/components/spinner/spinner.d.ts +1 -1
- package/dist/components/star-count/index.d.ts +2 -0
- package/dist/components/star-count/index.js +2 -0
- package/dist/components/star-count/meta.js +17 -0
- package/dist/components/star-count/meta.js.map +1 -0
- package/dist/components/star-count/star-count.d.ts +35 -0
- package/dist/components/star-count/star-count.d.ts.map +1 -0
- package/dist/components/star-count/star-count.js +94 -0
- package/dist/components/star-count/star-count.js.map +1 -0
- package/dist/components/stepper/index.d.ts +2 -0
- package/dist/components/stepper/index.js +2 -0
- package/dist/components/stepper/meta.js +17 -0
- package/dist/components/stepper/meta.js.map +1 -0
- package/dist/components/stepper/stepper.d.ts +45 -0
- package/dist/components/stepper/stepper.d.ts.map +1 -0
- package/dist/components/stepper/stepper.js +207 -0
- package/dist/components/stepper/stepper.js.map +1 -0
- package/dist/components/swipe-carousel/carousel-controls.js +98 -0
- package/dist/components/swipe-carousel/carousel-controls.js.map +1 -0
- package/dist/components/swipe-carousel/index.d.ts +2 -0
- package/dist/components/swipe-carousel/index.js +2 -0
- package/dist/components/swipe-carousel/meta.js +17 -0
- package/dist/components/swipe-carousel/meta.js.map +1 -0
- package/dist/components/swipe-carousel/swipe-carousel.d.ts +27 -0
- package/dist/components/swipe-carousel/swipe-carousel.d.ts.map +1 -0
- package/dist/components/swipe-carousel/swipe-carousel.js +288 -0
- package/dist/components/swipe-carousel/swipe-carousel.js.map +1 -0
- package/dist/components/switch/meta.js +1 -1
- package/dist/components/switch/meta.js.map +1 -1
- package/dist/components/switch/switch.d.ts +25 -3
- package/dist/components/switch/switch.d.ts.map +1 -1
- package/dist/components/switch/switch.js +20 -4
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/switchboard-card/index.d.ts +2 -0
- package/dist/components/switchboard-card/index.js +2 -0
- package/dist/components/switchboard-card/meta.js +17 -0
- package/dist/components/switchboard-card/meta.js.map +1 -0
- package/dist/components/switchboard-card/switchboard-card.d.ts +44 -0
- package/dist/components/switchboard-card/switchboard-card.d.ts.map +1 -0
- package/dist/components/switchboard-card/switchboard-card.js +169 -0
- package/dist/components/switchboard-card/switchboard-card.js.map +1 -0
- package/dist/components/table/table.js +2 -2
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/tabs/index.d.ts +2 -2
- package/dist/components/tabs/index.js +2 -2
- package/dist/components/tabs/meta.js +1 -1
- package/dist/components/tabs/meta.js.map +1 -1
- package/dist/components/tabs/tabs.d.ts +6 -2
- package/dist/components/tabs/tabs.d.ts.map +1 -1
- package/dist/components/tabs/tabs.js +112 -10
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/tags-input/meta.js +1 -1
- package/dist/components/tags-input/meta.js.map +1 -1
- package/dist/components/tags-input/tags-input.d.ts +7 -1
- package/dist/components/tags-input/tags-input.d.ts.map +1 -1
- package/dist/components/tags-input/tags-input.js +82 -6
- package/dist/components/tags-input/tags-input.js.map +1 -1
- package/dist/components/text-effect/index.d.ts +3 -0
- package/dist/components/text-effect/index.js +3 -0
- package/dist/components/text-effect/meta.js +17 -0
- package/dist/components/text-effect/meta.js.map +1 -0
- package/dist/components/text-effect/text-effect-presets.d.ts +256 -0
- package/dist/components/text-effect/text-effect-presets.d.ts.map +1 -0
- package/dist/components/text-effect/text-effect-presets.js +292 -0
- package/dist/components/text-effect/text-effect-presets.js.map +1 -0
- package/dist/components/text-effect/text-effect.d.ts +58 -0
- package/dist/components/text-effect/text-effect.d.ts.map +1 -0
- package/dist/components/text-effect/text-effect.js +243 -0
- package/dist/components/text-effect/text-effect.js.map +1 -0
- package/dist/components/text-loader/index.d.ts +2 -0
- package/dist/components/text-loader/index.js +2 -0
- package/dist/components/text-loader/meta.js +17 -0
- package/dist/components/text-loader/meta.js.map +1 -0
- package/dist/components/text-loader/text-loader.d.ts +30 -0
- package/dist/components/text-loader/text-loader.d.ts.map +1 -0
- package/dist/components/text-loader/text-loader.js +514 -0
- package/dist/components/text-loader/text-loader.js.map +1 -0
- package/dist/components/text-swap/index.d.ts +3 -0
- package/dist/components/text-swap/index.js +3 -0
- package/dist/components/text-swap/meta.js +17 -0
- package/dist/components/text-swap/meta.js.map +1 -0
- package/dist/components/text-swap/text-rotate.d.ts +17 -0
- package/dist/components/text-swap/text-rotate.d.ts.map +1 -0
- package/dist/components/text-swap/text-rotate.js +51 -0
- package/dist/components/text-swap/text-rotate.js.map +1 -0
- package/dist/components/text-swap/text-swap.d.ts +41 -0
- package/dist/components/text-swap/text-swap.d.ts.map +1 -0
- package/dist/components/text-swap/text-swap.js +303 -0
- package/dist/components/text-swap/text-swap.js.map +1 -0
- package/dist/components/textarea/index.d.ts +2 -0
- package/dist/components/textarea/index.js +2 -0
- package/dist/components/textarea/meta.js +17 -0
- package/dist/components/textarea/meta.js.map +1 -0
- package/dist/components/textarea/textarea.d.ts +43 -0
- package/dist/components/textarea/textarea.d.ts.map +1 -0
- package/dist/components/textarea/textarea.js +119 -0
- package/dist/components/textarea/textarea.js.map +1 -0
- package/dist/components/tick-progress/index.d.ts +2 -0
- package/dist/components/tick-progress/index.js +2 -0
- package/dist/components/tick-progress/meta.js +17 -0
- package/dist/components/tick-progress/meta.js.map +1 -0
- package/dist/components/tick-progress/tick-progress.d.ts +28 -0
- package/dist/components/tick-progress/tick-progress.d.ts.map +1 -0
- package/dist/components/tick-progress/tick-progress.js +151 -0
- package/dist/components/tick-progress/tick-progress.js.map +1 -0
- package/dist/components/tilt-card/index.d.ts +2 -0
- package/dist/components/tilt-card/index.js +2 -0
- package/dist/components/tilt-card/meta.js +17 -0
- package/dist/components/tilt-card/meta.js.map +1 -0
- package/dist/components/tilt-card/tilt-card.d.ts +36 -0
- package/dist/components/tilt-card/tilt-card.d.ts.map +1 -0
- package/dist/components/tilt-card/tilt-card.js +135 -0
- package/dist/components/tilt-card/tilt-card.js.map +1 -0
- package/dist/components/time-range-picker/time-range-picker.js +3 -3
- package/dist/components/time-range-picker/time-range-picker.js.map +1 -1
- package/dist/components/time-stack/index.d.ts +2 -0
- package/dist/components/time-stack/index.js +2 -0
- package/dist/components/time-stack/meta.js +17 -0
- package/dist/components/time-stack/meta.js.map +1 -0
- package/dist/components/time-stack/time-stack.d.ts +37 -0
- package/dist/components/time-stack/time-stack.d.ts.map +1 -0
- package/dist/components/time-stack/time-stack.js +253 -0
- package/dist/components/time-stack/time-stack.js.map +1 -0
- package/dist/components/toast/meta.js +1 -1
- package/dist/components/toast/meta.js.map +1 -1
- package/dist/components/toast/toast.d.ts +13 -4
- package/dist/components/toast/toast.d.ts.map +1 -1
- package/dist/components/toast/toast.js +34 -11
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/todo-tower/index.d.ts +2 -0
- package/dist/components/todo-tower/index.js +2 -0
- package/dist/components/todo-tower/meta.js +17 -0
- package/dist/components/todo-tower/meta.js.map +1 -0
- package/dist/components/todo-tower/todo-tower.d.ts +38 -0
- package/dist/components/todo-tower/todo-tower.d.ts.map +1 -0
- package/dist/components/todo-tower/todo-tower.js +284 -0
- package/dist/components/todo-tower/todo-tower.js.map +1 -0
- package/dist/components/tooltip/meta.js +1 -1
- package/dist/components/tooltip/meta.js.map +1 -1
- package/dist/components/tooltip/tooltip.d.ts +4 -0
- package/dist/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/tooltip.js +20 -4
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/components/tweet-card/index.d.ts +2 -0
- package/dist/components/tweet-card/index.js +2 -0
- package/dist/components/tweet-card/meta.js +17 -0
- package/dist/components/tweet-card/meta.js.map +1 -0
- package/dist/components/tweet-card/tweet-card.d.ts +57 -0
- package/dist/components/tweet-card/tweet-card.d.ts.map +1 -0
- package/dist/components/tweet-card/tweet-card.js +243 -0
- package/dist/components/tweet-card/tweet-card.js.map +1 -0
- package/dist/components/typewriter-text/index.d.ts +2 -0
- package/dist/components/typewriter-text/index.js +2 -0
- package/dist/components/typewriter-text/meta.js +17 -0
- package/dist/components/typewriter-text/meta.js.map +1 -0
- package/dist/components/typewriter-text/typewriter-text.d.ts +33 -0
- package/dist/components/typewriter-text/typewriter-text.d.ts.map +1 -0
- package/dist/components/typewriter-text/typewriter-text.js +135 -0
- package/dist/components/typewriter-text/typewriter-text.js.map +1 -0
- package/dist/components/uptime-matrix/index.d.ts +2 -0
- package/dist/components/uptime-matrix/index.js +2 -0
- package/dist/components/uptime-matrix/meta.js +17 -0
- package/dist/components/uptime-matrix/meta.js.map +1 -0
- package/dist/components/uptime-matrix/uptime-matrix.d.ts +60 -0
- package/dist/components/uptime-matrix/uptime-matrix.d.ts.map +1 -0
- package/dist/components/uptime-matrix/uptime-matrix.js +303 -0
- package/dist/components/uptime-matrix/uptime-matrix.js.map +1 -0
- package/dist/index.d.ts +256 -18
- package/dist/index.js +134 -10
- package/dist/lib/styles.d.ts +16 -1
- package/dist/lib/styles.d.ts.map +1 -1
- package/dist/lib/styles.js +16 -1
- package/dist/lib/styles.js.map +1 -1
- package/dist/registry/blocks.d.ts.map +1 -1
- package/dist/registry/blocks.js +95 -9
- package/dist/registry/blocks.js.map +1 -1
- package/dist/registry/components.d.ts.map +1 -1
- package/dist/registry/components.js +278 -50
- package/dist/registry/components.js.map +1 -1
- package/dist/registry/schema.d.ts +9 -1
- package/dist/registry/schema.d.ts.map +1 -1
- package/dist/registry/schema.js +2 -1
- package/dist/registry/schema.js.map +1 -1
- package/package.json +6 -4
- package/src/components/accordion/accordion.tsx +1 -1
- package/src/components/account-menu/account-menu.tsx +338 -0
- package/src/components/account-menu/index.ts +12 -0
- package/src/components/account-menu/meta.ts +19 -0
- package/src/components/action-node/action-node-spring.ts +34 -0
- package/src/components/action-node/action-node.tsx +516 -0
- package/src/components/action-node/index.ts +8 -0
- package/src/components/action-node/meta.ts +21 -0
- package/src/components/activity-feed/activity-feed.tsx +1 -1
- package/src/components/ai-agent-plan/ai-agent-plan.tsx +0 -0
- package/src/components/ai-agent-plan/index.ts +1 -0
- package/src/components/ai-agent-plan/meta.ts +3 -1
- package/src/components/ai-approval-request/ai-approval-request.tsx +103 -4
- package/src/components/ai-approval-request/meta.ts +4 -1
- package/src/components/ai-artifact/ai-artifact.tsx +203 -0
- package/src/components/ai-artifact/index.ts +1 -0
- package/src/components/ai-artifact/meta.ts +18 -0
- package/src/components/ai-branch/ai-branch.tsx +222 -0
- package/src/components/ai-branch/index.ts +11 -0
- package/src/components/ai-branch/meta.ts +18 -0
- package/src/components/ai-conversation/ai-conversation.tsx +142 -31
- package/src/components/ai-conversation/index.ts +1 -0
- package/src/components/ai-extraction-review/ai-extraction-review.tsx +1 -1
- package/src/components/ai-loader/ai-loader.tsx +112 -0
- package/src/components/ai-loader/index.ts +6 -0
- package/src/components/ai-loader/meta.ts +18 -0
- package/src/components/ai-message/ai-message.tsx +54 -9
- package/src/components/ai-message/index.ts +2 -0
- package/src/components/ai-message/meta.ts +2 -1
- package/src/components/ai-prompt-input/ai-prompt-input.tsx +57 -19
- package/src/components/ai-reasoning/ai-reasoning.tsx +192 -13
- package/src/components/ai-reasoning/index.ts +1 -0
- package/src/components/ai-reasoning/meta.ts +4 -2
- package/src/components/ai-response/ai-response.tsx +12 -3
- package/src/components/ai-response/index.ts +1 -0
- package/src/components/ai-response/meta.ts +6 -3
- package/src/components/ai-response/response-text.tsx +119 -0
- package/src/components/ai-sources/ai-sources.tsx +191 -8
- package/src/components/ai-sources/index.ts +1 -0
- package/src/components/ai-sources/meta.ts +4 -2
- package/src/components/ai-suggestions/ai-suggestions.tsx +130 -0
- package/src/components/ai-suggestions/index.ts +6 -0
- package/src/components/ai-suggestions/meta.ts +17 -0
- package/src/components/ai-token-usage/ai-token-usage.tsx +288 -14
- package/src/components/ai-token-usage/index.ts +5 -0
- package/src/components/ai-token-usage/meta.ts +6 -2
- package/src/components/ai-tool/ai-tool.tsx +125 -4
- package/src/components/ai-tool/meta.ts +3 -1
- package/src/components/animated-checklist/animated-checklist.tsx +324 -0
- package/src/components/animated-checklist/index.ts +6 -0
- package/src/components/animated-checklist/meta.ts +18 -0
- package/src/components/app-stack/app-stack.tsx +414 -0
- package/src/components/app-stack/index.ts +7 -0
- package/src/components/app-stack/meta.ts +20 -0
- package/src/components/aspect-morph/aspect-morph.tsx +272 -0
- package/src/components/aspect-morph/index.ts +8 -0
- package/src/components/aspect-morph/meta.ts +19 -0
- package/src/components/assignee-picker/assignee-picker-spring.ts +33 -0
- package/src/components/assignee-picker/assignee-picker.tsx +535 -0
- package/src/components/assignee-picker/index.ts +6 -0
- package/src/components/assignee-picker/meta.ts +21 -0
- package/src/components/avatar-group/avatar-group.tsx +176 -0
- package/src/components/avatar-group/index.ts +6 -0
- package/src/components/avatar-group/meta.ts +18 -0
- package/src/components/bar-loader/bar-loader.tsx +549 -0
- package/src/components/bar-loader/index.ts +7 -0
- package/src/components/bar-loader/meta.ts +18 -0
- package/src/components/book/book.tsx +300 -0
- package/src/components/book/index.ts +1 -0
- package/src/components/book/meta.ts +18 -0
- package/src/components/breadcrumb/breadcrumb.tsx +198 -0
- package/src/components/breadcrumb/index.ts +11 -0
- package/src/components/breadcrumb/meta.ts +20 -0
- package/src/components/browser-tabs/browser-tabs-spring.ts +34 -0
- package/src/components/browser-tabs/browser-tabs.tsx +608 -0
- package/src/components/browser-tabs/index.ts +7 -0
- package/src/components/browser-tabs/meta.ts +22 -0
- package/src/components/button/button.tsx +57 -2
- package/src/components/calendar/calendar.tsx +2 -2
- package/src/components/canvas-toolbar/canvas-toolbar.tsx +457 -0
- package/src/components/canvas-toolbar/index.ts +9 -0
- package/src/components/canvas-toolbar/meta.ts +22 -0
- package/src/components/card-spread/card-spread-layouts.ts +251 -0
- package/src/components/card-spread/card-spread.tsx +415 -0
- package/src/components/card-spread/index.ts +19 -0
- package/src/components/card-spread/meta.ts +21 -0
- package/src/components/card-stack/card-stack-layout.ts +100 -0
- package/src/components/card-stack/card-stack.tsx +359 -0
- package/src/components/card-stack/index.ts +1 -0
- package/src/components/card-stack/meta.ts +20 -0
- package/src/components/carousel-3d/carousel-3d.tsx +501 -0
- package/src/components/carousel-3d/index.ts +7 -0
- package/src/components/carousel-3d/meta.ts +20 -0
- package/src/components/checkbox/checkbox.tsx +29 -1
- package/src/components/code-block/code-block.tsx +11 -110
- package/src/components/code-block/index.ts +4 -1
- package/src/components/code-block/meta.ts +1 -1
- package/src/components/collapsible/collapsible.tsx +63 -0
- package/src/components/collapsible/index.ts +6 -0
- package/src/components/collapsible/meta.ts +16 -0
- package/src/components/combobox/combobox.tsx +167 -14
- package/src/components/combobox/index.ts +1 -0
- package/src/components/combobox/meta.ts +2 -1
- package/src/components/command/command.tsx +1 -1
- package/src/components/command-bar/command-bar.tsx +177 -0
- package/src/components/command-bar/index.ts +1 -0
- package/src/components/command-bar/meta.ts +17 -0
- package/src/components/comment-bubble/comment-bubble.tsx +269 -0
- package/src/components/comment-bubble/index.ts +6 -0
- package/src/components/comment-bubble/meta.ts +18 -0
- package/src/components/context-menu/context-menu.tsx +280 -0
- package/src/components/context-menu/index.ts +21 -0
- package/src/components/context-menu/meta.ts +19 -0
- package/src/components/contribution-graph/contribution-graph.tsx +372 -0
- package/src/components/contribution-graph/index.ts +6 -0
- package/src/components/contribution-graph/meta.ts +19 -0
- package/src/components/copy-button/copy-button.tsx +278 -0
- package/src/components/copy-button/index.ts +6 -0
- package/src/components/copy-button/meta.ts +19 -0
- package/src/components/create-menu/create-menu.tsx +319 -0
- package/src/components/create-menu/index.ts +7 -0
- package/src/components/create-menu/meta.ts +21 -0
- package/src/components/cursor-follow/cursor-follow.tsx +186 -0
- package/src/components/cursor-follow/index.ts +1 -0
- package/src/components/cursor-follow/meta.ts +19 -0
- package/src/components/data-table/data-table.tsx +14 -3
- package/src/components/dial/dial.tsx +308 -0
- package/src/components/dial/index.ts +1 -0
- package/src/components/dial/meta.ts +19 -0
- package/src/components/dialog/dialog.tsx +80 -37
- package/src/components/dialog/meta.ts +2 -1
- package/src/components/diff-viewer/diff-viewer.tsx +160 -21
- package/src/components/diff-viewer/meta.ts +4 -1
- package/src/components/direction/direction.tsx +38 -0
- package/src/components/direction/index.ts +1 -0
- package/src/components/direction/meta.ts +19 -0
- package/src/components/dither-area/dither-area.tsx +280 -0
- package/src/components/dither-area/index.ts +9 -0
- package/src/components/dither-area/meta.ts +18 -0
- package/src/components/dither-bar/dither-bar.tsx +389 -0
- package/src/components/dither-bar/index.ts +8 -0
- package/src/components/dither-bar/meta.ts +19 -0
- package/src/components/dither-canvas/canvas-mock.ts +143 -0
- package/src/components/dither-canvas/dither-canvas.tsx +382 -0
- package/src/components/dither-canvas/dither-engine.ts +354 -0
- package/src/components/dither-canvas/dither-geometry.ts +295 -0
- package/src/components/dither-canvas/dither-scrubber.tsx +244 -0
- package/src/components/dither-canvas/index.ts +68 -0
- package/src/components/dither-canvas/meta.ts +19 -0
- package/src/components/dither-donut/dither-donut.tsx +377 -0
- package/src/components/dither-donut/index.ts +7 -0
- package/src/components/dither-donut/meta.ts +19 -0
- package/src/components/dither-funnel/dither-funnel.tsx +273 -0
- package/src/components/dither-funnel/index.ts +9 -0
- package/src/components/dither-funnel/meta.ts +19 -0
- package/src/components/dither-gauge/dither-gauge.tsx +279 -0
- package/src/components/dither-gauge/index.ts +8 -0
- package/src/components/dither-gauge/meta.ts +19 -0
- package/src/components/dither-heatmap/dither-heatmap.tsx +453 -0
- package/src/components/dither-heatmap/index.ts +10 -0
- package/src/components/dither-heatmap/meta.ts +19 -0
- package/src/components/dither-line/dither-line.tsx +244 -0
- package/src/components/dither-line/index.ts +8 -0
- package/src/components/dither-line/meta.ts +18 -0
- package/src/components/dither-meter/dither-meter.tsx +299 -0
- package/src/components/dither-meter/index.ts +8 -0
- package/src/components/dither-meter/meta.ts +19 -0
- package/src/components/dither-scatter/dither-scatter.tsx +317 -0
- package/src/components/dither-scatter/index.ts +8 -0
- package/src/components/dither-scatter/meta.ts +19 -0
- package/src/components/dot-morph-button/dot-morph-button.tsx +86 -0
- package/src/components/dot-morph-button/index.ts +5 -0
- package/src/components/dot-morph-button/meta.ts +17 -0
- package/src/components/dots-loader/dots-loader.tsx +451 -0
- package/src/components/dots-loader/index.ts +7 -0
- package/src/components/dots-loader/meta.ts +17 -0
- package/src/components/drag-stepper/drag-stepper.tsx +367 -0
- package/src/components/drag-stepper/index.ts +1 -0
- package/src/components/drag-stepper/meta.ts +23 -0
- package/src/components/drawer/drawer.tsx +78 -35
- package/src/components/drawer/meta.ts +1 -1
- package/src/components/dropdown-menu/dropdown-menu.tsx +61 -18
- package/src/components/dropdown-menu/meta.ts +2 -1
- package/src/components/effect-button/effect-button.tsx +310 -0
- package/src/components/effect-button/index.ts +8 -0
- package/src/components/effect-button/meta.ts +18 -0
- package/src/components/escape-button/escape-button.tsx +232 -0
- package/src/components/escape-button/index.ts +1 -0
- package/src/components/escape-button/meta.ts +18 -0
- package/src/components/expandable-cards/expandable-cards.tsx +435 -0
- package/src/components/expandable-cards/index.ts +6 -0
- package/src/components/expandable-cards/meta.ts +20 -0
- package/src/components/expandable-list/expandable-list.tsx +260 -0
- package/src/components/expandable-list/index.ts +6 -0
- package/src/components/expandable-list/meta.ts +19 -0
- package/src/components/expanding-search/expanding-search.tsx +244 -0
- package/src/components/expanding-search/index.ts +5 -0
- package/src/components/expanding-search/meta.ts +19 -0
- package/src/components/exposure-slider/exposure-slider.tsx +351 -0
- package/src/components/exposure-slider/index.ts +5 -0
- package/src/components/exposure-slider/meta.ts +20 -0
- package/src/components/file-upload/file-upload.tsx +134 -12
- package/src/components/file-upload/meta.ts +2 -1
- package/src/components/focus-blur-links/focus-blur-links.tsx +189 -0
- package/src/components/focus-blur-links/index.ts +7 -0
- package/src/components/focus-blur-links/meta.ts +18 -0
- package/src/components/folding-frame/folding-frame.tsx +435 -0
- package/src/components/folding-frame/index.ts +1 -0
- package/src/components/folding-frame/meta.ts +21 -0
- package/src/components/form/form.tsx +105 -13
- package/src/components/form/meta.ts +2 -1
- package/src/components/glass-bubble/glass-bubble.tsx +418 -0
- package/src/components/glass-bubble/index.ts +9 -0
- package/src/components/glass-bubble/meta.ts +20 -0
- package/src/components/glow-card/glow-card.tsx +195 -0
- package/src/components/glow-card/index.ts +7 -0
- package/src/components/glow-card/meta.ts +18 -0
- package/src/components/goo-ball/goo-ball.tsx +379 -0
- package/src/components/goo-ball/index.ts +7 -0
- package/src/components/goo-ball/meta.ts +19 -0
- package/src/components/goo-tabs/goo-tabs.tsx +389 -0
- package/src/components/goo-tabs/index.ts +11 -0
- package/src/components/goo-tabs/meta.ts +20 -0
- package/src/components/gooey-popover/gooey-popover.tsx +332 -0
- package/src/components/gooey-popover/index.ts +1 -0
- package/src/components/gooey-popover/meta.ts +20 -0
- package/src/components/gradient-orb/gradient-orb.tsx +230 -0
- package/src/components/gradient-orb/index.ts +6 -0
- package/src/components/gradient-orb/meta.ts +17 -0
- package/src/components/grid-loader/grid-loader.tsx +364 -0
- package/src/components/grid-loader/index.ts +10 -0
- package/src/components/grid-loader/meta.ts +17 -0
- package/src/components/image-accordion/image-accordion.tsx +230 -0
- package/src/components/image-accordion/index.ts +6 -0
- package/src/components/image-accordion/meta.ts +20 -0
- package/src/components/image-metadata/image-metadata.tsx +265 -0
- package/src/components/image-metadata/index.ts +6 -0
- package/src/components/image-metadata/meta.ts +19 -0
- package/src/components/image-selector/image-selector.tsx +338 -0
- package/src/components/image-selector/index.ts +6 -0
- package/src/components/image-selector/meta.ts +20 -0
- package/src/components/inline-confirm/index.ts +6 -0
- package/src/components/inline-confirm/inline-confirm.tsx +363 -0
- package/src/components/inline-confirm/meta.ts +18 -0
- package/src/components/input/floating-label-input.tsx +110 -0
- package/src/components/input/index.ts +5 -0
- package/src/components/input/input.tsx +1 -1
- package/src/components/input/meta.ts +3 -2
- package/src/components/invite-carousel/carousel-controls.tsx +291 -0
- package/src/components/invite-carousel/index.ts +8 -0
- package/src/components/invite-carousel/invite-carousel.tsx +359 -0
- package/src/components/invite-carousel/meta.ts +21 -0
- package/src/components/island/index.ts +7 -0
- package/src/components/island/island.tsx +162 -0
- package/src/components/island/meta.ts +18 -0
- package/src/components/liquid-toggle/index.ts +1 -0
- package/src/components/liquid-toggle/liquid-toggle.tsx +254 -0
- package/src/components/liquid-toggle/meta.ts +18 -0
- package/src/components/log-viewer/log-viewer.tsx +2 -2
- package/src/components/magnetic-button/index.ts +1 -0
- package/src/components/magnetic-button/magnetic-button.tsx +218 -0
- package/src/components/magnetic-button/meta.ts +18 -0
- package/src/components/magnetic-select/index.ts +6 -0
- package/src/components/magnetic-select/magnetic-select-spring.ts +33 -0
- package/src/components/magnetic-select/magnetic-select.tsx +426 -0
- package/src/components/magnetic-select/meta.ts +19 -0
- package/src/components/magnify-dock/index.ts +7 -0
- package/src/components/magnify-dock/magnify-dock.tsx +308 -0
- package/src/components/magnify-dock/meta.ts +21 -0
- package/src/components/marquee/index.ts +1 -0
- package/src/components/marquee/marquee.tsx +215 -0
- package/src/components/marquee/meta.ts +19 -0
- package/src/components/meter/meter.tsx +1 -1
- package/src/components/morph-button/index.ts +7 -0
- package/src/components/morph-button/meta.ts +18 -0
- package/src/components/morph-button/morph-button.tsx +390 -0
- package/src/components/morph-surface/index.ts +7 -0
- package/src/components/morph-surface/meta.ts +21 -0
- package/src/components/morph-surface/morph-surface.tsx +367 -0
- package/src/components/notification-badge/index.ts +6 -0
- package/src/components/notification-badge/meta.ts +19 -0
- package/src/components/notification-badge/notification-badge.tsx +183 -0
- package/src/components/notify-button/index.ts +1 -0
- package/src/components/notify-button/meta.ts +17 -0
- package/src/components/notify-button/notify-button.tsx +194 -0
- package/src/components/now-playing/index.ts +1 -0
- package/src/components/now-playing/meta.ts +19 -0
- package/src/components/now-playing/now-playing.tsx +474 -0
- package/src/components/number-flow/index.ts +10 -0
- package/src/components/number-flow/meta.ts +18 -0
- package/src/components/number-flow/number-flow.tsx +330 -0
- package/src/components/orb-face/index.ts +1 -0
- package/src/components/orb-face/meta.ts +18 -0
- package/src/components/orb-face/orb-face.tsx +431 -0
- package/src/components/otp-input/index.ts +6 -0
- package/src/components/otp-input/meta.ts +21 -0
- package/src/components/otp-input/otp-input.tsx +407 -0
- package/src/components/pagination/index.ts +1 -0
- package/src/components/pagination/meta.ts +4 -2
- package/src/components/pagination/pagination-indicator.tsx +95 -0
- package/src/components/pagination/pagination.tsx +50 -5
- package/src/components/palette-generator/index.ts +8 -0
- package/src/components/palette-generator/meta.ts +17 -0
- package/src/components/palette-generator/palette-generator.tsx +300 -0
- package/src/components/permission-matrix/permission-matrix.tsx +4 -4
- package/src/components/photo-stack/index.ts +1 -0
- package/src/components/photo-stack/meta.ts +19 -0
- package/src/components/photo-stack/photo-stack.tsx +310 -0
- package/src/components/photo-tabs/index.ts +1 -0
- package/src/components/photo-tabs/meta.ts +18 -0
- package/src/components/photo-tabs/photo-tabs.tsx +180 -0
- package/src/components/pixel-avatar/index.ts +1 -0
- package/src/components/pixel-avatar/meta.ts +17 -0
- package/src/components/pixel-avatar/pixel-avatar.tsx +249 -0
- package/src/components/product-card/index.ts +1 -0
- package/src/components/product-card/meta.ts +20 -0
- package/src/components/product-card/product-card.tsx +313 -0
- package/src/components/progress/meta.ts +2 -1
- package/src/components/progress/progress.tsx +123 -27
- package/src/components/pull-to-refresh/index.ts +7 -0
- package/src/components/pull-to-refresh/meta.ts +20 -0
- package/src/components/pull-to-refresh/pull-to-refresh.tsx +421 -0
- package/src/components/radial-menu/index.ts +7 -0
- package/src/components/radial-menu/meta.ts +22 -0
- package/src/components/radial-menu/radial-menu.tsx +441 -0
- package/src/components/radio-group/radio-group.tsx +12 -1
- package/src/components/range-dial/index.ts +1 -0
- package/src/components/range-dial/meta.ts +21 -0
- package/src/components/range-dial/range-dial.tsx +428 -0
- package/src/components/record-diff/record-diff.tsx +4 -4
- package/src/components/reorder-list/index.ts +10 -0
- package/src/components/reorder-list/meta.ts +21 -0
- package/src/components/reorder-list/reorder-list.tsx +627 -0
- package/src/components/reviews-carousel/carousel-controls.tsx +291 -0
- package/src/components/reviews-carousel/index.ts +7 -0
- package/src/components/reviews-carousel/meta.ts +21 -0
- package/src/components/reviews-carousel/reviews-carousel.tsx +301 -0
- package/src/components/rich-popover/index.ts +1 -0
- package/src/components/rich-popover/meta.ts +18 -0
- package/src/components/rich-popover/rich-popover.tsx +228 -0
- package/src/components/ring-loader/index.ts +7 -0
- package/src/components/ring-loader/meta.ts +17 -0
- package/src/components/ring-loader/ring-loader.tsx +795 -0
- package/src/components/scramble-text/index.ts +8 -0
- package/src/components/scramble-text/meta.ts +17 -0
- package/src/components/scramble-text/scramble-text.tsx +250 -0
- package/src/components/scroll-reveal-text/index.ts +6 -0
- package/src/components/scroll-reveal-text/meta.ts +18 -0
- package/src/components/scroll-reveal-text/scroll-reveal-text.tsx +193 -0
- package/src/components/scrubber/index.ts +1 -0
- package/src/components/scrubber/meta.ts +20 -0
- package/src/components/scrubber/scrubber.tsx +348 -0
- package/src/components/select/meta.ts +2 -1
- package/src/components/select/select.tsx +71 -24
- package/src/components/selection-list/index.ts +6 -0
- package/src/components/selection-list/meta.ts +21 -0
- package/src/components/selection-list/selection-list-spring.ts +33 -0
- package/src/components/selection-list/selection-list.tsx +497 -0
- package/src/components/shader-transition/index.ts +21 -0
- package/src/components/shader-transition/meta.ts +23 -0
- package/src/components/shader-transition/shader-transition-engine.ts +396 -0
- package/src/components/shader-transition/shader-transition-presets.ts +424 -0
- package/src/components/shader-transition/shader-transition.tsx +470 -0
- package/src/components/shader-transition/webgl-mock.ts +176 -0
- package/src/components/shape-loader/index.ts +7 -0
- package/src/components/shape-loader/meta.ts +17 -0
- package/src/components/shape-loader/shape-loader-variants.tsx +717 -0
- package/src/components/shape-loader/shape-loader.tsx +149 -0
- package/src/components/sheet/meta.ts +1 -1
- package/src/components/sheet/sheet.tsx +80 -34
- package/src/components/shimmer-text/index.ts +7 -0
- package/src/components/shimmer-text/meta.ts +18 -0
- package/src/components/shimmer-text/shimmer-text.tsx +218 -0
- package/src/components/sidebar/index.ts +19 -0
- package/src/components/sidebar/meta.ts +25 -0
- package/src/components/sidebar/sidebar.tsx +374 -0
- package/src/components/skeleton/index.ts +1 -1
- package/src/components/skeleton/meta.ts +2 -1
- package/src/components/skeleton/skeleton.tsx +49 -7
- package/src/components/slide-to-confirm/index.ts +6 -0
- package/src/components/slide-to-confirm/meta.ts +20 -0
- package/src/components/slide-to-confirm/slide-to-confirm.tsx +519 -0
- package/src/components/slosh-slider/index.ts +6 -0
- package/src/components/slosh-slider/meta.ts +20 -0
- package/src/components/slosh-slider/slosh-slider.tsx +266 -0
- package/src/components/social-selector/index.ts +6 -0
- package/src/components/social-selector/meta.ts +18 -0
- package/src/components/social-selector/social-selector.tsx +247 -0
- package/src/components/star-count/index.ts +1 -0
- package/src/components/star-count/meta.ts +18 -0
- package/src/components/star-count/star-count.tsx +161 -0
- package/src/components/stepper/index.ts +8 -0
- package/src/components/stepper/meta.ts +20 -0
- package/src/components/stepper/stepper.tsx +364 -0
- package/src/components/swipe-carousel/carousel-controls.tsx +148 -0
- package/src/components/swipe-carousel/index.ts +6 -0
- package/src/components/swipe-carousel/meta.ts +21 -0
- package/src/components/swipe-carousel/swipe-carousel.tsx +407 -0
- package/src/components/switch/meta.ts +3 -1
- package/src/components/switch/switch.tsx +69 -4
- package/src/components/switchboard-card/index.ts +6 -0
- package/src/components/switchboard-card/meta.ts +18 -0
- package/src/components/switchboard-card/switchboard-card.tsx +312 -0
- package/src/components/table/table.tsx +3 -3
- package/src/components/tabs/index.ts +1 -0
- package/src/components/tabs/meta.ts +3 -1
- package/src/components/tabs/tabs.tsx +144 -4
- package/src/components/tags-input/meta.ts +2 -1
- package/src/components/tags-input/tags-input.tsx +123 -5
- package/src/components/text-effect/index.ts +10 -0
- package/src/components/text-effect/meta.ts +18 -0
- package/src/components/text-effect/text-effect-presets.ts +305 -0
- package/src/components/text-effect/text-effect.tsx +454 -0
- package/src/components/text-loader/index.ts +7 -0
- package/src/components/text-loader/meta.ts +17 -0
- package/src/components/text-loader/text-loader.tsx +585 -0
- package/src/components/text-swap/index.ts +9 -0
- package/src/components/text-swap/meta.ts +20 -0
- package/src/components/text-swap/text-rotate.tsx +76 -0
- package/src/components/text-swap/text-swap.tsx +414 -0
- package/src/components/textarea/index.ts +1 -0
- package/src/components/textarea/meta.ts +21 -0
- package/src/components/textarea/textarea.tsx +210 -0
- package/src/components/tick-progress/index.ts +1 -0
- package/src/components/tick-progress/meta.ts +19 -0
- package/src/components/tick-progress/tick-progress.tsx +253 -0
- package/src/components/tilt-card/index.ts +6 -0
- package/src/components/tilt-card/meta.ts +18 -0
- package/src/components/tilt-card/tilt-card.tsx +256 -0
- package/src/components/time-range-picker/time-range-picker.tsx +3 -3
- package/src/components/time-stack/index.ts +6 -0
- package/src/components/time-stack/meta.ts +19 -0
- package/src/components/time-stack/time-stack.tsx +385 -0
- package/src/components/toast/meta.ts +2 -1
- package/src/components/toast/toast.tsx +81 -15
- package/src/components/todo-tower/index.ts +1 -0
- package/src/components/todo-tower/meta.ts +18 -0
- package/src/components/todo-tower/todo-tower.tsx +429 -0
- package/src/components/tooltip/meta.ts +1 -1
- package/src/components/tooltip/tooltip.tsx +39 -15
- package/src/components/tweet-card/index.ts +11 -0
- package/src/components/tweet-card/meta.ts +19 -0
- package/src/components/tweet-card/tweet-card.tsx +372 -0
- package/src/components/typewriter-text/index.ts +6 -0
- package/src/components/typewriter-text/meta.ts +17 -0
- package/src/components/typewriter-text/typewriter-text.tsx +214 -0
- package/src/components/uptime-matrix/index.ts +11 -0
- package/src/components/uptime-matrix/meta.ts +20 -0
- package/src/components/uptime-matrix/uptime-matrix.tsx +443 -0
- package/src/index.ts +114 -0
- package/src/lib/styles.ts +16 -0
- package/src/registry/blocks.ts +86 -0
- package/src/registry/components.ts +228 -0
- package/src/registry/schema.ts +9 -0
- package/src/blocks/admin-users/admin-users.tsx +0 -251
- package/src/blocks/admin-users/index.ts +0 -1
- package/src/blocks/admin-users/meta.ts +0 -27
- package/src/blocks/ai-chat/ai-chat.tsx +0 -280
- package/src/blocks/ai-chat/index.ts +0 -7
- package/src/blocks/ai-chat/meta.ts +0 -32
- package/src/blocks/dashboard/dashboard.tsx +0 -192
- package/src/blocks/dashboard/index.ts +0 -6
- package/src/blocks/dashboard/meta.ts +0 -18
- package/src/blocks/forgot-password/forgot-password.tsx +0 -158
- package/src/blocks/forgot-password/index.ts +0 -1
- package/src/blocks/forgot-password/meta.ts +0 -18
- package/src/blocks/login/index.ts +0 -1
- package/src/blocks/login/login.tsx +0 -178
- package/src/blocks/login/meta.ts +0 -18
- package/src/blocks/pricing/index.ts +0 -1
- package/src/blocks/pricing/meta.ts +0 -18
- package/src/blocks/pricing/pricing.tsx +0 -176
- package/src/blocks/settings/index.ts +0 -6
- package/src/blocks/settings/meta.ts +0 -29
- package/src/blocks/settings/settings.tsx +0 -317
- package/src/blocks/signup/index.ts +0 -1
- package/src/blocks/signup/meta.ts +0 -18
- package/src/blocks/signup/signup.tsx +0 -240
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox.js","names":["PopoverPrimitive"],"sources":["../../../src/components/combobox/combobox.tsx"],"sourcesContent":["\"use client\";\n\nimport { Popover as PopoverPrimitive } from \"radix-ui\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithRef,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from \"react\";\n\nimport { focusRing } from \"@/lib/styles\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * A searchable single-select.\n *\n * Implements the ARIA combobox pattern directly on a popover rather than\n * depending on a command-menu package: the input owns `role=\"combobox\"`, the\n * list owns `role=\"listbox\"`, and the active option is tracked with\n * `aria-activedescendant` so focus never leaves the input while typing.\n *\n * Navigation reads the rendered options from the DOM rather than a registry,\n * which keeps the active option correct as filtering adds and removes items —\n * a registry has to be kept in sync with what is actually on screen, and drifts.\n *\n * This version is single-select and flat. Multi-select and grouping can be\n * added without changing this API.\n */\n\n/** Default match: case-insensitive substring over the value and any keywords. */\nexport function defaultComboboxFilter(search: string, haystack: string[]): boolean {\n const needle = search.trim().toLowerCase();\n if (!needle) return true;\n return haystack.some((entry) => entry.toLowerCase().includes(needle));\n}\n\ninterface ComboboxContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n search: string;\n setSearch: (search: string) => void;\n value: string | undefined;\n select: (value: string) => void;\n activeValue: string | undefined;\n setActiveValue: (value: string | undefined) => void;\n filter: (search: string, haystack: string[]) => boolean;\n listId: string;\n inputId: string;\n optionId: (value: string) => string;\n listRef: React.RefObject<HTMLDivElement | null>;\n registerVisible: (value: string, visible: boolean) => void;\n visibleCount: number;\n}\n\nconst ComboboxContext = createContext<ComboboxContextValue | null>(null);\n\nfunction useCombobox(component: string): ComboboxContextValue {\n const context = useContext(ComboboxContext);\n if (!context) {\n throw new Error(`${component} must be rendered inside <Combobox>.`);\n }\n return context;\n}\n\nexport interface ComboboxProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Overrides how a search string is matched against an option. */\n filter?: (search: string, haystack: string[]) => boolean;\n children?: ReactNode;\n}\n\nexport function Combobox({\n value: valueProp,\n defaultValue,\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n filter = defaultComboboxFilter,\n children,\n}: ComboboxProps) {\n const uid = useId();\n\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = valueProp === undefined ? uncontrolledValue : valueProp;\n\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const open = openProp === undefined ? uncontrolledOpen : openProp;\n\n const [search, setSearch] = useState(\"\");\n const [activeValue, setActiveValue] = useState<string | undefined>(undefined);\n const listRef = useRef<HTMLDivElement | null>(null);\n\n // Counted rather than listed: the empty state only needs to know whether\n // anything survived the filter.\n const visibleValues = useRef(new Set<string>());\n const [visibleCount, setVisibleCount] = useState(0);\n\n const registerVisible = useCallback((optionValue: string, visible: boolean) => {\n const set = visibleValues.current;\n const had = set.has(optionValue);\n if (visible && !had) set.add(optionValue);\n else if (!visible && had) set.delete(optionValue);\n else return;\n setVisibleCount(set.size);\n }, []);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (openProp === undefined) setUncontrolledOpen(next);\n onOpenChange?.(next);\n // Reopening should start from a clean search rather than resuming a\n // half-typed query the user has forgotten about.\n if (!next) {\n setSearch(\"\");\n setActiveValue(undefined);\n }\n },\n [openProp, onOpenChange],\n );\n\n const select = useCallback(\n (next: string) => {\n if (valueProp === undefined) setUncontrolledValue(next);\n onValueChange?.(next);\n setOpen(false);\n },\n [valueProp, onValueChange, setOpen],\n );\n\n const context = useMemo<ComboboxContextValue>(\n () => ({\n open,\n setOpen,\n search,\n setSearch,\n value,\n select,\n activeValue,\n setActiveValue,\n filter,\n listId: `${uid}-list`,\n inputId: `${uid}-input`,\n optionId: (optionValue: string) =>\n `${uid}-option-${optionValue.replace(/\\s+/g, \"-\").toLowerCase()}`,\n listRef,\n registerVisible,\n visibleCount,\n }),\n [\n open,\n setOpen,\n search,\n value,\n select,\n activeValue,\n filter,\n uid,\n registerVisible,\n visibleCount,\n ],\n );\n\n return (\n <ComboboxContext.Provider value={context}>\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n {children}\n </PopoverPrimitive.Root>\n </ComboboxContext.Provider>\n );\n}\n\nexport interface ComboboxTriggerProps extends ComponentPropsWithRef<\"button\"> {\n /** Shown when nothing is selected. */\n placeholder?: string;\n}\n\nexport function ComboboxTrigger({\n className,\n placeholder = \"Select…\",\n children,\n ...props\n}: ComboboxTriggerProps) {\n const { value, open } = useCombobox(\"ComboboxTrigger\");\n\n return (\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n data-slot=\"combobox-trigger\"\n aria-expanded={open}\n className={cn(\n \"flex h-9 w-full items-center justify-between gap-2 rounded-md border border-input bg-background\",\n \"px-3 text-sm shadow-xs transition-[border-color,box-shadow] duration-[var(--duration-fast)]\",\n \"focus-visible:border-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-55\",\n \"aria-invalid:border-destructive\",\n focusRing,\n className,\n )}\n {...props}\n >\n <span className={cn(\"truncate\", !value && \"text-muted-foreground\")}>\n {children ?? value ?? placeholder}\n </span>\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n className=\"size-4 shrink-0 opacity-60\"\n >\n <path\n d=\"m7 10 5 5 5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </PopoverPrimitive.Trigger>\n );\n}\n\nexport interface ComboboxContentProps extends ComponentPropsWithRef<\n typeof PopoverPrimitive.Content\n> {\n /** Names the popover, which carries role=\"dialog\". */\n label?: string;\n}\n\nexport function ComboboxContent({\n className,\n align = \"start\",\n sideOffset = 6,\n label = \"Search options\",\n children,\n ...props\n}: ComboboxContentProps) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"combobox-content\"\n align={align}\n sideOffset={sideOffset}\n aria-label={label}\n // Focus belongs in the search input, which the input claims on mount.\n onOpenAutoFocus={(event) => {\n event.preventDefault();\n }}\n className={cn(\n \"z-[var(--z-popover)] w-[var(--radix-popover-trigger-width)] min-w-48 overflow-hidden\",\n \"rounded-lg border border-border bg-popover p-0 text-popover-foreground shadow-lg\",\n \"origin-[var(--radix-popover-content-transform-origin)]\",\n \"data-[state=closed]:animate-float-out data-[state=open]:animate-float-in\",\n className,\n )}\n {...props}\n >\n {children}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n );\n}\n\n/** Options currently rendered, in DOM order and excluding disabled ones. */\nfunction visibleOptions(list: HTMLElement | null): HTMLElement[] {\n if (!list) return [];\n return Array.from(list.querySelectorAll<HTMLElement>('[role=\"option\"]:not([data-disabled])'));\n}\n\nexport type ComboboxInputProps = Omit<ComponentPropsWithRef<\"input\">, \"value\" | \"onChange\">;\n\nexport function ComboboxInput({ className, ...props }: ComboboxInputProps) {\n const {\n search,\n setSearch,\n activeValue,\n setActiveValue,\n select,\n setOpen,\n listId,\n inputId,\n optionId,\n listRef,\n } = useCombobox(\"ComboboxInput\");\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n useEffect(() => {\n inputRef.current?.focus();\n }, []);\n\n const move = useCallback(\n (delta: number | \"first\" | \"last\") => {\n const options = visibleOptions(listRef.current);\n if (options.length === 0) return;\n\n const currentIndex = options.findIndex((option) => option.dataset.value === activeValue);\n\n let nextIndex: number;\n if (delta === \"first\") nextIndex = 0;\n else if (delta === \"last\") nextIndex = options.length - 1;\n else if (currentIndex === -1) nextIndex = delta > 0 ? 0 : options.length - 1;\n // Wraps, so holding an arrow key never dead-ends at the edge of the list.\n else nextIndex = (currentIndex + delta + options.length) % options.length;\n\n const next = options[nextIndex];\n if (!next) return;\n setActiveValue(next.dataset.value);\n next.scrollIntoView({ block: \"nearest\" });\n },\n [activeValue, listRef, setActiveValue],\n );\n\n function handleKeyDown(event: ReactKeyboardEvent<HTMLInputElement>) {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n move(1);\n break;\n case \"ArrowUp\":\n event.preventDefault();\n move(-1);\n break;\n case \"Home\":\n event.preventDefault();\n move(\"first\");\n break;\n case \"End\":\n event.preventDefault();\n move(\"last\");\n break;\n case \"Enter\": {\n if (activeValue === undefined) return;\n event.preventDefault();\n select(activeValue);\n break;\n }\n case \"Escape\":\n event.preventDefault();\n setOpen(false);\n break;\n default:\n break;\n }\n }\n\n return (\n <div className=\"flex items-center gap-2 border-b border-border px-3\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n className=\"size-4 shrink-0 opacity-55\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"m20 20-3.5-3.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n <input\n ref={inputRef}\n id={inputId}\n data-slot=\"combobox-input\"\n type=\"text\"\n role=\"combobox\"\n autoComplete=\"off\"\n aria-expanded=\"true\"\n aria-controls={listId}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeValue ? optionId(activeValue) : undefined}\n value={search}\n onChange={(event) => {\n setSearch(event.target.value);\n // The previous active option may have just been filtered out.\n setActiveValue(undefined);\n }}\n onKeyDown={handleKeyDown}\n className={cn(\n \"h-10 w-full bg-transparent text-sm outline-none placeholder:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nexport function ComboboxList({ className, ...props }: ComponentPropsWithRef<\"div\">) {\n const { listId, listRef } = useCombobox(\"ComboboxList\");\n\n return (\n <div\n ref={listRef}\n id={listId}\n role=\"listbox\"\n data-slot=\"combobox-list\"\n className={cn(\"max-h-64 overflow-y-auto overscroll-contain p-1\", className)}\n {...props}\n />\n );\n}\n\nexport interface ComboboxItemProps extends Omit<\n ComponentPropsWithRef<\"div\">,\n \"onSelect\" | \"children\"\n> {\n /** The value reported by onValueChange, and the primary search term. */\n value: string;\n /** Extra search terms that are not shown, such as synonyms or an id. */\n keywords?: string[];\n disabled?: boolean;\n children?: ReactNode;\n}\n\nexport function ComboboxItem({\n className,\n value,\n keywords,\n disabled,\n children,\n ...props\n}: ComboboxItemProps) {\n const {\n search,\n filter,\n value: selectedValue,\n activeValue,\n setActiveValue,\n select,\n optionId,\n registerVisible,\n } = useCombobox(\"ComboboxItem\");\n\n // A string child is the visible label, so it is searchable for free. Richer\n // children cannot be read purely, so those pass `keywords` instead.\n const haystack = useMemo(\n () => [value, ...(keywords ?? []), typeof children === \"string\" ? children : \"\"],\n [value, keywords, children],\n );\n\n const visible = filter(search, haystack);\n const selected = selectedValue === value;\n const active = activeValue === value;\n\n useEffect(() => {\n registerVisible(value, visible && !disabled);\n return () => {\n registerVisible(value, false);\n };\n }, [registerVisible, value, visible, disabled]);\n\n if (!visible) return null;\n\n return (\n <div\n id={optionId(value)}\n role=\"option\"\n data-slot=\"combobox-item\"\n data-value={value}\n data-active={active || undefined}\n data-disabled={disabled || undefined}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n // Programmatically focusable but out of the tab order: in an\n // aria-activedescendant listbox the input keeps real focus and options are\n // only virtually focused, so they must never become tab stops.\n tabIndex={-1}\n onPointerMove={() => {\n if (!disabled) setActiveValue(value);\n }}\n onMouseDown={(event) => {\n // Without this, pressing on an option blurs the search input, which\n // breaks aria-activedescendant and can dismiss the popover before the\n // click ever lands.\n event.preventDefault();\n }}\n onClick={() => {\n if (!disabled) select(value);\n }}\n onKeyDown={(event) => {\n // Reachable only if a consumer focuses an option directly; the normal\n // path is Enter on the input, handled by ComboboxInput.\n if (disabled) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n select(value);\n }\n }}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-md py-1.5 pr-8 pl-2 text-sm outline-none select-none\",\n \"transition-colors duration-[var(--duration-instant)]\",\n \"data-[active]:bg-accent data-[active]:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-55\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children ?? value}\n {selected ? (\n <span className=\"absolute right-2 grid size-4 place-items-center\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\" className=\"size-3.5\">\n <path\n d=\"m5 13 4 4L19 7\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n ) : null}\n </div>\n );\n}\n\n/** Shown only when the filter leaves nothing. */\nexport function ComboboxEmpty({ className, children, ...props }: ComponentPropsWithRef<\"div\">) {\n const { visibleCount } = useCombobox(\"ComboboxEmpty\");\n if (visibleCount > 0) return null;\n\n return (\n <div\n data-slot=\"combobox-empty\"\n role=\"presentation\"\n className={cn(\"px-3 py-6 text-center text-sm text-muted-foreground\", className)}\n {...props}\n >\n {children ?? \"No results found.\"}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAqCA,SAAgB,sBAAsB,QAAgB,UAA6B;CACjF,MAAM,SAAS,OAAO,KAAK,CAAC,CAAC,YAAY;CACzC,IAAI,CAAC,QAAQ,OAAO;CACpB,OAAO,SAAS,MAAM,UAAU,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC;AACtE;AAoBA,MAAM,kBAAkB,cAA2C,IAAI;AAEvE,SAAS,YAAY,WAAyC;CAC5D,MAAM,UAAU,WAAW,eAAe;CAC1C,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,GAAG,UAAU,qCAAqC;CAEpE,OAAO;AACT;AAcA,SAAgB,SAAS,EACvB,OAAO,WACP,cACA,eACA,MAAM,UACN,cAAc,OACd,cACA,SAAS,uBACT,YACgB;CAChB,MAAM,MAAM,MAAM;CAElB,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,YAAY;CACvE,MAAM,QAAQ,cAAc,KAAA,IAAY,oBAAoB;CAE5D,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,WAAW;CACpE,MAAM,OAAO,aAAa,KAAA,IAAY,mBAAmB;CAEzD,MAAM,CAAC,QAAQ,aAAa,SAAS,EAAE;CACvC,MAAM,CAAC,aAAa,kBAAkB,SAA6B,KAAA,CAAS;CAC5E,MAAM,UAAU,OAA8B,IAAI;CAIlD,MAAM,gBAAgB,uBAAO,IAAI,IAAY,CAAC;CAC9C,MAAM,CAAC,cAAc,mBAAmB,SAAS,CAAC;CAElD,MAAM,kBAAkB,aAAa,aAAqB,YAAqB;EAC7E,MAAM,MAAM,cAAc;EAC1B,MAAM,MAAM,IAAI,IAAI,WAAW;EAC/B,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,WAAW;OACnC,IAAI,CAAC,WAAW,KAAK,IAAI,OAAO,WAAW;OAC3C;EACL,gBAAgB,IAAI,IAAI;CAC1B,GAAG,CAAC,CAAC;CAEL,MAAM,UAAU,aACb,SAAkB;EACjB,IAAI,aAAa,KAAA,GAAW,oBAAoB,IAAI;EACpD,eAAe,IAAI;EAGnB,IAAI,CAAC,MAAM;GACT,UAAU,EAAE;GACZ,eAAe,KAAA,CAAS;EAC1B;CACF,GACA,CAAC,UAAU,YAAY,CACzB;CAEA,MAAM,SAAS,aACZ,SAAiB;EAChB,IAAI,cAAc,KAAA,GAAW,qBAAqB,IAAI;EACtD,gBAAgB,IAAI;EACpB,QAAQ,KAAK;CACf,GACA;EAAC;EAAW;EAAe;CAAO,CACpC;CAEA,MAAM,UAAU,eACP;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ,GAAG,IAAI;EACf,SAAS,GAAG,IAAI;EAChB,WAAW,gBACT,GAAG,IAAI,UAAU,YAAY,QAAQ,QAAQ,GAAG,CAAC,CAAC,YAAY;EAChE;EACA;EACA;CACF,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CAEA,OACE,oBAAC,gBAAgB,UAAjB;EAA0B,OAAO;EAC/B,UAAA,oBAACA,QAAiB,MAAlB;GAA6B;GAAM,cAAc;GAC9C;EACoB,CAAA;CACC,CAAA;AAE9B;AAOA,SAAgB,gBAAgB,EAC9B,WACA,cAAc,WACd,UACA,GAAG,SACoB;CACvB,MAAM,EAAE,OAAO,SAAS,YAAY,iBAAiB;CAErD,OACE,oBAACA,QAAiB,SAAlB;EAA0B,SAAA;EACxB,UAAA,qBAAC,UAAD;GACE,MAAK;GACL,aAAU;GACV,iBAAe;GACf,WAAW,GACT,mGACA,+FACA,6BACA,mDACA,mCACA,WACA,SACF;GACA,GAAI;GAbN,UAAA,CAeE,oBAAC,QAAD;IAAM,WAAW,GAAG,YAAY,CAAC,SAAS,uBAAuB;IAC9D,UAAA,YAAY,SAAS;GAClB,CAAA,GACN,oBAAC,OAAD;IACE,SAAQ;IACR,MAAK;IACL,eAAY;IACZ,WAAU;IAEV,UAAA,oBAAC,QAAD;KACE,GAAE;KACF,QAAO;KACP,aAAY;KACZ,eAAc;KACd,gBAAe;IAChB,CAAA;GACE,CAAA,CACC;;CACgB,CAAA;AAE9B;AASA,SAAgB,gBAAgB,EAC9B,WACA,QAAQ,SACR,aAAa,GACb,QAAQ,kBACR,UACA,GAAG,SACoB;CACvB,OACE,oBAACA,QAAiB,QAAlB,EAAA,UACE,oBAACA,QAAiB,SAAlB;EACE,aAAU;EACH;EACK;EACZ,cAAY;EAEZ,kBAAkB,UAAU;GAC1B,MAAM,eAAe;EACvB;EACA,WAAW,GACT,wFACA,oFACA,0DACA,4EACA,SACF;EACA,GAAI;EAEH;CACuB,CAAA,EACH,CAAA;AAE7B;;AAGA,SAAS,eAAe,MAAyC;CAC/D,IAAI,CAAC,MAAM,OAAO,CAAC;CACnB,OAAO,MAAM,KAAK,KAAK,iBAA8B,wCAAsC,CAAC;AAC9F;AAIA,SAAgB,cAAc,EAAE,WAAW,GAAG,SAA6B;CACzE,MAAM,EACJ,QACA,WACA,aACA,gBACA,QACA,SACA,QACA,SACA,UACA,YACE,YAAY,eAAe;CAE/B,MAAM,WAAW,OAAgC,IAAI;CAErD,gBAAgB;EACd,SAAS,SAAS,MAAM;CAC1B,GAAG,CAAC,CAAC;CAEL,MAAM,OAAO,aACV,UAAqC;EACpC,MAAM,UAAU,eAAe,QAAQ,OAAO;EAC9C,IAAI,QAAQ,WAAW,GAAG;EAE1B,MAAM,eAAe,QAAQ,WAAW,WAAW,OAAO,QAAQ,UAAU,WAAW;EAEvF,IAAI;EACJ,IAAI,UAAU,SAAS,YAAY;OAC9B,IAAI,UAAU,QAAQ,YAAY,QAAQ,SAAS;OACnD,IAAI,iBAAiB,IAAI,YAAY,QAAQ,IAAI,IAAI,QAAQ,SAAS;OAEtE,aAAa,eAAe,QAAQ,QAAQ,UAAU,QAAQ;EAEnE,MAAM,OAAO,QAAQ;EACrB,IAAI,CAAC,MAAM;EACX,eAAe,KAAK,QAAQ,KAAK;EACjC,KAAK,eAAe,EAAE,OAAO,UAAU,CAAC;CAC1C,GACA;EAAC;EAAa;EAAS;CAAc,CACvC;CAEA,SAAS,cAAc,OAA6C;EAClE,QAAQ,MAAM,KAAd;GACE,KAAK;IACH,MAAM,eAAe;IACrB,KAAK,CAAC;IACN;GACF,KAAK;IACH,MAAM,eAAe;IACrB,KAAK,EAAE;IACP;GACF,KAAK;IACH,MAAM,eAAe;IACrB,KAAK,OAAO;IACZ;GACF,KAAK;IACH,MAAM,eAAe;IACrB,KAAK,MAAM;IACX;GACF,KAAK;IACH,IAAI,gBAAgB,KAAA,GAAW;IAC/B,MAAM,eAAe;IACrB,OAAO,WAAW;IAClB;GAEF,KAAK;IACH,MAAM,eAAe;IACrB,QAAQ,KAAK;EAIjB;CACF;CAEA,OACE,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,qBAAC,OAAD;GACE,SAAQ;GACR,MAAK;GACL,eAAY;GACZ,WAAU;GAJZ,UAAA,CAME,oBAAC,UAAD;IAAQ,IAAG;IAAK,IAAG;IAAK,GAAE;IAAI,QAAO;IAAe,aAAY;GAAK,CAAA,GACrE,oBAAC,QAAD;IAAM,GAAE;IAAiB,QAAO;IAAe,aAAY;IAAI,eAAc;GAAS,CAAA,CACnF;EACL,CAAA,GAAA,oBAAC,SAAD;GACE,KAAK;GACL,IAAI;GACJ,aAAU;GACV,MAAK;GACL,MAAK;GACL,cAAa;GACb,iBAAc;GACd,iBAAe;GACf,qBAAkB;GAClB,yBAAuB,cAAc,SAAS,WAAW,IAAI,KAAA;GAC7D,OAAO;GACP,WAAW,UAAU;IACnB,UAAU,MAAM,OAAO,KAAK;IAE5B,eAAe,KAAA,CAAS;GAC1B;GACA,WAAW;GACX,WAAW,GACT,qFACA,SACF;GACA,GAAI;EACL,CAAA,CACE;;AAET;AAEA,SAAgB,aAAa,EAAE,WAAW,GAAG,SAAuC;CAClF,MAAM,EAAE,QAAQ,YAAY,YAAY,cAAc;CAEtD,OACE,oBAAC,OAAD;EACE,KAAK;EACL,IAAI;EACJ,MAAK;EACL,aAAU;EACV,WAAW,GAAG,mDAAmD,SAAS;EAC1E,GAAI;CACL,CAAA;AAEL;AAcA,SAAgB,aAAa,EAC3B,WACA,OACA,UACA,UACA,UACA,GAAG,SACiB;CACpB,MAAM,EACJ,QACA,QACA,OAAO,eACP,aACA,gBACA,QACA,UACA,oBACE,YAAY,cAAc;CAS9B,MAAM,UAAU,OAAO,QALN,cACT;EAAC;EAAO,GAAI,YAAY,CAAC;EAAI,OAAO,aAAa,WAAW,WAAW;CAAE,GAC/E;EAAC;EAAO;EAAU;CAAQ,CAGU,CAAC;CACvC,MAAM,WAAW,kBAAkB;CACnC,MAAM,SAAS,gBAAgB;CAE/B,gBAAgB;EACd,gBAAgB,OAAO,WAAW,CAAC,QAAQ;EAC3C,aAAa;GACX,gBAAgB,OAAO,KAAK;EAC9B;CACF,GAAG;EAAC;EAAiB;EAAO;EAAS;CAAQ,CAAC;CAE9C,IAAI,CAAC,SAAS,OAAO;CAErB,OACE,qBAAC,OAAD;EACE,IAAI,SAAS,KAAK;EAClB,MAAK;EACL,aAAU;EACV,cAAY;EACZ,eAAa,UAAU,KAAA;EACvB,iBAAe,YAAY,KAAA;EAC3B,iBAAe;EACf,iBAAe,YAAY,KAAA;EAI3B,UAAU;EACV,qBAAqB;GACnB,IAAI,CAAC,UAAU,eAAe,KAAK;EACrC;EACA,cAAc,UAAU;GAItB,MAAM,eAAe;EACvB;EACA,eAAe;GACb,IAAI,CAAC,UAAU,OAAO,KAAK;EAC7B;EACA,YAAY,UAAU;GAGpB,IAAI,UAAU;GACd,IAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,KAAK;IAC9C,MAAM,eAAe;IACrB,OAAO,KAAK;GACd;EACF;EACA,WAAW,GACT,gHACA,wDACA,gEACA,kEACA,qFACA,SACF;EACA,GAAI;EA1CN,UAAA,CA4CG,YAAY,OACZ,WACC,oBAAC,QAAD;GAAM,WAAU;GACd,UAAA,oBAAC,OAAD;IAAK,SAAQ;IAAY,MAAK;IAAO,eAAY;IAAO,WAAU;IAChE,UAAA,oBAAC,QAAD;KACE,GAAE;KACF,QAAO;KACP,aAAY;KACZ,eAAc;KACd,gBAAe;IAChB,CAAA;GACE,CAAA;EACD,CAAA,IACJ,IACD;;AAET;;AAGA,SAAgB,cAAc,EAAE,WAAW,UAAU,GAAG,SAAuC;CAC7F,MAAM,EAAE,iBAAiB,YAAY,eAAe;CACpD,IAAI,eAAe,GAAG,OAAO;CAE7B,OACE,oBAAC,OAAD;EACE,aAAU;EACV,MAAK;EACL,WAAW,GAAG,uDAAuD,SAAS;EAC9E,GAAI;EAEH,UAAA,YAAY;CACV,CAAA;AAET"}
|
|
1
|
+
{"version":3,"file":"combobox.js","names":["PopoverPrimitive"],"sources":["../../../src/components/combobox/combobox.tsx"],"sourcesContent":["\"use client\";\n\n// Motion from SmoothUI Combobox and SearchableDropdown (MIT, © 2024 Eduardo Calvo). See THIRD_PARTY_NOTICES.md.\n\nimport { Popover as PopoverPrimitive } from \"radix-ui\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithRef,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from \"react\";\n\nimport { focusRing } from \"@/lib/styles\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * A searchable single-select.\n *\n * Implements the ARIA combobox pattern directly on a popover rather than\n * depending on a command-menu package: the input owns `role=\"combobox\"`, the\n * list owns `role=\"listbox\"`, and the active option is tracked with\n * `aria-activedescendant` so focus never leaves the input while typing.\n *\n * Navigation reads the rendered options from the DOM rather than a registry,\n * which keeps the active option correct as filtering adds and removes items —\n * a registry has to be kept in sync with what is actually on screen, and drifts.\n *\n * This version is single-select and flat. Multi-select and grouping can be\n * added without changing this API.\n */\n\n/** Default match: case-insensitive substring over the value and any keywords. */\nexport function defaultComboboxFilter(search: string, haystack: string[]): boolean {\n const needle = search.trim().toLowerCase();\n if (!needle) return true;\n return haystack.some((entry) => entry.toLowerCase().includes(needle));\n}\n\ninterface ComboboxContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n search: string;\n setSearch: (search: string) => void;\n value: string | undefined;\n select: (value: string) => void;\n activeValue: string | undefined;\n setActiveValue: (value: string | undefined) => void;\n filter: (search: string, haystack: string[]) => boolean;\n listId: string;\n inputId: string;\n optionId: (value: string) => string;\n listRef: React.RefObject<HTMLDivElement | null>;\n registerVisible: (value: string, visible: boolean) => void;\n visibleCount: number;\n loading: boolean;\n}\n\nconst ComboboxContext = createContext<ComboboxContextValue | null>(null);\n\nfunction useCombobox(component: string): ComboboxContextValue {\n const context = useContext(ComboboxContext);\n if (!context) {\n throw new Error(`${component} must be rendered inside <Combobox>.`);\n }\n return context;\n}\n\nexport interface ComboboxProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Overrides how a search string is matched against an option. */\n filter?: (search: string, haystack: string[]) => boolean;\n /**\n * Set `false` when the options are already the results for the search — for\n * example when `onSearchChange` fetches them — so they are not filtered twice.\n */\n shouldFilter?: boolean;\n /** Called as the search text changes, including the reset when it closes. */\n onSearchChange?: (search: string) => void;\n /** Milliseconds of quiet typing before `onSearchChange` fires. */\n searchDebounce?: number;\n /**\n * Results are on their way: the listbox is `aria-busy`, `ComboboxLoading`\n * shows and `ComboboxEmpty` holds back, so \"No results\" never flashes first.\n */\n loading?: boolean;\n /** Choosing the selected option again clears it, reporting `\"\"`. */\n allowDeselect?: boolean;\n children?: ReactNode;\n}\n\n/*\n * Motion (SmoothUI's Combobox): options rise in, the first few a beat apart,\n * and the trigger's chevron turns while open. Keyframes ship with the\n * component (ADR 0014); every duration and delay runs on the motion scale.\n */\nconst ITEM_STAGGER = Array.from(\n { length: 8 },\n (_, index) =>\n `[data-slot=\"combobox-item\"]:nth-child(${String(index + 2)}){animation-delay:calc(${String((index + 1) * 20)}ms * var(--motion-scale, 1))}`,\n).join(\"\");\n\nconst ITEM_KEYFRAMES = `\n@keyframes dowel-combobox-item-in{from{opacity:0;transform:translateY(0.25rem)}}\n[data-slot=\"combobox-item\"]{animation:dowel-combobox-item-in var(--duration-normal) var(--ease-out-quint) backwards}\n${ITEM_STAGGER}\n`;\n\nexport function Combobox({\n value: valueProp,\n defaultValue,\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n filter: filterProp = defaultComboboxFilter,\n shouldFilter = true,\n onSearchChange,\n searchDebounce = 0,\n loading = false,\n allowDeselect = false,\n children,\n}: ComboboxProps) {\n const uid = useId();\n const filter = shouldFilter ? filterProp : acceptAll;\n\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = valueProp === undefined ? uncontrolledValue : valueProp;\n\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const open = openProp === undefined ? uncontrolledOpen : openProp;\n\n const [search, setSearchState] = useState(\"\");\n const searchRef = useRef(\"\");\n const debounceRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const onSearchChangeRef = useRef(onSearchChange);\n useEffect(() => {\n onSearchChangeRef.current = onSearchChange;\n }, [onSearchChange]);\n\n const setSearch = useCallback(\n (next: string) => {\n if (next === searchRef.current) return;\n searchRef.current = next;\n setSearchState(next);\n clearTimeout(debounceRef.current);\n if (searchDebounce <= 0) {\n onSearchChangeRef.current?.(next);\n return;\n }\n debounceRef.current = setTimeout(() => {\n onSearchChangeRef.current?.(next);\n }, searchDebounce);\n },\n [searchDebounce],\n );\n\n useEffect(\n () => () => {\n clearTimeout(debounceRef.current);\n },\n [],\n );\n const [activeValue, setActiveValue] = useState<string | undefined>(undefined);\n const listRef = useRef<HTMLDivElement | null>(null);\n\n // Counted rather than listed: the empty state only needs to know whether\n // anything survived the filter.\n const visibleValues = useRef(new Set<string>());\n const [visibleCount, setVisibleCount] = useState(0);\n\n const registerVisible = useCallback((optionValue: string, visible: boolean) => {\n const set = visibleValues.current;\n const had = set.has(optionValue);\n if (visible && !had) set.add(optionValue);\n else if (!visible && had) set.delete(optionValue);\n else return;\n setVisibleCount(set.size);\n }, []);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (openProp === undefined) setUncontrolledOpen(next);\n onOpenChange?.(next);\n // Reopening should start from a clean search rather than resuming a\n // half-typed query the user has forgotten about.\n if (!next) {\n setSearch(\"\");\n setActiveValue(undefined);\n }\n },\n [openProp, onOpenChange, setSearch],\n );\n\n const select = useCallback(\n (chosen: string) => {\n const next = allowDeselect && chosen === value ? \"\" : chosen;\n if (valueProp === undefined) setUncontrolledValue(next || undefined);\n onValueChange?.(next);\n setOpen(false);\n },\n [valueProp, onValueChange, setOpen, allowDeselect, value],\n );\n\n const context = useMemo<ComboboxContextValue>(\n () => ({\n open,\n setOpen,\n search,\n setSearch,\n value,\n select,\n activeValue,\n setActiveValue,\n filter,\n listId: `${uid}-list`,\n inputId: `${uid}-input`,\n optionId: (optionValue: string) =>\n `${uid}-option-${optionValue.replace(/\\s+/g, \"-\").toLowerCase()}`,\n listRef,\n registerVisible,\n visibleCount,\n loading,\n }),\n [\n open,\n setOpen,\n search,\n setSearch,\n loading,\n value,\n select,\n activeValue,\n filter,\n uid,\n registerVisible,\n visibleCount,\n ],\n );\n\n return (\n <ComboboxContext.Provider value={context}>\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n {children}\n </PopoverPrimitive.Root>\n </ComboboxContext.Provider>\n );\n}\n\nfunction acceptAll(): boolean {\n return true;\n}\n\nexport interface ComboboxTriggerProps extends ComponentPropsWithRef<\"button\"> {\n /** Shown when nothing is selected. */\n placeholder?: string;\n}\n\nexport function ComboboxTrigger({\n className,\n placeholder = \"Select…\",\n children,\n ...props\n}: ComboboxTriggerProps) {\n const { value, open } = useCombobox(\"ComboboxTrigger\");\n\n return (\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n data-slot=\"combobox-trigger\"\n aria-expanded={open}\n className={cn(\n \"flex h-9 w-full items-center justify-between gap-2 rounded-md border border-input bg-background\",\n \"px-3 text-sm shadow-xs transition-[border-color,box-shadow] duration-[var(--duration-fast)]\",\n \"focus-visible:border-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-55\",\n \"aria-invalid:border-destructive\",\n focusRing,\n className,\n )}\n {...props}\n >\n <span className={cn(\"truncate\", !value && \"text-muted-foreground\")}>\n {children ?? value ?? placeholder}\n </span>\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n data-slot=\"combobox-chevron\"\n className={cn(\n \"size-4 shrink-0 opacity-60\",\n \"transition-[rotate] duration-[var(--duration-normal)] ease-[var(--ease-out-quint)]\",\n open && \"rotate-180\",\n )}\n >\n <path\n d=\"m7 10 5 5 5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </PopoverPrimitive.Trigger>\n );\n}\n\nexport interface ComboboxContentProps extends ComponentPropsWithRef<\n typeof PopoverPrimitive.Content\n> {\n /** Names the popover, which carries role=\"dialog\". */\n label?: string;\n}\n\nexport function ComboboxContent({\n className,\n align = \"start\",\n sideOffset = 6,\n label = \"Search options\",\n children,\n ...props\n}: ComboboxContentProps) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"combobox-content\"\n align={align}\n sideOffset={sideOffset}\n aria-label={label}\n // Focus belongs in the search input, which the input claims on mount.\n onOpenAutoFocus={(event) => {\n event.preventDefault();\n }}\n className={cn(\n \"z-[var(--z-popover)] w-[var(--radix-popover-trigger-width)] min-w-48 overflow-hidden\",\n \"rounded-lg border border-border bg-popover p-0 text-popover-foreground shadow-lg\",\n \"origin-[var(--radix-popover-content-transform-origin)]\",\n \"data-[state=closed]:animate-float-out data-[state=open]:animate-float-in\",\n className,\n )}\n {...props}\n >\n {children}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n );\n}\n\n/** Options currently rendered, in DOM order and excluding disabled ones. */\nfunction visibleOptions(list: HTMLElement | null): HTMLElement[] {\n if (!list) return [];\n return Array.from(list.querySelectorAll<HTMLElement>('[role=\"option\"]:not([data-disabled])'));\n}\n\nexport interface ComboboxInputProps extends Omit<\n ComponentPropsWithRef<\"input\">,\n \"value\" | \"onChange\"\n> {\n /** Shows a button that clears the search while there is text to clear. */\n clearable?: boolean;\n}\n\nexport function ComboboxInput({ className, clearable = false, ...props }: ComboboxInputProps) {\n const {\n search,\n setSearch,\n activeValue,\n setActiveValue,\n select,\n setOpen,\n listId,\n inputId,\n optionId,\n listRef,\n } = useCombobox(\"ComboboxInput\");\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n useEffect(() => {\n inputRef.current?.focus();\n }, []);\n\n const move = useCallback(\n (delta: number | \"first\" | \"last\") => {\n const options = visibleOptions(listRef.current);\n if (options.length === 0) return;\n\n const currentIndex = options.findIndex((option) => option.dataset.value === activeValue);\n\n let nextIndex: number;\n if (delta === \"first\") nextIndex = 0;\n else if (delta === \"last\") nextIndex = options.length - 1;\n else if (currentIndex === -1) nextIndex = delta > 0 ? 0 : options.length - 1;\n // Wraps, so holding an arrow key never dead-ends at the edge of the list.\n else nextIndex = (currentIndex + delta + options.length) % options.length;\n\n const next = options[nextIndex];\n if (!next) return;\n setActiveValue(next.dataset.value);\n next.scrollIntoView({ block: \"nearest\" });\n },\n [activeValue, listRef, setActiveValue],\n );\n\n function handleKeyDown(event: ReactKeyboardEvent<HTMLInputElement>) {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n move(1);\n break;\n case \"ArrowUp\":\n event.preventDefault();\n move(-1);\n break;\n case \"Home\":\n event.preventDefault();\n move(\"first\");\n break;\n case \"End\":\n event.preventDefault();\n move(\"last\");\n break;\n case \"Enter\": {\n if (activeValue === undefined) return;\n event.preventDefault();\n select(activeValue);\n break;\n }\n case \"Escape\":\n event.preventDefault();\n setOpen(false);\n break;\n default:\n break;\n }\n }\n\n return (\n <div className=\"flex items-center gap-2 border-b border-border px-3\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n className=\"size-4 shrink-0 opacity-55\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"m20 20-3.5-3.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n <input\n ref={inputRef}\n id={inputId}\n data-slot=\"combobox-input\"\n type=\"text\"\n role=\"combobox\"\n autoComplete=\"off\"\n aria-expanded=\"true\"\n aria-controls={listId}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeValue ? optionId(activeValue) : undefined}\n value={search}\n onChange={(event) => {\n setSearch(event.target.value);\n // The previous active option may have just been filtered out.\n setActiveValue(undefined);\n }}\n onKeyDown={handleKeyDown}\n className={cn(\n \"h-10 w-full bg-transparent text-sm outline-none placeholder:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n {clearable && search ? (\n <button\n type=\"button\"\n data-slot=\"combobox-clear\"\n aria-label=\"Clear search\"\n // Keeps focus, and so aria-activedescendant, in the input.\n onMouseDown={(event) => {\n event.preventDefault();\n }}\n onClick={() => {\n setSearch(\"\");\n setActiveValue(undefined);\n inputRef.current?.focus();\n }}\n className={cn(\n \"-me-1 grid size-6 shrink-0 place-items-center rounded-sm opacity-60 hover:opacity-100\",\n \"transition-opacity duration-[var(--duration-fast)]\",\n focusRing,\n )}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\" className=\"size-3.5\">\n <path\n d=\"M6 6l12 12M18 6 6 18\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n ) : null}\n </div>\n );\n}\n\nexport function ComboboxList({ className, ...props }: ComponentPropsWithRef<\"div\">) {\n const { listId, listRef, loading } = useCombobox(\"ComboboxList\");\n\n return (\n <div\n ref={listRef}\n id={listId}\n role=\"listbox\"\n aria-busy={loading || undefined}\n data-slot=\"combobox-list\"\n className={cn(\"max-h-64 overflow-y-auto overscroll-contain p-1\", className)}\n {...props}\n />\n );\n}\n\nexport interface ComboboxItemProps extends Omit<\n ComponentPropsWithRef<\"div\">,\n \"onSelect\" | \"children\"\n> {\n /** The value reported by onValueChange, and the primary search term. */\n value: string;\n /** Extra search terms that are not shown, such as synonyms or an id. */\n keywords?: string[];\n disabled?: boolean;\n children?: ReactNode;\n}\n\nexport function ComboboxItem({\n className,\n value,\n keywords,\n disabled,\n children,\n ...props\n}: ComboboxItemProps) {\n const {\n search,\n filter,\n value: selectedValue,\n activeValue,\n setActiveValue,\n select,\n optionId,\n registerVisible,\n } = useCombobox(\"ComboboxItem\");\n\n // A string child is the visible label, so it is searchable for free. Richer\n // children cannot be read purely, so those pass `keywords` instead.\n const haystack = useMemo(\n () => [value, ...(keywords ?? []), typeof children === \"string\" ? children : \"\"],\n [value, keywords, children],\n );\n\n const visible = filter(search, haystack);\n const selected = selectedValue === value;\n const active = activeValue === value;\n\n useEffect(() => {\n registerVisible(value, visible && !disabled);\n return () => {\n registerVisible(value, false);\n };\n }, [registerVisible, value, visible, disabled]);\n\n if (!visible) return null;\n\n return (\n <div\n id={optionId(value)}\n role=\"option\"\n data-slot=\"combobox-item\"\n data-value={value}\n data-active={active || undefined}\n data-disabled={disabled || undefined}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n // Programmatically focusable but out of the tab order: in an\n // aria-activedescendant listbox the input keeps real focus and options are\n // only virtually focused, so they must never become tab stops.\n tabIndex={-1}\n onPointerMove={() => {\n if (!disabled) setActiveValue(value);\n }}\n onMouseDown={(event) => {\n // Without this, pressing on an option blurs the search input, which\n // breaks aria-activedescendant and can dismiss the popover before the\n // click ever lands.\n event.preventDefault();\n }}\n onClick={() => {\n if (!disabled) select(value);\n }}\n onKeyDown={(event) => {\n // Reachable only if a consumer focuses an option directly; the normal\n // path is Enter on the input, handled by ComboboxInput.\n if (disabled) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n select(value);\n }\n }}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-md py-1.5 ps-2 pe-8 text-sm outline-none select-none\",\n \"transition-colors duration-[var(--duration-instant)]\",\n \"data-[active]:bg-accent data-[active]:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-55\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <style href=\"dowel-combobox\" precedence=\"dowel\">\n {ITEM_KEYFRAMES}\n </style>\n {children ?? value}\n {selected ? (\n <span className=\"absolute end-2 grid size-4 place-items-center\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\" className=\"size-3.5\">\n <path\n d=\"m5 13 4 4L19 7\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n ) : null}\n </div>\n );\n}\n\n/** Shown only when the filter leaves nothing. */\nexport function ComboboxEmpty({ className, children, ...props }: ComponentPropsWithRef<\"div\">) {\n const { visibleCount, loading } = useCombobox(\"ComboboxEmpty\");\n if (visibleCount > 0 || loading) return null;\n\n return (\n <div\n data-slot=\"combobox-empty\"\n role=\"presentation\"\n className={cn(\"px-3 py-6 text-center text-sm text-muted-foreground\", className)}\n {...props}\n >\n {children ?? \"No results found.\"}\n </div>\n );\n}\n\n/**\n * Shown only while `loading` is set on Combobox. Render it beside ComboboxList,\n * as with ComboboxEmpty; pass a Spinner as a child if wanted.\n */\nexport function ComboboxLoading({\n className,\n children,\n ...props\n}: ComponentPropsWithRef<\"div\">) {\n const { loading } = useCombobox(\"ComboboxLoading\");\n if (!loading) return null;\n\n return (\n <div\n data-slot=\"combobox-loading\"\n role=\"status\"\n className={cn(\n \"flex items-center justify-center gap-2 px-3 py-6 text-sm text-muted-foreground\",\n \"animate-float-in\",\n className,\n )}\n {...props}\n >\n {children ?? \"Loading…\"}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Combobox, ComboboxContent, ComboboxContentProps, ComboboxEmpty, ComboboxInput, ComboboxInputProps, ComboboxItem, ComboboxItemProps, ComboboxList, ComboboxProps, ComboboxTrigger, ComboboxTriggerProps, defaultComboboxFilter } from "./combobox.js";
|
|
2
|
-
export { Combobox, ComboboxContent, type ComboboxContentProps, ComboboxEmpty, ComboboxInput, type ComboboxInputProps, ComboboxItem, type ComboboxItemProps, ComboboxList, type ComboboxProps, ComboboxTrigger, type ComboboxTriggerProps, defaultComboboxFilter };
|
|
1
|
+
import { Combobox, ComboboxContent, ComboboxContentProps, ComboboxEmpty, ComboboxInput, ComboboxInputProps, ComboboxItem, ComboboxItemProps, ComboboxList, ComboboxLoading, ComboboxProps, ComboboxTrigger, ComboboxTriggerProps, defaultComboboxFilter } from "./combobox.js";
|
|
2
|
+
export { Combobox, ComboboxContent, type ComboboxContentProps, ComboboxEmpty, ComboboxInput, type ComboboxInputProps, ComboboxItem, type ComboboxItemProps, ComboboxList, ComboboxLoading, type ComboboxProps, ComboboxTrigger, type ComboboxTriggerProps, defaultComboboxFilter };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, ComboboxTrigger, defaultComboboxFilter } from "./combobox.js";
|
|
2
|
-
export { Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, ComboboxTrigger, defaultComboboxFilter };
|
|
1
|
+
import { Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, ComboboxLoading, ComboboxTrigger, defaultComboboxFilter } from "./combobox.js";
|
|
2
|
+
export { Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, ComboboxLoading, ComboboxTrigger, defaultComboboxFilter };
|
|
@@ -9,7 +9,7 @@ const meta = defineMeta({
|
|
|
9
9
|
dependencies: ["radix-ui"],
|
|
10
10
|
registryDependencies: [],
|
|
11
11
|
files: ["combobox.tsx"],
|
|
12
|
-
a11y: "The input owns role=\"combobox\" with aria-expanded, aria-controls and aria-autocomplete; the list owns role=\"listbox\" and each option role=\"option\" with aria-selected. Focus stays in the input while arrow keys move aria-activedescendant, so typing is never interrupted. Arrow navigation wraps, Home/End jump, Enter selects the active option and Escape closes."
|
|
12
|
+
a11y: "The input owns role=\"combobox\" with aria-expanded, aria-controls and aria-autocomplete; the list owns role=\"listbox\" and each option role=\"option\" with aria-selected. Focus stays in the input while arrow keys move aria-activedescendant, so typing is never interrupted. Arrow navigation wraps, Home/End jump, Enter selects the active option and Escape closes. With loading set, the listbox is aria-busy, ComboboxLoading is a status and the empty state waits for the answer. The optional clear button is a named button that returns focus to the input."
|
|
13
13
|
});
|
|
14
14
|
//#endregion
|
|
15
15
|
export { meta };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.js","names":[],"sources":["../../../src/components/combobox/meta.ts"],"sourcesContent":["import { defineMeta } from \"@/registry/schema\";\n\nexport const meta = defineMeta({\n name: \"combobox\",\n title: \"Combobox\",\n description: \"A searchable single-select built on the ARIA combobox pattern.\",\n category: \"form\",\n status: \"stable\",\n dependencies: [\"radix-ui\"],\n registryDependencies: [],\n files: [\"combobox.tsx\"],\n a11y:\n 'The input owns role=\"combobox\" with aria-expanded, aria-controls and aria-autocomplete; ' +\n 'the list owns role=\"listbox\" and each option role=\"option\" with aria-selected. Focus stays ' +\n \"in the input while arrow keys move aria-activedescendant, so typing is never interrupted. \" +\n \"Arrow navigation wraps, Home/End jump, Enter selects the active option and Escape closes.\",\n});\n"],"mappings":";;AAEA,MAAa,OAAO,WAAW;CAC7B,MAAM;CACN,OAAO;CACP,aAAa;CACb,UAAU;CACV,QAAQ;CACR,cAAc,CAAC,UAAU;CACzB,sBAAsB,CAAC;CACvB,OAAO,CAAC,cAAc;CACtB,MACE;
|
|
1
|
+
{"version":3,"file":"meta.js","names":[],"sources":["../../../src/components/combobox/meta.ts"],"sourcesContent":["import { defineMeta } from \"@/registry/schema\";\n\nexport const meta = defineMeta({\n name: \"combobox\",\n title: \"Combobox\",\n description: \"A searchable single-select built on the ARIA combobox pattern.\",\n category: \"form\",\n status: \"stable\",\n dependencies: [\"radix-ui\"],\n registryDependencies: [],\n files: [\"combobox.tsx\"],\n a11y:\n 'The input owns role=\"combobox\" with aria-expanded, aria-controls and aria-autocomplete; ' +\n 'the list owns role=\"listbox\" and each option role=\"option\" with aria-selected. Focus stays ' +\n \"in the input while arrow keys move aria-activedescendant, so typing is never interrupted. \" +\n \"Arrow navigation wraps, Home/End jump, Enter selects the active option and Escape closes.\" +\n \" With loading set, the listbox is aria-busy, ComboboxLoading is a status and the empty state waits for the answer. The optional clear button is a named button that returns focus to the input.\",\n});\n"],"mappings":";;AAEA,MAAa,OAAO,WAAW;CAC7B,MAAM;CACN,OAAO;CACP,aAAa;CACb,UAAU;CACV,QAAQ;CACR,cAAc,CAAC,UAAU;CACzB,sBAAsB,CAAC;CACvB,OAAO,CAAC,cAAc;CACtB,MACE;AAKJ,CAAC"}
|
|
@@ -297,7 +297,7 @@ function CommandShortcut({ className, ...props }) {
|
|
|
297
297
|
return /* @__PURE__ */ jsx("span", {
|
|
298
298
|
"data-slot": "command-shortcut",
|
|
299
299
|
"aria-hidden": "true",
|
|
300
|
-
className: cn("
|
|
300
|
+
className: cn("ms-auto text-2xs tracking-wide text-muted-foreground", className),
|
|
301
301
|
...props
|
|
302
302
|
});
|
|
303
303
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","names":[],"sources":["../../../src/components/command/command.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithRef,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from \"react\";\n\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/dialog\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * A searchable list of commands.\n *\n * Shares its navigation model with Combobox — the input owns `role=\"combobox\"`,\n * the list owns `role=\"listbox\"`, and the active item is tracked with\n * `aria-activedescendant` so focus never leaves the input. Ordering is read\n * from the DOM rather than a registry, which stays correct as filtering adds\n * and removes items.\n *\n * Unlike Combobox this has no selected value: items run actions. It also\n * supports groups, and a group whose items have all been filtered out hides its\n * own heading rather than leaving a label over nothing.\n */\n\n/** Default match: case-insensitive substring over the value and any keywords. */\nexport function defaultCommandFilter(search: string, haystack: string[]): boolean {\n const needle = search.trim().toLowerCase();\n if (!needle) return true;\n return haystack.some((entry) => entry.toLowerCase().includes(needle));\n}\n\ninterface CommandContextValue {\n search: string;\n setSearch: (search: string) => void;\n activeValue: string | undefined;\n setActiveValue: (value: string | undefined) => void;\n filter: (search: string, haystack: string[]) => boolean;\n listId: string;\n inputId: string;\n optionId: (value: string) => string;\n listRef: React.RefObject<HTMLDivElement | null>;\n registerVisible: (value: string, visible: boolean) => void;\n visibleCount: number;\n}\n\nconst CommandContext = createContext<CommandContextValue | null>(null);\n\nfunction useCommand(component: string): CommandContextValue {\n const context = useContext(CommandContext);\n if (!context) {\n throw new Error(`${component} must be rendered inside <Command>.`);\n }\n return context;\n}\n\n/** Lets a group count how many of its own items survived the filter. */\nconst CommandGroupContext = createContext<((value: string, visible: boolean) => void) | null>(\n null,\n);\n\n/** Counts visible entries by name, so re-registration cannot double-count. */\nfunction useVisibilityCounter() {\n const visible = useRef(new Set<string>());\n const [count, setCount] = useState(0);\n\n const register = useCallback((value: string, isVisible: boolean) => {\n const set = visible.current;\n const had = set.has(value);\n if (isVisible && !had) set.add(value);\n else if (!isVisible && had) set.delete(value);\n else return;\n setCount(set.size);\n }, []);\n\n return { count, register };\n}\n\nexport interface CommandProps extends Omit<ComponentPropsWithRef<\"div\">, \"onSelect\"> {\n /** Overrides how a search string is matched against an item. */\n filter?: (search: string, haystack: string[]) => boolean;\n /** Controls the search text. */\n value?: string;\n onValueChange?: (search: string) => void;\n}\n\nexport function Command({\n className,\n filter = defaultCommandFilter,\n value,\n onValueChange,\n ...props\n}: CommandProps) {\n const uid = useId();\n const [uncontrolledSearch, setUncontrolledSearch] = useState(\"\");\n const search = value ?? uncontrolledSearch;\n const [activeValue, setActiveValue] = useState<string | undefined>(undefined);\n const listRef = useRef<HTMLDivElement | null>(null);\n const { count, register } = useVisibilityCounter();\n\n const setSearch = useCallback(\n (next: string) => {\n if (value === undefined) setUncontrolledSearch(next);\n onValueChange?.(next);\n },\n [value, onValueChange],\n );\n\n const context = useMemo<CommandContextValue>(\n () => ({\n search,\n setSearch,\n activeValue,\n setActiveValue,\n filter,\n listId: `${uid}-list`,\n inputId: `${uid}-input`,\n optionId: (itemValue: string) =>\n `${uid}-item-${itemValue.replace(/\\s+/g, \"-\").toLowerCase()}`,\n listRef,\n registerVisible: register,\n visibleCount: count,\n }),\n [search, setSearch, activeValue, filter, uid, register, count],\n );\n\n return (\n <CommandContext.Provider value={context}>\n <div\n data-slot=\"command\"\n className={cn(\n \"flex size-full flex-col overflow-hidden rounded-lg bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n </CommandContext.Provider>\n );\n}\n\n/** Items currently rendered, in DOM order and excluding disabled ones. */\nfunction visibleItems(list: HTMLElement | null): HTMLElement[] {\n if (!list) return [];\n return Array.from(list.querySelectorAll<HTMLElement>('[role=\"option\"]:not([data-disabled])'));\n}\n\nexport type CommandInputProps = Omit<ComponentPropsWithRef<\"input\">, \"value\" | \"onChange\">;\n\nexport function CommandInput({ className, ...props }: CommandInputProps) {\n const { search, setSearch, activeValue, setActiveValue, listId, inputId, optionId, listRef } =\n useCommand(\"CommandInput\");\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n useEffect(() => {\n inputRef.current?.focus();\n }, []);\n\n const move = useCallback(\n (delta: number | \"first\" | \"last\") => {\n const items = visibleItems(listRef.current);\n if (items.length === 0) return;\n\n const currentIndex = items.findIndex((item) => item.dataset.value === activeValue);\n\n let nextIndex: number;\n if (delta === \"first\") nextIndex = 0;\n else if (delta === \"last\") nextIndex = items.length - 1;\n else if (currentIndex === -1) nextIndex = delta > 0 ? 0 : items.length - 1;\n else nextIndex = (currentIndex + delta + items.length) % items.length;\n\n const next = items[nextIndex];\n if (!next) return;\n setActiveValue(next.dataset.value);\n next.scrollIntoView({ block: \"nearest\" });\n },\n [activeValue, listRef, setActiveValue],\n );\n\n function handleKeyDown(event: ReactKeyboardEvent<HTMLInputElement>) {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n move(1);\n break;\n case \"ArrowUp\":\n event.preventDefault();\n move(-1);\n break;\n case \"Home\":\n event.preventDefault();\n move(\"first\");\n break;\n case \"End\":\n event.preventDefault();\n move(\"last\");\n break;\n case \"Enter\": {\n if (activeValue === undefined) return;\n event.preventDefault();\n // Running the item by clicking it keeps one code path for pointer and\n // keyboard, so the two can never drift apart.\n const item = visibleItems(listRef.current).find(\n (candidate) => candidate.dataset.value === activeValue,\n );\n item?.click();\n break;\n }\n default:\n break;\n }\n }\n\n return (\n <div className=\"flex items-center gap-2 border-b border-border px-3\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n className=\"size-4 shrink-0 opacity-55\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"m20 20-3.5-3.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n <input\n ref={inputRef}\n id={inputId}\n data-slot=\"command-input\"\n type=\"text\"\n role=\"combobox\"\n autoComplete=\"off\"\n aria-expanded=\"true\"\n aria-controls={listId}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeValue ? optionId(activeValue) : undefined}\n value={search}\n onChange={(event) => {\n setSearch(event.target.value);\n // The active item may have just been filtered away.\n setActiveValue(undefined);\n }}\n onKeyDown={handleKeyDown}\n className={cn(\n \"h-11 w-full bg-transparent text-sm outline-none placeholder:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nexport function CommandList({ className, ...props }: ComponentPropsWithRef<\"div\">) {\n const { listId, listRef } = useCommand(\"CommandList\");\n\n return (\n <div\n ref={listRef}\n id={listId}\n role=\"listbox\"\n data-slot=\"command-list\"\n className={cn(\"max-h-80 overflow-y-auto overscroll-contain p-1\", className)}\n {...props}\n />\n );\n}\n\nexport function CommandEmpty({ className, children, ...props }: ComponentPropsWithRef<\"div\">) {\n const { visibleCount } = useCommand(\"CommandEmpty\");\n if (visibleCount > 0) return null;\n\n return (\n <div\n data-slot=\"command-empty\"\n role=\"presentation\"\n className={cn(\"px-3 py-8 text-center text-sm text-muted-foreground\", className)}\n {...props}\n >\n {children ?? \"No results found.\"}\n </div>\n );\n}\n\nexport interface CommandGroupProps extends ComponentPropsWithRef<\"div\"> {\n heading?: ReactNode;\n}\n\nexport function CommandGroup({ className, heading, children, ...props }: CommandGroupProps) {\n const uid = useId();\n const { count, register } = useVisibilityCounter();\n const empty = count === 0;\n\n return (\n <div\n data-slot=\"command-group\"\n role=\"group\"\n aria-labelledby={heading && !empty ? `${uid}-heading` : undefined}\n // Hidden rather than unmounted: the items inside are what report whether\n // anything matched, and unmounting them would stop the reports and leave\n // the group permanently empty.\n hidden={empty || undefined}\n className={cn(\"py-1 first:pt-0\", className)}\n {...props}\n >\n {heading && !empty ? (\n <div\n id={`${uid}-heading`}\n className=\"px-2 py-1.5 text-xs font-medium text-muted-foreground\"\n >\n {heading}\n </div>\n ) : null}\n <CommandGroupContext.Provider value={register}>{children}</CommandGroupContext.Provider>\n </div>\n );\n}\n\nexport interface CommandItemProps extends Omit<\n ComponentPropsWithRef<\"div\">,\n \"onSelect\" | \"children\"\n> {\n /** Identifies the item, and is the primary search term. */\n value: string;\n /** Extra search terms that are not shown. */\n keywords?: string[];\n disabled?: boolean;\n onSelect?: (value: string) => void;\n children?: ReactNode;\n}\n\nexport function CommandItem({\n className,\n value,\n keywords,\n disabled,\n onSelect,\n children,\n ...props\n}: CommandItemProps) {\n const { search, filter, activeValue, setActiveValue, optionId, registerVisible } =\n useCommand(\"CommandItem\");\n const registerInGroup = useContext(CommandGroupContext);\n\n const haystack = useMemo(\n () => [value, ...(keywords ?? []), typeof children === \"string\" ? children : \"\"],\n [value, keywords, children],\n );\n\n const visible = filter(search, haystack);\n const active = activeValue === value;\n const counts = visible && !disabled;\n\n useEffect(() => {\n registerVisible(value, counts);\n registerInGroup?.(value, counts);\n return () => {\n registerVisible(value, false);\n registerInGroup?.(value, false);\n };\n }, [registerVisible, registerInGroup, value, counts]);\n\n if (!visible) return null;\n\n return (\n <div\n id={optionId(value)}\n role=\"option\"\n data-slot=\"command-item\"\n data-value={value}\n data-active={active || undefined}\n data-disabled={disabled || undefined}\n aria-selected={active}\n aria-disabled={disabled || undefined}\n // Programmatically focusable but never a tab stop: the input keeps focus\n // and items are only virtually focused via aria-activedescendant.\n tabIndex={-1}\n onPointerMove={() => {\n if (!disabled) setActiveValue(value);\n }}\n onMouseDown={(event) => {\n // Keeps focus in the input, so aria-activedescendant stays valid and a\n // hosting dialog does not close before the click lands.\n event.preventDefault();\n }}\n onClick={() => {\n if (!disabled) onSelect?.(value);\n }}\n onKeyDown={(event) => {\n if (disabled) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onSelect?.(value);\n }\n }}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-md px-2 py-2 text-sm outline-none select-none\",\n \"transition-colors duration-[var(--duration-instant)]\",\n \"data-[active]:bg-accent data-[active]:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-55\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children ?? value}\n </div>\n );\n}\n\nexport function CommandSeparator({ className, ...props }: ComponentPropsWithRef<\"div\">) {\n return (\n <div\n data-slot=\"command-separator\"\n aria-hidden=\"true\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n );\n}\n\n/** Keyboard hint. Decorative — bind the shortcut for real at the app level. */\nexport function CommandShortcut({ className, ...props }: ComponentPropsWithRef<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n aria-hidden=\"true\"\n className={cn(\"ml-auto text-2xs tracking-wide text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport interface CommandDialogProps extends ComponentPropsWithRef<typeof Dialog> {\n /** Names the dialog for assistive technology. Visually hidden by default. */\n title?: string;\n description?: string;\n className?: string;\n}\n\n/**\n * The palette in a modal, for the ⌘K pattern.\n *\n * The title and description are rendered but visually hidden: a dialog needs an\n * accessible name whether or not the design shows one, and leaving it out is\n * the most common defect in hand-rolled command menus.\n */\nexport function CommandDialog({\n title = \"Command palette\",\n description = \"Search for a command to run.\",\n children,\n className,\n ...props\n}: CommandDialogProps) {\n return (\n <Dialog {...props}>\n <DialogContent\n showCloseButton={false}\n className={cn(\"max-w-lg overflow-hidden p-0\", className)}\n >\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <Command className=\"rounded-none\">{children}</Command>\n </DialogContent>\n </Dialog>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"command.js","names":[],"sources":["../../../src/components/command/command.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithRef,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from \"react\";\n\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/dialog\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * A searchable list of commands.\n *\n * Shares its navigation model with Combobox — the input owns `role=\"combobox\"`,\n * the list owns `role=\"listbox\"`, and the active item is tracked with\n * `aria-activedescendant` so focus never leaves the input. Ordering is read\n * from the DOM rather than a registry, which stays correct as filtering adds\n * and removes items.\n *\n * Unlike Combobox this has no selected value: items run actions. It also\n * supports groups, and a group whose items have all been filtered out hides its\n * own heading rather than leaving a label over nothing.\n */\n\n/** Default match: case-insensitive substring over the value and any keywords. */\nexport function defaultCommandFilter(search: string, haystack: string[]): boolean {\n const needle = search.trim().toLowerCase();\n if (!needle) return true;\n return haystack.some((entry) => entry.toLowerCase().includes(needle));\n}\n\ninterface CommandContextValue {\n search: string;\n setSearch: (search: string) => void;\n activeValue: string | undefined;\n setActiveValue: (value: string | undefined) => void;\n filter: (search: string, haystack: string[]) => boolean;\n listId: string;\n inputId: string;\n optionId: (value: string) => string;\n listRef: React.RefObject<HTMLDivElement | null>;\n registerVisible: (value: string, visible: boolean) => void;\n visibleCount: number;\n}\n\nconst CommandContext = createContext<CommandContextValue | null>(null);\n\nfunction useCommand(component: string): CommandContextValue {\n const context = useContext(CommandContext);\n if (!context) {\n throw new Error(`${component} must be rendered inside <Command>.`);\n }\n return context;\n}\n\n/** Lets a group count how many of its own items survived the filter. */\nconst CommandGroupContext = createContext<((value: string, visible: boolean) => void) | null>(\n null,\n);\n\n/** Counts visible entries by name, so re-registration cannot double-count. */\nfunction useVisibilityCounter() {\n const visible = useRef(new Set<string>());\n const [count, setCount] = useState(0);\n\n const register = useCallback((value: string, isVisible: boolean) => {\n const set = visible.current;\n const had = set.has(value);\n if (isVisible && !had) set.add(value);\n else if (!isVisible && had) set.delete(value);\n else return;\n setCount(set.size);\n }, []);\n\n return { count, register };\n}\n\nexport interface CommandProps extends Omit<ComponentPropsWithRef<\"div\">, \"onSelect\"> {\n /** Overrides how a search string is matched against an item. */\n filter?: (search: string, haystack: string[]) => boolean;\n /** Controls the search text. */\n value?: string;\n onValueChange?: (search: string) => void;\n}\n\nexport function Command({\n className,\n filter = defaultCommandFilter,\n value,\n onValueChange,\n ...props\n}: CommandProps) {\n const uid = useId();\n const [uncontrolledSearch, setUncontrolledSearch] = useState(\"\");\n const search = value ?? uncontrolledSearch;\n const [activeValue, setActiveValue] = useState<string | undefined>(undefined);\n const listRef = useRef<HTMLDivElement | null>(null);\n const { count, register } = useVisibilityCounter();\n\n const setSearch = useCallback(\n (next: string) => {\n if (value === undefined) setUncontrolledSearch(next);\n onValueChange?.(next);\n },\n [value, onValueChange],\n );\n\n const context = useMemo<CommandContextValue>(\n () => ({\n search,\n setSearch,\n activeValue,\n setActiveValue,\n filter,\n listId: `${uid}-list`,\n inputId: `${uid}-input`,\n optionId: (itemValue: string) =>\n `${uid}-item-${itemValue.replace(/\\s+/g, \"-\").toLowerCase()}`,\n listRef,\n registerVisible: register,\n visibleCount: count,\n }),\n [search, setSearch, activeValue, filter, uid, register, count],\n );\n\n return (\n <CommandContext.Provider value={context}>\n <div\n data-slot=\"command\"\n className={cn(\n \"flex size-full flex-col overflow-hidden rounded-lg bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n </CommandContext.Provider>\n );\n}\n\n/** Items currently rendered, in DOM order and excluding disabled ones. */\nfunction visibleItems(list: HTMLElement | null): HTMLElement[] {\n if (!list) return [];\n return Array.from(list.querySelectorAll<HTMLElement>('[role=\"option\"]:not([data-disabled])'));\n}\n\nexport type CommandInputProps = Omit<ComponentPropsWithRef<\"input\">, \"value\" | \"onChange\">;\n\nexport function CommandInput({ className, ...props }: CommandInputProps) {\n const { search, setSearch, activeValue, setActiveValue, listId, inputId, optionId, listRef } =\n useCommand(\"CommandInput\");\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n useEffect(() => {\n inputRef.current?.focus();\n }, []);\n\n const move = useCallback(\n (delta: number | \"first\" | \"last\") => {\n const items = visibleItems(listRef.current);\n if (items.length === 0) return;\n\n const currentIndex = items.findIndex((item) => item.dataset.value === activeValue);\n\n let nextIndex: number;\n if (delta === \"first\") nextIndex = 0;\n else if (delta === \"last\") nextIndex = items.length - 1;\n else if (currentIndex === -1) nextIndex = delta > 0 ? 0 : items.length - 1;\n else nextIndex = (currentIndex + delta + items.length) % items.length;\n\n const next = items[nextIndex];\n if (!next) return;\n setActiveValue(next.dataset.value);\n next.scrollIntoView({ block: \"nearest\" });\n },\n [activeValue, listRef, setActiveValue],\n );\n\n function handleKeyDown(event: ReactKeyboardEvent<HTMLInputElement>) {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n move(1);\n break;\n case \"ArrowUp\":\n event.preventDefault();\n move(-1);\n break;\n case \"Home\":\n event.preventDefault();\n move(\"first\");\n break;\n case \"End\":\n event.preventDefault();\n move(\"last\");\n break;\n case \"Enter\": {\n if (activeValue === undefined) return;\n event.preventDefault();\n // Running the item by clicking it keeps one code path for pointer and\n // keyboard, so the two can never drift apart.\n const item = visibleItems(listRef.current).find(\n (candidate) => candidate.dataset.value === activeValue,\n );\n item?.click();\n break;\n }\n default:\n break;\n }\n }\n\n return (\n <div className=\"flex items-center gap-2 border-b border-border px-3\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n className=\"size-4 shrink-0 opacity-55\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"m20 20-3.5-3.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n <input\n ref={inputRef}\n id={inputId}\n data-slot=\"command-input\"\n type=\"text\"\n role=\"combobox\"\n autoComplete=\"off\"\n aria-expanded=\"true\"\n aria-controls={listId}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeValue ? optionId(activeValue) : undefined}\n value={search}\n onChange={(event) => {\n setSearch(event.target.value);\n // The active item may have just been filtered away.\n setActiveValue(undefined);\n }}\n onKeyDown={handleKeyDown}\n className={cn(\n \"h-11 w-full bg-transparent text-sm outline-none placeholder:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nexport function CommandList({ className, ...props }: ComponentPropsWithRef<\"div\">) {\n const { listId, listRef } = useCommand(\"CommandList\");\n\n return (\n <div\n ref={listRef}\n id={listId}\n role=\"listbox\"\n data-slot=\"command-list\"\n className={cn(\"max-h-80 overflow-y-auto overscroll-contain p-1\", className)}\n {...props}\n />\n );\n}\n\nexport function CommandEmpty({ className, children, ...props }: ComponentPropsWithRef<\"div\">) {\n const { visibleCount } = useCommand(\"CommandEmpty\");\n if (visibleCount > 0) return null;\n\n return (\n <div\n data-slot=\"command-empty\"\n role=\"presentation\"\n className={cn(\"px-3 py-8 text-center text-sm text-muted-foreground\", className)}\n {...props}\n >\n {children ?? \"No results found.\"}\n </div>\n );\n}\n\nexport interface CommandGroupProps extends ComponentPropsWithRef<\"div\"> {\n heading?: ReactNode;\n}\n\nexport function CommandGroup({ className, heading, children, ...props }: CommandGroupProps) {\n const uid = useId();\n const { count, register } = useVisibilityCounter();\n const empty = count === 0;\n\n return (\n <div\n data-slot=\"command-group\"\n role=\"group\"\n aria-labelledby={heading && !empty ? `${uid}-heading` : undefined}\n // Hidden rather than unmounted: the items inside are what report whether\n // anything matched, and unmounting them would stop the reports and leave\n // the group permanently empty.\n hidden={empty || undefined}\n className={cn(\"py-1 first:pt-0\", className)}\n {...props}\n >\n {heading && !empty ? (\n <div\n id={`${uid}-heading`}\n className=\"px-2 py-1.5 text-xs font-medium text-muted-foreground\"\n >\n {heading}\n </div>\n ) : null}\n <CommandGroupContext.Provider value={register}>{children}</CommandGroupContext.Provider>\n </div>\n );\n}\n\nexport interface CommandItemProps extends Omit<\n ComponentPropsWithRef<\"div\">,\n \"onSelect\" | \"children\"\n> {\n /** Identifies the item, and is the primary search term. */\n value: string;\n /** Extra search terms that are not shown. */\n keywords?: string[];\n disabled?: boolean;\n onSelect?: (value: string) => void;\n children?: ReactNode;\n}\n\nexport function CommandItem({\n className,\n value,\n keywords,\n disabled,\n onSelect,\n children,\n ...props\n}: CommandItemProps) {\n const { search, filter, activeValue, setActiveValue, optionId, registerVisible } =\n useCommand(\"CommandItem\");\n const registerInGroup = useContext(CommandGroupContext);\n\n const haystack = useMemo(\n () => [value, ...(keywords ?? []), typeof children === \"string\" ? children : \"\"],\n [value, keywords, children],\n );\n\n const visible = filter(search, haystack);\n const active = activeValue === value;\n const counts = visible && !disabled;\n\n useEffect(() => {\n registerVisible(value, counts);\n registerInGroup?.(value, counts);\n return () => {\n registerVisible(value, false);\n registerInGroup?.(value, false);\n };\n }, [registerVisible, registerInGroup, value, counts]);\n\n if (!visible) return null;\n\n return (\n <div\n id={optionId(value)}\n role=\"option\"\n data-slot=\"command-item\"\n data-value={value}\n data-active={active || undefined}\n data-disabled={disabled || undefined}\n aria-selected={active}\n aria-disabled={disabled || undefined}\n // Programmatically focusable but never a tab stop: the input keeps focus\n // and items are only virtually focused via aria-activedescendant.\n tabIndex={-1}\n onPointerMove={() => {\n if (!disabled) setActiveValue(value);\n }}\n onMouseDown={(event) => {\n // Keeps focus in the input, so aria-activedescendant stays valid and a\n // hosting dialog does not close before the click lands.\n event.preventDefault();\n }}\n onClick={() => {\n if (!disabled) onSelect?.(value);\n }}\n onKeyDown={(event) => {\n if (disabled) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onSelect?.(value);\n }\n }}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-md px-2 py-2 text-sm outline-none select-none\",\n \"transition-colors duration-[var(--duration-instant)]\",\n \"data-[active]:bg-accent data-[active]:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-55\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children ?? value}\n </div>\n );\n}\n\nexport function CommandSeparator({ className, ...props }: ComponentPropsWithRef<\"div\">) {\n return (\n <div\n data-slot=\"command-separator\"\n aria-hidden=\"true\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n );\n}\n\n/** Keyboard hint. Decorative — bind the shortcut for real at the app level. */\nexport function CommandShortcut({ className, ...props }: ComponentPropsWithRef<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n aria-hidden=\"true\"\n className={cn(\"ms-auto text-2xs tracking-wide text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport interface CommandDialogProps extends ComponentPropsWithRef<typeof Dialog> {\n /** Names the dialog for assistive technology. Visually hidden by default. */\n title?: string;\n description?: string;\n className?: string;\n}\n\n/**\n * The palette in a modal, for the ⌘K pattern.\n *\n * The title and description are rendered but visually hidden: a dialog needs an\n * accessible name whether or not the design shows one, and leaving it out is\n * the most common defect in hand-rolled command menus.\n */\nexport function CommandDialog({\n title = \"Command palette\",\n description = \"Search for a command to run.\",\n children,\n className,\n ...props\n}: CommandDialogProps) {\n return (\n <Dialog {...props}>\n <DialogContent\n showCloseButton={false}\n className={cn(\"max-w-lg overflow-hidden p-0\", className)}\n >\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <Command className=\"rounded-none\">{children}</Command>\n </DialogContent>\n </Dialog>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { PromptInputProps } from "../ai-prompt-input/ai-prompt-input.js";
|
|
2
|
+
import "../ai-prompt-input/index.js";
|
|
3
|
+
import { VariantProps } from "class-variance-authority";
|
|
4
|
+
import { ReactNode } from "react";
|
|
5
|
+
//#region src/components/command-bar/command-bar.d.ts
|
|
6
|
+
declare const commandBarVariants: (props?: ({
|
|
7
|
+
shape?: "pill" | "rounded" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
interface CommandBarProps extends Omit<PromptInputProps, "onSubmit" | "children" | "busy">, VariantProps<typeof commandBarVariants> {
|
|
10
|
+
value?: string;
|
|
11
|
+
defaultValue?: string;
|
|
12
|
+
onValueChange?: (value: string) => void;
|
|
13
|
+
/** Called with the trimmed text. An uncontrolled bar then clears itself. */
|
|
14
|
+
onSend?: (value: string) => void;
|
|
15
|
+
/** A send is in flight: sending is blocked and the button becomes Stop. */
|
|
16
|
+
sending?: boolean;
|
|
17
|
+
onStop?: () => void;
|
|
18
|
+
/** Whether dictation is on. Omit `onDictatingChange` to hide the button. */
|
|
19
|
+
dictating?: boolean;
|
|
20
|
+
defaultDictating?: boolean;
|
|
21
|
+
onDictatingChange?: (dictating: boolean) => void;
|
|
22
|
+
placeholder?: string;
|
|
23
|
+
/** The field's accessible name. */
|
|
24
|
+
label?: string;
|
|
25
|
+
sendLabel?: string;
|
|
26
|
+
stopLabel?: string;
|
|
27
|
+
dictateLabel?: string;
|
|
28
|
+
/** Rows the field grows to before scrolling. */
|
|
29
|
+
maxRows?: number;
|
|
30
|
+
/** Slot before the field, e.g. an attach button. */
|
|
31
|
+
leading?: ReactNode;
|
|
32
|
+
}
|
|
33
|
+
/** A compact prompt bar: auto-growing field, dictate toggle and send. */
|
|
34
|
+
declare function CommandBar({ className, shape, value: valueProp, defaultValue, onValueChange, onSend, sending, onStop, dictating: dictatingProp, defaultDictating, onDictatingChange, placeholder, label, sendLabel, stopLabel, dictateLabel, maxRows, leading, disabled, ...props }: CommandBarProps): import("react").JSX.Element;
|
|
35
|
+
//#endregion
|
|
36
|
+
export { CommandBar, CommandBarProps, commandBarVariants };
|
|
37
|
+
//# sourceMappingURL=command-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-bar.d.ts","names":[],"sources":["../../../src/components/command-bar/command-bar.tsx"],"mappings":";;;;;cA2BM,qBAAkB;;6CAQtB;UAEe,wBAEb,KAAK,qDACL,oBAAoB;EACtB;EACA;EACA,iBAAiB;;EAEjB,UAAU;;EAEV;EACA;;EAEA;EACA;EACA,qBAAqB;EACrB;;EAEA;EACA;EACA;EACA;;EAEA;;EAEA,UAAU;;;iBAqBI,aACd,WACA,OACA,OAAO,WACP,cACA,eACA,QACA,SACA,QACA,WAAW,eACX,kBACA,mBACA,aACA,OACA,WACA,WACA,cACA,SACA,SACA,aACG,SACF,kCAAe,IAAA"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { focusRing } from "../../lib/styles.js";
|
|
3
|
+
import { cn } from "../../lib/utils.js";
|
|
4
|
+
import { PromptInput, PromptInputSubmit, PromptInputTextarea } from "../ai-prompt-input/ai-prompt-input.js";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { cva } from "class-variance-authority";
|
|
7
|
+
import { useState } from "react";
|
|
8
|
+
//#region src/components/command-bar/command-bar.tsx
|
|
9
|
+
const commandBarVariants = cva("flex items-end gap-1 p-1.5", {
|
|
10
|
+
variants: { shape: {
|
|
11
|
+
pill: "rounded-[1.5rem]",
|
|
12
|
+
rounded: "rounded-xl"
|
|
13
|
+
} },
|
|
14
|
+
defaultVariants: { shape: "pill" }
|
|
15
|
+
});
|
|
16
|
+
function Mic() {
|
|
17
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
18
|
+
viewBox: "0 0 24 24",
|
|
19
|
+
fill: "none",
|
|
20
|
+
stroke: "currentColor",
|
|
21
|
+
strokeWidth: "2",
|
|
22
|
+
strokeLinecap: "round",
|
|
23
|
+
strokeLinejoin: "round",
|
|
24
|
+
"aria-hidden": "true",
|
|
25
|
+
className: "size-4",
|
|
26
|
+
children: /* @__PURE__ */ jsx("path", { d: "M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3ZM19 10v2a7 7 0 0 1-14 0v-2M12 19v3" })
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/** A compact prompt bar: auto-growing field, dictate toggle and send. */
|
|
30
|
+
function CommandBar({ className, shape, value: valueProp, defaultValue = "", onValueChange, onSend, sending = false, onStop, dictating: dictatingProp, defaultDictating = false, onDictatingChange, placeholder = "Ask anything…", label = "Message", sendLabel = "Send", stopLabel = "Stop", dictateLabel = "Dictate", maxRows = 6, leading, disabled = false, ...props }) {
|
|
31
|
+
const [inner, setInner] = useState(defaultValue);
|
|
32
|
+
const value = valueProp ?? inner;
|
|
33
|
+
const [innerDictating, setInnerDictating] = useState(defaultDictating);
|
|
34
|
+
const dictating = dictatingProp ?? innerDictating;
|
|
35
|
+
const empty = value.trim() === "";
|
|
36
|
+
function setValue(next) {
|
|
37
|
+
if (valueProp === void 0) setInner(next);
|
|
38
|
+
onValueChange?.(next);
|
|
39
|
+
}
|
|
40
|
+
function handleSubmit(event) {
|
|
41
|
+
event.preventDefault();
|
|
42
|
+
if (empty) return;
|
|
43
|
+
onSend?.(value.trim());
|
|
44
|
+
if (valueProp === void 0) setInner("");
|
|
45
|
+
}
|
|
46
|
+
return /* @__PURE__ */ jsxs(PromptInput, {
|
|
47
|
+
"data-slot": "command-bar",
|
|
48
|
+
busy: sending,
|
|
49
|
+
disabled,
|
|
50
|
+
onSubmit: handleSubmit,
|
|
51
|
+
className: cn(commandBarVariants({ shape }), className),
|
|
52
|
+
...props,
|
|
53
|
+
children: [
|
|
54
|
+
leading,
|
|
55
|
+
/* @__PURE__ */ jsx(PromptInputTextarea, {
|
|
56
|
+
"aria-label": label,
|
|
57
|
+
placeholder,
|
|
58
|
+
maxRows,
|
|
59
|
+
value,
|
|
60
|
+
onChange: (event) => {
|
|
61
|
+
setValue(event.target.value);
|
|
62
|
+
},
|
|
63
|
+
className: "min-h-9 flex-1 px-2.5 py-2 leading-5"
|
|
64
|
+
}),
|
|
65
|
+
onDictatingChange || dictatingProp !== void 0 ? /* @__PURE__ */ jsx("button", {
|
|
66
|
+
type: "button",
|
|
67
|
+
"aria-label": dictateLabel,
|
|
68
|
+
"aria-pressed": dictating,
|
|
69
|
+
disabled,
|
|
70
|
+
"data-slot": "command-bar-dictate",
|
|
71
|
+
className: cn("grid size-9 shrink-0 place-items-center rounded-full text-muted-foreground", "transition-[background-color,color] duration-[var(--duration-fast)] ease-[var(--ease-out-quint)]", "hover:bg-accent hover:text-foreground aria-pressed:bg-destructive/12 aria-pressed:text-destructive", "disabled:pointer-events-none disabled:opacity-55", focusRing),
|
|
72
|
+
onClick: () => {
|
|
73
|
+
if (dictatingProp === void 0) setInnerDictating(!dictating);
|
|
74
|
+
onDictatingChange?.(!dictating);
|
|
75
|
+
},
|
|
76
|
+
children: /* @__PURE__ */ jsx(Mic, {})
|
|
77
|
+
}) : null,
|
|
78
|
+
/* @__PURE__ */ jsx(PromptInputSubmit, {
|
|
79
|
+
label: sendLabel,
|
|
80
|
+
stopLabel,
|
|
81
|
+
onStop,
|
|
82
|
+
disabled: disabled || !sending && empty,
|
|
83
|
+
className: "ms-0 size-9 rounded-full"
|
|
84
|
+
})
|
|
85
|
+
]
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
//#endregion
|
|
89
|
+
export { CommandBar, commandBarVariants };
|
|
90
|
+
|
|
91
|
+
//# sourceMappingURL=command-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-bar.js","names":[],"sources":["../../../src/components/command-bar/command-bar.tsx"],"sourcesContent":["\"use client\";\n\n// Original design (pattern inspired by bencho Command bar; no code referenced).\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { useState, type FormEvent, type ReactNode } from \"react\";\n\nimport {\n PromptInput,\n PromptInputSubmit,\n PromptInputTextarea,\n type PromptInputProps,\n} from \"@/components/ai-prompt-input\";\nimport { focusRing } from \"@/lib/styles\";\nimport { cn } from \"@/lib/utils\";\n\n/*\n * A single-row prompt bar: an auto-growing field, a dictate toggle and send.\n *\n * This is a compact composition of AI Prompt Input, not a second composer.\n * Everything that is easy to get wrong — growing to a ceiling, Enter to send\n * and Shift+Enter for a newline, never sending mid-IME-composition, the\n * send/stop control whose name follows its state — is PromptInput's own. This\n * adds only the layout (one pill row, controls aligned to the last line), a\n * controlled-or-not value that clears after sending, an empty-field guard, and\n * the dictate toggle (aria-pressed; the consumer owns the microphone).\n */\n\nconst commandBarVariants = cva(\"flex items-end gap-1 p-1.5\", {\n variants: {\n shape: {\n pill: \"rounded-[1.5rem]\",\n rounded: \"rounded-xl\",\n },\n },\n defaultVariants: { shape: \"pill\" },\n});\n\nexport interface CommandBarProps\n extends\n Omit<PromptInputProps, \"onSubmit\" | \"children\" | \"busy\">,\n VariantProps<typeof commandBarVariants> {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n /** Called with the trimmed text. An uncontrolled bar then clears itself. */\n onSend?: (value: string) => void;\n /** A send is in flight: sending is blocked and the button becomes Stop. */\n sending?: boolean;\n onStop?: () => void;\n /** Whether dictation is on. Omit `onDictatingChange` to hide the button. */\n dictating?: boolean;\n defaultDictating?: boolean;\n onDictatingChange?: (dictating: boolean) => void;\n placeholder?: string;\n /** The field's accessible name. */\n label?: string;\n sendLabel?: string;\n stopLabel?: string;\n dictateLabel?: string;\n /** Rows the field grows to before scrolling. */\n maxRows?: number;\n /** Slot before the field, e.g. an attach button. */\n leading?: ReactNode;\n}\n\nfunction Mic() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n className=\"size-4\"\n >\n <path d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3ZM19 10v2a7 7 0 0 1-14 0v-2M12 19v3\" />\n </svg>\n );\n}\n\n/** A compact prompt bar: auto-growing field, dictate toggle and send. */\nexport function CommandBar({\n className,\n shape,\n value: valueProp,\n defaultValue = \"\",\n onValueChange,\n onSend,\n sending = false,\n onStop,\n dictating: dictatingProp,\n defaultDictating = false,\n onDictatingChange,\n placeholder = \"Ask anything…\",\n label = \"Message\",\n sendLabel = \"Send\",\n stopLabel = \"Stop\",\n dictateLabel = \"Dictate\",\n maxRows = 6,\n leading,\n disabled = false,\n ...props\n}: CommandBarProps) {\n const [inner, setInner] = useState(defaultValue);\n const value = valueProp ?? inner;\n const [innerDictating, setInnerDictating] = useState(defaultDictating);\n const dictating = dictatingProp ?? innerDictating;\n const empty = value.trim() === \"\";\n\n function setValue(next: string) {\n if (valueProp === undefined) setInner(next);\n onValueChange?.(next);\n }\n\n function handleSubmit(event: FormEvent<HTMLFormElement>) {\n event.preventDefault();\n if (empty) return;\n onSend?.(value.trim());\n if (valueProp === undefined) setInner(\"\");\n }\n\n return (\n <PromptInput\n data-slot=\"command-bar\"\n busy={sending}\n disabled={disabled}\n onSubmit={handleSubmit}\n className={cn(commandBarVariants({ shape }), className)}\n {...props}\n >\n {leading}\n <PromptInputTextarea\n aria-label={label}\n placeholder={placeholder}\n maxRows={maxRows}\n value={value}\n onChange={(event) => {\n setValue(event.target.value);\n }}\n className=\"min-h-9 flex-1 px-2.5 py-2 leading-5\"\n />\n {onDictatingChange || dictatingProp !== undefined ? (\n <button\n type=\"button\"\n aria-label={dictateLabel}\n aria-pressed={dictating}\n disabled={disabled}\n data-slot=\"command-bar-dictate\"\n className={cn(\n \"grid size-9 shrink-0 place-items-center rounded-full text-muted-foreground\",\n \"transition-[background-color,color] duration-[var(--duration-fast)] ease-[var(--ease-out-quint)]\",\n \"hover:bg-accent hover:text-foreground aria-pressed:bg-destructive/12 aria-pressed:text-destructive\",\n \"disabled:pointer-events-none disabled:opacity-55\",\n focusRing,\n )}\n onClick={() => {\n if (dictatingProp === undefined) setInnerDictating(!dictating);\n onDictatingChange?.(!dictating);\n }}\n >\n <Mic />\n </button>\n ) : null}\n <PromptInputSubmit\n label={sendLabel}\n stopLabel={stopLabel}\n onStop={onStop}\n disabled={disabled || (!sending && empty)}\n className=\"ms-0 size-9 rounded-full\"\n />\n </PromptInput>\n );\n}\n\nexport { commandBarVariants };\n"],"mappings":";;;;;;;;AA2BA,MAAM,qBAAqB,IAAI,8BAA8B;CAC3D,UAAU,EACR,OAAO;EACL,MAAM;EACN,SAAS;CACX,EACF;CACA,iBAAiB,EAAE,OAAO,OAAO;AACnC,CAAC;AA8BD,SAAS,MAAM;CACb,OACE,oBAAC,OAAD;EACE,SAAQ;EACR,MAAK;EACL,QAAO;EACP,aAAY;EACZ,eAAc;EACd,gBAAe;EACf,eAAY;EACZ,WAAU;EAEV,UAAA,oBAAC,QAAD,EAAM,GAAE,yFAA0F,CAAA;CAC/F,CAAA;AAET;;AAGA,SAAgB,WAAW,EACzB,WACA,OACA,OAAO,WACP,eAAe,IACf,eACA,QACA,UAAU,OACV,QACA,WAAW,eACX,mBAAmB,OACnB,mBACA,cAAc,iBACd,QAAQ,WACR,YAAY,QACZ,YAAY,QACZ,eAAe,WACf,UAAU,GACV,SACA,WAAW,OACX,GAAG,SACe;CAClB,MAAM,CAAC,OAAO,YAAY,SAAS,YAAY;CAC/C,MAAM,QAAQ,aAAa;CAC3B,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,gBAAgB;CACrE,MAAM,YAAY,iBAAiB;CACnC,MAAM,QAAQ,MAAM,KAAK,MAAM;CAE/B,SAAS,SAAS,MAAc;EAC9B,IAAI,cAAc,KAAA,GAAW,SAAS,IAAI;EAC1C,gBAAgB,IAAI;CACtB;CAEA,SAAS,aAAa,OAAmC;EACvD,MAAM,eAAe;EACrB,IAAI,OAAO;EACX,SAAS,MAAM,KAAK,CAAC;EACrB,IAAI,cAAc,KAAA,GAAW,SAAS,EAAE;CAC1C;CAEA,OACE,qBAAC,aAAD;EACE,aAAU;EACV,MAAM;EACI;EACV,UAAU;EACV,WAAW,GAAG,mBAAmB,EAAE,MAAM,CAAC,GAAG,SAAS;EACtD,GAAI;EANN,UAAA;GAQG;GACD,oBAAC,qBAAD;IACE,cAAY;IACC;IACJ;IACF;IACP,WAAW,UAAU;KACnB,SAAS,MAAM,OAAO,KAAK;IAC7B;IACA,WAAU;GACX,CAAA;GACA,qBAAqB,kBAAkB,KAAA,IACtC,oBAAC,UAAD;IACE,MAAK;IACL,cAAY;IACZ,gBAAc;IACJ;IACV,aAAU;IACV,WAAW,GACT,8EACA,oGACA,sGACA,oDACA,SACF;IACA,eAAe;KACb,IAAI,kBAAkB,KAAA,GAAW,kBAAkB,CAAC,SAAS;KAC7D,oBAAoB,CAAC,SAAS;IAChC;IAEA,UAAA,oBAAC,KAAD,CAAM,CAAA;GACA,CAAA,IACN;GACJ,oBAAC,mBAAD;IACE,OAAO;IACI;IACH;IACR,UAAU,YAAa,CAAC,WAAW;IACnC,WAAU;GACX,CAAA;EACU;;AAEjB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { defineMeta } from "../../registry/schema.js";
|
|
2
|
+
//#region src/components/command-bar/meta.ts
|
|
3
|
+
const meta = defineMeta({
|
|
4
|
+
name: "command-bar",
|
|
5
|
+
title: "Command Bar",
|
|
6
|
+
description: "A compact one-row prompt bar — auto-growing field, dictate toggle and send — composed from AI Prompt Input.",
|
|
7
|
+
category: "ai",
|
|
8
|
+
status: "beta",
|
|
9
|
+
dependencies: ["class-variance-authority"],
|
|
10
|
+
registryDependencies: ["ai-prompt-input"],
|
|
11
|
+
files: ["command-bar.tsx"],
|
|
12
|
+
a11y: "Inherits AI Prompt Input's behaviour: Enter sends, Shift+Enter adds a newline, never mid-IME-composition, and the submit control renames itself to \"Stop\" while sending. The field is named by `label`. Send is disabled while the field is empty. Dictate is a toggle button (aria-pressed); the consumer owns the microphone."
|
|
13
|
+
});
|
|
14
|
+
//#endregion
|
|
15
|
+
export { meta };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=meta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.js","names":[],"sources":["../../../src/components/command-bar/meta.ts"],"sourcesContent":["import { defineMeta } from \"@/registry/schema\";\n\nexport const meta = defineMeta({\n name: \"command-bar\",\n title: \"Command Bar\",\n description:\n \"A compact one-row prompt bar — auto-growing field, dictate toggle and send — composed from AI Prompt Input.\",\n category: \"ai\",\n status: \"beta\",\n dependencies: [\"class-variance-authority\"],\n registryDependencies: [\"ai-prompt-input\"],\n files: [\"command-bar.tsx\"],\n a11y:\n \"Inherits AI Prompt Input's behaviour: Enter sends, Shift+Enter adds a newline, never mid-IME-composition, \" +\n 'and the submit control renames itself to \"Stop\" while sending. The field is named by `label`. Send is ' +\n \"disabled while the field is empty. Dictate is a toggle button (aria-pressed); the consumer owns the microphone.\",\n});\n"],"mappings":";;AAEA,MAAa,OAAO,WAAW;CAC7B,MAAM;CACN,OAAO;CACP,aACE;CACF,UAAU;CACV,QAAQ;CACR,cAAc,CAAC,0BAA0B;CACzC,sBAAsB,CAAC,iBAAiB;CACxC,OAAO,CAAC,iBAAiB;CACzB,MACE;AAGJ,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
//#region src/components/comment-bubble/comment-bubble.d.ts
|
|
3
|
+
interface CommentBubbleAuthor {
|
|
4
|
+
name: string;
|
|
5
|
+
/** Avatar image URL. Initials are shown without one, or while it loads. */
|
|
6
|
+
avatarUrl?: string;
|
|
7
|
+
}
|
|
8
|
+
interface CommentBubbleComment {
|
|
9
|
+
id: string;
|
|
10
|
+
author: CommentBubbleAuthor;
|
|
11
|
+
message: string;
|
|
12
|
+
/** Pre-formatted, e.g. "Just now" or "2h". */
|
|
13
|
+
timestamp?: string;
|
|
14
|
+
}
|
|
15
|
+
interface CommentBubbleProps extends Omit<ComponentPropsWithRef<"div">, "children"> {
|
|
16
|
+
/** The thread. The first comment's author is the pin's avatar. */
|
|
17
|
+
comments: CommentBubbleComment[];
|
|
18
|
+
open?: boolean;
|
|
19
|
+
defaultOpen?: boolean;
|
|
20
|
+
onOpenChange?: (open: boolean) => void;
|
|
21
|
+
/** The expanded bubble's width. Numbers are pixels. */
|
|
22
|
+
width?: number | string;
|
|
23
|
+
/** Shows a reply composer; called with the trimmed reply. */
|
|
24
|
+
onReply?: (message: string) => void;
|
|
25
|
+
/** The reply field's accessible name and placeholder. */
|
|
26
|
+
replyLabel?: string;
|
|
27
|
+
}
|
|
28
|
+
/** An avatar pin that expands into a comment thread. */
|
|
29
|
+
declare function CommentBubble({ className, comments, open: openProp, defaultOpen, onOpenChange, width, onReply, replyLabel, ...props }: CommentBubbleProps): import("react").JSX.Element | null;
|
|
30
|
+
//#endregion
|
|
31
|
+
export { CommentBubble, CommentBubbleAuthor, CommentBubbleComment, CommentBubbleProps };
|
|
32
|
+
//# sourceMappingURL=comment-bubble.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comment-bubble.d.ts","names":[],"sources":["../../../src/components/comment-bubble/comment-bubble.tsx"],"mappings":";;UA4BiB;EACf;;EAEA;;UAGe;EACf;EACA,QAAQ;EACR;;EAEA;;UAGe,2BAA2B,KAAK;;EAE/C,UAAU;EACV;EACA;EACA,gBAAgB;;EAEhB;;EAEA,WAAW;;EAEX;;;iBAwBc,gBACd,WACA,UACA,MAAM,UACN,aACA,cACA,OACA,SACA,eACG,SACF,qCAAkB,IAAA"}
|