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,12 +1,12 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import type { IconProps } from 'lucide-svelte';
|
|
3
|
-
|
|
4
|
-
type $$Props = IconProps;
|
|
5
|
-
</script>
|
|
6
|
-
|
|
7
|
-
<svg viewBox="0 0 24 24" {...$$restProps}>
|
|
8
|
-
<path
|
|
9
|
-
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"
|
|
10
|
-
fill="currentColor"
|
|
11
|
-
/>
|
|
12
|
-
</svg>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { IconProps } from 'lucide-svelte';
|
|
3
|
+
|
|
4
|
+
type $$Props = IconProps;
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<svg viewBox="0 0 24 24" {...$$restProps}>
|
|
8
|
+
<path
|
|
9
|
+
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"
|
|
10
|
+
fill="currentColor"
|
|
11
|
+
/>
|
|
12
|
+
</svg>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import type { IconProps } from 'lucide-svelte';
|
|
3
|
-
|
|
4
|
-
type $$Props = IconProps;
|
|
5
|
-
</script>
|
|
6
|
-
|
|
7
|
-
<svg viewBox="0 0 24 24" {...$$restProps}>
|
|
8
|
-
<path
|
|
9
|
-
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"
|
|
10
|
-
fill="currentColor"
|
|
11
|
-
/>
|
|
12
|
-
</svg>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { IconProps } from 'lucide-svelte';
|
|
3
|
+
|
|
4
|
+
type $$Props = IconProps;
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<svg viewBox="0 0 24 24" {...$$restProps}>
|
|
8
|
+
<path
|
|
9
|
+
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"
|
|
10
|
+
fill="currentColor"
|
|
11
|
+
/>
|
|
12
|
+
</svg>
|
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
import type { Icon as LucideIcon } from 'lucide-svelte';
|
|
2
|
-
import {
|
|
3
|
-
AlertTriangle,
|
|
4
|
-
ArrowRight,
|
|
5
|
-
Check,
|
|
6
|
-
ChevronLeft,
|
|
7
|
-
ChevronRight,
|
|
8
|
-
ClipboardCheck,
|
|
9
|
-
Copy,
|
|
10
|
-
CreditCard,
|
|
11
|
-
File,
|
|
12
|
-
FileText,
|
|
13
|
-
HelpCircle,
|
|
14
|
-
Image,
|
|
15
|
-
Laptop,
|
|
16
|
-
Loader2,
|
|
17
|
-
Moon,
|
|
18
|
-
MoreVertical,
|
|
19
|
-
Pizza,
|
|
20
|
-
Plus,
|
|
21
|
-
Settings,
|
|
22
|
-
SunMedium,
|
|
23
|
-
Trash,
|
|
24
|
-
Twitter,
|
|
25
|
-
User,
|
|
26
|
-
X
|
|
27
|
-
} from 'lucide-svelte';
|
|
28
|
-
import Apple from './Apple.svelte';
|
|
29
|
-
import Aria from './Aria.svelte';
|
|
30
|
-
import GitHub from './GitHub.svelte';
|
|
31
|
-
import Google from './Google.svelte';
|
|
32
|
-
import Logo from './Logo.svelte';
|
|
33
|
-
import Npm from './Npm.svelte';
|
|
34
|
-
import PayPal from './PayPal.svelte';
|
|
35
|
-
import Pnpm from './Pnpm.svelte';
|
|
36
|
-
import RadixSvelte from './RadixSvelte.svelte';
|
|
37
|
-
import Tailwind from './Tailwind.svelte';
|
|
38
|
-
import Yarn from './Yarn.svelte';
|
|
39
|
-
|
|
40
|
-
export type Icon = LucideIcon;
|
|
41
|
-
|
|
42
|
-
export const Icons = {
|
|
43
|
-
logo: Logo,
|
|
44
|
-
close: X,
|
|
45
|
-
spinner: Loader2,
|
|
46
|
-
chevronLeft: ChevronLeft,
|
|
47
|
-
chevronRight: ChevronRight,
|
|
48
|
-
trash: Trash,
|
|
49
|
-
post: FileText,
|
|
50
|
-
page: File,
|
|
51
|
-
media: Image,
|
|
52
|
-
settings: Settings,
|
|
53
|
-
billing: CreditCard,
|
|
54
|
-
ellipsis: MoreVertical,
|
|
55
|
-
add: Plus,
|
|
56
|
-
warning: AlertTriangle,
|
|
57
|
-
user: User,
|
|
58
|
-
arrowRight: ArrowRight,
|
|
59
|
-
help: HelpCircle,
|
|
60
|
-
pizza: Pizza,
|
|
61
|
-
twitter: Twitter,
|
|
62
|
-
check: Check,
|
|
63
|
-
copy: Copy,
|
|
64
|
-
copyDone: ClipboardCheck,
|
|
65
|
-
sun: SunMedium,
|
|
66
|
-
moon: Moon,
|
|
67
|
-
laptop: Laptop,
|
|
68
|
-
gitHub: GitHub,
|
|
69
|
-
radix: RadixSvelte,
|
|
70
|
-
aria: Aria,
|
|
71
|
-
npm: Npm,
|
|
72
|
-
yarn: Yarn,
|
|
73
|
-
pnpm: Pnpm,
|
|
74
|
-
tailwind: Tailwind,
|
|
75
|
-
google: Google,
|
|
76
|
-
apple: Apple,
|
|
77
|
-
paypal: PayPal
|
|
78
|
-
};
|
|
1
|
+
import type { Icon as LucideIcon } from 'lucide-svelte';
|
|
2
|
+
import {
|
|
3
|
+
AlertTriangle,
|
|
4
|
+
ArrowRight,
|
|
5
|
+
Check,
|
|
6
|
+
ChevronLeft,
|
|
7
|
+
ChevronRight,
|
|
8
|
+
ClipboardCheck,
|
|
9
|
+
Copy,
|
|
10
|
+
CreditCard,
|
|
11
|
+
File,
|
|
12
|
+
FileText,
|
|
13
|
+
HelpCircle,
|
|
14
|
+
Image,
|
|
15
|
+
Laptop,
|
|
16
|
+
Loader2,
|
|
17
|
+
Moon,
|
|
18
|
+
MoreVertical,
|
|
19
|
+
Pizza,
|
|
20
|
+
Plus,
|
|
21
|
+
Settings,
|
|
22
|
+
SunMedium,
|
|
23
|
+
Trash,
|
|
24
|
+
Twitter,
|
|
25
|
+
User,
|
|
26
|
+
X
|
|
27
|
+
} from 'lucide-svelte';
|
|
28
|
+
import Apple from './Apple.svelte';
|
|
29
|
+
import Aria from './Aria.svelte';
|
|
30
|
+
import GitHub from './GitHub.svelte';
|
|
31
|
+
import Google from './Google.svelte';
|
|
32
|
+
import Logo from './Logo.svelte';
|
|
33
|
+
import Npm from './Npm.svelte';
|
|
34
|
+
import PayPal from './PayPal.svelte';
|
|
35
|
+
import Pnpm from './Pnpm.svelte';
|
|
36
|
+
import RadixSvelte from './RadixSvelte.svelte';
|
|
37
|
+
import Tailwind from './Tailwind.svelte';
|
|
38
|
+
import Yarn from './Yarn.svelte';
|
|
39
|
+
|
|
40
|
+
export type Icon = LucideIcon;
|
|
41
|
+
|
|
42
|
+
export const Icons = {
|
|
43
|
+
logo: Logo,
|
|
44
|
+
close: X,
|
|
45
|
+
spinner: Loader2,
|
|
46
|
+
chevronLeft: ChevronLeft,
|
|
47
|
+
chevronRight: ChevronRight,
|
|
48
|
+
trash: Trash,
|
|
49
|
+
post: FileText,
|
|
50
|
+
page: File,
|
|
51
|
+
media: Image,
|
|
52
|
+
settings: Settings,
|
|
53
|
+
billing: CreditCard,
|
|
54
|
+
ellipsis: MoreVertical,
|
|
55
|
+
add: Plus,
|
|
56
|
+
warning: AlertTriangle,
|
|
57
|
+
user: User,
|
|
58
|
+
arrowRight: ArrowRight,
|
|
59
|
+
help: HelpCircle,
|
|
60
|
+
pizza: Pizza,
|
|
61
|
+
twitter: Twitter,
|
|
62
|
+
check: Check,
|
|
63
|
+
copy: Copy,
|
|
64
|
+
copyDone: ClipboardCheck,
|
|
65
|
+
sun: SunMedium,
|
|
66
|
+
moon: Moon,
|
|
67
|
+
laptop: Laptop,
|
|
68
|
+
gitHub: GitHub,
|
|
69
|
+
radix: RadixSvelte,
|
|
70
|
+
aria: Aria,
|
|
71
|
+
npm: Npm,
|
|
72
|
+
yarn: Yarn,
|
|
73
|
+
pnpm: Pnpm,
|
|
74
|
+
tailwind: Tailwind,
|
|
75
|
+
google: Google,
|
|
76
|
+
apple: Apple,
|
|
77
|
+
paypal: PayPal
|
|
78
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { default as TailwindIndicator } from './TailwindIndicator.svelte';
|
|
2
|
-
|
|
3
|
-
export * from './icons';
|
|
4
|
-
export * from './dashboard';
|
|
5
|
-
export * from './examples-nav';
|
|
6
|
-
export * from './light-switch';
|
|
1
|
+
export { default as TailwindIndicator } from './TailwindIndicator.svelte';
|
|
2
|
+
|
|
3
|
+
export * from './icons';
|
|
4
|
+
export * from './dashboard';
|
|
5
|
+
export * from './examples-nav';
|
|
6
|
+
export * from './light-switch';
|
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
Derived from SkeletonUI: https://github.com/skeletonlabs/skeleton/blob/master/packages/skeleton/src/lib/utilities/LightSwitch/LightSwitch.svelte
|
|
3
|
-
-->
|
|
4
|
-
|
|
5
|
-
<script lang="ts">
|
|
6
|
-
import { Moon, Sun } from 'lucide-svelte';
|
|
7
|
-
import { onMount } from 'svelte';
|
|
8
|
-
import { buttonVariants } from '$components/ui/button';
|
|
9
|
-
import { cn } from '$lib/utils';
|
|
10
|
-
import {
|
|
11
|
-
getModeOsPrefers,
|
|
12
|
-
modeCurrent,
|
|
13
|
-
setModeCurrent,
|
|
14
|
-
setModeUserPrefers
|
|
15
|
-
} from './light-switch';
|
|
16
|
-
|
|
17
|
-
type OnKeyDownEvent = KeyboardEvent & {
|
|
18
|
-
currentTarget: EventTarget & HTMLDivElement;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
function onToggleHandler(): void {
|
|
22
|
-
$modeCurrent = !$modeCurrent;
|
|
23
|
-
setModeUserPrefers($modeCurrent);
|
|
24
|
-
setModeCurrent($modeCurrent);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// A11y Input Handlers
|
|
28
|
-
function onKeyDown(event: OnKeyDownEvent): void {
|
|
29
|
-
// Enter/Space triggers selection event
|
|
30
|
-
if (['Enter', 'Space'].includes(event.code)) {
|
|
31
|
-
event.preventDefault();
|
|
32
|
-
event.currentTarget.click();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Lifecycle
|
|
37
|
-
onMount(() => {
|
|
38
|
-
// Sync lightswitch with the theme
|
|
39
|
-
if (!('modeCurrent' in localStorage)) {
|
|
40
|
-
setModeCurrent(getModeOsPrefers());
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
</script>
|
|
44
|
-
|
|
45
|
-
<div
|
|
46
|
-
on:click={onToggleHandler}
|
|
47
|
-
on:click
|
|
48
|
-
on:keydown={onKeyDown}
|
|
49
|
-
on:keydown
|
|
50
|
-
on:keyup
|
|
51
|
-
on:keypress
|
|
52
|
-
role="switch"
|
|
53
|
-
aria-label="Light Switch"
|
|
54
|
-
aria-checked={$modeCurrent}
|
|
55
|
-
title="Toggle {$modeCurrent === true ? 'Dark' : 'Light'} Mode"
|
|
56
|
-
tabindex="0"
|
|
57
|
-
>
|
|
58
|
-
<div
|
|
59
|
-
class={cn(
|
|
60
|
-
buttonVariants({
|
|
61
|
-
size: 'sm',
|
|
62
|
-
variant: 'ghost'
|
|
63
|
-
}),
|
|
64
|
-
'w-9 px-0'
|
|
65
|
-
)}
|
|
66
|
-
>
|
|
67
|
-
{#if $modeCurrent}
|
|
68
|
-
<Moon class="h-5 w-5" />
|
|
69
|
-
<span class="sr-only">Dark</span>
|
|
70
|
-
{:else}
|
|
71
|
-
<Sun class="h-5 w-5" />
|
|
72
|
-
<span class="sr-only">Light</span>
|
|
73
|
-
{/if}
|
|
74
|
-
</div>
|
|
75
|
-
</div>
|
|
1
|
+
<!--
|
|
2
|
+
Derived from SkeletonUI: https://github.com/skeletonlabs/skeleton/blob/master/packages/skeleton/src/lib/utilities/LightSwitch/LightSwitch.svelte
|
|
3
|
+
-->
|
|
4
|
+
|
|
5
|
+
<script lang="ts">
|
|
6
|
+
import { Moon, Sun } from 'lucide-svelte';
|
|
7
|
+
import { onMount } from 'svelte';
|
|
8
|
+
import { buttonVariants } from '$components/ui/button';
|
|
9
|
+
import { cn } from '$lib/utils';
|
|
10
|
+
import {
|
|
11
|
+
getModeOsPrefers,
|
|
12
|
+
modeCurrent,
|
|
13
|
+
setModeCurrent,
|
|
14
|
+
setModeUserPrefers
|
|
15
|
+
} from './light-switch';
|
|
16
|
+
|
|
17
|
+
type OnKeyDownEvent = KeyboardEvent & {
|
|
18
|
+
currentTarget: EventTarget & HTMLDivElement;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
function onToggleHandler(): void {
|
|
22
|
+
$modeCurrent = !$modeCurrent;
|
|
23
|
+
setModeUserPrefers($modeCurrent);
|
|
24
|
+
setModeCurrent($modeCurrent);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// A11y Input Handlers
|
|
28
|
+
function onKeyDown(event: OnKeyDownEvent): void {
|
|
29
|
+
// Enter/Space triggers selection event
|
|
30
|
+
if (['Enter', 'Space'].includes(event.code)) {
|
|
31
|
+
event.preventDefault();
|
|
32
|
+
event.currentTarget.click();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Lifecycle
|
|
37
|
+
onMount(() => {
|
|
38
|
+
// Sync lightswitch with the theme
|
|
39
|
+
if (!('modeCurrent' in localStorage)) {
|
|
40
|
+
setModeCurrent(getModeOsPrefers());
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
</script>
|
|
44
|
+
|
|
45
|
+
<div
|
|
46
|
+
on:click={onToggleHandler}
|
|
47
|
+
on:click
|
|
48
|
+
on:keydown={onKeyDown}
|
|
49
|
+
on:keydown
|
|
50
|
+
on:keyup
|
|
51
|
+
on:keypress
|
|
52
|
+
role="switch"
|
|
53
|
+
aria-label="Light Switch"
|
|
54
|
+
aria-checked={$modeCurrent}
|
|
55
|
+
title="Toggle {$modeCurrent === true ? 'Dark' : 'Light'} Mode"
|
|
56
|
+
tabindex="0"
|
|
57
|
+
>
|
|
58
|
+
<div
|
|
59
|
+
class={cn(
|
|
60
|
+
buttonVariants({
|
|
61
|
+
size: 'sm',
|
|
62
|
+
variant: 'ghost'
|
|
63
|
+
}),
|
|
64
|
+
'w-9 px-0'
|
|
65
|
+
)}
|
|
66
|
+
>
|
|
67
|
+
{#if $modeCurrent}
|
|
68
|
+
<Moon class="h-5 w-5" />
|
|
69
|
+
<span class="sr-only">Dark</span>
|
|
70
|
+
{:else}
|
|
71
|
+
<Sun class="h-5 w-5" />
|
|
72
|
+
<span class="sr-only">Light</span>
|
|
73
|
+
{/if}
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as LightSwitch } from './LightSwitch.svelte';
|
|
1
|
+
export { default as LightSwitch } from './LightSwitch.svelte';
|
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
// Source: https://github.com/skeletonlabs/skeleton/blob/master/packages/skeleton/src/lib/utilities/LightSwitch/lightswitch.ts
|
|
2
|
-
|
|
3
|
-
// Lightswitch Service
|
|
4
|
-
|
|
5
|
-
import { get } from 'svelte/store';
|
|
6
|
-
// DO NOT replace this ⬇ import, it has to be imported directly
|
|
7
|
-
import { localStorageStore } from './local-storage-store';
|
|
8
|
-
|
|
9
|
-
// Stores ---
|
|
10
|
-
// TRUE: light, FALSE: dark
|
|
11
|
-
|
|
12
|
-
/** Store: OS Preference Mode */
|
|
13
|
-
export const modeOsPrefers = localStorageStore<boolean>('modeOsPrefers', false);
|
|
14
|
-
/** Store: User Preference Mode */
|
|
15
|
-
export const modeUserPrefers = localStorageStore<boolean | undefined>('modeUserPrefers', undefined);
|
|
16
|
-
/** Store: Current Mode State */
|
|
17
|
-
export const modeCurrent = localStorageStore<boolean>('modeCurrent', false);
|
|
18
|
-
|
|
19
|
-
// Get ---
|
|
20
|
-
|
|
21
|
-
/** Get the OS Preference for light/dark mode */
|
|
22
|
-
export function getModeOsPrefers(): boolean {
|
|
23
|
-
const prefersLightMode = window.matchMedia('(prefers-color-scheme: light)').matches;
|
|
24
|
-
modeOsPrefers.set(prefersLightMode);
|
|
25
|
-
return prefersLightMode;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/** Get the User for light/dark mode */
|
|
29
|
-
export function getModeUserPrefers(): boolean | undefined {
|
|
30
|
-
return get(modeUserPrefers);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/** Get the Automatic Preference light/dark mode */
|
|
34
|
-
export function getModeAutoPrefers(): boolean {
|
|
35
|
-
const os = getModeOsPrefers();
|
|
36
|
-
const user = getModeUserPrefers();
|
|
37
|
-
const modeValue = user !== undefined ? user : os;
|
|
38
|
-
return modeValue;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Set ---
|
|
42
|
-
|
|
43
|
-
/** Set the User Preference for light/dark mode */
|
|
44
|
-
export function setModeUserPrefers(value: boolean): void {
|
|
45
|
-
modeUserPrefers.set(value);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/** Set the the current light/dark mode */
|
|
49
|
-
export function setModeCurrent(value: boolean) {
|
|
50
|
-
const elemHtmlClasses = document.documentElement.classList;
|
|
51
|
-
const classDark = `dark`;
|
|
52
|
-
value === true ? elemHtmlClasses.remove(classDark) : elemHtmlClasses.add(classDark);
|
|
53
|
-
modeCurrent.set(value);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// Lightswitch Utility
|
|
57
|
-
|
|
58
|
-
/** Set the visible light/dark mode on page load. */
|
|
59
|
-
export function setInitialClassState() {
|
|
60
|
-
const elemHtmlClasses = document.documentElement.classList;
|
|
61
|
-
// Conditions
|
|
62
|
-
const condLocalStorageUserPrefs = localStorage.getItem('modeUserPrefers') === 'false';
|
|
63
|
-
const condLocalStorageUserPrefsExists = !('modeUserPrefers' in localStorage);
|
|
64
|
-
const condMatchMedia = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
65
|
-
// Add/remove `.dark` class to HTML element
|
|
66
|
-
if (condLocalStorageUserPrefs || (condLocalStorageUserPrefsExists && condMatchMedia)) {
|
|
67
|
-
elemHtmlClasses.add('dark');
|
|
68
|
-
} else {
|
|
69
|
-
elemHtmlClasses.remove('dark');
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// Auto-Switch Utility
|
|
74
|
-
|
|
75
|
-
/** Automatically set the visible light/dark, updates on change. */
|
|
76
|
-
export function autoModeWatcher(): void {
|
|
77
|
-
const mql = window.matchMedia('(prefers-color-scheme: light)');
|
|
78
|
-
function setMode(value: boolean) {
|
|
79
|
-
const elemHtmlClasses = document.documentElement.classList;
|
|
80
|
-
const classDark = `dark`;
|
|
81
|
-
value === true ? elemHtmlClasses.remove(classDark) : elemHtmlClasses.add(classDark);
|
|
82
|
-
}
|
|
83
|
-
setMode(mql.matches);
|
|
84
|
-
mql.onchange = () => {
|
|
85
|
-
setMode(mql.matches);
|
|
86
|
-
};
|
|
87
|
-
}
|
|
1
|
+
// Source: https://github.com/skeletonlabs/skeleton/blob/master/packages/skeleton/src/lib/utilities/LightSwitch/lightswitch.ts
|
|
2
|
+
|
|
3
|
+
// Lightswitch Service
|
|
4
|
+
|
|
5
|
+
import { get } from 'svelte/store';
|
|
6
|
+
// DO NOT replace this ⬇ import, it has to be imported directly
|
|
7
|
+
import { localStorageStore } from './local-storage-store';
|
|
8
|
+
|
|
9
|
+
// Stores ---
|
|
10
|
+
// TRUE: light, FALSE: dark
|
|
11
|
+
|
|
12
|
+
/** Store: OS Preference Mode */
|
|
13
|
+
export const modeOsPrefers = localStorageStore<boolean>('modeOsPrefers', false);
|
|
14
|
+
/** Store: User Preference Mode */
|
|
15
|
+
export const modeUserPrefers = localStorageStore<boolean | undefined>('modeUserPrefers', undefined);
|
|
16
|
+
/** Store: Current Mode State */
|
|
17
|
+
export const modeCurrent = localStorageStore<boolean>('modeCurrent', false);
|
|
18
|
+
|
|
19
|
+
// Get ---
|
|
20
|
+
|
|
21
|
+
/** Get the OS Preference for light/dark mode */
|
|
22
|
+
export function getModeOsPrefers(): boolean {
|
|
23
|
+
const prefersLightMode = window.matchMedia('(prefers-color-scheme: light)').matches;
|
|
24
|
+
modeOsPrefers.set(prefersLightMode);
|
|
25
|
+
return prefersLightMode;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Get the User for light/dark mode */
|
|
29
|
+
export function getModeUserPrefers(): boolean | undefined {
|
|
30
|
+
return get(modeUserPrefers);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Get the Automatic Preference light/dark mode */
|
|
34
|
+
export function getModeAutoPrefers(): boolean {
|
|
35
|
+
const os = getModeOsPrefers();
|
|
36
|
+
const user = getModeUserPrefers();
|
|
37
|
+
const modeValue = user !== undefined ? user : os;
|
|
38
|
+
return modeValue;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Set ---
|
|
42
|
+
|
|
43
|
+
/** Set the User Preference for light/dark mode */
|
|
44
|
+
export function setModeUserPrefers(value: boolean): void {
|
|
45
|
+
modeUserPrefers.set(value);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Set the the current light/dark mode */
|
|
49
|
+
export function setModeCurrent(value: boolean) {
|
|
50
|
+
const elemHtmlClasses = document.documentElement.classList;
|
|
51
|
+
const classDark = `dark`;
|
|
52
|
+
value === true ? elemHtmlClasses.remove(classDark) : elemHtmlClasses.add(classDark);
|
|
53
|
+
modeCurrent.set(value);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Lightswitch Utility
|
|
57
|
+
|
|
58
|
+
/** Set the visible light/dark mode on page load. */
|
|
59
|
+
export function setInitialClassState() {
|
|
60
|
+
const elemHtmlClasses = document.documentElement.classList;
|
|
61
|
+
// Conditions
|
|
62
|
+
const condLocalStorageUserPrefs = localStorage.getItem('modeUserPrefers') === 'false';
|
|
63
|
+
const condLocalStorageUserPrefsExists = !('modeUserPrefers' in localStorage);
|
|
64
|
+
const condMatchMedia = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
65
|
+
// Add/remove `.dark` class to HTML element
|
|
66
|
+
if (condLocalStorageUserPrefs || (condLocalStorageUserPrefsExists && condMatchMedia)) {
|
|
67
|
+
elemHtmlClasses.add('dark');
|
|
68
|
+
} else {
|
|
69
|
+
elemHtmlClasses.remove('dark');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Auto-Switch Utility
|
|
74
|
+
|
|
75
|
+
/** Automatically set the visible light/dark, updates on change. */
|
|
76
|
+
export function autoModeWatcher(): void {
|
|
77
|
+
const mql = window.matchMedia('(prefers-color-scheme: light)');
|
|
78
|
+
function setMode(value: boolean) {
|
|
79
|
+
const elemHtmlClasses = document.documentElement.classList;
|
|
80
|
+
const classDark = `dark`;
|
|
81
|
+
value === true ? elemHtmlClasses.remove(classDark) : elemHtmlClasses.add(classDark);
|
|
82
|
+
}
|
|
83
|
+
setMode(mql.matches);
|
|
84
|
+
mql.onchange = () => {
|
|
85
|
+
setMode(mql.matches);
|
|
86
|
+
};
|
|
87
|
+
}
|