Page not found
The address may be outdated or misspelled. No private or duplicate route is exposed here.
diff --git a/app/pages/404.wrn b/app/pages/404.wrn
index 701c9c81..891e58d8 100644
--- a/app/pages/404.wrn
+++ b/app/pages/404.wrn
@@ -7,10 +7,10 @@ page Pagenotfound {
view {
The address may be outdated or misspelled. No private or duplicate route is exposed here.
WRNexusJS 0.3.6 packages are not available from the public npm registry. Installation requires approval and private registry credentials supplied by WorkRoot. Never paste registry tokens into source control, issue reports, or support messages.
bunx @wrnexus/cli@0.3.6 create my-appAccess approval, response time, licensing terms, and support level remain owner-controlled. This site does not collect access requests directly.
WRNexusJS 0.4.0 packages are not available from the public npm registry. Installation requires approval and private registry credentials supplied by WorkRoot. Never paste registry tokens into source control, issue reports, or support messages.
bunx @wrnexus/cli@0.4.0 create my-appAccess approval, response time, licensing terms, and support level remain owner-controlled. This site does not collect access requests directly.
WRNexusJS is Bun-native and SSR-first. File discovery maps pages and API handlers; middleware enriches or short-circuits a request; the compiler turns .wrn declarations into server render functions and small feature runtimes.
core owns contexts, middleware, sessions and rooms; router discovers routes; compiler parses .wrn; ssr renders documents; csr supplies browser runtimes; dev-server and cli orchestrate development and builds.
Validation happens at trust boundaries. Session authentication establishes identity; authorization makes resource decisions. CSP, Trusted Types, CSRF, upload checks, WebSocket origins, request limits, and output escaping are layered controls—not substitutes for application policy.
Rooms are process-local unless connected through pub/sub. Redis-backed pub/sub distributes events. Queue durability depends on the selected driver and must be evaluated explicitly.
The gateway can dispatch multiple applications while preserving route, component, asset, config, and session boundaries. Validate host routing and isolation before production.
wrnexus build . produces dist/server.js and hashed/static assets. Run the server with Bun, apply migrations before traffic, terminate TLS at a trusted edge, and forward only expected proxy headers.
Mobile compatibility bridges SSR-safe Capacitor capabilities; native route generation is experimental and is not general web portability. Test each target platform.
app/routes.gen.ts, .wrnexus/, and dist/ are generated. The runtime is Bun-only. Preview packages are private. Historical compatibility and long-term support policy are not yet published.
WRNexusJS is Bun-native and SSR-first. File discovery maps pages and API handlers; middleware enriches or short-circuits a request; the compiler turns .wrn declarations into server render functions and small feature runtimes.
core owns contexts, middleware, sessions and rooms; router discovers routes; compiler parses .wrn; ssr renders documents; csr supplies browser runtimes; dev-server and cli orchestrate development and builds.
Validation happens at trust boundaries. Session authentication establishes identity; authorization makes resource decisions. CSP, Trusted Types, CSRF, upload checks, WebSocket origins, request limits, and output escaping are layered controls—not substitutes for application policy.
Rooms are process-local unless connected through pub/sub. Redis-backed pub/sub distributes events. Queue durability depends on the selected driver and must be evaluated explicitly.
The gateway can dispatch multiple applications while preserving route, component, asset, config, and session boundaries. Validate host routing and isolation before production.
wrnexus build . produces dist/server.js and hashed/static assets. Run the server with Bun, apply migrations before traffic, terminate TLS at a trusted edge, and forward only expected proxy headers.
Mobile compatibility bridges SSR-safe Capacitor capabilities; native route generation is experimental and is not general web portability. Test each target platform.
app/routes.gen.ts, .wrnexus/, and dist/ are generated. The runtime is Bun-only. Preview packages are private. Historical compatibility and long-term support policy are not yet published.
No comparative speed claims are published. A valid baseline must record scripts, commit, Bun/framework versions, hardware, OS, warmup, samples, workload, raw results, median, percentiles, memory, HTML size, browser JavaScript size, and run date.
The roadmap starts with WRNexusJS-only measurements before any maintained equivalent-workload comparison.
Documentation is aligned to all 29 installed packages. This release adds @wrnexus/helpers, original-request URL helpers, safe login redirects, working wrnexus workspace add, and forward-auth redirect propagation.
Run wrnexus update --latest and keep every @wrnexus/* package on 0.3.6. Existing applications must explicitly add @wrnexus/helpers before importing it; newly scaffolded applications include it automatically.
The packages use semantic-looking versions, but a formal compatibility and old-release support policy has not been approved. Preview consumers should treat minor releases as potentially requiring migration review.
Documentation is aligned to all 30 installed packages. This release adds @wrnexus/helpers, original-request URL helpers, safe login redirects, working wrnexus workspace add, and forward-auth redirect propagation.
Run wrnexus update --latest and keep every @wrnexus/* package on 0.4.0. Existing applications must explicitly add @wrnexus/helpers before importing it; newly scaffolded applications include it automatically.
The packages use semantic-looking versions, but a formal compatibility and old-release support policy has not been approved. Preview consumers should treat minor releases as potentially requiring migration review.
Production-ready, server-rendered components documented directly from the installed .wrn sources.
Showing {category} components
Theme-aware, responsive accordion component.
View component → @@ -57,7 +57,7 @@ page Components { layoutTheme-aware, responsive image component.
View component → formsTheme-aware, responsive input component.
View component → formsTheme-aware, responsive input group component.
View component → -advanced-formsTheme-aware, responsive input number component.
View component → +advanced-formsTheme-aware, responsive input number component.
View component → layoutTheme-aware, responsive kbd component.
View component → layoutTheme-aware, responsive layout splitter component.
View component → baseTheme-aware, responsive legend indicator component.
View component → @@ -100,7 +100,7 @@ page Components { baseTheme-aware, responsive tree view component.
View component → layoutTheme-aware, responsive typography component.
View component → integrationsTheme-aware, responsive wysiwyg editor component.
View component →Theme-aware, responsive accordion component.
Components are auto-discovered. Use the component directly in any .wrn view:
<Accordion
+ base componentAccordion
Theme-aware, responsive accordion component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Accordion
size="default"
color="primary"
items="[]"
@@ -37,7 +37,7 @@ page Accordioncomponent {
}
}
-
+
}
diff --git a/app/pages/components/advanced-date-picker.wrn b/app/pages/components/advanced-date-picker.wrn
index 69a3161a..2e08537e 100644
--- a/app/pages/components/advanced-date-picker.wrn
+++ b/app/pages/components/advanced-date-picker.wrn
@@ -10,10 +10,10 @@ page AdvancedDatePickercomponent {
W WRNexusJS
-
+
Browse documentation
- integrations componentAdvancedDatePicker
Theme-aware, responsive advanced date picker component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<AdvancedDatePicker
+ integrations componentAdvancedDatePicker
Theme-aware, responsive advanced date picker component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<AdvancedDatePicker
size="default"
color="primary"
title="Advanced Date Picker"
@@ -39,7 +39,7 @@ page AdvancedDatePickercomponent {
}
}
-
+
}
diff --git a/app/pages/components/advanced-range-slider.wrn b/app/pages/components/advanced-range-slider.wrn
index a4432829..6a943ed7 100644
--- a/app/pages/components/advanced-range-slider.wrn
+++ b/app/pages/components/advanced-range-slider.wrn
@@ -10,10 +10,10 @@ page AdvancedRangeSlidercomponent {
W WRNexusJS
-
+
Browse documentation
- integrations componentAdvancedRangeSlider
Theme-aware, responsive advanced range slider component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<AdvancedRangeSlider
+ integrations componentAdvancedRangeSlider
Theme-aware, responsive advanced range slider component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<AdvancedRangeSlider
size="default"
color="primary"
title="Advanced Range Slider"
@@ -39,7 +39,7 @@ page AdvancedRangeSlidercomponent {
}
}
-
+
}
diff --git a/app/pages/components/advanced-select.wrn b/app/pages/components/advanced-select.wrn
index 1d38feb3..1a03e5bb 100644
--- a/app/pages/components/advanced-select.wrn
+++ b/app/pages/components/advanced-select.wrn
@@ -10,10 +10,10 @@ page AdvancedSelectcomponent {
W WRNexusJS
-
+
Browse documentation
- advanced-forms componentAdvancedSelect
Theme-aware, responsive advanced select component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<AdvancedSelect
+ advanced-forms componentAdvancedSelect
Theme-aware, responsive advanced select component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<AdvancedSelect
size="default"
color="primary"
label="Advanced Select"
@@ -486,7 +486,7 @@ page AdvancedSelectcomponent {
}
}
-
+
}
diff --git a/app/pages/components/alert.wrn b/app/pages/components/alert.wrn
index 4d338a6a..cd113258 100644
--- a/app/pages/components/alert.wrn
+++ b/app/pages/components/alert.wrn
@@ -10,16 +10,16 @@ page Alertcomponent {
W WRNexusJS
-
+
Browse documentation
- base componentAlert
Theme-aware, responsive alert component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Alert
+ base componentAlert
Theme-aware, responsive alert component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Alert
size="default"
color="primary"
title="Alert"
description="description"
items="[]"
-/>
Legacy mount name: data-component="Alert".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"titlestringOptional "Alert"descriptionstringOptional ""itemsstringOptional []variantstringOptional "default"classstringOptional ""
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/Alert.wrn
component Alert {
+/>
Legacy mount name: data-component="Alert".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"titlestringOptional "Alert"descriptionstringOptional ""itemsstringOptional []variantstringOptional "default"classstringOptional ""
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/alert.wrn
component Alert {
props {
size = "default"
color = "primary"
@@ -39,7 +39,7 @@ page Alertcomponent {
}
}
-
+
}
diff --git a/app/pages/components/avatar-group.wrn b/app/pages/components/avatar-group.wrn
index cda247d4..e147b2de 100644
--- a/app/pages/components/avatar-group.wrn
+++ b/app/pages/components/avatar-group.wrn
@@ -10,10 +10,10 @@ page AvatarGroupcomponent {
W WRNexusJS
-
+
Browse documentation
- base componentAvatarGroup
Theme-aware, responsive avatar group component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<AvatarGroup
+ base componentAvatarGroup
Theme-aware, responsive avatar group component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<AvatarGroup
size="default"
color="primary"
title="Avatar Group"
@@ -39,7 +39,7 @@ page AvatarGroupcomponent {
}
}
-
+
}
diff --git a/app/pages/components/avatar.wrn b/app/pages/components/avatar.wrn
index ebcdf58a..04e528e5 100644
--- a/app/pages/components/avatar.wrn
+++ b/app/pages/components/avatar.wrn
@@ -10,16 +10,16 @@ page Avatarcomponent {
W WRNexusJS
-
+
Browse documentation
- base componentAvatar
Theme-aware, responsive avatar component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Avatar
+ base componentAvatar
Theme-aware, responsive avatar component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Avatar
size="default"
color="primary"
title="Avatar"
description="description"
items="[]"
-/>
Legacy mount name: data-component="Avatar".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"titlestringOptional "Avatar"descriptionstringOptional ""itemsstringOptional []variantstringOptional "default"classstringOptional ""
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/Avatar.wrn
component Avatar {
+/>
Legacy mount name: data-component="Avatar".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"titlestringOptional "Avatar"descriptionstringOptional ""itemsstringOptional []variantstringOptional "default"classstringOptional ""
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/avatar.wrn
component Avatar {
props {
size = "default"
color = "primary"
@@ -39,7 +39,7 @@ page Avatarcomponent {
}
}
-
+
}
diff --git a/app/pages/components/badge.wrn b/app/pages/components/badge.wrn
index 95b99525..849cc6e5 100644
--- a/app/pages/components/badge.wrn
+++ b/app/pages/components/badge.wrn
@@ -10,16 +10,16 @@ page Badgecomponent {
W WRNexusJS
-
+
Browse documentation
- base componentBadge
Theme-aware, responsive badge component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Badge
+ base componentBadge
Theme-aware, responsive badge component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Badge
size="default"
color="primary"
title="Badge"
description="description"
items="[]"
-/>
Legacy mount name: data-component="Badge".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"titlestringOptional "Badge"descriptionstringOptional ""itemsstringOptional []variantstringOptional "default"classstringOptional ""
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/Badge.wrn
component Badge {
+/>
Legacy mount name: data-component="Badge".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"titlestringOptional "Badge"descriptionstringOptional ""itemsstringOptional []variantstringOptional "default"classstringOptional ""
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/badge.wrn
component Badge {
props {
size = "default"
color = "primary"
@@ -39,7 +39,7 @@ page Badgecomponent {
}
}
-
+
}
diff --git a/app/pages/components/blockquote.wrn b/app/pages/components/blockquote.wrn
index 6e744b77..0a28876b 100644
--- a/app/pages/components/blockquote.wrn
+++ b/app/pages/components/blockquote.wrn
@@ -10,10 +10,10 @@ page Blockquotecomponent {
W WRNexusJS
-
+
Browse documentation
- base componentBlockquote
Theme-aware, responsive blockquote component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Blockquote
+ base componentBlockquote
Theme-aware, responsive blockquote component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Blockquote
size="default"
color="primary"
title="Blockquote"
@@ -39,7 +39,7 @@ page Blockquotecomponent {
}
}
-
+
}
diff --git a/app/pages/components/breadcrumb.wrn b/app/pages/components/breadcrumb.wrn
index 935c61e9..0713fabc 100644
--- a/app/pages/components/breadcrumb.wrn
+++ b/app/pages/components/breadcrumb.wrn
@@ -10,10 +10,10 @@ page Breadcrumbcomponent {
W WRNexusJS
-
+
Browse documentation
- navigation componentBreadcrumb
Theme-aware, responsive breadcrumb component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Breadcrumb
+ navigation componentBreadcrumb
Theme-aware, responsive breadcrumb component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Breadcrumb
size="default"
color="primary"
label="Breadcrumb"
@@ -37,7 +37,7 @@ page Breadcrumbcomponent {
}
}
-
+
}
diff --git a/app/pages/components/button-group.wrn b/app/pages/components/button-group.wrn
index 72ce5f76..cfbe786d 100644
--- a/app/pages/components/button-group.wrn
+++ b/app/pages/components/button-group.wrn
@@ -10,10 +10,10 @@ page ButtonGroupcomponent {
W WRNexusJS
-
+
Browse documentation
- base componentButtonGroup
Theme-aware, responsive button group component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<ButtonGroup
+ base componentButtonGroup
Theme-aware, responsive button group component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<ButtonGroup
size="default"
color="primary"
title="Button Group"
@@ -39,7 +39,7 @@ page ButtonGroupcomponent {
}
}
-
+
}
diff --git a/app/pages/components/button.wrn b/app/pages/components/button.wrn
index a4c4d28c..f0e3443a 100644
--- a/app/pages/components/button.wrn
+++ b/app/pages/components/button.wrn
@@ -10,16 +10,16 @@ page Buttoncomponent {
W WRNexusJS
-
+
Browse documentation
- base componentButton
Theme-aware, responsive button component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Button
+ base componentButton
Theme-aware, responsive button component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Button
label="Button"
loadingLabel="Loading…"
description="description"
as="as"
href="href"
-/>
Legacy mount name: data-component="Button".
Props and attributes
Prop Type Requirement Default labelstringOptional "Button"loadingLabelstringOptional "Loading…"descriptionstringOptional ""asstringOptional ""hrefstringOptional ""targetstringOptional ""relstringOptional ""typestringOptional "button"variantstringOptional "default"colorstringOptional "primary"sizestringOptional "default"disabledbooleanOptional falseloadingbooleanOptional falsepillbooleanOptional falsefullWidthbooleanOptional falseiconstringOptional ""iconPositionstringOptional "start"ariaLabelstringOptional ""ariaPressedstringOptional ""ariaExpandedstringOptional ""ariaControlsstringOptional ""titlestringOptional ""autofocusbooleanOptional falsecontrolClassstringOptional ""classstringOptional ""
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/Button.wrn
component Button {
+/>
Legacy mount name: data-component="Button".
Props and attributes
Prop Type Requirement Default labelstringOptional "Button"loadingLabelstringOptional "Loading…"descriptionstringOptional ""asstringOptional ""hrefstringOptional ""targetstringOptional ""relstringOptional ""typestringOptional "button"variantstringOptional "default"colorstringOptional "primary"sizestringOptional "default"disabledbooleanOptional falseloadingbooleanOptional falsepillbooleanOptional falsefullWidthbooleanOptional falseiconstringOptional ""iconPositionstringOptional "start"ariaLabelstringOptional ""ariaPressedstringOptional ""ariaExpandedstringOptional ""ariaControlsstringOptional ""titlestringOptional ""autofocusbooleanOptional falsecontrolClassstringOptional ""classstringOptional ""
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/button.wrn
component Button {
props {
label = "Button"
loadingLabel = "Loading…"
@@ -181,7 +181,7 @@ page Buttoncomponent {
}
}
-
+
}
diff --git a/app/pages/components/card.wrn b/app/pages/components/card.wrn
index 50d6a9da..a8055fb8 100644
--- a/app/pages/components/card.wrn
+++ b/app/pages/components/card.wrn
@@ -10,16 +10,16 @@ page Cardcomponent {
W WRNexusJS
-
+
Browse documentation
- base componentCard
Theme-aware, responsive card component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Card
+ base componentCard
Theme-aware, responsive card component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Card
size="default"
color="primary"
title="Card"
description="description"
items="[]"
-/>
Legacy mount name: data-component="Card".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"titlestringOptional "Card"descriptionstringOptional ""itemsstringOptional []variantstringOptional "default"classstringOptional ""
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/Card.wrn
component Card {
+/>
Legacy mount name: data-component="Card".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"titlestringOptional "Card"descriptionstringOptional ""itemsstringOptional []variantstringOptional "default"classstringOptional ""
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/card.wrn
component Card {
props {
size = "default"
color = "primary"
@@ -39,7 +39,7 @@ page Cardcomponent {
}
}
-
+
}
diff --git a/app/pages/components/carousel.wrn b/app/pages/components/carousel.wrn
index d4cb0f06..51a4829c 100644
--- a/app/pages/components/carousel.wrn
+++ b/app/pages/components/carousel.wrn
@@ -10,10 +10,10 @@ page Carouselcomponent {
W WRNexusJS
-
+
Browse documentation
- base componentCarousel
Theme-aware, responsive carousel component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Carousel
+ base componentCarousel
Theme-aware, responsive carousel component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Carousel
size="default"
color="primary"
title="Carousel"
@@ -39,7 +39,7 @@ page Carouselcomponent {
}
}
-
+
}
diff --git a/app/pages/components/chart.wrn b/app/pages/components/chart.wrn
index 2365c6c3..22f3eb91 100644
--- a/app/pages/components/chart.wrn
+++ b/app/pages/components/chart.wrn
@@ -10,10 +10,10 @@ page Chartcomponent {
W WRNexusJS
-
+
Browse documentation
- integrations componentChart
Theme-aware, responsive chart component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Chart
+ integrations componentChart
Theme-aware, responsive chart component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Chart
size="default"
color="primary"
title="Chart"
@@ -39,7 +39,7 @@ page Chartcomponent {
}
}
-
+
}
diff --git a/app/pages/components/chat-bubble.wrn b/app/pages/components/chat-bubble.wrn
index b3631a4b..15a6f826 100644
--- a/app/pages/components/chat-bubble.wrn
+++ b/app/pages/components/chat-bubble.wrn
@@ -10,10 +10,10 @@ page ChatBubblecomponent {
W WRNexusJS
-
+
Browse documentation
- base componentChatBubble
Theme-aware, responsive chat bubble component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<ChatBubble
+ base componentChatBubble
Theme-aware, responsive chat bubble component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<ChatBubble
size="default"
color="primary"
title="Chat Bubble"
@@ -39,7 +39,7 @@ page ChatBubblecomponent {
}
}
-
+
}
diff --git a/app/pages/components/checkbox.wrn b/app/pages/components/checkbox.wrn
index aba96139..337bf39e 100644
--- a/app/pages/components/checkbox.wrn
+++ b/app/pages/components/checkbox.wrn
@@ -10,16 +10,16 @@ page Checkboxcomponent {
W WRNexusJS
-
+
Browse documentation
- forms componentCheckbox
Theme-aware, responsive checkbox component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Checkbox
+ forms componentCheckbox
Theme-aware, responsive checkbox component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Checkbox
size="default"
color="primary"
label="Checkbox"
name="name"
value="on"
-/>
Legacy mount name: data-component="Checkbox".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"labelstringOptional "Checkbox"namestringOptional ""valuestringOptional "on"checkedbooleanOptional falsedisabledbooleanOptional falseclassstringOptional ""
Slots
This component does not declare a slot.
Events
This component does not declare a custom event.
Source contract
Installed source: components/Checkbox.wrn
component Checkbox {
+/>
Legacy mount name: data-component="Checkbox".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"labelstringOptional "Checkbox"namestringOptional ""valuestringOptional "on"checkedbooleanOptional falsedisabledbooleanOptional falseclassstringOptional ""
Slots
This component does not declare a slot.
Events
This component does not declare a custom event.
Source contract
Installed source: components/checkbox.wrn
component Checkbox {
props {
size = "default"
color = "primary"
@@ -38,7 +38,7 @@ page Checkboxcomponent {
}
}
-
+
}
diff --git a/app/pages/components/clipboard.wrn b/app/pages/components/clipboard.wrn
index 2b2343dd..bf343d72 100644
--- a/app/pages/components/clipboard.wrn
+++ b/app/pages/components/clipboard.wrn
@@ -10,10 +10,10 @@ page Clipboardcomponent {
W WRNexusJS
-
+
Browse documentation
- integrations componentClipboard
Theme-aware, responsive clipboard component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Clipboard
+ integrations componentClipboard
Theme-aware, responsive clipboard component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Clipboard
size="default"
color="primary"
title="Clipboard"
@@ -39,7 +39,7 @@ page Clipboardcomponent {
}
}
-
+
}
diff --git a/app/pages/components/collapse.wrn b/app/pages/components/collapse.wrn
index 33737541..2981db33 100644
--- a/app/pages/components/collapse.wrn
+++ b/app/pages/components/collapse.wrn
@@ -10,10 +10,10 @@ page Collapsecomponent {
W WRNexusJS
-
+
Browse documentation
- base componentCollapse
Theme-aware, responsive collapse component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Collapse
+ base componentCollapse
Theme-aware, responsive collapse component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Collapse
size="default"
color="primary"
items="[]"
@@ -37,7 +37,7 @@ page Collapsecomponent {
}
}
-
+
}
diff --git a/app/pages/components/color-picker.wrn b/app/pages/components/color-picker.wrn
index 157dcda0..cfcf5981 100644
--- a/app/pages/components/color-picker.wrn
+++ b/app/pages/components/color-picker.wrn
@@ -10,10 +10,10 @@ page ColorPickercomponent {
W WRNexusJS
-
+
Browse documentation
- forms componentColorPicker
Theme-aware, responsive color picker component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<ColorPicker
+ forms componentColorPicker
Theme-aware, responsive color picker component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<ColorPicker
size="default"
color="primary"
label="Color Picker"
@@ -43,7 +43,7 @@ page ColorPickercomponent {
}
}
-
+
}
diff --git a/app/pages/components/columns.wrn b/app/pages/components/columns.wrn
index fe532a6b..93a8959e 100644
--- a/app/pages/components/columns.wrn
+++ b/app/pages/components/columns.wrn
@@ -10,10 +10,10 @@ page Columnscomponent {
W WRNexusJS
-
+
Browse documentation
- layout componentColumns
Theme-aware, responsive columns component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Columns
+ layout componentColumns
Theme-aware, responsive columns component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Columns
size="default"
color="primary"
columns="2"
@@ -35,7 +35,7 @@ page Columnscomponent {
}
}
-
+
}
diff --git a/app/pages/components/combo-box.wrn b/app/pages/components/combo-box.wrn
index 1781cc4d..7e3f9467 100644
--- a/app/pages/components/combo-box.wrn
+++ b/app/pages/components/combo-box.wrn
@@ -10,16 +10,16 @@ page ComboBoxcomponent {
W WRNexusJS
-
+
Browse documentation
- advanced-forms componentComboBox
Editable autocomplete combobox with local and remote suggestions.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<ComboBox
+ advanced-forms componentComboBox
Editable autocomplete combobox with local and remote suggestions.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<ComboBox
size="default"
color="primary"
label="ComboBox"
name="name"
value="value"
-/>
Legacy mount name: data-component="ComboBox".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"labelstringOptional "ComboBox"namestringOptional ""valuestringOptional ""optionsstringOptional []groupsstringOptional []placeholderstringOptional "Search or select an option"searchPlaceholderstringOptional "Start typing…"clearablebooleanOptional trueallowCustomValuebooleanOptional falsedisabledbooleanOptional falserequiredbooleanOptional falseinvalidbooleanOptional falsevalidationMessagestringOptional ""helpTextstringOptional ""loadingbooleanOptional falseloadingLabelstringOptional "Loading suggestions…"emptyLabelstringOptional "No matching options"clearLabelstringOptional "Clear value"toggleLabelstringOptional "Toggle suggestions"searchModestringOptional "contains"searchFieldsstringOptional "label,description"minSearchLengthnumberOptional 0searchResultLimitnumberOptional 0optionTemplatestringOptional "default"defaultOpenbooleanOptional falsecloseOnSelectbooleanOptional truefixedbooleanOptional falseplacementstringOptional "bottom"autocompletestringOptional "off"remotebooleanOptional falseremoteUrlstringOptional ""remoteQueryParamstringOptional "q"remoteDebouncenumberOptional 250remoteAutoLoadbooleanOptional trueinfinitebooleanOptional falsehasMorebooleanOptional falsepagenumberOptional 1loadMoreLabelstringOptional "Load more"classstringOptional ""
Slots
This component does not declare a slot.
Events
searchselectchangeclearopencloseloaderror
Source contract
Installed source: components/ComboBox.wrn
component ComboBox {
+/>
Legacy mount name: data-component="ComboBox".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"labelstringOptional "ComboBox"namestringOptional ""valuestringOptional ""optionsstringOptional []groupsstringOptional []placeholderstringOptional "Search or select an option"searchPlaceholderstringOptional "Start typing…"clearablebooleanOptional trueallowCustomValuebooleanOptional falsedisabledbooleanOptional falserequiredbooleanOptional falseinvalidbooleanOptional falsevalidationMessagestringOptional ""helpTextstringOptional ""loadingbooleanOptional falseloadingLabelstringOptional "Loading suggestions…"emptyLabelstringOptional "No matching options"clearLabelstringOptional "Clear value"toggleLabelstringOptional "Toggle suggestions"searchModestringOptional "contains"searchFieldsstringOptional "label,description"minSearchLengthnumberOptional 0searchResultLimitnumberOptional 0optionTemplatestringOptional "default"defaultOpenbooleanOptional falsecloseOnSelectbooleanOptional truefixedbooleanOptional falseplacementstringOptional "bottom"autocompletestringOptional "off"remotebooleanOptional falseremoteUrlstringOptional ""remoteQueryParamstringOptional "q"remoteDebouncenumberOptional 250remoteAutoLoadbooleanOptional trueinfinitebooleanOptional falsehasMorebooleanOptional falsepagenumberOptional 1loadMoreLabelstringOptional "Load more"classstringOptional ""
Slots
This component does not declare a slot.
Events
searchselectchangeclearopencloseloaderror
Source contract
Installed source: components/Combobox.wrn
component ComboBox {
props {
size = "default"
color = "primary"
@@ -413,7 +413,7 @@ page ComboBoxcomponent {
}
}
-
+
}
diff --git a/app/pages/components/confetti.wrn b/app/pages/components/confetti.wrn
index 905b8521..d863171e 100644
--- a/app/pages/components/confetti.wrn
+++ b/app/pages/components/confetti.wrn
@@ -10,10 +10,10 @@ page Confetticomponent {
W WRNexusJS
-
+
Browse documentation
- integrations componentConfetti
Theme-aware, responsive confetti component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Confetti
+ integrations componentConfetti
Theme-aware, responsive confetti component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Confetti
size="default"
color="primary"
title="Confetti"
@@ -39,7 +39,7 @@ page Confetticomponent {
}
}
-
+
}
diff --git a/app/pages/components/container.wrn b/app/pages/components/container.wrn
index b73f0f5a..b43d6910 100644
--- a/app/pages/components/container.wrn
+++ b/app/pages/components/container.wrn
@@ -10,16 +10,16 @@ page Containercomponent {
W WRNexusJS
-
+
Browse documentation
- layout componentContainer
Theme-aware, responsive container component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Container
+ layout componentContainer
Theme-aware, responsive container component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Container
size="default"
color="primary"
columns="2"
gap="md"
maxWidth="xl"
-/>
Legacy mount name: data-component="Container".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"columnsnumberOptional 2gapstringOptional "md"maxWidthstringOptional "xl"classstringOptional ""
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/Container.wrn
component Container {
+/>
Legacy mount name: data-component="Container".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"columnsnumberOptional 2gapstringOptional "md"maxWidthstringOptional "xl"classstringOptional ""
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/container.wrn
component Container {
props {
size = "default"
color = "primary"
@@ -35,7 +35,7 @@ page Containercomponent {
}
}
-
+
}
diff --git a/app/pages/components/context-menu.wrn b/app/pages/components/context-menu.wrn
index 5c778e8e..f7a8877a 100644
--- a/app/pages/components/context-menu.wrn
+++ b/app/pages/components/context-menu.wrn
@@ -10,10 +10,10 @@ page ContextMenucomponent {
W WRNexusJS
-
+
Browse documentation
- overlays componentContextMenu
Theme-aware, responsive context menu component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<ContextMenu
+ overlays componentContextMenu
Theme-aware, responsive context menu component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<ContextMenu
size="default"
color="primary"
title="Context Menu"
@@ -42,7 +42,7 @@ page ContextMenucomponent {
}
}
-
+
}
diff --git a/app/pages/components/copy-markup.wrn b/app/pages/components/copy-markup.wrn
index aee4f927..bebe8cc1 100644
--- a/app/pages/components/copy-markup.wrn
+++ b/app/pages/components/copy-markup.wrn
@@ -10,10 +10,10 @@ page CopyMarkupcomponent {
W WRNexusJS
-
+
Browse documentation
- advanced-forms componentCopyMarkup
Theme-aware, responsive copy markup component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<CopyMarkup
+ advanced-forms componentCopyMarkup
Theme-aware, responsive copy markup component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<CopyMarkup
size="default"
color="primary"
label="Copy Markup"
@@ -43,7 +43,7 @@ page CopyMarkupcomponent {
}
}
-
+
}
diff --git a/app/pages/components/custom-scrollbar.wrn b/app/pages/components/custom-scrollbar.wrn
index 68dbd2f6..e39ad967 100644
--- a/app/pages/components/custom-scrollbar.wrn
+++ b/app/pages/components/custom-scrollbar.wrn
@@ -10,10 +10,10 @@ page CustomScrollbarcomponent {
W WRNexusJS
-
+
Browse documentation
- layout componentCustomScrollbar
Theme-aware, responsive custom scrollbar component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<CustomScrollbar
+ layout componentCustomScrollbar
Theme-aware, responsive custom scrollbar component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<CustomScrollbar
size="default"
color="primary"
columns="2"
@@ -35,7 +35,7 @@ page CustomScrollbarcomponent {
}
}
-
+
}
diff --git a/app/pages/components/data-map.wrn b/app/pages/components/data-map.wrn
index 71320a06..e0cbb612 100644
--- a/app/pages/components/data-map.wrn
+++ b/app/pages/components/data-map.wrn
@@ -10,10 +10,10 @@ page DataMapcomponent {
W WRNexusJS
-
+
Browse documentation
- integrations componentDataMap
Theme-aware, responsive data map component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<DataMap
+ integrations componentDataMap
Theme-aware, responsive data map component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<DataMap
size="default"
color="primary"
title="Data Map"
@@ -39,7 +39,7 @@ page DataMapcomponent {
}
}
-
+
}
diff --git a/app/pages/components/data-table.wrn b/app/pages/components/data-table.wrn
index 4acfcc4d..e1f8c32c 100644
--- a/app/pages/components/data-table.wrn
+++ b/app/pages/components/data-table.wrn
@@ -10,10 +10,10 @@ page DataTablecomponent {
W WRNexusJS
-
+
Browse documentation
- integrations componentDataTable
Theme-aware, responsive data table component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<DataTable
+ integrations componentDataTable
Theme-aware, responsive data table component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<DataTable
size="default"
color="primary"
caption="Data Table"
@@ -43,7 +43,7 @@ page DataTablecomponent {
}
}
-
+
}
diff --git a/app/pages/components/date-picker.wrn b/app/pages/components/date-picker.wrn
index add579db..0c877b10 100644
--- a/app/pages/components/date-picker.wrn
+++ b/app/pages/components/date-picker.wrn
@@ -10,10 +10,10 @@ page DatePickercomponent {
W WRNexusJS
-
+
Browse documentation
- base componentDatePicker
Theme-aware, responsive date picker component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<DatePicker
+ base componentDatePicker
Theme-aware, responsive date picker component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<DatePicker
size="default"
color="primary"
label="Date Picker"
@@ -43,7 +43,7 @@ page DatePickercomponent {
}
}
-
+
}
diff --git a/app/pages/components/device-frame.wrn b/app/pages/components/device-frame.wrn
index 641a28dc..ed07b0c9 100644
--- a/app/pages/components/device-frame.wrn
+++ b/app/pages/components/device-frame.wrn
@@ -10,10 +10,10 @@ page DeviceFramecomponent {
W WRNexusJS
-
+
Browse documentation
- base componentDeviceFrame
Theme-aware, responsive device frame component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<DeviceFrame
+ base componentDeviceFrame
Theme-aware, responsive device frame component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<DeviceFrame
size="default"
color="primary"
title="Device Frame"
@@ -39,7 +39,7 @@ page DeviceFramecomponent {
}
}
-
+
}
diff --git a/app/pages/components/divider.wrn b/app/pages/components/divider.wrn
index 03c3212d..2445d3a6 100644
--- a/app/pages/components/divider.wrn
+++ b/app/pages/components/divider.wrn
@@ -10,15 +10,15 @@ page Dividercomponent {
W WRNexusJS
-
+
Browse documentation
- layout componentDivider
Theme-aware, responsive divider component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Divider
+ layout componentDivider
Theme-aware, responsive divider component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Divider
size="default"
color="primary"
label="label"
orientation="horizontal"
-/>
Legacy mount name: data-component="Divider".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"labelstringOptional ""orientationstringOptional "horizontal"classstringOptional ""
Slots
This component does not declare a slot.
Events
This component does not declare a custom event.
Source contract
Installed source: components/Divider.wrn
component Divider {
+/>
Legacy mount name: data-component="Divider".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"labelstringOptional ""orientationstringOptional "horizontal"classstringOptional ""
Slots
This component does not declare a slot.
Events
This component does not declare a custom event.
Source contract
Installed source: components/divider.wrn
component Divider {
props {
size = "default"
color = "primary"
@@ -31,7 +31,7 @@ page Dividercomponent {
}
}
-
+
}
diff --git a/app/pages/components/drag-and-drop.wrn b/app/pages/components/drag-and-drop.wrn
index a867e41d..1e8c8af7 100644
--- a/app/pages/components/drag-and-drop.wrn
+++ b/app/pages/components/drag-and-drop.wrn
@@ -10,10 +10,10 @@ page DragAndDropcomponent {
W WRNexusJS
-
+
Browse documentation
- integrations componentDragAndDrop
Theme-aware, responsive drag and drop component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<DragAndDrop
+ integrations componentDragAndDrop
Theme-aware, responsive drag and drop component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<DragAndDrop
size="default"
color="primary"
title="Drag And Drop"
@@ -39,7 +39,7 @@ page DragAndDropcomponent {
}
}
-
+
}
diff --git a/app/pages/components/drawer.wrn b/app/pages/components/drawer.wrn
index 67214de2..52187f5a 100644
--- a/app/pages/components/drawer.wrn
+++ b/app/pages/components/drawer.wrn
@@ -10,10 +10,10 @@ page Drawercomponent {
W WRNexusJS
-
+
Browse documentation
- overlays componentDrawer
Theme-aware, responsive drawer component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Drawer
+ overlays componentDrawer
Theme-aware, responsive drawer component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Drawer
size="default"
color="primary"
title="Drawer"
@@ -42,7 +42,7 @@ page Drawercomponent {
}
}
-
+
}
diff --git a/app/pages/components/dropdown.wrn b/app/pages/components/dropdown.wrn
index 01f78e0b..168cfb1b 100644
--- a/app/pages/components/dropdown.wrn
+++ b/app/pages/components/dropdown.wrn
@@ -10,10 +10,10 @@ page Dropdowncomponent {
W WRNexusJS
-
+
Browse documentation
- overlays componentDropdown
Theme-aware, responsive dropdown component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Dropdown
+ overlays componentDropdown
Theme-aware, responsive dropdown component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Dropdown
size="default"
color="primary"
title="Dropdown"
@@ -42,7 +42,7 @@ page Dropdowncomponent {
}
}
-
+
}
diff --git a/app/pages/components/file-input.wrn b/app/pages/components/file-input.wrn
index ff4d85f7..7e60809a 100644
--- a/app/pages/components/file-input.wrn
+++ b/app/pages/components/file-input.wrn
@@ -10,10 +10,10 @@ page FileInputcomponent {
W WRNexusJS
-
+
Browse documentation
- forms componentFileInput
Theme-aware, responsive file input component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<FileInput
+ forms componentFileInput
Theme-aware, responsive file input component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<FileInput
size="default"
color="primary"
label="File Input"
@@ -43,7 +43,7 @@ page FileInputcomponent {
}
}
-
+
}
diff --git a/app/pages/components/file-upload-progress.wrn b/app/pages/components/file-upload-progress.wrn
index 378eb926..2bea4ee2 100644
--- a/app/pages/components/file-upload-progress.wrn
+++ b/app/pages/components/file-upload-progress.wrn
@@ -10,10 +10,10 @@ page FileUploadProgresscomponent {
W WRNexusJS
-
+
Browse documentation
- base componentFileUploadProgress
Theme-aware, responsive file upload progress component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<FileUploadProgress
+ base componentFileUploadProgress
Theme-aware, responsive file upload progress component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<FileUploadProgress
size="default"
color="primary"
label="Progress"
@@ -39,7 +39,7 @@ page FileUploadProgresscomponent {
}
}
-
+
}
diff --git a/app/pages/components/file-upload.wrn b/app/pages/components/file-upload.wrn
index 8be73a2c..ac536388 100644
--- a/app/pages/components/file-upload.wrn
+++ b/app/pages/components/file-upload.wrn
@@ -10,10 +10,10 @@ page FileUploadcomponent {
W WRNexusJS
-
+
Browse documentation
- integrations componentFileUpload
Theme-aware, responsive file upload component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<FileUpload
+ integrations componentFileUpload
Theme-aware, responsive file upload component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<FileUpload
size="default"
color="primary"
title="File Upload"
@@ -39,7 +39,7 @@ page FileUploadcomponent {
}
}
-
+
}
diff --git a/app/pages/components/grid.wrn b/app/pages/components/grid.wrn
index 1ef21092..1613a7e7 100644
--- a/app/pages/components/grid.wrn
+++ b/app/pages/components/grid.wrn
@@ -10,16 +10,16 @@ page Gridcomponent {
W WRNexusJS
-
+
Browse documentation
- layout componentGrid
Theme-aware, responsive grid component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Grid
+ layout componentGrid
Theme-aware, responsive grid component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Grid
size="default"
color="primary"
columns="2"
gap="md"
maxWidth="xl"
-/>
Legacy mount name: data-component="Grid".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"columnsnumberOptional 2gapstringOptional "md"maxWidthstringOptional "xl"classstringOptional ""
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/Grid.wrn
component Grid {
+/>
Legacy mount name: data-component="Grid".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"columnsnumberOptional 2gapstringOptional "md"maxWidthstringOptional "xl"classstringOptional ""
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/grid.wrn
component Grid {
props {
size = "default"
color = "primary"
@@ -35,7 +35,7 @@ page Gridcomponent {
}
}
-
+
}
diff --git a/app/pages/components/image.wrn b/app/pages/components/image.wrn
index 0e86f6c8..1f2f2595 100644
--- a/app/pages/components/image.wrn
+++ b/app/pages/components/image.wrn
@@ -10,10 +10,10 @@ page Imagecomponent {
W WRNexusJS
-
+
Browse documentation
- layout componentImage
Theme-aware, responsive image component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Image
+ layout componentImage
Theme-aware, responsive image component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Image
size="default"
color="primary"
src="src"
@@ -39,7 +39,7 @@ page Imagecomponent {
}
}
-
+
}
diff --git a/app/pages/components/input-group.wrn b/app/pages/components/input-group.wrn
index 6dec2903..b3ed520d 100644
--- a/app/pages/components/input-group.wrn
+++ b/app/pages/components/input-group.wrn
@@ -10,10 +10,10 @@ page InputGroupcomponent {
W WRNexusJS
-
+
Browse documentation
- forms componentInputGroup
Theme-aware, responsive input group component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<InputGroup
+ forms componentInputGroup
Theme-aware, responsive input group component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<InputGroup
size="default"
color="primary"
label="Input Group"
@@ -43,7 +43,7 @@ page InputGroupcomponent {
}
}
-
+
}
diff --git a/app/pages/components/input-number.wrn b/app/pages/components/input-number.wrn
index a93d6d31..b5a87e69 100644
--- a/app/pages/components/input-number.wrn
+++ b/app/pages/components/input-number.wrn
@@ -10,40 +10,644 @@ page InputNumbercomponent {
W WRNexusJS
-
+
Browse documentation
- advanced-forms componentInputNumber
Theme-aware, responsive input number component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<InputNumber
+ advanced-forms componentInputNumber
Theme-aware, responsive input number component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<InputNumber
size="default"
color="primary"
- label="Input Number"
- name="name"
- value="value"
-/>
Legacy mount name: data-component="InputNumber".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"labelstringOptional "Input Number"namestringOptional ""valuestringOptional ""placeholderstringOptional ""typestringOptional "number"minstringOptional ""maxstringOptional ""stepstringOptional ""disabledbooleanOptional falserequiredbooleanOptional falseclassstringOptional ""
Slots
This component does not declare a slot.
Events
This component does not declare a custom event.
Source contract
Installed source: components/InputNumber.wrn
component InputNumber {
- props {
- size = "default"
- color = "primary"
- label = "Input Number"
- name = ""
- value = ""
- placeholder = ""
- type = "number"
- min = ""
- max = ""
- step = ""
- disabled = false
- required = false
- class = ""
- }
- view {
- <label class="wire-next wire-next--color-{color} wire-next--size-{size} wire-next--field wire-next--input-number {class}">
+ variant="default"
+ id="id"
+ name="quantity"
+/>
Legacy mount name: data-component="InputNumber".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"variantstringOptional "default"classstringOptional ""idstringOptional ""namestringOptional "quantity"valuenumberOptional 0minstringOptional ""maxstringOptional ""stepnumberOptional 1precisionstringOptional "auto"labelstringOptional ""descriptionstringOptional ""helpTextstringOptional ""errorstringOptional ""invalidbooleanOptional falseprefixstringOptional ""suffixstringOptional ""placeholderstringOptional ""autocompletestringOptional "off"inputModestringOptional "decimal"ariaLabelstringOptional ""requiredbooleanOptional falsedisabledbooleanOptional falseinputDisabledbooleanOptional falsebuttonsDisabledbooleanOptional falsereadonlybooleanOptional falseallowInputbooleanOptional truekeyboardbooleanOptional truewheelbooleanOptional falseclampbooleanOptional truefullWidthbooleanOptional falseshowButtonsbooleanOptional trueshowValidationMessagebooleanOptional truedecrementLabelstringOptional "Decrease value"incrementLabelstringOptional "Increase value"controlsLabelstringOptional "Quantity controls"requiredMessagestringOptional "A value is required."minMessagestringOptional "Value is below the minimum."maxMessagestringOptional "Value is above the maximum."
Slots
This component does not declare a slot.
Events
inputchangeincrementdecrement
Source contract
Installed source: components/InputNumber.wrn
component InputNumber {
+ props {
+ size = "default"
+ color = "primary"
+ variant = "default"
+ class = ""
+
+ id = ""
+ name = "quantity"
+ value = 0
+ min = ""
+ max = ""
+ step = 1
+ precision = "auto"
+
+ label = ""
+ description = ""
+ helpText = ""
+ error = ""
+ invalid = false
+
+ prefix = ""
+ suffix = ""
+ placeholder = ""
+ autocomplete = "off"
+ inputMode = "decimal"
+ ariaLabel = ""
+
+ required = false
+ disabled = false
+ inputDisabled = false
+ buttonsDisabled = false
+ readonly = false
+ allowInput = true
+ keyboard = true
+ wheel = false
+ clamp = true
+ fullWidth = false
+ showButtons = true
+ showValidationMessage = true
+
+ decrementLabel = "Decrease value"
+ incrementLabel = "Increase value"
+ controlsLabel = "Quantity controls"
+ requiredMessage = "A value is required."
+ minMessage = "Value is below the minimum."
+ maxMessage = "Value is above the maximum."
+
+ @event input = function
+ @event change = function
+ @event increment = function
+ @event decrement = function
+ }
+
+ state currentValue = value
+ state committedValue = value
+
+ functions {
+ function inputId() {
+ if (id !== "") {
+ return id
+ }
+
+ if (name !== "") {
+ return name
+ }
+
+ return "input-number"
+ }
+
+ function descriptionId() {
+ return inputId() + "-description"
+ }
+
+ function messageId() {
+ return inputId() + "-message"
+ }
+
+ function componentColor() {
+ if (color === "secondary") {
+ return "var(--wire-color-secondary)"
+ }
+
+ if (color === "success") {
+ return "var(--wire-color-success)"
+ }
+
+ if (color === "warning") {
+ return "var(--wire-color-warning)"
+ }
+
+ if (color === "danger") {
+ return "var(--wire-color-danger)"
+ }
+
+ if (color === "info") {
+ return "var(--wire-color-info)"
+ }
+
+ return "var(--wire-color-primary)"
+ }
+
+ function hasMin() {
+ return min !== "" && min !== null && min !== undefined
+ }
+
+ function hasMax() {
+ return max !== "" && max !== null && max !== undefined
+ }
+
+ function isBlank() {
+ return currentValue === "" || currentValue === null || currentValue === undefined
+ }
+
+ function normalizedStep() {
+ return Number(step) > 0 ? Number(step) : 1
+ }
+
+ function inferredPrecision() {
+ if (precision !== "auto" && precision !== "") {
+ return Math.max(0, Number(precision) || 0)
+ }
+
+ if (String(normalizedStep()).includes(".")) {
+ return String(normalizedStep()).split(".")[1].length
+ }
+
+ return 0
+ }
+
+ function precisionFactor() {
+ return Math.pow(10, inferredPrecision())
+ }
+
+ function roundValue(nextValue) {
+ return Math.round(Number(nextValue) * precisionFactor()) / precisionFactor()
+ }
+
+ function clampValue(nextValue) {
+ nextValue = Number(nextValue)
+
+ if (hasMin() && nextValue < Number(min)) {
+ nextValue = Number(min)
+ }
+
+ if (hasMax() && nextValue > Number(max)) {
+ nextValue = Number(max)
+ }
+
+ return roundValue(nextValue)
+ }
+
+ function isBelowMin() {
+ return !isBlank() && hasMin() && Number(currentValue) < Number(min)
+ }
+
+ function isAboveMax() {
+ return !isBlank() && hasMax() && Number(currentValue) > Number(max)
+ }
+
+ function isInvalid() {
+ return (
+ invalid ||
+ error !== "" ||
+ (required && isBlank()) ||
+ isBelowMin() ||
+ isAboveMax()
+ )
+ }
+
+ function validationMessage() {
+ if (error !== "") {
+ return error
+ }
+
+ if (required && isBlank()) {
+ return requiredMessage
+ }
+
+ if (isBelowMin()) {
+ return minMessage
+ }
+
+ if (isAboveMax()) {
+ return maxMessage
+ }
+
+ return ""
+ }
+
+ function hasMessage() {
+ return (
+ helpText !== "" ||
+ (showValidationMessage && isInvalid() && validationMessage() !== "")
+ )
+ }
+
+ function describedBy() {
+ if (description !== "" && hasMessage()) {
+ return descriptionId() + " " + messageId()
+ }
+
+ if (description !== "") {
+ return descriptionId()
+ }
+
+ if (hasMessage()) {
+ return messageId()
+ }
+
+ return ""
+ }
+
+ function decrementDisabled() {
+ return (
+ disabled ||
+ readonly ||
+ buttonsDisabled ||
+ (hasMin() && !isBlank() && Number(currentValue) <= Number(min))
+ )
+ }
+
+ function incrementDisabled() {
+ return (
+ disabled ||
+ readonly ||
+ buttonsDisabled ||
+ (hasMax() && !isBlank() && Number(currentValue) >= Number(max))
+ )
+ }
+
+ function dispatchInputNumberEvent(
+ sourceEvent,
+ eventName,
+ action,
+ previousValue,
+ root,
+ customEvent
+ ) {
+ root = sourceEvent.currentTarget.closest("[data-wrn-input-number]")
+
+ if (!root && sourceEvent.target) {
+ root = sourceEvent.target.closest("[data-wrn-input-number]")
+ }
+
+ if (!root) {
+ return
+ }
+
+ customEvent = document.createEvent("CustomEvent")
+ customEvent.initCustomEvent(eventName, true, false, {
+ component: "InputNumber",
+ name: name,
+ value: currentValue,
+ previousValue: previousValue,
+ action: action,
+ min: hasMin() ? Number(min) : null,
+ max: hasMax() ? Number(max) : null,
+ step: normalizedStep(),
+ valid: !isInvalid()
+ })
+ root.dispatchEvent(customEvent)
+ }
+
+ function applyControlValue(nextValue, action, sourceEvent, previousValue) {
+ previousValue = currentValue
+ currentValue = clampValue(nextValue)
+ committedValue = currentValue
+
+ dispatchInputNumberEvent(
+ sourceEvent,
+ "input",
+ action,
+ previousValue
+ )
+ dispatchInputNumberEvent(
+ sourceEvent,
+ "change",
+ action,
+ previousValue
+ )
+ dispatchInputNumberEvent(
+ sourceEvent,
+ action,
+ action,
+ previousValue
+ )
+ }
+
+ function incrementValue(sourceEvent, nextValue) {
+ if (incrementDisabled()) {
+ return
+ }
+
+ if (isBlank()) {
+ nextValue = hasMin() ? Number(min) : normalizedStep()
+ } else {
+ nextValue =
+ Number(currentValue) +
+ normalizedStep() * (sourceEvent.shiftKey ? 10 : 1)
+ }
+
+ applyControlValue(nextValue, "increment", sourceEvent)
+ }
+
+ function decrementValue(sourceEvent, nextValue) {
+ if (decrementDisabled()) {
+ return
+ }
+
+ if (isBlank()) {
+ nextValue = hasMax() ? Number(max) : -normalizedStep()
+ } else {
+ nextValue =
+ Number(currentValue) -
+ normalizedStep() * (sourceEvent.shiftKey ? 10 : 1)
+ }
+
+ applyControlValue(nextValue, "decrement", sourceEvent)
+ }
+
+ function handleInput(sourceEvent, previousValue, nextValue) {
+ sourceEvent.stopPropagation()
+ previousValue = currentValue
+ nextValue = sourceEvent.target.value
+
+ if (nextValue === "") {
+ currentValue = ""
+ } else if (!Number.isNaN(Number(nextValue))) {
+ currentValue = roundValue(Number(nextValue))
+ }
+
+ dispatchInputNumberEvent(
+ sourceEvent,
+ "input",
+ "input",
+ previousValue
+ )
+ }
+
+ function handleChange(sourceEvent, previousValue) {
+ sourceEvent.stopPropagation()
+ previousValue = committedValue
+
+ if (!isBlank()) {
+ currentValue = clamp
+ ? clampValue(currentValue)
+ : roundValue(currentValue)
+ }
+
+ committedValue = currentValue
+
+ dispatchInputNumberEvent(
+ sourceEvent,
+ "change",
+ "change",
+ previousValue
+ )
+ }
+
+ function handleKeydown(sourceEvent) {
+ if (
+ !keyboard ||
+ disabled ||
+ readonly ||
+ inputDisabled ||
+ !allowInput
+ ) {
+ return
+ }
+
+ if (sourceEvent.key === "ArrowUp") {
+ sourceEvent.preventDefault()
+ incrementValue(sourceEvent)
+ } else if (sourceEvent.key === "ArrowDown") {
+ sourceEvent.preventDefault()
+ decrementValue(sourceEvent)
+ } else if (sourceEvent.key === "Home" && hasMin()) {
+ sourceEvent.preventDefault()
+ applyControlValue(Number(min), "decrement", sourceEvent)
+ } else if (sourceEvent.key === "End" && hasMax()) {
+ sourceEvent.preventDefault()
+ applyControlValue(Number(max), "increment", sourceEvent)
+ }
+ }
+
+ function handleWheel(sourceEvent) {
+ if (
+ !wheel ||
+ disabled ||
+ readonly ||
+ inputDisabled ||
+ !allowInput
+ ) {
+ return
+ }
+
+ sourceEvent.preventDefault()
+
+ if (sourceEvent.deltaY < 0) {
+ incrementValue(sourceEvent)
+ } else if (sourceEvent.deltaY > 0) {
+ decrementValue(sourceEvent)
+ }
+ }
+ }
+
+ view {
+ <div
+ {...attrs}
+ data-wrn-input-number
+ data-variant='{variant}'
+ data-size='{size}'
+ data-color='{color}'
+ data-value='{currentValue}'
+ data-invalid='{isInvalid() ? "true" : "false"}'
+ data-disabled='{disabled ? "true" : "false"}'
+ style='--input-number-accent: {componentColor()};'
+ class='relative flex flex-col gap-1.5 text-[var(--wire-color-text)] {fullWidth ? "w-full" : variant === "compact" ? "w-fit max-w-full" : "w-full max-w-sm"} {disabled ? "opacity-60" : ""} {class}'
+ >
+ {#if label !== "" && variant !== "labeled" && variant !== "seat"}
+ <label
+ for='{inputId()}'
+ class='inline-flex items-center gap-1 text-sm font-semibold leading-5 text-[var(--wire-color-text)]'
+ >
<span>{label}</span>
- <input {...attrs} type="{type}" name="{name}" value="{value}" placeholder="{placeholder}" min="{min}" max="{max}" step="{step}" disabled="{disabled}" required="{required}" />
- </label>
+ {#if required}
+ <span
+ aria-hidden="true"
+ class='text-[var(--wire-color-danger)]'
+ >*</span>
+ {/if}
+ </label>
+ {/if}
+
+ {#if description !== "" && variant !== "labeled" && variant !== "seat"}
+ <p
+ id='{descriptionId()}'
+ class='m-0 text-xs leading-5 text-[var(--wire-color-muted)]'
+ >
+ {description}
+ </p>
+ {/if}
+
+ <div
+ class='group flex min-w-0 overflow-hidden border bg-[var(--wire-color-surface)] text-[var(--wire-color-text)] shadow-[var(--wire-shadow-1)] transition-[border-color,box-shadow,background-color] duration-[var(--wire-motion-base)] ease-[var(--wire-ease-standard)] focus-within:border-[var(--input-number-accent)] focus-within:shadow-[0_0_0_3px_color-mix(in_srgb,var(--input-number-accent)_18%,transparent)] {variant === "compact" ? "rounded-full" : "rounded-[var(--wire-radius-sm)]"} {size === "xs" ? "min-h-8 text-xs" : size === "sm" ? "min-h-9 text-sm" : size === "lg" ? "min-h-12 text-base" : size === "xl" ? "min-h-14 text-lg" : "min-h-10 text-sm"} {isInvalid() ? "border-[var(--wire-color-danger)] focus-within:border-[var(--wire-color-danger)] focus-within:shadow-[0_0_0_3px_color-mix(in_srgb,var(--wire-color-danger)_18%,transparent)]" : "border-[var(--wire-color-border)]"} {disabled ? "cursor-not-allowed bg-[var(--wire-color-surface-2)]" : ""}'
+ >
+ {#if variant === "horizontal" && showButtons}
+ <button
+ type="button"
+ aria-label='{decrementLabel}'
+ aria-controls='{inputId()}'
+ disabled='{decrementDisabled()}'
+ @click='decrementValue(event)'
+ class='inline-flex shrink-0 items-center justify-center border-r border-[var(--wire-color-border)] bg-transparent text-[var(--wire-color-muted)] transition-[color,background-color] duration-[var(--wire-motion-fast)] hover:bg-[var(--wire-color-surface-2)] hover:text-[var(--input-number-accent)] focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--input-number-accent)] disabled:cursor-not-allowed disabled:opacity-40 {size === "xs" ? "w-8" : size === "sm" ? "w-9" : size === "lg" ? "w-12" : size === "xl" ? "w-14" : "w-10"}'
+ >
+ <span
+ aria-hidden="true"
+ class='icon-[lucide--minus] size-4'
+ >
+ </span>
+ </button>
+ {/if}
+
+ <div
+ class='flex min-w-0 flex-1 {variant === "labeled" ? "flex-col items-stretch justify-center gap-0.5" : variant === "seat" ? "items-center justify-between gap-3" : "items-center"} {size === "xs" ? "px-2" : size === "sm" ? "px-2.5" : size === "lg" ? "px-4" : size === "xl" ? "px-5" : "px-3"}'
+ >
+ {#if variant === "labeled" || variant === "seat"}
+ <div class='min-w-0 flex-1'>
+ {#if label !== ""}
+ <label
+ for='{inputId()}'
+ class='block truncate font-semibold leading-4 text-[var(--wire-color-text)] {variant === "labeled" ? "text-xs font-medium text-[var(--wire-color-muted)]" : "text-sm"}'
+ >
+ {label}
+ {#if required}
+ <span
+ aria-hidden="true"
+ class='ml-0.5 text-[var(--wire-color-danger)]'
+ >*</span>
+ {/if}
+ </label>
+ {/if}
+
+ {#if description !== ""}
+ <span
+ id='{descriptionId()}'
+ class='block truncate text-xs leading-4 text-[var(--wire-color-muted)]'
+ >
+ {description}
+ </span>
+ {/if}
+ </div>
+ {/if}
+
+ <div
+ class='flex min-w-0 items-center {variant === "seat" ? "w-auto shrink-0" : "w-full"}'
+ >
+ {#if prefix !== ""}
+ <span
+ aria-hidden="true"
+ class='shrink-0 pr-1.5 text-[var(--wire-color-muted)]'
+ >
+ {prefix}
+ </span>
+ {/if}
+
+ <input
+ id='{inputId()}'
+ name='{name}'
+ type="number"
+ value='{currentValue}'
+ min='{min}'
+ max='{max}'
+ step='{normalizedStep()}'
+ placeholder='{placeholder}'
+ autocomplete='{autocomplete}'
+ inputmode='{inputMode}'
+ aria-label='{ariaLabel !== "" ? ariaLabel : label !== "" ? label : name}'
+ aria-describedby='{describedBy()}'
+ aria-invalid='{isInvalid() ? "true" : "false"}'
+ aria-required='{required ? "true" : "false"}'
+ aria-disabled='{disabled || inputDisabled ? "true" : "false"}'
+ required='{required}'
+ disabled='{disabled}'
+ readonly='{readonly || inputDisabled || !allowInput}'
+ tabindex='{inputDisabled ? "-1" : "0"}'
+ @input='handleInput(event)'
+ @change='handleChange(event)'
+ @keydown='handleKeydown(event)'
+ @wheel='handleWheel(event)'
+ class='min-w-0 flex-1 appearance-none border-0 bg-transparent p-0 font-medium leading-none text-[var(--wire-color-text)] outline-none placeholder:text-[var(--wire-color-muted)] read-only:cursor-default disabled:cursor-not-allowed [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none {variant === "horizontal" || variant === "compact" || variant === "seat" ? "text-center" : "text-left"} {variant === "seat" ? "w-10 flex-none" : "w-full"}'
+ />
+
+ {#if suffix !== ""}
+ <span
+ aria-hidden="true"
+ class='shrink-0 pl-1.5 text-[var(--wire-color-muted)]'
+ >
+ {suffix}
+ </span>
+ {/if}
+ </div>
+ </div>
+
+ {#if variant === "horizontal" && showButtons}
+ <button
+ type="button"
+ aria-label='{incrementLabel}'
+ aria-controls='{inputId()}'
+ disabled='{incrementDisabled()}'
+ @click='incrementValue(event)'
+ class='inline-flex shrink-0 items-center justify-center border-l border-[var(--wire-color-border)] bg-transparent text-[var(--wire-color-muted)] transition-[color,background-color] duration-[var(--wire-motion-fast)] hover:bg-[var(--wire-color-surface-2)] hover:text-[var(--input-number-accent)] focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--input-number-accent)] disabled:cursor-not-allowed disabled:opacity-40 {size === "xs" ? "w-8" : size === "sm" ? "w-9" : size === "lg" ? "w-12" : size === "xl" ? "w-14" : "w-10"}'
+ >
+ <span
+ aria-hidden="true"
+ class='icon-[lucide--plus] size-4'
+ >
+ </span>
+ </button>
+ {:else}
+ {#if showButtons}
+ <div
+ role="group"
+ aria-label='{controlsLabel}'
+ class='flex shrink-0 border-l border-[var(--wire-color-border)] {variant === "vertical" ? "flex-col" : "flex-row"}'
+ >
+ <button
+ type="button"
+ aria-label='{decrementLabel}'
+ aria-controls='{inputId()}'
+ disabled='{decrementDisabled()}'
+ @click='decrementValue(event)'
+ class='inline-flex items-center justify-center bg-transparent text-[var(--wire-color-muted)] transition-[color,background-color] duration-[var(--wire-motion-fast)] hover:bg-[var(--wire-color-surface-2)] hover:text-[var(--input-number-accent)] focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--input-number-accent)] disabled:cursor-not-allowed disabled:opacity-40 {variant === "vertical" ? "flex-1 border-b border-[var(--wire-color-border)]" : "border-r border-[var(--wire-color-border)]"} {size === "xs" ? "w-8" : size === "sm" ? "w-9" : size === "lg" ? "w-12" : size === "xl" ? "w-14" : "w-10"}'
+ >
+ <span
+ aria-hidden="true"
+ class='icon-[lucide--minus] size-4'
+ >
+ </span>
+ </button>
+ <button
+ type="button"
+ aria-label='{incrementLabel}'
+ aria-controls='{inputId()}'
+ disabled='{incrementDisabled()}'
+ @click='incrementValue(event)'
+ class='inline-flex items-center justify-center bg-transparent text-[var(--wire-color-muted)] transition-[color,background-color] duration-[var(--wire-motion-fast)] hover:bg-[var(--wire-color-surface-2)] hover:text-[var(--input-number-accent)] focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--input-number-accent)] disabled:cursor-not-allowed disabled:opacity-40 {variant === "vertical" ? "flex-1" : ""} {size === "xs" ? "w-8" : size === "sm" ? "w-9" : size === "lg" ? "w-12" : size === "xl" ? "w-14" : "w-10"}'
+ >
+ <span
+ aria-hidden="true"
+ class='icon-[lucide--plus] size-4'
+ >
+ </span>
+ </button>
+ </div>
+ {/if}
+ {/if}
+ </div>
+
+ {#if showValidationMessage && isInvalid() && validationMessage() !== ""}
+ <p
+ id='{messageId()}'
+ role="alert"
+ aria-live="polite"
+ class='m-0 flex items-center gap-1.5 text-xs leading-5 text-[var(--wire-color-danger)]'
+ >
+ <span
+ aria-hidden="true"
+ class='icon-[lucide--circle-alert] size-3.5 shrink-0'
+ >
+ </span>
+ <span>{validationMessage()}</span>
+ </p>
+ {/if}
+
+ {#if (!showValidationMessage || !isInvalid() || validationMessage() === "") && helpText !== ""}
+ <p
+ id='{messageId()}'
+ class='m-0 text-xs leading-5 text-[var(--wire-color-muted)]'
+ >
+ {helpText}
+ </p>
+ {/if}
+ </div>
}
}
-
+
}
diff --git a/app/pages/components/input.wrn b/app/pages/components/input.wrn
index 93f78dd6..10bbfeb4 100644
--- a/app/pages/components/input.wrn
+++ b/app/pages/components/input.wrn
@@ -10,16 +10,16 @@ page Inputcomponent {
W WRNexusJS
-
+
Browse documentation
- forms componentInput
Theme-aware, responsive input component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Input
+ forms componentInput
Theme-aware, responsive input component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Input
size="default"
color="primary"
label="Input"
name="name"
value="value"
-/>
Legacy mount name: data-component="Input".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"labelstringOptional "Input"namestringOptional ""valuestringOptional ""placeholderstringOptional ""typestringOptional "text"minstringOptional ""maxstringOptional ""stepstringOptional ""disabledbooleanOptional falserequiredbooleanOptional falseclassstringOptional ""
Slots
This component does not declare a slot.
Events
This component does not declare a custom event.
Source contract
Installed source: components/Input.wrn
component Input {
+/>
Legacy mount name: data-component="Input".
Props and attributes
Prop Type Requirement Default sizestringOptional "default"colorstringOptional "primary"labelstringOptional "Input"namestringOptional ""valuestringOptional ""placeholderstringOptional ""typestringOptional "text"minstringOptional ""maxstringOptional ""stepstringOptional ""disabledbooleanOptional falserequiredbooleanOptional falseclassstringOptional ""
Slots
This component does not declare a slot.
Events
This component does not declare a custom event.
Source contract
Installed source: components/input.wrn
component Input {
props {
size = "default"
color = "primary"
@@ -43,7 +43,7 @@ page Inputcomponent {
}
}
-
+
}
diff --git a/app/pages/components/kbd.wrn b/app/pages/components/kbd.wrn
index 46697d45..ed78e796 100644
--- a/app/pages/components/kbd.wrn
+++ b/app/pages/components/kbd.wrn
@@ -10,10 +10,10 @@ page Kbdcomponent {
W WRNexusJS
-
+
Browse documentation
- layout componentKbd
Theme-aware, responsive kbd component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Kbd
+ layout componentKbd
Theme-aware, responsive kbd component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Kbd
size="default"
color="primary"
label="⌘ K"
@@ -31,7 +31,7 @@ page Kbdcomponent {
}
}
-
+
}
diff --git a/app/pages/components/layout-splitter.wrn b/app/pages/components/layout-splitter.wrn
index ea163380..84e44469 100644
--- a/app/pages/components/layout-splitter.wrn
+++ b/app/pages/components/layout-splitter.wrn
@@ -10,10 +10,10 @@ page LayoutSplittercomponent {
W WRNexusJS
-
+
Browse documentation
- layout componentLayoutSplitter
Theme-aware, responsive layout splitter component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<LayoutSplitter
+ layout componentLayoutSplitter
Theme-aware, responsive layout splitter component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<LayoutSplitter
size="default"
color="primary"
columns="2"
@@ -35,7 +35,7 @@ page LayoutSplittercomponent {
}
}
-
+
}
diff --git a/app/pages/components/legend-indicator.wrn b/app/pages/components/legend-indicator.wrn
index ab701f6e..b0896c3e 100644
--- a/app/pages/components/legend-indicator.wrn
+++ b/app/pages/components/legend-indicator.wrn
@@ -10,10 +10,10 @@ page LegendIndicatorcomponent {
W WRNexusJS
-
+
Browse documentation
- base componentLegendIndicator
Theme-aware, responsive legend indicator component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<LegendIndicator
+ base componentLegendIndicator
Theme-aware, responsive legend indicator component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<LegendIndicator
size="default"
color="primary"
title="Legend Indicator"
@@ -39,7 +39,7 @@ page LegendIndicatorcomponent {
}
}
-
+
}
diff --git a/app/pages/components/link.wrn b/app/pages/components/link.wrn
index acff62f0..9f775e18 100644
--- a/app/pages/components/link.wrn
+++ b/app/pages/components/link.wrn
@@ -10,10 +10,10 @@ page Linkcomponent {
W WRNexusJS
-
+
Browse documentation
- layout componentLink
Theme-aware, responsive link component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Link
+ layout componentLink
Theme-aware, responsive link component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Link
size="default"
color="primary"
label="Link"
@@ -36,7 +36,7 @@ page Linkcomponent {
}
}
-
+
}
diff --git a/app/pages/components/list-group.wrn b/app/pages/components/list-group.wrn
index 943b9331..3a331344 100644
--- a/app/pages/components/list-group.wrn
+++ b/app/pages/components/list-group.wrn
@@ -10,10 +10,10 @@ page ListGroupcomponent {
W WRNexusJS
-
+
Browse documentation
- base componentListGroup
Theme-aware, responsive list group component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<ListGroup
+ base componentListGroup
Theme-aware, responsive list group component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<ListGroup
size="default"
color="primary"
title="List Group"
@@ -39,7 +39,7 @@ page ListGroupcomponent {
}
}
-
+
}
diff --git a/app/pages/components/list.wrn b/app/pages/components/list.wrn
index 1a8c8671..1c9eb3e5 100644
--- a/app/pages/components/list.wrn
+++ b/app/pages/components/list.wrn
@@ -10,10 +10,10 @@ page Listcomponent {
W WRNexusJS
-
+
Browse documentation
- base componentList
Theme-aware, responsive list component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<List
+ base componentList
Theme-aware, responsive list component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<List
size="default"
color="primary"
title="List"
@@ -39,7 +39,7 @@ page Listcomponent {
}
}
-
+
}
diff --git a/app/pages/components/map.wrn b/app/pages/components/map.wrn
index 2a4975f7..6521bc10 100644
--- a/app/pages/components/map.wrn
+++ b/app/pages/components/map.wrn
@@ -10,10 +10,10 @@ page Mapcomponent {
W WRNexusJS
-
+
Browse documentation
- integrations componentMap
Theme-aware, responsive map component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Map
+ integrations componentMap
Theme-aware, responsive map component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Map
size="default"
color="primary"
title="Map"
@@ -39,7 +39,7 @@ page Mapcomponent {
}
}
-
+
}
diff --git a/app/pages/components/marquee.wrn b/app/pages/components/marquee.wrn
index 365cd2f4..8bc19776 100644
--- a/app/pages/components/marquee.wrn
+++ b/app/pages/components/marquee.wrn
@@ -10,10 +10,10 @@ page Marqueecomponent {
W WRNexusJS
-
+
Browse documentation
- base componentMarquee
Theme-aware, responsive marquee component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<Marquee
+