Last 12 weeks · 57 commits
1 of 6 standards met
Summary Two rounds of work that push kinu further onto native DOM and CSS features, so behaviour that competitors reimplement in JavaScript comes from the browser instead. Round 1 was the styling layer (squircles, materials, elevation, scroll-driven effects). Round 2 went after the platform layer — the overlay engine, the `@supportsz-index: 1000divz-indexshowModal()Dialogclosedby="closerequest"mobile="drawer"beforetogglebackdrop-filterdisplay: noneoverflowz-index.show()command="toggle-popover"closedialog.show()preventDefaultclosedby="any"appearance: base-select::checkmark@starting-stylecorner-shape--k-radius-1..4--k-corner-radius@supports (corner-shape: squircle)calc(var(--k-radius) 1.8408964)1 + 2^(-1/4)--k-radiuscorner-shape--k-shadow-1/2/3--k-shadow-hslprefers-contrast--k-backdrop-blurnoneprefers-reduced-transparencyforced-colors::scroll-markertext-wrap: balanceprettytext-box: trim-bothscrollbar-color::-webkit-scrollbarscrollbar-gutter: stablescroll-state()position-visibilityvirtualcontent-visibilityinterestforpopover="hint":hoveroverflow:is([open], :popover-open)[open]--k-radius--k-backdrop-blurnonemobile="drawer"--modalshowModal()[open]closedbySheetContent[k="sheet-panel"]closedby="any"k-swipe-fadebackdrop-filter--k-radius-1..4--k-corner-radius--k-shadow-1/2/3base.css::selection--k-selection-bg--k-scrollbar-thumb0.75rem0.5625remmainpnpm buildpnpm tsccommands.ts:popover-openbase-selectmobile="drawer"[open]:modal--swipe: y[k="sheet-panel"]closedbynoneprefers-reduced-transparencycorner-shape--k-radius--k-shadow---k-selection-bg` overrides still win. No component exceeds 45% of its short side in any mode. https://claude.ai/code/session_01F3Jt1mTthRAT6HwyXQqqma
Summary This PR significantly expands kinu's component library with 20+ new components focused on layout primitives, form enhancements, and chat/messaging UI. It also introduces comprehensive benchmarking infrastructure to track per-component bundle size and generates LLM-friendly documentation. Key Changes New Layout & Spacing Components , , , , , — CSS-driven flex/grid layout primitives with token-based gap control — full-page scaffold with header, sidebar, main, footer grid layout — horizontal ordered steps with numbered markers Form & Input Enhancements — native number input with stepper buttons driven by the command bus — password input with show/hide toggle — token/tags input that submits via hidden field — wrapper that runs native validation before submit handler Added CSS styling to , , for post-interaction validation feedback Chat & Messaging Components — chat bubble with author-driven color and alignment — message list that sticks to bottom as new messages arrive — chat input form with autosizing textarea and Enter-to-send — command palette (Dialog + Listbox composition) Utility & Display Components — styled code block and inline code with optional copy button — one-tap copy-to-clipboard with CSS-only copied state — star rating built from native radio group — corner overlay for notification counts or status dots — declarative keyboard shortcut binding to commands Infrastructure & Documentation Per-component bundle size benchmarking () tracking JS, CSS, and total sizes Generated and from component metadata for LLM authoring guidance New foundation docs: and — single source of truth for component contribution process — long-horizon execution plan with stable IDs and status tracking — expanded with platform-gating policy Library Utilities — global hotkey singleton using delegated keydown listener — View Transitions API wrapper with fallback — enhanced command bus for custom commands (, , , ) Styling & Theming Added spacing scale tokens ( through ) for layout primitives New theme files: , Enhanced with forced-colors (Windows High Contrast) support Updated to support attribute for full-bleed page-level alerts Updated sizing defaults and added attribute Tests New test suites: , , , , Notable Implementation Details All new components follow the pattern — thin JSX-to-HTML pass-throughs with attribute styling hooks Layout components use CSS custom properties for gap control, enabling token-based spacing without per-instance JS state Form validation leverages native HTML Constraint Validation API (, , , , etc.) — no validation library Chat components (, , ) compose existing primitives (e.g., wraps ) Hotkey and command systems use delegated event listeners to avoid per-instance overhead Benchmarking splits JS and CSS sizes separately to track the library's performance-first discipline https://claude.ai/code/session_01ScFTtdr4ETgSEGEYG5Hopr
Reported downstream: 8 compile errors against , all in the generated and all fine at runtime. Multi-tag components dropped every prop their tags didn't share and pick their element from their props — an `hrefcreateSimpleComponentOmitOmitkeyof (A HTMLAnchorElementuseRef(null)useRef(null)RefObjectkinu@0.2.0targetreldisabledButtontscsrc/__tests__/prop-types.test-d.tsxtscpnpm lintpnpm build`, and skipped by vitest (nothing in it runs). Changeset included; releases as a patch. _Generated by Claude Code_
Theming-token refactor, stacked on #126 for a clean diff; retarget to once #126 merges. Deploy preview: #130 (same branch → main). Tokenizes the duplicated / sync-risk values and base scales we agreed on, while leaving genuinely component-specific, single-site selector overrides alone (BYO-CSS stays first-class). Radius scale as offsets off the anchor. One knob shifts the whole ramp; any step is individually re-pinnable. All 20 ad-hoc forms migrated; computed-identical (4/6/8/12px). Elevation + surface tokens Elevation (resting / floating / modal). Normalized*: previously dropdowns carried a heavier shadow than modal dialogs — now , dropdowns/popovers unified at the floating level. (Intentional default-appearance change, per your call.)* Base owns the gnarly selectors, themes set values: → , → , avatar initials → (em-trick stays internal → clipping footgun gone by construction), kbd + prose share , tab indicator → (recolour without re-authoring the anchor /). defaults to , reusing the soft-tint token selected rows already use. is scoped to kinu elements (), matching how the scrollbar and reduced-motion rules stay inside kinu — the host page keeps its own selection colour. Both selectors are needed: inherits only between elements that match a rule. claw sheds redundant scrollbar / / avatar- / per-surface box-shadow rules and sets tokens instead. Fixes a latent bug where claw's overlay list targeted non-existent names (, …), so its soft borderless treatment never reached dropdowns/menus. Verified against the built artifacts Not just "it builds" — checked + in Chromium: Default elevation ordering: card < dropdown < dialog Selection: kinu content tinted ; host-page text (untouched), incl. nested markup claw: radius , tab indicator white → in dark, avatar Token block appears once in the bundle (see #126's dedup fix); 19 tests, lint, both builds green Deliberately left as selectors (not smells) Switch geometry, badge/chip padding, button weight, list gap, table cells, card padding, inline-code, checkbox/radio sizing. skipped — the library intentionally inherits the host font. https://claude.ai/code/session_01V7eeBQGLaJDdycKo8yPttw
Draft for deploy preview only. Same branch as #129 (), but targeted at so Netlify builds a preview. Note the diff here is not the radius slice in isolation — because the theme system (#126) isn't merged yet, this shows #126's changes plus the radius scale. For the clean, reviewable radius-only diff, see #129** (stacked on #126). Contents: The kinu theme system (@layer tokens, claw theme, picker) — from #126 The claw bugfixes (avatar / inbox scroll / picker hydration) — from #126 Slice 1: the scale — this branch Not intended to merge into as-is; close once the preview has served its purpose. https://claude.ai/code/session_01V7eeBQGLaJDdycKo8yPttw _Generated by Claude Code_
Repository: developit/kinu. Description: Preact UI toolkit. 10x smaller than you think. Intuitive for humans+LLMs. Stars: 103, Forks: 2. Primary language: TypeScript. Languages: TypeScript (48.5%), CSS (42.8%), JavaScript (8.3%), Shell (0.5%). Homepage: https://kinu.sh Topics: preact, ui-components, ui-library, ui-toolkit. Latest release: kinu@0.2.0 (1d ago). Open PRs: 41, open issues: 2. Last activity: 14h ago. Community health: 28%. Top contributors: developit, claude, jamesism, Copilot, github-actions[bot], cursoragent, rschristian.