@nysds/nys-divider 1.19.3 → 1.20.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/dist/index.d.ts +1 -0
- package/dist/nys-divider.d.ts +9 -8
- package/dist/nys-divider.figma.d.ts +1 -0
- package/dist/nys-divider.js +98 -29
- package/dist/nys-divider.js.map +1 -1
- package/package.json +2 -1
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./nys-divider";
|
package/dist/nys-divider.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NysReflectsAriaElement } from "@nysds/internals";
|
|
2
2
|
/**
|
|
3
|
-
* A horizontal rule for visual separation between content sections.
|
|
3
|
+
* A horizontal rule for visual separation between content sections. The host
|
|
4
|
+
* element carries `role="separator"` via ElementInternals.
|
|
4
5
|
*
|
|
5
6
|
* Use to separate distinct content areas within a page. Set `inverted` for use on dark backgrounds.
|
|
6
7
|
*
|
|
@@ -37,18 +38,18 @@ import { LitElement } from "lit";
|
|
|
37
38
|
* <p>Section two content</p>
|
|
38
39
|
* ```
|
|
39
40
|
*/
|
|
40
|
-
export declare class NysDivider extends
|
|
41
|
+
export declare class NysDivider extends NysReflectsAriaElement {
|
|
41
42
|
static styles: import("lit").CSSResult;
|
|
42
43
|
/** Adjusts colors for dark backgrounds. */
|
|
43
44
|
inverted: boolean;
|
|
44
45
|
/** If true, the divider will use a lighter color. */
|
|
45
46
|
subtle: boolean;
|
|
46
|
-
constructor();
|
|
47
|
-
connectedCallback(): void;
|
|
48
47
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
48
|
+
* The host element IS the separator, so reflect role="separator" onto the host
|
|
49
|
+
* via internals. A horizontal separator's implicit aria-orientation is
|
|
50
|
+
* "horizontal", which matches this component, so no explicit orientation is set.
|
|
51
51
|
*/
|
|
52
|
-
|
|
52
|
+
protected get defaultRole(): string | null;
|
|
53
|
+
connectedCallback(): void;
|
|
53
54
|
render(): import("lit-html").TemplateResult<1>;
|
|
54
55
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/nys-divider.js
CHANGED
|
@@ -1,50 +1,119 @@
|
|
|
1
|
-
import { LitElement as
|
|
2
|
-
import { property as
|
|
1
|
+
import { LitElement as u, unsafeCSS as f, html as h } from "lit";
|
|
2
|
+
import { property as c } from "lit/decorators.js";
|
|
3
3
|
/*!
|
|
4
4
|
* █▄ █ █ █ █▀▀▀█ █▀▀▄ █▀▀▀█
|
|
5
5
|
* █ █ █ █▄▄▄█ ▀▀▀▄▄ █ █ ▀▀▀▄▄
|
|
6
6
|
* █ ▀█ █ █▄▄▄█ █▄▄▀ █▄▄▄█
|
|
7
7
|
*
|
|
8
|
-
* Divider Component v1.
|
|
8
|
+
* Divider Component v1.20.0
|
|
9
9
|
* Part of the New York State Design System
|
|
10
10
|
* Repository: https://github.com/its-hcd/nysds
|
|
11
11
|
* License: MIT
|
|
12
12
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
/*!
|
|
14
|
+
* New York State Design System v1.20.0
|
|
15
|
+
* Description: A design system for New York State's digital products.
|
|
16
|
+
* Repository: https://github.com/its-hcd/nysds
|
|
17
|
+
* License: MIT
|
|
18
|
+
*/
|
|
19
|
+
let v = 0;
|
|
20
|
+
function y(e) {
|
|
21
|
+
return `${e}-${Date.now()}-${v++}`;
|
|
22
|
+
}
|
|
23
|
+
const p = (e) => {
|
|
24
|
+
class r extends e {
|
|
25
|
+
get idPrefix() {
|
|
26
|
+
return this.localName || "nys-element";
|
|
27
|
+
}
|
|
28
|
+
ensureId() {
|
|
29
|
+
this.id || (this.id = y(this.idPrefix));
|
|
30
|
+
}
|
|
31
|
+
connectedCallback() {
|
|
32
|
+
super.connectedCallback(), this.ensureId();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return r;
|
|
36
|
+
}, _ = (e) => {
|
|
37
|
+
class r extends p(e) {
|
|
38
|
+
constructor() {
|
|
39
|
+
super(...arguments), this.__internals = null;
|
|
40
|
+
}
|
|
41
|
+
get internals() {
|
|
42
|
+
if (this.__internals) return this.__internals;
|
|
43
|
+
if (typeof this.attachInternals == "function")
|
|
44
|
+
try {
|
|
45
|
+
this.__internals = this.attachInternals();
|
|
46
|
+
} catch {
|
|
47
|
+
this.__internals = null;
|
|
48
|
+
}
|
|
49
|
+
return this.__internals;
|
|
50
|
+
}
|
|
51
|
+
get defaultRole() {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
setHostAria(n, t) {
|
|
55
|
+
const s = this.internals;
|
|
56
|
+
if (s && n in s) {
|
|
57
|
+
s[n] = t;
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const i = m(n);
|
|
61
|
+
t === null ? this.removeAttribute(i) : this.setAttribute(i, t);
|
|
62
|
+
}
|
|
63
|
+
reflectDefaultSemantics() {
|
|
64
|
+
const n = this.defaultRole;
|
|
65
|
+
n && this.setHostAria("role", n);
|
|
66
|
+
}
|
|
67
|
+
connectedCallback() {
|
|
68
|
+
super.connectedCallback(), this.reflectDefaultSemantics();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return r;
|
|
72
|
+
};
|
|
73
|
+
function m(e) {
|
|
74
|
+
if (e === "role") return "role";
|
|
75
|
+
const r = e.replace(/^aria/, "");
|
|
76
|
+
return "aria-" + r.charAt(0).toLowerCase() + r.slice(1);
|
|
77
|
+
}
|
|
78
|
+
const b = /* @__PURE__ */ _(u), g = ":host{--_nys-divider-size: var(--nys-size-1px, 1px);--_nys-divider-color: var(--nys-color-neutral-500, #797c7f);--_nys-divider-width: 100%}:host([inverted]){--_nys-divider-color: var(--nys-color-ink-reverse, #ffffff)}:host([subtle]){--_nys-divider-color: var(--nys-color-neutral-100, #e4e5e6)}.nys-divider{width:var(--_nys-divider-width);height:var(--_nys-divider-size);background-color:var(--_nys-divider-color);flex:1 0 0;margin:0;border:none}";
|
|
79
|
+
var x = Object.defineProperty, d = (e, r, a, n) => {
|
|
80
|
+
for (var t = void 0, s = e.length - 1, i; s >= 0; s--)
|
|
81
|
+
(i = e[s]) && (t = i(r, a, t) || t);
|
|
82
|
+
return t && x(r, a, t), t;
|
|
18
83
|
};
|
|
19
|
-
|
|
20
|
-
const i = class i extends v {
|
|
84
|
+
const o = class o extends b {
|
|
21
85
|
constructor() {
|
|
22
|
-
super(), this.inverted = !1, this.subtle = !1;
|
|
23
|
-
}
|
|
24
|
-
connectedCallback() {
|
|
25
|
-
super.connectedCallback(), this.id || (this.id = this._generateUniqueId());
|
|
86
|
+
super(...arguments), this.inverted = !1, this.subtle = !1;
|
|
26
87
|
}
|
|
27
88
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
89
|
+
* The host element IS the separator, so reflect role="separator" onto the host
|
|
90
|
+
* via internals. A horizontal separator's implicit aria-orientation is
|
|
91
|
+
* "horizontal", which matches this component, so no explicit orientation is set.
|
|
30
92
|
*/
|
|
31
|
-
|
|
32
|
-
return
|
|
93
|
+
get defaultRole() {
|
|
94
|
+
return "separator";
|
|
95
|
+
}
|
|
96
|
+
connectedCallback() {
|
|
97
|
+
super.connectedCallback();
|
|
33
98
|
}
|
|
34
99
|
render() {
|
|
35
|
-
return
|
|
100
|
+
return h`<hr
|
|
101
|
+
class="nys-divider"
|
|
102
|
+
role="presentation"
|
|
103
|
+
aria-hidden="true"
|
|
104
|
+
/>`;
|
|
36
105
|
}
|
|
37
106
|
};
|
|
38
|
-
|
|
39
|
-
let
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
],
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
],
|
|
46
|
-
customElements.get("nys-divider") || customElements.define("nys-divider",
|
|
107
|
+
o.styles = f(g);
|
|
108
|
+
let l = o;
|
|
109
|
+
d([
|
|
110
|
+
c({ type: Boolean, reflect: !0 })
|
|
111
|
+
], l.prototype, "inverted");
|
|
112
|
+
d([
|
|
113
|
+
c({ type: Boolean, reflect: !0 })
|
|
114
|
+
], l.prototype, "subtle");
|
|
115
|
+
customElements.get("nys-divider") || customElements.define("nys-divider", l);
|
|
47
116
|
export {
|
|
48
|
-
|
|
117
|
+
l as NysDivider
|
|
49
118
|
};
|
|
50
119
|
//# sourceMappingURL=nys-divider.js.map
|
package/dist/nys-divider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nys-divider.js","sources":["../src/nys-divider.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from \"lit\";\nimport { property } from \"lit/decorators.js\";\n// @ts-ignore: SCSS module imported via bundler as inline\nimport styles from \"./nys-divider.scss?inline\";\n\
|
|
1
|
+
{"version":3,"file":"nys-divider.js","sources":["../../internals/dist/index.js","../src/nys-divider.ts"],"sourcesContent":["import { LitElement as u } from \"lit\";\n/*!\n * New York State Design System v1.20.0\n * Description: A design system for New York State's digital products.\n * Repository: https://github.com/its-hcd/nysds\n * License: MIT\n */\nlet y = 0;\nfunction f(e) {\n return `${e}-${Date.now()}-${y++}`;\n}\nconst p = {\n labelledby: \"ariaLabelledByElements\",\n describedby: \"ariaDescribedByElements\"\n}, A = {\n labelledby: \"ariaLabel\",\n describedby: \"ariaDescription\"\n};\nfunction R(e) {\n return \"ariaDescribedByElements\" in e;\n}\nfunction _(e) {\n return e === \"errormessage\" ? \"aria-errormessage\" : `aria-${e}`;\n}\nfunction d(e) {\n return e.filter((t) => !!t);\n}\nfunction E(e) {\n return e.map((t) => (t.id || (t.id = f(\"nys-ref\")), t.id));\n}\nfunction V(e, t, n) {\n const i = d(n), r = _(t);\n i.length ? e.setAttribute(r, E(i).join(\" \")) : e.removeAttribute(r);\n}\nfunction x(e, t, n, i, r) {\n const s = d(i), a = p[n], l = t;\n if (a && R(t)) {\n l[a] = s.length ? s : null;\n return;\n }\n const o = A[n];\n if (!o) return;\n const c = r ?? (s.length ? s.map((m) => m.textContent?.trim() ?? \"\").filter(Boolean).join(\" \") : \"\");\n o in l ? l[o] = c || null : c ? e.setAttribute(\n n === \"labelledby\" ? \"aria-label\" : \"aria-description\",\n c\n ) : e.removeAttribute(\n n === \"labelledby\" ? \"aria-label\" : \"aria-description\"\n );\n}\nconst g = {\n labelledby: \"ariaLabelledByElements\",\n describedby: \"ariaDescribedByElements\"\n}, C = {\n labelledby: \"aria-label\",\n describedby: \"aria-description\"\n};\nfunction L(e, t, n) {\n const i = d(n), r = g[t], s = C[t], a = e;\n if (r && r in e && (a[r] = i.length ? i : null), !s) return;\n const l = i.map((o) => o.textContent?.trim() ?? \"\").filter(Boolean).join(\" \");\n l ? e.setAttribute(s, l) : e.removeAttribute(s);\n}\nconst b = (e) => {\n class t extends e {\n get idPrefix() {\n return this.localName || \"nys-element\";\n }\n ensureId() {\n this.id || (this.id = f(this.idPrefix));\n }\n connectedCallback() {\n super.connectedCallback(), this.ensureId();\n }\n }\n return t;\n}, P = /* @__PURE__ */ b(u), h = (e) => {\n class t extends b(e) {\n constructor() {\n super(...arguments), this.__internals = null;\n }\n get internals() {\n if (this.__internals) return this.__internals;\n if (typeof this.attachInternals == \"function\")\n try {\n this.__internals = this.attachInternals();\n } catch {\n this.__internals = null;\n }\n return this.__internals;\n }\n get defaultRole() {\n return null;\n }\n setHostAria(i, r) {\n const s = this.internals;\n if (s && i in s) {\n s[i] = r;\n return;\n }\n const a = v(i);\n r === null ? this.removeAttribute(a) : this.setAttribute(a, r);\n }\n reflectDefaultSemantics() {\n const i = this.defaultRole;\n i && this.setHostAria(\"role\", i);\n }\n connectedCallback() {\n super.connectedCallback(), this.reflectDefaultSemantics();\n }\n }\n return t;\n};\nfunction v(e) {\n if (e === \"role\") return \"role\";\n const t = e.replace(/^aria/, \"\");\n return \"aria-\" + t.charAt(0).toLowerCase() + t.slice(1);\n}\nconst T = /* @__PURE__ */ h(u), I = (e) => {\n const n = class n extends h(e) {\n setFormValue(r) {\n this.internals?.setFormValue(r ?? null);\n }\n setValidityFromState(r, s, a) {\n const l = this.internals;\n if (!l) return;\n const o = Object.values(r).some(Boolean);\n o ? l.setValidity(r, s ?? \"Invalid value\", a) : l.setValidity({}), this.setHostAria(\"ariaInvalid\", o ? \"true\" : \"false\");\n }\n clearValidity() {\n this.internals?.setValidity({}), this.setHostAria(\"ariaInvalid\", \"false\");\n }\n checkValidity() {\n return this.internals?.checkValidity() ?? !0;\n }\n reportValidity() {\n return this.internals?.reportValidity() ?? !0;\n }\n formResetCallback() {\n this.clearValidity();\n }\n };\n n.formAssociated = !0;\n let t = n;\n return t;\n}, w = /* @__PURE__ */ I(u);\nfunction O(e) {\n const t = e.tagName.toLowerCase(), n = /* @__PURE__ */ new Set(), i = (r) => {\n r.querySelectorAll(\"*\").forEach((s) => {\n const a = s.tagName.toLowerCase();\n a.startsWith(\"nys-\") && a !== t && !customElements.get(a) && n.add(a), s.shadowRoot && i(s.shadowRoot);\n });\n };\n return e.shadowRoot && i(e.shadowRoot), i(e), [...n].sort();\n}\nexport {\n I as FormControlMixin,\n b as IdentifiedMixin,\n P as NysElement,\n w as NysFormControlElement,\n T as NysReflectsAriaElement,\n h as ReflectsAriaMixin,\n V as associateControl,\n L as associateControlRefs,\n x as associateHost,\n O as findUnregisteredChildren,\n f as generateId,\n R as supportsElementRefs\n};\n//# sourceMappingURL=index.js.map\n","import { html, unsafeCSS } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { NysReflectsAriaElement } from \"@nysds/internals\";\n// @ts-ignore: SCSS module imported via bundler as inline\nimport styles from \"./nys-divider.scss?inline\";\n\n/**\n * A horizontal rule for visual separation between content sections. The host\n * element carries `role=\"separator\"` via ElementInternals.\n *\n * Use to separate distinct content areas within a page. Set `inverted` for use on dark backgrounds.\n *\n * @summary Horizontal divider for visual separation of content sections.\n * @element nys-divider\n *\n * @example Basic\n * ```html\n * <p>Section one content</p>\n * <nys-divider></nys-divider>\n * <p>Section two content</p>\n * ```\n *\n * @example Inverted\n * ```html\n * <p>Section one content</p>\n * <nys-divider inverted></nys-divider>\n * <p>Section two content</p>\n * ```\n *\n * @render Inverted\n * ```html\n * <div style=\"display: flex; flex-direction: column; background-color: var(--nys-color-ink, #1b1b1b); color: var(--nys-color-ink-reverse, #fff); padding: var(--nys-space-200, 16px);\">\n * <p>Section one content</p>\n * <nys-divider inverted></nys-divider>\n * <p>Section two content</p>\n * </div>\n * ```\n *\n * @example Subtle\n * ```html\n * <p>Section one content</p>\n * <nys-divider subtle></nys-divider>\n * <p>Section two content</p>\n * ```\n */\n\nexport class NysDivider extends NysReflectsAriaElement {\n static styles = unsafeCSS(styles);\n\n /** Adjusts colors for dark backgrounds. */\n @property({ type: Boolean, reflect: true }) inverted = false;\n\n /** If true, the divider will use a lighter color. */\n @property({ type: Boolean, reflect: true }) subtle = false;\n\n /**\n * The host element IS the separator, so reflect role=\"separator\" onto the host\n * via internals. A horizontal separator's implicit aria-orientation is\n * \"horizontal\", which matches this component, so no explicit orientation is set.\n */\n protected get defaultRole(): string | null {\n return \"separator\";\n }\n\n connectedCallback() {\n // super.connectedCallback() (NysReflectsAriaElement) assigns an id when one\n // is not provided and reflects the default role onto the host.\n super.connectedCallback();\n }\n\n render() {\n // The host carries role=\"separator\"; the inner <hr> is purely presentational\n // so the separator is not announced twice in the accessibility tree.\n return html`<hr\n class=\"nys-divider\"\n role=\"presentation\"\n aria-hidden=\"true\"\n />`;\n }\n}\n\nif (!customElements.get(\"nys-divider\")) {\n customElements.define(\"nys-divider\", NysDivider);\n}\n"],"names":["LitElement","unsafeCSS","html","property","y","f","b","t","h","i","r","a","v","T","u","_NysDivider","NysReflectsAriaElement","styles","NysDivider","__decorateClass"],"mappings":"AACA,SAAA,cAAAA,GAAA,aAAAC,GAAA,QAAAC,SAAA;AAAA,SAAA,YAAAC,SAAA;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,IAAIC,IAAI;AACR,SAASC,EAAE,GAAG;AACZ,SAAO,GAAG,CAAC,IAAI,KAAK,KAAK,IAAID,GAAG;AAClC;AAqDK,MAACE,IAAI,CAAC,MAAM;AAAA,EACf,MAAMC,UAAU,EAAE;AAAA,IAChB,IAAI,WAAW;AACb,aAAO,KAAK,aAAa;AAAA,IAC3B;AAAA,IACA,WAAW;AACT,WAAK,OAAO,KAAK,KAAKF,EAAE,KAAK,QAAQ;AAAA,IACvC;AAAA,IACA,oBAAoB;AAClB,YAAM,kBAAiB,GAAI,KAAK,SAAQ;AAAA,IAC1C;AAAA,EACJ;AACE,SAAOE;AACT,GAA6BC,IAAI,CAAC,MAAM;AAAA,EACtC,MAAMD,UAAUD,EAAE,CAAC,EAAE;AAAA,IACnB,cAAc;AACZ,YAAM,GAAG,SAAS,GAAG,KAAK,cAAc;AAAA,IAC1C;AAAA,IACA,IAAI,YAAY;AACd,UAAI,KAAK,YAAa,QAAO,KAAK;AAClC,UAAI,OAAO,KAAK,mBAAmB;AACjC,YAAI;AACF,eAAK,cAAc,KAAK,gBAAe;AAAA,QACzC,QAAQ;AACN,eAAK,cAAc;AAAA,QACrB;AACF,aAAO,KAAK;AAAA,IACd;AAAA,IACA,IAAI,cAAc;AAChB,aAAO;AAAA,IACT;AAAA,IACA,YAAYG,GAAGC,GAAG;AAChB,YAAM,IAAI,KAAK;AACf,UAAI,KAAKD,KAAK,GAAG;AACf,UAAEA,CAAC,IAAIC;AACP;AAAA,MACF;AACA,YAAMC,IAAIC,EAAEH,CAAC;AACb,MAAAC,MAAM,OAAO,KAAK,gBAAgBC,CAAC,IAAI,KAAK,aAAaA,GAAGD,CAAC;AAAA,IAC/D;AAAA,IACA,0BAA0B;AACxB,YAAMD,IAAI,KAAK;AACf,MAAAA,KAAK,KAAK,YAAY,QAAQA,CAAC;AAAA,IACjC;AAAA,IACA,oBAAoB;AAClB,YAAM,kBAAiB,GAAI,KAAK,wBAAuB;AAAA,IACzD;AAAA,EACJ;AACE,SAAOF;AACT;AACA,SAASK,EAAE,GAAG;AACZ,MAAI,MAAM,OAAQ,QAAO;AACzB,QAAML,IAAI,EAAE,QAAQ,SAAS,EAAE;AAC/B,SAAO,UAAUA,EAAE,OAAO,CAAC,EAAE,gBAAgBA,EAAE,MAAM,CAAC;AACxD;AACK,MAACM,IAAoB,gBAAAL,EAAEM,CAAC;;;;;;ACxEtB,MAAMC,IAAN,MAAMA,UAAmBC,EAAuB;AAAA,EAAhD,cAAA;AAAA,UAAA,GAAA,SAAA,GAIuC,KAAA,WAAW,IAGX,KAAA,SAAS;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOrD,IAAc,cAA6B;AACzC,WAAO;AAAA,EACT;AAAA,EAEA,oBAAoB;AAGlB,UAAM,kBAAA;AAAA,EACR;AAAA,EAEA,SAAS;AAGP,WAAOd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKT;AACF;AAhCEa,EAAO,SAASd,EAAUgB,CAAM;AAD3B,IAAMC,IAANH;AAIuCI,EAAA;AAAA,EAA3ChB,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAJ/Be,EAIiC,WAAA,UAAA;AAGAC,EAAA;AAAA,EAA3ChB,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAP/Be,EAOiC,WAAA,QAAA;AA4BzC,eAAe,IAAI,aAAa,KACnC,eAAe,OAAO,eAAeA,CAAU;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nysds/nys-divider",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.20.0",
|
|
4
4
|
"description": "The Divider component from the NYS Design System.",
|
|
5
5
|
"module": "dist/nys-divider.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"lit-analyze": "lit-analyzer '**/*.ts'"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
+
"@nysds/internals": "^1.20.0",
|
|
26
27
|
"lit": "^3.3.1",
|
|
27
28
|
"typescript": "^5.9.3",
|
|
28
29
|
"vite": "^7.3.1"
|