# Plainkit > Plainkit 0.28.0. A dependency-free UI toolkit: `pk-*` custom elements, CSS tokens and small ES modules for plain HTML pages with no framework and no build step, plus a Blazor component wrapper (PlainKit.Blazor). Everything in one file: `llms-full.txt`, served beside this file on the Pages site and in the release assets (the whole reference, concatenated plainly; the npm package leaves it out; the skills served by the Pages site hold the same text). The long-form element descriptions (every attribute, method, event, slot and part, keyed `tag.prop`, `tag.method()`, `tag@event`, `tag#slot`, `tag::part`, `tag/--css-property`; the editor files carry one-sentence summaries) are in [descriptions.json](https://skulmunkie.github.io/plainkit/dist/descriptions.json), served on the Pages site and in the release assets (`plainkit-dist-.zip`); the npm package leaves it out. The gallery (`gallery/embed.html`, `gallery/templates//`) is served the same way, at https://skulmunkie.github.io/plainkit/dist/gallery/ and in the release zip, and is not in the npm package. Claude Code loads the skills directly: `skills/plainkit-sdk/SKILL.md` (in the npm package) and the `plainkit-blazor` skill (`skills/plainkit-blazor/SKILL.md`, linked below at its Pages URL: the npm package leaves it out, NuGet, the skills zip and the Pages site carry it). ## plainkit-sdk - [SKILL.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/SKILL.md): Build web pages and apps with the Plainkit SDK, a dependency-free UI toolkit of pk- custom elements (pk-button, pk-input, pk-dialog, pk-table, pk-app-shell and… - [references/app.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/app.md): The app framework (tracker 346) is built in steps; this is step 4 (mountApp) plus step 5 (page types 1, tracker 351). - [references/build-an-app.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/build-an-app.md): An app of several pages is mostly the same work each time: the header, the menu, the breadcrumbs, routing, loading and error states, the theme, focus and the p… - [references/canvas-editor.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/canvas-editor.md): An editor is a pk-dock with a toolbox panel, a centre panel holding a pk-canvas, and a properties panel (plainkit.canvas and plainkit.dock packages). - [references/choosing.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/choosing.md): Before you write markup for a page: (1) name the page type or job, (2) look it up in the use-case table below, (3) open the template, layout, pattern or elemen… - [references/conformance-rules.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/conformance-rules.md): Every rule npx plainkit audit can report, one row per id: the CLI is the same rule table, so --list-rules lists these exact ids and --explain shows the sa… - [references/custom-sdk.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/custom-sdk.md): A consumer's theme and breakpoint widths are two independent choices, both made in the theme editor's Custom SDK tab (mountThemeEditor(el); the Theme page of t… - [references/elements-actions.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/elements-actions.md): How to read these tables: see elements-index.md. - [references/elements-data-display.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/elements-data-display.md): How to read these tables: see elements-index.md. - [references/elements-feedback.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/elements-feedback.md): How to read these tables: see elements-index.md. - [references/elements-form-controls.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/elements-form-controls.md): How to read these tables: see elements-index.md. - [references/elements-form-layout.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/elements-form-layout.md): How to read these tables: see elements-index.md. - [references/elements-index.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/elements-index.md): 139 elements by group. - [references/elements-layout.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/elements-layout.md): How to read these tables: see elements-index.md. - [references/elements-navigation.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/elements-navigation.md): How to read these tables: see elements-index.md. - [references/elements-overlays.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/elements-overlays.md): How to read these tables: see elements-index.md. - [references/full/examples-actions.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/full/examples-actions.md): The element sections in elements-actions.md show the first example of each element; these are the rest. - [references/full/examples-data-display.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/full/examples-data-display.md): The element sections in elements-data-display.md show the first example of each element; these are the rest. - [references/full/examples-feedback.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/full/examples-feedback.md): The element sections in elements-feedback.md show the first example of each element; these are the rest. - [references/full/examples-form-controls.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/full/examples-form-controls.md): The element sections in elements-form-controls.md show the first example of each element; these are the rest. - [references/full/examples-form-layout.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/full/examples-form-layout.md): The element sections in elements-form-layout.md show the first example of each element; these are the rest. - [references/full/examples-layout.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/full/examples-layout.md): The element sections in elements-layout.md show the first example of each element; these are the rest. - [references/full/examples-navigation.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/full/examples-navigation.md): The element sections in elements-navigation.md show the first example of each element; these are the rest. - [references/full/examples-overlays.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/full/examples-overlays.md): The element sections in elements-overlays.md show the first example of each element; these are the rest. - [references/full/patterns.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/full/patterns.md): The sections of ../patterns.md that are too long to keep in the npm package (markup, script or module header), by id. - [references/full/templates.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/full/templates.md): The sections of ../templates.md that are too long to keep in the npm package (markup, script or module header), by id. - [references/full/tools.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/full/tools.md): The sections of ../tools.md that are too long to keep in the npm package (markup, script or module header), by id. - [references/known-gaps.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/known-gaps.md): Plainkit 0.28.0 is a pre-release. - [references/layouts.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/layouts.md): Page anatomies: the skeleton of a kind of page, as markup. - [references/loading.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/loading.md): This bundle is for Plainkit 0.28.0. - [references/logging.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/logging.md): The SDK has one logger. - [references/openers.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/openers.md): Open, toggle and close a pk-dialog, pk-drawer or pk-popover from markup, with no script. - [references/page.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/page.md): createPage gives a page the bookkeeping it always needs — a title, a status/error notice, a busy overlay around an action, a breadcrumb trail — built from elem… - [references/patterns.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/patterns.md): Small compositions of elements for a common job (confirming a delete, filtering a table, forms, notifications). - [references/state.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/state.md): Per-module state that is namespaced, versioned, validated, subscribable and optionally saved in localStorage. - [references/templates.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/templates.md): Full-page starting points, one folder each in gallery/templates// (on the Pages site at https://skulmunkie.github.io/plainkit/dist/gallery/templates/ and i… - [references/theming.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/theming.md): Two themes and three densities are token sets, not separate stylesheets (an optional theme may be one: dist/themes/.css, linked after plainkit.css on pur… - [references/tools.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/tools.md): The tools are the modules unit, separate from the runtime: each is a module in dist/modules//.js (its own zip, plainkit-modules-.zip, and… - [references/upgrading.md](https://skulmunkie.github.io/plainkit/skills/plainkit-sdk/references/upgrading.md): This is a blast-radius recipe, not a changelog readout: the goal is a checklist of what to change in this app, not a summary of what Plainkit changed in the ab… ## plainkit-blazor - [SKILL.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/SKILL.md): Build Blazor apps with PlainKit.Blazor, the Razor components (PkButton, PkInput, PkDialog, PkToast, PkField, PkTabs and more) over the Plainkit pk- elements. - [references/app.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/app.md): A hand-written component that wraps PkAppFrame. - [references/choosing.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/choosing.md): Before you write markup for a page: (1) name the page type or job, (2) look it up in the use-case table below, (3) open the template, layout, pattern or elemen… - [references/components-actions.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/components-actions.md): : Button (Actions). - [references/components-data-display.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/components-data-display.md): : Avatar (Data display). - [references/components-feedback.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/components-feedback.md): : Alert (Feedback & status). - [references/components-form-controls.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/components-form-controls.md): : Calendar (Forms). - [references/components-form-layout.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/components-form-layout.md): : Field (Form layout). - [references/components-index.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/components-index.md): 139 elements; 139 have a component. - [references/components-layout.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/components-layout.md): : Accordion (Containers). - [references/components-navigation.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/components-navigation.md): : App bar search (Navigation). - [references/components-overlays.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/components-overlays.md): : Badge popover (Overlays). - [references/conformance-rules.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/conformance-rules.md): Every rule npx plainkit audit can report, one row per id: the CLI is the same rule table, so --list-rules lists these exact ids and --explain shows the sa… - [references/data-table.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/data-table.md): A hand-written component, a thin typed wrapper over the pk-data-table element (plainkit-sdk skill). - [references/devtools.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/devtools.md): In the Development environment, /_plainkit serves the toolkit's own tools: the Gallery, Files and Scorecard workspaces, and the SDK's dev tools dock (PkDevTool… - [references/enums.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/enums.md): A parameter whose element prop has a fixed set of values is an enum; each member is one attribute value (ButtonVariant.Primary is primary). - [references/events.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/events.md): An event with a detail gives EventCallback; the args class has one nullable property per field of the element's detail (set only when the eleme… - [references/field-group.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/field-group.md): A hand-written component with no element of its own. - [references/file-upload.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/file-upload.md): Both elements keep their files in their own shadow-tree input, which Blazor cannot read. - [references/input-format.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/input-format.md): PkInput's Value stays plain string (the same text the element exchanges with the DOM: yyyy-MM-dd for type="date", invariant-culture numeric text for type="numb… - [references/known-gaps.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/known-gaps.md): PlainKit.Blazor 0.28.0 is an alpha. - [references/logging.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/logging.md): The SDK has one logger (js/log.js). - [references/record-editor.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/record-editor.md): A plain C# class (no component, no element) holding what every record page repeats: load a record by id or start a blank one, a not-found flag, DataAnnotations… - [references/record-form.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/record-form.md): A generated wrapper of the pk-record-form element (issue 999), which draws the page: a toolbar, your Tabs, the error alert and a pk-form (summary of the proble… - [references/setup-and-options.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/setup-and-options.md): Register the services, add once, first in the of App.razor (a plain in-place link: it must come before the app's own stylesheets), add (write TItem="object"; Columns and Items are then ignored) to author the table markup yourself: the element's default slot t… - [references/upgrading.md](https://skulmunkie.github.io/plainkit/skills/plainkit-blazor/references/upgrading.md): This is a blast-radius recipe, not a changelog readout: the goal is a checklist of what to change in this app, not a summary of what Plainkit changed in the ab…