Skip to content

feat(TimeInput): rebuild with interactive clock button and Storybook docs#4

Merged
jeffreylauwers merged 4 commits intomainfrom
feature/time-input
Feb 18, 2026
Merged

feat(TimeInput): rebuild with interactive clock button and Storybook docs#4
jeffreylauwers merged 4 commits intomainfrom
feature/time-input

Conversation

@jeffreylauwers
Copy link
Copy Markdown
Owner

@jeffreylauwers jeffreylauwers commented Feb 18, 2026

Summary

  • CSS volledig herschreven: wrapper positioneert interactieve klokknop absoluut aan inline-end
  • Component herbouwd: clock icon is nu een <button type="button"> die showPicker() aanroept
  • Button heeft tabIndex=-1 en aria-hidden="true" — toetsenbordgebruikers bedienen de input direct
  • Button verdwijnt in disabled en readOnly staat
  • Visueel verborgen tekst "Tijdkiezer openen" op de button (toekomstbestendig voor a11y)
  • Action-2 kleurtokens voor het klokicoon (--dsn-time-input-icon-color en hover variant)
  • padding-inline-end-with-icon token zorgt dat tekst nooit achter de knop loopt
  • Width variants via wrapper (niet op het input element zelf)
  • TextInput.css import toegevoegd voor de dsn-text-input base stijlen
  • Tests volledig herschreven: 34 tests (was 17) — clock button, width variants, states
  • Storybook: TimeInput.stories.tsx + TimeInput.docs.mdx + TimeInput.docs.md aangemaakt

Test plan

  • 656 tests groen (34 TimeInput tests)
  • Build slaagt (pnpm run build)
  • Storybook bekeken in browser

🤖 Generated with Claude Code

Jeffrey Lauwers and others added 4 commits February 18, 2026 09:06
…docs

- CSS herschreven: wrapper + absolute clock button aan inline-end
- Component: clock icon wordt interactieve <button> die showPicker() aanroept
- Button is tabIndex=-1 en aria-hidden (toetsenbord gebruikt input direct)
- Button verborgen in disabled/readOnly staat
- Visueel verborgen label "Tijdkiezer openen" op de button
- Action-2 kleurtokens voor icoon (default + hover)
- padding-inline-end-with-icon token voor ruimte rechts
- Width variants via wrapper (niet op input)
- TextInput.css import toegevoegd (dsn-text-input base stijlen)
- Tests volledig herschreven: 34 tests (clock button, widths, states)
- Storybook: TimeInput.stories.tsx + docs.mdx + docs.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…con-only

- Gebruikt Button component (variant='subtle', size='small', iconOnly)
  in plaats van een custom <button> met handmatige stijlen
- CSS vereenvoudigd: hover/focus/color stijlen komen nu van Button zelf
- dsn-time-input-icon-color/hover tokens niet meer nodig in CSS
- Padding-inline-end token blijft (ruimte voor de button in de input)
- Tests uitgebreid: controleert nu dsn-button, subtle, small, icon-only klassen
- showPicker test opgeschoond en correct gemaakt

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ponent usage

- dsn-time-input-icon-color en icon-hover-color tokens verwijderd uit docs
  (worden niet gebruikt — Button subtle regelt die kleuren zelf)
- Alleen dsn-time-input-padding-inline-end-with-icon blijft staan
- Anatomy sectie bijgewerkt: klokknop omschreven als Button component

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…width prop

- dsn-visually-hidden bestond niet — vervangen door eigen
  .dsn-time-input__button-label (correct visually-hidden patroon in CSS)
- ::-webkit-calendar-picker-indicator en inner-spin-button verborgen
  zodat het native browserklokje niet doorheen het eigen icoon schijnt
- width prop verwijderd — vaste sm-breedte (16ch) in wrapper
- Storybook: Widths story verwijderd, width argType verwijderd
- Docs bijgewerkt: vaste sm-breedte uitgelegd

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jeffreylauwers jeffreylauwers merged commit caa4311 into main Feb 18, 2026
1 check passed
@jeffreylauwers jeffreylauwers deleted the feature/time-input branch March 27, 2026 06:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant