create-tauri-ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -0
- package/dist/index.mjs +53 -0
- package/index.js +3 -0
- package/package.json +62 -0
- package/templates/next/.env +1 -0
- package/templates/next/.github/workflows/release.yml +108 -0
- package/templates/next/.vscode/extensions.json +3 -0
- package/templates/next/LICENSE +21 -0
- package/templates/next/README.md +82 -0
- package/templates/next/app-icon.png +0 -0
- package/templates/next/next-env.d.ts +5 -0
- package/templates/next/next.config.js +17 -0
- package/templates/next/package.json +82 -0
- package/templates/next/pnpm-lock.yaml +4318 -0
- package/templates/next/postcss.config.js +6 -0
- package/templates/next/prettier.config.js +35 -0
- package/templates/next/public/avatars/01.png +0 -0
- package/templates/next/public/avatars/02.png +0 -0
- package/templates/next/public/avatars/03.png +0 -0
- package/templates/next/public/avatars/04.png +0 -0
- package/templates/next/public/avatars/05.png +0 -0
- package/templates/next/src/app/examples/authentication/components/user-auth-form.tsx +71 -0
- package/templates/next/src/app/examples/authentication/page.tsx +80 -0
- package/templates/next/src/app/examples/cards/components/cookie-settings.tsx +60 -0
- package/templates/next/src/app/examples/cards/components/create-account.tsx +60 -0
- package/templates/next/src/app/examples/cards/components/date-picker.tsx +18 -0
- package/templates/next/src/app/examples/cards/components/github-card.tsx +81 -0
- package/templates/next/src/app/examples/cards/components/notifications.tsx +51 -0
- package/templates/next/src/app/examples/cards/components/payment-method.tsx +117 -0
- package/templates/next/src/app/examples/cards/components/report-an-issue.tsx +82 -0
- package/templates/next/src/app/examples/cards/components/share-document.tsx +116 -0
- package/templates/next/src/app/examples/cards/components/team-members.tsx +147 -0
- package/templates/next/src/app/examples/cards/page.tsx +75 -0
- package/templates/next/src/app/examples/cards/styles.css +63 -0
- package/templates/next/src/app/examples/dashboard/components/date-range-picker.tsx +66 -0
- package/templates/next/src/app/examples/dashboard/components/main-nav.tsx +38 -0
- package/templates/next/src/app/examples/dashboard/components/overview.tsx +78 -0
- package/templates/next/src/app/examples/dashboard/components/recent-sales.tsx +67 -0
- package/templates/next/src/app/examples/dashboard/components/search.tsx +13 -0
- package/templates/next/src/app/examples/dashboard/components/team-switcher.tsx +205 -0
- package/templates/next/src/app/examples/dashboard/components/user-nav.tsx +67 -0
- package/templates/next/src/app/examples/dashboard/page.tsx +147 -0
- package/templates/next/src/app/examples/forms/account/account-form.tsx +219 -0
- package/templates/next/src/app/examples/forms/account/page.tsx +18 -0
- package/templates/next/src/app/examples/forms/appearance/appearance-form.tsx +164 -0
- package/templates/next/src/app/examples/forms/appearance/page.tsx +18 -0
- package/templates/next/src/app/examples/forms/components/sidebar-nav.tsx +43 -0
- package/templates/next/src/app/examples/forms/display/display-form.tsx +132 -0
- package/templates/next/src/app/examples/forms/display/page.tsx +17 -0
- package/templates/next/src/app/examples/forms/layout.tsx +57 -0
- package/templates/next/src/app/examples/forms/notifications/notifications-form.tsx +221 -0
- package/templates/next/src/app/examples/forms/notifications/page.tsx +18 -0
- package/templates/next/src/app/examples/forms/page.tsx +17 -0
- package/templates/next/src/app/examples/forms/profile-form.tsx +190 -0
- package/templates/next/src/app/examples/layout.tsx +7 -0
- package/templates/next/src/app/examples/music/components/album-artwork.tsx +84 -0
- package/templates/next/src/app/examples/music/components/menu.tsx +178 -0
- package/templates/next/src/app/examples/music/components/podcast-empty-placeholder.tsx +53 -0
- package/templates/next/src/app/examples/music/components/sidebar.tsx +100 -0
- package/templates/next/src/app/examples/music/data/albums.ts +71 -0
- package/templates/next/src/app/examples/music/data/playlists.ts +16 -0
- package/templates/next/src/app/examples/music/page.tsx +134 -0
- package/templates/next/src/app/examples/music/styles.css +65 -0
- package/templates/next/src/app/examples/playground/components/code-viewer.tsx +89 -0
- package/templates/next/src/app/examples/playground/components/icons.tsx +153 -0
- package/templates/next/src/app/examples/playground/components/maxlength-selector.tsx +55 -0
- package/templates/next/src/app/examples/playground/components/model-selector.tsx +163 -0
- package/templates/next/src/app/examples/playground/components/preset-actions.tsx +124 -0
- package/templates/next/src/app/examples/playground/components/preset-save.tsx +44 -0
- package/templates/next/src/app/examples/playground/components/preset-selector.tsx +82 -0
- package/templates/next/src/app/examples/playground/components/preset-share.tsx +46 -0
- package/templates/next/src/app/examples/playground/components/temperature-selector.tsx +57 -0
- package/templates/next/src/app/examples/playground/components/top-p-selector.tsx +54 -0
- package/templates/next/src/app/examples/playground/data/models.ts +62 -0
- package/templates/next/src/app/examples/playground/data/presets.ts +47 -0
- package/templates/next/src/app/examples/playground/page.tsx +160 -0
- package/templates/next/src/app/examples/playground/styles.css +65 -0
- package/templates/next/src/app/examples/tasks/components/columns.tsx +120 -0
- package/templates/next/src/app/examples/tasks/components/data-table-column-header.tsx +66 -0
- package/templates/next/src/app/examples/tasks/components/data-table-faceted-filter.tsx +147 -0
- package/templates/next/src/app/examples/tasks/components/data-table-pagination.tsx +97 -0
- package/templates/next/src/app/examples/tasks/components/data-table-row-actions.tsx +82 -0
- package/templates/next/src/app/examples/tasks/components/data-table-toolbar.tsx +63 -0
- package/templates/next/src/app/examples/tasks/components/data-table-view-options.tsx +59 -0
- package/templates/next/src/app/examples/tasks/components/data-table.tsx +126 -0
- package/templates/next/src/app/examples/tasks/components/user-nav.tsx +67 -0
- package/templates/next/src/app/examples/tasks/data/data.tsx +71 -0
- package/templates/next/src/app/examples/tasks/data/schema.ts +13 -0
- package/templates/next/src/app/examples/tasks/data/seed.ts +20 -0
- package/templates/next/src/app/examples/tasks/data/tasks.json +702 -0
- package/templates/next/src/app/examples/tasks/page.tsx +47 -0
- package/templates/next/src/app/layout.tsx +43 -0
- package/templates/next/src/app/page.tsx +5 -0
- package/templates/next/src/assets/Inter.var.woff2 +0 -0
- package/templates/next/src/assets/logo.png +0 -0
- package/templates/next/src/components/examples/.eslintrc.json +6 -0
- package/templates/next/src/components/examples/accordion/demo.tsx +32 -0
- package/templates/next/src/components/examples/alert/demo.tsx +15 -0
- package/templates/next/src/components/examples/alert/destructive.tsx +15 -0
- package/templates/next/src/components/examples/alert-dialog/demo.tsx +35 -0
- package/templates/next/src/components/examples/aspect-ratio/demo.tsx +16 -0
- package/templates/next/src/components/examples/avatar/demo.tsx +10 -0
- package/templates/next/src/components/examples/badge/demo.tsx +5 -0
- package/templates/next/src/components/examples/badge/destructive.tsx +5 -0
- package/templates/next/src/components/examples/badge/outline.tsx +5 -0
- package/templates/next/src/components/examples/badge/secondary.tsx +5 -0
- package/templates/next/src/components/examples/button/as-child.tsx +10 -0
- package/templates/next/src/components/examples/button/demo.tsx +5 -0
- package/templates/next/src/components/examples/button/destructive.tsx +5 -0
- package/templates/next/src/components/examples/button/ghost.tsx +5 -0
- package/templates/next/src/components/examples/button/link.tsx +5 -0
- package/templates/next/src/components/examples/button/loading.tsx +12 -0
- package/templates/next/src/components/examples/button/outline.tsx +5 -0
- package/templates/next/src/components/examples/button/secondary.tsx +5 -0
- package/templates/next/src/components/examples/button/with-icon.tsx +11 -0
- package/templates/next/src/components/examples/calendar/date-picker.tsx +43 -0
- package/templates/next/src/components/examples/calendar/date-range-picker.tsx +65 -0
- package/templates/next/src/components/examples/calendar/demo.tsx +18 -0
- package/templates/next/src/components/examples/calendar/react-hook-form.tsx +101 -0
- package/templates/next/src/components/examples/calendar/with-presets.tsx +62 -0
- package/templates/next/src/components/examples/card/demo.tsx +79 -0
- package/templates/next/src/components/examples/card/with-form.tsx +59 -0
- package/templates/next/src/components/examples/checkbox/demo.tsx +17 -0
- package/templates/next/src/components/examples/checkbox/disabled.tsx +15 -0
- package/templates/next/src/components/examples/checkbox/react-hook-form-multiple.tsx +127 -0
- package/templates/next/src/components/examples/checkbox/react-hook-form-single.tsx +72 -0
- package/templates/next/src/components/examples/checkbox/with-text.tsx +22 -0
- package/templates/next/src/components/examples/collapsible/demo.tsx +46 -0
- package/templates/next/src/components/examples/combobox/demo.tsx +90 -0
- package/templates/next/src/components/examples/combobox/dropdown-menu.tsx +110 -0
- package/templates/next/src/components/examples/combobox/popover.tsx +124 -0
- package/templates/next/src/components/examples/combobox/react-hook-form.tsx +135 -0
- package/templates/next/src/components/examples/command/combobox.tsx +90 -0
- package/templates/next/src/components/examples/command/demo.tsx +62 -0
- package/templates/next/src/components/examples/command/dialog.tsx +86 -0
- package/templates/next/src/components/examples/command/dropdown-menu.tsx +110 -0
- package/templates/next/src/components/examples/command/popover.tsx +124 -0
- package/templates/next/src/components/examples/context-menu/demo.tsx +67 -0
- package/templates/next/src/components/examples/data-table/columns.tsx +110 -0
- package/templates/next/src/components/examples/data-table/data-table.tsx +185 -0
- package/templates/next/src/components/examples/data-table/demo.tsx +41 -0
- package/templates/next/src/components/examples/date-picker/demo.tsx +43 -0
- package/templates/next/src/components/examples/date-picker/react-hook-form.tsx +101 -0
- package/templates/next/src/components/examples/date-picker/with-presets.tsx +62 -0
- package/templates/next/src/components/examples/date-picker/with-range.tsx +65 -0
- package/templates/next/src/components/examples/dialog/demo.tsx +47 -0
- package/templates/next/src/components/examples/dropdown-menu/checkboxes.tsx +53 -0
- package/templates/next/src/components/examples/dropdown-menu/demo.tsx +122 -0
- package/templates/next/src/components/examples/dropdown-menu/radio-group.tsx +37 -0
- package/templates/next/src/components/examples/hover-card/demo.tsx +39 -0
- package/templates/next/src/components/examples/index.tsx +213 -0
- package/templates/next/src/components/examples/input/demo.tsx +5 -0
- package/templates/next/src/components/examples/input/disabled.tsx +5 -0
- package/templates/next/src/components/examples/input/file.tsx +11 -0
- package/templates/next/src/components/examples/input/react-hook-form.tsx +65 -0
- package/templates/next/src/components/examples/input/with-button.tsx +11 -0
- package/templates/next/src/components/examples/input/with-label.tsx +11 -0
- package/templates/next/src/components/examples/input/with-text.tsx +12 -0
- package/templates/next/src/components/examples/label/demo.tsx +13 -0
- package/templates/next/src/components/examples/menubar/demo.tsx +107 -0
- package/templates/next/src/components/examples/navigation-menu/demo.tsx +144 -0
- package/templates/next/src/components/examples/popover/demo.tsx +67 -0
- package/templates/next/src/components/examples/progress/demo.tsx +16 -0
- package/templates/next/src/components/examples/radio-group/demo.tsx +21 -0
- package/templates/next/src/components/examples/radio-group/react-hook-form.tsx +88 -0
- package/templates/next/src/components/examples/scroll-area/demo.tsx +26 -0
- package/templates/next/src/components/examples/select/demo.tsx +31 -0
- package/templates/next/src/components/examples/select/react-hook-form.tsx +83 -0
- package/templates/next/src/components/examples/separator/demo.tsx +22 -0
- package/templates/next/src/components/examples/sheet/demo.tsx +47 -0
- package/templates/next/src/components/examples/sheet/position.tsx +75 -0
- package/templates/next/src/components/examples/sheet/size.tsx +75 -0
- package/templates/next/src/components/examples/skeleton/demo.tsx +13 -0
- package/templates/next/src/components/examples/slider/demo.tsx +16 -0
- package/templates/next/src/components/examples/switch/demo.tsx +11 -0
- package/templates/next/src/components/examples/switch/react-hook-form.tsx +101 -0
- package/templates/next/src/components/examples/table/demo.tsx +80 -0
- package/templates/next/src/components/examples/tabs/demo.tsx +69 -0
- package/templates/next/src/components/examples/textarea/demo.tsx +5 -0
- package/templates/next/src/components/examples/textarea/disabled.tsx +5 -0
- package/templates/next/src/components/examples/textarea/react-hook-form.tsx +77 -0
- package/templates/next/src/components/examples/textarea/with-button.tsx +11 -0
- package/templates/next/src/components/examples/textarea/with-label.tsx +11 -0
- package/templates/next/src/components/examples/textarea/with-text.tsx +14 -0
- package/templates/next/src/components/examples/toast/demo.tsx +26 -0
- package/templates/next/src/components/examples/toast/destructive.tsx +25 -0
- package/templates/next/src/components/examples/toast/simple.tsx +21 -0
- package/templates/next/src/components/examples/toast/with-action.tsx +24 -0
- package/templates/next/src/components/examples/toast/with-title.tsx +22 -0
- package/templates/next/src/components/examples/toggle/demo.tsx +11 -0
- package/templates/next/src/components/examples/toggle/disabled.tsx +11 -0
- package/templates/next/src/components/examples/toggle/lg.tsx +11 -0
- package/templates/next/src/components/examples/toggle/outline.tsx +11 -0
- package/templates/next/src/components/examples/toggle/sm.tsx +11 -0
- package/templates/next/src/components/examples/toggle/with-text.tsx +12 -0
- package/templates/next/src/components/examples/tooltip/demo.tsx +27 -0
- package/templates/next/src/components/examples/typography/blockquote.tsx +8 -0
- package/templates/next/src/components/examples/typography/demo.tsx +119 -0
- package/templates/next/src/components/examples/typography/h1.tsx +7 -0
- package/templates/next/src/components/examples/typography/h2.tsx +7 -0
- package/templates/next/src/components/examples/typography/h3.tsx +7 -0
- package/templates/next/src/components/examples/typography/h4.tsx +7 -0
- package/templates/next/src/components/examples/typography/inline-code.tsx +7 -0
- package/templates/next/src/components/examples/typography/large.tsx +5 -0
- package/templates/next/src/components/examples/typography/lead.tsx +8 -0
- package/templates/next/src/components/examples/typography/list.tsx +9 -0
- package/templates/next/src/components/examples/typography/muted.tsx +5 -0
- package/templates/next/src/components/examples/typography/p.tsx +8 -0
- package/templates/next/src/components/examples/typography/small.tsx +5 -0
- package/templates/next/src/components/examples/typography/table.tsx +44 -0
- package/templates/next/src/components/examples-nav.tsx +70 -0
- package/templates/next/src/components/greeting.tsx +21 -0
- package/templates/next/src/components/icons.tsx +154 -0
- package/templates/next/src/components/menu-mode-toggle.tsx +46 -0
- package/templates/next/src/components/menu.tsx +268 -0
- package/templates/next/src/components/mode-toggle.tsx +43 -0
- package/templates/next/src/components/page-header.tsx +50 -0
- package/templates/next/src/components/react-hook-form/form.tsx +176 -0
- package/templates/next/src/components/style-switcher.tsx +19 -0
- package/templates/next/src/components/tailwind-indicator.tsx +18 -0
- package/templates/next/src/components/theme-provider.tsx +9 -0
- package/templates/next/src/components/ui/accordion.tsx +60 -0
- package/templates/next/src/components/ui/alert-dialog.tsx +150 -0
- package/templates/next/src/components/ui/alert.tsx +61 -0
- package/templates/next/src/components/ui/aspect-ratio.tsx +7 -0
- package/templates/next/src/components/ui/avatar.tsx +50 -0
- package/templates/next/src/components/ui/badge.tsx +36 -0
- package/templates/next/src/components/ui/button.tsx +51 -0
- package/templates/next/src/components/ui/calendar.tsx +64 -0
- package/templates/next/src/components/ui/card.tsx +81 -0
- package/templates/next/src/components/ui/checkbox.tsx +30 -0
- package/templates/next/src/components/ui/collapsible.tsx +11 -0
- package/templates/next/src/components/ui/command.tsx +155 -0
- package/templates/next/src/components/ui/context-menu.tsx +200 -0
- package/templates/next/src/components/ui/dialog.tsx +128 -0
- package/templates/next/src/components/ui/dropdown-menu.tsx +200 -0
- package/templates/next/src/components/ui/hover-card.tsx +29 -0
- package/templates/next/src/components/ui/input.tsx +27 -0
- package/templates/next/src/components/ui/label.tsx +26 -0
- package/templates/next/src/components/ui/menubar.tsx +236 -0
- package/templates/next/src/components/ui/navigation-menu.tsx +130 -0
- package/templates/next/src/components/ui/popover.tsx +31 -0
- package/templates/next/src/components/ui/progress.tsx +28 -0
- package/templates/next/src/components/ui/radio-group.tsx +44 -0
- package/templates/next/src/components/ui/scroll-area.tsx +48 -0
- package/templates/next/src/components/ui/select.tsx +120 -0
- package/templates/next/src/components/ui/separator.tsx +31 -0
- package/templates/next/src/components/ui/sheet.tsx +230 -0
- package/templates/next/src/components/ui/skeleton.tsx +17 -0
- package/templates/next/src/components/ui/slider.tsx +28 -0
- package/templates/next/src/components/ui/switch.tsx +29 -0
- package/templates/next/src/components/ui/table.tsx +114 -0
- package/templates/next/src/components/ui/tabs.tsx +55 -0
- package/templates/next/src/components/ui/textarea.tsx +26 -0
- package/templates/next/src/components/ui/toast.tsx +129 -0
- package/templates/next/src/components/ui/toaster.tsx +35 -0
- package/templates/next/src/components/ui/toggle.tsx +45 -0
- package/templates/next/src/components/ui/tooltip.tsx +30 -0
- package/templates/next/src/components/ui/use-toast.ts +191 -0
- package/templates/next/src/data/albums.ts +71 -0
- package/templates/next/src/data/playlists.ts +16 -0
- package/templates/next/src/hooks/use-lock-body.ts +12 -0
- package/templates/next/src/hooks/use-mounted.ts +11 -0
- package/templates/next/src/hooks/use-mutation-observer.ts +20 -0
- package/templates/next/src/lib/fonts.ts +11 -0
- package/templates/next/src/lib/utils.ts +19 -0
- package/templates/next/src/styles/globals.css +124 -0
- package/templates/next/src-tauri/Cargo.lock +3636 -0
- package/templates/next/src-tauri/Cargo.toml +36 -0
- package/templates/next/src-tauri/build.rs +3 -0
- package/templates/next/src-tauri/icons/128x128.png +0 -0
- package/templates/next/src-tauri/icons/128x128@2x.png +0 -0
- package/templates/next/src-tauri/icons/32x32.png +0 -0
- package/templates/next/src-tauri/icons/Square107x107Logo.png +0 -0
- package/templates/next/src-tauri/icons/Square142x142Logo.png +0 -0
- package/templates/next/src-tauri/icons/Square150x150Logo.png +0 -0
- package/templates/next/src-tauri/icons/Square284x284Logo.png +0 -0
- package/templates/next/src-tauri/icons/Square30x30Logo.png +0 -0
- package/templates/next/src-tauri/icons/Square310x310Logo.png +0 -0
- package/templates/next/src-tauri/icons/Square44x44Logo.png +0 -0
- package/templates/next/src-tauri/icons/Square71x71Logo.png +0 -0
- package/templates/next/src-tauri/icons/Square89x89Logo.png +0 -0
- package/templates/next/src-tauri/icons/StoreLogo.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
- package/templates/next/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- package/templates/next/src-tauri/icons/icon.icns +0 -0
- package/templates/next/src-tauri/icons/icon.ico +0 -0
- package/templates/next/src-tauri/icons/icon.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-20x20@1x.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-20x20@2x-1.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-20x20@2x.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-20x20@3x.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-29x29@1x.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-29x29@2x-1.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-29x29@2x.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-29x29@3x.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-40x40@1x.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-40x40@2x-1.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-40x40@2x.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-40x40@3x.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-512@2x.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-60x60@2x.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-60x60@3x.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-76x76@1x.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-76x76@2x.png +0 -0
- package/templates/next/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png +0 -0
- package/templates/next/src-tauri/src/main.rs +19 -0
- package/templates/next/src-tauri/tauri.conf.json +63 -0
- package/templates/next/tailwind.config.js +80 -0
- package/templates/next/tsconfig.json +35 -0
- package/templates/vite/.github/workflows/release.yml +108 -0
- package/templates/vite/.vscode/extensions.json +3 -0
- package/templates/vite/README.md +7 -0
- package/templates/vite/app-icon.png +0 -0
- package/templates/vite/index.html +16 -0
- package/templates/vite/package.json +75 -0
- package/templates/vite/pnpm-lock.yaml +4569 -0
- package/templates/vite/postcss.config.js +6 -0
- package/templates/vite/prettier.config.cjs +35 -0
- package/templates/vite/src/App.tsx +39 -0
- package/templates/vite/src/aa +34 -0
- package/templates/vite/src/assets/Inter.var.woff2 +0 -0
- package/templates/vite/src/components/icons.tsx +154 -0
- package/templates/vite/src/components/menu-mode-toggle.tsx +46 -0
- package/templates/vite/src/components/menu.tsx +232 -0
- package/templates/vite/src/components/tailwind-indicator.tsx +18 -0
- package/templates/vite/src/components/theme-provider.tsx +9 -0
- package/templates/vite/src/components/ui/accordion.tsx +60 -0
- package/templates/vite/src/components/ui/alert-dialog.tsx +150 -0
- package/templates/vite/src/components/ui/alert.tsx +61 -0
- package/templates/vite/src/components/ui/aspect-ratio.tsx +7 -0
- package/templates/vite/src/components/ui/avatar.tsx +50 -0
- package/templates/vite/src/components/ui/badge.tsx +36 -0
- package/templates/vite/src/components/ui/button.tsx +51 -0
- package/templates/vite/src/components/ui/calendar.tsx +64 -0
- package/templates/vite/src/components/ui/card.tsx +81 -0
- package/templates/vite/src/components/ui/checkbox.tsx +30 -0
- package/templates/vite/src/components/ui/collapsible.tsx +11 -0
- package/templates/vite/src/components/ui/command.tsx +155 -0
- package/templates/vite/src/components/ui/context-menu.tsx +200 -0
- package/templates/vite/src/components/ui/dialog.tsx +128 -0
- package/templates/vite/src/components/ui/dropdown-menu.tsx +200 -0
- package/templates/vite/src/components/ui/hover-card.tsx +29 -0
- package/templates/vite/src/components/ui/input.tsx +27 -0
- package/templates/vite/src/components/ui/label.tsx +26 -0
- package/templates/vite/src/components/ui/menubar.tsx +236 -0
- package/templates/vite/src/components/ui/navigation-menu.tsx +130 -0
- package/templates/vite/src/components/ui/popover.tsx +31 -0
- package/templates/vite/src/components/ui/progress.tsx +28 -0
- package/templates/vite/src/components/ui/radio-group.tsx +44 -0
- package/templates/vite/src/components/ui/scroll-area.tsx +48 -0
- package/templates/vite/src/components/ui/select.tsx +120 -0
- package/templates/vite/src/components/ui/separator.tsx +31 -0
- package/templates/vite/src/components/ui/sheet.tsx +230 -0
- package/templates/vite/src/components/ui/skeleton.tsx +17 -0
- package/templates/vite/src/components/ui/slider.tsx +28 -0
- package/templates/vite/src/components/ui/switch.tsx +29 -0
- package/templates/vite/src/components/ui/table.tsx +114 -0
- package/templates/vite/src/components/ui/tabs.tsx +55 -0
- package/templates/vite/src/components/ui/textarea.tsx +26 -0
- package/templates/vite/src/components/ui/toast.tsx +129 -0
- package/templates/vite/src/components/ui/toaster.tsx +35 -0
- package/templates/vite/src/components/ui/toggle.tsx +45 -0
- package/templates/vite/src/components/ui/tooltip.tsx +30 -0
- package/templates/vite/src/components/ui/use-toast.ts +191 -0
- package/templates/vite/src/dashboard/components/date-range-picker.tsx +66 -0
- package/templates/vite/src/dashboard/components/main-nav.tsx +38 -0
- package/templates/vite/src/dashboard/components/overview.tsx +78 -0
- package/templates/vite/src/dashboard/components/recent-sales.tsx +67 -0
- package/templates/vite/src/dashboard/components/search.tsx +13 -0
- package/templates/vite/src/dashboard/components/team-switcher.tsx +205 -0
- package/templates/vite/src/dashboard/components/user-nav.tsx +67 -0
- package/templates/vite/src/dashboard/page.tsx +140 -0
- package/templates/vite/src/lib/utils.ts +19 -0
- package/templates/vite/src/main.tsx +10 -0
- package/templates/vite/src/styles/globals.css +124 -0
- package/templates/vite/src/vite-env.d.ts +1 -0
- package/templates/vite/src-tauri/Cargo.lock +3636 -0
- package/templates/vite/src-tauri/Cargo.toml +33 -0
- package/templates/vite/src-tauri/build.rs +3 -0
- package/templates/vite/src-tauri/icons/128x128.png +0 -0
- package/templates/vite/src-tauri/icons/128x128@2x.png +0 -0
- package/templates/vite/src-tauri/icons/32x32.png +0 -0
- package/templates/vite/src-tauri/icons/Square107x107Logo.png +0 -0
- package/templates/vite/src-tauri/icons/Square142x142Logo.png +0 -0
- package/templates/vite/src-tauri/icons/Square150x150Logo.png +0 -0
- package/templates/vite/src-tauri/icons/Square284x284Logo.png +0 -0
- package/templates/vite/src-tauri/icons/Square30x30Logo.png +0 -0
- package/templates/vite/src-tauri/icons/Square310x310Logo.png +0 -0
- package/templates/vite/src-tauri/icons/Square44x44Logo.png +0 -0
- package/templates/vite/src-tauri/icons/Square71x71Logo.png +0 -0
- package/templates/vite/src-tauri/icons/Square89x89Logo.png +0 -0
- package/templates/vite/src-tauri/icons/StoreLogo.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
- package/templates/vite/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- package/templates/vite/src-tauri/icons/icon.icns +0 -0
- package/templates/vite/src-tauri/icons/icon.ico +0 -0
- package/templates/vite/src-tauri/icons/icon.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-20x20@1x.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-20x20@2x-1.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-20x20@2x.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-20x20@3x.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-29x29@1x.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-29x29@2x-1.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-29x29@2x.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-29x29@3x.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-40x40@1x.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-40x40@2x-1.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-40x40@2x.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-40x40@3x.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-512@2x.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-60x60@2x.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-60x60@3x.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-76x76@1x.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-76x76@2x.png +0 -0
- package/templates/vite/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png +0 -0
- package/templates/vite/src-tauri/src/main.rs +16 -0
- package/templates/vite/src-tauri/tauri.conf.json +63 -0
- package/templates/vite/tailwind.config.js +78 -0
- package/templates/vite/tsconfig.json +26 -0
- package/templates/vite/tsconfig.node.json +9 -0
- package/templates/vite/vite.config.ts +33 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Button } from "@/components/ui/button"
|
|
2
|
+
import {
|
|
3
|
+
Dialog,
|
|
4
|
+
DialogContent,
|
|
5
|
+
DialogDescription,
|
|
6
|
+
DialogHeader,
|
|
7
|
+
DialogTitle,
|
|
8
|
+
DialogTrigger,
|
|
9
|
+
} from "@/components/ui/dialog"
|
|
10
|
+
|
|
11
|
+
export function CodeViewer() {
|
|
12
|
+
return (
|
|
13
|
+
<Dialog>
|
|
14
|
+
<DialogTrigger asChild>
|
|
15
|
+
<Button variant="secondary">View code</Button>
|
|
16
|
+
</DialogTrigger>
|
|
17
|
+
<DialogContent className="sm:max-w-[625px]">
|
|
18
|
+
<DialogHeader>
|
|
19
|
+
<DialogTitle>View code</DialogTitle>
|
|
20
|
+
<DialogDescription>
|
|
21
|
+
You can use the following code to start integrating your current
|
|
22
|
+
prompt and settings into your application.
|
|
23
|
+
</DialogDescription>
|
|
24
|
+
</DialogHeader>
|
|
25
|
+
<div className="grid gap-4">
|
|
26
|
+
<div className="rounded-md bg-black p-6">
|
|
27
|
+
<pre>
|
|
28
|
+
<code className="grid gap-1 text-sm text-muted-foreground [&_span]:h-4">
|
|
29
|
+
<span>
|
|
30
|
+
<span className="text-sky-300">import</span> os
|
|
31
|
+
</span>
|
|
32
|
+
<span>
|
|
33
|
+
<span className="text-sky-300">import</span> openai
|
|
34
|
+
</span>
|
|
35
|
+
<span />
|
|
36
|
+
<span>
|
|
37
|
+
openai.api_key = os.getenv(
|
|
38
|
+
<span className="text-green-300">
|
|
39
|
+
"OPENAI_API_KEY"
|
|
40
|
+
</span>
|
|
41
|
+
)
|
|
42
|
+
</span>
|
|
43
|
+
<span />
|
|
44
|
+
<span>response = openai.Completion.create(</span>
|
|
45
|
+
<span>
|
|
46
|
+
{" "}
|
|
47
|
+
model=
|
|
48
|
+
<span className="text-green-300">"davinci"</span>,
|
|
49
|
+
</span>
|
|
50
|
+
<span>
|
|
51
|
+
{" "}
|
|
52
|
+
prompt=<span className="text-amber-300">""</span>,
|
|
53
|
+
</span>
|
|
54
|
+
<span>
|
|
55
|
+
{" "}
|
|
56
|
+
temperature=<span className="text-amber-300">0.9</span>,
|
|
57
|
+
</span>
|
|
58
|
+
<span>
|
|
59
|
+
{" "}
|
|
60
|
+
max_tokens=<span className="text-amber-300">5</span>,
|
|
61
|
+
</span>
|
|
62
|
+
<span>
|
|
63
|
+
{" "}
|
|
64
|
+
top_p=<span className="text-amber-300">1</span>,
|
|
65
|
+
</span>
|
|
66
|
+
<span>
|
|
67
|
+
{" "}
|
|
68
|
+
frequency_penalty=<span className="text-amber-300">0</span>,
|
|
69
|
+
</span>
|
|
70
|
+
<span>
|
|
71
|
+
{" "}
|
|
72
|
+
presence_penalty=<span className="text-green-300">0</span>,
|
|
73
|
+
</span>
|
|
74
|
+
<span>)</span>
|
|
75
|
+
</code>
|
|
76
|
+
</pre>
|
|
77
|
+
</div>
|
|
78
|
+
<div>
|
|
79
|
+
<p className="text-sm text-muted-foreground">
|
|
80
|
+
Your API Key can be found here. You should use environment
|
|
81
|
+
variables or a secret management tool to expose your key to your
|
|
82
|
+
applications.
|
|
83
|
+
</p>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</DialogContent>
|
|
87
|
+
</Dialog>
|
|
88
|
+
)
|
|
89
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AlertTriangle,
|
|
3
|
+
ArrowRight,
|
|
4
|
+
Check,
|
|
5
|
+
ChevronLeft,
|
|
6
|
+
ChevronRight,
|
|
7
|
+
ClipboardCheck,
|
|
8
|
+
Copy,
|
|
9
|
+
CreditCard,
|
|
10
|
+
Fingerprint,
|
|
11
|
+
HelpCircle,
|
|
12
|
+
Laptop,
|
|
13
|
+
Loader2,
|
|
14
|
+
LucideProps,
|
|
15
|
+
Moon,
|
|
16
|
+
MoreVertical,
|
|
17
|
+
Plus,
|
|
18
|
+
Settings,
|
|
19
|
+
SunMedium,
|
|
20
|
+
Trash,
|
|
21
|
+
Twitter,
|
|
22
|
+
User,
|
|
23
|
+
X,
|
|
24
|
+
type Icon as LucideIcon,
|
|
25
|
+
} from "lucide-react"
|
|
26
|
+
|
|
27
|
+
export type Icon = LucideIcon
|
|
28
|
+
|
|
29
|
+
export const Icons = {
|
|
30
|
+
logo: Fingerprint,
|
|
31
|
+
close: X,
|
|
32
|
+
spinner: Loader2,
|
|
33
|
+
chevronLeft: ChevronLeft,
|
|
34
|
+
chevronRight: ChevronRight,
|
|
35
|
+
trash: Trash,
|
|
36
|
+
settings: Settings,
|
|
37
|
+
billing: CreditCard,
|
|
38
|
+
ellipsis: MoreVertical,
|
|
39
|
+
add: Plus,
|
|
40
|
+
warning: AlertTriangle,
|
|
41
|
+
user: User,
|
|
42
|
+
arrowRight: ArrowRight,
|
|
43
|
+
help: HelpCircle,
|
|
44
|
+
twitter: Twitter,
|
|
45
|
+
check: Check,
|
|
46
|
+
copy: Copy,
|
|
47
|
+
copyDone: ClipboardCheck,
|
|
48
|
+
sun: SunMedium,
|
|
49
|
+
moon: Moon,
|
|
50
|
+
laptop: Laptop,
|
|
51
|
+
gitHub: (props: LucideProps) => (
|
|
52
|
+
<svg viewBox="0 0 438.549 438.549" {...props}>
|
|
53
|
+
<path
|
|
54
|
+
fill="currentColor"
|
|
55
|
+
d="M409.132 114.573c-19.608-33.596-46.205-60.194-79.798-79.8-33.598-19.607-70.277-29.408-110.063-29.408-39.781 0-76.472 9.804-110.063 29.408-33.596 19.605-60.192 46.204-79.8 79.8C9.803 148.168 0 184.854 0 224.63c0 47.78 13.94 90.745 41.827 128.906 27.884 38.164 63.906 64.572 108.063 79.227 5.14.954 8.945.283 11.419-1.996 2.475-2.282 3.711-5.14 3.711-8.562 0-.571-.049-5.708-.144-15.417a2549.81 2549.81 0 01-.144-25.406l-6.567 1.136c-4.187.767-9.469 1.092-15.846 1-6.374-.089-12.991-.757-19.842-1.999-6.854-1.231-13.229-4.086-19.13-8.559-5.898-4.473-10.085-10.328-12.56-17.556l-2.855-6.57c-1.903-4.374-4.899-9.233-8.992-14.559-4.093-5.331-8.232-8.945-12.419-10.848l-1.999-1.431c-1.332-.951-2.568-2.098-3.711-3.429-1.142-1.331-1.997-2.663-2.568-3.997-.572-1.335-.098-2.43 1.427-3.289 1.525-.859 4.281-1.276 8.28-1.276l5.708.853c3.807.763 8.516 3.042 14.133 6.851 5.614 3.806 10.229 8.754 13.846 14.842 4.38 7.806 9.657 13.754 15.846 17.847 6.184 4.093 12.419 6.136 18.699 6.136 6.28 0 11.704-.476 16.274-1.423 4.565-.952 8.848-2.383 12.847-4.285 1.713-12.758 6.377-22.559 13.988-29.41-10.848-1.14-20.601-2.857-29.264-5.14-8.658-2.286-17.605-5.996-26.835-11.14-9.235-5.137-16.896-11.516-22.985-19.126-6.09-7.614-11.088-17.61-14.987-29.979-3.901-12.374-5.852-26.648-5.852-42.826 0-23.035 7.52-42.637 22.557-58.817-7.044-17.318-6.379-36.732 1.997-58.24 5.52-1.715 13.706-.428 24.554 3.853 10.85 4.283 18.794 7.952 23.84 10.994 5.046 3.041 9.089 5.618 12.135 7.708 17.705-4.947 35.976-7.421 54.818-7.421s37.117 2.474 54.823 7.421l10.849-6.849c7.419-4.57 16.18-8.758 26.262-12.565 10.088-3.805 17.802-4.853 23.134-3.138 8.562 21.509 9.325 40.922 2.279 58.24 15.036 16.18 22.559 35.787 22.559 58.817 0 16.178-1.958 30.497-5.853 42.966-3.9 12.471-8.941 22.457-15.125 29.979-6.191 7.521-13.901 13.85-23.131 18.986-9.232 5.14-18.182 8.85-26.84 11.136-8.662 2.286-18.415 4.004-29.263 5.146 9.894 8.562 14.842 22.077 14.842 40.539v60.237c0 3.422 1.19 6.279 3.572 8.562 2.379 2.279 6.136 2.95 11.276 1.995 44.163-14.653 80.185-41.062 108.068-79.226 27.88-38.161 41.825-81.126 41.825-128.906-.01-39.771-9.818-76.454-29.414-110.049z"
|
|
56
|
+
></path>
|
|
57
|
+
</svg>
|
|
58
|
+
),
|
|
59
|
+
completeMode: ({ ...props }: LucideProps) => (
|
|
60
|
+
<svg
|
|
61
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
62
|
+
viewBox="0 0 20 20"
|
|
63
|
+
fill="none"
|
|
64
|
+
{...props}
|
|
65
|
+
>
|
|
66
|
+
<rect x="4" y="3" width="12" height="2" rx="1" fill="currentColor"></rect>
|
|
67
|
+
<rect x="4" y="7" width="12" height="2" rx="1" fill="currentColor"></rect>
|
|
68
|
+
<rect x="4" y="11" width="3" height="2" rx="1" fill="currentColor"></rect>
|
|
69
|
+
<rect x="4" y="15" width="3" height="2" rx="1" fill="currentColor"></rect>
|
|
70
|
+
<rect
|
|
71
|
+
x="8.5"
|
|
72
|
+
y="11"
|
|
73
|
+
width="3"
|
|
74
|
+
height="2"
|
|
75
|
+
rx="1"
|
|
76
|
+
fill="currentColor"
|
|
77
|
+
></rect>
|
|
78
|
+
<rect
|
|
79
|
+
x="8.5"
|
|
80
|
+
y="15"
|
|
81
|
+
width="3"
|
|
82
|
+
height="2"
|
|
83
|
+
rx="1"
|
|
84
|
+
fill="currentColor"
|
|
85
|
+
></rect>
|
|
86
|
+
<rect
|
|
87
|
+
x="13"
|
|
88
|
+
y="11"
|
|
89
|
+
width="3"
|
|
90
|
+
height="2"
|
|
91
|
+
rx="1"
|
|
92
|
+
fill="currentColor"
|
|
93
|
+
></rect>
|
|
94
|
+
</svg>
|
|
95
|
+
),
|
|
96
|
+
insertMode: ({ ...props }: LucideProps) => (
|
|
97
|
+
<svg
|
|
98
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
99
|
+
viewBox="0 0 20 20"
|
|
100
|
+
fill="none"
|
|
101
|
+
{...props}
|
|
102
|
+
>
|
|
103
|
+
<path
|
|
104
|
+
fillRule="evenodd"
|
|
105
|
+
clipRule="evenodd"
|
|
106
|
+
d="M14.491 7.769a.888.888 0 0 1 .287.648.888.888 0 0 1-.287.648l-3.916 3.667a1.013 1.013 0 0 1-.692.268c-.26 0-.509-.097-.692-.268L5.275 9.065A.886.886 0 0 1 5 8.42a.889.889 0 0 1 .287-.64c.181-.17.427-.267.683-.269.257-.002.504.09.69.258L8.903 9.87V3.917c0-.243.103-.477.287-.649.183-.171.432-.268.692-.268.26 0 .509.097.692.268a.888.888 0 0 1 .287.649V9.87l2.245-2.102c.183-.172.432-.269.692-.269.26 0 .508.097.692.269Z"
|
|
107
|
+
fill="currentColor"
|
|
108
|
+
></path>
|
|
109
|
+
<rect x="4" y="15" width="3" height="2" rx="1" fill="currentColor"></rect>
|
|
110
|
+
<rect
|
|
111
|
+
x="8.5"
|
|
112
|
+
y="15"
|
|
113
|
+
width="3"
|
|
114
|
+
height="2"
|
|
115
|
+
rx="1"
|
|
116
|
+
fill="currentColor"
|
|
117
|
+
></rect>
|
|
118
|
+
<rect
|
|
119
|
+
x="13"
|
|
120
|
+
y="15"
|
|
121
|
+
width="3"
|
|
122
|
+
height="2"
|
|
123
|
+
rx="1"
|
|
124
|
+
fill="currentColor"
|
|
125
|
+
></rect>
|
|
126
|
+
</svg>
|
|
127
|
+
),
|
|
128
|
+
editMode: ({ ...props }: LucideProps) => (
|
|
129
|
+
<svg
|
|
130
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
131
|
+
viewBox="0 0 20 20"
|
|
132
|
+
fill="none"
|
|
133
|
+
{...props}
|
|
134
|
+
>
|
|
135
|
+
<rect x="4" y="3" width="12" height="2" rx="1" fill="currentColor"></rect>
|
|
136
|
+
<rect x="4" y="7" width="12" height="2" rx="1" fill="currentColor"></rect>
|
|
137
|
+
<rect x="4" y="11" width="3" height="2" rx="1" fill="currentColor"></rect>
|
|
138
|
+
<rect x="4" y="15" width="4" height="2" rx="1" fill="currentColor"></rect>
|
|
139
|
+
<rect
|
|
140
|
+
x="8.5"
|
|
141
|
+
y="11"
|
|
142
|
+
width="3"
|
|
143
|
+
height="2"
|
|
144
|
+
rx="1"
|
|
145
|
+
fill="currentColor"
|
|
146
|
+
></rect>
|
|
147
|
+
<path
|
|
148
|
+
d="M17.154 11.346a1.182 1.182 0 0 0-1.671 0L11 15.829V17.5h1.671l4.483-4.483a1.182 1.182 0 0 0 0-1.671Z"
|
|
149
|
+
fill="currentColor"
|
|
150
|
+
></path>
|
|
151
|
+
</svg>
|
|
152
|
+
),
|
|
153
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import { SliderProps } from "@radix-ui/react-slider"
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
HoverCard,
|
|
8
|
+
HoverCardContent,
|
|
9
|
+
HoverCardTrigger,
|
|
10
|
+
} from "@/components/ui/hover-card"
|
|
11
|
+
import { Label } from "@/components/ui/label"
|
|
12
|
+
import { Slider } from "@/components/ui/slider"
|
|
13
|
+
|
|
14
|
+
interface MaxLengthSelectorProps {
|
|
15
|
+
defaultValue: SliderProps["defaultValue"]
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function MaxLengthSelector({ defaultValue }: MaxLengthSelectorProps) {
|
|
19
|
+
const [value, setValue] = React.useState(defaultValue)
|
|
20
|
+
|
|
21
|
+
return (
|
|
22
|
+
<div className="grid gap-2 pt-2">
|
|
23
|
+
<HoverCard openDelay={200}>
|
|
24
|
+
<HoverCardTrigger asChild>
|
|
25
|
+
<div className="grid gap-4">
|
|
26
|
+
<div className="flex items-center justify-between">
|
|
27
|
+
<Label htmlFor="maxlength">Maximum Length</Label>
|
|
28
|
+
<span className="w-12 rounded-md border border-transparent px-2 py-0.5 text-right text-sm text-muted-foreground hover:border-border">
|
|
29
|
+
{value}
|
|
30
|
+
</span>
|
|
31
|
+
</div>
|
|
32
|
+
<Slider
|
|
33
|
+
id="maxlength"
|
|
34
|
+
max={4000}
|
|
35
|
+
defaultValue={value}
|
|
36
|
+
step={10}
|
|
37
|
+
onValueChange={setValue}
|
|
38
|
+
className="[&_[role=slider]]:h-4 [&_[role=slider]]:w-4"
|
|
39
|
+
aria-label="Maximum Length"
|
|
40
|
+
/>
|
|
41
|
+
</div>
|
|
42
|
+
</HoverCardTrigger>
|
|
43
|
+
<HoverCardContent
|
|
44
|
+
align="start"
|
|
45
|
+
className="w-[260px] text-sm"
|
|
46
|
+
side="left"
|
|
47
|
+
>
|
|
48
|
+
The maximum number of tokens to generate. Requests can use up to 2,048
|
|
49
|
+
or 4,000 tokens, shared between prompt and completion. The exact limit
|
|
50
|
+
varies by model.
|
|
51
|
+
</HoverCardContent>
|
|
52
|
+
</HoverCard>
|
|
53
|
+
</div>
|
|
54
|
+
)
|
|
55
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import { PopoverProps } from "@radix-ui/react-popover"
|
|
5
|
+
import { Check, ChevronsUpDown } from "lucide-react"
|
|
6
|
+
|
|
7
|
+
import { cn } from "@/lib/utils"
|
|
8
|
+
import { useMutationObserver } from "@/hooks/use-mutation-observer"
|
|
9
|
+
import { Button } from "@/components/ui/button"
|
|
10
|
+
import {
|
|
11
|
+
Command,
|
|
12
|
+
CommandEmpty,
|
|
13
|
+
CommandGroup,
|
|
14
|
+
CommandInput,
|
|
15
|
+
CommandItem,
|
|
16
|
+
CommandList,
|
|
17
|
+
} from "@/components/ui/command"
|
|
18
|
+
import {
|
|
19
|
+
HoverCard,
|
|
20
|
+
HoverCardContent,
|
|
21
|
+
HoverCardTrigger,
|
|
22
|
+
} from "@/components/ui/hover-card"
|
|
23
|
+
import { Label } from "@/components/ui/label"
|
|
24
|
+
import {
|
|
25
|
+
Popover,
|
|
26
|
+
PopoverContent,
|
|
27
|
+
PopoverTrigger,
|
|
28
|
+
} from "@/components/ui/popover"
|
|
29
|
+
|
|
30
|
+
import { Model, ModelType } from "../data/models"
|
|
31
|
+
|
|
32
|
+
interface ModelSelectorProps extends PopoverProps {
|
|
33
|
+
types: readonly ModelType[]
|
|
34
|
+
models: Model[]
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function ModelSelector({ models, types, ...props }: ModelSelectorProps) {
|
|
38
|
+
const [open, setOpen] = React.useState(false)
|
|
39
|
+
const [selectedModel, setSelectedModel] = React.useState<Model>(models[0])
|
|
40
|
+
const [peekedModel, setPeekedModel] = React.useState<Model>(models[0])
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<div className="grid gap-2">
|
|
44
|
+
<HoverCard openDelay={200}>
|
|
45
|
+
<HoverCardTrigger asChild>
|
|
46
|
+
<Label htmlFor="model">Model</Label>
|
|
47
|
+
</HoverCardTrigger>
|
|
48
|
+
<HoverCardContent
|
|
49
|
+
align="start"
|
|
50
|
+
className="w-[260px] text-sm"
|
|
51
|
+
side="left"
|
|
52
|
+
>
|
|
53
|
+
The model which will generate the completion. Some models are suitable
|
|
54
|
+
for natural language tasks, others specialize in code. Learn more.
|
|
55
|
+
</HoverCardContent>
|
|
56
|
+
</HoverCard>
|
|
57
|
+
<Popover open={open} onOpenChange={setOpen} {...props}>
|
|
58
|
+
<PopoverTrigger asChild>
|
|
59
|
+
<Button
|
|
60
|
+
variant="outline"
|
|
61
|
+
role="combobox"
|
|
62
|
+
aria-expanded={open}
|
|
63
|
+
aria-label="Select a model"
|
|
64
|
+
className="w-full justify-between"
|
|
65
|
+
>
|
|
66
|
+
{selectedModel ? selectedModel.name : "Select a model..."}
|
|
67
|
+
<ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50" />
|
|
68
|
+
</Button>
|
|
69
|
+
</PopoverTrigger>
|
|
70
|
+
<PopoverContent align="end" className="w-[250px] p-0">
|
|
71
|
+
<HoverCard>
|
|
72
|
+
<HoverCardContent
|
|
73
|
+
side="left"
|
|
74
|
+
align="start"
|
|
75
|
+
forceMount
|
|
76
|
+
className="min-h-[280px]"
|
|
77
|
+
>
|
|
78
|
+
<div className="grid gap-2">
|
|
79
|
+
<h4 className="font-medium leading-none">{peekedModel.name}</h4>
|
|
80
|
+
<div className="text-sm text-muted-foreground">
|
|
81
|
+
{peekedModel.description}
|
|
82
|
+
</div>
|
|
83
|
+
{peekedModel.strengths ? (
|
|
84
|
+
<div className="mt-4 grid gap-2">
|
|
85
|
+
<h5 className="text-sm font-medium leading-none">
|
|
86
|
+
Strengths
|
|
87
|
+
</h5>
|
|
88
|
+
<ul className="text-sm text-muted-foreground">
|
|
89
|
+
{peekedModel.strengths}
|
|
90
|
+
</ul>
|
|
91
|
+
</div>
|
|
92
|
+
) : null}
|
|
93
|
+
</div>
|
|
94
|
+
</HoverCardContent>
|
|
95
|
+
<Command loop>
|
|
96
|
+
<CommandList className="h-[var(--cmdk-list-height)] max-h-[400px]">
|
|
97
|
+
<CommandInput placeholder="Search Models..." />
|
|
98
|
+
<CommandEmpty>No Models found.</CommandEmpty>
|
|
99
|
+
<HoverCardTrigger />
|
|
100
|
+
{types.map((type) => (
|
|
101
|
+
<CommandGroup key={type} heading={type}>
|
|
102
|
+
{models
|
|
103
|
+
.filter((model) => model.type === type)
|
|
104
|
+
.map((model) => (
|
|
105
|
+
<ModelItem
|
|
106
|
+
key={model.id}
|
|
107
|
+
model={model}
|
|
108
|
+
isSelected={selectedModel?.id === model.id}
|
|
109
|
+
onPeek={(model) => setPeekedModel(model)}
|
|
110
|
+
onSelect={() => {
|
|
111
|
+
setSelectedModel(model)
|
|
112
|
+
setOpen(false)
|
|
113
|
+
}}
|
|
114
|
+
/>
|
|
115
|
+
))}
|
|
116
|
+
</CommandGroup>
|
|
117
|
+
))}
|
|
118
|
+
</CommandList>
|
|
119
|
+
</Command>
|
|
120
|
+
</HoverCard>
|
|
121
|
+
</PopoverContent>
|
|
122
|
+
</Popover>
|
|
123
|
+
</div>
|
|
124
|
+
)
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
interface ModelItemProps {
|
|
128
|
+
model: Model
|
|
129
|
+
isSelected: boolean
|
|
130
|
+
onSelect: () => void
|
|
131
|
+
onPeek: (model: Model) => void
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function ModelItem({ model, isSelected, onSelect, onPeek }: ModelItemProps) {
|
|
135
|
+
const ref = React.useRef<HTMLDivElement>(null)
|
|
136
|
+
|
|
137
|
+
useMutationObserver(ref, (mutations) => {
|
|
138
|
+
for (const mutation of mutations) {
|
|
139
|
+
if (mutation.type === "attributes") {
|
|
140
|
+
if (mutation.attributeName === "aria-selected") {
|
|
141
|
+
onPeek(model)
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
})
|
|
146
|
+
|
|
147
|
+
return (
|
|
148
|
+
<CommandItem
|
|
149
|
+
key={model.id}
|
|
150
|
+
onSelect={onSelect}
|
|
151
|
+
ref={ref}
|
|
152
|
+
className="aria-selected:bg-primary aria-selected:text-primary-foreground"
|
|
153
|
+
>
|
|
154
|
+
{model.name}
|
|
155
|
+
<Check
|
|
156
|
+
className={cn(
|
|
157
|
+
"ml-auto h-4 w-4",
|
|
158
|
+
isSelected ? "opacity-100" : "opacity-0"
|
|
159
|
+
)}
|
|
160
|
+
/>
|
|
161
|
+
</CommandItem>
|
|
162
|
+
)
|
|
163
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import { Dialog } from "@radix-ui/react-dialog"
|
|
5
|
+
import { Flag, MoreHorizontal, Trash } from "lucide-react"
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
AlertDialog,
|
|
9
|
+
AlertDialogCancel,
|
|
10
|
+
AlertDialogContent,
|
|
11
|
+
AlertDialogDescription,
|
|
12
|
+
AlertDialogFooter,
|
|
13
|
+
AlertDialogHeader,
|
|
14
|
+
AlertDialogTitle,
|
|
15
|
+
} from "@/components/ui/alert-dialog"
|
|
16
|
+
import { Button } from "@/components/ui/button"
|
|
17
|
+
import {
|
|
18
|
+
DialogContent,
|
|
19
|
+
DialogDescription,
|
|
20
|
+
DialogFooter,
|
|
21
|
+
DialogHeader,
|
|
22
|
+
DialogTitle,
|
|
23
|
+
} from "@/components/ui/dialog"
|
|
24
|
+
import {
|
|
25
|
+
DropdownMenu,
|
|
26
|
+
DropdownMenuContent,
|
|
27
|
+
DropdownMenuItem,
|
|
28
|
+
DropdownMenuSeparator,
|
|
29
|
+
DropdownMenuTrigger,
|
|
30
|
+
} from "@/components/ui/dropdown-menu"
|
|
31
|
+
import { Label } from "@/components/ui/label"
|
|
32
|
+
import { Switch } from "@/components/ui/switch"
|
|
33
|
+
import { toast } from "@/components/ui/use-toast"
|
|
34
|
+
|
|
35
|
+
export function PresetActions() {
|
|
36
|
+
const [open, setIsOpen] = React.useState(false)
|
|
37
|
+
const [showDeleteDialog, setShowDeleteDialog] = React.useState(false)
|
|
38
|
+
|
|
39
|
+
return (
|
|
40
|
+
<>
|
|
41
|
+
<DropdownMenu>
|
|
42
|
+
<DropdownMenuTrigger asChild>
|
|
43
|
+
<Button variant="secondary">
|
|
44
|
+
<span className="sr-only">Actions</span>
|
|
45
|
+
<MoreHorizontal className="h-4 w-4" />
|
|
46
|
+
</Button>
|
|
47
|
+
</DropdownMenuTrigger>
|
|
48
|
+
<DropdownMenuContent align="end">
|
|
49
|
+
<DropdownMenuItem onSelect={() => setIsOpen(true)}>
|
|
50
|
+
<Flag className="mr-2 h-4 w-4" />
|
|
51
|
+
Content filter preferences
|
|
52
|
+
</DropdownMenuItem>
|
|
53
|
+
<DropdownMenuSeparator />
|
|
54
|
+
<DropdownMenuItem
|
|
55
|
+
onSelect={() => setShowDeleteDialog(true)}
|
|
56
|
+
className="text-red-600"
|
|
57
|
+
>
|
|
58
|
+
<Trash className="mr-2 h-4 w-4" />
|
|
59
|
+
Delete preset
|
|
60
|
+
</DropdownMenuItem>
|
|
61
|
+
</DropdownMenuContent>
|
|
62
|
+
</DropdownMenu>
|
|
63
|
+
<Dialog open={open} onOpenChange={setIsOpen}>
|
|
64
|
+
<DialogContent>
|
|
65
|
+
<DialogHeader>
|
|
66
|
+
<DialogTitle>Content filter preferences</DialogTitle>
|
|
67
|
+
<DialogDescription>
|
|
68
|
+
The content filter flags text that may violate our content policy.
|
|
69
|
+
It's powered by our moderation endpoint which is free to use
|
|
70
|
+
to moderate your OpenAI API traffic. Learn more.
|
|
71
|
+
</DialogDescription>
|
|
72
|
+
</DialogHeader>
|
|
73
|
+
<div className="py-6">
|
|
74
|
+
<h4 className="text-sm text-muted-foreground">
|
|
75
|
+
Playground Warnings
|
|
76
|
+
</h4>
|
|
77
|
+
<div className="flex items-start justify-between space-x-4 pt-3">
|
|
78
|
+
<Switch name="show" id="show" defaultChecked={true} />
|
|
79
|
+
<Label className="grid gap-1 font-normal" htmlFor="show">
|
|
80
|
+
<span className="font-semibold">
|
|
81
|
+
Show a warning when content is flagged
|
|
82
|
+
</span>
|
|
83
|
+
<span className="text-sm text-muted-foreground">
|
|
84
|
+
A warning will be shown when sexual, hateful, violent or
|
|
85
|
+
self-harm content is detected.
|
|
86
|
+
</span>
|
|
87
|
+
</Label>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
<DialogFooter>
|
|
91
|
+
<Button variant="secondary" onClick={() => setIsOpen(false)}>
|
|
92
|
+
Close
|
|
93
|
+
</Button>
|
|
94
|
+
</DialogFooter>
|
|
95
|
+
</DialogContent>
|
|
96
|
+
</Dialog>
|
|
97
|
+
<AlertDialog open={showDeleteDialog} onOpenChange={setShowDeleteDialog}>
|
|
98
|
+
<AlertDialogContent>
|
|
99
|
+
<AlertDialogHeader>
|
|
100
|
+
<AlertDialogTitle>Are you sure absolutely sure?</AlertDialogTitle>
|
|
101
|
+
<AlertDialogDescription>
|
|
102
|
+
This action cannot be undone. This preset will no longer be
|
|
103
|
+
accessible by you or others you've shared it with.
|
|
104
|
+
</AlertDialogDescription>
|
|
105
|
+
</AlertDialogHeader>
|
|
106
|
+
<AlertDialogFooter>
|
|
107
|
+
<AlertDialogCancel>Cancel</AlertDialogCancel>
|
|
108
|
+
<Button
|
|
109
|
+
variant="destructive"
|
|
110
|
+
onClick={() => {
|
|
111
|
+
setShowDeleteDialog(false)
|
|
112
|
+
toast({
|
|
113
|
+
description: "This preset has been deleted.",
|
|
114
|
+
})
|
|
115
|
+
}}
|
|
116
|
+
>
|
|
117
|
+
Delete
|
|
118
|
+
</Button>
|
|
119
|
+
</AlertDialogFooter>
|
|
120
|
+
</AlertDialogContent>
|
|
121
|
+
</AlertDialog>
|
|
122
|
+
</>
|
|
123
|
+
)
|
|
124
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Button } from "@/components/ui/button"
|
|
2
|
+
import {
|
|
3
|
+
Dialog,
|
|
4
|
+
DialogContent,
|
|
5
|
+
DialogDescription,
|
|
6
|
+
DialogFooter,
|
|
7
|
+
DialogHeader,
|
|
8
|
+
DialogTitle,
|
|
9
|
+
DialogTrigger,
|
|
10
|
+
} from "@/components/ui/dialog"
|
|
11
|
+
import { Input } from "@/components/ui/input"
|
|
12
|
+
import { Label } from "@/components/ui/label"
|
|
13
|
+
|
|
14
|
+
export function PresetSave() {
|
|
15
|
+
return (
|
|
16
|
+
<Dialog>
|
|
17
|
+
<DialogTrigger asChild>
|
|
18
|
+
<Button variant="secondary">Save</Button>
|
|
19
|
+
</DialogTrigger>
|
|
20
|
+
<DialogContent className="sm:max-w-[475px]">
|
|
21
|
+
<DialogHeader>
|
|
22
|
+
<DialogTitle>Save preset</DialogTitle>
|
|
23
|
+
<DialogDescription>
|
|
24
|
+
This will save the current playground state as a preset which you
|
|
25
|
+
can access later or share with others.
|
|
26
|
+
</DialogDescription>
|
|
27
|
+
</DialogHeader>
|
|
28
|
+
<div className="grid gap-4 py-4">
|
|
29
|
+
<div className="grid gap-2">
|
|
30
|
+
<Label htmlFor="name">Name</Label>
|
|
31
|
+
<Input id="name" autoFocus />
|
|
32
|
+
</div>
|
|
33
|
+
<div className="grid gap-2">
|
|
34
|
+
<Label htmlFor="description">Description</Label>
|
|
35
|
+
<Input id="description" />
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
<DialogFooter>
|
|
39
|
+
<Button type="submit">Save</Button>
|
|
40
|
+
</DialogFooter>
|
|
41
|
+
</DialogContent>
|
|
42
|
+
</Dialog>
|
|
43
|
+
)
|
|
44
|
+
}
|