Skip to content
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions docs/design/user-states.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,14 @@ surface.
- **DR1 — Press the manipulated surface.** During pointer hold or drag, each
enabled surface in the matrix below MUST paint `--color-overlay-pressed` on
the named visual part. The overlay is transient and MUST clear when the press
or drag ends.
or drag ends. Under a finger, a touch presentation's press feedback follows
`spec:AST-094` FR11's press profiles instead.
- **DR2 — Disabled means no response.** A disabled control in the matrix MUST
remain inoperable and MUST NOT gain a pressed visual treatment.
- **DR3 — Persistent selection wins.** A selected SegmentedControl item MUST
keep its raised selected surface during pointer hold; only an unselected item
receives the pressed overlay.
receives the pressed overlay. Under a finger, `spec:AST-094` FR11 governs the

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FR11 says when a control highlights, not what a selected item paints, so under a finger nothing says whether a held, selected SegmentedControl item keeps its raised surface, adds the pressed overlay, or gives it up. State it here or in FR11.

held surface.

## Anatomy and hierarchy

Expand Down
18 changes: 9 additions & 9 deletions docs/families/buttons.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,15 +93,15 @@ Membership follows public responsibility, not an import of Button or a rendered

## Canonical concepts

| Concept | Values or states | Default semantics | Stability |
| ---------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------- |
| activation model | momentary action, navigation, persistent press | Button and IconButton activate once; ToggleButton represents retained pressed state | shipped distinction |
| content mode | visible label, custom visible content, icon-only | every control has a required accessible `label`; icon-only hides it visually | shipped family rule |
| size | `sm`, `md`, `lg` | `md`; explicit member size wins over an inherited group size | shipped family axis |
| visual state | rest, hover, focus, active, disabled, loading; pressed where applicable | states preserve control geometry and accessible purpose | shipped family rule |
| async action | absent, fire-once, interruptible persistent action | ordinary actions deduplicate while pending; persistent toggles remain reversible | shipped family distinction |
| elevation | `none`, `low`, `med`, `high` | `none`; the element painting the visible surface owns the shadow | shipped family axis; ToggleButton adoption approved |
| grouping | standalone, spaced set, connected surface | semantics and painted containment decide ownership; grouping alone does not | family rule |
| Concept | Values or states | Default semantics | Stability |
| ---------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| activation model | momentary action, navigation, persistent press | Button and IconButton activate once; ToggleButton represents retained pressed state | shipped distinction |
| content mode | visible label, custom visible content, icon-only | every control has a required accessible `label`; icon-only hides it visually | shipped family rule |
| size | `sm`, `md`, `lg` | `md`; explicit member size wins over an inherited group size | shipped family axis |
| visual state | rest, hover, focus, active, disabled, loading; pressed where applicable | states preserve control geometry and accessible purpose; under a finger, press feedback follows `spec:AST-094` FR11's control profile | shipped family rule |
| async action | absent, fire-once, interruptible persistent action | ordinary actions deduplicate while pending; persistent toggles remain reversible | shipped family distinction |
| elevation | `none`, `low`, `med`, `high` | `none`; the element painting the visible surface owns the shadow | shipped family axis; ToggleButton adoption approved |
| grouping | standalone, spaced set, connected surface | semantics and painted containment decide ownership; grouping alone does not | family rule |

## Cross-component invariants

Expand Down
8 changes: 5 additions & 3 deletions docs/specs/AST-013/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,12 @@ requirements. Assistive-technology evidence remains separately owned.
public [Browser Support guide](../../../packages/cli/assets/docs/browser-support.doc.mjs)
and record their source and refresh date. TypeScript targets, build targets, and
feature tables are not support evidence.
- **FR3 — Two explicit browser support rows are always included.** Independently
- **FR3 — Explicit browser support rows are always included.** Independently

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FR3 now names three explicit rows, but DEC-1 ("plus two official browser rows") and DEC-2 ("DEC-1's two named browser rows") still count two. Name the Android row there, or refer to FR3's named rows.

of the generated Baseline coverage, Astryx explicitly supports:
- the latest stable Chrome release on desktop; and
- Safari on the latest stable iOS release.
- the latest stable Chrome release on desktop;
- Safari on the latest stable iOS release; and
- for touch presentations, Chrome on the latest stable Android release
(`spec:AST-094`).

“Latest” means the current stable release identified and refreshed from
authoritative browser release data, not a handwritten version. Other browsers
Expand Down
3 changes: 2 additions & 1 deletion docs/specs/AST-025/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,8 @@ the behavior.
the requested direction. A containment policy MAY stop chaining, but its
`overscroll-behavior` effect MUST be active only on axes that currently overflow.
This avoids dead scroll zones in engines that honor containment on non-overflowing
`overflow: auto` elements.
`overflow: auto` elements. Inside a touch presentation under a finger, who
gets a drag is decided once, when it begins (`spec:AST-094` FR14).
- **FR15 — Native scrollbars are the default presentation.** The default presenter
MUST preserve native scrolling and use standards-based CSS such as
`scrollbar-width`, `scrollbar-color`, and `scrollbar-gutter` where supported.
Expand Down
16 changes: 9 additions & 7 deletions docs/specs/AST-057-row-actions/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,11 @@ and its panels stay put, so no element is added to any row.
- **A render prop for a custom panel.** Deferred, not foreclosed: a
`render*`-shaped addition can land when a caller needs something the
vocabulary cannot say (DEC-1).
- **Gesture tuning.** Axis-lock distance, commit ratio, fling velocity, slide
and spring durations, resistance past the panel: behavior constants in
source, not public API and not design tokens (the same ruling the touch
press model received for its clocks).
- **Gesture tuning.** Axis-lock distance, commit ratio, fling velocity,
resistance past the panel: behavior constants in source, not public API and
not design tokens (the same ruling the touch press model received for its
clocks). The row's slide and spring motion plays on theme motion roles
(`spec:AST-094` FR4).
- **Vertical swipes**, two-finger trackpad swipes, and a swipe whose only
meaning is dismissal (Toast already has that in `useToastGesture`).
- **Public out-of-flow slots on `Item`.** Deliberately not admitted: the
Expand Down Expand Up @@ -219,9 +220,10 @@ and its panels stay put, so no element is added to any row.
| open state | closed, resting open | The row's own. A pointer landing anywhere outside a resting row closes it, which is also how a drag on a neighbour closes it; no group state exists. | closed | `spec:AST-057` | proposed |
| the modality split | internal | A mouse never starts the drag; a coarse pointer does. Read from the pointer event, not a prop or a media query (`architecture:interaction-modality` INV6). | — | `spec:AST-057` | proposed |

Not public: axis-lock distance, commit ratio, fling velocity, durations,
resistance, panel widths, the custom property's name. They are behavior
constants.
Not public: axis-lock distance, commit ratio, fling velocity, resistance,
panel widths, the custom property's name. They are behavior constants. The
row's slide and spring motion plays on theme motion roles (`spec:AST-094`
FR4).

## Requirements

Expand Down
Loading
Loading