eidotter 0.42.0 → 0.44.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.
Files changed (33) hide show
  1. package/README.md +4 -4
  2. package/dist/components/Bench/components/Bench.d.ts +45 -0
  3. package/dist/components/Bench/components/Bench.js +46 -0
  4. package/dist/components/Bench/components/index.d.ts +2 -0
  5. package/dist/components/Bench/components/index.js +1 -0
  6. package/dist/components/Bench/index.d.ts +2 -0
  7. package/dist/components/Bench/index.js +1 -0
  8. package/dist/components/CmdPalette/components/CmdPalette.js +7 -3
  9. package/dist/components/Header/components/Header.d.ts +38 -2
  10. package/dist/components/Header/components/Header.js +23 -5
  11. package/dist/components/Icon/components/Icon.d.ts +13 -13
  12. package/dist/components/Icon/components/Icon.js +12 -12
  13. package/dist/components/LegalPage/components/LegalPage.d.ts +7 -0
  14. package/dist/components/LegalPage/components/LegalPage.js +1 -1
  15. package/dist/components/PageShell/components/PageSection.d.ts +25 -0
  16. package/dist/components/PageShell/components/PageSection.js +16 -0
  17. package/dist/components/PageShell/components/PageShell.d.ts +65 -0
  18. package/dist/components/PageShell/components/PageShell.js +33 -0
  19. package/dist/components/PageShell/components/index.d.ts +4 -0
  20. package/dist/components/PageShell/components/index.js +2 -0
  21. package/dist/components/PageShell/index.d.ts +2 -0
  22. package/dist/components/PageShell/index.js +1 -0
  23. package/dist/components/registry.js +30 -0
  24. package/dist/eidotter.css +1 -1
  25. package/dist/index.d.ts +5 -1
  26. package/dist/index.es.js +5517 -4720
  27. package/dist/index.umd.js +4 -4
  28. package/llms.txt +3 -3
  29. package/migrations/0.41.0.md +3 -2
  30. package/migrations/0.43.0.md +129 -0
  31. package/migrations/0.44.0.md +110 -0
  32. package/migrations/README.md +4 -0
  33. package/package.json +20 -20
package/llms.txt CHANGED
@@ -3,7 +3,7 @@
3
3
  > DOS-themed React component library with authentic CGA/amber phosphor aesthetics.
4
4
 
5
5
  ## Quick Facts
6
- - 59 components (Accordion, AIText, Alert, Badge, Brand (Logo, Mark, Wordmark, BrandLockup), Breadcrumb, Button, CalendarHeatmap, Card, Chat (ChatMessage, ChatHistory, ChatInput, ChatContainer), Checkbox, ChecklistRow, CmdPalette, CommandPrompt, Connector, CopyButton, DecayStrip, DosDialog, DosFigure, DosWindow, EmptyState, FilterBar, Footer, Gauge, Header, HoldToComplete, Icon, IconButton, InlineExpand, InlineLink, Input, LabeledProgress, LedgerRow, LegalPage, Lightbox, Meter (MeterGroup), Modal, Nav, Notification, Progress, ProgressRing, RangeBar, RetroEffects, SectionHeading, Select, Separator, SeriesBars, Skeleton, Stat, Switch, Tabs, Tag, Terminal, TextScramble, TimelineContainer, TimelineFeed, TimelineNode, TimelinePage, VitalsStrip)
6
+ - 61 components (Accordion, AIText, Alert, Badge, Bench, Brand (Logo, Mark, Wordmark, BrandLockup), Breadcrumb, Button, CalendarHeatmap, Card, Chat (ChatMessage, ChatHistory, ChatInput, ChatContainer), Checkbox, ChecklistRow, CmdPalette, CommandPrompt, Connector, CopyButton, DecayStrip, DosDialog, DosFigure, DosWindow, EmptyState, FilterBar, Footer, Gauge, Header, HoldToComplete, Icon, IconButton, InlineExpand, InlineLink, Input, LabeledProgress, LedgerRow, LegalPage, Lightbox, Meter (MeterGroup), Modal, Nav, Notification, PageShell (PageSection), Progress, ProgressRing, RangeBar, RetroEffects, SectionHeading, Select, Separator, SeriesBars, Skeleton, Stat, Switch, Tabs, Tag, Terminal, TextScramble, TimelineContainer, TimelineFeed, TimelineNode, TimelinePage, VitalsStrip)
7
7
  - Amber theme is the default (amber-on-black phosphor CRT); a light theme ("amber in daylight") is in progress (DMNC-1058). Components paint via semantic roles so they re-theme — do not hardcode dark-only assumptions.
8
8
  - CSS custom properties + Tailwind preset
9
9
  - React 18/19, Tailwind 3/4 compatible
@@ -27,8 +27,8 @@ Apps default to the amber theme and offer the light theme via a consistent setti
27
27
 
28
28
  ## Upgrading
29
29
  - Every minor with breaking/visible changes ships a guide at `node_modules/eidotter/migrations/<version>.md` (index: `migrations/README.md`).
30
- - Read every guide between the installed and the target version, oldest first, and follow its checklist. First guide: `migrations/0.41.0.md`.
31
- - 0.x caret gotcha: `^0.40.x` never resolves to 0.41.0; bump the range explicitly, to `^0.42.0` (0.41.0 shipped before its review fixes).
30
+ - Read every guide between the installed and the target version, oldest first, and follow its checklist. Guides: `migrations/0.41.0.md`, `migrations/0.43.0.md`, `migrations/0.44.0.md`.
31
+ - 0.x caret gotcha: `^0.40.x` never resolves to 0.41.0; bump the range explicitly, to `^0.44.0`.
32
32
 
33
33
  ## Token Categories
34
34
  - `--color-semantic-*`: USE THESE for components (background, text, border, status)
@@ -61,8 +61,9 @@ cp node_modules/eidotter/dist/eidotter.css /tmp/eidotter-old.css
61
61
  Then change the range explicitly to the latest 0.41.x (0.41.3 or later):
62
62
 
63
63
  ```bash
64
- npm install eidotter@^0.42.0
64
+ npm install eidotter@^0.41.3
65
65
  # check what actually resolved: 0.41.3 or later
66
+ # going further? read 0.43.0.md next, then install ^0.43.0
66
67
  npm ls eidotter
67
68
  ```
68
69
 
@@ -917,7 +918,7 @@ Work top to bottom. Each step points at the section above that explains it.
917
918
  - [ ] Read every guide in `node_modules/eidotter/migrations/` between your old
918
919
  version and 0.41.0, oldest first (see `README.md` in that folder).
919
920
  - [ ] `cp node_modules/eidotter/dist/eidotter.css /tmp/eidotter-old.css` (before `npm install`).
920
- - [ ] Install the latest 0.41.x (0.41.3 or later): `npm install eidotter@^0.42.0`, then `npm ls eidotter` shows 0.41.3 or later. Commit the lockfile.
921
+ - [ ] Install the latest 0.41.x (0.41.3 or later): `npm install eidotter@^0.41.3` (or straight to `^0.43.0` after reading `0.43.0.md`), then `npm ls eidotter` shows 0.41.3 or later. Commit the lockfile.
921
922
  - [ ] Tailwind v4 apps: load eidotter in a cascade layer (`@layer theme, base, components, eidotter, utilities;` then `@import "eidotter/styles" layer(eidotter);`), drop the JS `import 'eidotter/styles'`, keep your own resets layered ("Tailwind v4 apps" after "How to bump").
922
923
  - [ ] No-Tailwind apps: run the class diff from section 2 and fix every real hit.
923
924
  - [ ] No-preflight apps: set `html` font, colours and `a` colour yourself (section 4).
@@ -0,0 +1,129 @@
1
+ # Upgrading to eidotter 0.43.0
2
+
3
+ From 0.42.x. Coming from older versions, read [0.41.0.md](./0.41.0.md) first.
4
+
5
+ 0.43.0 is mostly additive: a page template (`PageShell`, `PageSection`, `Bench`)
6
+ and four opt-in `Header` props. One change is visible without touching your
7
+ code: a long `Header` brand wraps instead of ending in an ellipsis.
8
+
9
+ ## Who must act
10
+
11
+ - Apps that render `<Header>` with a long `brandName` on narrow screens:
12
+ check the header height (section 2).
13
+ - Everyone else: bump and you are done. The new pieces are optional.
14
+
15
+ ## 1. How to bump
16
+
17
+ 0.x caret ranges stop at the next minor (`^0.42.0` never resolves to 0.43.0),
18
+ so change the range explicitly:
19
+
20
+ ```bash
21
+ npm install eidotter@^0.43.0
22
+ npm ls eidotter # 0.43.0 or later
23
+ ```
24
+
25
+ Commit the lockfile.
26
+
27
+ ## 2. Visible change: the Header brand wraps
28
+
29
+ **What changed.** The brand name in `Header` (`brand="lockup"`, `"mark"`,
30
+ `"text"` or `children`) used to stay on one line and end in "…" when the brand,
31
+ the `end` slot and the MENU trigger did not fit. Now the name moves onto a
32
+ second line. The brand link shrinks before the `end` slot does; the end slot
33
+ clips only once the brand reaches its floor (the icon plus about 8 tracked
34
+ characters; from 0.44.0 the floor is the longest word, see 0.44.0.md). Words break at spaces. Only a single word longer than the floor
35
+ breaks mid-word. The icon top-aligns beside a two-line name. A brand that fits
36
+ on one line renders exactly as before.
37
+
38
+ **How to find it.** Open each page with a `Header` at 320px and 390px wide. If
39
+ the brand name used to end in "…", it now wraps and the header is taller.
40
+
41
+ **What to do.**
42
+
43
+ - Nothing, if the taller header looks fine. This was the intended fix.
44
+ - If something is sized to a fixed header height (`scroll-padding-top`, a
45
+ sticky sub-header's `top`, a hero's `min-height: calc(100vh - 64px)`), measure
46
+ the header instead, or give it room for two lines.
47
+ - If you prefer just the icon on phones, pass `brandCollapse="mark"` (section 3).
48
+ - CSS you wrote against the old ellipsis (`text-overflow` or `white-space` on
49
+ `.eidotter-header__brand-name`) can be deleted.
50
+
51
+ **How to verify.** At 320px the full brand name is readable, nothing paints
52
+ over it, and the MENU trigger stays on the right.
53
+
54
+ ## 3. New, opt-in
55
+
56
+ All defaults render as in 0.42.
57
+
58
+ ### Header props
59
+
60
+ | Prop | Values | Effect |
61
+ |---|---|---|
62
+ | `layout` | `'inline'` (default), `'stacked'` | `stacked`: the desktop nav gets its own row under the brand, on the brand's left edge. The `end` slot and MENU stay on the brand row. Below 768px it behaves like `inline`. |
63
+ | `rule` | `true` (default), `false` | `false` removes the bottom line and the glow under it. |
64
+ | `contained` | `false` (default), `true`, CSS length | Centres the header content in a column (`true` = 1240px, or e.g. `'72rem'`) with the PageShell gutter. The header band itself stays full width. |
65
+ | `brandCollapse` | `'none'` (default), `'mark'` | `mark`: below 480px of header width only the icon shows. The name stays the link's accessible name. Needs `brand="lockup"` or `"mark"`. |
66
+
67
+ ### PageShell and PageSection
68
+
69
+ One centred column for a whole page: `header`, `intro`, sections and `footer`
70
+ share one left edge, 40px apart, with no dividers.
71
+
72
+ ```tsx
73
+ import { Header, PageShell, PageSection } from 'eidotter';
74
+
75
+ <PageShell
76
+ header={<Header brandName="Example" items={items} layout="stacked" rule={false} />}
77
+ intro={{
78
+ eyebrow: 'Review',
79
+ title: 'Page title',
80
+ lead: 'One paragraph, up to 68 characters wide.',
81
+ toc: [{ href: '#findings', label: 'Findings' }],
82
+ }}
83
+ footer={<Footer />}
84
+ >
85
+ <PageSection id="findings" title="Findings">…</PageSection>
86
+ </PageShell>
87
+ ```
88
+
89
+ - `maxWidth` (default `'1240px'`), `contentAs` (`'main'` default; use `'div'`
90
+ if your layout already renders `<main>`), `contentId` (skip-link target).
91
+ - A `Header` in the `header` slot drops its own inline padding, so its brand
92
+ sits on the column edge. Use `contained` only on a `Header` outside PageShell.
93
+ - `PageSection`: `title` (an h2 by default, `headingLevel` 2 to 4), `id` for TOC
94
+ anchors.
95
+
96
+ ### Bench
97
+
98
+ A before/after compare unit on `DosWindow`.
99
+
100
+ ```tsx
101
+ import { Bench } from 'eidotter';
102
+
103
+ <Bench
104
+ title="Home page"
105
+ note="Optional muted note"
106
+ panes={[
107
+ { label: 'Before', tone: 'before', content: <img src={before} alt="Home page before" /> },
108
+ { label: 'After', tone: 'after', content: <img src={after} alt="Home page after" /> },
109
+ ]}
110
+ />
111
+ ```
112
+
113
+ - `chips` (ReactNode in the title strip), `headingLevel` (default 3),
114
+ `maxHeight` of each pane frame (default `'640px'`).
115
+ - Pane `frame: 'phone'` centres the content at 390px. `frameLabel` names the
116
+ scrollable frame for screen readers.
117
+ - Panes stack below 760px of bench width.
118
+
119
+ Both components are server-safe. In a Next.js server component, deep-import
120
+ them: `eidotter/components/PageShell`, `eidotter/components/Bench`.
121
+
122
+ The Storybook story `Templates/ReviewPage` shows all of it composed.
123
+
124
+ ## Checklist
125
+
126
+ - [ ] `npm install eidotter@^0.43.0`; `npm ls eidotter` shows 0.43.0 or later. Commit the lockfile.
127
+ - [ ] Check every page with a `Header` at 320px and 390px; fix anything sized to a fixed header height (section 2).
128
+ - [ ] Delete CSS that targeted the old brand ellipsis, if any.
129
+ - [ ] Optional: adopt `layout="stacked"`, `rule={false}`, `brandCollapse="mark"`, `PageShell` or `Bench` (section 3).
@@ -0,0 +1,110 @@
1
+ # Upgrading to eidotter 0.44.0
2
+
3
+ From 0.43.x. Coming from older versions, read [0.41.0.md](./0.41.0.md) and
4
+ [0.43.0.md](./0.43.0.md) first.
5
+
6
+ 0.44.0 fixes what the first 0.43 adoptions found. Four changes are visible
7
+ without touching your code; one prop is new.
8
+
9
+ ## Who must act
10
+
11
+ - Apps that mark AI-drafted content (`data-ai-block`, `data-provenance="ai-draft"`): check your headings (section 2).
12
+ - Apps that render `PageShell`: give the page its own background and font if it relied on PageShell's (section 3).
13
+ - Everyone else: bump and check the Header and the ⌘K palette at phone width.
14
+
15
+ ## 1. How to bump
16
+
17
+ ```bash
18
+ npm install eidotter@^0.44.0
19
+ npm ls eidotter # 0.44.0 or later
20
+ ```
21
+
22
+ Commit the lockfile.
23
+
24
+ ## 2. Visible: headings are never marked as AI-drafted
25
+
26
+ **What changed.** `provenance.css` used to paint `h1` to `h6` with the
27
+ magenta AI-draft gradient inside a `data-ai-block` wrapper, and on a heading
28
+ that carried `data-provenance="ai-draft"` itself. Headings now keep their
29
+ normal colour in both cases. Only prose (paragraphs, list items, quotes and
30
+ their emphasis) shows the marker. A heading nested inside a marked container
31
+ (a `<div data-provenance="ai-draft">`) gets a readable colour back: your own
32
+ heading colour if you set one, otherwise the body text colour.
33
+
34
+ **How to find it.** Open a page wrapped in `data-ai-block`. Page, section and
35
+ card titles that were magenta are now in your heading colour.
36
+
37
+ **What to do.** Nothing, unless your own CSS paints headings with the
38
+ gradient. Search your styles for `data-ai-block` or `ai-draft` rules that
39
+ target `h1`–`h6` and remove them.
40
+
41
+ ## 3. Visible: PageShell inherits the page
42
+
43
+ **What changed.** `PageShell` no longer paints `background-primary` and no
44
+ longer sets `font-family`, `font-size` or `line-height`. Your page's own
45
+ background (a CRT tint, `RetroEffects`) and body font now show through. Its
46
+ column no longer grows past the viewport when a child is wide (a Header with an
47
+ `end` slot, a Footer), and with `contentId` the content gets `tabIndex={-1}`,
48
+ so a skip link moves keyboard focus.
49
+
50
+ **What to do.** If your page had no background or font of its own and relied
51
+ on PageShell's, set them on `body` or put a class on the shell:
52
+
53
+ ```tsx
54
+ <PageShell className="my-page" …>
55
+ ```
56
+
57
+ ```css
58
+ .my-page {
59
+ background-color: var(--color-semantic-background-primary);
60
+ font-family: var(--typography-font-family-body), var(--typography-font-family-fallback);
61
+ line-height: 1.5;
62
+ }
63
+ ```
64
+
65
+ **How to verify.** At 320px and 390px, `document.documentElement.scrollWidth`
66
+ equals the viewport width.
67
+
68
+ ## 4. Visible: a one-word Header brand never splits
69
+
70
+ **What changed.** 0.43.0 floored the brand at about 8 tracked characters and
71
+ broke a longer single word mid-word ("DMNC.TEC / H" at 320px). The floor is
72
+ now the brand's longest word: words break only at spaces, and once the brand is
73
+ at its floor the `end` slot clips instead. A single word wider than the whole
74
+ row (about 11 tracked characters beside the lockup icon and MENU at 320px)
75
+ overflows.
76
+
77
+ **What to do.** Check the Header at 320px. If the `end` slot content is cut
78
+ off, hide it below a width you choose or move it into the menu. If the brand
79
+ word itself is too long, shorten `brandName` or use `brandCollapse="mark"`.
80
+
81
+ ## 5. Visible: CmdPalette
82
+
83
+ - The search input is focused as the palette opens, in the same tap or
84
+ keypress, so phones raise the keyboard straight away.
85
+ - The blinking `_` in the `JUMP TO` strip is gone (it looked like an input).
86
+ The `eidotter-cmdpal__blink` class no longer exists; delete any CSS that
87
+ targets it.
88
+
89
+ ## 6. New: LegalPage `embedded`
90
+
91
+ ```tsx
92
+ <PageShell header={…} footer={…}>
93
+ <LegalPage embedded title="Impressum" date="Stand: Oktober 2026">
94
+ <ImpressumAddress />
95
+ </LegalPage>
96
+ </PageShell>
97
+ ```
98
+
99
+ `embedded` drops LegalPage's own 720px column, centring, padding, min-height,
100
+ background and font, and start-aligns the hero without the rule under it, so
101
+ the page shares your site's left edge. Without it, LegalPage renders as before.
102
+
103
+ ## Checklist
104
+
105
+ - [ ] `npm install eidotter@^0.44.0`; `npm ls eidotter` shows 0.44.0 or later. Commit the lockfile.
106
+ - [ ] Pages with `data-ai-block`: titles are in your heading colour; remove any own CSS that painted headings (section 2).
107
+ - [ ] Pages on `PageShell`: background and font come from your page; no sideways scroll at 320/390 (section 3).
108
+ - [ ] Header at 320px: brand on whole words, nothing important lost from the `end` slot (section 4).
109
+ - [ ] Delete CSS targeting `eidotter-cmdpal__blink`, if any (section 5).
110
+ - [ ] Optional: `LegalPage embedded` inside your page column (section 6).
@@ -34,6 +34,8 @@ The folder ships in the npm package:
34
34
  ```
35
35
  node_modules/eidotter/migrations/README.md
36
36
  node_modules/eidotter/migrations/0.41.0.md
37
+ node_modules/eidotter/migrations/0.43.0.md
38
+ node_modules/eidotter/migrations/0.44.0.md
37
39
  ```
38
40
 
39
41
  It is also exported, so tooling can resolve a guide by path:
@@ -44,3 +46,5 @@ It is also exported, so tooling can resolve a guide by path:
44
46
  | Version | Summary |
45
47
  |---|---|
46
48
  | [0.41.0](./0.41.0.md) | 16px floor, CSS reset and unused utilities no longer leak, `text-secondary` meaning change, Header lockup default, overlays on `DosDialog` (removed classes), focus rings; adopt `IconButton`, `DosDialog`, `DosWindow`, the favicon export and the `amber-paper` theme |
49
+ | [0.43.0](./0.43.0.md) | `Header` brand wraps instead of ellipsizing; adopt `PageShell`/`PageSection`, `Bench` and the opt-in `Header` `layout`/`rule`/`contained`/`brandCollapse` props |
50
+ | [0.44.0](./0.44.0.md) | Headings never AI-marked; `PageShell` inherits background and font; one-word Header brand never splits; `CmdPalette` cursor removed; adopt `LegalPage` `embedded` |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eidotter",
3
- "version": "0.42.0",
3
+ "version": "0.44.0",
4
4
  "type": "module",
5
5
  "description": "A DOS Themed Design System",
6
6
  "main": "./dist/index.umd.js",
@@ -146,8 +146,8 @@
146
146
  },
147
147
  "devDependencies": {
148
148
  "@eslint/js": "^10.0.1",
149
- "@figma/plugin-typings": "^1.107.0-beta.2",
150
- "@figma/rest-api-spec": "^0.41.0",
149
+ "@figma/plugin-typings": "^1.142.0",
150
+ "@figma/rest-api-spec": "^0.45.0",
151
151
  "@storybook/addon-a11y": "^10.2.7",
152
152
  "@storybook/addon-designs": "^12.0.0",
153
153
  "@storybook/addon-docs": "^10.2.7",
@@ -155,42 +155,42 @@
155
155
  "@storybook/react": "^10.2.7",
156
156
  "@storybook/react-vite": "^10.2.7",
157
157
  "@storybook/test-runner": "^0.26.0",
158
- "@tailwindcss/postcss": "^4.3.0",
159
- "@testing-library/dom": "^10.4.1",
160
- "@testing-library/jest-dom": "^6.6.3",
161
- "@testing-library/react": "^16.3.0",
158
+ "@tailwindcss/postcss": "^4.3.3",
159
+ "@testing-library/dom": "^10.4.2",
160
+ "@testing-library/jest-dom": "^7.0.1",
161
+ "@testing-library/react": "^16.3.3",
162
162
  "@testing-library/user-event": "^14.6.1",
163
163
  "@types/glob": "^8.1.0",
164
164
  "@types/jest": "^30.0.0",
165
- "@types/node": "^26.0.1",
166
- "@types/react": "^19.1.2",
167
- "@types/react-dom": "^19.0.0",
168
- "@vitejs/plugin-react": "^6.0.2",
165
+ "@types/node": "^26.6.5",
166
+ "@types/react": "^19.3.0",
167
+ "@types/react-dom": "^19.3.0",
168
+ "@vitejs/plugin-react": "^6.1.2",
169
169
  "axe-playwright": "^2.2.2",
170
- "chromatic": "^18.13.0",
170
+ "chromatic": "^18.13.2",
171
171
  "cross-env": "^10.1.0",
172
172
  "dotenv": "^17.3.1",
173
- "eslint": "^10.0.3",
173
+ "eslint": "^10.13.0",
174
174
  "eslint-plugin-react-hooks": "^7.0.1",
175
175
  "figma-js": "^1.16.1-0",
176
176
  "gh-pages": "^6.3.0",
177
177
  "glob": "^13.0.0",
178
178
  "identity-obj-proxy": "^3.0.0",
179
- "jest": "^30.2.0",
180
- "jest-environment-jsdom": "^30.0.2",
179
+ "jest": "~30.4.2",
180
+ "jest-environment-jsdom": "~30.4.1",
181
181
  "leva": "^0.10.1",
182
182
  "postcss": "^8.5.8",
183
183
  "remark-gfm": "^4.0.1",
184
184
  "storybook": "^10.2.7",
185
- "style-dictionary": "^5.1.1",
186
- "tailwindcss": "^4.3.0",
185
+ "style-dictionary": "5.5.2",
186
+ "tailwindcss": "^4.3.3",
187
187
  "tailwindcss-react-aria-components": "^2.0.1",
188
- "ts-jest": "^29.4.0",
188
+ "ts-jest": "^29.4.15",
189
189
  "ts-morph": "^28.0.0",
190
190
  "ts-node": "^10.9.2",
191
- "tsx": "^4.23.1",
191
+ "tsx": "^4.23.15",
192
192
  "typescript": "^5.7.3",
193
- "typescript-eslint": "^8.54.0",
193
+ "typescript-eslint": "^8.72.0",
194
194
  "vite": "^8.0.10"
195
195
  },
196
196
  "dependencies": {