mirror of
https://github.com/olehomelchenko/astrolabe.git
synced 2026-08-08 02:02:33 +00:00
Docs: park border-identity question and UX follow-ups for batched council
This commit is contained in:
@@ -8,6 +8,57 @@ record the resolution into the contract (`docs/architecture/09`+`10` and the rel
|
|||||||
|
|
||||||
## Open
|
## Open
|
||||||
|
|
||||||
|
- **Border weight as identity — boxed fields vs Carbon's quieter defaults**
|
||||||
|
(**priority: pick this up first, next session** — user-flagged 2026-06-12).
|
||||||
|
Carbon's own defaults use far fewer boxes than we do: fields are filled with a
|
||||||
|
bottom border only (`reference/carbon` → text-input `_text-input.scss`,
|
||||||
|
`border-block-end` only), secondary buttons are a gray _fill_, tertiary is the
|
||||||
|
only outlined button (`_button.scss` → `button-theme(transparent,
|
||||||
|
$button-tertiary, …)`), and tiles separate by layer steps with full borders
|
||||||
|
only behind an accessibility feature flag. Our fully-boxed fields/secondaries
|
||||||
|
are a recorded divergence (arch 09 §2 + §4) and the box-discipline rules now
|
||||||
|
contain the noise — the open question is whether to go further toward Carbon
|
||||||
|
(bottom-border-only fields, filled secondary) or keep the boxed look as
|
||||||
|
deliberate identity. An identity decision, not cleanup: it would repaint every
|
||||||
|
field in the app. Council seats: Carbon (canon above), NN/g (affordance of
|
||||||
|
boxed vs underlined inputs), a11y (3:1 non-text contrast for field boundaries
|
||||||
|
either way).
|
||||||
|
|
||||||
|
- **Two visible "Export" buttons** (`App.tsx` header — workspace export;
|
||||||
|
`ChartExport.tsx` in the preview header — per-chart export). Same label,
|
||||||
|
different scope, both visible at once. Candidate fix: rename one ("Export
|
||||||
|
chart" / "Export workspace") or differentiate via grouping.
|
||||||
|
|
||||||
|
- **"LATER" facet placeholders in Chart Builder shelves**
|
||||||
|
(`ChartBuilderModal.module.css` → `.facetSlot`/`.facetTag`). Internal roadmap
|
||||||
|
language shipped to users. Either hide the affordance until faceting works or
|
||||||
|
write user-facing copy.
|
||||||
|
|
||||||
|
- **Default snippet names are timestamps** ("Snippet 2026-06-10 18:04:37") — the
|
||||||
|
library reads like a downloads folder next to builder-generated names ("Bar
|
||||||
|
chart of count by Ship Mode"). Candidate: derive a content-based name from the
|
||||||
|
spec (mark + encoded fields) when the user never renames.
|
||||||
|
|
||||||
|
- **Fit-mode tab labels** ("Original / Width / Height / Full", `LivePreview.tsx`)
|
||||||
|
are terse for a first-time user; tooltips likely suffice.
|
||||||
|
|
||||||
|
- **Donate is the most saturated element on screen** (header soft-accent wash) —
|
||||||
|
visually outranks Publish/Build Chart. Decide whether intentional.
|
||||||
|
|
||||||
|
- **Left rail affordance** (`PaneToggleStrip.tsx`): three unlabeled glyphs + a
|
||||||
|
tall empty strip; pane toggles aren't discoverable without hovering.
|
||||||
|
|
||||||
|
- **Pane toggle pressed state = hover state** (`PaneToggleStrip.module.css`).
|
||||||
|
The pressed chip is a `--layer-02` fill — the same fill the strip's IconButtons
|
||||||
|
use on hover — so hovering an off toggle looks identical to an on toggle at
|
||||||
|
rest. (The pressed chip's `--border-strong` border used to disambiguate; it was
|
||||||
|
dropped in the box-discipline pass.) Candidate cues: a filled/accent glyph,
|
||||||
|
an inset edge marker, or restoring a border for the on state only.
|
||||||
|
|
||||||
|
- **Dataset detail schema density** (`DatasetsModal.tsx`): one field per row
|
||||||
|
makes a 25-column dataset a long scroll before the preview table; a denser
|
||||||
|
two-column field list would fit overview + schema + preview on one screen.
|
||||||
|
|
||||||
- **Chart theme picker placement & header crowding** (`LivePreview.tsx` — ChartThemeControl).
|
- **Chart theme picker placement & header crowding** (`LivePreview.tsx` — ChartThemeControl).
|
||||||
The picker sits in the preview header because nesting a SelectControl inside the
|
The picker sits in the preview header because nesting a SelectControl inside the
|
||||||
PreviewSettings popover is impossible today (one-open-popover registry: the select would
|
PreviewSettings popover is impossible today (one-open-popover registry: the select would
|
||||||
|
|||||||
Reference in New Issue
Block a user