Skip to content

Commit c8314a9

Browse files
committed
feat: add voting feature
1 parent f583790 commit c8314a9

13 files changed

Lines changed: 247 additions & 20 deletions

File tree

.changeset/tired-snails-retire.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"amgiflol": minor
3+
---
4+
5+
Adds new voting feature

index.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
<html>
2-
<div>Placeholder</div>
3-
</html>
2+
<!-- Added while debugging analytics remove later -->
3+
<div>Placeholder</div>
4+
</html>

pnpm-workspace.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
onlyBuiltDependencies:
2-
- '@tailwindcss/oxide'
3-
- dprint
4-
- esbuild
5-
- spawn-sync
2+
- "@tailwindcss/oxide"
3+
- dprint
4+
- esbuild
5+
- spawn-sync

src/app.config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ export default defineAppConfig({
1313
enabled: storage.defineItem("local:analytics-enabled", {
1414
fallback: true,
1515
}),
16-
userId: storage.defineItem("local:custom-user-id-key", {
16+
userId: storage.defineItem("local:amg-user-id-key", {
1717
init: () => crypto.randomUUID().toString(),
1818
}),
19-
userProperties: storage.defineItem('local:custom-user-properties-key', {
19+
userProperties: storage.defineItem("local:amg-user-properties-key", {
2020
init: () => ({}),
2121
}),
2222
},

src/app.d.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { Component } from "svelte";
44
type Prefix = "amg-"; // change it to your prefix
55
type AttributifyAttributes = Partial<Record<AttributifyNames<Prefix>, string>>;
66

7-
87
// declare module "svelte" {
98
// interface Component<Props extends AttributifyAttributes, Exports extends Record<string, any> = {}, Bindings extends keyof Props | "" = string> {}
109
// }
@@ -94,6 +93,7 @@ declare global {
9493
autoHide: boolean;
9594
autoMove: boolean;
9695
isVisible: boolean;
96+
featureVotingVisible: boolean;
9797
position: { x: number; y: number };
9898
activeFeature?: string;
9999
settings: {
@@ -176,5 +176,4 @@ declare global {
176176
}
177177
}
178178

179-
180179
export {};

src/lib/components/Switch.svelte

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,23 @@
1212
ref = $bindable(null),
1313
labelText,
1414
class: classes,
15+
style = "",
1516
...restProps
1617
}: WithoutChildrenOrChild<Switch.RootProps> & {
1718
labelText: string;
1819
} = $props();
1920
</script>
2021

21-
<Label.Root for={id}>{labelText}</Label.Root>
22+
<Label.Root class="cursor-inherit" for={id}>{labelText}</Label.Root>
2223
<Switch.Root
2324
bind:checked
2425
bind:ref
2526
{id}
26-
class="h-full aspect-ratio-video focus-visible:ring-white focus-visible:ring-offset data-[state=checked]:bg-lime-700 data-[state=unchecked]:bg-neutral-700 data-[state=unchecked]:shadow-inner dark:data-[state=checked]:bg-white focus-visible:outline-hidden peer inline-flex cursor-pointer items-center rounded-full px-[3px] transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
27+
class="parent h-full p-0.5 aspect-ratio-video focus-visible:ring-white focus-visible:ring-offset data-[state=checked]:bg-lime-700 data-[state=unchecked]:bg-neutral-700 data-[state=unchecked]:shadow-inner dark:data-[state=checked]:bg-white focus-visible:outline-hidden inline-flex cursor-pointer items-center rounded-full transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
28+
style={`container-type: size;${style}`}
2729
{...restProps}
2830
>
2931
<Switch.Thumb
30-
class="bg-neutral-500 data-[state=unchecked]:shadow-xs pointer-events-none block rounded-full transition-transform data-[state=checked]:translate-x-6 data-[state=unchecked]:translate-x-0 dark:border dark:data-[state=unchecked]:border"
32+
class="parent-active:scale-[0.85] bg-white h-full aspect-1 data-[state=unchecked]:shadow-md pointer-events-none block rounded-full transition-transform data-[state=checked]:translate-x-[calc(100cqw-100%)] data-[state=unchecked]:-translate-x-0 dark:border dark:data-[state=unchecked]:border"
3133
/>
3234
</Switch.Root>

src/lib/components/Tooltip.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
let { children, label }: Props = $props();
1212
</script>
1313

14-
<Tooltip.Root
15-
disableCloseOnTriggerClick
14+
<Tooltip.Root
15+
disableCloseOnTriggerClick
1616
disableHoverableContent
1717
>
1818
<Tooltip.Trigger disabled={label === undefined}>

src/lib/modules/EventsManager/index.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
alt: event.altKey,
2929
});
3030
31+
// Disable shortcuts when typing
3132
if (
3233
event?.currentTarget instanceof Document &&
3334
event?.currentTarget?.body === event.target ||

src/lib/modules/ExtenstionSettings/App.svelte

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
2626
async function mount() {
2727
try {
28+
analytics.page(import.meta.env.ENTRYPOINT);
29+
2830
const [tab] = await browser.tabs.query({
2931
active: true,
3032
currentWindow: true,

src/lib/modules/Toolbar/ToolbarSettings.svelte

Lines changed: 161 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import { Cog } from "@lucide/svelte";
66
import { DropdownMenu } from "bits-ui";
77
import { fly } from "svelte/transition";
8+
import UpvoteAction from "./UpvoteAction.svelte";
89
910
const uiStore = getContext<UIStore>("uiStore");
1011
</script>
@@ -39,7 +40,161 @@
3940
<div {...props} transition:fly={{ y: -10, duration: 200 }}>
4041
<DropdownMenu.Group
4142
class="grid grid-cols-1 gap-y-1"
42-
aria-label="Behaviour"
43+
aria-label="Feature Voting"
44+
>
45+
<DropdownMenu.GroupHeading>
46+
<h4 class="m-0 ml-1 grid grid-cols-[0px_1fr]">
47+
<span></span>
48+
<span class="flex justify-between gap-3">
49+
<Switch
50+
bind:checked={uiStore
51+
.toolbar
52+
.featureVotingVisible}
53+
labelText="Feature Voting"
54+
/>
55+
</span>
56+
</h4>
57+
</DropdownMenu.GroupHeading>
58+
59+
{#if uiStore.toolbar
60+
.featureVotingVisible}
61+
<DropdownMenu.Separator
62+
class="-ml-1 -mr-1 block h-px bg-zinc-200"
63+
/>
64+
<DropdownMenu.Item
65+
class="hover:bg-lime-200 hover:text-lime-500 border-1 border-transparent rounded-lg grid grid-cols-[0px_1fr] pl-1 outline-0 hover:data-[disabled]:cursor-not-allowed"
66+
closeOnSelect={false}
67+
>
68+
<span></span>
69+
<span
70+
class="flex justify-between items-center gap-3"
71+
>
72+
<UpvoteAction
73+
key="auto-hide-toolbar"
74+
label="Auto-Hide Toolbar"
75+
/>
76+
</span>
77+
</DropdownMenu.Item>
78+
<DropdownMenu.Item
79+
class="hover:bg-lime-200 hover:text-lime-500 border-1 border-transparent rounded-lg grid grid-cols-[0px_1fr] pl-1 outline-0 hover:data-[disabled]:cursor-not-allowed"
80+
closeOnSelect={false}
81+
>
82+
<span></span>
83+
<span
84+
class="flex justify-between items-center gap-3"
85+
>
86+
<UpvoteAction
87+
key="auto-move-toolbar"
88+
label="Auto-Move Toolbar"
89+
/>
90+
</span>
91+
</DropdownMenu.Item>
92+
<DropdownMenu.Item
93+
class="hover:bg-lime-200 hover:text-lime-500 border-1 border-transparent rounded-lg grid grid-cols-[0px_1fr] pl-1 outline-0 hover:data-[disabled]:cursor-not-allowed"
94+
closeOnSelect={false}
95+
>
96+
<span></span>
97+
<span
98+
class="flex justify-between items-center gap-3"
99+
>
100+
<UpvoteAction
101+
key="auto-move-sidepanel"
102+
label="Auto-Move Sidepanel"
103+
/>
104+
</span>
105+
</DropdownMenu.Item>
106+
<DropdownMenu.Item
107+
class="hover:bg-lime-200 hover:text-lime-500 border-1 border-transparent rounded-lg grid grid-cols-[0px_1fr] pl-1 outline-0 hover:data-[disabled]:cursor-not-allowed"
108+
closeOnSelect={false}
109+
>
110+
<span></span>
111+
<span
112+
class="flex justify-between items-center gap-3"
113+
>
114+
<UpvoteAction
115+
key="multiple-trackers"
116+
label="Multiple Trackers"
117+
/>
118+
</span>
119+
</DropdownMenu.Item>
120+
<DropdownMenu.Item
121+
class="hover:bg-lime-200 hover:text-lime-500 border-1 border-transparent rounded-lg grid grid-cols-[0px_1fr] pl-1 outline-0 hover:data-[disabled]:cursor-not-allowed"
122+
closeOnSelect={false}
123+
>
124+
<span></span>
125+
<span
126+
class="flex justify-between items-center gap-3"
127+
>
128+
<UpvoteAction
129+
key="neighbour-distances"
130+
label="Neighbour Distances"
131+
/>
132+
</span>
133+
</DropdownMenu.Item>
134+
<DropdownMenu.Item
135+
class="hover:bg-lime-200 hover:text-lime-500 border-1 border-transparent rounded-lg grid grid-cols-[0px_1fr] pl-1 outline-0 hover:data-[disabled]:cursor-not-allowed"
136+
closeOnSelect={false}
137+
>
138+
<span></span>
139+
<span
140+
class="flex justify-between items-center gap-3"
141+
>
142+
<UpvoteAction
143+
key="onscreeen-measurement-lines"
144+
label="Onscreen Measurement Lines"
145+
/>
146+
</span>
147+
</DropdownMenu.Item>
148+
<DropdownMenu.Item
149+
class="hover:bg-lime-200 hover:text-lime-500 border-1 border-transparent rounded-lg grid grid-cols-[0px_1fr] pl-1 outline-0 hover:data-[disabled]:cursor-not-allowed"
150+
closeOnSelect={false}
151+
>
152+
<span></span>
153+
<span
154+
class="flex justify-between items-center gap-3"
155+
>
156+
<UpvoteAction
157+
key="parent-traversal"
158+
label="Parent Traversal"
159+
/>
160+
</span>
161+
</DropdownMenu.Item>
162+
<DropdownMenu.Item
163+
class="hover:bg-lime-200 hover:text-lime-500 border-1 border-transparent rounded-lg grid grid-cols-[0px_1fr] pl-1 outline-0 hover:data-[disabled]:cursor-not-allowed"
164+
closeOnSelect={false}
165+
>
166+
<span></span>
167+
<span
168+
class="flex justify-between items-center gap-3"
169+
>
170+
<UpvoteAction
171+
key="sibling-traversal"
172+
label="Sibling Traversal"
173+
/>
174+
</span>
175+
</DropdownMenu.Item>
176+
<DropdownMenu.Item
177+
class="hover:bg-lime-200 hover:text-lime-500 border-1 border-transparent rounded-lg grid grid-cols-[0px_1fr] pl-1 outline-0 hover:data-[disabled]:cursor-not-allowed"
178+
closeOnSelect={false}
179+
>
180+
<span></span>
181+
<span
182+
class="flex justify-between items-center gap-3"
183+
>
184+
<UpvoteAction
185+
key="viewport-resizer"
186+
label="Viewport Resizer"
187+
/>
188+
</span>
189+
</DropdownMenu.Item>
190+
{/if}
191+
</DropdownMenu.Group>
192+
<DropdownMenu.Separator
193+
class="my-1 -ml-1 -mr-1 block h-px bg-zinc-200"
194+
/>
195+
<DropdownMenu.Group
196+
class="grid grid-cols-1 gap-y-1"
197+
aria-label="Toolbar Behaviour"
43198
>
44199
<DropdownMenu.GroupHeading>
45200
<h4 class="m-0 ml-1">
@@ -50,8 +205,9 @@
50205
class="-ml-1 -mr-1 block h-px bg-zinc-200"
51206
/>
52207
<DropdownMenu.CheckboxItem
53-
class="hover:bg-lime-200 hover:text-lime-500 border-1 border-transparent rounded-lg grid grid-cols-[0px_1fr] pl-1 outline-0"
208+
class="hover:not-data-[disabled]:bg-lime-200 hover:not-data-[disabled]:text-lime-500 border-1 border-transparent rounded-lg grid grid-cols-[0px_1fr] pl-1 outline-0 hover:data-[disabled]:cursor-not-allowed"
54209
bind:checked={uiStore.toolbar.autoMove}
210+
disabled
55211
closeOnSelect={false}
56212
>
57213
{#snippet children(
@@ -60,15 +216,15 @@
60216
<span></span>
61217
<span class="flex justify-between gap-3">
62218
<Switch
63-
labelText="Auto-Move"
64219
checked={checked}
220+
disabled
221+
labelText="Auto-Move"
65222
/>
66223
</span>
67224
{/snippet}
68225
</DropdownMenu.CheckboxItem>
69-
70226
<DropdownMenu.CheckboxItem
71-
class="hover:bg-lime-200 border-1 border-transparent rounded-lg hover:border-lime-900 grid grid-cols-[0px_1fr] pl-1"
227+
class="hover:not-data-[disabled]:bg-lime-200 hover:not-data-[disabled]:text-lime-500 border-1 border-transparent rounded-lg grid grid-cols-[0px_1fr] pl-1 outline-0 hover:data-[disabled]:cursor-not-allowed"
72228
bind:checked={uiStore.toolbar.autoHide}
73229
disabled
74230
closeOnSelect={false}

0 commit comments

Comments
 (0)