Tabs
Accessible, WAI-ARIA compliant tabs as a lightweight Web Component.
Tabs
Accessible, WAI-ARIA compliant tabs as a lightweight Web Component.
Modal
Native <dialog>-based modal with a tiny event-driven API.
Drawer
Slide-in drawer with focus trap and scroll lock.
Spinbutton
Constrained numeric input following the WAI-ARIA spinbutton pattern via <cinq-spinbutton>.
Disclosure Button
Controller for aria-expanded triggers that show or hide controlled regions via <cinq-disclosure-button>.
Switch
Binary on/off control following the WAI-ARIA switch pattern via <cinq-switch>.
Toast
Transient live-region notices via <cinq-toast>. Consumer sets role="alert" or
role="status".
Accordion
Expandable sections with keyboard navigation via <cinq-accordion>.
Combobox
Editable list autocomplete following the WAI-ARIA combobox pattern via <cinq-combobox>.
Window Splitter
Resizable panes with a focusable separator via <cinq-windowsplitter> (layout wrapper).
Calendar
Date / range picker with keyboard grid navigation via <cinq-calendar>.
Snake
Canvas Snake with a requestAnimationFrame loop via <cinq-snake>.
Utils
Event constants, dispatchEvent, focus trap, scroll lock, and attribute parsers shared across CINQ UI.
Pixelate
Attribute-driven canvas pixelation: drive pixel from scroll, a spinbutton, or anything else.
Dual scroll
Two columns, one inverted scroll inside a sized zone. Spring easing, no full-page hijack.
<dialog>, <input>, role="tab", aria-expanded, and the rest). Each package wires interactivity to that DOM. It extends HTML, it does not generate structure or silently replace semantics.$ prefix: a property or local named with a leading $ (e.g. $button, $input) holds a DOM node: an HTMLElement (or a more specific subtype such as HTMLButtonElement). Plain names are reserved for values, IDs, and non-DOM state.Interactive examples use AD&D 2nd Edition flavour: ability scores, spell slots, bestiary entries, and dungeon delves, so demos read like a campaign sheet rather than a generic web app.