@kungal/ui-vue 1.6.1 → 1.6.2

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 (2) hide show
  1. package/CHANGELOG.md +1253 -0
  2. package/package.json +4 -3
package/CHANGELOG.md ADDED
@@ -0,0 +1,1253 @@
1
+ # @kungal/ui-vue
2
+
3
+ ## 1.6.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 05f2bee: chore: ship CHANGELOG.md in the published packages
8
+
9
+ `CHANGELOG.md` is now included in each package's npm tarball (added to `files`),
10
+ so downstream can read the per-version changes straight from the npm package
11
+ page — not only from the GitHub repo. (Releases also now appear on GitHub
12
+ Releases and the docs site's auto-generated /changelog page.)
13
+
14
+ - Updated dependencies [05f2bee]
15
+ - @kungal/ui-core@1.6.2
16
+
17
+ ## 1.6.1
18
+
19
+ ### Patch Changes
20
+
21
+ - 498a9c1: fix(vue): Accordion duplicate ids + Carousel dot indicators
22
+
23
+ Two issues found reviewing the 1.6.0 components:
24
+
25
+ - **KunAccordion**: header/panel ARIA ids were derived from the item `value`, so
26
+ two accordions reusing the same values (e.g. `a`/`b`) emitted duplicate ids —
27
+ invalid HTML and a broken `aria-controls` target. Ids are now generated with
28
+ Vue's SSR-stable `useId()`, so they're globally unique regardless of `value`.
29
+ (`name` stays as an optional readable prefix.)
30
+ - **KunCarousel**: with `slidesPerView > 1` the dots rendered one-per-slide, but
31
+ the last `slidesPerView − 1` of them could never become active. Dots now map to
32
+ reachable scroll positions (`maxIndex + 1`), so every dot works. The dots also
33
+ switched from an incorrect `role="tab"` (with no tabpanels) to plain buttons
34
+ with `aria-current`, and an internal computed no longer shadows the
35
+ `showArrows` prop.
36
+ - @kungal/ui-core@1.6.1
37
+
38
+ ## 1.6.0
39
+
40
+ ### Minor Changes
41
+
42
+ - 5d9ced9: feat(vue): five new components — Accordion, Carousel, Skeleton, Steps, Timeline
43
+
44
+ Adds the components the kungal apps were repeatedly hand-rolling on top of KunUI.
45
+ All are SSR-safe and accessible, and reuse the shared design tokens / contrast
46
+ helpers.
47
+
48
+ - **KunAccordion + KunAccordionItem** — collapsible sections. Single-open by
49
+ default or `multiple`; controlled via `v-model` (string / string[]) or
50
+ uncontrolled from `defaultValue`. `light` / `bordered` / `splitted` variants.
51
+ The reveal uses the CSS grid `0fr → 1fr` trick — animates real height with no
52
+ JS measurement and renders collapsed in SSR HTML (no hydration flash). Proper
53
+ `aria-expanded` / `aria-controls`, and the closed panel is `inert`.
54
+ - **KunCarousel + KunCarouselItem** — horizontal slider on native CSS
55
+ scroll-snap, so touch swipe + momentum work with zero JS and it renders
56
+ server-side. Prev/next arrows, dot indicators (read from scroll position) and
57
+ optional `autoplay` are progressive enhancements; autoplay pauses on
58
+ hover/focus and is off under reduced-motion. `slidesPerView` for thumbnail
59
+ strips.
60
+ - **KunSkeleton** — content loading placeholder (`text` / `rect` / `circle`),
61
+ `loaded` swaps in the real content via the default slot, pulse respects
62
+ reduced-motion.
63
+ - **KunSteps** — multi-step indicator (`items` + `current`), horizontal /
64
+ vertical, done / active / pending states, contrast-correct filled markers.
65
+ - **KunTimeline + KunTimelineItem** — vertical timeline with coloured dots or
66
+ icon medallions; the connecting line is pure CSS.
67
+
68
+ ### Patch Changes
69
+
70
+ - @kungal/ui-core@1.6.0
71
+
72
+ ## 1.5.0
73
+
74
+ ### Patch Changes
75
+
76
+ - 13005ea: fix(vue): legible foreground on solid/filled color variants (esp. dark mode)
77
+
78
+ Solid fills painted white text on `bg-{color}`, which has two problems verified
79
+ by contrast measurement:
80
+
81
+ 1. The dark color scale is inverted, so a plain `bg-{color}` renders **pale** in
82
+ dark mode — white text dropped to ~1.0–2.5:1 (the `solid` Info `info` callout
83
+ was essentially invisible, white on near-white).
84
+ 2. The light hues (secondary / success / warning / info) are light in **both**
85
+ modes, so white text fails WCAG everywhere (~2:1), not just in dark mode.
86
+
87
+ New single source of truth in `@kungal/ui-core` — `kunSolidClasses`,
88
+ `kunSolidBgClasses`, `kunSolidFgClasses` — pairs each fill with a `dark:bg-*`
89
+ pin (stays saturated in dark mode) and a contrast-correct foreground: the dark
90
+ hues (default / primary / danger) keep white, the light hues take dark text.
91
+ Every solid foreground now clears WCAG AA in both modes (≈4.1–10.3:1).
92
+
93
+ Applied to: Button / Chip (shared variant matrix), Info (`solid` / `shadow` — the
94
+ reported bug; its title no longer overrides the box foreground), Badge, Progress
95
+ (on-bar label), Tab (`solid` / `pills`), DatePicker (selected day), CheckBox
96
+ (checked fill + check/dash mark), Switch (on-track).
97
+
98
+ Visible change: `secondary` / `success` / `warning` / `info` solid components now
99
+ use dark text instead of (illegible) white.
100
+
101
+ - Updated dependencies [13005ea]
102
+ - @kungal/ui-core@1.5.0
103
+
104
+ ## 1.4.2
105
+
106
+ ### Patch Changes
107
+
108
+ - 6d70e87: fix(vue): keep `bordered` variants the same size as the others (Info, TagInput)
109
+
110
+ A `bordered` variant adds a real border, which enlarges the element unless the
111
+ other variants reserve the same width with a transparent border. Button / Chip
112
+ (via the shared variant matrix) and Tab already did this; Info and TagInput did
113
+ not, so their `bordered` variant was ~2–3px larger than `solid` / `light` /
114
+ `flat`.
115
+
116
+ - **Info**: every variant now carries the same `1.5px` border (transparent for
117
+ the non-bordered ones), so switching variants no longer changes the box size.
118
+ - **TagInput**: the wrapper always reserves a `1px` transparent border; `flat`
119
+ and `bordered` are now identical in size, and the error border is now visible
120
+ on the `flat` variant too (it previously had no border width to colour).
121
+
122
+ No visual change to the non-bordered variants beyond the size becoming
123
+ consistent — the reserved border is transparent.
124
+
125
+ - @kungal/ui-core@1.4.2
126
+
127
+ ## 1.4.1
128
+
129
+ ### Patch Changes
130
+
131
+ - 0752bc1: fix(vue): SSR-safe active highlight for KunTab
132
+
133
+ The Tab active indicator was measured on the client (`offsetLeft`/`offsetWidth`)
134
+ and so was absent from server-rendered HTML — on first paint (and the whole
135
+ pre-hydration window) the selected tab showed only a text-color change, with the
136
+ underline/pill missing. For the `solid` variant the active tab was effectively
137
+ invisible (white text on no background) until hydration.
138
+
139
+ The selected tab now carries a CSS-only active highlight that renders in SSR
140
+ (inline inset box-shadow for `underlined`; background tint for `solid` / `light`);
141
+ the JS-measured sliding indicator takes over after the client mounts, with no
142
+ hydration mismatch. The indicator is also re-measured on mount and via a
143
+ `ResizeObserver`, so web-font swaps and container resizes no longer leave it
144
+ stale. `pills` / `bordered` were already SSR-safe and are unchanged.
145
+
146
+ - @kungal/ui-core@1.4.1
147
+
148
+ ## 1.4.0
149
+
150
+ ### Minor Changes
151
+
152
+ - cf9196c: **KunContent: opt-in editorial prose typography + first-class code-copy & compact density.**
153
+
154
+ - **New opt-in stylesheet `@kungal/ui-vue/prose.css`** — a token-driven editorial type system for any `.kun-prose` container (comfortable measure, modular heading scale, generous CJK-friendly leading, refined lists/blockquote/code/table/links, auto light/dark). It is a _separate import on purpose_: KunContent's `style.css` still ships only behaviour, so downstreams that already own their own `.kun-prose` typography are unaffected — they simply don't import it.
155
+ - **Code-block copy button is now built in.** KunContent auto-injects a self-styled (token-aware, dark-mode-aware) copy button into each code block, with click-to-copy + instant icon feedback. Idempotent: a block that already carries a `.copy` button (e.g. one emitted by a Markdown pipeline) is left untouched, so it never doubles up — downstreams can drop their own copy implementations.
156
+ - **New `compact` prop** on KunContent (adds `.kun-prose-compact`) for tighter comment/reply streams — smaller base size, leading and spacing, full-width instead of the 40rem measure. Visual effect requires importing `@kungal/ui-vue/prose.css`.
157
+
158
+ Syntax highlighting remains a content-pipeline concern (not bundled); the prose styles theme plain code blocks neutrally and compose with pre-highlighted markup.
159
+
160
+ ### Patch Changes
161
+
162
+ - @kungal/ui-core@1.4.0
163
+
164
+ ## 1.3.0
165
+
166
+ ### Minor Changes
167
+
168
+ - 27e40d4: **Content spoilers**: the particle mask now follows the real text shape. Multi-line spoilers are masked **line-by-line**, and space-separated text is masked **word-by-word** (gaps at spaces and ragged line ends stay clear) instead of one solid block — the cover lines up with how the text actually flows. CJK / no-space text degrades naturally to per-line masking.
169
+
170
+ Word/line rectangles are measured once per layout via the Range API (never per frame), and the per-frame cost stays capped (the particle budget and tint fills are independent of text length), so animation never janks regardless of size. The markup contract is unchanged (`class="kun-spoiler kun-spoiler-hidden"`).
171
+
172
+ ### Patch Changes
173
+
174
+ - @kungal/ui-core@1.3.0
175
+
176
+ ## 1.2.0
177
+
178
+ ### Minor Changes
179
+
180
+ - 8368cfe: **Content spoilers**: reworked the click-to-reveal spoiler effect. The covered region now renders an animated dust/particle field (spawn → drift → fade → respawn) instead of a flat frosted block, and revealing dissolves the particles out as the text appears. The markup contract is unchanged (`class="kun-spoiler kun-spoiler-hidden"` in trusted HTML).
181
+
182
+ Under the hood it's now SSR-safe by construction (the cover is pure CSS present in the server-rendered HTML — no post-mount DOM injection, no hydration flash, and the secret stays hidden with JS disabled), the particle canvas is a pure client-side enhancement driven by one shared, fps-throttled rAF loop with off-screen spoilers paused via IntersectionObserver, and spoilers are now keyboard-accessible (`role="button"`, focusable, Enter/Space to reveal, `aria-expanded`). Respects `prefers-reduced-motion`. The cover is rectangular (no rounded corners) so it lines up with the browser's text-selection highlight.
183
+
184
+ ### Patch Changes
185
+
186
+ - @kungal/ui-core@1.2.0
187
+
188
+ ## 1.1.1
189
+
190
+ ### Patch Changes
191
+
192
+ - c6d7502: **Select / Autocomplete**: fix the page jumping to the top the first time the dropdown is opened while scrolled down. The teleported list is momentarily at `(0,0)` before floating-ui's first async measurement, so `Element.scrollIntoView()` (and a plain `focus()` on the search field) scrolled the whole window to the top. The active option now scrolls **within its own list container** only, and Select's search-field focus uses `{ preventScroll: true }`.
193
+ - @kungal/ui-core@1.1.1
194
+
195
+ ## 1.1.0
196
+
197
+ ### Minor Changes
198
+
199
+ - eaf375b: **Lightbox**: clicking the dark backdrop around the image now closes the viewer, matching the convention of every modern image viewer (and complementing the existing ESC-to-close). Clicks on the image and on the controls are unaffected, and a click that is the tail of a drag / pan / swipe no longer dismisses the viewer.
200
+
201
+ ### Patch Changes
202
+
203
+ - @kungal/ui-core@1.1.0
204
+
205
+ ## 1.0.0
206
+
207
+ ### Major Changes
208
+
209
+ - ac0bd4e: 1.0.0 — first stable release.
210
+
211
+ The component set (57 Vue components) and the design-token system are stable and
212
+ documented. Over the 0.14 → 0.22 line every cross-cutting surface was routed
213
+ through a single source of truth: borders (`--color-kun-border` / `border-kun`),
214
+ focus rings (`kunFocusRingClasses`), corner radius (`rounded-kun-*` /
215
+ `--kun-radius-scale`), elevation (`--shadow-kun-*`), motion (`--kun-dur-*` +
216
+ `duration-kun-*` + `ease-kun-*`), and sizing (`kunControlSize` /
217
+ `kunSelectionSize` / `kunChipSize`).
218
+
219
+ Also fixes a registration gap surfaced while completing the docs: `KunAutocomplete`,
220
+ `KunNumberInput`, and `KunPinInput` (added in 0.14.0) were never added to the Nuxt
221
+ layer's auto-import list, so Nuxt consumers hit "Failed to resolve component". They
222
+ now auto-import like every other component (plain-Vue `app.use(KunUI)` already
223
+ registered them). Their docs pages, prop tables, and `llms.txt` entries are added.
224
+
225
+ ### Patch Changes
226
+
227
+ - Updated dependencies [ac0bd4e]
228
+ - @kungal/ui-core@1.0.0
229
+
230
+ ## 0.22.4
231
+
232
+ ### Patch Changes
233
+
234
+ - 157c04f: fix(vue): single-line audit follow-ups (menu items, UserChip, Tooltip)
235
+
236
+ After a full sweep for which components carry a single-unit label vs. flowing
237
+ prose:
238
+
239
+ - **`KunDropdown` / `KunContextMenu`** menu-item labels now `truncate` (single
240
+ line + ellipsis when the menu is width-constrained) with `shrink-0` icons,
241
+ instead of wrapping to two lines.
242
+ - **`KunUserChip`** name and description now `truncate` (the text column gets
243
+ `min-w-0`) — a long name ellipsizes on one line rather than wrapping past the
244
+ avatar.
245
+ - **`KunTooltip`** dropped its unconditional `whitespace-nowrap` for `max-w-xs`:
246
+ short tips still sit on one line, but a long tip now wraps inside ~20rem
247
+ instead of being forced into one screen-wide line.
248
+
249
+ Prose components (Card / Modal / Alert / toast bodies, checkbox/radio/switch
250
+ labels, helper & error text) intentionally keep wrapping.
251
+
252
+ - @kungal/ui-core@0.22.4
253
+
254
+ ## 0.22.3
255
+
256
+ ### Patch Changes
257
+
258
+ - 0305c8d: fix(vue): keep button / chip / badge / tag labels on a single line
259
+
260
+ A label on these atomic components is one action/marker, not flowing prose, so it
261
+ shouldn't wrap to a second line (the modern standard — shadcn's button ships
262
+ `whitespace-nowrap`, Material's spec keeps the label single-line). Added
263
+ `whitespace-nowrap` to `KunButton`, `KunChip`, `KunBadge`, and the tags inside
264
+ `KunTagInput` (KunTab already had it). `KunButton` also gets `[&_svg]:shrink-0`
265
+ (plus `shrink-0` on its icon slots) so a long label never squishes the icons —
266
+ the label overflows on one line instead of wrapping.
267
+
268
+ - @kungal/ui-core@0.22.3
269
+
270
+ ## 0.22.2
271
+
272
+ ### Patch Changes
273
+
274
+ - Updated dependencies [957cb52]
275
+ - @kungal/ui-core@0.22.2
276
+
277
+ ## 0.22.1
278
+
279
+ ### Patch Changes
280
+
281
+ - Updated dependencies [be17775]
282
+ - @kungal/ui-core@0.22.1
283
+
284
+ ## 0.22.0
285
+
286
+ ### Minor Changes
287
+
288
+ - 2026df2: feat(vue): every text control's focus ring follows its `color` prop (default `default`)
289
+
290
+ The focus-ring color was inconsistent across the form family: some controls tied
291
+ it to their `color` prop (Input/NumberInput/CheckBox), others hardcoded a primary
292
+ ring (Textarea/Select/Autocomplete/DatePicker/Pagination), and even among the
293
+ first group the default differed (Input defaulted `color: 'default'` → grey ring;
294
+ NumberInput defaulted `color: 'primary'` → blue ring). So an Input and a Textarea
295
+ side by side focused in different colors.
296
+
297
+ Now uniform: every text control's focus ring routes through its `color` prop, and
298
+ they all default to **`'default'`** (a neutral grey ring) — `color="primary"` (etc.)
299
+ themes it. `color="success"`/`"danger"`/… give that ring; an invalid control still
300
+ overrides to a danger ring.
301
+
302
+ - **New `color?: KunUIColor` prop** on `KunTextarea`, `KunSelect`,
303
+ `KunAutocomplete`, `KunDatePicker` (default `'default'`).
304
+ - **`KunNumberInput` default `color` changed `'primary'` → `'default'`** so an
305
+ un-themed number input matches the rest (grey ring, was blue).
306
+ - `KunPagination`'s jump input uses the neutral ring.
307
+
308
+ Also: **`KunCard` footer no longer draws a top border** — it's just a section
309
+ spaced by the card's own gap, matching the (already borderless) header.
310
+
311
+ ### Patch Changes
312
+
313
+ - @kungal/ui-core@0.22.0
314
+
315
+ ## 0.21.0
316
+
317
+ ### Minor Changes
318
+
319
+ - 3e841f0: feat: align form labels / error text and unify the chip-tag size scale
320
+
321
+ The core size system was already consistent (form controls share
322
+ `kunControlSizeClasses`, checkbox/radio share `kunSelectionSizeClasses`). The
323
+ drift was in the peripheral bits:
324
+
325
+ - **Form labels** now identical everywhere: `KunTextarea` and `KunDatePicker`
326
+ labels gained the `text-default-700` tint, and `KunDatePicker` dropped its odd
327
+ `mb-2` for the standard `mb-1`.
328
+ - **Error messages** now identical: `KunTextarea` switched from `text-danger-600`
329
+ (and a `<div>`) to the standard `text-danger` `<p>`; `KunDatePicker` and
330
+ `KunRadioGroup` dropped `mt-2` for `mt-1`.
331
+ - **Chip / tag size**: new `kunChipSizeClasses` in `@kungal/ui-core` is the single
332
+ source for chip/tag pills. `KunChip` and the tags inside `KunTagInput` now share
333
+ it (and the pill `rounded-full` shape), so a tag looks identical to a standalone
334
+ `<KunChip>` of the same size instead of being a one-off smaller rounded-rect.
335
+
336
+ Tab keeps its intentionally-compact tab scale; Switch/Slider keep their
337
+ dimension-specific scales.
338
+
339
+ ### Patch Changes
340
+
341
+ - Updated dependencies [3e841f0]
342
+ - @kungal/ui-core@0.21.0
343
+
344
+ ## 0.20.0
345
+
346
+ ### Minor Changes
347
+
348
+ - 40e8abf: feat: unified elevation scale + misc token cleanups
349
+
350
+ **Elevation scale** — floating surfaces were assigned `shadow-md` / `shadow-lg` /
351
+ `shadow-2xl` ad hoc, so same-kind surfaces disagreed (Select & Autocomplete
352
+ option lists were `shadow-lg`, but Dropdown & ContextMenu menus were `shadow-2xl`;
353
+ Modal had no shadow at all). New three-tier scale in `@kungal/ui-tokens` —
354
+ `--shadow-kun-sm` / `-md` / `-lg`, generating `shadow-kun-sm|md|lg` utilities
355
+ (they compose with `ring-*` via `--tw-shadow`, so a ringed toast still gets its
356
+ elevation). Applied by tier:
357
+
358
+ - **sm** — tooltips, slider value bubble
359
+ - **md** — popovers, dropdowns, context menus, select/autocomplete/date lists, toasts
360
+ - **lg** — modals (now actually elevated), drawers
361
+
362
+ **Misc consistency cleanups:**
363
+
364
+ - Raw Tailwind radii routed through the token scale: `KunBrand` / `KunNull`
365
+ `rounded-2xl` → `rounded-kun-lg`; `KunLoading` `rounded-lg` → `rounded-kun-md`
366
+ (so `--kun-radius-scale` now affects them too). The dark `KunLightbox` viewer
367
+ chrome keeps its own radii intentionally.
368
+ - `KunNumberInput` stepper buttons: `disabled:opacity-40` → `disabled:opacity-50`
369
+ to match every other disabled control.
370
+
371
+ - 40e8abf: feat: route component transitions through the motion scale
372
+
373
+ Transitions hardcoded raw `duration-150/200/300` and raw `ease-in/out/in-out`
374
+ that didn't match the designed motion tokens (overlay enters were `200ms` but
375
+ `--kun-dur-base` is `250ms`; some controls used symmetric `ease-in-out` while the
376
+ rest used the asymmetric `ease-kun-*` curves). Now unified:
377
+
378
+ - New `duration-kun-fast | base | slow | exit` utilities bound to `--kun-dur-*`
379
+ (with literal fallbacks). Every component transition routes through them, so a
380
+ global motion retune via the tokens actually propagates.
381
+ - Mapped by role, preserving the asymmetric rhythm (enter decelerates, exit
382
+ accelerates): overlay **enter → base**, **leave → exit**, hover/selection/focus
383
+ **micro → fast**, skeleton/fade/large **→ slow**.
384
+ - Remaining raw `ease-in-out` / `ease-out` Tailwind classes (Avatar, Input,
385
+ Textarea, Progress) switched to `ease-kun-standard` / `ease-kun-out`; scoped-style
386
+ easings (Content, Ripple) now read `var(--ease-kun-*)`. The looping indeterminate
387
+ progress keyframe and the dark Lightbox viewer keep their own timing.
388
+
389
+ Net effect: a single, consistent motion feel across every control. No API changes.
390
+
391
+ ### Patch Changes
392
+
393
+ - @kungal/ui-core@0.20.0
394
+
395
+ ## 0.19.1
396
+
397
+ ### Patch Changes
398
+
399
+ - 3a67606: fix(vue): Card header/footer, Tab item radius, Message elevation
400
+
401
+ - **KunCard** — the header slot no longer draws a `border-b`. The footer dropped
402
+ its `bg-default-100` fill + double padding for a single hairline divider in the
403
+ unified `border-kun` token (`-mt-3` pulls it flush under the content), so it
404
+ matches the rest of the UI instead of looking like a grey block.
405
+ - **KunTab** — `solid` / `light` / `bordered` tab items were `rounded-kun-sm`
406
+ (6px), half the radius of every other control. Items (and their sliding
407
+ indicator) are now `rounded-kun-md` (12px, the default control radius) and the
408
+ list container is `rounded-kun-lg` (16px), so the items nest concentrically and
409
+ match the overall corner radius.
410
+ - **KunMessage** (toast) — added `shadow-lg` (and a `dark:ring-white/10` edge) so
411
+ toasts read as elevated/floating above the page instead of sitting flat with
412
+ only a faint hairline ring.
413
+ - @kungal/ui-core@0.19.1
414
+
415
+ ## 0.19.0
416
+
417
+ ### Minor Changes
418
+
419
+ - d8e7e76: feat: KunTab `align` prop + one unified focus ring across every control
420
+
421
+ **KunTab `align`** — new `align?: 'start' | 'center' | 'end'` (default `'center'`)
422
+ controls how each tab's content sits inside its box. Mainly for vertical /
423
+ full-width tabs, where the box is wider than its label.
424
+
425
+ **Unified focus ring** — focus indication was a mess: `:focus` vs `:focus-within`
426
+ vs `:focus-visible`, ring widths `1`/`2`/`4`, opacities `/25`/`/40`/`/50`/full,
427
+ some controls dropped their border to fake a ring (a jarring jump), and Button /
428
+ CheckBox had **no** focus ring at all. Everything now routes through one recipe:
429
+
430
+ - New `kunFocusRingClasses` (direct controls) and `kunFocusRingWithinClasses`
431
+ (composite wrappers) in `@kungal/ui-core`. One recipe: keyboard-only
432
+ (`focus-visible`; text fields still show it on click), a flush **2px** ring in
433
+ the control's semantic color at **/50**, no border-transparent jump.
434
+ - Migrated Input, Textarea, Select, Autocomplete, NumberInput, DatePicker,
435
+ PinInput, TagInput, Pagination, RadioGroup, **Button** (offset ring, added) and
436
+ **CheckBox** (added) onto it. Composite widgets (NumberInput / TagInput) ring
437
+ the wrapper via `focus-within` and the inner `<input>` has no ring of its own,
438
+ so there's exactly one indicator.
439
+ - Invalid controls turn the ring **danger** (same mechanism, swapped color).
440
+ - **Deprecated:** `kunRingClasses` (mixed `:focus`/`:focus-within`, off-opacity).
441
+ Use `kunFocusRingClasses` / `kunFocusRingWithinClasses`.
442
+
443
+ No prop/API removals — purely additive plus a visual refinement of focus states.
444
+
445
+ ### Patch Changes
446
+
447
+ - Updated dependencies [d8e7e76]
448
+ - @kungal/ui-core@0.19.0
449
+
450
+ ## 0.18.1
451
+
452
+ ### Patch Changes
453
+
454
+ - 1016e80: fix(vue): Tab underlined track line, FadeCard not animating, Pagination layout
455
+
456
+ - **KunTab** `variant="underlined"` no longer draws a static full-length track
457
+ border — only the sliding active indicator remains.
458
+ - **KunFadeCard** now actually animates. Its `<Transition>` previously wrapped an
459
+ always-present `<div>`, so a `v-if` on the _slotted_ element (the documented
460
+ `<KunFadeCard><Foo v-if="show"/></KunFadeCard>` usage) never triggered
461
+ enter/leave. The `v-if` now lives on the Transition's direct child, driven by
462
+ whether the slot has real content, so toggling collapses/expands (grid
463
+ `0fr↔1fr`) and fades as intended.
464
+ - **KunPagination** `justify-between` is now effective: the page block and the
465
+ jump-to-page block sat under conflicting `mx-auto` margins (auto margins beat
466
+ `justify-content` in flexbox), which spread them oddly. Removed, so the page
467
+ controls sit at the start and the jump control at the end.
468
+ - @kungal/ui-core@0.18.1
469
+
470
+ ## 0.18.0
471
+
472
+ ### Minor Changes
473
+
474
+ - 6fa75bb: feat(tokens,vue): unified neutral border token (`--color-kun-border` / `border-kun`)
475
+
476
+ Every structural hairline (inputs, textareas, selects, autocomplete, date picker,
477
+ cards, dividers, tabs, tooltips, popovers, dropdowns, context menus, drawers,
478
+ pagination, slider tooltip, radio cards, tag input) now resolves to ONE semantic
479
+ token instead of a scatter of `border-default-200` / `border-default/20` /
480
+ `dark:border-default-200` + a per-component `darkBorder` toggle.
481
+
482
+ - **New:** `--color-kun-border` (defaults to the `default-200` step, so it flips
483
+ light↔dark automatically) and a `border-kun` utility. Retheme every border at
484
+ once by overriding `--color-kun-border` (set it under `.kun-dark-mode` too for a
485
+ fixed non-flipping value). The global `*` border-color (opinionated base layer)
486
+ now points at this token as well, so a bare `border` matches `border-kun`.
487
+ - **Fixed:** `KunDivider` (and any control that used the translucent
488
+ `border-default/20` without a dark override) was ~half as bright as other
489
+ hairlines in dark mode (L13% vs L26%); it now matches everything else (L26%).
490
+ - **Consistency:** light mode is visually unchanged (the old `default/20`-over-white
491
+ already ≈ `default-200`); dark mode now collapses to a single neutral border value
492
+ across all components.
493
+ - Interactive-control borders intentionally stay one step stronger (checkbox/radio
494
+ boxes `default-300`, slider thumb) per common design-system practice — they are
495
+ not structural hairlines.
496
+ - **Deprecated (no-op):** the `darkBorder` prop on Input/Textarea/NumberInput/
497
+ Select/Autocomplete/DatePicker/Card. Safe to remove from call sites; kept for
498
+ backward compatibility. Note: an un-bordered `KunCard` that relied on
499
+ `darkBorder` to show a dark-only border should now use `bordered`.
500
+
501
+ ### Patch Changes
502
+
503
+ - @kungal/ui-core@0.18.0
504
+
505
+ ## 0.17.2
506
+
507
+ ### Patch Changes
508
+
509
+ - @kungal/ui-core@0.17.2
510
+
511
+ ## 0.17.1
512
+
513
+ ### Patch Changes
514
+
515
+ - 54f3498: 代码评审(CR)修复:针对 0.14–0.17 四批改动的真实项目缺陷。
516
+
517
+ - **KunCopy / useKunCopy** —— `useKunCopy` 此前是 fire-and-forget(返回 `void`),`KunCopy` 的 `await` 立即 resolve,导致**剪贴板写入失败时也会错误地显示「已复制」**(还和它自己弹出的失败 toast 自相矛盾)。改为 `useKunCopy` 返回 `Promise<boolean>`(并兜底 `navigator.clipboard` 不存在的情况);`KunCopy` 仅在真正成功时才切到 ✓ 状态。
518
+ - **KunMessageItem(toast)** —— `pauseTimer`/`resumeTimer` 改为幂等:`mouseenter` 与 `pointerdown` 会同时触发暂停,此前会对同一 `startTime` **重复扣减剩余时间**,使 toast 在用户悬停/触摸时提前消失(或进度条与实际计时不同步)。
519
+ - **KunNumberInput** —— 修复无 `min`/`max` 且初始为空时,「−」按钮被错误禁用(`null ?? -∞ > -∞` 为 false)的问题;空值现在可正常从 0 起步进。
520
+ - **KunImage** —— `fallbackSrc` 现在也响应「缓存命中即同步报错」路径(`status==='error'`),此前这种情况下回退图永远不会加载。
521
+ - **KunContextMenu** —— `immediate` watcher 在 SSR 且 `visible=true` 时不再访问 `document`(加 typeof 守卫),避免 `renderToString` 崩溃。
522
+ - **KunMessageProvider** —— toast 容器标记 `data-kun-overlay`,使其在 Modal/Drawer 打开(背景 inert)时仍可交互(关闭按钮/滑动可用)。
523
+ - **KunPinInput** —— `length` 减小时截断内部 refs 数组,避免保留已卸载 `<input>` 的引用。
524
+ - @kungal/ui-core@0.17.1
525
+
526
+ ## 0.17.0
527
+
528
+ ### Minor Changes
529
+
530
+ - 59479bc: 导航 / 展示 / 排版第四批升级:修零散 a11y/安全缺陷,补 Chip/Copy 能力。
531
+
532
+ 修正(a11y / 安全)
533
+
534
+ - **KunScrollShadow** —— `aria-label` 此前误用了 `className`(把 CSS 类当可访问名,读屏会念出 "mt-4 flex…");新增独立 `ariaLabel` prop(默认 'scrollable content')。
535
+ - **KunLink / KunButton** —— `target="_blank"` 现在自动补 `rel="noopener noreferrer"`(tabnabbing 防护)。
536
+ - **KunAvatarGroup** —— "+N" 溢出现在从 `users.length` 推导(不传 `total` 也能显示);按 `user.id` 作 key;加 `role="group"` + 计数 `aria-label`。
537
+ - **KunDivider** —— 竖向加 `aria-orientation="vertical"`;`withLabel` 标记为弃用(label 由默认插槽是否有内容决定)。
538
+ - **KunMarkdown** —— 装饰 SVG 加 `aria-hidden`。
539
+
540
+ 升级
541
+
542
+ - **KunChip** —— 新增 `closable`(× 触发 `close`,可移除标签)、`disabled`,以及 `start` / `end` 插槽(圆点/头像/图标)。
543
+ - **KunCopy** —— 复制后短暂反馈:图标切到 ✓、文案切到 `copiedText`(默认 '已复制')、`aria-live` 播报,~1.5s 复位。
544
+ - **KunImage** —— 新增 `fallbackSrc`(图裂时回退,`src` 变化时重置)。
545
+ - **KunAvatar** —— 头像 URL 裂图时回退到确定性 sticker。
546
+ - **KunPagination** —— 提供 `pageHref` 时,上一页/下一页也渲染为可爬 `<a>`(与数字页一致)。
547
+
548
+ Behavior(0.x minor)
549
+
550
+ - `KunScrollShadow` 的可访问名不再等于 `className`,改为 `ariaLabel`(默认 'scrollable content')。
551
+
552
+ ### Patch Changes
553
+
554
+ - @kungal/ui-core@0.17.0
555
+
556
+ ## 0.16.0
557
+
558
+ ### Minor Changes
559
+
560
+ - 8cc6532: 反馈 / 状态层第三批升级:补齐 a11y(aria-live/role)、确认框可定制、Toast 体验。
561
+
562
+ 修正(a11y / 正确性)
563
+
564
+ - **KunProgress** —— `variant="circle"` 现在带 `role="progressbar"` + `aria-valuenow/min/max`(此前圆环完全没有,读屏不可知);`indeterminate` 改为真正的不定动画(条形横扫 / 圆环旋转,此前只是静态满条);新增 `ariaLabel`。
565
+ - **KunLoading** —— 加载态加 `role="status"` + `aria-live="polite"` + `aria-busy`,装饰图 `aria-hidden`;新增轻量 `spinner` 变体(内联小尺寸,用打包的 spinner 图标)+ `size`。
566
+ - **KunMessage(toast)** —— error / warn 现在用 `role="alert"` + `aria-live="assertive"`(打断式),info / success 仍是 `status` / polite(此前一律 polite,错误可能被读屏忽略)。
567
+ - **AlertProvider** —— 用 `role="alertdialog"` + `aria-label`(取自 title);确认按钮改为**强调色**(主操作)、取消按钮**中性**(此前取消是红色,与惯例相反);`danger` 类型确认按钮变红。
568
+ - **useRipple** —— 涟漪 `key` 改用自增计数(此前 `Date.now()` 在同毫秒多次点击会 key 冲突)。
569
+
570
+ 升级
571
+
572
+ - **useKunAlert** —— 新增 `confirmText` / `cancelText` / `type`('info'|'warning'|'danger')/ `confirmColor`(可本地化文案 + 危险确认)。
573
+ - **KunModal** —— 新增 `role`('dialog' | 'alertdialog')。
574
+ - **KunMessage(toast)** —— 每条 toast 加悬停显示的关闭按钮(`duration:0` 常驻 toast 也能手动关);每个位置最多并存 5 条(超出丢弃最旧);支持滑动关闭(触摸横向拖拽)。
575
+ - **KunBadge** —— 无锚点 slot 时渲染为独立内联徽标;新增 `ariaLabel`(如 "5 条未读")。
576
+
577
+ Behavior(0.x minor)
578
+
579
+ - `AlertProvider` 的取消按钮不再是 danger 红色,改为中性;确认按钮改为主色/按 `type` 着色。
580
+
581
+ ### Patch Changes
582
+
583
+ - @kungal/ui-core@0.16.0
584
+
585
+ ## 0.15.0
586
+
587
+ ### Minor Changes
588
+
589
+ - e5f8c89: 浮层 / 弹出层第二批升级:对标 Radix / HeroUI / Reka,修掉 Popover 与 ContextMenu 的 a11y 缺陷,统一浮层基建。
590
+
591
+ 修正(a11y 缺陷)
592
+
593
+ - **KunPopover** —— 触发器不再被包裹层强加 `role="button"` + 假 `aria-label="popover-trigger"`(此前传 `<KunButton>` 会形成 button 套 button、真实可访问名被盖掉);现在是真正的对话框:打开时把焦点移入面板,关闭时归还给触发器,Esc 关闭。
594
+ - **KunContextMenu** —— 从「一堆按钮」升级为真正的 WAI-ARIA 菜单:`role="menu"`/`menuitem`、roving tabindex、方向键 / Home / End / Enter / Esc 键盘导航、打开聚焦首项、关闭归还焦点(与 KunDropdown 一致)。
595
+ - **KunModal / KunDrawer** —— 多个叠加时按 Esc 只关闭**栈顶**那一个(此前会一次性关掉所有)。
596
+
597
+ 升级
598
+
599
+ - **KunModal** —— 新增 `size`(sm/md/lg/xl/full)、`scrollBehavior`(inside/outside)、`placement`(center/top)。
600
+ - **KunModal / KunDrawer** —— 打开时给页面背景加 `inert`(比单靠 `aria-modal` 更强的隔离;辅助技术与 Tab 都无法进入背景)。
601
+ - **KunTooltip / KunPopover** —— 新增 `showArrow` 指向触发器的小箭头。
602
+ - **KunDropdown** —— 新增首字母 type-ahead(按字母跳到对应项)。
603
+
604
+ 内部重构(不破坏 API)
605
+
606
+ - 新增 `useKunFloating` —— 收敛 Popover / Tooltip / Dropdown / Select / Autocomplete 的 floating-ui 配置(offset/flip/shift + transform-origin + 可选 arrow),消除重复与漂移。
607
+ - 新增 `useKunBackgroundInert` —— 引用计数的背景 `inert` 管理器。
608
+ - `useKunOverlayZIndex` 新增 `isTopmost`(开启顺序栈,供 Esc/背景判定栈顶)。
609
+
610
+ Breaking(0.x minor)
611
+
612
+ - `KunPopover` 触发器包裹层不再是 `role="button"`,也不再注入 tabindex —— 请传入**可聚焦**的触发器(如 `<KunButton>`,常规用法不受影响);非交互触发器(纯图标/文本)需自行加 `tabindex`。
613
+ - `KunModal` 面板默认带 `max-w-md` 宽度上限(此前无上限);需要更宽的用 `size="lg|xl|full"`。
614
+
615
+ ### Patch Changes
616
+
617
+ - @kungal/ui-core@0.15.0
618
+
619
+ ## 0.14.0
620
+
621
+ ### Minor Changes
622
+
623
+ - cd404aa: 表单 / 输入控件第一批升级:对标 HeroUI / Mantine / Ant Design / PrimeVue / Naive,补齐 API 完备性、一致性与高级控件。
624
+
625
+ 新增组件
626
+
627
+ - **KunNumberInput** —— 数字步进输入:`min`/`max`/`step`/`precision` 钳制与四舍五入、−/+ 步进按钮(到边界自动禁用)、`ArrowUp/Down`·`PageUp/Down` 键盘、`role="spinbutton"` 无障碍、`name` 原生表单收集。
628
+ - **KunPinInput** —— OTP / 验证码分段输入:`length`、`type`(numeric/text)、`mask`、自动前进/退格回退、粘贴自动分发、方向键、`complete` 事件、`autocomplete="one-time-code"`。
629
+ - **KunAutocomplete** —— 组合框(combobox):文本输入 + 建议列表,客户端过滤或 `manualFilter` + `@search`(远程),`allowCustomValue`、`clearable`、键盘导航、`aria-autocomplete`。
630
+
631
+ 升级
632
+
633
+ - **KunSelect** —— 补齐键盘可达性(P0):方向键 / Enter / Space / Esc / Home / End / 首字母 type-ahead + `aria-activedescendant`,禁用项自动跳过;新增 `searchable`(列表内过滤)、`multiple`(可移除 chips)、`clearable`、`description`、`name`(隐藏域)、选项 `disabled`。
634
+ - **KunSlider** —— 默认 `min`/`max` 由 17–77 改为 **0–100**;修复 `reactive(props)` 拷贝导致改 prop 不更新的响应式缺陷;新增 `disabled`、`label`/`ariaLabel`、`error`/`description`、`color`、`marks`、值气泡 `showTooltip`、`showValue`、`formatValue`、`change` 事件。
635
+ - **KunCheckBox** —— 新增 `indeterminate`(三态,用于全选)+ `error`/`description`。
636
+ - **KunInput** —— 新增 `isClearable`、`revealPassword`(密码可见性切换)、`isInvalid` + `aria-invalid`/`aria-describedby`。
637
+ - **KunSwitch** —— 新增 `error`/`description`。
638
+
639
+ 统一
640
+
641
+ - 辅助文案统一为 `description`(对齐 HeroUI / React-Aria);`helperText`(Input/TagInput)与 `hint`(Textarea/FileInput/Upload)保留为 **已弃用别名**,仍可用,内部回退到 `description`。
642
+
643
+ Breaking(0.x minor)
644
+
645
+ - `KunSlider` 默认 `min`/`max` 改为 0–100(此前 17–77):依赖旧默认值的调用需显式传入。
646
+ - `KunSelect` 的 v-model 类型放宽为 `T | T[] | null`(支持 `multiple` 与清除);单选用法不受运行时影响,仅 TS 类型变宽。
647
+
648
+ 新增打包图标(构建期内联,运行时零请求):`lucide:minus`、`eye`、`eye-off`、`search`。
649
+
650
+ ### Patch Changes
651
+
652
+ - Updated dependencies [cd404aa]
653
+ - @kungal/ui-core@0.14.0
654
+
655
+ ## 0.13.0
656
+
657
+ ### Minor Changes
658
+
659
+ - 59dc29e: Accessibility + SSR-correctness sweep across the library.
660
+
661
+ - **SSR-stable ids (the big one).** `useKunUniqueId` deferred Vue's `useId()` to
662
+ `onMounted`, so the server HTML rendered empty ids — every `<label for>` /
663
+ `id` pairing was broken on the server and changed on hydration. It now calls
664
+ `useId()` synchronously (Vue guarantees it's identical server/client), so
665
+ KunInput / KunCheckBox / KunTextarea / etc. have correct, stable label
666
+ associations in the SSR HTML.
667
+ - **KunModal dialog semantics.** The panel was missing `role="dialog"` /
668
+ `aria-modal="true"` / an accessible name — now added, plus an `ariaLabel` prop.
669
+ (KunDrawer already had these.)
670
+ - **Accessible names on icon-only buttons.** KunModal & KunLoli close buttons and
671
+ KunPagination prev/next now have `aria-label` (the icon itself is `aria-hidden`,
672
+ so these announced as just "button" before).
673
+ - **KunPagination semantics.** Wrapped in `<nav aria-label>`; numbered pages get
674
+ `aria-label` + `aria-current="page"` on the active page.
675
+ - **KunSlider keyboard (WCAG 2.1.1).** The thumb now responds to Arrow keys
676
+ (±step), PageUp/PageDown (±10×), Home (min) and End (max) — it was drag-only.
677
+ - **KunMessage live region.** Toast containers are now `role="status"`
678
+ `aria-live="polite"`, so screen readers announce toasts.
679
+ - **KunTooltip keyboard/SR.** Now shows on focus (not just hover), links its text
680
+ via `aria-describedby`, and dismisses on Escape.
681
+ - **KunRating** stars gained `aria-label` (the `title` alone wasn't announced).
682
+ - **KunPopover** dialog gained an `ariaLabel` prop / accessible name.
683
+
684
+ All non-breaking. The id change improves SSR output; the new `ariaLabel` props on
685
+ KunModal/KunPopover default to a generic name when omitted.
686
+
687
+ ### Patch Changes
688
+
689
+ - @kungal/ui-core@0.13.0
690
+
691
+ ## 0.12.0
692
+
693
+ ### Minor Changes
694
+
695
+ - 6e5836e: Make the navigational components render real, crawlable `<a href>` links.
696
+
697
+ Google only follows `<a href>` — it doesn't click `<div @click>` / `<button>` /
698
+ programmatic navigation. Several KunUI components navigated via `config.navigate`
699
+ on a non-anchor element, so those links were invisible to crawlers. They now
700
+ render a real anchor (`config.linkComponent` → `<a>` / `NuxtLink`), keeping the
701
+ same navigation behavior (and working without JS):
702
+
703
+ - **KunBrand** — the home/logo link was a `<div @click>`; now a real `<a>` to `to`
704
+ (the canonical crawl entry point).
705
+ - **KunPagination** — new `pageHref?: (page) => string` prop. When provided, the
706
+ numbered page controls render `<a href>` per page, so paginated content is
707
+ crawlable. Without it, behaviour is unchanged (plain buttons).
708
+ - **KunAvatar / KunUserChip** — a profile-linking avatar was a `<div @click>`;
709
+ now a real `<a>` to the user profile when there's a user to link to. KunUserChip
710
+ wraps the **whole** chip (avatar + name) in one link so the name is anchor text,
711
+ and gained an `isNavigation` prop (default `true`); the inner avatar is no longer
712
+ a nested link.
713
+ - **KunDropdown / KunContextMenu** — menu items gained an optional `href`. An item
714
+ with `href` renders `<a role="menuitem" href>` (crawlable, for navigational
715
+ menus); action items without `href` stay `<button>`.
716
+
717
+ All changes are non-breaking: components without a navigation target (or
718
+ pagination without `pageHref`, menu items without `href`) render exactly as
719
+ before. Note KunBrand and a profile-linking KunAvatar/KunUserChip now render an
720
+ `<a>` instead of a `<div>` — restyle if you targeted the element by tag.
721
+
722
+ ### Patch Changes
723
+
724
+ - @kungal/ui-core@0.12.0
725
+
726
+ ## 0.11.0
727
+
728
+ ### Minor Changes
729
+
730
+ - 5403dca: SEO-first Tab panels + crawlable tab-as-route.
731
+
732
+ KunTab was a headless tab **bar** (it rendered `role="tab"` buttons and exposed
733
+ the active value, but no content). That left the SSR-SEO-critical decision —
734
+ how to render and hide each section — entirely to the consumer, and the obvious
735
+ `v-if` choice silently drops inactive panels from the indexable DOM. This adds a
736
+ first-class, SEO-optimal content layer.
737
+
738
+ **New `KunTabPanel` / `KunTabPanels`.**
739
+
740
+ ```vue
741
+ <KunTab v-model="active" :items="items" name="product" />
742
+ <KunTabPanels v-model="active" name="product">
743
+ <KunTabPanel value="overview">…</KunTabPanel>
744
+ <KunTabPanel value="specs">…</KunTabPanel>
745
+ </KunTabPanels>
746
+ ```
747
+
748
+ - **`mount` (default `"eager"`)** — `eager` server-renders **every** panel into the
749
+ HTML so search engines index all of it; inactive panels are hidden, not removed.
750
+ `"lazy"` renders on first activation then keeps (huge data, accepts the
751
+ trade-off for unopened panels); `"unmount"` keeps only the active panel in the
752
+ DOM (NOT crawlable — for heavy non-SEO widgets only). `forceMount` is a boolean
753
+ alias for `eager`, familiar from Radix/Reka/MUI.
754
+ - **Inactive panels hide with `hidden="until-found"`** (`hiddenStrategy`, default) —
755
+ they stay indexed _and_ become reachable by in-page search (Ctrl+F),
756
+ scroll-to-text fragments and deep links; the `beforematch` reveal flips the
757
+ active tab to match. `hiddenStrategy="display"` falls back to `display:none`.
758
+ SSR/first paint is flash-free (a `content-visibility` placeholder upgrades to
759
+ the real attribute on the client).
760
+ - Correct `role="tabpanel"` + `aria-labelledby`/`aria-controls` wiring (tab ↔
761
+ panel ids derive from the tab `value`, namespaced by an optional `name`).
762
+
763
+ **KunTab: `href` items now render a real `<a>` (crawlable tab-as-route).** Tabs
764
+ with `href` previously rendered a `<button>` that navigated programmatically —
765
+ invisible to crawlers. They now render `config.linkComponent` (`<a>` / `NuxtLink`)
766
+ with the href, so each tab is a discoverable URL and works without JS; with JS the
767
+ click is intercepted and routed through `config.navigate` (no double-nav). Tabs
768
+ also gained `id` / `aria-controls` (and KunTab a `name` prop) to pair with panels.
769
+
770
+ ### Patch Changes
771
+
772
+ - @kungal/ui-core@0.11.0
773
+
774
+ ## 0.10.0
775
+
776
+ ### Minor Changes
777
+
778
+ - 7f8495d: A unified motion system — smoother, more consistent animation across every
779
+ component.
780
+
781
+ **Motion tokens (@kungal/ui-tokens).** One easing set + duration scale so the
782
+ whole library shares a rhythm instead of each component inventing its own:
783
+ `--ease-kun-standard / -out / -in / -emphasized` (also exposed as Tailwind
784
+ `ease-kun-*` utilities) and `--kun-dur-fast / -base / -slow / -exit`. Curves are
785
+ asymmetric by design — decelerate on enter, accelerate on exit — and exits run
786
+ ~30% shorter than enters. The opinionated base layer now also honours
787
+ `prefers-reduced-motion: reduce` (WCAG 2.3.3).
788
+
789
+ **Killed the layout-thrashing animations** (these caused visible stutter):
790
+
791
+ - **KunTab** indicator no longer transitions `height` (it never changes between
792
+ same-row tabs); it slides via `transform` and only its `width` animates.
793
+ - **KunFadeCard** expands via the grid `0fr → 1fr` trick instead of `max-height`
794
+ — no more `max-h-96` clipping of tall content, no per-frame height recalc.
795
+ - **KunMessage** progress bar shrinks via `transform: scaleX` (compositor)
796
+ instead of animating `width`.
797
+
798
+ **Overlays retuned and made origin-aware.** KunModal now fades its backdrop
799
+ (opacity only) while the panel rises + scales independently; KunDrawer’s backdrop
800
+ and panel are timing-matched. KunDropdown / KunSelect / KunPopover / KunDatePicker
801
+ / KunContextMenu now **grow out of their trigger** — `transform-origin` follows
802
+ the floating-ui placement, so a menu that flips above its trigger correctly grows
803
+ from its bottom edge. Every overlay shares the `ease-kun-*` curves and timing.
804
+
805
+ **Micro-interactions.** KunSlider’s thumb gains a hover/focus ring halo (it had
806
+ no feedback before); KunSwitch gains a keyboard `focus-visible` ring and a
807
+ springier thumb settle; KunCheckBox’s check eases in with the emphasized curve.
808
+
809
+ No component API changed. KunFadeCard now wraps its slot in a grid container (a
810
+ DOM-structure change); if you targeted its immediate child with CSS, retarget the
811
+ inner content.
812
+
813
+ ### Patch Changes
814
+
815
+ - @kungal/ui-core@0.10.0
816
+
817
+ ## 0.9.0
818
+
819
+ ### Patch Changes
820
+
821
+ - 0a57065: Make the default corner radius rounder, HeroUI-style.
822
+
823
+ The `--radius-kun-*` scale grows so the default control radius lands at HeroUI's
824
+ 12px (it was 8px):
825
+
826
+ | bucket | before | after |
827
+ | ------ | ----------- | ----- |
828
+ | sm | 4px | 6px |
829
+ | md | 12 ←default | 12px |
830
+ | lg | 12px | 16px |
831
+
832
+ `md` (every component's default) is now **12px**, `lg` (floating panels — dropdown
833
+ / context-menu / toast) is **16px**, which keeps their concentric nesting exact
834
+ (panel 16 = item 12 + the 4px `p-1` inset). The `--kun-radius-scale` runtime knob
835
+ still multiplies on top, and `none` / `full` still don't scale.
836
+
837
+ One component needed a fix at the larger radius: **KunCheckBox**. Its small square
838
+ box would look circular at a 12px token radius (12px ≈ half a 16–20px box), so the
839
+ box now uses a proportional `35%` radius — a rounded square at every size, never a
840
+ circle (matching how HeroUI derives its checkbox radius). The radio-look variant
841
+ stays a full circle. No other component needed a size change; pill/circle controls
842
+ (chips, avatars, switch, slider) are unaffected.
843
+
844
+ - @kungal/ui-core@0.9.0
845
+
846
+ ## 0.8.0
847
+
848
+ ### Minor Changes
849
+
850
+ - 7624924: Extend the unified size system to the non-text controls.
851
+
852
+ The first sizing pass only covered text controls (button/input/select/…). This
853
+ brings the selection + display controls onto the same coherent system, grounded
854
+ in how HeroUI / PrimeVue / Naive UI / Mantine / Ant size them.
855
+
856
+ - **New shared selection scale (`kunSelectionSizeClasses`, @kungal/ui-core)** —
857
+ KunCheckBox and KunRadioGroup now use **identical** box sizes (every major
858
+ library does this), so a checkbox and a radio of the same size match. Box px by
859
+ size: 12 / 14 / 16 / 20 / 24 — ≈ 0.5× the text-control height and ≈ 1.2–1.4× the
860
+ label font, so the box sits optically level with its label.
861
+ - **KunCheckBox gains a `size` prop** (`xs`–`xl`, default `md`). It was hardcoded
862
+ at 20px while its sibling KunRadioGroup scaled 12→24 — now they share one scale
863
+ (md box is 16px). The check glyph and label scale with it.
864
+ - **KunSwitch gains a `size` prop.** Track/thumb scale on clean steps (track
865
+ 28×16 → 64×32, thumb = track height − 4); `md` is the original switch size.
866
+ - **KunSlider gains a `size` prop.** Track 4→12px, thumb 14→28px; `md` unchanged.
867
+ - **KunChip** moved onto its proper compact sub-scale (≈ 0.7× the button height at
868
+ the same keyword — a tag is text + tight padding, not a tap target); its `md`/
869
+ `lg`/`xl` vertical padding is slightly tighter so chips no longer read as tall
870
+ as buttons.
871
+
872
+ Components sized by their content/padding rather than a height (KunTooltip,
873
+ KunDropdown/KunContextMenu menus, KunPopover, KunInfo) intentionally keep no
874
+ `size` prop — no surveyed library gives them one.
875
+
876
+ ### Patch Changes
877
+
878
+ - Updated dependencies [7624924]
879
+ - @kungal/ui-core@0.8.0
880
+
881
+ ## 0.7.0
882
+
883
+ ### Minor Changes
884
+
885
+ - 29a39a7: Unify form-control sizing on one shared scale, and fix the `lg`/`xl` button
886
+ proportions.
887
+
888
+ - **New `kunControlSizeClasses` (@kungal/ui-core)** — a single source of truth for
889
+ the per-size font + padding of every text-like form control. Padding-driven,
890
+ `md` (~38px) as the anchor, `px:py` a clean 2:1, horizontal padding growing
891
+ faster than vertical so a bigger control gets wider, not flatter.
892
+ - **KunButton `lg`/`xl` fixed** — `lg` was `px-6 py-2` (3:1) and `xl` was
893
+ `px-8 py-2.5` (3.2:1, a wide flat bar). They're now `px-5 py-2.5` and
894
+ `px-6 py-3` (both 2:1), so large buttons look proportional. `md` is unchanged.
895
+ - **One scale across controls** — KunButton, KunInput, KunSelect, KunDatePicker,
896
+ KunTextarea and KunTagInput all consume the shared scale, so a button, input,
897
+ select and date-picker of the same size line up at the same height in a row
898
+ (md = 38px).
899
+ - **KunSelect / KunDatePicker / KunTextarea gain a `size` prop** (`xs`–`xl`,
900
+ default `md`). Previously they had no size and were locked one notch tighter
901
+ than buttons (`px-3` / `p-3`); their default horizontal padding is now `px-4`,
902
+ matching KunButton/KunInput `md`.
903
+
904
+ Pill/compact display components (KunChip, KunBadge, KunAvatar) are intentionally
905
+ not part of this form-control scale and keep their compact sizing.
906
+
907
+ ### Patch Changes
908
+
909
+ - Updated dependencies [29a39a7]
910
+ - @kungal/ui-core@0.7.0
911
+
912
+ ## 0.6.2
913
+
914
+ ### Patch Changes
915
+
916
+ - 7b521fc: KunCheckBox: add a gap between the box and its slotted content.
917
+
918
+ The box and its content sat as adjacent flex children with no gap, so the box's
919
+ right edge touched the start of slotted content (`<KunCheckBox>分类</KunCheckBox>`)
920
+ — measured gap was 0. Only the `label` _prop_ path was spaced, because that
921
+ `<label>` carried its own `ml-2`; slot/`v-html` content had nothing. The wrapper
922
+ now uses `gap-2` (matching KunRadioGroup) and the redundant `ml-2` is dropped from
923
+ the label, so the box→content gap is a uniform 8px whether you use the `label`
924
+ prop or the default slot.
925
+
926
+ - @kungal/ui-core@0.6.2
927
+
928
+ ## 0.6.1
929
+
930
+ ### Patch Changes
931
+
932
+ - dc437bb: Bundle the KunLoli mascots, fix Tab icon spacing, enlarge the Null/Loading
933
+ images, and align KunTagInput's tag color.
934
+
935
+ - **KunLoli**: the popup pulled its mascot from `/alert/{name}.webp` in the
936
+ consuming app's public dir, so it showed a broken image in any app that didn't
937
+ ship those four files. The four mascots are now bundled as base64 webp data
938
+ URIs (same zero-setup, no-network policy as the bundled icons and the
939
+ KunLoading / KunNull images), so `<KunLoli>` works out of the box.
940
+ - **KunTab**: tabs with both an icon and a label had no gap between them (the
941
+ size→gap map was defined but never applied), so the two were cramped together.
942
+ The gap (`gap-1` / `gap-1.5` / `gap-2` by size) is now applied.
943
+ - **KunNull / KunLoading**: the default mascot image is one size larger
944
+ (`w-60`→`w-72` and `w-72`→`w-80` respectively).
945
+ - **KunTagInput**: tags used a one-off color palette (`bg-primary/15
946
+ text-primary-700`) that read slightly off from the rest of the UI; they now use
947
+ the same `flat` variant every other KunUI chip uses, so a tag's color matches.
948
+ - @kungal/ui-core@0.6.1
949
+
950
+ ## 0.6.0
951
+
952
+ ### Minor Changes
953
+
954
+ - c15c5fc: Remove the `KunFavicon` component.
955
+
956
+ `KunFavicon` was just a static, hardcoded inline SVG of the KunUI lollipop mark
957
+ with no props — it carried no library value (an app that wants a logo ships its
958
+ own asset, e.g. via `KunBrand`'s `iconSrc`). It's dropped from the `@kungal/ui-vue`
959
+ exports and the `@kungal/ui-nuxt` auto-import list.
960
+
961
+ **Migration:** if you were rendering `<KunFavicon />`, inline your own logo SVG or
962
+ `<img>`/`KunImage` pointing at your favicon asset instead.
963
+
964
+ ### Patch Changes
965
+
966
+ - @kungal/ui-core@0.6.0
967
+
968
+ ## 0.5.2
969
+
970
+ ### Patch Changes
971
+
972
+ - 8b39e7c: Make every component's corner radius follow the unified Kun radius system.
973
+
974
+ Two classes of inconsistency were leaking through:
975
+
976
+ - **KunButton / KunCopy defaulted `rounded` to `'lg'`** (12px) while every other
977
+ component defers to the global `config.rounded` (default `md`, 8px) — so buttons
978
+ looked visibly rounder than inputs, cards and surfaces sitting next to them. And
979
+ because `'lg'` was a _prop default_ (never `undefined`), setting `config.rounded`
980
+ globally couldn't pull buttons in line. Both now omit the default and resolve to
981
+ `config.rounded` like the rest; pass `rounded` to override per-instance.
982
+
983
+ - **Several components hardcoded raw Tailwind radii** (`rounded-lg` / `rounded-md` /
984
+ `rounded-xl` / `rounded`) instead of the `rounded-kun-*` tokens, so they neither
985
+ shared the unified scale nor responded to the runtime `--kun-radius-scale` knob.
986
+ Converted to tokens (preserving each surface's pixel size and concentric nesting):
987
+ KunTab (container + items + indicators), KunDropdown (panel + items), KunContextMenu
988
+ (panel), KunSelect (listbox + options), KunMessage (toast card), KunPagination
989
+ (page-jump input), KunRadioGroup (option row), KunTagInput (tag chip) and
990
+ KunCheckBox (the box). Pill/circle elements using `rounded-full` are unchanged by
991
+ design; KunLightbox's dark floating toolbars and KunLoading's mascot/overlay keep
992
+ their own styling.
993
+
994
+ Net effect: one global radius for all components, all of it now driven by
995
+ `config.rounded` and scaled live by `--kun-radius-scale`.
996
+
997
+ - @kungal/ui-core@0.5.2
998
+
999
+ ## 0.5.1
1000
+
1001
+ ### Patch Changes
1002
+
1003
+ - @kungal/ui-core@0.5.1
1004
+
1005
+ ## 0.5.0
1006
+
1007
+ ### Minor Changes
1008
+
1009
+ - b669cf4: Button/input sizing polish, a beautified checkbox, and a uniform corner radius.
1010
+
1011
+ - **KunButton / KunInput sizes**: horizontal padding now grows with size while
1012
+ vertical padding stays tight (`py < px`), so larger sizes get _wider_, not
1013
+ fatter — matching modern libraries (shadcn `lg = px-8`, HeroUI fixed heights).
1014
+ `md` is unchanged; `lg`/`xl` are noticeably less bulky. Input vertical padding
1015
+ matches Button per size so the two line up in a form row.
1016
+ - **KunCheckBox**: the check is smaller (more breathing room in the box),
1017
+ stays centered, and scales in with a subtle pop. Cursor is now a pointer.
1018
+ - **Uniform corner radius**: every component now defers to the single global
1019
+ `config.rounded` (default `md`). Removed the per-component radius overrides on
1020
+ KunModal / KunDrawer / KunInfo / KunPopover / KunUpload (were `lg`) and
1021
+ KunRadioGroup, so all surfaces share one radius — set `config.rounded` once to
1022
+ restyle them together. (Pill/circle controls that use `rounded-full` are
1023
+ unaffected, by design.)
1024
+
1025
+ ### Patch Changes
1026
+
1027
+ - @kungal/ui-core@0.5.0
1028
+
1029
+ ## 0.4.1
1030
+
1031
+ ### Patch Changes
1032
+
1033
+ - 93b8446: KunTextarea: defer the first auto-grow height measurement to the next animation frame. Measuring `scrollHeight` synchronously in `onMounted` could read a too-tall height before the textarea was laid out (notably a chat input that first appears on mobile), which only corrected itself on the first keystroke. The deferred measure runs after layout, so an auto-grow textarea starts at its true single-row height.
1034
+ - @kungal/ui-core@0.4.1
1035
+
1036
+ ## 0.4.0
1037
+
1038
+ ### Minor Changes
1039
+
1040
+ - cb46d7b: `KunImage` / `KunImageNative` now default to `loading="lazy"`.
1041
+
1042
+ Previously `loading` defaulted to unset, so the browser loaded every image
1043
+ eagerly. A page with many images (card grids, lists, avatars) fired them all at
1044
+ once and saturated the connection, starving the above-the-fold images — they
1045
+ filled in slowly behind a long-lingering skeleton, making the page feel stuck on
1046
+ images. `KunImage` already reserves space (its aspect-ratio box + skeleton), so
1047
+ deferring off-screen images causes no layout shift and shortens the critical
1048
+ path. `KunImageNative` also gains a `loading` prop (it had none before).
1049
+
1050
+ **Opt your LCP / hero image back into eager loading:**
1051
+ `<KunImage loading="eager" fetchpriority="high" … />` — otherwise it's lazy like
1052
+ the rest, which can cost a little LCP for that one image.
1053
+
1054
+ ### Patch Changes
1055
+
1056
+ - @kungal/ui-core@0.4.0
1057
+
1058
+ ## 0.3.4
1059
+
1060
+ ### Patch Changes
1061
+
1062
+ - 3a50b6a: KunAvatar: render the avatar URL exactly as given — stop deriving size variants
1063
+ in the component.
1064
+
1065
+ KunAvatar used to turn `user.avatar` into a 100px thumbnail by string-replacing
1066
+ the extension (`.webp` → `-100.webp`, most recently host-aware `_100` / `-100`).
1067
+ That baked CDN-specific URL conventions into the UI library. KunAvatar now
1068
+ renders `user.avatar` as-is; `size` only controls the rendered dimensions.
1069
+ Empty/missing avatar still falls back to a deterministic sticker.
1070
+
1071
+ **Migration (consumers now pass the exact URL to show):** for small avatars pass
1072
+ the pre-sized thumbnail your CDN exposes (e.g. content-addressed
1073
+ `…/<hash>_100.webp`, legacy `…/avatar-100.webp`); for profile/`original` sizes
1074
+ pass the full image. Your backend already knows the image host, so resolving the
1075
+ URL belongs there — not in the UI.
1076
+
1077
+ - @kungal/ui-core@0.3.4
1078
+
1079
+ ## 0.3.3
1080
+
1081
+ ### Patch Changes
1082
+
1083
+ - 9e0bdc2: KunAvatar: pick the 100px-thumbnail variant separator by image family. Content-addressed image*service avatars (`…/aa/bb/<hash>.webp`) expose variants with an underscore (`<hash>_100.webp`), while legacy path-based avatars use a hyphen (`avatar-100.webp`). The previous hardcoded hyphen `-100` 404'd every new image_service avatar (blank top-bar/comment avatars after a user changed their picture). Now detects the two-level-hex hash path and uses `*`for those,`-` otherwise.
1084
+ - @kungal/ui-core@0.3.3
1085
+
1086
+ ## 0.3.2
1087
+
1088
+ ### Patch Changes
1089
+
1090
+ - 2bd491f: `KunModal`: the backdrop only dismisses when the press _started_ on the backdrop.
1091
+
1092
+ The overlay used a bare `@click`, so pressing inside the modal (e.g. selecting
1093
+ text in an input), dragging the cursor onto the backdrop, and releasing there
1094
+ fired a `click` on the backdrop and closed the modal — "I let go of the mouse
1095
+ and the dialog vanished". The overlay now tracks the pointer-down target and
1096
+ treats the click as a dismiss only when both the press and the release are on
1097
+ the backdrop itself. `isDismissable` behaviour is unchanged.
1098
+
1099
+ - @kungal/ui-core@0.3.2
1100
+
1101
+ ## 0.3.1
1102
+
1103
+ ### Patch Changes
1104
+
1105
+ - @kungal/ui-core@0.3.1
1106
+
1107
+ ## 0.3.0
1108
+
1109
+ ### Minor Changes
1110
+
1111
+ - 9b8cbae: Remove the `faded` variant.
1112
+
1113
+ `faded` (tinted fill + border) was visually almost indistinguishable from
1114
+ `ghost`, so it's been dropped from `KunUIVariant`. This affects every variant
1115
+ consumer — `KunButton`, `KunChip`, `KunDropdown` and `KunInfo`.
1116
+
1117
+ **Migration:** replace `variant="faded"` with `variant="flat"` (tinted fill, no
1118
+ border) or `variant="bordered"` (visible colored border); `ghost` stays for the
1119
+ outline look it overlapped with.
1120
+
1121
+ ### Patch Changes
1122
+
1123
+ - Updated dependencies [9b8cbae]
1124
+ - @kungal/ui-core@0.3.0
1125
+
1126
+ ## 0.2.5
1127
+
1128
+ ### Patch Changes
1129
+
1130
+ - f0bbd79: Fix `KunDropdown` yanking the page to the top when opened.
1131
+
1132
+ The menu is teleported to `<body>` and positioned by floating-ui's async
1133
+ `computePosition`. `open()` focuses the menu inside a `nextTick`, which fires
1134
+ before the position is committed — so the menu is still at its initial
1135
+ `top:0; left:0`, and focusing it there scrolled the document to the top (very
1136
+ visible on mobile: tapping a trigger low on the page yanked the viewport up).
1137
+ All three `focus()` calls now pass `{ preventScroll: true }`, so focus still
1138
+ lands on the menu/item (keyboard nav unchanged) without scrolling.
1139
+
1140
+ - @kungal/ui-core@0.2.5
1141
+
1142
+ ## 0.2.4
1143
+
1144
+ ### Patch Changes
1145
+
1146
+ - 0ec98f9: Fix invisible outline variants (`bordered` / `faded` / `ghost`) and the
1147
+ off-center checkbox check.
1148
+
1149
+ - **Variant table**: entries set `border-{color}` but never a border _width_ —
1150
+ which paints nothing in Tailwind v4, so `bordered` / `faded` / `ghost` showed
1151
+ no border on KunButton, KunChip and KunDropdown. Every variant now carries an
1152
+ explicit `border` width (transparent on `solid` / `light` / `flat` / `shadow`
1153
+ so box sizes stay uniform when switching variants), so the outline variants
1154
+ render again.
1155
+ - **KunCheckBox**: the checkmark was a full-size (1em) icon nudged down by its
1156
+ baseline offset, so it sat off-center and cramped the 20px box edge-to-edge.
1157
+ It's now an explicitly-sized 14px check centered with flexbox.
1158
+
1159
+ - Updated dependencies [0ec98f9]
1160
+ - @kungal/ui-core@0.2.4
1161
+
1162
+ ## 0.2.3
1163
+
1164
+ ### Patch Changes
1165
+
1166
+ - f0bc0fc: Fix stacked overlays: a newly-opened `KunModal` / `KunDrawer` could render
1167
+ _beneath_ an already-open one.
1168
+
1169
+ All overlays shared a single z-index (`z-kun-modal`), so when several were open
1170
+ the stacking fell back to DOM order — and because each overlay `Teleport`s to
1171
+ `<body>` at its fixed template position, that order followed _declaration_
1172
+ order, not _open_ order. Opening a second modal from inside the first (when the
1173
+ second is declared earlier in the template) buried the newer one.
1174
+
1175
+ Overlays now claim an incrementing z-index on open via the new
1176
+ `useKunOverlayZIndex` composable (anchored at the `--z-kun-modal` token so
1177
+ consumer overrides still apply; the counter resets when the last overlay
1178
+ closes), so the most-recently-opened overlay is always on top regardless of
1179
+ declaration/DOM order. `useKunOverlayZIndex` is exported for apps stacking their
1180
+ own overlays on the same layer. (`KunLightbox` uses a native `<dialog>` top
1181
+ layer and already stacked correctly.)
1182
+
1183
+ - @kungal/ui-core@0.2.3
1184
+
1185
+ ## 0.2.2
1186
+
1187
+ ### Patch Changes
1188
+
1189
+ - d32b6e5: Fix `Unknown file extension ".css"` crash under Nuxt SSR.
1190
+
1191
+ KunUpload imports `vue-advanced-cropper`'s stylesheets, and the library build
1192
+ externalized those `.css` subpaths — so bare `import 'vue-advanced-cropper/dist/
1193
+ style.css'` statements survived at the top of the published `dist/index.js`.
1194
+ Nuxt externalizes `@kungal/ui-vue` for SSR and handed those paths straight to
1195
+ Node, which can't load `.css` — crashing dev _and_ production SSR for any app
1196
+ that imported any Kun component (the cropper sits at the top of the barrel).
1197
+
1198
+ The build now bundles all imported dependency CSS into `@kungal/ui-vue`'s single
1199
+ `dist/style.css` (which consumers already import) and ships JS with no runtime
1200
+ CSS imports; the cropper's JS stays external. No consumer changes needed.
1201
+
1202
+ - @kungal/ui-core@0.2.2
1203
+
1204
+ ## 0.2.1
1205
+
1206
+ ### Patch Changes
1207
+
1208
+ - f48f420: Export `useBodyScrollLock`. The refcounted body scroll-lock composable that
1209
+ KunModal / KunDrawer / KunLightbox already use internally is now public, so apps
1210
+ can lock body scroll for their own overlays through the same shared counter
1211
+ (nested overlays won't unlock the body until the outermost one closes).
1212
+ - @kungal/ui-core@0.2.1
1213
+
1214
+ ## 0.2.0
1215
+
1216
+ ### Minor Changes
1217
+
1218
+ - e3cf45d: Bundle the default KunLoading / KunNull mascot images (base64 data URIs) — zero
1219
+ consumer setup, no network request, consistent with the bundled-icon policy.
1220
+
1221
+ - `KunLoading`: default `src` is now a bundled image (previously relied on a
1222
+ consumer-provided `/kun.webp` public asset).
1223
+ - `KunNull`: default image is now bundled (previously fetched a random sticker
1224
+ from the KunUI CDN via `getRandomSticker()`); added an optional `src` prop to
1225
+ override it.
1226
+ - Both images now render at their natural aspect ratio instead of being forced
1227
+ into a square.
1228
+
1229
+ - 35358f2: Settle on the `@kungal/ui-*` package namespace; the four packages are versioned and released together.
1230
+
1231
+ ### Patch Changes
1232
+
1233
+ - d5ffbb6: Fix KunIcon color inheritance and polish the loading/empty states:
1234
+
1235
+ - **KunIcon**: the inline SVG bodies paint with `currentColor`, but the base
1236
+ layer's `* { color }` rule was landing on the `v-html`'d inner nodes and
1237
+ pinning them to the foreground color — so `text-*` on (or above) `<KunIcon>`
1238
+ didn't actually color the icon. The inner nodes now inherit the icon's color.
1239
+ - **KunLoading / KunNull**: larger default image (`w-72` / `w-60`) shown at its
1240
+ natural aspect ratio instead of being squished into a square.
1241
+ - **KunNull**: the empty-state caption is now muted (`text-default-500`), and
1242
+ the default caption text changed to `莲说这里什么都没有`.
1243
+
1244
+ - Updated dependencies [35358f2]
1245
+ - @kungal/ui-core@0.2.0
1246
+
1247
+ ## 0.1.1
1248
+
1249
+ ### Patch Changes
1250
+
1251
+ - c532a02: Add npm `keywords` to every package for better discoverability on the npm registry.
1252
+ - Updated dependencies [c532a02]
1253
+ - @kungal/ui-core@0.1.1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kungal/ui-vue",
3
- "version": "1.6.1",
3
+ "version": "1.6.2",
4
4
  "description": "KunUI Vue 3 component layer — Nuxt-decoupled. Works in any Vue app; pairs with @kungal/ui-nuxt for Nuxt sugar.",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -29,6 +29,7 @@
29
29
  "*.vue"
30
30
  ],
31
31
  "files": [
32
+ "CHANGELOG.md",
32
33
  "dist"
33
34
  ],
34
35
  "main": "./dist/index.js",
@@ -49,7 +50,7 @@
49
50
  "date-fns": "^4.1.0",
50
51
  "focus-trap": "^8.2.1",
51
52
  "vue-advanced-cropper": "^2.8.9",
52
- "@kungal/ui-core": "1.6.1"
53
+ "@kungal/ui-core": "1.6.2"
53
54
  },
54
55
  "peerDependencies": {
55
56
  "vue": "^3.5.0"
@@ -61,7 +62,7 @@
61
62
  "vite": "^8.0.16",
62
63
  "vue": "^3.5.35",
63
64
  "vue-tsc": "^3.3.3",
64
- "@kungal/ui-tokens": "1.6.1"
65
+ "@kungal/ui-tokens": "1.6.2"
65
66
  },
66
67
  "scripts": {
67
68
  "build": "vite build && cp src/prose.css dist/prose.css && vue-tsc -p tsconfig.build.json",