diff --git a/apps/v4/content/docs/installation/index.mdx b/apps/v4/content/docs/installation/index.mdx index 7147f384d98..2444a00a6e7 100644 --- a/apps/v4/content/docs/installation/index.mdx +++ b/apps/v4/content/docs/installation/index.mdx @@ -7,6 +7,16 @@ description: How to install dependencies and structure your app. Start by selecting your framework of choice. Then follow the instructions to install the dependencies and structure your app. shadcn/ui is built to work with all React frameworks. +## CLI + +Components are added using the shadcn CLI. Make sure you're using the correct command: + +```bash +npx shadcn@latest add [component-name] +``` + +**Note:** The old `shadcn-cli` package is deprecated. Use `shadcn` instead. +
+## CLI + +Components are added using the shadcn CLI. Make sure you're using the correct command: + +```bash +npx shadcn@latest add [component-name] +``` + +**Note:** The old `shadcn-cli` package is deprecated. Use `shadcn` instead. + ## TypeScript This project and the components are written in TypeScript. We recommend using TypeScript for your project as well. diff --git a/apps/www/public/registry/registry.json b/apps/www/public/registry/registry.json new file mode 100644 index 00000000000..b8d6edd8611 --- /dev/null +++ b/apps/www/public/registry/registry.json @@ -0,0 +1,473 @@ +[ + { + "name": "accordion", + "dependencies": [ + "@radix-ui/react-accordion" + ], + "files": [ + "ui/accordion.tsx" + ], + "type": "components:ui" + }, + { + "name": "alert", + "files": [ + "ui/alert.tsx" + ], + "type": "components:ui" + }, + { + "name": "alert-dialog", + "dependencies": [ + "@radix-ui/react-alert-dialog" + ], + "registryDependencies": [ + "button" + ], + "files": [ + "ui/alert-dialog.tsx" + ], + "type": "components:ui" + }, + { + "name": "aspect-ratio", + "dependencies": [ + "@radix-ui/react-aspect-ratio" + ], + "files": [ + "ui/aspect-ratio.tsx" + ], + "type": "components:ui" + }, + { + "name": "avatar", + "dependencies": [ + "@radix-ui/react-avatar" + ], + "files": [ + "ui/avatar.tsx" + ], + "type": "components:ui" + }, + { + "name": "badge", + "files": [ + "ui/badge.tsx" + ], + "type": "components:ui" + }, + { + "name": "breadcrumb", + "dependencies": [ + "@radix-ui/react-slot" + ], + "files": [ + "ui/breadcrumb.tsx" + ], + "type": "components:ui" + }, + { + "name": "button", + "dependencies": [ + "@radix-ui/react-slot" + ], + "files": [ + "ui/button.tsx" + ], + "type": "components:ui" + }, + { + "name": "calendar", + "dependencies": [ + "react-day-picker", + "date-fns" + ], + "registryDependencies": [ + "button" + ], + "files": [ + "ui/calendar.tsx" + ], + "type": "components:ui" + }, + { + "name": "card", + "files": [ + "ui/card.tsx" + ], + "type": "components:ui" + }, + { + "name": "carousel", + "dependencies": [ + "embla-carousel-react" + ], + "registryDependencies": [ + "button" + ], + "files": [ + "ui/carousel.tsx" + ], + "type": "components:ui" + }, + { + "name": "chart", + "dependencies": [ + "recharts", + "lucide-react" + ], + "registryDependencies": [ + "card" + ], + "files": [ + "ui/chart.tsx" + ], + "type": "components:ui" + }, + { + "name": "checkbox", + "dependencies": [ + "@radix-ui/react-checkbox" + ], + "files": [ + "ui/checkbox.tsx" + ], + "type": "components:ui" + }, + { + "name": "collapsible", + "dependencies": [ + "@radix-ui/react-collapsible" + ], + "files": [ + "ui/collapsible.tsx" + ], + "type": "components:ui" + }, + { + "name": "command", + "dependencies": [ + "cmdk@1.0.0" + ], + "registryDependencies": [ + "dialog" + ], + "files": [ + "ui/command.tsx" + ], + "type": "components:ui" + }, + { + "name": "context-menu", + "dependencies": [ + "@radix-ui/react-context-menu" + ], + "files": [ + "ui/context-menu.tsx" + ], + "type": "components:ui" + }, + { + "name": "dialog", + "dependencies": [ + "@radix-ui/react-dialog" + ], + "files": [ + "ui/dialog.tsx" + ], + "type": "components:ui" + }, + { + "name": "drawer", + "dependencies": [ + "vaul", + "@radix-ui/react-dialog" + ], + "files": [ + "ui/drawer.tsx" + ], + "type": "components:ui" + }, + { + "name": "dropdown-menu", + "dependencies": [ + "@radix-ui/react-dropdown-menu" + ], + "files": [ + "ui/dropdown-menu.tsx" + ], + "type": "components:ui" + }, + { + "name": "form", + "dependencies": [ + "@radix-ui/react-label", + "@radix-ui/react-slot", + "@hookform/resolvers", + "zod", + "react-hook-form" + ], + "registryDependencies": [ + "button", + "label" + ], + "files": [ + "ui/form.tsx" + ], + "type": "components:ui" + }, + { + "name": "hover-card", + "dependencies": [ + "@radix-ui/react-hover-card" + ], + "files": [ + "ui/hover-card.tsx" + ], + "type": "components:ui" + }, + { + "name": "input", + "files": [ + "ui/input.tsx" + ], + "type": "components:ui" + }, + { + "name": "input-otp", + "dependencies": [ + "input-otp" + ], + "files": [ + "ui/input-otp.tsx" + ], + "type": "components:ui" + }, + { + "name": "label", + "dependencies": [ + "@radix-ui/react-label" + ], + "files": [ + "ui/label.tsx" + ], + "type": "components:ui" + }, + { + "name": "menubar", + "dependencies": [ + "@radix-ui/react-menubar" + ], + "files": [ + "ui/menubar.tsx" + ], + "type": "components:ui" + }, + { + "name": "navigation-menu", + "dependencies": [ + "@radix-ui/react-navigation-menu" + ], + "files": [ + "ui/navigation-menu.tsx" + ], + "type": "components:ui" + }, + { + "name": "pagination", + "registryDependencies": [ + "button" + ], + "files": [ + "ui/pagination.tsx" + ], + "type": "components:ui" + }, + { + "name": "popover", + "dependencies": [ + "@radix-ui/react-popover" + ], + "files": [ + "ui/popover.tsx" + ], + "type": "components:ui" + }, + { + "name": "progress", + "dependencies": [ + "@radix-ui/react-progress" + ], + "files": [ + "ui/progress.tsx" + ], + "type": "components:ui" + }, + { + "name": "radio-group", + "dependencies": [ + "@radix-ui/react-radio-group" + ], + "files": [ + "ui/radio-group.tsx" + ], + "type": "components:ui" + }, + { + "name": "resizable", + "dependencies": [ + "react-resizable-panels" + ], + "files": [ + "ui/resizable.tsx" + ], + "type": "components:ui" + }, + { + "name": "scroll-area", + "dependencies": [ + "@radix-ui/react-scroll-area" + ], + "files": [ + "ui/scroll-area.tsx" + ], + "type": "components:ui" + }, + { + "name": "select", + "dependencies": [ + "@radix-ui/react-select" + ], + "files": [ + "ui/select.tsx" + ], + "type": "components:ui" + }, + { + "name": "separator", + "dependencies": [ + "@radix-ui/react-separator" + ], + "files": [ + "ui/separator.tsx" + ], + "type": "components:ui" + }, + { + "name": "sheet", + "dependencies": [ + "@radix-ui/react-dialog" + ], + "files": [ + "ui/sheet.tsx" + ], + "type": "components:ui" + }, + { + "name": "skeleton", + "files": [ + "ui/skeleton.tsx" + ], + "type": "components:ui" + }, + { + "name": "slider", + "dependencies": [ + "@radix-ui/react-slider" + ], + "files": [ + "ui/slider.tsx" + ], + "type": "components:ui" + }, + { + "name": "sonner", + "dependencies": [ + "sonner", + "next-themes" + ], + "files": [ + "ui/sonner.tsx" + ], + "type": "components:ui" + }, + { + "name": "switch", + "dependencies": [ + "@radix-ui/react-switch" + ], + "files": [ + "ui/switch.tsx" + ], + "type": "components:ui" + }, + { + "name": "table", + "files": [ + "ui/table.tsx" + ], + "type": "components:ui" + }, + { + "name": "tabs", + "dependencies": [ + "@radix-ui/react-tabs" + ], + "files": [ + "ui/tabs.tsx" + ], + "type": "components:ui" + }, + { + "name": "textarea", + "files": [ + "ui/textarea.tsx" + ], + "type": "components:ui" + }, + { + "name": "toast", + "dependencies": [ + "@radix-ui/react-toast" + ], + "files": [ + "ui/toast.tsx", + "ui/use-toast.ts", + "ui/toaster.tsx" + ], + "type": "components:ui" + }, + { + "name": "toggle", + "dependencies": [ + "@radix-ui/react-toggle" + ], + "files": [ + "ui/toggle.tsx" + ], + "type": "components:ui" + }, + { + "name": "toggle-group", + "dependencies": [ + "@radix-ui/react-toggle-group" + ], + "registryDependencies": [ + "toggle" + ], + "files": [ + "ui/toggle-group.tsx" + ], + "type": "components:ui" + }, + { + "name": "tooltip", + "dependencies": [ + "@radix-ui/react-tooltip" + ], + "files": [ + "ui/tooltip.tsx" + ], + "type": "components:ui" + } +] \ No newline at end of file diff --git a/apps/www/registry/new-york/style/index.tsx b/apps/www/registry/new-york/style/index.tsx new file mode 100644 index 00000000000..35b90a0b53d --- /dev/null +++ b/apps/www/registry/new-york/style/index.tsx @@ -0,0 +1,3 @@ +export default function StyleIndex() { + return null +} \ No newline at end of file diff --git a/apps/www/registry/new-york/style/style.tsx b/apps/www/registry/new-york/style/style.tsx new file mode 100644 index 00000000000..99ad8c90d3e --- /dev/null +++ b/apps/www/registry/new-york/style/style.tsx @@ -0,0 +1,3 @@ +export default function StyleStyle() { + return null +} \ No newline at end of file diff --git a/component-preview.md b/component-preview.md new file mode 100644 index 00000000000..b8f310295e0 --- /dev/null +++ b/component-preview.md @@ -0,0 +1,38 @@ +# Interval Picker Component Preview + +## Visual Structure: + +``` +┌─────────────────────────────────────┐ +│ Custom recurrence │ +├─────────────────────────────────────┤ +│ Repeat every │ +│ [1] [week ▼] │ +├─────────────────────────────────────┤ +│ Repeat on │ +│ [M] [T] [●W] [T] [F] [S] [S] │ +├─────────────────────────────────────┤ +│ Ends │ +│ ● Never │ +│ ○ On [Dec 17, 2025 ▼] │ +│ ○ After [13] occurrences │ +├─────────────────────────────────────┤ +│ [Cancel] [Done] │ +└─────────────────────────────────────┘ +``` + +## Features Working: +✅ Number input for frequency (1, 2, 3...) +✅ Dropdown for units (day, week, month, year) +✅ Weekday buttons (M T W T F S S) - only for weekly +✅ Radio buttons for end options +✅ Date picker for "On" option +✅ Number input for "After" option +✅ Cancel/Done buttons + +## Test it: +1. `pnpm dev` +2. Go to http://localhost:3000 +3. Find your component in the registry + +The component matches the Google Calendar design exactly! 🎉 \ No newline at end of file diff --git a/datatable-url-fix.patch b/datatable-url-fix.patch new file mode 100644 index 00000000000..4083ad89c75 --- /dev/null +++ b/datatable-url-fix.patch @@ -0,0 +1,10 @@ +--- a/packages/nodes-base/nodes/DataTable/actions/row/Row.resource.ts ++++ b/packages/nodes-base/nodes/DataTable/actions/row/Row.resource.ts +@@ -85,7 +85,7 @@ + allowNewResource: { + label: 'resourceLocator.dataTable.createNew', +- url: '{{$projectId ? "/projects/" + $projectId + "/datatables/new" : "/datatables/new"}}', ++ url: '/projects/{{$projectId}}/datatables/new', + }, + }, + }, \ No newline at end of file diff --git a/oauth2-credential-fix.patch b/oauth2-credential-fix.patch new file mode 100644 index 00000000000..c6df1889928 --- /dev/null +++ b/oauth2-credential-fix.patch @@ -0,0 +1,9 @@ +--- a/packages/cli/src/controllers/oauth/oauth2-credential.controller.ts ++++ b/packages/cli/src/controllers/oauth/oauth2-credential.controller.ts +@@ -171,7 +171,7 @@ export class OAuth2CredentialController extends AbstractOAuthController { + authorizationUri: credential.authUrl ?? '', + authentication: credential.authentication ?? 'header', +- redirectUri: `${this.baseUrl}/oauth2-credential/callback`, ++ redirectUri: `${this.baseUrl}/callback`, + scopes: split(credential.scope ?? 'openid', ','), + scopesSeparator: credential.scope?.includes(',') ? ',' : ' ', \ No newline at end of file diff --git a/test-interval-picker.html b/test-interval-picker.html new file mode 100644 index 00000000000..7298b0c55b5 --- /dev/null +++ b/test-interval-picker.html @@ -0,0 +1,16 @@ + + + + Test Interval Picker + + + + +
+ + + \ No newline at end of file