srcdev-nuxt-components 9.2.11 → 9.3.0
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/app/app.config.ts +1 -1
- package/app/assets/styles/setup/01.config/index.css +2 -2
- package/app/assets/styles/setup/02.colours/index.css +8 -8
- package/app/assets/styles/setup/03.theming/index.css +6 -6
- package/app/assets/styles/setup/04.elements/forms/index.css +2 -2
- package/app/assets/styles/setup/04.elements/index.css +1 -1
- package/app/assets/styles/setup/05.typography/01.tokens/index.css +3 -3
- package/app/assets/styles/setup/05.typography/02.utility-classes/index.css +6 -6
- package/app/assets/styles/setup/05.typography/index.css +2 -2
- package/app/assets/styles/setup/06.utility-classes/animations/index.css +4 -4
- package/app/assets/styles/setup/06.utility-classes/index.css +3 -3
- package/app/assets/styles/setup/06.utility-classes/spacing/index.css +3 -3
- package/app/assets/styles/setup/a11y/index.css +1 -1
- package/app/assets/styles/setup/index.css +7 -7
- package/app/components/01.atoms/content-wrappers/docs-pages/tests/ContentDocs.spec.ts +3 -1
- package/app/components/02.molecules/alert-masked-content/tests/AlertMaskedContent.spec.ts +9 -5
- package/app/components/02.molecules/expandable/expanding-panel/tests/ExpandingPanel.spec.ts +6 -0
- package/app/components/02.molecules/navigation/site-navigation/tests/SiteNavigation.spec.ts +9 -5
- package/app/components/02.molecules/navigation/tab-navigation/tests/TabNavigation.spec.ts +9 -5
- package/app/components/03.organisms/image-galleries/slider-gallery/tests/SliderGallery.spec.ts +5 -1
- package/app/components/alert-mask/tests/AlertMaskCore.spec.ts +9 -5
- package/app/composables/tests/useContainerBreakpoints.spec.ts +27 -7
- package/app/composables/tests/useWhatsApp.spec.ts +10 -4
- package/nuxt.config.ts +9 -0
- package/package.json +26 -21
package/app/app.config.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SemanticTheme, DisplayPromptTheme, DisplayToastTheme, DisplayToastPosition, DisplayToastAlignment } from "
|
|
1
|
+
import type { SemanticTheme, DisplayPromptTheme, DisplayToastTheme, DisplayToastPosition, DisplayToastAlignment } from "./types/components";
|
|
2
2
|
|
|
3
3
|
export default defineAppConfig({
|
|
4
4
|
srcdev: {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
@import "./_normalise";
|
|
2
|
-
@import "./_head";
|
|
1
|
+
@import "./_normalise.css";
|
|
2
|
+
@import "./_head.css";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
@import "./_theme-params";
|
|
2
|
-
@import "./_amber";
|
|
3
|
-
@import "./_blue";
|
|
4
|
-
@import "./_green";
|
|
5
|
-
@import "./_orange";
|
|
6
|
-
@import "./_red";
|
|
7
|
-
@import "./_slate";
|
|
8
|
-
@import "./_sunset";
|
|
1
|
+
@import "./_theme-params.css";
|
|
2
|
+
@import "./_amber.css";
|
|
3
|
+
@import "./_blue.css";
|
|
4
|
+
@import "./_green.css";
|
|
5
|
+
@import "./_orange.css";
|
|
6
|
+
@import "./_red.css";
|
|
7
|
+
@import "./_slate.css";
|
|
8
|
+
@import "./_sunset.css";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
@import "./theme-ramp";
|
|
2
|
-
@import "./_theme-slots";
|
|
3
|
-
@import "./_default";
|
|
4
|
-
@import "./_error";
|
|
5
|
-
@import "./_success";
|
|
6
|
-
@import "./_warning";
|
|
1
|
+
@import "./theme-ramp.css";
|
|
2
|
+
@import "./_theme-slots.css";
|
|
3
|
+
@import "./_default.css";
|
|
4
|
+
@import "./_error.css";
|
|
5
|
+
@import "./_success.css";
|
|
6
|
+
@import "./_warning.css";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
@import "./00.element-defaults";
|
|
1
|
+
@import "./00.element-defaults.css";
|
|
2
2
|
@import "./01.field-layout-container-level.css";
|
|
3
3
|
@import "./02.typography.css";
|
|
4
|
-
@import "./03.generic-input-geometry";
|
|
4
|
+
@import "./03.generic-input-geometry.css";
|
|
5
5
|
@import "./04.slot-icon-system.css";
|
|
6
6
|
@import "./05.checkbox-radio-geometry.css";
|
|
7
7
|
@import "./06.button-geometry.css";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@import "./forms/";
|
|
1
|
+
@import "./forms/index.css";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
@import "./_font-family";
|
|
2
|
-
@import "./_reponsive-font-sizes";
|
|
3
|
-
@import "./_timing-functions";
|
|
1
|
+
@import "./_font-family.css";
|
|
2
|
+
@import "./_reponsive-font-sizes.css";
|
|
3
|
+
@import "./_timing-functions.css";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
@import "./_font-classes-page-heading";
|
|
2
|
-
@import "./_font-classes-page-body";
|
|
3
|
-
@import "./_font-classes-page-link";
|
|
4
|
-
@import "./_font-classes-section";
|
|
5
|
-
@import "./_font-classes-article";
|
|
6
|
-
@import "./_font-classes-card";
|
|
1
|
+
@import "./_font-classes-page-heading.css";
|
|
2
|
+
@import "./_font-classes-page-body.css";
|
|
3
|
+
@import "./_font-classes-page-link.css";
|
|
4
|
+
@import "./_font-classes-section.css";
|
|
5
|
+
@import "./_font-classes-article.css";
|
|
6
|
+
@import "./_font-classes-card.css";
|
|
7
7
|
@import "./_generic-font-classes.css";
|
|
8
8
|
@import "./_generic-font-variation-settings.css";
|
|
9
9
|
@import "./_generic-font-weights.css";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
@import "./01.tokens";
|
|
2
|
-
@import "./02.utility-classes";
|
|
1
|
+
@import "./01.tokens/index.css";
|
|
2
|
+
@import "./02.utility-classes/index.css";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
@import "./_entry-zoom-reveal";
|
|
2
|
-
@import "./_entry-slide-in";
|
|
3
|
-
@import "./_entry-exit-blur";
|
|
4
|
-
@import "./_auto-rotate";
|
|
1
|
+
@import "./_entry-zoom-reveal.css";
|
|
2
|
+
@import "./_entry-slide-in.css";
|
|
3
|
+
@import "./_entry-exit-blur.css";
|
|
4
|
+
@import "./_auto-rotate.css";
|
|
5
5
|
@import "./_animation-scroller-x.css";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
@import "./animations/";
|
|
2
|
-
@import "./spacing/";
|
|
1
|
+
@import "./animations/index.css";
|
|
2
|
+
@import "./spacing/index.css";
|
|
3
3
|
/* @import "./layout/"; */
|
|
4
|
-
@import "./_a11y";
|
|
4
|
+
@import "./_a11y.css";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
@import "./_fluid-spacing";
|
|
2
|
-
@import "./_margin";
|
|
3
|
-
@import "./_padding";
|
|
1
|
+
@import "./_fluid-spacing.css";
|
|
2
|
+
@import "./_margin.css";
|
|
3
|
+
@import "./_padding.css";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@import "./_variables";
|
|
1
|
+
@import "./_variables.css";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
@layer reset, colours, theming, form-tokens, typography, a11y, components, utilities, consumer;
|
|
2
2
|
|
|
3
|
-
@import "./01.config/" layer(reset);
|
|
4
|
-
@import "./02.colours/" layer(colours);
|
|
5
|
-
@import "./03.theming/" layer(theming);
|
|
6
|
-
@import "./04.elements/" layer(form-tokens);
|
|
7
|
-
@import "./05.typography/" layer(typography);
|
|
8
|
-
@import "./a11y/" layer(a11y);
|
|
9
|
-
@import "./06.utility-classes/" layer(utilities);
|
|
3
|
+
@import "./01.config/index.css" layer(reset);
|
|
4
|
+
@import "./02.colours/index.css" layer(colours);
|
|
5
|
+
@import "./03.theming/index.css" layer(theming);
|
|
6
|
+
@import "./04.elements/index.css" layer(form-tokens);
|
|
7
|
+
@import "./05.typography/index.css" layer(typography);
|
|
8
|
+
@import "./a11y/index.css" layer(a11y);
|
|
9
|
+
@import "./06.utility-classes/index.css" layer(utilities);
|
|
@@ -9,7 +9,9 @@ beforeEach(() => {
|
|
|
9
9
|
resizeCallback = null;
|
|
10
10
|
vi.stubGlobal(
|
|
11
11
|
"ResizeObserver",
|
|
12
|
-
|
|
12
|
+
// Vitest 4: a mock's implementation must be a regular function (not an
|
|
13
|
+
// arrow function) to remain constructible via `new`.
|
|
14
|
+
vi.fn(function (callback: ResizeObserverCallback) {
|
|
13
15
|
resizeCallback = callback;
|
|
14
16
|
return {
|
|
15
17
|
observe: vi.fn(),
|
|
@@ -2,11 +2,15 @@ import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
|
2
2
|
import { mountSuspended } from "@nuxt/test-utils/runtime";
|
|
3
3
|
import AlertMaskedContent from "../AlertMaskedContent.vue";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
// Vitest 4: a mock's implementation must be a regular function (not an
|
|
6
|
+
// arrow function) to remain constructible via `new`.
|
|
7
|
+
const mockResizeObserver = vi.fn(function () {
|
|
8
|
+
return {
|
|
9
|
+
observe: vi.fn(),
|
|
10
|
+
unobserve: vi.fn(),
|
|
11
|
+
disconnect: vi.fn(),
|
|
12
|
+
};
|
|
13
|
+
});
|
|
10
14
|
|
|
11
15
|
vi.stubGlobal("ResizeObserver", mockResizeObserver);
|
|
12
16
|
|
|
@@ -437,6 +437,12 @@ describe("ExpandingPanel", () => {
|
|
|
437
437
|
await wrapper.find("summary").trigger("click");
|
|
438
438
|
expect(vm.isPanelOpen).toBe(true);
|
|
439
439
|
|
|
440
|
+
// vueuse's onClickOutside debounces re-entrant clicks via a real setTimeout(0) that
|
|
441
|
+
// flips an internal "isProcessingClick" flag back off. With fake timers active
|
|
442
|
+
// (test/vitest.setup.ts) that flag never resets on its own, so the summary click
|
|
443
|
+
// above would otherwise permanently suppress the very next click. Advance past it.
|
|
444
|
+
vi.advanceTimersByTime(0);
|
|
445
|
+
|
|
440
446
|
document.body.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
|
441
447
|
await nextTick();
|
|
442
448
|
|
|
@@ -5,11 +5,15 @@ import SiteNavigation from "../SiteNavigation.vue";
|
|
|
5
5
|
import type { NavItemData } from "~/types/components/navigation-horizontal.d";
|
|
6
6
|
|
|
7
7
|
// useResizeObserver (from @vueuse/core) requires ResizeObserver
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
// Vitest 4: a mock's implementation must be a regular function (not an
|
|
9
|
+
// arrow function) to remain constructible via `new`.
|
|
10
|
+
const mockResizeObserver = vi.fn(function () {
|
|
11
|
+
return {
|
|
12
|
+
observe: vi.fn(),
|
|
13
|
+
unobserve: vi.fn(),
|
|
14
|
+
disconnect: vi.fn(),
|
|
15
|
+
};
|
|
16
|
+
});
|
|
13
17
|
|
|
14
18
|
beforeEach(() => {
|
|
15
19
|
vi.stubGlobal("ResizeObserver", mockResizeObserver);
|
|
@@ -5,11 +5,15 @@ import TabNavigation from "../TabNavigation.vue";
|
|
|
5
5
|
import type { NavItemData } from "~/types/components/navigation-horizontal.d";
|
|
6
6
|
|
|
7
7
|
// useResizeObserver (from @vueuse/core) requires ResizeObserver
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
// Vitest 4: a mock's implementation must be a regular function (not an
|
|
9
|
+
// arrow function) to remain constructible via `new`.
|
|
10
|
+
const mockResizeObserver = vi.fn(function () {
|
|
11
|
+
return {
|
|
12
|
+
observe: vi.fn(),
|
|
13
|
+
unobserve: vi.fn(),
|
|
14
|
+
disconnect: vi.fn(),
|
|
15
|
+
};
|
|
16
|
+
});
|
|
13
17
|
|
|
14
18
|
beforeEach(() => {
|
|
15
19
|
vi.stubGlobal("ResizeObserver", mockResizeObserver);
|
package/app/components/03.organisms/image-galleries/slider-gallery/tests/SliderGallery.spec.ts
CHANGED
|
@@ -63,7 +63,11 @@ describe("SliderGallery", () => {
|
|
|
63
63
|
mockImage = { src: "", onload: null, onerror: null };
|
|
64
64
|
vi.stubGlobal(
|
|
65
65
|
"Image",
|
|
66
|
-
|
|
66
|
+
// Vitest 4: a mock's implementation must be a regular function (not an
|
|
67
|
+
// arrow function) to remain constructible via `new`.
|
|
68
|
+
vi.fn(function () {
|
|
69
|
+
return mockImage;
|
|
70
|
+
})
|
|
67
71
|
);
|
|
68
72
|
});
|
|
69
73
|
|
|
@@ -23,11 +23,15 @@ interface AlertMaskCoreInstance {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
// Mock ResizeObserver
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
// Vitest 4: a mock's implementation must be a regular function (not an
|
|
27
|
+
// arrow function) to remain constructible via `new`.
|
|
28
|
+
const mockResizeObserver = vi.fn(function () {
|
|
29
|
+
return {
|
|
30
|
+
observe: vi.fn(),
|
|
31
|
+
unobserve: vi.fn(),
|
|
32
|
+
disconnect: vi.fn(),
|
|
33
|
+
};
|
|
34
|
+
});
|
|
31
35
|
|
|
32
36
|
vi.stubGlobal("ResizeObserver", mockResizeObserver);
|
|
33
37
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
2
2
|
import { nextTick, ref } from "vue";
|
|
3
3
|
import { useContainerBreakpoints } from "../useContainerBreakpoints";
|
|
4
4
|
|
|
@@ -8,7 +8,9 @@ beforeEach(() => {
|
|
|
8
8
|
resizeCallback = null;
|
|
9
9
|
vi.stubGlobal(
|
|
10
10
|
"ResizeObserver",
|
|
11
|
-
|
|
11
|
+
// Vitest 4: a mock's implementation must be a regular function (not an
|
|
12
|
+
// arrow function) to remain constructible via `new`.
|
|
13
|
+
vi.fn(function (callback: ResizeObserverCallback) {
|
|
12
14
|
resizeCallback = callback;
|
|
13
15
|
return {
|
|
14
16
|
observe: vi.fn(),
|
|
@@ -19,6 +21,10 @@ beforeEach(() => {
|
|
|
19
21
|
);
|
|
20
22
|
});
|
|
21
23
|
|
|
24
|
+
afterEach(() => {
|
|
25
|
+
document.body.innerHTML = "";
|
|
26
|
+
});
|
|
27
|
+
|
|
22
28
|
function triggerResize(el: HTMLElement, width: number) {
|
|
23
29
|
Object.defineProperty(el, "offsetWidth", { value: width, configurable: true });
|
|
24
30
|
resizeCallback?.(
|
|
@@ -27,15 +33,29 @@ function triggerResize(el: HTMLElement, width: number) {
|
|
|
27
33
|
);
|
|
28
34
|
}
|
|
29
35
|
|
|
36
|
+
// @vueuse/core's useElementSize reads the element's initial width in onMounted via
|
|
37
|
+
// `offsetWidth - computed padding/border`, ahead of any ResizeObserver callback. happy-dom's
|
|
38
|
+
// getComputedStyle() only resolves real "0px" values (rather than "") for padding/border on an
|
|
39
|
+
// element that's actually attached to the document — a detached `createElement` div keeps
|
|
40
|
+
// returning "", so parseFloat() turns the subtraction into NaN. Zero the box model AND attach
|
|
41
|
+
// the element so that initial-width read is a real, non-NaN value.
|
|
42
|
+
function createEl(): HTMLElement {
|
|
43
|
+
const el = document.createElement("div");
|
|
44
|
+
el.style.padding = "0px";
|
|
45
|
+
el.style.border = "0px";
|
|
46
|
+
document.body.appendChild(el);
|
|
47
|
+
return el;
|
|
48
|
+
}
|
|
49
|
+
|
|
30
50
|
describe("useContainerBreakpoints", () => {
|
|
31
51
|
it("defaults active to base when narrower than the smallest breakpoint", () => {
|
|
32
|
-
const el = ref<HTMLElement | null>(
|
|
52
|
+
const el = ref<HTMLElement | null>(createEl());
|
|
33
53
|
const { active } = useContainerBreakpoints(undefined, el);
|
|
34
54
|
expect(active.value).toBe("base");
|
|
35
55
|
});
|
|
36
56
|
|
|
37
57
|
it("updates active as the observed element's width crosses breakpoints", async () => {
|
|
38
|
-
const el = ref<HTMLElement | null>(
|
|
58
|
+
const el = ref<HTMLElement | null>(createEl());
|
|
39
59
|
const { active } = useContainerBreakpoints(undefined, el);
|
|
40
60
|
|
|
41
61
|
triggerResize(el.value as HTMLElement, 700);
|
|
@@ -48,7 +68,7 @@ describe("useContainerBreakpoints", () => {
|
|
|
48
68
|
});
|
|
49
69
|
|
|
50
70
|
it("greaterOrEqual/smaller reflect the current width against a named breakpoint", async () => {
|
|
51
|
-
const el = ref<HTMLElement | null>(
|
|
71
|
+
const el = ref<HTMLElement | null>(createEl());
|
|
52
72
|
const { greaterOrEqual, smaller } = useContainerBreakpoints(undefined, el);
|
|
53
73
|
const isLg = greaterOrEqual("lg");
|
|
54
74
|
const isSmallerThanMd = smaller("md");
|
|
@@ -63,7 +83,7 @@ describe("useContainerBreakpoints", () => {
|
|
|
63
83
|
});
|
|
64
84
|
|
|
65
85
|
it("between returns true only within the [min, max) range", async () => {
|
|
66
|
-
const el = ref<HTMLElement | null>(
|
|
86
|
+
const el = ref<HTMLElement | null>(createEl());
|
|
67
87
|
const { between } = useContainerBreakpoints(undefined, el);
|
|
68
88
|
const isTablet = between("sm", "lg");
|
|
69
89
|
|
|
@@ -77,7 +97,7 @@ describe("useContainerBreakpoints", () => {
|
|
|
77
97
|
});
|
|
78
98
|
|
|
79
99
|
it("supports a custom breakpoints map", async () => {
|
|
80
|
-
const el = ref<HTMLElement | null>(
|
|
100
|
+
const el = ref<HTMLElement | null>(createEl());
|
|
81
101
|
const { active } = useContainerBreakpoints({ narrow: 400, wide: 900 }, el);
|
|
82
102
|
|
|
83
103
|
triggerResize(el.value as HTMLElement, 500);
|
|
@@ -6,8 +6,14 @@ const PHONE_NUMBER = "447700900000";
|
|
|
6
6
|
|
|
7
7
|
// mockNuxtImport intercepts Nuxt's auto-import resolution — vi.stubGlobal cannot.
|
|
8
8
|
// Use vi.hoisted so the mock function is available before module evaluation.
|
|
9
|
+
// Nuxt's own router plugin also calls useRuntimeConfig() during app init and
|
|
10
|
+
// reads `.app.baseURL` — the mock must include that shape too, or app
|
|
11
|
+
// initialization throws before the test body runs.
|
|
9
12
|
const { useRuntimeConfigMock } = vi.hoisted(() => ({
|
|
10
|
-
useRuntimeConfigMock: vi.fn(() => ({
|
|
13
|
+
useRuntimeConfigMock: vi.fn(() => ({
|
|
14
|
+
public: { whatsappNumber: PHONE_NUMBER },
|
|
15
|
+
app: { baseURL: "/" },
|
|
16
|
+
})),
|
|
11
17
|
}));
|
|
12
18
|
|
|
13
19
|
mockNuxtImport("useRuntimeConfig", () => useRuntimeConfigMock);
|
|
@@ -17,7 +23,7 @@ describe("useWhatsApp", () => {
|
|
|
17
23
|
|
|
18
24
|
beforeEach(() => {
|
|
19
25
|
windowOpenSpy = vi.spyOn(window, "open").mockImplementation(() => null);
|
|
20
|
-
useRuntimeConfigMock.mockReturnValue({ public: { whatsappNumber: PHONE_NUMBER } });
|
|
26
|
+
useRuntimeConfigMock.mockReturnValue({ public: { whatsappNumber: PHONE_NUMBER }, app: { baseURL: "/" } });
|
|
21
27
|
});
|
|
22
28
|
|
|
23
29
|
afterEach(() => {
|
|
@@ -85,14 +91,14 @@ describe("useWhatsApp", () => {
|
|
|
85
91
|
});
|
|
86
92
|
|
|
87
93
|
it("does not call window.open when number is not configured", () => {
|
|
88
|
-
useRuntimeConfigMock.mockReturnValue({ public: { whatsappNumber: "" } });
|
|
94
|
+
useRuntimeConfigMock.mockReturnValue({ public: { whatsappNumber: "" }, app: { baseURL: "/" } });
|
|
89
95
|
const { openWhatsApp } = useWhatsApp();
|
|
90
96
|
openWhatsApp([{ label: "Name", value: "Jane" }]);
|
|
91
97
|
expect(windowOpenSpy).not.toHaveBeenCalled();
|
|
92
98
|
});
|
|
93
99
|
|
|
94
100
|
it("logs a warning when number is not configured", () => {
|
|
95
|
-
useRuntimeConfigMock.mockReturnValue({ public: { whatsappNumber: "" } });
|
|
101
|
+
useRuntimeConfigMock.mockReturnValue({ public: { whatsappNumber: "" }, app: { baseURL: "/" } });
|
|
96
102
|
const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => {});
|
|
97
103
|
const { openWhatsApp } = useWhatsApp();
|
|
98
104
|
openWhatsApp([{ label: "Name", value: "Jane" }]);
|
package/nuxt.config.ts
CHANGED
|
@@ -130,6 +130,15 @@ export default defineNuxtConfig({
|
|
|
130
130
|
...(isStandalone ? ["vue-qrcode-reader"] : []),
|
|
131
131
|
],
|
|
132
132
|
},
|
|
133
|
+
// Vite 8 (pulled in by Nuxt 4.5) defaults build.cssMinify to "lightningcss" instead of
|
|
134
|
+
// "esbuild". lightningcss has an open bug where it drops the unprefixed `backdrop-filter`
|
|
135
|
+
// once autoprefixer adds `-webkit-backdrop-filter` alongside it, breaking glass/blur effects
|
|
136
|
+
// (see https://github.com/vitejs/vite/issues/22649) — this repo relies on backdrop-filter in
|
|
137
|
+
// several components (GlassPanel, SiteNavigation, TabNavigation, DisplayDialog, ColourFinder,
|
|
138
|
+
// MagneticNavigation). Pin back to esbuild until upstream fixes it.
|
|
139
|
+
build: {
|
|
140
|
+
cssMinify: "esbuild",
|
|
141
|
+
},
|
|
133
142
|
},
|
|
134
143
|
vue: {
|
|
135
144
|
runtimeCompiler: true,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "srcdev-nuxt-components",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "9.
|
|
4
|
+
"version": "9.3.0",
|
|
5
5
|
"main": "nuxt.config.ts",
|
|
6
6
|
"types": "types.d.ts",
|
|
7
7
|
"license": "MIT",
|
|
@@ -90,33 +90,35 @@
|
|
|
90
90
|
"@iconify-json/akar-icons": "1.2.7",
|
|
91
91
|
"@iconify-json/bi": "1.2.7",
|
|
92
92
|
"@iconify-json/bitcoin-icons": "1.2.5",
|
|
93
|
-
"@iconify-json/gravity-ui": "1.2.
|
|
93
|
+
"@iconify-json/gravity-ui": "1.2.14",
|
|
94
94
|
"@iconify-json/ic": "*",
|
|
95
|
-
"@iconify-json/logos": "1.2.
|
|
96
|
-
"@iconify-json/lucide": "
|
|
97
|
-
"@iconify-json/material-symbols": "1.2.
|
|
95
|
+
"@iconify-json/logos": "1.2.13",
|
|
96
|
+
"@iconify-json/lucide": "1.2.124",
|
|
97
|
+
"@iconify-json/material-symbols": "1.2.89",
|
|
98
98
|
"@iconify-json/mdi": "1.2.3",
|
|
99
99
|
"@iconify-json/radix-icons": "*",
|
|
100
|
-
"@nuxt/eslint": "1.
|
|
100
|
+
"@nuxt/eslint": "1.17.0",
|
|
101
101
|
"@nuxt/schema": "4.4.6",
|
|
102
|
-
"@nuxt/test-utils": "
|
|
102
|
+
"@nuxt/test-utils": "4.1.0",
|
|
103
103
|
"@nuxtjs/storybook": "9.1.0-29374011.dab79ae",
|
|
104
|
-
"@playwright/test": "1.
|
|
104
|
+
"@playwright/test": "1.62.1",
|
|
105
105
|
"@storybook/addon-a11y": "10.0.7",
|
|
106
106
|
"@storybook/addon-docs": "10.0.7",
|
|
107
107
|
"@storybook/builder-vite": "10.0.7",
|
|
108
|
-
"@vue/test-utils": "2.4.
|
|
109
|
-
"@vueuse/core": "14.
|
|
110
|
-
"eslint": "10.
|
|
108
|
+
"@vue/test-utils": "2.4.11",
|
|
109
|
+
"@vueuse/core": "14.4.0",
|
|
110
|
+
"eslint": "10.8.1",
|
|
111
111
|
"eslint-plugin-storybook": "10.0.7",
|
|
112
|
-
"happy-dom": "20.
|
|
112
|
+
"happy-dom": "20.11.2",
|
|
113
113
|
"nuxt-qrcode": "0.4.10",
|
|
114
|
+
"oxc-parser": "0.131.0",
|
|
114
115
|
"patch-package": "8.0.1",
|
|
115
|
-
"release-it": "
|
|
116
|
+
"release-it": "21.0.2",
|
|
116
117
|
"storybook": "10.0.7",
|
|
117
|
-
"typescript": "
|
|
118
|
-
"vitest": "
|
|
119
|
-
"vue-
|
|
118
|
+
"typescript": "5.9.3",
|
|
119
|
+
"vitest": "4.1.11",
|
|
120
|
+
"vue-router": "5.2.0",
|
|
121
|
+
"vue-tsc": "3.3.10"
|
|
120
122
|
},
|
|
121
123
|
"release-it": {
|
|
122
124
|
"$schema": "https://unpkg.com/release-it/schema/release-it.json",
|
|
@@ -130,15 +132,18 @@
|
|
|
130
132
|
},
|
|
131
133
|
"dependencies": {
|
|
132
134
|
"@nuxt/fonts": "0.14.0",
|
|
133
|
-
"@nuxt/icon": "2.
|
|
134
|
-
"@nuxt/image": "2.
|
|
135
|
-
"@oddbird/css-anchor-positioning": "0.
|
|
136
|
-
"@pinia/nuxt": "0.
|
|
135
|
+
"@nuxt/icon": "2.5.0",
|
|
136
|
+
"@nuxt/image": "2.1.0",
|
|
137
|
+
"@oddbird/css-anchor-positioning": "0.10.2",
|
|
138
|
+
"@pinia/nuxt": "1.0.2",
|
|
137
139
|
"@vueuse/motion": "3.0.3",
|
|
138
140
|
"focus-trap-vue": "4.1.0",
|
|
139
141
|
"nuxt": "4.4.6",
|
|
140
|
-
"pinia": "
|
|
142
|
+
"pinia": "4.0.3",
|
|
141
143
|
"pinia-plugin-persistedstate": "4.7.1",
|
|
142
144
|
"zod": "4.4.3"
|
|
145
|
+
},
|
|
146
|
+
"overrides": {
|
|
147
|
+
"vue-router": "5.2.0"
|
|
143
148
|
}
|
|
144
149
|
}
|