@webjsdev/ui 0.3.17 → 0.5.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 +67 -8
- package/THIRD_PARTY_NOTICES.md +349 -0
- package/package.json +4 -2
- package/packages/registry/blocks/_shared/placeholder.svg +1 -0
- package/packages/registry/blocks/charts/chart-area-axes.ts +72 -0
- package/packages/registry/blocks/charts/chart-area-default.ts +64 -0
- package/packages/registry/blocks/charts/chart-area-gradient.ts +82 -0
- package/packages/registry/blocks/charts/chart-area-icons.ts +77 -0
- package/packages/registry/blocks/charts/chart-area-interactive.ts +204 -0
- package/packages/registry/blocks/charts/chart-area-legend.ts +72 -0
- package/packages/registry/blocks/charts/chart-area-linear.ts +64 -0
- package/packages/registry/blocks/charts/chart-area-stacked-expand.ts +77 -0
- package/packages/registry/blocks/charts/chart-area-stacked.ts +71 -0
- package/packages/registry/blocks/charts/chart-area-step.ts +68 -0
- package/packages/registry/blocks/charts/chart-bar-active.ts +93 -0
- package/packages/registry/blocks/charts/chart-bar-default.ts +60 -0
- package/packages/registry/blocks/charts/chart-bar-horizontal.ts +62 -0
- package/packages/registry/blocks/charts/chart-bar-interactive.ts +185 -0
- package/packages/registry/blocks/charts/chart-bar-label-custom.ts +78 -0
- package/packages/registry/blocks/charts/chart-bar-label.ts +66 -0
- package/packages/registry/blocks/charts/chart-bar-mixed.ts +87 -0
- package/packages/registry/blocks/charts/chart-bar-multiple.ts +67 -0
- package/packages/registry/blocks/charts/chart-bar-negative.ts +61 -0
- package/packages/registry/blocks/charts/chart-bar-stacked.ts +68 -0
- package/packages/registry/blocks/charts/chart-line-default.ts +61 -0
- package/packages/registry/blocks/charts/chart-line-dots-colors.ts +86 -0
- package/packages/registry/blocks/charts/chart-line-dots-custom.ts +75 -0
- package/packages/registry/blocks/charts/chart-line-dots.ts +65 -0
- package/packages/registry/blocks/charts/chart-line-interactive.ts +185 -0
- package/packages/registry/blocks/charts/chart-line-label-custom.ts +94 -0
- package/packages/registry/blocks/charts/chart-line-label.ts +73 -0
- package/packages/registry/blocks/charts/chart-line-linear.ts +61 -0
- package/packages/registry/blocks/charts/chart-line-multiple.ts +71 -0
- package/packages/registry/blocks/charts/chart-line-step.ts +61 -0
- package/packages/registry/blocks/charts/chart-pie-donut-active.ts +86 -0
- package/packages/registry/blocks/charts/chart-pie-donut-text.ts +89 -0
- package/packages/registry/blocks/charts/chart-pie-donut.ts +77 -0
- package/packages/registry/blocks/charts/chart-pie-interactive.ts +120 -0
- package/packages/registry/blocks/charts/chart-pie-label-custom.ts +82 -0
- package/packages/registry/blocks/charts/chart-pie-label-list.ts +86 -0
- package/packages/registry/blocks/charts/chart-pie-label.ts +77 -0
- package/packages/registry/blocks/charts/chart-pie-legend.ts +79 -0
- package/packages/registry/blocks/charts/chart-pie-separator-none.ts +77 -0
- package/packages/registry/blocks/charts/chart-pie-simple.ts +77 -0
- package/packages/registry/blocks/charts/chart-pie-stacked.ts +99 -0
- package/packages/registry/blocks/charts/chart-radar-default.ts +61 -0
- package/packages/registry/blocks/charts/chart-radar-dots.ts +61 -0
- package/packages/registry/blocks/charts/chart-radar-grid-circle-fill.ts +61 -0
- package/packages/registry/blocks/charts/chart-radar-grid-circle-no-lines.ts +61 -0
- package/packages/registry/blocks/charts/chart-radar-grid-circle.ts +61 -0
- package/packages/registry/blocks/charts/chart-radar-grid-custom.ts +61 -0
- package/packages/registry/blocks/charts/chart-radar-grid-fill.ts +61 -0
- package/packages/registry/blocks/charts/chart-radar-grid-none.ts +60 -0
- package/packages/registry/blocks/charts/chart-radar-icons.ts +76 -0
- package/packages/registry/blocks/charts/chart-radar-label-custom.ts +77 -0
- package/packages/registry/blocks/charts/chart-radar-legend.ts +70 -0
- package/packages/registry/blocks/charts/chart-radar-lines-only.ts +68 -0
- package/packages/registry/blocks/charts/chart-radar-multiple.ts +68 -0
- package/packages/registry/blocks/charts/chart-radar-radius.ts +68 -0
- package/packages/registry/blocks/charts/chart-radial-grid.ts +80 -0
- package/packages/registry/blocks/charts/chart-radial-label.ts +85 -0
- package/packages/registry/blocks/charts/chart-radial-shape.ts +81 -0
- package/packages/registry/blocks/charts/chart-radial-simple.ts +79 -0
- package/packages/registry/blocks/charts/chart-radial-stacked.ts +69 -0
- package/packages/registry/blocks/charts/chart-radial-text.ts +82 -0
- package/packages/registry/blocks/charts/chart-tooltip-advanced.ts +84 -0
- package/packages/registry/blocks/charts/chart-tooltip-default.ts +62 -0
- package/packages/registry/blocks/charts/chart-tooltip-formatter.ts +75 -0
- package/packages/registry/blocks/charts/chart-tooltip-icons.ts +68 -0
- package/packages/registry/blocks/charts/chart-tooltip-indicator-line.ts +62 -0
- package/packages/registry/blocks/charts/chart-tooltip-indicator-none.ts +62 -0
- package/packages/registry/blocks/charts/chart-tooltip-label-custom.ts +65 -0
- package/packages/registry/blocks/charts/chart-tooltip-label-formatter.ts +66 -0
- package/packages/registry/blocks/charts/chart-tooltip-label-none.ts +62 -0
- package/packages/registry/blocks/dashboard-01/components/app-sidebar.ts +108 -0
- package/packages/registry/blocks/dashboard-01/components/chart-area-interactive.ts +276 -0
- package/packages/registry/blocks/dashboard-01/components/dashboard-data.ts +89 -0
- package/packages/registry/blocks/dashboard-01/components/data-table.ts +644 -0
- package/packages/registry/blocks/dashboard-01/components/nav-documents.ts +65 -0
- package/packages/registry/blocks/dashboard-01/components/nav-main.ts +61 -0
- package/packages/registry/blocks/dashboard-01/components/nav-secondary.ts +40 -0
- package/packages/registry/blocks/dashboard-01/components/nav-user.ts +66 -0
- package/packages/registry/blocks/dashboard-01/components/section-cards.ts +59 -0
- package/packages/registry/blocks/dashboard-01/components/site-header.ts +52 -0
- package/packages/registry/blocks/dashboard-01/page.ts +39 -0
- package/packages/registry/blocks/login-01/components/login-form.ts +70 -0
- package/packages/registry/blocks/login-01/page.ts +19 -0
- package/packages/registry/blocks/login-02/components/login-form.ts +68 -0
- package/packages/registry/blocks/login-02/page.ts +36 -0
- package/packages/registry/blocks/login-03/components/login-form.ts +89 -0
- package/packages/registry/blocks/login-03/page.ts +28 -0
- package/packages/registry/blocks/login-04/components/login-form.ts +91 -0
- package/packages/registry/blocks/login-04/page.ts +20 -0
- package/packages/registry/blocks/login-05/components/login-form.ts +75 -0
- package/packages/registry/blocks/login-05/page.ts +19 -0
- package/packages/registry/blocks/preview/cards/activate-agent-dialog.ts +77 -0
- package/packages/registry/blocks/preview/cards/analytics-card.ts +64 -0
- package/packages/registry/blocks/preview/cards/anomaly-alert.ts +35 -0
- package/packages/registry/blocks/preview/cards/bar-chart-card.ts +91 -0
- package/packages/registry/blocks/preview/cards/book-appointment.ts +51 -0
- package/packages/registry/blocks/preview/cards/codespaces-card.ts +172 -0
- package/packages/registry/blocks/preview/cards/contributions-activity.ts +63 -0
- package/packages/registry/blocks/preview/cards/contributors.ts +51 -0
- package/packages/registry/blocks/preview/cards/environment-variables.ts +47 -0
- package/packages/registry/blocks/preview/cards/feedback-form.ts +61 -0
- package/packages/registry/blocks/preview/cards/file-upload.ts +51 -0
- package/packages/registry/blocks/preview/cards/github-profile.ts +66 -0
- package/packages/registry/blocks/preview/cards/icon-preview-grid.ts +47 -0
- package/packages/registry/blocks/preview/cards/invite-team.ts +78 -0
- package/packages/registry/blocks/preview/cards/invoice.ts +91 -0
- package/packages/registry/blocks/preview/cards/live-waveform.ts +330 -0
- package/packages/registry/blocks/preview/cards/no-team-members.ts +61 -0
- package/packages/registry/blocks/preview/cards/not-found.ts +46 -0
- package/packages/registry/blocks/preview/cards/observability-card.ts +44 -0
- package/packages/registry/blocks/preview/cards/pie-chart-card.ts +84 -0
- package/packages/registry/blocks/preview/cards/report-bug.ts +71 -0
- package/packages/registry/blocks/preview/cards/shipping-address.ts +79 -0
- package/packages/registry/blocks/preview/cards/shortcuts.ts +57 -0
- package/packages/registry/blocks/preview/cards/skeleton-loading.ts +37 -0
- package/packages/registry/blocks/preview/cards/sleep-report.ts +85 -0
- package/packages/registry/blocks/preview/cards/style-overview.ts +64 -0
- package/packages/registry/blocks/preview/cards/typography-specimen.ts +107 -0
- package/packages/registry/blocks/preview/cards/ui-elements.ts +164 -0
- package/packages/registry/blocks/preview/cards/usage-card.ts +63 -0
- package/packages/registry/blocks/preview/cards/visitors.ts +71 -0
- package/packages/registry/blocks/preview/cards/weekly-fitness-summary.ts +54 -0
- package/packages/registry/blocks/preview/page.ts +103 -0
- package/packages/registry/blocks/preview-02/cards/account-access.ts +70 -0
- package/packages/registry/blocks/preview-02/cards/card-overview.ts +75 -0
- package/packages/registry/blocks/preview-02/cards/claimable-balance.ts +54 -0
- package/packages/registry/blocks/preview-02/cards/contribution-history.ts +80 -0
- package/packages/registry/blocks/preview-02/cards/cover-art.ts +41 -0
- package/packages/registry/blocks/preview-02/cards/dividend-income.ts +76 -0
- package/packages/registry/blocks/preview-02/cards/empty-connect-bank.ts +38 -0
- package/packages/registry/blocks/preview-02/cards/empty-distribute-track.ts +38 -0
- package/packages/registry/blocks/preview-02/cards/empty-explore-catalog.ts +39 -0
- package/packages/registry/blocks/preview-02/cards/faq.ts +79 -0
- package/packages/registry/blocks/preview-02/cards/front-door.ts +40 -0
- package/packages/registry/blocks/preview-02/cards/index-investing.ts +31 -0
- package/packages/registry/blocks/preview-02/cards/kitchen-island.ts +90 -0
- package/packages/registry/blocks/preview-02/cards/loading-card.ts +34 -0
- package/packages/registry/blocks/preview-02/cards/new-milestone.ts +53 -0
- package/packages/registry/blocks/preview-02/cards/notification-settings.ts +126 -0
- package/packages/registry/blocks/preview-02/cards/payments.ts +88 -0
- package/packages/registry/blocks/preview-02/cards/payout-threshold.ts +92 -0
- package/packages/registry/blocks/preview-02/cards/power-usage.ts +84 -0
- package/packages/registry/blocks/preview-02/cards/preferences.ts +89 -0
- package/packages/registry/blocks/preview-02/cards/qr-connect.ts +54 -0
- package/packages/registry/blocks/preview-02/cards/receiving-method.ts +89 -0
- package/packages/registry/blocks/preview-02/cards/recent-transactions.ts +101 -0
- package/packages/registry/blocks/preview-02/cards/release-catalog.ts +73 -0
- package/packages/registry/blocks/preview-02/cards/roller-shades.ts +110 -0
- package/packages/registry/blocks/preview-02/cards/savings-progress.ts +68 -0
- package/packages/registry/blocks/preview-02/cards/savings-targets.ts +132 -0
- package/packages/registry/blocks/preview-02/cards/sidebar-nav.ts +88 -0
- package/packages/registry/blocks/preview-02/cards/social-links.ts +57 -0
- package/packages/registry/blocks/preview-02/cards/stock-performance.ts +106 -0
- package/packages/registry/blocks/preview-02/cards/syncing-state.ts +37 -0
- package/packages/registry/blocks/preview-02/cards/transfer-funds.ts +111 -0
- package/packages/registry/blocks/preview-02/cards/upcoming-payments.ts +69 -0
- package/packages/registry/blocks/preview-02/page.ts +111 -0
- package/packages/registry/blocks/preview-03/cards/files-chat.ts +75 -0
- package/packages/registry/blocks/preview-03/cards/group-chat.ts +114 -0
- package/packages/registry/blocks/preview-03/cards/reasoning-chat.ts +88 -0
- package/packages/registry/blocks/preview-03/cards/simple-chat.ts +53 -0
- package/packages/registry/blocks/preview-03/components/chat-card.ts +126 -0
- package/packages/registry/blocks/preview-03/components/chat-player.ts +174 -0
- package/packages/registry/blocks/preview-03/components/part-file.ts +77 -0
- package/packages/registry/blocks/preview-03/components/part-reasoning.ts +25 -0
- package/packages/registry/blocks/preview-03/components/part-source.ts +48 -0
- package/packages/registry/blocks/preview-03/components/part-text.ts +69 -0
- package/packages/registry/blocks/preview-03/components/part-tool.ts +71 -0
- package/packages/registry/blocks/preview-03/components/prompt-input.ts +86 -0
- package/packages/registry/blocks/preview-03/page.ts +39 -0
- package/packages/registry/blocks/sidebar-01/components/app-sidebar.ts +113 -0
- package/packages/registry/blocks/sidebar-01/components/search-form.ts +33 -0
- package/packages/registry/blocks/sidebar-01/components/version-switcher.ts +50 -0
- package/packages/registry/blocks/sidebar-01/page.ts +58 -0
- package/packages/registry/blocks/sidebar-02/components/app-sidebar.ts +131 -0
- package/packages/registry/blocks/sidebar-02/components/search-form.ts +33 -0
- package/packages/registry/blocks/sidebar-02/components/version-switcher.ts +50 -0
- package/packages/registry/blocks/sidebar-02/page.ts +53 -0
- package/packages/registry/blocks/sidebar-03/components/app-sidebar.ts +134 -0
- package/packages/registry/blocks/sidebar-03/page.ts +60 -0
- package/packages/registry/blocks/sidebar-04/components/app-sidebar.ts +136 -0
- package/packages/registry/blocks/sidebar-04/page.ts +58 -0
- package/packages/registry/blocks/sidebar-05/components/app-sidebar.ts +147 -0
- package/packages/registry/blocks/sidebar-05/components/search-form.ts +33 -0
- package/packages/registry/blocks/sidebar-05/page.ts +58 -0
- package/packages/registry/blocks/sidebar-06/components/app-sidebar.ts +105 -0
- package/packages/registry/blocks/sidebar-06/components/nav-main.ts +56 -0
- package/packages/registry/blocks/sidebar-06/components/sidebar-opt-in-form.ts +44 -0
- package/packages/registry/blocks/sidebar-06/page.ts +57 -0
- package/packages/registry/blocks/sidebar-07/components/app-sidebar.ts +108 -0
- package/packages/registry/blocks/sidebar-07/components/nav-main.ts +61 -0
- package/packages/registry/blocks/sidebar-07/components/nav-projects.ts +65 -0
- package/packages/registry/blocks/sidebar-07/components/nav-user.ts +70 -0
- package/packages/registry/blocks/sidebar-07/components/team-switcher.ts +66 -0
- package/packages/registry/blocks/sidebar-07/page.ts +59 -0
- package/packages/registry/blocks/sidebar-08/components/app-sidebar.ts +122 -0
- package/packages/registry/blocks/sidebar-08/components/nav-main.ts +68 -0
- package/packages/registry/blocks/sidebar-08/components/nav-projects.ts +65 -0
- package/packages/registry/blocks/sidebar-08/components/nav-secondary.ts +40 -0
- package/packages/registry/blocks/sidebar-08/components/nav-user.ts +70 -0
- package/packages/registry/blocks/sidebar-08/page.ts +59 -0
- package/packages/registry/blocks/sidebar-09/components/app-sidebar.ts +213 -0
- package/packages/registry/blocks/sidebar-09/components/nav-user.ts +70 -0
- package/packages/registry/blocks/sidebar-09/page.ts +52 -0
- package/packages/registry/blocks/sidebar-10/components/app-sidebar.ts +125 -0
- package/packages/registry/blocks/sidebar-10/components/nav-actions.ts +84 -0
- package/packages/registry/blocks/sidebar-10/components/nav-favorites.ts +66 -0
- package/packages/registry/blocks/sidebar-10/components/nav-main.ts +37 -0
- package/packages/registry/blocks/sidebar-10/components/nav-secondary.ts +43 -0
- package/packages/registry/blocks/sidebar-10/components/nav-workspaces.ts +78 -0
- package/packages/registry/blocks/sidebar-10/components/team-switcher.ts +63 -0
- package/packages/registry/blocks/sidebar-10/page.ts +46 -0
- package/packages/registry/blocks/sidebar-11/components/app-sidebar.ts +114 -0
- package/packages/registry/blocks/sidebar-11/page.ts +63 -0
- package/packages/registry/blocks/sidebar-12/components/app-sidebar.ts +63 -0
- package/packages/registry/blocks/sidebar-12/components/calendars.ts +53 -0
- package/packages/registry/blocks/sidebar-12/components/date-picker.ts +26 -0
- package/packages/registry/blocks/sidebar-12/components/nav-user.ts +70 -0
- package/packages/registry/blocks/sidebar-12/page.ts +43 -0
- package/packages/registry/blocks/sidebar-13/components/settings-dialog.ts +114 -0
- package/packages/registry/blocks/sidebar-13/page.ts +21 -0
- package/packages/registry/blocks/sidebar-14/components/app-sidebar.ts +120 -0
- package/packages/registry/blocks/sidebar-14/page.ts +55 -0
- package/packages/registry/blocks/sidebar-15/components/calendars.ts +53 -0
- package/packages/registry/blocks/sidebar-15/components/date-picker.ts +26 -0
- package/packages/registry/blocks/sidebar-15/components/nav-favorites.ts +66 -0
- package/packages/registry/blocks/sidebar-15/components/nav-main.ts +35 -0
- package/packages/registry/blocks/sidebar-15/components/nav-secondary.ts +43 -0
- package/packages/registry/blocks/sidebar-15/components/nav-user.ts +70 -0
- package/packages/registry/blocks/sidebar-15/components/nav-workspaces.ts +75 -0
- package/packages/registry/blocks/sidebar-15/components/sidebar-left.ts +126 -0
- package/packages/registry/blocks/sidebar-15/components/sidebar-right.ts +62 -0
- package/packages/registry/blocks/sidebar-15/components/team-switcher.ts +63 -0
- package/packages/registry/blocks/sidebar-15/page.ts +47 -0
- package/packages/registry/blocks/sidebar-16/components/app-sidebar.ts +124 -0
- package/packages/registry/blocks/sidebar-16/components/nav-main.ts +67 -0
- package/packages/registry/blocks/sidebar-16/components/nav-projects.ts +65 -0
- package/packages/registry/blocks/sidebar-16/components/nav-secondary.ts +40 -0
- package/packages/registry/blocks/sidebar-16/components/nav-user.ts +70 -0
- package/packages/registry/blocks/sidebar-16/components/search-form.ts +27 -0
- package/packages/registry/blocks/sidebar-16/components/site-header.ts +42 -0
- package/packages/registry/blocks/sidebar-16/page.ts +38 -0
- package/packages/registry/blocks/signup-01/components/signup-form.ts +78 -0
- package/packages/registry/blocks/signup-01/page.ts +19 -0
- package/packages/registry/blocks/signup-02/components/signup-form.ts +78 -0
- package/packages/registry/blocks/signup-02/page.ts +36 -0
- package/packages/registry/blocks/signup-03/components/signup-form.ts +79 -0
- package/packages/registry/blocks/signup-03/page.ts +28 -0
- package/packages/registry/blocks/signup-04/components/signup-form.ts +100 -0
- package/packages/registry/blocks/signup-04/page.ts +20 -0
- package/packages/registry/blocks/signup-05/components/signup-form.ts +75 -0
- package/packages/registry/blocks/signup-05/page.ts +20 -0
- package/packages/registry/components/accordion.ts +20 -7
- package/packages/registry/components/alert-dialog.ts +58 -13
- package/packages/registry/components/alert.ts +11 -6
- package/packages/registry/components/attachment.ts +119 -0
- package/packages/registry/components/avatar.ts +17 -8
- package/packages/registry/components/badge.ts +16 -9
- package/packages/registry/components/breadcrumb.ts +6 -6
- package/packages/registry/components/bubble.ts +95 -0
- package/packages/registry/components/button-group.ts +73 -0
- package/packages/registry/components/button.ts +35 -25
- package/packages/registry/components/calendar.ts +566 -0
- package/packages/registry/components/card.ts +8 -8
- package/packages/registry/components/carousel.ts +352 -0
- package/packages/registry/components/chart-element.ts +547 -0
- package/packages/registry/components/chart-geometry.ts +457 -0
- package/packages/registry/components/chart.ts +932 -0
- package/packages/registry/components/checkbox.ts +22 -84
- package/packages/registry/components/code-block.ts +191 -0
- package/packages/registry/components/collapsible.ts +5 -2
- package/packages/registry/components/combobox.ts +802 -0
- package/packages/registry/components/command.ts +618 -0
- package/packages/registry/components/context-menu.ts +302 -0
- package/packages/registry/components/dialog.ts +156 -45
- package/packages/registry/components/direction.ts +43 -0
- package/packages/registry/components/drawer.ts +226 -0
- package/packages/registry/components/dropdown-menu.ts +262 -83
- package/packages/registry/components/empty.ts +8 -8
- package/packages/registry/components/field.ts +20 -18
- package/packages/registry/components/floating.ts +124 -0
- package/packages/registry/components/hover-card.ts +19 -8
- package/packages/registry/components/input-group.ts +118 -0
- package/packages/registry/components/input-otp.ts +365 -0
- package/packages/registry/components/input.ts +3 -3
- package/packages/registry/components/item.ts +134 -0
- package/packages/registry/components/kbd.ts +2 -2
- package/packages/registry/components/label.ts +1 -1
- package/packages/registry/components/marker.ts +63 -0
- package/packages/registry/components/menubar.ts +388 -0
- package/packages/registry/components/message-scroller.ts +470 -0
- package/packages/registry/components/message.ts +69 -0
- package/packages/registry/components/native-select.ts +5 -5
- package/packages/registry/components/navigation-menu.ts +564 -0
- package/packages/registry/components/pagination.ts +5 -5
- package/packages/registry/components/popover.ts +30 -84
- package/packages/registry/components/progress.ts +7 -3
- package/packages/registry/components/questionnaire.ts +840 -0
- package/packages/registry/components/radio-group.ts +18 -73
- package/packages/registry/components/resizable.ts +330 -0
- package/packages/registry/components/scroll-area.ts +46 -0
- package/packages/registry/components/select.ts +650 -0
- package/packages/registry/components/separator.ts +1 -1
- package/packages/registry/components/sheet.ts +128 -0
- package/packages/registry/components/sidebar.ts +457 -0
- package/packages/registry/components/skeleton.ts +1 -1
- package/packages/registry/components/slider.ts +333 -0
- package/packages/registry/components/sonner.ts +74 -7
- package/packages/registry/components/spinner.ts +7 -4
- package/packages/registry/components/switch.ts +117 -9
- package/packages/registry/components/table.ts +11 -9
- package/packages/registry/components/tabs.ts +76 -25
- package/packages/registry/components/textarea.ts +1 -1
- package/packages/registry/components/toggle-group.ts +30 -11
- package/packages/registry/components/toggle.ts +20 -13
- package/packages/registry/components/tooltip.ts +68 -7
- package/packages/registry/components/trace.ts +75 -0
- package/packages/registry/lib/dom.ts +3 -4
- package/packages/registry/lib/icons-hugeicons.ts +955 -0
- package/packages/registry/lib/icons-phosphor.ts +955 -0
- package/packages/registry/lib/icons-remixicon.ts +955 -0
- package/packages/registry/lib/icons-tabler.ts +955 -0
- package/packages/registry/lib/icons.ts +768 -0
- package/packages/registry/lib/utils.ts +52 -8
- package/packages/registry/registry.json +4056 -72
- package/packages/registry/styles/shadcn-tailwind.css +654 -0
- package/packages/registry/styles/style-luma.css +1987 -0
- package/packages/registry/styles/style-lyra.css +1965 -0
- package/packages/registry/styles/style-maia.css +1987 -0
- package/packages/registry/styles/style-mira.css +1992 -0
- package/packages/registry/styles/style-new-york.css +1597 -0
- package/packages/registry/styles/style-nova.css +1990 -0
- package/packages/registry/styles/style-rhea.css +1987 -0
- package/packages/registry/styles/style-sera.css +1977 -0
- package/packages/registry/styles/style-vega.css +1990 -0
- package/packages/registry/styles/supplement.json +54 -0
- package/packages/registry/styles/tw-animate.css +6 -0
- package/packages/registry/themes/base-colors.js +8 -2
- package/packages/registry/themes/fonts.js +120 -0
- package/packages/registry/themes/index.css +2 -0
- package/packages/registry/themes/items.js +61 -0
- package/packages/registry/themes/preset.js +302 -0
- package/packages/registry/themes/themes.js +1193 -0
- package/src/commands/add.js +266 -14
- package/src/commands/diff.js +34 -20
- package/src/commands/info.js +7 -0
- package/src/commands/init.js +127 -10
- package/src/commands/list.js +43 -11
- package/src/commands/view.js +33 -5
- package/src/lint/rules/no-restyle.js +1 -1
- package/src/registry/extract.js +194 -5
- package/src/registry/icons.js +31 -0
- package/src/registry/local.js +15 -1
- package/src/registry/schema.js +13 -0
- package/src/registry/style-bake.js +506 -0
- package/src/utils/theme.js +110 -21
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The preview-02 "Claimable Balance" card: the balance, a status badge and a
|
|
3
|
+
* breakdown in a muted item. A fragment helper. Installed at
|
|
4
|
+
* `components/preview-02/claimable-balance.ts`. Ported from shadcn/ui's
|
|
5
|
+
* preview-02.
|
|
6
|
+
*/
|
|
7
|
+
import { html } from '@webjsdev/core';
|
|
8
|
+
import { cn } from '../../../lib/utils.ts';
|
|
9
|
+
import { badgeClass } from '../../../components/badge.ts';
|
|
10
|
+
import {
|
|
11
|
+
cardClass,
|
|
12
|
+
cardContentClass,
|
|
13
|
+
cardDescriptionClass,
|
|
14
|
+
cardFooterClass,
|
|
15
|
+
cardHeaderClass,
|
|
16
|
+
cardTitleClass,
|
|
17
|
+
} from '../../../components/card.ts';
|
|
18
|
+
import { itemClass, itemContentClass } from '../../../components/item.ts';
|
|
19
|
+
import { separatorClass } from '../../../components/separator.ts';
|
|
20
|
+
|
|
21
|
+
function row(label: string, value: string, strong = false) {
|
|
22
|
+
return html`<div class="flex items-center justify-between">
|
|
23
|
+
<span class="text-sm text-muted-foreground">${label}</span>
|
|
24
|
+
<span class=${strong ? 'text-sm font-semibold tabular-nums' : 'text-sm font-medium tabular-nums'}>${value}</span>
|
|
25
|
+
</div>`;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function claimableBalance() {
|
|
29
|
+
return html`
|
|
30
|
+
<div data-slot="card" data-size="default" class=${cardClass()}>
|
|
31
|
+
<div data-slot="card-header" class=${cardHeaderClass()}>
|
|
32
|
+
<div data-slot="card-description" class=${cardDescriptionClass()}>Claimable Balance</div>
|
|
33
|
+
<div data-slot="card-title" class=${cn(cardTitleClass(), 'text-5xl tabular-nums')}>$0.00</div>
|
|
34
|
+
<span data-slot="badge" data-variant="outline" class=${badgeClass({ variant: 'outline' })}>
|
|
35
|
+
<span class="size-2 rounded-full bg-yellow-500"></span>
|
|
36
|
+
Pending Setup
|
|
37
|
+
</span>
|
|
38
|
+
</div>
|
|
39
|
+
<div data-slot="card-content" class=${cn(cardContentClass(), 'flex flex-1 flex-col justify-end')}>
|
|
40
|
+
<div data-slot="item" data-variant="muted" data-size="default" class=${cn(itemClass({ variant: 'muted' }), 'flex-col items-stretch')}>
|
|
41
|
+
<div data-slot="item-content" class=${cn(itemContentClass(), 'gap-3')}>
|
|
42
|
+
${row('Net Royalties', '$0.00')}
|
|
43
|
+
${row('Processing Fee', '-$0.00')}
|
|
44
|
+
<div role="none" data-slot="separator" data-orientation="horizontal" class=${separatorClass()}></div>
|
|
45
|
+
${row('Total Ready to Claim', '$0.00 USD', true)}
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
<div data-slot="card-footer" class=${cardFooterClass()}>
|
|
50
|
+
<div data-slot="card-description" class=${cardDescriptionClass()}>Once your bank is connected, balances over $10.00 are automatically eligible for monthly distribution on the 15th of each month.</div>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
`;
|
|
54
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The preview-02 "Contribution History" card: six months of contributions as
|
|
3
|
+
* a bar chart, two summary items and a report button. A fragment helper; the
|
|
4
|
+
* chart is the kit's `<ui-chart>`, drawn by the server. Installed at
|
|
5
|
+
* `components/preview-02/contribution-history.ts`. Ported from shadcn/ui's
|
|
6
|
+
* preview-02.
|
|
7
|
+
*/
|
|
8
|
+
import { html } from '@webjsdev/core';
|
|
9
|
+
import { cn } from '../../../lib/utils.ts';
|
|
10
|
+
import { buttonClass } from '../../../components/button.ts';
|
|
11
|
+
import {
|
|
12
|
+
cardClass,
|
|
13
|
+
cardContentClass,
|
|
14
|
+
cardDescriptionClass,
|
|
15
|
+
cardFooterClass,
|
|
16
|
+
cardHeaderClass,
|
|
17
|
+
cardTitleClass,
|
|
18
|
+
} from '../../../components/card.ts';
|
|
19
|
+
import { barChart, type ChartConfig } from '../../../components/chart.ts';
|
|
20
|
+
import { itemClass, itemContentClass, itemDescriptionClass } from '../../../components/item.ts';
|
|
21
|
+
|
|
22
|
+
const chartData = [
|
|
23
|
+
{ month: 'Dec', amount: 800 },
|
|
24
|
+
{ month: 'Jan', amount: 1100 },
|
|
25
|
+
{ month: 'Feb', amount: 900 },
|
|
26
|
+
{ month: 'Mar', amount: 1300 },
|
|
27
|
+
{ month: 'Apr', amount: 750 },
|
|
28
|
+
{ month: 'May', amount: 1400 },
|
|
29
|
+
];
|
|
30
|
+
|
|
31
|
+
const chartConfig: ChartConfig = {
|
|
32
|
+
amount: { label: 'Contribution', color: 'var(--chart-2)' },
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
function summary(label: string, value: string, note: string) {
|
|
36
|
+
return html`<div data-slot="item" data-variant="muted" data-size="default" class=${cn(itemClass({ variant: 'muted' }), 'flex-col items-stretch')}>
|
|
37
|
+
<div data-slot="item-content" class=${cn(itemContentClass(), 'gap-1')}>
|
|
38
|
+
<p data-slot="item-description" class=${cn(itemDescriptionClass(), 'text-xs font-medium tracking-wider text-muted-foreground uppercase')}>${label}</p>
|
|
39
|
+
<span class="font-heading text-lg font-semibold">${value}</span>
|
|
40
|
+
<span class="text-sm text-muted-foreground">${note}</span>
|
|
41
|
+
</div>
|
|
42
|
+
</div>`;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function contributionHistory() {
|
|
46
|
+
return html`
|
|
47
|
+
<div data-slot="card" data-size="default" class=${cardClass()}>
|
|
48
|
+
<div data-slot="card-header" class=${cardHeaderClass()}>
|
|
49
|
+
<div data-slot="card-title" class=${cardTitleClass()}>Contribution History</div>
|
|
50
|
+
<div data-slot="card-description" class=${cardDescriptionClass()}>Last 6 months of activity</div>
|
|
51
|
+
</div>
|
|
52
|
+
<div data-slot="card-content" class=${cardContentClass()}>
|
|
53
|
+
${barChart({
|
|
54
|
+
config: chartConfig,
|
|
55
|
+
data: chartData,
|
|
56
|
+
title: 'Monthly contributions, December to May',
|
|
57
|
+
class: 'h-[200px] w-full',
|
|
58
|
+
width: 330,
|
|
59
|
+
height: 200,
|
|
60
|
+
margin: { left: 0, right: 0, top: 8, bottom: 0 },
|
|
61
|
+
xAxis: { dataKey: 'month', tickLine: false, tickMargin: 8, axisLine: false },
|
|
62
|
+
yAxis: false,
|
|
63
|
+
grid: false,
|
|
64
|
+
maxBarSize: 40,
|
|
65
|
+
tooltip: { cursor: false, hideLabel: true, class: 'min-w-40' },
|
|
66
|
+
bars: [{ dataKey: 'amount', fill: 'var(--color-amount)', radius: [6, 6, 0, 0] }],
|
|
67
|
+
})}
|
|
68
|
+
</div>
|
|
69
|
+
<div data-slot="card-content" class=${cardContentClass()}>
|
|
70
|
+
<div class="grid w-full grid-cols-1 gap-3 md:grid-cols-2">
|
|
71
|
+
${summary('Upcoming', 'May 25, 2024', '$1,000 scheduled')}
|
|
72
|
+
${summary('Auto-Save Plan', 'Accelerated', 'Recurring weekly')}
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
<div data-slot="card-footer" class=${cardFooterClass()}>
|
|
76
|
+
<button type="button" data-slot="button" data-variant="default" data-size="default" class=${cn(buttonClass(), 'w-full')}>View Full Report</button>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
`;
|
|
80
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The preview-02 Cover Art card: an image drop target over a real file
|
|
3
|
+
* input, with an upload button that opens the same input. A fragment helper.
|
|
4
|
+
* Installed by `npx @webjsdev/ui add preview-02` at
|
|
5
|
+
* `components/preview-02/cover-art.ts`. Ported from shadcn/ui's preview-02.
|
|
6
|
+
*
|
|
7
|
+
* Wrap it in a `<form enctype="multipart/form-data">` bound to your upload
|
|
8
|
+
* action, and the file input submits with it.
|
|
9
|
+
*/
|
|
10
|
+
import { html } from '@webjsdev/core';
|
|
11
|
+
import { buttonClass } from '../../../components/button.ts';
|
|
12
|
+
import { cardClass, cardContentClass, cardDescriptionClass, cardFooterClass } from '../../../components/card.ts';
|
|
13
|
+
import { itemClass } from '../../../components/item.ts';
|
|
14
|
+
import { labelClass } from '../../../components/label.ts';
|
|
15
|
+
import { cn } from '../../../lib/utils.ts';
|
|
16
|
+
import { ImageIcon } from '../../../lib/icons.ts';
|
|
17
|
+
|
|
18
|
+
export function coverArt() {
|
|
19
|
+
return html`
|
|
20
|
+
<div data-slot="card" data-size="default" class=${cardClass()}>
|
|
21
|
+
<div data-slot="card-content" class=${cn(cardContentClass(), 'flex flex-col gap-3')}>
|
|
22
|
+
<label data-slot="label" for="cover-art" class=${cn(labelClass(), 'text-center text-xs font-normal tracking-wider text-muted-foreground uppercase')}>Cover Art</label>
|
|
23
|
+
<div data-slot="item" data-variant="outline" data-size="default" class=${cn(itemClass({ variant: 'outline' }), 'aspect-square')}>
|
|
24
|
+
<label for="cover-art" class="flex size-full cursor-pointer items-center justify-center">
|
|
25
|
+
${ImageIcon('size-10 text-muted-foreground/50')}
|
|
26
|
+
<span class="sr-only">Choose cover art</span>
|
|
27
|
+
</label>
|
|
28
|
+
</div>
|
|
29
|
+
<input id="cover-art" name="cover-art" type="file" accept="image/jpeg,image/png" class="sr-only">
|
|
30
|
+
</div>
|
|
31
|
+
<div data-slot="card-footer" class=${cn(cardFooterClass(), 'flex-col gap-2')}>
|
|
32
|
+
<label for="cover-art" data-slot="button" data-variant="secondary" data-size="default" class=${cn(buttonClass({ variant: 'secondary' }), 'w-full cursor-pointer')}>Upload Artwork</label>
|
|
33
|
+
<div data-slot="card-description" class=${cn(cardDescriptionClass(), 'text-center text-xs')}>
|
|
34
|
+
Minimum 3000 × 3000px
|
|
35
|
+
<br>
|
|
36
|
+
JPEG or PNG only
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
`;
|
|
41
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The preview-02 "Q2 Dividend Income" card: one muted item per holding, each
|
|
3
|
+
* with a small quarterly bar chart and its payout. A fragment helper; the
|
|
4
|
+
* charts are the kit's `<ui-chart>`, drawn by the server. Installed at
|
|
5
|
+
* `components/preview-02/dividend-income.ts`. Ported from shadcn/ui's
|
|
6
|
+
* preview-02.
|
|
7
|
+
*/
|
|
8
|
+
import { html } from '@webjsdev/core';
|
|
9
|
+
import { cn } from '../../../lib/utils.ts';
|
|
10
|
+
import { buttonClass } from '../../../components/button.ts';
|
|
11
|
+
import {
|
|
12
|
+
cardActionClass,
|
|
13
|
+
cardClass,
|
|
14
|
+
cardContentClass,
|
|
15
|
+
cardDescriptionClass,
|
|
16
|
+
cardHeaderClass,
|
|
17
|
+
cardTitleClass,
|
|
18
|
+
} from '../../../components/card.ts';
|
|
19
|
+
import { barChart, type ChartConfig } from '../../../components/chart.ts';
|
|
20
|
+
import {
|
|
21
|
+
itemClass,
|
|
22
|
+
itemContentClass,
|
|
23
|
+
itemDescriptionClass,
|
|
24
|
+
itemGroupClass,
|
|
25
|
+
itemTitleClass,
|
|
26
|
+
} from '../../../components/item.ts';
|
|
27
|
+
import { XIcon } from '../../../lib/icons.ts';
|
|
28
|
+
|
|
29
|
+
const HOLDINGS = [
|
|
30
|
+
{ name: 'Vanguard VIG', shares: '450 Shares', amount: '$1,842.10', data: [380, 420, 390, 652] },
|
|
31
|
+
{ name: 'S&P 500 VOO', shares: '112 Shares', amount: '$928.40', data: [180, 210, 320, 218] },
|
|
32
|
+
{ name: 'Apple AAPL', shares: '85 Shares', amount: '$340.00', data: [60, 70, 120, 90] },
|
|
33
|
+
{ name: 'Realty Income', shares: '320 Shares', amount: '$1,139.50', data: [240, 260, 280, 360] },
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
const miniChartConfig: ChartConfig = {
|
|
37
|
+
value: { label: 'Dividend', color: 'var(--chart-2)' },
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export function dividendIncome() {
|
|
41
|
+
return html`
|
|
42
|
+
<div data-slot="card" data-size="default" class=${cardClass()}>
|
|
43
|
+
<div data-slot="card-header" class=${cardHeaderClass()}>
|
|
44
|
+
<div data-slot="card-title" class=${cardTitleClass()}>Q2 Dividend Income</div>
|
|
45
|
+
<div data-slot="card-description" class=${cardDescriptionClass()}>Quarterly dividend payouts across your portfolio holdings.</div>
|
|
46
|
+
<div data-slot="card-action" class=${cardActionClass()}>
|
|
47
|
+
<button type="button" data-slot="button" data-variant="ghost" data-size="icon-sm" aria-label="Dismiss" class=${cn(buttonClass({ variant: 'ghost', size: 'icon-sm' }), 'bg-muted')}>${XIcon()}</button>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
<div data-slot="card-content" class=${cardContentClass()}>
|
|
51
|
+
<div role="list" data-slot="item-group" class=${itemGroupClass()}>
|
|
52
|
+
${HOLDINGS.map((holding) => html`
|
|
53
|
+
<div role="listitem" data-slot="item" data-variant="muted" data-size="default" class=${itemClass({ variant: 'muted' })}>
|
|
54
|
+
<div data-slot="item-content" class=${itemContentClass()}>
|
|
55
|
+
<div data-slot="item-title" class=${itemTitleClass()}>${holding.name}</div>
|
|
56
|
+
<p data-slot="item-description" class=${itemDescriptionClass()}>${holding.shares}</p>
|
|
57
|
+
</div>
|
|
58
|
+
${barChart({
|
|
59
|
+
config: miniChartConfig,
|
|
60
|
+
data: holding.data.map((value, i) => ({ q: `Q${i + 1}`, value })),
|
|
61
|
+
title: `${holding.name} quarterly dividends`,
|
|
62
|
+
class: 'hidden h-8 w-24 md:block',
|
|
63
|
+
width: 96,
|
|
64
|
+
height: 32,
|
|
65
|
+
margin: { top: 0, right: 0, bottom: 0, left: 0 },
|
|
66
|
+
tooltip: { cursor: false, hideLabel: true },
|
|
67
|
+
bars: [{ dataKey: 'value', fill: 'var(--color-value)', radius: [3, 3, 0, 0] }],
|
|
68
|
+
})}
|
|
69
|
+
<span class="hidden text-sm font-semibold tabular-nums md:block">${holding.amount}</span>
|
|
70
|
+
</div>
|
|
71
|
+
`)}
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
`;
|
|
76
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The preview-02 Connect Bank card: an empty state asking to set up payouts.
|
|
3
|
+
* A fragment helper. Installed by `npx @webjsdev/ui add preview-02` at
|
|
4
|
+
* `components/preview-02/empty-connect-bank.ts`. Ported from shadcn/ui's
|
|
5
|
+
* preview-02.
|
|
6
|
+
*/
|
|
7
|
+
import { html } from '@webjsdev/core';
|
|
8
|
+
import { buttonClass } from '../../../components/button.ts';
|
|
9
|
+
import { cardClass, cardContentClass } from '../../../components/card.ts';
|
|
10
|
+
import {
|
|
11
|
+
emptyClass,
|
|
12
|
+
emptyContentClass,
|
|
13
|
+
emptyDescriptionClass,
|
|
14
|
+
emptyHeaderClass,
|
|
15
|
+
emptyMediaClass,
|
|
16
|
+
emptyTitleClass,
|
|
17
|
+
} from '../../../components/empty.ts';
|
|
18
|
+
import { cn } from '../../../lib/utils.ts';
|
|
19
|
+
import { CreditCardIcon } from '../../../lib/icons.ts';
|
|
20
|
+
|
|
21
|
+
export function emptyConnectBank() {
|
|
22
|
+
return html`
|
|
23
|
+
<div data-slot="card" data-size="default" class=${cardClass()}>
|
|
24
|
+
<div data-slot="card-content" class=${cardContentClass()}>
|
|
25
|
+
<div data-slot="empty" class=${cn(emptyClass(), 'p-4')}>
|
|
26
|
+
<div data-slot="empty-icon" data-variant="icon" aria-hidden="true" class=${emptyMediaClass({ variant: 'icon' })}>${CreditCardIcon()}</div>
|
|
27
|
+
<div data-slot="empty-header" class=${emptyHeaderClass()}>
|
|
28
|
+
<div data-slot="empty-title" class=${emptyTitleClass()}>Connect Bank</div>
|
|
29
|
+
<div data-slot="empty-description" class=${emptyDescriptionClass()}>Link your payout method to receive monthly royalty distributions automatically.</div>
|
|
30
|
+
</div>
|
|
31
|
+
<div data-slot="empty-content" class=${emptyContentClass()}>
|
|
32
|
+
<button type="button" data-slot="button" data-variant="default" data-size="default" class=${buttonClass()}>Set Up Payouts</button>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
`;
|
|
38
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The preview-02 "Distribute Track" empty state: a card holding the kit's
|
|
3
|
+
* empty state with a create button. A fragment helper. Installed at
|
|
4
|
+
* `components/preview-02/empty-distribute-track.ts`. Ported from shadcn/ui's
|
|
5
|
+
* preview-02.
|
|
6
|
+
*/
|
|
7
|
+
import { html } from '@webjsdev/core';
|
|
8
|
+
import { cn } from '../../../lib/utils.ts';
|
|
9
|
+
import { buttonClass } from '../../../components/button.ts';
|
|
10
|
+
import { cardClass, cardContentClass } from '../../../components/card.ts';
|
|
11
|
+
import {
|
|
12
|
+
emptyClass,
|
|
13
|
+
emptyContentClass,
|
|
14
|
+
emptyDescriptionClass,
|
|
15
|
+
emptyHeaderClass,
|
|
16
|
+
emptyMediaClass,
|
|
17
|
+
emptyTitleClass,
|
|
18
|
+
} from '../../../components/empty.ts';
|
|
19
|
+
import { PlusIcon } from '../../../lib/icons.ts';
|
|
20
|
+
|
|
21
|
+
export function emptyDistributeTrack() {
|
|
22
|
+
return html`
|
|
23
|
+
<div data-slot="card" data-size="default" class=${cardClass()}>
|
|
24
|
+
<div data-slot="card-content" class=${cardContentClass()}>
|
|
25
|
+
<div data-slot="empty" class=${cn(emptyClass(), 'p-4')}>
|
|
26
|
+
<div data-slot="empty-icon" data-variant="icon" class=${emptyMediaClass({ variant: 'icon' })}>${PlusIcon()}</div>
|
|
27
|
+
<div data-slot="empty-header" class=${emptyHeaderClass()}>
|
|
28
|
+
<div data-slot="empty-title" class=${emptyTitleClass()}>Distribute Track</div>
|
|
29
|
+
<p data-slot="empty-description" class=${emptyDescriptionClass()}>Upload your first master to start reaching listeners on Spotify, Apple Music, and more.</p>
|
|
30
|
+
</div>
|
|
31
|
+
<div data-slot="empty-content" class=${emptyContentClass()}>
|
|
32
|
+
<button type="button" data-slot="button" data-variant="default" data-size="default" class=${buttonClass()}>Create Release</button>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
`;
|
|
38
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The preview-02 Explore Catalog card: an empty state pointing at the
|
|
3
|
+
* catalog review. A fragment helper. Installed by
|
|
4
|
+
* `npx @webjsdev/ui add preview-02` at
|
|
5
|
+
* `components/preview-02/empty-explore-catalog.ts`. Ported from shadcn/ui's
|
|
6
|
+
* preview-02.
|
|
7
|
+
*/
|
|
8
|
+
import { html } from '@webjsdev/core';
|
|
9
|
+
import { buttonClass } from '../../../components/button.ts';
|
|
10
|
+
import { cardClass, cardContentClass } from '../../../components/card.ts';
|
|
11
|
+
import {
|
|
12
|
+
emptyClass,
|
|
13
|
+
emptyContentClass,
|
|
14
|
+
emptyDescriptionClass,
|
|
15
|
+
emptyHeaderClass,
|
|
16
|
+
emptyMediaClass,
|
|
17
|
+
emptyTitleClass,
|
|
18
|
+
} from '../../../components/empty.ts';
|
|
19
|
+
import { cn } from '../../../lib/utils.ts';
|
|
20
|
+
import { AudioLinesIcon } from '../../../lib/icons.ts';
|
|
21
|
+
|
|
22
|
+
export function emptyExploreCatalog() {
|
|
23
|
+
return html`
|
|
24
|
+
<div data-slot="card" data-size="default" class=${cardClass()}>
|
|
25
|
+
<div data-slot="card-content" class=${cardContentClass()}>
|
|
26
|
+
<div data-slot="empty" class=${cn(emptyClass(), 'p-4')}>
|
|
27
|
+
<div data-slot="empty-icon" data-variant="icon" aria-hidden="true" class=${emptyMediaClass({ variant: 'icon' })}>${AudioLinesIcon()}</div>
|
|
28
|
+
<div data-slot="empty-header" class=${emptyHeaderClass()}>
|
|
29
|
+
<div data-slot="empty-title" class=${emptyTitleClass()}>Explore Catalog</div>
|
|
30
|
+
<div data-slot="empty-description" class=${emptyDescriptionClass()}>Check your ISRC codes, metadata, and visual assets before going live.</div>
|
|
31
|
+
</div>
|
|
32
|
+
<div data-slot="empty-content" class=${emptyContentClass()}>
|
|
33
|
+
<button type="button" data-slot="button" data-variant="default" data-size="default" class=${buttonClass()}>View Catalog</button>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
`;
|
|
39
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The preview-02 FAQ card: three tabs of questions, each tab an accordion
|
|
3
|
+
* with its first answer open. A fragment helper; the tabs are the kit's
|
|
4
|
+
* `<ui-tabs>` and each accordion is native `<details>` sharing a `name`, so
|
|
5
|
+
* one answer opens at a time with no JavaScript. Installed at
|
|
6
|
+
* `components/preview-02/faq.ts`. Ported from shadcn/ui's preview-02.
|
|
7
|
+
*/
|
|
8
|
+
import { html } from '@webjsdev/core';
|
|
9
|
+
import { cn } from '../../../lib/utils.ts';
|
|
10
|
+
import {
|
|
11
|
+
accordionClass,
|
|
12
|
+
accordionContentClass,
|
|
13
|
+
accordionContentInnerClass,
|
|
14
|
+
accordionItemClass,
|
|
15
|
+
accordionTriggerClass,
|
|
16
|
+
} from '../../../components/accordion.ts';
|
|
17
|
+
import { buttonClass } from '../../../components/button.ts';
|
|
18
|
+
import { cardClass, cardContentClass, cardFooterClass } from '../../../components/card.ts';
|
|
19
|
+
import '../../../components/tabs.ts';
|
|
20
|
+
import { ChevronDownIcon } from '../../../lib/icons.ts';
|
|
21
|
+
|
|
22
|
+
interface Question { q: string; a: string }
|
|
23
|
+
|
|
24
|
+
const GENERAL_QUESTIONS: Question[] = [
|
|
25
|
+
{ q: 'How secure is my financial data with Ledger?', a: 'We use bank-level AES-256 encryption, SOC 2 Type II certified infrastructure, and never store your credentials. All connections use read-only access tokens. We are a SEC registered investment advisor.' },
|
|
26
|
+
{ q: 'How do I connect my bank or investment accounts?', a: 'Go to Settings > Linked Accounts and search for your institution. We support over 12,000 banks and brokerages via Plaid and MX.' },
|
|
27
|
+
{ q: 'Can I export my data for tax purposes?', a: 'Yes. Navigate to Reports > Tax Export to download a CSV or PDF summary of your transactions, dividends, and capital gains for any tax year.' },
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
const BILLING_QUESTIONS: Question[] = [
|
|
31
|
+
{ q: 'What is the difference between Basic and Pro pricing tiers?', a: 'Basic includes budgeting, goal tracking, and up to 3 linked accounts. Pro adds unlimited accounts, dividend tracking, portfolio analysis, and priority support.' },
|
|
32
|
+
{ q: 'How do I cancel my subscription?', a: 'Go to Settings > Billing > Manage Plan and click Cancel. Your access continues until the end of your current billing period.' },
|
|
33
|
+
{ q: 'Do you offer a free trial?', a: 'Yes. All new accounts start with a 14-day Pro trial. No credit card required.' },
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
const GOALS_QUESTIONS: Question[] = [
|
|
37
|
+
{ q: 'How do I set up a custom financial goal?', a: "Click New Goal from the Savings Targets card. Choose a category, set a target amount and date, and we'll calculate the monthly contribution needed." },
|
|
38
|
+
{ q: 'Can I track multiple goals at once?', a: 'Yes. Pro accounts can track unlimited goals. Basic accounts support up to 3 active goals.' },
|
|
39
|
+
{ q: 'How are monthly contributions calculated?', a: 'We divide the remaining amount by the number of months until your target date, adjusted for your current savings rate and any auto-transfer schedules.' },
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
function questionList(name: string, questions: Question[]) {
|
|
43
|
+
return html`<div data-slot="accordion" class=${accordionClass()}>
|
|
44
|
+
${questions.map((item, index) => html`
|
|
45
|
+
<details name=${`faq-${name}`} data-slot="accordion-item" class=${accordionItemClass()} ?open=${index === 0}>
|
|
46
|
+
<summary data-slot="accordion-trigger" class=${accordionTriggerClass()}>
|
|
47
|
+
<span>${item.q}</span>
|
|
48
|
+
${ChevronDownIcon('pointer-events-none size-4 shrink-0 text-muted-foreground transition-transform group-open:rotate-180')}
|
|
49
|
+
</summary>
|
|
50
|
+
<div data-slot="accordion-content" class=${accordionContentClass()}>
|
|
51
|
+
<div class=${accordionContentInnerClass()}>${item.a}</div>
|
|
52
|
+
</div>
|
|
53
|
+
</details>
|
|
54
|
+
`)}
|
|
55
|
+
</div>`;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function faq() {
|
|
59
|
+
return html`
|
|
60
|
+
<div data-slot="card" data-size="default" class=${cardClass()}>
|
|
61
|
+
<div data-slot="card-content" class=${cardContentClass()}>
|
|
62
|
+
<ui-tabs value="general">
|
|
63
|
+
<ui-tabs-list class="w-full">
|
|
64
|
+
<ui-tabs-trigger value="general" class="flex-1">General</ui-tabs-trigger>
|
|
65
|
+
<ui-tabs-trigger value="billing" class="flex-1">Billing</ui-tabs-trigger>
|
|
66
|
+
<ui-tabs-trigger value="goals" class="flex-1">Goals</ui-tabs-trigger>
|
|
67
|
+
</ui-tabs-list>
|
|
68
|
+
<ui-tabs-content value="general">${questionList('general', GENERAL_QUESTIONS)}</ui-tabs-content>
|
|
69
|
+
<ui-tabs-content value="billing">${questionList('billing', BILLING_QUESTIONS)}</ui-tabs-content>
|
|
70
|
+
<ui-tabs-content value="goals">${questionList('goals', GOALS_QUESTIONS)}</ui-tabs-content>
|
|
71
|
+
</ui-tabs>
|
|
72
|
+
</div>
|
|
73
|
+
<div data-slot="card-footer" class=${cardFooterClass()}>
|
|
74
|
+
<button type="button" data-slot="button" data-variant="outline" data-size="default" class=${cn(buttonClass({ variant: 'outline' }), 'w-full')}>Contact Support</button>
|
|
75
|
+
<a href="#" data-slot="button" data-variant="link" data-size="default" class=${cn(buttonClass({ variant: 'link' }), 'w-full')}>Learn More</a>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
`;
|
|
79
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The preview-02 Front Door card: a smart lock's status over a striped live
|
|
3
|
+
* camera placeholder. A fragment helper. Installed by
|
|
4
|
+
* `npx @webjsdev/ui add preview-02` at `components/preview-02/front-door.ts`.
|
|
5
|
+
* Ported from shadcn/ui's preview-02.
|
|
6
|
+
*/
|
|
7
|
+
import { html } from '@webjsdev/core';
|
|
8
|
+
import { badgeClass } from '../../../components/badge.ts';
|
|
9
|
+
import {
|
|
10
|
+
cardActionClass,
|
|
11
|
+
cardClass,
|
|
12
|
+
cardContentClass,
|
|
13
|
+
cardDescriptionClass,
|
|
14
|
+
cardHeaderClass,
|
|
15
|
+
cardTitleClass,
|
|
16
|
+
} from '../../../components/card.ts';
|
|
17
|
+
import { cn } from '../../../lib/utils.ts';
|
|
18
|
+
import { LockIcon } from '../../../lib/icons.ts';
|
|
19
|
+
|
|
20
|
+
export function frontDoor() {
|
|
21
|
+
return html`
|
|
22
|
+
<div data-slot="card" data-size="default" class=${cardClass()}>
|
|
23
|
+
<div data-slot="card-header" class=${cardHeaderClass()}>
|
|
24
|
+
<div data-slot="card-title" class=${cardTitleClass()}>Front Door</div>
|
|
25
|
+
<div data-slot="card-description" class=${cardDescriptionClass()}>Smart Lock Pro</div>
|
|
26
|
+
<div data-slot="card-action" class=${cardActionClass()}>
|
|
27
|
+
<div class="flex items-center gap-1.5 text-sm text-muted-foreground">
|
|
28
|
+
Locked
|
|
29
|
+
${LockIcon('size-4')}
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
<div data-slot="card-content" class=${cardContentClass()}>
|
|
34
|
+
<div class="relative flex aspect-video items-center justify-center overflow-hidden rounded-lg bg-muted bg-[repeating-linear-gradient(45deg,transparent,transparent_10px,var(--border)_10px,var(--border)_11px)]">
|
|
35
|
+
<span data-slot="badge" data-variant="destructive" class=${cn(badgeClass({ variant: 'destructive' }), 'absolute top-2 right-2')}>Live</span>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
`;
|
|
40
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The preview-02 "Dollar-Cost Averaging" card: a heading over a paragraph
|
|
3
|
+
* with an inline link. A fragment helper. Installed at
|
|
4
|
+
* `components/preview-02/index-investing.ts`. Ported from shadcn/ui's
|
|
5
|
+
* preview-02.
|
|
6
|
+
*/
|
|
7
|
+
import { html } from '@webjsdev/core';
|
|
8
|
+
import { cn } from '../../../lib/utils.ts';
|
|
9
|
+
import {
|
|
10
|
+
cardClass,
|
|
11
|
+
cardContentClass,
|
|
12
|
+
cardDescriptionClass,
|
|
13
|
+
cardHeaderClass,
|
|
14
|
+
cardTitleClass,
|
|
15
|
+
} from '../../../components/card.ts';
|
|
16
|
+
|
|
17
|
+
export function indexInvesting() {
|
|
18
|
+
return html`
|
|
19
|
+
<div data-slot="card" data-size="default" class=${cardClass()}>
|
|
20
|
+
<div data-slot="card-header" class=${cardHeaderClass()}>
|
|
21
|
+
<div data-slot="card-title" class=${cardTitleClass()}>Dollar-Cost Averaging</div>
|
|
22
|
+
<div data-slot="card-description" class=${cardDescriptionClass()}>A strategy for building wealth over time.</div>
|
|
23
|
+
</div>
|
|
24
|
+
<div data-slot="card-content" class=${cardContentClass()}>
|
|
25
|
+
<div data-slot="card-description" class=${cn(cardDescriptionClass(), 'mt-3 text-sm leading-relaxed style-sera:mt-0')}>
|
|
26
|
+
<a href="#" class="underline underline-offset-4 hover:text-primary">Over time</a>, this smooths out the average cost of your investments. When prices drop, your fixed amount buys more shares. When prices rise, you buy fewer. The result is a lower average cost per share compared to lump-sum investing during volatile periods.
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
`;
|
|
31
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The preview-02 "Kitchen Island" light control: an on switch, a scene picker
|
|
3
|
+
* and four sliders. A fragment helper; the switch, the scene picker and the
|
|
4
|
+
* sliders are the kit's `<ui-switch>`, `<ui-toggle-group>` and `<ui-slider>`.
|
|
5
|
+
* Installed at `components/preview-02/kitchen-island.ts`. Ported from
|
|
6
|
+
* shadcn/ui's preview-02.
|
|
7
|
+
*
|
|
8
|
+
* It renders the "Cooking" scene. shadcn moves the four sliders to each
|
|
9
|
+
* scene's preset from React state. Here the presets are in `SCENES`: listen
|
|
10
|
+
* for the toggle group's `ui-value-change` in a small element of your own and
|
|
11
|
+
* set the sliders' values, or post the choice to the server and render it.
|
|
12
|
+
*/
|
|
13
|
+
import { html } from '@webjsdev/core';
|
|
14
|
+
import type { TemplateResult } from '@webjsdev/core';
|
|
15
|
+
import { cn } from '../../../lib/utils.ts';
|
|
16
|
+
import {
|
|
17
|
+
cardActionClass,
|
|
18
|
+
cardClass,
|
|
19
|
+
cardContentClass,
|
|
20
|
+
cardDescriptionClass,
|
|
21
|
+
cardHeaderClass,
|
|
22
|
+
cardTitleClass,
|
|
23
|
+
} from '../../../components/card.ts';
|
|
24
|
+
import {
|
|
25
|
+
itemActionsClass,
|
|
26
|
+
itemClass,
|
|
27
|
+
itemContentClass,
|
|
28
|
+
itemGroupClass,
|
|
29
|
+
itemMediaClass,
|
|
30
|
+
itemTitleClass,
|
|
31
|
+
} from '../../../components/item.ts';
|
|
32
|
+
import { sliderClass } from '../../../components/slider.ts';
|
|
33
|
+
import '../../../components/slider.ts';
|
|
34
|
+
import '../../../components/switch.ts';
|
|
35
|
+
import '../../../components/toggle-group.ts';
|
|
36
|
+
import { SunIcon, ThermometerIcon, TimerIcon, Volume2Icon } from '../../../lib/icons.ts';
|
|
37
|
+
|
|
38
|
+
/** Each scene's slider values, shadcn's presets. */
|
|
39
|
+
export const SCENES = {
|
|
40
|
+
cooking: { brightness: 90, colorTemp: 70, volume: 30, fade: 0 },
|
|
41
|
+
dining: { brightness: 50, colorTemp: 40, volume: 20, fade: 60 },
|
|
42
|
+
nightlight: { brightness: 15, colorTemp: 20, volume: 0, fade: 80 },
|
|
43
|
+
focus: { brightness: 100, colorTemp: 85, volume: 0, fade: 0 },
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
function control(icon: TemplateResult, title: string, name: string, value: number) {
|
|
47
|
+
return html`<div data-slot="item" data-variant="outline" data-size="sm" class=${itemClass({ variant: 'outline', size: 'sm' })}>
|
|
48
|
+
<div data-slot="item-media" data-variant="icon" class=${itemMediaClass({ variant: 'icon' })}>${icon}</div>
|
|
49
|
+
<div data-slot="item-content" class=${cn(itemContentClass(), 'flex-row items-center gap-3')}>
|
|
50
|
+
<div data-slot="item-title" class=${cn(itemTitleClass(), 'shrink-0')}>${title}</div>
|
|
51
|
+
</div>
|
|
52
|
+
<div data-slot="item-actions" class=${cn(itemActionsClass(), 'flex-1')}>
|
|
53
|
+
<ui-slider class="w-full">
|
|
54
|
+
<input type="range" name=${name} min="0" max="100" value=${value} aria-label=${title} class=${sliderClass()}>
|
|
55
|
+
</ui-slider>
|
|
56
|
+
</div>
|
|
57
|
+
</div>`;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function kitchenIsland() {
|
|
61
|
+
const scene = SCENES.cooking;
|
|
62
|
+
return html`
|
|
63
|
+
<div data-slot="card" data-size="default" class=${cardClass()}>
|
|
64
|
+
<div data-slot="card-header" class=${cardHeaderClass()}>
|
|
65
|
+
<div data-slot="card-title" class=${cardTitleClass()}>Kitchen Island</div>
|
|
66
|
+
<div data-slot="card-description" class=${cardDescriptionClass()}>Hue Color Ambient</div>
|
|
67
|
+
<div data-slot="card-action" class=${cardActionClass()}>
|
|
68
|
+
<ui-switch name="kitchen_island_on" aria-label="Kitchen Island lights" checked></ui-switch>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
<div data-slot="card-content" class=${cn(cardContentClass(), 'flex flex-col gap-4')}>
|
|
72
|
+
<div class="flex flex-col gap-2">
|
|
73
|
+
<span class="sr-only" id="kitchen-island-scenes">Scenes</span>
|
|
74
|
+
<ui-toggle-group type="single" value="cooking" variant="outline" spacing="1" aria-labelledby="kitchen-island-scenes" class="flex-wrap">
|
|
75
|
+
<ui-toggle-group-item value="cooking">Cooking</ui-toggle-group-item>
|
|
76
|
+
<ui-toggle-group-item value="dining">Dining</ui-toggle-group-item>
|
|
77
|
+
<ui-toggle-group-item value="nightlight">Nightlight</ui-toggle-group-item>
|
|
78
|
+
<ui-toggle-group-item value="focus">Focus</ui-toggle-group-item>
|
|
79
|
+
</ui-toggle-group>
|
|
80
|
+
</div>
|
|
81
|
+
<div role="list" data-slot="item-group" class=${itemGroupClass()}>
|
|
82
|
+
${control(SunIcon(), 'Brightness', 'brightness', scene.brightness)}
|
|
83
|
+
${control(ThermometerIcon(), 'Color Temp', 'color_temp', scene.colorTemp)}
|
|
84
|
+
${control(Volume2Icon(), 'Volume', 'volume', scene.volume)}
|
|
85
|
+
${control(TimerIcon(), 'Fade', 'fade', scene.fade)}
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
`;
|
|
90
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The preview-02 loading card: a card's skeleton placeholder. A fragment
|
|
3
|
+
* helper. Installed by `npx @webjsdev/ui add preview-02` at
|
|
4
|
+
* `components/preview-02/loading-card.ts`. Ported from shadcn/ui's preview-02.
|
|
5
|
+
*/
|
|
6
|
+
import { html } from '@webjsdev/core';
|
|
7
|
+
import { cardClass, cardContentClass, cardHeaderClass } from '../../../components/card.ts';
|
|
8
|
+
import { skeletonClass } from '../../../components/skeleton.ts';
|
|
9
|
+
import { cn } from '../../../lib/utils.ts';
|
|
10
|
+
|
|
11
|
+
const skeleton = (cls: string) => html`<div data-slot="skeleton" aria-hidden="true" class=${cn(skeletonClass(), cls)}></div>`;
|
|
12
|
+
|
|
13
|
+
export function loadingCard() {
|
|
14
|
+
return html`
|
|
15
|
+
<div data-slot="card" data-size="default" aria-busy="true" class=${cardClass()}>
|
|
16
|
+
<div data-slot="card-header" class=${cardHeaderClass()}>
|
|
17
|
+
${skeleton('h-5 w-32')}
|
|
18
|
+
${skeleton('h-4 w-48')}
|
|
19
|
+
</div>
|
|
20
|
+
<div data-slot="card-content" class=${cn(cardContentClass(), 'flex flex-col gap-4')}>
|
|
21
|
+
${skeleton('h-32 w-full rounded-lg')}
|
|
22
|
+
<div class="flex flex-col gap-2">
|
|
23
|
+
${skeleton('h-4 w-full')}
|
|
24
|
+
${skeleton('h-4 w-3/4')}
|
|
25
|
+
${skeleton('h-4 w-1/2')}
|
|
26
|
+
</div>
|
|
27
|
+
<div class="flex gap-2">
|
|
28
|
+
${skeleton('h-9 flex-1 rounded-md')}
|
|
29
|
+
${skeleton('h-9 flex-1 rounded-md')}
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
`;
|
|
34
|
+
}
|