@nexxtmove/ui 0.0.6 → 0.0.8

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.
package/README.md CHANGED
@@ -5,12 +5,22 @@
5
5
 
6
6
  ## Installation
7
7
 
8
+ Install the package via pnpm:
9
+
8
10
  ```bash
9
11
  pnpm add @nexxtmove/ui
10
12
  ```
11
13
 
14
+ Install the tailwind theme in your css file where tailwind is imported:
15
+
16
+ ```css
17
+ @import '@nexxtmove/ui/theme';
18
+ ```
19
+
12
20
  ## Usage
13
21
 
22
+ Import the available components:
23
+
14
24
  ```typescript
15
25
  import { Button } from '@nexxtmove/ui'
16
26
  ```
package/dist/index.d.ts CHANGED
@@ -3,26 +3,18 @@ import { ComponentProvideOptions } from 'vue';
3
3
  import { DefineComponent } from 'vue';
4
4
  import { PublicProps } from 'vue';
5
5
 
6
- declare const __VLS_component: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLButtonElement>;
7
-
8
- declare const __VLS_component_2: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
9
- "update:modelValue": (value: string) => any;
10
- }, string, PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
11
- "onUpdate:modelValue"?: ((value: string) => any) | undefined;
12
- }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
13
-
14
- declare const __VLS_component_3: DefineComponent<__VLS_Props_2, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_2> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
6
+ declare const __VLS_component: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
7
+ variant: "primary" | "secondary";
8
+ buttonType: "button" | "submit" | "reset";
9
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLButtonElement>;
15
10
 
16
11
  declare type __VLS_Props = {
12
+ variant?: 'primary' | 'secondary';
13
+ icon?: string;
14
+ iconRight?: boolean;
17
15
  disabled?: boolean;
18
- };
19
-
20
- declare type __VLS_Props_2 = {
21
- value: string;
22
- };
23
-
24
- declare type __VLS_PublicProps = {
25
- modelValue?: string;
16
+ loading?: boolean;
17
+ buttonType?: 'button' | 'submit' | 'reset';
26
18
  };
27
19
 
28
20
  declare function __VLS_template(): {
@@ -34,52 +26,14 @@ declare function __VLS_template(): {
34
26
  rootEl: HTMLButtonElement;
35
27
  };
36
28
 
37
- declare function __VLS_template_2(): {
38
- attrs: Partial<{}>;
39
- slots: {
40
- default?(_: {}): any;
41
- };
42
- refs: {};
43
- rootEl: any;
44
- };
45
-
46
- declare function __VLS_template_3(): {
47
- attrs: Partial<{}>;
48
- slots: {
49
- default?(_: {}): any;
50
- };
51
- refs: {};
52
- rootEl: any;
53
- };
54
-
55
29
  declare type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
56
30
 
57
- declare type __VLS_TemplateResult_2 = ReturnType<typeof __VLS_template_2>;
58
-
59
- declare type __VLS_TemplateResult_3 = ReturnType<typeof __VLS_template_3>;
60
-
61
31
  declare type __VLS_WithTemplateSlots<T, S> = T & {
62
32
  new (): {
63
33
  $slots: S;
64
34
  };
65
35
  };
66
36
 
67
- declare type __VLS_WithTemplateSlots_2<T, S> = T & {
68
- new (): {
69
- $slots: S;
70
- };
71
- };
72
-
73
- declare type __VLS_WithTemplateSlots_3<T, S> = T & {
74
- new (): {
75
- $slots: S;
76
- };
77
- };
78
-
79
- export declare const Button: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
80
-
81
- export declare const Tab: __VLS_WithTemplateSlots_3<typeof __VLS_component_3, __VLS_TemplateResult_3["slots"]>;
82
-
83
- export declare const Tabs: __VLS_WithTemplateSlots_2<typeof __VLS_component_2, __VLS_TemplateResult_2["slots"]>;
37
+ export declare const NexxtButton: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
84
38
 
85
39
  export { }
package/dist/index.js CHANGED
@@ -1,62 +1,59 @@
1
- import { defineComponent as s, createElementBlock as i, openBlock as d, renderSlot as n, useModel as p, createBlock as r, unref as l, withCtx as o, createVNode as m } from "vue";
2
- import { TabsRoot as _, TabsList as b, TabsTrigger as f } from "reka-ui";
3
- const T = ["disabled"], B = /* @__PURE__ */ s({
1
+ import { defineComponent as r, createElementBlock as e, openBlock as a, normalizeClass as n, createCommentVNode as l, renderSlot as c, createVNode as d, Transition as u, withCtx as f, createElementVNode as y } from "vue";
2
+ const m = ["type", "disabled", "data-variant"], v = /* @__PURE__ */ r({
4
3
  __name: "Button",
5
4
  props: {
6
- disabled: { type: Boolean }
5
+ variant: { default: "primary" },
6
+ icon: {},
7
+ iconRight: { type: Boolean },
8
+ disabled: { type: Boolean },
9
+ loading: { type: Boolean },
10
+ buttonType: { default: "button" }
7
11
  },
8
12
  setup(t) {
9
- return (e, a) => (d(), i("button", {
13
+ const s = {
14
+ primary: "bg-cornflower-blue-500",
15
+ secondary: "bg-white"
16
+ };
17
+ return (o, i) => (a(), e("button", {
18
+ type: t.buttonType,
10
19
  disabled: t.disabled,
11
- class: "font-bold border px-3 py-2 disabled:opacity-50"
12
- }, [
13
- n(e.$slots, "default")
14
- ], 8, T));
15
- }
16
- }), x = /* @__PURE__ */ s({
17
- __name: "Tabs",
18
- props: {
19
- modelValue: {},
20
- modelModifiers: {}
21
- },
22
- emits: ["update:modelValue"],
23
- setup(t) {
24
- const e = p(t, "modelValue");
25
- return (a, u) => (d(), r(l(_), {
26
- modelValue: e.value,
27
- "onUpdate:modelValue": u[0] || (u[0] = (c) => e.value = c),
28
- class: "border inline-flex"
29
- }, {
30
- default: o(() => [
31
- m(l(b), null, {
32
- default: o(() => [
33
- n(a.$slots, "default")
34
- ]),
35
- _: 3
36
- })
20
+ class: n([
21
+ "button relative flex h-10 cursor-pointer items-center justify-center overflow-hidden rounded-lg transition-colors focus-visible:outline-3 disabled:cursor-not-allowed",
22
+ `button-${t.variant}`,
23
+ o.$slots.default ?? "w-10",
24
+ t.loading ? "pointer-events-none" : ""
37
25
  ]),
38
- _: 3
39
- }, 8, ["modelValue"]));
40
- }
41
- }), $ = /* @__PURE__ */ s({
42
- __name: "Tab",
43
- props: {
44
- value: {}
45
- },
46
- setup(t) {
47
- return (e, a) => (d(), r(l(f), {
48
- value: t.value,
49
- class: "px-4 py-2 data-[state=active]:font-bold"
50
- }, {
51
- default: o(() => [
52
- n(e.$slots, "default")
53
- ]),
54
- _: 3
55
- }, 8, ["value"]));
26
+ "data-variant": t.variant
27
+ }, [
28
+ t.icon ? (a(), e("i", {
29
+ key: 0,
30
+ class: n([`fa-light fa-${t.icon} text-sm`, { "order-last": t.iconRight }])
31
+ }, null, 2)) : l("", !0),
32
+ c(o.$slots, "default"),
33
+ d(u, {
34
+ "enter-active-class": "transition-opacity duration-200",
35
+ "enter-from-class": "opacity-0",
36
+ "enter-to-class": "opacity-100",
37
+ "leave-active-class": "transition-opacity duration-200",
38
+ "leave-from-class": "opacity-100",
39
+ "leave-to-class": "opacity-0"
40
+ }, {
41
+ default: f(() => [
42
+ t.loading ? (a(), e("div", {
43
+ key: 0,
44
+ class: n([
45
+ "absolute inset-0 flex items-center justify-center rounded-lg",
46
+ s[t.variant]
47
+ ])
48
+ }, [...i[0] || (i[0] = [
49
+ y("i", { class: "fa-light fa-spinner-third fa-spin absolute text-sm" }, null, -1)
50
+ ])], 2)) : l("", !0)
51
+ ]),
52
+ _: 1
53
+ })
54
+ ], 10, m));
56
55
  }
57
56
  });
58
57
  export {
59
- B as Button,
60
- $ as Tab,
61
- x as Tabs
58
+ v as NexxtButton
62
59
  };
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ @theme {
6
+ --color-gray-50: oklch(98.24% 0.00132 286.24288);
7
+ --color-gray-100: oklch(95.747% 0.00455 258.34462);
8
+ --color-gray-200: oklch(92.21% 0.00838 271.29885);
9
+ --color-gray-300: oklch(87.95% 0.01275 271.25806);
10
+ --color-gray-400: oklch(84.464% 0.01621 266.25174);
11
+ --color-gray-500: oklch(80.426% 0.02079 267.24355);
12
+ --color-gray-600: oklch(67.21% 0.03637 265.11077);
13
+ --color-gray-700: oklch(53.404% 0.03181 265.23935);
14
+ --color-gray-800: oklch(40.54% 0.02484 266.95326);
15
+ --color-gray-900: oklch(26.805% 0.01602 264.26805);
16
+ --color-gray-950: oklch(25.196% 0 0);
17
+ --color-cornflower-blue-50: oklch(96.536% 0.01636 274.83927);
18
+ --color-cornflower-blue-100: oklch(94.118% 0.02646 271.86227);
19
+ --color-cornflower-blue-200: oklch(87.996% 0.05687 272.05584);
20
+ --color-cornflower-blue-300: oklch(81.316% 0.08991 269.01224);
21
+ --color-cornflower-blue-400: oklch(75.257% 0.12293 266.58619);
22
+ --color-cornflower-blue-500: oklch(69.338% 0.15541 263.06293);
23
+ --color-cornflower-blue-600: oklch(58.312% 0.19293 256.79281);
24
+ --color-cornflower-blue-700: oklch(46.825% 0.15585 256.79569);
25
+ --color-cornflower-blue-800: oklch(36.487% 0.1207 256.81112);
26
+ --color-cornflower-blue-900: oklch(25.307% 0.08309 256.37016);
27
+ --color-cornflower-blue-950: oklch(19.077% 0.06238 256.49176);
28
+ --color-orange-50: oklch(98.316% 0.01004 58.1943);
29
+ --color-orange-100: oklch(95.83% 0.02453 61.64863);
30
+ --color-orange-200: oklch(91.597% 0.05214 60.53451);
31
+ --color-orange-300: oklch(87.499% 0.08346 64.61399);
32
+ --color-orange-400: oklch(83.363% 0.12266 68.19078);
33
+ --color-orange-500: oklch(79.281% 0.15836 72.99197);
34
+ --color-orange-600: oklch(66.173% 0.13211 72.98878);
35
+ --color-orange-700: oklch(53.162% 0.10595 72.83405);
36
+ --color-orange-800: oklch(39.987% 0.07979 73.71136);
37
+ --color-orange-900: oklch(27.077% 0.05371 74.01504);
38
+ --color-orange-950: oklch(20.934% 0.04194 75.8975);
39
+ --color-purple-50: oklch(95.816% 0.01741 282.54309);
40
+ --color-purple-100: oklch(92.308% 0.03244 285.74158);
41
+ --color-purple-200: oklch(84.797% 0.06663 283.94657);
42
+ --color-purple-300: oklch(77.355% 0.10231 283.12348);
43
+ --color-purple-400: oklch(69.843% 0.13781 281.29444);
44
+ --color-purple-500: oklch(62.3% 0.17493 279.30671);
45
+ --color-purple-600: oklch(53.444% 0.21546 275.41159);
46
+ --color-purple-700: oklch(44.536% 0.2433 269.64676);
47
+ --color-purple-800: oklch(34.577% 0.18914 269.71525);
48
+ --color-purple-900: oklch(24.685% 0.13376 269.75156);
49
+ --color-purple-950: oklch(18.635% 0.10173 270.07322);
50
+ --color-rose-50: oklch(96.729% 0.01211 4.73614);
51
+ --color-rose-100: oklch(93.385% 0.02355 4.50505);
52
+ --color-rose-200: oklch(87.642% 0.04742 4.93624);
53
+ --color-rose-300: oklch(81.093% 0.0766 5.4687);
54
+ --color-rose-400: oklch(74.664% 0.11242 5.93778);
55
+ --color-rose-500: oklch(68.785% 0.14863 6.29634);
56
+ --color-rose-600: oklch(58.329% 0.1746 6.66344);
57
+ --color-rose-700: oklch(47.542% 0.14222 6.61781);
58
+ --color-rose-800: oklch(36.789% 0.11001 7.05913);
59
+ --color-rose-900: oklch(25.201% 0.07544 6.68322);
60
+ --color-rose-950: oklch(19.54% 0.05775 5.9041);
61
+ --color-green-50: oklch(95.734% 0.01769 170.07455);
62
+ --color-green-100: oklch(91.466% 0.03604 167.58327);
63
+ --color-green-200: oklch(86.986% 0.053 168.74943);
64
+ --color-green-300: oklch(78.735% 0.08754 166.13996);
65
+ --color-green-400: oklch(63.387% 0.13849 159.11903);
66
+ --color-green-500: oklch(60.09% 0.14417 156.34218);
67
+ --color-green-600: oklch(51.022% 0.12085 157.02054);
68
+ --color-green-700: oklch(41.842% 0.09759 157.66873);
69
+ --color-green-800: oklch(31.762% 0.07267 158.70663);
70
+ --color-green-900: oklch(21.212% 0.04527 161.53303);
71
+ --color-green-950: oklch(14.973% 0.02983 169.43227);
72
+ --color-sapphire-50: oklch(94.884% 0.02307 277.94748);
73
+ --color-sapphire-100: oklch(89.754% 0.04705 277.49808);
74
+ --color-sapphire-200: oklch(78.825% 0.10102 275.14);
75
+ --color-sapphire-300: oklch(68.849% 0.1531 270.76719);
76
+ --color-sapphire-400: oklch(58.694% 0.20892 264.47087);
77
+ --color-sapphire-500: oklch(48.116% 0.18876 262.33696);
78
+ --color-sapphire-600: oklch(41.263% 0.16196 262.38572);
79
+ --color-sapphire-700: oklch(34.421% 0.1341 262.23002);
80
+ --color-sapphire-800: oklch(27.335% 0.10606 262.32753);
81
+ --color-sapphire-900: oklch(21.234% 0.08278 262.12635);
82
+ --color-sapphire-950: oklch(16.853% 0.06579 263.13855);
83
+ --color-yale-blue-50: oklch(93.964% 0.01997 267.27369);
84
+ --color-yale-blue-100: oklch(87.194% 0.0443 265.57253);
85
+ --color-yale-blue-200: oklch(74.237% 0.09334 261.73968);
86
+ --color-yale-blue-300: oklch(61.358% 0.12298 257.18417);
87
+ --color-yale-blue-400: oklch(48.33% 0.09776 257.3129);
88
+ --color-yale-blue-500: oklch(35.837% 0.07218 257.33085);
89
+ --color-yale-blue-600: oklch(31.159% 0.06273 257.1512);
90
+ --color-yale-blue-700: oklch(26.764% 0.0544 257.61172);
91
+ --color-yale-blue-800: oklch(22.463% 0.0444 256.10773);
92
+ --color-yale-blue-900: oklch(17.689% 0.03482 257.71215);
93
+ --color-yale-blue-950: oklch(14.945% 0.03121 258.39122);
94
+ --color-white: oklch(100% 0 0);
95
+ --color-button-color-bg-primary-default: var(--color-cornflower-blue-500);
96
+ --color-button-color-bg-primary-hover: var(--color-cornflower-blue-400);
97
+ --color-button-color-bg-primary-focussed: var(--color-cornflower-blue-500);
98
+ --color-button-color-bg-primary-selected: var(--color-cornflower-blue-700);
99
+ --color-button-color-bg-primary-disabled: var(--color-gray-200);
100
+ --color-button-color-bg-secondary-default: var(--color-white);
101
+ --color-button-color-bg-secondary-hover: var(--color-white);
102
+ --color-button-color-bg-secondary-focussed: var(--color-white);
103
+ --color-button-color-bg-secondary-selected: var(--color-cornflower-blue-50);
104
+ --color-button-color-bg-secondary-disabled: var(--color-white);
105
+ --color-button-color-text-primary-default: var(--color-white);
106
+ --color-button-color-text-primary-disabled: var(--color-gray-600);
107
+ --color-button-color-text-secondary-default: var(--color-gray-950);
108
+ --color-button-color-text-secondary-disabled: var(--color-gray-400);
109
+ --color-button-color-border-primary-focussed: var(--color-cornflower-blue-100);
110
+ --color-button-color-border-secondary-focussed: var(--color-cornflower-blue-100);
111
+ --color-button-color-border-secondary-hover: var(--color-cornflower-blue-700);
112
+ --color-button-color-border-secondary-selected: var(--color-cornflower-blue-500);
113
+ --color-button-color-border-secondary-disabled: var(--color-gray-400);
114
+ --color-button-color-border-secondary-default: var(--color-gray-950);
115
+ --text-xs: 0.75rem;
116
+ --text-base: 1rem;
117
+ --text-lg: 1.125rem;
118
+ --text-xl: 1.25rem;
119
+ --text-sm: 0.875rem;
120
+ --text-2xl: 1.5rem;
121
+ --text-3xl: 1.875rem;
122
+ --text-4xl: 2.25rem;
123
+ --text-5xl: 3rem;
124
+ --text-6xl: 3.75rem;
125
+ --text-7xl: 4.5rem;
126
+ --text-8xl: 6rem;
127
+ --text-9xl: 8rem;
128
+ --spacing-0: 0rem;
129
+ --spacing-1: 0.25rem;
130
+ --spacing-2: 0.5rem;
131
+ --spacing-3: 0.75rem;
132
+ --spacing-4: 1rem;
133
+ --spacing-5: 1.25rem;
134
+ --spacing-6: 1.5rem;
135
+ --spacing-7: 1.75rem;
136
+ --spacing-8: 2rem;
137
+ --spacing-9: 2.25rem;
138
+ --spacing-10: 2.5rem;
139
+ --spacing-11: 2.75rem;
140
+ --spacing-12: 3rem;
141
+ --spacing-14: 3.5rem;
142
+ --spacing-16: 4rem;
143
+ --spacing-20: 5rem;
144
+ --spacing-24: 6rem;
145
+ --spacing-28: 7rem;
146
+ --spacing-32: 8rem;
147
+ --spacing-36: 9rem;
148
+ --spacing-40: 10rem;
149
+ --spacing-44: 11rem;
150
+ --spacing-48: 12rem;
151
+ --spacing-52: 13rem;
152
+ --spacing-56: 14rem;
153
+ --spacing-60: 15rem;
154
+ --spacing-64: 16rem;
155
+ --spacing-72: 18rem;
156
+ --spacing-80: 20rem;
157
+ --spacing-96: 24rem;
158
+ --spacing-px: 1px;
159
+ --spacing-0\.5: 0.125rem;
160
+ --spacing-1\.5: 0.375rem;
161
+ --spacing-2\.5: 0.625rem;
162
+ --spacing-3\.5: 0.875rem;
163
+ --radius-xs: 0.125rem;
164
+ --radius-sm: 0.25rem;
165
+ --radius-md: 0.375rem;
166
+ --radius-lg: 0.5rem;
167
+ --radius-xl: 0.75rem;
168
+ --radius-2-xl: 1rem;
169
+ --radius-3-xl: 1.5rem;
170
+ --radius-4-xl: 2rem;
171
+ --radius-none: 0rem;
172
+ --button-padding-x: var(--spacing-4);
173
+ --button-padding-y: var(--spacing-2);
174
+ --button-gap: var(--spacing-1);
175
+ --button-border-radius: var(--radius-lg);
176
+ --font-sans: 'Poppins', ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
177
+ --font-serif: 'Playfair Display', ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
178
+ --font-mono: 'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
179
+ --shadow-xs: 0px 0px 24px 0px oklch(26.805% 0.01602 264.26805 / 5%);
180
+ --shadow-sm: 0px 0px 32px 5px oklch(26.805% 0.01602 264.26805 / 10%);
181
+ --shadow-md: 0px 0px 48px 10px oklch(26.805% 0.01602 264.26805 / 12%);
182
+ --shadow-lg: 0px 0px 80px 15px oklch(26.805% 0.01602 264.26805 / 16%);
183
+ --shadow-xl: 0px 4px 112px 20px oklch(26.805% 0.01602 264.26805 / 18%);
184
+ }
package/package.json CHANGED
@@ -1,37 +1,73 @@
1
1
  {
2
2
  "name": "@nexxtmove/ui",
3
3
  "type": "module",
4
- "version": "0.0.6",
5
- "exports": "./dist/index.js",
4
+ "version": "0.0.8",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./dist/index.d.ts",
8
+ "import": "./dist/index.js"
9
+ },
10
+ "./theme": "./dist/nexxtmove.tailwind.theme.css"
11
+ },
6
12
  "files": [
7
13
  "dist"
8
14
  ],
9
15
  "dependencies": {
10
- "reka-ui": "^2.6.1"
16
+ "reka-ui": "^2.7.0"
11
17
  },
12
18
  "peerDependencies": {
13
19
  "tailwindcss": "^4.0.0",
14
20
  "vue": "^3.0.0"
15
21
  },
16
22
  "devDependencies": {
23
+ "@eslint/js": "^9.39.2",
24
+ "@storybook/addon-a11y": "^10.1.11",
17
25
  "@storybook/addon-docs": "^10.1.11",
18
- "@storybook/vue3-vite": "^10.1.6",
19
- "@tailwindcss/vite": "^4.1.17",
20
- "@vitejs/plugin-vue": "^6.0.2",
26
+ "@storybook/addon-vitest": "^10.1.11",
27
+ "@storybook/builder-vite": "^10.1.11",
28
+ "@storybook/vue3-vite": "^10.1.11",
29
+ "@tailwindcss/vite": "^4.1.18",
30
+ "@types/node": "^25.0.3",
31
+ "@types/react": "^19.2.8",
32
+ "@types/react-dom": "^19.2.3",
33
+ "@vitejs/plugin-vue": "^6.0.3",
34
+ "@vitest/coverage-v8": "^4.0.16",
35
+ "@vue/eslint-config-typescript": "^14.6.0",
21
36
  "@vue/test-utils": "^2.4.6",
22
37
  "@vue/tsconfig": "^0.8.1",
23
- "jsdom": "^27.3.0",
38
+ "consola": "^3.4.2",
39
+ "eslint": "^9.39.2",
40
+ "eslint-config-prettier": "^10.1.8",
41
+ "eslint-plugin-prettier": "^5.5.5",
42
+ "eslint-plugin-vue": "^10.6.2",
43
+ "globals": "^17.0.0",
44
+ "jsdom": "^27.4.0",
24
45
  "prettier": "^3.7.4",
25
- "storybook": "^10.1.6",
26
- "vite": "^7.2.7",
46
+ "prettier-plugin-tailwindcss": "^0.7.2",
47
+ "react": "^19.2.3",
48
+ "react-dom": "^19.2.3",
49
+ "remark-frontmatter": "^5.0.0",
50
+ "storybook": "^10.1.11",
51
+ "style-dictionary": "^5.1.1",
52
+ "typescript-eslint": "^8.52.0",
53
+ "vite": "^7.3.0",
27
54
  "vite-plugin-dts": "^4.5.4",
28
- "vitest": "^4.0.15"
55
+ "vitest": "^4.0.16"
56
+ },
57
+ "engines": {
58
+ "node": ">=22.18.0"
29
59
  },
30
60
  "scripts": {
31
- "test": "vitest",
32
- "build": "vite build",
61
+ "test": "vitest run",
62
+ "test:dev": "vitest run --reporter=json --reporter=default",
63
+ "build": "vite build && pnpm sd",
33
64
  "format": "prettier --write .",
34
- "storybook": "storybook dev",
35
- "storybook:build": "storybook build"
65
+ "generate:index": "node --experimental-strip-types ./scripts/generate-index.ts",
66
+ "lint": "eslint .",
67
+ "lint:fix": "eslint . --fix",
68
+ "storybook": "storybook dev -p 6006",
69
+ "storybook:build": "storybook build",
70
+ "sd:dev": "NODE_ENV=development node --watch --experimental-strip-types ./tokens/build-tokens.ts",
71
+ "sd": "node ./tokens/build-tokens.ts"
36
72
  }
37
73
  }