@mhmo91/schmancy 0.10.39 → 0.10.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/schmancy.agent.js +14 -7
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/avatar.cjs +1 -1
- package/dist/avatar.js +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/boat-BJPl_Jti.cjs +34 -0
- package/dist/boat-BJPl_Jti.cjs.map +1 -0
- package/dist/{boat-fqodYt2n.js → boat-BeqA9_ms.js} +9 -4
- package/dist/boat-BeqA9_ms.js.map +1 -0
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{directives-Bb0S1DKZ.cjs → directives-BZIRQDBq.cjs} +1 -1
- package/dist/{directives-Bb0S1DKZ.cjs.map → directives-BZIRQDBq.cjs.map} +1 -1
- package/dist/{directives-Bfm1lkoy.js → directives-BvRTjCFa.js} +5 -3
- package/dist/{directives-Bfm1lkoy.js.map → directives-BvRTjCFa.js.map} +1 -1
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/index.cjs +1 -1
- package/dist/index.js +4 -4
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/{select-Cawz88lG.js → select-CGBsblDA.js} +1 -1
- package/dist/{select-Cawz88lG.js.map → select-CGBsblDA.js.map} +1 -1
- package/dist/{select-BWpV2iv-.cjs → select-LWdPs7b_.cjs} +1 -1
- package/dist/{select-BWpV2iv-.cjs.map → select-LWdPs7b_.cjs.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/skills/SKILL.md +4 -0
- package/dist/skills/chips.md +41 -1
- package/dist/skills/schmancy/SKILL.md +4 -0
- package/dist/skills/schmancy/chips.md +41 -1
- package/dist/{src-8VJ7eluk.js → src-Dmqjtcmp.js} +3 -3
- package/dist/{src-8VJ7eluk.js.map → src-Dmqjtcmp.js.map} +1 -1
- package/dist/{src-GJA8uSAS.cjs → src-SAXA4LEH.cjs} +1 -1
- package/dist/{src-GJA8uSAS.cjs.map → src-SAXA4LEH.cjs.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/package.json +2 -1
- package/skills/schmancy/SKILL.md +4 -0
- package/skills/schmancy/chips.md +41 -1
- package/src/boat/boat.ts +20 -5
- package/src/directives/reveal.ts +7 -1
- package/types/src/boat/boat.d.ts +1 -0
- package/types/src/directives/reveal.d.ts +2 -0
- package/dist/boat-DsFJNfPH.cjs +0 -34
- package/dist/boat-DsFJNfPH.cjs.map +0 -1
- package/dist/boat-fqodYt2n.js.map +0 -1
package/dist/skills/SKILL.md
CHANGED
|
@@ -171,6 +171,10 @@ See `layout.md` for the full shell pattern with rail + content area.
|
|
|
171
171
|
|
|
172
172
|
A web-component host that establishes `inline-flex` layout declares `flex-shrink: 0` in its `:host` block so it preserves its intrinsic content size regardless of the flex container it lands in.
|
|
173
173
|
|
|
174
|
+
### DIRECTIVE_TRANSITION_TRACKS_PREV_VALUE
|
|
175
|
+
|
|
176
|
+
A Lit directive that gates an effect on a value transition stores the previous value in a private field and compares the incoming value against it in `update()`, firing the effect only when the two differ.
|
|
177
|
+
|
|
174
178
|
## Workflow
|
|
175
179
|
|
|
176
180
|
1. User describes a UI task.
|
package/dist/skills/chips.md
CHANGED
|
@@ -1,6 +1,46 @@
|
|
|
1
1
|
# Chips
|
|
2
2
|
|
|
3
|
-
> Four chip types: filter (toggleable), input (removable), suggestion (action), assist (action + elevated). Filter chips have embedded `magnetic` directive and selection glow.
|
|
3
|
+
> Four chip types: filter (toggleable), input (removable), suggestion (action), assist (action + elevated). Filter chips have embedded `magnetic` directive and selection glow. The `schmancy-chips` **container** wraps a set of chips, owns their selection state, and lays them out as one horizontally-scrolling row (or a wrapping grid).
|
|
4
|
+
|
|
5
|
+
## Container — `schmancy-chips`
|
|
6
|
+
|
|
7
|
+
A form-associated container (`SchmancyFormField`: `name`, `required`, `disabled`, `hint`, `checkValidity()`, FormData participation). Slot `<schmancy-filter-chip>` children with **only** `.value` + label — the container drives each child's `selected` from its own `value`, so children carry no `?selected` and no per-chip `@change`. This is the primary entry point; reach for a bare `<schmancy-filter-chip>` only outside a selection group.
|
|
8
|
+
|
|
9
|
+
| Property | Type | Default | Description |
|
|
10
|
+
|----------|------|---------|-------------|
|
|
11
|
+
| `value` | `string \| string[]` | `''` / `[]` | Selected id (single mode) or ids (multi mode). |
|
|
12
|
+
| `values` | `string[]` | `[]` | Typed alias for `value` in multi mode. |
|
|
13
|
+
| `multi` | `boolean` | `false` | `true` → multiple chips selectable; `value` is `string[]`. |
|
|
14
|
+
| `wrap` | `boolean` | `false` | `false` → **single row, horizontal scroll** (internal `<schmancy-scroll direction="horizontal">`). `true` → multi-row wrap, vertical scroll. |
|
|
15
|
+
| `justify` | `'start' \| 'center' \| 'end'` | `'start'` | Main-axis alignment. |
|
|
16
|
+
| `required` | `boolean` | `false` | Single mode: deselecting the chosen chip is ignored (a value is mandatory). |
|
|
17
|
+
|
|
18
|
+
| Event | Detail | Fires on |
|
|
19
|
+
|-------|--------|----------|
|
|
20
|
+
| `change` | `{ value: string \| string[] }` | **User interaction only** — child chip toggled. NOT emitted on a programmatic `.value` set, so no `CONTROLLED_VALUE_ECHO_IS_NOT_INTENT` guard is needed. |
|
|
21
|
+
|
|
22
|
+
Single mode (`multi` false): selecting a chip sets `value` to its id; clicking the selected chip deselects → `change` with `value: ''` (unless `required`). Multi mode: each toggle adds/removes the id from the array.
|
|
23
|
+
|
|
24
|
+
**Host sizing — required for horizontal overscroll.** `:host` is `width: fit-content`, so by default the container hugs its chips and never scrolls. Constrain the host to trigger the single-row scroll: `class="w-full"` standalone, or `class="flex-1 min-w-0"` as a flex-row item beside other controls.
|
|
25
|
+
|
|
26
|
+
```html
|
|
27
|
+
<!-- single-select, one horizontally-scrolling row -->
|
|
28
|
+
<schmancy-chips
|
|
29
|
+
class="w-full"
|
|
30
|
+
.value=${selectedId ?? ''}
|
|
31
|
+
@change=${(e: CustomEvent<{ value: string }>) =>
|
|
32
|
+
pick(e.detail.value || null)}
|
|
33
|
+
>
|
|
34
|
+
${repeat(items, i => i.id, i => html`
|
|
35
|
+
<schmancy-filter-chip .value=${i.id}>${i.label}</schmancy-filter-chip>`)}
|
|
36
|
+
</schmancy-chips>
|
|
37
|
+
|
|
38
|
+
<!-- multi-select, wrapping grid -->
|
|
39
|
+
<schmancy-chips multi wrap required .value=${tags} @change=${onTags}>
|
|
40
|
+
${repeat(opts, o => o.id, o => html`
|
|
41
|
+
<schmancy-filter-chip .value=${o.id}>${o.name}</schmancy-filter-chip>`)}
|
|
42
|
+
</schmancy-chips>
|
|
43
|
+
```
|
|
4
44
|
|
|
5
45
|
## Chip Types
|
|
6
46
|
|
|
@@ -171,6 +171,10 @@ See `layout.md` for the full shell pattern with rail + content area.
|
|
|
171
171
|
|
|
172
172
|
A web-component host that establishes `inline-flex` layout declares `flex-shrink: 0` in its `:host` block so it preserves its intrinsic content size regardless of the flex container it lands in.
|
|
173
173
|
|
|
174
|
+
### DIRECTIVE_TRANSITION_TRACKS_PREV_VALUE
|
|
175
|
+
|
|
176
|
+
A Lit directive that gates an effect on a value transition stores the previous value in a private field and compares the incoming value against it in `update()`, firing the effect only when the two differ.
|
|
177
|
+
|
|
174
178
|
## Workflow
|
|
175
179
|
|
|
176
180
|
1. User describes a UI task.
|
|
@@ -1,6 +1,46 @@
|
|
|
1
1
|
# Chips
|
|
2
2
|
|
|
3
|
-
> Four chip types: filter (toggleable), input (removable), suggestion (action), assist (action + elevated). Filter chips have embedded `magnetic` directive and selection glow.
|
|
3
|
+
> Four chip types: filter (toggleable), input (removable), suggestion (action), assist (action + elevated). Filter chips have embedded `magnetic` directive and selection glow. The `schmancy-chips` **container** wraps a set of chips, owns their selection state, and lays them out as one horizontally-scrolling row (or a wrapping grid).
|
|
4
|
+
|
|
5
|
+
## Container — `schmancy-chips`
|
|
6
|
+
|
|
7
|
+
A form-associated container (`SchmancyFormField`: `name`, `required`, `disabled`, `hint`, `checkValidity()`, FormData participation). Slot `<schmancy-filter-chip>` children with **only** `.value` + label — the container drives each child's `selected` from its own `value`, so children carry no `?selected` and no per-chip `@change`. This is the primary entry point; reach for a bare `<schmancy-filter-chip>` only outside a selection group.
|
|
8
|
+
|
|
9
|
+
| Property | Type | Default | Description |
|
|
10
|
+
|----------|------|---------|-------------|
|
|
11
|
+
| `value` | `string \| string[]` | `''` / `[]` | Selected id (single mode) or ids (multi mode). |
|
|
12
|
+
| `values` | `string[]` | `[]` | Typed alias for `value` in multi mode. |
|
|
13
|
+
| `multi` | `boolean` | `false` | `true` → multiple chips selectable; `value` is `string[]`. |
|
|
14
|
+
| `wrap` | `boolean` | `false` | `false` → **single row, horizontal scroll** (internal `<schmancy-scroll direction="horizontal">`). `true` → multi-row wrap, vertical scroll. |
|
|
15
|
+
| `justify` | `'start' \| 'center' \| 'end'` | `'start'` | Main-axis alignment. |
|
|
16
|
+
| `required` | `boolean` | `false` | Single mode: deselecting the chosen chip is ignored (a value is mandatory). |
|
|
17
|
+
|
|
18
|
+
| Event | Detail | Fires on |
|
|
19
|
+
|-------|--------|----------|
|
|
20
|
+
| `change` | `{ value: string \| string[] }` | **User interaction only** — child chip toggled. NOT emitted on a programmatic `.value` set, so no `CONTROLLED_VALUE_ECHO_IS_NOT_INTENT` guard is needed. |
|
|
21
|
+
|
|
22
|
+
Single mode (`multi` false): selecting a chip sets `value` to its id; clicking the selected chip deselects → `change` with `value: ''` (unless `required`). Multi mode: each toggle adds/removes the id from the array.
|
|
23
|
+
|
|
24
|
+
**Host sizing — required for horizontal overscroll.** `:host` is `width: fit-content`, so by default the container hugs its chips and never scrolls. Constrain the host to trigger the single-row scroll: `class="w-full"` standalone, or `class="flex-1 min-w-0"` as a flex-row item beside other controls.
|
|
25
|
+
|
|
26
|
+
```html
|
|
27
|
+
<!-- single-select, one horizontally-scrolling row -->
|
|
28
|
+
<schmancy-chips
|
|
29
|
+
class="w-full"
|
|
30
|
+
.value=${selectedId ?? ''}
|
|
31
|
+
@change=${(e: CustomEvent<{ value: string }>) =>
|
|
32
|
+
pick(e.detail.value || null)}
|
|
33
|
+
>
|
|
34
|
+
${repeat(items, i => i.id, i => html`
|
|
35
|
+
<schmancy-filter-chip .value=${i.id}>${i.label}</schmancy-filter-chip>`)}
|
|
36
|
+
</schmancy-chips>
|
|
37
|
+
|
|
38
|
+
<!-- multi-select, wrapping grid -->
|
|
39
|
+
<schmancy-chips multi wrap required .value=${tags} @change=${onTags}>
|
|
40
|
+
${repeat(opts, o => o.id, o => html`
|
|
41
|
+
<schmancy-filter-chip .value=${o.id}>${o.name}</schmancy-filter-chip>`)}
|
|
42
|
+
</schmancy-chips>
|
|
43
|
+
```
|
|
4
44
|
|
|
5
45
|
## Chip Types
|
|
6
46
|
|
|
@@ -4,10 +4,10 @@ import { S as n, b as r, x as i } from "./area-KVDzhT4s.js";
|
|
|
4
4
|
import "./state-CnZCDMT0.js";
|
|
5
5
|
import "./audio-D3gnp15Y.js";
|
|
6
6
|
import "./autocomplete-DWiEqlQf.js";
|
|
7
|
-
import { S as a } from "./directives-
|
|
7
|
+
import { S as a } from "./directives-BvRTjCFa.js";
|
|
8
8
|
import { n as o } from "./theme.service-7VkM-hVf.js";
|
|
9
9
|
import { o as s } from "./overlay.service-BDLi0p5M.js";
|
|
10
|
-
import "./boat-
|
|
10
|
+
import "./boat-BeqA9_ms.js";
|
|
11
11
|
import "./busy-enYCTssB.js";
|
|
12
12
|
import "./button.js";
|
|
13
13
|
import "./card-BHTz1GwB.js";
|
|
@@ -29,7 +29,7 @@ import "./input.js";
|
|
|
29
29
|
import "./radio-group-AHLvrN8O.js";
|
|
30
30
|
import "./range.js";
|
|
31
31
|
import { t as c } from "./theme.interface-odQEpZZH.js";
|
|
32
|
-
import "./select-
|
|
32
|
+
import "./select-CGBsblDA.js";
|
|
33
33
|
import "./switch.js";
|
|
34
34
|
import "./textarea-MPyrMi-S.js";
|
|
35
35
|
import "./form.js";
|