@lyeve-labs/ui-kit 0.21.0 → 0.22.1

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.
@@ -208,12 +208,14 @@
208
208
  to its target and moves focus to it only if the target can hold focus,
209
209
  so without this the link moved the page and left focus on the body, and
210
210
  the next Tab started again at the top of the document: the sidebar the
211
- reader had just skipped. -->
211
+ reader had just skipped. No outline on it: the region is a landing, not
212
+ a control, and the browser's default drew a box around the whole page
213
+ body the moment the link was used. -->
212
214
  <main
213
215
  id="content"
214
216
  tabindex="-1"
215
217
  data-print="unclip"
216
- class="min-w-0 flex-1 overflow-auto bg-ink"
218
+ class="min-w-0 flex-1 overflow-auto bg-ink outline-none"
217
219
  >
218
220
  {@render children()}
219
221
  </main>
@@ -14,7 +14,7 @@
14
14
  * Drop the bottom margin, for a caller that owns the rhythm itself.
15
15
  *
16
16
  * The margin is opt-out rather than removed. Forty-three pages across the
17
- * estate render this component directly and take their heading gap from
17
+ * consuming applications render this component directly and take their heading gap from
18
18
  * it, so deleting it outright would have moved every one of them by 32px
19
19
  * with nothing in their own source to explain why.
20
20
  */
@@ -12,7 +12,7 @@ interface Props {
12
12
  * Drop the bottom margin, for a caller that owns the rhythm itself.
13
13
  *
14
14
  * The margin is opt-out rather than removed. Forty-three pages across the
15
- * estate render this component directly and take their heading gap from
15
+ * consuming applications render this component directly and take their heading gap from
16
16
  * it, so deleting it outright would have moved every one of them by 32px
17
17
  * with nothing in their own source to explain why.
18
18
  */
@@ -4,7 +4,7 @@
4
4
  /**
5
5
  * The event a native select hands its change handler.
6
6
  *
7
- * Frozen, and it stays frozen. Every call site in the estate passes an
7
+ * Frozen, and it stays frozen. Every call site in the consuming applications passes an
8
8
  * unannotated arrow whose parameter is contextually typed from this prop, and
9
9
  * several of them read `e.currentTarget.value` or call
10
10
  * `e.currentTarget.form.requestSubmit()`. Retyping the callback to take a
@@ -2,7 +2,7 @@ import type { Component } from 'svelte';
2
2
  /**
3
3
  * The event a native select hands its change handler.
4
4
  *
5
- * Frozen, and it stays frozen. Every call site in the estate passes an
5
+ * Frozen, and it stays frozen. Every call site in the consuming applications passes an
6
6
  * unannotated arrow whose parameter is contextually typed from this prop, and
7
7
  * several of them read `e.currentTarget.value` or call
8
8
  * `e.currentTarget.form.requestSubmit()`. Retyping the callback to take a
@@ -210,7 +210,10 @@
210
210
  }
211
211
  </script>
212
212
 
213
- <div data-testid="table-frame" class="relative w-full rounded-xl border border-line {cls}">
213
+ <!-- overflow-hidden on the frame, not only on the scroller: the hovered row's
214
+ ring is square and the frame is not, and the last row's corners drew past
215
+ the frame's rounded ones. -->
216
+ <div data-testid="table-frame" class="relative w-full overflow-hidden rounded-xl border border-line {cls}">
214
217
  <!--
215
218
  data-print: the box exists to clip. On paper there is no viewport to clip
216
219
  to, and every column past the edge would simply not be printed.
package/dist/index.d.ts CHANGED
@@ -89,4 +89,4 @@ export type { ConfirmOptions } from './components/dialog/dialog-manager.svelte.j
89
89
  export type { DialogOptions, DialogEntry, DialogSize } from './components/dialog/types.js';
90
90
  export { cn, type ClassValue } from './utils/cn.js';
91
91
  export { getTheme, getThemePreference, nextThemePreference, resolveTheme, setTheme, setThemePreference, systemTheme, themeBootScript, toggleTheme, watchSystemTheme, THEME_PREFERENCES, type Theme, type ThemePreference, } from './utils/theme.js';
92
- export declare const VERSION = "0.21.0";
92
+ export declare const VERSION = "0.22.1";
package/dist/index.js CHANGED
@@ -96,4 +96,4 @@ export { getTheme, getThemePreference, nextThemePreference, resolveTheme, setThe
96
96
  // ── Version ────────────────────────────────────────────────────────────────
97
97
  // Generated from package.json by `pnpm version:sync`. Bump package.json, never
98
98
  // this line; the build and the test suite fail when the two disagree.
99
- export const VERSION = '0.21.0';
99
+ export const VERSION = '0.22.1';
@@ -39,8 +39,12 @@
39
39
  * border-line-strong, not border-line: a panel floating over arbitrary content
40
40
  * needs a boundary that clears 3:1, which line does not. It carries the
41
41
  * resting text colour so a row can override it with a single utility.
42
+ *
43
+ * overflow-hidden, because the rows are square and the panel is not: the
44
+ * active ring on the first or last row drew its corners past the panel's
45
+ * rounded ones, a box poking out of the box that holds it.
42
46
  */
43
- export declare const PANEL_SURFACE = "absolute z-dropdown mt-1 rounded-xl border border-line-strong bg-surface text-fg shadow-2xl";
47
+ export declare const PANEL_SURFACE = "absolute z-dropdown mt-1 overflow-hidden rounded-xl border border-line-strong bg-surface text-fg shadow-2xl";
44
48
  /**
45
49
  * The scrolling region inside it.
46
50
  *
@@ -39,8 +39,12 @@
39
39
  * border-line-strong, not border-line: a panel floating over arbitrary content
40
40
  * needs a boundary that clears 3:1, which line does not. It carries the
41
41
  * resting text colour so a row can override it with a single utility.
42
+ *
43
+ * overflow-hidden, because the rows are square and the panel is not: the
44
+ * active ring on the first or last row drew its corners past the panel's
45
+ * rounded ones, a box poking out of the box that holds it.
42
46
  */
43
- export const PANEL_SURFACE = 'absolute z-dropdown mt-1 rounded-xl border border-line-strong bg-surface text-fg shadow-2xl';
47
+ export const PANEL_SURFACE = 'absolute z-dropdown mt-1 overflow-hidden rounded-xl border border-line-strong bg-surface text-fg shadow-2xl';
44
48
  /**
45
49
  * The scrolling region inside it.
46
50
  *
@@ -409,7 +409,7 @@ html[data-theme='light'] {
409
409
  /*
410
410
  * Print.
411
411
  *
412
- * The estate had no `@media print` rule anywhere, and three surfaces print:
412
+ * The consuming applications had no `@media print` rule anywhere, and three surfaces print:
413
413
  * the portal prints an invoice, the ops console prints an audit log, the admin
414
414
  * prints a subject-access export. All three printed the sidebar, the theme
415
415
  * toggle and the nav, in a dark palette, and all three printed one screenful
@@ -22,7 +22,7 @@
22
22
  * helper here understands.
23
23
  */
24
24
  /**
25
- * The one key every surface in the estate reads and writes.
25
+ * The one key every surface of every consuming application reads and writes.
26
26
  *
27
27
  * Not exported. A surface that needs the name has `getThemePreference` and
28
28
  * `setThemePreference`; a surface that spells the key itself is how two of
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lyeve-labs/ui-kit",
3
- "version": "0.21.0",
3
+ "version": "0.22.1",
4
4
  "description": "A clean, accessible, palette-aware Svelte 5 component library. The design system behind LyEve.",
5
5
  "license": "MIT",
6
6
  "author": "LyEve Labs <hello@lyeve.com>",
@@ -24,7 +24,7 @@
24
24
  "type": "module",
25
25
  "sideEffects": false,
26
26
  "engines": {
27
- "node": ">=20"
27
+ "node": ">=24"
28
28
  },
29
29
  "files": [
30
30
  "dist",
@@ -409,7 +409,7 @@ html[data-theme='light'] {
409
409
  /*
410
410
  * Print.
411
411
  *
412
- * The estate had no `@media print` rule anywhere, and three surfaces print:
412
+ * The consuming applications had no `@media print` rule anywhere, and three surfaces print:
413
413
  * the portal prints an invoice, the ops console prints an audit log, the admin
414
414
  * prints a subject-access export. All three printed the sidebar, the theme
415
415
  * toggle and the nav, in a dark palette, and all three printed one screenful