@urbicon-ui/design-content 6.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.md +54 -0
  2. package/content/auth/components/account-settings/llm.txt +33 -0
  3. package/content/auth/components/forgot-password-page/llm.txt +25 -0
  4. package/content/auth/components/invitation-manager/llm.txt +28 -0
  5. package/content/auth/components/login-page/llm.txt +34 -0
  6. package/content/auth/components/notification-badge/llm.txt +21 -0
  7. package/content/auth/components/notification-center/llm.txt +33 -0
  8. package/content/auth/components/notification-listener/llm.txt +24 -0
  9. package/content/auth/components/passkey-manager/llm.txt +27 -0
  10. package/content/auth/components/push-permission-prompt/llm.txt +32 -0
  11. package/content/auth/components/register-page/llm.txt +35 -0
  12. package/content/auth/components/reset-password-page/llm.txt +26 -0
  13. package/content/auth/components/session-manager/llm.txt +32 -0
  14. package/content/auth/components/two-factor-manager/llm.txt +40 -0
  15. package/content/auth/components/verify-email-page/llm.txt +25 -0
  16. package/content/blocks/components/area-chart/llm.txt +46 -0
  17. package/content/blocks/components/bar-chart/llm.txt +44 -0
  18. package/content/blocks/components/calendar/llm.txt +105 -0
  19. package/content/blocks/components/chart-frame/llm.txt +38 -0
  20. package/content/blocks/components/command-palette/llm.txt +60 -0
  21. package/content/blocks/components/composition-bar/llm.txt +69 -0
  22. package/content/blocks/components/currency-input/llm.txt +65 -0
  23. package/content/blocks/components/date-picker/llm.txt +90 -0
  24. package/content/blocks/components/donut-chart/llm.txt +45 -0
  25. package/content/blocks/components/empty-state/llm.txt +43 -0
  26. package/content/blocks/components/file-upload/llm.txt +76 -0
  27. package/content/blocks/components/guide/llm.txt +49 -0
  28. package/content/blocks/components/guide-article/llm.txt +30 -0
  29. package/content/blocks/components/guide-beacon/llm.txt +38 -0
  30. package/content/blocks/components/guide-hint/llm.txt +41 -0
  31. package/content/blocks/components/guide-marker/llm.txt +36 -0
  32. package/content/blocks/components/guide-mention/llm.txt +31 -0
  33. package/content/blocks/components/guide-panel/llm.txt +42 -0
  34. package/content/blocks/components/guide-provider/llm.txt +31 -0
  35. package/content/blocks/components/line-chart/llm.txt +45 -0
  36. package/content/blocks/components/locale-switcher/llm.txt +44 -0
  37. package/content/blocks/components/planner/llm.txt +68 -0
  38. package/content/blocks/components/sankey/llm.txt +72 -0
  39. package/content/blocks/components/sidebar-layout/llm.txt +87 -0
  40. package/content/blocks/components/sparkline/llm.txt +33 -0
  41. package/content/blocks/components/theme-switcher/llm.txt +40 -0
  42. package/content/blocks/primitives/accordion/llm.txt +57 -0
  43. package/content/blocks/primitives/alert/llm.txt +54 -0
  44. package/content/blocks/primitives/avatar/llm.txt +61 -0
  45. package/content/blocks/primitives/badge/llm.txt +60 -0
  46. package/content/blocks/primitives/breadcrumb/llm.txt +47 -0
  47. package/content/blocks/primitives/button/llm.txt +80 -0
  48. package/content/blocks/primitives/button-group/llm.txt +65 -0
  49. package/content/blocks/primitives/card/llm.txt +68 -0
  50. package/content/blocks/primitives/checkbox/llm.txt +61 -0
  51. package/content/blocks/primitives/collapsible/llm.txt +66 -0
  52. package/content/blocks/primitives/combobox/llm.txt +86 -0
  53. package/content/blocks/primitives/confirm-dialog/llm.txt +47 -0
  54. package/content/blocks/primitives/dialog/llm.txt +59 -0
  55. package/content/blocks/primitives/drawer/llm.txt +54 -0
  56. package/content/blocks/primitives/form-field/llm.txt +43 -0
  57. package/content/blocks/primitives/input/llm.txt +73 -0
  58. package/content/blocks/primitives/menu/llm.txt +81 -0
  59. package/content/blocks/primitives/pagination/llm.txt +68 -0
  60. package/content/blocks/primitives/popover/llm.txt +72 -0
  61. package/content/blocks/primitives/progress/llm.txt +55 -0
  62. package/content/blocks/primitives/radio-group/llm.txt +53 -0
  63. package/content/blocks/primitives/segment-group/llm.txt +51 -0
  64. package/content/blocks/primitives/select/llm.txt +130 -0
  65. package/content/blocks/primitives/separator/llm.txt +45 -0
  66. package/content/blocks/primitives/sidebar/llm.txt +79 -0
  67. package/content/blocks/primitives/skeleton/llm.txt +54 -0
  68. package/content/blocks/primitives/slider/llm.txt +82 -0
  69. package/content/blocks/primitives/spinner/llm.txt +46 -0
  70. package/content/blocks/primitives/stepper/llm.txt +60 -0
  71. package/content/blocks/primitives/tab/llm.txt +72 -0
  72. package/content/blocks/primitives/textarea/llm.txt +61 -0
  73. package/content/blocks/primitives/toast/llm.txt +45 -0
  74. package/content/blocks/primitives/toggle/llm.txt +62 -0
  75. package/content/blocks/primitives/toolbar/llm.txt +60 -0
  76. package/content/blocks/primitives/tooltip/llm.txt +54 -0
  77. package/content/component-catalog.json +5010 -0
  78. package/content/design-system/patterns/dashboard.md +55 -0
  79. package/content/design-system/patterns/form-page.md +69 -0
  80. package/content/design-system/patterns/onboarding-guide.md +50 -0
  81. package/content/design-system/patterns/planning-board.md +46 -0
  82. package/content/design-system/patterns/settings-page.md +48 -0
  83. package/content/design-system/patterns/tab-navigation.md +136 -0
  84. package/content/design-system/principles.md +260 -0
  85. package/content/docs/components/api-reference/llm.txt +32 -0
  86. package/content/docs/components/code-example/llm.txt +44 -0
  87. package/content/docs/components/code-panel/llm.txt +26 -0
  88. package/content/docs/components/docs-layout/llm.txt +61 -0
  89. package/content/docs/components/info-card/llm.txt +31 -0
  90. package/content/docs/components/playground-configurator/llm.txt +49 -0
  91. package/content/docs/components/section/llm.txt +46 -0
  92. package/content/docs/components/table-of-contents/llm.txt +48 -0
  93. package/content/docs/components/types-reference/llm.txt +38 -0
  94. package/content/guides/llms-full-template.md +1019 -0
  95. package/content/icons.json +4834 -0
  96. package/content/meta.json +5 -0
  97. package/content/table/table/llm.txt +110 -0
  98. package/content/verbs/adopt.md +33 -0
  99. package/content/verbs/audit.md +29 -0
  100. package/content/verbs/compose.md +38 -0
  101. package/content/verbs/critique.md +27 -0
  102. package/content/verbs/fix.md +29 -0
  103. package/content/verbs/migrate.md +30 -0
  104. package/content/verbs/onboard.md +33 -0
  105. package/content/verbs/polish.md +25 -0
  106. package/content/verbs/redesign.md +29 -0
  107. package/content/verbs/retheme.md +29 -0
  108. package/package.json +45 -0
  109. package/src/content-loader.test.ts +78 -0
  110. package/src/content-loader.ts +97 -0
  111. package/src/index.ts +23 -0
@@ -0,0 +1,72 @@
1
+
2
+ ---
3
+
4
+ ## Popover
5
+ Floating panel anchored to a trigger element. Uses the native Popover API
6
+ for top-layer rendering, light dismiss, and Escape handling. Floating UI provides
7
+ precise positioning with automatic flip, shift, and optional width syncing.
8
+
9
+ **Import:** `import { Popover } from '@urbicon-ui/blocks';`
10
+
11
+ ### Examples
12
+ ```svelte
13
+ <Popover placement="bottom-start">
14
+ {#snippet trigger()}
15
+ <Button>Open</Button>
16
+ {/snippet}
17
+ {#snippet children()}
18
+ <div class="p-3">Popover content</div>
19
+ {/snippet}
20
+ </Popover>
21
+ ```
22
+
23
+ ```svelte
24
+ <Popover placement="top" arrow bind:open={showInfo}>
25
+ {#snippet trigger()}
26
+ <Button variant="ghost" size="sm">More info</Button>
27
+ {/snippet}
28
+ {#snippet children()}
29
+ <div class="max-w-xs p-4">
30
+ <h4 class="font-semibold">Details</h4>
31
+ <p class="text-text-secondary text-sm">Additional context shown in a floating panel.</p>
32
+ </div>
33
+ {/snippet}
34
+ </Popover>
35
+ ```
36
+
37
+ ### Variants
38
+ - size: lg, md, sm (default: md)
39
+
40
+ ### Api
41
+ | Prop | Type | Required | Default | Description |
42
+ | --- | --- | :---: | --- | --- |
43
+ | children | `Snippet` | yes | | Popover body rendered inside the floating panel. |
44
+ | ...HTMLAttributes<HTMLDivElement> | `HTMLAttributes` | no | | HTML attributes (excluding: 'children') |
45
+ | ...PopoverVariants | `VariantProps` | no | | Styling variants from PopoverVariants |
46
+ | autoTrigger | `boolean` | no | | When true (default), the trigger wrapper handles click and keyboard to toggle the popover. Set to `false` to manage `open` yourself. |
47
+ | class | `string` | no | | Extra classes merged onto the floating panel element. |
48
+ | closeOnClickOutside | `boolean` | no | | Whether the popover closes on outside click / pointer interaction. Default `true`. Set to `false` to pin the popover open until the consumer explicitly toggles `open`. |
49
+ | closeOnEscape | `boolean` | no | | Whether the popover closes on Escape key. Default `true`. Set to `false` for cases where Escape should be intercepted by an inner widget (e.g. an editable cell that wants to revert on Escape). |
50
+ | offsetDistance | `number` | no | | Gap in px between the trigger edge and the popover. |
51
+ | onClickOutside | `() => void` | no | | Fires after an outside click closes the popover. Use for analytics or to clear ephemeral state on dismiss. Does NOT control whether the popover closes — that is governed by `closeOnClickOutside`. |
52
+ | onEscape | `() => void` | no | | Fires after Escape closes the popover. Use for analytics or to clear ephemeral state on dismiss. Does NOT control whether the popover closes — that is governed by `closeOnEscape`. |
53
+ | onOpenChange | `(open: boolean) => void` | no | | Fires when the popover opens or closes from user interaction (click, escape, click-outside). Receives the new open state. |
54
+ | open | `boolean` | no | | Controlled open state. Supports `bind:open`. |
55
+ | placement | `Placement` | no | | Where the popover appears relative to the trigger. All Floating UI `Placement` values are supported. |
56
+ | preset | `string` | no | | Apply a named preset registered via `<BlocksProvider presets={{ Popover: {...} }}>`. Prefer this over `class` overrides when the requested look falls outside the semantic intent palette — presets keep hover/active/dark-mode logic coherent and make the custom look reusable across the project. |
57
+ | shiftPadding | `number` | no | | Minimum px padding from viewport edges when the popover shifts to stay visible. |
58
+ | slotClasses | `Partial<Record<'base', string>>` | no | | Per-slot class overrides. Available slots: `base` (the floating panel). |
59
+ | syncMinWidth | `boolean` | no | | Match the popover's *minimum* width to the trigger width while still letting content grow the panel beyond it. Useful for menu-style overlays where items longer than the trigger should not get truncated. Ignored when `syncWidth` is true (hard width wins). |
60
+ | syncWidth | `boolean` | no | | Match the popover width to the trigger width. Useful for select/autocomplete patterns where the floating panel should align with the input. |
61
+ | trigger | `Snippet` | no | | Trigger element that anchors and toggles the popover. Receives click/keyboard handlers when `autoTrigger` is true. |
62
+ | triggerElement | `HTMLElement` | no | | External trigger element ref. Use instead of the `trigger` snippet when the trigger lives outside the Popover tree. Supports `bind:triggerElement`. |
63
+ | unstyled | `boolean` | no | | Strip all default tv() classes. Combine with `class` or `slotClasses` for full custom styling. |
64
+ | usePortal | `boolean` | no | true | Render the floating panel into the browser's top layer via the native `popover` attribute, so it cannot be clipped by `overflow: auto` ancestors. Set to `false` when the popover is itself embedded inside another floating surface (Dialog, Drawer, another Popover) — nested top-layer rendering stacks unpredictably across browsers and stealing focus from the parent surface is usually unwanted. In-flow mode positions the panel absolutely relative to the trigger's offset parent. |
65
+ | size | `'lg' | 'md' | 'sm'` | no | md | Controls the dimensions, padding, and text size of the Popover. Affects the component's physical footprint. Available options: lg, md, sm. |
66
+
67
+ Inherited from:
68
+ - PopoverVariants (external)
69
+ - Omit<HTMLAttributes<HTMLDivElement>, 'children'> (omit-pattern)
70
+
71
+ ### Slots (slotClasses keys)
72
+ `base`
@@ -0,0 +1,55 @@
1
+
2
+ ---
3
+
4
+ ## Progress
5
+ Progress indicator for determinate and indeterminate loading states.
6
+ Supports linear bar and circular ring variants with semantic intents and animation.
7
+
8
+ **Import:** `import { Progress } from '@urbicon-ui/blocks';`
9
+
10
+ ### Examples
11
+ ```svelte
12
+ <Progress value={65} label="Upload progress" showValue />
13
+ ```
14
+
15
+ ```svelte
16
+ <Progress value={80} shape="circular" intent="success" showValue />
17
+ ```
18
+
19
+ ### Variants
20
+ - intent: danger, neutral, primary, secondary, success, warning (default: primary)
21
+ - size: lg, md, sm, xs (default: md)
22
+ - animated: true (default: false)
23
+ - indeterminate: true (default: false)
24
+ - striped: true (default: false)
25
+
26
+ ### Api
27
+ | Prop | Type | Required | Default | Description |
28
+ | --- | --- | :---: | --- | --- |
29
+ | ...HTMLAttributes<HTMLDivElement> | `HTMLAttributes` | no | | HTML attributes (excluding: 'children' | 'class') |
30
+ | ...ProgressVariants | `VariantProps` | no | | Styling variants from ProgressVariants |
31
+ | animated | `boolean` | no | false | Animate the striped pattern. Requires `striped` to be true. |
32
+ | circularSize | `number` | no | 80 | Diameter of the circular indicator in pixels. |
33
+ | class | `string` | no | | Extra classes merged onto the root wrapper element. |
34
+ | formatValue | `(value: number, max: number) => string` | no | (v, max) => `${Math.round((v/max) * 100)}%` | Format function for the displayed value. |
35
+ | label | `string` | no | | Text label displayed above or inside the progress indicator. |
36
+ | max | `number` | no | 100 | Maximum value for the progress range. |
37
+ | min | `number` | no | 0 | Minimum value for the progress range. |
38
+ | preset | `string` | no | | Apply a named preset registered via `<BlocksProvider presets={{ Progress: {...} }}>`. Prefer this over `class` overrides when the requested look falls outside the semantic intent palette — presets keep hover/active/dark-mode logic coherent and make the custom look reusable across the project. |
39
+ | shape | `'linear' | 'circular'` | no | 'linear' | Shape of the progress indicator. |
40
+ | showValue | `boolean` | no | false | Show the numeric value (percentage or absolute) next to the label. |
41
+ | slotClasses | `Partial<Record<'wrapper' | 'header' | 'label' | 'valueText' | 'track' | 'fill' | 'circularWrapper' | 'circularTrack' | 'circularFill' | 'circularLabel', string>>` | no | | Per-slot class overrides merged with tv() styles. |
42
+ | striped | `boolean` | no | false | Display striped pattern on the fill. |
43
+ | strokeWidth | `number` | no | 6 | Stroke width of the circular indicator in pixels. |
44
+ | unstyled | `boolean` | no | | Remove all default tv() classes. |
45
+ | value | `number` | no | | Current progress value (0–100). Omit for indeterminate mode. |
46
+ | intent | `'danger' | 'neutral' | 'primary' | 'secondary' | 'success' | 'warning'` | no | primary | Controls the color theme and semantic meaning of the Progress. Affects the overall appearance and user perception. Available options: danger, neutral, primary, and 3 more. |
47
+ | size | `'lg' | 'md' | 'sm' | 'xs'` | no | md | Controls the dimensions, padding, and text size of the Progress. Affects the component's physical footprint. Available options: lg, md, sm, xs. |
48
+ | indeterminate | `'true'` | no | false | Controls the indeterminate behavior and appearance of the Progress component. Available options: true. |
49
+
50
+ Inherited from:
51
+ - ProgressVariants (external)
52
+ - Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'class'> (omit-pattern)
53
+
54
+ ### Slots (slotClasses keys)
55
+ `wrapper`, `header`, `label`, `valueText`, `track`, `fill`, `circularWrapper`, `circularTrack`, `circularFill`, `circularLabel`
@@ -0,0 +1,53 @@
1
+
2
+ ---
3
+
4
+ ## RadioGroup
5
+ Accessible radio group for single-option selection with semantic intents and form integration.
6
+ Uses native radio inputs for correct form behavior and ARIA semantics with keyboard navigation.
7
+
8
+ **Import:** `import { RadioGroup } from '@urbicon-ui/blocks';`
9
+
10
+ ### Examples
11
+ ```svelte
12
+ <RadioGroup label="Plan" bind:value={plan}>
13
+ <RadioItem value="free" label="Free" />
14
+ <RadioItem value="pro" label="Pro" description="Best for teams" />
15
+ </RadioGroup>
16
+ ```
17
+
18
+ ### Variants
19
+ - disabled: true (default: false)
20
+ - error: true (default: false)
21
+ - orientation: horizontal, vertical (default: vertical)
22
+ - required: true (default: false)
23
+
24
+ ### Api
25
+ | Prop | Type | Required | Default | Description |
26
+ | --- | --- | :---: | --- | --- |
27
+ | children | `Snippet` | yes | | RadioItem children to render inside the group. |
28
+ | ...HTMLAttributes<HTMLDivElement> | `HTMLAttributes` | no | | HTML attributes (excluding: 'children' | 'class') |
29
+ | class | `string` | no | | Extra classes merged onto the root wrapper element. |
30
+ | disabled | `boolean` | no | | Disable all radio items in the group. |
31
+ | error | `string` | no | | Error message below the group. Replaces `helper` and sets `aria-invalid`. |
32
+ | helper | `string` | no | | Hint text below the group. Hidden when `error` is set. |
33
+ | id | `string` | no | | Explicit `id` for the group element. Auto-generated if omitted. |
34
+ | intent | `RadioItemVariants['intent']` | no | 'primary' | Semantic color propagated to all child RadioItems. |
35
+ | label | `string` | no | | Group label displayed above the radio items. |
36
+ | mint | `MintProp` | no | 'none' | Micro-interaction preset propagated to child RadioItems. |
37
+ | name | `string` | no | | Shared `name` attribute for all radio inputs. Auto-generated if omitted. |
38
+ | onValueChange | `(value: string) => void` | no | | Fired after the selected value changes. Receives the new value. |
39
+ | orientation | `'horizontal' | 'vertical'` | no | 'vertical' | Stack direction for the radio items. |
40
+ | preset | `string` | no | | Apply a named preset registered via `<BlocksProvider presets={{ RadioGroup: {...} }}>`. Prefer this over `class` overrides when the requested look falls outside the semantic intent palette — presets keep hover/active/dark-mode logic coherent and make the custom look reusable across the project. |
41
+ | required | `boolean` | no | | Mark the group as required for form validation. Adds an asterisk to the label. |
42
+ | size | `RadioItemVariants['size']` | no | 'md' | Visual size propagated to all child RadioItems. |
43
+ | slotClasses | `Partial<Record<'root' | 'group' | 'label' | 'message', string>>` | no | | Per-slot class overrides merged with tv() styles. |
44
+ | tier | `InteractiveTier` | no | 'commit' | Semantic radius tier propagated to every RadioItem. Default `commit` — radio indicators read as identity circles. Set to `modify` (or inherit via TierContext from a wrapping `<Toolbar tier="modify">`) for inline-toolbar contexts where a circle feels oversized. |
45
+ | unstyled | `boolean` | no | | Remove all default tv() classes. Only user-provided classes apply. |
46
+ | value | `string` | no | | Currently selected value. Supports two-way binding via `bind:value`. |
47
+ | variant | `RadioItemVariants['variant']` | no | 'outlined' | Visual weight propagated to all child RadioItems. |
48
+
49
+ Inherited from:
50
+ - Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'class'> (omit-pattern)
51
+
52
+ ### Slots (slotClasses keys)
53
+ `root`, `group`, `label`, `message`
@@ -0,0 +1,51 @@
1
+
2
+ ---
3
+
4
+ ## SegmentGroup
5
+ Inline segment control with animated sliding indicator for single-selection scenarios.
6
+ Compact mode/view switcher with smooth animation.
7
+
8
+ **Import:** `import { SegmentGroup } from '@urbicon-ui/blocks';`
9
+
10
+ ### Examples
11
+ ```svelte
12
+ <SegmentGroup bind:value={view}>
13
+ <SegmentItem value="list">List</SegmentItem>
14
+ <SegmentItem value="grid">Grid</SegmentItem>
15
+ <SegmentItem value="board">Board</SegmentItem>
16
+ </SegmentGroup>
17
+ ```
18
+
19
+ ### Variants
20
+ - size: lg, md, sm (default: md)
21
+ - appearance: default, text (default: default)
22
+ - disabled: true (default: false)
23
+ - fullWidth: true (default: false)
24
+ - tier: commit, modify (default: commit)
25
+
26
+ ### Api
27
+ | Prop | Type | Required | Default | Description |
28
+ | --- | --- | :---: | --- | --- |
29
+ | ...HTMLAttributes<HTMLDivElement> | `HTMLAttributes` | no | | HTML attributes (excluding: 'children') |
30
+ | ...SegmentGroupVariants | `VariantProps` | no | | Styling variants from SegmentGroupVariants |
31
+ | ariaLabel | `string` | no | | Accessible label for the segment group. |
32
+ | children | `Snippet` | no | | Segment items to render. Must be SegmentItem components. |
33
+ | class | `string` | no | | Extra classes merged onto the root element. |
34
+ | disabled | `boolean` | no | false | Prevent interaction and dim the control. |
35
+ | mint | `MintProp` | no | 'none' | Micro-interaction effect applied to each segment item (per-item, not the container). Accepts a preset name, an array of names, or configured mint objects. |
36
+ | onValueChange | `(value: string) => void` | no | | Fires after the selected value changes. Receives the new value. |
37
+ | preset | `string` | no | | Apply a named preset registered via `<BlocksProvider presets={{ SegmentGroup: {...} }}>`. Prefer this over `class` overrides when the requested look falls outside the semantic intent palette — presets keep hover/active/dark-mode logic coherent and make the custom look reusable across the project. |
38
+ | slotClasses | `Partial<Record<'base' | 'indicator' | 'item', string>>` | no | | Per-slot class overrides merged with tv() styles. |
39
+ | unstyled | `boolean` | no | | Remove all default tv() classes. |
40
+ | value | `string` | no | | Currently selected value. Supports `bind:value` for two-way binding. |
41
+ | size | `'lg' | 'md' | 'sm'` | no | md | Controls the dimensions, padding, and text size of the SegmentGroup. Affects the component's physical footprint. Available options: lg, md, sm. |
42
+ | appearance | `'default' | 'text'` | no | default | Controls the appearance behavior and appearance of the SegmentGroup component. Available options: default, text. |
43
+ | fullWidth | `'true'` | no | false | Controls the fullWidth behavior and appearance of the SegmentGroup component. Available options: true. |
44
+ | tier | `'commit' | 'modify'` | no | commit | Controls the tier behavior and appearance of the SegmentGroup component. Available options: commit, modify. |
45
+
46
+ Inherited from:
47
+ - SegmentGroupVariants (external)
48
+ - Omit<HTMLAttributes<HTMLDivElement>, 'children'> (omit-pattern)
49
+
50
+ ### Slots (slotClasses keys)
51
+ `base`, `indicator`, `item`
@@ -0,0 +1,130 @@
1
+
2
+ ---
3
+
4
+ ## Select
5
+ Discriminated union over `multiple`. Consumers pick a single shape at the
6
+ call site and the value type narrows accordingly — `<Select multiple bind:value>`
7
+ binds to `T[]`, `<Select bind:value>` binds to `T | null`. See
8
+ `SelectSingleProps` / `SelectMultipleProps` for the per-mode details.
9
+
10
+ **Import:** `import { Select } from '@urbicon-ui/blocks';`
11
+
12
+ ### Examples
13
+ ```svelte
14
+ <Select
15
+ label="Country"
16
+ options={[
17
+ { label: 'Germany', value: 'de' },
18
+ { label: 'France', value: 'fr' },
19
+ { label: 'Spain', value: 'es' },
20
+ ]}
21
+ bind:value={country}
22
+ placeholder="Choose a country"
23
+ />
24
+ ```
25
+
26
+ ```svelte
27
+ <Select
28
+ label="Tenant"
29
+ options={tenants.map((t) => ({ label: t.name, value: t.id }))}
30
+ bind:value={tenantId}
31
+ />
32
+ ```
33
+
34
+ ```svelte
35
+ <Select
36
+ label="Tags"
37
+ options={tags}
38
+ multiple
39
+ selectionIndicator="checkbox"
40
+ bind:value={selectedTags}
41
+ />
42
+ ```
43
+
44
+ ```svelte
45
+ <Select options={...} multiple bind:value bind:open>
46
+ {#snippet customTrigger(selected, isOpen, clear)}
47
+ <Button variant="ghost" size="sm">
48
+ <FilterIcon />
49
+ {#if selected.length > 0}
50
+ <Badge size="xs">{selected.length}</Badge>
51
+ {/if}
52
+ </Button>
53
+ {/snippet}
54
+ </Select>
55
+ ```
56
+
57
+ ```svelte
58
+ <Select
59
+ label="Role"
60
+ groups={[
61
+ { label: 'Engineering', options: [
62
+ { label: 'Frontend', value: 'fe' },
63
+ { label: 'Backend', value: 'be' }
64
+ ]},
65
+ { label: 'Design', options: [
66
+ { label: 'UX', value: 'ux' },
67
+ { label: 'Visual', value: 'vis' }
68
+ ]}
69
+ ]}
70
+ bind:value={role}
71
+ required
72
+ error={roleError}
73
+ />
74
+ ```
75
+
76
+ ### Variants
77
+ - variant: filled, ghost, outlined, underline (default: outlined)
78
+ - size: lg, md, sm (default: md)
79
+ - disabled: true (default: false)
80
+ - error: true (default: false)
81
+ - messageType: error, helper (default: helper)
82
+ - open: true (default: false)
83
+ - required: true (default: false)
84
+ - selected: true (default: false)
85
+ - tier: commit, modify (default: modify)
86
+
87
+ ### Api
88
+ | Prop | Type | Required | Default | Description |
89
+ | --- | --- | :---: | --- | --- |
90
+ | class | `string` | no | | Extra classes merged onto the root wrapper element. |
91
+ | clearable | `boolean` | no | false | Show a clear button when a value is selected. |
92
+ | closeOnClickOutside | `boolean` | no | | Whether the listbox closes on outside click. Default `true`. Set to `false` to pin the listbox open while the consumer manages dismissal explicitly. |
93
+ | closeOnEscape | `boolean` | no | | Whether the listbox closes on Escape key. Default `true`. Set to `false` for inline contexts where Escape should be intercepted by an outer widget (e.g. a row editor that wants to revert on Escape). |
94
+ | closeOnSelect | `boolean` | no | | Whether the listbox closes after a selection is made. Defaults to `true` in single-select and `false` in multi-select — the multi-select default lets users tick multiple options without re-opening, matching the established multi-select pattern. |
95
+ | customItem | `Snippet<[SelectOption<T>, boolean, () => void]>` | no | | Replace the default per-option rendering. Receives the option, its selection state, and a `toggle` callback (call to select/deselect). The outer `<div role="option">` container is still owned by Select for ARIA correctness — the snippet renders the option's visible contents. Positional args: `(option, isSelected, toggle)`. |
96
+ | customTrigger | `Snippet<[SelectOption<T>[], boolean, () => void]>` | no | | Replace the entire trigger button (chevron, label, clear control) with a custom element. Receives the selected options, current open state, and a `clear` callback. Use this for icon-only triggers, badge-counter triggers, or any non-standard chrome — the Select still owns open/close + selection state via the returned callbacks. Positional args: `(selected, open, clear)`. |
97
+ | customTriggerContent | `Snippet<[SelectOption<T>[]]>` | no | | Replace only the trigger's text/label area (chevron and clear button stay intact). Receives the selected options. Useful for showing icons next to the label, badges with counts, or formatted multi-select summaries while keeping the standard outlined-Select chrome. Positional args: `(selected)`. |
98
+ | disabled | `boolean` | no | false | Whether the Select is disabled and non-interactive |
99
+ | error | `string` | no | | Error message below the select. Overrides `helper` and forces danger styling. |
100
+ | groups | `SelectGroup<T>[]` | no | | Grouped options with section labels. Takes precedence over `options`. |
101
+ | helper | `string` | no | | Helper text below the select. Hidden when `error` is set. |
102
+ | id | `string` | no | | Explicit `id` for the component. Auto-generated if omitted. |
103
+ | label | `string` | no | | Label text displayed above the select, auto-linked via `id`. |
104
+ | mint | `MintProp` | no | 'none' | Micro-interaction preset. |
105
+ | multiPlaceholder | `string | ((selected: SelectOption<T>[]) => string)` | no | | Placeholder shown when one or more values are picked. Pass a string for a static label ("3 selected") or a function that receives the currently selected options and returns a custom string. When unset, the trigger lists the selected labels comma-separated. |
106
+ | multiple | `'false' | 'true'` | no | | Single-select mode (the default). Omit or set to `false` explicitly. |
107
+ | name | `string` | no | | Shared `name` for a hidden input for native form submission. |
108
+ | nullOption | `string | NullOptionConfig` | no | | Render an explicit "no value" option as the first row of the listbox. Selecting it sets the bound value to `null`. When `value` is `null`, the trigger displays this label instead of the placeholder. Pass a string to use it as the label, or a `NullOptionConfig` for more control. Ignored when `groups` is set — group structures own their option list. |
109
+ | onClickOutside | `() => void` | no | | Fires after an outside click closes the listbox. Use for analytics or side-effects on dismiss. Does NOT control whether the listbox closes — that is governed by `closeOnClickOutside`. |
110
+ | onEscape | `() => void` | no | | Fires after Escape closes the listbox. Use for analytics or to clear ephemeral state on dismiss. Does NOT control whether the listbox closes — that is governed by `closeOnEscape`. |
111
+ | onValueChange | `(value: T | null) => void` | no | | Fires after the selected value changes. Receives the new value or `null` on clear. |
112
+ | open | `boolean` | no | false | Controls whether the listbox is open. Supports `bind:open` for parents that need to coordinate open/close (e.g. attaching a custom trigger button outside the Select wrapper). |
113
+ | options | `SelectOption<T>[]` | no | | Flat list of selectable options. |
114
+ | placeholder | `string` | no | 'Select...' | Text shown when no value is selected. |
115
+ | preset | `string` | no | | Apply a named preset registered via `<BlocksProvider presets={{ Select: {...} }}>`. Prefer this over `class` overrides when the requested look falls outside the semantic intent palette — presets keep hover/active/dark-mode logic coherent and make the custom look reusable across the project. |
116
+ | required | `boolean` | no | false | Adds a required asterisk to the label. |
117
+ | selectionIndicator | `'checkmark' | 'none'` | no | | Selection indicator rendered next to each option. - `'checkmark'` — trailing check icon (default) - `'none'` — no indicator (typical when using `customItem`) |
118
+ | slotClasses | `Partial<Record<'wrapper' | 'base' | 'trigger' | 'triggerText' | 'placeholder' | 'chevron' | 'clear' | 'listbox' | 'option' | 'optionCheck' | 'optionCheckbox' | 'group' | 'groupLabel' | 'label' | 'message', string>>` | no | | Per-slot class overrides merged with tv() styles. |
119
+ | syncWidth | `boolean` | no | true | Whether the listbox matches the trigger's width. Set `false` for icon-only or compact triggers where the listbox should size to its content instead. |
120
+ | unstyled | `boolean` | no | | Remove all default tv() classes. |
121
+ | usePortal | `boolean` | no | true | When true, the listbox is rendered into the browser top layer via the native `popover` API, so it cannot be clipped by `overflow: auto` ancestors. When false, the listbox stays in the regular DOM flow — useful inside other popovers/portals to avoid double-portaling. |
122
+ | value | `T[]` | no | [] | Currently selected values. Supports `bind:value`. |
123
+ | variant | `SelectVariants['variant']` | no | 'outlined' | Visual style. - `outlined` (default) — visible border, surface-base background - `filled` — surface-interactive fill, no border (compact toolbars) - `ghost` — transparent until hover/focus (dense menus, inline editors) - `underline` — bottom-line only, no border-box (editorial knob-strips, docs playgrounds) |
124
+ | size | `'lg' | 'md' | 'sm'` | no | md | Controls the dimensions, padding, and text size of the Select. Affects the component's physical footprint. Available options: lg, md, sm. |
125
+ | messageType | `'error' | 'helper'` | no | helper | Controls the messageType behavior and appearance of the Select component. Available options: error, helper. |
126
+ | selected | `'true'` | no | false | Controls the selected behavior and appearance of the Select component. Available options: true. |
127
+ | tier | `'commit' | 'modify'` | no | modify | Controls the tier behavior and appearance of the Select component. Available options: commit, modify. |
128
+
129
+ ### Slots (slotClasses keys)
130
+ `wrapper`, `base`, `trigger`, `triggerText`, `placeholder`, `chevron`, `clear`, `listbox`, `option`, `optionCheck`, `optionCheckbox`, `group`, `groupLabel`, `label`, `message`
@@ -0,0 +1,45 @@
1
+
2
+ ---
3
+
4
+ ## Separator
5
+ Visual divider for separating content sections. Supports horizontal and
6
+ vertical orientations with proper ARIA semantics.
7
+
8
+ **Import:** `import { Separator } from '@urbicon-ui/blocks';`
9
+
10
+ ### Examples
11
+ ```svelte
12
+ <Separator />
13
+ ```
14
+
15
+ ```svelte
16
+ <div class="flex items-center gap-4">
17
+ <span>Item A</span>
18
+ <Separator orientation="vertical" size="sm" />
19
+ <span>Item B</span>
20
+ </div>
21
+ ```
22
+
23
+ ### Variants
24
+ - size: lg, md, sm (default: md)
25
+ - orientation: horizontal, vertical (default: horizontal)
26
+
27
+ ### Api
28
+ | Prop | Type | Required | Default | Description |
29
+ | --- | --- | :---: | --- | --- |
30
+ | ...HTMLAttributes<HTMLDivElement> | `HTMLAttributes` | no | | HTML attributes (excluding: 'children' | 'class') |
31
+ | ...SeparatorVariants | `VariantProps` | no | | Styling variants from SeparatorVariants |
32
+ | class | `string` | no | | Additional CSS class merged onto the root element. |
33
+ | decorative | `boolean` | no | | When true, the separator is purely visual (role="none"); when false, it uses role="separator" with aria-orientation. |
34
+ | orientation | `'horizontal' | 'vertical'` | no | | Horizontal renders a full-width line; vertical renders a full-height line (e.g. inside flex rows). |
35
+ | preset | `string` | no | | Apply a named preset registered via `<BlocksProvider presets={{ Separator: {...} }}>`. Prefer this over `class` overrides when the requested look falls outside the semantic intent palette — presets keep hover/active/dark-mode logic coherent and make the custom look reusable across the project. |
36
+ | size | `'sm' | 'md' | 'lg'` | no | | Controls margin around the line — sm (0.5 rem), md (1 rem), lg (1.5 rem). |
37
+ | slotClasses | `Partial<Record<'base', string>>` | no | | Per-slot class overrides. |
38
+ | unstyled | `boolean` | no | | Strip all default styles; combine with slotClasses to rebuild from scratch. |
39
+
40
+ Inherited from:
41
+ - SeparatorVariants (external)
42
+ - Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'class'> (omit-pattern)
43
+
44
+ ### Slots (slotClasses keys)
45
+ `base`
@@ -0,0 +1,79 @@
1
+
2
+ ---
3
+
4
+ ## Sidebar
5
+ Sidebar primitive — fixed-position panel that is permanent on
6
+ desktop (≥1024px) and slides in as a backdropped overlay on mobile. Use
7
+ this directly for right-side detail panels or custom shells. For the
8
+ standard "permanent left rail + mobile hamburger" application chrome,
9
+ prefer the higher-level `<SidebarLayout>` component, which handles main
10
+ content offset and the mobile header for you.
11
+
12
+ The component exposes `--sidebar-width` and `--sidebar-effective-width`
13
+ (0px when collapsed) as CSS variables on its `<aside>` element. CSS
14
+ custom properties only inherit to descendants, so these variables are
15
+ available **inside** the sidebar's subtree but not on its siblings — that
16
+ is precisely why `<SidebarLayout>` exists for app-shell layouts.
17
+
18
+ **Import:** `import { Sidebar } from '@urbicon-ui/blocks';`
19
+
20
+ ### Examples
21
+ ```svelte
22
+ <script>
23
+ import { Sidebar, Button, CloseIcon, Badge } from '@urbicon-ui/blocks';
24
+ let detailOpen = $state(false);
25
+ </script>
26
+
27
+ <Button onclick={() => (detailOpen = true)}>Show details</Button>
28
+
29
+ <Sidebar bind:open={detailOpen} side="right" width="20rem">
30
+ {#snippet header()}
31
+ <div class="flex items-center justify-between py-3">
32
+ <span class="font-semibold">Item details</span>
33
+ <Button variant="ghost" size="xs" onclick={() => (detailOpen = false)}>
34
+ <CloseIcon class="h-4 w-4" />
35
+ </Button>
36
+ </div>
37
+ {/snippet}
38
+ <div class="space-y-3 p-4">
39
+ <dt class="text-text-tertiary text-xs">Status</dt>
40
+ <dd><Badge intent="success" size="sm">Active</Badge></dd>
41
+ </div>
42
+ </Sidebar>
43
+ ```
44
+
45
+ ```svelte
46
+ <Sidebar bind:open={sidebarOpen} mode="collapsible" width="16rem">
47
+ {#snippet header()}<span class="font-semibold">App</span>{/snippet}
48
+ <nav class="p-3"><!-- links --></nav>
49
+ </Sidebar>
50
+ ```
51
+
52
+ ### Variants
53
+ - mode: collapsible, responsive (default: responsive)
54
+ - side: left, right (default: left)
55
+
56
+ ### Api
57
+ | Prop | Type | Required | Default | Description |
58
+ | --- | --- | :---: | --- | --- |
59
+ | ...HTMLAttributes<HTMLElement> | `HTMLAttributes` | no | | HTML attributes (excluding: 'children') |
60
+ | children | `Snippet` | no | | Main scrollable content of the sidebar. |
61
+ | class | `string` | no | | Additional CSS classes applied to the sidebar panel. |
62
+ | closeOnBackdropClick | `boolean` | no | true | Close the mobile overlay when clicking the backdrop. |
63
+ | closeOnEscape | `boolean` | no | true | Close the mobile overlay when pressing Escape. |
64
+ | footer | `Snippet` | no | | Content rendered in the sidebar footer (below the scrollable area). |
65
+ | header | `Snippet` | no | | Content rendered in the sidebar header (above the scrollable area). |
66
+ | mode | `SidebarVariants['mode']` | no | 'responsive' | Controls sidebar behavior across viewports. - `responsive` (default): permanently visible on desktop (≥1024px), slide-in overlay on mobile. - `collapsible`: toggleable via `open` at all viewports — width animation on desktop, overlay on mobile. |
67
+ | onOpenChange | `(open: boolean) => void` | no | | Fires when the open state changes (mobile overlay dismissed, or collapsible toggled). |
68
+ | open | `boolean` | no | | Controls sidebar visibility. In `responsive` mode (default) this only affects the mobile overlay — on desktop the sidebar is always visible. In `collapsible` mode this controls visibility at all viewports. Supports bind:open. |
69
+ | preset | `string` | no | | Apply a named preset registered via `<BlocksProvider presets={{ Sidebar: {...} }}>`. Prefer this over `class` overrides when the requested look falls outside the semantic intent palette — presets keep hover/active/dark-mode logic coherent and make the custom look reusable across the project. |
70
+ | side | `SidebarVariants['side']` | no | 'left' | Which edge the sidebar attaches to. |
71
+ | slotClasses | `Partial<Record<'backdrop' | 'panel' | 'header' | 'content' | 'footer', string>>` | no | | Per-slot class overrides merged with variant styles. |
72
+ | unstyled | `boolean` | no | | Strip all default styles. Combine with slotClasses for custom appearance. |
73
+ | width | `string` | no | '16rem' | CSS width of the sidebar panel. Also exposed as `--sidebar-width` (constant) and `--sidebar-effective-width` (0px when collapsed) CSS variables on the `<aside>`. These inherit only inside the sidebar's own subtree — for the main content offset use `<SidebarLayout>`. |
74
+
75
+ Inherited from:
76
+ - Omit<HTMLAttributes<HTMLElement>, 'children'> (omit-pattern)
77
+
78
+ ### Slots (slotClasses keys)
79
+ `backdrop`, `panel`, `header`, `content`, `footer`
@@ -0,0 +1,54 @@
1
+
2
+ ---
3
+
4
+ ## Skeleton
5
+ Placeholder loading animation that mimics content layout.
6
+ Use to reduce perceived loading time and prevent layout shift.
7
+
8
+ **Import:** `import { Skeleton } from '@urbicon-ui/blocks';`
9
+
10
+ ### Examples
11
+ ```svelte
12
+ <Skeleton variant="text" size="lg" />
13
+ <Skeleton variant="circular" size="md" />
14
+ <Skeleton variant="rectangular" width="100%" height="200px" />
15
+ ```
16
+
17
+ ```svelte
18
+ <div class="flex items-center gap-3">
19
+ <Skeleton variant="circular" size="md" />
20
+ <div class="flex flex-col gap-2 flex-1">
21
+ <Skeleton variant="text" size="sm" />
22
+ <Skeleton variant="text" size="xs" class="w-2/3" />
23
+ </div>
24
+ </div>
25
+ ```
26
+
27
+ ### Variants
28
+ - variant: circular, rectangular, rounded, text (default: text)
29
+ - size: lg, md, sm, xl, xs (default: md)
30
+ - animation: none, pulse, wave (default: pulse)
31
+
32
+ ### Api
33
+ | Prop | Type | Required | Default | Description |
34
+ | --- | --- | :---: | --- | --- |
35
+ | ...ElementAttributes | `HTMLAttributes` | no | | All standard HTML element attributes |
36
+ | ...SkeletonVariants | `VariantProps` | no | | Styling variants from SkeletonVariants |
37
+ | animation | `SkeletonVariants['animation']` | no | | Animation style. `pulse` fades opacity, `wave` sweeps a shimmer gradient, `none` renders a static placeholder. All animations respect `prefers-reduced-motion`. |
38
+ | class | `string` | no | | Extra classes merged onto the root element (or wrapper when `count > 1`). |
39
+ | count | `number` | no | | Number of skeleton lines to render. Wraps items in a flex-column container when > 1. |
40
+ | gap | `string` | no | | Tailwind gap class between repeated lines (e.g. `"gap-2"`, `"gap-4"`). Only applies when `count > 1`. |
41
+ | height | `string` | no | | Custom height (CSS value, e.g. `"48px"`). Overrides the size preset height. |
42
+ | preset | `string` | no | | Apply a named preset registered via `<BlocksProvider presets={{ Skeleton: {...} }}>`. Prefer this over `class` overrides when the requested look falls outside the semantic intent palette — presets keep hover/active/dark-mode logic coherent and make the custom look reusable across the project. |
43
+ | size | `SkeletonVariants['size']` | no | | Physical dimensions following the Standard size scale (xs–xl). Dimensions vary per variant — text heights range from h-3 (xs) to h-6 (xl), circular from 24 px to 64 px. |
44
+ | slotClasses | `Partial<Record<'base' | 'wrapper', string>>` | no | | Per-slot class overrides merged with (or replacing, when `unstyled`) tv() output. |
45
+ | unstyled | `boolean` | no | | Strip all default tv() classes. Combine with `slotClasses` for full control. |
46
+ | variant | `SkeletonVariants['variant']` | no | | Shape preset. `text` is a slim bar, `circular` for avatars/icons, `rectangular` for images/cards, `rounded` like rectangular with softer corners. |
47
+ | width | `string` | no | | Custom width (CSS value, e.g. `"200px"` or `"100%"`). Overrides the size preset width. |
48
+
49
+ Inherited from:
50
+ - SkeletonVariants (external)
51
+ - HTMLAttributes (html-attributes)
52
+
53
+ ### Slots (slotClasses keys)
54
+ `base`, `wrapper`
@@ -0,0 +1,82 @@
1
+
2
+ ---
3
+
4
+ ## Slider
5
+ Slider for selecting a numeric value or range within min/max bounds.
6
+ Supports single and range modes, step snapping, tick marks, and labels.
7
+
8
+ Optional `validRange` and `recommendedRange` paint the track as a three-zone
9
+ gradient (red/yellow/green) and show a live status text that is also announced
10
+ via an ARIA live region. Both props are optional and additive — a slider
11
+ without `validRange`/`recommendedRange` behaves exactly as before.
12
+
13
+ **Import:** `import { Slider } from '@urbicon-ui/blocks';`
14
+
15
+ ### Examples
16
+ ```svelte
17
+ <Slider label="Volume" bind:value={volume} />
18
+ ```
19
+
20
+ ```svelte
21
+ <Slider label="Price range" range bind:value={priceRange} min={0} max={500} step={10} showValue />
22
+ ```
23
+
24
+ ```svelte
25
+ <Slider
26
+ label="Consumption share of heating costs"
27
+ bind:value={share}
28
+ min={0}
29
+ max={100}
30
+ step={5}
31
+ validRange={[50, 100]}
32
+ recommendedRange={[60, 80]}
33
+ formatValue={(v) => `${v} %`}
34
+ />
35
+ ```
36
+
37
+ ### Variants
38
+ - intent: danger, neutral, primary, secondary, success, warning (default: primary)
39
+ - size: lg, md, sm (default: md)
40
+ - appearance: default, rail (default: default)
41
+ - disabled: true (default: false)
42
+ - messageType: error, helper (default: helper)
43
+
44
+ ### Api
45
+ | Prop | Type | Required | Default | Description |
46
+ | --- | --- | :---: | --- | --- |
47
+ | ...HTMLAttributes<HTMLDivElement> | `HTMLAttributes` | no | | HTML attributes (excluding: 'children' | 'class') |
48
+ | ...SliderVariants | `VariantProps` | no | | Styling variants from SliderVariants |
49
+ | class | `string` | no | | Extra classes merged onto the root wrapper. |
50
+ | disabled | `boolean` | no | false | Whether the Slider is disabled and non-interactive |
51
+ | error | `string` | no | | Error message below the slider. Overrides `helper`. |
52
+ | formatValue | `(value: number | [number, number]) => string` | no | | Format function for the displayed value. |
53
+ | helper | `string` | no | | Helper text below the slider. Hidden when `error` is set. |
54
+ | label | `string` | no | | Text label displayed above the slider. |
55
+ | marks | `SliderMark[]` | no | | Tick marks along the track. |
56
+ | max | `number` | no | 100 | Maximum allowed value. |
57
+ | min | `number` | no | 0 | Minimum allowed value. |
58
+ | mint | `MintProp` | no | 'none' | Micro-interaction preset. |
59
+ | name | `string` | no | | Shared `name` for hidden inputs for form submission. |
60
+ | onValueChange | `(value: number | [number, number]) => void` | no | | Fires after the value changes. Receives the new value. |
61
+ | outOfValidRangeIntent | `'danger' | 'warning'` | no | 'danger' | Intent applied outside the `validRange`. `'warning'` for softer limits (recommendation, not a violation), `'danger'` for hard limits. |
62
+ | preset | `string` | no | | Apply a named preset registered via `<BlocksProvider presets={{ Slider: {...} }}>`. Prefer this over `class` overrides when the requested look falls outside the semantic intent palette — presets keep hover/active/dark-mode logic coherent and make the custom look reusable across the project. |
63
+ | range | `boolean` | no | false | Enable range mode with two thumbs. |
64
+ | rangeStatusText | `SliderRangeStatusText` | no | | Custom status texts for the three zones. Defaults to the UIB i18n localization (`bt('slider.rangeStatus.*')`). |
65
+ | recommendedRange | `[number, number]` | no | | Recommended value range (UX recommendation, softer than `validRange`). Values inside appear green, values outside yellow (warning). Typically `recommendedRange ⊂ validRange`, but this is not enforced. |
66
+ | showValue | `boolean` | no | false | Show the current value next to the label. |
67
+ | slotClasses | `Partial<Record<'wrapper' | 'header' | 'label' | 'valueText' | 'base' | 'track' | 'range' | 'thumb' | 'mark' | 'boundaryTick' | 'rangeStatus' | 'rangeStatusIcon' | 'message', string>>` | no | | Per-slot class overrides. |
68
+ | step | `number` | no | 1 | Snap to increments of this value. |
69
+ | unstyled | `boolean` | no | | Remove all default tv() classes. |
70
+ | validRange | `[number, number]` | no | | Valid value range (e.g. a legal limit). Values outside it style track and thumb in the `outOfValidRangeIntent` color (default: `danger`). Status changes are announced via an ARIA live region. If the range lies outside `[min, max]`, a console warning is emitted — the visible `min`/`max` are NOT shifted automatically. |
71
+ | value | `number | [number, number]` | no | | Current value. Number for single, [min, max] tuple for range. Supports `bind:value`. |
72
+ | intent | `'danger' | 'neutral' | 'primary' | 'secondary' | 'success' | 'warning'` | no | primary | Controls the color theme and semantic meaning of the Slider. Affects the overall appearance and user perception. Available options: danger, neutral, primary, and 3 more. |
73
+ | size | `'lg' | 'md' | 'sm'` | no | md | Controls the dimensions, padding, and text size of the Slider. Affects the component's physical footprint. Available options: lg, md, sm. |
74
+ | appearance | `'default' | 'rail'` | no | default | Controls the appearance behavior and appearance of the Slider component. Available options: default, rail. |
75
+ | messageType | `'error' | 'helper'` | no | helper | Controls the messageType behavior and appearance of the Slider component. Available options: error, helper. |
76
+
77
+ Inherited from:
78
+ - Omit<SliderVariants, 'error' | 'rangeStatus'> (omit-pattern)
79
+ - Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'class'> (omit-pattern)
80
+
81
+ ### Slots (slotClasses keys)
82
+ `wrapper`, `header`, `label`, `valueText`, `base`, `track`, `range`, `thumb`, `mark`, `boundaryTick`, `rangeStatus`, `rangeStatusIcon`, `message`