@politiet/sheriff-web-components 2.5.1 → 2.6.1
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.
- package/custom-elements.json +1774 -1341
- package/dist/frameworks/preact.d.ts +12 -3
- package/dist/frameworks/preact.d.ts.map +1 -1
- package/dist/frameworks/react.d.ts +12 -3
- package/dist/frameworks/react.d.ts.map +1 -1
- package/dist/frameworks/solidjs.d.ts +3 -0
- package/dist/frameworks/solidjs.d.ts.map +1 -1
- package/dist/frameworks/svelte.d.ts +3 -0
- package/dist/frameworks/svelte.d.ts.map +1 -1
- package/dist/frameworks/vue.d.ts +3 -0
- package/dist/frameworks/vue.d.ts.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/mixins/index.d.ts +6 -0
- package/dist/mixins/index.d.ts.map +1 -0
- package/dist/mixins/index.js +6 -0
- package/dist/mixins/index.js.map +1 -0
- package/dist/mixins/sds-delegate-interaction-mixin.d.ts +27 -0
- package/dist/mixins/sds-delegate-interaction-mixin.d.ts.map +1 -0
- package/dist/mixins/sds-delegate-interaction-mixin.js +29 -0
- package/dist/mixins/sds-delegate-interaction-mixin.js.map +1 -0
- package/dist/mixins/sds-dialog-target-mixin.d.ts +11 -0
- package/dist/mixins/sds-dialog-target-mixin.d.ts.map +1 -0
- package/dist/mixins/sds-dialog-target-mixin.js +95 -0
- package/dist/mixins/sds-dialog-target-mixin.js.map +1 -0
- package/dist/mixins/sds-event-dispatcher-mixin.d.ts +1 -2
- package/dist/mixins/sds-event-dispatcher-mixin.d.ts.map +1 -1
- package/dist/mixins/sds-event-dispatcher-mixin.js.map +1 -1
- package/dist/mixins/sds-form-control-mixin.d.ts +14 -0
- package/dist/mixins/sds-form-control-mixin.d.ts.map +1 -0
- package/dist/mixins/sds-form-control-mixin.js +40 -0
- package/dist/mixins/sds-form-control-mixin.js.map +1 -0
- package/dist/mixins/sds-popover-target-mixin.d.ts +8 -0
- package/dist/mixins/sds-popover-target-mixin.d.ts.map +1 -0
- package/dist/mixins/sds-popover-target-mixin.js +77 -0
- package/dist/mixins/sds-popover-target-mixin.js.map +1 -0
- package/dist/mixins/types.d.ts +2 -0
- package/dist/mixins/types.d.ts.map +1 -0
- package/dist/mixins/types.js +2 -0
- package/dist/mixins/types.js.map +1 -0
- package/dist/react-wrappers/SDSPopoverWrapper.d.ts +3 -0
- package/dist/react-wrappers/SDSPopoverWrapper.d.ts.map +1 -0
- package/dist/react-wrappers/SDSPopoverWrapper.js +10 -0
- package/dist/react-wrappers/SDSPopoverWrapper.js.map +1 -0
- package/dist/react-wrappers/SDSProcessStepWrapper.d.ts +3 -0
- package/dist/react-wrappers/SDSProcessStepWrapper.d.ts.map +1 -0
- package/dist/react-wrappers/SDSProcessStepWrapper.js +10 -0
- package/dist/react-wrappers/SDSProcessStepWrapper.js.map +1 -0
- package/dist/react-wrappers/SDSProcessWrapper.d.ts +3 -0
- package/dist/react-wrappers/SDSProcessWrapper.d.ts.map +1 -0
- package/dist/react-wrappers/SDSProcessWrapper.js +10 -0
- package/dist/react-wrappers/SDSProcessWrapper.js.map +1 -0
- package/dist/react-wrappers/index.d.ts +3 -0
- package/dist/react-wrappers/index.d.ts.map +1 -1
- package/dist/react-wrappers/index.js +3 -0
- package/dist/react-wrappers/index.js.map +1 -1
- package/dist/sds-alert/sds-alert.component.d.ts +1 -1
- package/dist/sds-button/sds-button.component.d.ts +6 -4
- package/dist/sds-button/sds-button.component.d.ts.map +1 -1
- package/dist/sds-button/sds-button.component.js +27 -15
- package/dist/sds-button/sds-button.component.js.map +1 -1
- package/dist/sds-checkbox/sds-checkbox.d.ts +8 -19
- package/dist/sds-checkbox/sds-checkbox.d.ts.map +1 -1
- package/dist/sds-checkbox/sds-checkbox.js +38 -63
- package/dist/sds-checkbox/sds-checkbox.js.map +1 -1
- package/dist/sds-checkbox/sds-checkbox.styles.d.ts.map +1 -1
- package/dist/sds-checkbox/sds-checkbox.styles.js +1 -0
- package/dist/sds-checkbox/sds-checkbox.styles.js.map +1 -1
- package/dist/sds-checkbox-group/sds-checkbox-group.d.ts +1 -1
- package/dist/sds-chip/sds-chip.d.ts +15 -22
- package/dist/sds-chip/sds-chip.d.ts.map +1 -1
- package/dist/sds-chip/sds-chip.js +28 -40
- package/dist/sds-chip/sds-chip.js.map +1 -1
- package/dist/sds-chip/sds-chip.styles.js +1 -1
- package/dist/sds-chip/sds-chip.styles.js.map +1 -1
- package/dist/sds-details/sds-details.d.ts +1 -1
- package/dist/sds-dialog/sds-dialog.component.d.ts +56 -0
- package/dist/sds-dialog/sds-dialog.component.d.ts.map +1 -0
- package/dist/sds-dialog/sds-dialog.component.js +181 -0
- package/dist/sds-dialog/sds-dialog.component.js.map +1 -0
- package/dist/sds-dialog/sds-dialog.d.ts +2 -49
- package/dist/sds-dialog/sds-dialog.d.ts.map +1 -1
- package/dist/sds-dialog/sds-dialog.js +2 -145
- package/dist/sds-dialog/sds-dialog.js.map +1 -1
- package/dist/sds-dialog/sds-dialog.spec.d.ts +2 -0
- package/dist/sds-dialog/sds-dialog.spec.d.ts.map +1 -0
- package/dist/sds-dialog/sds-dialog.spec.js +50 -0
- package/dist/sds-dialog/sds-dialog.spec.js.map +1 -0
- package/dist/sds-dialog/sds-dialog.styles.js +4 -4
- package/dist/sds-dialog/sds-dialog.styles.js.map +1 -1
- package/dist/sds-notification/sds-notification.d.ts +1 -1
- package/dist/sds-popover/assets/popover-styles.d.ts +3 -0
- package/dist/sds-popover/assets/popover-styles.d.ts.map +1 -0
- package/dist/sds-popover/assets/popover-styles.js +3 -0
- package/dist/sds-popover/assets/popover-styles.js.map +1 -0
- package/dist/sds-popover/assets/positioning.js +1 -0
- package/dist/sds-popover/sds-popover.d.ts +25 -0
- package/dist/sds-popover/sds-popover.d.ts.map +1 -0
- package/dist/sds-popover/sds-popover.js +43 -0
- package/dist/sds-popover/sds-popover.js.map +1 -0
- package/dist/sds-popover/sds-popover.styles.d.ts +2 -0
- package/dist/sds-popover/sds-popover.styles.d.ts.map +1 -0
- package/dist/sds-popover/sds-popover.styles.js +52 -0
- package/dist/sds-popover/sds-popover.styles.js.map +1 -0
- package/dist/sds-process/sds-process.d.ts +20 -0
- package/dist/sds-process/sds-process.d.ts.map +1 -0
- package/dist/sds-process/sds-process.js +29 -0
- package/dist/sds-process/sds-process.js.map +1 -0
- package/dist/sds-process/sds-process.styles.d.ts +2 -0
- package/dist/sds-process/sds-process.styles.d.ts.map +1 -0
- package/dist/sds-process/sds-process.styles.js +8 -0
- package/dist/sds-process/sds-process.styles.js.map +1 -0
- package/dist/sds-process-step/sds-process-step.d.ts +29 -0
- package/dist/sds-process-step/sds-process-step.d.ts.map +1 -0
- package/dist/sds-process-step/sds-process-step.js +75 -0
- package/dist/sds-process-step/sds-process-step.js.map +1 -0
- package/dist/sds-process-step/sds-process-step.styles.d.ts +2 -0
- package/dist/sds-process-step/sds-process-step.styles.d.ts.map +1 -0
- package/dist/sds-process-step/sds-process-step.styles.js +143 -0
- package/dist/sds-process-step/sds-process-step.styles.js.map +1 -0
- package/dist/sds-radio/sds-radio.d.ts +14 -20
- package/dist/sds-radio/sds-radio.d.ts.map +1 -1
- package/dist/sds-radio/sds-radio.js +45 -73
- package/dist/sds-radio/sds-radio.js.map +1 -1
- package/dist/sds-radio-group/sds-radio-group.d.ts +1 -1
- package/dist/sds-select/sds-select.component.d.ts +54 -0
- package/dist/sds-select/sds-select.component.d.ts.map +1 -0
- package/dist/sds-select/sds-select.component.js +290 -0
- package/dist/sds-select/sds-select.component.js.map +1 -0
- package/dist/sds-select/sds-select.d.ts +2 -64
- package/dist/sds-select/sds-select.d.ts.map +1 -1
- package/dist/sds-select/sds-select.js +2 -311
- package/dist/sds-select/sds-select.js.map +1 -1
- package/dist/sds-select/sds-select.styles.js +1 -1
- package/dist/sds-select/sds-select.styles.js.map +1 -1
- package/dist/sds-stepper/sds-stepper.d.ts +1 -2
- package/dist/sds-stepper/sds-stepper.d.ts.map +1 -1
- package/dist/sds-stepper/sds-stepper.js +2 -3
- package/dist/sds-stepper/sds-stepper.js.map +1 -1
- package/dist/sds-stepper/sds-stepper.styles.d.ts.map +1 -1
- package/dist/sds-stepper/sds-stepper.styles.js +2 -1
- package/dist/sds-stepper/sds-stepper.styles.js.map +1 -1
- package/dist/sds-stepper-step/sds-stepper-step.d.ts +1 -1
- package/dist/sds-stepper-step/sds-stepper-step.styles.d.ts.map +1 -1
- package/dist/sds-stepper-step/sds-stepper-step.styles.js +7 -5
- package/dist/sds-stepper-step/sds-stepper-step.styles.js.map +1 -1
- package/dist/sds-switch/sds-switch.d.ts +5 -14
- package/dist/sds-switch/sds-switch.d.ts.map +1 -1
- package/dist/sds-switch/sds-switch.js +13 -26
- package/dist/sds-switch/sds-switch.js.map +1 -1
- package/dist/sds-switch/sds-switch.styles.js +1 -1
- package/dist/sds-switch/sds-switch.styles.js.map +1 -1
- package/dist/sds-textarea/sds-textarea.d.ts +12 -24
- package/dist/sds-textarea/sds-textarea.d.ts.map +1 -1
- package/dist/sds-textarea/sds-textarea.js +3 -32
- package/dist/sds-textarea/sds-textarea.js.map +1 -1
- package/dist/sds-textarea/sds-textarea.styles.d.ts.map +1 -1
- package/dist/sds-textarea/sds-textarea.styles.js +8 -5
- package/dist/sds-textarea/sds-textarea.styles.js.map +1 -1
- package/dist/sds-textfield/sds-textfield.d.ts +11 -23
- package/dist/sds-textfield/sds-textfield.d.ts.map +1 -1
- package/dist/sds-textfield/sds-textfield.js +4 -33
- package/dist/sds-textfield/sds-textfield.js.map +1 -1
- package/dist/sds-textfield/sds-textfield.spec.js +3 -3
- package/dist/sds-textfield/sds-textfield.spec.js.map +1 -1
- package/dist/sds-textfield/sds-textfield.styles.d.ts.map +1 -1
- package/dist/sds-textfield/sds-textfield.styles.js +5 -1
- package/dist/sds-textfield/sds-textfield.styles.js.map +1 -1
- package/dist/sheriff-web-components.js +388 -170
- package/dist/skill/SKILL.md +172 -0
- package/dist/skill/references/components.md +481 -0
- package/dist/skill/references/react-wrappers.md +66 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +23 -4
- package/web-types.json +1559 -840
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sheriff-web-components
|
|
3
|
+
description: >
|
|
4
|
+
Assists developers using @politiet/sheriff-web-components — Lit-based custom
|
|
5
|
+
elements with the sds-* prefix. Covers all 22 components (alert, button, card,
|
|
6
|
+
checkbox, chip, details, dialog, heading, icon, loader, radio, select, stepper,
|
|
7
|
+
switch, tag, text, textarea, textfield), React wrappers, form-associated
|
|
8
|
+
elements, slots, events, and data-palette theming. Use when the user references
|
|
9
|
+
sds-* components, @politiet/sheriff-web-components imports, or React wrappers.
|
|
10
|
+
Do not use for CSS-only questions, icon loading configuration, or SSR/RSC usage.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Sheriff Web Components
|
|
14
|
+
|
|
15
|
+
## Source File Conventions
|
|
16
|
+
|
|
17
|
+
When looking up component details not covered here, read the source directly:
|
|
18
|
+
|
|
19
|
+
- Most components: `packages/sheriff/web-components/src/sds-{name}/sds-{name}.ts`
|
|
20
|
+
- Exception components (alert, button, heading, icon, text): `packages/sheriff/web-components/src/sds-{name}/sds-{name}.component.ts`
|
|
21
|
+
- Usage examples: `packages/sheriff/web-components/src/sds-{name}/sds-{name}.stories.ts`
|
|
22
|
+
- Documentation: `packages/sheriff/web-components/src/sds-{name}/sds-{name}.mdx`
|
|
23
|
+
|
|
24
|
+
## Architecture
|
|
25
|
+
|
|
26
|
+
1. Components that dispatch events extend `LitElement` via `SDSEventDispatcherMixin`.
|
|
27
|
+
2. Properties use `@property({ reflect: true })` — settable as HTML attributes or JS properties.
|
|
28
|
+
3. Content distribution uses named slots (`slot="before"`, `slot="after"`) and a default slot.
|
|
29
|
+
4. Form-associated components implement `ElementInternals` with `formAssociated = true`.
|
|
30
|
+
5. Events dispatch via `dispatchSheriffEvent()` as `CustomEvent` with `bubbles: true, composed: true`.
|
|
31
|
+
6. Color theming uses the `data-palette` attribute (see `@politiet/sheriff-css-framework` skill for palette details).
|
|
32
|
+
|
|
33
|
+
## Prerequisites
|
|
34
|
+
|
|
35
|
+
Import the CSS framework (components depend on it for CSS custom properties):
|
|
36
|
+
|
|
37
|
+
```js
|
|
38
|
+
import '@politiet/sheriff-css-framework';
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Recommended to apply `sds-reset` to the root container. Not required for components:
|
|
42
|
+
|
|
43
|
+
```html
|
|
44
|
+
<body class="sds-reset">
|
|
45
|
+
...
|
|
46
|
+
</body>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Register Components
|
|
50
|
+
|
|
51
|
+
Import once early at app entry point for performance. Importing a component multiple times is harmless but wasteful.
|
|
52
|
+
|
|
53
|
+
For `sds-icon` specifically, repeated imports can overwrite resolver/loader configuration.
|
|
54
|
+
This can cause loading bugs where the intended resolve/loader is overwritten.
|
|
55
|
+
|
|
56
|
+
Import all components:
|
|
57
|
+
|
|
58
|
+
```js
|
|
59
|
+
import '@politiet/sheriff-web-components';
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Or import individually for tree-shaking:
|
|
63
|
+
|
|
64
|
+
```js
|
|
65
|
+
import '@politiet/sheriff-web-components/sds-button';
|
|
66
|
+
import '@politiet/sheriff-web-components/sds-textfield';
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Component Quick Reference
|
|
70
|
+
|
|
71
|
+
All components use the `sds-` prefix. Sizes are `"lg"` | `"md"` | `"sm"` (default `"md"`).
|
|
72
|
+
|
|
73
|
+
| Component | Description | Key Props |
|
|
74
|
+
| -------------------- | -------------------------------------------- | ---------------------------------------------------------------- |
|
|
75
|
+
| `sds-alert` | Contextual alert banner | `variant`, `data-palette`, `removable-label`, `size` |
|
|
76
|
+
| `sds-button` | Button or link-as-button | `variant`, `size`, `type`, `disabled`, `loading`, `icon`, `href` |
|
|
77
|
+
| `sds-card` | Content container; link card when `link` set | `link` |
|
|
78
|
+
| `sds-checkbox` | Single checkbox | `label`, `name`, `value`, `checked`, `error` |
|
|
79
|
+
| `sds-checkbox-group` | Grouped checkboxes with legend | `legend`, `error-message`, `help-text` |
|
|
80
|
+
| `sds-chip` | Selectable or removable chip/pill | `variant`, `checked`, `name`, `value` |
|
|
81
|
+
| `sds-details` | Expandable accordion | `open`, `standalone`, `name` (exclusive group) |
|
|
82
|
+
| `sds-dialog` | Modal/dialog wrapping native `<dialog>` | `open`, `modal`, `closedby` |
|
|
83
|
+
| `sds-heading` | Semantic heading | `level`, `size` |
|
|
84
|
+
| `sds-icon` | Dynamic SVG icon | `name`, `size`, `label`, `data-palette` |
|
|
85
|
+
| `sds-loader` | Loading spinner | `size`, `contrast` |
|
|
86
|
+
| `sds-notification` | **Deprecated** — use `sds-alert` | `variant`, `removable-label` |
|
|
87
|
+
| `sds-radio` | Single radio button | `label`, `name`, `value`, `checked` |
|
|
88
|
+
| `sds-radio-group` | Grouped radios with legend | `legend`, `direction`, `error-message` |
|
|
89
|
+
| `sds-select` | Dropdown select | `label`, `name`, `default-value`, `error-message` |
|
|
90
|
+
| `sds-stepper` | Step indicator for multi-step flows | `orientation` |
|
|
91
|
+
| `sds-stepper-step` | Individual step in stepper | `complete`, `interactive`, `active` |
|
|
92
|
+
| `sds-switch` | Toggle switch | `label`, `name`, `checked`, `reverse`, `hide-label` |
|
|
93
|
+
| `sds-tag` | Non-interactive label/badge | `size`, `data-palette` |
|
|
94
|
+
| `sds-text` | Text container with typography | `size`, `strong`, `tall` |
|
|
95
|
+
| `sds-textarea` | Multi-line text input | `label`, `name`, `counter`, `error-message` |
|
|
96
|
+
| `sds-textfield` | Single-line text input | `label`, `name`, `type`, `error-message` |
|
|
97
|
+
|
|
98
|
+
For full component API (all props, slots, events, code examples), see `references/components.md`.
|
|
99
|
+
|
|
100
|
+
## React Wrappers
|
|
101
|
+
|
|
102
|
+
React versions before v19 do not natively handle web component events. Use the provided wrappers from `@politiet/sheriff-web-components/react-wrappers`:
|
|
103
|
+
|
|
104
|
+
```tsx
|
|
105
|
+
import { SDSButtonWrapper, SDSTextFieldWrapper } from '@politiet/sheriff-web-components/react-wrappers';
|
|
106
|
+
|
|
107
|
+
function MyForm() {
|
|
108
|
+
return (
|
|
109
|
+
<form>
|
|
110
|
+
<SDSTextFieldWrapper label="Name" name="name" />
|
|
111
|
+
<SDSButtonWrapper variant="primary" type="submit">
|
|
112
|
+
Submit
|
|
113
|
+
</SDSButtonWrapper>
|
|
114
|
+
</form>
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
React 19+ supports custom elements natively — can use web components directly without wrappers.
|
|
120
|
+
|
|
121
|
+
For the full list of available wrappers and event mappings, see `references/react-wrappers.md`.
|
|
122
|
+
|
|
123
|
+
## Common Patterns
|
|
124
|
+
|
|
125
|
+
### Form layout
|
|
126
|
+
|
|
127
|
+
```html
|
|
128
|
+
<div class="sds-stack-y-xs">
|
|
129
|
+
<sds-textfield label="Name" name="name" required></sds-textfield>
|
|
130
|
+
<sds-textfield label="Email" name="email" type="email" required></sds-textfield>
|
|
131
|
+
<sds-textarea label="Message" name="message" rows="4"></sds-textarea>
|
|
132
|
+
<div class="sds-stack-x-sm">
|
|
133
|
+
<sds-button variant="secondary">Cancel</sds-button>
|
|
134
|
+
<sds-button variant="primary" type="submit">Submit</sds-button>
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Dialog with actions
|
|
140
|
+
|
|
141
|
+
```html
|
|
142
|
+
<sds-dialog modal closedby="any">
|
|
143
|
+
<sds-heading level="h2" size="md" slot="header">Confirm</sds-heading>
|
|
144
|
+
<sds-text>Are you sure?</sds-text>
|
|
145
|
+
<div slot="footer" class="sds-stack-x-2xs">
|
|
146
|
+
<sds-button size="md">Confirm</sds-button>
|
|
147
|
+
<sds-button size="md" variant="secondary" data-command="close">Cancel</sds-button>
|
|
148
|
+
</div>
|
|
149
|
+
</sds-dialog>
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Alert with title
|
|
153
|
+
|
|
154
|
+
```html
|
|
155
|
+
<sds-alert data-palette="success">
|
|
156
|
+
<h2 slot="title">Success!</h2>
|
|
157
|
+
<p slot="message">Your changes have been saved.</p>
|
|
158
|
+
</sds-alert>
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Danger button
|
|
162
|
+
|
|
163
|
+
```html
|
|
164
|
+
<sds-button variant="primary" data-palette="danger">Delete</sds-button>
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Error Handling
|
|
168
|
+
|
|
169
|
+
- **Component does not render or render weird**: Verify the CSS framework is imported. This is needed for CSS custom properties.
|
|
170
|
+
- **Events do not fire in React (pre-v19)**: Confirm React wrappers are used instead of web components.
|
|
171
|
+
- **Icons do not load**: Check the icon name format (`{name}-{source}-{variant}`) and network access to jsDelivr CDN. If in secure/isolated network, use Artifactory. If needed, see `@politiet/sheriff-icons` for icon skill.
|
|
172
|
+
- **Form values not submitted**: Ensure the component has both `name` and `value` attributes set.
|
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
# Component Reference
|
|
2
|
+
|
|
3
|
+
Full API for each SDS web component. All components support `size` (`"lg"` | `"md"` | `"sm"`, default `"md"`) unless noted otherwise.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## sds-alert
|
|
8
|
+
|
|
9
|
+
Contextual alert/message banner. Source: `sds-alert.component.ts`.
|
|
10
|
+
|
|
11
|
+
```html
|
|
12
|
+
<sds-alert data-palette="info">
|
|
13
|
+
<p slot="message">Informational message.</p>
|
|
14
|
+
</sds-alert>
|
|
15
|
+
|
|
16
|
+
<sds-alert data-palette="success">
|
|
17
|
+
<h2 slot="title">Success!</h2>
|
|
18
|
+
<p slot="message">Your changes have been saved.</p>
|
|
19
|
+
</sds-alert>
|
|
20
|
+
|
|
21
|
+
<sds-alert variant="secondary" data-palette="attention">
|
|
22
|
+
<h2 slot="title">Notice</h2>
|
|
23
|
+
<p slot="message">Please review your submission.</p>
|
|
24
|
+
</sds-alert>
|
|
25
|
+
|
|
26
|
+
<sds-alert data-palette="danger" removable-label="Close alert">
|
|
27
|
+
<h2 slot="title">Error</h2>
|
|
28
|
+
<p slot="message">Something went wrong.</p>
|
|
29
|
+
</sds-alert>
|
|
30
|
+
|
|
31
|
+
<sds-alert variant="secondary" data-palette="info" size="sm">
|
|
32
|
+
<p slot="message">Compact info message.</p>
|
|
33
|
+
</sds-alert>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Props:** `variant` (`"primary"` | `"secondary"`, default `"primary"`), `size` (`"lg"` | `"md"` | `"sm"`), `removable-label` (string — shows close button on primary variant), `data-palette` (`"info"` | `"success"` | `"attention"` | `"danger"`, default `"info"`)
|
|
37
|
+
**Slots:** `title` (heading element), `message` (`<p>`)
|
|
38
|
+
**Events:** `sds-remove` (close button clicked)
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## sds-button
|
|
43
|
+
|
|
44
|
+
Button or link-styled-as-button. Source: `sds-button.component.ts`.
|
|
45
|
+
|
|
46
|
+
```html
|
|
47
|
+
<sds-button variant="primary" size="lg">Save</sds-button>
|
|
48
|
+
<sds-button variant="secondary">Cancel</sds-button>
|
|
49
|
+
<sds-button variant="tertiary">Learn more</sds-button>
|
|
50
|
+
<sds-button href="https://example.com" target="_blank">Visit site</sds-button>
|
|
51
|
+
|
|
52
|
+
<!-- Icon-only -->
|
|
53
|
+
<sds-button variant="primary" icon>
|
|
54
|
+
<sds-icon name="search-material-outlined" label="Search"></sds-icon>
|
|
55
|
+
</sds-button>
|
|
56
|
+
|
|
57
|
+
<!-- With leading/trailing icons -->
|
|
58
|
+
<sds-button variant="primary">
|
|
59
|
+
<sds-icon name="file_upload-material-outlined" slot="before"></sds-icon>
|
|
60
|
+
Upload
|
|
61
|
+
</sds-button>
|
|
62
|
+
|
|
63
|
+
<sds-button variant="primary">
|
|
64
|
+
Continue
|
|
65
|
+
<sds-icon name="arrow_forward-material-outlined" slot="after"></sds-icon>
|
|
66
|
+
</sds-button>
|
|
67
|
+
|
|
68
|
+
<sds-button variant="primary" loading>Saving...</sds-button>
|
|
69
|
+
<sds-button variant="primary" type="submit">Submit</sds-button>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Props:** `variant` (`"primary"` | `"secondary"` | `"tertiary"`, default `"primary"`), `size` (`"lg"` | `"md"` | `"sm"`, default `"lg"`), `type` (`"button"` | `"submit"` | `"reset"`, default `"button"`), `disabled`, `loading`, `icon` (compact icon-only mode), `href`, `target`, `name`, `value`, `form`
|
|
73
|
+
**Slots:** default (label), `before`, `after`
|
|
74
|
+
**Events:** `click`, `submit`, `reset`
|
|
75
|
+
**Danger pattern:** `<sds-button variant="primary" data-palette="danger">Delete</sds-button>`
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## sds-card
|
|
80
|
+
|
|
81
|
+
Content container card. Renders as `<a>` with arrow icon when `link` is set.
|
|
82
|
+
|
|
83
|
+
```html
|
|
84
|
+
<sds-card link="https://www.example.com">
|
|
85
|
+
<h2 slot="heading">Pass og ID-kort</h2>
|
|
86
|
+
<p slot="text">Søke pass eller ID-kort, bestille time.</p>
|
|
87
|
+
</sds-card>
|
|
88
|
+
|
|
89
|
+
<sds-card>
|
|
90
|
+
<h2 slot="heading">Kort uten lenke</h2>
|
|
91
|
+
<p slot="text">Dette er et kort uten lenke</p>
|
|
92
|
+
</sds-card>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Props:** `link` (URL — renders as anchor)
|
|
96
|
+
**Slots:** `heading` (`<h2>`–`<h6>` only), `text` (`<p>` only, no nested elements)
|
|
97
|
+
**Note:** Slots enforce strict content validation — use native heading/paragraph elements.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## sds-checkbox
|
|
102
|
+
|
|
103
|
+
Single checkbox input.
|
|
104
|
+
|
|
105
|
+
```html
|
|
106
|
+
<sds-checkbox label="I agree to the terms" name="terms" value="accepted"></sds-checkbox>
|
|
107
|
+
<sds-checkbox label="Subscribe" name="subscribe" checked></sds-checkbox>
|
|
108
|
+
<sds-checkbox label="Remember me" name="remember" help-text="Stay logged in for 30 days"></sds-checkbox>
|
|
109
|
+
<sds-checkbox label="Required option" name="required" error></sds-checkbox>
|
|
110
|
+
<sds-checkbox label="Locked choice" name="locked" checked readonly></sds-checkbox>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Props:** `label`, `name`, `value`, `checked`, `disabled`, `required`, `readonly`, `error` (boolean — use checkbox-group for text error messages), `help-text`, `size`
|
|
114
|
+
**Events:** `change`, `focus`, `blur`
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## sds-checkbox-group
|
|
119
|
+
|
|
120
|
+
Groups multiple checkboxes with shared legend and validation.
|
|
121
|
+
|
|
122
|
+
```html
|
|
123
|
+
<sds-checkbox-group legend="Select toppings">
|
|
124
|
+
<sds-checkbox label="Cheese" name="toppings" value="cheese"></sds-checkbox>
|
|
125
|
+
<sds-checkbox label="Pepperoni" name="toppings" value="pepperoni"></sds-checkbox>
|
|
126
|
+
</sds-checkbox-group>
|
|
127
|
+
|
|
128
|
+
<sds-checkbox-group legend="Select at least one" error-message="Please select at least one">
|
|
129
|
+
<sds-checkbox label="Option A" name="options" value="a"></sds-checkbox>
|
|
130
|
+
<sds-checkbox label="Option B" name="options" value="b"></sds-checkbox>
|
|
131
|
+
</sds-checkbox-group>
|
|
132
|
+
|
|
133
|
+
<sds-checkbox-group legend="Locked choices" readonly>
|
|
134
|
+
<sds-checkbox label="Fixed A" name="fixed" value="a" checked></sds-checkbox>
|
|
135
|
+
<sds-checkbox label="Fixed B" name="fixed" value="b"></sds-checkbox>
|
|
136
|
+
</sds-checkbox-group>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Props:** `legend`, `disabled` (propagates), `readonly` (propagates), `error-message`, `help-text`, `size` (propagates)
|
|
140
|
+
**Slots:** default (`sds-checkbox` children — `name`/`value` go on each child)
|
|
141
|
+
**Events:** `sds-update`
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## sds-chip
|
|
146
|
+
|
|
147
|
+
Form-associated chip/pill. Two variants: `selectable` (toggle) and `removable` (dismiss).
|
|
148
|
+
|
|
149
|
+
```html
|
|
150
|
+
<sds-chip name="category" value="east">Øst politidistrikt</sds-chip>
|
|
151
|
+
<sds-chip name="filter" value="active" checked>Active</sds-chip>
|
|
152
|
+
<sds-chip variant="removable">Removable tag</sds-chip>
|
|
153
|
+
<sds-chip name="secure" value="locked">
|
|
154
|
+
Locked
|
|
155
|
+
<sds-icon size="sm" name="lock-material-outlined"></sds-icon>
|
|
156
|
+
</sds-chip>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Props:** `variant` (`"selectable"` | `"removable"`, default `"selectable"`), `checked`, `name`, `value`, `disabled`, `readonly`, `size`
|
|
160
|
+
**Slots:** default (label, can include `sds-icon`)
|
|
161
|
+
**Events:** `change` (selectable), `sds-remove` (removable)
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## sds-details
|
|
166
|
+
|
|
167
|
+
Expandable/collapsible accordion. Summary text is a slot.
|
|
168
|
+
|
|
169
|
+
```html
|
|
170
|
+
<sds-details>
|
|
171
|
+
<span slot="summary">Click to expand</span>
|
|
172
|
+
<p>Hidden content.</p>
|
|
173
|
+
</sds-details>
|
|
174
|
+
|
|
175
|
+
<sds-details open standalone>
|
|
176
|
+
<span slot="summary">Standalone</span>
|
|
177
|
+
<p>Has rounded corners and border.</p>
|
|
178
|
+
</sds-details>
|
|
179
|
+
|
|
180
|
+
<!-- Exclusive accordion (only one open at a time) -->
|
|
181
|
+
<sds-details name="faq">
|
|
182
|
+
<span slot="summary">Question 1</span>
|
|
183
|
+
<p>Answer 1</p>
|
|
184
|
+
</sds-details>
|
|
185
|
+
<sds-details name="faq">
|
|
186
|
+
<span slot="summary">Question 2</span>
|
|
187
|
+
<p>Answer 2</p>
|
|
188
|
+
</sds-details>
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**Props:** `open`, `standalone` (rounded corners + border), `name` (exclusive accordion group)
|
|
192
|
+
**Slots:** `summary` (always visible), default (expandable content)
|
|
193
|
+
**Events:** `sds-toggle` (detail: `{ open: boolean }`)
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## sds-dialog
|
|
198
|
+
|
|
199
|
+
Modal/dialog wrapping native `<dialog>`.
|
|
200
|
+
|
|
201
|
+
```html
|
|
202
|
+
<sds-dialog modal closedby="any">
|
|
203
|
+
<sds-heading level="h2" size="md" slot="header">Confirm Action</sds-heading>
|
|
204
|
+
<sds-text>Are you sure you want to proceed?</sds-text>
|
|
205
|
+
<div slot="footer" style="display: flex; gap: var(--sds-spacing-2xs);">
|
|
206
|
+
<sds-button size="md">Confirm</sds-button>
|
|
207
|
+
<sds-button size="md" variant="secondary" data-command="close">Cancel</sds-button>
|
|
208
|
+
</div>
|
|
209
|
+
</sds-dialog>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
**Props:** `open`, `modal`, `closedby` (`"none"` | `"closerequest"` | `"any"`, default `"closerequest"`), `close-button-label` (default `"Lukk dialogvindu"`, empty string hides button)
|
|
213
|
+
**Slots:** `header`, default (body), `footer`
|
|
214
|
+
**Events:** `sds-close`
|
|
215
|
+
**Methods:** `show()`, `showModal()`, `close()`
|
|
216
|
+
**Note:** `data-command="close"` on any inner button closes the dialog.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## sds-heading
|
|
221
|
+
|
|
222
|
+
Semantic heading. Source: `sds-heading.component.ts`.
|
|
223
|
+
|
|
224
|
+
```html
|
|
225
|
+
<sds-heading level="h1">Page Title</sds-heading>
|
|
226
|
+
<sds-heading level="h3" size="xl">Looks XL, semantically h3</sds-heading>
|
|
227
|
+
<sds-heading level="h2" data-palette="accent">Accent heading</sds-heading>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Props:** `level` (`"h1"`–`"h6"`, default `"h1"`), `size` (`"xl"` | `"lg"` | `"md"` | `"sm"` | `"xs"` — visual override)
|
|
231
|
+
**Slots:** default
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## sds-icon
|
|
236
|
+
|
|
237
|
+
Dynamic SVG icon. Source: `sds-icon.component.ts`.
|
|
238
|
+
|
|
239
|
+
```html
|
|
240
|
+
<sds-icon name="search-material-filled"></sds-icon>
|
|
241
|
+
<sds-icon name="close-material-outlined" size="lg" label="Close"></sds-icon>
|
|
242
|
+
<sds-icon name="lock-material-filled" color="red"></sds-icon>
|
|
243
|
+
|
|
244
|
+
<!-- Inline custom SVG -->
|
|
245
|
+
<sds-icon label="Custom icon">
|
|
246
|
+
<svg viewBox="0 0 24 24" fill="none">
|
|
247
|
+
<path fill="currentColor" d="M12 2L2 22h20L12 2z" />
|
|
248
|
+
</svg>
|
|
249
|
+
</sds-icon>
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
**Props:** `name` (`{icon}-{source}-{variant}`), `size` (`"sm"` | `"md"` | `"lg"`), `label` (sets `role="img"` + `aria-label`), `color`
|
|
253
|
+
**Slots:** default (custom `<svg>` — use instead of `name`)
|
|
254
|
+
**CSS vars:** `--sds-icon-size`, `--sds-icon-color`, `--sds-icon-display`
|
|
255
|
+
|
|
256
|
+
For icon naming, loading, and resolvers, see `@politiet/sheriff-icons` package skill.
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## sds-loader
|
|
261
|
+
|
|
262
|
+
Loading spinner with built-in `aria-label="Laster"`.
|
|
263
|
+
|
|
264
|
+
```html
|
|
265
|
+
<sds-loader></sds-loader>
|
|
266
|
+
<sds-loader size="lg"></sds-loader>
|
|
267
|
+
<sds-loader contrast></sds-loader>
|
|
268
|
+
<sds-loader data-palette="accent"></sds-loader>
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
**Props:** `size`, `contrast` (for colored backgrounds)
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## sds-notification
|
|
276
|
+
|
|
277
|
+
> **Deprecated** — use `sds-alert` instead.
|
|
278
|
+
|
|
279
|
+
```html
|
|
280
|
+
<sds-notification variant="success">
|
|
281
|
+
<p slot="title">Success</p>
|
|
282
|
+
<p slot="message">Profile updated.</p>
|
|
283
|
+
</sds-notification>
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
**Props:** `variant` (`"info"` | `"success"` | `"attention"` | `"danger"`), `removable-label`
|
|
287
|
+
**Slots:** `title`, `message`
|
|
288
|
+
**Events:** `sds-remove`
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## sds-radio
|
|
293
|
+
|
|
294
|
+
Single radio button.
|
|
295
|
+
|
|
296
|
+
```html
|
|
297
|
+
<sds-radio label="Option A" name="choice" value="a"></sds-radio>
|
|
298
|
+
<sds-radio label="Option B" name="choice" value="b" checked></sds-radio>
|
|
299
|
+
<sds-radio label="Express" name="shipping" value="express" help-text="2-3 business days"></sds-radio>
|
|
300
|
+
<sds-radio label="Locked" name="locked" value="y" checked readonly></sds-radio>
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**Props:** `label`, `name`, `value` (default `"on"`), `checked`, `disabled`, `required`, `readonly`, `error`, `hide-label`, `help-text`, `size`
|
|
304
|
+
**Events:** `change`, `focus`, `blur`
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## sds-radio-group
|
|
309
|
+
|
|
310
|
+
Groups radio buttons with shared legend and validation.
|
|
311
|
+
|
|
312
|
+
```html
|
|
313
|
+
<sds-radio-group legend="Choose one">
|
|
314
|
+
<sds-radio label="A" name="choice" value="a"></sds-radio>
|
|
315
|
+
<sds-radio label="B" name="choice" value="b"></sds-radio>
|
|
316
|
+
</sds-radio-group>
|
|
317
|
+
|
|
318
|
+
<sds-radio-group legend="Direction" direction="row">
|
|
319
|
+
<sds-radio label="Left" name="dir" value="left"></sds-radio>
|
|
320
|
+
<sds-radio label="Right" name="dir" value="right"></sds-radio>
|
|
321
|
+
</sds-radio-group>
|
|
322
|
+
|
|
323
|
+
<sds-radio-group legend="Required" error-message="Please select an option">
|
|
324
|
+
<sds-radio label="Yes" name="req" value="yes"></sds-radio>
|
|
325
|
+
<sds-radio label="No" name="req" value="no"></sds-radio>
|
|
326
|
+
</sds-radio-group>
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
**Props:** `legend`, `disabled` (propagates), `required` (propagates), `readonly` (propagates), `direction` (`"column"` | `"row"`), `error-message`, `help-text`, `size` (propagates)
|
|
330
|
+
**Slots:** default (`sds-radio` children)
|
|
331
|
+
**Events:** `sds-update`
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## sds-select
|
|
336
|
+
|
|
337
|
+
Dropdown select using native `<option>`/`<optgroup>` elements.
|
|
338
|
+
|
|
339
|
+
```html
|
|
340
|
+
<sds-select label="Country" name="country">
|
|
341
|
+
<option value="no">Norway</option>
|
|
342
|
+
<option value="se">Sweden</option>
|
|
343
|
+
<option value="dk">Denmark</option>
|
|
344
|
+
</sds-select>
|
|
345
|
+
|
|
346
|
+
<sds-select label="Category" name="category" default-value="b">
|
|
347
|
+
<option value="a">Category A</option>
|
|
348
|
+
<option value="b">Category B</option>
|
|
349
|
+
</sds-select>
|
|
350
|
+
|
|
351
|
+
<sds-select label="Location" name="location">
|
|
352
|
+
<optgroup label="Norway">
|
|
353
|
+
<option value="oslo">Oslo</option>
|
|
354
|
+
<option value="bergen">Bergen</option>
|
|
355
|
+
</optgroup>
|
|
356
|
+
<hr />
|
|
357
|
+
<optgroup label="Sweden">
|
|
358
|
+
<option value="stockholm">Stockholm</option>
|
|
359
|
+
</optgroup>
|
|
360
|
+
</sds-select>
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
**Props:** `label`, `name`, `value` (property only), `default-value` (attribute), `disabled`, `required`, `readonly`, `error-message`, `help-text`, `size`
|
|
364
|
+
**Slots:** default (`<option>` / `<optgroup>` / `<hr>`)
|
|
365
|
+
**Events:** `input`, `change`, `focus`, `blur`
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
## sds-stepper
|
|
370
|
+
|
|
371
|
+
Step indicator for multi-step flows. Contains `sds-stepper-step` children.
|
|
372
|
+
|
|
373
|
+
```html
|
|
374
|
+
<sds-stepper>
|
|
375
|
+
<sds-stepper-step interactive complete>Innledning</sds-stepper-step>
|
|
376
|
+
<sds-stepper-step interactive active>Saksopplysninger</sds-stepper-step>
|
|
377
|
+
<sds-stepper-step>Oppsummering</sds-stepper-step>
|
|
378
|
+
</sds-stepper>
|
|
379
|
+
|
|
380
|
+
<sds-stepper orientation="vertical">
|
|
381
|
+
<sds-stepper-step interactive complete>Step 1</sds-stepper-step>
|
|
382
|
+
<sds-stepper-step interactive active>Step 2</sds-stepper-step>
|
|
383
|
+
<sds-stepper-step>Step 3</sds-stepper-step>
|
|
384
|
+
</sds-stepper>
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
**Props:** `orientation` (`"horizontal"` | `"vertical"`, default `"horizontal"`)
|
|
388
|
+
**Slots:** default (`sds-stepper-step` children)
|
|
389
|
+
**Events:** `change` (detail: `{ index: number }`)
|
|
390
|
+
**Methods:** `getActiveStep()` (returns index or -1), `goToStep(index)`
|
|
391
|
+
|
|
392
|
+
### sds-stepper-step
|
|
393
|
+
|
|
394
|
+
**Props:** `complete`, `interactive` (clickable), `active` (current step)
|
|
395
|
+
**Slots:** default (label text)
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## sds-switch
|
|
400
|
+
|
|
401
|
+
Toggle switch input.
|
|
402
|
+
|
|
403
|
+
```html
|
|
404
|
+
<sds-switch label="Enable notifications" name="notifications"></sds-switch>
|
|
405
|
+
<sds-switch label="Dark mode" name="darkmode" checked></sds-switch>
|
|
406
|
+
<sds-switch label="Auto-save" name="autosave" reverse></sds-switch>
|
|
407
|
+
<sds-switch label="Toggle" name="toggle" hide-label></sds-switch>
|
|
408
|
+
<sds-switch label="Locked" name="locked" checked readonly></sds-switch>
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
**Props:** `label`, `name`, `checked`, `disabled`, `readonly`, `reverse` (flip order), `hide-label`, `size`
|
|
412
|
+
**Events:** `change`, `focus`, `blur`
|
|
413
|
+
**Note:** No `error-message`, `help-text`, or `required`. Value getter returns `"on"` | `"off"`.
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
## sds-tag
|
|
418
|
+
|
|
419
|
+
Non-interactive label/badge.
|
|
420
|
+
|
|
421
|
+
```html
|
|
422
|
+
<sds-tag>Default</sds-tag>
|
|
423
|
+
<sds-tag data-palette="success">Approved</sds-tag>
|
|
424
|
+
<sds-tag data-palette="danger">Rejected</sds-tag>
|
|
425
|
+
<sds-tag size="sm">Small</sds-tag>
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
**Props:** `size`
|
|
429
|
+
**Slots:** default
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
## sds-text
|
|
434
|
+
|
|
435
|
+
Text container with typography styling. Source: `sds-text.component.ts`.
|
|
436
|
+
|
|
437
|
+
```html
|
|
438
|
+
<sds-text>Regular body text.</sds-text>
|
|
439
|
+
<sds-text size="lg" strong tall>Large bold text with tall line height.</sds-text>
|
|
440
|
+
<sds-text data-palette="danger">Red danger text.</sds-text>
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
**Props:** `size` (`"xl"` | `"lg"` | `"md"` | `"sm"` | `"xs"`), `strong` (bold), `tall` (increased line height)
|
|
444
|
+
**Slots:** default
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
## sds-textarea
|
|
449
|
+
|
|
450
|
+
Multi-line text input.
|
|
451
|
+
|
|
452
|
+
```html
|
|
453
|
+
<sds-textarea label="Description" name="description" placeholder="Enter a description..."></sds-textarea>
|
|
454
|
+
<sds-textarea label="Comments" name="comments" required error-message="Required"></sds-textarea>
|
|
455
|
+
<sds-textarea label="Bio" name="bio" counter="500"></sds-textarea>
|
|
456
|
+
<sds-textarea label="Address" name="address" rows="4" wrap="soft"></sds-textarea>
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
**Props:** `label`, `name`, `value`, `placeholder`, `disabled`, `readonly`, `required`, `rows`, `cols`, `wrap` (`"hard"` | `"soft"`), `minlength`, `maxlength`, `counter` (shows character count), `autocomplete`, `help-text`, `error-message`, `size`
|
|
460
|
+
**Events:** `input`, `change`, `select`, `focus`, `blur`
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
## sds-textfield
|
|
465
|
+
|
|
466
|
+
Single-line text input.
|
|
467
|
+
|
|
468
|
+
```html
|
|
469
|
+
<sds-textfield label="Email" name="email" type="email" placeholder="you@example.com"></sds-textfield>
|
|
470
|
+
<sds-textfield label="Username" name="username" required help-text="3-20 characters" minlength="3" maxlength="20"></sds-textfield>
|
|
471
|
+
<sds-textfield label="Phone" name="phone" type="tel" error-message="Invalid phone"></sds-textfield>
|
|
472
|
+
<sds-textfield label="Search" name="search" type="search">
|
|
473
|
+
<sds-icon name="search-material-filled" slot="after"></sds-icon>
|
|
474
|
+
</sds-textfield>
|
|
475
|
+
<sds-textfield label="Password" name="password" type="password"></sds-textfield>
|
|
476
|
+
<sds-textfield label="ID" name="id" value="12345" readonly></sds-textfield>
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
**Props:** `label`, `name`, `value`, `type` (HTML input types), `placeholder`, `disabled`, `readonly`, `required`, `autocomplete`, `pattern`, `minlength`, `maxlength`, `help-text`, `error-message`, `size`
|
|
480
|
+
**Slots:** `after` (e.g., icon)
|
|
481
|
+
**Events:** `input`, `change`, `select`, `focus`, `blur`, `keydown`
|