negodesign 0.0.52 → 0.0.54

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.
@@ -56,13 +56,13 @@
56
56
  {#if title}
57
57
  <div class="text-center font-bold text-lg">{title}</div>
58
58
  {:else if isLoading}
59
- <Skeleton class="w-40 h-5 rounded-lg bg-gray-400 mb-0.5" />
59
+ <Skeleton class="w-5 md:w-40 h-5 rounded-lg bg-gray-400 mb-0.5" />
60
60
  {/if}
61
61
 
62
62
  {#if startNumber}
63
63
  <CardStarRating {startNumber} {startMax} {isLoading} />
64
64
  {:else if isLoading}
65
- <Skeleton class="w-20 h-4 rounded-lg bg-gray-300 mt-0.5" />
65
+ <Skeleton class="w-5 md:w-20 h-4 rounded-lg bg-gray-300 mt-0.5" />
66
66
  {/if}
67
67
  </div>
68
68
  </div>
@@ -76,7 +76,7 @@
76
76
  </div>
77
77
  </div>
78
78
 
79
- <div class="h-15 my-2 mb-5 md:mb-0">
79
+ <div class=" my-2 mb-2 md:mb-0">
80
80
  <CardDescription
81
81
  {content}
82
82
  {isLoading}
@@ -86,7 +86,7 @@
86
86
  </div>
87
87
 
88
88
  <CardTags
89
- className="my-6"
89
+ className="mt-1 mb-5"
90
90
  tags={tags ?? []}
91
91
  {isTagBorderBottom}
92
92
  {isLoading}
@@ -74,15 +74,10 @@
74
74
  {isLoading}
75
75
  />
76
76
  </div>
77
- <CardTags
78
- className="my-2"
79
- tags={tags ?? []}
80
- {isTagBorderBottom}
81
- {isLoading}
82
- />
77
+ <CardTags tags={tags ?? []} {isTagBorderBottom} {isLoading} />
83
78
  </div>
84
79
 
85
- <div class="h-15 mb-10 md:mb-0">
80
+ <div class="h-24">
86
81
  <CardDescription
87
82
  {content}
88
83
  {isLoading}
@@ -29,10 +29,7 @@
29
29
  class="w-full h-7.5 rounded-lg bg-gray-500/80 dark:bg-gray-500/30"
30
30
  />
31
31
  {:else}
32
- <Button
33
- class="bg-gradient {isFlex ? 'flex-1' : ''} {className}"
34
- onclick={() => onClick(id)}
35
- >
32
+ <Button class="bg-gradient flex-1 {className}" onclick={() => onClick(id)}>
36
33
  {#if icon}
37
34
  {#if typeof icon === "string"}
38
35
  <i class={icon}></i>
@@ -77,7 +77,7 @@
77
77
  <Popover.Trigger
78
78
  onmouseenter={() => (open = true)}
79
79
  onmouseleave={() => (open = false)}
80
- class="block w-full text-left"
80
+ class="block w-full text-left h-8"
81
81
  >
82
82
  {@render tagsRow()}
83
83
  </Popover.Trigger>
@@ -27,7 +27,7 @@
27
27
  let {
28
28
  imageUrl,
29
29
  videoUrl,
30
- class: className = "h-32 md:w-64 md:h-64",
30
+ class: className = "h-32 w-full md:h-64",
31
31
  isImageButtonMaximized = false,
32
32
  isVideoButtonMaximized = false,
33
33
  isLoading = false,
@@ -130,16 +130,10 @@
130
130
  loading="lazy"
131
131
  decoding="async"
132
132
  alt={imageUrl}
133
- class="absolute inset-0 w-full {className} rounded-md object-cover transition-opacity duration-500"
133
+ class="absolute inset-0 h-full w-full rounded-md object-cover transition-opacity duration-500"
134
134
  class:opacity-0={videoUrl && showVideo}
135
135
  onerror={(e) => ((e.target as HTMLImageElement).src = ImgPlaceholder)}
136
136
  />
137
- {:else}
138
- <img
139
- src={ImgPlaceholder}
140
- alt={imageUrl}
141
- class="rounded-lg w-50 h-[50px] object-cover object-center"
142
- />
143
137
  {/if}
144
138
 
145
139
  {#if videoUrl && isVisible}
@@ -148,7 +142,7 @@
148
142
  src={videoUrl}
149
143
  preload="metadata"
150
144
  onloadedmetadata={onLoadedMetadata}
151
- class="absolute inset-0 w-full {className} rounded-md object-cover transition-opacity duration-500"
145
+ class="absolute inset-0 h-full w-full rounded-md object-cover transition-opacity duration-500"
152
146
  class:opacity-0={imageUrl && !showVideo}
153
147
  muted
154
148
  loop
@@ -10,16 +10,23 @@
10
10
  imageClass,
11
11
  iconClass,
12
12
  labelClass,
13
- activeClass = "bg-gradient text-white rounded-sm px-3",
14
- isLoading = false,
13
+ activeClass = "bg-gradient text-white rounded-full px-3",
15
14
  orientation = "horizontal",
15
+ itemStyle = "DEFAULT",
16
+ isBorderInline = false,
17
+ showButton = true,
18
+ isLoading = false,
19
+ btnNavClass,
16
20
  itemClass,
17
21
  onClick,
18
22
  }: CarouselBadgeProps = $props();
19
23
 
20
- const DEFAULT_IMG_OR_ICON_CLASS = "size-3";
21
- const NAV_BUTTON_CLASS =
22
- "absolute top-1/2 -translate-y-1/2 mt-0.5 md:mr-0 z-50 bg-blue-700! text-white! cursor-pointer!";
24
+ const TOP_NAV = $derived(isBorderInline ? "top-5.5" : "top-7.5");
25
+ const borderB = $derived(
26
+ isBorderInline ? `border-b-2 ${itemStyle == "BORDER" ? "pb-2" : ""}` : "",
27
+ );
28
+ const isInlineBorder = $derived(isBorderInline && itemStyle == "INLINE");
29
+ const DEFAULT_IMG_OR_ICON_CLASS = "size-3 md:size-6";
23
30
 
24
31
  const responsive = useDevice();
25
32
  const skeletonCount = $derived(responsive.isMobile ? 2 : 8);
@@ -54,31 +61,49 @@
54
61
  {/if}
55
62
  {/snippet}
56
63
 
57
- <Carousel.Root>
58
- <Carousel.Content>
59
- {#if isLoading}
60
- <div class="flex items-center justify-between w-full gap-1 md:gap-2">
61
- {#each Array.from({ length: skeletonCount }) as _, i (`skeleton-${i}`)}
62
- <Skeleton class="h-4 w-25 bg-gray-900/90" />
63
- {/each}
64
- </div>
65
- {:else}
66
- {#each items as item, i (`badge-${i}-${item.value ?? item.label ?? i}`)}
67
- <Carousel.Item class="basis-auto" onclick={() => selectItem(item)}>
68
- <div
69
- class="flex gap-1 mx-2 p-0.5 justify-center items-center cursor-pointer
64
+ {#if items.length > 0}
65
+ <Carousel.Root>
66
+ <Carousel.Content class={borderB}>
67
+ {#if isLoading}
68
+ <div class="flex items-center justify-between w-full gap-1 md:gap-2">
69
+ {#each Array.from( { length: skeletonCount }, ) as _, i (`skeleton-${i}`)}
70
+ <Skeleton class="h-4 w-25 bg-gray-50/90" />
71
+ {/each}
72
+ </div>
73
+ {:else}
74
+ {#each items as item, i (`badge-${i}-${item.value ?? item.label ?? i}`)}
75
+ <Carousel.Item
76
+ class="basis-auto relative"
77
+ onclick={() => selectItem(item)}
78
+ >
79
+ <div
80
+ class="flex gap-1 mx-2 p-1 justify-center items-center cursor-pointer relative hover:text-lg hover:font-bold
81
+ {isSelected(item)
82
+ ? isInlineBorder
83
+ ? 'text-gradient font-bold'
84
+ : activeClass
85
+ : ''}
86
+ {itemStyle == 'BORDER' ? 'border-2 rounded-full min-w-25 px-1' : ''}
70
87
  {orientation === 'horizontal' ? 'flex-row' : 'flex-col'}
71
- {isSelected(item) ? activeClass : ''}
88
+ {isInlineBorder ? 'pb-3' : ''}
72
89
  {itemClass}
73
90
  "
74
- >
75
- {@render itemVisual(item)}
76
- <div class={labelClass}>{item.label}</div>
77
- </div>
78
- </Carousel.Item>
79
- {/each}
91
+ >
92
+ {@render itemVisual(item)}
93
+ <div class={labelClass}>{item.label}</div>
94
+ </div>
95
+ {#if isSelected(item) && isInlineBorder}
96
+ <div class="absolute pt-5 w-full h-2 bg-gradient"></div>
97
+ {/if}
98
+ </Carousel.Item>
99
+ {/each}
100
+ {/if}
101
+ </Carousel.Content>
102
+ {#if showButton}
103
+ {@const navClass =
104
+ "absolute -translate-y-1/2 z-50 bg-blue-700! text-white! cursor-pointer"}
105
+ <Carousel.Previous class="-left-8 {navClass} {TOP_NAV} {btnNavClass}" />
106
+ <Carousel.Next class="-right-8 {navClass} {TOP_NAV} {btnNavClass}" />
80
107
  {/if}
81
- </Carousel.Content>
82
- <Carousel.Previous class="-left-8 {NAV_BUTTON_CLASS}" />
83
- <Carousel.Next class="-right-8 {NAV_BUTTON_CLASS}" />
84
- </Carousel.Root>
108
+ </Carousel.Root>
109
+ {/if}
@@ -22,6 +22,10 @@ export interface CarouselGridMediaProps {
22
22
  items: CardMediaProps[];
23
23
  /** Estado de carregamento (skeleton) */
24
24
  isLoading?: boolean;
25
+ /** Exibe o botão de maximizar no vídeo */
26
+ isVideoButtonMaximized?: boolean;
27
+ /** Exibe o botão de maximizar na imagem */
28
+ isImageButtonMaximized?: boolean;
25
29
  /** Callback acionado ao clicar no botão de favorito */
26
30
  onFavoriteClick?: (id: string | number) => void;
27
31
  /** Callback acionado ao clicar no botão de perfil */
@@ -17,6 +17,8 @@
17
17
  isLoading = false,
18
18
  isDescriptionIcon,
19
19
  isDescriptionLabel,
20
+ isVideoButtonMaximized = false,
21
+ isImageButtonMaximized = false,
20
22
  onFavoriteClick,
21
23
  onButtonProfile,
22
24
  onButtonDetails,
@@ -55,18 +57,11 @@
55
57
  {variant}
56
58
  {isDescriptionIcon}
57
59
  {isDescriptionLabel}
58
- onFavoriteClick={(id: string | number) => {
59
- item?.onFavoriteClick?.(id);
60
- onFavoriteClick?.(id);
61
- }}
62
- onButtonProfile={(id: string | number) => {
63
- item?.onButtonProfile?.(id);
64
- onButtonProfile?.(id);
65
- }}
66
- onButtonDetails={(id: string | number) => {
67
- item?.onButtonDetails?.(id);
68
- onButtonDetails?.(id);
69
- }}
60
+ {isVideoButtonMaximized}
61
+ {isImageButtonMaximized}
62
+ {onFavoriteClick}
63
+ {onButtonProfile}
64
+ {onButtonDetails}
70
65
  />
71
66
  </Carousel.Item>
72
67
  {:else}
@@ -76,18 +71,11 @@
76
71
  {variant}
77
72
  {isDescriptionIcon}
78
73
  {isDescriptionLabel}
79
- onFavoriteClick={(id: string | number) => {
80
- item?.onFavoriteClick?.(id);
81
- onFavoriteClick?.(id);
82
- }}
83
- onButtonProfile={(id: string | number) => {
84
- item?.onButtonProfile?.(id);
85
- onButtonProfile?.(id);
86
- }}
87
- onButtonDetails={(id: string | number) => {
88
- item?.onButtonDetails?.(id);
89
- onButtonDetails?.(id);
90
- }}
74
+ {isVideoButtonMaximized}
75
+ {isImageButtonMaximized}
76
+ {onFavoriteClick}
77
+ {onButtonProfile}
78
+ {onButtonDetails}
91
79
  />
92
80
  </div>
93
81
  {/if}
@@ -15,8 +15,6 @@
15
15
  const { slotProps, totalItems, gridClass, children }: Props = $props();
16
16
 
17
17
  const responsive = useDevice();
18
-
19
- const colsClass = $derived(totalItems <= 2 ? "grid-cols-2" : "grid-cols-3");
20
18
  </script>
21
19
 
22
20
  {#if responsive.isMobile}
@@ -27,7 +25,9 @@
27
25
  {@render children()}
28
26
  </CarouselSlot>
29
27
  {:else}
30
- <div class="grid {colsClass} gap-4 p-2 {gridClass}">
28
+ <div
29
+ class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 gap-4 p-2 {gridClass}"
30
+ >
31
31
  {@render children()}
32
32
  </div>
33
33
  {/if}
@@ -62,6 +62,10 @@ export interface CarouselBadgeProps {
62
62
  /** Estado de carregamento (skeleton) */
63
63
  isLoading?: boolean;
64
64
  itemClass?: string;
65
+ btnNavClass?: string;
66
+ isBorderInline?: boolean;
67
+ showButton?: boolean;
68
+ itemStyle?: 'BORDER' | 'INLINE' | 'DEFAULT';
65
69
  onClick?: (value: string | number) => void;
66
70
  }
67
71
  /**
@@ -18,6 +18,8 @@ export interface NavMenuLogoProps {
18
18
  * Props de um link individual no menu de navegação.
19
19
  */
20
20
  export interface NavMenuLinksProps {
21
+ /** Key menu */
22
+ key?: string;
21
23
  /** URL de destino do link */
22
24
  url?: string;
23
25
  /** Alias de `url` — URL de destino do link (compatibilidade) */
@@ -52,6 +54,10 @@ export interface NavMenuActionsProps {
52
54
  * com logo, links, ações (login/registo), language switcher e light switch.
53
55
  */
54
56
  export interface NavMenuProps {
57
+ /** Key nav menu */
58
+ menuKey?: string;
59
+ /** Key CSS nav menu */
60
+ activeClass?: string;
55
61
  /** Classe CSS adicional para o container do nav */
56
62
  navClass?: string;
57
63
  /** Classe CSS personalizada para cada link */
@@ -1,28 +1,40 @@
1
1
  <script lang="ts">
2
- import { HugeiconsIcon } from "@hugeicons/svelte";
3
- import type { NavMenuLinksProps } from "../data/nav-menu";
4
-
5
- type Props = {
6
- links: NavMenuLinksProps[];
7
- linkClass?: string;
8
- groupClass?: string;
9
- orientation?: "horizontal" | "vertical";
10
- };
2
+ import { HugeiconsIcon } from "@hugeicons/svelte";
3
+ import type { NavMenuLinksProps } from "../data/nav-menu";
11
4
 
12
- let { links, linkClass, groupClass, orientation }: Props = $props();
5
+ type Props = {
6
+ links: NavMenuLinksProps[];
7
+ linkClass?: string;
8
+ groupClass?: string;
9
+ menuKey?: string;
10
+ activeClass?: string;
11
+ orientation?: "horizontal" | "vertical";
12
+ };
13
+
14
+ let {
15
+ links,
16
+ linkClass,
17
+ groupClass,
18
+ menuKey,
19
+ activeClass = "bg-gradient text-white",
20
+ orientation,
21
+ }: Props = $props();
13
22
  </script>
14
- <ul class={`flex ${orientation === "vertical" ? "flex-col" : "items-center"} gap-2 md:gap-5 lg:gap-15 ${groupClass}`}>
15
- {#each links as item (item.label)}
16
- <li>
17
- <a
18
- class={`flex items-center gap-1 ${linkClass}`}
19
- href={item.url ?? item.href ?? "#"}
20
- >
21
- {#if item.icon}
22
- <HugeiconsIcon icon={item.icon} size={15} />
23
- {/if}
24
- {item.label}
25
- </a>
26
- </li>
27
- {/each}
28
- </ul>
23
+
24
+ <ul
25
+ class={`flex ${orientation === "vertical" ? "flex-col" : "items-center"} gap-2 md:gap-5 lg:gap-15 ${groupClass}`}
26
+ >
27
+ {#each links as item (item.label)}
28
+ <li>
29
+ <a
30
+ class={`flex items-center gap-1 ${linkClass} ${item.key && menuKey === item.key ? activeClass : ""}`}
31
+ href={item.url ?? item.href ?? "#"}
32
+ >
33
+ {#if item.icon}
34
+ <HugeiconsIcon icon={item.icon} size={15} />
35
+ {/if}
36
+ {item.label}
37
+ </a>
38
+ </li>
39
+ {/each}
40
+ </ul>
@@ -3,6 +3,8 @@ type Props = {
3
3
  links: NavMenuLinksProps[];
4
4
  linkClass?: string;
5
5
  groupClass?: string;
6
+ menuKey?: string;
7
+ activeClass?: string;
6
8
  orientation?: "horizontal" | "vertical";
7
9
  };
8
10
  declare const MenuLinks: import("svelte").Component<Props, {}, "">;
@@ -14,6 +14,8 @@
14
14
  logo,
15
15
  links,
16
16
  actions,
17
+ menuKey,
18
+ activeClass,
17
19
  navClass = "w-full",
18
20
  linkClass = "",
19
21
  groupClass = "",
@@ -95,11 +97,25 @@
95
97
  {#if responsive.isMobile}
96
98
  <NavMenuDrawer {links} {onclickButtonLogin} {onclickButtonRegister} />
97
99
  {:else if align === "LINK_SEPARATED_ACTIONS"}
98
- <MenuLinks {links} {linkClass} {groupClass} orientation="horizontal" />
100
+ <MenuLinks
101
+ {menuKey}
102
+ {activeClass}
103
+ {links}
104
+ {linkClass}
105
+ {groupClass}
106
+ orientation="horizontal"
107
+ />
99
108
  {@render actionButtons()}
100
109
  {:else if align === "LINK_INTO_ACTIONS"}
101
110
  <div class="flex items-center gap-2">
102
- <MenuLinks {links} {linkClass} {groupClass} orientation="vertical" />
111
+ <MenuLinks
112
+ {menuKey}
113
+ {activeClass}
114
+ {links}
115
+ {linkClass}
116
+ {groupClass}
117
+ orientation="vertical"
118
+ />
103
119
  {@render actionButtons()}
104
120
  </div>
105
121
  {/if}
package/dist/globals.css CHANGED
@@ -329,6 +329,12 @@
329
329
  .top-4 {
330
330
  top: calc(var(--spacing) * 4);
331
331
  }
332
+ .top-5\.5 {
333
+ top: calc(var(--spacing) * 5.5);
334
+ }
335
+ .top-7\.5 {
336
+ top: calc(var(--spacing) * 7.5);
337
+ }
332
338
  .top-8 {
333
339
  top: calc(var(--spacing) * 8);
334
340
  }
@@ -479,9 +485,6 @@
479
485
  .my-2 {
480
486
  margin-block: calc(var(--spacing) * 2);
481
487
  }
482
- .my-6 {
483
- margin-block: calc(var(--spacing) * 6);
484
- }
485
488
  .my-auto {
486
489
  margin-block: auto;
487
490
  }
@@ -813,9 +816,6 @@
813
816
  .h-75 {
814
817
  height: calc(var(--spacing) * 75);
815
818
  }
816
- .h-\[50px\] {
817
- height: 50px;
818
- }
819
819
  .h-\[65px\] {
820
820
  height: 65px;
821
821
  }
@@ -1231,9 +1231,6 @@
1231
1231
  .grid-cols-2 {
1232
1232
  grid-template-columns: repeat(2, minmax(0, 1fr));
1233
1233
  }
1234
- .grid-cols-3 {
1235
- grid-template-columns: repeat(3, minmax(0, 1fr));
1236
- }
1237
1234
  .grid-cols-10 {
1238
1235
  grid-template-columns: repeat(10, minmax(0, 1fr));
1239
1236
  }
@@ -1479,6 +1476,10 @@
1479
1476
  border-style: var(--tw-border-style);
1480
1477
  border-width: 0px;
1481
1478
  }
1479
+ .border-2 {
1480
+ border-style: var(--tw-border-style);
1481
+ border-width: 2px;
1482
+ }
1482
1483
  .border-4 {
1483
1484
  border-style: var(--tw-border-style);
1484
1485
  border-width: 4px;
@@ -1716,6 +1717,12 @@
1716
1717
  .bg-gray-50 {
1717
1718
  background-color: var(--color-gray-50);
1718
1719
  }
1720
+ .bg-gray-50\/90 {
1721
+ background-color: color-mix(in srgb, oklch(98.5% 0.002 247.839) 90%, transparent);
1722
+ @supports (color: color-mix(in lab, red, red)) {
1723
+ background-color: color-mix(in oklab, var(--color-gray-50) 90%, transparent);
1724
+ }
1725
+ }
1719
1726
  .bg-gray-100 {
1720
1727
  background-color: var(--color-gray-100);
1721
1728
  }
@@ -1755,12 +1762,6 @@
1755
1762
  background-color: color-mix(in oklab, var(--color-gray-800) 50%, transparent);
1756
1763
  }
1757
1764
  }
1758
- .bg-gray-900\/90 {
1759
- background-color: color-mix(in srgb, oklch(21% 0.034 264.665) 90%, transparent);
1760
- @supports (color: color-mix(in lab, red, red)) {
1761
- background-color: color-mix(in oklab, var(--color-gray-900) 90%, transparent);
1762
- }
1763
- }
1764
1765
  .bg-green-500 {
1765
1766
  background-color: var(--color-green-500);
1766
1767
  }
@@ -1919,9 +1920,6 @@
1919
1920
  .p-0 {
1920
1921
  padding: 0px;
1921
1922
  }
1922
- .p-0\.5 {
1923
- padding: calc(var(--spacing) * 0.5);
1924
- }
1925
1923
  .p-1 {
1926
1924
  padding: var(--spacing);
1927
1925
  }
@@ -2039,6 +2037,9 @@
2039
2037
  .pt-4 {
2040
2038
  padding-top: calc(var(--spacing) * 4);
2041
2039
  }
2040
+ .pt-5 {
2041
+ padding-top: calc(var(--spacing) * 5);
2042
+ }
2042
2043
  .pt-6 {
2043
2044
  padding-top: calc(var(--spacing) * 6);
2044
2045
  }
@@ -2063,6 +2064,9 @@
2063
2064
  .pb-2 {
2064
2065
  padding-bottom: calc(var(--spacing) * 2);
2065
2066
  }
2067
+ .pb-3 {
2068
+ padding-bottom: calc(var(--spacing) * 3);
2069
+ }
2066
2070
  .pb-5 {
2067
2071
  padding-bottom: calc(var(--spacing) * 5);
2068
2072
  }
@@ -3237,6 +3241,14 @@
3237
3241
  background-color: color-mix(in oklab, var(--color-white) 90%, transparent);
3238
3242
  }
3239
3243
  }
3244
+ .hover\:text-lg:hover {
3245
+ font-size: var(--text-lg);
3246
+ line-height: var(--tw-leading, var(--text-lg--line-height));
3247
+ }
3248
+ .hover\:font-bold:hover {
3249
+ --tw-font-weight: var(--font-weight-bold);
3250
+ font-weight: var(--font-weight-bold);
3251
+ }
3240
3252
  .hover\:text-foreground:hover {
3241
3253
  color: var(--foreground);
3242
3254
  }
@@ -4011,6 +4023,10 @@
4011
4023
  .md\:aspect-auto {
4012
4024
  aspect-ratio: auto;
4013
4025
  }
4026
+ .md\:size-6 {
4027
+ width: calc(var(--spacing) * 6);
4028
+ height: calc(var(--spacing) * 6);
4029
+ }
4014
4030
  .md\:h-14 {
4015
4031
  height: calc(var(--spacing) * 14);
4016
4032
  }
@@ -4065,8 +4081,8 @@
4065
4081
  .md\:w-25 {
4066
4082
  width: calc(var(--spacing) * 25);
4067
4083
  }
4068
- .md\:w-64 {
4069
- width: calc(var(--spacing) * 64);
4084
+ .md\:w-40 {
4085
+ width: calc(var(--spacing) * 40);
4070
4086
  }
4071
4087
  .md\:w-225 {
4072
4088
  width: calc(var(--spacing) * 225);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "negodesign",
3
- "version": "0.0.52",
3
+ "version": "0.0.54",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "sideEffects": [