port-component

Ports BaseUI and shadcn/ui components into BlazeUI Blazor templates with visual verification.

Updated Mar 28, 2026
One-click install
npx skills add https://github.com/rabuckley/blazeui --skill port-component-rabuckley
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: port-component
Source: https://github.com/rabuckley/blazeui/tree/main/.claude/skills/port-component
Command: npx skills add https://github.com/rabuckley/blazeui --skill port-component-rabuckley

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Porting a UI component from BaseUI and shadcn/ui into a Blazor component library involves many error-prone steps: researching headless anatomy, translating Radix data attributes, writing CLI templates, regenerating compiled components, rebuilding Tailwind CSS, and visually verifying the result. This Skill orchestrates that entire workflow end to end. ## Core Features & Use Cases - Headless anatomy research: Fetches BaseUI documentation to extract sub-component parts, state attributes, keyboard behavior, and ARIA roles. - Styled template creation: Pulls exact Tailwind class strings from shadcn/ui v4 source and translates Radix attribute selectors (e.g. data-[state=open]) into BlazeUI equivalents (data-[open]). - Build and verification loop: Regenerates compiled components from CLI templates, rebuilds Tailwind v4 CSS, restarts the demo app, and screenshots the result with playwright-cli for visual comparison. - Use Case: Ask to "port the Accordion component" and the Skill researches BaseUI anatomy, creates Accordion.razor templates, adds a demo page, compiles CSS, and iterates on screenshots until the component matches shadcn's appearance. ## Quick Start Ask the assistant to port the Dialog component from BaseUI and shadcn/ui into BlazeUI and verify it visually in the demo app.

Frequently Asked Questions about port-component

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I port a shadcn/ui component to Blazor?

Fetch the shadcn/ui v4 source from GitHub to extract Tailwind classes, translate Radix data attributes to BlazeUI equivalents, create a CLI template in src/BlazeUI.UI.CLI/Templates/, regenerate compiled components, and verify visually with playwright-cli screenshots.

How do I convert Radix data-state attributes for Blazor components?

BlazeUI uses simplified attributes instead of Radix's data-[state=open] pattern. Translate data-[state=open] to data-[open], data-[state=checked] to data-[checked], and data-[state=on] to data-[pressed] when copying shadcn classes.

Why are my Tailwind classes missing from the compiled CSS in a Blazor app?

Tailwind v4 does not scan .razor files by default. The @source directives in the demo app's Styles/input.css must point to directories containing your .razor files, then rebuild the CSS with the @tailwindcss/cli tool.

What is the difference between standard and styled-only components in BlazeUI?

Standard components wrap BlazeUI.Headless components and follow the full research workflow. Styled-only components like Sidebar or Card have no headless layer, manage state via CascadingValue with a context class, and define their own data attributes directly.

Why is my Blazor dialog backdrop visible when the dialog is closed?

BlazeUI portals always render content in the DOM regardless of open state. Add data-[closed]:hidden to both the backdrop and popup elements so closed overlay content stays hidden.