// Generated by scripts/generate-showcase.mjs. Do not edit directly. page SwitchDetail { layout = "showcase" state playground_size = ctx.url.searchParams.get("pg_size") ?? "default" state playground_color = ctx.url.searchParams.get("pg_color") ?? "primary" state playground_id = ctx.url.searchParams.get("pg_id") ?? "switch-1" state playground_name = ctx.url.searchParams.get("pg_name") ?? "switchField" state playground_label = ctx.url.searchParams.get("pg_label") ?? "Email notifications" state playground_hiddenLabel = ctx.url.searchParams.get("pg_hiddenLabel") ?? "false" state playground_placeholder = ctx.url.searchParams.get("pg_placeholder") ?? "Enter switch" state playground_variant = ctx.url.searchParams.get("pg_variant") ?? "normal" state playground_icon = ctx.url.searchParams.get("pg_icon") ?? "" state playground_iconPosition = ctx.url.searchParams.get("pg_iconPosition") ?? "start" state playground_value = ctx.url.searchParams.get("pg_value") ?? "enabled" state playground_checked = ctx.url.searchParams.get("pg_checked") ?? "false" state playground_helperText = ctx.url.searchParams.get("pg_helperText") ?? "Helpful context for this field." state playground_cornerHint = ctx.url.searchParams.get("pg_cornerHint") ?? "" state playground_error = ctx.url.searchParams.get("pg_error") ?? "" state playground_inline = ctx.url.searchParams.get("pg_inline") ?? "false" state playground_readonly = ctx.url.searchParams.get("pg_readonly") ?? "false" state playground_disabled = ctx.url.searchParams.get("pg_disabled") ?? "false" state playground_required = ctx.url.searchParams.get("pg_required") ?? "false" state playground_class = ctx.url.searchParams.get("pg_class") ?? "" seo { title = "Switch" description = "Theme-aware, responsive switch component." } view {
Forms component

Switch

Theme-aware, responsive switch component.

20 props0 slots4 eventsTheme readyResponsive
Interactive playground

Configure Switch

Change any prop and inspect the server-rendered component immediately.

Live preview
Component code
<Switch
  id="switch-1"
  name="switchField"
  label="Email notifications"
  placeholder="Enter switch"
  value="enabled"
  helperText="Helpful context for this field."
/>
Component props20 controls
Live examples

Designed for real product surfaces

Compare configurations and resize the browser to check responsive behavior.

Basic usage

Default field

Use a labelled field with a value, placeholder, and supporting helper text.

01
Live preview
Component usage.wrn
<Switch
  id="switch-1"
  name="switchField"
  label="Email notifications"
  placeholder="Enter switch"
  value="enabled"
  helperText="Helpful context for this field."
/>
Appearance

Outlined with start icon

Combine an outlined treatment with a leading icon.

02
Live preview
Component usage.wrn
<Switch
  id="switch-2"
  name="switchField"
  label="Email notifications"
  placeholder="Enter switch"
  variant="outlined"
  icon="icon-[lucide--sparkles]"
  value="enabled"
/>
Appearance

Floating label

Move the label into the control while preserving an accessible field name.

03
Live preview
Component usage.wrn
<Switch
  id="switch-3"
  name="switchField"
  label="Email notifications"
  placeholder="Enter switch"
  variant="floating"
  icon="icon-[lucide--circle-user-round]"
  iconPosition="end"
  value="enabled"
/>
Appearance

Pill and compact size

Use pill styling and compact sizing in dense interfaces.

04
Live preview
Component usage.wrn
<Switch
  size="sm"
  id="switch-4"
  name="switchField"
  label="Email notifications"
  placeholder="Enter switch"
  variant="pill"
  value="enabled"
/>
States

Read only

Display a submitted value without allowing it to be changed.

05
Live preview
Component usage.wrn
<Switch
  id="switch-5"
  name="switchField"
  label="Email notifications"
  placeholder="Enter switch"
  value="enabled"
  checked="true"
  readonly="true"
/>
States

Disabled

Prevent interaction and communicate that the field is unavailable.

06
Live preview
Component usage.wrn
<Switch
  id="switch-6"
  name="switchField"
  label="Email notifications"
  placeholder="Enter switch"
  value="enabled"
  disabled="true"
/>
Layout

Inline helper text

Place the label, control, and supporting text on one responsive line.

07
Live preview
Component usage.wrn
<Switch
  id="switch-7"
  name="switchField"
  label="Email notifications"
  placeholder="Enter switch"
  value="enabled"
  helperText="We'll never share your details."
  inline="true"
/>
Layout

Field with corner hint

Place optional context opposite the label and keep the control on the next line.

08
Live preview
Component usage.wrn
<Switch
  id="switch-8"
  name="switchField"
  label="Email notifications"
  placeholder="Enter switch"
  value="enabled"
  cornerHint="Optional"
/>
Validation

Validated field

Surface validation through @wrnexus/validation-compatible error targets and accessible state.

09
Live preview
Component usage.wrn
<Switch
  id="switch-9"
  name="validatedField"
  label="Email notifications"
  placeholder="Enter switch"
  value="enabled"
  required="true"
/>
Component events

Events

Public events declared by this component. Custom events bubble from the component root and expose state through event.detail.

@inputFires immediately as the component value changes.
@changeFires when the component value or selection changes.
@focusFires when the component receives focus.
@blurFires when focus leaves the component.
Event listener.js
const component = document.querySelector('[data-wrn-events]')

component.addEventListener('input', (event) => {
  console.log(event.detail)
})
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
idstring""No
namestring""No
labelstring"Switch"No
hiddenLabelbooleanfalseNo
placeholderstring""No
variantstring"normal"No
iconstring""No
iconPositionstring"start"No
valuestring"on"No
checkedbooleanfalseNo
helperTextstring""No
cornerHintstring""No
errorstring""No
inlinebooleanfalseNo
readonlybooleanfalseNo
disabledbooleanfalseNo
requiredbooleanfalseNo
classstring""No
} }