Skip to content

Commit 5007515

Browse files
authored
feat: add options page (#22)
1 parent cc06d10 commit 5007515

29 files changed

+755
-14
lines changed

.changeset/poor-needles-watch.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"gregmat-buddy": minor
3+
---
4+
5+
added options page

components.json

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"$schema": "https://shadcn-svelte.com/schema.json",
3+
"style": "default",
4+
"tailwind": {
5+
"config": "tailwind.config.ts",
6+
"css": "src/entrypoints/options/app.css",
7+
"baseColor": "slate"
8+
},
9+
"aliases": {
10+
"components": "@/components",
11+
"utils": "@/utils"
12+
},
13+
"typescript": true
14+
}

package.json

+6-1
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,20 @@
2222
"@types/vimeo__player": "^2.18.3",
2323
"@wxt-dev/module-svelte": "^1.0.1",
2424
"autoprefixer": "^10.4.20",
25+
"bits-ui": "^0.21.16",
26+
"clsx": "^2.1.1",
2527
"svelte": "^4.2.19",
2628
"svelte-check": "^3.8.6",
29+
"tailwind-merge": "^2.5.4",
30+
"tailwind-variants": "^0.2.1",
2731
"tailwindcss": "^3.4.14",
2832
"tslib": "^2.8.0",
2933
"typescript": "^5.6.3",
3034
"wxt": "^0.19.13"
3135
},
3236
"dependencies": {
3337
"@vimeo/player": "^2.24.0",
34-
"fast-glob": "^3.3.2"
38+
"fast-glob": "^3.3.2",
39+
"lucide-svelte": "^0.453.0"
3540
}
3641
}

pnpm-lock.yaml

+126
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/option/index.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import Root from "./option.svelte";
2+
3+
export {
4+
Root,
5+
//
6+
Root as Option,
7+
};

src/components/option/option.svelte

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<script lang="ts">
2+
import { Label } from "@/components/ui/label";
3+
import { Switch } from "@/components/ui/switch";
4+
import * as Tooltip from "@/components/ui/tooltip";
5+
import { CircleHelp } from "lucide-svelte";
6+
7+
export let id: string;
8+
export let handler: (id: string, checked: boolean) => void;
9+
export let checked: boolean = false;
10+
export let tooltip: string = "";
11+
12+
let isInitialLoad = true;
13+
14+
$: if (!isInitialLoad) {
15+
handler(id, checked);
16+
} else {
17+
isInitialLoad = false;
18+
}
19+
</script>
20+
21+
<div class="px-2 flex justify-between">
22+
<Label for={id} class="my-auto"><slot /></Label>
23+
<div class="flex gap-2 items-center">
24+
{#if tooltip !== ""}
25+
<Tooltip.Root>
26+
<Tooltip.Trigger>
27+
<CircleHelp size={20} class="stroke-gray-400 dark:stroke-zinc-400" />
28+
</Tooltip.Trigger>
29+
<Tooltip.Content>
30+
<p>{tooltip}</p>
31+
</Tooltip.Content>
32+
</Tooltip.Root>
33+
{/if}
34+
<Switch {id} bind:checked />
35+
</div>
36+
</div>

src/components/ui/label/index.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import Root from "./label.svelte";
2+
3+
export {
4+
Root,
5+
//
6+
Root as Label,
7+
};

src/components/ui/label/label.svelte

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<script lang="ts">
2+
import { Label as LabelPrimitive } from "bits-ui";
3+
import { cn } from "@/utils";
4+
5+
type $$Props = LabelPrimitive.Props;
6+
type $$Events = LabelPrimitive.Events;
7+
8+
let className: $$Props["class"] = undefined;
9+
export { className as class };
10+
</script>
11+
12+
<LabelPrimitive.Root
13+
class={cn(
14+
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
15+
className,
16+
)}
17+
{...$$restProps}
18+
on:mousedown
19+
>
20+
<slot />
21+
</LabelPrimitive.Root>

src/components/ui/switch/index.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import Root from "./switch.svelte";
2+
3+
export {
4+
Root,
5+
//
6+
Root as Switch,
7+
};

0 commit comments

Comments
 (0)