j3w1/theme implementation brief — time-picker theme: j3w1-theme 1.1.0 profile: default sourceDigest: sha256-C+iD5Q7l0XPU/boMj003wPbPLBOq3C3ZM7s4OfzJ6mc= pin: https://raw.githubusercontent.com/j3w1/theme/v1.1.0/exports/components/time-picker.json spec: spec/components/time-picker.md site: https://j3w1.github.io/theme/reference/#c-time-picker maturity: stable priority: R1 Summary: A themed time editor with explicit step buttons, backed by native time values and constraints. Use the pinned approved default profile. Pending roles in that profile use-and-report their decision IDs; this does not approve them. Proposed profiles are preview-only and blocked for delivery. Heritage profiles are historical-only. Deprecated or heritage roles are blocked for new approved-profile mappings. Consume roles within their documented scope, never primitives. Release numbering does not approve profiles or tokens. Tokens (resolved): root.bg #000000 ({color.surface.input}) use root.border #a3676b ({color.border.control}) use-and-report (D-007) root.bg-hover #1c0a09 ({color.interaction.hover.bg}) use root.border-focus #e53935 ({color.border.active}) use root.ring #e53935 ({color.interaction.focus.ring}) use root.border-invalid #e53935 ({color.status.danger.border}) use root.border-disabled #7d1310 ({color.border.disabled}) use root.bg-disabled #160b0b ({color.interaction.disabled.bg}) use input.text #e99499 ({color.text.default}) use input.text-disabled #8a5559 ({color.text.disabled}) use input.caret #e99499 ({color.code.caret}) use label.text #ffa2a7 ({color.text.bright}) use help.text #bd787d ({color.text.muted}) use message.text #f73f35 ({color.status.danger.text}) use State dependency disclosures: D-007 States: default, hover, focus-visible, invalid, disabled default: Input surface, default text and control border. hover: The declared hover fill. focus-visible: Active border and the canonical focus ring. invalid: Danger border and a linked message. disabled: Disabled colors; editor and step actions unavailable. Keyboard: Tab / Shift+Tab: Moves between the time editor, step buttons and other controls. Typing: Edits HH:MM or HH:MM:SS text; native min, max and step validate it. Enter / Space on a step button: Increases or decreases by the native step. With step=any, buttons are disabled. ARIA: Labeled textbox with native time constraints and named step buttons (https://www.w3.org/WAI/ARIA/apg/practices/forms/) Responsive: Fits its content (about 8ch) and never grows to fill the container; at 320px the box, help and message stack without clipping. RTL keeps the segments in the locale order the host chooses. Portability: Theme-owned editor and step buttons backed by a native time input. Keep native min/max/step, labels, form ownership and reset. Without JavaScript the original native control is visible. native: GTK4 SpinButton pair for hours and minutes inside one box. native: Qt QTimeEdit; section navigation is native. native: Terminal UI: a masked line editor (HH:MM); no popup. Rules: use only these values; no invented colours; radius 0; borders 1px (2px emphasis); focus is a 1px dashed ring, selection is a fill; do not restyle unrelated elements; report deviations per agents/consume.md; record theme.lock.json at the pinned revision.