@kerfjs/ui 5.0.0-beta.60 → 5.0.0-beta.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/ai/component-catalog.json +129 -19
- package/ai/component-composition-rules.json +8 -0
- package/ai/component-composition.d.ts +10 -0
- package/ai/component-composition.json +109 -7
- package/ai/component-composition.schema.json +21 -0
- package/ai/components/README.md +5 -4
- package/ai/components/chip.md +72 -0
- package/ai/components/grid.md +10 -7
- package/ai/components/list-item.md +10 -7
- package/ai/components/select.md +5 -2
- package/ai/components/tabs.md +8 -4
- package/ai/components/toolbar.md +3 -2
- package/ai/public-api-signatures-v1.md +90 -14
- package/ai/skill.md +21 -3
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/dist/app-tab.d.ts +12 -2
- package/dist/app-tab.js +1 -1
- package/dist/browser/chip.js +3 -0
- package/dist/catalog.js +6 -6
- package/dist/chip.d.ts +29 -0
- package/dist/chip.js +3 -0
- package/dist/chip.js.map +1 -0
- package/dist/{chunk-F7F7KRO2.js → chunk-4SQK27MR.js} +33 -18
- package/dist/chunk-4SQK27MR.js.map +1 -0
- package/dist/{chunk-46263QLK.js → chunk-C4OYOKWX.js} +18 -6
- package/dist/chunk-C4OYOKWX.js.map +1 -0
- package/dist/chunk-EAC4CDY7.js +57 -0
- package/dist/chunk-EAC4CDY7.js.map +1 -0
- package/dist/{chunk-T57AXDFM.js → chunk-NYL63PSD.js} +2 -2
- package/dist/{chunk-T57AXDFM.js.map → chunk-NYL63PSD.js.map} +1 -1
- package/dist/{chunk-T66UNBXL.js → chunk-Q6YU3BT7.js} +11 -2
- package/dist/chunk-Q6YU3BT7.js.map +1 -0
- package/dist/chunk-SWVW56CV.js +188 -0
- package/dist/chunk-SWVW56CV.js.map +1 -0
- package/dist/{chunk-WPLIO5WJ.js → chunk-TEYARRAK.js} +37 -5
- package/dist/chunk-TEYARRAK.js.map +1 -0
- package/dist/{chunk-AGXQQFKZ.js → chunk-UCKKT6KO.js} +13 -4
- package/dist/chunk-UCKKT6KO.js.map +1 -0
- package/dist/{chunk-UWONG4QE.js → chunk-VCBTX62E.js} +11 -3
- package/dist/chunk-VCBTX62E.js.map +1 -0
- package/dist/{chunk-2OXQHM7I.js → chunk-Y74NWGQW.js} +3 -3
- package/dist/{chunk-2OXQHM7I.js.map → chunk-Y74NWGQW.js.map} +1 -1
- package/dist/collapsible-panel.js +2 -2
- package/dist/grid.d.ts +13 -5
- package/dist/grid.js +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +14 -13
- package/dist/list-item.d.ts +11 -1
- package/dist/list-item.js +1 -1
- package/dist/popup-menu.d.ts +2 -2
- package/dist/popup-menu.js +1 -1
- package/dist/select-register.js +46 -0
- package/dist/select-register.js.map +1 -1
- package/dist/select.d.ts +14 -0
- package/dist/select.js +1 -1
- package/dist/styles/app-tab.css +35 -0
- package/dist/styles/chip.css +118 -0
- package/dist/styles/grid.css +7 -0
- package/dist/styles/list-item.css +14 -9
- package/dist/styles/popup-menu.css +2 -1
- package/dist/styles/segmented-control.css +2 -1
- package/dist/styles/select.css +30 -0
- package/dist/styles/styles.css +1 -0
- package/dist/styles/toolbar.css +8 -5
- package/dist/{token-search-field-CCke1yvQ.d.ts → token-search-field-DvgFLhLL.d.ts} +6 -2
- package/dist/token-search-field.d.ts +1 -1
- package/dist/token-search-model.d.ts +1 -1
- package/dist/token-search-model.js +1 -1
- package/dist/wire-catalog.js +1 -1
- package/dist/wire-tab-bars.js +1 -1
- package/dist/wire-token-search-fields.d.ts +1 -1
- package/dist/workbench.js +1 -1
- package/docs/accessibility.md +29 -3
- package/docs/component-contract.md +5 -0
- package/docs/component-selection.md +66 -4
- package/docs/design/templates/segmented-control/equal-dark.svg +1 -1
- package/docs/design/templates/segmented-control/equal.svg +1 -1
- package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -1
- package/docs/design/templates/segmented-control/pill-small.svg +1 -1
- package/docs/design/templates/segmented-control-dark.svg +1 -1
- package/docs/design/templates/segmented-control.svg +1 -1
- package/docs/layout.md +20 -9
- package/docs/sunken-panel.md +5 -0
- package/docs/webawesome-theme.md +32 -0
- package/llms.txt +36 -8
- package/package.json +7 -1
- package/dist/chunk-46263QLK.js.map +0 -1
- package/dist/chunk-5I7OHCIP.js +0 -96
- package/dist/chunk-5I7OHCIP.js.map +0 -1
- package/dist/chunk-AGXQQFKZ.js.map +0 -1
- package/dist/chunk-F7F7KRO2.js.map +0 -1
- package/dist/chunk-T66UNBXL.js.map +0 -1
- package/dist/chunk-UWONG4QE.js.map +0 -1
- package/dist/chunk-WPLIO5WJ.js.map +0 -1
|
@@ -166,6 +166,27 @@
|
|
|
166
166
|
"items": { "type": "string", "pattern": "^[^:]+:[^:]+$" },
|
|
167
167
|
"uniqueItems": true
|
|
168
168
|
},
|
|
169
|
+
"jsxExports": {
|
|
170
|
+
"description": "Placement contracts for additional JSX exports from one selection entry. These exports do not stand for the entry's root or its zones.",
|
|
171
|
+
"type": "object",
|
|
172
|
+
"propertyNames": { "pattern": "^[A-Z][A-Za-z0-9]*$" },
|
|
173
|
+
"additionalProperties": {
|
|
174
|
+
"type": "object",
|
|
175
|
+
"required": ["parents"],
|
|
176
|
+
"properties": {
|
|
177
|
+
"parents": {
|
|
178
|
+
"type": "object",
|
|
179
|
+
"required": ["mode", "entries"],
|
|
180
|
+
"properties": {
|
|
181
|
+
"mode": { "enum": ["any", "root", "listed"] },
|
|
182
|
+
"entries": { "$ref": "#/$defs/stringList" }
|
|
183
|
+
},
|
|
184
|
+
"additionalProperties": false
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
"additionalProperties": false
|
|
188
|
+
}
|
|
189
|
+
},
|
|
169
190
|
"parents": {
|
|
170
191
|
"type": "object",
|
|
171
192
|
"required": ["mode", "entries"],
|
package/ai/components/README.md
CHANGED
|
@@ -9,6 +9,7 @@ Exact prop and callback types live in [`public-api-signatures-v1.md`](../public-
|
|
|
9
9
|
## Kerf UI — Foundation
|
|
10
10
|
|
|
11
11
|
- [Badge](./badge.md) — Present compact metadata without application-authored badge CSS or consumer styling of component internals.
|
|
12
|
+
- [Chip](./chip.md) — Render removable tags without application rules on Web Awesome internals.
|
|
12
13
|
- [LucideIcon](./lucide-icon.md) — Decorative and meaningfully labeled Lucide-compatible icons.
|
|
13
14
|
- [DisclosureArrow](./disclosure-arrow.md) — Indicate whether a disclosure control is open with an overridable 18px root-scaled visual and shortest-path rotation behavior.
|
|
14
15
|
- [Foundation tokens](./foundation.md) — Provide the shared semantic token foundation for application themes and every styled Kerf UI component.
|
|
@@ -33,7 +34,7 @@ Exact prop and callback types live in [`public-api-signatures-v1.md`](../public-
|
|
|
33
34
|
- [Headers](./headers.md) — Page, dialog, and definition-list hierarchy.
|
|
34
35
|
- [ValueTable](./value-table.md) — Key/value rows with optional icons and aligned separators.
|
|
35
36
|
- [Row](./row.md) — Arrange related content horizontally with consistent spacing, optional physical-side text/control insets, and explicit left/center/right/full plus top/middle/bottom/full/baseline alignment instead of application-owned flex wrappers.
|
|
36
|
-
- [Grid](./grid.md) — Arrange related siblings in equal-width columns
|
|
37
|
+
- [Grid](./grid.md) — Arrange related siblings in equal-width columns with either a fixed count or automatic container-width collapse.
|
|
37
38
|
- [Spacer](./spacer.md) — Express an intentional empty dimension or consume remaining flex space without application-owned spacer markup or raw CSS lengths.
|
|
38
39
|
- [ListInsetControl](./list-inset-control.md) — Apply the standard 8px outer margin to all physical sides of a self-bordered control by default, or only the sides selected with the canonical Sides contract.
|
|
39
40
|
- [ListInsetText](./list-inset-text.md) — Apply the full 8px margin + 1px transparent border + 8px padding to all physical sides of bare text by default, or only the sides selected with the canonical Sides contract.
|
|
@@ -44,9 +45,9 @@ Exact prop and callback types live in [`public-api-signatures-v1.md`](../public-
|
|
|
44
45
|
- [List](./list.md) — Standardize vertical component layout, optional physical-side text/control insets, and scroll/divider ownership instead of repeating ad-hoc flex-column wrappers.
|
|
45
46
|
- [ListHeader](./list-header.md) — Fill the available section width by default, or shrink-wrap without outer geometry when inline, while splitting a dormant title and mutually exclusive semantic count or badge from an optional logical-end action with an 18px visual; disclosure mode renders the title cluster as a button with a default production DisclosureArrow.
|
|
46
47
|
- [ListActionRow](./list-action-row.md) — Keep a selectable primary row action and an independently named trailing action as sibling native controls inside one noninteractive visual row.
|
|
47
|
-
- [ListItem](./list-item.md) — Selectable, disabled, trailing, and multiline
|
|
48
|
+
- [ListItem](./list-item.md) — Selectable, disabled, trailing, and multiline action or link rows.
|
|
48
49
|
- [Application tabs](./application-tabs.md) — Show AppTab and TabBar in a complete controlled composition.
|
|
49
|
-
- [AppTab](./tabs.md) —
|
|
50
|
+
- [AppTab](./tabs.md) — Render a controlled application tab with compact or icon-only presentation, a visible drop target, optional full-name display, and an optional pinned leading position.
|
|
50
51
|
- [TabBar](./tab-bar.md) — Controlled tab strips whose tabs shrink and scroll while fixed leading, trailing, and far-edge end actions remain visible.
|
|
51
52
|
|
|
52
53
|
## Kerf UI — Controls
|
|
@@ -54,7 +55,7 @@ Exact prop and callback types live in [`public-api-signatures-v1.md`](../public-
|
|
|
54
55
|
- [SegmentedControl](./segmented-control.md) — Controlled exclusive choices in toolbar, rounded-rectangle, and pill presentations.
|
|
55
56
|
- [TokenSearchField](./token-search-field.md) — Token-controlled, optionally collapsible search editor with ordered, editable, removable filter chips.
|
|
56
57
|
- [ResizableRegion](./resize.md) — Pointer and keyboard-operable split region with a customizable handle icon.
|
|
57
|
-
- [Select](./select.md) —
|
|
58
|
+
- [Select](./select.md) — Choose one or more controlled values, keep unavailable choices visible, and optionally select all enabled choices or clear a multiple selection.
|
|
58
59
|
- [PopupMenu](./popup-menu.md) — A typed action menu with nested choices, selected state, and optional pointer-anchored context opening, built on the Web Awesome dropdown.
|
|
59
60
|
|
|
60
61
|
## Kerf UI — Feedback
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Chip
|
|
2
|
+
|
|
3
|
+
<!-- Generated by scripts/sync-component-docs.mjs from ai/component-catalog.json and ai/component-composition.json. Do not edit; run `npm run catalog:sync`. -->
|
|
4
|
+
|
|
5
|
+
`@kerfjs/ui:chip` · Kerf UI · component · Foundation
|
|
6
|
+
|
|
7
|
+
A short tag with semantic tone and an optional accessible remove button, including compact and disabled variants.
|
|
8
|
+
|
|
9
|
+
## When to use
|
|
10
|
+
|
|
11
|
+
Render removable tags without application rules on Web Awesome internals.
|
|
12
|
+
|
|
13
|
+
- Show a short tag that the application can remove through a delegated action, including a compact or disabled tag.
|
|
14
|
+
|
|
15
|
+
**Not when:**
|
|
16
|
+
|
|
17
|
+
- Use Badge for non-interactive status and count metadata.
|
|
18
|
+
- Do not use the remove button without a specific accessible name.
|
|
19
|
+
|
|
20
|
+
## Imports
|
|
21
|
+
|
|
22
|
+
- JavaScript: `@kerfjs/ui/chip` — exports `Chip`.
|
|
23
|
+
- CSS: the browser build of `@kerfjs/ui/chip` pulls its CSS automatically; import `@kerfjs/ui/chip.css` manually only without the `browser` export condition.
|
|
24
|
+
- Declared side effects: browser-condition-css.
|
|
25
|
+
|
|
26
|
+
## Props
|
|
27
|
+
|
|
28
|
+
Exact prop names and types: [`@kerfjs/ui/chip`](../public-api-signatures-v1.md#kerfjsuichip) in `public-api-signatures-v1.md`. Do not infer props from examples.
|
|
29
|
+
|
|
30
|
+
**Variants (configure, do not restyle):**
|
|
31
|
+
|
|
32
|
+
- neutral, brand, pop, success, warning, or danger tone
|
|
33
|
+
- quiet, solid, or outline appearance
|
|
34
|
+
- pill or rounded shape
|
|
35
|
+
- compact or default size
|
|
36
|
+
- removable or plain, enabled or disabled
|
|
37
|
+
|
|
38
|
+
## Composition
|
|
39
|
+
|
|
40
|
+
- Parents: any.
|
|
41
|
+
- Contexts: `application-ui`.
|
|
42
|
+
- Children: unrestricted.
|
|
43
|
+
|
|
44
|
+
## State and wiring
|
|
45
|
+
|
|
46
|
+
**The app owns:** tag text and identity; remove action and list update; disabled policy.
|
|
47
|
+
|
|
48
|
+
No wiring helper.
|
|
49
|
+
|
|
50
|
+
## Geometry
|
|
51
|
+
|
|
52
|
+
Margin: none · border: self · padding: self (layout role: foundation). `self` means the component already owns it — do not add wrapper padding, margin, or borders around it.
|
|
53
|
+
|
|
54
|
+
## Accessibility
|
|
55
|
+
|
|
56
|
+
- The remove control is a native button and requires an action and a specific removeLabel. A disabled chip disables that button and removes it from keyboard interaction.
|
|
57
|
+
- Keep meaningful tag text visible because tone is supplementary.
|
|
58
|
+
|
|
59
|
+
## Styling boundary
|
|
60
|
+
|
|
61
|
+
The component owns its own styles. Configure it through its props and variants; do not override its internals.
|
|
62
|
+
|
|
63
|
+
Public class hooks (select for layout placement only, never to change the component's look): `kui-chip`.
|
|
64
|
+
|
|
65
|
+
Never put `kui-chip` on an element you write; render `Chip` instead (`KUI-L103`).
|
|
66
|
+
|
|
67
|
+
Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-*` selectors (`KUI-L001`, `KUI-L010`), unknown or private tokens (`KUI-L002`, `KUI-L012`), and any application rule that restyles the component, forced dimensions included (`KUI-L019`).
|
|
68
|
+
|
|
69
|
+
## Related
|
|
70
|
+
|
|
71
|
+
- Docs: [`docs/component-selection.md`](../../docs/component-selection.md), [`docs/component-selection.md#problem-to-component-matrix`](../../docs/component-selection.md#problem-to-component-matrix).
|
|
72
|
+
- UX catalog route: `?component=chip`.
|
package/ai/components/grid.md
CHANGED
|
@@ -4,21 +4,22 @@
|
|
|
4
4
|
|
|
5
5
|
`@kerfjs/ui:grid` · Kerf UI · component · Structure
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Equal-width columns with a fixed count or a minimum-width responsive mode, typed gaps, and optional flex participation.
|
|
8
8
|
|
|
9
9
|
## When to use
|
|
10
10
|
|
|
11
|
-
Arrange related siblings in equal-width columns
|
|
11
|
+
Arrange related siblings in equal-width columns with either a fixed count or automatic container-width collapse.
|
|
12
12
|
|
|
13
13
|
- Arrange related siblings into a fixed positive number of equal-width columns.
|
|
14
|
+
- Fit equal-width columns down to a typed minimum and collapse as the container narrows.
|
|
14
15
|
- Prevent wider intrinsic content from making one fractional track wider than its peers.
|
|
15
16
|
- Use a finite flex keyword or the flex() builder when Grid participates in a flexible parent layout.
|
|
16
17
|
|
|
17
18
|
**Not when:**
|
|
18
19
|
|
|
19
|
-
- Do not use Grid for intrinsic, asymmetric, spanning,
|
|
20
|
+
- Do not use Grid for intrinsic, asymmetric, spanning, or masonry tracks; use application-owned CSS grid.
|
|
20
21
|
- Do not use Grid when columns need a user-operable separator; use ResizableRegion.
|
|
21
|
-
- Do not
|
|
22
|
+
- Do not combine fixed columns with minColumnWidth; choose one layout mode.
|
|
22
23
|
- Do not pass raw CSS strings to gap or flex, mix their distinct grammars, or use s/xl spacing steps without a deliberate exception.
|
|
23
24
|
|
|
24
25
|
**Alternatives:**
|
|
@@ -40,6 +41,7 @@ Exact prop names and types: [`@kerfjs/ui/grid`](../public-api-signatures-v1.md#k
|
|
|
40
41
|
**Variants (configure, do not restyle):**
|
|
41
42
|
|
|
42
43
|
- any positive safe-integer equal-track count
|
|
44
|
+
- typed minimum column width with automatic container-width collapse
|
|
43
45
|
- named none/2xs/xs/s/m/l/xl token gap
|
|
44
46
|
- typed CssLength gap
|
|
45
47
|
- boolean, finite-keyword, or typed CssFlex flex
|
|
@@ -48,6 +50,7 @@ Exact prop names and types: [`@kerfjs/ui/grid`](../public-api-signatures-v1.md#k
|
|
|
48
50
|
|
|
49
51
|
**CSS-value props** (typed builders from `@kerfjs/ui/css-values`; raw CSS strings are rejected):
|
|
50
52
|
|
|
53
|
+
- `minColumnWidth`: length grammar; raw values: forbid; helpers `px`, `rem`, `em`, `pct`, `space`, `lengthVar`, `calc` — e.g. `minColumnWidth={px(376)}`
|
|
51
54
|
- `gap`: length grammar; raw values: forbid; shorthands `none`, `2xs`, `xs`, `m`, `l`; exceptional (justify) `s`, `xl`; helpers `px`, `rem`, `em`, `pct`, `space`, `lengthVar`, `calc` — e.g. `gap="m"`
|
|
52
55
|
- `flex`: flex grammar; raw values: forbid; shorthands `none`, `auto`, `initial`; helpers `flex` — e.g. `flex`
|
|
53
56
|
|
|
@@ -59,7 +62,7 @@ Exact prop names and types: [`@kerfjs/ui/grid`](../public-api-signatures-v1.md#k
|
|
|
59
62
|
|
|
60
63
|
## State and wiring
|
|
61
64
|
|
|
62
|
-
**The app owns:** child semantics and content; column count
|
|
65
|
+
**The app owns:** child semantics and content; fixed column count or responsive minimum width; typed gap and flex choices.
|
|
63
66
|
|
|
64
67
|
No wiring helper.
|
|
65
68
|
|
|
@@ -67,12 +70,12 @@ No wiring helper.
|
|
|
67
70
|
|
|
68
71
|
Margin: none · border: none · padding: none (layout role: structure). `self` means the component already owns it — do not add wrapper padding, margin, or borders around it.
|
|
69
72
|
|
|
70
|
-
-
|
|
73
|
+
- Fixed tracks use minmax(0, 1fr); responsive tracks use auto-fit with a minimum width capped at 100%, preserving equal distribution without narrow overflow.
|
|
71
74
|
|
|
72
75
|
## Accessibility
|
|
73
76
|
|
|
74
77
|
- Grid adds layout only and no grid role; children retain responsibility for native or ARIA semantics.
|
|
75
|
-
- Responsive column-count changes
|
|
78
|
+
- Responsive column-count changes preserve source and focus order.
|
|
76
79
|
|
|
77
80
|
## Styling boundary
|
|
78
81
|
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
`@kerfjs/ui:list-item` · Kerf UI · component · Navigation
|
|
6
6
|
|
|
7
|
-
Configurable native-button navigation rows with structured labels, status/busy metadata, density, group dividers, protected domain metadata hooks, and rounded-boundary overflow clipping.
|
|
7
|
+
Configurable native-button action rows and native-anchor navigation rows with structured labels, status/busy metadata, density, group dividers, protected domain metadata hooks, and rounded-boundary overflow clipping.
|
|
8
8
|
|
|
9
9
|
## When to use
|
|
10
10
|
|
|
11
|
-
Selectable, disabled, trailing, and multiline
|
|
11
|
+
Selectable, disabled, trailing, and multiline action or link rows.
|
|
12
12
|
|
|
13
|
-
- Render a selectable, disabled, trailing, or multiline sidebar
|
|
13
|
+
- Render a selectable, disabled, trailing, or multiline sidebar action row whose descendants must remain clipped to the rounded row boundary; use ListItemLink when the destination has an href and needs native link activation.
|
|
14
14
|
|
|
15
15
|
**Not when:**
|
|
16
16
|
|
|
@@ -23,7 +23,7 @@ Selectable, disabled, trailing, and multiline navigation rows.
|
|
|
23
23
|
|
|
24
24
|
## Imports
|
|
25
25
|
|
|
26
|
-
- JavaScript: `@kerfjs/ui/list-item` — exports `ListItem`.
|
|
26
|
+
- JavaScript: `@kerfjs/ui/list-item` — exports `ListItem`, `ListItemLink`.
|
|
27
27
|
- CSS: the browser build of `@kerfjs/ui/list-item` pulls its CSS automatically; import `@kerfjs/ui/list-item.css` manually only without the `browser` export condition.
|
|
28
28
|
- Declared side effects: browser-condition-css.
|
|
29
29
|
|
|
@@ -33,6 +33,7 @@ Exact prop names and types: [`@kerfjs/ui/list-item`](../public-api-signatures-v1
|
|
|
33
33
|
|
|
34
34
|
**Variants (configure, do not restyle):**
|
|
35
35
|
|
|
36
|
+
- native link and external link
|
|
36
37
|
- selected
|
|
37
38
|
- pressed
|
|
38
39
|
- disabled
|
|
@@ -60,7 +61,7 @@ Exact prop names and types: [`@kerfjs/ui/list-item`](../public-api-signatures-v1
|
|
|
60
61
|
|
|
61
62
|
## State and wiring
|
|
62
63
|
|
|
63
|
-
**The app owns:** routing; selection; permissions; action handling; domain data attributes.
|
|
64
|
+
**The app owns:** routing; link destinations; selection; permissions; action handling; domain data attributes.
|
|
64
65
|
|
|
65
66
|
No wiring helper.
|
|
66
67
|
|
|
@@ -68,9 +69,11 @@ No wiring helper.
|
|
|
68
69
|
|
|
69
70
|
Margin: self · border: self · padding: self (layout role: navigation). `self` means the component already owns it — do not add wrapper padding, margin, or borders around it.
|
|
70
71
|
|
|
72
|
+
- Public resting background and border, hover border, and selected border tokens can be scoped to a row or its containing list without changing the default tones.
|
|
73
|
+
|
|
71
74
|
## Accessibility
|
|
72
75
|
|
|
73
|
-
-
|
|
76
|
+
- ListItem uses native button activation and pressed maps to aria-pressed; ListItemLink uses native anchor activation and external opens a new tab with safe rel and an announced default label. Both map selected to aria-current; disabled or loading links omit href and leave the tab order. rootAttributes cannot add role=menuitem or replace owned ARIA; trailing is dormant content and must not contain controls.
|
|
74
77
|
|
|
75
78
|
## Styling boundary
|
|
76
79
|
|
|
@@ -80,7 +83,7 @@ Public class hooks (select for layout placement only, never to change the compon
|
|
|
80
83
|
|
|
81
84
|
Never put `kui-list-item`, `kui-list-item__icon`, `kui-list-item__label`, `kui-list-item__primary-label`, `kui-list-item__description`, `kui-list-item__status`, `kui-list-item__trailing` on an element you write; render `ListItem` instead (`KUI-L103`).
|
|
82
85
|
|
|
83
|
-
Public tokens it reads: `--kui-color-brand-border-normal`, `--kui-color-brand-fill-quiet`, `--kui-color-brand-fill-normal`, `--kui-color-neutral-fill-quiet`, `--kui-color-neutral-on-normal`, `--kui-color-neutral-on-quiet`, `--kui-color-neutral-border-quiet`, `--kui-focus-ring`, `--kui-list-item-color`, `--kui-list-item-align-items`, `--kui-list-item-border-width`, `--kui-list-item-columns`, `--kui-list-item-drag-target-background`, `--kui-list-item-drag-target-outline`, `--kui-list-item-drag-target-outline-offset`, `--kui-list-item-gap`, `--kui-list-item-hover-background`, `--kui-list-item-icon-color`, `--kui-list-item-icon-size`, `--kui-list-item-label-max-width`, `--kui-list-item-label-weight`, `--kui-list-item-min-height`, `--kui-list-item-padding-block`, `--kui-list-item-padding-inline`, `--kui-list-item-radius`, `--kui-list-item-selected-background`, `--kui-list-item-selected-color`, `--kui-list-item-trailing-color`, `--kui-list-group-divider-color`, `--kui-font-xs`, `--kui-layout-inline-margin`, `--kui-layout-item-gap`, `--kui-layout-item-padding`, `--kui-layout-rounded-radius`. Set a token only where its public contract allows; prefer a prop.
|
|
86
|
+
Public tokens it reads: `--kui-color-brand-border-normal`, `--kui-color-brand-border-quiet`, `--kui-color-brand-fill-quiet`, `--kui-color-brand-fill-normal`, `--kui-color-neutral-fill-quiet`, `--kui-color-neutral-on-normal`, `--kui-color-neutral-on-quiet`, `--kui-color-neutral-border-quiet`, `--kui-color-neutral-border-normal`, `--kui-focus-ring`, `--kui-list-item-color`, `--kui-list-item-background`, `--kui-list-item-align-items`, `--kui-list-item-border-width`, `--kui-list-item-border`, `--kui-list-item-columns`, `--kui-list-item-drag-target-background`, `--kui-list-item-drag-target-outline`, `--kui-list-item-drag-target-outline-offset`, `--kui-list-item-gap`, `--kui-list-item-hover-background`, `--kui-list-item-hover-border`, `--kui-list-item-icon-color`, `--kui-list-item-icon-size`, `--kui-list-item-label-max-width`, `--kui-list-item-label-weight`, `--kui-list-item-min-height`, `--kui-list-item-padding-block`, `--kui-list-item-padding-inline`, `--kui-list-item-radius`, `--kui-list-item-selected-background`, `--kui-list-item-selected-border`, `--kui-list-item-selected-color`, `--kui-list-item-trailing-color`, `--kui-list-group-divider-color`, `--kui-font-xs`, `--kui-layout-inline-margin`, `--kui-layout-item-gap`, `--kui-layout-item-padding`, `--kui-layout-rounded-radius`. Set a token only where its public contract allows; prefer a prop.
|
|
84
87
|
|
|
85
88
|
Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-*` selectors (`KUI-L001`, `KUI-L010`), unknown or private tokens (`KUI-L002`, `KUI-L012`), and any application rule that restyles the component, forced dimensions included (`KUI-L019`).
|
|
86
89
|
|
package/ai/components/select.md
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
`@kerfjs/ui:select` · Kerf UI · component · Controls
|
|
6
6
|
|
|
7
|
-
Controlled Web Awesome select with typed single or multiple values and form, toolbar, navigation, compact, icon-only, truncating, hint, and grouped-choice presentations.
|
|
7
|
+
Controlled Web Awesome select with typed single or multiple values, disabled choices, optional bulk actions, and form, toolbar, navigation, compact, icon-only, truncating, hint, and grouped-choice presentations.
|
|
8
8
|
|
|
9
9
|
## When to use
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Choose one or more controlled values, keep unavailable choices visible, and optionally select all enabled choices or clear a multiple selection.
|
|
12
12
|
|
|
13
13
|
- Choose a controlled value from a moderate or long list, including grouped and icon-bearing choices.
|
|
14
14
|
- Color an optional choice icon with a CssForegroundColor: uiColor() with a foreground token such as success-on-quiet, or foregroundColorVar() for an app-owned property. Fill tokens such as success are backgrounds that leave the icon nearly invisible, so they, lengths, raw color strings, and unqualified colorVar() values are rejected.
|
|
@@ -51,6 +51,8 @@ Exact prop names and types: [`@kerfjs/ui/select`](../public-api-signatures-v1.md
|
|
|
51
51
|
- fit-content, max-content, or fill trigger width
|
|
52
52
|
- custom selected content typography and ellipsis
|
|
53
53
|
- multiple selection
|
|
54
|
+
- disabled choice with an optional reason
|
|
55
|
+
- opt-in select-all and clear actions for multiple selection
|
|
54
56
|
- multiple icon-only filter trigger with a fixed triggerIcon
|
|
55
57
|
|
|
56
58
|
**CSS-value props** (typed builders from `@kerfjs/ui/css-values`; raw CSS strings are rejected):
|
|
@@ -83,6 +85,7 @@ Margin: none · border: self · padding: self (layout role: controls). `self` me
|
|
|
83
85
|
- Hint text is visible below the control through Web Awesome's native hint relationship; placeholderText remains the empty value inside the closed control.
|
|
84
86
|
- Import select/register once; its scoped lifecycle adapter keeps the latest open/close request authoritative across animation reversals, canceled transitions, and removal. Do not add consumer popup timing or position repairs.
|
|
85
87
|
- With multiple, the popup stays open while choices toggle (pointer, Enter, or Space) and closes on an outside press, Escape, or focus leaving; each chosen option shows a check, and the closed control summarizes the chosen labels in choice order.
|
|
88
|
+
- Disabled choices stay visible but cannot be selected; disabledReason exposes a tooltip. A multiple Select can opt in to localized select-all and clear buttons, which skip disabled choices and publish ordinary input/change events for changed values.
|
|
86
89
|
- A multiple icon-only trigger shows its fixed triggerIcon and, while any choice is chosen, an aria-hidden count Badge; the combobox's accessible name ends with the chosen labels in choice order, and its hidden value stays empty.
|
|
87
90
|
- Once registered, an icon-only trigger (single or multiple) shows an aria-hidden Web Awesome help tag repeating its accessible name (a single Select adds its current choice) after a 500ms hover and at once on keyboard focus; it hides while the popup is open, on a press, and on Escape, and never joins aria-labelledby. Do not add a title or another tooltip.
|
|
88
91
|
|
package/ai/components/tabs.md
CHANGED
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
`@kerfjs/ui:tabs` · Kerf UI · component · Navigation
|
|
6
6
|
|
|
7
|
+
Roving-tabindex-ready tabs with typed compact, segmented, icon-only, drop-target, pinned, and name-overflow presentations.
|
|
8
|
+
|
|
7
9
|
## When to use
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
Render a controlled application tab with compact or icon-only presentation, a visible drop target, optional full-name display, and an optional pinned leading position.
|
|
10
12
|
|
|
11
13
|
- Render one controlled application tab inside TabBar.
|
|
12
14
|
|
|
@@ -40,7 +42,9 @@ Exact prop names and types: [`@kerfjs/ui/app-tab`](../public-api-signatures-v1.m
|
|
|
40
42
|
- compact size
|
|
41
43
|
- segmented presentation
|
|
42
44
|
- icon-only accessible presentation
|
|
43
|
-
- label maximum width and
|
|
45
|
+
- label maximum width and ellipsis or visible name overflow
|
|
46
|
+
- drop-target highlight
|
|
47
|
+
- pinned leading position within a scrolling tablist
|
|
44
48
|
- attention name color
|
|
45
49
|
|
|
46
50
|
## Composition
|
|
@@ -58,7 +62,7 @@ Zones (a zone is bound to JSX only through its listed prop; never assume the zon
|
|
|
58
62
|
|
|
59
63
|
## State and wiring
|
|
60
64
|
|
|
61
|
-
**The app owns:** tab identity; selection; close policy; content; application data attribute values; outer placement.
|
|
65
|
+
**The app owns:** tab identity; selection; drop-target state; close policy; content; application data attribute values; outer placement.
|
|
62
66
|
|
|
63
67
|
No wiring helper.
|
|
64
68
|
|
|
@@ -80,7 +84,7 @@ Public class hooks (select for layout placement only, never to change the compon
|
|
|
80
84
|
|
|
81
85
|
Never put `kui-app-tab`, `kui-app-tab__close`, `kui-app-tab__close-icon`, `kui-app-tab__name`, `kui-app-tab__select`, `kui-app-tab__trailing` on an element you write; render `AppTab` instead (`KUI-L103`).
|
|
82
86
|
|
|
83
|
-
Public tokens it reads: `--kui-app-tab-attention-color`, `--kui-app-tab-color`, `--kui-app-tab-drop-indicator`, `--kui-app-tab-hover-background`, `--kui-app-tab-selected-background`, `--kui-app-tab-selected-border`, `--kui-app-tab-selected-color`, `--kui-color-brand-border-normal`, `--kui-color-brand-on-quiet`, `--kui-color-neutral-border-normal`, `--kui-color-neutral-on-quiet`, `--kui-color-surface`, `--kui-color-text`, `--kui-focus-ring`, `--kui-font-xs`, `--kui-radius-pill`, `--kui-shadow-s`, `--kui-space-2xs`, `--kui-space-xs`. Set a token only where its public contract allows; prefer a prop.
|
|
87
|
+
Public tokens it reads: `--kui-app-tab-attention-color`, `--kui-app-tab-color`, `--kui-app-tab-drop-indicator`, `--kui-app-tab-drop-target-background`, `--kui-app-tab-drop-target-color`, `--kui-app-tab-drop-target-ring`, `--kui-app-tab-hover-background`, `--kui-app-tab-pinned-background`, `--kui-app-tab-pinned-hover-background`, `--kui-app-tab-selected-background`, `--kui-app-tab-selected-border`, `--kui-app-tab-selected-color`, `--kui-color-brand-border-normal`, `--kui-color-brand-on-quiet`, `--kui-color-neutral-border-normal`, `--kui-color-neutral-on-quiet`, `--kui-color-surface`, `--kui-color-text`, `--kui-focus-ring`, `--kui-font-xs`, `--kui-radius-pill`, `--kui-shadow-s`, `--kui-space-2xs`, `--kui-space-xs`. Set a token only where its public contract allows; prefer a prop.
|
|
84
88
|
|
|
85
89
|
Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-*` selectors (`KUI-L001`, `KUI-L010`), unknown or private tokens (`KUI-L002`, `KUI-L012`), and any application rule that restyles the component, forced dimensions included (`KUI-L019`).
|
|
86
90
|
|
package/ai/components/toolbar.md
CHANGED
|
@@ -36,6 +36,7 @@ Exact prop names and types: [`@kerfjs/ui/toolbar`](../public-api-signatures-v1.m
|
|
|
36
36
|
- center priority for an expanded center control
|
|
37
37
|
- trailing priority for an expanded trailing control at compact or narrow widths
|
|
38
38
|
- trailing groups wrap instead of clipping
|
|
39
|
+
- outer inset independently configurable from zone gap
|
|
39
40
|
- app bar or bottom bar claiming its screen edges (safeAreaEdges)
|
|
40
41
|
|
|
41
42
|
## Composition
|
|
@@ -66,7 +67,7 @@ Zones (a zone is bound to JSX only through its listed prop; never assume the zon
|
|
|
66
67
|
|
|
67
68
|
Margin: none · border: conditional · padding: self (layout role: structure). `self` means the component already owns it — do not add wrapper padding, margin, or borders around it.
|
|
68
69
|
|
|
69
|
-
- Padding belongs to the toolbar; dividerSides selects any canonical combination of its physical top, right, bottom, and left edges.
|
|
70
|
+
- Padding belongs to the toolbar; --kui-toolbar-inset controls outer padding and minimum height independently of --kui-toolbar-gap. dividerSides selects any canonical combination of its physical top, right, bottom, and left edges.
|
|
70
71
|
- Safe areas: a Pane header or footer hands a sole Toolbar its inline edges; an app bar or bottom bar at a screen edge claims its sides with safeAreaEdges and pads each claimed side by the --kui-edge-inset-\* context or the full device inset, while its box and dividers paint through.
|
|
71
72
|
|
|
72
73
|
## Accessibility
|
|
@@ -81,7 +82,7 @@ Public class hooks (select for layout placement only, never to change the compon
|
|
|
81
82
|
|
|
82
83
|
Never put `kui-toolbar`, `kui-toolbar__center`, `kui-toolbar__leading`, `kui-toolbar__trailing` on an element you write; render `Toolbar` instead (`KUI-L103`).
|
|
83
84
|
|
|
84
|
-
Public tokens it reads: `--kui-color-neutral-border-normal`, `--kui-font-sans`, `--kui-toolbar-center-padding-inline`, `--kui-toolbar-divider-color`, `--kui-toolbar-leading-min-width`, `--kui-toolbar-leading-padding-inline`, `--kui-toolbar-trailing-gap`, `--kui-toolbar-trailing-justify`, `--kui-toolbar-trailing-justify-self`, `--kui-toolbar-trailing-padding-inline`, `--kui-toolbar-zone-padding-inline`. Set a token only where its public contract allows; prefer a prop.
|
|
85
|
+
Public tokens it reads: `--kui-color-neutral-border-normal`, `--kui-font-sans`, `--kui-toolbar-center-padding-inline`, `--kui-toolbar-divider-color`, `--kui-toolbar-inset`, `--kui-toolbar-leading-min-width`, `--kui-toolbar-leading-padding-inline`, `--kui-toolbar-trailing-gap`, `--kui-toolbar-trailing-justify`, `--kui-toolbar-trailing-justify-self`, `--kui-toolbar-trailing-padding-inline`, `--kui-toolbar-zone-padding-inline`. Set a token only where its public contract allows; prefer a prop.
|
|
85
86
|
|
|
86
87
|
Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-*` selectors (`KUI-L001`, `KUI-L010`), unknown or private tokens (`KUI-L002`, `KUI-L012`), and any application rule that restyles the component, forced dimensions included (`KUI-L019`).
|
|
87
88
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Public API signatures for the UI authoring corpus
|
|
2
2
|
|
|
3
|
-
Generated from emitted declarations for `@kerfjs/ui@5.0.0-beta.
|
|
3
|
+
Generated from emitted declarations for `@kerfjs/ui@5.0.0-beta.61` and `kerfjs@5.0.0-beta.61`. This bounded reference covers only APIs used by the seven-task corpus. It is interface evidence, not an implementation or runtime guarantee.
|
|
4
4
|
|
|
5
5
|
## `@kerfjs/ui/css-values`
|
|
6
6
|
|
|
@@ -424,8 +424,8 @@ interface PopupMenuItem {
|
|
|
424
424
|
disabledReason?: string;
|
|
425
425
|
/** Application `data-*` metadata such as a record id. */
|
|
426
426
|
attributes?: PopupMenuDataAttributes;
|
|
427
|
-
/** Child commands opened by hover or keyboard navigation. */
|
|
428
|
-
submenu?: readonly
|
|
427
|
+
/** Child commands, headings, and dividers opened by hover or keyboard navigation. */
|
|
428
|
+
submenu?: readonly PopupMenuEntry[];
|
|
429
429
|
}
|
|
430
430
|
/** A labeled group heading; items that follow it belong to the group. */
|
|
431
431
|
interface PopupMenuHeading {
|
|
@@ -783,9 +783,19 @@ interface ListItemProps {
|
|
|
783
783
|
/** Native named-slot assignment when composed inside a web component. */
|
|
784
784
|
slot?: string;
|
|
785
785
|
}
|
|
786
|
+
interface ListItemLinkProps extends Omit<ListItemProps, 'action' | 'pressed'> {
|
|
787
|
+
/** Native destination for this navigation row. */
|
|
788
|
+
href: string;
|
|
789
|
+
/** Open in a new tab with a safe rel and announce that behavior. */
|
|
790
|
+
external?: boolean;
|
|
791
|
+
action?: never;
|
|
792
|
+
pressed?: never;
|
|
793
|
+
}
|
|
786
794
|
declare function ListItem({ label, description, icon, trailing, status, busy, density, divider, selected, action, itemId, className, pressed, accessibleLabel, title, multiline, multilineIconAlign, state, disabled, tabIndex, placeholder, rootAttributes, slot, }: ListItemProps): SafeHtml;
|
|
795
|
+
/** A navigation row with native link activation and ListItem geometry. */
|
|
796
|
+
declare function ListItemLink({ href, external, label, description, icon, trailing, status, busy, density, divider, selected, itemId, className, accessibleLabel, title, multiline, multilineIconAlign, state, disabled, tabIndex, placeholder, rootAttributes, slot, }: ListItemLinkProps): SafeHtml;
|
|
787
797
|
|
|
788
|
-
export { ListItem, type ListItemProps };
|
|
798
|
+
export { ListItem, ListItemLink, type ListItemLinkProps, type ListItemProps };
|
|
789
799
|
```
|
|
790
800
|
|
|
791
801
|
## `@kerfjs/ui/list-inset-control`
|
|
@@ -948,15 +958,23 @@ type AppTabRootAttributes = Readonly<Record<`data-${string}`, string | undefined
|
|
|
948
958
|
'data-tab-dragging'?: never;
|
|
949
959
|
'data-tab-drop-position'?: never;
|
|
950
960
|
'data-attention'?: never;
|
|
961
|
+
'data-drop-target'?: never;
|
|
962
|
+
'data-name-overflow'?: never;
|
|
963
|
+
'data-pinned'?: never;
|
|
951
964
|
}>;
|
|
952
965
|
type AppTabPresentation = 'pill' | 'segmented' | 'icon-only';
|
|
953
966
|
type AppTabSize = 'default' | 'compact';
|
|
967
|
+
type AppTabNameOverflow = 'ellipsis' | 'visible';
|
|
954
968
|
interface AppTabProps {
|
|
955
969
|
id: string;
|
|
956
970
|
name: string;
|
|
957
971
|
selected?: boolean;
|
|
958
972
|
/** Emphasize the visible tab name with the attention color token. */
|
|
959
973
|
attention?: boolean;
|
|
974
|
+
/** Highlight this tab as the target of a drag over its content. */
|
|
975
|
+
dropTarget?: boolean;
|
|
976
|
+
/** Keep the leading tab visible within its TabBar tablist while peers scroll. */
|
|
977
|
+
pinned?: boolean;
|
|
960
978
|
closable?: boolean;
|
|
961
979
|
draggable?: boolean;
|
|
962
980
|
leading?: KerfUiContent;
|
|
@@ -967,6 +985,8 @@ interface AppTabProps {
|
|
|
967
985
|
size?: AppTabSize;
|
|
968
986
|
/** Maximum visible label width in CSS pixels before ellipsis. */
|
|
969
987
|
labelMaxWidth?: number;
|
|
988
|
+
/** Keep the full name visible for an inline loading treatment. */
|
|
989
|
+
nameOverflow?: AppTabNameOverflow;
|
|
970
990
|
/** Decorative dormant content for the close button. Must not contain interactive descendants. */
|
|
971
991
|
closeIcon?: SafeHtml;
|
|
972
992
|
selectAction?: string;
|
|
@@ -989,9 +1009,9 @@ interface AppTabProps {
|
|
|
989
1009
|
/** Native named-slot assignment when composed inside a web component. */
|
|
990
1010
|
slot?: string;
|
|
991
1011
|
}
|
|
992
|
-
declare function AppTab({ id, name, selected, attention, closable, draggable, leading, trailing, presentation, size, labelMaxWidth, closeIcon, selectAction, closeAction, className, placeholder, pending, rootAttributes, slot, }: AppTabProps): SafeHtml;
|
|
1012
|
+
declare function AppTab({ id, name, selected, attention, dropTarget, pinned, closable, draggable, leading, trailing, presentation, size, labelMaxWidth, nameOverflow, closeIcon, selectAction, closeAction, className, placeholder, pending, rootAttributes, slot, }: AppTabProps): SafeHtml;
|
|
993
1013
|
|
|
994
|
-
export { AppTab, type AppTabPresentation, type AppTabProps, type AppTabSize };
|
|
1014
|
+
export { AppTab, type AppTabNameOverflow, type AppTabPresentation, type AppTabProps, type AppTabSize };
|
|
995
1015
|
```
|
|
996
1016
|
|
|
997
1017
|
## `@kerfjs/ui/tab-bar`
|
|
@@ -2548,6 +2568,10 @@ interface SelectChoice<Value extends string = string> {
|
|
|
2548
2568
|
*/
|
|
2549
2569
|
color?: CssForegroundColor;
|
|
2550
2570
|
group?: string;
|
|
2571
|
+
/** Keep an unavailable choice visible but prevent selection. */
|
|
2572
|
+
disabled?: boolean;
|
|
2573
|
+
/** Optional explanation exposed as the disabled option's native tooltip. */
|
|
2574
|
+
disabledReason?: string;
|
|
2551
2575
|
/**
|
|
2552
2576
|
* Draw a divider between this choice and the previous choice in the same
|
|
2553
2577
|
* list. A group boundary is already a separator, so the first choice of a
|
|
@@ -2599,6 +2623,8 @@ interface SelectSingleValueProps<Value extends string = string> {
|
|
|
2599
2623
|
/** Show only the selected choice icon while retaining the Select's accessible name. */
|
|
2600
2624
|
selectedPresentation?: SelectSelectedPresentation;
|
|
2601
2625
|
triggerIcon?: never;
|
|
2626
|
+
selectAllLabel?: never;
|
|
2627
|
+
clearLabel?: never;
|
|
2602
2628
|
}
|
|
2603
2629
|
/**
|
|
2604
2630
|
* Any number of chosen values. The popup stays open while the person toggles
|
|
@@ -2611,6 +2637,10 @@ interface SelectMultipleLabelProps<Value extends string = string> {
|
|
|
2611
2637
|
renderSelected?: never;
|
|
2612
2638
|
selectedPresentation?: 'label';
|
|
2613
2639
|
triggerIcon?: never;
|
|
2640
|
+
/** Opt in to a footer action that selects every enabled choice. */
|
|
2641
|
+
selectAllLabel?: string;
|
|
2642
|
+
/** Opt in to a footer action that clears the current selection. */
|
|
2643
|
+
clearLabel?: string;
|
|
2614
2644
|
}
|
|
2615
2645
|
/**
|
|
2616
2646
|
* A multiple Select drawn as an icon-only toolbar trigger, such as a
|
|
@@ -2629,6 +2659,10 @@ interface SelectMultipleIconProps<Value extends string = string> {
|
|
|
2629
2659
|
* purpose (a funnel for a filter), independent of the selection.
|
|
2630
2660
|
*/
|
|
2631
2661
|
triggerIcon: KerfUiContent;
|
|
2662
|
+
/** Opt in to a footer action that selects every enabled choice. */
|
|
2663
|
+
selectAllLabel?: string;
|
|
2664
|
+
/** Opt in to a footer action that clears the current selection. */
|
|
2665
|
+
clearLabel?: string;
|
|
2632
2666
|
}
|
|
2633
2667
|
type SelectMultipleValueProps<Value extends string = string> = SelectMultipleLabelProps<Value> | SelectMultipleIconProps<Value>;
|
|
2634
2668
|
type SelectProps<Value extends string = string> = SelectBaseProps<Value> & SelectAccessibleName & (SelectSingleValueProps<Value> | SelectMultipleValueProps<Value>);
|
|
@@ -2777,14 +2811,14 @@ export { SunkenPanel, type SunkenPanelProps, type SunkenPanelShape };
|
|
|
2777
2811
|
```ts
|
|
2778
2812
|
import 'kerfjs';
|
|
2779
2813
|
import './semantic-content-BbzjvSu9.js';
|
|
2780
|
-
export { T as TokenSearchEditorAttributes, a as TokenSearchField, b as TokenSearchFieldProps, c as TokenSearchFieldValue, j as TokenSearchToken, p as placeTokenSearchCaret, r as readTokenSearchField } from './token-search-field-
|
|
2814
|
+
export { T as TokenSearchEditorAttributes, a as TokenSearchField, b as TokenSearchFieldProps, c as TokenSearchFieldValue, j as TokenSearchToken, p as placeTokenSearchCaret, r as readTokenSearchField } from './token-search-field-DvgFLhLL.js';
|
|
2781
2815
|
```
|
|
2782
2816
|
|
|
2783
2817
|
## `@kerfjs/ui/wire-token-search-fields`
|
|
2784
2818
|
|
|
2785
2819
|
```ts
|
|
2786
2820
|
import { Signal } from 'kerfjs';
|
|
2787
|
-
import { d as TokenSearchModel } from './token-search-field-
|
|
2821
|
+
import { d as TokenSearchModel } from './token-search-field-DvgFLhLL.js';
|
|
2788
2822
|
import './semantic-content-BbzjvSu9.js';
|
|
2789
2823
|
|
|
2790
2824
|
interface TokenSearchSubmit {
|
|
@@ -3034,6 +3068,40 @@ declare function Badge(props: BadgeProps): SafeHtml;
|
|
|
3034
3068
|
export { Badge, type BadgeAppearance, type BadgeDotProps, type BadgeProps, type BadgeShape, type BadgeSize, type BadgeTextProps, type BadgeTone };
|
|
3035
3069
|
```
|
|
3036
3070
|
|
|
3071
|
+
## `@kerfjs/ui/chip`
|
|
3072
|
+
|
|
3073
|
+
```ts
|
|
3074
|
+
import { SafeHtml } from 'kerfjs';
|
|
3075
|
+
import { BadgeTone, BadgeAppearance, BadgeShape, BadgeSize } from './badge.js';
|
|
3076
|
+
|
|
3077
|
+
interface ChipCommonProps {
|
|
3078
|
+
/** Visible, non-interactive chip content. */
|
|
3079
|
+
children: SafeHtml | string | number;
|
|
3080
|
+
tone?: BadgeTone;
|
|
3081
|
+
appearance?: BadgeAppearance;
|
|
3082
|
+
shape?: BadgeShape;
|
|
3083
|
+
size?: BadgeSize;
|
|
3084
|
+
disabled?: boolean;
|
|
3085
|
+
/** Record identifier available to an application delegated action handler. */
|
|
3086
|
+
itemId?: string;
|
|
3087
|
+
className?: string;
|
|
3088
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
3089
|
+
slot?: string;
|
|
3090
|
+
}
|
|
3091
|
+
/** A removable chip needs both a delegated action and a specific accessible name. */
|
|
3092
|
+
type ChipProps = ChipCommonProps & ({
|
|
3093
|
+
removeAction: string;
|
|
3094
|
+
removeLabel: string;
|
|
3095
|
+
} | {
|
|
3096
|
+
removeAction?: never;
|
|
3097
|
+
removeLabel?: never;
|
|
3098
|
+
});
|
|
3099
|
+
/** A short label with an optional native remove button. The application owns removal. */
|
|
3100
|
+
declare function Chip({ children, tone, appearance, shape, size, disabled, itemId, className, slot, ...remove }: ChipProps): SafeHtml;
|
|
3101
|
+
|
|
3102
|
+
export { Chip, type ChipProps };
|
|
3103
|
+
```
|
|
3104
|
+
|
|
3037
3105
|
## `@kerfjs/ui/lucide-icon`
|
|
3038
3106
|
|
|
3039
3107
|
```ts
|
|
@@ -3196,13 +3264,12 @@ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
|
3196
3264
|
type GridRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
3197
3265
|
'data-component'?: never;
|
|
3198
3266
|
'data-columns'?: never;
|
|
3267
|
+
'data-min-column-width'?: never;
|
|
3199
3268
|
'data-flex'?: never;
|
|
3200
3269
|
'data-fill'?: never;
|
|
3201
3270
|
}>;
|
|
3202
|
-
interface
|
|
3271
|
+
interface GridCommonProps {
|
|
3203
3272
|
children?: KerfUiContent;
|
|
3204
|
-
/** Number of equal-width columns. Must be a positive safe integer. */
|
|
3205
|
-
columns: number;
|
|
3206
3273
|
/** A named UI spacing token or typed CSS length. Defaults to xs. */
|
|
3207
3274
|
gap?: UiSpaceName | CssLength;
|
|
3208
3275
|
/** Allow this grid to grow/shrink, use a keyword, or supply a typed CSS flex shorthand. */
|
|
@@ -3219,8 +3286,17 @@ interface GridProps {
|
|
|
3219
3286
|
/** Native named-slot assignment when composed inside a web component. */
|
|
3220
3287
|
slot?: string;
|
|
3221
3288
|
}
|
|
3222
|
-
|
|
3223
|
-
|
|
3289
|
+
type GridProps = GridCommonProps & ({
|
|
3290
|
+
/** Number of equal-width columns. Must be a positive safe integer. */
|
|
3291
|
+
columns: number;
|
|
3292
|
+
minColumnWidth?: never;
|
|
3293
|
+
} | {
|
|
3294
|
+
columns?: never;
|
|
3295
|
+
/** Fit equal columns of at least this width; collapse as the container narrows. */
|
|
3296
|
+
minColumnWidth: CssLength;
|
|
3297
|
+
});
|
|
3298
|
+
/** Render equal tracks with a fixed count or a responsive minimum width. */
|
|
3299
|
+
declare function Grid({ children, columns, minColumnWidth, gap, flex, fill, className, rootAttributes, slot, }: GridProps): kerfjs.SafeHtml;
|
|
3224
3300
|
|
|
3225
3301
|
export { CssFlex, CssFlexKeyword, CssLength, Grid, type GridProps, UiSpaceName };
|
|
3226
3302
|
```
|
|
@@ -3252,6 +3328,6 @@ export { CssLength, Spacer, type SpacerProps, UiSpaceName };
|
|
|
3252
3328
|
|
|
3253
3329
|
```ts
|
|
3254
3330
|
import 'kerfjs';
|
|
3255
|
-
export { d as TokenSearchModel, e as TokenSearchModelOptions, f as TokenSearchResolvedToken, g as TokenSearchRule, h as TokenSearchState, i as TokenSearchSuggestion, k as createTokenSearchModel } from './token-search-field-
|
|
3331
|
+
export { d as TokenSearchModel, e as TokenSearchModelOptions, f as TokenSearchResolvedToken, g as TokenSearchRule, h as TokenSearchState, i as TokenSearchSuggestion, k as createTokenSearchModel } from './token-search-field-DvgFLhLL.js';
|
|
3256
3332
|
import './semantic-content-BbzjvSu9.js';
|
|
3257
3333
|
```
|