-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Arthur Broudoux <[email protected]>
- Loading branch information
Showing
16 changed files
with
282 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
<script lang="ts"> | ||
import { onMount } from "svelte"; | ||
import Mountain from "lucide-svelte/icons/mountain"; | ||
import Trash from "lucide-svelte/icons/trash"; | ||
import { Dialog, Input, List, Empty, Group, Item, Separator } from "$lib/components/ui/command"; | ||
import { manageHabits, createHabit } from "$stores/habit.store"; | ||
let open: boolean = false; | ||
onMount(() => { | ||
function handleKeydown(e: KeyboardEvent) { | ||
if (e.key === "k" && (e.metaKey || e.ctrlKey)) { | ||
e.preventDefault(); | ||
open = !open; | ||
} | ||
} | ||
document.addEventListener("keydown", handleKeydown); | ||
return () => { | ||
document.removeEventListener("keydown", handleKeydown); | ||
}; | ||
}); | ||
function handleManageHabits() { | ||
manageHabits.update((value: boolean) => !value); | ||
open = false; | ||
} | ||
function handleCreateHabit() { | ||
createHabit.set(true); | ||
open = false; | ||
} | ||
</script> | ||
|
||
<Dialog bind:open> | ||
<Input placeholder="Type a command or search..." /> | ||
<List> | ||
<Empty>No results found.</Empty> | ||
<Group heading="Suggestions"> | ||
<Item value="createHabitCmd" onSelect={handleCreateHabit}> | ||
<Mountain class="mr-2 h-4 w-4" /> | ||
<span>Create new habit</span> | ||
</Item> | ||
<Item value="manageHabitsCmd" onSelect={handleManageHabits}> | ||
<Trash class="mr-2 h-4 w-4" /> | ||
<span>Manage habits</span> | ||
</Item> | ||
</Group> | ||
<Separator /> | ||
</List> | ||
</Dialog> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<script lang="ts"> | ||
import type { Dialog as DialogPrimitive } from "bits-ui"; | ||
import type { Command as CommandPrimitive } from "cmdk-sv"; | ||
import Command from "./command.svelte"; | ||
import * as Dialog from "$lib/components/ui/dialog/index.js"; | ||
type $$Props = DialogPrimitive.Props & CommandPrimitive.CommandProps; | ||
export let open: $$Props["open"] = false; | ||
export let value: $$Props["value"] = undefined; | ||
</script> | ||
|
||
<Dialog.Root bind:open {...$$restProps}> | ||
<Dialog.Content class="overflow-hidden p-0 shadow-lg"> | ||
<Command | ||
class="[&_[data-cmdk-group-heading]]:text-muted-foreground [&_[data-cmdk-group-heading]]:px-2 [&_[data-cmdk-group-heading]]:font-medium [&_[data-cmdk-group]:not([hidden])_~[data-cmdk-group]]:pt-0 [&_[data-cmdk-group]]:px-2 [&_[data-cmdk-input-wrapper]_svg]:h-5 [&_[data-cmdk-input-wrapper]_svg]:w-5 [&_[data-cmdk-input]]:h-12 [&_[data-cmdk-item]]:px-2 [&_[data-cmdk-item]]:py-3 [&_[data-cmdk-item]_svg]:h-5 [&_[data-cmdk-item]_svg]:w-5" | ||
{...$$restProps} | ||
bind:value | ||
> | ||
<slot /> | ||
</Command> | ||
</Dialog.Content> | ||
</Dialog.Root> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
<script lang="ts"> | ||
import { Command as CommandPrimitive } from "cmdk-sv"; | ||
import { cn } from "$lib/utils.js"; | ||
type $$Props = CommandPrimitive.EmptyProps; | ||
let className: string | undefined | null = undefined; | ||
export { className as class }; | ||
</script> | ||
|
||
<CommandPrimitive.Empty class={cn("py-6 text-center text-sm", className)} {...$$restProps}> | ||
<slot /> | ||
</CommandPrimitive.Empty> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
<script lang="ts"> | ||
import { Command as CommandPrimitive } from "cmdk-sv"; | ||
import { cn } from "$lib/utils.js"; | ||
type $$Props = CommandPrimitive.GroupProps; | ||
let className: string | undefined | null = undefined; | ||
export { className as class }; | ||
</script> | ||
|
||
<CommandPrimitive.Group | ||
class={cn( | ||
"text-foreground [&_[data-cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[data-cmdk-group-heading]]:px-2 [&_[data-cmdk-group-heading]]:py-1.5 [&_[data-cmdk-group-heading]]:text-xs [&_[data-cmdk-group-heading]]:font-medium", | ||
className | ||
)} | ||
{...$$restProps} | ||
> | ||
<slot /> | ||
</CommandPrimitive.Group> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<script lang="ts"> | ||
import { Command as CommandPrimitive } from "cmdk-sv"; | ||
import Search from "lucide-svelte/icons/search"; | ||
import { cn } from "$lib/utils.js"; | ||
type $$Props = CommandPrimitive.InputProps; | ||
let className: string | undefined | null = undefined; | ||
export { className as class }; | ||
export let value: string = ""; | ||
</script> | ||
|
||
<div class="flex items-center border-b px-2" data-cmdk-input-wrapper=""> | ||
<Search class="mr-2 h-4 w-4 shrink-0 opacity-50" /> | ||
<CommandPrimitive.Input | ||
class={cn( | ||
"placeholder:text-muted-foreground flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none disabled:cursor-not-allowed disabled:opacity-50", | ||
className | ||
)} | ||
{...$$restProps} | ||
bind:value | ||
/> | ||
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
<script lang="ts"> | ||
import { Command as CommandPrimitive } from "cmdk-sv"; | ||
import { cn } from "$lib/utils.js"; | ||
type $$Props = CommandPrimitive.ItemProps; | ||
export let asChild = false; | ||
let className: string | undefined | null = undefined; | ||
export { className as class }; | ||
</script> | ||
|
||
<CommandPrimitive.Item | ||
{asChild} | ||
class={cn( | ||
"aria-selected:bg-accent aria-selected:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50", | ||
className | ||
)} | ||
{...$$restProps} | ||
let:action | ||
let:attrs | ||
> | ||
<slot {action} {attrs} /> | ||
</CommandPrimitive.Item> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
<script lang="ts"> | ||
import { Command as CommandPrimitive } from "cmdk-sv"; | ||
import { cn } from "$lib/utils.js"; | ||
type $$Props = CommandPrimitive.ListProps; | ||
let className: string | undefined | null = undefined; | ||
export { className as class }; | ||
</script> | ||
|
||
<CommandPrimitive.List | ||
class={cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className)} | ||
{...$$restProps} | ||
> | ||
<slot /> | ||
</CommandPrimitive.List> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<script lang="ts"> | ||
import { Command as CommandPrimitive } from "cmdk-sv"; | ||
import { cn } from "$lib/utils.js"; | ||
type $$Props = CommandPrimitive.SeparatorProps; | ||
let className: string | undefined | null = undefined; | ||
export { className as class }; | ||
</script> | ||
|
||
<CommandPrimitive.Separator class={cn("bg-border -mx-1 h-px", className)} {...$$restProps} /> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
<script lang="ts"> | ||
import type { HTMLAttributes } from "svelte/elements"; | ||
import { cn } from "$lib/utils.js"; | ||
type $$Props = HTMLAttributes<HTMLSpanElement>; | ||
let className: string | undefined | null = undefined; | ||
export { className as class }; | ||
</script> | ||
|
||
<span | ||
class={cn("text-muted-foreground ml-auto text-xs tracking-widest", className)} | ||
{...$$restProps} | ||
> | ||
<slot /> | ||
</span> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
<script lang="ts"> | ||
import { Command as CommandPrimitive } from "cmdk-sv"; | ||
import { cn } from "$lib/utils.js"; | ||
type $$Props = CommandPrimitive.CommandProps; | ||
export let value: $$Props["value"] = undefined; | ||
let className: string | undefined | null = undefined; | ||
export { className as class }; | ||
</script> | ||
|
||
<CommandPrimitive.Root | ||
class={cn( | ||
"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md", | ||
className | ||
)} | ||
bind:value | ||
{...$$restProps} | ||
> | ||
<slot /> | ||
</CommandPrimitive.Root> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
import { Command as CommandPrimitive } from "cmdk-sv"; | ||
|
||
import Root from "./command.svelte"; | ||
import Dialog from "./command-dialog.svelte"; | ||
import Empty from "./command-empty.svelte"; | ||
import Group from "./command-group.svelte"; | ||
import Item from "./command-item.svelte"; | ||
import Input from "./command-input.svelte"; | ||
import List from "./command-list.svelte"; | ||
import Separator from "./command-separator.svelte"; | ||
import Shortcut from "./command-shortcut.svelte"; | ||
|
||
const Loading = CommandPrimitive.Loading; | ||
|
||
export { | ||
Root, | ||
Dialog, | ||
Empty, | ||
Group, | ||
Item, | ||
Input, | ||
List, | ||
Separator, | ||
Shortcut, | ||
Loading, | ||
// | ||
Root as Command, | ||
Dialog as CommandDialog, | ||
Empty as CommandEmpty, | ||
Group as CommandGroup, | ||
Item as CommandItem, | ||
Input as CommandInput, | ||
List as CommandList, | ||
Separator as CommandSeparator, | ||
Shortcut as CommandShortcut, | ||
Loading as CommandLoading, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters