From eeb17545a16824e11d09149a5ecab9fca570c448 Mon Sep 17 00:00:00 2001 From: shadcn Date: Thu, 22 Jun 2023 22:44:52 +0400 Subject: [PATCH] feat: new CLI, Styles and more (#637) --- .changeset/slimy-cooks-glow.md | 5 + .eslintrc.json | 3 +- .github/workflows/code-check.yml | 3 + .github/workflows/prerelease.yml | 2 + .github/workflows/release.yml | 3 + .github/workflows/test.yml | 42 + .prettierignore | 2 +- .vscode/settings.json | 4 + apps/www/.prettierignore | 3 +- apps/www/__registry__/.autogenerated | 1 + apps/www/__registry__/.gitkeep | 0 apps/www/__registry__/README.md | 1 + apps/www/__registry__/index.tsx | 1493 ++++++++++++ apps/www/app/docs/[[...slug]]/page.tsx | 26 +- apps/www/app/docs/layout.tsx | 18 +- .../components/user-auth-form.tsx | 6 +- apps/www/app/examples/authentication/page.tsx | 14 +- .../cards/components/cookie-settings.tsx | 8 +- .../cards/components/create-account.tsx | 10 +- .../examples/cards/components/date-picker.tsx | 6 +- .../examples/cards/components/github-card.tsx | 10 +- .../cards/components/notifications.tsx | 18 +- .../cards/components/payment-method.tsx | 14 +- .../cards/components/report-an-issue.tsx | 12 +- .../cards/components/share-document.tsx | 16 +- .../cards/components/team-members.tsx | 14 +- .../components/date-range-picker.tsx | 9 +- .../dashboard/components/recent-sales.tsx | 6 +- .../examples/dashboard/components/search.tsx | 4 +- .../dashboard/components/team-switcher.tsx | 23 +- .../dashboard/components/user-nav.tsx | 10 +- apps/www/app/examples/dashboard/page.tsx | 13 +- .../examples/forms/account/account-form.tsx | 22 +- apps/www/app/examples/forms/account/page.tsx | 2 +- .../forms/appearance/appearance-form.tsx | 8 +- .../app/examples/forms/appearance/page.tsx | 2 +- .../examples/forms/components/sidebar-nav.tsx | 2 +- .../examples/forms/display/display-form.tsx | 8 +- apps/www/app/examples/forms/display/page.tsx | 2 +- apps/www/app/examples/forms/layout.tsx | 2 +- .../notifications/notifications-form.tsx | 12 +- .../app/examples/forms/notifications/page.tsx | 2 +- apps/www/app/examples/forms/page.tsx | 2 +- apps/www/app/examples/forms/profile-form.tsx | 28 +- apps/www/app/examples/layout.tsx | 17 +- .../music/components/album-artwork.tsx | 4 +- .../app/examples/music/components/menu.tsx | 2 +- .../components/podcast-empty-placeholder.tsx | 8 +- .../app/examples/music/components/sidebar.tsx | 37 +- apps/www/app/examples/music/page.tsx | 13 +- .../playground/components/code-viewer.tsx | 4 +- .../components/maxlength-selector.tsx | 6 +- .../playground/components/model-selector.tsx | 10 +- .../playground/components/preset-actions.tsx | 14 +- .../playground/components/preset-save.tsx | 8 +- .../playground/components/preset-selector.tsx | 6 +- .../playground/components/preset-share.tsx | 8 +- .../components/temperature-selector.tsx | 6 +- .../playground/components/top-p-selector.tsx | 6 +- apps/www/app/examples/playground/page.tsx | 17 +- .../app/examples/tasks/components/columns.tsx | 4 +- .../components/data-table-column-header.tsx | 4 +- .../components/data-table-faceted-filter.tsx | 10 +- .../components/data-table-pagination.tsx | 4 +- .../components/data-table-row-actions.tsx | 4 +- .../tasks/components/data-table-toolbar.tsx | 4 +- .../components/data-table-view-options.tsx | 4 +- .../examples/tasks/components/data-table.tsx | 2 +- .../examples/tasks/components/user-nav.tsx | 10 +- apps/www/app/layout.tsx | 10 +- apps/www/app/page.tsx | 21 +- apps/www/app/sink/layout.tsx | 27 + apps/www/app/sink/new-york/page.tsx | 206 ++ apps/www/app/sink/page.tsx | 97 +- apps/www/components/callout.tsx | 6 +- apps/www/components/code-block-wrapper.tsx | 4 +- apps/www/components/command-menu.tsx | 8 +- apps/www/components/component-card.tsx | 2 +- apps/www/components/component-example.tsx | 7 +- apps/www/components/component-preview.tsx | 139 ++ apps/www/components/copy-button.tsx | 80 +- apps/www/components/examples-nav.tsx | 11 +- apps/www/components/examples/badge/demo.tsx | 5 - .../components/examples/badge/destructive.tsx | 5 - .../www/components/examples/badge/outline.tsx | 5 - .../components/examples/badge/secondary.tsx | 5 - apps/www/components/examples/button/demo.tsx | 5 - .../examples/button/destructive.tsx | 5 - apps/www/components/examples/button/ghost.tsx | 5 - apps/www/components/examples/button/link.tsx | 5 - .../components/examples/button/outline.tsx | 5 - .../components/examples/button/secondary.tsx | 5 - .../examples/data-table/columns.tsx | 110 - .../components/examples/data-table/demo.tsx | 41 - apps/www/components/examples/index.tsx | 213 -- apps/www/components/examples/input/demo.tsx | 5 - .../components/examples/input/disabled.tsx | 5 - .../components/examples/sheet/position.tsx | 78 - apps/www/components/examples/sheet/size.tsx | 78 - .../www/components/examples/textarea/demo.tsx | 5 - .../components/examples/textarea/disabled.tsx | 5 - apps/www/components/examples/tooltip/demo.tsx | 27 - apps/www/components/icons.tsx | 34 +- apps/www/components/mdx-components.tsx | 26 +- apps/www/components/mobile-nav.tsx | 14 +- apps/www/components/mode-toggle.tsx | 12 +- apps/www/components/pager.tsx | 5 +- apps/www/components/promo-video.tsx | 2 +- .../{theme-provider.tsx => providers.tsx} | 8 +- apps/www/components/site-footer.tsx | 48 +- apps/www/components/site-header.tsx | 12 +- apps/www/components/style-switcher.tsx | 53 +- apps/www/components/theme-wrapper.tsx | 10 + apps/www/config/components.ts | 211 -- apps/www/config/docs.ts | 35 +- apps/www/content/docs/changelog.mdx | 480 ++++ apps/www/content/docs/cli.mdx | 117 +- .../www/content/docs/components/accordion.mdx | 47 +- .../content/docs/components/alert-dialog.mdx | 38 +- apps/www/content/docs/components/alert.mdx | 36 +- .../content/docs/components/aspect-ratio.mdx | 38 +- apps/www/content/docs/components/avatar.mdx | 38 +- apps/www/content/docs/components/badge.mdx | 47 +- apps/www/content/docs/components/button.mdx | 91 +- apps/www/content/docs/components/calendar.mdx | 50 +- apps/www/content/docs/components/card.mdx | 35 +- apps/www/content/docs/components/checkbox.mdx | 66 +- .../content/docs/components/collapsible.mdx | 38 +- apps/www/content/docs/components/combobox.mdx | 43 +- apps/www/content/docs/components/command.mdx | 51 +- .../content/docs/components/context-menu.mdx | 37 +- .../content/docs/components/data-table.mdx | 4 +- .../content/docs/components/date-picker.mdx | 41 +- apps/www/content/docs/components/dialog.mdx | 40 +- .../content/docs/components/dropdown-menu.mdx | 47 +- .../form.mdx} | 41 +- .../content/docs/components/hover-card.mdx | 37 +- apps/www/content/docs/components/input.mdx | 110 +- apps/www/content/docs/components/label.mdx | 37 +- apps/www/content/docs/components/menubar.mdx | 37 +- .../docs/components/navigation-menu.mdx | 39 +- apps/www/content/docs/components/popover.mdx | 37 +- apps/www/content/docs/components/progress.mdx | 38 +- .../content/docs/components/radio-group.mdx | 50 +- .../content/docs/components/scroll-area.mdx | 40 +- apps/www/content/docs/components/select.mdx | 53 +- .../www/content/docs/components/separator.mdx | 40 +- apps/www/content/docs/components/sheet.mdx | 73 +- apps/www/content/docs/components/skeleton.mdx | 31 +- apps/www/content/docs/components/slider.mdx | 38 +- apps/www/content/docs/components/switch.mdx | 50 +- apps/www/content/docs/components/table.mdx | 31 +- apps/www/content/docs/components/tabs.mdx | 38 +- apps/www/content/docs/components/textarea.mdx | 75 +- apps/www/content/docs/components/toast.mdx | 64 +- apps/www/content/docs/components/toggle.mdx | 71 +- apps/www/content/docs/components/tooltip.mdx | 38 +- .../content/docs/components/typography.mdx | 81 +- apps/www/content/docs/dark-mode.mdx | 57 + apps/www/content/docs/index.mdx | 14 +- apps/www/content/docs/installation.mdx | 281 +-- apps/www/content/docs/theming.mdx | 185 +- apps/www/contentlayer.config.js | 23 +- apps/www/hooks/use-config.ts | 19 + apps/www/lib/rehype-component.ts | 251 ++- apps/www/next.config.mjs | 16 +- apps/www/package.json | 17 +- apps/www/pages/api/components.json | 358 ++- apps/www/public/android-chrome-192x192.png | Bin 3728 -> 2640 bytes apps/www/public/android-chrome-512x512.png | Bin 11829 -> 8816 bytes apps/www/public/apple-touch-icon.png | Bin 3306 -> 3630 bytes apps/www/public/favicon-16x16.png | Bin 360 -> 246 bytes apps/www/public/favicon-32x32.png | Bin 548 -> 324 bytes apps/www/public/favicon.ico | Bin 15406 -> 15406 bytes apps/www/public/images/style-with-theming.jpg | Bin 0 -> 152197 bytes apps/www/public/images/style.jpg | Bin 0 -> 56232 bytes apps/www/public/og.jpg | Bin 122174 -> 299278 bytes apps/www/public/registry/colors/gray.json | 92 + apps/www/public/registry/colors/index.json | 1999 +++++++++++++++++ apps/www/public/registry/colors/lime.json | 92 + apps/www/public/registry/colors/neutral.json | 92 + apps/www/public/registry/colors/slate.json | 92 + apps/www/public/registry/colors/stone.json | 92 + apps/www/public/registry/colors/zinc.json | 92 + apps/www/public/registry/index.json | 371 +++ .../registry/styles/default/accordion.json | 13 + .../registry/styles/default/alert-dialog.json | 16 + .../public/registry/styles/default/alert.json | 10 + .../registry/styles/default/aspect-ratio.json | 13 + .../registry/styles/default/avatar.json | 13 + .../public/registry/styles/default/badge.json | 10 + .../registry/styles/default/button.json | 13 + .../registry/styles/default/calendar.json | 17 + .../public/registry/styles/default/card.json | 10 + .../registry/styles/default/checkbox.json | 13 + .../registry/styles/default/collapsible.json | 13 + .../registry/styles/default/command.json | 16 + .../registry/styles/default/context-menu.json | 13 + .../registry/styles/default/dialog.json | 13 + .../styles/default/dropdown-menu.json | 13 + .../public/registry/styles/default/form.json | 21 + .../registry/styles/default/hover-card.json | 13 + .../public/registry/styles/default/input.json | 10 + .../public/registry/styles/default/label.json | 13 + .../registry/styles/default/menubar.json | 13 + .../styles/default/navigation-menu.json | 13 + .../registry/styles/default/popover.json | 13 + .../registry/styles/default/progress.json | 13 + .../registry/styles/default/radio-group.json | 13 + .../registry/styles/default/scroll-area.json | 13 + .../registry/styles/default/select.json | 13 + .../registry/styles/default/separator.json | 13 + .../public/registry/styles/default/sheet.json | 13 + .../registry/styles/default/skeleton.json | 10 + .../registry/styles/default/slider.json | 13 + .../registry/styles/default/switch.json | 13 + .../public/registry/styles/default/table.json | 10 + .../public/registry/styles/default/tabs.json | 13 + .../registry/styles/default/textarea.json | 10 + .../public/registry/styles/default/toast.json | 21 + .../registry/styles/default/toggle.json | 13 + .../registry/styles/default/tooltip.json | 13 + apps/www/public/registry/styles/index.json | 10 + .../registry/styles/new-york/accordion.json | 13 + .../styles/new-york/alert-dialog.json | 16 + .../registry/styles/new-york/alert.json | 10 + .../styles/new-york/aspect-ratio.json | 13 + .../registry/styles/new-york/avatar.json | 13 + .../registry/styles/new-york/badge.json | 10 + .../registry/styles/new-york/button.json | 13 + .../registry/styles/new-york/calendar.json | 17 + .../public/registry/styles/new-york/card.json | 10 + .../registry/styles/new-york/checkbox.json | 13 + .../registry/styles/new-york/collapsible.json | 13 + .../registry/styles/new-york/command.json | 16 + .../styles/new-york/context-menu.json | 13 + .../registry/styles/new-york/dialog.json | 13 + .../styles/new-york/dropdown-menu.json | 13 + .../public/registry/styles/new-york/form.json | 21 + .../registry/styles/new-york/hover-card.json | 13 + .../registry/styles/new-york/input.json | 10 + .../registry/styles/new-york/label.json | 13 + .../registry/styles/new-york/menubar.json | 13 + .../styles/new-york/navigation-menu.json | 13 + .../registry/styles/new-york/popover.json | 13 + .../registry/styles/new-york/progress.json | 13 + .../registry/styles/new-york/radio-group.json | 13 + .../registry/styles/new-york/scroll-area.json | 13 + .../registry/styles/new-york/select.json | 13 + .../registry/styles/new-york/separator.json | 13 + .../registry/styles/new-york/sheet.json | 13 + .../registry/styles/new-york/skeleton.json | 10 + .../registry/styles/new-york/slider.json | 13 + .../registry/styles/new-york/switch.json | 13 + .../registry/styles/new-york/table.json | 10 + .../public/registry/styles/new-york/tabs.json | 13 + .../registry/styles/new-york/textarea.json | 10 + .../registry/styles/new-york/toast.json | 21 + .../registry/styles/new-york/toggle.json | 13 + .../registry/styles/new-york/tooltip.json | 13 + apps/www/public/registry/themes.css | 192 ++ apps/www/public/schema.json | 44 + .../examples => registry}/.eslintrc.json | 0 apps/www/registry/colors.ts | 1556 +++++++++++++ .../default/example/accordion-demo.tsx | 33 + .../default/example/alert-demo.tsx} | 8 +- .../default/example/alert-destructive.tsx} | 8 +- .../default/example/alert-dialog-demo.tsx} | 6 +- .../default/example/aspect-ratio-demo.tsx} | 4 +- .../default/example/avatar-demo.tsx} | 8 +- .../registry/default/example/badge-demo.tsx | 5 + .../default/example/badge-destructive.tsx | 5 + .../default/example/badge-outline.tsx | 5 + .../default/example/badge-secondary.tsx | 5 + .../default/example/button-as-child.tsx} | 4 +- .../registry/default/example/button-demo.tsx | 5 + .../default/example/button-destructive.tsx | 5 + .../registry/default/example/button-ghost.tsx | 5 + .../registry/default/example/button-icon.tsx | 11 + .../registry/default/example/button-link.tsx | 5 + .../default/example/button-loading.tsx} | 4 +- .../default/example/button-outline.tsx | 5 + .../default/example/button-secondary.tsx | 5 + .../default/example/button-with-icon.tsx} | 4 +- .../default/example/calendar-demo.tsx} | 4 +- .../default/example/calendar-form.tsx} | 20 +- .../example/calendar-react-hook-form.tsx} | 20 +- .../default/example/card-demo.tsx} | 10 +- .../default/example/card-with-form.tsx} | 14 +- .../default/example/checkbox-demo.tsx} | 4 +- .../default/example/checkbox-disabled.tsx} | 4 +- .../example/checkbox-form-multiple.tsx} | 10 +- .../default/example/checkbox-form-single.tsx} | 10 +- .../default/example/checkbox-with-text.tsx} | 4 +- .../default/example/collapsible-demo.tsx} | 6 +- .../default/example/combobox-demo.tsx} | 8 +- .../example/combobox-dropdown-menu.tsx} | 8 +- .../default/example/combobox-form.tsx} | 20 +- .../default/example/combobox-popover.tsx} | 8 +- .../default/example/command-demo.tsx} | 4 +- .../default/example/command-dialog.tsx} | 4 +- .../default/example/context-menu-demo.tsx} | 4 +- .../default/example/data-table-demo.tsx} | 148 +- .../default/example/date-picker-demo.tsx} | 8 +- .../default/example/date-picker-form.tsx | 101 + .../example/date-picker-with-presets.tsx} | 10 +- .../example/date-picker-with-range.tsx} | 8 +- .../default/example/dialog-demo.tsx} | 10 +- .../example/dropdown-menu-checkboxes.tsx} | 6 +- .../default/example/dropdown-menu-demo.tsx} | 6 +- .../example/dropdown-menu-radio-group.tsx} | 6 +- .../default/example/hover-card-demo.tsx} | 12 +- .../registry/default/example/input-demo.tsx | 5 + .../default/example/input-disabled.tsx | 5 + .../default/example/input-file.tsx} | 6 +- .../default/example/input-form.tsx} | 10 +- .../default/example/input-with-button.tsx} | 6 +- .../default/example/input-with-label.tsx} | 6 +- .../default/example/input-with-text.tsx} | 6 +- .../default/example/label-demo.tsx} | 6 +- .../default/example/menubar-demo.tsx} | 4 +- .../registry/default/example/mode-toggle.tsx | 40 + .../default/example/navigation-menu-demo.tsx} | 6 +- .../default/example/popover-demo.tsx} | 17 +- .../default/example/progress-demo.tsx} | 4 +- .../default/example/radio-group-demo.tsx} | 6 +- .../default/example/radio-group-form.tsx} | 10 +- .../default/example/scroll-area-demo.tsx} | 6 +- .../default/example/select-demo.tsx} | 4 +- .../default/example/select-form.tsx} | 22 +- .../default/example/separator-demo.tsx} | 4 +- .../default/example/sheet-demo.tsx} | 12 +- .../registry/default/example/sheet-side.tsx | 60 + .../default/example/skeleton-demo.tsx} | 4 +- .../default/example/slider-demo.tsx} | 4 +- .../default/example/switch-demo.tsx} | 6 +- .../default/example/switch-form.tsx} | 13 +- .../default/example/table-demo.tsx} | 4 +- .../default/example/tabs-demo.tsx} | 17 +- .../default/example/textarea-demo.tsx | 5 + .../default/example/textarea-disabled.tsx | 5 + .../default/example/textarea-form.tsx} | 16 +- .../default/example/textarea-with-button.tsx} | 6 +- .../default/example/textarea-with-label.tsx} | 6 +- .../default/example/textarea-with-text.tsx} | 6 +- .../default/example/toast-demo.tsx} | 8 +- .../default/example/toast-destructive.tsx} | 8 +- .../default/example/toast-simple.tsx} | 6 +- .../default/example/toast-with-action.tsx} | 8 +- .../default/example/toast-with-title.tsx} | 6 +- .../default/example/toggle-demo.tsx} | 4 +- .../default/example/toggle-disabled.tsx} | 4 +- .../default/example/toggle-lg.tsx} | 4 +- .../default/example/toggle-outline.tsx} | 4 +- .../default/example/toggle-sm.tsx} | 4 +- .../default/example/toggle-with-text.tsx} | 4 +- .../registry/default/example/tooltip-demo.tsx | 22 + .../example/typography-blockquote.tsx} | 2 +- .../default/example/typography-demo.tsx} | 2 +- .../default/example/typography-h1.tsx} | 2 +- .../default/example/typography-h2.tsx} | 2 +- .../default/example/typography-h3.tsx} | 2 +- .../default/example/typography-h4.tsx} | 2 +- .../example/typography-inline-code.tsx} | 2 +- .../default/example/typography-large.tsx} | 2 +- .../default/example/typography-lead.tsx} | 2 +- .../default/example/typography-list.tsx} | 2 +- .../default/example/typography-muted.tsx} | 2 +- .../default/example/typography-p.tsx} | 2 +- .../default/example/typography-small.tsx} | 2 +- .../default/example/typography-table.tsx} | 2 +- .../default}/ui/accordion.tsx | 0 .../default}/ui/alert-dialog.tsx | 13 +- .../default}/ui/alert.tsx | 4 +- .../default}/ui/aspect-ratio.tsx | 0 .../default}/ui/avatar.tsx | 0 .../default}/ui/badge.tsx | 8 +- .../default}/ui/button.tsx | 13 +- .../default}/ui/calendar.tsx | 2 +- .../default}/ui/card.tsx | 2 +- .../default}/ui/checkbox.tsx | 0 .../default}/ui/collapsible.tsx | 0 .../default}/ui/command.tsx | 4 +- .../default}/ui/context-menu.tsx | 4 +- .../default}/ui/dialog.tsx | 11 +- .../default}/ui/dropdown-menu.tsx | 4 +- .../default/ui}/form.tsx | 2 +- .../default}/ui/hover-card.tsx | 2 +- .../default}/ui/input.tsx | 2 +- .../default}/ui/label.tsx | 0 .../default}/ui/menubar.tsx | 4 +- .../default}/ui/navigation-menu.tsx | 4 +- .../default}/ui/popover.tsx | 2 +- .../default}/ui/progress.tsx | 0 .../default}/ui/radio-group.tsx | 0 .../default}/ui/scroll-area.tsx | 0 .../default}/ui/select.tsx | 5 +- .../default}/ui/separator.tsx | 0 .../default}/ui/sheet.tsx | 125 +- .../default}/ui/skeleton.tsx | 0 .../default}/ui/slider.tsx | 0 .../default}/ui/switch.tsx | 0 .../default}/ui/table.tsx | 0 .../default}/ui/tabs.tsx | 0 .../default}/ui/textarea.tsx | 0 .../default}/ui/toast.tsx | 8 +- .../default}/ui/toaster.tsx | 4 +- .../default}/ui/toggle.tsx | 4 +- .../default}/ui/tooltip.tsx | 2 +- .../default}/ui/use-toast.ts | 5 +- .../new-york/example/accordion-demo.tsx} | 8 +- .../registry/new-york/example/alert-demo.tsx | 19 + .../new-york/example/alert-destructive.tsx | 19 + .../new-york/example/alert-dialog-demo.tsx | 35 + .../new-york/example/aspect-ratio-demo.tsx | 16 + .../registry/new-york/example/avatar-demo.tsx | 14 + .../registry/new-york/example/badge-demo.tsx | 5 + .../new-york/example/badge-destructive.tsx | 5 + .../new-york/example/badge-outline.tsx | 5 + .../new-york/example/badge-secondary.tsx | 5 + .../new-york/example/button-as-child.tsx | 11 + .../registry/new-york/example/button-demo.tsx | 5 + .../new-york/example/button-destructive.tsx | 5 + .../new-york/example/button-ghost.tsx | 5 + .../registry/new-york/example/button-icon.tsx | 11 + .../registry/new-york/example/button-link.tsx | 5 + .../new-york/example/button-loading.tsx | 12 + .../new-york/example/button-outline.tsx | 5 + .../new-york/example/button-secondary.tsx | 5 + .../new-york/example/button-with-icon.tsx | 11 + .../new-york/example/calendar-demo.tsx | 18 + .../new-york/example/calendar-form.tsx | 101 + .../registry/new-york/example/card-demo.tsx | 79 + .../new-york/example/card-with-form.tsx | 59 + .../new-york/example/checkbox-demo.tsx | 17 + .../new-york/example/checkbox-disabled.tsx | 15 + .../example/checkbox-form-multiple.tsx | 127 ++ .../new-york/example/checkbox-form-single.tsx | 73 + .../new-york/example/checkbox-with-text.tsx | 22 + .../new-york/example/collapsible-demo.tsx | 46 + .../new-york/example/combobox-demo.tsx | 90 + .../example/combobox-dropdown-menu.tsx | 101 + .../new-york/example/combobox-form.tsx | 138 ++ .../new-york/example/combobox-popover.tsx | 90 + .../new-york/example/command-demo.tsx | 62 + .../new-york/example/command-dialog.tsx | 86 + .../new-york/example/context-menu-demo.tsx | 67 + .../new-york/example/data-table-demo.tsx | 313 +++ .../new-york/example/date-picker-demo.tsx | 43 + .../new-york/example/date-picker-form.tsx | 101 + .../example/date-picker-with-presets.tsx | 65 + .../example/date-picker-with-range.tsx | 65 + .../registry/new-york/example/dialog-demo.tsx | 47 + .../example/dropdown-menu-checkboxes.tsx | 53 + .../new-york/example/dropdown-menu-demo.tsx | 75 + .../example/dropdown-menu-radio-group.tsx | 35 + .../new-york/example/hover-card-demo.tsx | 43 + .../registry/new-york/example/input-demo.tsx | 5 + .../new-york/example/input-disabled.tsx | 5 + .../registry/new-york/example/input-file.tsx | 11 + .../registry/new-york/example/input-form.tsx | 65 + .../new-york/example/input-with-button.tsx | 11 + .../new-york/example/input-with-label.tsx | 11 + .../new-york/example/input-with-text.tsx | 12 + .../registry/new-york/example/label-demo.tsx | 13 + .../new-york/example/menubar-demo.tsx | 107 + .../registry/new-york/example/mode-toggle.tsx | 40 + .../new-york/example/navigation-menu-demo.tsx | 145 ++ .../new-york/example/popover-demo.tsx | 62 + .../new-york/example/progress-demo.tsx | 16 + .../new-york/example/radio-group-demo.tsx | 21 + .../new-york/example/radio-group-form.tsx | 88 + .../new-york/example/scroll-area-demo.tsx | 24 + .../registry/new-york/example/select-demo.tsx | 31 + .../registry/new-york/example/select-form.tsx | 84 + .../new-york/example/separator-demo.tsx | 22 + .../registry/new-york/example/sheet-demo.tsx | 50 + .../registry/new-york/example/sheet-side.tsx | 60 + .../new-york/example/skeleton-demo.tsx | 13 + .../registry/new-york/example/slider-demo.tsx | 16 + .../registry/new-york/example/switch-demo.tsx | 11 + .../registry/new-york/example/switch-form.tsx | 97 + .../registry/new-york/example/table-demo.tsx | 80 + .../registry/new-york/example/tabs-demo.tsx | 74 + .../new-york/example/textarea-demo.tsx | 5 + .../new-york/example/textarea-disabled.tsx | 5 + .../new-york/example/textarea-form.tsx | 78 + .../new-york/example/textarea-with-button.tsx | 11 + .../new-york/example/textarea-with-label.tsx | 11 + .../new-york/example/textarea-with-text.tsx | 14 + .../registry/new-york/example/toast-demo.tsx | 26 + .../new-york/example/toast-destructive.tsx | 25 + .../new-york/example/toast-simple.tsx | 21 + .../new-york/example/toast-with-action.tsx | 24 + .../new-york/example/toast-with-title.tsx | 22 + .../registry/new-york/example/toggle-demo.tsx | 11 + .../new-york/example/toggle-disabled.tsx | 11 + .../registry/new-york/example/toggle-lg.tsx | 11 + .../new-york/example/toggle-outline.tsx | 11 + .../registry/new-york/example/toggle-sm.tsx | 11 + .../new-york/example/toggle-with-text.tsx | 12 + .../new-york/example/tooltip-demo.tsx | 22 + .../example/typography-blockquote.tsx | 8 + .../new-york/example/typography-demo.tsx | 119 + .../new-york/example/typography-h1.tsx | 7 + .../new-york/example/typography-h2.tsx | 7 + .../new-york/example/typography-h3.tsx | 7 + .../new-york/example/typography-h4.tsx | 7 + .../example/typography-inline-code.tsx | 7 + .../new-york/example/typography-large.tsx | 5 + .../new-york/example/typography-lead.tsx | 8 + .../new-york/example/typography-list.tsx | 9 + .../new-york/example/typography-muted.tsx | 5 + .../new-york/example/typography-p.tsx | 8 + .../new-york/example/typography-small.tsx | 5 + .../new-york/example/typography-table.tsx | 44 + apps/www/registry/new-york/ui/accordion.tsx | 60 + .../www/registry/new-york/ui/alert-dialog.tsx | 145 ++ apps/www/registry/new-york/ui/alert.tsx | 59 + .../www/registry/new-york/ui/aspect-ratio.tsx | 7 + apps/www/registry/new-york/ui/avatar.tsx | 50 + apps/www/registry/new-york/ui/badge.tsx | 36 + apps/www/registry/new-york/ui/button.tsx | 57 + apps/www/registry/new-york/ui/calendar.tsx | 64 + apps/www/registry/new-york/ui/card.tsx | 76 + apps/www/registry/new-york/ui/checkbox.tsx | 30 + apps/www/registry/new-york/ui/collapsible.tsx | 11 + apps/www/registry/new-york/ui/command.tsx | 155 ++ .../www/registry/new-york/ui/context-menu.tsx | 204 ++ apps/www/registry/new-york/ui/dialog.tsx | 123 + .../registry/new-york/ui/dropdown-menu.tsx | 205 ++ apps/www/registry/new-york/ui/form.tsx | 176 ++ apps/www/registry/new-york/ui/hover-card.tsx | 29 + apps/www/registry/new-york/ui/input.tsx | 25 + apps/www/registry/new-york/ui/label.tsx | 26 + apps/www/registry/new-york/ui/menubar.tsx | 240 ++ .../registry/new-york/ui/navigation-menu.tsx | 128 ++ apps/www/registry/new-york/ui/popover.tsx | 31 + apps/www/registry/new-york/ui/progress.tsx | 28 + apps/www/registry/new-york/ui/radio-group.tsx | 44 + apps/www/registry/new-york/ui/scroll-area.tsx | 48 + apps/www/registry/new-york/ui/select.tsx | 120 + apps/www/registry/new-york/ui/separator.tsx | 31 + apps/www/registry/new-york/ui/sheet.tsx | 144 ++ apps/www/registry/new-york/ui/skeleton.tsx | 15 + apps/www/registry/new-york/ui/slider.tsx | 28 + apps/www/registry/new-york/ui/switch.tsx | 29 + apps/www/registry/new-york/ui/table.tsx | 117 + apps/www/registry/new-york/ui/tabs.tsx | 55 + apps/www/registry/new-york/ui/textarea.tsx | 24 + apps/www/registry/new-york/ui/toast.tsx | 127 ++ apps/www/registry/new-york/ui/toaster.tsx | 35 + apps/www/registry/new-york/ui/toggle.tsx | 45 + apps/www/registry/new-york/ui/tooltip.tsx | 30 + apps/www/registry/new-york/ui/use-toast.ts | 192 ++ apps/www/registry/registry.ts | 859 +++++++ apps/www/registry/schema.ts | 17 + apps/www/registry/styles.ts | 12 + apps/www/registry/themes.ts | 148 ++ apps/www/scripts/build-components.ts | 36 - apps/www/scripts/build-registry.ts | 386 ++++ apps/www/styles/globals.css | 78 +- apps/www/styles/mdx.css | 6 +- apps/www/tailwind.config.cjs | 6 +- apps/www/tsconfig.json | 2 +- package.json | 11 +- packages/cli/.prettierignore | 1 + packages/cli/package.json | 9 +- packages/cli/src/commands/add.ts | 178 ++ packages/cli/src/commands/diff.ts | 196 ++ packages/cli/src/commands/init.ts | 264 +++ packages/cli/src/index.ts | 208 +- packages/cli/src/utils/get-components.ts | 38 - packages/cli/src/utils/get-config.ts | 116 +- packages/cli/src/utils/get-package-manager.ts | 35 +- packages/cli/src/utils/handle-error.ts | 16 + packages/cli/src/utils/logger.ts | 3 + packages/cli/src/utils/registry/index.ts | 155 ++ packages/cli/src/utils/registry/schema.ts | 43 + packages/cli/src/utils/resolve-import.ts | 13 + packages/cli/src/utils/templates.ts | 122 +- packages/cli/src/utils/transformers/index.ts | 51 + .../utils/transformers/transform-css-vars.ts | 182 ++ .../utils/transformers/transform-import.ts | 32 + .../src/utils/transformers/transform-rsc.ts | 16 + packages/cli/test/commands/init.test.ts | 166 ++ .../cli/test/fixtures/colors/neutral.json | 92 + packages/cli/test/fixtures/colors/slate.json | 92 + packages/cli/test/fixtures/colors/stone.json | 92 + packages/cli/test/fixtures/colors/zinc.json | 92 + .../test/fixtures/config-full/components.json | 14 + .../test/fixtures/config-full/package.json | 7 + .../test/fixtures/config-full/tsconfig.json | 33 + .../fixtures/config-invalid/components.json | 5 + .../test/fixtures/config-invalid/package.json | 7 + .../test/fixtures/config-none/package.json | 7 + .../fixtures/config-partial/components.json | 13 + .../test/fixtures/config-partial/package.json | 7 + .../fixtures/config-partial/tsconfig.json | 9 + .../cli/test/fixtures/next-src/.gitignore | 35 + .../cli/test/fixtures/next-src/next.config.js | 4 + .../cli/test/fixtures/next-src/package.json | 11 + .../fixtures/next-src/src/app/globals.css | 27 + .../test/fixtures/next-src/tailwind.config.js | 18 + .../cli/test/fixtures/next-src/tsconfig.json | 28 + packages/cli/test/fixtures/next/.gitignore | 35 + .../cli/test/fixtures/next/app/globals.css | 27 + .../cli/test/fixtures/next/next.config.js | 4 + packages/cli/test/fixtures/next/package.json | 25 + .../cli/test/fixtures/next/pnpm-lock.yaml | 1 + .../cli/test/fixtures/next/tailwind.config.js | 76 + packages/cli/test/fixtures/next/tsconfig.json | 28 + .../fixtures/project-npm/package-lock.json | 13 + .../test/fixtures/project-npm/package.json | 7 + .../test/fixtures/project-pnpm/package.json | 7 + .../test/fixtures/project-pnpm/pnpm-lock.yaml | 1 + .../test/fixtures/project-src/components.json | 7 + .../fixtures/project-src/package-lock.json | 13 + .../test/fixtures/project-src/package.json | 5 + .../test/fixtures/project-yarn/package.json | 7 + .../cli/test/fixtures/project-yarn/yarn.lock | 4 + .../cli/test/fixtures/project/components.json | 8 + .../cli/test/fixtures/project/package.json | 5 + .../cli/test/fixtures/project/pnpm-lock.yaml | 1 + .../cli/test/fixtures/t3-app/.eslintrc.cjs | 35 + packages/cli/test/fixtures/t3-app/.gitignore | 42 + .../cli/test/fixtures/t3-app/next.config.mjs | 22 + .../cli/test/fixtures/t3-app/package.json | 38 + packages/cli/test/fixtures/t3-app/src/env.mjs | 35 + .../test/fixtures/t3-app/src/pages/_app.tsx | 8 + .../test/fixtures/t3-app/src/pages/index.tsx | 48 + .../fixtures/t3-app/src/styles/globals.css | 3 + .../test/fixtures/t3-app/tailwind.config.ts | 9 + .../cli/test/fixtures/t3-app/tsconfig.json | 33 + .../test/fixtures/with-base-url/tsconfig.json | 9 + .../fixtures/without-base-url/tsconfig.json | 9 + .../transform-css-vars.test.ts.snap | 25 + .../transform-import.test.ts.snap | 36 + .../__snapshots__/transform-rsc.test.ts.snap | 31 + .../test/utils/apply-color-mapping.test.ts | 84 + packages/cli/test/utils/get-config.test.ts | 119 + .../test/utils/get-package-manager.test.ts | 22 + packages/cli/test/utils/registry.test.ts | 70 + .../cli/test/utils/resolve-import.test.ts | 81 + .../cli/test/utils/transform-css-vars.test.ts | 72 + .../cli/test/utils/transform-import.test.ts | 71 + packages/cli/test/utils/transform-rsc.test.ts | 61 + pnpm-lock.yaml | 1234 +++++++--- pnpm-workspace.yaml | 1 + prettier.config.cjs | 1 + tailwind.config.cjs | 4 +- templates/next-template/components.json | 15 + .../next-template/components/site-header.tsx | 6 +- .../components/theme-provider.tsx | 2 +- .../next-template/components/theme-toggle.tsx | 8 +- .../next-template/components/ui/button.tsx | 1 + turbo.json | 9 +- vitest.config.ts | 9 + 658 files changed, 23389 insertions(+), 4729 deletions(-) create mode 100644 .changeset/slimy-cooks-glow.md create mode 100644 .github/workflows/test.yml create mode 100644 apps/www/__registry__/.autogenerated create mode 100644 apps/www/__registry__/.gitkeep create mode 100644 apps/www/__registry__/README.md create mode 100644 apps/www/__registry__/index.tsx create mode 100644 apps/www/app/sink/layout.tsx create mode 100644 apps/www/app/sink/new-york/page.tsx create mode 100644 apps/www/components/component-preview.tsx delete mode 100644 apps/www/components/examples/badge/demo.tsx delete mode 100644 apps/www/components/examples/badge/destructive.tsx delete mode 100644 apps/www/components/examples/badge/outline.tsx delete mode 100644 apps/www/components/examples/badge/secondary.tsx delete mode 100644 apps/www/components/examples/button/demo.tsx delete mode 100644 apps/www/components/examples/button/destructive.tsx delete mode 100644 apps/www/components/examples/button/ghost.tsx delete mode 100644 apps/www/components/examples/button/link.tsx delete mode 100644 apps/www/components/examples/button/outline.tsx delete mode 100644 apps/www/components/examples/button/secondary.tsx delete mode 100644 apps/www/components/examples/data-table/columns.tsx delete mode 100644 apps/www/components/examples/data-table/demo.tsx delete mode 100644 apps/www/components/examples/index.tsx delete mode 100644 apps/www/components/examples/input/demo.tsx delete mode 100644 apps/www/components/examples/input/disabled.tsx delete mode 100644 apps/www/components/examples/sheet/position.tsx delete mode 100644 apps/www/components/examples/sheet/size.tsx delete mode 100644 apps/www/components/examples/textarea/demo.tsx delete mode 100644 apps/www/components/examples/textarea/disabled.tsx delete mode 100644 apps/www/components/examples/tooltip/demo.tsx rename apps/www/components/{theme-provider.tsx => providers.tsx} (56%) create mode 100644 apps/www/components/theme-wrapper.tsx delete mode 100644 apps/www/config/components.ts create mode 100644 apps/www/content/docs/changelog.mdx rename apps/www/content/docs/{forms/react-hook-form.mdx => components/form.mdx} (84%) create mode 100644 apps/www/content/docs/dark-mode.mdx create mode 100644 apps/www/hooks/use-config.ts create mode 100644 apps/www/public/images/style-with-theming.jpg create mode 100644 apps/www/public/images/style.jpg create mode 100644 apps/www/public/registry/colors/gray.json create mode 100644 apps/www/public/registry/colors/index.json create mode 100644 apps/www/public/registry/colors/lime.json create mode 100644 apps/www/public/registry/colors/neutral.json create mode 100644 apps/www/public/registry/colors/slate.json create mode 100644 apps/www/public/registry/colors/stone.json create mode 100644 apps/www/public/registry/colors/zinc.json create mode 100644 apps/www/public/registry/index.json create mode 100644 apps/www/public/registry/styles/default/accordion.json create mode 100644 apps/www/public/registry/styles/default/alert-dialog.json create mode 100644 apps/www/public/registry/styles/default/alert.json create mode 100644 apps/www/public/registry/styles/default/aspect-ratio.json create mode 100644 apps/www/public/registry/styles/default/avatar.json create mode 100644 apps/www/public/registry/styles/default/badge.json create mode 100644 apps/www/public/registry/styles/default/button.json create mode 100644 apps/www/public/registry/styles/default/calendar.json create mode 100644 apps/www/public/registry/styles/default/card.json create mode 100644 apps/www/public/registry/styles/default/checkbox.json create mode 100644 apps/www/public/registry/styles/default/collapsible.json create mode 100644 apps/www/public/registry/styles/default/command.json create mode 100644 apps/www/public/registry/styles/default/context-menu.json create mode 100644 apps/www/public/registry/styles/default/dialog.json create mode 100644 apps/www/public/registry/styles/default/dropdown-menu.json create mode 100644 apps/www/public/registry/styles/default/form.json create mode 100644 apps/www/public/registry/styles/default/hover-card.json create mode 100644 apps/www/public/registry/styles/default/input.json create mode 100644 apps/www/public/registry/styles/default/label.json create mode 100644 apps/www/public/registry/styles/default/menubar.json create mode 100644 apps/www/public/registry/styles/default/navigation-menu.json create mode 100644 apps/www/public/registry/styles/default/popover.json create mode 100644 apps/www/public/registry/styles/default/progress.json create mode 100644 apps/www/public/registry/styles/default/radio-group.json create mode 100644 apps/www/public/registry/styles/default/scroll-area.json create mode 100644 apps/www/public/registry/styles/default/select.json create mode 100644 apps/www/public/registry/styles/default/separator.json create mode 100644 apps/www/public/registry/styles/default/sheet.json create mode 100644 apps/www/public/registry/styles/default/skeleton.json create mode 100644 apps/www/public/registry/styles/default/slider.json create mode 100644 apps/www/public/registry/styles/default/switch.json create mode 100644 apps/www/public/registry/styles/default/table.json create mode 100644 apps/www/public/registry/styles/default/tabs.json create mode 100644 apps/www/public/registry/styles/default/textarea.json create mode 100644 apps/www/public/registry/styles/default/toast.json create mode 100644 apps/www/public/registry/styles/default/toggle.json create mode 100644 apps/www/public/registry/styles/default/tooltip.json create mode 100644 apps/www/public/registry/styles/index.json create mode 100644 apps/www/public/registry/styles/new-york/accordion.json create mode 100644 apps/www/public/registry/styles/new-york/alert-dialog.json create mode 100644 apps/www/public/registry/styles/new-york/alert.json create mode 100644 apps/www/public/registry/styles/new-york/aspect-ratio.json create mode 100644 apps/www/public/registry/styles/new-york/avatar.json create mode 100644 apps/www/public/registry/styles/new-york/badge.json create mode 100644 apps/www/public/registry/styles/new-york/button.json create mode 100644 apps/www/public/registry/styles/new-york/calendar.json create mode 100644 apps/www/public/registry/styles/new-york/card.json create mode 100644 apps/www/public/registry/styles/new-york/checkbox.json create mode 100644 apps/www/public/registry/styles/new-york/collapsible.json create mode 100644 apps/www/public/registry/styles/new-york/command.json create mode 100644 apps/www/public/registry/styles/new-york/context-menu.json create mode 100644 apps/www/public/registry/styles/new-york/dialog.json create mode 100644 apps/www/public/registry/styles/new-york/dropdown-menu.json create mode 100644 apps/www/public/registry/styles/new-york/form.json create mode 100644 apps/www/public/registry/styles/new-york/hover-card.json create mode 100644 apps/www/public/registry/styles/new-york/input.json create mode 100644 apps/www/public/registry/styles/new-york/label.json create mode 100644 apps/www/public/registry/styles/new-york/menubar.json create mode 100644 apps/www/public/registry/styles/new-york/navigation-menu.json create mode 100644 apps/www/public/registry/styles/new-york/popover.json create mode 100644 apps/www/public/registry/styles/new-york/progress.json create mode 100644 apps/www/public/registry/styles/new-york/radio-group.json create mode 100644 apps/www/public/registry/styles/new-york/scroll-area.json create mode 100644 apps/www/public/registry/styles/new-york/select.json create mode 100644 apps/www/public/registry/styles/new-york/separator.json create mode 100644 apps/www/public/registry/styles/new-york/sheet.json create mode 100644 apps/www/public/registry/styles/new-york/skeleton.json create mode 100644 apps/www/public/registry/styles/new-york/slider.json create mode 100644 apps/www/public/registry/styles/new-york/switch.json create mode 100644 apps/www/public/registry/styles/new-york/table.json create mode 100644 apps/www/public/registry/styles/new-york/tabs.json create mode 100644 apps/www/public/registry/styles/new-york/textarea.json create mode 100644 apps/www/public/registry/styles/new-york/toast.json create mode 100644 apps/www/public/registry/styles/new-york/toggle.json create mode 100644 apps/www/public/registry/styles/new-york/tooltip.json create mode 100644 apps/www/public/registry/themes.css create mode 100644 apps/www/public/schema.json rename apps/www/{components/examples => registry}/.eslintrc.json (100%) create mode 100644 apps/www/registry/colors.ts create mode 100644 apps/www/registry/default/example/accordion-demo.tsx rename apps/www/{components/examples/alert/demo.tsx => registry/default/example/alert-demo.tsx} (68%) rename apps/www/{components/examples/alert/destructive.tsx => registry/default/example/alert-destructive.tsx} (70%) rename apps/www/{components/examples/alert-dialog/demo.tsx => registry/default/example/alert-dialog-demo.tsx} (86%) rename apps/www/{components/examples/aspect-ratio/demo.tsx => registry/default/example/aspect-ratio-demo.tsx} (75%) rename apps/www/{components/examples/avatar/demo.tsx => registry/default/example/avatar-demo.tsx} (55%) create mode 100644 apps/www/registry/default/example/badge-demo.tsx create mode 100644 apps/www/registry/default/example/badge-destructive.tsx create mode 100644 apps/www/registry/default/example/badge-outline.tsx create mode 100644 apps/www/registry/default/example/badge-secondary.tsx rename apps/www/{components/examples/button/as-child.tsx => registry/default/example/button-as-child.tsx} (55%) create mode 100644 apps/www/registry/default/example/button-demo.tsx create mode 100644 apps/www/registry/default/example/button-destructive.tsx create mode 100644 apps/www/registry/default/example/button-ghost.tsx create mode 100644 apps/www/registry/default/example/button-icon.tsx create mode 100644 apps/www/registry/default/example/button-link.tsx rename apps/www/{components/examples/button/loading.tsx => registry/default/example/button-loading.tsx} (63%) create mode 100644 apps/www/registry/default/example/button-outline.tsx create mode 100644 apps/www/registry/default/example/button-secondary.tsx rename apps/www/{components/examples/button/with-icon.tsx => registry/default/example/button-with-icon.tsx} (58%) rename apps/www/{components/examples/calendar/demo.tsx => registry/default/example/calendar-demo.tsx} (72%) rename apps/www/{components/examples/calendar/react-hook-form.tsx => registry/default/example/calendar-form.tsx} (90%) rename apps/www/{components/examples/date-picker/react-hook-form.tsx => registry/default/example/calendar-react-hook-form.tsx} (90%) rename apps/www/{components/examples/card/demo.tsx => registry/default/example/card-demo.tsx} (88%) rename apps/www/{components/examples/card/with-form.tsx => registry/default/example/card-with-form.tsx} (82%) rename apps/www/{components/examples/checkbox/demo.tsx => registry/default/example/checkbox-demo.tsx} (76%) rename apps/www/{components/examples/checkbox/disabled.tsx => registry/default/example/checkbox-disabled.tsx} (76%) rename apps/www/{components/examples/checkbox/react-hook-form-multiple.tsx => registry/default/example/checkbox-form-multiple.tsx} (92%) rename apps/www/{components/examples/checkbox/react-hook-form-single.tsx => registry/default/example/checkbox-form-single.tsx} (87%) rename apps/www/{components/examples/checkbox/with-text.tsx => registry/default/example/checkbox-with-text.tsx} (83%) rename apps/www/{components/examples/collapsible/demo.tsx => registry/default/example/collapsible-demo.tsx} (89%) rename apps/www/{components/examples/combobox/demo.tsx => registry/default/example/combobox-demo.tsx} (92%) rename apps/www/{components/examples/combobox/dropdown-menu.tsx => registry/default/example/combobox-dropdown-menu.tsx} (94%) rename apps/www/{components/examples/combobox/react-hook-form.tsx => registry/default/example/combobox-form.tsx} (93%) rename apps/www/{components/examples/combobox/popover.tsx => registry/default/example/combobox-popover.tsx} (94%) rename apps/www/{components/examples/command/demo.tsx => registry/default/example/command-demo.tsx} (95%) rename apps/www/{components/examples/command/dialog.tsx => registry/default/example/command-dialog.tsx} (96%) rename apps/www/{components/examples/context-menu/demo.tsx => registry/default/example/context-menu-demo.tsx} (96%) rename apps/www/{components/examples/data-table/data-table.tsx => registry/default/example/data-table-demo.tsx} (58%) rename apps/www/{components/examples/date-picker/demo.tsx => registry/default/example/date-picker-demo.tsx} (82%) create mode 100644 apps/www/registry/default/example/date-picker-form.tsx rename apps/www/{components/examples/date-picker/with-presets.tsx => registry/default/example/date-picker-with-presets.tsx} (86%) rename apps/www/{components/examples/date-picker/with-range.tsx => registry/default/example/date-picker-with-range.tsx} (89%) rename apps/www/{components/examples/dialog/demo.tsx => registry/default/example/dialog-demo.tsx} (84%) rename apps/www/{components/examples/dropdown-menu/checkboxes.tsx => registry/default/example/dropdown-menu-checkboxes.tsx} (90%) rename apps/www/{components/examples/dropdown-menu/demo.tsx => registry/default/example/dropdown-menu-demo.tsx} (96%) rename apps/www/{components/examples/dropdown-menu/radio-group.tsx => registry/default/example/dropdown-menu-radio-group.tsx} (87%) rename apps/www/{components/examples/hover-card/demo.tsx => registry/default/example/hover-card-demo.tsx} (82%) create mode 100644 apps/www/registry/default/example/input-demo.tsx create mode 100644 apps/www/registry/default/example/input-disabled.tsx rename apps/www/{components/examples/input/file.tsx => registry/default/example/input-file.tsx} (56%) rename apps/www/{components/examples/input/react-hook-form.tsx => registry/default/example/input-form.tsx} (86%) rename apps/www/{components/examples/input/with-button.tsx => registry/default/example/input-with-button.tsx} (56%) rename apps/www/{components/examples/input/with-label.tsx => registry/default/example/input-with-label.tsx} (57%) rename apps/www/{components/examples/input/with-text.tsx => registry/default/example/input-with-text.tsx} (65%) rename apps/www/{components/examples/label/demo.tsx => registry/default/example/label-demo.tsx} (57%) rename apps/www/{components/examples/menubar/demo.tsx => registry/default/example/menubar-demo.tsx} (97%) create mode 100644 apps/www/registry/default/example/mode-toggle.tsx rename apps/www/{components/examples/navigation-menu/demo.tsx => registry/default/example/navigation-menu-demo.tsx} (98%) rename apps/www/{components/examples/popover/demo.tsx => registry/default/example/popover-demo.tsx} (79%) rename apps/www/{components/examples/progress/demo.tsx => registry/default/example/progress-demo.tsx} (74%) rename apps/www/{components/examples/radio-group/demo.tsx => registry/default/example/radio-group-demo.tsx} (76%) rename apps/www/{components/examples/radio-group/react-hook-form.tsx => registry/default/example/radio-group-form.tsx} (90%) rename apps/www/{components/examples/scroll-area/demo.tsx => registry/default/example/scroll-area-demo.tsx} (77%) rename apps/www/{components/examples/select/demo.tsx => registry/default/example/select-demo.tsx} (90%) rename apps/www/{components/examples/select/react-hook-form.tsx => registry/default/example/select-form.tsx} (90%) rename apps/www/{components/examples/separator/demo.tsx => registry/default/example/separator-demo.tsx} (84%) rename apps/www/{components/examples/sheet/demo.tsx => registry/default/example/sheet-demo.tsx} (83%) create mode 100644 apps/www/registry/default/example/sheet-side.tsx rename apps/www/{components/examples/skeleton/demo.tsx => registry/default/example/skeleton-demo.tsx} (73%) rename apps/www/{components/examples/slider/demo.tsx => registry/default/example/slider-demo.tsx} (65%) rename apps/www/{components/examples/switch/demo.tsx => registry/default/example/switch-demo.tsx} (54%) rename apps/www/{components/examples/switch/react-hook-form.tsx => registry/default/example/switch-form.tsx} (88%) rename apps/www/{components/examples/table/demo.tsx => registry/default/example/table-demo.tsx} (95%) rename apps/www/{components/examples/tabs/demo.tsx => registry/default/example/tabs-demo.tsx} (86%) create mode 100644 apps/www/registry/default/example/textarea-demo.tsx create mode 100644 apps/www/registry/default/example/textarea-disabled.tsx rename apps/www/{components/examples/textarea/react-hook-form.tsx => registry/default/example/textarea-form.tsx} (79%) rename apps/www/{components/examples/textarea/with-button.tsx => registry/default/example/textarea-with-button.tsx} (50%) rename apps/www/{components/examples/textarea/with-label.tsx => registry/default/example/textarea-with-label.tsx} (55%) rename apps/www/{components/examples/textarea/with-text.tsx => registry/default/example/textarea-with-text.tsx} (67%) rename apps/www/{components/examples/toast/demo.tsx => registry/default/example/toast-demo.tsx} (66%) rename apps/www/{components/examples/toast/destructive.tsx => registry/default/example/toast-destructive.tsx} (66%) rename apps/www/{components/examples/toast/simple.tsx => registry/default/example/toast-simple.tsx} (62%) rename apps/www/{components/examples/toast/with-action.tsx => registry/default/example/toast-with-action.tsx} (64%) rename apps/www/{components/examples/toast/with-title.tsx => registry/default/example/toast-with-title.tsx} (66%) rename apps/www/{components/examples/toggle/demo.tsx => registry/default/example/toggle-demo.tsx} (60%) rename apps/www/{components/examples/toggle/disabled.tsx => registry/default/example/toggle-disabled.tsx} (62%) rename apps/www/{components/examples/toggle/lg.tsx => registry/default/example/toggle-lg.tsx} (63%) rename apps/www/{components/examples/toggle/outline.tsx => registry/default/example/toggle-outline.tsx} (63%) rename apps/www/{components/examples/toggle/sm.tsx => registry/default/example/toggle-sm.tsx} (63%) rename apps/www/{components/examples/toggle/with-text.tsx => registry/default/example/toggle-with-text.tsx} (63%) create mode 100644 apps/www/registry/default/example/tooltip-demo.tsx rename apps/www/{components/examples/typography/blockquote.tsx => registry/default/example/typography-blockquote.tsx} (81%) rename apps/www/{components/examples/typography/demo.tsx => registry/default/example/typography-demo.tsx} (99%) rename apps/www/{components/examples/typography/h1.tsx => registry/default/example/typography-h1.tsx} (79%) rename apps/www/{components/examples/typography/h2.tsx => registry/default/example/typography-h2.tsx} (80%) rename apps/www/{components/examples/typography/h3.tsx => registry/default/example/typography-h3.tsx} (74%) rename apps/www/{components/examples/typography/h4.tsx => registry/default/example/typography-h4.tsx} (76%) rename apps/www/{components/examples/typography/inline-code.tsx => registry/default/example/typography-inline-code.tsx} (77%) rename apps/www/{components/examples/typography/large.tsx => registry/default/example/typography-large.tsx} (68%) rename apps/www/{components/examples/typography/lead.tsx => registry/default/example/typography-lead.tsx} (80%) rename apps/www/{components/examples/typography/list.tsx => registry/default/example/typography-list.tsx} (84%) rename apps/www/{components/examples/typography/muted.tsx => registry/default/example/typography-muted.tsx} (68%) rename apps/www/{components/examples/typography/p.tsx => registry/default/example/typography-p.tsx} (83%) rename apps/www/{components/examples/typography/small.tsx => registry/default/example/typography-small.tsx} (68%) rename apps/www/{components/examples/typography/table.tsx => registry/default/example/typography-table.tsx} (97%) rename apps/www/{components => registry/default}/ui/accordion.tsx (100%) rename apps/www/{components => registry/default}/ui/alert-dialog.tsx (83%) rename apps/www/{components => registry/default}/ui/alert.tsx (82%) rename apps/www/{components => registry/default}/ui/aspect-ratio.tsx (100%) rename apps/www/{components => registry/default}/ui/avatar.tsx (100%) rename apps/www/{components => registry/default}/ui/badge.tsx (69%) rename apps/www/{components => registry/default}/ui/button.tsx (72%) rename apps/www/{components => registry/default}/ui/calendar.tsx (97%) rename apps/www/{components => registry/default}/ui/card.tsx (96%) rename apps/www/{components => registry/default}/ui/checkbox.tsx (100%) rename apps/www/{components => registry/default}/ui/collapsible.tsx (100%) rename apps/www/{components => registry/default}/ui/command.tsx (97%) rename apps/www/{components => registry/default}/ui/context-menu.tsx (90%) rename apps/www/{components => registry/default}/ui/dialog.tsx (80%) rename apps/www/{components => registry/default}/ui/dropdown-menu.tsx (89%) rename apps/www/{components/react-hook-form => registry/default/ui}/form.tsx (98%) rename apps/www/{components => registry/default}/ui/hover-card.tsx (68%) rename apps/www/{components => registry/default}/ui/input.tsx (56%) rename apps/www/{components => registry/default}/ui/label.tsx (100%) rename apps/www/{components => registry/default}/ui/menubar.tsx (90%) rename apps/www/{components => registry/default}/ui/navigation-menu.tsx (91%) rename apps/www/{components => registry/default}/ui/popover.tsx (69%) rename apps/www/{components => registry/default}/ui/progress.tsx (100%) rename apps/www/{components => registry/default}/ui/radio-group.tsx (100%) rename apps/www/{components => registry/default}/ui/scroll-area.tsx (100%) rename apps/www/{components => registry/default}/ui/select.tsx (87%) rename apps/www/{components => registry/default}/ui/separator.tsx (100%) rename apps/www/{components => registry/default}/ui/sheet.tsx (52%) rename apps/www/{components => registry/default}/ui/skeleton.tsx (100%) rename apps/www/{components => registry/default}/ui/slider.tsx (100%) rename apps/www/{components => registry/default}/ui/switch.tsx (100%) rename apps/www/{components => registry/default}/ui/table.tsx (100%) rename apps/www/{components => registry/default}/ui/tabs.tsx (100%) rename apps/www/{components => registry/default}/ui/textarea.tsx (100%) rename apps/www/{components => registry/default}/ui/toast.tsx (82%) rename apps/www/{components => registry/default}/ui/toaster.tsx (88%) rename apps/www/{components => registry/default}/ui/toggle.tsx (74%) rename apps/www/{components => registry/default}/ui/tooltip.tsx (76%) rename apps/www/{components => registry/default}/ui/use-toast.ts (97%) rename apps/www/{components/examples/accordion/demo.tsx => registry/new-york/example/accordion-demo.tsx} (87%) create mode 100644 apps/www/registry/new-york/example/alert-demo.tsx create mode 100644 apps/www/registry/new-york/example/alert-destructive.tsx create mode 100644 apps/www/registry/new-york/example/alert-dialog-demo.tsx create mode 100644 apps/www/registry/new-york/example/aspect-ratio-demo.tsx create mode 100644 apps/www/registry/new-york/example/avatar-demo.tsx create mode 100644 apps/www/registry/new-york/example/badge-demo.tsx create mode 100644 apps/www/registry/new-york/example/badge-destructive.tsx create mode 100644 apps/www/registry/new-york/example/badge-outline.tsx create mode 100644 apps/www/registry/new-york/example/badge-secondary.tsx create mode 100644 apps/www/registry/new-york/example/button-as-child.tsx create mode 100644 apps/www/registry/new-york/example/button-demo.tsx create mode 100644 apps/www/registry/new-york/example/button-destructive.tsx create mode 100644 apps/www/registry/new-york/example/button-ghost.tsx create mode 100644 apps/www/registry/new-york/example/button-icon.tsx create mode 100644 apps/www/registry/new-york/example/button-link.tsx create mode 100644 apps/www/registry/new-york/example/button-loading.tsx create mode 100644 apps/www/registry/new-york/example/button-outline.tsx create mode 100644 apps/www/registry/new-york/example/button-secondary.tsx create mode 100644 apps/www/registry/new-york/example/button-with-icon.tsx create mode 100644 apps/www/registry/new-york/example/calendar-demo.tsx create mode 100644 apps/www/registry/new-york/example/calendar-form.tsx create mode 100644 apps/www/registry/new-york/example/card-demo.tsx create mode 100644 apps/www/registry/new-york/example/card-with-form.tsx create mode 100644 apps/www/registry/new-york/example/checkbox-demo.tsx create mode 100644 apps/www/registry/new-york/example/checkbox-disabled.tsx create mode 100644 apps/www/registry/new-york/example/checkbox-form-multiple.tsx create mode 100644 apps/www/registry/new-york/example/checkbox-form-single.tsx create mode 100644 apps/www/registry/new-york/example/checkbox-with-text.tsx create mode 100644 apps/www/registry/new-york/example/collapsible-demo.tsx create mode 100644 apps/www/registry/new-york/example/combobox-demo.tsx create mode 100644 apps/www/registry/new-york/example/combobox-dropdown-menu.tsx create mode 100644 apps/www/registry/new-york/example/combobox-form.tsx create mode 100644 apps/www/registry/new-york/example/combobox-popover.tsx create mode 100644 apps/www/registry/new-york/example/command-demo.tsx create mode 100644 apps/www/registry/new-york/example/command-dialog.tsx create mode 100644 apps/www/registry/new-york/example/context-menu-demo.tsx create mode 100644 apps/www/registry/new-york/example/data-table-demo.tsx create mode 100644 apps/www/registry/new-york/example/date-picker-demo.tsx create mode 100644 apps/www/registry/new-york/example/date-picker-form.tsx create mode 100644 apps/www/registry/new-york/example/date-picker-with-presets.tsx create mode 100644 apps/www/registry/new-york/example/date-picker-with-range.tsx create mode 100644 apps/www/registry/new-york/example/dialog-demo.tsx create mode 100644 apps/www/registry/new-york/example/dropdown-menu-checkboxes.tsx create mode 100644 apps/www/registry/new-york/example/dropdown-menu-demo.tsx create mode 100644 apps/www/registry/new-york/example/dropdown-menu-radio-group.tsx create mode 100644 apps/www/registry/new-york/example/hover-card-demo.tsx create mode 100644 apps/www/registry/new-york/example/input-demo.tsx create mode 100644 apps/www/registry/new-york/example/input-disabled.tsx create mode 100644 apps/www/registry/new-york/example/input-file.tsx create mode 100644 apps/www/registry/new-york/example/input-form.tsx create mode 100644 apps/www/registry/new-york/example/input-with-button.tsx create mode 100644 apps/www/registry/new-york/example/input-with-label.tsx create mode 100644 apps/www/registry/new-york/example/input-with-text.tsx create mode 100644 apps/www/registry/new-york/example/label-demo.tsx create mode 100644 apps/www/registry/new-york/example/menubar-demo.tsx create mode 100644 apps/www/registry/new-york/example/mode-toggle.tsx create mode 100644 apps/www/registry/new-york/example/navigation-menu-demo.tsx create mode 100644 apps/www/registry/new-york/example/popover-demo.tsx create mode 100644 apps/www/registry/new-york/example/progress-demo.tsx create mode 100644 apps/www/registry/new-york/example/radio-group-demo.tsx create mode 100644 apps/www/registry/new-york/example/radio-group-form.tsx create mode 100644 apps/www/registry/new-york/example/scroll-area-demo.tsx create mode 100644 apps/www/registry/new-york/example/select-demo.tsx create mode 100644 apps/www/registry/new-york/example/select-form.tsx create mode 100644 apps/www/registry/new-york/example/separator-demo.tsx create mode 100644 apps/www/registry/new-york/example/sheet-demo.tsx create mode 100644 apps/www/registry/new-york/example/sheet-side.tsx create mode 100644 apps/www/registry/new-york/example/skeleton-demo.tsx create mode 100644 apps/www/registry/new-york/example/slider-demo.tsx create mode 100644 apps/www/registry/new-york/example/switch-demo.tsx create mode 100644 apps/www/registry/new-york/example/switch-form.tsx create mode 100644 apps/www/registry/new-york/example/table-demo.tsx create mode 100644 apps/www/registry/new-york/example/tabs-demo.tsx create mode 100644 apps/www/registry/new-york/example/textarea-demo.tsx create mode 100644 apps/www/registry/new-york/example/textarea-disabled.tsx create mode 100644 apps/www/registry/new-york/example/textarea-form.tsx create mode 100644 apps/www/registry/new-york/example/textarea-with-button.tsx create mode 100644 apps/www/registry/new-york/example/textarea-with-label.tsx create mode 100644 apps/www/registry/new-york/example/textarea-with-text.tsx create mode 100644 apps/www/registry/new-york/example/toast-demo.tsx create mode 100644 apps/www/registry/new-york/example/toast-destructive.tsx create mode 100644 apps/www/registry/new-york/example/toast-simple.tsx create mode 100644 apps/www/registry/new-york/example/toast-with-action.tsx create mode 100644 apps/www/registry/new-york/example/toast-with-title.tsx create mode 100644 apps/www/registry/new-york/example/toggle-demo.tsx create mode 100644 apps/www/registry/new-york/example/toggle-disabled.tsx create mode 100644 apps/www/registry/new-york/example/toggle-lg.tsx create mode 100644 apps/www/registry/new-york/example/toggle-outline.tsx create mode 100644 apps/www/registry/new-york/example/toggle-sm.tsx create mode 100644 apps/www/registry/new-york/example/toggle-with-text.tsx create mode 100644 apps/www/registry/new-york/example/tooltip-demo.tsx create mode 100644 apps/www/registry/new-york/example/typography-blockquote.tsx create mode 100644 apps/www/registry/new-york/example/typography-demo.tsx create mode 100644 apps/www/registry/new-york/example/typography-h1.tsx create mode 100644 apps/www/registry/new-york/example/typography-h2.tsx create mode 100644 apps/www/registry/new-york/example/typography-h3.tsx create mode 100644 apps/www/registry/new-york/example/typography-h4.tsx create mode 100644 apps/www/registry/new-york/example/typography-inline-code.tsx create mode 100644 apps/www/registry/new-york/example/typography-large.tsx create mode 100644 apps/www/registry/new-york/example/typography-lead.tsx create mode 100644 apps/www/registry/new-york/example/typography-list.tsx create mode 100644 apps/www/registry/new-york/example/typography-muted.tsx create mode 100644 apps/www/registry/new-york/example/typography-p.tsx create mode 100644 apps/www/registry/new-york/example/typography-small.tsx create mode 100644 apps/www/registry/new-york/example/typography-table.tsx create mode 100644 apps/www/registry/new-york/ui/accordion.tsx create mode 100644 apps/www/registry/new-york/ui/alert-dialog.tsx create mode 100644 apps/www/registry/new-york/ui/alert.tsx create mode 100644 apps/www/registry/new-york/ui/aspect-ratio.tsx create mode 100644 apps/www/registry/new-york/ui/avatar.tsx create mode 100644 apps/www/registry/new-york/ui/badge.tsx create mode 100644 apps/www/registry/new-york/ui/button.tsx create mode 100644 apps/www/registry/new-york/ui/calendar.tsx create mode 100644 apps/www/registry/new-york/ui/card.tsx create mode 100644 apps/www/registry/new-york/ui/checkbox.tsx create mode 100644 apps/www/registry/new-york/ui/collapsible.tsx create mode 100644 apps/www/registry/new-york/ui/command.tsx create mode 100644 apps/www/registry/new-york/ui/context-menu.tsx create mode 100644 apps/www/registry/new-york/ui/dialog.tsx create mode 100644 apps/www/registry/new-york/ui/dropdown-menu.tsx create mode 100644 apps/www/registry/new-york/ui/form.tsx create mode 100644 apps/www/registry/new-york/ui/hover-card.tsx create mode 100644 apps/www/registry/new-york/ui/input.tsx create mode 100644 apps/www/registry/new-york/ui/label.tsx create mode 100644 apps/www/registry/new-york/ui/menubar.tsx create mode 100644 apps/www/registry/new-york/ui/navigation-menu.tsx create mode 100644 apps/www/registry/new-york/ui/popover.tsx create mode 100644 apps/www/registry/new-york/ui/progress.tsx create mode 100644 apps/www/registry/new-york/ui/radio-group.tsx create mode 100644 apps/www/registry/new-york/ui/scroll-area.tsx create mode 100644 apps/www/registry/new-york/ui/select.tsx create mode 100644 apps/www/registry/new-york/ui/separator.tsx create mode 100644 apps/www/registry/new-york/ui/sheet.tsx create mode 100644 apps/www/registry/new-york/ui/skeleton.tsx create mode 100644 apps/www/registry/new-york/ui/slider.tsx create mode 100644 apps/www/registry/new-york/ui/switch.tsx create mode 100644 apps/www/registry/new-york/ui/table.tsx create mode 100644 apps/www/registry/new-york/ui/tabs.tsx create mode 100644 apps/www/registry/new-york/ui/textarea.tsx create mode 100644 apps/www/registry/new-york/ui/toast.tsx create mode 100644 apps/www/registry/new-york/ui/toaster.tsx create mode 100644 apps/www/registry/new-york/ui/toggle.tsx create mode 100644 apps/www/registry/new-york/ui/tooltip.tsx create mode 100644 apps/www/registry/new-york/ui/use-toast.ts create mode 100644 apps/www/registry/registry.ts create mode 100644 apps/www/registry/schema.ts create mode 100644 apps/www/registry/styles.ts create mode 100644 apps/www/registry/themes.ts delete mode 100644 apps/www/scripts/build-components.ts create mode 100644 apps/www/scripts/build-registry.ts create mode 100644 packages/cli/.prettierignore create mode 100644 packages/cli/src/commands/add.ts create mode 100644 packages/cli/src/commands/diff.ts create mode 100644 packages/cli/src/commands/init.ts delete mode 100644 packages/cli/src/utils/get-components.ts create mode 100644 packages/cli/src/utils/handle-error.ts create mode 100644 packages/cli/src/utils/registry/index.ts create mode 100644 packages/cli/src/utils/registry/schema.ts create mode 100644 packages/cli/src/utils/resolve-import.ts create mode 100644 packages/cli/src/utils/transformers/index.ts create mode 100644 packages/cli/src/utils/transformers/transform-css-vars.ts create mode 100644 packages/cli/src/utils/transformers/transform-import.ts create mode 100644 packages/cli/src/utils/transformers/transform-rsc.ts create mode 100644 packages/cli/test/commands/init.test.ts create mode 100644 packages/cli/test/fixtures/colors/neutral.json create mode 100644 packages/cli/test/fixtures/colors/slate.json create mode 100644 packages/cli/test/fixtures/colors/stone.json create mode 100644 packages/cli/test/fixtures/colors/zinc.json create mode 100644 packages/cli/test/fixtures/config-full/components.json create mode 100644 packages/cli/test/fixtures/config-full/package.json create mode 100644 packages/cli/test/fixtures/config-full/tsconfig.json create mode 100644 packages/cli/test/fixtures/config-invalid/components.json create mode 100644 packages/cli/test/fixtures/config-invalid/package.json create mode 100644 packages/cli/test/fixtures/config-none/package.json create mode 100644 packages/cli/test/fixtures/config-partial/components.json create mode 100644 packages/cli/test/fixtures/config-partial/package.json create mode 100644 packages/cli/test/fixtures/config-partial/tsconfig.json create mode 100644 packages/cli/test/fixtures/next-src/.gitignore create mode 100644 packages/cli/test/fixtures/next-src/next.config.js create mode 100644 packages/cli/test/fixtures/next-src/package.json create mode 100644 packages/cli/test/fixtures/next-src/src/app/globals.css create mode 100644 packages/cli/test/fixtures/next-src/tailwind.config.js create mode 100644 packages/cli/test/fixtures/next-src/tsconfig.json create mode 100644 packages/cli/test/fixtures/next/.gitignore create mode 100644 packages/cli/test/fixtures/next/app/globals.css create mode 100644 packages/cli/test/fixtures/next/next.config.js create mode 100644 packages/cli/test/fixtures/next/package.json create mode 100644 packages/cli/test/fixtures/next/pnpm-lock.yaml create mode 100644 packages/cli/test/fixtures/next/tailwind.config.js create mode 100644 packages/cli/test/fixtures/next/tsconfig.json create mode 100644 packages/cli/test/fixtures/project-npm/package-lock.json create mode 100644 packages/cli/test/fixtures/project-npm/package.json create mode 100644 packages/cli/test/fixtures/project-pnpm/package.json create mode 100644 packages/cli/test/fixtures/project-pnpm/pnpm-lock.yaml create mode 100644 packages/cli/test/fixtures/project-src/components.json create mode 100644 packages/cli/test/fixtures/project-src/package-lock.json create mode 100644 packages/cli/test/fixtures/project-src/package.json create mode 100644 packages/cli/test/fixtures/project-yarn/package.json create mode 100644 packages/cli/test/fixtures/project-yarn/yarn.lock create mode 100644 packages/cli/test/fixtures/project/components.json create mode 100644 packages/cli/test/fixtures/project/package.json create mode 100644 packages/cli/test/fixtures/project/pnpm-lock.yaml create mode 100644 packages/cli/test/fixtures/t3-app/.eslintrc.cjs create mode 100644 packages/cli/test/fixtures/t3-app/.gitignore create mode 100644 packages/cli/test/fixtures/t3-app/next.config.mjs create mode 100644 packages/cli/test/fixtures/t3-app/package.json create mode 100644 packages/cli/test/fixtures/t3-app/src/env.mjs create mode 100644 packages/cli/test/fixtures/t3-app/src/pages/_app.tsx create mode 100644 packages/cli/test/fixtures/t3-app/src/pages/index.tsx create mode 100644 packages/cli/test/fixtures/t3-app/src/styles/globals.css create mode 100644 packages/cli/test/fixtures/t3-app/tailwind.config.ts create mode 100644 packages/cli/test/fixtures/t3-app/tsconfig.json create mode 100644 packages/cli/test/fixtures/with-base-url/tsconfig.json create mode 100644 packages/cli/test/fixtures/without-base-url/tsconfig.json create mode 100644 packages/cli/test/utils/__snapshots__/transform-css-vars.test.ts.snap create mode 100644 packages/cli/test/utils/__snapshots__/transform-import.test.ts.snap create mode 100644 packages/cli/test/utils/__snapshots__/transform-rsc.test.ts.snap create mode 100644 packages/cli/test/utils/apply-color-mapping.test.ts create mode 100644 packages/cli/test/utils/get-config.test.ts create mode 100644 packages/cli/test/utils/get-package-manager.test.ts create mode 100644 packages/cli/test/utils/registry.test.ts create mode 100644 packages/cli/test/utils/resolve-import.test.ts create mode 100644 packages/cli/test/utils/transform-css-vars.test.ts create mode 100644 packages/cli/test/utils/transform-import.test.ts create mode 100644 packages/cli/test/utils/transform-rsc.test.ts create mode 100644 templates/next-template/components.json create mode 100644 vitest.config.ts diff --git a/.changeset/slimy-cooks-glow.md b/.changeset/slimy-cooks-glow.md new file mode 100644 index 000000000..4a70aa2eb --- /dev/null +++ b/.changeset/slimy-cooks-glow.md @@ -0,0 +1,5 @@ +--- +"shadcn-ui": minor +--- + +everything is new diff --git a/.eslintrc.json b/.eslintrc.json index 920b86f34..9a48847ba 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -10,13 +10,12 @@ "plugins": ["tailwindcss"], "rules": { "@next/next/no-html-link-for-pages": "off", - "react/jsx-key": "off", "tailwindcss/no-custom-classname": "off", "tailwindcss/classnames-order": "error" }, "settings": { "tailwindcss": { - "callees": ["cn"], + "callees": ["cn", "cva"], "config": "tailwind.config.cjs" }, "next": { diff --git a/.github/workflows/code-check.yml b/.github/workflows/code-check.yml index e5a59d322..c6fcb9aca 100644 --- a/.github/workflows/code-check.yml +++ b/.github/workflows/code-check.yml @@ -22,6 +22,7 @@ jobs: name: Install pnpm id: pnpm-install with: + version: 8.6.1 run_install: false - name: Get pnpm store directory @@ -57,6 +58,7 @@ jobs: name: Install pnpm id: pnpm-install with: + version: 8.6.1 run_install: false - name: Get pnpm store directory @@ -94,6 +96,7 @@ jobs: name: Install pnpm id: pnpm-install with: + version: 8.6.1 run_install: false - name: Get pnpm store directory diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 18f35004f..d31a8ebaa 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -24,6 +24,8 @@ jobs: - name: Use PNPM uses: pnpm/action-setup@v2.2.4 + with: + version: 8.6.1 - name: Use Node.js 18 uses: actions/setup-node@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 87eee6e42..3ba8d4a6e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,10 +20,13 @@ jobs: - name: Use PNPM uses: pnpm/action-setup@v2.2.4 + with: + version: 8.6.1 - name: Use Node.js 18 uses: actions/setup-node@v3 with: + version: 8.6.1 node-version: 18 cache: "pnpm" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000..79d58c08a --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,42 @@ +name: Test + +on: + pull_request: + branches: ["*"] + +jobs: + test: + runs-on: ubuntu-latest + name: Test + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Install Node.js + uses: actions/setup-node@v3 + with: + node-version: 16 + + - uses: pnpm/action-setup@v2.2.4 + name: Install pnpm + id: pnpm-install + with: + version: 8.6.1 + run_install: false + + - name: Get pnpm store directory + id: pnpm-cache + run: | + echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + - name: Install dependencies + run: pnpm install + + - run: pnpm test diff --git a/.prettierignore b/.prettierignore index 59a3d1274..b22698353 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,4 +3,4 @@ node_modules .next build .contentlayer -apps/www/pages/api/components.json \ No newline at end of file +apps/www/pages/api/registry.json \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 304879dc2..2de039388 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,9 @@ "eslint.workingDirectories": [ { "pattern": "apps/*/" }, { "pattern": "packages/*/" } + ], + "tailwindCSS.experimental.classRegex": [ + ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"], + ["cn\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"] ] } diff --git a/apps/www/.prettierignore b/apps/www/.prettierignore index 3aea320e0..ccf2b0bb0 100644 --- a/apps/www/.prettierignore +++ b/apps/www/.prettierignore @@ -2,4 +2,5 @@ dist node_modules .next build -.contentlayer \ No newline at end of file +.contentlayer +__registry__/index.tsx \ No newline at end of file diff --git a/apps/www/__registry__/.autogenerated b/apps/www/__registry__/.autogenerated new file mode 100644 index 000000000..0055c2a3e --- /dev/null +++ b/apps/www/__registry__/.autogenerated @@ -0,0 +1 @@ +// The content of this directory is autogenerated by the registry server. diff --git a/apps/www/__registry__/.gitkeep b/apps/www/__registry__/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/www/__registry__/README.md b/apps/www/__registry__/README.md new file mode 100644 index 000000000..5621ceace --- /dev/null +++ b/apps/www/__registry__/README.md @@ -0,0 +1 @@ +> Files inside this directory is autogenerated by `./scripts/build-registry.ts`. **Do not edit them manually.** - shadcn diff --git a/apps/www/__registry__/index.tsx b/apps/www/__registry__/index.tsx new file mode 100644 index 000000000..7fcfda380 --- /dev/null +++ b/apps/www/__registry__/index.tsx @@ -0,0 +1,1493 @@ +// This file is autogenerated by scripts/build-registry.ts +// Do not edit this file directly. +import * as React from "react" + +export const Index: Record = { + "default": { + "accordion-demo": { + name: "accordion-demo", + type: "components:example", + registryDependencies: ["accordion"], + component: React.lazy(() => import("@/registry/default/example/accordion-demo")), + files: ["registry/default/example/accordion-demo.tsx"], + }, + "alert-demo": { + name: "alert-demo", + type: "components:example", + registryDependencies: ["alert"], + component: React.lazy(() => import("@/registry/default/example/alert-demo")), + files: ["registry/default/example/alert-demo.tsx"], + }, + "alert-destructive": { + name: "alert-destructive", + type: "components:example", + registryDependencies: ["alert"], + component: React.lazy(() => import("@/registry/default/example/alert-destructive")), + files: ["registry/default/example/alert-destructive.tsx"], + }, + "alert-dialog-demo": { + name: "alert-dialog-demo", + type: "components:example", + registryDependencies: ["alert-dialog","button"], + component: React.lazy(() => import("@/registry/default/example/alert-dialog-demo")), + files: ["registry/default/example/alert-dialog-demo.tsx"], + }, + "aspect-ratio-demo": { + name: "aspect-ratio-demo", + type: "components:example", + registryDependencies: ["aspect-ratio"], + component: React.lazy(() => import("@/registry/default/example/aspect-ratio-demo")), + files: ["registry/default/example/aspect-ratio-demo.tsx"], + }, + "avatar-demo": { + name: "avatar-demo", + type: "components:example", + registryDependencies: ["avatar"], + component: React.lazy(() => import("@/registry/default/example/avatar-demo")), + files: ["registry/default/example/avatar-demo.tsx"], + }, + "badge-demo": { + name: "badge-demo", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/default/example/badge-demo")), + files: ["registry/default/example/badge-demo.tsx"], + }, + "badge-destructive": { + name: "badge-destructive", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/default/example/badge-destructive")), + files: ["registry/default/example/badge-destructive.tsx"], + }, + "badge-outline": { + name: "badge-outline", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/default/example/badge-outline")), + files: ["registry/default/example/badge-outline.tsx"], + }, + "badge-secondary": { + name: "badge-secondary", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/default/example/badge-secondary")), + files: ["registry/default/example/badge-secondary.tsx"], + }, + "button-demo": { + name: "button-demo", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-demo")), + files: ["registry/default/example/button-demo.tsx"], + }, + "button-secondary": { + name: "button-secondary", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-secondary")), + files: ["registry/default/example/button-secondary.tsx"], + }, + "button-destructive": { + name: "button-destructive", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-destructive")), + files: ["registry/default/example/button-destructive.tsx"], + }, + "button-outline": { + name: "button-outline", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-outline")), + files: ["registry/default/example/button-outline.tsx"], + }, + "button-ghost": { + name: "button-ghost", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-ghost")), + files: ["registry/default/example/button-ghost.tsx"], + }, + "button-link": { + name: "button-link", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-link")), + files: ["registry/default/example/button-link.tsx"], + }, + "button-with-icon": { + name: "button-with-icon", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-with-icon")), + files: ["registry/default/example/button-with-icon.tsx"], + }, + "button-loading": { + name: "button-loading", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-loading")), + files: ["registry/default/example/button-loading.tsx"], + }, + "button-icon": { + name: "button-icon", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-icon")), + files: ["registry/default/example/button-icon.tsx"], + }, + "button-as-child": { + name: "button-as-child", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-as-child")), + files: ["registry/default/example/button-as-child.tsx"], + }, + "calendar-demo": { + name: "calendar-demo", + type: "components:example", + registryDependencies: ["calendar"], + component: React.lazy(() => import("@/registry/default/example/calendar-demo")), + files: ["registry/default/example/calendar-demo.tsx"], + }, + "calendar-form": { + name: "calendar-form", + type: "components:example", + registryDependencies: ["calendar","form","popover"], + component: React.lazy(() => import("@/registry/default/example/calendar-form")), + files: ["registry/default/example/calendar-form.tsx"], + }, + "card-demo": { + name: "card-demo", + type: "components:example", + registryDependencies: ["card","button","switch"], + component: React.lazy(() => import("@/registry/default/example/card-demo")), + files: ["registry/default/example/card-demo.tsx"], + }, + "card-with-form": { + name: "card-with-form", + type: "components:example", + registryDependencies: ["button","card","input","label","select"], + component: React.lazy(() => import("@/registry/default/example/card-with-form")), + files: ["registry/default/example/card-with-form.tsx"], + }, + "checkbox-demo": { + name: "checkbox-demo", + type: "components:example", + registryDependencies: ["checkbox"], + component: React.lazy(() => import("@/registry/default/example/checkbox-demo")), + files: ["registry/default/example/checkbox-demo.tsx"], + }, + "checkbox-disabled": { + name: "checkbox-disabled", + type: "components:example", + registryDependencies: ["checkbox"], + component: React.lazy(() => import("@/registry/default/example/checkbox-disabled")), + files: ["registry/default/example/checkbox-disabled.tsx"], + }, + "checkbox-form-multiple": { + name: "checkbox-form-multiple", + type: "components:example", + registryDependencies: ["checkbox","form"], + component: React.lazy(() => import("@/registry/default/example/checkbox-form-multiple")), + files: ["registry/default/example/checkbox-form-multiple.tsx"], + }, + "checkbox-form-single": { + name: "checkbox-form-single", + type: "components:example", + registryDependencies: ["checkbox","form"], + component: React.lazy(() => import("@/registry/default/example/checkbox-form-single")), + files: ["registry/default/example/checkbox-form-single.tsx"], + }, + "checkbox-with-text": { + name: "checkbox-with-text", + type: "components:example", + registryDependencies: ["checkbox"], + component: React.lazy(() => import("@/registry/default/example/checkbox-with-text")), + files: ["registry/default/example/checkbox-with-text.tsx"], + }, + "collapsible-demo": { + name: "collapsible-demo", + type: "components:example", + registryDependencies: ["collapsible"], + component: React.lazy(() => import("@/registry/default/example/collapsible-demo")), + files: ["registry/default/example/collapsible-demo.tsx"], + }, + "combobox-demo": { + name: "combobox-demo", + type: "components:example", + registryDependencies: ["command"], + component: React.lazy(() => import("@/registry/default/example/combobox-demo")), + files: ["registry/default/example/combobox-demo.tsx"], + }, + "combobox-dropdown-menu": { + name: "combobox-dropdown-menu", + type: "components:example", + registryDependencies: ["command","dropdown-menu","button"], + component: React.lazy(() => import("@/registry/default/example/combobox-dropdown-menu")), + files: ["registry/default/example/combobox-dropdown-menu.tsx"], + }, + "combobox-form": { + name: "combobox-form", + type: "components:example", + registryDependencies: ["command","form"], + component: React.lazy(() => import("@/registry/default/example/combobox-form")), + files: ["registry/default/example/combobox-form.tsx"], + }, + "combobox-popover": { + name: "combobox-popover", + type: "components:example", + registryDependencies: ["combobox","popover"], + component: React.lazy(() => import("@/registry/default/example/combobox-popover")), + files: ["registry/default/example/combobox-popover.tsx"], + }, + "command-demo": { + name: "command-demo", + type: "components:example", + registryDependencies: ["command"], + component: React.lazy(() => import("@/registry/default/example/command-demo")), + files: ["registry/default/example/command-demo.tsx"], + }, + "command-dialog": { + name: "command-dialog", + type: "components:example", + registryDependencies: ["command","dialog"], + component: React.lazy(() => import("@/registry/default/example/command-dialog")), + files: ["registry/default/example/command-dialog.tsx"], + }, + "context-menu-demo": { + name: "context-menu-demo", + type: "components:example", + registryDependencies: ["context-menu"], + component: React.lazy(() => import("@/registry/default/example/context-menu-demo")), + files: ["registry/default/example/context-menu-demo.tsx"], + }, + "data-table-demo": { + name: "data-table-demo", + type: "components:example", + registryDependencies: ["data-table"], + component: React.lazy(() => import("@/registry/default/example/data-table-demo")), + files: ["registry/default/example/data-table-demo.tsx"], + }, + "date-picker-demo": { + name: "date-picker-demo", + type: "components:example", + registryDependencies: ["button","calendar","popover"], + component: React.lazy(() => import("@/registry/default/example/date-picker-demo")), + files: ["registry/default/example/date-picker-demo.tsx"], + }, + "date-picker-form": { + name: "date-picker-form", + type: "components:example", + registryDependencies: ["button","calendar","form","popover"], + component: React.lazy(() => import("@/registry/default/example/date-picker-form")), + files: ["registry/default/example/date-picker-form.tsx"], + }, + "date-picker-with-presets": { + name: "date-picker-with-presets", + type: "components:example", + registryDependencies: ["button","calendar","popover","select"], + component: React.lazy(() => import("@/registry/default/example/date-picker-with-presets")), + files: ["registry/default/example/date-picker-with-presets.tsx"], + }, + "date-picker-with-range": { + name: "date-picker-with-range", + type: "components:example", + registryDependencies: ["button","calendar","popover"], + component: React.lazy(() => import("@/registry/default/example/date-picker-with-range")), + files: ["registry/default/example/date-picker-with-range.tsx"], + }, + "dialog-demo": { + name: "dialog-demo", + type: "components:example", + registryDependencies: ["dialog"], + component: React.lazy(() => import("@/registry/default/example/dialog-demo")), + files: ["registry/default/example/dialog-demo.tsx"], + }, + "dropdown-menu-demo": { + name: "dropdown-menu-demo", + type: "components:example", + registryDependencies: ["dropdown-menu"], + component: React.lazy(() => import("@/registry/default/example/dropdown-menu-demo")), + files: ["registry/default/example/dropdown-menu-demo.tsx"], + }, + "dropdown-menu-checkboxes": { + name: "dropdown-menu-checkboxes", + type: "components:example", + registryDependencies: ["dropdown-menu","checkbox"], + component: React.lazy(() => import("@/registry/default/example/dropdown-menu-checkboxes")), + files: ["registry/default/example/dropdown-menu-checkboxes.tsx"], + }, + "dropdown-menu-radio-group": { + name: "dropdown-menu-radio-group", + type: "components:example", + registryDependencies: ["dropdown-menu","radio-group"], + component: React.lazy(() => import("@/registry/default/example/dropdown-menu-radio-group")), + files: ["registry/default/example/dropdown-menu-radio-group.tsx"], + }, + "hover-card-demo": { + name: "hover-card-demo", + type: "components:example", + registryDependencies: ["hover-card"], + component: React.lazy(() => import("@/registry/default/example/hover-card-demo")), + files: ["registry/default/example/hover-card-demo.tsx"], + }, + "input-demo": { + name: "input-demo", + type: "components:example", + registryDependencies: ["input"], + component: React.lazy(() => import("@/registry/default/example/input-demo")), + files: ["registry/default/example/input-demo.tsx"], + }, + "input-disabled": { + name: "input-disabled", + type: "components:example", + registryDependencies: ["input"], + component: React.lazy(() => import("@/registry/default/example/input-disabled")), + files: ["registry/default/example/input-disabled.tsx"], + }, + "input-file": { + name: "input-file", + type: "components:example", + registryDependencies: ["input"], + component: React.lazy(() => import("@/registry/default/example/input-file")), + files: ["registry/default/example/input-file.tsx"], + }, + "input-form": { + name: "input-form", + type: "components:example", + registryDependencies: ["input","button","form"], + component: React.lazy(() => import("@/registry/default/example/input-form")), + files: ["registry/default/example/input-form.tsx"], + }, + "input-with-button": { + name: "input-with-button", + type: "components:example", + registryDependencies: ["input","button"], + component: React.lazy(() => import("@/registry/default/example/input-with-button")), + files: ["registry/default/example/input-with-button.tsx"], + }, + "input-with-label": { + name: "input-with-label", + type: "components:example", + registryDependencies: ["input","button","label"], + component: React.lazy(() => import("@/registry/default/example/input-with-label")), + files: ["registry/default/example/input-with-label.tsx"], + }, + "input-with-text": { + name: "input-with-text", + type: "components:example", + registryDependencies: ["input","button","label"], + component: React.lazy(() => import("@/registry/default/example/input-with-text")), + files: ["registry/default/example/input-with-text.tsx"], + }, + "label-demo": { + name: "label-demo", + type: "components:example", + registryDependencies: ["label"], + component: React.lazy(() => import("@/registry/default/example/label-demo")), + files: ["registry/default/example/label-demo.tsx"], + }, + "menubar-demo": { + name: "menubar-demo", + type: "components:example", + registryDependencies: ["menubar"], + component: React.lazy(() => import("@/registry/default/example/menubar-demo")), + files: ["registry/default/example/menubar-demo.tsx"], + }, + "navigation-menu-demo": { + name: "navigation-menu-demo", + type: "components:example", + registryDependencies: ["navigation-menu"], + component: React.lazy(() => import("@/registry/default/example/navigation-menu-demo")), + files: ["registry/default/example/navigation-menu-demo.tsx"], + }, + "popover-demo": { + name: "popover-demo", + type: "components:example", + registryDependencies: ["popover"], + component: React.lazy(() => import("@/registry/default/example/popover-demo")), + files: ["registry/default/example/popover-demo.tsx"], + }, + "progress-demo": { + name: "progress-demo", + type: "components:example", + registryDependencies: ["progress"], + component: React.lazy(() => import("@/registry/default/example/progress-demo")), + files: ["registry/default/example/progress-demo.tsx"], + }, + "radio-group-demo": { + name: "radio-group-demo", + type: "components:example", + registryDependencies: ["radio-group"], + component: React.lazy(() => import("@/registry/default/example/radio-group-demo")), + files: ["registry/default/example/radio-group-demo.tsx"], + }, + "radio-group-form": { + name: "radio-group-form", + type: "components:example", + registryDependencies: ["radio-group","form"], + component: React.lazy(() => import("@/registry/default/example/radio-group-form")), + files: ["registry/default/example/radio-group-form.tsx"], + }, + "scroll-area-demo": { + name: "scroll-area-demo", + type: "components:example", + registryDependencies: ["scroll-area"], + component: React.lazy(() => import("@/registry/default/example/scroll-area-demo")), + files: ["registry/default/example/scroll-area-demo.tsx"], + }, + "select-demo": { + name: "select-demo", + type: "components:example", + registryDependencies: ["select"], + component: React.lazy(() => import("@/registry/default/example/select-demo")), + files: ["registry/default/example/select-demo.tsx"], + }, + "select-form": { + name: "select-form", + type: "components:example", + registryDependencies: ["select"], + component: React.lazy(() => import("@/registry/default/example/select-form")), + files: ["registry/default/example/select-form.tsx"], + }, + "separator-demo": { + name: "separator-demo", + type: "components:example", + registryDependencies: ["separator"], + component: React.lazy(() => import("@/registry/default/example/separator-demo")), + files: ["registry/default/example/separator-demo.tsx"], + }, + "sheet-demo": { + name: "sheet-demo", + type: "components:example", + registryDependencies: ["sheet"], + component: React.lazy(() => import("@/registry/default/example/sheet-demo")), + files: ["registry/default/example/sheet-demo.tsx"], + }, + "sheet-side": { + name: "sheet-side", + type: "components:example", + registryDependencies: ["sheet"], + component: React.lazy(() => import("@/registry/default/example/sheet-side")), + files: ["registry/default/example/sheet-side.tsx"], + }, + "skeleton-demo": { + name: "skeleton-demo", + type: "components:example", + registryDependencies: ["skeleton"], + component: React.lazy(() => import("@/registry/default/example/skeleton-demo")), + files: ["registry/default/example/skeleton-demo.tsx"], + }, + "slider-demo": { + name: "slider-demo", + type: "components:example", + registryDependencies: ["slider"], + component: React.lazy(() => import("@/registry/default/example/slider-demo")), + files: ["registry/default/example/slider-demo.tsx"], + }, + "switch-demo": { + name: "switch-demo", + type: "components:example", + registryDependencies: ["switch"], + component: React.lazy(() => import("@/registry/default/example/switch-demo")), + files: ["registry/default/example/switch-demo.tsx"], + }, + "switch-form": { + name: "switch-form", + type: "components:example", + registryDependencies: ["switch","form"], + component: React.lazy(() => import("@/registry/default/example/switch-form")), + files: ["registry/default/example/switch-form.tsx"], + }, + "table-demo": { + name: "table-demo", + type: "components:example", + registryDependencies: ["table"], + component: React.lazy(() => import("@/registry/default/example/table-demo")), + files: ["registry/default/example/table-demo.tsx"], + }, + "tabs-demo": { + name: "tabs-demo", + type: "components:example", + registryDependencies: ["tabs"], + component: React.lazy(() => import("@/registry/default/example/tabs-demo")), + files: ["registry/default/example/tabs-demo.tsx"], + }, + "textarea-demo": { + name: "textarea-demo", + type: "components:example", + registryDependencies: ["textarea"], + component: React.lazy(() => import("@/registry/default/example/textarea-demo")), + files: ["registry/default/example/textarea-demo.tsx"], + }, + "textarea-disabled": { + name: "textarea-disabled", + type: "components:example", + registryDependencies: ["textarea"], + component: React.lazy(() => import("@/registry/default/example/textarea-disabled")), + files: ["registry/default/example/textarea-disabled.tsx"], + }, + "textarea-form": { + name: "textarea-form", + type: "components:example", + registryDependencies: ["textarea","form"], + component: React.lazy(() => import("@/registry/default/example/textarea-form")), + files: ["registry/default/example/textarea-form.tsx"], + }, + "textarea-with-button": { + name: "textarea-with-button", + type: "components:example", + registryDependencies: ["textarea","button"], + component: React.lazy(() => import("@/registry/default/example/textarea-with-button")), + files: ["registry/default/example/textarea-with-button.tsx"], + }, + "textarea-with-label": { + name: "textarea-with-label", + type: "components:example", + registryDependencies: ["textarea","label"], + component: React.lazy(() => import("@/registry/default/example/textarea-with-label")), + files: ["registry/default/example/textarea-with-label.tsx"], + }, + "textarea-with-text": { + name: "textarea-with-text", + type: "components:example", + registryDependencies: ["textarea","label"], + component: React.lazy(() => import("@/registry/default/example/textarea-with-text")), + files: ["registry/default/example/textarea-with-text.tsx"], + }, + "toast-demo": { + name: "toast-demo", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/default/example/toast-demo")), + files: ["registry/default/example/toast-demo.tsx"], + }, + "toast-destructive": { + name: "toast-destructive", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/default/example/toast-destructive")), + files: ["registry/default/example/toast-destructive.tsx"], + }, + "toast-simple": { + name: "toast-simple", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/default/example/toast-simple")), + files: ["registry/default/example/toast-simple.tsx"], + }, + "toast-with-action": { + name: "toast-with-action", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/default/example/toast-with-action")), + files: ["registry/default/example/toast-with-action.tsx"], + }, + "toast-with-title": { + name: "toast-with-title", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/default/example/toast-with-title")), + files: ["registry/default/example/toast-with-title.tsx"], + }, + "toggle-demo": { + name: "toggle-demo", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/default/example/toggle-demo")), + files: ["registry/default/example/toggle-demo.tsx"], + }, + "toggle-disabled": { + name: "toggle-disabled", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/default/example/toggle-disabled")), + files: ["registry/default/example/toggle-disabled.tsx"], + }, + "toggle-lg": { + name: "toggle-lg", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/default/example/toggle-lg")), + files: ["registry/default/example/toggle-lg.tsx"], + }, + "toggle-outline": { + name: "toggle-outline", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/default/example/toggle-outline")), + files: ["registry/default/example/toggle-outline.tsx"], + }, + "toggle-sm": { + name: "toggle-sm", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/default/example/toggle-sm")), + files: ["registry/default/example/toggle-sm.tsx"], + }, + "toggle-with-text": { + name: "toggle-with-text", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/default/example/toggle-with-text")), + files: ["registry/default/example/toggle-with-text.tsx"], + }, + "tooltip-demo": { + name: "tooltip-demo", + type: "components:example", + registryDependencies: ["tooltip"], + component: React.lazy(() => import("@/registry/default/example/tooltip-demo")), + files: ["registry/default/example/tooltip-demo.tsx"], + }, + "typography-blockquote": { + name: "typography-blockquote", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-blockquote")), + files: ["registry/default/example/typography-blockquote.tsx"], + }, + "typography-demo": { + name: "typography-demo", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-demo")), + files: ["registry/default/example/typography-demo.tsx"], + }, + "typography-h1": { + name: "typography-h1", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-h1")), + files: ["registry/default/example/typography-h1.tsx"], + }, + "typography-h2": { + name: "typography-h2", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-h2")), + files: ["registry/default/example/typography-h2.tsx"], + }, + "typography-h3": { + name: "typography-h3", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-h3")), + files: ["registry/default/example/typography-h3.tsx"], + }, + "typography-h4": { + name: "typography-h4", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-h4")), + files: ["registry/default/example/typography-h4.tsx"], + }, + "typography-inline-code": { + name: "typography-inline-code", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-inline-code")), + files: ["registry/default/example/typography-inline-code.tsx"], + }, + "typography-large": { + name: "typography-large", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-large")), + files: ["registry/default/example/typography-large.tsx"], + }, + "typography-lead": { + name: "typography-lead", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-lead")), + files: ["registry/default/example/typography-lead.tsx"], + }, + "typography-list": { + name: "typography-list", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-list")), + files: ["registry/default/example/typography-list.tsx"], + }, + "typography-muted": { + name: "typography-muted", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-muted")), + files: ["registry/default/example/typography-muted.tsx"], + }, + "typography-p": { + name: "typography-p", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-p")), + files: ["registry/default/example/typography-p.tsx"], + }, + "typography-small": { + name: "typography-small", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-small")), + files: ["registry/default/example/typography-small.tsx"], + }, + "typography-table": { + name: "typography-table", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-table")), + files: ["registry/default/example/typography-table.tsx"], + }, + "mode-toggle": { + name: "mode-toggle", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/mode-toggle")), + files: ["registry/default/example/mode-toggle.tsx"], + }, + }, "new-york": { + "accordion-demo": { + name: "accordion-demo", + type: "components:example", + registryDependencies: ["accordion"], + component: React.lazy(() => import("@/registry/new-york/example/accordion-demo")), + files: ["registry/new-york/example/accordion-demo.tsx"], + }, + "alert-demo": { + name: "alert-demo", + type: "components:example", + registryDependencies: ["alert"], + component: React.lazy(() => import("@/registry/new-york/example/alert-demo")), + files: ["registry/new-york/example/alert-demo.tsx"], + }, + "alert-destructive": { + name: "alert-destructive", + type: "components:example", + registryDependencies: ["alert"], + component: React.lazy(() => import("@/registry/new-york/example/alert-destructive")), + files: ["registry/new-york/example/alert-destructive.tsx"], + }, + "alert-dialog-demo": { + name: "alert-dialog-demo", + type: "components:example", + registryDependencies: ["alert-dialog","button"], + component: React.lazy(() => import("@/registry/new-york/example/alert-dialog-demo")), + files: ["registry/new-york/example/alert-dialog-demo.tsx"], + }, + "aspect-ratio-demo": { + name: "aspect-ratio-demo", + type: "components:example", + registryDependencies: ["aspect-ratio"], + component: React.lazy(() => import("@/registry/new-york/example/aspect-ratio-demo")), + files: ["registry/new-york/example/aspect-ratio-demo.tsx"], + }, + "avatar-demo": { + name: "avatar-demo", + type: "components:example", + registryDependencies: ["avatar"], + component: React.lazy(() => import("@/registry/new-york/example/avatar-demo")), + files: ["registry/new-york/example/avatar-demo.tsx"], + }, + "badge-demo": { + name: "badge-demo", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/new-york/example/badge-demo")), + files: ["registry/new-york/example/badge-demo.tsx"], + }, + "badge-destructive": { + name: "badge-destructive", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/new-york/example/badge-destructive")), + files: ["registry/new-york/example/badge-destructive.tsx"], + }, + "badge-outline": { + name: "badge-outline", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/new-york/example/badge-outline")), + files: ["registry/new-york/example/badge-outline.tsx"], + }, + "badge-secondary": { + name: "badge-secondary", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/new-york/example/badge-secondary")), + files: ["registry/new-york/example/badge-secondary.tsx"], + }, + "button-demo": { + name: "button-demo", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-demo")), + files: ["registry/new-york/example/button-demo.tsx"], + }, + "button-secondary": { + name: "button-secondary", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-secondary")), + files: ["registry/new-york/example/button-secondary.tsx"], + }, + "button-destructive": { + name: "button-destructive", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-destructive")), + files: ["registry/new-york/example/button-destructive.tsx"], + }, + "button-outline": { + name: "button-outline", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-outline")), + files: ["registry/new-york/example/button-outline.tsx"], + }, + "button-ghost": { + name: "button-ghost", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-ghost")), + files: ["registry/new-york/example/button-ghost.tsx"], + }, + "button-link": { + name: "button-link", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-link")), + files: ["registry/new-york/example/button-link.tsx"], + }, + "button-with-icon": { + name: "button-with-icon", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-with-icon")), + files: ["registry/new-york/example/button-with-icon.tsx"], + }, + "button-loading": { + name: "button-loading", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-loading")), + files: ["registry/new-york/example/button-loading.tsx"], + }, + "button-icon": { + name: "button-icon", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-icon")), + files: ["registry/new-york/example/button-icon.tsx"], + }, + "button-as-child": { + name: "button-as-child", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-as-child")), + files: ["registry/new-york/example/button-as-child.tsx"], + }, + "calendar-demo": { + name: "calendar-demo", + type: "components:example", + registryDependencies: ["calendar"], + component: React.lazy(() => import("@/registry/new-york/example/calendar-demo")), + files: ["registry/new-york/example/calendar-demo.tsx"], + }, + "calendar-form": { + name: "calendar-form", + type: "components:example", + registryDependencies: ["calendar","form","popover"], + component: React.lazy(() => import("@/registry/new-york/example/calendar-form")), + files: ["registry/new-york/example/calendar-form.tsx"], + }, + "card-demo": { + name: "card-demo", + type: "components:example", + registryDependencies: ["card","button","switch"], + component: React.lazy(() => import("@/registry/new-york/example/card-demo")), + files: ["registry/new-york/example/card-demo.tsx"], + }, + "card-with-form": { + name: "card-with-form", + type: "components:example", + registryDependencies: ["button","card","input","label","select"], + component: React.lazy(() => import("@/registry/new-york/example/card-with-form")), + files: ["registry/new-york/example/card-with-form.tsx"], + }, + "checkbox-demo": { + name: "checkbox-demo", + type: "components:example", + registryDependencies: ["checkbox"], + component: React.lazy(() => import("@/registry/new-york/example/checkbox-demo")), + files: ["registry/new-york/example/checkbox-demo.tsx"], + }, + "checkbox-disabled": { + name: "checkbox-disabled", + type: "components:example", + registryDependencies: ["checkbox"], + component: React.lazy(() => import("@/registry/new-york/example/checkbox-disabled")), + files: ["registry/new-york/example/checkbox-disabled.tsx"], + }, + "checkbox-form-multiple": { + name: "checkbox-form-multiple", + type: "components:example", + registryDependencies: ["checkbox","form"], + component: React.lazy(() => import("@/registry/new-york/example/checkbox-form-multiple")), + files: ["registry/new-york/example/checkbox-form-multiple.tsx"], + }, + "checkbox-form-single": { + name: "checkbox-form-single", + type: "components:example", + registryDependencies: ["checkbox","form"], + component: React.lazy(() => import("@/registry/new-york/example/checkbox-form-single")), + files: ["registry/new-york/example/checkbox-form-single.tsx"], + }, + "checkbox-with-text": { + name: "checkbox-with-text", + type: "components:example", + registryDependencies: ["checkbox"], + component: React.lazy(() => import("@/registry/new-york/example/checkbox-with-text")), + files: ["registry/new-york/example/checkbox-with-text.tsx"], + }, + "collapsible-demo": { + name: "collapsible-demo", + type: "components:example", + registryDependencies: ["collapsible"], + component: React.lazy(() => import("@/registry/new-york/example/collapsible-demo")), + files: ["registry/new-york/example/collapsible-demo.tsx"], + }, + "combobox-demo": { + name: "combobox-demo", + type: "components:example", + registryDependencies: ["command"], + component: React.lazy(() => import("@/registry/new-york/example/combobox-demo")), + files: ["registry/new-york/example/combobox-demo.tsx"], + }, + "combobox-dropdown-menu": { + name: "combobox-dropdown-menu", + type: "components:example", + registryDependencies: ["command","dropdown-menu","button"], + component: React.lazy(() => import("@/registry/new-york/example/combobox-dropdown-menu")), + files: ["registry/new-york/example/combobox-dropdown-menu.tsx"], + }, + "combobox-form": { + name: "combobox-form", + type: "components:example", + registryDependencies: ["command","form"], + component: React.lazy(() => import("@/registry/new-york/example/combobox-form")), + files: ["registry/new-york/example/combobox-form.tsx"], + }, + "combobox-popover": { + name: "combobox-popover", + type: "components:example", + registryDependencies: ["combobox","popover"], + component: React.lazy(() => import("@/registry/new-york/example/combobox-popover")), + files: ["registry/new-york/example/combobox-popover.tsx"], + }, + "command-demo": { + name: "command-demo", + type: "components:example", + registryDependencies: ["command"], + component: React.lazy(() => import("@/registry/new-york/example/command-demo")), + files: ["registry/new-york/example/command-demo.tsx"], + }, + "command-dialog": { + name: "command-dialog", + type: "components:example", + registryDependencies: ["command","dialog"], + component: React.lazy(() => import("@/registry/new-york/example/command-dialog")), + files: ["registry/new-york/example/command-dialog.tsx"], + }, + "context-menu-demo": { + name: "context-menu-demo", + type: "components:example", + registryDependencies: ["context-menu"], + component: React.lazy(() => import("@/registry/new-york/example/context-menu-demo")), + files: ["registry/new-york/example/context-menu-demo.tsx"], + }, + "data-table-demo": { + name: "data-table-demo", + type: "components:example", + registryDependencies: ["data-table"], + component: React.lazy(() => import("@/registry/new-york/example/data-table-demo")), + files: ["registry/new-york/example/data-table-demo.tsx"], + }, + "date-picker-demo": { + name: "date-picker-demo", + type: "components:example", + registryDependencies: ["button","calendar","popover"], + component: React.lazy(() => import("@/registry/new-york/example/date-picker-demo")), + files: ["registry/new-york/example/date-picker-demo.tsx"], + }, + "date-picker-form": { + name: "date-picker-form", + type: "components:example", + registryDependencies: ["button","calendar","form","popover"], + component: React.lazy(() => import("@/registry/new-york/example/date-picker-form")), + files: ["registry/new-york/example/date-picker-form.tsx"], + }, + "date-picker-with-presets": { + name: "date-picker-with-presets", + type: "components:example", + registryDependencies: ["button","calendar","popover","select"], + component: React.lazy(() => import("@/registry/new-york/example/date-picker-with-presets")), + files: ["registry/new-york/example/date-picker-with-presets.tsx"], + }, + "date-picker-with-range": { + name: "date-picker-with-range", + type: "components:example", + registryDependencies: ["button","calendar","popover"], + component: React.lazy(() => import("@/registry/new-york/example/date-picker-with-range")), + files: ["registry/new-york/example/date-picker-with-range.tsx"], + }, + "dialog-demo": { + name: "dialog-demo", + type: "components:example", + registryDependencies: ["dialog"], + component: React.lazy(() => import("@/registry/new-york/example/dialog-demo")), + files: ["registry/new-york/example/dialog-demo.tsx"], + }, + "dropdown-menu-demo": { + name: "dropdown-menu-demo", + type: "components:example", + registryDependencies: ["dropdown-menu"], + component: React.lazy(() => import("@/registry/new-york/example/dropdown-menu-demo")), + files: ["registry/new-york/example/dropdown-menu-demo.tsx"], + }, + "dropdown-menu-checkboxes": { + name: "dropdown-menu-checkboxes", + type: "components:example", + registryDependencies: ["dropdown-menu","checkbox"], + component: React.lazy(() => import("@/registry/new-york/example/dropdown-menu-checkboxes")), + files: ["registry/new-york/example/dropdown-menu-checkboxes.tsx"], + }, + "dropdown-menu-radio-group": { + name: "dropdown-menu-radio-group", + type: "components:example", + registryDependencies: ["dropdown-menu","radio-group"], + component: React.lazy(() => import("@/registry/new-york/example/dropdown-menu-radio-group")), + files: ["registry/new-york/example/dropdown-menu-radio-group.tsx"], + }, + "hover-card-demo": { + name: "hover-card-demo", + type: "components:example", + registryDependencies: ["hover-card"], + component: React.lazy(() => import("@/registry/new-york/example/hover-card-demo")), + files: ["registry/new-york/example/hover-card-demo.tsx"], + }, + "input-demo": { + name: "input-demo", + type: "components:example", + registryDependencies: ["input"], + component: React.lazy(() => import("@/registry/new-york/example/input-demo")), + files: ["registry/new-york/example/input-demo.tsx"], + }, + "input-disabled": { + name: "input-disabled", + type: "components:example", + registryDependencies: ["input"], + component: React.lazy(() => import("@/registry/new-york/example/input-disabled")), + files: ["registry/new-york/example/input-disabled.tsx"], + }, + "input-file": { + name: "input-file", + type: "components:example", + registryDependencies: ["input"], + component: React.lazy(() => import("@/registry/new-york/example/input-file")), + files: ["registry/new-york/example/input-file.tsx"], + }, + "input-form": { + name: "input-form", + type: "components:example", + registryDependencies: ["input","button","form"], + component: React.lazy(() => import("@/registry/new-york/example/input-form")), + files: ["registry/new-york/example/input-form.tsx"], + }, + "input-with-button": { + name: "input-with-button", + type: "components:example", + registryDependencies: ["input","button"], + component: React.lazy(() => import("@/registry/new-york/example/input-with-button")), + files: ["registry/new-york/example/input-with-button.tsx"], + }, + "input-with-label": { + name: "input-with-label", + type: "components:example", + registryDependencies: ["input","button","label"], + component: React.lazy(() => import("@/registry/new-york/example/input-with-label")), + files: ["registry/new-york/example/input-with-label.tsx"], + }, + "input-with-text": { + name: "input-with-text", + type: "components:example", + registryDependencies: ["input","button","label"], + component: React.lazy(() => import("@/registry/new-york/example/input-with-text")), + files: ["registry/new-york/example/input-with-text.tsx"], + }, + "label-demo": { + name: "label-demo", + type: "components:example", + registryDependencies: ["label"], + component: React.lazy(() => import("@/registry/new-york/example/label-demo")), + files: ["registry/new-york/example/label-demo.tsx"], + }, + "menubar-demo": { + name: "menubar-demo", + type: "components:example", + registryDependencies: ["menubar"], + component: React.lazy(() => import("@/registry/new-york/example/menubar-demo")), + files: ["registry/new-york/example/menubar-demo.tsx"], + }, + "navigation-menu-demo": { + name: "navigation-menu-demo", + type: "components:example", + registryDependencies: ["navigation-menu"], + component: React.lazy(() => import("@/registry/new-york/example/navigation-menu-demo")), + files: ["registry/new-york/example/navigation-menu-demo.tsx"], + }, + "popover-demo": { + name: "popover-demo", + type: "components:example", + registryDependencies: ["popover"], + component: React.lazy(() => import("@/registry/new-york/example/popover-demo")), + files: ["registry/new-york/example/popover-demo.tsx"], + }, + "progress-demo": { + name: "progress-demo", + type: "components:example", + registryDependencies: ["progress"], + component: React.lazy(() => import("@/registry/new-york/example/progress-demo")), + files: ["registry/new-york/example/progress-demo.tsx"], + }, + "radio-group-demo": { + name: "radio-group-demo", + type: "components:example", + registryDependencies: ["radio-group"], + component: React.lazy(() => import("@/registry/new-york/example/radio-group-demo")), + files: ["registry/new-york/example/radio-group-demo.tsx"], + }, + "radio-group-form": { + name: "radio-group-form", + type: "components:example", + registryDependencies: ["radio-group","form"], + component: React.lazy(() => import("@/registry/new-york/example/radio-group-form")), + files: ["registry/new-york/example/radio-group-form.tsx"], + }, + "scroll-area-demo": { + name: "scroll-area-demo", + type: "components:example", + registryDependencies: ["scroll-area"], + component: React.lazy(() => import("@/registry/new-york/example/scroll-area-demo")), + files: ["registry/new-york/example/scroll-area-demo.tsx"], + }, + "select-demo": { + name: "select-demo", + type: "components:example", + registryDependencies: ["select"], + component: React.lazy(() => import("@/registry/new-york/example/select-demo")), + files: ["registry/new-york/example/select-demo.tsx"], + }, + "select-form": { + name: "select-form", + type: "components:example", + registryDependencies: ["select"], + component: React.lazy(() => import("@/registry/new-york/example/select-form")), + files: ["registry/new-york/example/select-form.tsx"], + }, + "separator-demo": { + name: "separator-demo", + type: "components:example", + registryDependencies: ["separator"], + component: React.lazy(() => import("@/registry/new-york/example/separator-demo")), + files: ["registry/new-york/example/separator-demo.tsx"], + }, + "sheet-demo": { + name: "sheet-demo", + type: "components:example", + registryDependencies: ["sheet"], + component: React.lazy(() => import("@/registry/new-york/example/sheet-demo")), + files: ["registry/new-york/example/sheet-demo.tsx"], + }, + "sheet-side": { + name: "sheet-side", + type: "components:example", + registryDependencies: ["sheet"], + component: React.lazy(() => import("@/registry/new-york/example/sheet-side")), + files: ["registry/new-york/example/sheet-side.tsx"], + }, + "skeleton-demo": { + name: "skeleton-demo", + type: "components:example", + registryDependencies: ["skeleton"], + component: React.lazy(() => import("@/registry/new-york/example/skeleton-demo")), + files: ["registry/new-york/example/skeleton-demo.tsx"], + }, + "slider-demo": { + name: "slider-demo", + type: "components:example", + registryDependencies: ["slider"], + component: React.lazy(() => import("@/registry/new-york/example/slider-demo")), + files: ["registry/new-york/example/slider-demo.tsx"], + }, + "switch-demo": { + name: "switch-demo", + type: "components:example", + registryDependencies: ["switch"], + component: React.lazy(() => import("@/registry/new-york/example/switch-demo")), + files: ["registry/new-york/example/switch-demo.tsx"], + }, + "switch-form": { + name: "switch-form", + type: "components:example", + registryDependencies: ["switch","form"], + component: React.lazy(() => import("@/registry/new-york/example/switch-form")), + files: ["registry/new-york/example/switch-form.tsx"], + }, + "table-demo": { + name: "table-demo", + type: "components:example", + registryDependencies: ["table"], + component: React.lazy(() => import("@/registry/new-york/example/table-demo")), + files: ["registry/new-york/example/table-demo.tsx"], + }, + "tabs-demo": { + name: "tabs-demo", + type: "components:example", + registryDependencies: ["tabs"], + component: React.lazy(() => import("@/registry/new-york/example/tabs-demo")), + files: ["registry/new-york/example/tabs-demo.tsx"], + }, + "textarea-demo": { + name: "textarea-demo", + type: "components:example", + registryDependencies: ["textarea"], + component: React.lazy(() => import("@/registry/new-york/example/textarea-demo")), + files: ["registry/new-york/example/textarea-demo.tsx"], + }, + "textarea-disabled": { + name: "textarea-disabled", + type: "components:example", + registryDependencies: ["textarea"], + component: React.lazy(() => import("@/registry/new-york/example/textarea-disabled")), + files: ["registry/new-york/example/textarea-disabled.tsx"], + }, + "textarea-form": { + name: "textarea-form", + type: "components:example", + registryDependencies: ["textarea","form"], + component: React.lazy(() => import("@/registry/new-york/example/textarea-form")), + files: ["registry/new-york/example/textarea-form.tsx"], + }, + "textarea-with-button": { + name: "textarea-with-button", + type: "components:example", + registryDependencies: ["textarea","button"], + component: React.lazy(() => import("@/registry/new-york/example/textarea-with-button")), + files: ["registry/new-york/example/textarea-with-button.tsx"], + }, + "textarea-with-label": { + name: "textarea-with-label", + type: "components:example", + registryDependencies: ["textarea","label"], + component: React.lazy(() => import("@/registry/new-york/example/textarea-with-label")), + files: ["registry/new-york/example/textarea-with-label.tsx"], + }, + "textarea-with-text": { + name: "textarea-with-text", + type: "components:example", + registryDependencies: ["textarea","label"], + component: React.lazy(() => import("@/registry/new-york/example/textarea-with-text")), + files: ["registry/new-york/example/textarea-with-text.tsx"], + }, + "toast-demo": { + name: "toast-demo", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/new-york/example/toast-demo")), + files: ["registry/new-york/example/toast-demo.tsx"], + }, + "toast-destructive": { + name: "toast-destructive", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/new-york/example/toast-destructive")), + files: ["registry/new-york/example/toast-destructive.tsx"], + }, + "toast-simple": { + name: "toast-simple", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/new-york/example/toast-simple")), + files: ["registry/new-york/example/toast-simple.tsx"], + }, + "toast-with-action": { + name: "toast-with-action", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/new-york/example/toast-with-action")), + files: ["registry/new-york/example/toast-with-action.tsx"], + }, + "toast-with-title": { + name: "toast-with-title", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/new-york/example/toast-with-title")), + files: ["registry/new-york/example/toast-with-title.tsx"], + }, + "toggle-demo": { + name: "toggle-demo", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/new-york/example/toggle-demo")), + files: ["registry/new-york/example/toggle-demo.tsx"], + }, + "toggle-disabled": { + name: "toggle-disabled", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/new-york/example/toggle-disabled")), + files: ["registry/new-york/example/toggle-disabled.tsx"], + }, + "toggle-lg": { + name: "toggle-lg", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/new-york/example/toggle-lg")), + files: ["registry/new-york/example/toggle-lg.tsx"], + }, + "toggle-outline": { + name: "toggle-outline", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/new-york/example/toggle-outline")), + files: ["registry/new-york/example/toggle-outline.tsx"], + }, + "toggle-sm": { + name: "toggle-sm", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/new-york/example/toggle-sm")), + files: ["registry/new-york/example/toggle-sm.tsx"], + }, + "toggle-with-text": { + name: "toggle-with-text", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/new-york/example/toggle-with-text")), + files: ["registry/new-york/example/toggle-with-text.tsx"], + }, + "tooltip-demo": { + name: "tooltip-demo", + type: "components:example", + registryDependencies: ["tooltip"], + component: React.lazy(() => import("@/registry/new-york/example/tooltip-demo")), + files: ["registry/new-york/example/tooltip-demo.tsx"], + }, + "typography-blockquote": { + name: "typography-blockquote", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-blockquote")), + files: ["registry/new-york/example/typography-blockquote.tsx"], + }, + "typography-demo": { + name: "typography-demo", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-demo")), + files: ["registry/new-york/example/typography-demo.tsx"], + }, + "typography-h1": { + name: "typography-h1", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-h1")), + files: ["registry/new-york/example/typography-h1.tsx"], + }, + "typography-h2": { + name: "typography-h2", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-h2")), + files: ["registry/new-york/example/typography-h2.tsx"], + }, + "typography-h3": { + name: "typography-h3", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-h3")), + files: ["registry/new-york/example/typography-h3.tsx"], + }, + "typography-h4": { + name: "typography-h4", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-h4")), + files: ["registry/new-york/example/typography-h4.tsx"], + }, + "typography-inline-code": { + name: "typography-inline-code", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-inline-code")), + files: ["registry/new-york/example/typography-inline-code.tsx"], + }, + "typography-large": { + name: "typography-large", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-large")), + files: ["registry/new-york/example/typography-large.tsx"], + }, + "typography-lead": { + name: "typography-lead", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-lead")), + files: ["registry/new-york/example/typography-lead.tsx"], + }, + "typography-list": { + name: "typography-list", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-list")), + files: ["registry/new-york/example/typography-list.tsx"], + }, + "typography-muted": { + name: "typography-muted", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-muted")), + files: ["registry/new-york/example/typography-muted.tsx"], + }, + "typography-p": { + name: "typography-p", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-p")), + files: ["registry/new-york/example/typography-p.tsx"], + }, + "typography-small": { + name: "typography-small", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-small")), + files: ["registry/new-york/example/typography-small.tsx"], + }, + "typography-table": { + name: "typography-table", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-table")), + files: ["registry/new-york/example/typography-table.tsx"], + }, + "mode-toggle": { + name: "mode-toggle", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/mode-toggle")), + files: ["registry/new-york/example/mode-toggle.tsx"], + }, + }, +} diff --git a/apps/www/app/docs/[[...slug]]/page.tsx b/apps/www/app/docs/[[...slug]]/page.tsx index 9c4f9cfe8..a7806347b 100644 --- a/apps/www/app/docs/[[...slug]]/page.tsx +++ b/apps/www/app/docs/[[...slug]]/page.tsx @@ -10,13 +10,13 @@ import Balancer from "react-wrap-balancer" import { siteConfig } from "@/config/site" import { getTableOfContents } from "@/lib/toc" import { absoluteUrl, cn } from "@/lib/utils" -import { badgeVariants } from "@/components/ui/badge" -import { ScrollArea } from "@/components/ui/scroll-area" -import { Separator } from "@/components/ui/separator" import { Icons } from "@/components/icons" import { Mdx } from "@/components/mdx-components" import { DocsPager } from "@/components/pager" import { DashboardTableOfContents } from "@/components/toc" +import { badgeVariants } from "@/registry/new-york/ui/badge" +import { ScrollArea } from "@/registry/new-york/ui/scroll-area" +import { Separator } from "@/registry/new-york/ui/separator" interface DocPageProps { params: { @@ -133,18 +133,20 @@ export default async function DocPage({ params }: DocPageProps) { )} ) : null} - - - +
+ +
-
-
- - - + {doc.toc && ( +
+
+ + + +
-
+ )} ) } diff --git a/apps/www/app/docs/layout.tsx b/apps/www/app/docs/layout.tsx index 57a4cb79d..7168fce1a 100644 --- a/apps/www/app/docs/layout.tsx +++ b/apps/www/app/docs/layout.tsx @@ -1,6 +1,6 @@ import { docsConfig } from "@/config/docs" -import { ScrollArea } from "@/components/ui/scroll-area" import { DocsSidebarNav } from "@/components/sidebar-nav" +import { ScrollArea } from "@/registry/new-york/ui/scroll-area" interface DocsLayoutProps { children: React.ReactNode @@ -8,13 +8,15 @@ interface DocsLayoutProps { export default function DocsLayout({ children }: DocsLayoutProps) { return ( -
- - {children} +
+
+ + {children} +
) } diff --git a/apps/www/app/examples/authentication/components/user-auth-form.tsx b/apps/www/app/examples/authentication/components/user-auth-form.tsx index 816d48971..728e16ca2 100644 --- a/apps/www/app/examples/authentication/components/user-auth-form.tsx +++ b/apps/www/app/examples/authentication/components/user-auth-form.tsx @@ -3,10 +3,10 @@ import * as React from "react" import { cn } from "@/lib/utils" -import { Button } from "@/components/ui/button" -import { Input } from "@/components/ui/input" -import { Label } from "@/components/ui/label" import { Icons } from "@/components/icons" +import { Button } from "@/registry/new-york/ui/button" +import { Input } from "@/registry/new-york/ui/input" +import { Label } from "@/registry/new-york/ui/label" interface UserAuthFormProps extends React.HTMLAttributes {} diff --git a/apps/www/app/examples/authentication/page.tsx b/apps/www/app/examples/authentication/page.tsx index b9e90111d..3207e14c6 100644 --- a/apps/www/app/examples/authentication/page.tsx +++ b/apps/www/app/examples/authentication/page.tsx @@ -4,7 +4,7 @@ import Link from "next/link" import { Command } from "lucide-react" import { cn } from "@/lib/utils" -import { buttonVariants } from "@/components/ui/button" +import { buttonVariants } from "@/registry/new-york/ui/button" import { UserAuthForm } from "@/app/examples/authentication/components/user-auth-form" export const metadata: Metadata = { @@ -35,20 +35,14 @@ export default function AuthenticationPage() { Login
-
+
Acme Inc
@@ -57,7 +51,7 @@ export default function AuthenticationPage() {

“This library has saved me countless hours of work and helped me deliver stunning designs to my clients faster than - ever before. Highly recommended!” + ever before.”

Sofia Davis
diff --git a/apps/www/app/examples/cards/components/cookie-settings.tsx b/apps/www/app/examples/cards/components/cookie-settings.tsx index a186e2670..e23dd8ba5 100644 --- a/apps/www/app/examples/cards/components/cookie-settings.tsx +++ b/apps/www/app/examples/cards/components/cookie-settings.tsx @@ -1,6 +1,6 @@ "use client" -import { Button } from "@/components/ui/button" +import { Button } from "@/registry/new-york/ui/button" import { Card, CardContent, @@ -8,9 +8,9 @@ import { CardFooter, CardHeader, CardTitle, -} from "@/components/ui/card" -import { Label } from "@/components/ui/label" -import { Switch } from "@/components/ui/switch" +} from "@/registry/new-york/ui/card" +import { Label } from "@/registry/new-york/ui/label" +import { Switch } from "@/registry/new-york/ui/switch" export function DemoCookieSettings() { return ( diff --git a/apps/www/app/examples/cards/components/create-account.tsx b/apps/www/app/examples/cards/components/create-account.tsx index 11709b672..95c11c53f 100644 --- a/apps/www/app/examples/cards/components/create-account.tsx +++ b/apps/www/app/examples/cards/components/create-account.tsx @@ -1,6 +1,7 @@ "use client" -import { Button } from "@/components/ui/button" +import { Icons } from "@/components/icons" +import { Button } from "@/registry/new-york/ui/button" import { Card, CardContent, @@ -8,10 +9,9 @@ import { CardFooter, CardHeader, CardTitle, -} from "@/components/ui/card" -import { Input } from "@/components/ui/input" -import { Label } from "@/components/ui/label" -import { Icons } from "@/components/icons" +} from "@/registry/new-york/ui/card" +import { Input } from "@/registry/new-york/ui/input" +import { Label } from "@/registry/new-york/ui/label" export function DemoCreateAccount() { return ( diff --git a/apps/www/app/examples/cards/components/date-picker.tsx b/apps/www/app/examples/cards/components/date-picker.tsx index 3b5ba51ff..124c13a1e 100644 --- a/apps/www/app/examples/cards/components/date-picker.tsx +++ b/apps/www/app/examples/cards/components/date-picker.tsx @@ -1,6 +1,6 @@ -import { Card, CardContent } from "@/components/ui/card" -import { Label } from "@/components/ui/label" -import { DatePickerWithRange } from "@/components/examples/date-picker/with-range" +import DatePickerWithRange from "@/registry/default/example/date-picker-with-range" +import { Card, CardContent } from "@/registry/new-york/ui/card" +import { Label } from "@/registry/new-york/ui/label" export function DemoDatePicker() { return ( diff --git a/apps/www/app/examples/cards/components/github-card.tsx b/apps/www/app/examples/cards/components/github-card.tsx index ef686bb0f..453ac763c 100644 --- a/apps/www/app/examples/cards/components/github-card.tsx +++ b/apps/www/app/examples/cards/components/github-card.tsx @@ -1,13 +1,13 @@ import { ChevronDown, Circle, Plus, Star } from "lucide-react" -import { Button } from "@/components/ui/button" +import { Button } from "@/registry/new-york/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle, -} from "@/components/ui/card" +} from "@/registry/new-york/ui/card" import { DropdownMenu, DropdownMenuCheckboxItem, @@ -16,8 +16,8 @@ import { DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, -} from "@/components/ui/dropdown-menu" -import { Separator } from "@/components/ui/separator" +} from "@/registry/new-york/ui/dropdown-menu" +import { Separator } from "@/registry/new-york/ui/separator" export function DemoGithub() { return ( @@ -71,7 +71,7 @@ export function DemoGithub() {
- 10k + 20k
Updated April 2023
diff --git a/apps/www/app/examples/cards/components/notifications.tsx b/apps/www/app/examples/cards/components/notifications.tsx index 8615f93cf..c2204c069 100644 --- a/apps/www/app/examples/cards/components/notifications.tsx +++ b/apps/www/app/examples/cards/components/notifications.tsx @@ -6,20 +6,20 @@ import { CardDescription, CardHeader, CardTitle, -} from "@/components/ui/card" +} from "@/registry/new-york/ui/card" export function DemoNotifications() { return ( - + Notifications Choose what you want to be notified about. - -
- + +
+

Everything

@@ -27,8 +27,8 @@ export function DemoNotifications() {

-
- +
+

Available

@@ -36,8 +36,8 @@ export function DemoNotifications() {

-
- +
+

Ignoring

diff --git a/apps/www/app/examples/cards/components/payment-method.tsx b/apps/www/app/examples/cards/components/payment-method.tsx index aa489510c..1a2522234 100644 --- a/apps/www/app/examples/cards/components/payment-method.tsx +++ b/apps/www/app/examples/cards/components/payment-method.tsx @@ -1,6 +1,7 @@ import { CreditCard } from "lucide-react" -import { Button } from "@/components/ui/button" +import { Icons } from "@/components/icons" +import { Button } from "@/registry/new-york/ui/button" import { Card, CardContent, @@ -8,18 +9,17 @@ import { CardFooter, CardHeader, CardTitle, -} from "@/components/ui/card" -import { Input } from "@/components/ui/input" -import { Label } from "@/components/ui/label" -import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" +} from "@/registry/new-york/ui/card" +import { Input } from "@/registry/new-york/ui/input" +import { Label } from "@/registry/new-york/ui/label" +import { RadioGroup, RadioGroupItem } from "@/registry/new-york/ui/radio-group" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, -} from "@/components/ui/select" -import { Icons } from "@/components/icons" +} from "@/registry/new-york/ui/select" export function DemoPaymentMethod() { return ( diff --git a/apps/www/app/examples/cards/components/report-an-issue.tsx b/apps/www/app/examples/cards/components/report-an-issue.tsx index bd8bf87fa..5da6206a3 100644 --- a/apps/www/app/examples/cards/components/report-an-issue.tsx +++ b/apps/www/app/examples/cards/components/report-an-issue.tsx @@ -1,6 +1,6 @@ "use client" -import { Button } from "@/components/ui/button" +import { Button } from "@/registry/new-york/ui/button" import { Card, CardContent, @@ -8,17 +8,17 @@ import { CardFooter, CardHeader, CardTitle, -} from "@/components/ui/card" -import { Input } from "@/components/ui/input" -import { Label } from "@/components/ui/label" +} from "@/registry/new-york/ui/card" +import { Input } from "@/registry/new-york/ui/input" +import { Label } from "@/registry/new-york/ui/label" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, -} from "@/components/ui/select" -import { Textarea } from "@/components/ui/textarea" +} from "@/registry/new-york/ui/select" +import { Textarea } from "@/registry/new-york/ui/textarea" export function DemoReportAnIssue() { return ( diff --git a/apps/www/app/examples/cards/components/share-document.tsx b/apps/www/app/examples/cards/components/share-document.tsx index 1ad8fe177..fb599c789 100644 --- a/apps/www/app/examples/cards/components/share-document.tsx +++ b/apps/www/app/examples/cards/components/share-document.tsx @@ -1,23 +1,27 @@ "use client" -import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" -import { Button } from "@/components/ui/button" +import { + Avatar, + AvatarFallback, + AvatarImage, +} from "@/registry/new-york/ui/avatar" +import { Button } from "@/registry/new-york/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle, -} from "@/components/ui/card" -import { Input } from "@/components/ui/input" +} from "@/registry/new-york/ui/card" +import { Input } from "@/registry/new-york/ui/input" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, -} from "@/components/ui/select" -import { Separator } from "@/components/ui/separator" +} from "@/registry/new-york/ui/select" +import { Separator } from "@/registry/new-york/ui/separator" export function DemoShareDocument() { return ( diff --git a/apps/www/app/examples/cards/components/team-members.tsx b/apps/www/app/examples/cards/components/team-members.tsx index 4ad8a103f..d9e179877 100644 --- a/apps/www/app/examples/cards/components/team-members.tsx +++ b/apps/www/app/examples/cards/components/team-members.tsx @@ -1,14 +1,18 @@ import { ChevronDown } from "lucide-react" -import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" -import { Button } from "@/components/ui/button" +import { + Avatar, + AvatarFallback, + AvatarImage, +} from "@/registry/new-york/ui/avatar" +import { Button } from "@/registry/new-york/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle, -} from "@/components/ui/card" +} from "@/registry/new-york/ui/card" import { Command, CommandEmpty, @@ -16,12 +20,12 @@ import { CommandInput, CommandItem, CommandList, -} from "@/components/ui/command" +} from "@/registry/new-york/ui/command" import { Popover, PopoverContent, PopoverTrigger, -} from "@/components/ui/popover" +} from "@/registry/new-york/ui/popover" export function DemoTeamMembers() { return ( diff --git a/apps/www/app/examples/dashboard/components/date-range-picker.tsx b/apps/www/app/examples/dashboard/components/date-range-picker.tsx index ea915bfc5..760f0ef6e 100644 --- a/apps/www/app/examples/dashboard/components/date-range-picker.tsx +++ b/apps/www/app/examples/dashboard/components/date-range-picker.tsx @@ -6,13 +6,13 @@ import { Calendar as CalendarIcon } from "lucide-react" import { DateRange } from "react-day-picker" import { cn } from "@/lib/utils" -import { Button } from "@/components/ui/button" -import { Calendar } from "@/components/ui/calendar" +import { Button } from "@/registry/new-york/ui/button" +import { Calendar } from "@/registry/new-york/ui/calendar" import { Popover, PopoverContent, PopoverTrigger, -} from "@/components/ui/popover" +} from "@/registry/new-york/ui/popover" export function CalendarDateRangePicker({ className, @@ -29,9 +29,8 @@ export function CalendarDateRangePicker({

) diff --git a/apps/www/app/examples/dashboard/components/team-switcher.tsx b/apps/www/app/examples/dashboard/components/team-switcher.tsx index 2f9b58e0c..96d4cff3e 100644 --- a/apps/www/app/examples/dashboard/components/team-switcher.tsx +++ b/apps/www/app/examples/dashboard/components/team-switcher.tsx @@ -4,8 +4,12 @@ import * as React from "react" import { Check, ChevronsUpDown, PlusCircle } from "lucide-react" import { cn } from "@/lib/utils" -import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" -import { Button } from "@/components/ui/button" +import { + Avatar, + AvatarFallback, + AvatarImage, +} from "@/registry/new-york/ui/avatar" +import { Button } from "@/registry/new-york/ui/button" import { Command, CommandEmpty, @@ -14,7 +18,7 @@ import { CommandItem, CommandList, CommandSeparator, -} from "@/components/ui/command" +} from "@/registry/new-york/ui/command" import { Dialog, DialogContent, @@ -23,21 +27,21 @@ import { DialogHeader, DialogTitle, DialogTrigger, -} from "@/components/ui/dialog" -import { Input } from "@/components/ui/input" -import { Label } from "@/components/ui/label" +} from "@/registry/new-york/ui/dialog" +import { Input } from "@/registry/new-york/ui/input" +import { Label } from "@/registry/new-york/ui/label" import { Popover, PopoverContent, PopoverTrigger, -} from "@/components/ui/popover" +} from "@/registry/new-york/ui/popover" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, -} from "@/components/ui/select" +} from "@/registry/new-york/ui/select" const groups = [ { @@ -83,7 +87,6 @@ export default function TeamSwitcher({ className }: TeamSwitcherProps) { diff --git a/apps/www/app/examples/forms/account/account-form.tsx b/apps/www/app/examples/forms/account/account-form.tsx index b8c4ca6c2..dfaac5415 100644 --- a/apps/www/app/examples/forms/account/account-form.tsx +++ b/apps/www/app/examples/forms/account/account-form.tsx @@ -7,22 +7,15 @@ import { useForm } from "react-hook-form" import * as z from "zod" import { cn } from "@/lib/utils" -import { Button } from "@/components/ui/button" -import { Calendar } from "@/components/ui/calendar" +import { Button } from "@/registry/new-york/ui/button" +import { Calendar } from "@/registry/new-york/ui/calendar" import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, -} from "@/components/ui/command" -import { Input } from "@/components/ui/input" -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "@/components/ui/popover" -import { toast } from "@/components/ui/use-toast" +} from "@/registry/new-york/ui/command" import { Form, FormControl, @@ -31,7 +24,14 @@ import { FormItem, FormLabel, FormMessage, -} from "@/components/react-hook-form/form" +} from "@/registry/new-york/ui/form" +import { Input } from "@/registry/new-york/ui/input" +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/registry/new-york/ui/popover" +import { toast } from "@/registry/new-york/ui/use-toast" const languages = [ { label: "English", value: "en" }, diff --git a/apps/www/app/examples/forms/account/page.tsx b/apps/www/app/examples/forms/account/page.tsx index f48c4e1d3..1b21224ec 100644 --- a/apps/www/app/examples/forms/account/page.tsx +++ b/apps/www/app/examples/forms/account/page.tsx @@ -1,4 +1,4 @@ -import { Separator } from "@/components/ui/separator" +import { Separator } from "@/registry/new-york/ui/separator" import { AccountForm } from "@/app/examples/forms/account/account-form" export default function SettingsAccountPage() { diff --git a/apps/www/app/examples/forms/appearance/appearance-form.tsx b/apps/www/app/examples/forms/appearance/appearance-form.tsx index 99ca947ab..1d12391a8 100644 --- a/apps/www/app/examples/forms/appearance/appearance-form.tsx +++ b/apps/www/app/examples/forms/appearance/appearance-form.tsx @@ -6,9 +6,7 @@ import { useForm } from "react-hook-form" import * as z from "zod" import { cn } from "@/lib/utils" -import { Button, buttonVariants } from "@/components/ui/button" -import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" -import { toast } from "@/components/ui/use-toast" +import { Button, buttonVariants } from "@/registry/new-york/ui/button" import { Form, FormControl, @@ -17,7 +15,9 @@ import { FormItem, FormLabel, FormMessage, -} from "@/components/react-hook-form/form" +} from "@/registry/new-york/ui/form" +import { RadioGroup, RadioGroupItem } from "@/registry/new-york/ui/radio-group" +import { toast } from "@/registry/new-york/ui/use-toast" const appearanceFormSchema = z.object({ theme: z.enum(["light", "dark"], { diff --git a/apps/www/app/examples/forms/appearance/page.tsx b/apps/www/app/examples/forms/appearance/page.tsx index 929253454..745d07154 100644 --- a/apps/www/app/examples/forms/appearance/page.tsx +++ b/apps/www/app/examples/forms/appearance/page.tsx @@ -1,4 +1,4 @@ -import { Separator } from "@/components/ui/separator" +import { Separator } from "@/registry/new-york/ui/separator" import { AppearanceForm } from "@/app/examples/forms/appearance/appearance-form" export default function SettingsAppearancePage() { diff --git a/apps/www/app/examples/forms/components/sidebar-nav.tsx b/apps/www/app/examples/forms/components/sidebar-nav.tsx index addcfefdc..1fce3b323 100644 --- a/apps/www/app/examples/forms/components/sidebar-nav.tsx +++ b/apps/www/app/examples/forms/components/sidebar-nav.tsx @@ -4,7 +4,7 @@ import Link from "next/link" import { usePathname } from "next/navigation" import { cn } from "@/lib/utils" -import { buttonVariants } from "@/components/ui/button" +import { buttonVariants } from "@/registry/new-york/ui/button" interface SidebarNavProps extends React.HTMLAttributes { items: { diff --git a/apps/www/app/examples/forms/display/display-form.tsx b/apps/www/app/examples/forms/display/display-form.tsx index 09147907a..d6a283355 100644 --- a/apps/www/app/examples/forms/display/display-form.tsx +++ b/apps/www/app/examples/forms/display/display-form.tsx @@ -4,9 +4,8 @@ import { zodResolver } from "@hookform/resolvers/zod" import { useForm } from "react-hook-form" import * as z from "zod" -import { Button } from "@/components/ui/button" -import { Checkbox } from "@/components/ui/checkbox" -import { toast } from "@/components/ui/use-toast" +import { Button } from "@/registry/new-york/ui/button" +import { Checkbox } from "@/registry/new-york/ui/checkbox" import { Form, FormControl, @@ -15,7 +14,8 @@ import { FormItem, FormLabel, FormMessage, -} from "@/components/react-hook-form/form" +} from "@/registry/new-york/ui/form" +import { toast } from "@/registry/new-york/ui/use-toast" const items = [ { diff --git a/apps/www/app/examples/forms/display/page.tsx b/apps/www/app/examples/forms/display/page.tsx index 5d8942301..e36a69041 100644 --- a/apps/www/app/examples/forms/display/page.tsx +++ b/apps/www/app/examples/forms/display/page.tsx @@ -1,4 +1,4 @@ -import { Separator } from "@/components/ui/separator" +import { Separator } from "@/registry/new-york/ui/separator" import { DisplayForm } from "@/app/examples/forms/display/display-form" export default function SettingsDisplayPage() { diff --git a/apps/www/app/examples/forms/layout.tsx b/apps/www/app/examples/forms/layout.tsx index 36208d26b..a5d60c7b0 100644 --- a/apps/www/app/examples/forms/layout.tsx +++ b/apps/www/app/examples/forms/layout.tsx @@ -1,7 +1,7 @@ import { Metadata } from "next" import Image from "next/image" -import { Separator } from "@/components/ui/separator" +import { Separator } from "@/registry/new-york/ui/separator" import { SidebarNav } from "@/app/examples/forms/components/sidebar-nav" export const metadata: Metadata = { diff --git a/apps/www/app/examples/forms/notifications/notifications-form.tsx b/apps/www/app/examples/forms/notifications/notifications-form.tsx index 344719cf6..b016fb6b8 100644 --- a/apps/www/app/examples/forms/notifications/notifications-form.tsx +++ b/apps/www/app/examples/forms/notifications/notifications-form.tsx @@ -5,11 +5,8 @@ import { zodResolver } from "@hookform/resolvers/zod" import { useForm } from "react-hook-form" import * as z from "zod" -import { Button } from "@/components/ui/button" -import { Checkbox } from "@/components/ui/checkbox" -import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" -import { Switch } from "@/components/ui/switch" -import { toast } from "@/components/ui/use-toast" +import { Button } from "@/registry/new-york/ui/button" +import { Checkbox } from "@/registry/new-york/ui/checkbox" import { Form, FormControl, @@ -18,7 +15,10 @@ import { FormItem, FormLabel, FormMessage, -} from "@/components/react-hook-form/form" +} from "@/registry/new-york/ui/form" +import { RadioGroup, RadioGroupItem } from "@/registry/new-york/ui/radio-group" +import { Switch } from "@/registry/new-york/ui/switch" +import { toast } from "@/registry/new-york/ui/use-toast" const notificationsFormSchema = z.object({ type: z.enum(["all", "mentions", "none"], { diff --git a/apps/www/app/examples/forms/notifications/page.tsx b/apps/www/app/examples/forms/notifications/page.tsx index 659dd4b0a..7def678c7 100644 --- a/apps/www/app/examples/forms/notifications/page.tsx +++ b/apps/www/app/examples/forms/notifications/page.tsx @@ -1,4 +1,4 @@ -import { Separator } from "@/components/ui/separator" +import { Separator } from "@/registry/new-york/ui/separator" import { AccountForm } from "@/app/examples/forms/account/account-form" import { NotificationsForm } from "@/app/examples/forms/notifications/notifications-form" diff --git a/apps/www/app/examples/forms/page.tsx b/apps/www/app/examples/forms/page.tsx index 3f5f33664..77b0ec4e0 100644 --- a/apps/www/app/examples/forms/page.tsx +++ b/apps/www/app/examples/forms/page.tsx @@ -1,4 +1,4 @@ -import { Separator } from "@/components/ui/separator" +import { Separator } from "@/registry/new-york/ui/separator" import { ProfileForm } from "@/app/examples/forms/profile-form" export default function SettingsProfilePage() { diff --git a/apps/www/app/examples/forms/profile-form.tsx b/apps/www/app/examples/forms/profile-form.tsx index 40ed8ec56..b6d54fcba 100644 --- a/apps/www/app/examples/forms/profile-form.tsx +++ b/apps/www/app/examples/forms/profile-form.tsx @@ -6,17 +6,7 @@ import { useFieldArray, useForm } from "react-hook-form" import * as z from "zod" import { cn } from "@/lib/utils" -import { Button } from "@/components/ui/button" -import { Input } from "@/components/ui/input" -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select" -import { Textarea } from "@/components/ui/textarea" -import { toast } from "@/components/ui/use-toast" +import { Button } from "@/registry/new-york/ui/button" import { Form, FormControl, @@ -25,7 +15,17 @@ import { FormItem, FormLabel, FormMessage, -} from "@/components/react-hook-form/form" +} from "@/registry/new-york/ui/form" +import { Input } from "@/registry/new-york/ui/input" +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/registry/new-york/ui/select" +import { Textarea } from "@/registry/new-york/ui/textarea" +import { toast } from "@/registry/new-york/ui/use-toast" const profileFormSchema = z.object({ username: z @@ -176,9 +176,9 @@ export function ProfileForm() { ))} - -
-
-

+
+

Library

- - - - -
-

+

Playlists

- +
{playlists?.map((playlist, i) => (
- - + + diff --git a/apps/www/app/page.tsx b/apps/www/app/page.tsx index 0f8aca84e..ced96c875 100644 --- a/apps/www/app/page.tsx +++ b/apps/www/app/page.tsx @@ -4,8 +4,6 @@ import { ChevronRight } from "lucide-react" import { siteConfig } from "@/config/site" import { cn } from "@/lib/utils" -import { buttonVariants } from "@/components/ui/button" -import { Separator } from "@/components/ui/separator" import { ExamplesNav } from "@/components/examples-nav" import { Icons } from "@/components/icons" import { @@ -13,20 +11,23 @@ import { PageHeaderDescription, PageHeaderHeading, } from "@/components/page-header" -import { StyleSwitcher } from "@/components/style-switcher" +import { buttonVariants } from "@/registry/new-york/ui/button" +import { Separator } from "@/registry/new-york/ui/separator" import DashboardPage from "@/app/examples/dashboard/page" export default function IndexPage() { return ( -
- - +
+ - 🎉 Building - forms with React Hook Form and Zod + 🎉 {" "} + Style, a new CLI and more. + + Introducing Style, a new CLI and more. + Build your component library. @@ -67,7 +68,7 @@ export default function IndexPage() { />
-
+
diff --git a/apps/www/app/sink/layout.tsx b/apps/www/app/sink/layout.tsx new file mode 100644 index 000000000..2b34130ae --- /dev/null +++ b/apps/www/app/sink/layout.tsx @@ -0,0 +1,27 @@ +import Link from "next/link" + +import { ThemeWrapper } from "@/components/theme-wrapper" +import { styles } from "@/registry/styles" + +interface SinkLayoutProps { + children: React.ReactNode +} + +export default function SinkLayout({ children }: SinkLayoutProps) { + return ( +
+
+
+ {styles.map((style) => ( + + {style.label} + + ))} +
+
+
+ {children} +
+
+ ) +} diff --git a/apps/www/app/sink/new-york/page.tsx b/apps/www/app/sink/new-york/page.tsx new file mode 100644 index 000000000..f7897d193 --- /dev/null +++ b/apps/www/app/sink/new-york/page.tsx @@ -0,0 +1,206 @@ +import * as React from "react" +import Link from "next/link" + +import { cn } from "@/lib/utils" +import AccordionDemo from "@/registry/new-york/example/accordion-demo" +import AlertDialogDemo from "@/registry/new-york/example/alert-dialog-demo" +import AspectRatioDemo from "@/registry/new-york/example/aspect-ratio-demo" +import AvatarDemo from "@/registry/new-york/example/avatar-demo" +import BadgeDemo from "@/registry/new-york/example/badge-demo" +import BadgeDestructive from "@/registry/new-york/example/badge-destructive" +import BadgeOutline from "@/registry/new-york/example/badge-outline" +import BadgeSecondary from "@/registry/new-york/example/badge-secondary" +import ButtonDemo from "@/registry/new-york/example/button-demo" +import ButtonDestructive from "@/registry/new-york/example/button-destructive" +import ButtonGhost from "@/registry/new-york/example/button-ghost" +import ButtonLink from "@/registry/new-york/example/button-link" +import ButtonLoading from "@/registry/new-york/example/button-loading" +import ButtonOutline from "@/registry/new-york/example/button-outline" +import ButtonSecondary from "@/registry/new-york/example/button-secondary" +import ButtonWithIcon from "@/registry/new-york/example/button-with-icon" +import CardDemo from "@/registry/new-york/example/card-demo" +import CheckboxDemo from "@/registry/new-york/example/checkbox-demo" +import CollapsibleDemo from "@/registry/new-york/example/collapsible-demo" +import CommandDemo from "@/registry/new-york/example/command-demo" +import ContextMenuDemo from "@/registry/new-york/example/context-menu-demo" +import DatePickerDemo from "@/registry/new-york/example/date-picker-demo" +import DialogDemo from "@/registry/new-york/example/dialog-demo" +import DropdownMenuDemo from "@/registry/new-york/example/dropdown-menu-demo" +import HoverCardDemo from "@/registry/new-york/example/hover-card-demo" +import MenubarDemo from "@/registry/new-york/example/menubar-demo" +import NavigationMenuDemo from "@/registry/new-york/example/navigation-menu-demo" +import PopoverDemo from "@/registry/new-york/example/popover-demo" +import ProgressDemo from "@/registry/new-york/example/progress-demo" +import RadioGroupDemo from "@/registry/new-york/example/radio-group-demo" +import ScrollAreaDemo from "@/registry/new-york/example/scroll-area-demo" +import SelectDemo from "@/registry/new-york/example/select-demo" +import SeparatorDemo from "@/registry/new-york/example/separator-demo" +import SheetDemo from "@/registry/new-york/example/sheet-demo" +import SkeletonDemo from "@/registry/new-york/example/skeleton-demo" +import SliderDemo from "@/registry/new-york/example/slider-demo" +import SwitchDemo from "@/registry/new-york/example/switch-demo" +import TabsDemo from "@/registry/new-york/example/tabs-demo" +import ToastDemo from "@/registry/new-york/example/toast-demo" +import ToggleDemo from "@/registry/new-york/example/toggle-demo" +import ToggleDisabled from "@/registry/new-york/example/toggle-disabled" +import ToggleOutline from "@/registry/new-york/example/toggle-outline" +import ToggleWithText from "@/registry/new-york/example/toggle-with-text" +import TooltipDemo from "@/registry/new-york/example/tooltip-demo" +import { Button } from "@/registry/new-york/ui/button" + +export default function KitchenSinkPage() { + return ( +
+
+
+
+ + + + + + + +

Documentation

+

+ You can customize the theme using{" "} + + CSS variables + + .{" "} + + Click here + {" "} + to learn more. +

+
+ + + + + + + +
+
+ + + + + +
+ + + +
+
+ + + +
+
+ + +
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + +
+ + + +
+
+ +
+ + + + +
+
+ + + + + + + +
+ + + + +
+
+ + + +
+
+
+
+ ) +} + +function ComponentWrapper({ + className, + children, +}: React.HTMLAttributes) { + return ( +
+ {children} +
+ ) +} diff --git a/apps/www/app/sink/page.tsx b/apps/www/app/sink/page.tsx index 5384443b1..f05ecb39a 100644 --- a/apps/www/app/sink/page.tsx +++ b/apps/www/app/sink/page.tsx @@ -2,55 +2,56 @@ import * as React from "react" import Link from "next/link" import { cn } from "@/lib/utils" -import { AccordionDemo } from "@/components/examples/accordion/demo" -import { AlertDialogDemo } from "@/components/examples/alert-dialog/demo" -import { AspectRatioDemo } from "@/components/examples/aspect-ratio/demo" -import { AvatarDemo } from "@/components/examples/avatar/demo" -import { BadgeDemo } from "@/components/examples/badge/demo" -import { BadgeDestructive } from "@/components/examples/badge/destructive" -import { BadgeOutline } from "@/components/examples/badge/outline" -import { BadgeSecondary } from "@/components/examples/badge/secondary" -import { ButtonDemo } from "@/components/examples/button/demo" -import { ButtonDestructive } from "@/components/examples/button/destructive" -import { ButtonGhost } from "@/components/examples/button/ghost" -import { ButtonLink } from "@/components/examples/button/link" -import { ButtonLoading } from "@/components/examples/button/loading" -import { ButtonOutline } from "@/components/examples/button/outline" -import { ButtonSecondary } from "@/components/examples/button/secondary" -import { ButtonWithIcon } from "@/components/examples/button/with-icon" -import { CardDemo } from "@/components/examples/card/demo" -import { CheckboxDemo } from "@/components/examples/checkbox/demo" -import { CollapsibleDemo } from "@/components/examples/collapsible/demo" -import { CommandDemo } from "@/components/examples/command/demo" -import { ContextMenuDemo } from "@/components/examples/context-menu/demo" -import { DatePickerDemo } from "@/components/examples/date-picker/demo" -import { DialogDemo } from "@/components/examples/dialog/demo" -import { DropdownMenuDemo } from "@/components/examples/dropdown-menu/demo" -import { HoverCardDemo } from "@/components/examples/hover-card/demo" -import { MenubarDemo } from "@/components/examples/menubar/demo" -import { NavigationMenuDemo } from "@/components/examples/navigation-menu/demo" -import { PopoverDemo } from "@/components/examples/popover/demo" -import { ProgressDemo } from "@/components/examples/progress/demo" -import { RadioGroupDemo } from "@/components/examples/radio-group/demo" -import { ScrollAreaDemo } from "@/components/examples/scroll-area/demo" -import { SelectDemo } from "@/components/examples/select/demo" -import { SeparatorDemo } from "@/components/examples/separator/demo" -import { SheetDemo } from "@/components/examples/sheet/demo" -import { SkeletonDemo } from "@/components/examples/skeleton/demo" -import { SliderDemo } from "@/components/examples/slider/demo" -import { SwitchDemo } from "@/components/examples/switch/demo" -import { TabsDemo } from "@/components/examples/tabs/demo" -import { ToastDemo } from "@/components/examples/toast/demo" -import { ToggleDemo } from "@/components/examples/toggle/demo" -import { ToggleDisabled } from "@/components/examples/toggle/disabled" -import { ToggleOutline } from "@/components/examples/toggle/outline" -import { ToggleWithText } from "@/components/examples/toggle/with-text" -import { TooltipDemo } from "@/components/examples/tooltip/demo" +import AccordionDemo from "@/registry/default/example/accordion-demo" +import AlertDialogDemo from "@/registry/default/example/alert-dialog-demo" +import AspectRatioDemo from "@/registry/default/example/aspect-ratio-demo" +import AvatarDemo from "@/registry/default/example/avatar-demo" +import BadgeDemo from "@/registry/default/example/badge-demo" +import BadgeDestructive from "@/registry/default/example/badge-destructive" +import BadgeOutline from "@/registry/default/example/badge-outline" +import BadgeSecondary from "@/registry/default/example/badge-secondary" +import ButtonDemo from "@/registry/default/example/button-demo" +import ButtonDestructive from "@/registry/default/example/button-destructive" +import ButtonGhost from "@/registry/default/example/button-ghost" +import ButtonLink from "@/registry/default/example/button-link" +import ButtonLoading from "@/registry/default/example/button-loading" +import ButtonOutline from "@/registry/default/example/button-outline" +import ButtonSecondary from "@/registry/default/example/button-secondary" +import ButtonWithIcon from "@/registry/default/example/button-with-icon" +import CardDemo from "@/registry/default/example/card-demo" +import CheckboxDemo from "@/registry/default/example/checkbox-demo" +import CollapsibleDemo from "@/registry/default/example/collapsible-demo" +import CommandDemo from "@/registry/default/example/command-demo" +import ContextMenuDemo from "@/registry/default/example/context-menu-demo" +import DatePickerDemo from "@/registry/default/example/date-picker-demo" +import DialogDemo from "@/registry/default/example/dialog-demo" +import DropdownMenuDemo from "@/registry/default/example/dropdown-menu-demo" +import HoverCardDemo from "@/registry/default/example/hover-card-demo" +import MenubarDemo from "@/registry/default/example/menubar-demo" +import NavigationMenuDemo from "@/registry/default/example/navigation-menu-demo" +import PopoverDemo from "@/registry/default/example/popover-demo" +import ProgressDemo from "@/registry/default/example/progress-demo" +import RadioGroupDemo from "@/registry/default/example/radio-group-demo" +import ScrollAreaDemo from "@/registry/default/example/scroll-area-demo" +import SelectDemo from "@/registry/default/example/select-demo" +import SeparatorDemo from "@/registry/default/example/separator-demo" +import SheetDemo from "@/registry/default/example/sheet-demo" +import SkeletonDemo from "@/registry/default/example/skeleton-demo" +import SliderDemo from "@/registry/default/example/slider-demo" +import SwitchDemo from "@/registry/default/example/switch-demo" +import TabsDemo from "@/registry/default/example/tabs-demo" +import ToastDemo from "@/registry/default/example/toast-demo" +import ToggleDemo from "@/registry/default/example/toggle-demo" +import ToggleDisabled from "@/registry/default/example/toggle-disabled" +import ToggleOutline from "@/registry/default/example/toggle-outline" +import ToggleWithText from "@/registry/default/example/toggle-with-text" +import TooltipDemo from "@/registry/default/example/tooltip-demo" +import { Button } from "@/registry/default/ui/button" export default function KitchenSinkPage() { return (
-
+
@@ -107,6 +108,10 @@ export default function KitchenSinkPage() {
+
+ + +
@@ -191,7 +196,7 @@ function ComponentWrapper({ return (
diff --git a/apps/www/components/callout.tsx b/apps/www/components/callout.tsx index e1c70a242..6c07ffa15 100644 --- a/apps/www/components/callout.tsx +++ b/apps/www/components/callout.tsx @@ -1,5 +1,9 @@ import { cn } from "@/lib/utils" -import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert" +import { + Alert, + AlertDescription, + AlertTitle, +} from "@/registry/new-york/ui/alert" interface CalloutProps { icon?: string diff --git a/apps/www/components/code-block-wrapper.tsx b/apps/www/components/code-block-wrapper.tsx index 5e7b68568..bb5fd27f1 100644 --- a/apps/www/components/code-block-wrapper.tsx +++ b/apps/www/components/code-block-wrapper.tsx @@ -3,12 +3,12 @@ import * as React from "react" import { cn } from "@/lib/utils" -import { Button } from "@/components/ui/button" +import { Button } from "@/registry/new-york/ui/button" import { Collapsible, CollapsibleContent, CollapsibleTrigger, -} from "@/components/ui/collapsible" +} from "@/registry/new-york/ui/collapsible" interface CodeBlockProps extends React.HTMLAttributes { expandButtonTitle?: string diff --git a/apps/www/components/command-menu.tsx b/apps/www/components/command-menu.tsx index 07605e056..41c6aecb4 100644 --- a/apps/www/components/command-menu.tsx +++ b/apps/www/components/command-menu.tsx @@ -8,7 +8,7 @@ import { useTheme } from "next-themes" import { docsConfig } from "@/config/docs" import { cn } from "@/lib/utils" -import { Button } from "@/components/ui/button" +import { Button } from "@/registry/new-york/ui/button" import { CommandDialog, CommandEmpty, @@ -17,7 +17,7 @@ import { CommandItem, CommandList, CommandSeparator, -} from "@/components/ui/command" +} from "@/registry/new-york/ui/command" export function CommandMenu({ ...props }: DialogProps) { const router = useRouter() @@ -46,14 +46,14 @@ export function CommandMenu({ ...props }: DialogProps) { diff --git a/apps/www/components/component-card.tsx b/apps/www/components/component-card.tsx index eb9ed18da..d4ec2acef 100644 --- a/apps/www/components/component-card.tsx +++ b/apps/www/components/component-card.tsx @@ -1,7 +1,7 @@ import React from "react" import { cn } from "@/lib/utils" -import { AspectRatio } from "@/components/ui/aspect-ratio" +import { AspectRatio } from "@/registry/new-york/ui/aspect-ratio" export function ComponentCard({ className, diff --git a/apps/www/components/component-example.tsx b/apps/www/components/component-example.tsx index 666fe0288..433b3ba1a 100644 --- a/apps/www/components/component-example.tsx +++ b/apps/www/components/component-example.tsx @@ -3,8 +3,13 @@ import * as React from "react" import { cn } from "@/lib/utils" -import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { CopyButton, CopyWithClassNames } from "@/components/copy-button" +import { + Tabs, + TabsContent, + TabsList, + TabsTrigger, +} from "@/registry/new-york/ui/tabs" interface ComponentExampleProps extends React.HTMLAttributes { extractClassname?: boolean diff --git a/apps/www/components/component-preview.tsx b/apps/www/components/component-preview.tsx new file mode 100644 index 000000000..a1c5bd6c8 --- /dev/null +++ b/apps/www/components/component-preview.tsx @@ -0,0 +1,139 @@ +"use client" + +import * as React from "react" +import { Index } from "@/__registry__" +import { Loader2 } from "lucide-react" + +import { cn } from "@/lib/utils" +import { useConfig } from "@/hooks/use-config" +import { CopyButton, CopyWithClassNames } from "@/components/copy-button" +import { StyleSwitcher } from "@/components/style-switcher" +import { ThemeWrapper } from "@/components/theme-wrapper" +import { + Tabs, + TabsContent, + TabsList, + TabsTrigger, +} from "@/registry/new-york/ui/tabs" +import { styles } from "@/registry/styles" + +interface ComponentPreviewProps extends React.HTMLAttributes { + name: string + extractClassname?: boolean + extractedClassNames?: string + align?: "center" | "start" | "end" +} + +export function ComponentPreview({ + name, + children, + className, + extractClassname, + extractedClassNames, + align = "center", + ...props +}: ComponentPreviewProps) { + const [config] = useConfig() + const index = styles.findIndex((style) => style.name === config.style) + + const Codes = React.Children.toArray(children) as React.ReactElement[] + const Code = Codes[index] + + const Preview = React.useMemo(() => { + const Component = Index[config.style][name]?.component + + if (!Component) { + return ( +

+ Component{" "} + + {name} + {" "} + not found in registry. +

+ ) + } + + return + }, [name, config.style]) + + const codeString = React.useMemo(() => { + if ( + typeof Code?.props["data-rehype-pretty-code-fragment"] !== "undefined" + ) { + const [, Button] = React.Children.toArray( + Code.props.children + ) as React.ReactElement[] + return Button?.props?.value || Button?.props?.__rawString__ || null + } + }, [Code]) + + return ( +
+ +
+ + + Preview + + + Code + + +
+ +
+ + {extractedClassNames ? ( + + ) : ( + codeString && + )} +
+ +
+ + + Loading... +
+ } + > + {Preview} + +
+ + + +
+
+ {Code} +
+
+
+ +
+ ) +} diff --git a/apps/www/components/copy-button.tsx b/apps/www/components/copy-button.tsx index 8e37984bf..97489753d 100644 --- a/apps/www/components/copy-button.tsx +++ b/apps/www/components/copy-button.tsx @@ -6,13 +6,14 @@ import { NpmCommands } from "types/unist" import { Event, trackEvent } from "@/lib/events" import { cn } from "@/lib/utils" +import { Icons } from "@/components/icons" +import { Button } from "@/registry/new-york/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, -} from "@/components/ui/dropdown-menu" -import { Icons } from "@/components/icons" +} from "@/registry/new-york/ui/dropdown-menu" interface CopyButtonProps extends React.HTMLAttributes { value: string @@ -43,9 +44,11 @@ export function CopyButton({ }, [hasCopied]) return ( - + ) } @@ -101,19 +104,22 @@ export function CopyWithClassNames({ return ( - - {hasCopied ? ( - - ) : ( - - )} - Copy + + copyToClipboard(value)}> @@ -162,38 +168,38 @@ export function CopyNpmCommandButton({ return ( - - {hasCopied ? ( - - ) : ( - - )} - Copy + + copyCommand(commands.__npmCommand__, "npm")} > - - npm + npm copyCommand(commands.__yarnCommand__, "yarn")} > - - yarn + yarn copyCommand(commands.__pnpmCommand__, "pnpm")} > - - pnpm + pnpm diff --git a/apps/www/components/examples-nav.tsx b/apps/www/components/examples-nav.tsx index b4a10dd49..636eeec3b 100644 --- a/apps/www/components/examples-nav.tsx +++ b/apps/www/components/examples-nav.tsx @@ -5,7 +5,7 @@ import { usePathname } from "next/navigation" import { ArrowRight } from "lucide-react" import { cn } from "@/lib/utils" -import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area" +import { ScrollArea, ScrollBar } from "@/registry/new-york/ui/scroll-area" const examples = [ { @@ -21,7 +21,6 @@ const examples = [ { name: "Tasks", href: "/examples/tasks", - label: "New", code: "https://github.com/shadcn/ui/tree/main/apps/www/app/examples/tasks", }, { @@ -32,7 +31,6 @@ const examples = [ { name: "Forms", href: "/examples/forms", - label: "New", code: "https://github.com/shadcn/ui/tree/main/apps/www/app/examples/forms", }, { @@ -67,12 +65,7 @@ export function ExamplesNav({ className, ...props }: ExamplesNavProps) { : "font-medium text-muted-foreground" )} > - {example.name}{" "} - {example.label && ( - - {example.label} - - )} + {example.name} ))}
diff --git a/apps/www/components/examples/badge/demo.tsx b/apps/www/components/examples/badge/demo.tsx deleted file mode 100644 index 649c8355f..000000000 --- a/apps/www/components/examples/badge/demo.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Badge } from "@/components/ui/badge" - -export function BadgeDemo() { - return Badge -} diff --git a/apps/www/components/examples/badge/destructive.tsx b/apps/www/components/examples/badge/destructive.tsx deleted file mode 100644 index 1ce605b4f..000000000 --- a/apps/www/components/examples/badge/destructive.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Badge } from "@/components/ui/badge" - -export function BadgeDestructive() { - return Destructive -} diff --git a/apps/www/components/examples/badge/outline.tsx b/apps/www/components/examples/badge/outline.tsx deleted file mode 100644 index c6ef6e6fb..000000000 --- a/apps/www/components/examples/badge/outline.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Badge } from "@/components/ui/badge" - -export function BadgeOutline() { - return Outline -} diff --git a/apps/www/components/examples/badge/secondary.tsx b/apps/www/components/examples/badge/secondary.tsx deleted file mode 100644 index 1ceaf80b5..000000000 --- a/apps/www/components/examples/badge/secondary.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Badge } from "@/components/ui/badge" - -export function BadgeSecondary() { - return Secondary -} diff --git a/apps/www/components/examples/button/demo.tsx b/apps/www/components/examples/button/demo.tsx deleted file mode 100644 index 3c564b6aa..000000000 --- a/apps/www/components/examples/button/demo.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Button } from "@/components/ui/button" - -export function ButtonDemo() { - return -} diff --git a/apps/www/components/examples/button/destructive.tsx b/apps/www/components/examples/button/destructive.tsx deleted file mode 100644 index bc07e6ad8..000000000 --- a/apps/www/components/examples/button/destructive.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Button } from "@/components/ui/button" - -export function ButtonDestructive() { - return -} diff --git a/apps/www/components/examples/button/ghost.tsx b/apps/www/components/examples/button/ghost.tsx deleted file mode 100644 index eda0a3315..000000000 --- a/apps/www/components/examples/button/ghost.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Button } from "@/components/ui/button" - -export function ButtonGhost() { - return -} diff --git a/apps/www/components/examples/button/link.tsx b/apps/www/components/examples/button/link.tsx deleted file mode 100644 index e0f0138a8..000000000 --- a/apps/www/components/examples/button/link.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Button } from "@/components/ui/button" - -export function ButtonLink() { - return -} diff --git a/apps/www/components/examples/button/outline.tsx b/apps/www/components/examples/button/outline.tsx deleted file mode 100644 index a392ee77c..000000000 --- a/apps/www/components/examples/button/outline.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Button } from "@/components/ui/button" - -export function ButtonOutline() { - return -} diff --git a/apps/www/components/examples/button/secondary.tsx b/apps/www/components/examples/button/secondary.tsx deleted file mode 100644 index 97d122e81..000000000 --- a/apps/www/components/examples/button/secondary.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Button } from "@/components/ui/button" - -export function ButtonSecondary() { - return -} diff --git a/apps/www/components/examples/data-table/columns.tsx b/apps/www/components/examples/data-table/columns.tsx deleted file mode 100644 index 26585917e..000000000 --- a/apps/www/components/examples/data-table/columns.tsx +++ /dev/null @@ -1,110 +0,0 @@ -"use client" - -import { ColumnDef } from "@tanstack/react-table" -import { ArrowUpDown, MoreHorizontal } from "lucide-react" - -import { Button } from "@/components/ui/button" -import { Checkbox } from "@/components/ui/checkbox" -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from "@/components/ui/dropdown-menu" - -export type Payment = { - id: string - amount: number - status: "pending" | "processing" | "success" | "failed" - email: string -} - -export const columns: ColumnDef[] = [ - { - id: "select", - header: ({ table }) => ( - table.toggleAllPageRowsSelected(!!value)} - aria-label="Select all" - /> - ), - cell: ({ row }) => ( - row.toggleSelected(!!value)} - aria-label="Select row" - /> - ), - enableSorting: false, - enableHiding: false, - }, - { - accessorKey: "status", - header: "Status", - cell: ({ row }) => ( -
{row.getValue("status")}
- ), - }, - { - accessorKey: "email", - header: ({ column }) => { - return ( - - ) - }, - cell: ({ row }) =>
{row.getValue("email")}
, - }, - { - accessorKey: "amount", - header: () =>
Amount
, - cell: ({ row }) => { - const amount = parseFloat(row.getValue("amount")) - - // Format the amount as a dollar amount - const formatted = new Intl.NumberFormat("en-US", { - style: "currency", - currency: "USD", - }).format(amount) - - return
{formatted}
- }, - }, - { - id: "actions", - enableHiding: false, - cell: ({ row }) => { - const payment = row.original - - return ( - - - - - - Actions - navigator.clipboard.writeText(payment.id)} - > - Copy payment ID - - - View customer - View payment details - - - ) - }, - }, -] diff --git a/apps/www/components/examples/data-table/demo.tsx b/apps/www/components/examples/data-table/demo.tsx deleted file mode 100644 index e379cd4b7..000000000 --- a/apps/www/components/examples/data-table/demo.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { faker } from "@faker-js/faker" - -import { Payment, columns } from "@/components/examples/data-table/columns" -import { DataTable } from "@/components/examples/data-table/data-table" - -const data: Payment[] = [ - { - id: "m5gr84i9", - amount: 316, - status: "success", - email: "ken99@yahoo.com", - }, - { - id: "3u1reuv4", - amount: 242, - status: "success", - email: "Abe45@gmail.com", - }, - { - id: "derv1ws0", - amount: 837, - status: "processing", - email: "Monserrat44@gmail.com", - }, - { - id: "5kma53ae", - amount: 874, - status: "success", - email: "Silas22@gmail.com", - }, - { - id: "bhqecj4p", - amount: 721, - status: "failed", - email: "carmella@hotmail.com", - }, -] - -export function DataTableDemo() { - return -} diff --git a/apps/www/components/examples/index.tsx b/apps/www/components/examples/index.tsx deleted file mode 100644 index 2d3c335be..000000000 --- a/apps/www/components/examples/index.tsx +++ /dev/null @@ -1,213 +0,0 @@ -import { AccordionDemo } from "@/components/examples/accordion/demo" -import { AlertDialogDemo } from "@/components/examples/alert-dialog/demo" -import { AlertDemo } from "@/components/examples/alert/demo" -import { AlertDestructive } from "@/components/examples/alert/destructive" -import { AspectRatioDemo } from "@/components/examples/aspect-ratio/demo" -import { AvatarDemo } from "@/components/examples/avatar/demo" -import { BadgeDemo } from "@/components/examples/badge/demo" -import { BadgeDestructive } from "@/components/examples/badge/destructive" -import { BadgeOutline } from "@/components/examples/badge/outline" -import { BadgeSecondary } from "@/components/examples/badge/secondary" -import { ButtonAsChild } from "@/components/examples/button/as-child" -import { ButtonDemo } from "@/components/examples/button/demo" -import { ButtonDestructive } from "@/components/examples/button/destructive" -import { ButtonGhost } from "@/components/examples/button/ghost" -import { ButtonLink } from "@/components/examples/button/link" -import { ButtonLoading } from "@/components/examples/button/loading" -import { ButtonOutline } from "@/components/examples/button/outline" -import { ButtonSecondary } from "@/components/examples/button/secondary" -import { ButtonWithIcon } from "@/components/examples/button/with-icon" -import { CalendarDemo } from "@/components/examples/calendar/demo" -import { CalendarReactHookForm } from "@/components/examples/calendar/react-hook-form" -import { CardDemo } from "@/components/examples/card/demo" -import { CardWithForm } from "@/components/examples/card/with-form" -import { CheckboxDemo } from "@/components/examples/checkbox/demo" -import { CheckboxDisabled } from "@/components/examples/checkbox/disabled" -import { CheckboxReactHookFormMultiple } from "@/components/examples/checkbox/react-hook-form-multiple" -import { CheckboxReactHookFormSingle } from "@/components/examples/checkbox/react-hook-form-single" -import { CheckboxWithText } from "@/components/examples/checkbox/with-text" -import { CollapsibleDemo } from "@/components/examples/collapsible/demo" -import { ComboboxDemo } from "@/components/examples/combobox/demo" -import { ComboboxDropdownMenu } from "@/components/examples/combobox/dropdown-menu" -import { ComboboxPopover } from "@/components/examples/combobox/popover" -import { ComboboxReactHookForm } from "@/components/examples/combobox/react-hook-form" -import { CommandDemo } from "@/components/examples/command/demo" -import { CommandDialogDemo } from "@/components/examples/command/dialog" -import { ContextMenuDemo } from "@/components/examples/context-menu/demo" -import { DataTableDemo } from "@/components/examples/data-table/demo" -import { DatePickerDemo } from "@/components/examples/date-picker/demo" -import { DatePickerReactHookForm } from "@/components/examples/date-picker/react-hook-form" -import { DatePickerWithPresets } from "@/components/examples/date-picker/with-presets" -import { DatePickerWithRange } from "@/components/examples/date-picker/with-range" -import { DialogDemo } from "@/components/examples/dialog/demo" -import { DropdownMenuCheckboxes } from "@/components/examples/dropdown-menu/checkboxes" -import { DropdownMenuDemo } from "@/components/examples/dropdown-menu/demo" -import { DropdownMenuRadioGroupDemo } from "@/components/examples/dropdown-menu/radio-group" -import { HoverCardDemo } from "@/components/examples/hover-card/demo" -import { InputDemo } from "@/components/examples/input/demo" -import { InputDisabled } from "@/components/examples/input/disabled" -import { InputFile } from "@/components/examples/input/file" -import { InputReactHookForm } from "@/components/examples/input/react-hook-form" -import { InputWithButton } from "@/components/examples/input/with-button" -import { InputWithLabel } from "@/components/examples/input/with-label" -import { InputWithText } from "@/components/examples/input/with-text" -import { LabelDemo } from "@/components/examples/label/demo" -import { MenubarDemo } from "@/components/examples/menubar/demo" -import { NavigationMenuDemo } from "@/components/examples/navigation-menu/demo" -import { PopoverDemo } from "@/components/examples/popover/demo" -import { ProgressDemo } from "@/components/examples/progress/demo" -import { RadioGroupDemo } from "@/components/examples/radio-group/demo" -import { RadioGroupReactHookForm } from "@/components/examples/radio-group/react-hook-form" -import { ScrollAreaDemo } from "@/components/examples/scroll-area/demo" -import { SelectDemo } from "@/components/examples/select/demo" -import { SelectReactHookForm } from "@/components/examples/select/react-hook-form" -import { SeparatorDemo } from "@/components/examples/separator/demo" -import { SheetDemo } from "@/components/examples/sheet/demo" -import { SheetPosition } from "@/components/examples/sheet/position" -import { SheetSize } from "@/components/examples/sheet/size" -import { SkeletonDemo } from "@/components/examples/skeleton/demo" -import { SliderDemo } from "@/components/examples/slider/demo" -import { SwitchDemo } from "@/components/examples/switch/demo" -import { SwitchReactHookForm } from "@/components/examples/switch/react-hook-form" -import { TableDemo } from "@/components/examples/table/demo" -import { TabsDemo } from "@/components/examples/tabs/demo" -import { TextareaDemo } from "@/components/examples/textarea/demo" -import { TextareaDisabled } from "@/components/examples/textarea/disabled" -import { TextareaReactHookForm } from "@/components/examples/textarea/react-hook-form" -import { TextareaWithButton } from "@/components/examples/textarea/with-button" -import { TextareaWithLabel } from "@/components/examples/textarea/with-label" -import { TextareaWithText } from "@/components/examples/textarea/with-text" -import { ToastDemo } from "@/components/examples/toast/demo" -import { ToastDestructive } from "@/components/examples/toast/destructive" -import { ToastSimple } from "@/components/examples/toast/simple" -import { ToastWithAction } from "@/components/examples/toast/with-action" -import { ToastWithTitle } from "@/components/examples/toast/with-title" -import { ToggleDemo } from "@/components/examples/toggle/demo" -import { ToggleDisabled } from "@/components/examples/toggle/disabled" -import { ToggleLg } from "@/components/examples/toggle/lg" -import { ToggleOutline } from "@/components/examples/toggle/outline" -import { ToggleSm } from "@/components/examples/toggle/sm" -import { ToggleWithText } from "@/components/examples/toggle/with-text" -import { TooltipDemo } from "@/components/examples/tooltip/demo" -import { TypographyBlockquote } from "@/components/examples/typography/blockquote" -import { TypographyDemo } from "@/components/examples/typography/demo" -import { TypographyH1 } from "@/components/examples/typography/h1" -import { TypographyH2 } from "@/components/examples/typography/h2" -import { TypographyH3 } from "@/components/examples/typography/h3" -import { TypographyH4 } from "@/components/examples/typography/h4" -import { TypographyInlineCode } from "@/components/examples/typography/inline-code" -import { TypographyLarge } from "@/components/examples/typography/large" -import { TypographyLead } from "@/components/examples/typography/lead" -import { TypographyList } from "@/components/examples/typography/list" -import { TypographyMuted } from "@/components/examples/typography/muted" -import { TypographyP } from "@/components/examples/typography/p" -import { TypographySmall } from "@/components/examples/typography/small" -import { TypographyTable } from "@/components/examples/typography/table" - -export const examples = { - AccordionDemo, - AlertDemo, - AlertDialogDemo, - AlertDestructive, - AspectRatioDemo, - AvatarDemo, - BadgeDemo, - BadgeDestructive, - BadgeOutline, - BadgeSecondary, - ButtonDemo, - ButtonGhost, - ButtonDestructive, - ButtonLink, - ButtonLoading, - ButtonOutline, - ButtonSecondary, - ButtonWithIcon, - ButtonAsChild, - CalendarDemo, - CalendarReactHookForm, - DataTableDemo, - DatePickerDemo, - DatePickerWithRange, - DatePickerWithPresets, - DatePickerReactHookForm, - CardDemo, - CardWithForm, - CheckboxDemo, - CheckboxDisabled, - CheckboxWithText, - CheckboxReactHookFormMultiple, - CheckboxReactHookFormSingle, - CollapsibleDemo, - CommandDemo, - CommandDialogDemo, - ComboboxDemo, - ComboboxPopover, - ComboboxDropdownMenu, - ComboboxReactHookForm, - ContextMenuDemo, - DialogDemo, - DropdownMenuCheckboxes, - DropdownMenuDemo, - DropdownMenuRadioGroupDemo, - HoverCardDemo, - InputDemo, - InputDisabled, - InputFile, - InputWithButton, - InputWithLabel, - InputWithText, - InputReactHookForm, - LabelDemo, - MenubarDemo, - NavigationMenuDemo, - PopoverDemo, - ProgressDemo, - RadioGroupDemo, - RadioGroupReactHookForm, - ScrollAreaDemo, - SelectDemo, - SelectReactHookForm, - SeparatorDemo, - SheetDemo, - SheetSize, - SheetPosition, - SkeletonDemo, - SliderDemo, - SwitchDemo, - SwitchReactHookForm, - TableDemo, - TabsDemo, - TextareaDemo, - TextareaDisabled, - TextareaWithButton, - TextareaWithLabel, - TextareaWithText, - TextareaReactHookForm, - ToastDemo, - ToastDestructive, - ToastSimple, - ToastWithTitle, - ToastWithAction, - TooltipDemo, - TypographyBlockquote, - TypographyDemo, - TypographyH1, - TypographyH2, - TypographyH3, - TypographyH4, - TypographyInlineCode, - TypographyLarge, - TypographyLead, - TypographyList, - TypographyP, - TypographySmall, - TypographyMuted, - TypographyTable, - ToggleDemo, - ToggleSm, - ToggleLg, - ToggleOutline, - ToggleDisabled, - ToggleWithText, -} diff --git a/apps/www/components/examples/input/demo.tsx b/apps/www/components/examples/input/demo.tsx deleted file mode 100644 index 8cbad7854..000000000 --- a/apps/www/components/examples/input/demo.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Input } from "@/components/ui/input" - -export function InputDemo() { - return -} diff --git a/apps/www/components/examples/input/disabled.tsx b/apps/www/components/examples/input/disabled.tsx deleted file mode 100644 index 8c5861aae..000000000 --- a/apps/www/components/examples/input/disabled.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Input } from "@/components/ui/input" - -export function InputDisabled() { - return -} diff --git a/apps/www/components/examples/sheet/position.tsx b/apps/www/components/examples/sheet/position.tsx deleted file mode 100644 index 30cebb316..000000000 --- a/apps/www/components/examples/sheet/position.tsx +++ /dev/null @@ -1,78 +0,0 @@ -"use client" - -import { useState } from "react" - -import { Button } from "@/components/ui/button" -import { Input } from "@/components/ui/input" -import { Label } from "@/components/ui/label" -import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" -import { - Sheet, - SheetClose, - SheetContent, - SheetDescription, - SheetFooter, - SheetHeader, - SheetTitle, - SheetTrigger, -} from "@/components/ui/sheet" - -const SHEET_POSITIONS = ["top", "right", "bottom", "left"] as const - -type SheetPosition = (typeof SHEET_POSITIONS)[number] - -export function SheetPosition() { - const [position, setPosition] = useState("right") - return ( -
- setPosition(value as SheetPosition)} - > -
- {SHEET_POSITIONS.map((position, index) => ( -
- - -
- ))} -
-
- - - - - - - Edit profile - - Make changes to your profile here. Click save when you're done. - - -
-
- - -
-
- - -
-
- - - - - -
-
-
- ) -} diff --git a/apps/www/components/examples/sheet/size.tsx b/apps/www/components/examples/sheet/size.tsx deleted file mode 100644 index 02d381814..000000000 --- a/apps/www/components/examples/sheet/size.tsx +++ /dev/null @@ -1,78 +0,0 @@ -"use client" - -import { useState } from "react" - -import { Button } from "@/components/ui/button" -import { Input } from "@/components/ui/input" -import { Label } from "@/components/ui/label" -import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" -import { - Sheet, - SheetClose, - SheetContent, - SheetDescription, - SheetFooter, - SheetHeader, - SheetTitle, - SheetTrigger, -} from "@/components/ui/sheet" - -const SHEET_SIZES = ["sm", "default", "lg", "xl", "full", "content"] as const - -type SheetSize = (typeof SHEET_SIZES)[number] - -export function SheetSize() { - const [size, setSize] = useState("default") - return ( -
- setSize(value as SheetSize)} - > -
- {SHEET_SIZES.map((size, index) => ( -
- - -
- ))} -
-
- - - - - - - Edit profile - - Make changes to your profile here. Click save when you're done. - - -
-
- - -
-
- - -
-
- - - - - -
-
-
- ) -} diff --git a/apps/www/components/examples/textarea/demo.tsx b/apps/www/components/examples/textarea/demo.tsx deleted file mode 100644 index 6ddc09ef4..000000000 --- a/apps/www/components/examples/textarea/demo.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Textarea } from "@/components/ui/textarea" - -export function TextareaDemo() { - return