abckit 0.0.10 → 0.0.11

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.
Files changed (69) hide show
  1. package/dist/module.mjs +0 -1
  2. package/dist/runtime/components/app/AppBreadcrumbs.vue +1 -2
  3. package/dist/runtime/components/app/AppHeader.vue +2 -2
  4. package/dist/runtime/components/app/AppNavMain.d.vue.ts +1 -2
  5. package/dist/runtime/components/app/AppNavMain.vue +4 -4
  6. package/dist/runtime/components/app/AppNavMain.vue.d.ts +1 -2
  7. package/dist/runtime/components/ui/accordion/AccordionTrigger.vue +3 -2
  8. package/dist/runtime/components/ui/auto-form/AutoFormFieldArray.vue +3 -3
  9. package/dist/runtime/components/ui/auto-form/AutoFormFieldDate.vue +2 -2
  10. package/dist/runtime/components/ui/auto-form/AutoFormFieldFile.vue +2 -2
  11. package/dist/runtime/components/ui/breadcrumb/BreadcrumbEllipsis.vue +2 -2
  12. package/dist/runtime/components/ui/breadcrumb/BreadcrumbSeparator.vue +2 -2
  13. package/dist/runtime/components/ui/calendar/CalendarNextButton.vue +2 -2
  14. package/dist/runtime/components/ui/calendar/CalendarPrevButton.vue +2 -2
  15. package/dist/runtime/components/ui/carousel/CarouselNext.vue +2 -2
  16. package/dist/runtime/components/ui/carousel/CarouselPrevious.vue +2 -2
  17. package/dist/runtime/components/ui/checkbox/Checkbox.vue +2 -2
  18. package/dist/runtime/components/ui/combobox/ComboboxInput.vue +2 -2
  19. package/dist/runtime/components/ui/command/CommandInput.vue +2 -2
  20. package/dist/runtime/components/ui/context-menu/ContextMenuCheckboxItem.vue +2 -2
  21. package/dist/runtime/components/ui/context-menu/ContextMenuRadioItem.vue +2 -2
  22. package/dist/runtime/components/ui/context-menu/ContextMenuSubTrigger.vue +2 -2
  23. package/dist/runtime/components/ui/dialog/DialogContent.vue +2 -2
  24. package/dist/runtime/components/ui/dialog/DialogScrollContent.vue +2 -2
  25. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +2 -2
  26. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +2 -2
  27. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +2 -2
  28. package/dist/runtime/components/ui/file/FileEmptyState.vue +3 -3
  29. package/dist/runtime/components/ui/file/FileGrid.vue +10 -10
  30. package/dist/runtime/components/ui/file/FileTable.vue +16 -17
  31. package/dist/runtime/components/ui/input-otp/InputOTPSeparator.vue +2 -2
  32. package/dist/runtime/components/ui/menubar/MenubarCheckboxItem.vue +2 -2
  33. package/dist/runtime/components/ui/menubar/MenubarRadioItem.vue +2 -2
  34. package/dist/runtime/components/ui/menubar/MenubarSubTrigger.vue +2 -2
  35. package/dist/runtime/components/ui/native-select/NativeSelect.vue +3 -2
  36. package/dist/runtime/components/ui/navigation-menu/NavigationMenuTrigger.vue +3 -2
  37. package/dist/runtime/components/ui/number-field/NumberFieldDecrement.vue +2 -2
  38. package/dist/runtime/components/ui/number-field/NumberFieldIncrement.vue +2 -2
  39. package/dist/runtime/components/ui/pagination/PaginationEllipsis.vue +2 -2
  40. package/dist/runtime/components/ui/pagination/PaginationFirst.vue +2 -2
  41. package/dist/runtime/components/ui/pagination/PaginationLast.vue +2 -2
  42. package/dist/runtime/components/ui/pagination/PaginationNext.vue +2 -2
  43. package/dist/runtime/components/ui/pagination/PaginationPrevious.vue +2 -2
  44. package/dist/runtime/components/ui/pin-input/PinInputSeparator.vue +2 -2
  45. package/dist/runtime/components/ui/radio-group/RadioGroupItem.vue +2 -2
  46. package/dist/runtime/components/ui/range-calendar/RangeCalendarNextButton.vue +2 -2
  47. package/dist/runtime/components/ui/range-calendar/RangeCalendarPrevButton.vue +2 -2
  48. package/dist/runtime/components/ui/resizable/ResizableHandle.vue +2 -2
  49. package/dist/runtime/components/ui/select/SelectItem.vue +2 -2
  50. package/dist/runtime/components/ui/select/SelectScrollDownButton.vue +2 -2
  51. package/dist/runtime/components/ui/select/SelectScrollUpButton.vue +2 -2
  52. package/dist/runtime/components/ui/select/SelectTrigger.vue +2 -2
  53. package/dist/runtime/components/ui/sheet/InnerSheetContent.vue +2 -2
  54. package/dist/runtime/components/ui/sheet/SheetContent.vue +2 -2
  55. package/dist/runtime/components/ui/sidebar/SidebarTrigger.vue +2 -2
  56. package/dist/runtime/components/ui/sonner/Sonner.vue +7 -7
  57. package/dist/runtime/components/ui/spinner/Spinner.vue +3 -2
  58. package/dist/runtime/components/ui/storage/StorageActionBar.vue +3 -4
  59. package/dist/runtime/components/ui/storage/StorageEmptyState.vue +3 -4
  60. package/dist/runtime/components/ui/storage/StorageGrid.vue +10 -11
  61. package/dist/runtime/components/ui/storage/StorageSelectionBar.vue +3 -3
  62. package/dist/runtime/components/ui/storage/StorageTable.vue +10 -11
  63. package/dist/runtime/components/ui/storage/StorageUploadZone.vue +5 -4
  64. package/dist/runtime/components/ui/tags-input/TagsInputItemDelete.vue +2 -2
  65. package/dist/runtime/composables/useAuth.d.ts +4 -18
  66. package/dist/runtime/middleware/auth.global.d.ts +1 -1
  67. package/dist/runtime/shared/constants/r2.js +12 -6
  68. package/dist/runtime/types/nitro-graphql-client.d.ts +0 -1
  69. package/package.json +13 -14
package/dist/module.mjs CHANGED
@@ -212,7 +212,6 @@ export {}
212
212
  excludeSet.add("zod");
213
213
  excludeSet.add("date-fns");
214
214
  excludeSet.add("date-fns/locale");
215
- excludeSet.add("lucide-vue-next");
216
215
  excludeSet.add("class-variance-authority");
217
216
  excludeSet.add("reka-ui");
218
217
  excludeSet.add("clsx");
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { useAppConfig, useRoute } from "#app";
2
+ import { useAppConfig } from "#app";
3
3
  import { NuxtLink } from "#components";
4
4
  import { useBreadcrumbItems } from "abckit/composables/useBreadcrumbItems";
5
5
  import {
@@ -11,7 +11,6 @@ import {
11
11
  BreadcrumbSeparator
12
12
  } from "abckit/shadcn/breadcrumb";
13
13
  import { computed } from "vue";
14
- const route = useRoute();
15
14
  const appConfig = useAppConfig();
16
15
  const breadcrumbConfig = computed(() => appConfig.breadcrumbs || {});
17
16
  const baseUrl = computed(() => {
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
+ import { Icon } from "#components";
2
3
  import { SidebarMenuButton, useSidebar } from "abckit/shadcn/sidebar";
3
- import { Shield } from "lucide-vue-next";
4
4
  const props = defineProps({
5
5
  tenant: { type: Object, required: false }
6
6
  });
@@ -13,7 +13,7 @@ const { state } = useSidebar();
13
13
  class="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground"
14
14
  >
15
15
  <div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary text-primary-foreground">
16
- <Shield class="h-4 w-4" />
16
+ <Icon name="lucide:shield" class="h-4 w-4" />
17
17
  </div>
18
18
  <div
19
19
  v-show="state !== 'collapsed'"
@@ -1,9 +1,8 @@
1
- import type { LucideIcon } from 'lucide-vue-next';
2
1
  type __VLS_Props = {
3
2
  items: {
4
3
  title: string;
5
4
  url: string;
6
- icon?: LucideIcon;
5
+ icon?: string;
7
6
  isActive?: boolean;
8
7
  items?: {
9
8
  title: string;
@@ -1,4 +1,5 @@
1
1
  <script setup>
2
+ import { Icon } from "#components";
2
3
  import {
3
4
  Collapsible,
4
5
  CollapsibleContent,
@@ -14,7 +15,6 @@ import {
14
15
  SidebarMenuSubButton,
15
16
  SidebarMenuSubItem
16
17
  } from "abckit/shadcn/sidebar";
17
- import { ChevronRight } from "lucide-vue-next";
18
18
  defineProps({
19
19
  items: { type: Array, required: true },
20
20
  label: { type: String, required: false }
@@ -38,7 +38,7 @@ defineProps({
38
38
  <template v-if="!item.items">
39
39
  <SidebarMenuButton as-child :tooltip="item.title">
40
40
  <NuxtLink :to="item.url">
41
- <component :is="item.icon" v-if="item.icon" />
41
+ <Icon v-if="item.icon" :name="item.icon" />
42
42
  <span>{{ item.title }}</span>
43
43
  </NuxtLink>
44
44
  </SidebarMenuButton>
@@ -46,9 +46,9 @@ defineProps({
46
46
  <template v-else>
47
47
  <CollapsibleTrigger as-child>
48
48
  <SidebarMenuButton :tooltip="item.title">
49
- <component :is="item.icon" v-if="item.icon" />
49
+ <Icon v-if="item.icon" :name="item.icon" />
50
50
  <span>{{ item.title }}</span>
51
- <ChevronRight class="ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90" />
51
+ <Icon name="lucide:chevron-right" class="ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90" />
52
52
  </SidebarMenuButton>
53
53
  </CollapsibleTrigger>
54
54
  <CollapsibleContent>
@@ -1,9 +1,8 @@
1
- import type { LucideIcon } from 'lucide-vue-next';
2
1
  type __VLS_Props = {
3
2
  items: {
4
3
  title: string;
5
4
  url: string;
6
- icon?: LucideIcon;
5
+ icon?: string;
7
6
  isActive?: boolean;
8
7
  items?: {
9
8
  title: string;
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { reactiveOmit } from "@vueuse/core";
3
- import { ChevronDown } from "lucide-vue-next";
3
+ import { Icon } from "#components";
4
4
  import {
5
5
  AccordionHeader,
6
6
  AccordionTrigger
@@ -28,7 +28,8 @@ const delegatedProps = reactiveOmit(props, "class");
28
28
  >
29
29
  <slot />
30
30
  <slot name="icon">
31
- <ChevronDown
31
+ <Icon
32
+ name="lucide:chevron-down"
32
33
  class="text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200"
33
34
  />
34
35
  </slot>
@@ -1,7 +1,7 @@
1
1
  <script setup>
2
2
  import { Button } from "abckit/shadcn/button";
3
3
  import { FormItem, FormMessage } from "abckit/shadcn/form";
4
- import { PlusIcon, TrashIcon } from "lucide-vue-next";
4
+ import { Icon } from "#components";
5
5
  import { FieldArray, FieldContextKey, useField } from "vee-validate";
6
6
  import { computed, provide } from "vue";
7
7
  import * as z from "zod";
@@ -95,7 +95,7 @@ function getEmptyValueForZodType(schema) {
95
95
  class="h-8 w-8 p-0 text-destructive hover:text-destructive"
96
96
  @click="remove(index)"
97
97
  >
98
- <TrashIcon :size="14" />
98
+ <Icon name="lucide:trash" class="size-3.5" />
99
99
  </Button>
100
100
  </div>
101
101
 
@@ -116,7 +116,7 @@ function getEmptyValueForZodType(schema) {
116
116
  :disabled="disabled"
117
117
  @click="push(getEmptyValueForZodType(itemShape?.schema))"
118
118
  >
119
- <PlusIcon :size="16" />
119
+ <Icon name="lucide:plus" class="size-4" />
120
120
  {{ `Add ${beautifyObjectName(fieldName.replace(/s$/, ""))}` }}
121
121
  </Button>
122
122
  </div>
@@ -5,7 +5,7 @@ import { Calendar } from "abckit/shadcn/calendar";
5
5
  import { FormControl, FormDescription, FormField, FormItem, FormMessage } from "abckit/shadcn/form";
6
6
  import { Popover, PopoverContent, PopoverTrigger } from "abckit/shadcn/popover";
7
7
  import { DateFormatter, getLocalTimeZone } from "@internationalized/date";
8
- import { CalendarIcon } from "lucide-vue-next";
8
+ import { Icon } from "#components";
9
9
  import AutoFormLabel from "./AutoFormLabel.vue";
10
10
  import { beautifyObjectName, maybeBooleanishToBoolean } from "./utils";
11
11
  defineProps({
@@ -38,7 +38,7 @@ const df = new DateFormatter("en-US", {
38
38
  !slotProps.componentField.modelValue && 'text-muted-foreground'
39
39
  )"
40
40
  >
41
- <CalendarIcon class="mr-2 h-4 w-4" />
41
+ <Icon name="lucide:calendar" class="mr-2 h-4 w-4" />
42
42
  {{ slotProps.componentField.modelValue ? df.format(slotProps.componentField.modelValue.toDate(getLocalTimeZone())) : "Pick a date" }}
43
43
  </Button>
44
44
  </PopoverTrigger>
@@ -2,7 +2,7 @@
2
2
  import { Button } from "abckit/shadcn/button";
3
3
  import { FormControl, FormDescription, FormField, FormItem, FormMessage } from "abckit/shadcn/form";
4
4
  import { Input } from "abckit/shadcn/input";
5
- import { Trash } from "lucide-vue-next";
5
+ import { Icon } from "#components";
6
6
  import { ref } from "vue";
7
7
  import AutoFormLabel from "./AutoFormLabel.vue";
8
8
  import { beautifyObjectName } from "./utils";
@@ -63,7 +63,7 @@ async function parseFileAsString(file) {
63
63
  slotProps.componentField.onInput(void 0);
64
64
  }"
65
65
  >
66
- <Trash />
66
+ <Icon name="lucide:trash" />
67
67
  </Button>
68
68
  </div>
69
69
  </slot>
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { MoreHorizontal } from "lucide-vue-next";
2
+ import { Icon } from "#components";
3
3
  import { cn } from "abckit/utils";
4
4
  const props = defineProps({
5
5
  class: { type: null, required: false }
@@ -14,7 +14,7 @@ const props = defineProps({
14
14
  :class="cn('flex size-9 items-center justify-center', props.class)"
15
15
  >
16
16
  <slot>
17
- <MoreHorizontal class="size-4" />
17
+ <Icon name="lucide:more-horizontal" class="size-4" />
18
18
  </slot>
19
19
  <span class="sr-only">More</span>
20
20
  </span>
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { ChevronRight } from "lucide-vue-next";
2
+ import { Icon } from "#components";
3
3
  import { cn } from "abckit/utils";
4
4
  const props = defineProps({
5
5
  class: { type: null, required: false }
@@ -14,7 +14,7 @@ const props = defineProps({
14
14
  :class="cn('[&>svg]:size-3.5', props.class)"
15
15
  >
16
16
  <slot>
17
- <ChevronRight />
17
+ <Icon name="lucide:chevron-right" />
18
18
  </slot>
19
19
  </li>
20
20
  </template>
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { reactiveOmit } from "@vueuse/core";
3
- import { ChevronRight } from "lucide-vue-next";
3
+ import { Icon } from "#components";
4
4
  import { CalendarNext, useForwardProps } from "reka-ui";
5
5
  import { cn } from "abckit/utils";
6
6
  import { buttonVariants } from "abckit/shadcn/button";
@@ -25,7 +25,7 @@ const forwardedProps = useForwardProps(delegatedProps);
25
25
  v-bind="forwardedProps"
26
26
  >
27
27
  <slot>
28
- <ChevronRight class="size-4" />
28
+ <Icon name="lucide:chevron-right" class="size-4" />
29
29
  </slot>
30
30
  </CalendarNext>
31
31
  </template>
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { reactiveOmit } from "@vueuse/core";
3
- import { ChevronLeft } from "lucide-vue-next";
3
+ import { Icon } from "#components";
4
4
  import { CalendarPrev, useForwardProps } from "reka-ui";
5
5
  import { cn } from "abckit/utils";
6
6
  import { buttonVariants } from "abckit/shadcn/button";
@@ -25,7 +25,7 @@ const forwardedProps = useForwardProps(delegatedProps);
25
25
  v-bind="forwardedProps"
26
26
  >
27
27
  <slot>
28
- <ChevronLeft class="size-4" />
28
+ <Icon name="lucide:chevron-left" class="size-4" />
29
29
  </slot>
30
30
  </CalendarPrev>
31
31
  </template>
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { ArrowRight } from "lucide-vue-next";
2
+ import { Icon } from "#components";
3
3
  import { cn } from "abckit/utils";
4
4
  import { Button } from "abckit/shadcn/button";
5
5
  import { useCarousel } from "./useCarousel";
@@ -25,7 +25,7 @@ const { orientation, canScrollNext, scrollNext } = useCarousel();
25
25
  @click="scrollNext"
26
26
  >
27
27
  <slot>
28
- <ArrowRight />
28
+ <Icon name="lucide:arrow-right" />
29
29
  <span class="sr-only">Next Slide</span>
30
30
  </slot>
31
31
  </Button>
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { ArrowLeft } from "lucide-vue-next";
2
+ import { Icon } from "#components";
3
3
  import { cn } from "abckit/utils";
4
4
  import { Button } from "abckit/shadcn/button";
5
5
  import { useCarousel } from "./useCarousel";
@@ -25,7 +25,7 @@ const { orientation, canScrollPrev, scrollPrev } = useCarousel();
25
25
  @click="scrollPrev"
26
26
  >
27
27
  <slot>
28
- <ArrowLeft />
28
+ <Icon name="lucide:arrow-left" />
29
29
  <span class="sr-only">Previous Slide</span>
30
30
  </slot>
31
31
  </Button>
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { reactiveOmit } from "@vueuse/core";
3
- import { Check } from "lucide-vue-next";
3
+ import { Icon } from "#components";
4
4
  import { CheckboxIndicator, CheckboxRoot, useForwardPropsEmits } from "reka-ui";
5
5
  import { cn } from "abckit/utils";
6
6
  const props = defineProps({
@@ -37,7 +37,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
37
37
  class="grid place-content-center text-current transition-none"
38
38
  >
39
39
  <slot v-bind="slotProps">
40
- <Check class="size-3.5" />
40
+ <Icon name="lucide:check" class="size-3.5" />
41
41
  </slot>
42
42
  </CheckboxIndicator>
43
43
  </CheckboxRoot>
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { reactiveOmit } from "@vueuse/core";
3
- import { SearchIcon } from "lucide-vue-next";
3
+ import { Icon } from "#components";
4
4
  import { ComboboxInput, useForwardPropsEmits } from "reka-ui";
5
5
  import { cn } from "abckit/utils";
6
6
  defineOptions({
@@ -25,7 +25,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
25
25
  data-slot="command-input-wrapper"
26
26
  class="flex h-9 items-center gap-2 border-b px-3"
27
27
  >
28
- <SearchIcon class="size-4 shrink-0 opacity-50" />
28
+ <Icon name="lucide:search" class="size-4 shrink-0 opacity-50" />
29
29
  <ComboboxInput
30
30
  data-slot="command-input"
31
31
  :class="cn(
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { reactiveOmit } from "@vueuse/core";
3
- import { Search } from "lucide-vue-next";
3
+ import { Icon } from "#components";
4
4
  import { ListboxFilter, useForwardProps } from "reka-ui";
5
5
  import { cn } from "abckit/utils";
6
6
  import { useCommand } from ".";
@@ -25,7 +25,7 @@ const { filterState } = useCommand();
25
25
  data-slot="command-input-wrapper"
26
26
  class="flex h-9 items-center gap-2 border-b px-3"
27
27
  >
28
- <Search class="size-4 shrink-0 opacity-50" />
28
+ <Icon name="lucide:search" class="size-4 shrink-0 opacity-50" />
29
29
  <ListboxFilter
30
30
  v-bind="{ ...forwardedProps, ...$attrs }"
31
31
  v-model="filterState.search"
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { reactiveOmit } from "@vueuse/core";
3
- import { Check } from "lucide-vue-next";
3
+ import { Icon } from "#components";
4
4
  import {
5
5
  ContextMenuCheckboxItem,
6
6
  ContextMenuItemIndicator,
@@ -32,7 +32,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
32
32
  <span class="pointer-events-none absolute left-2 flex size-3.5 items-center justify-center">
33
33
  <ContextMenuItemIndicator>
34
34
  <slot name="indicator-icon">
35
- <Check class="size-4" />
35
+ <Icon name="lucide:check" class="size-4" />
36
36
  </slot>
37
37
  </ContextMenuItemIndicator>
38
38
  </span>
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { reactiveOmit } from "@vueuse/core";
3
- import { Circle } from "lucide-vue-next";
3
+ import { Icon } from "#components";
4
4
  import {
5
5
  ContextMenuItemIndicator,
6
6
  ContextMenuRadioItem,
@@ -32,7 +32,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
32
32
  <span class="pointer-events-none absolute left-2 flex size-3.5 items-center justify-center">
33
33
  <ContextMenuItemIndicator>
34
34
  <slot name="indicator-icon">
35
- <Circle class="size-2 fill-current" />
35
+ <Icon name="lucide:circle" class="size-2 fill-current" />
36
36
  </slot>
37
37
  </ContextMenuItemIndicator>
38
38
  </span>
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { reactiveOmit } from "@vueuse/core";
3
- import { ChevronRight } from "lucide-vue-next";
3
+ import { Icon } from "#components";
4
4
  import {
5
5
  ContextMenuSubTrigger,
6
6
  useForwardProps
@@ -29,6 +29,6 @@ const forwardedProps = useForwardProps(delegatedProps);
29
29
  )"
30
30
  >
31
31
  <slot />
32
- <ChevronRight class="ml-auto" />
32
+ <Icon name="lucide:chevron-right" class="ml-auto" />
33
33
  </ContextMenuSubTrigger>
34
34
  </template>
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { reactiveOmit } from "@vueuse/core";
3
- import { X } from "lucide-vue-next";
3
+ import { Icon } from "#components";
4
4
  import {
5
5
  DialogClose,
6
6
  DialogContent,
@@ -45,7 +45,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
45
45
  data-slot="dialog-close"
46
46
  class="ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
47
47
  >
48
- <X />
48
+ <Icon name="lucide:x" />
49
49
  <span class="sr-only">Close</span>
50
50
  </DialogClose>
51
51
  </DialogContent>
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { reactiveOmit } from "@vueuse/core";
3
- import { X } from "lucide-vue-next";
3
+ import { Icon } from "#components";
4
4
  import {
5
5
  DialogClose,
6
6
  DialogContent,
@@ -50,7 +50,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
50
50
  <DialogClose
51
51
  class="absolute top-4 right-4 p-0.5 transition-colors rounded-md hover:bg-secondary"
52
52
  >
53
- <X class="w-4 h-4" />
53
+ <Icon name="lucide:x" class="w-4 h-4" />
54
54
  <span class="sr-only">Close</span>
55
55
  </DialogClose>
56
56
  </DialogContent>
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { reactiveOmit } from "@vueuse/core";
3
- import { Check } from "lucide-vue-next";
3
+ import { Icon } from "#components";
4
4
  import {
5
5
  DropdownMenuCheckboxItem,
6
6
  DropdownMenuItemIndicator,
@@ -32,7 +32,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
32
32
  <span class="pointer-events-none absolute left-2 flex size-3.5 items-center justify-center">
33
33
  <DropdownMenuItemIndicator>
34
34
  <slot name="indicator-icon">
35
- <Check class="size-4" />
35
+ <Icon name="lucide:check" class="size-4" />
36
36
  </slot>
37
37
  </DropdownMenuItemIndicator>
38
38
  </span>
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { reactiveOmit } from "@vueuse/core";
3
- import { Circle } from "lucide-vue-next";
3
+ import { Icon } from "#components";
4
4
  import {
5
5
  DropdownMenuItemIndicator,
6
6
  DropdownMenuRadioItem,
@@ -32,7 +32,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
32
32
  <span class="pointer-events-none absolute left-2 flex size-3.5 items-center justify-center">
33
33
  <DropdownMenuItemIndicator>
34
34
  <slot name="indicator-icon">
35
- <Circle class="size-2 fill-current" />
35
+ <Icon name="lucide:circle" class="size-2 fill-current" />
36
36
  </slot>
37
37
  </DropdownMenuItemIndicator>
38
38
  </span>
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { reactiveOmit } from "@vueuse/core";
3
- import { ChevronRight } from "lucide-vue-next";
3
+ import { Icon } from "#components";
4
4
  import {
5
5
  DropdownMenuSubTrigger,
6
6
  useForwardProps
@@ -28,6 +28,6 @@ const forwardedProps = useForwardProps(delegatedProps);
28
28
  )"
29
29
  >
30
30
  <slot />
31
- <ChevronRight class="ml-auto size-4" />
31
+ <Icon name="lucide:chevron-right" class="ml-auto size-4" />
32
32
  </DropdownMenuSubTrigger>
33
33
  </template>
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { Cloud, Trash2 } from "lucide-vue-next";
2
+ import { Icon } from "#components";
3
3
  const props = defineProps({
4
4
  searchQuery: { type: String, required: false, default: "" },
5
5
  isTrash: { type: Boolean, required: false, default: false },
@@ -22,7 +22,7 @@ function handleUploadClick() {
22
22
  class="relative rounded-full bg-muted p-8 mb-4 cursor-pointer transition-transform hover:scale-105"
23
23
  @click="handleUploadClick"
24
24
  >
25
- <Cloud class="h-16 w-16 text-muted-foreground" />
25
+ <Icon name="lucide:cloud" class="h-16 w-16 text-muted-foreground" />
26
26
  <input
27
27
  v-if="!onUploadClick"
28
28
  type="file"
@@ -32,7 +32,7 @@ function handleUploadClick() {
32
32
  />
33
33
  </div>
34
34
  <div v-else-if="!searchQuery" class="rounded-full bg-muted p-8 mb-4">
35
- <Trash2 class="h-16 w-16 text-muted-foreground" />
35
+ <Icon name="lucide:trash-2" class="h-16 w-16 text-muted-foreground" />
36
36
  </div>
37
37
  <div v-else class="rounded-full bg-muted p-8 mb-4">
38
38
  <Icon name="lucide:search-x" class="h-16 w-16 text-muted-foreground" />
@@ -1,7 +1,7 @@
1
1
  <script setup>
2
- import { Cloud, FileText, Film, Folder, Image } from "lucide-vue-next";
3
2
  import { bytesToSize } from "abckit/shared/constants/r2";
4
3
  import { AppImage } from "abckit/components/app";
4
+ import { Icon } from "#components";
5
5
  const props = defineProps({
6
6
  files: { type: Array, required: true },
7
7
  selectedFiles: { type: Set, required: false },
@@ -11,13 +11,13 @@ const props = defineProps({
11
11
  });
12
12
  const emit = defineEmits(["select", "folderClick"]);
13
13
  const FILE_TYPE_ICONS = {
14
- IMAGE: Image,
15
- VIDEO: Film,
16
- AUDIO: FileText,
17
- DOCUMENT: FileText,
18
- ARCHIVE: Cloud,
19
- OTHER: Cloud,
20
- FOLDER: Folder
14
+ IMAGE: "lucide:image",
15
+ VIDEO: "lucide:film",
16
+ AUDIO: "lucide:file-text",
17
+ DOCUMENT: "lucide:file-text",
18
+ ARCHIVE: "lucide:cloud",
19
+ OTHER: "lucide:cloud",
20
+ FOLDER: "lucide:folder"
21
21
  };
22
22
  function getFileIcon(file) {
23
23
  if (file.isFolder)
@@ -70,8 +70,8 @@ function isSelected(fileId) {
70
70
  fallback=""
71
71
  />
72
72
  <div v-else class="flex h-full items-center justify-center">
73
- <component
74
- :is="getFileIcon(file)"
73
+ <Icon
74
+ :name="getFileIcon(file)"
75
75
  class="h-12 w-12 text-muted-foreground"
76
76
  />
77
77
  </div>
@@ -1,5 +1,4 @@
1
1
  <script setup>
2
- import { Cloud, Download, Eye, FileText, Film, Folder, Image, MoreVertical, RotateCcw, Trash2 } from "lucide-vue-next";
3
2
  import { bytesToSize } from "abckit/shared/constants/r2";
4
3
  import { Badge } from "abckit/shadcn/badge";
5
4
  import { Button } from "abckit/shadcn/button";
@@ -28,13 +27,13 @@ const props = defineProps({
28
27
  onPermanentDelete: { type: Function, required: false }
29
28
  });
30
29
  const FILE_TYPE_ICONS = {
31
- IMAGE: Image,
32
- VIDEO: Film,
33
- AUDIO: FileText,
34
- DOCUMENT: FileText,
35
- ARCHIVE: Cloud,
36
- OTHER: Cloud,
37
- FOLDER: Folder
30
+ IMAGE: "lucide:image",
31
+ VIDEO: "lucide:film",
32
+ AUDIO: "lucide:file-text",
33
+ DOCUMENT: "lucide:file-text",
34
+ ARCHIVE: "lucide:cloud",
35
+ OTHER: "lucide:cloud",
36
+ FOLDER: "lucide:folder"
38
37
  };
39
38
  const FILE_TYPE_LABELS = {
40
39
  IMAGE: "Image",
@@ -125,9 +124,9 @@ const someSelected = computed(
125
124
  class="h-full w-full"
126
125
  fallback=""
127
126
  />
128
- <component
129
- :is="getFileIcon(file)"
127
+ <Icon
130
128
  v-else
129
+ :name="getFileIcon(file)"
131
130
  class="h-5 w-5 text-muted-foreground"
132
131
  />
133
132
  </div>
@@ -157,7 +156,7 @@ const someSelected = computed(
157
156
  class="h-8 w-8"
158
157
  @click.stop
159
158
  >
160
- <MoreVertical class="h-4 w-4" />
159
+ <Icon name="lucide:more-vertical" class="h-4 w-4" />
161
160
  </Button>
162
161
  </DropdownMenuTrigger>
163
162
  <DropdownMenuContent align="end">
@@ -181,17 +180,17 @@ const someSelected = computed(
181
180
  class="text-destructive focus:text-destructive"
182
181
  @click.stop="onDelete(file)"
183
182
  >
184
- <Trash2 class="mr-2 h-4 w-4" />
183
+ <Icon name="lucide:trash-2" class="mr-2 h-4 w-4" />
185
184
  Sil
186
185
  </DropdownMenuItem>
187
186
  </template>
188
187
  <template v-else>
189
188
  <DropdownMenuItem v-if="onView" @click.stop="onView(file)">
190
- <Eye class="mr-2 h-4 w-4" />
189
+ <Icon name="lucide:eye" class="mr-2 h-4 w-4" />
191
190
  Görüntüle
192
191
  </DropdownMenuItem>
193
192
  <DropdownMenuItem v-if="onDownload" @click.stop="onDownload(file)">
194
- <Download class="mr-2 h-4 w-4" />
193
+ <Icon name="lucide:download" class="mr-2 h-4 w-4" />
195
194
  İndir
196
195
  </DropdownMenuItem>
197
196
  <DropdownMenuItem v-if="onRename" @click.stop="onRename(file)">
@@ -208,14 +207,14 @@ const someSelected = computed(
208
207
  class="text-destructive focus:text-destructive"
209
208
  @click.stop="onDelete(file)"
210
209
  >
211
- <Trash2 class="mr-2 h-4 w-4" />
210
+ <Icon name="lucide:trash-2" class="mr-2 h-4 w-4" />
212
211
  Çöp Kutusuna Taşı
213
212
  </DropdownMenuItem>
214
213
  </template>
215
214
  </template>
216
215
  <template v-else>
217
216
  <DropdownMenuItem v-if="onRestore" @click.stop="onRestore(file)">
218
- <RotateCcw class="mr-2 h-4 w-4" />
217
+ <Icon name="lucide:rotate-ccw" class="mr-2 h-4 w-4" />
219
218
  Geri Yükle
220
219
  </DropdownMenuItem>
221
220
  <DropdownMenuSeparator />
@@ -224,7 +223,7 @@ const someSelected = computed(
224
223
  class="text-destructive focus:text-destructive"
225
224
  @click.stop="onDelete(file)"
226
225
  >
227
- <Trash2 class="mr-2 h-4 w-4" />
226
+ <Icon name="lucide:trash-2" class="mr-2 h-4 w-4" />
228
227
  Kalıcı Olarak Sil
229
228
  </DropdownMenuItem>
230
229
  </template>