Skip to content

Add initial component set#56

Draft
sjoerdbeentjes wants to merge 15 commits into
mainfrom
feat/initial-component-set
Draft

Add initial component set#56
sjoerdbeentjes wants to merge 15 commits into
mainfrom
feat/initial-component-set

Conversation

@sjoerdbeentjes

@sjoerdbeentjes sjoerdbeentjes commented Jun 23, 2026

Copy link
Copy Markdown
Collaborator

What

Adds the React & Angular component-library half of the PoC component inventory to @surfnet/react, plus the supporting contracts.

Primitives vendored (shadcn CLI / Base UI, Phosphor icons) — each with its own directory, barrel, src/index.ts export, and a Storybook story:
avatar, breadcrumb, checkbox, dropdown-menu, field, input, label, select, separator, sidebar, table. (button already existed.)

DataTable — a reusable component built on the table primitive + TanStack Table (@tanstack/react-table), matching the dedicated "Data Table" Figma spec: row selection, sortable columns, text filter, column-visibility menu, row actions, and Previous/Next pagination. All user-facing strings (Columns, No results., Previous, Next, the selection summary, filter placeholder) are props with sensible defaults.

Contracts — every new component gets a <name>Contract in @surfnet/contracts as the cross-framework source of truth. Components with a real axis are tied to the contract (cva satisfies Record<…> or typed inline-union props): avatar size, dropdown-menu item variant, field orientation, select trigger size, sidebar menu-button variant/size. The rest are description-only.

Skill — updated add-component (SKILL.md, react.md, angular.md) to require a contract for every component and to document the three contract shapes (variant/size, orientation, description-only), closing the gap that previously left primitives without contracts.

Why

These are the primitives needed to rebuild the two PoC screens (App catalog, Login). Scope here is React components only

@sjoerdbeentjes sjoerdbeentjes changed the title feat(react): core component set + data table Add initial component set + data table Jun 23, 2026
@sjoerdbeentjes sjoerdbeentjes changed the title Add initial component set + data table Add initial component set Jun 23, 2026
@sjoerdbeentjes sjoerdbeentjes marked this pull request as draft June 23, 2026 13:14
@sjoerdbeentjes sjoerdbeentjes force-pushed the feat/initial-component-set branch from b735500 to 51d80d8 Compare June 23, 2026 13:14
@sjoerdbeentjes sjoerdbeentjes linked an issue Jun 23, 2026 that may be closed by this pull request
Vendor eleven shadcn/Base UI primitives into @surfnet/react — avatar,
breadcrumb, checkbox, dropdown-menu, field, input, label, select,
separator, sidebar, table — each with a barrel, an index export, and a
Storybook story. Add a DataTable component built on the table primitive +
TanStack Table (row selection, sorting, filtering, column visibility,
pagination); all of its user-facing strings are props with defaults.

Add a contract per component in @surfnet/contracts (description-only where
there is no axis) and tie each component to it via satisfies / typed props.
Update the add-component skill to require a contract for every component and
document the variant/size, orientation, and description-only shapes.
…cons

Follow PR #44: replace all @tabler/icons-react usages in the new components
and their stories with @phosphor-icons/react (`*Icon` suffix). The icon
library config and peer/dev deps already came in via the rebase onto main.
The separator story declared an `orientation` control but every story
hardcoded its render, so the control did nothing. Add an args-driven Default
playground that consumes `orientation` (and adapts its layout) so the control
works; keep the Horizontal/Vertical showcases.

Audited the rest: Storybook here only surfaces explicitly declared argTypes
(no prop inference), and separator was the only component with a declared-but-
unconsumed control. Document the rule in the add-component skill so new stories
always wire their controls to an args-driven story.
@sjoerdbeentjes sjoerdbeentjes force-pushed the feat/initial-component-set branch from 2692ebb to 0bc3dfa Compare June 24, 2026 09:23
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.

Toevoegen componenten voor demo-pagina

1 participant