create-tauri-ui 0.3.2 → 0.3.3
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/index.js +1 -1
- package/package.json +6 -6
- package/templates/.shared/.github/workflows/release.yml +112 -112
- package/templates/.shared/src-tauri/Cargo.lock +3835 -3835
- package/templates/.shared/src-tauri/Cargo.toml +4 -4
- package/templates/.shared/src-tauri/build.rs +3 -3
- package/templates/.shared/src-tauri/src/main.rs +22 -22
- package/templates/next/.github/workflows/release.yml +108 -108
- package/templates/next/.vscode/extensions.json +3 -3
- package/templates/next/README.md +95 -95
- package/templates/next/next-env.d.ts +5 -5
- package/templates/next/package.json +87 -87
- package/templates/next/pnpm-lock.yaml +4911 -4911
- package/templates/next/postcss.config.js +6 -6
- package/templates/next/prettier.config.js +35 -35
- package/templates/next/src/app/examples/layout.tsx +7 -7
- package/templates/next/src/app/page.tsx +5 -5
- package/templates/next/src/components/examples-nav.tsx +70 -70
- package/templates/next/src/components/greeting.tsx +21 -21
- package/templates/next/src/components/mode-toggle.tsx +43 -43
- package/templates/next/src/components/page-header.tsx +52 -52
- package/templates/next/src/components/style-switcher.tsx +19 -19
- package/templates/next/src/components/tailwind-indicator.tsx +18 -18
- package/templates/next/src/components/theme-provider.tsx +9 -9
- package/templates/next/src/components/ui/accordion.tsx +60 -60
- package/templates/next/src/components/ui/alert-dialog.tsx +145 -145
- package/templates/next/src/components/ui/alert.tsx +59 -59
- package/templates/next/src/components/ui/aspect-ratio.tsx +7 -7
- package/templates/next/src/components/ui/avatar.tsx +50 -50
- package/templates/next/src/components/ui/badge.tsx +36 -36
- package/templates/next/src/components/ui/button.tsx +56 -56
- package/templates/next/src/components/ui/calendar.tsx +64 -64
- package/templates/next/src/components/ui/card.tsx +79 -79
- package/templates/next/src/components/ui/checkbox.tsx +30 -30
- package/templates/next/src/components/ui/collapsible.tsx +11 -11
- package/templates/next/src/components/ui/command.tsx +155 -155
- package/templates/next/src/components/ui/context-menu.tsx +200 -200
- package/templates/next/src/components/ui/dialog.tsx +123 -123
- package/templates/next/src/components/ui/dropdown-menu.tsx +200 -200
- package/templates/next/src/components/ui/form.tsx +176 -176
- package/templates/next/src/components/ui/hover-card.tsx +29 -29
- package/templates/next/src/components/ui/input.tsx +25 -25
- package/templates/next/src/components/ui/label.tsx +26 -26
- package/templates/next/src/components/ui/menubar.tsx +236 -236
- package/templates/next/src/components/ui/navigation-menu.tsx +128 -128
- package/templates/next/src/components/ui/popover.tsx +31 -31
- package/templates/next/src/components/ui/progress.tsx +28 -28
- package/templates/next/src/components/ui/radio-group.tsx +44 -44
- package/templates/next/src/components/ui/scroll-area.tsx +48 -48
- package/templates/next/src/components/ui/select.tsx +121 -121
- package/templates/next/src/components/ui/separator.tsx +31 -31
- package/templates/next/src/components/ui/sheet.tsx +144 -144
- package/templates/next/src/components/ui/skeleton.tsx +15 -15
- package/templates/next/src/components/ui/slider.tsx +28 -28
- package/templates/next/src/components/ui/switch.tsx +29 -29
- package/templates/next/src/components/ui/table.tsx +114 -114
- package/templates/next/src/components/ui/tabs.tsx +55 -55
- package/templates/next/src/components/ui/textarea.tsx +24 -24
- package/templates/next/src/components/ui/toast.tsx +127 -127
- package/templates/next/src/components/ui/toaster.tsx +35 -35
- package/templates/next/src/components/ui/toggle.tsx +45 -45
- package/templates/next/src/components/ui/tooltip.tsx +30 -30
- package/templates/next/src/components/ui/use-toast.ts +192 -192
- package/templates/next/src/data/albums.ts +71 -71
- package/templates/next/src/data/playlists.ts +16 -16
- package/templates/next/src-tauri/Cargo.lock +3835 -3835
- package/templates/next/src-tauri/Cargo.toml +39 -39
- package/templates/next/src-tauri/build.rs +3 -3
- package/templates/sveltekit/.github/workflows/release.yml +108 -108
- package/templates/sveltekit/.prettierignore +13 -13
- package/templates/sveltekit/.prettierrc +8 -8
- package/templates/sveltekit/README.md +1 -1
- package/templates/sveltekit/package.json +85 -85
- package/templates/sveltekit/pnpm-lock.yaml +4177 -4177
- package/templates/sveltekit/postcss.config.cjs +13 -13
- package/templates/sveltekit/src/app.d.ts +18 -18
- package/templates/sveltekit/src/app.html +16 -16
- package/templates/sveltekit/src/index.test.ts +7 -7
- package/templates/sveltekit/src/lib/components/docs/TailwindIndicator.svelte +10 -10
- package/templates/sveltekit/src/lib/components/docs/charts/Bar.svelte +152 -152
- package/templates/sveltekit/src/lib/components/docs/dashboard/DashboardPage.svelte +108 -108
- package/templates/sveltekit/src/lib/components/docs/dashboard/MainNav.svelte +31 -31
- package/templates/sveltekit/src/lib/components/docs/dashboard/Overview.svelte +5 -5
- package/templates/sveltekit/src/lib/components/docs/dashboard/RecentSales.svelte +61 -61
- package/templates/sveltekit/src/lib/components/docs/dashboard/Search.svelte +7 -7
- package/templates/sveltekit/src/lib/components/docs/dashboard/index.ts +1 -1
- package/templates/sveltekit/src/lib/components/docs/examples-nav/ExampleCodeLink.svelte +19 -19
- package/templates/sveltekit/src/lib/components/docs/examples-nav/ExamplesNav.svelte +27 -27
- package/templates/sveltekit/src/lib/components/docs/examples-nav/index.ts +2 -2
- package/templates/sveltekit/src/lib/components/docs/icons/Apple.svelte +12 -12
- package/templates/sveltekit/src/lib/components/docs/icons/Aria.svelte +11 -11
- package/templates/sveltekit/src/lib/components/docs/icons/GitHub.svelte +12 -12
- package/templates/sveltekit/src/lib/components/docs/icons/Google.svelte +12 -12
- package/templates/sveltekit/src/lib/components/docs/icons/Logo.svelte +17 -17
- package/templates/sveltekit/src/lib/components/docs/icons/Minimize.svelte +12 -12
- package/templates/sveltekit/src/lib/components/docs/icons/Npm.svelte +12 -12
- package/templates/sveltekit/src/lib/components/docs/icons/PayPal.svelte +12 -12
- package/templates/sveltekit/src/lib/components/docs/icons/Pnpm.svelte +12 -12
- package/templates/sveltekit/src/lib/components/docs/icons/Radix.svelte +14 -14
- package/templates/sveltekit/src/lib/components/docs/icons/RadixSvelte.svelte +14 -14
- package/templates/sveltekit/src/lib/components/docs/icons/Tailwind.svelte +12 -12
- package/templates/sveltekit/src/lib/components/docs/icons/Yarn.svelte +12 -12
- package/templates/sveltekit/src/lib/components/docs/icons/index.ts +78 -78
- package/templates/sveltekit/src/lib/components/docs/index.ts +6 -6
- package/templates/sveltekit/src/lib/components/docs/light-switch/LightSwitch.svelte +75 -75
- package/templates/sveltekit/src/lib/components/docs/light-switch/index.ts +1 -1
- package/templates/sveltekit/src/lib/components/docs/light-switch/light-switch.ts +87 -87
- package/templates/sveltekit/src/lib/components/docs/light-switch/local-storage-store.ts +81 -81
- package/templates/sveltekit/src/lib/components/ui/accordion/Accordion.svelte +11 -11
- package/templates/sveltekit/src/lib/components/ui/accordion/AccordionContent.svelte +19 -19
- package/templates/sveltekit/src/lib/components/ui/accordion/AccordionItem.svelte +13 -13
- package/templates/sveltekit/src/lib/components/ui/accordion/AccordionTrigger.svelte +21 -21
- package/templates/sveltekit/src/lib/components/ui/accordion/index.ts +4 -4
- package/templates/sveltekit/src/lib/components/ui/alert/Alert.svelte +29 -29
- package/templates/sveltekit/src/lib/components/ui/alert/AlertDescription.svelte +10 -10
- package/templates/sveltekit/src/lib/components/ui/alert/AlertTitle.svelte +15 -15
- package/templates/sveltekit/src/lib/components/ui/alert/index.ts +3 -3
- package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogAction.svelte +12 -12
- package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogCancel.svelte +15 -15
- package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogContent.svelte +22 -22
- package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogDescription.svelte +14 -14
- package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogFooter.svelte +13 -13
- package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogHeader.svelte +10 -10
- package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogOverlay.svelte +15 -15
- package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogPortal.svelte +9 -9
- package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogTitle.svelte +11 -11
- package/templates/sveltekit/src/lib/components/ui/alert-dialog/index.ts +12 -12
- package/templates/sveltekit/src/lib/components/ui/aspect-ratio/AspectRatio.svelte +13 -13
- package/templates/sveltekit/src/lib/components/ui/aspect-ratio/index.ts +1 -1
- package/templates/sveltekit/src/lib/components/ui/avatar/Avatar.svelte +14 -14
- package/templates/sveltekit/src/lib/components/ui/avatar/AvatarFallback.svelte +14 -14
- package/templates/sveltekit/src/lib/components/ui/avatar/AvatarImage.svelte +17 -17
- package/templates/sveltekit/src/lib/components/ui/avatar/index.ts +3 -3
- package/templates/sveltekit/src/lib/components/ui/badge/Badge.svelte +39 -39
- package/templates/sveltekit/src/lib/components/ui/badge/index.ts +21 -21
- package/templates/sveltekit/src/lib/components/ui/button/Button.svelte +47 -47
- package/templates/sveltekit/src/lib/components/ui/button/index.ts +28 -28
- package/templates/sveltekit/src/lib/components/ui/card/Card.svelte +18 -18
- package/templates/sveltekit/src/lib/components/ui/card/CardContent.svelte +10 -10
- package/templates/sveltekit/src/lib/components/ui/card/CardDescription.svelte +10 -10
- package/templates/sveltekit/src/lib/components/ui/card/CardFooter.svelte +10 -10
- package/templates/sveltekit/src/lib/components/ui/card/CardHeader.svelte +10 -10
- package/templates/sveltekit/src/lib/components/ui/card/CardTitle.svelte +16 -16
- package/templates/sveltekit/src/lib/components/ui/card/index.ts +6 -6
- package/templates/sveltekit/src/lib/components/ui/checkbox/Checkbox.svelte +23 -23
- package/templates/sveltekit/src/lib/components/ui/checkbox/index.ts +1 -1
- package/templates/sveltekit/src/lib/components/ui/collapsible/index.ts +7 -7
- package/templates/sveltekit/src/lib/components/ui/dialog/DialogContent.svelte +29 -29
- package/templates/sveltekit/src/lib/components/ui/dialog/DialogDescription.svelte +14 -14
- package/templates/sveltekit/src/lib/components/ui/dialog/DialogFooter.svelte +13 -13
- package/templates/sveltekit/src/lib/components/ui/dialog/DialogHeader.svelte +10 -10
- package/templates/sveltekit/src/lib/components/ui/dialog/DialogOverlay.svelte +15 -15
- package/templates/sveltekit/src/lib/components/ui/dialog/DialogPortal.svelte +13 -13
- package/templates/sveltekit/src/lib/components/ui/dialog/DialogTitle.svelte +14 -14
- package/templates/sveltekit/src/lib/components/ui/dialog/index.ts +12 -12
- package/templates/sveltekit/src/lib/components/ui/hover-card/HoverCardContent.svelte +24 -24
- package/templates/sveltekit/src/lib/components/ui/hover-card/index.ts +6 -6
- package/templates/sveltekit/src/lib/components/ui/input/Input.svelte +30 -30
- package/templates/sveltekit/src/lib/components/ui/input/index.ts +1 -1
- package/templates/sveltekit/src/lib/components/ui/label/Label.svelte +16 -16
- package/templates/sveltekit/src/lib/components/ui/label/index.ts +1 -1
- package/templates/sveltekit/src/lib/components/ui/progress/Progress.svelte +22 -22
- package/templates/sveltekit/src/lib/components/ui/progress/index.ts +1 -1
- package/templates/sveltekit/src/lib/components/ui/radio-group/RadioGroup.svelte +13 -13
- package/templates/sveltekit/src/lib/components/ui/radio-group/RadioGroupItem.svelte +23 -23
- package/templates/sveltekit/src/lib/components/ui/radio-group/index.ts +2 -2
- package/templates/sveltekit/src/lib/components/ui/select/SelectContent.svelte +26 -26
- package/templates/sveltekit/src/lib/components/ui/select/SelectItem.svelte +29 -29
- package/templates/sveltekit/src/lib/components/ui/select/SelectLabel.svelte +14 -14
- package/templates/sveltekit/src/lib/components/ui/select/SelectSeparator.svelte +9 -9
- package/templates/sveltekit/src/lib/components/ui/select/SelectTrigger.svelte +21 -21
- package/templates/sveltekit/src/lib/components/ui/select/index.ts +10 -10
- package/templates/sveltekit/src/lib/components/ui/separator/Separator.svelte +22 -22
- package/templates/sveltekit/src/lib/components/ui/separator/index.ts +1 -1
- package/templates/sveltekit/src/lib/components/ui/sheet/SheetContent.svelte +27 -27
- package/templates/sveltekit/src/lib/components/ui/sheet/SheetDescription.svelte +11 -11
- package/templates/sveltekit/src/lib/components/ui/sheet/SheetFooter.svelte +13 -13
- package/templates/sveltekit/src/lib/components/ui/sheet/SheetHeader.svelte +10 -10
- package/templates/sveltekit/src/lib/components/ui/sheet/SheetOverlay.svelte +15 -15
- package/templates/sveltekit/src/lib/components/ui/sheet/SheetPortal.svelte +28 -28
- package/templates/sveltekit/src/lib/components/ui/sheet/SheetTitle.svelte +14 -14
- package/templates/sveltekit/src/lib/components/ui/sheet/index.ts +102 -102
- package/templates/sveltekit/src/lib/components/ui/skeleton/Skeleton.svelte +8 -8
- package/templates/sveltekit/src/lib/components/ui/skeleton/index.ts +1 -1
- package/templates/sveltekit/src/lib/components/ui/slider/Slider.svelte +22 -22
- package/templates/sveltekit/src/lib/components/ui/slider/index.ts +1 -1
- package/templates/sveltekit/src/lib/components/ui/switch/Switch.svelte +32 -32
- package/templates/sveltekit/src/lib/components/ui/switch/index.ts +1 -1
- package/templates/sveltekit/src/lib/components/ui/table/Table.svelte +12 -12
- package/templates/sveltekit/src/lib/components/ui/table/TableBody.svelte +10 -10
- package/templates/sveltekit/src/lib/components/ui/table/TableCaption.svelte +10 -10
- package/templates/sveltekit/src/lib/components/ui/table/TableCell.svelte +10 -10
- package/templates/sveltekit/src/lib/components/ui/table/TableFooter.svelte +10 -10
- package/templates/sveltekit/src/lib/components/ui/table/TableHead.svelte +16 -16
- package/templates/sveltekit/src/lib/components/ui/table/TableHeader.svelte +10 -10
- package/templates/sveltekit/src/lib/components/ui/table/TableRow.svelte +16 -16
- package/templates/sveltekit/src/lib/components/ui/table/index.ts +8 -8
- package/templates/sveltekit/src/lib/components/ui/tabs/TabsContent.svelte +20 -20
- package/templates/sveltekit/src/lib/components/ui/tabs/TabsList.svelte +17 -17
- package/templates/sveltekit/src/lib/components/ui/tabs/TabsTrigger.svelte +20 -20
- package/templates/sveltekit/src/lib/components/ui/tabs/index.ts +7 -7
- package/templates/sveltekit/src/lib/components/ui/textarea/Textarea.svelte +30 -30
- package/templates/sveltekit/src/lib/components/ui/textarea/index.ts +1 -1
- package/templates/sveltekit/src/lib/components/ui/toggle/Toggle.svelte +44 -44
- package/templates/sveltekit/src/lib/components/ui/toggle/index.ts +1 -1
- package/templates/sveltekit/src/lib/components/ui/tooltip/TooltipContent.svelte +22 -22
- package/templates/sveltekit/src/lib/components/ui/tooltip/index.ts +6 -6
- package/templates/sveltekit/src/lib/config/components.ts +306 -306
- package/templates/sveltekit/src/lib/config/docs.ts +356 -356
- package/templates/sveltekit/src/lib/config/site.ts +15 -15
- package/templates/sveltekit/src/lib/types/docs.ts +50 -50
- package/templates/sveltekit/src/lib/types/nav.ts +18 -18
- package/templates/sveltekit/src/lib/utils.ts +75 -75
- package/templates/sveltekit/src/routes/+layout.svelte +48 -48
- package/templates/sveltekit/src/routes/+page.ts +6 -6
- package/templates/sveltekit/src/routes/authentication/+page.svelte +57 -57
- package/templates/sveltekit/src/routes/authentication/+page.ts +7 -7
- package/templates/sveltekit/src/routes/authentication/UserAuthForm.svelte +61 -61
- package/templates/sveltekit/src/routes/cards/+page.svelte +26 -26
- package/templates/sveltekit/src/routes/cards/+page.ts +7 -7
- package/templates/sveltekit/src/routes/cards/CookieSettings.svelte +52 -52
- package/templates/sveltekit/src/routes/cards/CreateAccount.svelte +52 -52
- package/templates/sveltekit/src/routes/cards/DemoContainer.svelte +10 -10
- package/templates/sveltekit/src/routes/cards/Notifications.svelte +38 -38
- package/templates/sveltekit/src/routes/cards/PaymentMethod.svelte +110 -110
- package/templates/sveltekit/src/routes/cards/ReportAnIssue.svelte +71 -71
- package/templates/sveltekit/src/routes/cards/ShareDocument.svelte +91 -91
- package/templates/sveltekit/src/routes/dashboard/+page.svelte +5 -5
- package/templates/sveltekit/src/routes/dashboard/+page.ts +7 -7
- package/templates/sveltekit/src/routes/music/albums.ts +61 -61
- package/templates/sveltekit/src/routes/music/playlists.ts +16 -16
- package/templates/sveltekit/src/styles/globals.css +125 -125
- package/templates/sveltekit/src/styles/mdsvex.css +80 -80
- package/templates/sveltekit/src-tauri/Cargo.lock +3835 -3835
- package/templates/sveltekit/src-tauri/Cargo.toml +39 -39
- package/templates/sveltekit/src-tauri/build.rs +3 -3
- package/templates/sveltekit/src-tauri/tauri.conf.json +71 -71
- package/templates/sveltekit/svelte.config.js +22 -22
- package/templates/sveltekit/tailwind.config.js +67 -67
- package/templates/sveltekit/tsconfig.json +13 -13
- package/templates/vite/package.json +83 -83
- package/templates/vite/pnpm-lock.yaml +5176 -5176
- package/templates/vite/src-tauri/Cargo.lock +3835 -3835
- package/templates/vite/src-tauri/Cargo.toml +39 -39
- package/templates/vite/src-tauri/build.rs +3 -3
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
const tailwindcss = require('tailwindcss');
|
|
2
|
-
const autoprefixer = require('autoprefixer');
|
|
3
|
-
|
|
4
|
-
const config = {
|
|
5
|
-
plugins: [
|
|
6
|
-
//Some plugins, like tailwindcss/nesting, need to run before Tailwind,
|
|
7
|
-
tailwindcss(),
|
|
8
|
-
//But others, like autoprefixer, need to run after,
|
|
9
|
-
autoprefixer
|
|
10
|
-
]
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
module.exports = config;
|
|
1
|
+
const tailwindcss = require('tailwindcss');
|
|
2
|
+
const autoprefixer = require('autoprefixer');
|
|
3
|
+
|
|
4
|
+
const config = {
|
|
5
|
+
plugins: [
|
|
6
|
+
//Some plugins, like tailwindcss/nesting, need to run before Tailwind,
|
|
7
|
+
tailwindcss(),
|
|
8
|
+
//But others, like autoprefixer, need to run after,
|
|
9
|
+
autoprefixer
|
|
10
|
+
]
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
module.exports = config;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
// See https://kit.svelte.dev/docs/types#app
|
|
2
|
-
// for information about these interfaces
|
|
3
|
-
declare global {
|
|
4
|
-
namespace App {
|
|
5
|
-
// interface Error {}
|
|
6
|
-
// interface Locals {}
|
|
7
|
-
// interface PageData {}
|
|
8
|
-
// interface Platform {}
|
|
9
|
-
}
|
|
10
|
-
namespace svelteHTML {
|
|
11
|
-
interface HTMLAttributes<T> {
|
|
12
|
-
'on:copy-done'?: (e: CustomEvent<T>) => void;
|
|
13
|
-
'on:copy-error'?: (e: CustomEvent<T>) => void;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export {};
|
|
1
|
+
// See https://kit.svelte.dev/docs/types#app
|
|
2
|
+
// for information about these interfaces
|
|
3
|
+
declare global {
|
|
4
|
+
namespace App {
|
|
5
|
+
// interface Error {}
|
|
6
|
+
// interface Locals {}
|
|
7
|
+
// interface PageData {}
|
|
8
|
+
// interface Platform {}
|
|
9
|
+
}
|
|
10
|
+
namespace svelteHTML {
|
|
11
|
+
interface HTMLAttributes<T> {
|
|
12
|
+
'on:copy-done'?: (e: CustomEvent<T>) => void;
|
|
13
|
+
'on:copy-error'?: (e: CustomEvent<T>) => void;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export {};
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8" />
|
|
5
|
-
<link rel="icon" href="%sveltekit.assets%/favicon.ico" />
|
|
6
|
-
<meta name="viewport" content="width=device-width" />
|
|
7
|
-
%sveltekit.head%
|
|
8
|
-
</head>
|
|
9
|
-
|
|
10
|
-
<body
|
|
11
|
-
data-sveltekit-preload-data="hover"
|
|
12
|
-
class="min-h-screen bg-background font-sans antialiased"
|
|
13
|
-
>
|
|
14
|
-
<div style="display: contents" class="flex min-h-screen flex-col">%sveltekit.body%</div>
|
|
15
|
-
</body>
|
|
16
|
-
</html>
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<link rel="icon" href="%sveltekit.assets%/favicon.ico" />
|
|
6
|
+
<meta name="viewport" content="width=device-width" />
|
|
7
|
+
%sveltekit.head%
|
|
8
|
+
</head>
|
|
9
|
+
|
|
10
|
+
<body
|
|
11
|
+
data-sveltekit-preload-data="hover"
|
|
12
|
+
class="min-h-screen bg-background font-sans antialiased"
|
|
13
|
+
>
|
|
14
|
+
<div style="display: contents" class="flex min-h-screen flex-col">%sveltekit.body%</div>
|
|
15
|
+
</body>
|
|
16
|
+
</html>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
|
|
3
|
-
describe('sum test', () => {
|
|
4
|
-
it('adds 1 + 2 to equal 3', () => {
|
|
5
|
-
expect(1 + 2).toBe(3);
|
|
6
|
-
});
|
|
7
|
-
});
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
|
|
3
|
+
describe('sum test', () => {
|
|
4
|
+
it('adds 1 + 2 to equal 3', () => {
|
|
5
|
+
expect(1 + 2).toBe(3);
|
|
6
|
+
});
|
|
7
|
+
});
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<div
|
|
2
|
-
class="fixed bottom-1 left-1 z-50 flex h-6 w-6 items-center justify-center rounded-full bg-gray-800 p-3 font-mono text-xs text-white"
|
|
3
|
-
>
|
|
4
|
-
<div class="block sm:hidden">xs</div>
|
|
5
|
-
<div class="hidden sm:block md:hidden lg:hidden xl:hidden 2xl:hidden">sm</div>
|
|
6
|
-
<div class="hidden md:block lg:hidden xl:hidden 2xl:hidden">md</div>
|
|
7
|
-
<div class="hidden lg:block xl:hidden 2xl:hidden">lg</div>
|
|
8
|
-
<div class="hidden xl:block 2xl:hidden">xl</div>
|
|
9
|
-
<div class="hidden 2xl:block">2xl</div>
|
|
10
|
-
</div>
|
|
1
|
+
<div
|
|
2
|
+
class="fixed bottom-1 left-1 z-50 flex h-6 w-6 items-center justify-center rounded-full bg-gray-800 p-3 font-mono text-xs text-white"
|
|
3
|
+
>
|
|
4
|
+
<div class="block sm:hidden">xs</div>
|
|
5
|
+
<div class="hidden sm:block md:hidden lg:hidden xl:hidden 2xl:hidden">sm</div>
|
|
6
|
+
<div class="hidden md:block lg:hidden xl:hidden 2xl:hidden">md</div>
|
|
7
|
+
<div class="hidden lg:block xl:hidden 2xl:hidden">lg</div>
|
|
8
|
+
<div class="hidden xl:block 2xl:hidden">xl</div>
|
|
9
|
+
<div class="hidden 2xl:block">2xl</div>
|
|
10
|
+
</div>
|
|
@@ -1,152 +1,152 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { scaleLinear } from 'd3-scale';
|
|
3
|
-
|
|
4
|
-
const data = [
|
|
5
|
-
{
|
|
6
|
-
name: 'Jan',
|
|
7
|
-
total: Math.floor(Math.random() * 5000) + 1000
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
name: 'Feb',
|
|
11
|
-
total: Math.floor(Math.random() * 5000) + 1000
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
name: 'Mar',
|
|
15
|
-
total: Math.floor(Math.random() * 5000) + 1000
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
name: 'Apr',
|
|
19
|
-
total: Math.floor(Math.random() * 5000) + 1000
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
name: 'May',
|
|
23
|
-
total: Math.floor(Math.random() * 5000) + 1000
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
name: 'Jun',
|
|
27
|
-
total: Math.floor(Math.random() * 5000) + 1000
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
name: 'Jul',
|
|
31
|
-
total: Math.floor(Math.random() * 5000) + 1000
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
name: 'Aug',
|
|
35
|
-
total: Math.floor(Math.random() * 5000) + 1000
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: 'Sep',
|
|
39
|
-
total: Math.floor(Math.random() * 5000) + 1000
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
name: 'Oct',
|
|
43
|
-
total: Math.floor(Math.random() * 5000) + 1000
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: 'Nov',
|
|
47
|
-
total: Math.floor(Math.random() * 5000) + 1000
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: 'Dec',
|
|
51
|
-
total: Math.floor(Math.random() * 5000) + 1000
|
|
52
|
-
}
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
const xTicks = data.map((d) => d.name);
|
|
56
|
-
const yTicks = [0, 1500, 3000, 4500, 6000];
|
|
57
|
-
const padding = { top: 20, right: 15, bottom: 20, left: 45 };
|
|
58
|
-
|
|
59
|
-
let width = 500;
|
|
60
|
-
let height = 200;
|
|
61
|
-
|
|
62
|
-
function formatMobile(tick: number | string) {
|
|
63
|
-
return "'" + tick.toString().slice(-2);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
$: xScale = scaleLinear()
|
|
67
|
-
.domain([0, xTicks.length])
|
|
68
|
-
.range([padding.left, width - padding.right]);
|
|
69
|
-
|
|
70
|
-
$: yScale = scaleLinear()
|
|
71
|
-
.domain([0, Math.max.apply(null, yTicks)])
|
|
72
|
-
.range([height - padding.bottom, padding.top]);
|
|
73
|
-
|
|
74
|
-
$: innerWidth = width - (padding.left + padding.right);
|
|
75
|
-
$: barWidth = innerWidth / xTicks.length;
|
|
76
|
-
</script>
|
|
77
|
-
|
|
78
|
-
<div class="chart" bind:clientWidth={width} bind:clientHeight={height}>
|
|
79
|
-
<svg>
|
|
80
|
-
<!-- y axis -->
|
|
81
|
-
<g class="axis y-axis">
|
|
82
|
-
{#each yTicks as tick}
|
|
83
|
-
<g class="text-xs" transform="translate(0, {yScale(tick)})">
|
|
84
|
-
<text
|
|
85
|
-
stroke="none"
|
|
86
|
-
font-size="12"
|
|
87
|
-
orientation="left"
|
|
88
|
-
width="60"
|
|
89
|
-
height="310"
|
|
90
|
-
x="57"
|
|
91
|
-
y="-4"
|
|
92
|
-
fill="#888888"
|
|
93
|
-
text-anchor="end"><tspan x="36" dy="0.355em">${tick}</tspan></text
|
|
94
|
-
>
|
|
95
|
-
</g>
|
|
96
|
-
{/each}
|
|
97
|
-
</g>
|
|
98
|
-
|
|
99
|
-
<!-- x axis -->
|
|
100
|
-
<g class="axis x-axis">
|
|
101
|
-
{#each data as point, i}
|
|
102
|
-
<g class="text-xs" transform="translate({xScale(i)},{height})">
|
|
103
|
-
<text
|
|
104
|
-
stroke="none"
|
|
105
|
-
font-size="12"
|
|
106
|
-
orientation="bottom"
|
|
107
|
-
width="531"
|
|
108
|
-
height="30"
|
|
109
|
-
x={barWidth / 2}
|
|
110
|
-
y="-15"
|
|
111
|
-
fill="#888888"
|
|
112
|
-
text-anchor="middle"
|
|
113
|
-
><tspan x={barWidth / 2} dy="0.71em"
|
|
114
|
-
>{width > 380 ? point.name : formatMobile(point.name)}</tspan
|
|
115
|
-
></text
|
|
116
|
-
>
|
|
117
|
-
</g>
|
|
118
|
-
{/each}
|
|
119
|
-
</g>
|
|
120
|
-
|
|
121
|
-
<g>
|
|
122
|
-
{#each data as point, i}
|
|
123
|
-
<rect
|
|
124
|
-
x={xScale(i) + 2}
|
|
125
|
-
y={yScale(point.total)}
|
|
126
|
-
width={barWidth - 8}
|
|
127
|
-
height={yScale(0) - yScale(point.total)}
|
|
128
|
-
fill="#adfa1d"
|
|
129
|
-
rx="4"
|
|
130
|
-
ry="4"
|
|
131
|
-
/>
|
|
132
|
-
{/each}
|
|
133
|
-
</g>
|
|
134
|
-
</svg>
|
|
135
|
-
</div>
|
|
136
|
-
|
|
137
|
-
<style>
|
|
138
|
-
.chart {
|
|
139
|
-
width: 100%;
|
|
140
|
-
margin: 0 auto;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
svg {
|
|
144
|
-
position: relative;
|
|
145
|
-
width: 100%;
|
|
146
|
-
height: 350px;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
rect {
|
|
150
|
-
max-width: 51px;
|
|
151
|
-
}
|
|
152
|
-
</style>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { scaleLinear } from 'd3-scale';
|
|
3
|
+
|
|
4
|
+
const data = [
|
|
5
|
+
{
|
|
6
|
+
name: 'Jan',
|
|
7
|
+
total: Math.floor(Math.random() * 5000) + 1000
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
name: 'Feb',
|
|
11
|
+
total: Math.floor(Math.random() * 5000) + 1000
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Mar',
|
|
15
|
+
total: Math.floor(Math.random() * 5000) + 1000
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Apr',
|
|
19
|
+
total: Math.floor(Math.random() * 5000) + 1000
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'May',
|
|
23
|
+
total: Math.floor(Math.random() * 5000) + 1000
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'Jun',
|
|
27
|
+
total: Math.floor(Math.random() * 5000) + 1000
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'Jul',
|
|
31
|
+
total: Math.floor(Math.random() * 5000) + 1000
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Aug',
|
|
35
|
+
total: Math.floor(Math.random() * 5000) + 1000
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Sep',
|
|
39
|
+
total: Math.floor(Math.random() * 5000) + 1000
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Oct',
|
|
43
|
+
total: Math.floor(Math.random() * 5000) + 1000
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'Nov',
|
|
47
|
+
total: Math.floor(Math.random() * 5000) + 1000
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'Dec',
|
|
51
|
+
total: Math.floor(Math.random() * 5000) + 1000
|
|
52
|
+
}
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
const xTicks = data.map((d) => d.name);
|
|
56
|
+
const yTicks = [0, 1500, 3000, 4500, 6000];
|
|
57
|
+
const padding = { top: 20, right: 15, bottom: 20, left: 45 };
|
|
58
|
+
|
|
59
|
+
let width = 500;
|
|
60
|
+
let height = 200;
|
|
61
|
+
|
|
62
|
+
function formatMobile(tick: number | string) {
|
|
63
|
+
return "'" + tick.toString().slice(-2);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
$: xScale = scaleLinear()
|
|
67
|
+
.domain([0, xTicks.length])
|
|
68
|
+
.range([padding.left, width - padding.right]);
|
|
69
|
+
|
|
70
|
+
$: yScale = scaleLinear()
|
|
71
|
+
.domain([0, Math.max.apply(null, yTicks)])
|
|
72
|
+
.range([height - padding.bottom, padding.top]);
|
|
73
|
+
|
|
74
|
+
$: innerWidth = width - (padding.left + padding.right);
|
|
75
|
+
$: barWidth = innerWidth / xTicks.length;
|
|
76
|
+
</script>
|
|
77
|
+
|
|
78
|
+
<div class="chart" bind:clientWidth={width} bind:clientHeight={height}>
|
|
79
|
+
<svg>
|
|
80
|
+
<!-- y axis -->
|
|
81
|
+
<g class="axis y-axis">
|
|
82
|
+
{#each yTicks as tick}
|
|
83
|
+
<g class="text-xs" transform="translate(0, {yScale(tick)})">
|
|
84
|
+
<text
|
|
85
|
+
stroke="none"
|
|
86
|
+
font-size="12"
|
|
87
|
+
orientation="left"
|
|
88
|
+
width="60"
|
|
89
|
+
height="310"
|
|
90
|
+
x="57"
|
|
91
|
+
y="-4"
|
|
92
|
+
fill="#888888"
|
|
93
|
+
text-anchor="end"><tspan x="36" dy="0.355em">${tick}</tspan></text
|
|
94
|
+
>
|
|
95
|
+
</g>
|
|
96
|
+
{/each}
|
|
97
|
+
</g>
|
|
98
|
+
|
|
99
|
+
<!-- x axis -->
|
|
100
|
+
<g class="axis x-axis">
|
|
101
|
+
{#each data as point, i}
|
|
102
|
+
<g class="text-xs" transform="translate({xScale(i)},{height})">
|
|
103
|
+
<text
|
|
104
|
+
stroke="none"
|
|
105
|
+
font-size="12"
|
|
106
|
+
orientation="bottom"
|
|
107
|
+
width="531"
|
|
108
|
+
height="30"
|
|
109
|
+
x={barWidth / 2}
|
|
110
|
+
y="-15"
|
|
111
|
+
fill="#888888"
|
|
112
|
+
text-anchor="middle"
|
|
113
|
+
><tspan x={barWidth / 2} dy="0.71em"
|
|
114
|
+
>{width > 380 ? point.name : formatMobile(point.name)}</tspan
|
|
115
|
+
></text
|
|
116
|
+
>
|
|
117
|
+
</g>
|
|
118
|
+
{/each}
|
|
119
|
+
</g>
|
|
120
|
+
|
|
121
|
+
<g>
|
|
122
|
+
{#each data as point, i}
|
|
123
|
+
<rect
|
|
124
|
+
x={xScale(i) + 2}
|
|
125
|
+
y={yScale(point.total)}
|
|
126
|
+
width={barWidth - 8}
|
|
127
|
+
height={yScale(0) - yScale(point.total)}
|
|
128
|
+
fill="#adfa1d"
|
|
129
|
+
rx="4"
|
|
130
|
+
ry="4"
|
|
131
|
+
/>
|
|
132
|
+
{/each}
|
|
133
|
+
</g>
|
|
134
|
+
</svg>
|
|
135
|
+
</div>
|
|
136
|
+
|
|
137
|
+
<style>
|
|
138
|
+
.chart {
|
|
139
|
+
width: 100%;
|
|
140
|
+
margin: 0 auto;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
svg {
|
|
144
|
+
position: relative;
|
|
145
|
+
width: 100%;
|
|
146
|
+
height: 350px;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
rect {
|
|
150
|
+
max-width: 51px;
|
|
151
|
+
}
|
|
152
|
+
</style>
|
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { Activity, CreditCard, DollarSign, Download, Users } from 'lucide-svelte';
|
|
3
|
-
import { Avatar, AvatarFallback, AvatarImage } from '$components/ui/avatar';
|
|
4
|
-
import { Button } from '$components/ui/button';
|
|
5
|
-
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '$components/ui/card';
|
|
6
|
-
import { Tabs, TabsContent, TabsList, TabsTrigger } from '$components/ui/tabs';
|
|
7
|
-
import MainNav from './MainNav.svelte';
|
|
8
|
-
import Overview from './Overview.svelte';
|
|
9
|
-
import RecentSales from './RecentSales.svelte';
|
|
10
|
-
import Search from './Search.svelte';
|
|
11
|
-
</script>
|
|
12
|
-
|
|
13
|
-
<div class="flex-col md:flex">
|
|
14
|
-
<div class="border-b">
|
|
15
|
-
<div class="flex h-16 items-center px-4">
|
|
16
|
-
<MainNav class="mx-6" />
|
|
17
|
-
<div class="ml-auto flex items-center space-x-4">
|
|
18
|
-
<Search />
|
|
19
|
-
<Avatar className="h-8 w-8">
|
|
20
|
-
<AvatarImage src="/avatars/01.png" alt="@shadcn" />
|
|
21
|
-
<AvatarFallback>SC</AvatarFallback>
|
|
22
|
-
</Avatar>
|
|
23
|
-
</div>
|
|
24
|
-
</div>
|
|
25
|
-
</div>
|
|
26
|
-
<div class="flex-1 space-y-4 p-8 pt-6">
|
|
27
|
-
<div class="flex items-center justify-between space-y-2">
|
|
28
|
-
<h2 class="text-3xl font-bold tracking-tight">Dashboard</h2>
|
|
29
|
-
<div class="flex items-center space-x-2">
|
|
30
|
-
<Button size="sm">
|
|
31
|
-
<Download class="mr-2 h-4 w-4" />
|
|
32
|
-
Download
|
|
33
|
-
</Button>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
<Tabs value="overview" class="space-y-4">
|
|
37
|
-
<TabsList>
|
|
38
|
-
<TabsTrigger value="overview">Overview</TabsTrigger>
|
|
39
|
-
<TabsTrigger value="analytics" disabled>Analytics</TabsTrigger>
|
|
40
|
-
<TabsTrigger value="reports" disabled>Reports</TabsTrigger>
|
|
41
|
-
<TabsTrigger value="notifications" disabled>Notifications</TabsTrigger>
|
|
42
|
-
</TabsList>
|
|
43
|
-
<TabsContent value="overview" class="space-y-4">
|
|
44
|
-
<div class="grid gap-4 md:grid-cols-2 lg:grid-cols-4">
|
|
45
|
-
<Card>
|
|
46
|
-
<CardHeader class="flex flex-row items-center justify-between space-y-0 pb-2">
|
|
47
|
-
<CardTitle class="text-sm font-medium">Total Revenue</CardTitle>
|
|
48
|
-
<DollarSign class="h-4 w-4 text-muted-foreground" />
|
|
49
|
-
</CardHeader>
|
|
50
|
-
<CardContent>
|
|
51
|
-
<div class="text-2xl font-bold">$45,231.89</div>
|
|
52
|
-
<p class="text-xs text-muted-foreground">+20.1% from last month</p>
|
|
53
|
-
</CardContent>
|
|
54
|
-
</Card>
|
|
55
|
-
<Card>
|
|
56
|
-
<CardHeader class="flex flex-row items-center justify-between space-y-0 pb-2">
|
|
57
|
-
<CardTitle class="text-sm font-medium">Subscriptions</CardTitle>
|
|
58
|
-
<Users class="h-4 w-4 text-muted-foreground" />
|
|
59
|
-
</CardHeader>
|
|
60
|
-
<CardContent>
|
|
61
|
-
<div class="text-2xl font-bold">+2350</div>
|
|
62
|
-
<p class="text-xs text-muted-foreground">+180.1% from last month</p>
|
|
63
|
-
</CardContent>
|
|
64
|
-
</Card>
|
|
65
|
-
<Card>
|
|
66
|
-
<CardHeader class="flex flex-row items-center justify-between space-y-0 pb-2">
|
|
67
|
-
<CardTitle class="text-sm font-medium">Sales</CardTitle>
|
|
68
|
-
<CreditCard class="h-4 w-4 text-muted-foreground" />
|
|
69
|
-
</CardHeader>
|
|
70
|
-
<CardContent>
|
|
71
|
-
<div class="text-2xl font-bold">+12,234</div>
|
|
72
|
-
<p class="text-xs text-muted-foreground">+19% from last month</p>
|
|
73
|
-
</CardContent>
|
|
74
|
-
</Card>
|
|
75
|
-
<Card>
|
|
76
|
-
<CardHeader class="flex flex-row items-center justify-between space-y-0 pb-2">
|
|
77
|
-
<CardTitle class="text-sm font-medium">Active Now</CardTitle>
|
|
78
|
-
<Activity class="h-4 w-4 text-muted-foreground" />
|
|
79
|
-
</CardHeader>
|
|
80
|
-
<CardContent>
|
|
81
|
-
<div class="text-2xl font-bold">+573</div>
|
|
82
|
-
<p class="text-xs text-muted-foreground">+201 since last hour</p>
|
|
83
|
-
</CardContent>
|
|
84
|
-
</Card>
|
|
85
|
-
</div>
|
|
86
|
-
<div class="grid gap-4 md:grid-cols-2 lg:grid-cols-7">
|
|
87
|
-
<Card class="col-span-4">
|
|
88
|
-
<CardHeader>
|
|
89
|
-
<CardTitle>Overview</CardTitle>
|
|
90
|
-
</CardHeader>
|
|
91
|
-
<CardContent>
|
|
92
|
-
<Overview />
|
|
93
|
-
</CardContent>
|
|
94
|
-
</Card>
|
|
95
|
-
<Card class="col-span-3">
|
|
96
|
-
<CardHeader>
|
|
97
|
-
<CardTitle>Recent Sales</CardTitle>
|
|
98
|
-
<CardDescription>You made 265 sales this month.</CardDescription>
|
|
99
|
-
</CardHeader>
|
|
100
|
-
<CardContent>
|
|
101
|
-
<RecentSales />
|
|
102
|
-
</CardContent>
|
|
103
|
-
</Card>
|
|
104
|
-
</div>
|
|
105
|
-
</TabsContent>
|
|
106
|
-
</Tabs>
|
|
107
|
-
</div>
|
|
108
|
-
</div>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Activity, CreditCard, DollarSign, Download, Users } from 'lucide-svelte';
|
|
3
|
+
import { Avatar, AvatarFallback, AvatarImage } from '$components/ui/avatar';
|
|
4
|
+
import { Button } from '$components/ui/button';
|
|
5
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '$components/ui/card';
|
|
6
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from '$components/ui/tabs';
|
|
7
|
+
import MainNav from './MainNav.svelte';
|
|
8
|
+
import Overview from './Overview.svelte';
|
|
9
|
+
import RecentSales from './RecentSales.svelte';
|
|
10
|
+
import Search from './Search.svelte';
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<div class="flex-col md:flex">
|
|
14
|
+
<div class="border-b">
|
|
15
|
+
<div class="flex h-16 items-center px-4">
|
|
16
|
+
<MainNav class="mx-6" />
|
|
17
|
+
<div class="ml-auto flex items-center space-x-4">
|
|
18
|
+
<Search />
|
|
19
|
+
<Avatar className="h-8 w-8">
|
|
20
|
+
<AvatarImage src="/avatars/01.png" alt="@shadcn" />
|
|
21
|
+
<AvatarFallback>SC</AvatarFallback>
|
|
22
|
+
</Avatar>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="flex-1 space-y-4 p-8 pt-6">
|
|
27
|
+
<div class="flex items-center justify-between space-y-2">
|
|
28
|
+
<h2 class="text-3xl font-bold tracking-tight">Dashboard</h2>
|
|
29
|
+
<div class="flex items-center space-x-2">
|
|
30
|
+
<Button size="sm">
|
|
31
|
+
<Download class="mr-2 h-4 w-4" />
|
|
32
|
+
Download
|
|
33
|
+
</Button>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
<Tabs value="overview" class="space-y-4">
|
|
37
|
+
<TabsList>
|
|
38
|
+
<TabsTrigger value="overview">Overview</TabsTrigger>
|
|
39
|
+
<TabsTrigger value="analytics" disabled>Analytics</TabsTrigger>
|
|
40
|
+
<TabsTrigger value="reports" disabled>Reports</TabsTrigger>
|
|
41
|
+
<TabsTrigger value="notifications" disabled>Notifications</TabsTrigger>
|
|
42
|
+
</TabsList>
|
|
43
|
+
<TabsContent value="overview" class="space-y-4">
|
|
44
|
+
<div class="grid gap-4 md:grid-cols-2 lg:grid-cols-4">
|
|
45
|
+
<Card>
|
|
46
|
+
<CardHeader class="flex flex-row items-center justify-between space-y-0 pb-2">
|
|
47
|
+
<CardTitle class="text-sm font-medium">Total Revenue</CardTitle>
|
|
48
|
+
<DollarSign class="h-4 w-4 text-muted-foreground" />
|
|
49
|
+
</CardHeader>
|
|
50
|
+
<CardContent>
|
|
51
|
+
<div class="text-2xl font-bold">$45,231.89</div>
|
|
52
|
+
<p class="text-xs text-muted-foreground">+20.1% from last month</p>
|
|
53
|
+
</CardContent>
|
|
54
|
+
</Card>
|
|
55
|
+
<Card>
|
|
56
|
+
<CardHeader class="flex flex-row items-center justify-between space-y-0 pb-2">
|
|
57
|
+
<CardTitle class="text-sm font-medium">Subscriptions</CardTitle>
|
|
58
|
+
<Users class="h-4 w-4 text-muted-foreground" />
|
|
59
|
+
</CardHeader>
|
|
60
|
+
<CardContent>
|
|
61
|
+
<div class="text-2xl font-bold">+2350</div>
|
|
62
|
+
<p class="text-xs text-muted-foreground">+180.1% from last month</p>
|
|
63
|
+
</CardContent>
|
|
64
|
+
</Card>
|
|
65
|
+
<Card>
|
|
66
|
+
<CardHeader class="flex flex-row items-center justify-between space-y-0 pb-2">
|
|
67
|
+
<CardTitle class="text-sm font-medium">Sales</CardTitle>
|
|
68
|
+
<CreditCard class="h-4 w-4 text-muted-foreground" />
|
|
69
|
+
</CardHeader>
|
|
70
|
+
<CardContent>
|
|
71
|
+
<div class="text-2xl font-bold">+12,234</div>
|
|
72
|
+
<p class="text-xs text-muted-foreground">+19% from last month</p>
|
|
73
|
+
</CardContent>
|
|
74
|
+
</Card>
|
|
75
|
+
<Card>
|
|
76
|
+
<CardHeader class="flex flex-row items-center justify-between space-y-0 pb-2">
|
|
77
|
+
<CardTitle class="text-sm font-medium">Active Now</CardTitle>
|
|
78
|
+
<Activity class="h-4 w-4 text-muted-foreground" />
|
|
79
|
+
</CardHeader>
|
|
80
|
+
<CardContent>
|
|
81
|
+
<div class="text-2xl font-bold">+573</div>
|
|
82
|
+
<p class="text-xs text-muted-foreground">+201 since last hour</p>
|
|
83
|
+
</CardContent>
|
|
84
|
+
</Card>
|
|
85
|
+
</div>
|
|
86
|
+
<div class="grid gap-4 md:grid-cols-2 lg:grid-cols-7">
|
|
87
|
+
<Card class="col-span-4">
|
|
88
|
+
<CardHeader>
|
|
89
|
+
<CardTitle>Overview</CardTitle>
|
|
90
|
+
</CardHeader>
|
|
91
|
+
<CardContent>
|
|
92
|
+
<Overview />
|
|
93
|
+
</CardContent>
|
|
94
|
+
</Card>
|
|
95
|
+
<Card class="col-span-3">
|
|
96
|
+
<CardHeader>
|
|
97
|
+
<CardTitle>Recent Sales</CardTitle>
|
|
98
|
+
<CardDescription>You made 265 sales this month.</CardDescription>
|
|
99
|
+
</CardHeader>
|
|
100
|
+
<CardContent>
|
|
101
|
+
<RecentSales />
|
|
102
|
+
</CardContent>
|
|
103
|
+
</Card>
|
|
104
|
+
</div>
|
|
105
|
+
</TabsContent>
|
|
106
|
+
</Tabs>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|