1. Examples
  2. Native Patterns

Native First

Patterns built on browser elements

This page shows a tasteful native path: <details> for disclosures and lightweight menus, <dialog> for modal surfaces, and only a minimal showModal() hook where the browser element still needs an opener.

When Native Fits

Use native controls when the interaction is simple, local to the page, and maps well to browser semantics. That usually gives you better baseline accessibility and less JS to maintain.

<details> for section stacks, inspector trays, and lightweight menus
<dialog> for modal review, confirmation, and quick-create flows
Helper-driven patterns only when the component contract needs more Bootstrap-like state management

Tradeoff

The disclosure and menu examples below are fully native. The dialog itself is native too, but opening it still typically wants one small showModal() call unless you rely on newer command attributes or a framework.

This page intentionally does not load the helper script. The menu is <details> and the dialog opener is a few lines of vanilla JS only for the modal launch.

Native Disclosure Stack

Billing summary 3 items Native details
Billing period: March 2026
Percent complete: 64%
Retention held: 10%
Required documents No helper
Conditional waiver received
Insurance certificate current
W-9 verification pending
Reviewer notes Good for local state

This is the cleanest replacement for a lightweight accordion when you do not need coordinated multi-panel state or more custom animation logic.

Review Native Dialog

This surface is <dialog> with package styling, not the helper modal.

Use this path when you want the browser to own modal semantics. The page supplies only a tiny opener and lets the dialog itself handle focus scope, backdrop, and closing via method="dialog" buttons.

The same surface styling can be reused for quick-create, approval confirmation, or record-preview dialogs.

Review Drawer

This uses the same native dialog element, but styled as a right-side sheet.

Record
AP-2026-00142
Status
Needs Review