96 Commits

Author SHA1 Message Date
Mats Bosson
eea201cd12 Fix showcase dependencies
- Add resolve.dedupe for solid-js to prevent duplicate context instances
- Rewrite Pagination with correct page/totalPages/onPageChange API + children
- Add Calendar inside DatePicker.Content so dates actually render
2026-03-30 04:07:54 +07:00
Mats Bosson
d8ac5e4cb6 Fix showcase API mismatches
- Select/Combobox: options → items
- Listbox: add missing items prop
- Slider: onChange → onValueChange
- TextField: validationState="invalid" → invalid (boolean)
- ToggleGroup: add required type="single"
- Pagination: rewrite with page/totalPages/onPageChange + children
- CommandPalette: wrap in Show instead of non-existent open prop
- Toggle/ToggleGroup.Item: data-[pressed] → data-[state=on]
- Tabs.Tab: data-[selected] → data-[state=active]
- Wizard.StepTrigger: data-[active/completed] → data-[state=active/completed]
- Listbox.Item: data-[selected] → aria-selected
2026-03-30 04:03:37 +07:00
Mats Bosson
b76755de76 Fix showcase DataTable columns 2026-03-30 03:49:41 +07:00
Mats Bosson
ac1306edd9 Fix showcase Wizard nesting
StepContent requires WizardStepContext provided by Wizard.Step.
2026-03-30 03:48:47 +07:00
Mats Bosson
48d047e5d5 Fix showcase Form rendering
Form.Control uses render-prop children(ariaProps). Also moved navLinks
creation inside App() to avoid SolidJS createRoot warning.
2026-03-30 03:47:43 +07:00
Mats Bosson
8f4eb77bdc Fix showcase state attributes
These components use children?: JSX.Element, not render-prop callbacks.
State is exposed via data-state="checked|unchecked" attributes.
2026-03-30 03:45:41 +07:00
Mats Bosson
8761d317ae All 44 component demos
Layout & Display, Inputs Basic, Inputs Selection, Inputs Advanced,
Navigation, Overlays, Feedback & Status, and Data sections with
live interactive demos for every PettyUI component.
2026-03-30 03:36:22 +07:00
Mats Bosson
3d2257ae3c Showcase layout and navigation 2026-03-30 03:15:24 +07:00
Mats Bosson
144565afb5 Showcase app scaffold 2026-03-30 03:12:57 +07:00
Mats Bosson
e20b69d7e8 Wire up MCP CLI
- Add packages/mcp/src/cli.ts with init/list/inspect/discover/add commands
- Add packages/mcp/tests/cli.test.ts with 11 parseCommand tests (42 total)
- Update server.ts to register all 5 tools: discover, inspect, validate, add, compose
- Add @types/node devDep, switch to tsc --noCheck build to avoid re-checking
  core source under stricter NodeNext moduleResolution
- tsconfig: NodeNext module, types: [node], exclude core/src
2026-03-30 01:25:45 +07:00
Mats Bosson
e4a91d9386 MCP validate tool 2026-03-29 23:50:58 +07:00
Mats Bosson
0e5033414b MCP compose tool 2026-03-29 23:50:55 +07:00
Mats Bosson
6545b53310 MCP add tool 2026-03-29 23:50:22 +07:00
Mats Bosson
7e88fbc347 MCP discover tool 2026-03-29 23:49:53 +07:00
Mats Bosson
5e66d6fae1 MCP inspect tool 2026-03-29 23:49:50 +07:00
Mats Bosson
9f78750105 MCP component registry 2026-03-29 23:48:03 +07:00
Mats Bosson
2989ce4974 MCP server scaffold 2026-03-29 21:51:51 +07:00
Mats Bosson
17fe357837 Wire up all Phase 2 exports
VirtualList, Calendar, DatePicker, CommandPalette, Form, Wizard,
DataTable + createVirtualizer primitive. 445 tests passing, build clean.
2026-03-29 21:21:16 +07:00
Mats Bosson
894df74d7f DatePicker component
Composes Calendar inside a floating dropdown anchored to an input, with Intl locale formatting, controlled/uncontrolled date+open state, createDismiss for outside-click handling, and hidden input for form submission.
2026-03-29 21:20:09 +07:00
Mats Bosson
ea18b5b62c DataTable component 2026-03-29 21:17:56 +07:00
Mats Bosson
92435b2667 Wizard component
17 tests passing. Implements WizardRoot, WizardStep, WizardStepList, WizardStepTrigger, WizardStepContent, WizardPrev, WizardNext with createControllableSignal step state, completedSteps Set, registerStep/unregisterStep registration, linear guard on triggers, onComplete callback, and Object.assign compound export.
2026-03-29 21:15:55 +07:00
Mats Bosson
f270ef64af VirtualList component 2026-03-29 21:15:40 +07:00
Mats Bosson
896819526e Form component with Zod validation
Compound Form component (Root, Field, Label, Control, Description,
ErrorMessage, Submit) with reactive error store, aria linking, and
render-prop FormControl. 10 tests across rendering and validation suites.
2026-03-29 21:15:23 +07:00
Mats Bosson
8a248958f5 Calendar component
Compound component with Root, Header, Heading, Nav, PrevButton, NextButton, Grid, GridHead, GridBody, and Cell parts. Uses Intl.DateTimeFormat for locale-aware month/year heading and weekday names, min/max date constraints, and Enter/Space keyboard selection. 16 tests passing.
2026-03-29 21:15:19 +07:00
Mats Bosson
1106c2d020 CommandPalette component 2026-03-29 21:13:39 +07:00
Mats Bosson
de1c9a1cb8 Virtual scrolling primitive 2026-03-29 21:06:06 +07:00
Mats Bosson
5f425f445e Wire up Card, Avatar, NavigationMenu
Phase 1 complete — 32 component exports + 6 utility exports, 353 tests
passing, build clean.
2026-03-29 20:55:25 +07:00
Mats Bosson
b4ec99fe4a Registry package scaffold
Adds the shadcn-style copy-paste layer as a new monorepo package. Includes
theme token CSS custom properties (light/dark), a cn() class-merging utility
with tests, and a reference Dialog styled component wrapping the headless
pettyui/dialog primitive with Tailwind classes.
2026-03-29 20:53:40 +07:00
Mats Bosson
56f06c961d NavigationMenu component
Horizontal nav with dropdown submenus, hover-intent delay, keyboard-accessible
trigger/content parts, and full Zod v4 schema + ComponentMeta.
2026-03-29 20:53:17 +07:00
Mats Bosson
80f7af401a Avatar component
Image + fallback pattern with idle/loading/loaded/error status tracking via context. 4 tests passing.
2026-03-29 20:52:04 +07:00
Mats Bosson
5c503ee9ef Card component
Compound API (Root/Header/Content/Footer/Title/Description) with data-scope/data-part attributes, CardPropsSchema, and CardMeta. 4 tests passing.
2026-03-29 20:51:36 +07:00
Mats Bosson
01286d8b07 Trim unused exports
Fix systemic index.ts re-export bugs (accordion, alert-dialog, breadcrumbs, tabs)
where types were claimed from wrong source files, causing DTS build failures.
2026-03-29 20:49:28 +07:00
Mats Bosson
2e3d034a12 Migrate form components to Zod props 2026-03-29 20:41:18 +07:00
Mats Bosson
c0019d57e7 Migrate navigation components to Zod props 2026-03-29 20:41:10 +07:00
Mats Bosson
fdd12f95c6 Migrate selection components to Zod props 2026-03-29 20:39:35 +07:00
Mats Bosson
6dd06986cc Migrate overlay components to Zod props 2026-03-29 20:39:28 +07:00
Mats Bosson
c4547473a4 Migrate basic components to Zod props 2026-03-29 20:38:44 +07:00
Mats Bosson
38ef3b0934 Migrate Dialog to Zod props
Centralises all Dialog prop interfaces and schemas in dialog.props.ts.
Adds DialogRootPropsSchema, DialogContentPropsSchema, and DialogMeta for
AI/MCP discovery. Sub-components now import types from the shared file.
2026-03-29 20:36:18 +07:00
Mats Bosson
f197c58296 Add Zod v4 and ComponentMeta type 2026-03-29 20:32:18 +07:00
Mats Bosson
8f075f1792 feat: add 12 components — Tooltip, Popover, HoverCard, Alert, Badge,
Skeleton, Breadcrumbs, Link, Button, Image, Meter, NumberField
Floating components: Tooltip (hover/focus), Popover (click, with focus
trap and dismiss), HoverCard (hover with safe area).
Simple components: Alert (role=alert), Badge (role=status), Skeleton
(loading placeholder with data attributes).
Navigation: Breadcrumbs (nav>ol>li with separators), Link (accessible
anchor with disabled), Button (with disabled click suppression).
Data/Form: Image (Img+Fallback with loading status), Meter (like
Progress for known ranges), NumberField (spinbutton with inc/dec).
302 tests across 46 files, typecheck clean, build produces 176 files.
2026-03-29 19:34:13 +07:00
Mats Bosson
2a07d9ceaa Wire up Wave 2 exports
Adds listbox, select, combobox, dropdown-menu, context-menu, and toast
to package.json exports and tsdown build config.
2026-03-29 19:24:43 +07:00
Mats Bosson
6382a59eaf Combobox, DropdownMenu, ContextMenu, Toast
Combobox: text input + floating listbox with consumer-driven filtering,
  allowCustomValue, and aria-autocomplete support.
DropdownMenu: activation-mode menu with menuitem, menuitemcheckbox,
  menuitemradio roles, keyboard navigation, and typeahead.
ContextMenu: right-click triggered menu with virtual anchor positioning
  at pointer coordinates.
Toast: imperative API (toast(), toast.success/error/dismiss/clear) with
  reactive signal-based store and Toast.Region declarative renderer.
2026-03-29 19:23:33 +07:00
Mats Bosson
5bc9ac7b61 Listbox, Select, and list navigation
createListNavigation is the core primitive for all collection components
(Listbox, Select, Combobox, Menu). It provides value-based keyboard
navigation, selection/activation modes, typeahead, and aria-activedescendant
virtual focus.
Listbox: standalone selectable list with single/multiple selection.
Select: floating dropdown with trigger, keyboard navigation, form integration.
Also fixes exactOptionalPropertyTypes compatibility in createDisclosureState
and createListNavigation interfaces.
2026-03-29 19:12:05 +07:00
Mats Bosson
b249509cd7 Update build config
Replaces static entry map with programmatic generation from component
and utility arrays. Removes stale src/index.ts entry, adds all 16
components and 6 utilities.
2026-03-29 13:34:57 +07:00
Mats Bosson
c78a8832d9 Floating positioning primitive
Reactive wrapper around @floating-ui/dom that auto-updates floating
element position relative to an anchor. Exports createFloating,
CreateFloatingOptions, and FloatingState from primitives index.
2026-03-29 10:25:38 +07:00
Mats Bosson
d9285cc524 Suppress progressbar lint false positive 2026-03-29 09:17:14 +07:00
Mats Bosson
295dd1388c Switch to sub-path exports
Consumers use sub-path imports (e.g. "pettyui/slider") for tree-shaking.
Adds Drawer component + 15 sub-path entries to package.json exports.
2026-03-29 09:15:53 +07:00
Mats Bosson
824d12ba9a Fix Pagination disabled guards 2026-03-29 08:53:07 +07:00
Mats Bosson
a9a9506f98 Pagination component
Headless Pagination with Root, Previous, Next, Items (render-prop), and Ellipsis parts. Context-driven, fully accessible with aria attributes, 6 tests passing.
2026-03-29 08:50:50 +07:00
Mats Bosson
789f4e0328 Fix Slider NaN edge case 2026-03-29 08:35:52 +07:00