ui-ux-components-pxml
v0.4.0
Published
Comprehensive pxml UI/UX component library (~150 base components across 15 genres) for AI-compiled web projects. Use a tag via extends + attach an llm-judge prompt to restyle.
Maintainers
Readme
ui-ux-components
A pxml UI/UX component library for AI-compiled web projects (Next.js + Tailwind by default). It ships ready-made, well-styled base components covering the major website genres — auth, marketing/landing, e-commerce, dashboards, forms, feedback overlays, editorial content and social — so you can assemble a complete website by composing tags instead of writing components by hand.
Every component is a pxml <node type="ui-component"> with a sensible default style baked in.
You use a tag and, only if you want, attach a prompt to restyle it. The AI generates the code.
How it works
A component in this package is a base node. It is never meant to be compiled as-is into your app
untouched — you extend it from your own project.xml, which merges its default style with your
own instructions. Unused components are simply not generated.
extends="uix:<category>:<name>"→ inherits the component's default style.- A
<constraint verify="llm-judge">…</constraint>you add → the prompt that overrides/augments that default style. <meta><path>…</path></meta>→ where the generated file lands (override the default).
Install / reference
Recommended — install from git with the pxml CLI (clones into packages/ and wires the editor schema):
pxml plugin url-git https://github.com/two-tech-dev/ui-ux-components-pxml.git<import package="ui-ux-components-pxml" from="packages/ui-ux-components-pxml" as="uix" />Or npm: npm i ui-ux-components-pxml, then from="node_modules/ui-ux-components-pxml".
Selective (cheaper — only that genre's components enter the build):
<import src="packages/ui-ux-components-pxml/components/auth.xml" as="uix-auth" />
<!-- components become: uix-auth:login, uix-auth:signup, ... -->Usage example
<!-- 1. install first: pxml plugin url-git https://github.com/two-tech-dev/ui-ux-components-pxml.git -->
<!-- 2. bring in the library -->
<import package="ui-ux-components-pxml" from="packages/ui-ux-components-pxml" as="uix" />
<!-- 3. a plain login page (default style) -->
<node id="page.login" type="ui-component" flow="auth" extends="uix:auth:login">
<meta><path>app/login/page.tsx</path></meta>
</node>
<!-- 4. the same login, restyled via an attached prompt -->
<node id="page.login.branded" type="ui-component" flow="auth" extends="uix:auth:login">
<meta><path>app/(auth)/login/page.tsx</path></meta>
<constraint verify="llm-judge">Dark glassmorphism: bg-slate-950, card bg-white/10 backdrop-blur-xl,
emerald accent instead of indigo, add Google + GitHub social login on top.</constraint>
</node>Then run:
pxml validate # check the spec
pxml compile # AI generates the extended componentsBecause extends merges constraints (parent first, then yours), your prompt is read after the
default style, so it refines rather than fights it.
Component catalog
Names below are the extends targets (prefix with your import alias, e.g. uix:).
| Category | Tags |
| :--- | :--- |
| layout | container section grid card button divider spacer |
| navigation| navbar sidebar footer breadcrumb tabs pagination mobileMenu megaMenu languageSwitcher cookieConsent backToTop |
| auth | login signup forgotPassword resetPassword otpVerify socialLogin onboarding profileSettings changePassword twoFactor inviteAccept |
| marketing | hero features pricing testimonials faq cta stats logoCloud newsletter |
| ecommerce | productCard productGrid productDetail cart checkout wishlist orderHistory filterPanel quickView reviewList reviewForm couponInput orderTracking sizeGuide |
| dashboard | adminLayout statCard dataTable chartPanel notification userMenu calendar kanban messages activityLog settingsPage filterBar |
| forms | contactForm searchBar multiStepForm fileUpload |
| feedback | modal toast alert tooltip drawer |
| content | blogList articleCard blogPost gallery carousel codeBlock tableOfContents audioPlayer newsCard |
| social | commentSection feed profilePage chat stories notificationFeed events |
| inputs | textField textArea select checkbox radioGroup switch slider datePicker combobox inputGroup rating tagInput colorPicker |
| primitives| badge avatar progress skeleton spinner emptyState accordion popover dropdownMenu hoverCard contextMenu commandPalette kbd toggle aspectRatio countdown |
| booking | bookingWidget appointmentScheduler dateRangePicker reservationConfirm seatMap |
| industry | announcementBar comparisonTable timeline team appStoreBadges videoSection jobListing jobDetail jobApply propertyCard propertyDetail courseCard coursePlayer restaurantMenu eventAgenda donationForm knowledgeBase docsLayout forumTopic forumThread podcastPlayer videoPlayer mapEmbed storeLocator |
| errors | notFound errorPage maintenance searchResults comingSoon |
Each component documents the props it accepts in its verify="static" constraint and its default
look in the verify="llm-judge" constraint. Override either by extending and adding your own
constraints.
Customizing the default style globally
To change the shared design language (color, radius, density) across many components, add a
project-level <constraint verify="llm-judge"> to a wrapper node that other nodes depends_on,
or simply restyle each tag individually with its own prompt.
Editor / IDE support (autocomplete & docs)
pxml validates/edits via the Red Hat XML extension bound to a schema (xsi:noNamespaceSchemaLocation).
This package ships an enriched schema so your editor can suggest component flows and show every
component in hover docs.
A. Manual binding (works with any pxml version)
The package includes two files:
ui-ux-components-pxml.xsd— enriched schema: enumerates the 15flowcategories and documents all ~150 components (generated fromcomponents/*.xmlvianode scripts/gen-schema.mjs).catalog.xml— OASIS catalog that remapspxml.xsd→ the enriched schema.
Bind it by adding to your project's .vscode/settings.json:
{
"xml.catalogs": [
"packages/ui-ux-components-pxml/catalog.xml"
]
}(Adjust the path to wherever the package lives — e.g. .pxml/packages/github/two-tech-dev/ui-ux-components-pxml/catalog.xml
when pulled from git.) After this, typing flow=" suggests auth/ecommerce/…, and hovering a
<node> shows the full component catalog.
Note: exact
extends="uix:auth:login"values ARE suggested — the package schema (A) enumerates them assuming the conventionaluixalias, and the compiler (B) enumerates them from your actual alias.flow/typeare also suggested. If you use a non-uixalias with manual binding (A only), adjust the alias inscripts/gen-schema.mjsand regenerate.
B. Zero-config (pxml compiler auto-sync)
If your pxml compiler includes the editor-schema auto-sync (see the two-tech-dev/pxml repo),
no manual binding is needed — works for both install paths:
Local install (recommended):
pxml plugin url-git <url>puts the package inpackages/and binds itscatalog.xmlimmediately. Then:<import package="ui-ux-components-pxml" from="packages/ui-ux-components-pxml" as="uix" />Git import:
from="github:two-tech-dev/ui-ux-components-pxml"also works.
On the next pxml validate / pxml compile, the compiler derives an enriched schema from the
actual imported components (enumerating their flows/types and the exact extends values
using your import alias), writes .pxml/schemas/pxml.enriched.xsd + .pxml/catalog.xml, and
registers .pxml/catalog.xml in .vscode/settings.json automatically. Autocomplete (and docs)
light up with zero config. flow/type/extends enumerations are unions with xs:string, so
custom values you add still validate — no false errors.
Notes
- Stacks: components assume Tailwind + React (Next.js App Router). For other stacks set the
consuming project's
stackattribute; pxml adjusts the generator accordingly. - The package's
project.xmlonly declares components; nothing is generated until you extend a tag. pxml.xsd/bugs.xsdare included for editor autocomplete andbugs_history.xmlvalidation.
