@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
package/README.md
CHANGED
|
@@ -100,19 +100,78 @@ step. Pass `--overwrite` to reset those instead.
|
|
|
100
100
|
- `components.json`, your project's UI config (aliases, base color, Tailwind path)
|
|
101
101
|
- `lib/utils/cn.ts`, the `cn()` class-merge helper, and `lib/utils/dom.ts`
|
|
102
102
|
beside it for the client-only `onBeforeCache()` helper
|
|
103
|
-
- Tailwind tokens + CSS variables appended to `styles/globals.css
|
|
103
|
+
- Tailwind tokens + CSS variables appended to `styles/globals.css`, between a
|
|
104
|
+
`/* @webjsdev/ui theme */` and a `/* @webjsdev/ui theme end */` marker
|
|
105
|
+
|
|
106
|
+
### Presets, styles and icon libraries
|
|
107
|
+
|
|
108
|
+
The configurator at [webjs.dev/ui/create](https://webjs.dev/ui/create) builds a
|
|
109
|
+
whole design system (style, base color, theme, chart color, font, radius, icon
|
|
110
|
+
library) and prints one command for it:
|
|
111
|
+
|
|
112
|
+
```sh
|
|
113
|
+
npx @webjsdev/ui init --preset b0
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
That writes the style and icon library into `components.json`, the chosen
|
|
117
|
+
icon library to `lib/utils/icons.ts`, and the theme, REPLACING the block
|
|
118
|
+
between the two markers in place, so running it again with another code
|
|
119
|
+
switches the design system without touching the rest of your stylesheet. A
|
|
120
|
+
block from before the end marker existed is left alone and reported. The code
|
|
121
|
+
is shadcn/ui's preset format, so a shadcn code works too. The site serves
|
|
122
|
+
what a code installs at `/ui/init?preset=<code>` (JSON) and
|
|
123
|
+
`/ui/init/md?preset=<code>` (step-by-step markdown).
|
|
124
|
+
|
|
125
|
+
One choice at a time works the same way:
|
|
126
|
+
|
|
127
|
+
```sh
|
|
128
|
+
npx @webjsdev/ui init --style nova # one of the nine styles the bake applies
|
|
129
|
+
npx @webjsdev/ui init --icons tabler # lucide, tabler, hugeicons, phosphor, remixicon
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Every icon library exports the same function names (`ChevronDownIcon('size-4')`
|
|
133
|
+
and so on), so switching libraries changes no import. The themes and fonts
|
|
134
|
+
are registry items too: `theme-<name>` for shadcn's 24 themes and
|
|
135
|
+
`font-<name>` / `font-heading-<name>` for its 26 font families.
|
|
104
136
|
|
|
105
137
|
## What `add` does
|
|
106
138
|
|
|
107
139
|
Copies the component's `.ts` source into `components/ui/<name>.ts` (or your
|
|
108
140
|
configured alias). Resolves transitive deps via `registryDependencies` and
|
|
109
|
-
|
|
141
|
+
installs any npm dependency the app's `package.json` does not already declare. For
|
|
110
142
|
a Tier-1 class-helper component it copies the helpers plus a lean header and a
|
|
111
143
|
one-line pointer, and leaves the worked structural example OUT of the file (get
|
|
112
144
|
it on demand with `npx @webjsdev/ui view <name>`, which is what the pointer it
|
|
113
145
|
leaves behind says too). It also self-heals the theme tokens if
|
|
114
146
|
they are missing.
|
|
115
147
|
|
|
148
|
+
A block (a ready-made view such as a dashboard or a chart, registry type
|
|
149
|
+
`registry:block`) installs the same way. Each of its files lands at its own
|
|
150
|
+
target under the app (`app/...`, `modules/...`, `components/...`), and every
|
|
151
|
+
relative import in it is rewritten to where the imported file landed: a kit
|
|
152
|
+
component into your ui alias, the `cn()` helper to your utils alias, another
|
|
153
|
+
file of the same block to its own target. A block's files are app code you
|
|
154
|
+
own, so `add` never replaces one that exists unless you pass `--overwrite`
|
|
155
|
+
(`--yes` alone keeps it), and it prints the list of files it wrote. A block or
|
|
156
|
+
component that needs design tokens your theme may lack (the sidebar's
|
|
157
|
+
`--sidebar-*`, a chart's `--chart-*`) carries them, and `add` adds the missing
|
|
158
|
+
ones to your stylesheet without touching a token you already define.
|
|
159
|
+
|
|
160
|
+
Before hand-writing a login or signup page, an app sidebar shell, a dashboard
|
|
161
|
+
or a chart, list the blocks and install the closest one:
|
|
162
|
+
|
|
163
|
+
```sh
|
|
164
|
+
npx @webjsdev/ui list --type block # every block, with its description
|
|
165
|
+
npx @webjsdev/ui view login-03 --files-only # what it installs, and where
|
|
166
|
+
npx @webjsdev/ui add login-03 # app/login/page.ts + components/login-form.ts
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
The kit ships shadcn's ten authentication blocks today (`login-01` to
|
|
170
|
+
`login-05`, `signup-01` to `signup-05`). Each page is a server-rendered page
|
|
171
|
+
module and each form a real `<form>` built from the kit's class helpers, with
|
|
172
|
+
no JavaScript. The form has no `action` yet: bind a server action
|
|
173
|
+
(`<form action=${signIn}>`) when you wire it up.
|
|
174
|
+
|
|
116
175
|
The install runs with your project's package manager. `add` looks for a
|
|
117
176
|
lockfile in the current directory and then each parent, stopping at the
|
|
118
177
|
workspace root, so an app inside a monorepo uses the root's lockfile:
|
|
@@ -129,12 +188,12 @@ always compares against the live upstream.
|
|
|
129
188
|
|
|
130
189
|
| Command | Effect |
|
|
131
190
|
|---|---|
|
|
132
|
-
| `webjsui init` | Initialize a project (writes `components.json`, `lib/utils/cn.ts`, the theme tokens). Preserves an existing project's settings and helper files; `-o, --overwrite` resets them. Exits non-zero if the tokens cannot be written. |
|
|
133
|
-
| `webjsui add <names...>` | Add components (copies helpers + a pointer for Tier-1, self-heals theme tokens) |
|
|
134
|
-
| `webjsui list` | List all
|
|
135
|
-
| `webjsui view <name>` |
|
|
136
|
-
| `webjsui diff [name]` | Show diff between your local copy and the live registry |
|
|
137
|
-
| `webjsui info` | Print project diagnostics |
|
|
191
|
+
| `webjsui init` | Initialize a project (writes `components.json`, `lib/utils/cn.ts`, the theme tokens). Preserves an existing project's settings and helper files; `-o, --overwrite` resets them and replaces the theme block. `--preset <code>`, `--style <name>` and `--icons <library>` apply a design system or one choice of it. Exits non-zero if the tokens cannot be written. |
|
|
192
|
+
| `webjsui add <names...>` | Add components or blocks (copies helpers + a pointer for Tier-1, writes a block's files to their targets, self-heals theme tokens) |
|
|
193
|
+
| `webjsui list [filter]` | List the components, blocks and charts in three labelled groups. `--type <ui\|block\|chart\|all>`, `--category <name>`, and `--json` for one compact array of `{ name, type, categories, description }` |
|
|
194
|
+
| `webjsui view <name>` | A component: its projected view (helpers + paste-ready example) and full source. A block: its description, categories, dependencies, install command and files with targets, then the sources (`--files-only` stops before them, `--json` prints one document) |
|
|
195
|
+
| `webjsui diff [name]` | Show diff between your local copy and the live registry, installed blocks included |
|
|
196
|
+
| `webjsui info` | Print project diagnostics, with the kit's component, block and chart counts |
|
|
138
197
|
| `webjsui build` | (For registry authors) Compile a custom registry |
|
|
139
198
|
| `webjsui lint` | Opt-in design-system linter. Reports raw palette colors, arbitrary values and classes composed over a kit helper, at the line, with a message built from your own theme tokens and helper variants. Configured by a `lint` block in `components.json`; with no block it reports nothing and exits 0. `--json` for an agent loop, `--max-warnings <n>` to pin a count. |
|
|
140
199
|
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
`@webjsdev/ui` and the WebJs UI site at webjs.dev/ui include work derived from
|
|
4
|
+
the projects below. Each is used under the license reproduced here.
|
|
5
|
+
|
|
6
|
+
## shadcn/ui
|
|
7
|
+
|
|
8
|
+
The component design, the component API (variant names, sizes, the
|
|
9
|
+
sub-component breakdown, the data attributes), the style skins, the themes,
|
|
10
|
+
the blocks and charts, and the layout of the webjs.dev/ui site are ported from
|
|
11
|
+
shadcn/ui (https://github.com/shadcn-ui/ui). The site also serves some of
|
|
12
|
+
shadcn/ui's own assets unmodified: the avatars in website/public/avatars/
|
|
13
|
+
(02.png, 03.png, 10.png, from apps/v4/public/avatars) and the Sera page
|
|
14
|
+
screenshots in website/public/images/ (sera-0*.png, from apps/v4/public/images).
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
MIT License
|
|
18
|
+
|
|
19
|
+
Copyright (c) 2023 shadcn
|
|
20
|
+
|
|
21
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
22
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
23
|
+
in the Software without restriction, including without limitation the rights
|
|
24
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
25
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
26
|
+
furnished to do so, subject to the following conditions:
|
|
27
|
+
|
|
28
|
+
The above copyright notice and this permission notice shall be included in all
|
|
29
|
+
copies or substantial portions of the Software.
|
|
30
|
+
|
|
31
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
32
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
33
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
34
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
35
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
36
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
37
|
+
SOFTWARE.
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## tw-animate-css
|
|
41
|
+
|
|
42
|
+
The enter and exit animation utilities the ported styles use are vendored from
|
|
43
|
+
tw-animate-css 1.4.0 (https://github.com/Wombosvideo/tw-animate-css) as
|
|
44
|
+
`packages/registry/styles/tw-animate.css`.
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
MIT License
|
|
48
|
+
|
|
49
|
+
Copyright (c) 2025 Wombosvideo
|
|
50
|
+
|
|
51
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
52
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
53
|
+
in the Software without restriction, including without limitation the rights
|
|
54
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
55
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
56
|
+
furnished to do so, subject to the following conditions:
|
|
57
|
+
|
|
58
|
+
The above copyright notice and this permission notice shall be included in all
|
|
59
|
+
copies or substantial portions of the Software.
|
|
60
|
+
|
|
61
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
62
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
63
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
64
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
65
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
66
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
67
|
+
SOFTWARE.
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Lucide
|
|
71
|
+
|
|
72
|
+
The inline SVG icons are drawn from Lucide (https://lucide.dev).
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
ISC License
|
|
76
|
+
|
|
77
|
+
Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022.
|
|
78
|
+
|
|
79
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
80
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
81
|
+
copyright notice and this permission notice appear in all copies.
|
|
82
|
+
|
|
83
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
84
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
85
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
86
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
87
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
88
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
89
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Hugeicons
|
|
93
|
+
|
|
94
|
+
The webjs.dev/ui site draws the icons on its home page and header from
|
|
95
|
+
Hugeicons Free (https://hugeicons.com), the library shadcn's own site uses,
|
|
96
|
+
generated from `@hugeicons/core-free-icons` 4.4.0 into inline SVG.
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
MIT License
|
|
100
|
+
|
|
101
|
+
Copyright (c) 2025 Hugeicons
|
|
102
|
+
|
|
103
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
104
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
105
|
+
in the Software without restriction, including without limitation the rights
|
|
106
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
107
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
108
|
+
furnished to do so, subject to the following conditions:
|
|
109
|
+
|
|
110
|
+
The above copyright notice and this permission notice shall be included in all
|
|
111
|
+
copies or substantial portions of the Software.
|
|
112
|
+
|
|
113
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
114
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
115
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
116
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
117
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
118
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
119
|
+
SOFTWARE.
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Tabler Icons
|
|
123
|
+
|
|
124
|
+
The webjs.dev/ui site draws the Tabler icons some of shadcn's demos import
|
|
125
|
+
(https://tabler.io/icons), generated from `@tabler/icons` 3.34.1 into inline
|
|
126
|
+
SVG by `website/scripts/gen-tabler.mjs`.
|
|
127
|
+
|
|
128
|
+
```text
|
|
129
|
+
MIT License
|
|
130
|
+
|
|
131
|
+
Copyright (c) 2020-2024 Paweł Kuna
|
|
132
|
+
|
|
133
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
134
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
135
|
+
in the Software without restriction, including without limitation the rights
|
|
136
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
137
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
138
|
+
furnished to do so, subject to the following conditions:
|
|
139
|
+
|
|
140
|
+
The above copyright notice and this permission notice shall be included in all
|
|
141
|
+
copies or substantial portions of the Software.
|
|
142
|
+
|
|
143
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
144
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
145
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
146
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
147
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
148
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
149
|
+
SOFTWARE.
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## The kit's icon libraries
|
|
153
|
+
|
|
154
|
+
`packages/registry/lib/icons*.ts`, the five icon libraries an app picks with
|
|
155
|
+
`webjsui init --icons`, are generated by `scripts/gen-icons.mjs` from the
|
|
156
|
+
packages below, limited to the glyphs shadcn/ui's components name. Lucide
|
|
157
|
+
(`lucide` 1.70.0), Hugeicons (`@hugeicons/core-free-icons` 4.4.0) and Tabler
|
|
158
|
+
Icons (`@tabler/icons` 3.50.0) are under the licenses above. The other two:
|
|
159
|
+
|
|
160
|
+
### Phosphor Icons
|
|
161
|
+
|
|
162
|
+
`@phosphor-icons/core` 2.1.1, the regular weight (https://phosphoricons.com).
|
|
163
|
+
|
|
164
|
+
```text
|
|
165
|
+
MIT License
|
|
166
|
+
|
|
167
|
+
Copyright (c) 2023 Phosphor Icons
|
|
168
|
+
|
|
169
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
170
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
171
|
+
in the Software without restriction, including without limitation the rights
|
|
172
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
173
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
174
|
+
furnished to do so, subject to the following conditions:
|
|
175
|
+
|
|
176
|
+
The above copyright notice and this permission notice shall be included in all
|
|
177
|
+
copies or substantial portions of the Software.
|
|
178
|
+
|
|
179
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
180
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
181
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
182
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
183
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
184
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
185
|
+
SOFTWARE.
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Remix Icon
|
|
189
|
+
|
|
190
|
+
`remixicon` 4.8.0 (https://remixicon.com), Copyright (c) Remix Design,
|
|
191
|
+
licensed under the Apache License, Version 2.0
|
|
192
|
+
(https://www.apache.org/licenses/LICENSE-2.0). The version is pinned: 4.8.0
|
|
193
|
+
is the last release licensed under Apache-2.0, and later releases ship the
|
|
194
|
+
more restrictive Remix Icon License v1.0. The SVG path data is reproduced
|
|
195
|
+
unmodified inside the generated functions.
|
|
196
|
+
|
|
197
|
+
## Geist and Geist Mono
|
|
198
|
+
|
|
199
|
+
The webjs.dev/ui site self-hosts the Geist and Geist Mono typefaces
|
|
200
|
+
(https://github.com/vercel/geist-font).
|
|
201
|
+
|
|
202
|
+
```text
|
|
203
|
+
Copyright 2024 The Geist Project Authors (https://github.com/vercel/geist-font)
|
|
204
|
+
|
|
205
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
206
|
+
This license is copied below, and is also available with a FAQ at:
|
|
207
|
+
http://scripts.sil.org/OFL
|
|
208
|
+
|
|
209
|
+
-----------------------------------------------------------
|
|
210
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
211
|
+
-----------------------------------------------------------
|
|
212
|
+
|
|
213
|
+
PREAMBLE
|
|
214
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
215
|
+
development of collaborative font projects, to support the font creation
|
|
216
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
217
|
+
open framework in which fonts may be shared and improved in partnership
|
|
218
|
+
with others.
|
|
219
|
+
|
|
220
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
221
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
222
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
223
|
+
redistributed and/or sold with any software provided that any reserved
|
|
224
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
225
|
+
however, cannot be released under any other type of license. The
|
|
226
|
+
requirement for fonts to remain under this license does not apply
|
|
227
|
+
to any document created using the fonts or their derivatives.
|
|
228
|
+
|
|
229
|
+
DEFINITIONS
|
|
230
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
231
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
232
|
+
include source files, build scripts and documentation.
|
|
233
|
+
|
|
234
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
235
|
+
copyright statement(s).
|
|
236
|
+
|
|
237
|
+
"Original Version" refers to the collection of Font Software components as
|
|
238
|
+
distributed by the Copyright Holder(s).
|
|
239
|
+
|
|
240
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
241
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
242
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
243
|
+
new environment.
|
|
244
|
+
|
|
245
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
246
|
+
writer or other person who contributed to the Font Software.
|
|
247
|
+
|
|
248
|
+
PERMISSION AND CONDITIONS
|
|
249
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
250
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
251
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
252
|
+
Software, subject to the following conditions:
|
|
253
|
+
|
|
254
|
+
1) Neither the Font Software nor any of its individual components,
|
|
255
|
+
in Original or Modified Versions, may be sold by itself.
|
|
256
|
+
|
|
257
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
258
|
+
redistributed and/or sold with any software, provided that each copy
|
|
259
|
+
contains the above copyright notice and this license. These can be
|
|
260
|
+
included either as stand-alone text files, human-readable headers or
|
|
261
|
+
in the appropriate machine-readable metadata fields within text or
|
|
262
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
263
|
+
|
|
264
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
265
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
266
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
267
|
+
presented to the users.
|
|
268
|
+
|
|
269
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
270
|
+
Software shall not be used to promote, endorse or advertise any
|
|
271
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
272
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
273
|
+
permission.
|
|
274
|
+
|
|
275
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
276
|
+
must be distributed entirely under this license, and must not be
|
|
277
|
+
distributed under any other license. The requirement for fonts to
|
|
278
|
+
remain under this license does not apply to any document created
|
|
279
|
+
using the Font Software.
|
|
280
|
+
|
|
281
|
+
TERMINATION
|
|
282
|
+
This license becomes null and void if any of the above conditions are
|
|
283
|
+
not met.
|
|
284
|
+
|
|
285
|
+
DISCLAIMER
|
|
286
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
287
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
288
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
289
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
290
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
291
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
292
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
293
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
294
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
## Playfair Display
|
|
298
|
+
|
|
299
|
+
The webjs.dev/ui site self-hosts the Playfair Display typeface
|
|
300
|
+
(https://github.com/clauseggers/Playfair-Display) for its Sera page, as
|
|
301
|
+
Google Fonts serves it (the latin subset, unmodified).
|
|
302
|
+
|
|
303
|
+
```text
|
|
304
|
+
Copyright 2017 The Playfair Display Project Authors (https://github.com/clauseggers/Playfair-Display), with Reserved Font Name "Playfair Display"
|
|
305
|
+
|
|
306
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
307
|
+
This license is available with a FAQ at: http://scripts.sil.org/OFL
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
The full text of the SIL Open Font License, Version 1.1 is reproduced under
|
|
311
|
+
Geist and Geist Mono above.
|
|
312
|
+
|
|
313
|
+
## EB Garamond and Instrument Serif
|
|
314
|
+
|
|
315
|
+
The webjs.dev/ui site self-hosts the EB Garamond
|
|
316
|
+
(https://github.com/octaviopardo/EBGaramond12) and Instrument Serif
|
|
317
|
+
(https://github.com/Instrument/instrument-serif) typefaces for its
|
|
318
|
+
design-system configurator's preview, as Google Fonts serves them to
|
|
319
|
+
next/font (the latin subset, unmodified; Instrument Serif at weight 400).
|
|
320
|
+
|
|
321
|
+
```text
|
|
322
|
+
Copyright 2017 The EB Garamond Project Authors (https://github.com/octaviopardo/EBGaramond12)
|
|
323
|
+
Copyright 2022 The Instrument Serif Project Authors (https://github.com/Instrument/instrument-serif)
|
|
324
|
+
|
|
325
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
326
|
+
This license is available with a FAQ at: http://scripts.sil.org/OFL
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
The full text of the SIL Open Font License, Version 1.1 is reproduced under
|
|
330
|
+
Geist and Geist Mono above.
|
|
331
|
+
|
|
332
|
+
## Noto Sans Arabic and Noto Sans Hebrew
|
|
333
|
+
|
|
334
|
+
The webjs.dev/ui site self-hosts the Noto Sans Arabic
|
|
335
|
+
(https://github.com/notofonts/arabic) and Noto Sans Hebrew
|
|
336
|
+
(https://github.com/notofonts/hebrew) typefaces for its RTL example, as
|
|
337
|
+
Google Fonts serves them to next/font (each family's script subset and its
|
|
338
|
+
latin subset, unmodified).
|
|
339
|
+
|
|
340
|
+
```text
|
|
341
|
+
Copyright 2022 The Noto Project Authors (https://github.com/notofonts/arabic)
|
|
342
|
+
Copyright 2022 The Noto Project Authors (https://github.com/notofonts/hebrew)
|
|
343
|
+
|
|
344
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
345
|
+
This license is available with a FAQ at: https://openfontlicense.org
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
The full text of the SIL Open Font License, Version 1.1 is reproduced under
|
|
349
|
+
Geist and Geist Mono above.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webjsdev/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "The AI-first component library for WebJs, a full-stack JavaScript framework built on web components with server-side rendering and no build step. Class-helper functions for visuals, custom elements only where state matters, source-copied into your repo so you own it.",
|
|
6
6
|
"bin": {
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"bin",
|
|
18
18
|
"src",
|
|
19
19
|
"packages/registry",
|
|
20
|
-
"README.md"
|
|
20
|
+
"README.md",
|
|
21
|
+
"THIRD_PARTY_NOTICES.md"
|
|
21
22
|
],
|
|
22
23
|
"scripts": {
|
|
23
24
|
"test": "node --test test/*.test.js",
|
|
@@ -25,6 +26,7 @@
|
|
|
25
26
|
"test:e2e:a11y-tree": "node test/e2e/a11y-tree.e2e.mjs"
|
|
26
27
|
},
|
|
27
28
|
"dependencies": {
|
|
29
|
+
"@webjsdev/core": "^0.9.0",
|
|
28
30
|
"commander": "^14.0.0",
|
|
29
31
|
"kleur": "^4.1.5",
|
|
30
32
|
"prompts": "^2.4.2",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="1200" fill="none"><rect width="1200" height="1200" fill="#EAEAEA" rx="3"/><g opacity=".5"><g opacity=".5"><path fill="#FAFAFA" d="M600.709 736.5c-75.454 0-136.621-61.167-136.621-136.62 0-75.454 61.167-136.621 136.621-136.621 75.453 0 136.62 61.167 136.62 136.621 0 75.453-61.167 136.62-136.62 136.62Z"/><path stroke="#C9C9C9" stroke-width="2.418" d="M600.709 736.5c-75.454 0-136.621-61.167-136.621-136.62 0-75.454 61.167-136.621 136.621-136.621 75.453 0 136.62 61.167 136.62 136.621 0 75.453-61.167 136.62-136.62 136.62Z"/></g><path stroke="url(#a)" stroke-width="2.418" d="M0-1.209h553.581" transform="scale(1 -1) rotate(45 1163.11 91.165)"/><path stroke="url(#b)" stroke-width="2.418" d="M404.846 598.671h391.726"/><path stroke="url(#c)" stroke-width="2.418" d="M599.5 795.742V404.017"/><path stroke="url(#d)" stroke-width="2.418" d="m795.717 796.597-391.441-391.44"/><path fill="#fff" d="M600.709 656.704c-31.384 0-56.825-25.441-56.825-56.824 0-31.384 25.441-56.825 56.825-56.825 31.383 0 56.824 25.441 56.824 56.825 0 31.383-25.441 56.824-56.824 56.824Z"/><g clip-path="url(#e)"><path fill="#666" fill-rule="evenodd" d="M616.426 586.58h-31.434v16.176l3.553-3.554.531-.531h9.068l.074-.074 8.463-8.463h2.565l7.18 7.181V586.58Zm-15.715 14.654 3.698 3.699 1.283 1.282-2.565 2.565-1.282-1.283-5.2-5.199h-6.066l-5.514 5.514-.073.073v2.876a2.418 2.418 0 0 0 2.418 2.418h26.598a2.418 2.418 0 0 0 2.418-2.418v-8.317l-8.463-8.463-7.181 7.181-.071.072Zm-19.347 5.442v4.085a6.045 6.045 0 0 0 6.046 6.045h26.598a6.044 6.044 0 0 0 6.045-6.045v-7.108l1.356-1.355-1.282-1.283-.074-.073v-17.989h-38.689v23.43l-.146.146.146.147Z" clip-rule="evenodd"/></g><path stroke="#C9C9C9" stroke-width="2.418" d="M600.709 656.704c-31.384 0-56.825-25.441-56.825-56.824 0-31.384 25.441-56.825 56.825-56.825 31.383 0 56.824 25.441 56.824 56.825 0 31.383-25.441 56.824-56.824 56.824Z"/></g><defs><linearGradient id="a" x1="554.061" x2="-.48" y1=".083" y2=".087" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><linearGradient id="b" x1="796.912" x2="404.507" y1="599.963" y2="599.965" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><linearGradient id="c" x1="600.792" x2="600.794" y1="403.677" y2="796.082" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><linearGradient id="d" x1="404.85" x2="796.972" y1="403.903" y2="796.02" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><clipPath id="e"><path fill="#fff" d="M581.364 580.535h38.689v38.689h-38.689z"/></clipPath></defs></svg>
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An area chart with axes, a chart block ported from shadcn/ui's chart-area-axes.
|
|
3
|
+
*
|
|
4
|
+
* Installed by `npx @webjsdev/ui add chart-area-axes` at
|
|
5
|
+
* `components/charts/chart-area-axes.ts`. It is app code you own, so edit it
|
|
6
|
+
* freely, and render it from any page with `${ChartAreaAxes()}`.
|
|
7
|
+
*/
|
|
8
|
+
import { html, svg } from '@webjsdev/core';
|
|
9
|
+
import {
|
|
10
|
+
cardClass, cardContentClass, cardDescriptionClass, cardFooterClass, cardHeaderClass, cardTitleClass,
|
|
11
|
+
} from '../../components/card.ts';
|
|
12
|
+
import { areaChart, type ChartConfig } from '../../components/chart.ts';
|
|
13
|
+
|
|
14
|
+
const chartData = [
|
|
15
|
+
{ month: 'January', desktop: 186, mobile: 80 },
|
|
16
|
+
{ month: 'February', desktop: 305, mobile: 200 },
|
|
17
|
+
{ month: 'March', desktop: 237, mobile: 120 },
|
|
18
|
+
{ month: 'April', desktop: 73, mobile: 190 },
|
|
19
|
+
{ month: 'May', desktop: 209, mobile: 130 },
|
|
20
|
+
{ month: 'June', desktop: 214, mobile: 140 },
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const chartConfig = {
|
|
24
|
+
desktop: {
|
|
25
|
+
label: 'Desktop',
|
|
26
|
+
color: 'var(--chart-1)',
|
|
27
|
+
},
|
|
28
|
+
mobile: {
|
|
29
|
+
label: 'Mobile',
|
|
30
|
+
color: 'var(--chart-2)',
|
|
31
|
+
},
|
|
32
|
+
} satisfies ChartConfig;
|
|
33
|
+
|
|
34
|
+
// lucide's trending-up, the icon in shadcn's footer.
|
|
35
|
+
const TrendingUp = (cls = '') => svg`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class=${'lucide lucide-trending-up ' + cls}><path d="M16 7h6v6"></path><path d="m22 7-8.5 8.5-5-5L2 17"></path></svg>`;
|
|
36
|
+
|
|
37
|
+
export default function ChartAreaAxes() {
|
|
38
|
+
return html`
|
|
39
|
+
<div data-slot="card" class=${cardClass()}>
|
|
40
|
+
<div data-slot="card-header" class=${cardHeaderClass()}>
|
|
41
|
+
<div data-slot="card-title" class=${cardTitleClass()}>Area Chart - Axes</div>
|
|
42
|
+
<div data-slot="card-description" class=${cardDescriptionClass()}>Showing total visitors for the last 6 months</div>
|
|
43
|
+
</div>
|
|
44
|
+
<div data-slot="card-content" class=${cardContentClass()}>
|
|
45
|
+
${areaChart({
|
|
46
|
+
config: chartConfig,
|
|
47
|
+
data: chartData,
|
|
48
|
+
title: 'Desktop and mobile visitors, January to June',
|
|
49
|
+
margin: { left: -20, right: 12 },
|
|
50
|
+
grid: { vertical: false },
|
|
51
|
+
xAxis: { dataKey: 'month', tickLine: false, axisLine: false, tickMargin: 8, tickFormatter: (value) => String(value).slice(0, 3) },
|
|
52
|
+
yAxis: { tickLine: false, axisLine: false, tickMargin: 8, tickCount: 3 },
|
|
53
|
+
tooltip: { cursor: false },
|
|
54
|
+
areas: [
|
|
55
|
+
{ dataKey: 'mobile', type: 'natural', fill: 'var(--color-mobile)', fillOpacity: 0.4, stroke: 'var(--color-mobile)', stackId: 'a' },
|
|
56
|
+
{ dataKey: 'desktop', type: 'natural', fill: 'var(--color-desktop)', fillOpacity: 0.4, stroke: 'var(--color-desktop)', stackId: 'a' },
|
|
57
|
+
],
|
|
58
|
+
})}
|
|
59
|
+
</div>
|
|
60
|
+
<div data-slot="card-footer" class=${cardFooterClass()}>
|
|
61
|
+
<div class="flex w-full items-start gap-2 text-sm">
|
|
62
|
+
<div class="grid gap-2">
|
|
63
|
+
<div class="flex items-center gap-2 leading-none font-medium">
|
|
64
|
+
Trending up by 5.2% this month ${TrendingUp('h-4 w-4')}
|
|
65
|
+
</div>
|
|
66
|
+
<div class="flex items-center gap-2 leading-none text-muted-foreground">January - June 2024</div>
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
`;
|
|
72
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A simple area chart, a chart block ported from shadcn/ui's chart-area-default.
|
|
3
|
+
*
|
|
4
|
+
* Installed by `npx @webjsdev/ui add chart-area-default` at
|
|
5
|
+
* `components/charts/chart-area-default.ts`. It is app code you own, so edit it
|
|
6
|
+
* freely, and render it from any page with `${ChartAreaDefault()}`.
|
|
7
|
+
*/
|
|
8
|
+
import { html, svg } from '@webjsdev/core';
|
|
9
|
+
import {
|
|
10
|
+
cardClass, cardContentClass, cardDescriptionClass, cardFooterClass, cardHeaderClass, cardTitleClass,
|
|
11
|
+
} from '../../components/card.ts';
|
|
12
|
+
import { areaChart, type ChartConfig } from '../../components/chart.ts';
|
|
13
|
+
|
|
14
|
+
const chartData = [
|
|
15
|
+
{ month: 'January', desktop: 186 },
|
|
16
|
+
{ month: 'February', desktop: 305 },
|
|
17
|
+
{ month: 'March', desktop: 237 },
|
|
18
|
+
{ month: 'April', desktop: 73 },
|
|
19
|
+
{ month: 'May', desktop: 209 },
|
|
20
|
+
{ month: 'June', desktop: 214 },
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const chartConfig = {
|
|
24
|
+
desktop: {
|
|
25
|
+
label: 'Desktop',
|
|
26
|
+
color: 'var(--chart-1)',
|
|
27
|
+
},
|
|
28
|
+
} satisfies ChartConfig;
|
|
29
|
+
|
|
30
|
+
// lucide's trending-up, the icon in shadcn's footer.
|
|
31
|
+
const TrendingUp = (cls = '') => svg`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class=${'lucide lucide-trending-up ' + cls}><path d="M16 7h6v6"></path><path d="m22 7-8.5 8.5-5-5L2 17"></path></svg>`;
|
|
32
|
+
|
|
33
|
+
export default function ChartAreaDefault() {
|
|
34
|
+
return html`
|
|
35
|
+
<div data-slot="card" class=${cardClass()}>
|
|
36
|
+
<div data-slot="card-header" class=${cardHeaderClass()}>
|
|
37
|
+
<div data-slot="card-title" class=${cardTitleClass()}>Area Chart</div>
|
|
38
|
+
<div data-slot="card-description" class=${cardDescriptionClass()}>Showing total visitors for the last 6 months</div>
|
|
39
|
+
</div>
|
|
40
|
+
<div data-slot="card-content" class=${cardContentClass()}>
|
|
41
|
+
${areaChart({
|
|
42
|
+
config: chartConfig,
|
|
43
|
+
data: chartData,
|
|
44
|
+
title: 'Desktop visitors, January to June',
|
|
45
|
+
margin: { left: 12, right: 12 },
|
|
46
|
+
grid: { vertical: false },
|
|
47
|
+
xAxis: { dataKey: 'month', tickLine: false, axisLine: false, tickMargin: 8, tickFormatter: (value) => String(value).slice(0, 3) },
|
|
48
|
+
tooltip: { cursor: false, indicator: 'line' },
|
|
49
|
+
areas: [{ dataKey: 'desktop', type: 'natural', fill: 'var(--color-desktop)', fillOpacity: 0.4, stroke: 'var(--color-desktop)' }],
|
|
50
|
+
})}
|
|
51
|
+
</div>
|
|
52
|
+
<div data-slot="card-footer" class=${cardFooterClass()}>
|
|
53
|
+
<div class="flex w-full items-start gap-2 text-sm">
|
|
54
|
+
<div class="grid gap-2">
|
|
55
|
+
<div class="flex items-center gap-2 leading-none font-medium">
|
|
56
|
+
Trending up by 5.2% this month ${TrendingUp('h-4 w-4')}
|
|
57
|
+
</div>
|
|
58
|
+
<div class="flex items-center gap-2 leading-none text-muted-foreground">January - June 2024</div>
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
`;
|
|
64
|
+
}
|