diff --git a/bun.lock b/bun.lock index 80579254..e3092177 100644 --- a/bun.lock +++ b/bun.lock @@ -237,7 +237,7 @@ }, "packages/auth": { "name": "@wrnexus/auth", - "version": "0.8.32", + "version": "0.8.33", "dependencies": { "@wrnexus/authz": "workspace:*", "@wrnexus/captcha": "workspace:*", @@ -322,7 +322,7 @@ }, "packages/cli": { "name": "@wrnexus/cli", - "version": "0.8.70", + "version": "0.8.71", "bin": { "wrnexus": "src/index.ts", }, @@ -350,7 +350,7 @@ }, "packages/compiler": { "name": "@wrnexus/compiler", - "version": "0.8.29", + "version": "0.8.30", "dependencies": { "@wrnexus/csr": "workspace:*", "@wrnexus/store": "workspace:*", @@ -368,11 +368,11 @@ }, "packages/core": { "name": "@wrnexus/core", - "version": "0.8.15", + "version": "0.8.16", }, "packages/csr": { "name": "@wrnexus/csr", - "version": "0.8.40", + "version": "0.8.41", "dependencies": { "@wrnexus/core": "workspace:*", }, @@ -387,7 +387,7 @@ }, "packages/dev-server": { "name": "@wrnexus/dev-server", - "version": "0.8.65", + "version": "0.8.66", "dependencies": { "@wrnexus/authz": "workspace:*", "@wrnexus/cache": "workspace:*", @@ -590,7 +590,7 @@ }, "packages/payment": { "name": "@wrnexus/payment", - "version": "0.8.8", + "version": "0.8.9", "dependencies": { "@wrnexus/db": "workspace:*", "@wrnexus/plugin": "workspace:*", @@ -621,7 +621,7 @@ }, "packages/pwa": { "name": "@wrnexus/pwa", - "version": "0.8.11", + "version": "0.8.12", "devDependencies": { "@types/bun": "^1.3.14", "typescript": "^6.0.3", @@ -704,7 +704,7 @@ }, "packages/ssr": { "name": "@wrnexus/ssr", - "version": "0.8.11", + "version": "0.8.12", "dependencies": { "@wrnexus/core": "workspace:*", "@wrnexus/security": "workspace:*", @@ -717,7 +717,7 @@ }, "packages/styles": { "name": "@wrnexus/styles", - "version": "0.8.22", + "version": "0.8.23", "dependencies": { "@wrnexus/core": "workspace:*", "@wrnexus/plugin": "workspace:*", @@ -730,7 +730,7 @@ }, "packages/test": { "name": "@wrnexus/test", - "version": "0.8.15", + "version": "0.8.16", "dependencies": { "@wrnexus/core": "workspace:*", }, @@ -749,7 +749,7 @@ }, "packages/ui": { "name": "@wrnexus/ui", - "version": "0.8.82", + "version": "0.8.84", "dependencies": { "@wrnexus/core": "workspace:*", }, @@ -784,7 +784,7 @@ }, "packages/viewer": { "name": "@wrnexus/viewer", - "version": "0.8.12", + "version": "0.8.13", "dependencies": { "@wrnexus/block-editor": "workspace:*", "@wrnexus/plugin": "workspace:*", diff --git a/docs/ui-component-audit.md b/docs/ui-component-audit.md new file mode 100644 index 00000000..9bf17a30 --- /dev/null +++ b/docs/ui-component-audit.md @@ -0,0 +1,58 @@ +# Component showcase audit + +Reviewed all 102 component routes for loading, empty examples, and desktop page overflow. This is a route and rendering audit, not exhaustive testing of every prop combination. + +Corrections include: + +- Corrected the showcase's Tailwind source paths so package-owned icons are generated. +- Reduced advanced select and PIN input sizing and corrected search icon padding. +- Restored grouped combobox options and verified selection. +- Defaulted ToggleCount to its first valid choice and supplied meaningful monthly/yearly examples. +- Made the password leading icon optional without reserving empty space. +- Added populated accordion examples with plain, bordered, and separated layouts, plus start/end indicators. +- Corrected badge examples and theme-aware soft/outline colors. +- Normalized structured playground defaults, including tables and time pickers. +- Preserved server-rendered composite previews during hydration and subsequent playground updates. +- Supplied splitter pane content and made output observation compatible with both runtime registry forms. + +Validation includes component/showcase tests, compiler and accessibility checks for 201 example pages, production showcase build, browser interaction checks, and responsive checks. Visual-contract checks compare source hashes, not screenshots. + +## Follow-up review: component surfaces and playground + +Reviewed all 102 sidebar routes in order, inspecting the rendered examples for missing icon masks, empty content, and horizontal overflow. This is a structural pass, not exhaustive testing of every prop combination. Manually checked the reported accordion, alert, avatar group, button group, card, and carousel surfaces, plus numeric playground interaction and prop updates. + +- Playground input/change refreshes are restricted to the settings form. Interacting with the component no longer replaces its state. A regression test checks both paths. +- Sidebar active state refreshes on client navigation and scrolls the active entry into view without scrolling the page. +- Accordion answers align with trailing indicators, and separate panels no longer get a second outer border. +- Alerts use concise examples with zero or one action and theme-aware text colors. +- Avatar groups have named members and role details for hover/focus; overflow counts stay on one line. +- Button groups include their own button foundation and correctly update selected state. +- Cards no longer receive generic group arrays by default; group content has padding and responsive columns. +- Carousel supports `framed=false` by default and `framed=true` explicitly. Unframed removes the outer surface as well as the viewport border. Image captions have a contrast overlay. +- Preview grid children can shrink within their panels; password popovers and breadcrumbs respect their container width. + +Validation: 243 UI/showcase tests passed; 201 example pages passed compiler, accessibility, and formatter checks. Browser interaction checks cover numeric value persistence, settings regeneration, accordion expansion, button selection, carousel next-slide, and avatar focus details. Integrations that need external providers and every optional prop permutation are not covered by these checks. + +Phone-width review: all 102 pages fit the viewport at 390px. Fixed inner overflow in password requirements and pagination. Verified light/dark stylesheet switching and saved appearance preferences; added a regression for switching before the theme runtime loads. + + +## Catalog and interaction update + +The catalog now separates 84 primitive components, 14 blocks, and six standalone examples. `/preview` and `/templates` link to working pages with copyable source; the legacy design-system routes and four requested shell components are removed from the showcase. Package exports remain compatible. + +Rebuilt Rating, StyledIcon, ListGroup, DragAndDrop, DataMap and the basic rich-text editor. Map demonstrates an image-backed office plan with markers and zoom; it is not a geographic tile service. DataMap is an activity heatmap. These examples require no third-party provider. + +Fixed anchored calendar/time overlays, datetime selection, controlled modal rendering, table page-size selection, optional clipboard labels, input icon placement, slider alignment and stateful stepper navigation. Existing keyed rows stay attached when notifications are appended, avoiding animation restarts. Added image and headerless card examples and meaningful chat, tree, chart and upload data. + +Validation: 380 UI, showcase and CSR tests pass; 211 example pages pass compiler/accessibility/formatter checks; the showcase production build succeeds. Browser checks confirm external modal open/close, anchored calendar, rating selection, list reordering/editor input, right-click menu, table size 25 with matching selected item, gallery routes and sidebar active state. These checks do not cover every optional configuration or external provider integration. + + +## Follow-up: controls and gallery separation + +Added fractional Rating and RangeSlider examples, named Card header/footer slots with visibility controls, custom TimePicker within DatePicker, calendar completion/outside dismissal, implicit switch label association, native search-clear suppression, multi-file names, interactive LegendIndicator, bar/line Chart data props and expanded rich-text formatting. Centered modals use data-modal-close for custom dismissal buttons. Confetti now uses a canvas particle burst with reduced-motion handling. + +Map defaults to an OpenStreetMap geographic embed; Google Maps supports an Embed API key, query, coordinates, zoom and map type. The showcase allows only the two provider iframe origins. Google rendering still requires a user-supplied provider key. + +Examples and Blocks now use a gallery layout without a documentation sidebar. Templates provide four distinct product starting pages: dashboard, commerce, marketing and productivity. Removed the legacy v0.6 sidebar group, placed Advanced Forms after Tables, and added practical code to installation/customization/accessibility guides. Playground code initializes from the actual controls and array props use state bindings. + +Browser checks include calendar Done, nested custom time updates, switch label toggling, centered modal dismissal, loaded geographic map tiles, and visible canvas confetti. Production preview avoids development refresh resets during review. diff --git a/docs/ui-design-refresh.md b/docs/ui-design-refresh.md new file mode 100644 index 00000000..54f84d10 --- /dev/null +++ b/docs/ui-design-refresh.md @@ -0,0 +1,47 @@ +# Compact application design + +The UI package now uses a quiet neutral canvas, compact application headings, +consistent controls, and layered charcoal surfaces in dark mode. Marketing +display typography remains available through Hero and MarketingSectionHeader. + +## Shared defaults + +- Control heights: 32px small, 40px default, 44px large; larger targets on coarse pointers. +- Corners: 6px controls, 10px panels, 12px dialogs. +- Flat cards and metric panels, with elevation reserved for overlays and explicit variants. +- No global entry animation or automatic hover lift on every button and linked article. +- PageHeader and SectionHeader use application-scale headings. +- DatePicker aligns days to weekdays, respects month length and date bounds, and supports arrow keys and Escape. + +Configure `radius-sm`, `radius-md`, `radius-lg`, `control-height-sm`, +`control-height`, `control-height-lg`, `space-panel`, and the existing semantic +color/shadow tokens through `theme.themes`. Geometry and elevation are no longer +overwritten by a second global token declaration in the generated stylesheet. +Existing names, slots, and events remain available. MetricCard's default hover +is now `none`; use `hover="lift"` to retain the explicit elevated treatment. + +## Review pages + +Run the component showcase and open: + +- `/design-system`: composed workspace overview and invitation dialog. +- `/design-system/profile`: profile form and preferences. +- `/design-system/login`: quiet split sign-in layout. +- `/components/date-picker`: calendar variants and controls. + +The preview uses sample data and never sends invitations or sign-in requests. +Light and dark buttons use the native theme stylesheet switcher. The showcase +generator preserves the navigation link; these three authored pages are not +generated or overwritten by it. + +## Adopting the refresh + +Consumers receive the shared component styles and theme defaults when they adopt +the updated packages. Review application overrides for large headings, nested +cards, generous gaps, and hard-coded colors. The example showcase, CRM, and basic +application styles have been adjusted here. The deployed Account application's +page source is outside this repository and still needs its own layout migration. + +Validate light/dark, narrow viewports, keyboard interaction, long text, and custom +theme overrides before refreshing the visual-contract baseline. That contract +is a file-hash check, not screenshot comparison. diff --git a/docs/ui-visual-contract-0.8.json b/docs/ui-visual-contract-0.8.json index 51d40dd0..5f9d06b1 100644 --- a/docs/ui-visual-contract-0.8.json +++ b/docs/ui-visual-contract-0.8.json @@ -2,109 +2,109 @@ "schemaVersion": 1, "releaseLine": "0.8", "artifacts": { - "packages/ui/components/Accordion.wrn": "09251f76a2f9385e97eb67e06c0cf868e1771ac5f420647221bec5160287034b", - "packages/ui/components/AdvancedSelect.wrn": "6dff7bf66a141e9d06e82d638bec3646ac5a0601f5a2145fabf281a1363edc36", + "packages/ui/components/Accordion.wrn": "f3480c567498f9a26a3441f4e96f47034b80422062fe8484b9957286f4a2fec1", + "packages/ui/components/AdvancedSelect.wrn": "ab75393f1f21654da43004267cd039e51a92aac0dd8bdf7a970f8b7830159ce9", "packages/ui/components/AnnouncementBar.wrn": "ecf85f5a050ef1afa193d85aa6acdb31638e48191594ddcc4f51cad4a77935dd", "packages/ui/components/AuthForm.wrn": "9e65faa7780d75abae2f1fe4a2333f4134840bca6c66b7411979d770f9050bc2", - "packages/ui/components/AuthSplitLayout.wrn": "724938921bc38cc5a0422de69c237b630f099f2df94c66977362b048e4a420a5", - "packages/ui/components/AvatarGroup.wrn": "30b702e06a1adff8b9bae32820206020e086a69560cbdcbadb19f04f25951f97", + "packages/ui/components/AuthSplitLayout.wrn": "f29a8f374007b7342d6946d7c57e631abb9730f4d952942606b9b1cf67612c38", + "packages/ui/components/AvatarGroup.wrn": "96a3ac42b72854449a89fcb87e62c616f78315d630ed9fa5da1e61db4c2a13ce", "packages/ui/components/BackToTop.wrn": "d4b8d1fd37ff26c89b4276ce54ce6ac9581dc2ff8bbcbe160e072778bba76eab", "packages/ui/components/Blockquote.wrn": "bc1ce41a5986a563072639e7f641d55b47816a8ec615169fe329c7a3ee24a16e", - "packages/ui/components/Breadcrumb.wrn": "16907a6fe84740be2a17de7514237e8250f2cad40c09605c77a45fa53fdf3f63", - "packages/ui/components/ButtonGroup.wrn": "fc23565ad56bd8483fcb777d9e02ccba2f9ea476c085754d42503bb83b718f72", + "packages/ui/components/Breadcrumb.wrn": "2f1a48a0b3fe1d5e8c36ee5929a034cb6ed4c4f6fb7031085829f20c4aac008e", + "packages/ui/components/ButtonGroup.wrn": "b841e02296f90e86ffea6573a6f3824d04b51cc8e5e822c7a29fcc0661e6fca2", "packages/ui/components/CTASection.wrn": "f6872b980432d5ee9d88388250be9838ccce51bd706349b283ef472ee692b237", - "packages/ui/components/Card.wrn": "be8cd6a438d1ede4c284a302b76f0fbc235a2423b83a7ced21131763fecc8a90", - "packages/ui/components/Carousel.wrn": "e7d921f802aa19210f3f415b59b70750a2c8d78e30684ad334809741c70a6bf9", - "packages/ui/components/Chart.wrn": "07bc01247b5a1c2b82c2ba8386b7fcdbf480efead75d52b7da04d471072c7ee4", + "packages/ui/components/Card.wrn": "08849755d68b067e8b14275d97a65cd93a74932ca1c8f0daa4e042cdf049e471", + "packages/ui/components/Carousel.wrn": "f3f2d70709fb25185ac6546ea5b6d394362bd2e0623e1462c439fba9a25e5f37", + "packages/ui/components/Chart.wrn": "80ef5b8e0e79ad494b3d21aedf36e01bffe9a50e4f43c0bd5af083efc11a5cab", "packages/ui/components/ChatBubble.wrn": "d71f7d6567d76ac0eb3ecc8e2e567fec12bb3236ea05f4d0a72286abc0b7cbb1", - "packages/ui/components/Clipboard.wrn": "76bf670f985e6b92a1b9cda746039cff407e6137e27f68fd1d43c5ff16134f22", + "packages/ui/components/Clipboard.wrn": "3de4c3d6e94472651fe241ae20f0e37f2cd6d82b3bbae86ba155d8a3ba1b955e", "packages/ui/components/Collapse.wrn": "26df087a61c82f1aa1749785f4c9be654c4f934859c1a47acfcb8cc67eecc75d", - "packages/ui/components/ColorPicker.wrn": "ccac7eb49c0f443b404004f1298fa905fde45c52b51466194920939c920348c9", + "packages/ui/components/ColorPicker.wrn": "bc55991a3d98d2018a0c9c125f399d519a7240d7a3c769460500b70ca7f6bf3a", "packages/ui/components/Columns.wrn": "8ccd9e53f6799b09f8b996740d12e4e73ee782f6fd3e57595c6c16f788b9b812", - "packages/ui/components/Combobox.wrn": "58488dbb60e41dacbf223afdb4a05abdbec53b7f54cd79a0db659add7057b1c1", - "packages/ui/components/Confetti.wrn": "0e81426a3ee8aff672385a5466cf96085c25ba17677a2fef432bcddf13f4d58e", + "packages/ui/components/Combobox.wrn": "e6f2ecf84213e3c4343154a3d1b7a9bc46ec5121855cb9fe65b105edd73c261d", + "packages/ui/components/Confetti.wrn": "0d3c36e77ac49f23bc02bfc8f338a034348c174e25bbc6a34f70310ccabee7b9", "packages/ui/components/Container.wrn": "61c895a9cc0e02d314392e94226bddfae2b8fad074e30a68ba935e6ec9549ea6", - "packages/ui/components/ContextMenu.wrn": "1b078b9ac20ce2561167b0e14cec1fc26704c251d7a25021b45e51e1b980946e", + "packages/ui/components/ContextMenu.wrn": "0c505787136a608097ba996b0c5e1be45b20be136a00611ec720a5d2c728c91c", "packages/ui/components/CustomScrollbar.wrn": "2a3a2719580c21823d079c92ebb000c7a5a7d9d16e3fa9275b8fb7d4449cb437", - "packages/ui/components/DataMap.wrn": "338f0d0a3307289dd0387b7fe7ba631fa0b65b6be8c7b9ee3feb2203306f76a3", - "packages/ui/components/DataTable.wrn": "e929fdb4e59613878a03fb6a11e09c42f773c06ca7b20e43ae16a266835f2af4", - "packages/ui/components/DatePicker.wrn": "cefbbb2abb57ad4c57864a0c65589592a20f9ea1695f9fc7693c3135dd82e71a", + "packages/ui/components/DataMap.wrn": "cb6da3ab064ea62ef14a30af42344ca1bb1dd816fec7aea520cbe47133f539ff", + "packages/ui/components/DataTable.wrn": "eceac58d7f007066108016cbc196faf381d5a84e4f5f23d2feda217182996248", + "packages/ui/components/DatePicker.wrn": "07b2685e311eb8211f81a99a28553783d19b1cd99e4cec591fe4f4953ac3fe6b", "packages/ui/components/DeviceFrame.wrn": "c38d25419ee44b05d7c443cc4e854aeeb7a53a9289e374d71834de2dd2e4d979", - "packages/ui/components/Divider.wrn": "bfa36cf16ccd48c996bb0b08a438f1b281ea1811049ed69fc7680925b1eba019", - "packages/ui/components/DragAndDrop.wrn": "84305f07d43cdb9eff1f63c19458d88b0aec013424d05a49a2cafbecedc60513", - "packages/ui/components/Drawer.wrn": "8e65742cda766cbac995798a2a44c21d91d35d2e871d7cee5028e3372406c0b2", - "packages/ui/components/Dropdown.wrn": "39842607c9769bb75bb9f027ce16cb9cdbd3b108dfe11f81025b54d54558946e", + "packages/ui/components/Divider.wrn": "f806d899bfd2d0b6e40aa226919101002704ddbddf0ee0b5b6a56c2452693660", + "packages/ui/components/DragAndDrop.wrn": "86382288ca2bccd8aa853490186fcf3b07e7850587fd0fe5829fd40590b82cc3", + "packages/ui/components/Drawer.wrn": "d11c11631b5a6779df1db987dd2da9125202237e5f378d6645dd260809f80cb6", + "packages/ui/components/Dropdown.wrn": "4649fa306fe4cd6ced3a8a3b7d46e2d835d7cae0335ee8fce0632ff87fc548c9", "packages/ui/components/FeatureCard.wrn": "39d89caab070b2b9ecb554ec6d83aad90aeb5b0daa8ab7c8b2f3c7f9e3350077", "packages/ui/components/FeatureGrid.wrn": "af2ff8f8c806091cb5cff3d93c7b121b73a6580ac5c9be3ab357355a09084096", "packages/ui/components/FeatureIconCard.wrn": "5f65d64235babc3e653a5695204412202015e6f3ffadca566fc18c7f9ce70428", - "packages/ui/components/FileInput.wrn": "611047c362458a4e2513b741cc3ef43fbe54c10ddafc13775e4ff39c9de34931", - "packages/ui/components/FileUploadProgress.wrn": "ba00557afebf60e6221385d6efcf08635789328deee6e551fc53fbb71e1f413b", + "packages/ui/components/FileInput.wrn": "3071a9231ce3c42555a30ad246841bc5d3a00b2a5475b403ecd5b33130ebadf5", + "packages/ui/components/FileUploadProgress.wrn": "645b0c4ce031fdbd70e8534d95d1b8d46fff9f67f5d90d2a7c125a6c656b3584", "packages/ui/components/Footer.wrn": "4df610f3f57950b43738c305e8100464326e094140013673d723f3454297f1da", "packages/ui/components/Grid.wrn": "83d4f5f2656d539538723f5791ba3c238901432e9d8c55c74f068d3eb5a74517", "packages/ui/components/Hero.wrn": "d0311f566a1ffdfb97a8b05c58bce738e3147fe5a3208cb2ef6968e6e178e8d1", "packages/ui/components/HeroActions.wrn": "67cd31400ccb6abdbbf16219267dee946b44b064b79f25276d20ceb7d6e8a790", "packages/ui/components/Image.wrn": "361179c478d7674c3b998891a366d73de9514fc6cc8786440c6c50b9ef065357", - "packages/ui/components/InputGroup.wrn": "9e259d15207500d07ff626f09c2e2f5eaf4e471f805a7bdbec154b1a23ce0f8d", + "packages/ui/components/InputGroup.wrn": "a0f570a350b32ffbe9bbeb81a32afab2966ccc5232b3affed4cba2f2a1e7b05e", "packages/ui/components/InputNumber.wrn": "069195cc483f3f7d6f305d03fbe5a821906a030376fafb6f0d969e4c95b68fd0", "packages/ui/components/Kbd.wrn": "6b402cb93f0fa76bb978d1ba483215f70ec7214b1c5e84b568fa3e26e87ed9d9", "packages/ui/components/LayoutSplitter.wrn": "41d070e801a271552023e4392e4c0f67327c61e2e8eaee5f8b87af254b1d79c1", - "packages/ui/components/LegendIndicator.wrn": "b2b75a2a5edc20a326c2047d4c81b9cd3f319292a1eec5f4abd5cbafc0677d71", + "packages/ui/components/LegendIndicator.wrn": "b01886495cd54be2c3e8ffbe99cfd5d12b4e0e35f5e4134041d45f4ed6057ff8", "packages/ui/components/Link.wrn": "13f9d6b403440f4b3c3a9ce4dbefa0d5570eb30ff93f498e49f18baab3e08c1d", "packages/ui/components/List.wrn": "5bd7d0b12b2f7dbf730db4030c6e20c6617b0933c1341428bbd6bcdab9ab6073", - "packages/ui/components/ListGroup.wrn": "eb7eca762101ea873fd6fa2f12f427580130fba3b21c0448a551b0452997dc92", - "packages/ui/components/Map.wrn": "3e6d5de5a21dd050c5c65950d6fb2f89af4024e1856a48f055b65b88fcd7b890", + "packages/ui/components/ListGroup.wrn": "dd52c1f564b8ef3293269b3aab15b72ca737c8ce9866d0070574ca5469aae82d", + "packages/ui/components/Map.wrn": "f09651baad892640a8d822c7f13541311b3de7f6259252bfacf937580fab3a44", "packages/ui/components/MarketingSectionHeader.wrn": "39b79499b77dc1c7d34e4e5ecb45a9ddc6182f78c2a2586671c4fa07f44679ad", "packages/ui/components/Marquee.wrn": "81cd80732be34c8d7e4bf28b00347e1a9273166afdf66589d9f5d5774b69403b", "packages/ui/components/MegaMenu.wrn": "3f37ee6b7c0d14bf550e8c828f1902be86969969354307efe5b61c1d727ce942", - "packages/ui/components/MetricCard.wrn": "513a6e99be3d9db46d96af9942b51331a0a048b184603e77e814506f0a52bdc5", + "packages/ui/components/MetricCard.wrn": "f195a9413591000f0ce9265f58cb45ae7a67ac08134213cfae7ffe75d53bab6a", "packages/ui/components/MetricGrid.wrn": "1fcebf51dcbe8520fe16bda904c1ef206c25c3900438d53877492c64ea21a1a5", - "packages/ui/components/Modal.wrn": "7fa4b877772736f29f690e24d8742922b310397ef3083f0b78acb67a9f0d14b2", + "packages/ui/components/Modal.wrn": "ddd560010581fb63f6dd8f51ddde9e8e7a5adb781b743c06eae28ac557f662d3", "packages/ui/components/Nav.wrn": "c45b0ecb42250f4b3ede33c8932a025f789dda9ef48dbf332459ae458163e69a", - "packages/ui/components/Navbar.wrn": "f5fe0978d7bae885a8cf8cd27c9dbaf3804d338f675395bd6567926c110fc32a", - "packages/ui/components/PageHeader.wrn": "29a93cdca7285548b79ebe5b6421eef6dbb4d5ae8be2508fa2d681e1068ba07f", - "packages/ui/components/Pagination.wrn": "d54226705d4556f76ee5f0d6ae82d101ca6d006397756d547a9aa5954415ba39", - "packages/ui/components/PinInput.wrn": "4dc398456f6392d7925db941debb484c7cb0358ecef527f696fe5ec4800a7602", - "packages/ui/components/Popover.wrn": "1246b99b4236bc7109a5d1427d013bb07bbea7a2da4f821517d2545ee0b5c019", - "packages/ui/components/PortalDashboard.wrn": "f04171eb1f8cabef06de3c20e4694b766def3407e1e20d2c9aaebc9bb7da03ee", - "packages/ui/components/PreferenceSwitcher.wrn": "519cf911390f529fff3fd16e11fb58e79d618fe851902202dc37552ee1182395", + "packages/ui/components/Navbar.wrn": "c9c1290954b1953fd7812d86bc261f4244f1e88eff5d2ebdf0b4a6fcd55df6d9", + "packages/ui/components/PageHeader.wrn": "a3e2c59041b9fdbf67188e2f3ea602aec487f22c14c7ca96c3d2b00d17a0725e", + "packages/ui/components/Pagination.wrn": "0049cc61f65f0db934cfc2d255656294b6188f29133f8ca0b716332a92595a5d", + "packages/ui/components/PinInput.wrn": "9b5112e6dbe1e16448b2a4f87d9f088519779779c9d0ec2bdd34e1e56be7faba", + "packages/ui/components/Popover.wrn": "322b6056633fb4f2211d2a67896cb12ae30b0b9f1ff582f6e520fa7ab6fabc86", + "packages/ui/components/PortalDashboard.wrn": "dea35ce15889fb673adbd965f11838e83dc937b13e57b00bc0af0c3a5a8ff5c7", + "packages/ui/components/PreferenceSwitcher.wrn": "6869b8b2efdbf42d9ec7bc79bd7cdce5997e5623c9aeddb01221f7fe1d2d1c98", "packages/ui/components/PublicPageShell.wrn": "3d3f25c03d48f3d3d7e3c567e79cb137c7fce1867e054fd6d440fa1d2e961077", - "packages/ui/components/RangeSlider.wrn": "e8ab41782c9d6e58638f0bfccf6e3172af4ebf552189d2199cc6c96bd1652067", - "packages/ui/components/Rating.wrn": "902b55c64e3798f3097f09b1558d1a2372f66d4f760662de085783108ee04587", + "packages/ui/components/RangeSlider.wrn": "37868f30ef15401d4ba6cca3f54d54ebac71c7bd20728d4bd95f80e844ee607c", + "packages/ui/components/Rating.wrn": "fbcc5b9c67ded0e3dc70cb0ab645046b02e27f17f006ded09558e28af6f24c81", "packages/ui/components/Scrollspy.wrn": "4b452fcbd524feda9c9f2c81894ee01747a51888e3b86fafb37c5d4d192a3a51", - "packages/ui/components/SearchBox.wrn": "3f88340e0b69c0cd552023c72bd22dc511bc00422d46060097bcf0777e683675", + "packages/ui/components/SearchBox.wrn": "90f58b7375bae2cf14e31d2c48a8c451f891a823f616c1f01075aca0762543ee", "packages/ui/components/Section.wrn": "78da13eb8bc1acafe8e6151cbaeed4baaac2ab860e3209f1d13c467f279d2e68", - "packages/ui/components/SectionHeader.wrn": "aca2df8eb35806096f5b9af466b018e5c22a19422e8665f488380da577a0ceb5", + "packages/ui/components/SectionHeader.wrn": "428c0c313c562987a4022671246b942d722dd2520b6cadd6f1a7644c7b56d4ee", "packages/ui/components/Sidebar.wrn": "ee817a9a46b4d6ab5fea4ebef6d4b28b3ea4599eb7f5b0cc81aa4be1769af792", "packages/ui/components/SplitHero.wrn": "7127cb869d1228522d066e028818dd9e512de8b6dd8f99e3dec500e6da5a3cb0", "packages/ui/components/StatsBar.wrn": "d4922c94962a957f428fa0e61743a76706ce38698fbf638d065c7fadde0eabe7", - "packages/ui/components/Stepper.wrn": "7ec0902acd7cb74b44d490215b6421dae9a41731735ad1e9aec17e8bfc3fa142", - "packages/ui/components/StrongPassword.wrn": "82fa3ea0711476e28e349faa35f21567b798c8bccdb4a8d5bbb5610081deab8d", - "packages/ui/components/StyledIcon.wrn": "0874f9a234b053a7c8b9c6983be5d664453a64c4576dff1a049101e249a2866d", + "packages/ui/components/Stepper.wrn": "07d9a90681b9415696603e06e8cf2aac2692f42fd5744d5655482a6092a5536b", + "packages/ui/components/StrongPassword.wrn": "9a2d59169ceed5af09e48412f4b50cf36e66a889317b8e15f01744cc47a8b69f", + "packages/ui/components/StyledIcon.wrn": "ca620463eecbf61d5465ca43513b29d7e175bdc784a3debc2f5b1a8d076fd2fa", "packages/ui/components/Tabs.wrn": "2ca14d0a87cff3066334f1295fd066a787b84b5667962c1d22fb879b4a68cea6", "packages/ui/components/TextLink.wrn": "9d561631c5f65a2bcdc59f5c0b166a5dd794a396f42093f2cd26388386f6f954", - "packages/ui/components/TimePicker.wrn": "33bd7a7069b7abe858cf1617b5b950733b37a8d522469ed673cff00b4dfcad0e", + "packages/ui/components/TimePicker.wrn": "4b7985fa5cec727a02012763fc7ab8ffee1dee5e54aa512da5bfccde398811c9", "packages/ui/components/Timeline.wrn": "7a58a77b1addf2ebbb0eb5dad008bcb49696c4265456d388d1cea71492c76ca6", - "packages/ui/components/Toaster.wrn": "5e4c9b2c1bfd5675a81a32e57684b99393ac7fe45d8420c7409a4e95d47d080c", - "packages/ui/components/ToggleCount.wrn": "e577195ee05ddb43cceec47145f6b90c0149f2f17055733d58911fcd02de2c7f", - "packages/ui/components/TogglePassword.wrn": "26b235de07e3be718fa2aaf07d86558b130f3feaef6e16dbe5916f51766ec378", + "packages/ui/components/Toaster.wrn": "de36dad25b30944800ab42d52492f18cbe5eca90ba17e8f70eb25690942d2c60", + "packages/ui/components/ToggleCount.wrn": "8370443edb8e15734448e4fd92c0ec3a573980de0402a6adcd24d62567112c4a", + "packages/ui/components/TogglePassword.wrn": "3f75a93f607472e73b357fa41b63cd2240b6fd561d03cfd31f92c69944431546", "packages/ui/components/TreeView.wrn": "f54d8495730203b923629bcfb167d5ca41236af0101ea2723d33354413555b4b", "packages/ui/components/Typography.wrn": "9676af57f2a937b21f45512e0a290b5bee4a16267fbf404850297d29645d88b5", - "packages/ui/components/WysiwygEditor.wrn": "a858ebd4e6e2672463ba57d4d049176ca1cc98dac32ab3df3638d6a9cdcd0f2d", - "packages/ui/components/alert.wrn": "d42287e41b918b1e19962e9462ef203002eb5480acac984f115b711e9dbe663d", + "packages/ui/components/WysiwygEditor.wrn": "6ae997ff6f3835b2ff3e4e3f050bcaa040efddba08fca9dc6d6d2c8d3cf4737b", + "packages/ui/components/alert.wrn": "e14e5ca056e27d36816d6949c4c56fbdbe9a881adb15036d6c8749c40dc451dd", "packages/ui/components/avatar.wrn": "8bc705e459b13c7f063c57e1506ce540e50fa8ef9020ae85b6e8b6a3579fc5dc", - "packages/ui/components/badge.wrn": "0c6cd7725908152bc9f95f9094ecf8e9e57529e569957723e0ab3e32f264d159", - "packages/ui/components/button.wrn": "8c6752c9db9605cf94eacacb60d765c21dbf6ddb27ac98065fd3bb4516e32731", - "packages/ui/components/checkbox.wrn": "da735354b57f33946591e1bd018b521ff709bae1325e2317735824673188377a", - "packages/ui/components/input.wrn": "4fc021d2fe098de556cb8b40e8cc558985af1da198d4dd94cc96d6ac770c18f1", + "packages/ui/components/badge.wrn": "f29605b692601d12fb0a9df3ee62d16c35fb03cf6448e3fef4402a56766d6842", + "packages/ui/components/button.wrn": "70681183850d5ddc1c0c23c52382ee2d40544c7bd8f0afe9850323f4805bfa31", + "packages/ui/components/checkbox.wrn": "67d148bf0482a3161b0393fd7a1aa3a7789de1173272abcdbb650e3a4a1377c7", + "packages/ui/components/input.wrn": "a074338ed781e34e020ca5585e73ab6dd6f9cf3ad94bf2911088b38d2ba1dffb", "packages/ui/components/progress.wrn": "6307a90585197d7aab19a8710b2430f5d4ed27ce77e9b90b1414ea0eed876492", - "packages/ui/components/radio.wrn": "df8e562324b6d99f5a157b0971d63bd715daa0cf6189e7b0d4df04d6f0411388", - "packages/ui/components/select.wrn": "c2db58e3648fd7c2b8a741cda61cd38c25954aa386f9657fe96e619cc01f305d", + "packages/ui/components/radio.wrn": "deb3412256fdd66128943773bbd7b826c760968cdc51131417038699c35526f8", + "packages/ui/components/select.wrn": "499113d8ac4b6d090adc515cac27285ba9cdd8af7ea54f18f61b0086da76e8c0", "packages/ui/components/skeleton.wrn": "4fc5e0846eeefd7830c038e1789be995c4f9d833aa913ff079eb4863baa65648", "packages/ui/components/spinner.wrn": "2322645da7ef53f7c06035ff071d9a2f6ffe2901ff9338daed84037369367105", - "packages/ui/components/switch.wrn": "243f521431ffb644089df7f629bace0c07094638dfdd27e75b2017efa9cbba4f", - "packages/ui/components/textarea.wrn": "2effae62f64e99eb4a402abce457c3262107433504719e7ab1c2f5bc91e94fcc", + "packages/ui/components/switch.wrn": "471e1bfd99e535818787bb19e35db800d3e24db051417cea89c72b96694ac073", + "packages/ui/components/textarea.wrn": "5b2614cf2cb869897d29c359812af3e2b0d6fe278ee2bbf6d99a92521eeaddf2", "packages/ui/components/tooltip.wrn": "f3dfdfa5cd9661fe5e95ef3580eef4c7437c069726421370c2d7328fbe7d840d", - "packages/ui/styles/SelectStyles.wrn": "074fe0d67de4ef5e9f9cfe879beb72fd5c83352888687d3a1a4b7722c87af3ca", - "packages/ui/ui.css": "9ea591404e9cf675bbf1003e15e9fad00327094ff217dc20733f0fc87c0f4a62" + "packages/ui/styles/SelectStyles.wrn": "0d000c18419187de9ab5c8bf1b86db1912cd5a4d90591f0da0da3533e10b8baa", + "packages/ui/ui.css": "27c2709b6b3a07b4c9a8bef8c2464159a54798a4c76384abd0707135b79ef437" } } diff --git a/examples/basic-app/app/styles/global.css b/examples/basic-app/app/styles/global.css index b2cc1ac9..7821dc78 100644 --- a/examples/basic-app/app/styles/global.css +++ b/examples/basic-app/app/styles/global.css @@ -45,13 +45,7 @@ body { Roboto, sans-serif; color: var(--text); - /* Tinted from the primary token so the wash follows the theme too. */ - background: radial-gradient( - 1200px 600px at 50% -10%, - color-mix(in srgb, var(--wrn-color-primary) 18%, var(--bg)) 0%, - var(--bg) 60% - ); - background-color: var(--bg); + background: var(--bg); } #app { diff --git a/examples/component-showcase/app/layouts/gallery.wrn b/examples/component-showcase/app/layouts/gallery.wrn new file mode 100644 index 00000000..4a69aa4e --- /dev/null +++ b/examples/component-showcase/app/layouts/gallery.wrn @@ -0,0 +1,8 @@ +layout Gallery { + view { + + } +} diff --git a/examples/component-showcase/app/layouts/showcase.wrn b/examples/component-showcase/app/layouts/showcase.wrn index 6b42d494..c0db2c9c 100644 --- a/examples/component-showcase/app/layouts/showcase.wrn +++ b/examples/component-showcase/app/layouts/showcase.wrn @@ -9,7 +9,7 @@ layout Showcase {
- +
@@ -26,24 +26,19 @@ layout Showcase {
diff --git a/examples/component-showcase/app/pages/accessibility.wrn b/examples/component-showcase/app/pages/accessibility.wrn index da39f85b..a0cbb11c 100644 --- a/examples/component-showcase/app/pages/accessibility.wrn +++ b/examples/component-showcase/app/pages/accessibility.wrn @@ -9,6 +9,8 @@ page AccessibilityGuide {
Getting Started

Accessibility

Keyboard interaction, visible focus states, labels, and reduced-motion support ship by default.

Overview

Keyboard interaction, visible focus states, labels, and reduced-motion support ship by default.

Configuration

Use the design switcher in the header to test this setting live.

Component behavior

The setting is inherited by components, blocks, templates, and playground previews.

+

Label controls and explain errors

Give every control a visible label. Use helperText for instructions and error for actionable feedback. Test Tab, Shift+Tab, Enter and Escape; focus must remain visible and follow the reading order.

<Input label="Email address" type="email" name="email" required="true" helperText="Use your work email." error="Enter a valid email address." />
+<Button label="Save changes" disabled="true" />

Verify the result

Open the matching component page, change its options, and try the keyboard controls. Copy the demonstrated configuration into your page, then replace sample content with your data.

diff --git a/examples/component-showcase/app/pages/advanced-forms.wrn b/examples/component-showcase/app/pages/advanced-forms.wrn index 37aaf37f..1b6caa93 100644 --- a/examples/component-showcase/app/pages/advanced-forms.wrn +++ b/examples/component-showcase/app/pages/advanced-forms.wrn @@ -60,13 +60,13 @@ page AdvancedFormsShowcase {
Advanced Forms

Strong Password

Theme-aware, responsive strong password component.

- +
-
+
Advanced Forms

Toggle Count

Theme-aware, responsive toggle count component.

@@ -80,7 +80,7 @@ page AdvancedFormsShowcase {
Advanced Forms

Toggle Password

Accessible password field with optional show and hide controls.

- +
} diff --git a/examples/component-showcase/app/pages/base.wrn b/examples/component-showcase/app/pages/base.wrn index a0500a9d..46c41920 100644 --- a/examples/component-showcase/app/pages/base.wrn +++ b/examples/component-showcase/app/pages/base.wrn @@ -10,13 +10,13 @@ page BaseShowcase { Component category

Base

26 unique, responsive, theme-aware components. Open a component to inspect multiple live configurations and its complete props API.

-
26 componentsMultiple use cases83 live configurations
+
26 componentsMultiple use cases85 live configurations
-
+
Base

Accordion

Theme-aware, responsive accordion component.

@@ -26,7 +26,7 @@ page BaseShowcase {
-
+
Base

Alert

Theme-aware, responsive alert component.

@@ -36,7 +36,7 @@ page BaseShowcase {
-
+
Base

Avatar

Theme-aware, responsive avatar component.

@@ -46,7 +46,7 @@ page BaseShowcase {
-
+
Base

Avatar Group

Theme-aware, responsive avatar group component.

@@ -56,11 +56,11 @@ page BaseShowcase {
@@ -70,7 +70,7 @@ page BaseShowcase {
Base

Blockquote

Theme-aware, responsive blockquote component.

- +
@@ -80,13 +80,13 @@ page BaseShowcase {
Base

Button

Theme-aware, responsive button component.

- +
-
+
Base

Button Group

Theme-aware, responsive button group component.

@@ -96,27 +96,27 @@ page BaseShowcase {
-

Supporting content belongs inside the default slot.

+

Supporting content belongs inside the default slot.

Base

Card

Group related content in a responsive themed surface with title, description, content, and supporting slots.

- +
-
+
Base

Chat Bubble

Theme-aware, responsive chat bubble component.

@@ -136,7 +136,7 @@ page BaseShowcase {
-
+
Base

Date Picker

Theme-aware, responsive date picker component.

@@ -156,17 +156,17 @@ page BaseShowcase {
-
+
Base

Legend Indicator

Theme-aware, responsive legend indicator component.

@@ -186,11 +186,11 @@ page BaseShowcase {
@@ -216,11 +216,11 @@ page BaseShowcase {
@@ -246,27 +246,27 @@ page BaseShowcase {
-
+
Base

Tree View

Theme-aware, responsive tree view component.

diff --git a/examples/component-showcase/app/pages/block-library.wrn b/examples/component-showcase/app/pages/block-library.wrn index ac809850..4c74601a 100644 --- a/examples/component-showcase/app/pages/block-library.wrn +++ b/examples/component-showcase/app/pages/block-library.wrn @@ -1,11 +1,5 @@ page BlockLibrary { - layout = "showcase" - seo { title = "UI blocks" description = "Complete sections composed from WRNexus UI components." } - view { -
- -
Composable sections

Ready-to-use UI blocks

Complete responsive sections composed exclusively from the components in this library.

-
Application UI

Application shells

Headers, sidebars, content, and command areas.

View components →
Blog & Articles

Article layouts

Editorial headers, content, author, and sharing.

View components →
Application UI

Authentication

Sign in, registration, recovery, and verification.

View components →
-
- } + layout = "gallery" + seo { title = "UI blocks" } + view {
Composed sections

Ready-to-use blocks

Real sections with live previews and complete source code.

Announcement Bar

Publish a responsive notice with badge, icon, supporting copy, action, dismiss behavior, and width controls.

Open example →

CTASection

Close a page or major section with conversion-focused copy, actions, and optional supporting visual content.

Open example →

Feature Card

Present one linked feature or service with media, icon, badge, description, and action.

Open example →

Feature Grid

Arrange feature cards, services, solutions, or benefits in a responsive equal-height grid.

Open example →

Feature Icon Card

Present a compact feature or benefit with a styled icon, title, description, badge, and optional link.

Open example →

Footer

Render structured responsive footer navigation, pre and post content, copyright content, links, and public events.

Open example →

Hero

Build a full-width responsive hero with constrained content, actions, trust signals, and a structured or custom visual panel.

Open example →

Hero Actions

Group hero and campaign actions with consistent alignment, orientation, sizing, and responsive mobile stacking.

Open example →

Marketing Section Header

Introduce marketing content with an eyebrow, title, description, and optional linked action.

Open example →

Metric Grid

Arrange operational metrics, KPIs, public statistics, or service indicators in a responsive equal-height grid.

Open example →

Page Header

Introduce an internal or public page with breadcrumbs, icon, title, description, and primary or secondary actions.

Open example →

Section Header

Introduce a section with an eyebrow, title, description, alignment, and responsive heading hierarchy.

Open example →

Split Hero

Build a responsive two-column introduction balancing descriptive content with a visual, image, or structured data panel.

Open example →

Stats Bar

Present a compact responsive strip of key facts, counts, performance indicators, or trust signals.

Open example →
} } diff --git a/examples/component-showcase/app/pages/blocks/announcement-bar.wrn b/examples/component-showcase/app/pages/blocks/announcement-bar.wrn new file mode 100644 index 00000000..3ec9cb2c --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/announcement-bar.wrn @@ -0,0 +1,10 @@ +page AnnouncementBarBlock { + layout = "gallery" + + seo { title = "Announcement Bar block" } + view {
← All blocks

Announcement Bar

A ready-to-use section. Copy the complete example below.

Copy this example

page AnnouncementBarExample {
+  view {
+    <AnnouncementBar badge="Public notice" badgeIcon="icon-[lucide--sparkles]" message="All composite components are now available" description="Review each component and its recommended use cases." icon="icon-[lucide--megaphone]" actionLabel="View components" actionHref="#components" actionIcon="icon-[lucide--arrow-down]" dismissible="true" dismissLabel="Announcement Bar" sticky="false" compact="false" flush="false" mobileCompact="false" mobileMessageLines="2" hideBadgeOnMobile="false" hideDescriptionOnMobile="false" flushMobile="false" size="default" width="default" variant="soft" class="showcase-instance showcase-instance--1" />
+  }
+}
} +} \ No newline at end of file diff --git a/examples/component-showcase/app/pages/blocks/ctasection.wrn b/examples/component-showcase/app/pages/blocks/ctasection.wrn new file mode 100644 index 00000000..f846e519 --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/ctasection.wrn @@ -0,0 +1,20 @@ +page CTASectionBlock { + layout = "gallery" + + seo { title = "CTASection block" } + view {
← All blocks

CTASection

A ready-to-use section. Copy the complete example below.

+
+ + Composable visual panel +

Add a screenshot, product preview, media block, chart, form, or illustration.

+

Copy this example

page CTASectionExample {
+  view {
+    <CTASection eyebrow="Ready to continue" title="Build public pages with reusable components" description="Keep application pages focused on content and business data while the shared UI package owns presentation." icon="icon-[lucide--rocket]" align="split" size="default" variant="gradient" primaryLabel="Use these components" primaryHref="#components" primaryIcon="icon-[lucide--blocks]" secondaryLabel="Back to home" secondaryHref="/" secondaryIcon="icon-[lucide--house]" visualTitle="CTASection example" visualDescription="A polished default ctasection for a modern application." visualItems='[{"id":"ctasection-0-1","key":"ctasection-0-1","value":"primary","label":"Primary workflow","title":"Primary workflow","description":"A clean default configuration for everyday product interfaces.","text":"A configurable sample message.","href":"#ctasection-demo","actionHref":"#ctasection-demo","actionLabel":"View details","icon":"icon-[lucide--sparkles]","iconClass":"icon-[lucide--sparkles]","variant":"primary","status":"Active","time":"09:30","current":true,"selected":true,"checked":true,"disabled":false,"outgoing":false,"open":true,"number":1,"count":16,"percentage":72,"color":"#7c3aed","target":"_self","ariaLabel":"Open primary workflow 1","items":[{"label":"Nested option A","value":"nested-a"},{"label":"Nested option B","value":"nested-b"}],"links":[{"label":"Documentation","href":"#documentation"},{"label":"API reference","href":"#api-reference"}],"values":["Included","Standard"]},{"id":"ctasection-0-2","key":"ctasection-0-2","value":"secondary","label":"Additional option","title":"Supporting example","description":"A clean default configuration for everyday product interfaces.","text":"Another configurable message.","href":"#ctasection-demo","actionHref":"#ctasection-demo","actionLabel":"View details","icon":"icon-[lucide--sparkles]","iconClass":"icon-[lucide--sparkles]","variant":"primary","status":"Active","time":"09:30","current":false,"selected":false,"checked":false,"disabled":false,"outgoing":true,"open":true,"number":2,"count":32,"percentage":72,"color":"#7c3aed","target":"_self","ariaLabel":"Open primary workflow 2","items":[{"label":"Nested option A","value":"nested-a"},{"label":"Nested option B","value":"nested-b"}],"links":[{"label":"Documentation","href":"#documentation"},{"label":"API reference","href":"#api-reference"}],"values":["Included","Standard"]}]' maxWidth="full" fullBleed="false" class="showcase-instance showcase-instance--1"><div data-slot="visual">
+<div class="showcase-visual-panel">
+  <span class="icon-[lucide--layout-template] size-12" aria-hidden="true"></span>
+  <strong>Composable visual panel</strong>
+  <p>Add a screenshot, product preview, media block, chart, form, or illustration.</p>
+</div></div></CTASection>
+  }
+}
} +} \ No newline at end of file diff --git a/examples/component-showcase/app/pages/blocks/feature-card.wrn b/examples/component-showcase/app/pages/blocks/feature-card.wrn new file mode 100644 index 00000000..d00b831e --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/feature-card.wrn @@ -0,0 +1,10 @@ +page FeatureCardBlock { + layout = "gallery" + + seo { title = "Feature Card block" } + view {
← All blocks

Feature Card

A ready-to-use section. Copy the complete example below.

Copy this example

page FeatureCardExample {
+  view {
+    <FeatureCard icon="icon-[lucide--shield-check]" iconStyle="soft" eyebrow="Citizen support" title="Citizen services" description="Report incidents, request certificates, and find safety information." href="#citizen-services" external="false" actionLabel="Explore services" showArrow="true" stretchedLink="true" badge="Public" size="default" color="primary" variant="default" hover="lift" align="start" disabled="false" class="showcase-instance showcase-instance--1" />
+  }
+}
} +} \ No newline at end of file diff --git a/examples/component-showcase/app/pages/blocks/feature-grid.wrn b/examples/component-showcase/app/pages/blocks/feature-grid.wrn new file mode 100644 index 00000000..ceaee240 --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/feature-grid.wrn @@ -0,0 +1,10 @@ +page FeatureGridBlock { + layout = "gallery" + + seo { title = "Feature Grid block" } + view {
← All blocks

Feature Grid

A ready-to-use section. Copy the complete example below.

Copy this example

page FeatureGridExample {
+  view {
+    <FeatureGrid size="default" items='[{"icon":"icon-[lucide--shield-check]","eyebrow":"Citizen support","title":"Citizen services","description":"Report incidents, request certificates, and find safety information.","href":"#citizen-services","actionLabel":"Explore services","badge":"Public","color":"primary","variant":"default","hover":"lift"},{"icon":"icon-[lucide--map-pin]","eyebrow":"Directory","title":"Station directory","description":"Locate offices, jurisdictions, contacts, and public service hours.","href":"#station-directory","actionLabel":"Find a station","badge":"Directory","color":"info","variant":"soft","hover":"border"},{"icon":"icon-[lucide--radio-tower]","eyebrow":"Verified","title":"Public updates","description":"Publish official alerts, notices, advisories, and verified information.","href":"#public-updates","actionLabel":"View updates","badge":"Live","color":"success","variant":"gradient","hover":"glow"}]' columns="3" tabletColumns="2" mobileColumns="1" gap="lg" equalHeight="true" align="start" maxWidth="full" variant="default" label="Feature Grid" class="showcase-instance showcase-instance--1" />
+  }
+}
} +} \ No newline at end of file diff --git a/examples/component-showcase/app/pages/blocks/feature-icon-card.wrn b/examples/component-showcase/app/pages/blocks/feature-icon-card.wrn new file mode 100644 index 00000000..bb32272e --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/feature-icon-card.wrn @@ -0,0 +1,10 @@ +page FeatureIconCardBlock { + layout = "gallery" + + seo { title = "Feature Icon Card block" } + view {
← All blocks

Feature Icon Card

A ready-to-use section. Copy the complete example below.

Copy this example

page FeatureIconCardExample {
+  view {
+    <FeatureIconCard icon="icon-[lucide--shield-check]" title="Secure by design" description="Build with consistent validation, accessibility, and theme support." href="#security" actionLabel="Review security" badge="Core" size="default" variant="default" align="start" clickableSurface="false" descriptionTone="A polished default feature icon card for a modern application." class="showcase-instance showcase-instance--1" />
+  }
+}
} +} \ No newline at end of file diff --git a/examples/component-showcase/app/pages/blocks/footer.wrn b/examples/component-showcase/app/pages/blocks/footer.wrn new file mode 100644 index 00000000..7f4bf059 --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/footer.wrn @@ -0,0 +1,10 @@ +page FooterBlock { + layout = "gallery" + + seo { title = "Footer block" } + view {
← All blocks

Footer

A ready-to-use section. Copy the complete example below.

Copy this example

page FooterExample {
+  view {
+    <Footer size="default" label="Footer" items='[{"type":"header","label":"Product","description":"Build consistent interfaces with WRNexusJS.","items":[{"label":"Components","href":"/base"},{"label":"Themes","href":"/themes"},{"label":"Examples","href":"/blocks"}]},{"type":"header","label":"Developers","items":[{"label":"Documentation","href":"/docs"},{"label":"Installation","href":"/installation"},{"label":"Framework guides","href":"/framework-guides"}]},{"type":"header","label":"Resources","items":[{"label":"Accessibility","href":"/accessibility"},{"label":"Design tokens","href":"/colors"},{"label":"Typography","href":"/fonts"}]},{"type":"header","label":"Company","items":[{"label":"WorkRoot","href":"https://workroot.in","external":true},{"label":"WRNexusJS","href":"https://wrnexusjs.dev","external":true}]}]' columns="4" maxWidth="wide" mobileColumns="2" copyright="© 2026 WRNexusJS. All rights reserved." class="showcase-instance showcase-instance--1" />
+  }
+}
} +} \ No newline at end of file diff --git a/examples/component-showcase/app/pages/blocks/hero-actions.wrn b/examples/component-showcase/app/pages/blocks/hero-actions.wrn new file mode 100644 index 00000000..a21adc67 --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/hero-actions.wrn @@ -0,0 +1,10 @@ +page HeroActionsBlock { + layout = "gallery" + + seo { title = "Hero Actions block" } + view {
← All blocks

Hero Actions

A ready-to-use section. Copy the complete example below.

Copy this example

page HeroActionsExample {
+  view {
+    <HeroActions actions='[{"label":"Browse components","href":"#components","icon":"icon-[lucide--blocks]","variant":"primary"},{"label":"View metrics","href":"#metrics","icon":"icon-[lucide--chart-no-axes-column-increasing]","variant":"outline"}]' align="left" orientation="horizontal" stackOnMobile="true" fullWidthMobile="true" size="default" class="showcase-instance showcase-instance--1" />
+  }
+}
} +} \ No newline at end of file diff --git a/examples/component-showcase/app/pages/blocks/hero.wrn b/examples/component-showcase/app/pages/blocks/hero.wrn new file mode 100644 index 00000000..ae570de6 --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/hero.wrn @@ -0,0 +1,20 @@ +page HeroBlock { + layout = "gallery" + + seo { title = "Hero block" } + view {
← All blocks

Hero

A ready-to-use section. Copy the complete example below.

+
+ + Composable visual panel +

Add a screenshot, product preview, media block, chart, form, or illustration.

+

Copy this example

page HeroExample {
+  view {
+    <Hero eyebrow="Reusable public UI" eyebrowIcon="icon-[lucide--sparkles]" icon="" title="Build polished pages" highlight="with consistent hero layouts" description="Create strong first impressions for public portals, product pages, and service overviews." align="start" size="default" variant="gradient" layout="split" visualPosition="right" visualStyle="card" showDecorations="true" fullBleed="true" visualTitle="Hero example" visualDescription="A polished default hero for a modern application." visualItems='[{"id":"hero-0-1","key":"hero-0-1","value":"primary","label":"Primary workflow","title":"Primary workflow","description":"A clean default configuration for everyday product interfaces.","text":"A configurable sample message.","href":"#hero-demo","actionHref":"#hero-demo","actionLabel":"View details","icon":"icon-[lucide--sparkles]","iconClass":"icon-[lucide--sparkles]","variant":"primary","status":"Active","time":"09:30","current":true,"selected":true,"checked":true,"disabled":false,"outgoing":false,"open":true,"number":1,"count":16,"percentage":72,"color":"#7c3aed","target":"_self","ariaLabel":"Open primary workflow 1","items":[{"label":"Nested option A","value":"nested-a"},{"label":"Nested option B","value":"nested-b"}],"links":[{"label":"Documentation","href":"#documentation"},{"label":"API reference","href":"#api-reference"}],"values":["Included","Standard"]},{"id":"hero-0-2","key":"hero-0-2","value":"secondary","label":"Additional option","title":"Supporting example","description":"A clean default configuration for everyday product interfaces.","text":"Another configurable message.","href":"#hero-demo","actionHref":"#hero-demo","actionLabel":"View details","icon":"icon-[lucide--sparkles]","iconClass":"icon-[lucide--sparkles]","variant":"primary","status":"Active","time":"09:30","current":false,"selected":false,"checked":false,"disabled":false,"outgoing":true,"open":true,"number":2,"count":32,"percentage":72,"color":"#7c3aed","target":"_self","ariaLabel":"Open primary workflow 2","items":[{"label":"Nested option A","value":"nested-a"},{"label":"Nested option B","value":"nested-b"}],"links":[{"label":"Documentation","href":"#documentation"},{"label":"API reference","href":"#api-reference"}],"values":["Included","Standard"]}]' primaryLabel="Explore components" primaryHref="#components" primaryIcon="icon-[lucide--arrow-right]" secondaryLabel="Read documentation" secondaryHref="#docs" secondaryIcon="icon-[lucide--book-open]" tertiaryLabel="Hero" tertiaryHref="#hero-demo" badges='[{"id":"hero-0-1","key":"hero-0-1","value":"primary","label":"Primary workflow","title":"Primary workflow","description":"A clean default configuration for everyday product interfaces.","text":"A configurable sample message.","href":"#hero-demo","actionHref":"#hero-demo","actionLabel":"View details","icon":"icon-[lucide--sparkles]","iconClass":"icon-[lucide--sparkles]","variant":"primary","status":"Active","time":"09:30","current":true,"selected":true,"checked":true,"disabled":false,"outgoing":false,"open":true,"number":1,"count":16,"percentage":72,"color":"#7c3aed","target":"_self","ariaLabel":"Open primary workflow 1","items":[{"label":"Nested option A","value":"nested-a"},{"label":"Nested option B","value":"nested-b"}],"links":[{"label":"Documentation","href":"#documentation"},{"label":"API reference","href":"#api-reference"}],"values":["Included","Standard"]},{"id":"hero-0-2","key":"hero-0-2","value":"secondary","label":"Additional option","title":"Supporting example","description":"A clean default configuration for everyday product interfaces.","text":"Another configurable message.","href":"#hero-demo","actionHref":"#hero-demo","actionLabel":"View details","icon":"icon-[lucide--sparkles]","iconClass":"icon-[lucide--sparkles]","variant":"primary","status":"Active","time":"09:30","current":false,"selected":false,"checked":false,"disabled":false,"outgoing":true,"open":true,"number":2,"count":32,"percentage":72,"color":"#7c3aed","target":"_self","ariaLabel":"Open primary workflow 2","items":[{"label":"Nested option A","value":"nested-a"},{"label":"Nested option B","value":"nested-b"}],"links":[{"label":"Documentation","href":"#documentation"},{"label":"API reference","href":"#api-reference"}],"values":["Included","Standard"]}]' trustItems='[{"id":"hero-0-1","key":"hero-0-1","value":"primary","label":"Primary workflow","title":"Primary workflow","description":"A clean default configuration for everyday product interfaces.","text":"A configurable sample message.","href":"#hero-demo","actionHref":"#hero-demo","actionLabel":"View details","icon":"icon-[lucide--sparkles]","iconClass":"icon-[lucide--sparkles]","variant":"primary","status":"Active","time":"09:30","current":true,"selected":true,"checked":true,"disabled":false,"outgoing":false,"open":true,"number":1,"count":16,"percentage":72,"color":"#7c3aed","target":"_self","ariaLabel":"Open primary workflow 1","items":[{"label":"Nested option A","value":"nested-a"},{"label":"Nested option B","value":"nested-b"}],"links":[{"label":"Documentation","href":"#documentation"},{"label":"API reference","href":"#api-reference"}],"values":["Included","Standard"]},{"id":"hero-0-2","key":"hero-0-2","value":"secondary","label":"Additional option","title":"Supporting example","description":"A clean default configuration for everyday product interfaces.","text":"Another configurable message.","href":"#hero-demo","actionHref":"#hero-demo","actionLabel":"View details","icon":"icon-[lucide--sparkles]","iconClass":"icon-[lucide--sparkles]","variant":"primary","status":"Active","time":"09:30","current":false,"selected":false,"checked":false,"disabled":false,"outgoing":true,"open":true,"number":2,"count":32,"percentage":72,"color":"#7c3aed","target":"_self","ariaLabel":"Open primary workflow 2","items":[{"label":"Nested option A","value":"nested-a"},{"label":"Nested option B","value":"nested-b"}],"links":[{"label":"Documentation","href":"#documentation"},{"label":"API reference","href":"#api-reference"}],"values":["Included","Standard"]}]' maxWidth="wide" class="showcase-instance showcase-instance--1"><div data-slot="visual">
+<div class="showcase-visual-panel">
+  <span class="icon-[lucide--layout-template] size-12" aria-hidden="true"></span>
+  <strong>Composable visual panel</strong>
+  <p>Add a screenshot, product preview, media block, chart, form, or illustration.</p>
+</div></div></Hero>
+  }
+}
} +} \ No newline at end of file diff --git a/examples/component-showcase/app/pages/blocks/index.wrn b/examples/component-showcase/app/pages/blocks/index.wrn new file mode 100644 index 00000000..a3680db6 --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/index.wrn @@ -0,0 +1,5 @@ +page BlocksIndex { + layout = "gallery" + seo { title = "UI blocks" } + view {

Announcement Bar

Publish a responsive notice with badge, icon, supporting copy, action, dismiss behavior, and width controls.

Open example →

CTASection

Close a page or major section with conversion-focused copy, actions, and optional supporting visual content.

Open example →

Feature Card

Present one linked feature or service with media, icon, badge, description, and action.

Open example →

Feature Grid

Arrange feature cards, services, solutions, or benefits in a responsive equal-height grid.

Open example →

Feature Icon Card

Present a compact feature or benefit with a styled icon, title, description, badge, and optional link.

Open example →

Footer

Render structured responsive footer navigation, pre and post content, copyright content, links, and public events.

Open example →

Hero

Build a full-width responsive hero with constrained content, actions, trust signals, and a structured or custom visual panel.

Open example →

Hero Actions

Group hero and campaign actions with consistent alignment, orientation, sizing, and responsive mobile stacking.

Open example →

Marketing Section Header

Introduce marketing content with an eyebrow, title, description, and optional linked action.

Open example →

Metric Grid

Arrange operational metrics, KPIs, public statistics, or service indicators in a responsive equal-height grid.

Open example →

Page Header

Introduce an internal or public page with breadcrumbs, icon, title, description, and primary or secondary actions.

Open example →

Section Header

Introduce a section with an eyebrow, title, description, alignment, and responsive heading hierarchy.

Open example →

Split Hero

Build a responsive two-column introduction balancing descriptive content with a visual, image, or structured data panel.

Open example →

Stats Bar

Present a compact responsive strip of key facts, counts, performance indicators, or trust signals.

Open example →
} +} diff --git a/examples/component-showcase/app/pages/blocks/marketing-section-header.wrn b/examples/component-showcase/app/pages/blocks/marketing-section-header.wrn new file mode 100644 index 00000000..bb1d5162 --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/marketing-section-header.wrn @@ -0,0 +1,10 @@ +page MarketingSectionHeaderBlock { + layout = "gallery" + + seo { title = "Marketing Section Header block" } + view {
← All blocks

Marketing Section Header

A ready-to-use section. Copy the complete example below.

Copy this example

page MarketingSectionHeaderExample {
+  view {
+    <MarketingSectionHeader eyebrow="Platform capabilities" title="Build complete public experiences" description="Use reusable sections, cards, metrics, heroes, and CTAs." align="split" size="default" actionLabel="Explore components" actionHref="#components" actionIcon="icon-[lucide--arrow-right]" actionExternal="false" class="showcase-instance showcase-instance--1" />
+  }
+}
} +} \ No newline at end of file diff --git a/examples/component-showcase/app/pages/blocks/metric-grid.wrn b/examples/component-showcase/app/pages/blocks/metric-grid.wrn new file mode 100644 index 00000000..530430cf --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/metric-grid.wrn @@ -0,0 +1,10 @@ +page MetricGridBlock { + layout = "gallery" + + seo { title = "Metric Grid block" } + view {
← All blocks

Metric Grid

A ready-to-use section. Copy the complete example below.

Copy this example

page MetricGridExample {
+  view {
+    <MetricGrid items='[{"label":"Public services","value":"24","description":"Citizen-facing services available online.","icon":"icon-[lucide--hand-heart]","trend":"+4","trendLabel":"this release","trendDirection":"up","color":"primary"},{"label":"Police stations","value":"126","description":"Searchable station and jurisdiction entries.","icon":"icon-[lucide--landmark]","trend":"Updated","trendLabel":"today","color":"info"},{"label":"Availability","value":"99.9","suffix":"%","description":"Target service availability.","icon":"icon-[lucide--activity]","trend":"Stable","trendLabel":"30 days","trendDirection":"positive","color":"success"}]' columns="3" tabletColumns="2" mobileColumns="1" gap="lg" equalHeight="true" dividers="false" size="default" variant="default" maxWidth="full" class="showcase-instance showcase-instance--1" />
+  }
+}
} +} \ No newline at end of file diff --git a/examples/component-showcase/app/pages/blocks/page-header.wrn b/examples/component-showcase/app/pages/blocks/page-header.wrn new file mode 100644 index 00000000..74dbeb49 --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/page-header.wrn @@ -0,0 +1,10 @@ +page PageHeaderBlock { + layout = "gallery" + + seo { title = "Page Header block" } + view {
← All blocks

Page Header

A ready-to-use section. Copy the complete example below.

Copy this example

page PageHeaderExample {
+  view {
+    <PageHeader eyebrow="Component showcase" title="Page headers with clear hierarchy" description="Use PageHeader for services, directories, legal pages, guides, dashboards, and public information." icon="icon-[lucide--panel-top]" align="start" centered="false" compact="false" size="default" maxWidth="full" showBreadcrumbs="true" breadcrumbs='[{"label":"Home","href":"/","icon":"icon-[lucide--house]"},{"label":"Components","href":"/base"},{"label":"Page header","current":true}]' breadcrumbParentHref="#page-header-demo" primaryLabel="Primary action" primaryHref="#primary" primaryIcon="icon-[lucide--arrow-down]" secondaryLabel="Secondary action" secondaryHref="#secondary" secondaryIcon="icon-[lucide--house]" variant="default" borderBottom="true" class="showcase-instance showcase-instance--1" />
+  }
+}
} +} \ No newline at end of file diff --git a/examples/component-showcase/app/pages/blocks/section-header.wrn b/examples/component-showcase/app/pages/blocks/section-header.wrn new file mode 100644 index 00000000..2b9b1821 --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/section-header.wrn @@ -0,0 +1,10 @@ +page SectionHeaderBlock { + layout = "gallery" + + seo { title = "Section Header block" } + view {
← All blocks

Section Header

A ready-to-use section. Copy the complete example below.

Copy this example

page SectionHeaderExample {
+  view {
+    <SectionHeader eyebrow="Public services" title="Everything citizens need" description="Discover online services, directories, guidance, and verified public information." align="left" size="default" headingLevel="2" maxWidth="3xl" class="showcase-instance showcase-instance--1" />
+  }
+}
} +} \ No newline at end of file diff --git a/examples/component-showcase/app/pages/blocks/split-hero.wrn b/examples/component-showcase/app/pages/blocks/split-hero.wrn new file mode 100644 index 00000000..8f4d0ae9 --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/split-hero.wrn @@ -0,0 +1,20 @@ +page SplitHeroBlock { + layout = "gallery" + + seo { title = "Split Hero block" } + view {
← All blocks

Split Hero

A ready-to-use section. Copy the complete example below.

+
+ + Composable visual panel +

Add a screenshot, product preview, media block, chart, form, or illustration.

+

Copy this example

page SplitHeroExample {
+  view {
+    <SplitHero eyebrow="Balanced layout" title="Combine detailed content" highlight="with a strong visual panel" description="Use SplitHero for product explanations, department introductions, campaigns, and feature storytelling." primaryLabel="View public services" primaryHref="#services" primaryIcon="icon-[lucide--arrow-right]" secondaryLabel="Contact department" secondaryHref="#contact" secondaryIcon="icon-[lucide--phone]" visualPosition="right" reverse="false" ratio="balanced" align="start" size="default" variant="default" maxWidth="wide" fullBleed="true" flushMobile="false" descriptionWeight="A polished default split hero for a modern application." mobileStack="true" visualTitle="Split Hero example" visualDescription="A polished default split hero for a modern application." visualItems='[{"id":"split-hero-0-1","key":"split-hero-0-1","value":"primary","label":"Primary workflow","title":"Primary workflow","description":"A clean default configuration for everyday product interfaces.","text":"A configurable sample message.","href":"#split-hero-demo","actionHref":"#split-hero-demo","actionLabel":"View details","icon":"icon-[lucide--sparkles]","iconClass":"icon-[lucide--sparkles]","variant":"primary","status":"Active","time":"09:30","current":true,"selected":true,"checked":true,"disabled":false,"outgoing":false,"open":true,"number":1,"count":16,"percentage":72,"color":"#7c3aed","target":"_self","ariaLabel":"Open primary workflow 1","items":[{"label":"Nested option A","value":"nested-a"},{"label":"Nested option B","value":"nested-b"}],"links":[{"label":"Documentation","href":"#documentation"},{"label":"API reference","href":"#api-reference"}],"values":["Included","Standard"]},{"id":"split-hero-0-2","key":"split-hero-0-2","value":"secondary","label":"Additional option","title":"Supporting example","description":"A clean default configuration for everyday product interfaces.","text":"Another configurable message.","href":"#split-hero-demo","actionHref":"#split-hero-demo","actionLabel":"View details","icon":"icon-[lucide--sparkles]","iconClass":"icon-[lucide--sparkles]","variant":"primary","status":"Active","time":"09:30","current":false,"selected":false,"checked":false,"disabled":false,"outgoing":true,"open":true,"number":2,"count":32,"percentage":72,"color":"#7c3aed","target":"_self","ariaLabel":"Open primary workflow 2","items":[{"label":"Nested option A","value":"nested-a"},{"label":"Nested option B","value":"nested-b"}],"links":[{"label":"Documentation","href":"#documentation"},{"label":"API reference","href":"#api-reference"}],"values":["Included","Standard"]}]' trustItems='[{"id":"split-hero-0-1","key":"split-hero-0-1","value":"primary","label":"Primary workflow","title":"Primary workflow","description":"A clean default configuration for everyday product interfaces.","text":"A configurable sample message.","href":"#split-hero-demo","actionHref":"#split-hero-demo","actionLabel":"View details","icon":"icon-[lucide--sparkles]","iconClass":"icon-[lucide--sparkles]","variant":"primary","status":"Active","time":"09:30","current":true,"selected":true,"checked":true,"disabled":false,"outgoing":false,"open":true,"number":1,"count":16,"percentage":72,"color":"#7c3aed","target":"_self","ariaLabel":"Open primary workflow 1","items":[{"label":"Nested option A","value":"nested-a"},{"label":"Nested option B","value":"nested-b"}],"links":[{"label":"Documentation","href":"#documentation"},{"label":"API reference","href":"#api-reference"}],"values":["Included","Standard"]},{"id":"split-hero-0-2","key":"split-hero-0-2","value":"secondary","label":"Additional option","title":"Supporting example","description":"A clean default configuration for everyday product interfaces.","text":"Another configurable message.","href":"#split-hero-demo","actionHref":"#split-hero-demo","actionLabel":"View details","icon":"icon-[lucide--sparkles]","iconClass":"icon-[lucide--sparkles]","variant":"primary","status":"Active","time":"09:30","current":false,"selected":false,"checked":false,"disabled":false,"outgoing":true,"open":true,"number":2,"count":32,"percentage":72,"color":"#7c3aed","target":"_self","ariaLabel":"Open primary workflow 2","items":[{"label":"Nested option A","value":"nested-a"},{"label":"Nested option B","value":"nested-b"}],"links":[{"label":"Documentation","href":"#documentation"},{"label":"API reference","href":"#api-reference"}],"values":["Included","Standard"]}]' class="showcase-instance showcase-instance--1"><div data-slot="visual">
+<div class="showcase-visual-panel">
+  <span class="icon-[lucide--layout-template] size-12" aria-hidden="true"></span>
+  <strong>Composable visual panel</strong>
+  <p>Add a screenshot, product preview, media block, chart, form, or illustration.</p>
+</div></div></SplitHero>
+  }
+}
} +} \ No newline at end of file diff --git a/examples/component-showcase/app/pages/blocks/stats-bar.wrn b/examples/component-showcase/app/pages/blocks/stats-bar.wrn new file mode 100644 index 00000000..29a828e6 --- /dev/null +++ b/examples/component-showcase/app/pages/blocks/stats-bar.wrn @@ -0,0 +1,10 @@ +page StatsBarBlock { + layout = "gallery" + + seo { title = "Stats Bar block" } + view {
← All blocks

Stats Bar

A ready-to-use section. Copy the complete example below.

Copy this example

page StatsBarExample {
+  view {
+    <StatsBar items='[{"label":"Composite components","value":"18","description":"Reusable public-page building blocks","icon":"icon-[lucide--blocks]","color":"primary"},{"label":"Rendering","value":"SSR","description":"Server-first WRNexusJS rendering","icon":"icon-[lucide--server]","color":"info"},{"label":"Responsive","value":"Yes","description":"Mobile, tablet, and desktop layouts","icon":"icon-[lucide--monitor-smartphone]","color":"success"},{"label":"Theme aware","value":"Yes","description":"Active theme and accent palettes","icon":"icon-[lucide--palette]","color":"warning"}]' columns="4" compact="true" dividers="true" icons="true" size="default" variant="raised" maxWidth="xl" mobileColumns="1" class="showcase-instance showcase-instance--1" />
+  }
+}
} +} \ No newline at end of file diff --git a/examples/component-showcase/app/pages/colors.wrn b/examples/component-showcase/app/pages/colors.wrn index e1f53c86..7ef643d1 100644 --- a/examples/component-showcase/app/pages/colors.wrn +++ b/examples/component-showcase/app/pages/colors.wrn @@ -9,6 +9,9 @@ page ColorsGuide {
Customization

Colors

Semantic primary, secondary, success, warning, danger, and info tokens remain available in every palette.

Brand colors

Primary and secondary tokens communicate brand hierarchy.

Status colors

Success, warning, danger, and info preserve their semantic meaning in every palette.

Component override

Pass color="success" or another semantic color to any component.

+

Choose color by meaning

Use primary for the main action, danger for destructive actions and success for completion. Always include text or an icon so color is not the only signal.

<Button label="Save" color="primary" />
+<Button label="Delete record" color="danger" />
+<Badge label="Active" color="success" />

Verify the result

Open the matching component page, change its options, and try the keyboard controls. Copy the demonstrated configuration into your page, then replace sample content with your data.

diff --git a/examples/component-showcase/app/pages/components/accordion.wrn b/examples/component-showcase/app/pages/components/accordion.wrn index a754d286..53996100 100644 --- a/examples/component-showcase/app/pages/components/accordion.wrn +++ b/examples/component-showcase/app/pages/components/accordion.wrn @@ -6,13 +6,13 @@ page AccordionDetail { state playground_variant = ctx.url.searchParams.get("pg_variant") ?? "default" state playground_class = ctx.url.searchParams.get("pg_class") ?? "showcase-instance showcase-instance--1" state playground_id = ctx.url.searchParams.get("pg_id") ?? "accordion" - state playground_items = JSON.parse(ctx.url.searchParams.get("pg_items") ?? "[{\"id\":\"accordion-0-1\",\"key\":\"accordion-0-1\",\"value\":\"primary\",\"label\":\"Primary workflow\",\"title\":\"Primary workflow\",\"description\":\"A clean default configuration for everyday product interfaces.\",\"text\":\"A configurable sample message.\",\"href\":\"#accordion-demo\",\"actionHref\":\"#accordion-demo\",\"actionLabel\":\"View details\",\"icon\":\"icon-[lucide--sparkles]\",\"iconClass\":\"icon-[lucide--sparkles]\",\"variant\":\"primary\",\"status\":\"Active\",\"time\":\"09:30\",\"current\":true,\"selected\":true,\"checked\":true,\"disabled\":false,\"outgoing\":false,\"open\":true,\"number\":1,\"count\":16,\"percentage\":72,\"color\":\"#7c3aed\",\"target\":\"_self\",\"ariaLabel\":\"Open primary workflow 1\",\"items\":[{\"label\":\"Nested option A\",\"value\":\"nested-a\"},{\"label\":\"Nested option B\",\"value\":\"nested-b\"}],\"links\":[{\"label\":\"Documentation\",\"href\":\"#documentation\"},{\"label\":\"API reference\",\"href\":\"#api-reference\"}],\"values\":[\"Included\",\"Standard\"]},{\"id\":\"accordion-0-2\",\"key\":\"accordion-0-2\",\"value\":\"secondary\",\"label\":\"Additional option\",\"title\":\"Supporting example\",\"description\":\"A clean default configuration for everyday product interfaces.\",\"text\":\"Another configurable message.\",\"href\":\"#accordion-demo\",\"actionHref\":\"#accordion-demo\",\"actionLabel\":\"View details\",\"icon\":\"icon-[lucide--sparkles]\",\"iconClass\":\"icon-[lucide--sparkles]\",\"variant\":\"primary\",\"status\":\"Active\",\"time\":\"09:30\",\"current\":false,\"selected\":false,\"checked\":false,\"disabled\":false,\"outgoing\":true,\"open\":true,\"number\":2,\"count\":32,\"percentage\":72,\"color\":\"#7c3aed\",\"target\":\"_self\",\"ariaLabel\":\"Open primary workflow 2\",\"items\":[{\"label\":\"Nested option A\",\"value\":\"nested-a\"},{\"label\":\"Nested option B\",\"value\":\"nested-b\"}],\"links\":[{\"label\":\"Documentation\",\"href\":\"#documentation\"},{\"label\":\"API reference\",\"href\":\"#api-reference\"}],\"values\":[\"Included\",\"Standard\"]}]") - state playground_defaultOpen = JSON.parse(ctx.url.searchParams.get("pg_defaultOpen") ?? "[{\"id\":\"accordion-0-1\",\"key\":\"accordion-0-1\",\"value\":\"primary\",\"label\":\"Primary workflow\",\"title\":\"Primary workflow\",\"description\":\"A clean default configuration for everyday product interfaces.\",\"text\":\"A configurable sample message.\",\"href\":\"#accordion-demo\",\"actionHref\":\"#accordion-demo\",\"actionLabel\":\"View details\",\"icon\":\"icon-[lucide--sparkles]\",\"iconClass\":\"icon-[lucide--sparkles]\",\"variant\":\"primary\",\"status\":\"Active\",\"time\":\"09:30\",\"current\":true,\"selected\":true,\"checked\":true,\"disabled\":false,\"outgoing\":false,\"open\":true,\"number\":1,\"count\":16,\"percentage\":72,\"color\":\"#7c3aed\",\"target\":\"_self\",\"ariaLabel\":\"Open primary workflow 1\",\"items\":[{\"label\":\"Nested option A\",\"value\":\"nested-a\"},{\"label\":\"Nested option B\",\"value\":\"nested-b\"}],\"links\":[{\"label\":\"Documentation\",\"href\":\"#documentation\"},{\"label\":\"API reference\",\"href\":\"#api-reference\"}],\"values\":[\"Included\",\"Standard\"]},{\"id\":\"accordion-0-2\",\"key\":\"accordion-0-2\",\"value\":\"secondary\",\"label\":\"Additional option\",\"title\":\"Supporting example\",\"description\":\"A clean default configuration for everyday product interfaces.\",\"text\":\"Another configurable message.\",\"href\":\"#accordion-demo\",\"actionHref\":\"#accordion-demo\",\"actionLabel\":\"View details\",\"icon\":\"icon-[lucide--sparkles]\",\"iconClass\":\"icon-[lucide--sparkles]\",\"variant\":\"primary\",\"status\":\"Active\",\"time\":\"09:30\",\"current\":false,\"selected\":false,\"checked\":false,\"disabled\":false,\"outgoing\":true,\"open\":true,\"number\":2,\"count\":32,\"percentage\":72,\"color\":\"#7c3aed\",\"target\":\"_self\",\"ariaLabel\":\"Open primary workflow 2\",\"items\":[{\"label\":\"Nested option A\",\"value\":\"nested-a\"},{\"label\":\"Nested option B\",\"value\":\"nested-b\"}],\"links\":[{\"label\":\"Documentation\",\"href\":\"#documentation\"},{\"label\":\"API reference\",\"href\":\"#api-reference\"}],\"values\":[\"Included\",\"Standard\"]}]") + state playground_items = JSON.parse(ctx.url.searchParams.get("pg_items") ?? "[{\"value\":\"workspace\",\"label\":\"How do I create a workspace?\",\"content\":\"Choose Create workspace, add a name, and invite your team. You can update the details any time in Settings.\"},{\"value\":\"billing\",\"label\":\"Can I change my plan later?\",\"content\":\"Yes. Open Billing to compare plans and choose the one that suits your team.\"},{\"value\":\"security\",\"label\":\"How is my account protected?\",\"content\":\"Enable two-step verification and add a recovery method to keep your account secure.\"}]") + state playground_defaultOpen = JSON.parse(ctx.url.searchParams.get("pg_defaultOpen") ?? "[\"workspace\"]") state playground_multiple = (ctx.url.searchParams.get("pg_multiple") ?? "false") === "true" state playground_alwaysOpen = (ctx.url.searchParams.get("pg_alwaysOpen") ?? "false") === "true" state playground_disabled = (ctx.url.searchParams.get("pg_disabled") ?? "false") === "true" - state playground_indicator = ctx.url.searchParams.get("pg_indicator") ?? "plus" - state playground_indicatorPosition = ctx.url.searchParams.get("pg_indicatorPosition") ?? "start" + state playground_indicator = ctx.url.searchParams.get("pg_indicator") ?? "chevron" + state playground_indicatorPosition = ctx.url.searchParams.get("pg_indicatorPosition") ?? "end" state playground_showIndicator = (ctx.url.searchParams.get("pg_showIndicator") ?? "true") === "true" state playground_bordered = (ctx.url.searchParams.get("pg_bordered") ?? "false") === "true" state playground_separated = (ctx.url.searchParams.get("pg_separated") ?? "false") === "true" @@ -43,224 +43,36 @@ page AccordionDetail {
Component code
-
<Accordion
-  items='[
-    {
-      "id": "accordion-0-1",
-      "key": "accordion-0-1",
-      "value": "primary",
-      "label": "Primary workflow",
-      "title": "Primary workflow",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "A configurable sample message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 16,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    },
-    {
-      "id": "accordion-0-2",
-      "key": "accordion-0-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "Another configurable message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": false,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 32,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    }
-  ]'
-  defaultOpen='[
-    {
-      "id": "accordion-0-1",
-      "key": "accordion-0-1",
-      "value": "primary",
-      "label": "Primary workflow",
-      "title": "Primary workflow",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "A configurable sample message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 16,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    },
-    {
-      "id": "accordion-0-2",
-      "key": "accordion-0-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "Another configurable message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": false,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 32,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    }
-  ]'
-/>
+
page AccordionExample {
+  state items = [
+  {
+    "value": "workspace",
+    "label": "How do I create a workspace?",
+    "content": "Choose Create workspace, add a name, and invite your team. You can update the details any time in Settings."
+  },
+  {
+    "value": "billing",
+    "label": "Can I change my plan later?",
+    "content": "Yes. Open Billing to compare plans and choose the one that suits your team."
+  },
+  {
+    "value": "security",
+    "label": "How is my account protected?",
+    "content": "Enable two-step verification and add a recovery method to keep your account secure."
+  }
+]
+  state defaultOpen = [
+  "workspace"
+]
+  view {
+    <Accordion
+      items="{items}"
+      defaultOpen="{defaultOpen}"
+      indicator="chevron"
+      indicatorPosition="end"
+    />
+  }
+}
Event outputInteract with the preview to inspect the typed payload.
@@ -269,219 +81,23 @@ page AccordionDetail {
Component props17 controls
+ "workspace" +]
@@ -490,707 +106,145 @@ page AccordionDetail {
Live examples

Designed for real product surfaces

Compare configurations and resize the browser to check responsive behavior.

-
Recommended

Production default

Balanced spacing, hierarchy, and content for the most common product workflow.

+
Recommended

Plain disclosure rows

Unframed questions with trailing chevrons and aligned answers.

01
Live preview
-
+
-
+
Component usage.wrn
-
<Accordion
-  items='[
-    {
-      "id": "accordion-0-1",
-      "key": "accordion-0-1",
-      "value": "primary",
-      "label": "Primary workflow",
-      "title": "Primary workflow",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "A configurable sample message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 16,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    },
-    {
-      "id": "accordion-0-2",
-      "key": "accordion-0-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "Another configurable message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": false,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 32,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    }
-  ]'
-  defaultOpen='[
-    {
-      "id": "accordion-0-1",
-      "key": "accordion-0-1",
-      "value": "primary",
-      "label": "Primary workflow",
-      "title": "Primary workflow",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "A configurable sample message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 16,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    },
-    {
-      "id": "accordion-0-2",
-      "key": "accordion-0-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "Another configurable message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": false,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 32,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    }
-  ]'
-/>
+
page AccordionExample {
+  state items = [
+  {
+    "value": "workspace",
+    "label": "How do I create a workspace?",
+    "content": "Choose Create workspace, add a name, and invite your team. You can update the details any time in Settings."
+  },
+  {
+    "value": "billing",
+    "label": "Can I change my plan later?",
+    "content": "Yes. Open Billing to compare plans and choose the one that suits your team."
+  },
+  {
+    "value": "security",
+    "label": "How is my account protected?",
+    "content": "Enable two-step verification and add a recovery method to keep your account secure."
+  }
+]
+  state defaultOpen = [
+  "workspace"
+]
+  view {
+    <Accordion
+      items="{items}"
+      defaultOpen="{defaultOpen}"
+      indicator="chevron"
+      indicatorPosition="end"
+    />
+  }
+}
-
Dense UI

Compact application

A tighter variation for dashboards, side panels, tables, and operational interfaces.

+
Compact

Bordered group

One shared border with leading indicators.

02
Live preview
-
+
-
+
Component usage.wrn
-
<Accordion
-  size="sm"
-  variant="secondary"
-  items='[
-    {
-      "id": "accordion-1-1",
-      "key": "accordion-1-1",
-      "value": "primary",
-      "label": "Secondary workflow",
-      "title": "Secondary workflow",
-      "description": "A compact configuration designed for dense application layouts.",
-      "text": "A configurable sample message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--zap]",
-      "iconClass": "icon-[lucide--zap]",
-      "variant": "secondary",
-      "status": "Active",
-      "time": "10:15",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 24,
-      "percentage": 48,
-      "color": "#0284c7",
-      "target": "_self",
-      "ariaLabel": "Open secondary workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    },
-    {
-      "id": "accordion-1-2",
-      "key": "accordion-1-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A compact configuration designed for dense application layouts.",
-      "text": "Another configurable message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--zap]",
-      "iconClass": "icon-[lucide--zap]",
-      "variant": "secondary",
-      "status": "Active",
-      "time": "10:15",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": false,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 48,
-      "percentage": 48,
-      "color": "#0284c7",
-      "target": "_self",
-      "ariaLabel": "Open secondary workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    }
-  ]'
-  defaultOpen='[
-    {
-      "id": "accordion-1-1",
-      "key": "accordion-1-1",
-      "value": "primary",
-      "label": "Secondary workflow",
-      "title": "Secondary workflow",
-      "description": "A compact configuration designed for dense application layouts.",
-      "text": "A configurable sample message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--zap]",
-      "iconClass": "icon-[lucide--zap]",
-      "variant": "secondary",
-      "status": "Active",
-      "time": "10:15",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 24,
-      "percentage": 48,
-      "color": "#0284c7",
-      "target": "_self",
-      "ariaLabel": "Open secondary workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    },
-    {
-      "id": "accordion-1-2",
-      "key": "accordion-1-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A compact configuration designed for dense application layouts.",
-      "text": "Another configurable message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--zap]",
-      "iconClass": "icon-[lucide--zap]",
-      "variant": "secondary",
-      "status": "Active",
-      "time": "10:15",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": false,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 48,
-      "percentage": 48,
-      "color": "#0284c7",
-      "target": "_self",
-      "ariaLabel": "Open secondary workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    }
-  ]'
-/>
+
page AccordionExample {
+  state items = [
+  {
+    "value": "workspace",
+    "label": "How do I create a workspace?",
+    "content": "Choose Create workspace, add a name, and invite your team. You can update the details any time in Settings."
+  },
+  {
+    "value": "billing",
+    "label": "Can I change my plan later?",
+    "content": "Yes. Open Billing to compare plans and choose the one that suits your team."
+  },
+  {
+    "value": "security",
+    "label": "How is my account protected?",
+    "content": "Enable two-step verification and add a recovery method to keep your account secure."
+  }
+]
+  state defaultOpen = [
+  "workspace"
+]
+  view {
+    <Accordion
+      size="sm"
+      variant="secondary"
+      items="{items}"
+      defaultOpen="{defaultOpen}"
+      bordered="true"
+    />
+  }
+}
-
Extended

Rich configuration

A more expressive variation using additional data, stronger emphasis, and optional states.

+
Advanced

Separate panels

Individually framed rows; multiple answers can stay open.

03
Live preview
-
+
-
+
Component usage.wrn
-
<Accordion
-  size="lg"
-  variant="success"
-  items='[
-    {
-      "id": "accordion-2-1",
-      "key": "accordion-2-1",
-      "value": "primary",
-      "label": "Advanced workflow",
-      "title": "Advanced workflow",
-      "description": "A richer configuration with more supporting information and actions.",
-      "text": "A configurable sample message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "Explore workflow",
-      "icon": "icon-[lucide--circle-check]",
-      "iconClass": "icon-[lucide--circle-check]",
-      "variant": "success",
-      "status": "Complete",
-      "time": "11:45",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 32,
-      "percentage": 91,
-      "color": "#059669",
-      "target": "_self",
-      "ariaLabel": "Open advanced workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Unlimited"
-      ]
-    },
-    {
-      "id": "accordion-2-2",
-      "key": "accordion-2-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A richer configuration with more supporting information and actions.",
-      "text": "Another configurable message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "Explore workflow",
-      "icon": "icon-[lucide--circle-check]",
-      "iconClass": "icon-[lucide--circle-check]",
-      "variant": "success",
-      "status": "Complete",
-      "time": "11:45",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": true,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 64,
-      "percentage": 91,
-      "color": "#059669",
-      "target": "_self",
-      "ariaLabel": "Open advanced workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Unlimited"
-      ]
-    }
-  ]'
-  defaultOpen='[
-    {
-      "id": "accordion-2-1",
-      "key": "accordion-2-1",
-      "value": "primary",
-      "label": "Advanced workflow",
-      "title": "Advanced workflow",
-      "description": "A richer configuration with more supporting information and actions.",
-      "text": "A configurable sample message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "Explore workflow",
-      "icon": "icon-[lucide--circle-check]",
-      "iconClass": "icon-[lucide--circle-check]",
-      "variant": "success",
-      "status": "Complete",
-      "time": "11:45",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 32,
-      "percentage": 91,
-      "color": "#059669",
-      "target": "_self",
-      "ariaLabel": "Open advanced workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Unlimited"
-      ]
-    },
-    {
-      "id": "accordion-2-2",
-      "key": "accordion-2-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A richer configuration with more supporting information and actions.",
-      "text": "Another configurable message.",
-      "href": "#accordion-demo",
-      "actionHref": "#accordion-demo",
-      "actionLabel": "Explore workflow",
-      "icon": "icon-[lucide--circle-check]",
-      "iconClass": "icon-[lucide--circle-check]",
-      "variant": "success",
-      "status": "Complete",
-      "time": "11:45",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": true,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 64,
-      "percentage": 91,
-      "color": "#059669",
-      "target": "_self",
-      "ariaLabel": "Open advanced workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Unlimited"
-      ]
-    }
-  ]'
-/>
+
page AccordionExample {
+  state items = [
+  {
+    "value": "workspace",
+    "label": "How do I create a workspace?",
+    "content": "Choose Create workspace, add a name, and invite your team. You can update the details any time in Settings."
+  },
+  {
+    "value": "billing",
+    "label": "Can I change my plan later?",
+    "content": "Yes. Open Billing to compare plans and choose the one that suits your team."
+  },
+  {
+    "value": "security",
+    "label": "How is my account protected?",
+    "content": "Enable two-step verification and add a recovery method to keep your account secure."
+  }
+]
+  state defaultOpen = [
+  "workspace"
+]
+  view {
+    <Accordion
+      size="lg"
+      variant="success"
+      items="{items}"
+      defaultOpen="{defaultOpen}"
+      multiple="true"
+      indicator="chevron"
+      indicatorPosition="end"
+      bordered="true"
+      separated="true"
+    />
+  }
+}
@@ -1216,7 +270,7 @@ if (component) registerOutputHandler(component, "close", (payload) => &
Component API

Props and configuration

All content and behavior shown above is supplied through these props and slots.

PropTypeDefaultRequired
sizestring"default"No
colorstring"primary"No
variantstring"default"No
classstring""No
idstring"accordion"No
itemsunknown[][]No
defaultOpenunknown[][]No
multiplebooleanfalseNo
alwaysOpenbooleanfalseNo
disabledbooleanfalseNo
indicatorstring"plus"No
indicatorPositionstring"start"No
showIndicatorbooleantrueNo
borderedbooleanfalseNo
separatedbooleanfalseNo
flushbooleanfalseNo
contentItalicbooleanfalseNo
Component usage.wrn
-
<AdvancedSelect
-  label="Default advanced select"
-  name="advanced-select-1"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Default advanced select"
+      name="advanced-select-1"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      allowEmpty="false"
+    />
+  }
+}
@@ -232,58 +246,65 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Grouped options"
-  name="advanced-select-2"
-  value="design"
-  values='[]'
-  options='[]'
-  groups='[
-    {
-      "label": "Product",
-      "options": [
-        {
-          "value": "design",
-          "label": "Design",
-          "description": "Product and visual design",
-          "icon": "icon-[lucide--palette]",
-          "color": "#8b5cf6",
-          "avatar": "/showcase-images/avatar-design.svg"
-        },
-        {
-          "value": "engineering",
-          "label": "Engineering",
-          "description": "Platform and application engineering",
-          "icon": "icon-[lucide--code-2]",
-          "color": "#0ea5e9",
-          "avatar": "/showcase-images/avatar-engineering.svg"
-        }
-      ]
-    },
-    {
-      "label": "Business",
-      "options": [
-        {
-          "value": "growth",
-          "label": "Growth",
-          "description": "Marketing and customer growth",
-          "icon": "icon-[lucide--trending-up]",
-          "color": "#10b981",
-          "avatar": "/showcase-images/avatar-growth.svg"
-        },
-        {
-          "value": "support",
-          "label": "Support",
-          "description": "Customer operations",
-          "disabled": false
-        }
-      ]
-    }
-  ]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = []
+  state groups = [
+  {
+    "label": "Product",
+    "options": [
+      {
+        "value": "design",
+        "label": "Design",
+        "description": "Product and visual design",
+        "icon": "icon-[lucide--palette]",
+        "color": "#8b5cf6",
+        "avatar": "/showcase-images/avatar-design.svg"
+      },
+      {
+        "value": "engineering",
+        "label": "Engineering",
+        "description": "Platform and application engineering",
+        "icon": "icon-[lucide--code-2]",
+        "color": "#0ea5e9",
+        "avatar": "/showcase-images/avatar-engineering.svg"
+      }
+    ]
+  },
+  {
+    "label": "Business",
+    "options": [
+      {
+        "value": "growth",
+        "label": "Growth",
+        "description": "Marketing and customer growth",
+        "icon": "icon-[lucide--trending-up]",
+        "color": "#10b981",
+        "avatar": "/showcase-images/avatar-growth.svg"
+      },
+      {
+        "value": "support",
+        "label": "Support",
+        "description": "Customer operations",
+        "disabled": false
+      }
+    ]
+  }
+]
+  view {
+    <AdvancedSelect
+      label="Grouped options"
+      name="advanced-select-2"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+    />
+  }
+}
@@ -300,49 +321,56 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Fixed-position dropdown"
-  name="advanced-select-3"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-  fixed="true"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Fixed-position dropdown"
+      name="advanced-select-3"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+      fixed="true"
+    />
+  }
+}
@@ -359,49 +387,56 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Placeholder with icon"
-  name="advanced-select-4"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a workspace"
-  placeholderIcon="icon-[lucide--building-2]"
-  searchable="false"
-  allowEmpty="false"
-  optionTemplate="icon"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Placeholder with icon"
+      name="advanced-select-4"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a workspace"
+      placeholderIcon="icon-[lucide--building-2]"
+      searchable="false"
+      allowEmpty="false"
+      optionTemplate="icon"
+    />
+  }
+}
@@ -418,47 +453,54 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Allow empty selection"
-  name="advanced-select-5"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Allow empty selection"
+      name="advanced-select-5"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+    />
+  }
+}
@@ -475,51 +517,58 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Multiple selection"
-  name="advanced-select-6"
-  values='[
-    "design",
-    "engineering"
-  ]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  multiple="true"
-  searchable="false"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = [
+  "design",
+  "engineering"
+]
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Multiple selection"
+      name="advanced-select-6"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      multiple="true"
+      searchable="false"
+      allowEmpty="false"
+    />
+  }
+}
@@ -536,61 +585,68 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Multiple selection with optgroups"
-  name="advanced-select-7"
-  values='[
-    "design",
-    "engineering"
-  ]'
-  options='[]'
-  groups='[
-    {
-      "label": "Product",
-      "options": [
-        {
-          "value": "design",
-          "label": "Design",
-          "description": "Product and visual design",
-          "icon": "icon-[lucide--palette]",
-          "color": "#8b5cf6",
-          "avatar": "/showcase-images/avatar-design.svg"
-        },
-        {
-          "value": "engineering",
-          "label": "Engineering",
-          "description": "Platform and application engineering",
-          "icon": "icon-[lucide--code-2]",
-          "color": "#0ea5e9",
-          "avatar": "/showcase-images/avatar-engineering.svg"
-        }
-      ]
-    },
-    {
-      "label": "Business",
-      "options": [
-        {
-          "value": "growth",
-          "label": "Growth",
-          "description": "Marketing and customer growth",
-          "icon": "icon-[lucide--trending-up]",
-          "color": "#10b981",
-          "avatar": "/showcase-images/avatar-growth.svg"
-        },
-        {
-          "value": "support",
-          "label": "Support",
-          "description": "Customer operations",
-          "disabled": false
-        }
-      ]
-    }
-  ]'
-  placeholder="Choose a team"
-  multiple="true"
-  searchable="false"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = [
+  "design",
+  "engineering"
+]
+  state options = []
+  state groups = [
+  {
+    "label": "Product",
+    "options": [
+      {
+        "value": "design",
+        "label": "Design",
+        "description": "Product and visual design",
+        "icon": "icon-[lucide--palette]",
+        "color": "#8b5cf6",
+        "avatar": "/showcase-images/avatar-design.svg"
+      },
+      {
+        "value": "engineering",
+        "label": "Engineering",
+        "description": "Platform and application engineering",
+        "icon": "icon-[lucide--code-2]",
+        "color": "#0ea5e9",
+        "avatar": "/showcase-images/avatar-engineering.svg"
+      }
+    ]
+  },
+  {
+    "label": "Business",
+    "options": [
+      {
+        "value": "growth",
+        "label": "Growth",
+        "description": "Marketing and customer growth",
+        "icon": "icon-[lucide--trending-up]",
+        "color": "#10b981",
+        "avatar": "/showcase-images/avatar-growth.svg"
+      },
+      {
+        "value": "support",
+        "label": "Support",
+        "description": "Customer operations",
+        "disabled": false
+      }
+    ]
+  }
+]
+  view {
+    <AdvancedSelect
+      label="Multiple selection with optgroups"
+      name="advanced-select-7"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      multiple="true"
+      searchable="false"
+      allowEmpty="false"
+    />
+  }
+}
@@ -607,52 +663,59 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Multiple selection with option templates"
-  name="advanced-select-8"
-  values='[
-    "design",
-    "engineering"
-  ]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  multiple="true"
-  searchable="false"
-  allowEmpty="false"
-  optionTemplate="icon"
-/>
+
page AdvancedSelectExample {
+  state values = [
+  "design",
+  "engineering"
+]
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Multiple selection with option templates"
+      name="advanced-select-8"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      multiple="true"
+      searchable="false"
+      allowEmpty="false"
+      optionTemplate="icon"
+    />
+  }
+}
@@ -669,52 +732,59 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Multiple selection with counter"
-  name="advanced-select-9"
-  values='[
-    "design",
-    "engineering"
-  ]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  multiple="true"
-  searchable="false"
-  allowEmpty="false"
-  showCounter="true"
-/>
+
page AdvancedSelectExample {
+  state values = [
+  "design",
+  "engineering"
+]
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Multiple selection with counter"
+      name="advanced-select-9"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      multiple="true"
+      searchable="false"
+      allowEmpty="false"
+      showCounter="true"
+    />
+  }
+}
@@ -731,53 +801,60 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Multiple selection with conditional counter"
-  name="advanced-select-10"
-  values='[
-    "design",
-    "engineering"
-  ]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  multiple="true"
-  searchable="false"
-  allowEmpty="false"
-  maxSelections="3"
-  showCounter="true"
-/>
+
page AdvancedSelectExample {
+  state values = [
+  "design",
+  "engineering"
+]
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Multiple selection with conditional counter"
+      name="advanced-select-10"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      multiple="true"
+      searchable="false"
+      allowEmpty="false"
+      maxSelections="3"
+      showCounter="true"
+    />
+  }
+}
@@ -794,50 +871,57 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Counter with option templates"
-  name="advanced-select-11"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-  showCounter="true"
-  optionTemplate="icon"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Counter with option templates"
+      name="advanced-select-11"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+      showCounter="true"
+      optionTemplate="icon"
+    />
+  }
+}
@@ -854,47 +938,54 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Searchable dropdown"
-  name="advanced-select-12"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Searchable dropdown"
+      name="advanced-select-12"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      allowEmpty="false"
+    />
+  }
+}
@@ -911,48 +1002,55 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Minimum search length"
-  name="advanced-select-13"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  allowEmpty="false"
-  minSearchLength="3"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Minimum search length"
+      name="advanced-select-13"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      allowEmpty="false"
+      minSearchLength="3"
+    />
+  }
+}
@@ -969,48 +1067,55 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Search result limit"
-  name="advanced-select-14"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  allowEmpty="false"
-  searchResultLimit="3"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Search result limit"
+      name="advanced-select-14"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      allowEmpty="false"
+      searchResultLimit="3"
+    />
+  }
+}
@@ -1027,48 +1132,55 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Scroll to selected option"
-  name="advanced-select-15"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Scroll to selected option"
+      name="advanced-select-15"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+    />
+  }
+}
@@ -1085,48 +1197,55 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Search match mode"
-  name="advanced-select-16"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  allowEmpty="false"
-  searchMode="startsWith"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Search match mode"
+      name="advanced-select-16"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      allowEmpty="false"
+      searchMode="startsWith"
+    />
+  }
+}
@@ -1143,47 +1262,54 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Search labels and descriptions"
-  name="advanced-select-17"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Search labels and descriptions"
+      name="advanced-select-17"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      allowEmpty="false"
+    />
+  }
+}
@@ -1200,49 +1326,56 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Tag-style selection"
-  name="advanced-select-18"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-  tags="true"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Tag-style selection"
+      name="advanced-select-18"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+      tags="true"
+    />
+  }
+}
@@ -1259,50 +1392,57 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Disabled tag selection"
-  name="advanced-select-19"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-  tags="true"
-  disabled="true"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Disabled tag selection"
+      name="advanced-select-19"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+      tags="true"
+      disabled="true"
+    />
+  }
+}
@@ -1319,49 +1459,56 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Option template with icons"
-  name="advanced-select-20"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-  optionTemplate="icon"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Option template with icons"
+      name="advanced-select-20"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+      optionTemplate="icon"
+    />
+  }
+}
@@ -1378,49 +1525,56 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Option template with avatars"
-  name="advanced-select-21"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-  optionTemplate="avatar"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Option template with avatars"
+      name="advanced-select-21"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+      optionTemplate="avatar"
+    />
+  }
+}
@@ -1437,49 +1591,56 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Option template with color indicators"
-  name="advanced-select-22"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-  optionTemplate="color"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Option template with color indicators"
+      name="advanced-select-22"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+      optionTemplate="color"
+    />
+  }
+}
@@ -1496,49 +1657,56 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  size="lg"
-  label="Advanced select sizes"
-  name="advanced-select-23"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      size="lg"
+      label="Advanced select sizes"
+      name="advanced-select-23"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+    />
+  }
+}
@@ -1555,49 +1723,56 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Disabled advanced select"
-  name="advanced-select-24"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-  disabled="true"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Disabled advanced select"
+      name="advanced-select-24"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+      disabled="true"
+    />
+  }
+}
@@ -1614,48 +1789,55 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Inside a modal"
-  name="advanced-select-25"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Inside a modal"
+      name="advanced-select-25"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+    />
+  }
+}
@@ -1672,49 +1854,56 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Validation states"
-  name="advanced-select-26"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-  required="true"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Validation states"
+      name="advanced-select-26"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+      required="true"
+    />
+  }
+}
@@ -1731,49 +1920,56 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Dynamic validation styling"
-  name="advanced-select-27"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-  required="true"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Dynamic validation styling"
+      name="advanced-select-27"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+      required="true"
+    />
+  }
+}
@@ -1790,48 +1986,55 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Add or remove options"
-  name="advanced-select-28"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Add or remove options"
+      name="advanced-select-28"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+    />
+  }
+}
@@ -1848,51 +2051,58 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Add or remove options in multiple mode"
-  name="advanced-select-29"
-  values='[
-    "design",
-    "engineering"
-  ]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  multiple="true"
-  searchable="false"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = [
+  "design",
+  "engineering"
+]
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Add or remove options in multiple mode"
+      name="advanced-select-29"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      multiple="true"
+      searchable="false"
+      allowEmpty="false"
+    />
+  }
+}
@@ -1909,48 +2119,55 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Set a single value programmatically"
-  name="advanced-select-30"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Set a single value programmatically"
+      name="advanced-select-30"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+    />
+  }
+}
@@ -1967,51 +2184,58 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Set multiple values programmatically"
-  name="advanced-select-31"
-  values='[
-    "design",
-    "engineering"
-  ]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  multiple="true"
-  searchable="false"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = [
+  "design",
+  "engineering"
+]
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Set multiple values programmatically"
+      name="advanced-select-31"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      multiple="true"
+      searchable="false"
+      allowEmpty="false"
+    />
+  }
+}
@@ -2028,50 +2252,57 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Remote data source"
-  name="advanced-select-32"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  allowEmpty="false"
-  minSearchLength="2"
-  remote="true"
-  remoteUrl="/api/teams"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Remote data source"
+      name="advanced-select-32"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      allowEmpty="false"
+      minSearchLength="2"
+      remote="true"
+      remoteUrl="/api/teams"
+    />
+  }
+}
@@ -2088,53 +2319,60 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Remote data source (multiple)"
-  name="advanced-select-33"
-  values='[
-    "design",
-    "engineering"
-  ]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  multiple="true"
-  allowEmpty="false"
-  minSearchLength="2"
-  remote="true"
-  remoteUrl="/api/teams"
-/>
+
page AdvancedSelectExample {
+  state values = [
+  "design",
+  "engineering"
+]
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Remote data source (multiple)"
+      name="advanced-select-33"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      multiple="true"
+      allowEmpty="false"
+      minSearchLength="2"
+      remote="true"
+      remoteUrl="/api/teams"
+    />
+  }
+}
@@ -2151,54 +2389,61 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Remote data tags"
-  name="advanced-select-34"
-  values='[
-    "design",
-    "engineering"
-  ]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  multiple="true"
-  allowEmpty="false"
-  tags="true"
-  minSearchLength="2"
-  remote="true"
-  remoteUrl="/api/teams"
-/>
+
page AdvancedSelectExample {
+  state values = [
+  "design",
+  "engineering"
+]
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Remote data tags"
+      name="advanced-select-34"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      multiple="true"
+      allowEmpty="false"
+      tags="true"
+      minSearchLength="2"
+      remote="true"
+      remoteUrl="/api/teams"
+    />
+  }
+}
@@ -2215,51 +2460,58 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Option templates with remote data"
-  name="advanced-select-35"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  allowEmpty="false"
-  minSearchLength="2"
-  optionTemplate="icon"
-  remote="true"
-  remoteUrl="/api/teams"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Option templates with remote data"
+      name="advanced-select-35"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      allowEmpty="false"
+      minSearchLength="2"
+      optionTemplate="icon"
+      remote="true"
+      remoteUrl="/api/teams"
+    />
+  }
+}
@@ -2276,52 +2528,59 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Conditional counter with remote data"
-  name="advanced-select-36"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  allowEmpty="false"
-  minSearchLength="2"
-  maxSelections="3"
-  showCounter="true"
-  remote="true"
-  remoteUrl="/api/teams"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Conditional counter with remote data"
+      name="advanced-select-36"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      allowEmpty="false"
+      minSearchLength="2"
+      maxSelections="3"
+      showCounter="true"
+      remote="true"
+      remoteUrl="/api/teams"
+    />
+  }
+}
@@ -2338,51 +2597,58 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Avatar template with remote data"
-  name="advanced-select-37"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  allowEmpty="false"
-  minSearchLength="2"
-  optionTemplate="avatar"
-  remote="true"
-  remoteUrl="/api/teams"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Avatar template with remote data"
+      name="advanced-select-37"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      allowEmpty="false"
+      minSearchLength="2"
+      optionTemplate="avatar"
+      remote="true"
+      remoteUrl="/api/teams"
+    />
+  }
+}
@@ -2399,48 +2665,55 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Preselected values"
-  name="advanced-select-38"
-  value="engineering"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Preselected values"
+      name="advanced-select-38"
+      value="engineering"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+    />
+  }
+}
@@ -2457,51 +2730,58 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Infinite scroll"
-  name="advanced-select-39"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  allowEmpty="false"
-  remote="true"
-  remoteUrl="/api/teams"
-  infinite="true"
-  hasMore="true"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Infinite scroll"
+      name="advanced-select-39"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      allowEmpty="false"
+      remote="true"
+      remoteUrl="/api/teams"
+      infinite="true"
+      hasMore="true"
+    />
+  }
+}
@@ -2518,49 +2798,56 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Inside overflow-hidden containers"
-  name="advanced-select-40"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-  fixed="true"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Inside overflow-hidden containers"
+      name="advanced-select-40"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+      fixed="true"
+    />
+  }
+}
@@ -2577,48 +2864,55 @@ page AdvancedSelectDetail {
Component usage.wrn
-
<AdvancedSelect
-  label="Destroy and reinitialize"
-  name="advanced-select-41"
-  value="design"
-  values='[]'
-  options='[
-    {
-      "value": "design",
-      "label": "Design",
-      "description": "Product and visual design",
-      "icon": "icon-[lucide--palette]",
-      "color": "#8b5cf6",
-      "avatar": "/showcase-images/avatar-design.svg"
-    },
-    {
-      "value": "engineering",
-      "label": "Engineering",
-      "description": "Platform and application engineering",
-      "icon": "icon-[lucide--code-2]",
-      "color": "#0ea5e9",
-      "avatar": "/showcase-images/avatar-engineering.svg"
-    },
-    {
-      "value": "growth",
-      "label": "Growth",
-      "description": "Marketing and customer growth",
-      "icon": "icon-[lucide--trending-up]",
-      "color": "#10b981",
-      "avatar": "/showcase-images/avatar-growth.svg"
-    },
-    {
-      "value": "support",
-      "label": "Support",
-      "description": "Customer operations",
-      "disabled": false
-    }
-  ]'
-  groups='[]'
-  placeholder="Choose a team"
-  searchable="false"
-  allowEmpty="false"
-/>
+
page AdvancedSelectExample {
+  state values = []
+  state options = [
+  {
+    "value": "design",
+    "label": "Design",
+    "description": "Product and visual design",
+    "icon": "icon-[lucide--palette]",
+    "color": "#8b5cf6",
+    "avatar": "/showcase-images/avatar-design.svg"
+  },
+  {
+    "value": "engineering",
+    "label": "Engineering",
+    "description": "Platform and application engineering",
+    "icon": "icon-[lucide--code-2]",
+    "color": "#0ea5e9",
+    "avatar": "/showcase-images/avatar-engineering.svg"
+  },
+  {
+    "value": "growth",
+    "label": "Growth",
+    "description": "Marketing and customer growth",
+    "icon": "icon-[lucide--trending-up]",
+    "color": "#10b981",
+    "avatar": "/showcase-images/avatar-growth.svg"
+  },
+  {
+    "value": "support",
+    "label": "Support",
+    "description": "Customer operations",
+    "disabled": false
+  }
+]
+  state groups = []
+  view {
+    <AdvancedSelect
+      label="Destroy and reinitialize"
+      name="advanced-select-41"
+      value="design"
+      values="{values}"
+      options="{options}"
+      groups="{groups}"
+      placeholder="Choose a team"
+      searchable="false"
+      allowEmpty="false"
+    />
+  }
+}
diff --git a/examples/component-showcase/app/pages/components/alert.wrn b/examples/component-showcase/app/pages/components/alert.wrn index fd2e7193..a1d0e68d 100644 --- a/examples/component-showcase/app/pages/components/alert.wrn +++ b/examples/component-showcase/app/pages/components/alert.wrn @@ -2,25 +2,25 @@ page AlertDetail { layout = "showcase" state playground_size = ctx.url.searchParams.get("pg_size") ?? "default" - state playground_color = ctx.url.searchParams.get("pg_color") ?? "info" + state playground_color = ctx.url.searchParams.get("pg_color") ?? "success" state playground_variant = ctx.url.searchParams.get("pg_variant") ?? "soft" - state playground_class = ctx.url.searchParams.get("pg_class") ?? "showcase-instance showcase-instance--1" + state playground_class = ctx.url.searchParams.get("pg_class") ?? "" state playground_radius = ctx.url.searchParams.get("pg_radius") ?? "md" - state playground_shadow = ctx.url.searchParams.get("pg_shadow") ?? "sm" - state playground_title = ctx.url.searchParams.get("pg_title") ?? "Alert example" - state playground_description = ctx.url.searchParams.get("pg_description") ?? "A polished default alert for a modern application." - state playground_items = JSON.parse(ctx.url.searchParams.get("pg_items") ?? "[{\"id\":\"alert-0-1\",\"key\":\"alert-0-1\",\"value\":\"primary\",\"label\":\"Primary workflow\",\"title\":\"Primary workflow\",\"description\":\"A clean default configuration for everyday product interfaces.\",\"text\":\"A configurable sample message.\",\"href\":\"#alert-demo\",\"actionHref\":\"#alert-demo\",\"actionLabel\":\"View details\",\"icon\":\"icon-[lucide--sparkles]\",\"iconClass\":\"icon-[lucide--sparkles]\",\"variant\":\"primary\",\"status\":\"Active\",\"time\":\"09:30\",\"current\":true,\"selected\":true,\"checked\":true,\"disabled\":false,\"outgoing\":false,\"open\":true,\"number\":1,\"count\":16,\"percentage\":72,\"color\":\"#7c3aed\",\"target\":\"_self\",\"ariaLabel\":\"Open primary workflow 1\",\"items\":[{\"label\":\"Nested option A\",\"value\":\"nested-a\"},{\"label\":\"Nested option B\",\"value\":\"nested-b\"}],\"links\":[{\"label\":\"Documentation\",\"href\":\"#documentation\"},{\"label\":\"API reference\",\"href\":\"#api-reference\"}],\"values\":[\"Included\",\"Standard\"]},{\"id\":\"alert-0-2\",\"key\":\"alert-0-2\",\"value\":\"secondary\",\"label\":\"Additional option\",\"title\":\"Supporting example\",\"description\":\"A clean default configuration for everyday product interfaces.\",\"text\":\"Another configurable message.\",\"href\":\"#alert-demo\",\"actionHref\":\"#alert-demo\",\"actionLabel\":\"View details\",\"icon\":\"icon-[lucide--sparkles]\",\"iconClass\":\"icon-[lucide--sparkles]\",\"variant\":\"primary\",\"status\":\"Active\",\"time\":\"09:30\",\"current\":false,\"selected\":false,\"checked\":false,\"disabled\":false,\"outgoing\":true,\"open\":true,\"number\":2,\"count\":32,\"percentage\":72,\"color\":\"#7c3aed\",\"target\":\"_self\",\"ariaLabel\":\"Open primary workflow 2\",\"items\":[{\"label\":\"Nested option A\",\"value\":\"nested-a\"},{\"label\":\"Nested option B\",\"value\":\"nested-b\"}],\"links\":[{\"label\":\"Documentation\",\"href\":\"#documentation\"},{\"label\":\"API reference\",\"href\":\"#api-reference\"}],\"values\":[\"Included\",\"Standard\"]}]") - state playground_actions = JSON.parse(ctx.url.searchParams.get("pg_actions") ?? "[{\"id\":\"alert-0-1\",\"key\":\"alert-0-1\",\"value\":\"primary\",\"label\":\"Primary workflow\",\"title\":\"Primary workflow\",\"description\":\"A clean default configuration for everyday product interfaces.\",\"text\":\"A configurable sample message.\",\"href\":\"#alert-demo\",\"actionHref\":\"#alert-demo\",\"actionLabel\":\"View details\",\"icon\":\"icon-[lucide--sparkles]\",\"iconClass\":\"icon-[lucide--sparkles]\",\"variant\":\"primary\",\"status\":\"Active\",\"time\":\"09:30\",\"current\":true,\"selected\":true,\"checked\":true,\"disabled\":false,\"outgoing\":false,\"open\":true,\"number\":1,\"count\":16,\"percentage\":72,\"color\":\"#7c3aed\",\"target\":\"_self\",\"ariaLabel\":\"Open primary workflow 1\",\"items\":[{\"label\":\"Nested option A\",\"value\":\"nested-a\"},{\"label\":\"Nested option B\",\"value\":\"nested-b\"}],\"links\":[{\"label\":\"Documentation\",\"href\":\"#documentation\"},{\"label\":\"API reference\",\"href\":\"#api-reference\"}],\"values\":[\"Included\",\"Standard\"]},{\"id\":\"alert-0-2\",\"key\":\"alert-0-2\",\"value\":\"secondary\",\"label\":\"Additional option\",\"title\":\"Supporting example\",\"description\":\"A clean default configuration for everyday product interfaces.\",\"text\":\"Another configurable message.\",\"href\":\"#alert-demo\",\"actionHref\":\"#alert-demo\",\"actionLabel\":\"View details\",\"icon\":\"icon-[lucide--sparkles]\",\"iconClass\":\"icon-[lucide--sparkles]\",\"variant\":\"primary\",\"status\":\"Active\",\"time\":\"09:30\",\"current\":false,\"selected\":false,\"checked\":false,\"disabled\":false,\"outgoing\":true,\"open\":true,\"number\":2,\"count\":32,\"percentage\":72,\"color\":\"#7c3aed\",\"target\":\"_self\",\"ariaLabel\":\"Open primary workflow 2\",\"items\":[{\"label\":\"Nested option A\",\"value\":\"nested-a\"},{\"label\":\"Nested option B\",\"value\":\"nested-b\"}],\"links\":[{\"label\":\"Documentation\",\"href\":\"#documentation\"},{\"label\":\"API reference\",\"href\":\"#api-reference\"}],\"values\":[\"Included\",\"Standard\"]}]") + state playground_shadow = ctx.url.searchParams.get("pg_shadow") ?? "none" + state playground_title = ctx.url.searchParams.get("pg_title") ?? "Changes saved" + state playground_description = ctx.url.searchParams.get("pg_description") ?? "Your workspace settings are up to date." + state playground_items = JSON.parse(ctx.url.searchParams.get("pg_items") ?? "[]") + state playground_actions = JSON.parse(ctx.url.searchParams.get("pg_actions") ?? "[]") state playground_showIcon = (ctx.url.searchParams.get("pg_showIcon") ?? "true") === "true" - state playground_icon = ctx.url.searchParams.get("pg_icon") ?? "" + state playground_icon = ctx.url.searchParams.get("pg_icon") ?? "icon-[lucide--circle-check]" state playground_dismissible = (ctx.url.searchParams.get("pg_dismissible") ?? "true") === "true" - state playground_dismissLabel = ctx.url.searchParams.get("pg_dismissLabel") ?? "Alert" + state playground_dismissLabel = ctx.url.searchParams.get("pg_dismissLabel") ?? "Dismiss alert" state playground_role = ctx.url.searchParams.get("pg_role") ?? "alert" state playground_live = ctx.url.searchParams.get("pg_live") ?? "polite" - state playground_linkLabel = ctx.url.searchParams.get("pg_linkLabel") ?? "Alert" - state playground_linkHref = ctx.url.searchParams.get("pg_linkHref") ?? "#alert-demo" - state playground_actionLabel = ctx.url.searchParams.get("pg_actionLabel") ?? "Alert" - state playground_actionHref = ctx.url.searchParams.get("pg_actionHref") ?? "#alert-demo" + state playground_linkLabel = ctx.url.searchParams.get("pg_linkLabel") ?? "" + state playground_linkHref = ctx.url.searchParams.get("pg_linkHref") ?? "" + state playground_actionLabel = ctx.url.searchParams.get("pg_actionLabel") ?? "" + state playground_actionHref = ctx.url.searchParams.get("pg_actionHref") ?? "" state playground_compact = (ctx.url.searchParams.get("pg_compact") ?? "false") === "true" seo { title = "Alert" @@ -47,454 +47,30 @@ page AlertDetail {
Component code
-
<Alert
-  title="Alert example"
-  description="A polished default alert for a modern application."
-  items='[
-    {
-      "id": "alert-0-1",
-      "key": "alert-0-1",
-      "value": "primary",
-      "label": "Primary workflow",
-      "title": "Primary workflow",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "A configurable sample message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 16,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    },
-    {
-      "id": "alert-0-2",
-      "key": "alert-0-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "Another configurable message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": false,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 32,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    }
-  ]'
-  actions='[
-    {
-      "id": "alert-0-1",
-      "key": "alert-0-1",
-      "value": "primary",
-      "label": "Primary workflow",
-      "title": "Primary workflow",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "A configurable sample message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 16,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    },
-    {
-      "id": "alert-0-2",
-      "key": "alert-0-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "Another configurable message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": false,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 32,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    }
-  ]'
-  showIcon="true"
-  dismissible="true"
-  dismissLabel="Alert"
-  linkLabel="Alert"
-  linkHref="#alert-demo"
-  actionLabel="Alert"
-  actionHref="#alert-demo"
-/>
+
page AlertExample {
+  state items = []
+  state actions = []
+  view {
+    <Alert
+      color="success"
+      shadow="none"
+      title="Changes saved"
+      description="Your workspace settings are up to date."
+      items="{items}"
+      actions="{actions}"
+      showIcon="true"
+      icon="icon-[lucide--circle-check]"
+      dismissible="true"
+    />
+  }
+}
Event outputInteract with the preview to inspect the typed payload.
Component props21 controls
-
+
@@ -503,737 +79,101 @@ page AlertDetail {
Live examples

Designed for real product surfaces

Compare configurations and resize the browser to check responsive behavior.

-
Recommended

Production default

Balanced spacing, hierarchy, and content for the most common product workflow.

+
Recommended

Success message

A concise confirmation that can be dismissed.

01
Live preview
-
+
-
+
Component usage.wrn
-
<Alert
-  title="Alert example"
-  description="A polished default alert for a modern application."
-  items='[
-    {
-      "id": "alert-0-1",
-      "key": "alert-0-1",
-      "value": "primary",
-      "label": "Primary workflow",
-      "title": "Primary workflow",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "A configurable sample message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 16,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    },
-    {
-      "id": "alert-0-2",
-      "key": "alert-0-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "Another configurable message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": false,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 32,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    }
-  ]'
-  actions='[
-    {
-      "id": "alert-0-1",
-      "key": "alert-0-1",
-      "value": "primary",
-      "label": "Primary workflow",
-      "title": "Primary workflow",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "A configurable sample message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 16,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    },
-    {
-      "id": "alert-0-2",
-      "key": "alert-0-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A clean default configuration for everyday product interfaces.",
-      "text": "Another configurable message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--sparkles]",
-      "iconClass": "icon-[lucide--sparkles]",
-      "variant": "primary",
-      "status": "Active",
-      "time": "09:30",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": false,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 32,
-      "percentage": 72,
-      "color": "#7c3aed",
-      "target": "_self",
-      "ariaLabel": "Open primary workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    }
-  ]'
-  showIcon="true"
-  dismissible="true"
-  dismissLabel="Alert"
-  linkLabel="Alert"
-  linkHref="#alert-demo"
-  actionLabel="Alert"
-  actionHref="#alert-demo"
-/>
+
page AlertExample {
+  state items = []
+  state actions = []
+  view {
+    <Alert
+      color="success"
+      shadow="none"
+      title="Changes saved"
+      description="Your workspace settings are up to date."
+      items="{items}"
+      actions="{actions}"
+      showIcon="true"
+      icon="icon-[lucide--circle-check]"
+      dismissible="true"
+    />
+  }
+}
-
Dense UI

Compact application

A tighter variation for dashboards, side panels, tables, and operational interfaces.

+
Compact

Informational notice

One useful message without unnecessary actions.

02
Live preview
-
+
-
+
Component usage.wrn
-
<Alert
-  size="sm"
-  variant="secondary"
-  title="Compact Alert"
-  description="A compact configuration for dashboards and dense product surfaces."
-  items='[
-    {
-      "id": "alert-1-1",
-      "key": "alert-1-1",
-      "value": "primary",
-      "label": "Secondary workflow",
-      "title": "Secondary workflow",
-      "description": "A compact configuration designed for dense application layouts.",
-      "text": "A configurable sample message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--zap]",
-      "iconClass": "icon-[lucide--zap]",
-      "variant": "secondary",
-      "status": "Active",
-      "time": "10:15",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 24,
-      "percentage": 48,
-      "color": "#0284c7",
-      "target": "_self",
-      "ariaLabel": "Open secondary workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    },
-    {
-      "id": "alert-1-2",
-      "key": "alert-1-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A compact configuration designed for dense application layouts.",
-      "text": "Another configurable message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--zap]",
-      "iconClass": "icon-[lucide--zap]",
-      "variant": "secondary",
-      "status": "Active",
-      "time": "10:15",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": false,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 48,
-      "percentage": 48,
-      "color": "#0284c7",
-      "target": "_self",
-      "ariaLabel": "Open secondary workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    }
-  ]'
-  actions='[
-    {
-      "id": "alert-1-1",
-      "key": "alert-1-1",
-      "value": "primary",
-      "label": "Secondary workflow",
-      "title": "Secondary workflow",
-      "description": "A compact configuration designed for dense application layouts.",
-      "text": "A configurable sample message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--zap]",
-      "iconClass": "icon-[lucide--zap]",
-      "variant": "secondary",
-      "status": "Active",
-      "time": "10:15",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 24,
-      "percentage": 48,
-      "color": "#0284c7",
-      "target": "_self",
-      "ariaLabel": "Open secondary workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    },
-    {
-      "id": "alert-1-2",
-      "key": "alert-1-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A compact configuration designed for dense application layouts.",
-      "text": "Another configurable message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "View details",
-      "icon": "icon-[lucide--zap]",
-      "iconClass": "icon-[lucide--zap]",
-      "variant": "secondary",
-      "status": "Active",
-      "time": "10:15",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": false,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 48,
-      "percentage": 48,
-      "color": "#0284c7",
-      "target": "_self",
-      "ariaLabel": "Open secondary workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Standard"
-      ]
-    }
-  ]'
-  showIcon="true"
-  icon="icon-[lucide--arrow-right]"
-  dismissible="true"
-  dismissLabel="Compact example"
-  linkLabel="Compact example"
-  linkHref="#alert-demo"
-  actionLabel="Compact example"
-  actionHref="#alert-demo"
-  compact="true"
-/>
+
page AlertExample {
+  state items = []
+  state actions = []
+  view {
+    <Alert
+      shadow="none"
+      title="Scheduled maintenance"
+      description="The dashboard will be unavailable Sunday, 02:00–02:30 UTC."
+      items="{items}"
+      actions="{actions}"
+      showIcon="true"
+      icon="icon-[lucide--info]"
+      dismissible="true"
+    />
+  }
+}
-
Extended

Rich configuration

A more expressive variation using additional data, stronger emphasis, and optional states.

+
Advanced

Action required

A warning with one relevant next step.

03
Live preview
-
+
-
+
Component usage.wrn
-
<Alert
-  size="lg"
-  variant="success"
-  title="Advanced Alert"
-  description="A richer configuration demonstrating additional content and hierarchy."
-  items='[
-    {
-      "id": "alert-2-1",
-      "key": "alert-2-1",
-      "value": "primary",
-      "label": "Advanced workflow",
-      "title": "Advanced workflow",
-      "description": "A richer configuration with more supporting information and actions.",
-      "text": "A configurable sample message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "Explore workflow",
-      "icon": "icon-[lucide--circle-check]",
-      "iconClass": "icon-[lucide--circle-check]",
-      "variant": "success",
-      "status": "Complete",
-      "time": "11:45",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 32,
-      "percentage": 91,
-      "color": "#059669",
-      "target": "_self",
-      "ariaLabel": "Open advanced workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Unlimited"
-      ]
-    },
-    {
-      "id": "alert-2-2",
-      "key": "alert-2-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A richer configuration with more supporting information and actions.",
-      "text": "Another configurable message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "Explore workflow",
-      "icon": "icon-[lucide--circle-check]",
-      "iconClass": "icon-[lucide--circle-check]",
-      "variant": "success",
-      "status": "Complete",
-      "time": "11:45",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": true,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 64,
-      "percentage": 91,
-      "color": "#059669",
-      "target": "_self",
-      "ariaLabel": "Open advanced workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Unlimited"
-      ]
-    }
-  ]'
-  actions='[
-    {
-      "id": "alert-2-1",
-      "key": "alert-2-1",
-      "value": "primary",
-      "label": "Advanced workflow",
-      "title": "Advanced workflow",
-      "description": "A richer configuration with more supporting information and actions.",
-      "text": "A configurable sample message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "Explore workflow",
-      "icon": "icon-[lucide--circle-check]",
-      "iconClass": "icon-[lucide--circle-check]",
-      "variant": "success",
-      "status": "Complete",
-      "time": "11:45",
-      "current": true,
-      "selected": true,
-      "checked": true,
-      "disabled": false,
-      "outgoing": false,
-      "open": true,
-      "number": 1,
-      "count": 32,
-      "percentage": 91,
-      "color": "#059669",
-      "target": "_self",
-      "ariaLabel": "Open advanced workflow 1",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Unlimited"
-      ]
-    },
-    {
-      "id": "alert-2-2",
-      "key": "alert-2-2",
-      "value": "secondary",
-      "label": "Additional option",
-      "title": "Supporting example",
-      "description": "A richer configuration with more supporting information and actions.",
-      "text": "Another configurable message.",
-      "href": "#alert-demo",
-      "actionHref": "#alert-demo",
-      "actionLabel": "Explore workflow",
-      "icon": "icon-[lucide--circle-check]",
-      "iconClass": "icon-[lucide--circle-check]",
-      "variant": "success",
-      "status": "Complete",
-      "time": "11:45",
-      "current": false,
-      "selected": false,
-      "checked": false,
-      "disabled": true,
-      "outgoing": true,
-      "open": true,
-      "number": 2,
-      "count": 64,
-      "percentage": 91,
-      "color": "#059669",
-      "target": "_self",
-      "ariaLabel": "Open advanced workflow 2",
-      "items": [
-        {
-          "label": "Nested option A",
-          "value": "nested-a"
-        },
-        {
-          "label": "Nested option B",
-          "value": "nested-b"
-        }
-      ],
-      "links": [
-        {
-          "label": "Documentation",
-          "href": "#documentation"
-        },
-        {
-          "label": "API reference",
-          "href": "#api-reference"
-        }
-      ],
-      "values": [
-        "Included",
-        "Unlimited"
-      ]
-    }
-  ]'
-  showIcon="true"
-  icon="icon-[lucide--trash-2]"
-  dismissible="true"
-  dismissLabel="Advanced example"
-  linkLabel="Advanced example"
-  linkHref="#alert-demo"
-  actionLabel="Advanced example"
-  actionHref="#alert-demo"
-/>
+
page AlertExample {
+  state items = []
+  state actions = []
+  view {
+    <Alert
+      color="warning"
+      shadow="none"
+      title="Payment needs attention"
+      description="Update your payment method to keep your subscription active."
+      items="{items}"
+      actions="{actions}"
+      showIcon="true"
+      icon="icon-[lucide--triangle-alert]"
+      dismissible="true"
+      actionLabel="Update payment"
+      actionHref="#payment"
+    />
+  }
+}
@@ -1254,7 +194,7 @@ if (component) registerOutputHandler(component, "action", (payload) =>
Component API

Props and configuration

All content and behavior shown above is supplied through these props and slots.

PropTypeDefaultRequired
sizestring"default"No
colorstring"info"No
variantstring"soft"No
classstring""No
radiusstring"md"No
shadowstring"sm"No
titlestring"Alert"No
descriptionstring""No
itemsunknown[][]No
actionsunknown[][]No
showIconbooleanfalseNo
iconstring""No
dismissiblebooleanfalseNo
dismissLabelstring"Dismiss alert"No
rolestring"alert"No
livestring"polite"No
linkLabelstring""No
linkHrefstring""No
actionLabelstring""No
actionHrefstring""No
compactbooleanfalseNo