@nexxtmove/ui 0.1.3 → 0.1.5

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/dist/index.d.ts CHANGED
@@ -8,7 +8,11 @@ declare const __VLS_component: DefineComponent<NexxtButtonProps, {}, {}, {}, {},
8
8
 
9
9
  declare const __VLS_component_2: DefineComponent<NexxtHeaderProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<NexxtHeaderProps> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
10
10
 
11
- declare const __VLS_component_3: DefineComponent<NexxtStepperHeaderProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<NexxtStepperHeaderProps> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
11
+ declare const __VLS_component_3: DefineComponent<NexxtStepperHeaderProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
12
+ "update:currentStep": (...args: any[]) => void;
13
+ }, string, PublicProps, Readonly<NexxtStepperHeaderProps> & Readonly<{
14
+ "onUpdate:currentStep"?: ((...args: any[]) => any) | undefined;
15
+ }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
12
16
 
13
17
  declare type __VLS_Props = {
14
18
  value: number;
@@ -100,7 +104,11 @@ declare interface NexxtIconProps {
100
104
  type?: IconType;
101
105
  }
102
106
 
103
- export declare const NexxtProgressBar: DefineComponent<NexxtProgressBarProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<NexxtProgressBarProps> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
107
+ export declare const NexxtProgressBar: DefineComponent<NexxtProgressBarProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
108
+ "update:currentStep": (...args: any[]) => void;
109
+ }, string, PublicProps, Readonly<NexxtProgressBarProps> & Readonly<{
110
+ "onUpdate:currentStep"?: ((...args: any[]) => any) | undefined;
111
+ }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
104
112
 
105
113
  declare interface NexxtProgressBarProps {
106
114
  steps: number;
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { defineComponent as v, ref as T, computed as u, watch as N, createBlock as g, openBlock as a, TransitionGroup as S, withCtx as d, createElementBlock as s, Fragment as p, renderList as B, createVNode as f, Transition as w, toDisplayString as m, normalizeClass as n, createCommentVNode as o, renderSlot as y, createElementVNode as r, createTextVNode as j, watchEffect as A, normalizeStyle as C, createSlots as H } from "vue";
2
- const P = /* @__PURE__ */ v({
1
+ import { defineComponent as y, ref as N, computed as v, watch as j, createBlock as $, openBlock as a, TransitionGroup as C, withCtx as f, createElementBlock as s, Fragment as B, renderList as S, createVNode as m, Transition as T, toDisplayString as b, normalizeClass as r, createCommentVNode as u, renderSlot as p, createElementVNode as o, createTextVNode as A, watchEffect as H, normalizeStyle as M, withKeys as k, withModifiers as P, createSlots as V } from "vue";
2
+ const E = /* @__PURE__ */ y({
3
3
  __name: "AnimatedNumber",
4
4
  props: {
5
5
  value: {},
@@ -7,13 +7,13 @@ const P = /* @__PURE__ */ v({
7
7
  easing: { default: "ease-out" }
8
8
  },
9
9
  setup(e) {
10
- const t = T("up"), l = u(() => String(e.value).split("")), i = u(() => `duration-${e.duration}`);
11
- return N(
10
+ const t = N("up"), n = v(() => String(e.value).split("")), i = v(() => `duration-${e.duration}`);
11
+ return j(
12
12
  () => e.value,
13
- (c, x) => {
14
- t.value = c > x ? "up" : "down";
13
+ (c, d) => {
14
+ t.value = c > d ? "up" : "down";
15
15
  }
16
- ), (c, x) => (a(), g(S, {
16
+ ), (c, d) => (a(), $(C, {
17
17
  tag: "div",
18
18
  class: "relative flex shrink-0 items-center tabular-nums",
19
19
  "aria-label": e.value,
@@ -23,23 +23,23 @@ const P = /* @__PURE__ */ v({
23
23
  "leave-to-class": t.value === "up" ? "-translate-y-full opacity-0" : "translate-y-full opacity-0",
24
24
  "move-class": "transition-all duration-500 ease-in-out"
25
25
  }, {
26
- default: d(() => [
27
- (a(!0), s(p, null, B(l.value, (b, h) => (a(), s("div", {
26
+ default: f(() => [
27
+ (a(!0), s(B, null, S(n.value, (g, h) => (a(), s("div", {
28
28
  key: h,
29
29
  class: "relative inline-flex h-[1.5em] w-[1ch] items-center justify-center overflow-hidden",
30
30
  "aria-hidden": "true"
31
31
  }, [
32
- f(w, {
32
+ m(T, {
33
33
  "enter-active-class": `transition-transform ${i.value} ${e.easing}`,
34
34
  "leave-active-class": `absolute inset-0 transition-transform ${i.value} ${e.easing}`,
35
35
  "enter-from-class": t.value === "up" ? "translate-y-full" : "-translate-y-full",
36
36
  "leave-to-class": t.value === "up" ? "-translate-y-full" : "translate-y-full"
37
37
  }, {
38
- default: d(() => [
38
+ default: f(() => [
39
39
  (a(), s("span", {
40
- key: b,
40
+ key: g,
41
41
  class: "flex h-full w-full items-center justify-center"
42
- }, m(b), 1))
42
+ }, b(g), 1))
43
43
  ]),
44
44
  _: 2
45
45
  }, 1032, ["enter-active-class", "leave-active-class", "enter-from-class", "leave-to-class"])
@@ -48,7 +48,7 @@ const P = /* @__PURE__ */ v({
48
48
  _: 1
49
49
  }, 8, ["aria-label", "enter-active-class", "leave-active-class", "enter-from-class", "leave-to-class"]));
50
50
  }
51
- }), k = /* @__PURE__ */ v({
51
+ }), w = /* @__PURE__ */ y({
52
52
  name: "NexxtIcon",
53
53
  __name: "Icon",
54
54
  props: {
@@ -56,14 +56,14 @@ const P = /* @__PURE__ */ v({
56
56
  type: { default: "light" }
57
57
  },
58
58
  setup(e) {
59
- return (t, l) => (a(), s("i", {
60
- class: n([`fa-${e.type}`, `fa-${e.name}`, "items-center", "justify-center"])
59
+ return (t, n) => (a(), s("i", {
60
+ class: r([`fa-${e.type}`, `fa-${e.name}`, "items-center", "justify-center"])
61
61
  }, null, 2));
62
62
  }
63
- }), V = ["type", "disabled", "data-variant"], M = {
63
+ }), I = ["type", "disabled", "data-variant"], K = {
64
64
  key: 0,
65
- class: /* @__PURE__ */ n(["absolute inset-0 flex items-center justify-center rounded-lg"])
66
- }, E = /* @__PURE__ */ v({
65
+ class: /* @__PURE__ */ r(["absolute inset-0 flex items-center justify-center rounded-lg"])
66
+ }, L = /* @__PURE__ */ y({
67
67
  name: "NexxtButton",
68
68
  __name: "Button",
69
69
  props: {
@@ -75,10 +75,10 @@ const P = /* @__PURE__ */ v({
75
75
  buttonType: { default: "button" }
76
76
  },
77
77
  setup(e) {
78
- return (t, l) => (a(), s("button", {
78
+ return (t, n) => (a(), s("button", {
79
79
  type: e.buttonType,
80
80
  disabled: e.disabled,
81
- class: n([
81
+ class: r([
82
82
  "button relative flex h-10 cursor-pointer items-center justify-center overflow-hidden rounded-lg transition-colors duration-200 focus-visible:outline-3 disabled:cursor-not-allowed",
83
83
  `button-${e.variant}`,
84
84
  t.$slots.default ?? "w-10",
@@ -87,23 +87,23 @@ const P = /* @__PURE__ */ v({
87
87
  ]),
88
88
  "data-variant": e.variant
89
89
  }, [
90
- e.icon ? (a(), g(k, {
90
+ e.icon ? (a(), $(w, {
91
91
  key: 0,
92
92
  name: e.icon,
93
- class: n(["transition-all duration-200", { "order-last": e.iconRight, "opacity-0": e.loading }])
94
- }, null, 8, ["name", "class"])) : o("", !0),
93
+ class: r(["transition-all duration-200", { "order-last": e.iconRight, "opacity-0": e.loading }])
94
+ }, null, 8, ["name", "class"])) : u("", !0),
95
95
  t.$slots.default ? (a(), s("span", {
96
96
  key: 1,
97
- class: n([
97
+ class: r([
98
98
  "inline-block transition-all duration-200",
99
99
  { "opacity-0": e.loading },
100
- e.variant === "link" ? "underline underline-offset-1" : "",
100
+ e.variant === "link" ? "body-link underline-offset-1" : "body-normal",
101
101
  e.variant === "link" && !e.loading && !e.disabled ? "hover:underline-offset-2" : ""
102
102
  ])
103
103
  }, [
104
- y(t.$slots, "default")
105
- ], 2)) : o("", !0),
106
- f(w, {
104
+ p(t.$slots, "default")
105
+ ], 2)) : u("", !0),
106
+ m(T, {
107
107
  "enter-active-class": "transition-opacity duration-200",
108
108
  "enter-from-class": "opacity-0",
109
109
  "enter-to-class": "opacity-100",
@@ -111,23 +111,23 @@ const P = /* @__PURE__ */ v({
111
111
  "leave-from-class": "opacity-100",
112
112
  "leave-to-class": "opacity-0"
113
113
  }, {
114
- default: d(() => [
115
- e.loading ? (a(), s("div", M, [
116
- f(k, {
114
+ default: f(() => [
115
+ e.loading ? (a(), s("div", K, [
116
+ m(w, {
117
117
  name: "spinner-third",
118
118
  type: "light",
119
119
  class: "fa-spin absolute text-sm"
120
120
  })
121
- ])) : o("", !0)
121
+ ])) : u("", !0)
122
122
  ]),
123
123
  _: 1
124
124
  })
125
- ], 10, V));
125
+ ], 10, I));
126
126
  }
127
- }), I = { class: "flex max-w-full items-center justify-start gap-4" }, L = { class: "block truncate text-lg font-semibold text-sapphire-500" }, z = {
127
+ }), z = { class: "flex max-w-full items-center justify-start gap-4" }, D = { class: "block truncate heading-4 text-sapphire-500" }, F = {
128
128
  key: 0,
129
129
  class: "col-span-1 col-start-2 flex justify-center"
130
- }, D = /* @__PURE__ */ v({
130
+ }, G = /* @__PURE__ */ y({
131
131
  name: "NexxtHeader",
132
132
  __name: "Header",
133
133
  props: {
@@ -138,42 +138,42 @@ const P = /* @__PURE__ */ v({
138
138
  } }
139
139
  },
140
140
  setup(e) {
141
- return (t, l) => (a(), s("div", {
142
- class: n(["header flex items-center", t.$slots.center ? "grid grid-cols-3" : ""])
141
+ return (t, n) => (a(), s("div", {
142
+ class: r(["header flex items-center", t.$slots.center ? "grid grid-cols-3" : ""])
143
143
  }, [
144
- r("div", I, [
145
- f(E, {
144
+ o("div", z, [
145
+ m(L, {
146
146
  class: "shrink-0",
147
147
  variant: "secondary",
148
148
  onClick: e.backButtonAction
149
149
  }, {
150
- default: d(() => [
151
- j(m(e.backButtonText), 1)
150
+ default: f(() => [
151
+ A(b(e.backButtonText), 1)
152
152
  ]),
153
153
  _: 1
154
154
  }, 8, ["onClick"]),
155
- r("span", L, m(e.title), 1)
155
+ o("span", D, b(e.title), 1)
156
156
  ]),
157
- t.$slots.center ? (a(), s("div", z, [
158
- y(t.$slots, "center")
159
- ])) : o("", !0),
157
+ t.$slots.center ? (a(), s("div", F, [
158
+ p(t.$slots, "center")
159
+ ])) : u("", !0),
160
160
  t.$slots.right ? (a(), s("div", {
161
161
  key: 1,
162
- class: n(t.$slots.center ? "col-span-1 col-start-3 flex justify-end" : "ml-auto")
162
+ class: r(t.$slots.center ? "col-span-1 col-start-3 flex justify-end" : "ml-auto")
163
163
  }, [
164
- y(t.$slots, "right")
165
- ], 2)) : o("", !0)
164
+ p(t.$slots, "right")
165
+ ], 2)) : u("", !0)
166
166
  ], 2));
167
167
  }
168
- }), F = { class: "@container" }, R = { class: "flex flex-col @md:gap-2" }, q = { class: "flex items-center justify-between gap-2" }, G = ["aria-label", "aria-valuenow", "aria-valuetext"], J = {
168
+ }), R = { class: "@container" }, q = { class: "flex flex-col @md:gap-2" }, U = { class: "flex items-center justify-between gap-2" }, J = ["aria-label", "aria-valuenow", "aria-valuetext"], O = {
169
169
  key: 0,
170
- class: "flex items-center text-sm tabular-nums @md:hidden",
170
+ class: "flex items-center small-normal tabular-nums @md:hidden",
171
171
  "aria-hidden": "true"
172
- }, K = {
172
+ }, Q = {
173
173
  key: 0,
174
174
  class: "flex justify-between @max-md:order-first @max-md:justify-center",
175
175
  "aria-label": "Progress steps"
176
- }, O = ["aria-current"], Q = /* @__PURE__ */ v({
176
+ }, W = ["aria-current", "role", "tabindex", "aria-label", "onClick", "onKeydown"], X = /* @__PURE__ */ y({
177
177
  name: "NexxtProgressBar",
178
178
  __name: "ProgressBar",
179
179
  props: {
@@ -182,46 +182,58 @@ const P = /* @__PURE__ */ v({
182
182
  progressLabel: { default: "Voortgang" },
183
183
  stepTitles: {}
184
184
  },
185
+ emits: ["update:currentStep"],
185
186
  setup(e) {
186
- const t = u(() => Math.min(Math.max(0, e.currentStep), Math.max(0, e.steps - 1))), l = u(() => e.steps > 0 ? t.value + 1 : 0), i = u(() => e.steps <= 1 ? e.steps === 1 ? 100 : 0 : t.value / (e.steps - 1) * 100), c = u(() => !!e.stepTitles?.length);
187
- return A(() => {
187
+ const t = v(() => Math.min(Math.max(0, e.currentStep), Math.max(0, e.steps - 1))), n = v(() => e.steps > 0 ? t.value + 1 : 0), i = v(() => e.steps <= 1 ? e.steps === 1 ? 100 : 0 : t.value / (e.steps - 1) * 100), c = v(() => !!e.stepTitles?.length);
188
+ return H(() => {
188
189
  e.stepTitles && e.stepTitles.length !== e.steps && console.warn(
189
190
  `[NexxtProgressBar] The "stepTitles" array length (${e.stepTitles.length}) must match the "steps" prop (${e.steps}).`
190
191
  );
191
- }), (x, b) => (a(), s("div", F, [
192
- r("div", R, [
193
- r("div", q, [
194
- r("div", {
192
+ }), (d, g) => (a(), s("div", R, [
193
+ o("div", q, [
194
+ o("div", U, [
195
+ o("div", {
195
196
  class: "progress-bar progress-bar-bar h-2 w-full overflow-hidden rounded-full",
196
197
  role: "progressbar",
197
198
  "aria-label": e.progressLabel,
198
199
  "aria-valuemin": "0",
199
200
  "aria-valuemax": "100",
200
201
  "aria-valuenow": Math.round(i.value),
201
- "aria-valuetext": c.value && e.stepTitles?.[t.value] ? `Step ${l.value} of ${e.steps}: ${e.stepTitles[t.value]}` : `Step ${l.value} of ${e.steps}`
202
+ "aria-valuetext": c.value && e.stepTitles?.[t.value] ? `Step ${n.value} of ${e.steps}: ${e.stepTitles[t.value]}` : `Step ${n.value} of ${e.steps}`
202
203
  }, [
203
- r("div", {
204
+ o("div", {
204
205
  class: "progress-bar-progress h-full transition-all duration-500 ease-out",
205
- style: C({ width: `${i.value}%` }),
206
+ style: M({ width: `${i.value}%` }),
206
207
  "aria-hidden": !0
207
208
  }, null, 4)
208
- ], 8, G),
209
- c.value ? (a(), s("div", J, [
210
- f(P, { value: l.value }, null, 8, ["value"]),
211
- r("span", null, "/" + m(e.steps), 1)
212
- ])) : o("", !0)
209
+ ], 8, J),
210
+ c.value ? (a(), s("div", O, [
211
+ m(E, { value: n.value }, null, 8, ["value"]),
212
+ o("span", null, "/" + b(e.steps), 1)
213
+ ])) : u("", !0)
213
214
  ]),
214
- c.value ? (a(), s("ol", K, [
215
- (a(!0), s(p, null, B(e.stepTitles, (h, $) => (a(), s("li", {
215
+ c.value ? (a(), s("ol", Q, [
216
+ (a(!0), s(B, null, S(e.stepTitles, (h, l) => (a(), s("li", {
216
217
  key: h,
217
- class: n(["transition-colors duration-500 @max-md:hidden @min-md:text-sm", $ === t.value ? "font-medium text-sapphire-500 @max-md:inline" : ""]),
218
- "aria-current": $ === t.value ? "step" : void 0
219
- }, m(h), 11, O))), 128))
220
- ])) : o("", !0)
218
+ class: r(["rounded-xs transition-colors duration-500 focus-visible:outline-3 @max-md:hidden @max-md:body-normal @min-md:small-normal", [
219
+ l === t.value ? "text-sapphire-500 @max-md:inline" : "",
220
+ l < t.value ? "cursor-pointer duration-200! hover:text-sapphire-400" : ""
221
+ ]]),
222
+ "aria-current": l === t.value ? "step" : void 0,
223
+ role: l < t.value ? "button" : void 0,
224
+ tabindex: l < t.value ? 0 : void 0,
225
+ "aria-label": l < t.value ? `Ga naar ${h}` : void 0,
226
+ onClick: (x) => l < t.value && d.$emit("update:currentStep", l),
227
+ onKeydown: [
228
+ k((x) => l < t.value && d.$emit("update:currentStep", l), ["enter"]),
229
+ k(P((x) => l < t.value && d.$emit("update:currentStep", l), ["prevent"]), ["space"])
230
+ ]
231
+ }, b(h), 43, W))), 128))
232
+ ])) : u("", !0)
221
233
  ])
222
234
  ]));
223
235
  }
224
- }), W = /* @__PURE__ */ v({
236
+ }), Z = /* @__PURE__ */ y({
225
237
  name: "NexxtStepperHeader",
226
238
  __name: "StepperHeader",
227
239
  props: {
@@ -231,28 +243,30 @@ const P = /* @__PURE__ */ v({
231
243
  backButtonText: {},
232
244
  backButtonAction: {}
233
245
  },
246
+ emits: ["update:currentStep"],
234
247
  setup(e) {
235
- return (t, l) => (a(), g(D, {
248
+ return (t, n) => (a(), $(G, {
236
249
  title: e.title,
237
250
  "back-button-action": e.backButtonAction,
238
251
  "back-button-text": e.backButtonText
239
- }, H({ _: 2 }, [
252
+ }, V({ _: 2 }, [
240
253
  e.steps ? {
241
254
  name: "center",
242
- fn: d(() => [
243
- f(Q, {
255
+ fn: f(() => [
256
+ m(X, {
244
257
  class: "w-full",
245
258
  steps: e.steps.length,
246
259
  "step-titles": e.steps,
247
- "current-step": e.currentStep
260
+ "current-step": e.currentStep,
261
+ "onUpdate:currentStep": n[0] || (n[0] = (i) => t.$emit("update:currentStep", i))
248
262
  }, null, 8, ["steps", "step-titles", "current-step"])
249
263
  ]),
250
264
  key: "0"
251
265
  } : void 0,
252
266
  t.$slots.default ? {
253
267
  name: "right",
254
- fn: d(() => [
255
- y(t.$slots, "default")
268
+ fn: f(() => [
269
+ p(t.$slots, "default")
256
270
  ]),
257
271
  key: "1"
258
272
  } : void 0
@@ -260,10 +274,10 @@ const P = /* @__PURE__ */ v({
260
274
  }
261
275
  });
262
276
  export {
263
- P as NexxtAnimatedNumber,
264
- E as NexxtButton,
265
- D as NexxtHeader,
266
- k as NexxtIcon,
267
- Q as NexxtProgressBar,
268
- W as NexxtStepperHeader
277
+ E as NexxtAnimatedNumber,
278
+ L as NexxtButton,
279
+ G as NexxtHeader,
280
+ w as NexxtIcon,
281
+ X as NexxtProgressBar,
282
+ Z as NexxtStepperHeader
269
283
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nexxtmove/ui",
3
3
  "type": "module",
4
- "version": "0.1.3",
4
+ "version": "0.1.5",
5
5
  "exports": {
6
6
  ".": {
7
7
  "types": "./dist/index.d.ts",