@usableapp/cardds 0.7.94 → 0.7.95
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/CHANGELOG.md +14 -0
- package/README.md +15 -2
- package/dist/actions/Chip.d.ts +1 -1
- package/dist/actions/Chip.js +1 -1
- package/dist/actions/Dropdown.d.ts +1 -1
- package/dist/actions/Dropdown.js +1 -1
- package/dist/catalog.json +1 -1
- package/dist/choice/Calendar.d.ts +1 -1
- package/dist/choice/Calendar.js +1 -1
- package/dist/choice/Check.d.ts +2 -2
- package/dist/choice/Check.js +2 -2
- package/dist/choice/DayStrip.d.ts +1 -1
- package/dist/choice/DayStrip.js +1 -1
- package/dist/choice/Mood.d.ts +1 -1
- package/dist/choice/Mood.js +1 -1
- package/dist/choice/Slider.d.ts +1 -1
- package/dist/choice/Slider.js +1 -1
- package/dist/forms/AddRow.d.ts +1 -1
- package/dist/forms/AddRow.js +1 -1
- package/dist/forms/Composer.d.ts +1 -1
- package/dist/forms/Composer.js +1 -1
- package/dist/forms/Field.d.ts +4 -2
- package/dist/forms/Field.js +4 -2
- package/dist/forms/FileBtn.d.ts +1 -1
- package/dist/forms/FileBtn.js +1 -1
- package/dist/forms/Pin.d.ts +1 -1
- package/dist/forms/Pin.js +1 -1
- package/dist/media/MapPick.d.ts +1 -1
- package/dist/media/MapPick.js +1 -1
- package/dist/media/Tile.d.ts +1 -1
- package/dist/media/Tile.js +1 -1
- package/dist/numbers/Picker.d.ts +1 -1
- package/dist/numbers/Picker.js +1 -1
- package/dist/people/AvatarPick.d.ts +2 -2
- package/dist/people/AvatarPick.js +1 -1
- package/lint/rules.mjs +33 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
> For: a project that consumes `@usableapp/cardds` and its AI — what changed between versions, written as before → after, so a screen can be brought up to date without reading the source. Newest first. A consumer never edits cardds; if something here leaves you without a way to do what you did before, report the gap.
|
|
4
4
|
|
|
5
|
+
## 0.7.95 — 2026-10-18
|
|
6
|
+
|
|
7
|
+
From timebank's help-ask prototype (Lh 2026-10-18): its Composer, Dropdown and map stood on white cards inside the help sheet. Ruled: the sheet is the paper the member fills in.
|
|
8
|
+
|
|
9
|
+
Nothing in the package's look or behaviour changes: no component, class or knob is added or removed. Two new checks may fail a project's `cardds check`: a control in a card, and a worded pager whose forward button is not the primary one.
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- **`cardds check` rule `field-in-card` (error): the sheet is the paper the member fills in** (Lh 2026-10-18). Before → after: "Fields belong in a Sheet" was prose in `Field`'s doc, and nothing stopped a form on a card → a control the member fills in or picks, written inside a `<Card>`, is an error that names `Sheet`'s `SheetBody`, `SheetStep` and the stack sheet as its place. The controls: `Field`, `Composer`, `ComposerArea`, `Pin`, `Dropdown`, `Slider`, `Toggle`, `Check`, `ChipPick`, `Calendar`, `DayStrip`, `Day`, `Picker`, `Mood`, `AvatarPick`, `FileBtn`, `AddRow`, `MapPick`, a `Tile pick` and a `Tile upload`. A plain or `stat` Tile, a `Btn`, `IconBtn` or `Link`, and a raw `<input>` (the pickable row card's radio) are not flagged. A `Card` that is a sheet of a `SheetStack` is that stack's sheet and may hold them. To pass: move the controls onto the sheet's body (`<Sheet><CardHead …/><SheetBody>…controls…</SheetBody><CardFoot>…</CardFoot></Sheet>`), with no card round them. The ESLint plugin reports it under `cardds/check`.
|
|
13
|
+
- **`cardds check` rule `pager-forward-primary` (error).** Before → after: a worded pager could carry back and next with the same signal (Lh saw it on a timebank screen) → in an `ActionBar variant="pager"` or an `ActionBarTier pager` with two or more worded `Btn`s, the last (forward) one must be `primary` and the others not. The round pager (`IconBtn`s) is not checked.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- **Every control's doc says where it lives: on a sheet, never in a Card.** `Field`'s doc comment now leads with it, so `cardds get Field` and `cardds find "where does a form field go"` answer with the rule. README's sheet rules gain "The sheet is the paper the member fills in".
|
|
17
|
+
- **The gallery's stories put their controls on sheets.** 60 stories in 19 files moved from a card onto a sheet: a `Step` with a `Page` and a `Sheet` where the story is a step of a flow, a bare `SheetStage` with a `Sheet` for a part shown on its own. Story ids are unchanged. Two samples that stood in two cards of one story now stand on one sheet.
|
|
18
|
+
|
|
5
19
|
## 0.7.94 — 2026-10-18
|
|
6
20
|
|
|
7
21
|
From timebank's help-ask sheet (Lh 2026-10-17). One look changes on existing screens: a row card's corner (41.6 → 13). Everything else is added, and a screen that does not use it is as it was.
|
package/README.md
CHANGED
|
@@ -555,8 +555,21 @@ between at 40% down the screen (see *Anatomy*, "Where the centre is"):
|
|
|
555
555
|
- **A bottom sheet holds what the member acts on** — controls, or small
|
|
556
556
|
content cards to pick from or read more — and it opens to the full height
|
|
557
557
|
of its box. **Cards are content the system offers**: the words, the
|
|
558
|
-
explanation, the thing to read. Do not put
|
|
559
|
-
|
|
558
|
+
explanation, the thing to read. Do not put the step's explanation in a
|
|
559
|
+
sheet.
|
|
560
|
+
- **The sheet is the paper the member fills in** (Lh 2026-10-18). Every
|
|
561
|
+
control the member fills in or picks stands on a sheet: a `Sheet`'s
|
|
562
|
+
`SheetBody`, a `SheetStep`, or a stack sheet. That is `Field`, `Composer`
|
|
563
|
+
and `ComposerArea`, `Pin`, `Dropdown`, `Slider`, `Toggle`, `Check`,
|
|
564
|
+
`ChipPick`, `Calendar`, `DayStrip` and `Day`, `Picker`, `Mood`,
|
|
565
|
+
`AvatarPick`, `FileBtn`, `AddRow`, `MapPick`, a `Tile pick` and a
|
|
566
|
+
`Tile upload`. A card is for reading and pressing buttons only; never put
|
|
567
|
+
a form, or one control of it, in a card. `cardds check` rule
|
|
568
|
+
`field-in-card` (error) flags a control written inside a `<Card>`. A `Card`
|
|
569
|
+
that is a sheet of a `SheetStack` is that stack's sheet, so it may hold
|
|
570
|
+
them. Seen in timebank's help-ask prototype: a Composer, a Dropdown and a
|
|
571
|
+
map on white cards inside the help sheet, the cards the colour of the
|
|
572
|
+
ground.
|
|
560
573
|
- **Two sheet systems, one material.** *Sheet single* (`.sheet`, `sheet.css`)
|
|
561
574
|
is ONE sheet the member acts in, whatever it holds: a short entry in front
|
|
562
575
|
of a step's card, a place on a map, a payment on a dim page — in a `.step`
|
package/dist/actions/Chip.d.ts
CHANGED
|
@@ -318,7 +318,7 @@ export interface ChipPickProps extends Omit<ComponentProps<'label'>, 'onChange'>
|
|
|
318
318
|
/** the native input's change event: the chip was picked, or (checkbox) toggled */
|
|
319
319
|
onChange?: React.ChangeEventHandler<HTMLInputElement>;
|
|
320
320
|
}
|
|
321
|
-
/** ChipPick — a chip that is a choice: full-width in a ChipGrid (9:00 · 9:30 · …), or `sign` on a ChipRow (+ off, × on — the
|
|
321
|
+
/** ChipPick — a chip that is a choice, on a sheet and never in a Card (the sheet is the paper the member fills in, Lh 2026-10-18): full-width in a ChipGrid (9:00 · 9:30 · …), or `sign` on a ChipRow (+ off, × on — the
|
|
322
322
|
* interest picker); the picked one fills with accent. A native radio/checkbox inside the label carries the state. */
|
|
323
323
|
export declare function ChipPick({ type, sign, name, value, checked, defaultChecked, onChange, className, children, ...rest }: ChipPickProps): import("react").JSX.Element;
|
|
324
324
|
export interface ChipRowProps extends ComponentProps<'div'> {
|
package/dist/actions/Chip.js
CHANGED
|
@@ -7,7 +7,7 @@ export function Chip({ on, muted, dot, sm, as, href, className, children, ...res
|
|
|
7
7
|
const el = as ?? (href ? 'a' : 'span');
|
|
8
8
|
return createElement(el, { href, type: el === 'button' ? 'button' : undefined, className: cx('chip', on && 'chip--on', muted && 'chip--muted', sm && 'chip--sm', className), ...rest }, dot && _jsx(Dot, { b: dot === 'b', tone: dot === 'a' || dot === 'b' ? undefined : dot }), children);
|
|
9
9
|
}
|
|
10
|
-
/** ChipPick — a chip that is a choice: full-width in a ChipGrid (9:00 · 9:30 · …), or `sign` on a ChipRow (+ off, × on — the
|
|
10
|
+
/** ChipPick — a chip that is a choice, on a sheet and never in a Card (the sheet is the paper the member fills in, Lh 2026-10-18): full-width in a ChipGrid (9:00 · 9:30 · …), or `sign` on a ChipRow (+ off, × on — the
|
|
11
11
|
* interest picker); the picked one fills with accent. A native radio/checkbox inside the label carries the state. */
|
|
12
12
|
export function ChipPick({ type, sign, name, value, checked, defaultChecked, onChange, className, children, ...rest }) {
|
|
13
13
|
return (_jsxs("label", { className: cx('chip chip--pick', sign && 'chip--sign', className), ...rest, children: [_jsx("input", { type: type ?? (sign ? 'checkbox' : 'radio'), name: name, value: value, checked: checked, defaultChecked: defaultChecked, onChange: onChange }), children] }));
|
|
@@ -22,7 +22,7 @@ export interface DropdownProps extends Omit<ComponentProps<'div'>, 'onChange' |
|
|
|
22
22
|
* Dropdown — THE select: a pill trigger + its Menu popover anchored under it (native popover: light dismiss, Esc). Never a native
|
|
23
23
|
* `<select>`. ONE component, like `<select>` is — the pill and the panel are its own anatomy. It holds a VALUE, controlled like an
|
|
24
24
|
* input: `value` + `onChange`, or `defaultValue`. Children are MenuItems with a `value`; the chosen one is marked and names the pill.
|
|
25
|
-
* In a FilterRow dropdowns share the width.
|
|
25
|
+
* In a FilterRow dropdowns share the width. On a sheet, never in a Card: the sheet is the paper the member fills in (Lh 2026-10-18).
|
|
26
26
|
*/
|
|
27
27
|
export declare function Dropdown({ id, value, defaultValue, onChange, label, end, muted, className, children, ...rest }: DropdownProps): import("react").JSX.Element;
|
|
28
28
|
export interface MenuProps extends Omit<ComponentProps<'div'>, 'popover' | 'onChange' | 'defaultValue'> {
|
package/dist/actions/Dropdown.js
CHANGED
|
@@ -11,7 +11,7 @@ const useValue = (value, defaultValue, onChange) => useControlled(value, default
|
|
|
11
11
|
* Dropdown — THE select: a pill trigger + its Menu popover anchored under it (native popover: light dismiss, Esc). Never a native
|
|
12
12
|
* `<select>`. ONE component, like `<select>` is — the pill and the panel are its own anatomy. It holds a VALUE, controlled like an
|
|
13
13
|
* input: `value` + `onChange`, or `defaultValue`. Children are MenuItems with a `value`; the chosen one is marked and names the pill.
|
|
14
|
-
* In a FilterRow dropdowns share the width.
|
|
14
|
+
* In a FilterRow dropdowns share the width. On a sheet, never in a Card: the sheet is the paper the member fills in (Lh 2026-10-18).
|
|
15
15
|
*/
|
|
16
16
|
export function Dropdown({ id, value, defaultValue, onChange, label, end, muted, className, children, ...rest }) {
|
|
17
17
|
const [current, pick] = useValue(value, defaultValue, onChange);
|