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,70 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import { usePathname } from "next/navigation"
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
MenubarContent,
|
|
7
|
+
MenubarMenu,
|
|
8
|
+
MenubarRadioGroup,
|
|
9
|
+
MenubarRadioItem,
|
|
10
|
+
MenubarTrigger,
|
|
11
|
+
} from "@/components/ui/menubar"
|
|
12
|
+
|
|
13
|
+
const examples = [
|
|
14
|
+
{
|
|
15
|
+
name: "Dashboard",
|
|
16
|
+
href: "/examples/dashboard",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: "Cards",
|
|
20
|
+
href: "/examples/cards",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: "Tasks",
|
|
24
|
+
href: "/examples/tasks",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: "Playground",
|
|
28
|
+
href: "/examples/playground",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "Forms",
|
|
32
|
+
href: "/examples/forms",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "Music",
|
|
36
|
+
href: "/examples/music",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: "Authentication",
|
|
40
|
+
href: "/examples/authentication",
|
|
41
|
+
},
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
interface ExamplesNavProps extends React.HTMLAttributes<HTMLDivElement> {}
|
|
45
|
+
|
|
46
|
+
export function ExamplesNav({ className, ...props }: ExamplesNavProps) {
|
|
47
|
+
const pathname = usePathname() === "/" ? "/examples/music" : usePathname()
|
|
48
|
+
|
|
49
|
+
return (
|
|
50
|
+
<MenubarMenu>
|
|
51
|
+
<MenubarTrigger>
|
|
52
|
+
<span className="rounded-md bg-cyan-500 px-1.5 py-0.5 text-xs font-medium leading-none text-[#000000] no-underline group-hover:no-underline">
|
|
53
|
+
nav
|
|
54
|
+
</span>
|
|
55
|
+
{pathname}
|
|
56
|
+
</MenubarTrigger>
|
|
57
|
+
<MenubarContent forceMount>
|
|
58
|
+
<MenubarRadioGroup value={pathname}>
|
|
59
|
+
{examples.map((example) => (
|
|
60
|
+
<a href={example.href} key={example.name}>
|
|
61
|
+
<MenubarRadioItem value={example.href}>
|
|
62
|
+
{example.name}
|
|
63
|
+
</MenubarRadioItem>
|
|
64
|
+
</a>
|
|
65
|
+
))}
|
|
66
|
+
</MenubarRadioGroup>
|
|
67
|
+
</MenubarContent>
|
|
68
|
+
</MenubarMenu>
|
|
69
|
+
)
|
|
70
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import { useEffect, useState } from "react"
|
|
4
|
+
import { invoke } from "@tauri-apps/api/tauri"
|
|
5
|
+
|
|
6
|
+
export function Greeting() {
|
|
7
|
+
const [greetMsg, setGreetMsg] = useState("")
|
|
8
|
+
const [name, setName] = useState("")
|
|
9
|
+
|
|
10
|
+
// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
|
|
11
|
+
async function greet() {
|
|
12
|
+
setGreetMsg(await invoke("greet", { name }))
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// inspect console: Hello, World! You've been greeted from Rust!
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
invoke("greet", { name: "World" }).then(console.log).catch(console.error)
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
return <></>
|
|
21
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AlertTriangle,
|
|
3
|
+
ArrowRight,
|
|
4
|
+
Check,
|
|
5
|
+
ChevronLeft,
|
|
6
|
+
ChevronRight,
|
|
7
|
+
ClipboardCheck,
|
|
8
|
+
Copy,
|
|
9
|
+
CreditCard,
|
|
10
|
+
File,
|
|
11
|
+
FileText,
|
|
12
|
+
HelpCircle,
|
|
13
|
+
Image,
|
|
14
|
+
Laptop,
|
|
15
|
+
Loader2,
|
|
16
|
+
LucideProps,
|
|
17
|
+
Moon,
|
|
18
|
+
MoreVertical,
|
|
19
|
+
Pizza,
|
|
20
|
+
Plus,
|
|
21
|
+
Settings,
|
|
22
|
+
SunMedium,
|
|
23
|
+
Trash,
|
|
24
|
+
Twitter,
|
|
25
|
+
User,
|
|
26
|
+
X,
|
|
27
|
+
type Icon as LucideIcon,
|
|
28
|
+
} from "lucide-react"
|
|
29
|
+
|
|
30
|
+
export type Icon = LucideIcon
|
|
31
|
+
|
|
32
|
+
export const Icons = {
|
|
33
|
+
logo: (props: LucideProps) => (
|
|
34
|
+
<svg
|
|
35
|
+
viewBox="0 0 24 24"
|
|
36
|
+
fill="currentColor"
|
|
37
|
+
stroke="currentColor"
|
|
38
|
+
strokeWidth="2"
|
|
39
|
+
strokeLinecap="round"
|
|
40
|
+
strokeLinejoin="round"
|
|
41
|
+
{...props}
|
|
42
|
+
>
|
|
43
|
+
<circle cx="12" cy="12" r="10"></circle>
|
|
44
|
+
</svg>
|
|
45
|
+
),
|
|
46
|
+
close: X,
|
|
47
|
+
spinner: Loader2,
|
|
48
|
+
chevronLeft: ChevronLeft,
|
|
49
|
+
chevronRight: ChevronRight,
|
|
50
|
+
trash: Trash,
|
|
51
|
+
post: FileText,
|
|
52
|
+
page: File,
|
|
53
|
+
media: Image,
|
|
54
|
+
settings: Settings,
|
|
55
|
+
billing: CreditCard,
|
|
56
|
+
ellipsis: MoreVertical,
|
|
57
|
+
add: Plus,
|
|
58
|
+
warning: AlertTriangle,
|
|
59
|
+
user: User,
|
|
60
|
+
arrowRight: ArrowRight,
|
|
61
|
+
help: HelpCircle,
|
|
62
|
+
pizza: Pizza,
|
|
63
|
+
twitter: Twitter,
|
|
64
|
+
check: Check,
|
|
65
|
+
copy: Copy,
|
|
66
|
+
copyDone: ClipboardCheck,
|
|
67
|
+
sun: SunMedium,
|
|
68
|
+
moon: Moon,
|
|
69
|
+
laptop: Laptop,
|
|
70
|
+
gitHub: (props: LucideProps) => (
|
|
71
|
+
<svg viewBox="0 0 438.549 438.549" {...props}>
|
|
72
|
+
<path
|
|
73
|
+
fill="currentColor"
|
|
74
|
+
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"
|
|
75
|
+
></path>
|
|
76
|
+
</svg>
|
|
77
|
+
),
|
|
78
|
+
radix: (props: LucideProps) => (
|
|
79
|
+
<svg viewBox="0 0 25 25" fill="none" {...props}>
|
|
80
|
+
<path
|
|
81
|
+
d="M12 25C7.58173 25 4 21.4183 4 17C4 12.5817 7.58173 9 12 9V25Z"
|
|
82
|
+
fill="currentcolor"
|
|
83
|
+
></path>
|
|
84
|
+
<path d="M12 0H4V8H12V0Z" fill="currentcolor"></path>
|
|
85
|
+
<path
|
|
86
|
+
d="M17 8C19.2091 8 21 6.20914 21 4C21 1.79086 19.2091 0 17 0C14.7909 0 13 1.79086 13 4C13 6.20914 14.7909 8 17 8Z"
|
|
87
|
+
fill="currentcolor"
|
|
88
|
+
></path>
|
|
89
|
+
</svg>
|
|
90
|
+
),
|
|
91
|
+
aria: (props: LucideProps) => (
|
|
92
|
+
<svg role="img" viewBox="0 0 24 24" fill="currentColor" {...props}>
|
|
93
|
+
<path d="M13.966 22.624l-1.69-4.281H8.122l3.892-9.144 5.662 13.425zM8.884 1.376H0v21.248zm15.116 0h-8.884L24 22.624Z" />
|
|
94
|
+
</svg>
|
|
95
|
+
),
|
|
96
|
+
npm: (props: LucideProps) => (
|
|
97
|
+
<svg viewBox="0 0 24 24" {...props}>
|
|
98
|
+
<path d="M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z" />
|
|
99
|
+
</svg>
|
|
100
|
+
),
|
|
101
|
+
yarn: (props: LucideProps) => (
|
|
102
|
+
<svg viewBox="0 0 24 24" {...props}>
|
|
103
|
+
<path d="M12 0C5.375 0 0 5.375 0 12s5.375 12 12 12 12-5.375 12-12S18.625 0 12 0zm.768 4.105c.183 0 .363.053.525.157.125.083.287.185.755 1.154.31-.088.468-.042.551-.019.204.056.366.19.463.375.477.917.542 2.553.334 3.605-.241 1.232-.755 2.029-1.131 2.576.324.329.778.899 1.117 1.825.278.774.31 1.478.273 2.015a5.51 5.51 0 0 0 .602-.329c.593-.366 1.487-.917 2.553-.931.714-.009 1.269.445 1.353 1.103a1.23 1.23 0 0 1-.945 1.362c-.649.158-.95.278-1.821.843-1.232.797-2.539 1.242-3.012 1.39a1.686 1.686 0 0 1-.704.343c-.737.181-3.266.315-3.466.315h-.046c-.783 0-1.214-.241-1.45-.491-.658.329-1.51.19-2.122-.134a1.078 1.078 0 0 1-.58-1.153 1.243 1.243 0 0 1-.153-.195c-.162-.25-.528-.936-.454-1.946.056-.723.556-1.367.88-1.71a5.522 5.522 0 0 1 .408-2.256c.306-.727.885-1.348 1.32-1.737-.32-.537-.644-1.367-.329-2.21.227-.602.412-.936.82-1.08h-.005c.199-.074.389-.153.486-.259a3.418 3.418 0 0 1 2.298-1.103c.037-.093.079-.185.125-.283.31-.658.639-1.029 1.024-1.168a.94.94 0 0 1 .328-.06zm.006.7c-.507.016-1.001 1.519-1.001 1.519s-1.27-.204-2.266.871c-.199.218-.468.334-.746.44-.079.028-.176.023-.417.672-.371.991.625 2.094.625 2.094s-1.186.839-1.626 1.881c-.486 1.144-.338 2.261-.338 2.261s-.843.732-.899 1.487c-.051.663.139 1.2.343 1.515.227.343.51.176.51.176s-.561.653-.037.931c.477.25 1.283.394 1.71-.037.31-.31.371-1.001.486-1.283.028-.065.12.111.209.199.097.093.264.195.264.195s-.755.324-.445 1.066c.102.246.468.403 1.066.398.222-.005 2.664-.139 3.313-.296.375-.088.505-.283.505-.283s1.566-.431 2.998-1.357c.917-.598 1.293-.76 2.034-.936.612-.148.57-1.098-.241-1.084-.839.009-1.575.44-2.196.825-1.163.718-1.742.672-1.742.672l-.018-.032c-.079-.13.371-1.293-.134-2.678-.547-1.515-1.413-1.881-1.344-1.997.297-.5 1.038-1.297 1.334-2.78.176-.899.13-2.377-.269-3.151-.074-.144-.732.241-.732.241s-.616-1.371-.788-1.483a.271.271 0 0 0-.157-.046z" />
|
|
104
|
+
</svg>
|
|
105
|
+
),
|
|
106
|
+
pnpm: (props: LucideProps) => (
|
|
107
|
+
<svg viewBox="0 0 24 24" {...props}>
|
|
108
|
+
<path d="M0 0v7.5h7.5V0zm8.25 0v7.5h7.498V0zm8.25 0v7.5H24V0zM8.25 8.25v7.5h7.498v-7.5zm8.25 0v7.5H24v-7.5zM0 16.5V24h7.5v-7.5zm8.25 0V24h7.498v-7.5zm8.25 0V24H24v-7.5z" />
|
|
109
|
+
</svg>
|
|
110
|
+
),
|
|
111
|
+
react: (props: LucideProps) => (
|
|
112
|
+
<svg viewBox="0 0 24 24" {...props}>
|
|
113
|
+
<path d="M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z" />
|
|
114
|
+
</svg>
|
|
115
|
+
),
|
|
116
|
+
tailwind: (props: LucideProps) => (
|
|
117
|
+
<svg viewBox="0 0 24 24" {...props}>
|
|
118
|
+
<path d="M12.001,4.8c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 C13.666,10.618,15.027,12,18.001,12c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C16.337,6.182,14.976,4.8,12.001,4.8z M6.001,12c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 c1.177,1.194,2.538,2.576,5.512,2.576c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C10.337,13.382,8.976,12,6.001,12z" />
|
|
119
|
+
</svg>
|
|
120
|
+
),
|
|
121
|
+
google: (props: LucideProps) => (
|
|
122
|
+
<svg role="img" viewBox="0 0 24 24" {...props}>
|
|
123
|
+
<path
|
|
124
|
+
fill="currentColor"
|
|
125
|
+
d="M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z"
|
|
126
|
+
/>
|
|
127
|
+
</svg>
|
|
128
|
+
),
|
|
129
|
+
apple: (props: LucideProps) => (
|
|
130
|
+
<svg role="img" viewBox="0 0 24 24" {...props}>
|
|
131
|
+
<path
|
|
132
|
+
d="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"
|
|
133
|
+
fill="currentColor"
|
|
134
|
+
/>
|
|
135
|
+
</svg>
|
|
136
|
+
),
|
|
137
|
+
paypal: (props: LucideProps) => (
|
|
138
|
+
<svg role="img" viewBox="0 0 24 24" {...props}>
|
|
139
|
+
<path
|
|
140
|
+
d="M7.076 21.337H2.47a.641.641 0 0 1-.633-.74L4.944.901C5.026.382 5.474 0 5.998 0h7.46c2.57 0 4.578.543 5.69 1.81 1.01 1.15 1.304 2.42 1.012 4.287-.023.143-.047.288-.077.437-.983 5.05-4.349 6.797-8.647 6.797h-2.19c-.524 0-.968.382-1.05.9l-1.12 7.106zm14.146-14.42a3.35 3.35 0 0 0-.607-.541c-.013.076-.026.175-.041.254-.93 4.778-4.005 7.201-9.138 7.201h-2.19a.563.563 0 0 0-.556.479l-1.187 7.527h-.506l-.24 1.516a.56.56 0 0 0 .554.647h3.882c.46 0 .85-.334.922-.788.06-.26.76-4.852.816-5.09a.932.932 0 0 1 .923-.788h.58c3.76 0 6.705-1.528 7.565-5.946.36-1.847.174-3.388-.777-4.471z"
|
|
141
|
+
fill="currentColor"
|
|
142
|
+
/>
|
|
143
|
+
</svg>
|
|
144
|
+
),
|
|
145
|
+
|
|
146
|
+
minimize: (props: LucideProps) => (
|
|
147
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" {...props}>
|
|
148
|
+
<path
|
|
149
|
+
fill="currentColor"
|
|
150
|
+
d="M480 480H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z"
|
|
151
|
+
/>
|
|
152
|
+
</svg>
|
|
153
|
+
),
|
|
154
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import { useTheme } from "next-themes"
|
|
5
|
+
|
|
6
|
+
import { Button } from "@/components/ui/button"
|
|
7
|
+
import {
|
|
8
|
+
DropdownMenu,
|
|
9
|
+
DropdownMenuContent,
|
|
10
|
+
DropdownMenuItem,
|
|
11
|
+
DropdownMenuTrigger,
|
|
12
|
+
} from "@/components/ui/dropdown-menu"
|
|
13
|
+
import {
|
|
14
|
+
MenubarContent,
|
|
15
|
+
MenubarMenu,
|
|
16
|
+
MenubarRadioGroup,
|
|
17
|
+
MenubarRadioItem,
|
|
18
|
+
MenubarTrigger,
|
|
19
|
+
} from "@/components/ui/menubar"
|
|
20
|
+
import { Icons } from "@/components/icons"
|
|
21
|
+
|
|
22
|
+
export function MenuModeToggle() {
|
|
23
|
+
const { setTheme, theme } = useTheme()
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<MenubarMenu>
|
|
27
|
+
<MenubarTrigger>Theme</MenubarTrigger>
|
|
28
|
+
<MenubarContent forceMount>
|
|
29
|
+
<MenubarRadioGroup value={theme}>
|
|
30
|
+
<MenubarRadioItem value="light" onClick={() => setTheme("light")}>
|
|
31
|
+
<Icons.sun className="mr-2 h-4 w-4" />
|
|
32
|
+
<span>Light</span>
|
|
33
|
+
</MenubarRadioItem>
|
|
34
|
+
<MenubarRadioItem value="dark" onClick={() => setTheme("dark")}>
|
|
35
|
+
<Icons.moon className="mr-2 h-4 w-4" />
|
|
36
|
+
<span>Dark</span>
|
|
37
|
+
</MenubarRadioItem>
|
|
38
|
+
<MenubarRadioItem value="system" onClick={() => setTheme("system")}>
|
|
39
|
+
<Icons.laptop className="mr-2 h-4 w-4" />
|
|
40
|
+
<span>System</span>
|
|
41
|
+
</MenubarRadioItem>
|
|
42
|
+
</MenubarRadioGroup>
|
|
43
|
+
</MenubarContent>
|
|
44
|
+
</MenubarMenu>
|
|
45
|
+
)
|
|
46
|
+
}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import { useCallback, useEffect, useState } from "react"
|
|
4
|
+
import Image from "next/image"
|
|
5
|
+
import { usePathname } from "next/navigation"
|
|
6
|
+
import logo from "@/assets/logo.png"
|
|
7
|
+
// import { appWindow, type WebviewWindow } from "@tauri-apps/plugin-window"
|
|
8
|
+
import { Globe, Maximize, Mic, Music2, Sailboat, X, Zap } from "lucide-react"
|
|
9
|
+
|
|
10
|
+
import { Button } from "@/components/ui/button"
|
|
11
|
+
import {
|
|
12
|
+
Menubar,
|
|
13
|
+
MenubarCheckboxItem,
|
|
14
|
+
MenubarContent,
|
|
15
|
+
MenubarItem,
|
|
16
|
+
MenubarLabel,
|
|
17
|
+
MenubarMenu,
|
|
18
|
+
MenubarRadioGroup,
|
|
19
|
+
MenubarRadioItem,
|
|
20
|
+
MenubarSeparator,
|
|
21
|
+
MenubarShortcut,
|
|
22
|
+
MenubarSub,
|
|
23
|
+
MenubarSubContent,
|
|
24
|
+
MenubarSubTrigger,
|
|
25
|
+
MenubarTrigger,
|
|
26
|
+
} from "@/components/ui/menubar"
|
|
27
|
+
|
|
28
|
+
import { ExamplesNav } from "./examples-nav"
|
|
29
|
+
import { Icons } from "./icons"
|
|
30
|
+
import { MenuModeToggle } from "./menu-mode-toggle"
|
|
31
|
+
import { ModeToggle } from "./mode-toggle"
|
|
32
|
+
|
|
33
|
+
export function Menu() {
|
|
34
|
+
// const [appWindow, setAppWindow] = useState(null)
|
|
35
|
+
|
|
36
|
+
// // Dinamically import the tauri API, but only when it's in a tauri window
|
|
37
|
+
// useEffect(() => {
|
|
38
|
+
// import("@tauri-apps/plugin-window").then(({ tauriWindow }: any) => {
|
|
39
|
+
// setAppWindow(tauriWindow)
|
|
40
|
+
// })
|
|
41
|
+
// }, [])
|
|
42
|
+
|
|
43
|
+
const minimizeWindow = useCallback(async () => {
|
|
44
|
+
const { appWindow } = await import("@tauri-apps/plugin-window")
|
|
45
|
+
|
|
46
|
+
appWindow?.minimize()
|
|
47
|
+
}, [])
|
|
48
|
+
|
|
49
|
+
const maximizeWindow = useCallback(async () => {
|
|
50
|
+
const { appWindow } = await import("@tauri-apps/plugin-window")
|
|
51
|
+
|
|
52
|
+
if (await appWindow?.isMaximized()) {
|
|
53
|
+
appWindow?.unmaximize()
|
|
54
|
+
} else {
|
|
55
|
+
appWindow?.maximize()
|
|
56
|
+
}
|
|
57
|
+
}, [])
|
|
58
|
+
|
|
59
|
+
const closeWindow = useCallback(async () => {
|
|
60
|
+
const { appWindow } = await import("@tauri-apps/plugin-window")
|
|
61
|
+
|
|
62
|
+
appWindow.close()
|
|
63
|
+
}, [])
|
|
64
|
+
|
|
65
|
+
return (
|
|
66
|
+
<Menubar className="rounded-none border-b border-none pl-2 lg:pl-3">
|
|
67
|
+
{/* App Logo */}
|
|
68
|
+
<MenubarMenu>
|
|
69
|
+
<div className="inline-flex h-fit w-fit items-center text-cyan-500">
|
|
70
|
+
{usePathname() === "/" || usePathname() === "/examples/music" ? (
|
|
71
|
+
<Image src={logo} alt="logo" width={40} />
|
|
72
|
+
) : (
|
|
73
|
+
<Sailboat className="h-5 w-5" />
|
|
74
|
+
)}
|
|
75
|
+
</div>
|
|
76
|
+
</MenubarMenu>
|
|
77
|
+
|
|
78
|
+
<MenubarMenu>
|
|
79
|
+
<MenubarTrigger className="font-bold">App</MenubarTrigger>
|
|
80
|
+
<MenubarContent>
|
|
81
|
+
<MenubarItem>About App</MenubarItem>
|
|
82
|
+
<MenubarSeparator />
|
|
83
|
+
<MenubarItem>
|
|
84
|
+
Preferences... <MenubarShortcut>⌘,</MenubarShortcut>
|
|
85
|
+
</MenubarItem>
|
|
86
|
+
<MenubarSeparator />
|
|
87
|
+
<MenubarItem>
|
|
88
|
+
Hide Music... <MenubarShortcut>⌘H</MenubarShortcut>
|
|
89
|
+
</MenubarItem>
|
|
90
|
+
<MenubarItem>
|
|
91
|
+
Hide Others... <MenubarShortcut>⇧⌘H</MenubarShortcut>
|
|
92
|
+
</MenubarItem>
|
|
93
|
+
<MenubarShortcut />
|
|
94
|
+
<MenubarItem onClick={closeWindow}>
|
|
95
|
+
Quit Music <MenubarShortcut>⌘Q</MenubarShortcut>
|
|
96
|
+
</MenubarItem>
|
|
97
|
+
</MenubarContent>
|
|
98
|
+
</MenubarMenu>
|
|
99
|
+
<MenubarMenu>
|
|
100
|
+
<MenubarTrigger className="relative">File</MenubarTrigger>
|
|
101
|
+
<MenubarContent>
|
|
102
|
+
<MenubarSub>
|
|
103
|
+
<MenubarSubTrigger>New</MenubarSubTrigger>
|
|
104
|
+
<MenubarSubContent className="w-[230px]">
|
|
105
|
+
<MenubarItem>
|
|
106
|
+
Playlist <MenubarShortcut>⌘N</MenubarShortcut>
|
|
107
|
+
</MenubarItem>
|
|
108
|
+
<MenubarItem disabled>
|
|
109
|
+
Playlist from Selection <MenubarShortcut>⇧⌘N</MenubarShortcut>
|
|
110
|
+
</MenubarItem>
|
|
111
|
+
<MenubarItem>
|
|
112
|
+
Smart Playlist... <MenubarShortcut>⌥⌘N</MenubarShortcut>
|
|
113
|
+
</MenubarItem>
|
|
114
|
+
<MenubarItem>Playlist Folder</MenubarItem>
|
|
115
|
+
<MenubarItem disabled>Genius Playlist</MenubarItem>
|
|
116
|
+
</MenubarSubContent>
|
|
117
|
+
</MenubarSub>
|
|
118
|
+
<MenubarItem>
|
|
119
|
+
Open Stream URL... <MenubarShortcut>⌘U</MenubarShortcut>
|
|
120
|
+
</MenubarItem>
|
|
121
|
+
<MenubarItem>
|
|
122
|
+
Close Window <MenubarShortcut>⌘W</MenubarShortcut>
|
|
123
|
+
</MenubarItem>
|
|
124
|
+
<MenubarSeparator />
|
|
125
|
+
<MenubarSub>
|
|
126
|
+
<MenubarSubTrigger>Library</MenubarSubTrigger>
|
|
127
|
+
<MenubarSubContent>
|
|
128
|
+
<MenubarItem>Update Cloud Library</MenubarItem>
|
|
129
|
+
<MenubarItem>Update Genius</MenubarItem>
|
|
130
|
+
<MenubarSeparator />
|
|
131
|
+
<MenubarItem>Organize Library...</MenubarItem>
|
|
132
|
+
<MenubarItem>Export Library...</MenubarItem>
|
|
133
|
+
<MenubarSeparator />
|
|
134
|
+
<MenubarItem>Import Playlist...</MenubarItem>
|
|
135
|
+
<MenubarItem disabled>Export Playlist...</MenubarItem>
|
|
136
|
+
<MenubarItem>Show Duplicate Items</MenubarItem>
|
|
137
|
+
<MenubarSeparator />
|
|
138
|
+
<MenubarItem>Get Album Artwork</MenubarItem>
|
|
139
|
+
<MenubarItem disabled>Get Track Names</MenubarItem>
|
|
140
|
+
</MenubarSubContent>
|
|
141
|
+
</MenubarSub>
|
|
142
|
+
<MenubarItem>
|
|
143
|
+
Import... <MenubarShortcut>⌘O</MenubarShortcut>
|
|
144
|
+
</MenubarItem>
|
|
145
|
+
<MenubarItem disabled>Burn Playlist to Disc...</MenubarItem>
|
|
146
|
+
<MenubarSeparator />
|
|
147
|
+
<MenubarItem>
|
|
148
|
+
Show in Finder <MenubarShortcut>⇧⌘R</MenubarShortcut>{" "}
|
|
149
|
+
</MenubarItem>
|
|
150
|
+
<MenubarItem>Convert</MenubarItem>
|
|
151
|
+
<MenubarSeparator />
|
|
152
|
+
<MenubarItem>Page Setup...</MenubarItem>
|
|
153
|
+
<MenubarItem disabled>
|
|
154
|
+
Print... <MenubarShortcut>⌘P</MenubarShortcut>
|
|
155
|
+
</MenubarItem>
|
|
156
|
+
</MenubarContent>
|
|
157
|
+
</MenubarMenu>
|
|
158
|
+
<MenubarMenu>
|
|
159
|
+
<MenubarTrigger>Edit</MenubarTrigger>
|
|
160
|
+
<MenubarContent>
|
|
161
|
+
<MenubarItem disabled>
|
|
162
|
+
Undo <MenubarShortcut>⌘Z</MenubarShortcut>
|
|
163
|
+
</MenubarItem>
|
|
164
|
+
<MenubarItem disabled>
|
|
165
|
+
Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>
|
|
166
|
+
</MenubarItem>
|
|
167
|
+
<MenubarSeparator />
|
|
168
|
+
<MenubarItem disabled>
|
|
169
|
+
Cut <MenubarShortcut>⌘X</MenubarShortcut>
|
|
170
|
+
</MenubarItem>
|
|
171
|
+
<MenubarItem disabled>
|
|
172
|
+
Copy <MenubarShortcut>⌘C</MenubarShortcut>
|
|
173
|
+
</MenubarItem>
|
|
174
|
+
<MenubarItem disabled>
|
|
175
|
+
Paste <MenubarShortcut>⌘V</MenubarShortcut>
|
|
176
|
+
</MenubarItem>
|
|
177
|
+
<MenubarSeparator />
|
|
178
|
+
<MenubarItem>
|
|
179
|
+
Select All <MenubarShortcut>⌘A</MenubarShortcut>
|
|
180
|
+
</MenubarItem>
|
|
181
|
+
<MenubarItem disabled>
|
|
182
|
+
Deselect All <MenubarShortcut>⇧⌘A</MenubarShortcut>
|
|
183
|
+
</MenubarItem>
|
|
184
|
+
<MenubarSeparator />
|
|
185
|
+
<MenubarItem>
|
|
186
|
+
Smart Dictation...{" "}
|
|
187
|
+
<MenubarShortcut>
|
|
188
|
+
<Mic className="h-4 w-4" />
|
|
189
|
+
</MenubarShortcut>
|
|
190
|
+
</MenubarItem>
|
|
191
|
+
<MenubarItem>
|
|
192
|
+
Emoji & Symbols{" "}
|
|
193
|
+
<MenubarShortcut>
|
|
194
|
+
<Globe className="h-4 w-4" />
|
|
195
|
+
</MenubarShortcut>
|
|
196
|
+
</MenubarItem>
|
|
197
|
+
</MenubarContent>
|
|
198
|
+
</MenubarMenu>
|
|
199
|
+
<MenubarMenu>
|
|
200
|
+
<MenubarTrigger>View</MenubarTrigger>
|
|
201
|
+
<MenubarContent>
|
|
202
|
+
<MenubarCheckboxItem>Show Playing Next</MenubarCheckboxItem>
|
|
203
|
+
<MenubarCheckboxItem checked>Show Lyrics</MenubarCheckboxItem>
|
|
204
|
+
<MenubarSeparator />
|
|
205
|
+
<MenubarItem inset disabled>
|
|
206
|
+
Show Status Bar
|
|
207
|
+
</MenubarItem>
|
|
208
|
+
<MenubarSeparator />
|
|
209
|
+
<MenubarItem inset>Hide Sidebar</MenubarItem>
|
|
210
|
+
<MenubarItem disabled inset>
|
|
211
|
+
Enter Full Screen
|
|
212
|
+
</MenubarItem>
|
|
213
|
+
</MenubarContent>
|
|
214
|
+
</MenubarMenu>
|
|
215
|
+
<MenubarMenu>
|
|
216
|
+
<MenubarTrigger className="hidden md:block">Account</MenubarTrigger>
|
|
217
|
+
<MenubarContent forceMount>
|
|
218
|
+
<MenubarLabel inset>Switch Account</MenubarLabel>
|
|
219
|
+
<MenubarSeparator />
|
|
220
|
+
<MenubarRadioGroup value="benoit">
|
|
221
|
+
<MenubarRadioItem value="andy">Andy</MenubarRadioItem>
|
|
222
|
+
<MenubarRadioItem value="benoit">Benoit</MenubarRadioItem>
|
|
223
|
+
<MenubarRadioItem value="Luis">Luis</MenubarRadioItem>
|
|
224
|
+
</MenubarRadioGroup>
|
|
225
|
+
<MenubarSeparator />
|
|
226
|
+
<MenubarItem inset>Manage Famliy...</MenubarItem>
|
|
227
|
+
<MenubarSeparator />
|
|
228
|
+
<MenubarItem inset>Add Account...</MenubarItem>
|
|
229
|
+
</MenubarContent>
|
|
230
|
+
</MenubarMenu>
|
|
231
|
+
|
|
232
|
+
<MenuModeToggle />
|
|
233
|
+
|
|
234
|
+
<ExamplesNav />
|
|
235
|
+
|
|
236
|
+
<div
|
|
237
|
+
data-tauri-drag-region
|
|
238
|
+
className="inline-flex h-full w-full justify-end"
|
|
239
|
+
>
|
|
240
|
+
{/* <div className="pr-3">
|
|
241
|
+
<ModeToggle />
|
|
242
|
+
</div> */}
|
|
243
|
+
|
|
244
|
+
<Button
|
|
245
|
+
onClick={minimizeWindow}
|
|
246
|
+
variant="ghost"
|
|
247
|
+
className="h-8 focus:outline-none"
|
|
248
|
+
>
|
|
249
|
+
<Icons.minimize className="h-3 w-3" />
|
|
250
|
+
</Button>
|
|
251
|
+
<Button
|
|
252
|
+
onClick={maximizeWindow}
|
|
253
|
+
variant="ghost"
|
|
254
|
+
className="h-8 focus:outline-none"
|
|
255
|
+
>
|
|
256
|
+
<Maximize className="h-4 w-4" />
|
|
257
|
+
</Button>
|
|
258
|
+
<Button
|
|
259
|
+
onClick={closeWindow}
|
|
260
|
+
variant="ghost"
|
|
261
|
+
className="h-8 focus:outline-none"
|
|
262
|
+
>
|
|
263
|
+
<X className="h-4 w-4" />
|
|
264
|
+
</Button>
|
|
265
|
+
</div>
|
|
266
|
+
</Menubar>
|
|
267
|
+
)
|
|
268
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import { useTheme } from "next-themes"
|
|
5
|
+
|
|
6
|
+
import { Button } from "@/components/ui/button"
|
|
7
|
+
import {
|
|
8
|
+
DropdownMenu,
|
|
9
|
+
DropdownMenuContent,
|
|
10
|
+
DropdownMenuItem,
|
|
11
|
+
DropdownMenuTrigger,
|
|
12
|
+
} from "@/components/ui/dropdown-menu"
|
|
13
|
+
import { Icons } from "@/components/icons"
|
|
14
|
+
|
|
15
|
+
export function ModeToggle() {
|
|
16
|
+
const { setTheme } = useTheme()
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<DropdownMenu>
|
|
20
|
+
<DropdownMenuTrigger asChild>
|
|
21
|
+
<Button variant="ghost" size="sm" className="w-9 px-0">
|
|
22
|
+
<Icons.sun className="rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
|
|
23
|
+
<Icons.moon className="absolute rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
|
|
24
|
+
<span className="sr-only">Toggle theme</span>
|
|
25
|
+
</Button>
|
|
26
|
+
</DropdownMenuTrigger>
|
|
27
|
+
<DropdownMenuContent align="end">
|
|
28
|
+
<DropdownMenuItem onClick={() => setTheme("light")}>
|
|
29
|
+
<Icons.sun className="mr-2 h-4 w-4" />
|
|
30
|
+
<span>Light</span>
|
|
31
|
+
</DropdownMenuItem>
|
|
32
|
+
<DropdownMenuItem onClick={() => setTheme("dark")}>
|
|
33
|
+
<Icons.moon className="mr-2 h-4 w-4" />
|
|
34
|
+
<span>Dark</span>
|
|
35
|
+
</DropdownMenuItem>
|
|
36
|
+
<DropdownMenuItem onClick={() => setTheme("system")}>
|
|
37
|
+
<Icons.laptop className="mr-2 h-4 w-4" />
|
|
38
|
+
<span>System</span>
|
|
39
|
+
</DropdownMenuItem>
|
|
40
|
+
</DropdownMenuContent>
|
|
41
|
+
</DropdownMenu>
|
|
42
|
+
)
|
|
43
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import Balance from "react-wrap-balancer"
|
|
2
|
+
|
|
3
|
+
import { cn } from "@/lib/utils"
|
|
4
|
+
|
|
5
|
+
function PageHeader({
|
|
6
|
+
className,
|
|
7
|
+
...props
|
|
8
|
+
}: React.HTMLAttributes<HTMLDivElement>) {
|
|
9
|
+
return (
|
|
10
|
+
<section
|
|
11
|
+
className={cn(
|
|
12
|
+
"flex max-w-[980px] flex-col items-start gap-2 py-6",
|
|
13
|
+
className
|
|
14
|
+
)}
|
|
15
|
+
{...props}
|
|
16
|
+
/>
|
|
17
|
+
)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function PageHeaderHeading({
|
|
21
|
+
className,
|
|
22
|
+
...props
|
|
23
|
+
}: React.HTMLAttributes<HTMLHeadingElement>) {
|
|
24
|
+
return (
|
|
25
|
+
<h1
|
|
26
|
+
className={cn(
|
|
27
|
+
"text-3xl font-bold leading-tight tracking-tighter md:text-5xl lg:text-6xl lg:leading-[1.1]",
|
|
28
|
+
className
|
|
29
|
+
)}
|
|
30
|
+
{...props}
|
|
31
|
+
/>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function PageHeaderDescription({
|
|
36
|
+
className,
|
|
37
|
+
...props
|
|
38
|
+
}: React.HTMLAttributes<HTMLParagraphElement>) {
|
|
39
|
+
return (
|
|
40
|
+
<Balance
|
|
41
|
+
className={cn(
|
|
42
|
+
"max-w-[750px] text-lg text-muted-foreground sm:text-xl",
|
|
43
|
+
className
|
|
44
|
+
)}
|
|
45
|
+
{...props}
|
|
46
|
+
/>
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { PageHeader, PageHeaderHeading, PageHeaderDescription }
|