@raintonic/formaui 0.4.0 → 0.9.2
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/CHANGELOG.md +80 -35
- package/README.md +22 -26
- package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs +39 -41
- package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-cdk-form-field.mjs +207 -3
- package/fesm2022/raintonic-formaui-cdk-form-field.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-cdk-overlay.mjs +19 -1
- package/fesm2022/raintonic-formaui-cdk-overlay.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs +5 -12
- package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-accordion.mjs +8 -5
- package/fesm2022/raintonic-formaui-components-accordion.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-alert.mjs +16 -2
- package/fesm2022/raintonic-formaui-components-alert.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-autocomplete.mjs +255 -462
- package/fesm2022/raintonic-formaui-components-autocomplete.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-avatar.mjs +34 -59
- package/fesm2022/raintonic-formaui-components-avatar.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-badge.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-badge.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-breadcrumb.mjs +4 -4
- package/fesm2022/raintonic-formaui-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-button-group.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-button-group.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-button.mjs +15 -20
- package/fesm2022/raintonic-formaui-components-button.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-card.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-card.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-checkbox.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-checkbox.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-chip.mjs +97 -0
- package/fesm2022/raintonic-formaui-components-chip.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-data-table.mjs +69 -29
- package/fesm2022/raintonic-formaui-components-data-table.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-date-picker.mjs +223 -144
- package/fesm2022/raintonic-formaui-components-date-picker.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-divider.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-divider.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-drawer.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-drawer.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-dropdown-menu.mjs +888 -0
- package/fesm2022/raintonic-formaui-components-dropdown-menu.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-dual-tier-navigation.mjs +774 -0
- package/fesm2022/raintonic-formaui-components-dual-tier-navigation.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-empty-state.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-empty-state.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-file-upload.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-file-upload.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-form-field.mjs +81 -50
- package/fesm2022/raintonic-formaui-components-form-field.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-icon.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-icon.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-input.mjs +47 -12
- package/fesm2022/raintonic-formaui-components-input.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-list.mjs +4 -4
- package/fesm2022/raintonic-formaui-components-list.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-number-input.mjs +20 -12
- package/fesm2022/raintonic-formaui-components-number-input.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-paginator.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-paginator.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-password-input.mjs +35 -110
- package/fesm2022/raintonic-formaui-components-password-input.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-popover.mjs +3 -2
- package/fesm2022/raintonic-formaui-components-popover.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-progressbar.mjs +3 -2
- package/fesm2022/raintonic-formaui-components-progressbar.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-radio.mjs +5 -6
- package/fesm2022/raintonic-formaui-components-radio.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-select.mjs +257 -412
- package/fesm2022/raintonic-formaui-components-select.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-side-panel.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-side-panel.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-sidebar-nav-menu.mjs +525 -0
- package/fesm2022/raintonic-formaui-components-sidebar-nav-menu.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-skeleton.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-skeleton.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-slider.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-slider.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-spinner.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-spinner.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-stepper.mjs +50 -45
- package/fesm2022/raintonic-formaui-components-stepper.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-strength-meter.mjs +149 -0
- package/fesm2022/raintonic-formaui-components-strength-meter.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tab.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-tab.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-time-picker.mjs +194 -154
- package/fesm2022/raintonic-formaui-components-time-picker.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-toggle-group.mjs +302 -0
- package/fesm2022/raintonic-formaui-components-toggle-group.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-toggle.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-toggle.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-toolbar.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-toolbar.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-tooltip.mjs +10 -4
- package/fesm2022/raintonic-formaui-components-tooltip.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-topbar.mjs +60 -0
- package/fesm2022/raintonic-formaui-components-topbar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tree-select.mjs +59 -69
- package/fesm2022/raintonic-formaui-components-tree-select.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-tree-table.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-tree-table.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-tree.mjs +31 -5
- package/fesm2022/raintonic-formaui-components-tree.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-core.mjs +279 -1
- package/fesm2022/raintonic-formaui-core.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-services-breakpoint.mjs +93 -0
- package/fesm2022/raintonic-formaui-services-breakpoint.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-services-dialog.mjs +314 -16
- package/fesm2022/raintonic-formaui-services-dialog.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-services-notification.mjs +93 -29
- package/fesm2022/raintonic-formaui-services-notification.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-services-theme.mjs +46 -196
- package/fesm2022/raintonic-formaui-services-theme.mjs.map +1 -1
- package/fesm2022/raintonic-formaui.mjs +1 -1
- package/fesm2022/raintonic-formaui.mjs.map +1 -1
- package/llms-full.txt +2329 -450
- package/llms.txt +36 -33
- package/package.json +42 -19
- package/styles/fonts/Geist-Bold.woff2 +0 -0
- package/styles/fonts/Geist-Italic.woff2 +0 -0
- package/styles/fonts/Geist-Light.woff2 +0 -0
- package/styles/fonts/Geist-Medium.woff2 +0 -0
- package/styles/fonts/Geist-Regular.woff2 +0 -0
- package/styles/fonts/Geist-SemiBold.woff2 +0 -0
- package/styles/fonts/GeistMono-Regular.woff2 +0 -0
- package/styles/generated/_tokens.scss +906 -0
- package/styles/index.scss +11 -10
- package/styles/partials/_brand.scss +46 -0
- package/styles/partials/_constants.scss +22 -20
- package/styles/partials/_fonts.scss +54 -10
- package/styles/partials/_grid.scss +29 -18
- package/styles/partials/_mixins.scss +69 -27
- package/styles/partials/_motion.scss +28 -33
- package/styles/partials/_theme.scss +28 -255
- package/styles/partials/_type.scss +117 -0
- package/styles/partials/_typography.scss +45 -45
- package/styles/partials/_utilities.scss +198 -98
- package/styles/partials/components/_button.scss +144 -75
- package/styles/partials/components/_dialog.scss +181 -180
- package/styles/partials/components/_overlay.scss +87 -87
- package/styles/partials/themes/_dark.scss +3 -268
- package/styles/partials/themes/_light.scss +4 -268
- package/styles/styles.css +7744 -0
- package/styles/styles.entry.scss +3 -0
- package/styles/utilities.css +4802 -0
- package/styles/utilities.entry.scss +3 -0
- package/types/raintonic-formaui-cdk-drag-drop.d.ts +0 -1
- package/types/raintonic-formaui-cdk-drag-drop.d.ts.map +1 -1
- package/types/raintonic-formaui-cdk-form-field.d.ts +118 -2
- package/types/raintonic-formaui-cdk-form-field.d.ts.map +1 -1
- package/types/raintonic-formaui-cdk-overlay.d.ts +2 -0
- package/types/raintonic-formaui-cdk-overlay.d.ts.map +1 -1
- package/types/raintonic-formaui-cdk-virtual-scroll.d.ts +0 -1
- package/types/raintonic-formaui-cdk-virtual-scroll.d.ts.map +1 -1
- package/types/raintonic-formaui-components-accordion.d.ts +1 -1
- package/types/raintonic-formaui-components-accordion.d.ts.map +1 -1
- package/types/raintonic-formaui-components-alert.d.ts +6 -1
- package/types/raintonic-formaui-components-alert.d.ts.map +1 -1
- package/types/raintonic-formaui-components-autocomplete.d.ts +73 -116
- package/types/raintonic-formaui-components-autocomplete.d.ts.map +1 -1
- package/types/raintonic-formaui-components-avatar.d.ts +13 -31
- package/types/raintonic-formaui-components-avatar.d.ts.map +1 -1
- package/types/raintonic-formaui-components-button.d.ts +4 -10
- package/types/raintonic-formaui-components-button.d.ts.map +1 -1
- package/types/raintonic-formaui-components-chip.d.ts +43 -0
- package/types/raintonic-formaui-components-chip.d.ts.map +1 -0
- package/types/raintonic-formaui-components-data-table.d.ts +48 -11
- package/types/raintonic-formaui-components-data-table.d.ts.map +1 -1
- package/types/raintonic-formaui-components-date-picker.d.ts +59 -23
- package/types/raintonic-formaui-components-date-picker.d.ts.map +1 -1
- package/types/raintonic-formaui-components-dropdown-menu.d.ts +394 -0
- package/types/raintonic-formaui-components-dropdown-menu.d.ts.map +1 -0
- package/types/raintonic-formaui-components-dual-tier-navigation.d.ts +87 -0
- package/types/raintonic-formaui-components-dual-tier-navigation.d.ts.map +1 -0
- package/types/raintonic-formaui-components-form-field.d.ts +51 -21
- package/types/raintonic-formaui-components-form-field.d.ts.map +1 -1
- package/types/raintonic-formaui-components-input.d.ts +20 -11
- package/types/raintonic-formaui-components-input.d.ts.map +1 -1
- package/types/raintonic-formaui-components-number-input.d.ts +5 -3
- package/types/raintonic-formaui-components-number-input.d.ts.map +1 -1
- package/types/raintonic-formaui-components-password-input.d.ts +18 -32
- package/types/raintonic-formaui-components-password-input.d.ts.map +1 -1
- package/types/raintonic-formaui-components-popover.d.ts.map +1 -1
- package/types/raintonic-formaui-components-progressbar.d.ts +1 -1
- package/types/raintonic-formaui-components-progressbar.d.ts.map +1 -1
- package/types/raintonic-formaui-components-radio.d.ts +1 -2
- package/types/raintonic-formaui-components-radio.d.ts.map +1 -1
- package/types/raintonic-formaui-components-select.d.ts +107 -76
- package/types/raintonic-formaui-components-select.d.ts.map +1 -1
- package/types/raintonic-formaui-components-sidebar-nav-menu.d.ts +223 -0
- package/types/raintonic-formaui-components-sidebar-nav-menu.d.ts.map +1 -0
- package/types/raintonic-formaui-components-stepper.d.ts +4 -2
- package/types/raintonic-formaui-components-stepper.d.ts.map +1 -1
- package/types/raintonic-formaui-components-strength-meter.d.ts +78 -0
- package/types/raintonic-formaui-components-strength-meter.d.ts.map +1 -0
- package/types/raintonic-formaui-components-time-picker.d.ts +44 -24
- package/types/raintonic-formaui-components-time-picker.d.ts.map +1 -1
- package/types/raintonic-formaui-components-toggle-group.d.ts +100 -0
- package/types/raintonic-formaui-components-toggle-group.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tooltip.d.ts +2 -1
- package/types/raintonic-formaui-components-tooltip.d.ts.map +1 -1
- package/types/raintonic-formaui-components-topbar.d.ts +48 -0
- package/types/raintonic-formaui-components-topbar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tree-select.d.ts +25 -9
- package/types/raintonic-formaui-components-tree-select.d.ts.map +1 -1
- package/types/raintonic-formaui-components-tree.d.ts +12 -1
- package/types/raintonic-formaui-components-tree.d.ts.map +1 -1
- package/types/raintonic-formaui-core.d.ts +243 -5
- package/types/raintonic-formaui-core.d.ts.map +1 -1
- package/types/raintonic-formaui-services-breakpoint.d.ts +44 -0
- package/types/raintonic-formaui-services-breakpoint.d.ts.map +1 -0
- package/types/raintonic-formaui-services-dialog.d.ts +141 -2
- package/types/raintonic-formaui-services-dialog.d.ts.map +1 -1
- package/types/raintonic-formaui-services-notification.d.ts +24 -2
- package/types/raintonic-formaui-services-notification.d.ts.map +1 -1
- package/types/raintonic-formaui-services-theme.d.ts +13 -103
- package/types/raintonic-formaui-services-theme.d.ts.map +1 -1
- package/types/raintonic-formaui.d.ts +1 -1
- package/fesm2022/raintonic-formaui-components-big-menu.mjs +0 -86
- package/fesm2022/raintonic-formaui-components-big-menu.mjs.map +0 -1
- package/fesm2022/raintonic-formaui-components-menu.mjs +0 -896
- package/fesm2022/raintonic-formaui-components-menu.mjs.map +0 -1
- package/fesm2022/raintonic-formaui-components-sidebar.mjs +0 -275
- package/fesm2022/raintonic-formaui-components-sidebar.mjs.map +0 -1
- package/fesm2022/raintonic-formaui-components-tag.mjs +0 -95
- package/fesm2022/raintonic-formaui-components-tag.mjs.map +0 -1
- package/styles/_fonts-entry.scss +0 -3
- package/styles/fonts/inter-tight-latin-italic.woff2 +0 -0
- package/styles/fonts/inter-tight-latin.woff2 +0 -0
- package/types/raintonic-formaui-components-big-menu.d.ts +0 -73
- package/types/raintonic-formaui-components-big-menu.d.ts.map +0 -1
- package/types/raintonic-formaui-components-menu.d.ts +0 -403
- package/types/raintonic-formaui-components-menu.d.ts.map +0 -1
- package/types/raintonic-formaui-components-sidebar.d.ts +0 -185
- package/types/raintonic-formaui-components-sidebar.d.ts.map +0 -1
- package/types/raintonic-formaui-components-tag.d.ts +0 -43
- package/types/raintonic-formaui-components-tag.d.ts.map +0 -1
package/llms-full.txt
CHANGED
|
@@ -56,8 +56,8 @@ A flexible alert component for displaying informational messages, warnings, erro
|
|
|
56
56
|
| Name | Type | Default | Required |
|
|
57
57
|
|------|------|---------|----------|
|
|
58
58
|
| variant | FuiAlertVariant | 'info' | no |
|
|
59
|
-
| description | string
|
|
60
|
-
| icon | string
|
|
59
|
+
| description | string \| null | null | no |
|
|
60
|
+
| icon | string \| null | null | no |
|
|
61
61
|
| title | string | - | yes |
|
|
62
62
|
|
|
63
63
|
#### Outputs
|
|
@@ -70,7 +70,7 @@ A flexible alert component for displaying informational messages, warnings, erro
|
|
|
70
70
|
|
|
71
71
|
## autocomplete
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
A typeahead input with a filterable dropdown of options. Designed to work inside `fui-form-field` with full Reactive Forms support, keyboard navigation, and built-in accessibility announcements.
|
|
74
74
|
|
|
75
75
|
- **Import**: `import { FuiAutocompleteComponent } from 'formaui/components/autocomplete'`
|
|
76
76
|
- **Selector**: `fui-autocomplete`
|
|
@@ -79,27 +79,58 @@ An autocomplete component designed to work seamlessly with fui-form-field. Simil
|
|
|
79
79
|
|
|
80
80
|
| Name | Type | Default | Required |
|
|
81
81
|
|------|------|---------|----------|
|
|
82
|
-
|
|
|
83
|
-
| refreshButtonLabel | string | undefined | undefined | no |
|
|
84
|
-
| noOptionsText | string | undefined | undefined | no |
|
|
85
|
-
| searchPlaceholder | string | undefined | undefined | no |
|
|
86
|
-
| errorStateMatcher | ErrorStateMatcher | null | null | no |
|
|
82
|
+
| errorStateMatcher | ErrorStateMatcher \| null | null | no |
|
|
87
83
|
|
|
88
84
|
#### Outputs
|
|
89
85
|
|
|
90
86
|
| Name | Type |
|
|
91
87
|
|------|------|
|
|
92
|
-
| valueChange |
|
|
93
|
-
| selectionChange | FuiAutocompleteChange |
|
|
88
|
+
| valueChange | T \| T[] \| null |
|
|
94
89
|
| openedChange | boolean |
|
|
95
90
|
| searchChange | string |
|
|
96
|
-
|
|
97
|
-
|
|
91
|
+
|
|
92
|
+
### Usage
|
|
93
|
+
|
|
94
|
+
```html
|
|
95
|
+
<!-- Basic autocomplete inside form-field -->
|
|
96
|
+
<fui-form-field>
|
|
97
|
+
<fui-label>Country</fui-label>
|
|
98
|
+
<fui-autocomplete placeholder="Search countries..." [formControl]="countryControl">
|
|
99
|
+
@for (country of countries(); track country.code) {
|
|
100
|
+
<fui-option [value]="country.code">{{ country.name }}</fui-option>
|
|
101
|
+
}
|
|
102
|
+
</fui-autocomplete>
|
|
103
|
+
<fui-error>Country is required</fui-error>
|
|
104
|
+
</fui-form-field>
|
|
105
|
+
|
|
106
|
+
<!-- Panel actions slot for custom action buttons -->
|
|
107
|
+
<fui-form-field>
|
|
108
|
+
<fui-label>Category</fui-label>
|
|
109
|
+
<fui-autocomplete [formControl]="categoryControl">
|
|
110
|
+
@for (c of categories(); track c.id) {
|
|
111
|
+
<fui-option [value]="c.id">{{ c.name }}</fui-option>
|
|
112
|
+
}
|
|
113
|
+
<button fuiButton fuiAutocompletePanelActions (click)="openCreateCategoryDialog()">+ Add new</button>
|
|
114
|
+
</fui-autocomplete>
|
|
115
|
+
</fui-form-field>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Notes
|
|
119
|
+
|
|
120
|
+
- **Accessibility:** Live-region announcements for option navigation and selection. `aria-activedescendant` tracks the highlighted option, `aria-describedby` links to hint and error content from `fui-form-field`.
|
|
121
|
+
- **Integration:** Must be placed inside `fui-form-field` for label, error, and hint slots. Implements `FuiFormFieldControl` and provides `FUI_FORM_FIELD_CONTROL`. Options are projected `fui-option` children from `formaui/components/select`.
|
|
122
|
+
- **Keyboard:** Arrow Up/Down to move through filtered options, Home/End for first/last, PageUp/PageDown to jump 10 at a time, Enter to select, Escape or Tab to close.
|
|
123
|
+
- **Filtering:** Options are filtered client-side by their label text against the in-panel search field. For async data, update the `fui-option` list reactively on `(searchChange)` and keep the current value in sync externally.
|
|
124
|
+
- **Panel actions:** Project `[fuiAutocompletePanelActions]` content to add custom buttons at the bottom of the dropdown panel.
|
|
125
|
+
- Use `compareWith` input for custom object comparison.
|
|
126
|
+
- Emits `selectionChange: FuiAutocompleteChange`, `valueChange: T | T[] | null`, `openedChange: boolean`, `searchChange: string`.
|
|
98
127
|
|
|
99
128
|
---
|
|
100
129
|
|
|
101
130
|
## avatar
|
|
102
131
|
|
|
132
|
+
Displays a user avatar with initials-only fallback (no image tag). Shows computed initials from fullName with a tooltip on hover.
|
|
133
|
+
|
|
103
134
|
- **Import**: `import { FuiAvatarComponent } from 'formaui/components/avatar'`
|
|
104
135
|
- **Selector**: `fui-avatar`
|
|
105
136
|
|
|
@@ -107,22 +138,17 @@ An autocomplete component designed to work seamlessly with fui-form-field. Simil
|
|
|
107
138
|
|
|
108
139
|
| Name | Type | Default | Required |
|
|
109
140
|
|------|------|---------|----------|
|
|
110
|
-
| size | FuiAvatarSize
|
|
111
|
-
|
|
|
112
|
-
|
|
|
113
|
-
|
|
|
114
|
-
| srcSet | string | null | null | no |
|
|
115
|
-
| sizesAttr | string | null | null | no |
|
|
116
|
-
| name | string | null | null | no |
|
|
117
|
-
| surname | string | null | null | no |
|
|
118
|
-
| fullName | string | null | null | no |
|
|
119
|
-
| alt | string | null | null | no |
|
|
120
|
-
| identityKey | string | null | null | no |
|
|
141
|
+
| size | FuiAvatarSize \| number | 'md' | no |
|
|
142
|
+
| initials | string \| undefined | - | no |
|
|
143
|
+
| alt | string \| null | null | no |
|
|
144
|
+
| fullName | string | - | yes |
|
|
121
145
|
|
|
122
146
|
---
|
|
123
147
|
|
|
124
148
|
## badge
|
|
125
149
|
|
|
150
|
+
Displays a small label badge with optional icon and color variants. Supports custom colors with automatic text contrast calculation.
|
|
151
|
+
|
|
126
152
|
- **Import**: `import { FuiBadgeComponent } from 'formaui/components/badge'`
|
|
127
153
|
- **Selector**: `fui-badge`
|
|
128
154
|
|
|
@@ -130,36 +156,19 @@ An autocomplete component designed to work seamlessly with fui-form-field. Simil
|
|
|
130
156
|
|
|
131
157
|
| Name | Type | Default | Required |
|
|
132
158
|
|------|------|---------|----------|
|
|
133
|
-
| icon | string
|
|
134
|
-
| customColor | FuiBadgeCustomColor
|
|
159
|
+
| icon | string \| null | null | no |
|
|
160
|
+
| customColor | FuiBadgeCustomColor \| null | null | no |
|
|
135
161
|
| size | FuiBadgeSize | 'md' | no |
|
|
136
162
|
| variant | FuiBadgeVariant | 'primary' | no |
|
|
137
|
-
| ariaLabel | string
|
|
163
|
+
| ariaLabel | string \| null | null | no |
|
|
138
164
|
| label | string | - | yes |
|
|
139
165
|
|
|
140
166
|
---
|
|
141
167
|
|
|
142
|
-
## big-menu
|
|
143
|
-
|
|
144
|
-
- **Import**: `import { FuiBigMenuComponent } from 'formaui/components/big-menu'`
|
|
145
|
-
- **Selector**: `fui-big-menu`
|
|
146
|
-
|
|
147
|
-
#### Inputs
|
|
148
|
-
|
|
149
|
-
| Name | Type | Default | Required |
|
|
150
|
-
|------|------|---------|----------|
|
|
151
|
-
| menu | BigMenuItem[] | - | yes |
|
|
152
|
-
|
|
153
|
-
#### Outputs
|
|
154
|
-
|
|
155
|
-
| Name | Type |
|
|
156
|
-
|------|------|
|
|
157
|
-
| itemMenuClick | { item: BigMenuChild; event: MouseEvent } |
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
168
|
## breadcrumb
|
|
162
169
|
|
|
170
|
+
A navigation trail that shows the user's location within a hierarchy. Compose `fui-breadcrumb` with one or more `fui-breadcrumb-item` children; each item can be a router link, and the last item is rendered as the current page.
|
|
171
|
+
|
|
163
172
|
- **Import**: `import { FuiBreadcrumbComponent } from 'formaui/components/breadcrumb'`
|
|
164
173
|
- **Selector**: `fui-breadcrumb`
|
|
165
174
|
|
|
@@ -167,7 +176,33 @@ An autocomplete component designed to work seamlessly with fui-form-field. Simil
|
|
|
167
176
|
|
|
168
177
|
| Name | Type | Default | Required |
|
|
169
178
|
|------|------|---------|----------|
|
|
170
|
-
| aria-label | string
|
|
179
|
+
| aria-label | string \| undefined | undefined | no |
|
|
180
|
+
|
|
181
|
+
### Usage
|
|
182
|
+
|
|
183
|
+
```html
|
|
184
|
+
<!-- Basic breadcrumb with router links -->
|
|
185
|
+
<fui-breadcrumb aria-label="Breadcrumb">
|
|
186
|
+
<fui-breadcrumb-item [routerLink]="['/']">Home</fui-breadcrumb-item>
|
|
187
|
+
<fui-breadcrumb-item [routerLink]="['/products']">Products</fui-breadcrumb-item>
|
|
188
|
+
<fui-breadcrumb-item>Laptop</fui-breadcrumb-item>
|
|
189
|
+
</fui-breadcrumb>
|
|
190
|
+
|
|
191
|
+
<!-- Custom separator and a disabled item -->
|
|
192
|
+
<fui-breadcrumb separator="›">
|
|
193
|
+
<fui-breadcrumb-item [routerLink]="['/']">Home</fui-breadcrumb-item>
|
|
194
|
+
<fui-breadcrumb-item [routerLink]="['/settings']" disabled>Settings</fui-breadcrumb-item>
|
|
195
|
+
<fui-breadcrumb-item>Profile</fui-breadcrumb-item>
|
|
196
|
+
</fui-breadcrumb>
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Notes
|
|
200
|
+
|
|
201
|
+
- **Accessibility:** The last item gets `aria-current="page"` automatically and is rendered as plain text rather than a link. Separators are decorative (`aria-hidden="true"`). Provide `aria-label` on the group for context; the default `Breadcrumb` label text comes from `FuiBreadcrumbIntl`.
|
|
202
|
+
- **Routing:** `routerLink` accepts a string or a commands array (`string | unknown[]`). An item renders as a link only when `routerLink` is set and it is neither the last item nor `disabled`; otherwise it renders as text.
|
|
203
|
+
- **Separator:** Set `separator` on `fui-breadcrumb` (default `/`); the value is propagated to every item and shown between entries.
|
|
204
|
+
- **Composition:** The parent tracks its `fui-breadcrumb-item` content children and assigns last-item and separator state to each one automatically — order in the template defines the trail.
|
|
205
|
+
- **i18n:** Override `FuiBreadcrumbIntl` to localize the root `aria-label`; intl changes trigger re-render.
|
|
171
206
|
|
|
172
207
|
### Sub-components
|
|
173
208
|
|
|
@@ -179,14 +214,14 @@ An autocomplete component designed to work seamlessly with fui-form-field. Simil
|
|
|
179
214
|
|
|
180
215
|
| Name | Type | Default | Required |
|
|
181
216
|
|------|------|---------|----------|
|
|
182
|
-
| routerLink | string
|
|
217
|
+
| routerLink | string \| unknown[] \| null | null | no |
|
|
183
218
|
| disabled | boolean | false | no |
|
|
184
219
|
|
|
185
220
|
---
|
|
186
221
|
|
|
187
222
|
## button
|
|
188
223
|
|
|
189
|
-
A versatile button directive
|
|
224
|
+
A versatile button directive for triggering user actions. Supports multiple visual variants, sizes, loading states, and icon-only mode. Works on both `<button>` and `<a>` elements.
|
|
190
225
|
|
|
191
226
|
- **Import**: `import { FuiButtonDirective } from 'formaui/components/button'`
|
|
192
227
|
- **Selector**: `button[fuiButton], a[fuiButton]`
|
|
@@ -201,9 +236,46 @@ A versatile button directive that can be applied to both `<button>` and `<a>` el
|
|
|
201
236
|
| fullWidth | boolean | false | no |
|
|
202
237
|
| loading | boolean | false | no |
|
|
203
238
|
| iconOnly | boolean | false | no |
|
|
204
|
-
| aria-label | string
|
|
239
|
+
| aria-label | string \| null | null | no |
|
|
205
240
|
| type | ButtonType | 'button' | no |
|
|
206
241
|
|
|
242
|
+
### Usage
|
|
243
|
+
|
|
244
|
+
```html
|
|
245
|
+
<!-- Primary button -->
|
|
246
|
+
<button fuiButton>Click me</button>
|
|
247
|
+
|
|
248
|
+
<!-- Button with variant and size -->
|
|
249
|
+
<button fuiButton variant="secondary" size="lg">Large Secondary</button>
|
|
250
|
+
|
|
251
|
+
<!-- Destructive button for destructive actions -->
|
|
252
|
+
<button fuiButton variant="destructive">Delete</button>
|
|
253
|
+
|
|
254
|
+
<!-- Tertiary violet accent button -->
|
|
255
|
+
<button fuiButton variant="tertiary-violet">Learn more</button>
|
|
256
|
+
|
|
257
|
+
<!-- Loading state -->
|
|
258
|
+
<button fuiButton [loading]="isLoading">Save</button>
|
|
259
|
+
|
|
260
|
+
<!-- Icon-only button -->
|
|
261
|
+
<button fuiButton variant="tertiary" iconOnly aria-label="Settings">
|
|
262
|
+
<fui-icon name="settings" />
|
|
263
|
+
</button>
|
|
264
|
+
|
|
265
|
+
<!-- Link button -->
|
|
266
|
+
<a fuiButton variant="link" href="/dashboard">Go to Dashboard</a>
|
|
267
|
+
|
|
268
|
+
<!-- Full-width button -->
|
|
269
|
+
<button fuiButton fullWidth>Full Width Action</button>
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### Notes
|
|
273
|
+
|
|
274
|
+
- Use `variant="destructive"` only for destructive actions (delete, remove, etc.)
|
|
275
|
+
- Always provide `aria-label` on icon-only buttons for accessibility
|
|
276
|
+
- The `loading` state automatically disables the button and shows a spinner
|
|
277
|
+
- On `<a>` elements, the `disabled` state removes the `href` attribute
|
|
278
|
+
|
|
207
279
|
---
|
|
208
280
|
|
|
209
281
|
## button-group
|
|
@@ -217,13 +289,13 @@ A container component that groups multiple buttons together, creating a unified
|
|
|
217
289
|
|
|
218
290
|
| Name | Type | Default | Required |
|
|
219
291
|
|------|------|---------|----------|
|
|
220
|
-
| ariaLabel | string
|
|
292
|
+
| ariaLabel | string \| undefined | undefined | no |
|
|
221
293
|
|
|
222
294
|
---
|
|
223
295
|
|
|
224
296
|
## card
|
|
225
297
|
|
|
226
|
-
A
|
|
298
|
+
A container for grouping related content with an optional header and actions slot. Supports elevated, outlined, and flat variants plus an optional clickable state with hover lift and keyboard activation.
|
|
227
299
|
|
|
228
300
|
- **Import**: `import { FuiCardComponent } from 'formaui/components/card'`
|
|
229
301
|
- **Selector**: `fui-card`
|
|
@@ -235,6 +307,45 @@ A flexible container component following Carbon Design System patterns. Provides
|
|
|
235
307
|
| variant | FuiCardVariant | 'outlined' | no |
|
|
236
308
|
| padding | FuiCardPadding | 'lg' | no |
|
|
237
309
|
|
|
310
|
+
### Usage
|
|
311
|
+
|
|
312
|
+
```html
|
|
313
|
+
<!-- Basic card -->
|
|
314
|
+
<fui-card>
|
|
315
|
+
<p>Plain content in a card.</p>
|
|
316
|
+
</fui-card>
|
|
317
|
+
|
|
318
|
+
<!-- Card with header, content, and action buttons -->
|
|
319
|
+
<fui-card variant="outlined">
|
|
320
|
+
<fui-card-header title="Project status" subtitle="Updated 2 min ago">
|
|
321
|
+
<button fuiButton variant="tertiary" size="sm" iconOnly aria-label="More">
|
|
322
|
+
<fui-icon name="overflow-menu-vertical" />
|
|
323
|
+
</button>
|
|
324
|
+
</fui-card-header>
|
|
325
|
+
|
|
326
|
+
<p>Main card body — put anything here.</p>
|
|
327
|
+
|
|
328
|
+
<fui-card-actions align="end">
|
|
329
|
+
<button fuiButton variant="secondary">Cancel</button>
|
|
330
|
+
<button fuiButton>Save</button>
|
|
331
|
+
</fui-card-actions>
|
|
332
|
+
</fui-card>
|
|
333
|
+
|
|
334
|
+
<!-- Elevated and clickable -->
|
|
335
|
+
<fui-card variant="elevated" [clickable]="true" (click)="openDetails()">
|
|
336
|
+
<fui-card-header title="Open details" />
|
|
337
|
+
<p>The whole card is a button.</p>
|
|
338
|
+
</fui-card>
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### Notes
|
|
342
|
+
|
|
343
|
+
- **Accessibility:** When `[clickable]="true"`, the card gets `role="button"`, is focusable (`tabindex="0"`), and activates on Enter/Space. Otherwise it renders as `role="region"`. If an `fui-card-header` with a title is projected, its id is wired to the card's `aria-labelledby` automatically.
|
|
344
|
+
- **Integration:** Composition-based — project `fui-card-header` and/or `fui-card-actions` alongside free-form content. Only one of each is supported per card.
|
|
345
|
+
- **Variants:** `elevated` (shadow), `outlined` (border — default), `flat` (no border/shadow). Padding options: `none | sm | md | lg | xl` (default `lg`).
|
|
346
|
+
- **Theming:** hover/lift animation, border, and shadow all use `--fui-*` CSS custom properties from the theme — override them at the host to restyle without changing the template.
|
|
347
|
+
- `disabled` suppresses the click handler, removes focus, and greys out the card (click and keyboard events are swallowed).
|
|
348
|
+
|
|
238
349
|
### Sub-components
|
|
239
350
|
|
|
240
351
|
#### FuiCardActionsComponent
|
|
@@ -245,7 +356,7 @@ A flexible container component following Carbon Design System patterns. Provides
|
|
|
245
356
|
|
|
246
357
|
| Name | Type | Default | Required |
|
|
247
358
|
|------|------|---------|----------|
|
|
248
|
-
| align | 'start'
|
|
359
|
+
| align | 'start' \| 'center' \| 'end' | 'end' | no |
|
|
249
360
|
|
|
250
361
|
#### FuiCardHeaderComponent
|
|
251
362
|
|
|
@@ -262,7 +373,7 @@ A flexible container component following Carbon Design System patterns. Provides
|
|
|
262
373
|
|
|
263
374
|
## checkbox
|
|
264
375
|
|
|
265
|
-
A
|
|
376
|
+
A boolean input with checked, unchecked, and indeterminate states. Full Reactive Forms support via `ControlValueAccessor`, compatible with the `mat-checkbox` API surface.
|
|
266
377
|
|
|
267
378
|
- **Import**: `import { FuiCheckboxComponent } from 'formaui/components/checkbox'`
|
|
268
379
|
- **Selector**: `fui-checkbox`
|
|
@@ -277,12 +388,12 @@ A checkbox component with full Angular Reactive Forms support. Compatible with A
|
|
|
277
388
|
| indeterminate | boolean | false | no |
|
|
278
389
|
| required | boolean | false | no |
|
|
279
390
|
| labelPosition | FuiCheckboxLabelPosition | 'after' | no |
|
|
280
|
-
| name | string
|
|
281
|
-
| aria-label | string
|
|
282
|
-
| aria-labelledby | string
|
|
283
|
-
| aria-describedby | string
|
|
391
|
+
| name | string \| null | null | no |
|
|
392
|
+
| aria-label | string \| null | null | no |
|
|
393
|
+
| aria-labelledby | string \| null | null | no |
|
|
394
|
+
| aria-describedby | string \| null | null | no |
|
|
284
395
|
| disableRipple | boolean | false | no |
|
|
285
|
-
| errorStateMatcher | ErrorStateMatcher
|
|
396
|
+
| errorStateMatcher | ErrorStateMatcher \| null | null | no |
|
|
286
397
|
|
|
287
398
|
#### Outputs
|
|
288
399
|
|
|
@@ -291,10 +402,96 @@ A checkbox component with full Angular Reactive Forms support. Compatible with A
|
|
|
291
402
|
| change | FuiCheckboxChange |
|
|
292
403
|
| indeterminateChange | boolean |
|
|
293
404
|
|
|
405
|
+
### Usage
|
|
406
|
+
|
|
407
|
+
```html
|
|
408
|
+
<!-- Basic checkbox with projected label -->
|
|
409
|
+
<fui-checkbox>Accept terms and conditions</fui-checkbox>
|
|
410
|
+
|
|
411
|
+
<!-- Two-way binding with ngModel -->
|
|
412
|
+
<fui-checkbox [(ngModel)]="subscribed">Subscribe to newsletter</fui-checkbox>
|
|
413
|
+
|
|
414
|
+
<!-- Reactive forms -->
|
|
415
|
+
<fui-checkbox formControlName="acceptTerms">
|
|
416
|
+
I accept the <a href="/terms">terms</a>
|
|
417
|
+
</fui-checkbox>
|
|
418
|
+
|
|
419
|
+
<!-- Indeterminate (e.g. "select all" with partial selection) -->
|
|
420
|
+
<fui-checkbox
|
|
421
|
+
[checked]="allSelected()"
|
|
422
|
+
[indeterminate]="someSelected() && !allSelected()"
|
|
423
|
+
(change)="toggleAll($event.checked)">
|
|
424
|
+
Select all
|
|
425
|
+
</fui-checkbox>
|
|
426
|
+
|
|
427
|
+
<!-- Label position and disabled -->
|
|
428
|
+
<fui-checkbox labelPosition="before" disabled>Disabled option</fui-checkbox>
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
### Notes
|
|
432
|
+
|
|
433
|
+
- **Accessibility:** Renders a native `<input type="checkbox">` under the hood, so keyboard (Space to toggle) and screen-reader support come for free. `aria-invalid`, `aria-required`, `aria-label`, `aria-labelledby`, and `aria-describedby` are honored.
|
|
434
|
+
- **Integration:** Use standalone or inside a form. Does **not** need `fui-form-field` — the checkbox is self-labeling via projected content.
|
|
435
|
+
- **Indeterminate vs checked:** `indeterminate` is a visual third state — it does not change the form value. Toggling the checkbox clears `indeterminate` and emits a normal `change` event.
|
|
436
|
+
- **Readonly vs disabled:** `readonly` keeps the checkbox focusable and announced but blocks user changes. `disabled` removes it from the tab order and greys it out.
|
|
437
|
+
- Emits `change: FuiCheckboxChange` (`{ source, checked }`) and `indeterminateChange: boolean`.
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
## chip
|
|
442
|
+
|
|
443
|
+
A compact element for representing tags, filters, or selections, with optional leading icon. Chips can be made selectable (toggle) and/or removable, and come in several semantic color variants and two sizes.
|
|
444
|
+
|
|
445
|
+
- **Import**: `import { FuiChipComponent } from 'formaui/components/chip'`
|
|
446
|
+
- **Selector**: `fui-chip`
|
|
447
|
+
|
|
448
|
+
#### Inputs
|
|
449
|
+
|
|
450
|
+
| Name | Type | Default | Required |
|
|
451
|
+
|------|------|---------|----------|
|
|
452
|
+
| variant | FuiChipVariant | 'primary' | no |
|
|
453
|
+
| size | FuiChipSize | 'md' | no |
|
|
454
|
+
| icon | string \| null | null | no |
|
|
455
|
+
| disabled | boolean | false | no |
|
|
456
|
+
| label | string | - | yes |
|
|
457
|
+
|
|
458
|
+
#### Outputs
|
|
459
|
+
|
|
460
|
+
| Name | Type |
|
|
461
|
+
|------|------|
|
|
462
|
+
| removed | FuiChipRemoveEvent |
|
|
463
|
+
| selectedChange | boolean |
|
|
464
|
+
|
|
465
|
+
### Usage
|
|
466
|
+
|
|
467
|
+
```html
|
|
468
|
+
<!-- Basic chip -->
|
|
469
|
+
<fui-chip label="Default" />
|
|
470
|
+
|
|
471
|
+
<!-- With variant, size, and leading icon -->
|
|
472
|
+
<fui-chip label="Active" variant="success" size="sm" icon="check" />
|
|
473
|
+
|
|
474
|
+
<!-- Selectable (toggles on click/Enter/Space) -->
|
|
475
|
+
<fui-chip label="Filter" [selectable]="true" [selected]="isActive" (selectedChange)="isActive = $event" />
|
|
476
|
+
|
|
477
|
+
<!-- Removable -->
|
|
478
|
+
<fui-chip label="Tag" [removable]="true" (removed)="onRemove($event)" />
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
### Notes
|
|
482
|
+
|
|
483
|
+
- **Accessibility:** When `selectable`, the host gets `role="option"` with `aria-selected`/`aria-pressed` reflecting the toggle state. The host is focusable (`tabindex="0"`) when `selectable` or `removable`. The remove button carries an `aria-label` (default `Remove {label}`) and the decorative icons are `aria-hidden`.
|
|
484
|
+
- **Inputs:** `label` is required. `variant` is one of `primary | secondary | success | warning | danger | info` (invalid values fall back to `primary`); `size` is `sm | md` (default `md`); `icon` sets an optional leading `fui-icon` name.
|
|
485
|
+
- **Selection:** Clicking, Enter, or Space toggles a selectable chip and emits `selectedChange: boolean`. `selected` seeds the internal state. A `disabled` chip ignores all interaction.
|
|
486
|
+
- **Removal:** When `removable` and not `disabled`, a remove button is shown; activating it emits `removed: FuiChipRemoveEvent` (`{ chip }`) and stops click propagation so it doesn't also toggle selection.
|
|
487
|
+
- **i18n:** The remove button label comes from `FuiChipIntl.removeAriaLabel(label)`; override it to localize.
|
|
488
|
+
|
|
294
489
|
---
|
|
295
490
|
|
|
296
491
|
## data-table
|
|
297
492
|
|
|
493
|
+
A feature-rich data grid for tabular data: column configuration, sticky columns, sorting, filtering, row selection, row highlighting, and badge-based label rendering. Generic over the row type `T`.
|
|
494
|
+
|
|
298
495
|
- **Import**: `import { FuiAdvancedDataTableComponent } from 'formaui/components/data-table'`
|
|
299
496
|
- **Selector**: `fui-advanced-data-table`
|
|
300
497
|
|
|
@@ -303,9 +500,10 @@ A checkbox component with full Angular Reactive Forms support. Compatible with A
|
|
|
303
500
|
| Name | Type | Default | Required |
|
|
304
501
|
|------|------|---------|----------|
|
|
305
502
|
| data | T[] | [] | no |
|
|
306
|
-
|
|
|
307
|
-
|
|
|
308
|
-
|
|
|
503
|
+
| density | AdvancedDataTableDensity | 'standard' | no |
|
|
504
|
+
| tableAriaLabel | string \| undefined | undefined | no |
|
|
505
|
+
| emptyMessage | string \| undefined | undefined | no |
|
|
506
|
+
| sort | { field: string; direction: 'ASC' \| 'DESC' } \| null | null | no |
|
|
309
507
|
| filters | ColumnFilter[] | [] | no |
|
|
310
508
|
| config | AdvancedDataTableConfig | - | yes |
|
|
311
509
|
|
|
@@ -313,14 +511,64 @@ A checkbox component with full Angular Reactive Forms support. Compatible with A
|
|
|
313
511
|
|
|
314
512
|
| Name | Type |
|
|
315
513
|
|------|------|
|
|
316
|
-
| sortChange | { field: string; direction: 'ASC'
|
|
514
|
+
| sortChange | { field: string; direction: 'ASC' \| 'DESC' } \| null |
|
|
317
515
|
| filtersChange | ColumnFilter[] |
|
|
318
516
|
| rowDblClick | T |
|
|
319
517
|
|
|
518
|
+
### Usage
|
|
519
|
+
|
|
520
|
+
```html
|
|
521
|
+
<!-- Minimal table -->
|
|
522
|
+
<fui-advanced-data-table [config]="tableConfig" [data]="rows" />
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
```typescript
|
|
526
|
+
tableConfig: AdvancedDataTableConfig = {
|
|
527
|
+
headerSticky: true,
|
|
528
|
+
areRowsSelectable: false,
|
|
529
|
+
headers: [
|
|
530
|
+
{ field: 'id', label: 'ID', type: 'number', hasSort: true },
|
|
531
|
+
{ field: 'name', label: 'Name', type: 'string', hasSort: true, hasFilter: true },
|
|
532
|
+
{ field: 'email', label: 'Email', type: 'string', hasFilter: true },
|
|
533
|
+
],
|
|
534
|
+
};
|
|
535
|
+
rows: User[] = [ /* ... */ ];
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
```html
|
|
539
|
+
<!-- Full: sort, filters, double-click handler, custom trackBy -->
|
|
540
|
+
<fui-advanced-data-table
|
|
541
|
+
[config]="tableConfig"
|
|
542
|
+
[data]="rows()"
|
|
543
|
+
[sort]="currentSort()"
|
|
544
|
+
[filters]="activeFilters()"
|
|
545
|
+
[trackBy]="trackById"
|
|
546
|
+
[enableRowHighlight]="true"
|
|
547
|
+
(sortChange)="currentSort.set($event)"
|
|
548
|
+
(filtersChange)="activeFilters.set($event)"
|
|
549
|
+
(rowDblClick)="openDetails($event)" />
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
```typescript
|
|
553
|
+
// Track-by for performance with stable-keyed rows
|
|
554
|
+
trackById = (_: number, row: User) => row.id;
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
### Notes
|
|
558
|
+
|
|
559
|
+
- **Accessibility:** Renders a native `<table>` with `aria-label` from `[tableAriaLabel]` (default: `'Data table'`). Sort headers are button elements with ARIA sort state. A live region announces sort/filter changes.
|
|
560
|
+
- **Integration:** Pass `config: AdvancedDataTableConfig` (required) and `data: T[]`. Column types drive cell rendering — `'label'` columns render a `fui-badge` using the per-column `labels` config.
|
|
561
|
+
- **Sticky columns:** `stickyColumnStart: true` on consecutive leading columns pins them at the start; `stickyColumnEnd: true` on consecutive trailing columns pins them at the end. The first non-sticky column breaks the streak.
|
|
562
|
+
- **Sort/filter:** State is fully controlled — the component emits `sortChange` and `filtersChange` but does not mutate `data`. Apply sort and filter server-side or client-side in the parent.
|
|
563
|
+
- **Row selection:** Enable via `config.areRowsSelectable: true`. Selected indices are tracked internally; use `enableRowHighlight` separately for click-to-highlight without selection checkboxes.
|
|
564
|
+
- Performance: pass a stable `[trackBy]` for large datasets — the default tracks by index, which invalidates rows when the array is reordered.
|
|
565
|
+
|
|
320
566
|
---
|
|
321
567
|
|
|
322
568
|
## date-picker
|
|
323
569
|
|
|
570
|
+
A date input with calendar overlay. Supports single-date or date-range selection, min/max constraints, custom date filters, and localised formatting. Integrates with `fui-form-field` and Reactive Forms (including built-in `Validator` for min/max/filter errors).
|
|
571
|
+
|
|
324
572
|
- **Import**: `import { FuiDatePickerComponent } from 'formaui/components/date-picker'`
|
|
325
573
|
- **Selector**: `fui-date-picker`
|
|
326
574
|
|
|
@@ -328,11 +576,12 @@ A checkbox component with full Angular Reactive Forms support. Compatible with A
|
|
|
328
576
|
|
|
329
577
|
| Name | Type | Default | Required |
|
|
330
578
|
|------|------|---------|----------|
|
|
331
|
-
| min | Date
|
|
332
|
-
| max | Date
|
|
333
|
-
| dateFilter | DateFilterFn
|
|
334
|
-
| startAt | Date
|
|
335
|
-
| errorStateMatcher | ErrorStateMatcher
|
|
579
|
+
| min | Date \| null | null | no |
|
|
580
|
+
| max | Date \| null | null | no |
|
|
581
|
+
| dateFilter | DateFilterFn \| null | null | no |
|
|
582
|
+
| startAt | Date \| null | null | no |
|
|
583
|
+
| errorStateMatcher | ErrorStateMatcher \| null | null | no |
|
|
584
|
+
| presets | DatePickerPreset[] | [] | no |
|
|
336
585
|
|
|
337
586
|
#### Outputs
|
|
338
587
|
|
|
@@ -342,10 +591,81 @@ A checkbox component with full Angular Reactive Forms support. Compatible with A
|
|
|
342
591
|
| dateChange | DatePickerModelValue |
|
|
343
592
|
| openedChange | boolean |
|
|
344
593
|
|
|
594
|
+
### Usage
|
|
595
|
+
|
|
596
|
+
```html
|
|
597
|
+
<!-- Single date inside form-field -->
|
|
598
|
+
<fui-form-field>
|
|
599
|
+
<fui-label>Birth date</fui-label>
|
|
600
|
+
<fui-date-picker placeholder="DD/MM/YYYY" [formControl]="birthDateControl" />
|
|
601
|
+
<fui-error>Birth date is required</fui-error>
|
|
602
|
+
</fui-form-field>
|
|
603
|
+
|
|
604
|
+
<!-- Min/max and custom filter (disable weekends) -->
|
|
605
|
+
<fui-form-field>
|
|
606
|
+
<fui-label>Appointment</fui-label>
|
|
607
|
+
<fui-date-picker
|
|
608
|
+
[formControl]="appointmentControl"
|
|
609
|
+
[min]="today"
|
|
610
|
+
[max]="maxBookingDate"
|
|
611
|
+
[dateFilter]="isWeekday" />
|
|
612
|
+
</fui-form-field>
|
|
613
|
+
|
|
614
|
+
<!-- Range mode -->
|
|
615
|
+
<fui-form-field>
|
|
616
|
+
<fui-label>Stay period</fui-label>
|
|
617
|
+
<fui-date-picker [range]="true" [formControl]="stayControl" />
|
|
618
|
+
</fui-form-field>
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
```typescript
|
|
622
|
+
// In the component class
|
|
623
|
+
readonly today = new Date();
|
|
624
|
+
readonly isWeekday = (d: Date): boolean => d.getDay() !== 0 && d.getDay() !== 6;
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
### Notes
|
|
628
|
+
|
|
629
|
+
- **Accessibility:** The calendar panel is keyboard-navigable (Arrow keys across days, PageUp/Down across months, Home/End), Escape closes the panel, and Enter selects. The input supports typing with an applied input mask based on `format`.
|
|
630
|
+
- **Integration:** Use inside `fui-form-field`. Implements `FuiFormFieldControl` and `Validator` — validation errors (`dateMin`, `dateMax`, `dateFilter`) are attached to the form control automatically and picked up by `ErrorStateMatcher`.
|
|
631
|
+
- **Value shape:** single mode emits `Date | null`; range mode emits `{ start: Date | null; end: Date | null } | null`. Range auto-swaps if the user picks the end date before the start.
|
|
632
|
+
- **Formatting:** `format` defaults to `'DD/MM/YYYY'`. The input mask matches the format; the panel is rendered by the internal `FuiCalendarComponent`. Change `firstDayOfWeek` to shift the week start (0 = Sunday, 1 = Monday — the default).
|
|
633
|
+
- Uses the overlay CDK for positioning; the panel flips above the input if there is no room below.
|
|
634
|
+
- Emits `dateChange`, `valueChange`, `openedChange`.
|
|
635
|
+
|
|
636
|
+
### Sub-components
|
|
637
|
+
|
|
638
|
+
#### FuiCalendarComponent
|
|
639
|
+
|
|
640
|
+
- **Selector**: `fui-calendar`
|
|
641
|
+
|
|
642
|
+
##### Inputs
|
|
643
|
+
|
|
644
|
+
| Name | Type | Default | Required |
|
|
645
|
+
|------|------|---------|----------|
|
|
646
|
+
| selected | Date \| null | null | no |
|
|
647
|
+
| rangeStart | Date \| null | null | no |
|
|
648
|
+
| rangeEnd | Date \| null | null | no |
|
|
649
|
+
| min | Date \| null | null | no |
|
|
650
|
+
| max | Date \| null | null | no |
|
|
651
|
+
| dateFilter | DateFilterFn \| null | null | no |
|
|
652
|
+
| startAt | Date \| null | null | no |
|
|
653
|
+
| hoveredDate | Date \| null | null | no |
|
|
654
|
+
|
|
655
|
+
##### Outputs
|
|
656
|
+
|
|
657
|
+
| Name | Type |
|
|
658
|
+
|------|------|
|
|
659
|
+
| dateSelected | Date |
|
|
660
|
+
| dateHovered | Date \| null |
|
|
661
|
+
| monthChanged | Date |
|
|
662
|
+
|
|
345
663
|
---
|
|
346
664
|
|
|
347
665
|
## divider
|
|
348
666
|
|
|
667
|
+
A thin separator line for splitting content, either horizontally or vertically. Optional projected content renders as a centered (or aligned) label with the line drawn on either side.
|
|
668
|
+
|
|
349
669
|
- **Import**: `import { FuiDividerComponent } from 'formaui/components/divider'`
|
|
350
670
|
- **Selector**: `fui-divider`
|
|
351
671
|
|
|
@@ -356,10 +676,35 @@ A checkbox component with full Angular Reactive Forms support. Compatible with A
|
|
|
356
676
|
| orientation | FuiDividerOrientation | 'horizontal' | no |
|
|
357
677
|
| textAlign | FuiDividerTextAlign | 'center' | no |
|
|
358
678
|
|
|
679
|
+
### Usage
|
|
680
|
+
|
|
681
|
+
```html
|
|
682
|
+
<!-- Horizontal divider -->
|
|
683
|
+
<fui-divider />
|
|
684
|
+
|
|
685
|
+
<!-- Vertical divider -->
|
|
686
|
+
<fui-divider orientation="vertical" />
|
|
687
|
+
|
|
688
|
+
<!-- Inset (indented) divider -->
|
|
689
|
+
<fui-divider [inset]="true" />
|
|
690
|
+
|
|
691
|
+
<!-- With text label -->
|
|
692
|
+
<fui-divider textAlign="start">OR</fui-divider>
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
### Notes
|
|
696
|
+
|
|
697
|
+
- **Accessibility:** Always renders with `role="separator"` and `aria-orientation` set to the current orientation.
|
|
698
|
+
- **Orientation:** `orientation` is `horizontal` (default) or `vertical`. The text label is only rendered for horizontal dividers that have projected content.
|
|
699
|
+
- **Text label:** Project any content to add a label; `textAlign` (`start | center | end`, default `center`) positions it. Content presence is detected after render, so an empty divider stays a plain line.
|
|
700
|
+
- **Inset:** `[inset]="true"` adds indentation, useful for dividers inside lists or padded containers.
|
|
701
|
+
|
|
359
702
|
---
|
|
360
703
|
|
|
361
704
|
## drawer
|
|
362
705
|
|
|
706
|
+
A panel that slides in from an edge of the screen to present complementary content or actions. Supports left/right/top/bottom positions, overlay or push modes, an optional backdrop, and a built-in header with title and close button.
|
|
707
|
+
|
|
363
708
|
- **Import**: `import { FuiDrawerComponent } from 'formaui/components/drawer'`
|
|
364
709
|
- **Selector**: `fui-drawer`
|
|
365
710
|
|
|
@@ -374,8 +719,8 @@ A checkbox component with full Angular Reactive Forms support. Compatible with A
|
|
|
374
719
|
| closeOnBackdropClick | boolean | true | no |
|
|
375
720
|
| closeOnEsc | boolean | true | no |
|
|
376
721
|
| showCloseButton | boolean | true | no |
|
|
377
|
-
| ariaLabel | string
|
|
378
|
-
| ariaLabelledBy | string
|
|
722
|
+
| ariaLabel | string \| null | null | no |
|
|
723
|
+
| ariaLabelledBy | string \| null | null | no |
|
|
379
724
|
|
|
380
725
|
#### Outputs
|
|
381
726
|
|
|
@@ -384,10 +729,224 @@ A checkbox component with full Angular Reactive Forms support. Compatible with A
|
|
|
384
729
|
| openedChange | boolean |
|
|
385
730
|
| closed | void |
|
|
386
731
|
|
|
732
|
+
### Usage
|
|
733
|
+
|
|
734
|
+
```html
|
|
735
|
+
<!-- Backdrop-driven overlay drawer with two-way open binding -->
|
|
736
|
+
<fui-drawer [(opened)]="isOpen" position="right" mode="overlay" size="md" title="Filters" (closed)="onClosed()">
|
|
737
|
+
<p>Drawer body content goes here.</p>
|
|
738
|
+
|
|
739
|
+
<div drawerFooter>
|
|
740
|
+
<button fuiButton variant="secondary" (click)="isOpen = false">Cancel</button>
|
|
741
|
+
<button fuiButton (click)="apply()">Apply</button>
|
|
742
|
+
</div>
|
|
743
|
+
</fui-drawer>
|
|
744
|
+
|
|
745
|
+
<!-- Imperative control via template ref -->
|
|
746
|
+
<fui-drawer #drawer position="left" [hasBackdrop]="false" ariaLabel="Navigation">
|
|
747
|
+
<nav>...</nav>
|
|
748
|
+
</fui-drawer>
|
|
749
|
+
<button fuiButton (click)="drawer.toggle()">Toggle</button>
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
### Notes
|
|
753
|
+
|
|
754
|
+
- **Accessibility:** Renders as `role="dialog"` and sets `aria-modal="true"` while open. The visible `title` is exposed as `aria-label` unless `ariaLabel`/`ariaLabelledBy` are provided. Implements a focus trap (Tab/Shift+Tab cycle within the panel), focuses the first tabbable element on open, and restores focus to the previously focused element on close.
|
|
755
|
+
- **Open state:** `opened` is an input with matching `openedChange` output (two-way `[(opened)]`). The component also exposes imperative `open()`, `close()`, and `toggle()` methods, and emits `closed` when dismissed.
|
|
756
|
+
- **Content projection:** Default `<ng-content>` fills the body; project a footer via the `drawerFooter` attribute. The header (title + close button) renders automatically when `title` or `showCloseButton` is set.
|
|
757
|
+
- **Dismissal:** `closeOnBackdropClick` (default `true`) closes on backdrop click and `closeOnEsc` (default `true`) closes on Escape. `hasBackdrop` toggles the backdrop element.
|
|
758
|
+
- **Sizing:** `size` accepts named tokens `sm` (320px), `md` (480px, default), `lg` (640px), `full` (100%), or any custom CSS length string applied along the drawer's main axis.
|
|
759
|
+
- **i18n:** The close button label comes from `FuiDrawerIntl.closeAriaLabel` ("Close drawer"), overridable via the injectable intl service.
|
|
760
|
+
|
|
761
|
+
---
|
|
762
|
+
|
|
763
|
+
## dropdown-menu
|
|
764
|
+
|
|
765
|
+
A dropdown menu component that provides a list of options or actions. Designed to work with external triggers using the fuiDropdownMenuTrigger directive.
|
|
766
|
+
|
|
767
|
+
- **Import**: `import { FuiDropdownMenuComponent } from 'formaui/components/dropdown-menu'`
|
|
768
|
+
- **Selector**: `fui-dropdown-menu`
|
|
769
|
+
|
|
770
|
+
#### Inputs
|
|
771
|
+
|
|
772
|
+
| Name | Type | Default | Required |
|
|
773
|
+
|------|------|---------|----------|
|
|
774
|
+
| position | FuiDropdownMenuPosition | 'bottom-start' | no |
|
|
775
|
+
| size | FuiDropdownMenuSize | 'md' | no |
|
|
776
|
+
| closeOnClickOutside | boolean | true | no |
|
|
777
|
+
| disabled | boolean | false | no |
|
|
778
|
+
| attachToBody | boolean | true | no |
|
|
779
|
+
|
|
780
|
+
#### Outputs
|
|
781
|
+
|
|
782
|
+
| Name | Type |
|
|
783
|
+
|------|------|
|
|
784
|
+
| openChange | boolean |
|
|
785
|
+
| itemSelected | Event |
|
|
786
|
+
|
|
787
|
+
### Sub-components
|
|
788
|
+
|
|
789
|
+
#### FuiDropdownMenuItemComponent
|
|
790
|
+
|
|
791
|
+
- **Selector**: `fui-dropdown-menu-item`
|
|
792
|
+
|
|
793
|
+
##### Inputs
|
|
794
|
+
|
|
795
|
+
| Name | Type | Default | Required |
|
|
796
|
+
|------|------|---------|----------|
|
|
797
|
+
| variant | DropdownMenuItemVariant | 'default' | no |
|
|
798
|
+
| disabled | boolean | false | no |
|
|
799
|
+
|
|
800
|
+
##### Outputs
|
|
801
|
+
|
|
802
|
+
| Name | Type |
|
|
803
|
+
|------|------|
|
|
804
|
+
| selected | Event |
|
|
805
|
+
|
|
806
|
+
#### FuiDropdownMenuTriggerDirective
|
|
807
|
+
|
|
808
|
+
- **Selector**: `[fuiDropdownMenuTrigger]`
|
|
809
|
+
|
|
810
|
+
##### Inputs
|
|
811
|
+
|
|
812
|
+
| Name | Type | Default | Required |
|
|
813
|
+
|------|------|---------|----------|
|
|
814
|
+
| fuiDropdownMenuTriggerFor | FuiDropdownMenuComponent \| null | - | no |
|
|
815
|
+
| menuTriggerData | unknown | - | no |
|
|
816
|
+
|
|
817
|
+
---
|
|
818
|
+
|
|
819
|
+
## dual-tier-navigation
|
|
820
|
+
|
|
821
|
+
A two-tier sidebar navigation: a narrow vertical bar of top-level icon triggers, plus a flyout panel that reveals the selected item's nested submenu. Built from a single `MenuItem[]` data model and designed for app-level navigation with deep, expandable sub-trees.
|
|
822
|
+
|
|
823
|
+
- **Import**: `import { FuiDualTierNavigationComponent } from 'formaui/components/dual-tier-navigation'`
|
|
824
|
+
- **Selector**: `fui-dual-tier-navigation`
|
|
825
|
+
|
|
826
|
+
#### Inputs
|
|
827
|
+
|
|
828
|
+
| Name | Type | Default | Required |
|
|
829
|
+
|------|------|---------|----------|
|
|
830
|
+
| items | MenuItem[] | [] | no |
|
|
831
|
+
|
|
832
|
+
#### Outputs
|
|
833
|
+
|
|
834
|
+
| Name | Type |
|
|
835
|
+
|------|------|
|
|
836
|
+
| itemClick | MenuItem |
|
|
837
|
+
|
|
838
|
+
### Usage
|
|
839
|
+
|
|
840
|
+
```html
|
|
841
|
+
<fui-dual-tier-navigation [items]="navItems" ariaLabel="Main navigation" (itemClick)="onItemClick($event)" />
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
```typescript
|
|
845
|
+
import { MenuItem } from '@raintonic/formaui/core';
|
|
846
|
+
|
|
847
|
+
navItems: MenuItem[] = [
|
|
848
|
+
{
|
|
849
|
+
label: 'Products',
|
|
850
|
+
icon: 'package',
|
|
851
|
+
items: [
|
|
852
|
+
{ label: 'List', routerLink: '/products' },
|
|
853
|
+
{
|
|
854
|
+
label: 'Categories',
|
|
855
|
+
items: [{ label: 'Active', routerLink: '/categories/active' }],
|
|
856
|
+
},
|
|
857
|
+
],
|
|
858
|
+
},
|
|
859
|
+
{ label: 'Dashboard', icon: 'house', routerLink: '/dashboard' },
|
|
860
|
+
{ label: 'Settings', icon: 'gear', command: () => openSettings() },
|
|
861
|
+
];
|
|
862
|
+
```
|
|
863
|
+
|
|
864
|
+
### Notes
|
|
865
|
+
|
|
866
|
+
- **Data-driven:** The whole structure is built from the `items: MenuItem[]` input — top-level entries become bar triggers and their `items` populate the flyout submenu. Items with `visible: false` are filtered out, and missing `id`s are auto-generated. The single public output is `itemClick`, which emits the activated `MenuItem`.
|
|
867
|
+
- **Composition:** The package exports the trigger (`fui-dual-tier-nav-trigger`), submenu (`fui-dual-tier-nav-submenu`), submenu header (`fui-dual-tier-nav-submenu-header`), and submenu item (`fui-dual-tier-nav-submenu-item`). These are internal building blocks rendered by `fui-dual-tier-navigation` from the data model; the typical consumer only uses the top-level component.
|
|
868
|
+
- **Accessibility:** Host is `role="navigation"` with a configurable `ariaLabel` (default "Dual tier navigation"). The bar and flyout use `role="menu"` / `role="menuitem"` semantics with `aria-haspopup`, `aria-expanded`, and `aria-controls` wiring between a trigger and its flyout.
|
|
869
|
+
- **Keyboard navigation:** Triggers support Enter/Space/ArrowRight to open the flyout (or activate leaf items), ArrowUp/ArrowDown to move between triggers, Home/End to jump, and ArrowLeft/Escape to close. Inside the flyout, ArrowUp/ArrowDown/Home/End move between items, ArrowRight/Enter/Space expand a parent, and ArrowLeft collapses or closes the panel. Focus moves into the flyout on open and returns to the trigger on close.
|
|
870
|
+
- **Item behavior:** Triggers and submenu items render as router links (`routerLink`, with `queryParams`/`fragment`/`target`), plain buttons that fire `command`, or expandable parents based on the `MenuItem` shape. `disabled` items are non-interactive, and submenu items reflect the active route via `routerLinkActive`. Nested submenus animate open/closed and can start expanded via `expanded: true`.
|
|
871
|
+
|
|
872
|
+
### Sub-components
|
|
873
|
+
|
|
874
|
+
#### DualTierNavSubmenuHeaderComponent
|
|
875
|
+
|
|
876
|
+
- **Selector**: `fui-dual-tier-nav-submenu-header`
|
|
877
|
+
|
|
878
|
+
##### Inputs
|
|
879
|
+
|
|
880
|
+
| Name | Type | Default | Required |
|
|
881
|
+
|------|------|---------|----------|
|
|
882
|
+
| title | string | - | yes |
|
|
883
|
+
|
|
884
|
+
##### Outputs
|
|
885
|
+
|
|
886
|
+
| Name | Type |
|
|
887
|
+
|------|------|
|
|
888
|
+
| close | void |
|
|
889
|
+
|
|
890
|
+
#### DualTierNavSubmenuItemComponent
|
|
891
|
+
|
|
892
|
+
- **Selector**: `fui-dual-tier-nav-submenu-item`
|
|
893
|
+
|
|
894
|
+
##### Inputs
|
|
895
|
+
|
|
896
|
+
| Name | Type | Default | Required |
|
|
897
|
+
|------|------|---------|----------|
|
|
898
|
+
| item | MenuItem | - | yes |
|
|
899
|
+
|
|
900
|
+
##### Outputs
|
|
901
|
+
|
|
902
|
+
| Name | Type |
|
|
903
|
+
|------|------|
|
|
904
|
+
| clickItem | MenuItem |
|
|
905
|
+
| toggleExpand | { item: MenuItem; sourceEl?: HTMLElement } |
|
|
906
|
+
| keydown | KeyboardEvent |
|
|
907
|
+
|
|
908
|
+
#### DualTierNavSubmenuComponent
|
|
909
|
+
|
|
910
|
+
- **Selector**: `fui-dual-tier-nav-submenu`
|
|
911
|
+
|
|
912
|
+
##### Inputs
|
|
913
|
+
|
|
914
|
+
| Name | Type | Default | Required |
|
|
915
|
+
|------|------|---------|----------|
|
|
916
|
+
| items | MenuItem[] | [] | no |
|
|
917
|
+
| title | string | - | yes |
|
|
918
|
+
|
|
919
|
+
##### Outputs
|
|
920
|
+
|
|
921
|
+
| Name | Type |
|
|
922
|
+
|------|------|
|
|
923
|
+
| itemClick | MenuItem |
|
|
924
|
+
| closePanel | void |
|
|
925
|
+
|
|
926
|
+
#### DualTierNavTriggerComponent
|
|
927
|
+
|
|
928
|
+
- **Selector**: `fui-dual-tier-nav-trigger`
|
|
929
|
+
|
|
930
|
+
##### Inputs
|
|
931
|
+
|
|
932
|
+
| Name | Type | Default | Required |
|
|
933
|
+
|------|------|---------|----------|
|
|
934
|
+
| item | MenuItem | - | yes |
|
|
935
|
+
|
|
936
|
+
##### Outputs
|
|
937
|
+
|
|
938
|
+
| Name | Type |
|
|
939
|
+
|------|------|
|
|
940
|
+
| itemClick | MenuItem |
|
|
941
|
+
| toggle | Event |
|
|
942
|
+
| keydown | KeyboardEvent |
|
|
943
|
+
|
|
387
944
|
---
|
|
388
945
|
|
|
389
946
|
## empty-state
|
|
390
947
|
|
|
948
|
+
A placeholder shown when a region has no content yet, such as an empty list, no search results, or a first-run screen. Displays an optional icon, title, and description, with projected slots for extra content and actions.
|
|
949
|
+
|
|
391
950
|
- **Import**: `import { FuiEmptyStateComponent } from 'formaui/components/empty-state'`
|
|
392
951
|
- **Selector**: `fui-empty-state`
|
|
393
952
|
|
|
@@ -395,10 +954,31 @@ A checkbox component with full Angular Reactive Forms support. Compatible with A
|
|
|
395
954
|
|
|
396
955
|
| Name | Type | Default | Required |
|
|
397
956
|
|------|------|---------|----------|
|
|
398
|
-
| icon | string
|
|
399
|
-
| title | string
|
|
400
|
-
| description | string
|
|
401
|
-
| size | 'sm'
|
|
957
|
+
| icon | string \| null | null | no |
|
|
958
|
+
| title | string \| null | null | no |
|
|
959
|
+
| description | string \| null | null | no |
|
|
960
|
+
| size | 'sm' \| 'md' \| 'lg' | 'md' | no |
|
|
961
|
+
|
|
962
|
+
### Usage
|
|
963
|
+
|
|
964
|
+
```html
|
|
965
|
+
<!-- Icon, title, and description via inputs -->
|
|
966
|
+
<fui-empty-state
|
|
967
|
+
icon="inbox"
|
|
968
|
+
title="No messages"
|
|
969
|
+
description="When you receive messages they will show up here."
|
|
970
|
+
size="md"
|
|
971
|
+
>
|
|
972
|
+
<button fuiButton (click)="refresh()">Refresh</button>
|
|
973
|
+
</fui-empty-state>
|
|
974
|
+
```
|
|
975
|
+
|
|
976
|
+
### Notes
|
|
977
|
+
|
|
978
|
+
- **Accessibility:** The host has `role="status"`, so updates are announced politely by screen readers.
|
|
979
|
+
- **Inputs:** `icon` (fui-icon name), `title`, and `description` are all optional (`null` by default) — render only the parts you need. `size` is `sm | md | lg` (default `md`).
|
|
980
|
+
- **Icon sizing:** The icon size is derived from `size` — `sm` uses an `md` icon, while `md`/`lg` use an `lg` icon.
|
|
981
|
+
- **Content projection:** Projected content (e.g. action buttons) is supported alongside the icon/title/description.
|
|
402
982
|
|
|
403
983
|
---
|
|
404
984
|
|
|
@@ -430,7 +1010,7 @@ A file upload component with drag-and-drop support, file previews, and validatio
|
|
|
430
1010
|
|
|
431
1011
|
## form-field
|
|
432
1012
|
|
|
433
|
-
A
|
|
1013
|
+
A wrapper component that provides consistent layout, labeling, validation, and accessibility for form controls. Works with any component implementing the `FuiFormFieldControl` interface (select, input, date-picker, etc.).
|
|
434
1014
|
|
|
435
1015
|
- **Import**: `import { FuiFormFieldComponent } from 'formaui/components/form-field'`
|
|
436
1016
|
- **Selector**: `fui-form-field`
|
|
@@ -441,6 +1021,33 @@ A form field wrapper component that provides consistent styling and behavior for
|
|
|
441
1021
|
|------|------|---------|----------|
|
|
442
1022
|
| appearance | FormFieldAppearance | 'outline' | no |
|
|
443
1023
|
|
|
1024
|
+
### Usage
|
|
1025
|
+
|
|
1026
|
+
```html
|
|
1027
|
+
<!-- Basic form field with input -->
|
|
1028
|
+
<fui-form-field>
|
|
1029
|
+
<fui-label>Email</fui-label>
|
|
1030
|
+
<input fuiInput type="email" [formControl]="emailControl" />
|
|
1031
|
+
<fui-hint>We'll never share your email</fui-hint>
|
|
1032
|
+
<fui-error>Please enter a valid email</fui-error>
|
|
1033
|
+
</fui-form-field>
|
|
1034
|
+
|
|
1035
|
+
<!-- Form field with prefix and suffix -->
|
|
1036
|
+
<fui-form-field>
|
|
1037
|
+
<fui-label>Price</fui-label>
|
|
1038
|
+
<span fuiPrefix>$</span>
|
|
1039
|
+
<input fuiInput type="number" [formControl]="priceControl" />
|
|
1040
|
+
<span fuiSuffix>.00</span>
|
|
1041
|
+
</fui-form-field>
|
|
1042
|
+
```
|
|
1043
|
+
|
|
1044
|
+
### Notes
|
|
1045
|
+
|
|
1046
|
+
- `fui-error` is shown only when the form control is in an error state
|
|
1047
|
+
- `fui-hint` is hidden when an error is displayed
|
|
1048
|
+
- Use `fuiPrefix` and `fuiSuffix` directives on any element for adornments
|
|
1049
|
+
- The form field automatically associates the label with the control for accessibility
|
|
1050
|
+
|
|
444
1051
|
### Sub-components
|
|
445
1052
|
|
|
446
1053
|
#### FuiErrorComponent
|
|
@@ -500,7 +1107,7 @@ A wrapper component for Phosphor Icons with consistent sizing and styling. Provi
|
|
|
500
1107
|
|
|
501
1108
|
## input
|
|
502
1109
|
|
|
503
|
-
|
|
1110
|
+
A directive that turns a native `<input>` or `<textarea>` into a FormaUI form control. Integrates with `fui-form-field` for label/hint/error UI and supports Reactive Forms and template-driven forms out of the box.
|
|
504
1111
|
|
|
505
1112
|
- **Import**: `import { FuiInputDirective } from 'formaui/components/input'`
|
|
506
1113
|
- **Selector**: `input[fuiInput], textarea[fuiInput], select[fuiInput]`
|
|
@@ -510,21 +1117,61 @@ An input directive that integrates seamlessly with fui-form-field and Angular Fo
|
|
|
510
1117
|
| Name | Type | Default | Required |
|
|
511
1118
|
|------|------|---------|----------|
|
|
512
1119
|
| type | FuiInputType | 'text' | no |
|
|
513
|
-
| maxlength | number
|
|
514
|
-
| minlength | number
|
|
515
|
-
| pattern | string
|
|
516
|
-
| errorStateMatcher | ErrorStateMatcher
|
|
1120
|
+
| maxlength | number \| null | null | no |
|
|
1121
|
+
| minlength | number \| null | null | no |
|
|
1122
|
+
| pattern | string \| null | null | no |
|
|
1123
|
+
| errorStateMatcher | ErrorStateMatcher \| null | null | no |
|
|
517
1124
|
|
|
518
1125
|
#### Outputs
|
|
519
1126
|
|
|
520
1127
|
| Name | Type |
|
|
521
1128
|
|------|------|
|
|
522
|
-
| valueChange | string |
|
|
1129
|
+
| valueChange | string \| number \| null |
|
|
1130
|
+
|
|
1131
|
+
### Usage
|
|
1132
|
+
|
|
1133
|
+
```html
|
|
1134
|
+
<!-- Basic input inside form-field -->
|
|
1135
|
+
<fui-form-field>
|
|
1136
|
+
<fui-label>Email</fui-label>
|
|
1137
|
+
<input fuiInput type="email" [formControl]="emailControl" />
|
|
1138
|
+
<fui-error>Please enter a valid email</fui-error>
|
|
1139
|
+
</fui-form-field>
|
|
1140
|
+
|
|
1141
|
+
<!-- Textarea variant -->
|
|
1142
|
+
<fui-form-field>
|
|
1143
|
+
<fui-label>Description</fui-label>
|
|
1144
|
+
<textarea fuiInput rows="4" [formControl]="descControl"></textarea>
|
|
1145
|
+
<fui-hint>Max 500 characters</fui-hint>
|
|
1146
|
+
</fui-form-field>
|
|
1147
|
+
|
|
1148
|
+
<!-- Password with toggle button -->
|
|
1149
|
+
<fui-form-field>
|
|
1150
|
+
<fui-label>Password</fui-label>
|
|
1151
|
+
<input fuiInput [type]="showPassword() ? 'text' : 'password'" [formControl]="pwdControl" />
|
|
1152
|
+
<button fuiSuffix fuiButton variant="tertiary" type="button" (click)="showPassword.set(!showPassword())">
|
|
1153
|
+
<fui-icon [name]="showPassword() ? 'eye-slash' : 'eye'" />
|
|
1154
|
+
</button>
|
|
1155
|
+
</fui-form-field>
|
|
1156
|
+
|
|
1157
|
+
<!-- Standalone input with template-driven forms -->
|
|
1158
|
+
<input fuiInput type="search" [(ngModel)]="query" placeholder="Search..." />
|
|
1159
|
+
```
|
|
1160
|
+
|
|
1161
|
+
### Notes
|
|
1162
|
+
|
|
1163
|
+
- **Accessibility:** `aria-invalid`, `aria-required`, `aria-disabled`, and `aria-readonly` are set automatically from state. `aria-describedby` is wired by `fui-form-field` to link hint and error messages.
|
|
1164
|
+
- **Integration:** Designed to be wrapped by `fui-form-field`. Implements `FuiFormFieldControl<string>` and provides `FUI_FORM_FIELD_CONTROL`, so the form-field picks up focus, empty, disabled, and error state automatically.
|
|
1165
|
+
- **Supported types:** `text`, `email`, `password`, `number`, `tel`, `url`, `search`, `date`, `time`, `datetime-local`. The directive also accepts `textarea[fuiInput]` and `select[fuiInput]`.
|
|
1166
|
+
- **Error state:** driven by `ErrorStateMatcher` — the default matcher flags errors when the control is invalid and touched or the parent form is submitted. Provide a custom matcher via `[errorStateMatcher]`.
|
|
1167
|
+
- **Native constraints:** `maxlength`, `minlength`, and `pattern` inputs pass through to native attributes for built-in browser validation.
|
|
523
1168
|
|
|
524
1169
|
---
|
|
525
1170
|
|
|
526
1171
|
## list
|
|
527
1172
|
|
|
1173
|
+
A vertical list container for displaying a collection of items. Supports plain (non-interactive) display, single- or multi-select listbox behaviour, optional row dividers, and full keyboard navigation. Items are projected as `fui-list-item` children.
|
|
1174
|
+
|
|
528
1175
|
- **Import**: `import { FuiListComponent } from 'formaui/components/list'`
|
|
529
1176
|
- **Selector**: `fui-list`
|
|
530
1177
|
|
|
@@ -540,6 +1187,38 @@ An input directive that integrates seamlessly with fui-form-field and Angular Fo
|
|
|
540
1187
|
|------|------|
|
|
541
1188
|
| selectionChange | FuiListSelectionChange |
|
|
542
1189
|
|
|
1190
|
+
### Usage
|
|
1191
|
+
|
|
1192
|
+
```html
|
|
1193
|
+
<!-- Plain list -->
|
|
1194
|
+
<fui-list>
|
|
1195
|
+
<fui-list-item>Inbox</fui-list-item>
|
|
1196
|
+
<fui-list-item>Drafts</fui-list-item>
|
|
1197
|
+
<fui-list-item>Sent</fui-list-item>
|
|
1198
|
+
</fui-list>
|
|
1199
|
+
|
|
1200
|
+
<!-- Single-select listbox with dividers -->
|
|
1201
|
+
<fui-list selectionMode="single" [dividers]="true" (selectionChange)="onChange($event)">
|
|
1202
|
+
<fui-list-item [value]="'a'">Option A</fui-list-item>
|
|
1203
|
+
<fui-list-item [value]="'b'">Option B</fui-list-item>
|
|
1204
|
+
<fui-list-item [value]="'c'" [disabled]="true">Option C</fui-list-item>
|
|
1205
|
+
</fui-list>
|
|
1206
|
+
|
|
1207
|
+
<!-- Multi-select -->
|
|
1208
|
+
<fui-list selectionMode="multi">
|
|
1209
|
+
<fui-list-item [value]="1">One</fui-list-item>
|
|
1210
|
+
<fui-list-item [value]="2">Two</fui-list-item>
|
|
1211
|
+
</fui-list>
|
|
1212
|
+
```
|
|
1213
|
+
|
|
1214
|
+
### Notes
|
|
1215
|
+
|
|
1216
|
+
- **Accessibility:** The container renders `role="listbox"` (with `aria-multiselectable` in `multi` mode) when `selectionMode` is not `none`, otherwise `role="list"`. Items render `role="option"` when selectable, otherwise `role="listitem"`, and expose `aria-selected`/`aria-disabled` accordingly.
|
|
1217
|
+
- **Keyboard:** Arrow Up/Down move focus across enabled items (wrapping), Home/End jump to first/last, and Enter/Space toggles selection. Disabled items are skipped.
|
|
1218
|
+
- **Selection:** Set `selectionMode` to `'none' | 'single' | 'multi'` (default `'none'`). `selectionChange` emits `{ source, value }` where `value` is the array of selected `value` inputs.
|
|
1219
|
+
- **Items:** Each `fui-list-item` takes a `value` (any type) and a `disabled` boolean input. Use `[interactive]="true"` on the list to make items focusable/hoverable without enabling selection.
|
|
1220
|
+
- **Theming:** `dividers` adds separators between items; interactive/selected/disabled states are styled via `fui-list--*` and `fui-list-item--*` classes driven by `--fui-*` custom properties.
|
|
1221
|
+
|
|
543
1222
|
### Sub-components
|
|
544
1223
|
|
|
545
1224
|
#### FuiListItemComponent
|
|
@@ -555,63 +1234,6 @@ An input directive that integrates seamlessly with fui-form-field and Angular Fo
|
|
|
555
1234
|
|
|
556
1235
|
---
|
|
557
1236
|
|
|
558
|
-
## menu
|
|
559
|
-
|
|
560
|
-
A dropdown menu component that provides a list of options or actions. Designed to work with external triggers using the fuiMenuTrigger directive.
|
|
561
|
-
|
|
562
|
-
- **Import**: `import { FuiMenuComponent } from 'formaui/components/menu'`
|
|
563
|
-
- **Selector**: `fui-menu`
|
|
564
|
-
|
|
565
|
-
#### Inputs
|
|
566
|
-
|
|
567
|
-
| Name | Type | Default | Required |
|
|
568
|
-
|------|------|---------|----------|
|
|
569
|
-
| position | FuiMenuPosition | 'bottom-start' | no |
|
|
570
|
-
| size | FuiMenuSize | 'md' | no |
|
|
571
|
-
| closeOnClickOutside | boolean | true | no |
|
|
572
|
-
| closeOnEscape | boolean | true | no |
|
|
573
|
-
| disabled | boolean | false | no |
|
|
574
|
-
| attachToBody | boolean | true | no |
|
|
575
|
-
|
|
576
|
-
#### Outputs
|
|
577
|
-
|
|
578
|
-
| Name | Type |
|
|
579
|
-
|------|------|
|
|
580
|
-
| openChange | boolean |
|
|
581
|
-
| itemSelected | Event |
|
|
582
|
-
|
|
583
|
-
### Sub-components
|
|
584
|
-
|
|
585
|
-
#### FuiMenuItemComponent
|
|
586
|
-
|
|
587
|
-
- **Selector**: `fui-menu-item`
|
|
588
|
-
|
|
589
|
-
##### Inputs
|
|
590
|
-
|
|
591
|
-
| Name | Type | Default | Required |
|
|
592
|
-
|------|------|---------|----------|
|
|
593
|
-
| variant | MenuItemVariant | 'default' | no |
|
|
594
|
-
| disabled | boolean | false | no |
|
|
595
|
-
|
|
596
|
-
##### Outputs
|
|
597
|
-
|
|
598
|
-
| Name | Type |
|
|
599
|
-
|------|------|
|
|
600
|
-
| selected | Event |
|
|
601
|
-
|
|
602
|
-
#### FuiMenuTriggerDirective
|
|
603
|
-
|
|
604
|
-
- **Selector**: `[fuiMenuTrigger]`
|
|
605
|
-
|
|
606
|
-
##### Inputs
|
|
607
|
-
|
|
608
|
-
| Name | Type | Default | Required |
|
|
609
|
-
|------|------|---------|----------|
|
|
610
|
-
| menuTriggerFor | FuiMenuComponent | null | - | no |
|
|
611
|
-
| menuTriggerData | unknown | - | no |
|
|
612
|
-
|
|
613
|
-
---
|
|
614
|
-
|
|
615
1237
|
## number-input
|
|
616
1238
|
|
|
617
1239
|
A numeric input component with increment/decrement buttons, full Angular Reactive Forms support, and FormField integration.
|
|
@@ -623,20 +1245,20 @@ A numeric input component with increment/decrement buttons, full Angular Reactiv
|
|
|
623
1245
|
|
|
624
1246
|
| Name | Type | Default | Required |
|
|
625
1247
|
|------|------|---------|----------|
|
|
626
|
-
| min | number
|
|
627
|
-
| max | number
|
|
628
|
-
| precision | number
|
|
1248
|
+
| min | number \| null | null | no |
|
|
1249
|
+
| max | number \| null | null | no |
|
|
1250
|
+
| precision | number \| null | null | no |
|
|
629
1251
|
| disabled | boolean | false | no |
|
|
630
1252
|
| readonly | boolean | false | no |
|
|
631
1253
|
| showButtons | boolean | true | no |
|
|
632
1254
|
| buttonLayout | NumberInputButtonLayout | 'horizontal' | no |
|
|
633
|
-
| errorStateMatcher | ErrorStateMatcher
|
|
1255
|
+
| errorStateMatcher | ErrorStateMatcher \| null | null | no |
|
|
634
1256
|
|
|
635
1257
|
#### Outputs
|
|
636
1258
|
|
|
637
1259
|
| Name | Type |
|
|
638
1260
|
|------|------|
|
|
639
|
-
| valueChange | number
|
|
1261
|
+
| valueChange | number \| null |
|
|
640
1262
|
|
|
641
1263
|
---
|
|
642
1264
|
|
|
@@ -664,7 +1286,7 @@ A pagination component that handles navigation through pages with: - Previous/Ne
|
|
|
664
1286
|
|
|
665
1287
|
## password-input
|
|
666
1288
|
|
|
667
|
-
A password input component with visibility toggle
|
|
1289
|
+
A password input component with visibility toggle. Integrates with fui-form-field and Angular Forms.
|
|
668
1290
|
|
|
669
1291
|
- **Import**: `import { FuiPasswordInputComponent } from 'formaui/components/password-input'`
|
|
670
1292
|
- **Selector**: `fui-password-input`
|
|
@@ -675,8 +1297,7 @@ A password input component with visibility toggle and optional strength meter. I
|
|
|
675
1297
|
|------|------|---------|----------|
|
|
676
1298
|
| disabled | boolean | false | no |
|
|
677
1299
|
| readonly | boolean | false | no |
|
|
678
|
-
|
|
|
679
|
-
| errorStateMatcher | ErrorStateMatcher | null | null | no |
|
|
1300
|
+
| errorStateMatcher | ErrorStateMatcher \| null | null | no |
|
|
680
1301
|
|
|
681
1302
|
---
|
|
682
1303
|
|
|
@@ -736,13 +1357,15 @@ A progress bar component compatible with Angular Material's mat-progress-bar int
|
|
|
736
1357
|
| value | number | 0 | no |
|
|
737
1358
|
| bufferValue | number | 0 | no |
|
|
738
1359
|
| color | ProgressBarColor | 'primary' | no |
|
|
739
|
-
| aria-label | string
|
|
740
|
-
| aria-labelledby | string
|
|
1360
|
+
| aria-label | string \| null | null | no |
|
|
1361
|
+
| aria-labelledby | string \| null | null | no |
|
|
741
1362
|
|
|
742
1363
|
---
|
|
743
1364
|
|
|
744
1365
|
## radio
|
|
745
1366
|
|
|
1367
|
+
Single-choice selection from a small set of options. Use `fui-radio-group` as the Reactive Forms control and `fui-radio-button` for each option.
|
|
1368
|
+
|
|
746
1369
|
- **Import**: `import { FuiRadioButtonComponent } from 'formaui/components/radio'`
|
|
747
1370
|
- **Selector**: `fui-radio-button`
|
|
748
1371
|
|
|
@@ -751,11 +1374,35 @@ A progress bar component compatible with Angular Material's mat-progress-bar int
|
|
|
751
1374
|
| Name | Type | Default | Required |
|
|
752
1375
|
|------|------|---------|----------|
|
|
753
1376
|
| disabled | boolean | false | no |
|
|
754
|
-
|
|
|
755
|
-
| aria-
|
|
756
|
-
| aria-labelledby | string | null | null | no |
|
|
1377
|
+
| aria-label | string \| null | null | no |
|
|
1378
|
+
| aria-labelledby | string \| null | null | no |
|
|
757
1379
|
| value | unknown | - | yes |
|
|
758
1380
|
|
|
1381
|
+
### Usage
|
|
1382
|
+
|
|
1383
|
+
```html
|
|
1384
|
+
<!-- Vertical group with ngModel -->
|
|
1385
|
+
<fui-radio-group [(ngModel)]="plan" name="plan">
|
|
1386
|
+
<fui-radio-button [value]="'free'">Free</fui-radio-button>
|
|
1387
|
+
<fui-radio-button [value]="'pro'">Pro</fui-radio-button>
|
|
1388
|
+
<fui-radio-button [value]="'enterprise'">Enterprise</fui-radio-button>
|
|
1389
|
+
</fui-radio-group>
|
|
1390
|
+
|
|
1391
|
+
<!-- Reactive forms, horizontal layout, disabled option -->
|
|
1392
|
+
<fui-radio-group formControlName="shipping" orientation="horizontal" aria-label="Shipping method">
|
|
1393
|
+
<fui-radio-button [value]="'standard'">Standard</fui-radio-button>
|
|
1394
|
+
<fui-radio-button [value]="'express'">Express</fui-radio-button>
|
|
1395
|
+
<fui-radio-button [value]="'overnight'" disabled>Overnight (unavailable)</fui-radio-button>
|
|
1396
|
+
</fui-radio-group>
|
|
1397
|
+
```
|
|
1398
|
+
|
|
1399
|
+
### Notes
|
|
1400
|
+
|
|
1401
|
+
- **Accessibility:** The group sets `role="radiogroup"` and provides keyboard navigation — Arrow Up/Left and Arrow Down/Right move selection between enabled radios and wrap around. Only the selected radio is in the tab order (roving tabindex), matching WAI-ARIA radio group semantics. Provide `aria-label` or `aria-labelledby` on the group for context.
|
|
1402
|
+
- **Integration:** `fui-radio-group` is the `ControlValueAccessor` — bind `formControl`, `formControlName`, or `ngModel` on the **group**, not on individual buttons. `name` is auto-generated if omitted and propagated to child radios.
|
|
1403
|
+
- **Value type:** `value` on each radio is typed `unknown` — use any primitive or object. Comparison is strict `===` by default.
|
|
1404
|
+
- Emits `change: FuiRadioChange` (`{ source, value }`) on the group.
|
|
1405
|
+
|
|
759
1406
|
### Sub-components
|
|
760
1407
|
|
|
761
1408
|
#### FuiRadioGroupComponent
|
|
@@ -768,9 +1415,9 @@ A progress bar component compatible with Angular Material's mat-progress-bar int
|
|
|
768
1415
|
|------|------|---------|----------|
|
|
769
1416
|
| orientation | FuiRadioOrientation | 'vertical' | no |
|
|
770
1417
|
| disabled | boolean | false | no |
|
|
771
|
-
| aria-label | string
|
|
772
|
-
| aria-labelledby | string
|
|
773
|
-
| errorStateMatcher | ErrorStateMatcher
|
|
1418
|
+
| aria-label | string \| null | null | no |
|
|
1419
|
+
| aria-labelledby | string \| null | null | no |
|
|
1420
|
+
| errorStateMatcher | ErrorStateMatcher \| null | null | no |
|
|
774
1421
|
|
|
775
1422
|
##### Outputs
|
|
776
1423
|
|
|
@@ -782,7 +1429,7 @@ A progress bar component compatible with Angular Material's mat-progress-bar int
|
|
|
782
1429
|
|
|
783
1430
|
## select
|
|
784
1431
|
|
|
785
|
-
A select component
|
|
1432
|
+
A dropdown select component for single or multiple selection. Designed to work inside `fui-form-field` with full Reactive Forms support, keyboard navigation, and type-ahead search.
|
|
786
1433
|
|
|
787
1434
|
- **Import**: `import { FuiSelectComponent } from 'formaui/components/select'`
|
|
788
1435
|
- **Selector**: `fui-select`
|
|
@@ -791,7 +1438,7 @@ A select component designed to work seamlessly with fui-form-field. Similar to A
|
|
|
791
1438
|
|
|
792
1439
|
| Name | Type | Default | Required |
|
|
793
1440
|
|------|------|---------|----------|
|
|
794
|
-
| errorStateMatcher | ErrorStateMatcher
|
|
1441
|
+
| errorStateMatcher | ErrorStateMatcher \| null | null | no |
|
|
795
1442
|
|
|
796
1443
|
#### Outputs
|
|
797
1444
|
|
|
@@ -801,28 +1448,53 @@ A select component designed to work seamlessly with fui-form-field. Similar to A
|
|
|
801
1448
|
| selectionChange | FuiSelectChange |
|
|
802
1449
|
| openedChange | boolean |
|
|
803
1450
|
|
|
1451
|
+
### Usage
|
|
1452
|
+
|
|
1453
|
+
```html
|
|
1454
|
+
<!-- Basic select inside form-field -->
|
|
1455
|
+
<fui-form-field>
|
|
1456
|
+
<fui-label>Country</fui-label>
|
|
1457
|
+
<fui-select placeholder="Choose a country" [formControl]="countryControl">
|
|
1458
|
+
<fui-option value="us">United States</fui-option>
|
|
1459
|
+
<fui-option value="uk">United Kingdom</fui-option>
|
|
1460
|
+
<fui-option value="de">Germany</fui-option>
|
|
1461
|
+
</fui-select>
|
|
1462
|
+
<fui-error>Country is required</fui-error>
|
|
1463
|
+
</fui-form-field>
|
|
1464
|
+
|
|
1465
|
+
<!-- Multiple selection -->
|
|
1466
|
+
<fui-form-field>
|
|
1467
|
+
<fui-label>Tags</fui-label>
|
|
1468
|
+
<fui-select multiple [formControl]="tagsControl">
|
|
1469
|
+
<fui-option value="angular">Angular</fui-option>
|
|
1470
|
+
<fui-option value="react">React</fui-option>
|
|
1471
|
+
<fui-option value="vue">Vue</fui-option>
|
|
1472
|
+
</fui-select>
|
|
1473
|
+
</fui-form-field>
|
|
1474
|
+
```
|
|
1475
|
+
|
|
1476
|
+
### Notes
|
|
1477
|
+
|
|
1478
|
+
- Always wrap in `fui-form-field` for label, error, and hint support
|
|
1479
|
+
- Options are projected as `<fui-option>` child elements
|
|
1480
|
+
- Supports keyboard navigation: Arrow keys, Home/End, Enter/Space, Escape
|
|
1481
|
+
- Type-ahead search: start typing to jump to matching options
|
|
1482
|
+
- Use `compareWith` input for custom object comparison
|
|
1483
|
+
|
|
804
1484
|
### Sub-components
|
|
805
1485
|
|
|
806
1486
|
#### FuiOptionComponent
|
|
807
1487
|
|
|
808
1488
|
- **Selector**: `fui-option`
|
|
809
1489
|
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
| Name | Type | Default | Required |
|
|
813
|
-
|------|------|---------|----------|
|
|
814
|
-
| value | unknown | undefined | no |
|
|
815
|
-
|
|
816
|
-
##### Outputs
|
|
817
|
-
|
|
818
|
-
| Name | Type |
|
|
819
|
-
|------|------|
|
|
820
|
-
| selectionChange | void |
|
|
1490
|
+
No public inputs or outputs.
|
|
821
1491
|
|
|
822
1492
|
---
|
|
823
1493
|
|
|
824
1494
|
## side-panel
|
|
825
1495
|
|
|
1496
|
+
A slide-in side panel overlay with optional backdrop, focus trapping, and keyboard dismiss. Renders from the right edge of the viewport with configurable width and top offset.
|
|
1497
|
+
|
|
826
1498
|
- **Import**: `import { FuiSidePanelComponent } from 'formaui/components/side-panel'`
|
|
827
1499
|
- **Selector**: `fui-side-panel`
|
|
828
1500
|
|
|
@@ -830,8 +1502,8 @@ A select component designed to work seamlessly with fui-form-field. Similar to A
|
|
|
830
1502
|
|
|
831
1503
|
| Name | Type | Default | Required |
|
|
832
1504
|
|------|------|---------|----------|
|
|
833
|
-
| ariaLabel | string
|
|
834
|
-
| ariaLabelledBy | string
|
|
1505
|
+
| ariaLabel | string \| null | null | no |
|
|
1506
|
+
| ariaLabelledBy | string \| null | null | no |
|
|
835
1507
|
|
|
836
1508
|
#### Outputs
|
|
837
1509
|
|
|
@@ -841,33 +1513,53 @@ A select component designed to work seamlessly with fui-form-field. Similar to A
|
|
|
841
1513
|
|
|
842
1514
|
---
|
|
843
1515
|
|
|
844
|
-
## sidebar
|
|
1516
|
+
## sidebar-nav-menu
|
|
845
1517
|
|
|
846
|
-
A
|
|
1518
|
+
A standalone sidebar navigation menu component with recursive, multi-level submenus. Inspired by PrimeNG's TieredMenu model with a minimal, structural approach.
|
|
847
1519
|
|
|
848
|
-
- **Import**: `import {
|
|
849
|
-
- **Selector**: `fui-sidebar`
|
|
1520
|
+
- **Import**: `import { FuiSidebarNavMenuComponent } from 'formaui/components/sidebar-nav-menu'`
|
|
1521
|
+
- **Selector**: `fui-sidebar-nav-menu`
|
|
850
1522
|
|
|
851
1523
|
#### Inputs
|
|
852
1524
|
|
|
853
1525
|
| Name | Type | Default | Required |
|
|
854
1526
|
|------|------|---------|----------|
|
|
855
|
-
|
|
|
856
|
-
| position | FuiSidebarPosition | 'start' | no |
|
|
857
|
-
| navItems | FuiSidebarNavItem[] | [] | no |
|
|
1527
|
+
| items | MenuItem[] | [] | no |
|
|
858
1528
|
|
|
859
1529
|
#### Outputs
|
|
860
1530
|
|
|
861
1531
|
| Name | Type |
|
|
862
1532
|
|------|------|
|
|
863
|
-
|
|
|
864
|
-
|
|
865
|
-
|
|
1533
|
+
| itemClick | MenuItem |
|
|
1534
|
+
|
|
1535
|
+
### Sub-components
|
|
1536
|
+
|
|
1537
|
+
#### FuiSidebarNavSearchComponent
|
|
1538
|
+
|
|
1539
|
+
- **Selector**: `fui-sidebar-nav-search`
|
|
1540
|
+
|
|
1541
|
+
##### Inputs
|
|
1542
|
+
|
|
1543
|
+
| Name | Type | Default | Required |
|
|
1544
|
+
|------|------|---------|----------|
|
|
1545
|
+
| placeholder | string \| undefined | - | no |
|
|
1546
|
+
|
|
1547
|
+
#### SidebarNavSubmenuComponent
|
|
1548
|
+
|
|
1549
|
+
- **Selector**: `fui-sidebar-nav-submenu`
|
|
1550
|
+
|
|
1551
|
+
##### Outputs
|
|
1552
|
+
|
|
1553
|
+
| Name | Type |
|
|
1554
|
+
|------|------|
|
|
1555
|
+
| itemClick | MenuItem |
|
|
866
1556
|
|
|
867
1557
|
---
|
|
868
1558
|
|
|
869
1559
|
## skeleton
|
|
870
1560
|
|
|
1561
|
+
A placeholder element that mimics the shape of content while it loads. Renders as a text line (optionally multiple lines), a circle, or a rectangle, with an optional shimmer animation.
|
|
1562
|
+
|
|
871
1563
|
- **Import**: `import { FuiSkeletonComponent } from 'formaui/components/skeleton'`
|
|
872
1564
|
- **Selector**: `fui-skeleton`
|
|
873
1565
|
|
|
@@ -876,9 +1568,33 @@ A flexible sidebar component following Carbon Design System principles. Provides
|
|
|
876
1568
|
| Name | Type | Default | Required |
|
|
877
1569
|
|------|------|---------|----------|
|
|
878
1570
|
| variant | FuiSkeletonVariant | 'text' | no |
|
|
879
|
-
| width | string
|
|
880
|
-
| height | string
|
|
881
|
-
| borderRadius | string
|
|
1571
|
+
| width | string \| null | null | no |
|
|
1572
|
+
| height | string \| null | null | no |
|
|
1573
|
+
| borderRadius | string \| null | null | no |
|
|
1574
|
+
|
|
1575
|
+
### Usage
|
|
1576
|
+
|
|
1577
|
+
```html
|
|
1578
|
+
<!-- Text placeholder (default) -->
|
|
1579
|
+
<fui-skeleton />
|
|
1580
|
+
|
|
1581
|
+
<!-- Multiple text lines -->
|
|
1582
|
+
<fui-skeleton [lines]="3" />
|
|
1583
|
+
|
|
1584
|
+
<!-- Avatar circle -->
|
|
1585
|
+
<fui-skeleton variant="circle" width="40px" height="40px" />
|
|
1586
|
+
|
|
1587
|
+
<!-- Custom rectangle without animation -->
|
|
1588
|
+
<fui-skeleton variant="rect" width="100%" height="120px" borderRadius="8px" [animated]="false" />
|
|
1589
|
+
```
|
|
1590
|
+
|
|
1591
|
+
### Notes
|
|
1592
|
+
|
|
1593
|
+
- **Accessibility:** The host always exposes `role="status"`, `aria-busy="true"`, and `aria-label="Loading"` so assistive technology announces the loading state.
|
|
1594
|
+
- **Variants:** `variant` accepts `'text' | 'circle' | 'rect'` (default `'text'`). Each maps to a `fui-skeleton--*` class.
|
|
1595
|
+
- **Sizing:** `width`, `height`, and `borderRadius` accept any CSS length string and are applied inline only when set; otherwise the variant's default size is used.
|
|
1596
|
+
- **Lines:** `lines` (default `1`) renders the given number of text rows — relevant for the `text` variant.
|
|
1597
|
+
- **Animation:** `animated` (default `true`) toggles the shimmer effect via the `fui-skeleton--animated` class.
|
|
882
1598
|
|
|
883
1599
|
---
|
|
884
1600
|
|
|
@@ -898,9 +1614,9 @@ A slider (range input) component with single and dual-thumb (range) support. Int
|
|
|
898
1614
|
| showTooltip | boolean | true | no |
|
|
899
1615
|
| formatLabel | SliderFormatLabelFn | (v: number) => String(v) | no |
|
|
900
1616
|
| disabled | boolean | false | no |
|
|
901
|
-
| aria-label | string
|
|
902
|
-
| ariaLabelLow | string
|
|
903
|
-
| ariaLabelHigh | string
|
|
1617
|
+
| aria-label | string \| null | null | no |
|
|
1618
|
+
| ariaLabelLow | string \| null | null | no |
|
|
1619
|
+
| ariaLabelHigh | string \| null | null | no |
|
|
904
1620
|
|
|
905
1621
|
#### Outputs
|
|
906
1622
|
|
|
@@ -914,6 +1630,8 @@ A slider (range input) component with single and dual-thumb (range) support. Int
|
|
|
914
1630
|
|
|
915
1631
|
## spinner
|
|
916
1632
|
|
|
1633
|
+
A circular loading spinner with determinate and indeterminate modes. Supports an overlay mode that covers its parent container.
|
|
1634
|
+
|
|
917
1635
|
- **Import**: `import { FuiSpinnerComponent } from 'formaui/components/spinner'`
|
|
918
1636
|
- **Selector**: `fui-spinner`
|
|
919
1637
|
|
|
@@ -924,8 +1642,8 @@ A slider (range input) component with single and dual-thumb (range) support. Int
|
|
|
924
1642
|
| mode | FuiSpinnerMode | 'indeterminate' | no |
|
|
925
1643
|
| value | number | 0 | no |
|
|
926
1644
|
| size | FuiSpinnerSize | 'md' | no |
|
|
927
|
-
| color | string
|
|
928
|
-
| aria-label | string
|
|
1645
|
+
| color | string \| null | null | no |
|
|
1646
|
+
| aria-label | string \| undefined | undefined | no |
|
|
929
1647
|
|
|
930
1648
|
---
|
|
931
1649
|
|
|
@@ -962,14 +1680,28 @@ A stepper component that guides users through a sequence of steps. Supports hori
|
|
|
962
1680
|
|------|------|---------|----------|
|
|
963
1681
|
| completed | boolean | false | no |
|
|
964
1682
|
| editable | boolean | true | no |
|
|
965
|
-
| stepControl | AbstractControl
|
|
1683
|
+
| stepControl | AbstractControl \| null | null | no |
|
|
966
1684
|
| optional | boolean | false | no |
|
|
1685
|
+
| disabled | boolean | false | no |
|
|
967
1686
|
| label | string | - | yes |
|
|
968
1687
|
|
|
969
1688
|
---
|
|
970
1689
|
|
|
1690
|
+
## strength-meter
|
|
1691
|
+
|
|
1692
|
+
A password strength meter that displays per-rule satisfaction bars and a rule checklist. Computes strength from a `value` input (the password string) and a `config` input controlling which rules apply.
|
|
1693
|
+
|
|
1694
|
+
- **Import**: `import { FuiStrengthMeterComponent } from 'formaui/components/strength-meter'`
|
|
1695
|
+
- **Selector**: `fui-strength-meter`
|
|
1696
|
+
|
|
1697
|
+
No public inputs or outputs.
|
|
1698
|
+
|
|
1699
|
+
---
|
|
1700
|
+
|
|
971
1701
|
## tab
|
|
972
1702
|
|
|
1703
|
+
Individual tab definition used inside `fui-tab-group`. Provides a label for the tab header and wraps its content in an `ng-template` for lazy rendering.
|
|
1704
|
+
|
|
973
1705
|
- **Import**: `import { FuiTabComponent } from 'formaui/components/tab'`
|
|
974
1706
|
- **Selector**: `fui-tab`
|
|
975
1707
|
|
|
@@ -993,32 +1725,10 @@ A stepper component that guides users through a sequence of steps. Supports hori
|
|
|
993
1725
|
|
|
994
1726
|
---
|
|
995
1727
|
|
|
996
|
-
## tag
|
|
997
|
-
|
|
998
|
-
- **Import**: `import { FuiTagComponent } from 'formaui/components/tag'`
|
|
999
|
-
- **Selector**: `fui-tag`
|
|
1000
|
-
|
|
1001
|
-
#### Inputs
|
|
1002
|
-
|
|
1003
|
-
| Name | Type | Default | Required |
|
|
1004
|
-
|------|------|---------|----------|
|
|
1005
|
-
| variant | FuiTagVariant | 'primary' | no |
|
|
1006
|
-
| size | FuiTagSize | 'md' | no |
|
|
1007
|
-
| icon | string | null | null | no |
|
|
1008
|
-
| disabled | boolean | false | no |
|
|
1009
|
-
| label | string | - | yes |
|
|
1010
|
-
|
|
1011
|
-
#### Outputs
|
|
1012
|
-
|
|
1013
|
-
| Name | Type |
|
|
1014
|
-
|------|------|
|
|
1015
|
-
| removed | FuiTagRemoveEvent |
|
|
1016
|
-
| selectedChange | boolean |
|
|
1017
|
-
|
|
1018
|
-
---
|
|
1019
|
-
|
|
1020
1728
|
## time-picker
|
|
1021
1729
|
|
|
1730
|
+
A time input with a scrollable dropdown of selectable time options. Supports 12h/24h formats, optional seconds, a configurable minute step, and min/max constraints. Integrates with `fui-form-field` and Reactive Forms (including a built-in `Validator` for min/max errors). The dropdown is rendered by the internal `fui-time-list` component.
|
|
1731
|
+
|
|
1022
1732
|
- **Import**: `import { FuiTimePickerComponent } from 'formaui/components/time-picker'`
|
|
1023
1733
|
- **Selector**: `fui-time-picker`
|
|
1024
1734
|
|
|
@@ -1027,7 +1737,7 @@ A stepper component that guides users through a sequence of steps. Supports hori
|
|
|
1027
1737
|
| Name | Type | Default | Required |
|
|
1028
1738
|
|------|------|---------|----------|
|
|
1029
1739
|
| format | TimeFormat | '24h' | no |
|
|
1030
|
-
| errorStateMatcher | ErrorStateMatcher
|
|
1740
|
+
| errorStateMatcher | ErrorStateMatcher \| null | null | no |
|
|
1031
1741
|
|
|
1032
1742
|
#### Outputs
|
|
1033
1743
|
|
|
@@ -1035,6 +1745,37 @@ A stepper component that guides users through a sequence of steps. Supports hori
|
|
|
1035
1745
|
|------|------|
|
|
1036
1746
|
| timeChange | string |
|
|
1037
1747
|
|
|
1748
|
+
### Usage
|
|
1749
|
+
|
|
1750
|
+
```html
|
|
1751
|
+
<!-- Inside form-field with Reactive Forms -->
|
|
1752
|
+
<fui-form-field>
|
|
1753
|
+
<fui-label>Start time</fui-label>
|
|
1754
|
+
<fui-time-picker placeholder="HH:MM" [formControl]="startControl" />
|
|
1755
|
+
<fui-error>Start time is required</fui-error>
|
|
1756
|
+
</fui-form-field>
|
|
1757
|
+
|
|
1758
|
+
<!-- 12h format with seconds and a 5-minute step -->
|
|
1759
|
+
<fui-form-field>
|
|
1760
|
+
<fui-label>Reminder</fui-label>
|
|
1761
|
+
<fui-time-picker format="12h" [showSeconds]="true" [minuteStep]="5" [formControl]="reminderControl" />
|
|
1762
|
+
</fui-form-field>
|
|
1763
|
+
|
|
1764
|
+
<!-- Min/max constraints -->
|
|
1765
|
+
<fui-form-field>
|
|
1766
|
+
<fui-label>Appointment</fui-label>
|
|
1767
|
+
<fui-time-picker min="09:00" max="17:00" [formControl]="apptControl" (timeChange)="onTime($event)" />
|
|
1768
|
+
</fui-form-field>
|
|
1769
|
+
```
|
|
1770
|
+
|
|
1771
|
+
### Notes
|
|
1772
|
+
|
|
1773
|
+
- **Accessibility:** The dropdown is keyboard-navigable (Arrow Up/Down across options skipping disabled ones, Home/End, Enter to select). ArrowDown/Enter open the panel from the input, Escape closes it. Focus moves into the panel on open and is restored to the input on close, and an `aria-live` region announces the active option.
|
|
1774
|
+
- **Integration:** Use inside `fui-form-field`. Implements `FuiFormFieldControl`, `ControlValueAccessor`, and `Validator` — `minTime`/`maxTime`/`timeInvalid` errors are attached to the form control automatically and picked up by `ErrorStateMatcher`.
|
|
1775
|
+
- **Value shape:** the model value is an ISO-style time string (e.g. `'14:30'` or `'14:30:00'`) or `null`. `timeChange` emits the same string when the value changes.
|
|
1776
|
+
- **Options:** `format` (`'12h' | '24h'`, default `'24h'`), `showSeconds` (default `false`), and `minuteStep` (default `15`) drive the generated option list. `min`/`max` accept ISO time strings and disable out-of-range options.
|
|
1777
|
+
- **States:** `disabled`, `readonly` (both boolean), and `errorStateMatcher` are supported; the host reflects open/disabled/focused/error/readonly via `fui-time-picker--*` classes. Manual typing is parsed and validated on blur, reverting to the previous value if it cannot be parsed.
|
|
1778
|
+
|
|
1038
1779
|
### Sub-components
|
|
1039
1780
|
|
|
1040
1781
|
#### FuiTimeListComponent
|
|
@@ -1045,7 +1786,7 @@ A stepper component that guides users through a sequence of steps. Supports hori
|
|
|
1045
1786
|
|
|
1046
1787
|
| Name | Type | Default | Required |
|
|
1047
1788
|
|------|------|---------|----------|
|
|
1048
|
-
| selectedValue | TimeValue
|
|
1789
|
+
| selectedValue | TimeValue \| null | null | no |
|
|
1049
1790
|
| format | TimeFormat | '24h' | no |
|
|
1050
1791
|
| options | TimeOption[] | - | yes |
|
|
1051
1792
|
|
|
@@ -1059,6 +1800,8 @@ A stepper component that guides users through a sequence of steps. Supports hori
|
|
|
1059
1800
|
|
|
1060
1801
|
## toggle
|
|
1061
1802
|
|
|
1803
|
+
A switch-style control for boolean settings. Semantically distinct from `fui-checkbox`: use toggle for immediate on/off settings (notifications, dark mode), use checkbox for form selection (accept terms, pick items).
|
|
1804
|
+
|
|
1062
1805
|
- **Import**: `import { FuiToggleComponent } from 'formaui/components/toggle'`
|
|
1063
1806
|
- **Selector**: `fui-toggle`
|
|
1064
1807
|
|
|
@@ -1071,11 +1814,11 @@ A stepper component that guides users through a sequence of steps. Supports hori
|
|
|
1071
1814
|
| required | boolean | false | no |
|
|
1072
1815
|
| labelPosition | FuiToggleLabelPosition | 'after' | no |
|
|
1073
1816
|
| size | FuiToggleSize | 'md' | no |
|
|
1074
|
-
| name | string
|
|
1075
|
-
| aria-label | string
|
|
1076
|
-
| aria-labelledby | string
|
|
1077
|
-
| aria-describedby | string
|
|
1078
|
-
| errorStateMatcher | ErrorStateMatcher
|
|
1817
|
+
| name | string \| null | null | no |
|
|
1818
|
+
| aria-label | string \| null | null | no |
|
|
1819
|
+
| aria-labelledby | string \| null | null | no |
|
|
1820
|
+
| aria-describedby | string \| null | null | no |
|
|
1821
|
+
| errorStateMatcher | ErrorStateMatcher \| null | null | no |
|
|
1079
1822
|
|
|
1080
1823
|
#### Outputs
|
|
1081
1824
|
|
|
@@ -1083,6 +1826,113 @@ A stepper component that guides users through a sequence of steps. Supports hori
|
|
|
1083
1826
|
|------|------|
|
|
1084
1827
|
| change | FuiToggleChange |
|
|
1085
1828
|
|
|
1829
|
+
### Usage
|
|
1830
|
+
|
|
1831
|
+
```html
|
|
1832
|
+
<!-- Basic toggle -->
|
|
1833
|
+
<fui-toggle [(ngModel)]="notifications">Email notifications</fui-toggle>
|
|
1834
|
+
|
|
1835
|
+
<!-- Reactive forms with label before -->
|
|
1836
|
+
<fui-toggle formControlName="darkMode" labelPosition="before">
|
|
1837
|
+
Dark mode
|
|
1838
|
+
</fui-toggle>
|
|
1839
|
+
|
|
1840
|
+
<!-- Size variant and disabled -->
|
|
1841
|
+
<fui-toggle size="sm" disabled>Feature unavailable</fui-toggle>
|
|
1842
|
+
|
|
1843
|
+
<!-- Listen to change events -->
|
|
1844
|
+
<fui-toggle
|
|
1845
|
+
[checked]="autoSaveEnabled()"
|
|
1846
|
+
(change)="onAutoSaveToggle($event.checked)">
|
|
1847
|
+
Auto-save
|
|
1848
|
+
</fui-toggle>
|
|
1849
|
+
```
|
|
1850
|
+
|
|
1851
|
+
### Notes
|
|
1852
|
+
|
|
1853
|
+
- **Accessibility:** Native `<input type="checkbox">` under the hood with `role` styling — keyboard (Space to toggle), focus outlines, and `aria-invalid` / `aria-required` all honored. Provide an explicit `aria-label` when the toggle has no visible label.
|
|
1854
|
+
- **Integration:** Standalone; does not require `fui-form-field`. Use `[(ngModel)]`, `[formControl]`, or `formControlName` for two-way binding.
|
|
1855
|
+
- **vs Checkbox:** functionally similar (both boolean CVAs), but use toggle for "settings applied immediately on change" and checkbox for "part of a form the user submits". Toggle has no indeterminate state.
|
|
1856
|
+
- Emits `change: FuiToggleChange` (`{ source, checked }`) on user-driven toggles. Size options: `'sm' | 'md'`.
|
|
1857
|
+
|
|
1858
|
+
---
|
|
1859
|
+
|
|
1860
|
+
## toggle-group
|
|
1861
|
+
|
|
1862
|
+
A selection control that renders as a row of connected toggle buttons. Like radio buttons but styled as a horizontal button group. Use `fui-toggle-group` as the Reactive Forms control and `fui-toggle-item` for each option.
|
|
1863
|
+
|
|
1864
|
+
- **Import**: `import { FuiToggleGroupComponent } from 'formaui/components/toggle-group'`
|
|
1865
|
+
- **Selector**: `fui-toggle-group`
|
|
1866
|
+
|
|
1867
|
+
#### Inputs
|
|
1868
|
+
|
|
1869
|
+
| Name | Type | Default | Required |
|
|
1870
|
+
|------|------|---------|----------|
|
|
1871
|
+
| disabled | boolean | false | no |
|
|
1872
|
+
| aria-label | string \| null | null | no |
|
|
1873
|
+
| aria-labelledby | string \| null | null | no |
|
|
1874
|
+
| errorStateMatcher | ErrorStateMatcher \| null | null | no |
|
|
1875
|
+
| size | FuiToggleGroupSize | 'md' | no |
|
|
1876
|
+
|
|
1877
|
+
#### Outputs
|
|
1878
|
+
|
|
1879
|
+
| Name | Type |
|
|
1880
|
+
|------|------|
|
|
1881
|
+
| change | void |
|
|
1882
|
+
|
|
1883
|
+
### Usage
|
|
1884
|
+
|
|
1885
|
+
```html
|
|
1886
|
+
<!-- Basic usage with FormControl -->
|
|
1887
|
+
<fui-toggle-group [formControl]="status" aria-label="Filter by status">
|
|
1888
|
+
<fui-toggle-item [value]="'all'">All</fui-toggle-item>
|
|
1889
|
+
<fui-toggle-item [value]="'read'">Read</fui-toggle-item>
|
|
1890
|
+
<fui-toggle-item [value]="'unread'">Unread</fui-toggle-item>
|
|
1891
|
+
</fui-toggle-group>
|
|
1892
|
+
|
|
1893
|
+
<!-- With individual disabled items -->
|
|
1894
|
+
<fui-toggle-group [formControl]="plan" aria-label="Choose plan">
|
|
1895
|
+
<fui-toggle-item [value]="'free'">Free</fui-toggle-item>
|
|
1896
|
+
<fui-toggle-item [value]="'pro'">Pro</fui-toggle-item>
|
|
1897
|
+
<fui-toggle-item [value]="'enterprise'" disabled>Enterprise</fui-toggle-item>
|
|
1898
|
+
</fui-toggle-group>
|
|
1899
|
+
|
|
1900
|
+
<!-- With icons and badges inside items -->
|
|
1901
|
+
<fui-toggle-group [formControl]="view" aria-label="View">
|
|
1902
|
+
<fui-toggle-item [value]="'grid'">
|
|
1903
|
+
<fui-icon name="grid"></fui-icon>
|
|
1904
|
+
Grid
|
|
1905
|
+
</fui-toggle-item>
|
|
1906
|
+
<fui-toggle-item [value]="'list'">
|
|
1907
|
+
<fui-icon name="list"></fui-icon>
|
|
1908
|
+
List
|
|
1909
|
+
</fui-toggle-item>
|
|
1910
|
+
</fui-toggle-group>
|
|
1911
|
+
```
|
|
1912
|
+
|
|
1913
|
+
### Notes
|
|
1914
|
+
|
|
1915
|
+
- **Accessibility:** The group uses `role="radiogroup"` with each item using `role="radio"` + `aria-checked`. This matches the single-selection semantics: screen readers announce items as "1 of N" and the selection-follows-focus navigation is correct for a radio pattern. Keyboard navigation: Arrow Left/Right, Home, End, Enter, and Space. Only the selected item (or first if none) is in the tab order (roving tabindex). Provide `aria-label` or `aria-labelledby` on the group for context.
|
|
1916
|
+
- **Integration:** `fui-toggle-group` is the `ControlValueAccessor` — bind `formControl`, `formControlName`, or `ngModel` on the **group**, not on individual items. `name` is auto-generated if omitted and propagated to child items.
|
|
1917
|
+
- **Value type:** `value` on each item is typed `unknown` — use any primitive or object. Comparison is strict `===`.
|
|
1918
|
+
- **Single selection only:** Exactly one item is selected at a time. Cannot deselect all — the current value always stays selected (like radio).
|
|
1919
|
+
- Emits `change: FuiToggleGroupChange` (`{ source, value }`) on the group.
|
|
1920
|
+
|
|
1921
|
+
### Sub-components
|
|
1922
|
+
|
|
1923
|
+
#### FuiToggleItemComponent
|
|
1924
|
+
|
|
1925
|
+
- **Selector**: `fui-toggle-item`
|
|
1926
|
+
|
|
1927
|
+
##### Inputs
|
|
1928
|
+
|
|
1929
|
+
| Name | Type | Default | Required |
|
|
1930
|
+
|------|------|---------|----------|
|
|
1931
|
+
| disabled | boolean | false | no |
|
|
1932
|
+
| aria-label | string \| null | null | no |
|
|
1933
|
+
| aria-labelledby | string \| null | null | no |
|
|
1934
|
+
| value | unknown | - | yes |
|
|
1935
|
+
|
|
1086
1936
|
---
|
|
1087
1937
|
|
|
1088
1938
|
## toolbar
|
|
@@ -1097,16 +1947,16 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
|
|
|
1097
1947
|
| Name | Type | Default | Required |
|
|
1098
1948
|
|------|------|---------|----------|
|
|
1099
1949
|
| menuItems | FuiToolbarMenuItem[] | [] | no |
|
|
1100
|
-
| userProfile | FuiToolbarUserProfile
|
|
1101
|
-
| activeMenuItemId | string
|
|
1102
|
-
| ariaLabel | string
|
|
1103
|
-
| userAriaLabel | string
|
|
1950
|
+
| userProfile | FuiToolbarUserProfile \| null | null | no |
|
|
1951
|
+
| activeMenuItemId | string \| number | '' | no |
|
|
1952
|
+
| ariaLabel | string \| undefined | undefined | no |
|
|
1953
|
+
| userAriaLabel | string \| undefined | undefined | no |
|
|
1104
1954
|
|
|
1105
1955
|
#### Outputs
|
|
1106
1956
|
|
|
1107
1957
|
| Name | Type |
|
|
1108
1958
|
|------|------|
|
|
1109
|
-
| menuItemClick | string
|
|
1959
|
+
| menuItemClick | string \| number |
|
|
1110
1960
|
| userProfileClick | void |
|
|
1111
1961
|
| sidebarToggle | void |
|
|
1112
1962
|
|
|
@@ -1114,6 +1964,8 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
|
|
|
1114
1964
|
|
|
1115
1965
|
## tooltip
|
|
1116
1966
|
|
|
1967
|
+
A contextual label attached to any element. Shows on hover, focus, click, or manual control. Built on the overlay CDK with collision detection and 12 position variants.
|
|
1968
|
+
|
|
1117
1969
|
- **Import**: `import { FuiTooltipComponent } from 'formaui/components/tooltip'`
|
|
1118
1970
|
- **Selector**: `fui-tooltip`
|
|
1119
1971
|
|
|
@@ -1128,6 +1980,49 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
|
|
|
1128
1980
|
| arrow | boolean | - | yes |
|
|
1129
1981
|
| tooltipId | string | - | yes |
|
|
1130
1982
|
|
|
1983
|
+
### Usage
|
|
1984
|
+
|
|
1985
|
+
```html
|
|
1986
|
+
<!-- Basic tooltip on hover/focus -->
|
|
1987
|
+
<button fuiButton fuiTooltip="Delete user">
|
|
1988
|
+
<fui-icon name="trash" />
|
|
1989
|
+
</button>
|
|
1990
|
+
|
|
1991
|
+
<!-- Position, size, and show delay -->
|
|
1992
|
+
<button
|
|
1993
|
+
fuiButton
|
|
1994
|
+
fuiTooltip="Permanently removes the item"
|
|
1995
|
+
fuiTooltipPosition="top-end"
|
|
1996
|
+
fuiTooltipSize="lg"
|
|
1997
|
+
[fuiTooltipShowDelay]="300">
|
|
1998
|
+
Delete
|
|
1999
|
+
</button>
|
|
2000
|
+
|
|
2001
|
+
<!-- Click trigger -->
|
|
2002
|
+
<span
|
|
2003
|
+
fuiTooltip="Copied!"
|
|
2004
|
+
fuiTooltipTrigger="click"
|
|
2005
|
+
fuiTooltipPosition="bottom">
|
|
2006
|
+
Click to copy
|
|
2007
|
+
</span>
|
|
2008
|
+
|
|
2009
|
+
<!-- Manual control via a boolean input -->
|
|
2010
|
+
<div
|
|
2011
|
+
fuiTooltip="Saved"
|
|
2012
|
+
fuiTooltipTrigger="manual"
|
|
2013
|
+
[fuiTooltipShow]="justSaved()">
|
|
2014
|
+
Save button
|
|
2015
|
+
</div>
|
|
2016
|
+
```
|
|
2017
|
+
|
|
2018
|
+
### Notes
|
|
2019
|
+
|
|
2020
|
+
- **Accessibility:** The host element receives `aria-describedby` pointing at the tooltip id while visible. Hover trigger also fires on focus, so keyboard users see the same information. Escape hides the tooltip when focused on the trigger.
|
|
2021
|
+
- **Integration:** Pure attribute directive — no wrapper or parent required. Renders a `FuiTooltipComponent` via the CDK overlay, so it breaks out of clipping ancestors (`overflow: hidden`, transforms, etc.).
|
|
2022
|
+
- **Triggers:** `hover` (default, includes focus), `focus`, `click` (toggle), `manual` (bind `[fuiTooltipShow]`). Hover over the tooltip itself keeps it open while pointer is inside.
|
|
2023
|
+
- **Positions:** 12 variants — `top`, `top-start`, `top-end`, `bottom`, `bottom-start`, `bottom-end`, `left`, `left-start`, `left-end`, `right`, `right-start`, `right-end`. The overlay auto-flips if the preferred position overflows the viewport.
|
|
2024
|
+
- Delays: `fuiTooltipShowDelay` defaults to 500ms; `fuiTooltipHideDelay` to 0. Set to 0/small values for snappier hover.
|
|
2025
|
+
|
|
1131
2026
|
### Sub-components
|
|
1132
2027
|
|
|
1133
2028
|
#### FuiTooltipDirective
|
|
@@ -1151,8 +2046,31 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
|
|
|
1151
2046
|
|
|
1152
2047
|
---
|
|
1153
2048
|
|
|
2049
|
+
## topbar
|
|
2050
|
+
|
|
2051
|
+
A responsive topbar navigation component with a two-row layout: the top row contains brand/actions and menu items; the bottom row is a content projection slot (`[fuiTopbarBottomRow]`) for tabs, search bars, or other secondary content.
|
|
2052
|
+
|
|
2053
|
+
- **Import**: `import { FuiTopbarComponent } from 'formaui/components/topbar'`
|
|
2054
|
+
- **Selector**: `fui-topbar`
|
|
2055
|
+
|
|
2056
|
+
#### Inputs
|
|
2057
|
+
|
|
2058
|
+
| Name | Type | Default | Required |
|
|
2059
|
+
|------|------|---------|----------|
|
|
2060
|
+
| items | MenuItem[] | [] | no |
|
|
2061
|
+
|
|
2062
|
+
#### Outputs
|
|
2063
|
+
|
|
2064
|
+
| Name | Type |
|
|
2065
|
+
|------|------|
|
|
2066
|
+
| itemClick | MenuItem |
|
|
2067
|
+
|
|
2068
|
+
---
|
|
2069
|
+
|
|
1154
2070
|
## tree
|
|
1155
2071
|
|
|
2072
|
+
A hierarchical tree view that renders nested `FuiTreeNode<T>` data with expand/collapse, optional lazy child loading, keyboard navigation, and selection. Selection can be disabled, single, multi, or checkbox-based (with parent/child propagation and indeterminate states).
|
|
2073
|
+
|
|
1156
2074
|
- **Import**: `import { FuiTreeNodeComponent } from 'formaui/components/tree'`
|
|
1157
2075
|
- **Selector**: `fui-tree-node`
|
|
1158
2076
|
|
|
@@ -1161,7 +2079,7 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
|
|
|
1161
2079
|
| Name | Type | Default | Required |
|
|
1162
2080
|
|------|------|---------|----------|
|
|
1163
2081
|
| selectionMode | FuiTreeSelectionMode | 'none' | no |
|
|
1164
|
-
| checkboxState | 'checked'
|
|
2082
|
+
| checkboxState | 'checked' \| 'unchecked' \| 'indeterminate' | 'unchecked' | no |
|
|
1165
2083
|
| flatNode | FuiFlatTreeNode | - | yes |
|
|
1166
2084
|
|
|
1167
2085
|
#### Outputs
|
|
@@ -1172,6 +2090,48 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
|
|
|
1172
2090
|
| select | void |
|
|
1173
2091
|
| checkboxChange | void |
|
|
1174
2092
|
|
|
2093
|
+
### Usage
|
|
2094
|
+
|
|
2095
|
+
```html
|
|
2096
|
+
<!-- Basic single-selection tree -->
|
|
2097
|
+
<fui-tree [nodes]="nodes" selectionMode="single" (nodeSelect)="onSelect($event)" />
|
|
2098
|
+
|
|
2099
|
+
<!-- Checkbox selection with lazy loading and virtual scroll -->
|
|
2100
|
+
<fui-tree
|
|
2101
|
+
[nodes]="nodes"
|
|
2102
|
+
selectionMode="checkbox"
|
|
2103
|
+
[loadChildren]="loadChildren"
|
|
2104
|
+
[draggable]="true"
|
|
2105
|
+
[virtualScroll]="true"
|
|
2106
|
+
[virtualItemSize]="32"
|
|
2107
|
+
[filter]="searchTerm()"
|
|
2108
|
+
(nodeExpand)="onExpand($event)"
|
|
2109
|
+
(nodeDrop)="onDrop($event)"
|
|
2110
|
+
/>
|
|
2111
|
+
```
|
|
2112
|
+
|
|
2113
|
+
```typescript
|
|
2114
|
+
nodes: FuiTreeNode<MyData>[] = [
|
|
2115
|
+
{ data: { name: 'Root' }, expanded: true, children: [
|
|
2116
|
+
{ data: { name: 'Child A' } },
|
|
2117
|
+
{ data: { name: 'Child B' }, disabled: true },
|
|
2118
|
+
] },
|
|
2119
|
+
];
|
|
2120
|
+
|
|
2121
|
+
// Lazy loading: called the first time an expandable node without children is opened
|
|
2122
|
+
loadChildren = (node: FuiTreeNode<MyData>) => this.api.getChildren(node);
|
|
2123
|
+
```
|
|
2124
|
+
|
|
2125
|
+
### Notes
|
|
2126
|
+
|
|
2127
|
+
- **Accessibility:** The host carries `role="tree"` and is focusable (`tabindex="0"`); each `fui-tree-node` carries `role="treeitem"` with `aria-level`, `aria-expanded`, and `aria-selected`. Keyboard navigation supports Arrow keys (up/down to move, right/left to expand/collapse or move to child/parent), Home/End, Enter/Space to select, and `*` to expand siblings at the current level.
|
|
2128
|
+
- **Selection:** Set `selectionMode` to `'none'` (default), `'single'`, `'multi'`, or `'checkbox'`. Checkbox mode propagates selection to descendants and computes `checked` / `unchecked` / `indeterminate` parent states. Selection state lives on the node objects (`node.selected`).
|
|
2129
|
+
- **Lazy loading:** Provide `loadChildren` returning an `Observable<FuiTreeNode<T>[]>`; children are fetched once on first expand and cached onto the node.
|
|
2130
|
+
- **Outputs:** `nodeSelect`, `nodeUnselect`, `nodeExpand`, `nodeCollapse`, `nodeDrop`, and `filterChange` emit `FuiTreeNodeEvent<T>` (or drag/filter payloads) carrying both the origin node and its flat representation.
|
|
2131
|
+
- **Filtering:** The `filter` input narrows visible nodes by matching node data (string, or its `name` / `label` field), auto-expanding ancestors of matches.
|
|
2132
|
+
- **Public methods:** `expandAll()`, `collapseAll()`, `selectNode(node)`, and `getSelectedNodes()` are available via a template reference or `ViewChild`.
|
|
2133
|
+
- **Custom rendering:** Pass a `nodeTemplate` `TemplateRef` to override the default node content. Provide `nodeIdPrefix` when a parent combobox (e.g. tree-select) needs stable node DOM ids for `aria-activedescendant`.
|
|
2134
|
+
|
|
1175
2135
|
### Sub-components
|
|
1176
2136
|
|
|
1177
2137
|
#### FuiTreeComponent
|
|
@@ -1183,17 +2143,21 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
|
|
|
1183
2143
|
| Name | Type | Default | Required |
|
|
1184
2144
|
|------|------|---------|----------|
|
|
1185
2145
|
| selectionMode | FuiTreeSelectionMode | 'none' | no |
|
|
2146
|
+
| nodeIdPrefix | string \| null | null | no |
|
|
1186
2147
|
|
|
1187
2148
|
##### Outputs
|
|
1188
2149
|
|
|
1189
2150
|
| Name | Type |
|
|
1190
2151
|
|------|------|
|
|
1191
2152
|
| filterChange | string |
|
|
2153
|
+
| focusChange | string \| null |
|
|
1192
2154
|
|
|
1193
2155
|
---
|
|
1194
2156
|
|
|
1195
2157
|
## tree-select
|
|
1196
2158
|
|
|
2159
|
+
A combobox that opens a `fui-tree` in an overlay panel so users can pick one or more values from hierarchical data. Implements `ControlValueAccessor` and `FuiFormFieldControl`, so it integrates with Reactive Forms and `fui-form-field`.
|
|
2160
|
+
|
|
1197
2161
|
- **Import**: `import { FuiTreeSelectComponent } from 'formaui/components/tree-select'`
|
|
1198
2162
|
- **Selector**: `fui-tree-select`
|
|
1199
2163
|
|
|
@@ -1201,12 +2165,41 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
|
|
|
1201
2165
|
|
|
1202
2166
|
| Name | Type | Default | Required |
|
|
1203
2167
|
|------|------|---------|----------|
|
|
1204
|
-
| selectionMode | 'single'
|
|
2168
|
+
| selectionMode | 'single' \| 'multi' \| 'checkbox' | 'single' | no |
|
|
2169
|
+
|
|
2170
|
+
### Usage
|
|
2171
|
+
|
|
2172
|
+
```html
|
|
2173
|
+
<!-- Single selection -->
|
|
2174
|
+
<fui-tree-select [nodes]="nodes" selectionMode="single" placeholder="Pick a category" [formControl]="categoryControl" />
|
|
2175
|
+
|
|
2176
|
+
<!-- Multi selection with search and a display field -->
|
|
2177
|
+
<fui-tree-select
|
|
2178
|
+
[nodes]="nodes"
|
|
2179
|
+
selectionMode="multi"
|
|
2180
|
+
[showSearch]="true"
|
|
2181
|
+
[displayField]="'name'"
|
|
2182
|
+
placeholder="Pick categories"
|
|
2183
|
+
[formControl]="categoriesControl"
|
|
2184
|
+
(selectionChange)="onChange($event)"
|
|
2185
|
+
/>
|
|
2186
|
+
```
|
|
2187
|
+
|
|
2188
|
+
### Notes
|
|
2189
|
+
|
|
2190
|
+
- **Accessibility:** The host carries `role="combobox"` with `aria-expanded`, `aria-haspopup="tree"`, `aria-owns`, and `aria-activedescendant`, the last kept in sync with keyboard focus inside the embedded tree. Enter/Space opens the panel; Escape closes it.
|
|
2191
|
+
- **Forms integration:** Provides `NG_VALUE_ACCESSOR` and `FUI_FORM_FIELD_CONTROL`. In single mode the value is the selected node's `data`; in multi/checkbox mode it is an array of `data`. Wrap in `fui-form-field` for label, hint, and error support.
|
|
2192
|
+
- **Selection modes:** `selectionMode` accepts `'single'` (default), `'multi'`, or `'checkbox'`. Selecting in single mode closes the panel.
|
|
2193
|
+
- **Inputs:** `nodes` (required), `placeholder`, `showSearch`, `loadChildren` (lazy children), `nodeTemplate`, `displayField` (string key or function controlling the displayed label), plus `disabled` and `readonly`.
|
|
2194
|
+
- **Outputs:** `selectionChange` emits `FuiTreeSelectChange<T>` containing the selected node(s) and the component as `source`.
|
|
2195
|
+
- **Overlay:** Panel positioning, classes, scroll strategy, and trigger-matched min width come from the host `FuiPopupOverlayDirective` inputs (`positions`, `panelClass`, `backdropClass`, `scrollStrategy`, `minWidthFromTrigger`).
|
|
1205
2196
|
|
|
1206
2197
|
---
|
|
1207
2198
|
|
|
1208
2199
|
## tree-table
|
|
1209
2200
|
|
|
2201
|
+
A tabular component that renders hierarchical `FuiTreeTableNode<T>` data as rows, with one designated tree column showing indentation and expand/collapse toggles. Supports per-column sorting and filtering, optional lazy child loading, and row interaction events. Generic over the row type `T`.
|
|
2202
|
+
|
|
1210
2203
|
- **Import**: `import { FuiTreeTableComponent } from 'formaui/components/tree-table'`
|
|
1211
2204
|
- **Selector**: `fui-tree-table`
|
|
1212
2205
|
|
|
@@ -1214,329 +2207,1215 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
|
|
|
1214
2207
|
|
|
1215
2208
|
| Name | Type | Default | Required |
|
|
1216
2209
|
|------|------|---------|----------|
|
|
1217
|
-
| sort | { field: string; direction: 'ASC'
|
|
2210
|
+
| sort | { field: string; direction: 'ASC' \| 'DESC' } \| null | null | no |
|
|
1218
2211
|
| filters | FuiTreeTableColumnFilter[] | [] | no |
|
|
1219
|
-
| emptyMessage | string
|
|
2212
|
+
| emptyMessage | string \| undefined | undefined | no |
|
|
1220
2213
|
| config | FuiTreeTableConfig | - | yes |
|
|
1221
2214
|
|
|
1222
2215
|
#### Outputs
|
|
1223
2216
|
|
|
1224
2217
|
| Name | Type |
|
|
1225
2218
|
|------|------|
|
|
1226
|
-
| sortChange | { field: string; direction: 'ASC'
|
|
2219
|
+
| sortChange | { field: string; direction: 'ASC' \| 'DESC' } \| null |
|
|
1227
2220
|
| filtersChange | FuiTreeTableColumnFilter[] |
|
|
1228
2221
|
| rowDblClick | T |
|
|
1229
2222
|
|
|
2223
|
+
### Usage
|
|
2224
|
+
|
|
2225
|
+
```html
|
|
2226
|
+
<!-- Minimal tree table -->
|
|
2227
|
+
<fui-tree-table [config]="tableConfig" [nodes]="nodes" />
|
|
2228
|
+
```
|
|
2229
|
+
|
|
2230
|
+
```typescript
|
|
2231
|
+
tableConfig: FuiTreeTableConfig = {
|
|
2232
|
+
headerSticky: true,
|
|
2233
|
+
treeColumn: 'name',
|
|
2234
|
+
indentPx: 24,
|
|
2235
|
+
headers: [
|
|
2236
|
+
{ field: 'name', label: 'Name', type: 'string', hasSort: true },
|
|
2237
|
+
{ field: 'size', label: 'Size', type: 'number', hasSort: true, hasFilter: true },
|
|
2238
|
+
{ field: 'modified', label: 'Modified', type: 'date' },
|
|
2239
|
+
],
|
|
2240
|
+
};
|
|
2241
|
+
|
|
2242
|
+
nodes: FuiTreeTableNode<FileRow>[] = [
|
|
2243
|
+
{ data: { name: 'src', size: 0 }, expanded: true, children: [
|
|
2244
|
+
{ data: { name: 'index.ts', size: 1200 }, leaf: true },
|
|
2245
|
+
] },
|
|
2246
|
+
];
|
|
2247
|
+
```
|
|
2248
|
+
|
|
2249
|
+
```html
|
|
2250
|
+
<!-- Controlled sort/filter, row highlight, and interaction handlers -->
|
|
2251
|
+
<fui-tree-table
|
|
2252
|
+
[config]="tableConfig"
|
|
2253
|
+
[nodes]="nodes"
|
|
2254
|
+
[sort]="currentSort()"
|
|
2255
|
+
[filters]="activeFilters()"
|
|
2256
|
+
[enableRowHighlight]="true"
|
|
2257
|
+
(sortChange)="currentSort.set($event)"
|
|
2258
|
+
(filtersChange)="activeFilters.set($event)"
|
|
2259
|
+
(rowExpand)="onExpand($event)"
|
|
2260
|
+
(rowDblClick)="openRow($event)"
|
|
2261
|
+
/>
|
|
2262
|
+
```
|
|
2263
|
+
|
|
2264
|
+
### Notes
|
|
2265
|
+
|
|
2266
|
+
- **Tree column:** `config.treeColumn` selects which column renders the indentation and expand/collapse toggle; it defaults to the first header's field. Indentation per level is controlled by `config.indentPx` (default 24).
|
|
2267
|
+
- **Configuration:** `config: FuiTreeTableConfig` (required) supplies `headers`, plus optional `headerSticky`, `areRowsSelectable`, `treeColumn`, and `indentPx`. Column `type` (`'string' | 'number' | 'boolean' | 'date' | 'label'`) describes cell data; cell values support dot-notation fields like `'address.city'`.
|
|
2268
|
+
- **Sort/filter:** State is fully controlled — `sortChange` cycles a column through ASC → DESC → none and emits the new sort; `filtersChange` emits `FuiTreeTableColumnFilter[]`. The component does not mutate `nodes`; apply ordering/filtering in the parent.
|
|
2269
|
+
- **Expansion:** `rowExpand` and `rowCollapse` emit `FuiTreeTableRowEvent<T>` (origin node plus flat row); expansion state is read from `node.expanded`. Provide `loadChildren` for lazy child loading.
|
|
2270
|
+
- **Empty state:** When `nodes` is empty, `emptyMessage` is shown (defaults to the `FuiTreeTableIntl.emptyMessage` value, `'No data available'`).
|
|
2271
|
+
- **Row interaction:** `rowDblClick` emits the row data `T`; set `enableRowHighlight` to enable click-to-highlight.
|
|
2272
|
+
|
|
1230
2273
|
---
|
|
1231
2274
|
|
|
1232
2275
|
## Design Tokens
|
|
1233
2276
|
|
|
1234
|
-
###
|
|
2277
|
+
### Radius
|
|
1235
2278
|
|
|
1236
2279
|
| Token | Value |
|
|
1237
2280
|
|-------|-------|
|
|
1238
|
-
| --fui-
|
|
1239
|
-
| --fui-
|
|
1240
|
-
| --fui-
|
|
1241
|
-
| --fui-
|
|
1242
|
-
| --fui-
|
|
1243
|
-
| --fui-
|
|
1244
|
-
| --fui-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
| --fui-primary-100 | #1a0b3d |
|
|
1248
|
-
| --fui-primary-110 | #120923 |
|
|
1249
|
-
| --fui-primary | var(--fui-primary-50) |
|
|
1250
|
-
| --fui-primary-rgb | 124, 75, 224 |
|
|
1251
|
-
| --fui-primary-text-color | white |
|
|
1252
|
-
| --fui-primary-text | white |
|
|
1253
|
-
| --fui-primary-default | var(--fui-primary-50) |
|
|
1254
|
-
| --fui-primary-disable | var(--fui-primary-40) |
|
|
1255
|
-
| --fui-primary-bg | var(--fui-primary-20) |
|
|
1256
|
-
| --fui-primary-hover | var(--fui-primary-60) |
|
|
1257
|
-
| --fui-primary-highlights | var(--fui-primary-30) |
|
|
1258
|
-
|
|
1259
|
-
### Secondary
|
|
2281
|
+
| --fui-radius-none | 0 |
|
|
2282
|
+
| --fui-radius-xs | 4px |
|
|
2283
|
+
| --fui-radius-sm | 8px |
|
|
2284
|
+
| --fui-radius-md | 10px |
|
|
2285
|
+
| --fui-radius-lg | 16px |
|
|
2286
|
+
| --fui-radius-xl | 24px |
|
|
2287
|
+
| --fui-radius-pill | 9999px |
|
|
2288
|
+
|
|
2289
|
+
### Border
|
|
1260
2290
|
|
|
1261
2291
|
| Token | Value |
|
|
1262
2292
|
|-------|-------|
|
|
1263
|
-
| --fui-
|
|
1264
|
-
| --fui-
|
|
1265
|
-
| --fui-
|
|
1266
|
-
| --fui-
|
|
1267
|
-
| --fui-
|
|
1268
|
-
| --fui-
|
|
1269
|
-
| --fui-
|
|
1270
|
-
| --fui-
|
|
1271
|
-
| --fui-
|
|
1272
|
-
| --fui-
|
|
1273
|
-
| --fui-
|
|
1274
|
-
| --fui-
|
|
1275
|
-
| --fui-
|
|
1276
|
-
| --fui-
|
|
1277
|
-
| --fui-
|
|
1278
|
-
| --fui-
|
|
1279
|
-
| --fui-
|
|
1280
|
-
| --fui-
|
|
1281
|
-
|
|
1282
|
-
|
|
2293
|
+
| --fui-border-width-none | 0 |
|
|
2294
|
+
| --fui-border-width-sm | 1px |
|
|
2295
|
+
| --fui-border-width-md | 2px |
|
|
2296
|
+
| --fui-border-width-lg | 4px |
|
|
2297
|
+
| --fui-border-default | var(--fui-neutral-40) |
|
|
2298
|
+
| --fui-border-strong | var(--fui-neutral-60) |
|
|
2299
|
+
| --fui-border-primary | var(--fui-primary-60) |
|
|
2300
|
+
| --fui-border-subtle | var(--fui-neutral-30) |
|
|
2301
|
+
| --fui-border-disabled | var(--fui-neutral-30) |
|
|
2302
|
+
| --fui-border-accent | var(--fui-accent-60) |
|
|
2303
|
+
| --fui-border-error | var(--fui-error-40) |
|
|
2304
|
+
| --fui-border-success | var(--fui-success-40) |
|
|
2305
|
+
| --fui-border-warning | var(--fui-warning-40) |
|
|
2306
|
+
| --fui-border-info | var(--fui-info-40) |
|
|
2307
|
+
| --fui-border-default | var(--fui-neutral-40) |
|
|
2308
|
+
| --fui-border-strong | var(--fui-neutral-60) |
|
|
2309
|
+
| --fui-border-primary | var(--fui-primary-60) |
|
|
2310
|
+
| --fui-border-subtle | var(--fui-neutral-30) |
|
|
2311
|
+
| --fui-border-disabled | var(--fui-neutral-30) |
|
|
2312
|
+
| --fui-border-accent | var(--fui-accent-60) |
|
|
2313
|
+
| --fui-border-error | var(--fui-error-40) |
|
|
2314
|
+
| --fui-border-success | var(--fui-success-40) |
|
|
2315
|
+
| --fui-border-warning | var(--fui-warning-40) |
|
|
2316
|
+
| --fui-border-info | var(--fui-info-40) |
|
|
2317
|
+
|
|
2318
|
+
### Z
|
|
1283
2319
|
|
|
1284
2320
|
| Token | Value |
|
|
1285
2321
|
|-------|-------|
|
|
1286
|
-
| --fui-
|
|
1287
|
-
| --fui-
|
|
1288
|
-
| --fui-
|
|
1289
|
-
| --fui-
|
|
1290
|
-
| --fui-
|
|
1291
|
-
| --fui-
|
|
1292
|
-
| --fui-
|
|
1293
|
-
| --fui-
|
|
1294
|
-
| --fui-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
| --fui-danger | var(--fui-danger-60) |
|
|
2322
|
+
| --fui-z-base | 0 |
|
|
2323
|
+
| --fui-z-dropdown | 100 |
|
|
2324
|
+
| --fui-z-sticky | 200 |
|
|
2325
|
+
| --fui-z-fixed | 300 |
|
|
2326
|
+
| --fui-z-backdrop | 400 |
|
|
2327
|
+
| --fui-z-modal | 500 |
|
|
2328
|
+
| --fui-z-popover | 600 |
|
|
2329
|
+
| --fui-z-toast | 700 |
|
|
2330
|
+
| --fui-z-tooltip | 800 |
|
|
2331
|
+
|
|
2332
|
+
### Bp
|
|
1298
2333
|
|
|
1299
|
-
|
|
2334
|
+
| Token | Value |
|
|
2335
|
+
|-------|-------|
|
|
2336
|
+
| --fui-bp-xs | 480px |
|
|
2337
|
+
| --fui-bp-sm | 640px |
|
|
2338
|
+
| --fui-bp-md | 768px |
|
|
2339
|
+
| --fui-bp-lg | 1024px |
|
|
2340
|
+
| --fui-bp-xl | 1280px |
|
|
2341
|
+
| --fui-bp-2xl | 1536px |
|
|
2342
|
+
|
|
2343
|
+
### Grid
|
|
1300
2344
|
|
|
1301
2345
|
| Token | Value |
|
|
1302
2346
|
|-------|-------|
|
|
1303
|
-
| --fui-
|
|
1304
|
-
| --fui-
|
|
1305
|
-
| --fui-success-30 | #e6f7ed |
|
|
1306
|
-
| --fui-success-40 | #d6f1e3 |
|
|
1307
|
-
| --fui-success-50 | #c3e9d7 |
|
|
1308
|
-
| --fui-success-60 | #acdec8 |
|
|
1309
|
-
| --fui-success-70 | #8bceb6 |
|
|
1310
|
-
| --fui-success-80 | #56ba9f |
|
|
1311
|
-
| --fui-success-90 | #29a383 |
|
|
1312
|
-
| --fui-success-100 | #208368 |
|
|
1313
|
-
| --fui-success-110 | #1d3b31 |
|
|
1314
|
-
| --fui-success | var(--fui-success-60) |
|
|
2347
|
+
| --fui-grid-columns | 12 |
|
|
2348
|
+
| --fui-grid-gutter | var(--fui-spacing-7) |
|
|
1315
2349
|
|
|
1316
|
-
###
|
|
2350
|
+
### Container
|
|
1317
2351
|
|
|
1318
2352
|
| Token | Value |
|
|
1319
2353
|
|-------|-------|
|
|
1320
|
-
| --fui-
|
|
1321
|
-
| --fui-
|
|
1322
|
-
| --fui-
|
|
1323
|
-
| --fui-
|
|
1324
|
-
| --fui-
|
|
1325
|
-
| --fui-warning-60 | #f3d673 |
|
|
1326
|
-
| --fui-warning-70 | #e9c162 |
|
|
1327
|
-
| --fui-warning-80 | #ffc53d |
|
|
1328
|
-
| --fui-warning-90 | #e2a336 |
|
|
1329
|
-
| --fui-warning-100 | #ab6400 |
|
|
1330
|
-
| --fui-warning-110 | #4f3422 |
|
|
1331
|
-
| --fui-warning | var(--fui-warning-60) |
|
|
2354
|
+
| --fui-container-sm | 640px |
|
|
2355
|
+
| --fui-container-md | 768px |
|
|
2356
|
+
| --fui-container-lg | 1024px |
|
|
2357
|
+
| --fui-container-xl | 1280px |
|
|
2358
|
+
| --fui-container-2xl | 1536px |
|
|
1332
2359
|
|
|
1333
|
-
###
|
|
2360
|
+
### Tooltip
|
|
1334
2361
|
|
|
1335
2362
|
| Token | Value |
|
|
1336
2363
|
|-------|-------|
|
|
1337
|
-
| --fui-
|
|
1338
|
-
| --fui-
|
|
1339
|
-
| --fui-info-30 | #e6f4fe |
|
|
1340
|
-
| --fui-info-40 | #d5efff |
|
|
1341
|
-
| --fui-info-50 | #c2e5ff |
|
|
1342
|
-
| --fui-info-60 | #acd8fc |
|
|
1343
|
-
| --fui-info-70 | #8ec8f6 |
|
|
1344
|
-
| --fui-info-80 | #5eb1ef |
|
|
1345
|
-
| --fui-info-90 | #0090ff |
|
|
1346
|
-
| --fui-info-100 | #0d74ce |
|
|
1347
|
-
| --fui-info-110 | #113264 |
|
|
1348
|
-
| --fui-info | var(--fui-info-60) |
|
|
2364
|
+
| --fui-tooltip-background | #334155 |
|
|
2365
|
+
| --fui-tooltip-text | #f8fafc |
|
|
1349
2366
|
|
|
1350
|
-
###
|
|
2367
|
+
### Duration
|
|
1351
2368
|
|
|
1352
2369
|
| Token | Value |
|
|
1353
2370
|
|-------|-------|
|
|
1354
|
-
| --fui-
|
|
1355
|
-
| --fui-
|
|
1356
|
-
| --fui-
|
|
1357
|
-
| --fui-
|
|
1358
|
-
| --fui-
|
|
1359
|
-
| --fui-
|
|
1360
|
-
| --fui-pink-70 | #e7acd0 |
|
|
1361
|
-
| --fui-pink-80 | #dd93c2 |
|
|
1362
|
-
| --fui-pink-90 | #d6409f |
|
|
1363
|
-
| --fui-pink-100 | #c2298a |
|
|
1364
|
-
| --fui-pink-110 | #651249 |
|
|
2371
|
+
| --fui-duration-instant | 0ms |
|
|
2372
|
+
| --fui-duration-fast | 100ms |
|
|
2373
|
+
| --fui-duration-base | 200ms |
|
|
2374
|
+
| --fui-duration-moderate | 300ms |
|
|
2375
|
+
| --fui-duration-slow | 500ms |
|
|
2376
|
+
| --fui-duration-deliberate | 750ms |
|
|
1365
2377
|
|
|
1366
|
-
###
|
|
2378
|
+
### Ease
|
|
1367
2379
|
|
|
1368
2380
|
| Token | Value |
|
|
1369
2381
|
|-------|-------|
|
|
1370
|
-
| --fui-
|
|
1371
|
-
| --fui-
|
|
1372
|
-
| --fui-
|
|
1373
|
-
| --fui-
|
|
1374
|
-
| --fui-
|
|
1375
|
-
| --fui-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
| --fui-orange-90 | #f76b15 |
|
|
1379
|
-
| --fui-orange-100 | #cc4e00 |
|
|
1380
|
-
| --fui-orange-110 | #582d1d |
|
|
1381
|
-
|
|
1382
|
-
### Tomato
|
|
2382
|
+
| --fui-ease-linear | linear |
|
|
2383
|
+
| --fui-ease-in | cubic-bezier(0.4, 0, 1, 1) |
|
|
2384
|
+
| --fui-ease-out | cubic-bezier(0, 0, 0.2, 1) |
|
|
2385
|
+
| --fui-ease-in-out | cubic-bezier(0.4, 0, 0.2, 1) |
|
|
2386
|
+
| --fui-ease-emphasized | cubic-bezier(0.2, 0, 0, 1) |
|
|
2387
|
+
| --fui-ease-bounce | cubic-bezier(0.34, 1.56, 0.64, 1) |
|
|
2388
|
+
|
|
2389
|
+
### Icon
|
|
1383
2390
|
|
|
1384
2391
|
| Token | Value |
|
|
1385
2392
|
|-------|-------|
|
|
1386
|
-
| --fui-
|
|
1387
|
-
| --fui-
|
|
1388
|
-
| --fui-
|
|
1389
|
-
| --fui-
|
|
1390
|
-
| --fui-
|
|
1391
|
-
| --fui-
|
|
1392
|
-
| --fui-
|
|
1393
|
-
| --fui-
|
|
1394
|
-
| --fui-
|
|
1395
|
-
| --fui-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
### White
|
|
2393
|
+
| --fui-icon-spin-duration | var(--fui-duration-base) |
|
|
2394
|
+
| --fui-icon-spin-timing | linear |
|
|
2395
|
+
| --fui-icon-pulse-duration | var(--fui-duration-slow) |
|
|
2396
|
+
| --fui-icon-pulse-timing | var(--fui-ease-emphasized) |
|
|
2397
|
+
| --fui-icon-xs | 0.75rem |
|
|
2398
|
+
| --fui-icon-sm | 1rem |
|
|
2399
|
+
| --fui-icon-md | 1.25rem |
|
|
2400
|
+
| --fui-icon-lg | 1.5rem |
|
|
2401
|
+
| --fui-icon-xl | 2rem |
|
|
2402
|
+
| --fui-icon-2xl | 3rem |
|
|
2403
|
+
|
|
2404
|
+
### Transition
|
|
1400
2405
|
|
|
1401
2406
|
| Token | Value |
|
|
1402
2407
|
|-------|-------|
|
|
1403
|
-
| --fui-
|
|
1404
|
-
| --fui-
|
|
1405
|
-
| --fui-
|
|
1406
|
-
| --fui-
|
|
1407
|
-
| --fui-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
| --fui-white-50 | rgba(255, 255, 255, 0.5) |
|
|
1411
|
-
| --fui-white-60 | rgba(255, 255, 255, 0.6) |
|
|
1412
|
-
| --fui-white-70 | rgba(255, 255, 255, 0.7) |
|
|
1413
|
-
| --fui-white-80 | rgba(255, 255, 255, 0.8) |
|
|
1414
|
-
| --fui-white-90 | rgba(255, 255, 255, 0.9) |
|
|
1415
|
-
|
|
1416
|
-
### Black
|
|
2408
|
+
| --fui-transition-color | color var(--fui-duration-fast) var(--fui-ease-out) |
|
|
2409
|
+
| --fui-transition-bg | background-color var(--fui-duration-fast) var(--fui-ease-out) |
|
|
2410
|
+
| --fui-transition-transform | transform var(--fui-duration-base) var(--fui-ease-out) |
|
|
2411
|
+
| --fui-transition-opacity | opacity var(--fui-duration-base) var(--fui-ease-out) |
|
|
2412
|
+
| --fui-transition-shadow | box-shadow var(--fui-duration-base) var(--fui-ease-out) |
|
|
2413
|
+
|
|
2414
|
+
### Button
|
|
1417
2415
|
|
|
1418
2416
|
| Token | Value |
|
|
1419
2417
|
|-------|-------|
|
|
1420
|
-
| --fui-
|
|
1421
|
-
| --fui-
|
|
1422
|
-
| --fui-
|
|
1423
|
-
| --fui-
|
|
1424
|
-
| --fui-
|
|
1425
|
-
| --fui-black-30 | rgba(0, 0, 0, 0.3) |
|
|
1426
|
-
| --fui-black-40 | rgba(0, 0, 0, 0.4) |
|
|
1427
|
-
| --fui-black-50 | rgba(0, 0, 0, 0.5) |
|
|
1428
|
-
| --fui-black-60 | rgba(0, 0, 0, 0.6) |
|
|
1429
|
-
| --fui-black-70 | rgba(0, 0, 0, 0.7) |
|
|
1430
|
-
| --fui-black-80 | rgba(0, 0, 0, 0.8) |
|
|
1431
|
-
| --fui-black-90 | rgba(0, 0, 0, 0.9) |
|
|
2418
|
+
| --fui-button-height-sm | 1.75rem |
|
|
2419
|
+
| --fui-button-height-md | 2.25rem |
|
|
2420
|
+
| --fui-button-height-lg | 2.75rem |
|
|
2421
|
+
| --fui-button-height-xl | 3.25rem |
|
|
2422
|
+
| --fui-button-height-2xl | 4rem |
|
|
1432
2423
|
|
|
1433
|
-
###
|
|
2424
|
+
### Input
|
|
1434
2425
|
|
|
1435
2426
|
| Token | Value |
|
|
1436
2427
|
|-------|-------|
|
|
1437
|
-
| --fui-
|
|
1438
|
-
| --fui-text-primary | var(--fui-secondary-120) |
|
|
1439
|
-
| --fui-text-secondary | var(--fui-secondary-110) |
|
|
1440
|
-
| --fui-text-primary-disabled | var(--fui-text-disabled) |
|
|
2428
|
+
| --fui-input-height | 2.25rem |
|
|
1441
2429
|
|
|
1442
|
-
###
|
|
2430
|
+
### Density
|
|
1443
2431
|
|
|
1444
2432
|
| Token | Value |
|
|
1445
2433
|
|-------|-------|
|
|
1446
|
-
| --fui-
|
|
1447
|
-
| --fui-border-color-strong | var(--fui-secondary-70) |
|
|
1448
|
-
| --fui-border-color-active | var(--fui-primary-default) |
|
|
2434
|
+
| --fui-density-scale | 1 |
|
|
1449
2435
|
|
|
1450
|
-
###
|
|
2436
|
+
### Control
|
|
1451
2437
|
|
|
1452
2438
|
| Token | Value |
|
|
1453
2439
|
|-------|-------|
|
|
1454
|
-
| --fui-
|
|
1455
|
-
| --fui-
|
|
1456
|
-
| --fui-
|
|
1457
|
-
| --fui-
|
|
1458
|
-
| --fui-
|
|
1459
|
-
| --fui-
|
|
1460
|
-
| --fui-
|
|
1461
|
-
| --fui-
|
|
2440
|
+
| --fui-control-h-xs | 1.5rem |
|
|
2441
|
+
| --fui-control-h-sm | 2rem |
|
|
2442
|
+
| --fui-control-h-md | 2.5rem |
|
|
2443
|
+
| --fui-control-h-lg | 3rem |
|
|
2444
|
+
| --fui-control-h-xl | 3.5rem |
|
|
2445
|
+
| --fui-control-padding-sm | calc(var(--fui-spacing-2) * var(--fui-density-scale)) |
|
|
2446
|
+
| --fui-control-padding-md | calc(var(--fui-spacing-4) * var(--fui-density-scale)) |
|
|
2447
|
+
| --fui-control-padding-lg | calc(var(--fui-spacing-6) * var(--fui-density-scale)) |
|
|
1462
2448
|
|
|
1463
|
-
###
|
|
2449
|
+
### Cell
|
|
1464
2450
|
|
|
1465
2451
|
| Token | Value |
|
|
1466
2452
|
|-------|-------|
|
|
1467
|
-
| --fui-
|
|
2453
|
+
| --fui-cell-padding-y | calc(var(--fui-spacing-4) * var(--fui-density-scale)) |
|
|
2454
|
+
| --fui-cell-padding-x | calc(var(--fui-spacing-6) * var(--fui-density-scale)) |
|
|
1468
2455
|
|
|
1469
|
-
###
|
|
2456
|
+
### Spacing
|
|
1470
2457
|
|
|
1471
2458
|
| Token | Value |
|
|
1472
2459
|
|-------|-------|
|
|
1473
|
-
| --fui-
|
|
1474
|
-
| --fui-
|
|
1475
|
-
| --fui-
|
|
1476
|
-
| --fui-
|
|
1477
|
-
| --fui-
|
|
1478
|
-
| --fui-
|
|
1479
|
-
| --fui-
|
|
1480
|
-
| --fui-
|
|
1481
|
-
| --fui-
|
|
1482
|
-
| --fui-
|
|
1483
|
-
| --fui-
|
|
1484
|
-
| --fui-
|
|
1485
|
-
|
|
1486
|
-
|
|
2460
|
+
| --fui-spacing-0 | 0 |
|
|
2461
|
+
| --fui-spacing-1 | 0.125rem |
|
|
2462
|
+
| --fui-spacing-2 | 0.25rem |
|
|
2463
|
+
| --fui-spacing-3 | 0.375rem |
|
|
2464
|
+
| --fui-spacing-4 | 0.5rem |
|
|
2465
|
+
| --fui-spacing-5 | 0.625rem |
|
|
2466
|
+
| --fui-spacing-6 | 0.75rem |
|
|
2467
|
+
| --fui-spacing-7 | 1rem |
|
|
2468
|
+
| --fui-spacing-8 | 1.25rem |
|
|
2469
|
+
| --fui-spacing-9 | 1.5rem |
|
|
2470
|
+
| --fui-spacing-10 | 1.75rem |
|
|
2471
|
+
| --fui-spacing-11 | 2rem |
|
|
2472
|
+
| --fui-spacing-12 | 2.5rem |
|
|
2473
|
+
| --fui-spacing-13 | 3rem |
|
|
2474
|
+
|
|
2475
|
+
### Font
|
|
1487
2476
|
|
|
1488
2477
|
| Token | Value |
|
|
1489
2478
|
|-------|-------|
|
|
1490
|
-
| --fui-
|
|
1491
|
-
| --fui-
|
|
1492
|
-
| --fui-destructive-text | white |
|
|
2479
|
+
| --fui-font-sans | 'Geist', sans-serif |
|
|
2480
|
+
| --fui-font-mono | 'DM Mono', monospace |
|
|
1493
2481
|
|
|
1494
|
-
###
|
|
2482
|
+
### Text
|
|
1495
2483
|
|
|
1496
2484
|
| Token | Value |
|
|
1497
2485
|
|-------|-------|
|
|
1498
|
-
| --fui-
|
|
1499
|
-
| --fui-
|
|
1500
|
-
| --fui-
|
|
1501
|
-
| --fui-
|
|
2486
|
+
| --fui-text-xs | 0.6875rem |
|
|
2487
|
+
| --fui-text-sm | 0.75rem |
|
|
2488
|
+
| --fui-text-base | 0.875rem |
|
|
2489
|
+
| --fui-text-md | 1rem |
|
|
2490
|
+
| --fui-text-lg | 1.125rem |
|
|
2491
|
+
| --fui-text-xl | 1.25rem |
|
|
2492
|
+
| --fui-text-2xl | 1.5rem |
|
|
2493
|
+
| --fui-text-3xl | 1.875rem |
|
|
2494
|
+
| --fui-text-4xl | 2.25rem |
|
|
2495
|
+
| --fui-text-5xl | 3rem |
|
|
2496
|
+
| --fui-text-6xl | 3.75rem |
|
|
2497
|
+
| --fui-text-7xl | 4.5rem |
|
|
2498
|
+
| --fui-text-primary | var(--fui-neutral-110) |
|
|
2499
|
+
| --fui-text-secondary | var(--fui-neutral-80) |
|
|
2500
|
+
| --fui-text-disabled | var(--fui-neutral-60) |
|
|
2501
|
+
| --fui-text-tertiary | var(--fui-neutral-70) |
|
|
2502
|
+
| --fui-text-inverse | var(--fui-neutral-10) |
|
|
2503
|
+
| --fui-text-link | var(--fui-primary-70) |
|
|
2504
|
+
| --fui-text-link-hover | var(--fui-primary-80) |
|
|
2505
|
+
| --fui-text-error | var(--fui-error-90) |
|
|
2506
|
+
| --fui-text-success | var(--fui-success-90) |
|
|
2507
|
+
| --fui-text-warning | var(--fui-warning-90) |
|
|
2508
|
+
| --fui-text-info | var(--fui-info-90) |
|
|
2509
|
+
| --fui-text-on-fill | #ffffff |
|
|
2510
|
+
| --fui-text-primary | var(--fui-neutral-110) |
|
|
2511
|
+
| --fui-text-secondary | var(--fui-neutral-80) |
|
|
2512
|
+
| --fui-text-disabled | var(--fui-neutral-60) |
|
|
2513
|
+
| --fui-text-tertiary | var(--fui-neutral-70) |
|
|
2514
|
+
| --fui-text-inverse | var(--fui-neutral-10) |
|
|
2515
|
+
| --fui-text-link | var(--fui-primary-70) |
|
|
2516
|
+
| --fui-text-link-hover | var(--fui-primary-80) |
|
|
2517
|
+
| --fui-text-error | var(--fui-error-90) |
|
|
2518
|
+
| --fui-text-success | var(--fui-success-90) |
|
|
2519
|
+
| --fui-text-warning | var(--fui-warning-90) |
|
|
2520
|
+
| --fui-text-info | var(--fui-info-90) |
|
|
2521
|
+
| --fui-text-on-fill | #ffffff |
|
|
2522
|
+
|
|
2523
|
+
### Weight
|
|
1502
2524
|
|
|
1503
|
-
|
|
2525
|
+
| Token | Value |
|
|
2526
|
+
|-------|-------|
|
|
2527
|
+
| --fui-weight-light | 300 |
|
|
2528
|
+
| --fui-weight-regular | 400 |
|
|
2529
|
+
| --fui-weight-medium | 500 |
|
|
2530
|
+
| --fui-weight-semibold | 600 |
|
|
2531
|
+
| --fui-weight-bold | 700 |
|
|
2532
|
+
|
|
2533
|
+
### Leading
|
|
1504
2534
|
|
|
1505
2535
|
| Token | Value |
|
|
1506
2536
|
|-------|-------|
|
|
1507
|
-
| --fui-
|
|
1508
|
-
| --fui-
|
|
1509
|
-
| --fui-
|
|
1510
|
-
| --fui-
|
|
1511
|
-
| --fui-
|
|
2537
|
+
| --fui-leading-tight | 1.2 |
|
|
2538
|
+
| --fui-leading-snug | 1.35 |
|
|
2539
|
+
| --fui-leading-normal | 1.5 |
|
|
2540
|
+
| --fui-leading-relaxed | 1.65 |
|
|
2541
|
+
| --fui-leading-loose | 2 |
|
|
1512
2542
|
|
|
1513
|
-
###
|
|
2543
|
+
### Tracking
|
|
2544
|
+
|
|
2545
|
+
| Token | Value |
|
|
2546
|
+
|-------|-------|
|
|
2547
|
+
| --fui-tracking-tight | -0.02em |
|
|
2548
|
+
| --fui-tracking-normal | 0 |
|
|
2549
|
+
| --fui-tracking-wide | 0.02em |
|
|
2550
|
+
|
|
2551
|
+
### Primary
|
|
1514
2552
|
|
|
1515
2553
|
| Token | Value |
|
|
1516
2554
|
|-------|-------|
|
|
1517
|
-
| --fui-
|
|
1518
|
-
| --fui-
|
|
1519
|
-
| --fui-
|
|
1520
|
-
| --fui-
|
|
2555
|
+
| --fui-primary-10 | #E7E0F7 |
|
|
2556
|
+
| --fui-primary-20 | #CEC2ED |
|
|
2557
|
+
| --fui-primary-30 | #B4A5E2 |
|
|
2558
|
+
| --fui-primary-40 | #9A89D6 |
|
|
2559
|
+
| --fui-primary-50 | #806FC8 |
|
|
2560
|
+
| --fui-primary-60 | #6657B8 |
|
|
2561
|
+
| --fui-primary-70 | #524898 |
|
|
2562
|
+
| --fui-primary-80 | #433E74 |
|
|
2563
|
+
| --fui-primary-90 | #333152 |
|
|
2564
|
+
| --fui-primary-100 | #222233 |
|
|
2565
|
+
| --fui-primary-110 | #101016 |
|
|
2566
|
+
| --fui-primary-bg | var(--fui-primary-60) |
|
|
2567
|
+
| --fui-primary-muted | var(--fui-primary-10) |
|
|
2568
|
+
| --fui-primary-bg-hover | var(--fui-primary-70) |
|
|
2569
|
+
| --fui-primary-bg-pressed | var(--fui-primary-80) |
|
|
2570
|
+
| --fui-primary-bg-disabled | var(--fui-primary-30) |
|
|
2571
|
+
| --fui-primary-bg-subtle | var(--fui-primary-20) |
|
|
2572
|
+
| --fui-primary-fg | var(--fui-primary-70) |
|
|
2573
|
+
| --fui-primary-fg-subtle | var(--fui-primary-80) |
|
|
2574
|
+
| --fui-primary-10 | #100F17 |
|
|
2575
|
+
| --fui-primary-20 | #25223A |
|
|
2576
|
+
| --fui-primary-30 | #383160 |
|
|
2577
|
+
| --fui-primary-40 | #4A3E89 |
|
|
2578
|
+
| --fui-primary-50 | #5B48B5 |
|
|
2579
|
+
| --fui-primary-60 | #7A68CB |
|
|
2580
|
+
| --fui-primary-70 | #8876D4 |
|
|
2581
|
+
| --fui-primary-80 | #9685DC |
|
|
2582
|
+
| --fui-primary-90 | #A494E3 |
|
|
2583
|
+
| --fui-primary-100 | #B3A4E9 |
|
|
2584
|
+
| --fui-primary-110 | #C2B5EF |
|
|
2585
|
+
| --fui-primary-bg | var(--fui-primary-60) |
|
|
2586
|
+
| --fui-primary-muted | var(--fui-primary-10) |
|
|
2587
|
+
| --fui-primary-bg-hover | var(--fui-primary-70) |
|
|
2588
|
+
| --fui-primary-bg-pressed | var(--fui-primary-80) |
|
|
2589
|
+
| --fui-primary-bg-disabled | var(--fui-primary-30) |
|
|
2590
|
+
| --fui-primary-bg-subtle | var(--fui-primary-20) |
|
|
2591
|
+
| --fui-primary-fg | var(--fui-primary-70) |
|
|
2592
|
+
| --fui-primary-fg-subtle | var(--fui-primary-80) |
|
|
2593
|
+
|
|
2594
|
+
### Accent
|
|
1521
2595
|
|
|
1522
|
-
|
|
2596
|
+
| Token | Value |
|
|
2597
|
+
|-------|-------|
|
|
2598
|
+
| --fui-accent-10 | #F8F6F9 |
|
|
2599
|
+
| --fui-accent-20 | #F1ECF3 |
|
|
2600
|
+
| --fui-accent-30 | #E9DEED |
|
|
2601
|
+
| --fui-accent-40 | #E0CFE7 |
|
|
2602
|
+
| --fui-accent-50 | #D8C0E2 |
|
|
2603
|
+
| --fui-accent-60 | #D1B0DD |
|
|
2604
|
+
| --fui-accent-70 | #B883CE |
|
|
2605
|
+
| --fui-accent-80 | #9D4CBD |
|
|
2606
|
+
| --fui-accent-90 | #75328F |
|
|
2607
|
+
| --fui-accent-100 | #492258 |
|
|
2608
|
+
| --fui-accent-110 | #23142A |
|
|
2609
|
+
| --fui-accent-bg | var(--fui-accent-60) |
|
|
2610
|
+
| --fui-accent-hover | var(--fui-accent-80) |
|
|
2611
|
+
| --fui-accent-pressed | var(--fui-accent-80) |
|
|
2612
|
+
| --fui-accent-disabled | var(--fui-accent-30) |
|
|
2613
|
+
| --fui-accent-subtle | var(--fui-accent-20) |
|
|
2614
|
+
| --fui-accent-fg | var(--fui-accent-70) |
|
|
2615
|
+
| --fui-accent-fg-subtle | var(--fui-accent-80) |
|
|
2616
|
+
| --fui-accent-10 | #161018 |
|
|
2617
|
+
| --fui-accent-20 | #221726 |
|
|
2618
|
+
| --fui-accent-30 | #34213B |
|
|
2619
|
+
| --fui-accent-40 | #4C2B59 |
|
|
2620
|
+
| --fui-accent-50 | #6C3582 |
|
|
2621
|
+
| --fui-accent-60 | #A34FC4 |
|
|
2622
|
+
| --fui-accent-70 | #B982CE |
|
|
2623
|
+
| --fui-accent-80 | #CCAAD9 |
|
|
2624
|
+
| --fui-accent-90 | #DBCAE2 |
|
|
2625
|
+
| --fui-accent-100 | #E8E0EB |
|
|
2626
|
+
| --fui-accent-110 | #F3F0F4 |
|
|
2627
|
+
| --fui-accent-bg | var(--fui-accent-60) |
|
|
2628
|
+
| --fui-accent-hover | var(--fui-accent-80) |
|
|
2629
|
+
| --fui-accent-pressed | var(--fui-accent-80) |
|
|
2630
|
+
| --fui-accent-disabled | var(--fui-accent-30) |
|
|
2631
|
+
| --fui-accent-subtle | var(--fui-accent-20) |
|
|
2632
|
+
| --fui-accent-fg | var(--fui-accent-70) |
|
|
2633
|
+
| --fui-accent-fg-subtle | var(--fui-accent-80) |
|
|
2634
|
+
|
|
2635
|
+
### Neutral
|
|
1523
2636
|
|
|
1524
2637
|
| Token | Value |
|
|
1525
2638
|
|-------|-------|
|
|
1526
|
-
| --fui-
|
|
1527
|
-
| --fui-
|
|
2639
|
+
| --fui-neutral-10 | #FCFCFD |
|
|
2640
|
+
| --fui-neutral-20 | #F5F7FB |
|
|
2641
|
+
| --fui-neutral-30 | #ECEFF5 |
|
|
2642
|
+
| --fui-neutral-40 | #DDE3EC |
|
|
2643
|
+
| --fui-neutral-50 | #C8D0DD |
|
|
2644
|
+
| --fui-neutral-60 | #A6B1C2 |
|
|
2645
|
+
| --fui-neutral-70 | #7F8B9E |
|
|
2646
|
+
| --fui-neutral-80 | #5F697C |
|
|
2647
|
+
| --fui-neutral-90 | #444C5D |
|
|
2648
|
+
| --fui-neutral-100 | #2A303B |
|
|
2649
|
+
| --fui-neutral-110 | #11151B |
|
|
2650
|
+
| --fui-neutral-10 | #0C0F14 |
|
|
2651
|
+
| --fui-neutral-20 | #131923 |
|
|
2652
|
+
| --fui-neutral-30 | #1B2330 |
|
|
2653
|
+
| --fui-neutral-40 | #263041 |
|
|
2654
|
+
| --fui-neutral-50 | #364255 |
|
|
2655
|
+
| --fui-neutral-60 | #4D5B72 |
|
|
2656
|
+
| --fui-neutral-70 | #687891 |
|
|
2657
|
+
| --fui-neutral-80 | #8B9AB1 |
|
|
2658
|
+
| --fui-neutral-90 | #B0BCD0 |
|
|
2659
|
+
| --fui-neutral-100 | #D8DFEA |
|
|
2660
|
+
| --fui-neutral-110 | #F4F7FB |
|
|
1528
2661
|
|
|
1529
2662
|
### Error
|
|
1530
2663
|
|
|
1531
2664
|
| Token | Value |
|
|
1532
2665
|
|-------|-------|
|
|
1533
|
-
| --fui-error |
|
|
2666
|
+
| --fui-error-10 | #FFFBFA |
|
|
2667
|
+
| --fui-error-20 | #FED9D1 |
|
|
2668
|
+
| --fui-error-30 | #FDB5A9 |
|
|
2669
|
+
| --fui-error-40 | #FA9082 |
|
|
2670
|
+
| --fui-error-50 | #F56B5C |
|
|
2671
|
+
| --fui-error-60 | #F04438 |
|
|
2672
|
+
| --fui-error-70 | #EA2716 |
|
|
2673
|
+
| --fui-error-80 | #C52414 |
|
|
2674
|
+
| --fui-error-90 | #9F2112 |
|
|
2675
|
+
| --fui-error-100 | #791C0F |
|
|
2676
|
+
| --fui-error-110 | #55160C |
|
|
2677
|
+
| --fui-error-10 | #55160C |
|
|
2678
|
+
| --fui-error-20 | #841E10 |
|
|
2679
|
+
| --fui-error-30 | #B52412 |
|
|
2680
|
+
| --fui-error-40 | #E72612 |
|
|
2681
|
+
| --fui-error-50 | #F34839 |
|
|
2682
|
+
| --fui-error-60 | #F97066 |
|
|
2683
|
+
| --fui-error-70 | #FB8E83 |
|
|
2684
|
+
| --fui-error-80 | #FDABA0 |
|
|
2685
|
+
| --fui-error-90 | #FEC7BD |
|
|
2686
|
+
| --fui-error-100 | #FFE2DB |
|
|
2687
|
+
| --fui-error-110 | #FFFBFA |
|
|
2688
|
+
|
|
2689
|
+
### Success
|
|
2690
|
+
|
|
2691
|
+
| Token | Value |
|
|
2692
|
+
|-------|-------|
|
|
2693
|
+
| --fui-success-10 | #F6FEF9 |
|
|
2694
|
+
| --fui-success-20 | #C0F8D7 |
|
|
2695
|
+
| --fui-success-30 | #8BF1B8 |
|
|
2696
|
+
| --fui-success-40 | #56EA9C |
|
|
2697
|
+
| --fui-success-50 | #22E383 |
|
|
2698
|
+
| --fui-success-60 | #17B26A |
|
|
2699
|
+
| --fui-success-70 | #13995D |
|
|
2700
|
+
| --fui-success-80 | #0F804F |
|
|
2701
|
+
| --fui-success-90 | #0B6740 |
|
|
2702
|
+
| --fui-success-100 | #084D31 |
|
|
2703
|
+
| --fui-success-110 | #053321 |
|
|
2704
|
+
| --fui-success-10 | #053321 |
|
|
2705
|
+
| --fui-success-20 | #0B5939 |
|
|
2706
|
+
| --fui-success-30 | #147C4E |
|
|
2707
|
+
| --fui-success-40 | #1F9D63 |
|
|
2708
|
+
| --fui-success-50 | #2CBC76 |
|
|
2709
|
+
| --fui-success-60 | #47CD89 |
|
|
2710
|
+
| --fui-success-70 | #66DB9D |
|
|
2711
|
+
| --fui-success-80 | #87E7B2 |
|
|
2712
|
+
| --fui-success-90 | #AAF1C8 |
|
|
2713
|
+
| --fui-success-100 | #CFF8DF |
|
|
2714
|
+
| --fui-success-110 | #F6FEF9 |
|
|
2715
|
+
|
|
2716
|
+
### Warning
|
|
2717
|
+
|
|
2718
|
+
| Token | Value |
|
|
2719
|
+
|-------|-------|
|
|
2720
|
+
| --fui-warning-10 | #FFFCF5 |
|
|
2721
|
+
| --fui-warning-20 | #FFECC5 |
|
|
2722
|
+
| --fui-warning-30 | #FED995 |
|
|
2723
|
+
| --fui-warning-40 | #FCC366 |
|
|
2724
|
+
| --fui-warning-50 | #FAAB37 |
|
|
2725
|
+
| --fui-warning-60 | #F79009 |
|
|
2726
|
+
| --fui-warning-70 | #D4710A |
|
|
2727
|
+
| --fui-warning-80 | #B1570B |
|
|
2728
|
+
| --fui-warning-90 | #8F400C |
|
|
2729
|
+
| --fui-warning-100 | #6E2D0B |
|
|
2730
|
+
| --fui-warning-110 | #4E1D09 |
|
|
2731
|
+
| --fui-warning-10 | #4E1D09 |
|
|
2732
|
+
| --fui-warning-20 | #74310B |
|
|
2733
|
+
| --fui-warning-30 | #9C4A0B |
|
|
2734
|
+
| --fui-warning-40 | #C5680A |
|
|
2735
|
+
| --fui-warning-50 | #F08D07 |
|
|
2736
|
+
| --fui-warning-60 | #FDB022 |
|
|
2737
|
+
| --fui-warning-70 | #FEC14C |
|
|
2738
|
+
| --fui-warning-80 | #FED176 |
|
|
2739
|
+
| --fui-warning-90 | #FFE0A0 |
|
|
2740
|
+
| --fui-warning-100 | #FFEFCA |
|
|
2741
|
+
| --fui-warning-110 | #FFFCF5 |
|
|
2742
|
+
|
|
2743
|
+
### Info
|
|
2744
|
+
|
|
2745
|
+
| Token | Value |
|
|
2746
|
+
|-------|-------|
|
|
2747
|
+
| --fui-info-10 | #F5F9FF |
|
|
2748
|
+
| --fui-info-20 | #CCE1FF |
|
|
2749
|
+
| --fui-info-30 | #A4CBFE |
|
|
2750
|
+
| --fui-info-40 | #7CB6FD |
|
|
2751
|
+
| --fui-info-50 | #55A2FC |
|
|
2752
|
+
| --fui-info-60 | #2E90FA |
|
|
2753
|
+
| --fui-info-70 | #1077F3 |
|
|
2754
|
+
| --fui-info-80 | #1062CF |
|
|
2755
|
+
| --fui-info-90 | #124EA8 |
|
|
2756
|
+
| --fui-info-100 | #123C83 |
|
|
2757
|
+
| --fui-info-110 | #102C60 |
|
|
2758
|
+
| --fui-info-10 | #102C60 |
|
|
2759
|
+
| --fui-info-20 | #12418B |
|
|
2760
|
+
| --fui-info-30 | #1259B7 |
|
|
2761
|
+
| --fui-info-40 | #1075E7 |
|
|
2762
|
+
| --fui-info-50 | #2C94F7 |
|
|
2763
|
+
| --fui-info-60 | #53B1FD |
|
|
2764
|
+
| --fui-info-70 | #73BBFE |
|
|
2765
|
+
| --fui-info-80 | #93C8FE |
|
|
2766
|
+
| --fui-info-90 | #B4D6FF |
|
|
2767
|
+
| --fui-info-100 | #D4E7FF |
|
|
2768
|
+
| --fui-info-110 | #F5F9FF |
|
|
2769
|
+
|
|
2770
|
+
### Pluvia
|
|
2771
|
+
|
|
2772
|
+
| Token | Value |
|
|
2773
|
+
|-------|-------|
|
|
2774
|
+
| --fui-pluvia-teal-10 | #F9FCFC |
|
|
2775
|
+
| --fui-pluvia-teal-20 | #D1E8E9 |
|
|
2776
|
+
| --fui-pluvia-teal-30 | #A8D5D6 |
|
|
2777
|
+
| --fui-pluvia-teal-40 | #7FC2C5 |
|
|
2778
|
+
| --fui-pluvia-teal-50 | #54AFB4 |
|
|
2779
|
+
| --fui-pluvia-teal-60 | #3D8A90 |
|
|
2780
|
+
| --fui-pluvia-teal-70 | #37757B |
|
|
2781
|
+
| --fui-pluvia-teal-80 | #2F6066 |
|
|
2782
|
+
| --fui-pluvia-teal-90 | #284D52 |
|
|
2783
|
+
| --fui-pluvia-teal-100 | #203A3E |
|
|
2784
|
+
| --fui-pluvia-teal-110 | #17282B |
|
|
2785
|
+
| --fui-pluvia-teal-10 | #0A3733 |
|
|
2786
|
+
| --fui-pluvia-teal-20 | #105750 |
|
|
2787
|
+
| --fui-pluvia-teal-30 | #17776B |
|
|
2788
|
+
| --fui-pluvia-teal-40 | #1E9686 |
|
|
2789
|
+
| --fui-pluvia-teal-50 | #25B59F |
|
|
2790
|
+
| --fui-pluvia-teal-60 | #2ED3B7 |
|
|
2791
|
+
| --fui-pluvia-teal-70 | #53DEC5 |
|
|
2792
|
+
| --fui-pluvia-teal-80 | #7AE9D2 |
|
|
2793
|
+
| --fui-pluvia-teal-90 | #A2F1E0 |
|
|
2794
|
+
| --fui-pluvia-teal-100 | #CBF8EE |
|
|
2795
|
+
| --fui-pluvia-teal-110 | #F6FEFC |
|
|
2796
|
+
|
|
2797
|
+
### Nimbus
|
|
2798
|
+
|
|
2799
|
+
| Token | Value |
|
|
2800
|
+
|-------|-------|
|
|
2801
|
+
| --fui-nimbus-blue-10 | #F9FBFC |
|
|
2802
|
+
| --fui-nimbus-blue-20 | #D1E0E9 |
|
|
2803
|
+
| --fui-nimbus-blue-30 | #A8C3D6 |
|
|
2804
|
+
| --fui-nimbus-blue-40 | #7FA4C5 |
|
|
2805
|
+
| --fui-nimbus-blue-50 | #5482B4 |
|
|
2806
|
+
| --fui-nimbus-blue-60 | #3D6190 |
|
|
2807
|
+
| --fui-nimbus-blue-70 | #37537B |
|
|
2808
|
+
| --fui-nimbus-blue-80 | #2F4566 |
|
|
2809
|
+
| --fui-nimbus-blue-90 | #283852 |
|
|
2810
|
+
| --fui-nimbus-blue-100 | #202B3E |
|
|
2811
|
+
| --fui-nimbus-blue-110 | #171E2B |
|
|
2812
|
+
| --fui-nimbus-blue-10 | #040609 |
|
|
2813
|
+
| --fui-nimbus-blue-20 | #101824 |
|
|
2814
|
+
| --fui-nimbus-blue-30 | #1B2A3F |
|
|
2815
|
+
| --fui-nimbus-blue-40 | #273C5A |
|
|
2816
|
+
| --fui-nimbus-blue-50 | #324E75 |
|
|
2817
|
+
| --fui-nimbus-blue-60 | #3D6190 |
|
|
2818
|
+
| --fui-nimbus-blue-70 | #4879B6 |
|
|
2819
|
+
| --fui-nimbus-blue-80 | #6793C7 |
|
|
2820
|
+
| --fui-nimbus-blue-90 | #88ADD6 |
|
|
2821
|
+
| --fui-nimbus-blue-100 | #ABC7E4 |
|
|
2822
|
+
| --fui-nimbus-blue-110 | #CFE0F1 |
|
|
2823
|
+
|
|
2824
|
+
### Gray
|
|
2825
|
+
|
|
2826
|
+
| Token | Value |
|
|
2827
|
+
|-------|-------|
|
|
2828
|
+
| --fui-gray-cool-10 | #FCFCFD |
|
|
2829
|
+
| --fui-gray-cool-20 | #DCDDE8 |
|
|
2830
|
+
| --fui-gray-cool-30 | #BDBFD4 |
|
|
2831
|
+
| --fui-gray-cool-40 | #9CA1C0 |
|
|
2832
|
+
| --fui-gray-cool-50 | #7B84AD |
|
|
2833
|
+
| --fui-gray-cool-60 | #5D6A97 |
|
|
2834
|
+
| --fui-gray-cool-70 | #495682 |
|
|
2835
|
+
| --fui-gray-cool-80 | #37426C |
|
|
2836
|
+
| --fui-gray-cool-90 | #263054 |
|
|
2837
|
+
| --fui-gray-cool-100 | #181F3A |
|
|
2838
|
+
| --fui-gray-cool-110 | #0B0F1E |
|
|
2839
|
+
| --fui-gray-neutral-10 | #FCFCFD |
|
|
2840
|
+
| --fui-gray-neutral-20 | #DCDDE7 |
|
|
2841
|
+
| --fui-gray-neutral-30 | #BEC0CF |
|
|
2842
|
+
| --fui-gray-neutral-40 | #A1A5B6 |
|
|
2843
|
+
| --fui-gray-neutral-50 | #858B9C |
|
|
2844
|
+
| --fui-gray-neutral-60 | #6C727F |
|
|
2845
|
+
| --fui-gray-neutral-70 | #535C70 |
|
|
2846
|
+
| --fui-gray-neutral-80 | #3D485F |
|
|
2847
|
+
| --fui-gray-neutral-90 | #2A344B |
|
|
2848
|
+
| --fui-gray-neutral-100 | #192234 |
|
|
2849
|
+
| --fui-gray-neutral-110 | #0B101B |
|
|
2850
|
+
| --fui-gray-iron-10 | #FCFCFC |
|
|
2851
|
+
| --fui-gray-iron-20 | #E1E1E1 |
|
|
2852
|
+
| --fui-gray-iron-30 | #C5C5C7 |
|
|
2853
|
+
| --fui-gray-iron-40 | #A9A9AE |
|
|
2854
|
+
| --fui-gray-iron-50 | #8D8D95 |
|
|
2855
|
+
| --fui-gray-iron-60 | #71717B |
|
|
2856
|
+
| --fui-gray-iron-70 | #5E5E67 |
|
|
2857
|
+
| --fui-gray-iron-80 | #4B4B53 |
|
|
2858
|
+
| --fui-gray-iron-90 | #38383F |
|
|
2859
|
+
| --fui-gray-iron-100 | #25252B |
|
|
2860
|
+
| --fui-gray-iron-110 | #131316 |
|
|
2861
|
+
| --fui-gray-true-10 | #FCFCFC |
|
|
2862
|
+
| --fui-gray-true-20 | #E1E1E1 |
|
|
2863
|
+
| --fui-gray-true-30 | #C5C5C5 |
|
|
2864
|
+
| --fui-gray-true-40 | #AAAAAA |
|
|
2865
|
+
| --fui-gray-true-50 | #8E8E8E |
|
|
2866
|
+
| --fui-gray-true-60 | #737373 |
|
|
2867
|
+
| --fui-gray-true-70 | #5F5F5F |
|
|
2868
|
+
| --fui-gray-true-80 | #4B4B4B |
|
|
2869
|
+
| --fui-gray-true-90 | #373737 |
|
|
2870
|
+
| --fui-gray-true-100 | #232323 |
|
|
2871
|
+
| --fui-gray-true-110 | #0F0F0F |
|
|
2872
|
+
| --fui-gray-cool-10 | #0B0F1E |
|
|
2873
|
+
| --fui-gray-cool-20 | #1B2342 |
|
|
2874
|
+
| --fui-gray-cool-30 | #2D3963 |
|
|
2875
|
+
| --fui-gray-cool-40 | #425182 |
|
|
2876
|
+
| --fui-gray-cool-50 | #59699F |
|
|
2877
|
+
| --fui-gray-cool-60 | #7D89AF |
|
|
2878
|
+
| --fui-gray-cool-70 | #979FBE |
|
|
2879
|
+
| --fui-gray-cool-80 | #B1B5CD |
|
|
2880
|
+
| --fui-gray-cool-90 | #CACCDD |
|
|
2881
|
+
| --fui-gray-cool-100 | #E3E4ED |
|
|
2882
|
+
| --fui-gray-cool-110 | #FCFCFD |
|
|
2883
|
+
| --fui-gray-neutral-10 | #0B101B |
|
|
2884
|
+
| --fui-gray-neutral-20 | #1F2B41 |
|
|
2885
|
+
| --fui-gray-neutral-30 | #374764 |
|
|
2886
|
+
| --fui-gray-neutral-40 | #536583 |
|
|
2887
|
+
| --fui-gray-neutral-50 | #75849B |
|
|
2888
|
+
| --fui-gray-neutral-60 | #9DA4AE |
|
|
2889
|
+
| --fui-gray-neutral-70 | #AFB4BF |
|
|
2890
|
+
| --fui-gray-neutral-80 | #C1C5D0 |
|
|
2891
|
+
| --fui-gray-neutral-90 | #D4D6E0 |
|
|
2892
|
+
| --fui-gray-neutral-100 | #E8E8EF |
|
|
2893
|
+
| --fui-gray-neutral-110 | #FCFCFD |
|
|
2894
|
+
| --fui-gray-iron-10 | #131316 |
|
|
2895
|
+
| --fui-gray-iron-20 | #2E2E35 |
|
|
2896
|
+
| --fui-gray-iron-30 | #494954 |
|
|
2897
|
+
| --fui-gray-iron-40 | #646473 |
|
|
2898
|
+
| --fui-gray-iron-50 | #818190 |
|
|
2899
|
+
| --fui-gray-iron-60 | #A0A0AB |
|
|
2900
|
+
| --fui-gray-iron-70 | #B3B3BA |
|
|
2901
|
+
| --fui-gray-iron-80 | #C6C6CA |
|
|
2902
|
+
| --fui-gray-iron-90 | #D8D8DA |
|
|
2903
|
+
| --fui-gray-iron-100 | #EAEAEB |
|
|
2904
|
+
| --fui-gray-iron-110 | #FCFCFC |
|
|
2905
|
+
| --fui-gray-true-10 | #0F0F0F |
|
|
2906
|
+
| --fui-gray-true-20 | #2D2D2D |
|
|
2907
|
+
| --fui-gray-true-30 | #4A4A4A |
|
|
2908
|
+
| --fui-gray-true-40 | #686868 |
|
|
2909
|
+
| --fui-gray-true-50 | #858585 |
|
|
2910
|
+
| --fui-gray-true-60 | #A3A3A3 |
|
|
2911
|
+
| --fui-gray-true-70 | #B5B5B5 |
|
|
2912
|
+
| --fui-gray-true-80 | #C7C7C7 |
|
|
2913
|
+
| --fui-gray-true-90 | #D8D8D8 |
|
|
2914
|
+
| --fui-gray-true-100 | #EAEAEA |
|
|
2915
|
+
| --fui-gray-true-110 | #FCFCFC |
|
|
2916
|
+
|
|
2917
|
+
### Moss
|
|
2918
|
+
|
|
2919
|
+
| Token | Value |
|
|
2920
|
+
|-------|-------|
|
|
2921
|
+
| --fui-moss-10 | #FAFDF7 |
|
|
2922
|
+
| --fui-moss-20 | #DCF1C7 |
|
|
2923
|
+
| --fui-moss-30 | #BFE598 |
|
|
2924
|
+
| --fui-moss-40 | #A1D868 |
|
|
2925
|
+
| --fui-moss-50 | #84CB39 |
|
|
2926
|
+
| --fui-moss-60 | #669F2A |
|
|
2927
|
+
| --fui-moss-70 | #578724 |
|
|
2928
|
+
| --fui-moss-80 | #486F1E |
|
|
2929
|
+
| --fui-moss-90 | #385718 |
|
|
2930
|
+
| --fui-moss-100 | #294011 |
|
|
2931
|
+
| --fui-moss-110 | #1A280B |
|
|
2932
|
+
| --fui-moss-10 | #1A280B |
|
|
2933
|
+
| --fui-moss-20 | #304914 |
|
|
2934
|
+
| --fui-moss-30 | #456B1D |
|
|
2935
|
+
| --fui-moss-40 | #5B8C26 |
|
|
2936
|
+
| --fui-moss-50 | #71AE2F |
|
|
2937
|
+
| --fui-moss-60 | #86CB3C |
|
|
2938
|
+
| --fui-moss-70 | #9DD561 |
|
|
2939
|
+
| --fui-moss-80 | #B4E086 |
|
|
2940
|
+
| --fui-moss-90 | #CBEAAC |
|
|
2941
|
+
| --fui-moss-100 | #E2F3D1 |
|
|
2942
|
+
| --fui-moss-110 | #FAFDF7 |
|
|
2943
|
+
|
|
2944
|
+
### Green
|
|
2945
|
+
|
|
2946
|
+
| Token | Value |
|
|
2947
|
+
|-------|-------|
|
|
2948
|
+
| --fui-green-light-10 | #FAFEF5 |
|
|
2949
|
+
| --fui-green-light-20 | #E0F9C4 |
|
|
2950
|
+
| --fui-green-light-30 | #C4F294 |
|
|
2951
|
+
| --fui-green-light-40 | #A5EB64 |
|
|
2952
|
+
| --fui-green-light-50 | #85E336 |
|
|
2953
|
+
| --fui-green-light-60 | #66C61D |
|
|
2954
|
+
| --fui-green-light-70 | #54A51B |
|
|
2955
|
+
| --fui-green-light-80 | #448418 |
|
|
2956
|
+
| --fui-green-light-90 | #346514 |
|
|
2957
|
+
| --fui-green-light-100 | #244610 |
|
|
2958
|
+
| --fui-green-light-110 | #15290A |
|
|
2959
|
+
| --fui-green-10 | #F6FEF9 |
|
|
2960
|
+
| --fui-green-20 | #C0F8D7 |
|
|
2961
|
+
| --fui-green-30 | #8AF3B8 |
|
|
2962
|
+
| --fui-green-40 | #53ED9C |
|
|
2963
|
+
| --fui-green-50 | #1DE883 |
|
|
2964
|
+
| --fui-green-60 | #12B76A |
|
|
2965
|
+
| --fui-green-70 | #0F9D5D |
|
|
2966
|
+
| --fui-green-80 | #0D824F |
|
|
2967
|
+
| --fui-green-90 | #0A6840 |
|
|
2968
|
+
| --fui-green-100 | #084D31 |
|
|
2969
|
+
| --fui-green-110 | #053321 |
|
|
2970
|
+
| --fui-green-light-10 | #15290A |
|
|
2971
|
+
| --fui-green-light-20 | #295012 |
|
|
2972
|
+
| --fui-green-light-30 | #3E7719 |
|
|
2973
|
+
| --fui-green-light-40 | #54A01E |
|
|
2974
|
+
| --fui-green-light-50 | #6BCA22 |
|
|
2975
|
+
| --fui-green-light-60 | #85E13A |
|
|
2976
|
+
| --fui-green-light-70 | #9FE85E |
|
|
2977
|
+
| --fui-green-light-80 | #B8EF83 |
|
|
2978
|
+
| --fui-green-light-90 | #CFF5A8 |
|
|
2979
|
+
| --fui-green-light-100 | #E5FACE |
|
|
2980
|
+
| --fui-green-light-110 | #FAFEF5 |
|
|
2981
|
+
| --fui-green-10 | #053321 |
|
|
2982
|
+
| --fui-green-20 | #0A5737 |
|
|
2983
|
+
| --fui-green-30 | #117A4C |
|
|
2984
|
+
| --fui-green-40 | #199B60 |
|
|
2985
|
+
| --fui-green-50 | #22BB72 |
|
|
2986
|
+
| --fui-green-60 | #32D583 |
|
|
2987
|
+
| --fui-green-70 | #57E097 |
|
|
2988
|
+
| --fui-green-80 | #7CE9AD |
|
|
2989
|
+
| --fui-green-90 | #A4F2C5 |
|
|
2990
|
+
| --fui-green-100 | #CCF8DE |
|
|
2991
|
+
| --fui-green-110 | #F6FEF9 |
|
|
2992
|
+
|
|
2993
|
+
### Cyan
|
|
2994
|
+
|
|
2995
|
+
| Token | Value |
|
|
2996
|
+
|-------|-------|
|
|
2997
|
+
| --fui-cyan-10 | #F5FEFF |
|
|
2998
|
+
| --fui-cyan-20 | #BDF7FF |
|
|
2999
|
+
| --fui-cyan-30 | #86EEFE |
|
|
3000
|
+
| --fui-cyan-40 | #4FE2FC |
|
|
3001
|
+
| --fui-cyan-50 | #19D4FA |
|
|
3002
|
+
| --fui-cyan-60 | #06AED4 |
|
|
3003
|
+
| --fui-cyan-70 | #0992B5 |
|
|
3004
|
+
| --fui-cyan-80 | #0C7797 |
|
|
3005
|
+
| --fui-cyan-90 | #0D5F7B |
|
|
3006
|
+
| --fui-cyan-100 | #0C495F |
|
|
3007
|
+
| --fui-cyan-110 | #0B3445 |
|
|
3008
|
+
| --fui-cyan-10 | #0B3445 |
|
|
3009
|
+
| --fui-cyan-20 | #0F5068 |
|
|
3010
|
+
| --fui-cyan-30 | #116E8B |
|
|
3011
|
+
| --fui-cyan-40 | #138EB0 |
|
|
3012
|
+
| --fui-cyan-50 | #14B1D6 |
|
|
3013
|
+
| --fui-cyan-60 | #22CCEE |
|
|
3014
|
+
| --fui-cyan-70 | #4ADAF4 |
|
|
3015
|
+
| --fui-cyan-80 | #72E6F9 |
|
|
3016
|
+
| --fui-cyan-90 | #9DF0FC |
|
|
3017
|
+
| --fui-cyan-100 | #C8F8FE |
|
|
3018
|
+
| --fui-cyan-110 | #F5FEFF |
|
|
3019
|
+
|
|
3020
|
+
### Blue
|
|
3021
|
+
|
|
3022
|
+
| Token | Value |
|
|
3023
|
+
|-------|-------|
|
|
3024
|
+
| --fui-blue-10 | #F5FAFF |
|
|
3025
|
+
| --fui-blue-20 | #CCE5FF |
|
|
3026
|
+
| --fui-blue-30 | #A4D0FE |
|
|
3027
|
+
| --fui-blue-40 | #7CBBFD |
|
|
3028
|
+
| --fui-blue-50 | #55A6FC |
|
|
3029
|
+
| --fui-blue-60 | #2E90FA |
|
|
3030
|
+
| --fui-blue-70 | #1077F3 |
|
|
3031
|
+
| --fui-blue-80 | #1062CF |
|
|
3032
|
+
| --fui-blue-90 | #124EA8 |
|
|
3033
|
+
| --fui-blue-100 | #123C83 |
|
|
3034
|
+
| --fui-blue-110 | #102C60 |
|
|
3035
|
+
| --fui-blue-dark-10 | #F5F8FF |
|
|
3036
|
+
| --fui-blue-dark-20 | #CCDCFF |
|
|
3037
|
+
| --fui-blue-dark-30 | #A3C0FF |
|
|
3038
|
+
| --fui-blue-dark-40 | #7BA5FF |
|
|
3039
|
+
| --fui-blue-dark-50 | #528AFF |
|
|
3040
|
+
| --fui-blue-dark-60 | #2970FF |
|
|
3041
|
+
| --fui-blue-dark-70 | #0256FF |
|
|
3042
|
+
| --fui-blue-dark-80 | #0049DA |
|
|
3043
|
+
| --fui-blue-dark-90 | #003CB4 |
|
|
3044
|
+
| --fui-blue-dark-100 | #002F8D |
|
|
3045
|
+
| --fui-blue-dark-110 | #002266 |
|
|
3046
|
+
| --fui-blue-10 | #102C60 |
|
|
3047
|
+
| --fui-blue-20 | #12418B |
|
|
3048
|
+
| --fui-blue-30 | #1259B7 |
|
|
3049
|
+
| --fui-blue-40 | #1075E7 |
|
|
3050
|
+
| --fui-blue-50 | #2C94F7 |
|
|
3051
|
+
| --fui-blue-60 | #53B1FD |
|
|
3052
|
+
| --fui-blue-70 | #73BEFE |
|
|
3053
|
+
| --fui-blue-80 | #93CCFE |
|
|
3054
|
+
| --fui-blue-90 | #B4DBFF |
|
|
3055
|
+
| --fui-blue-100 | #D4EAFF |
|
|
3056
|
+
| --fui-blue-110 | #F5FAFF |
|
|
3057
|
+
| --fui-blue-dark-10 | #002266 |
|
|
3058
|
+
| --fui-blue-dark-20 | #003295 |
|
|
3059
|
+
| --fui-blue-dark-30 | #0041C4 |
|
|
3060
|
+
| --fui-blue-dark-40 | #0050F3 |
|
|
3061
|
+
| --fui-blue-dark-50 | #236CFF |
|
|
3062
|
+
| --fui-blue-dark-60 | #528BFF |
|
|
3063
|
+
| --fui-blue-dark-70 | #73A0FF |
|
|
3064
|
+
| --fui-blue-dark-80 | #93B5FF |
|
|
3065
|
+
| --fui-blue-dark-90 | #B4CBFF |
|
|
3066
|
+
| --fui-blue-dark-100 | #D4E1FF |
|
|
3067
|
+
| --fui-blue-dark-110 | #F5F8FF |
|
|
3068
|
+
|
|
3069
|
+
### Indigo
|
|
3070
|
+
|
|
3071
|
+
| Token | Value |
|
|
3072
|
+
|-------|-------|
|
|
3073
|
+
| --fui-indigo-10 | #F5F8FF |
|
|
3074
|
+
| --fui-indigo-20 | #D6E0FE |
|
|
3075
|
+
| --fui-indigo-30 | #B7C7FD |
|
|
3076
|
+
| --fui-indigo-40 | #99ACFB |
|
|
3077
|
+
| --fui-indigo-50 | #7D90F7 |
|
|
3078
|
+
| --fui-indigo-60 | #6172F3 |
|
|
3079
|
+
| --fui-indigo-70 | #4052E8 |
|
|
3080
|
+
| --fui-indigo-80 | #2436D8 |
|
|
3081
|
+
| --fui-indigo-90 | #2631AB |
|
|
3082
|
+
| --fui-indigo-100 | #242B82 |
|
|
3083
|
+
| --fui-indigo-110 | #1F235B |
|
|
3084
|
+
| --fui-indigo-10 | #1F235B |
|
|
3085
|
+
| --fui-indigo-20 | #252E88 |
|
|
3086
|
+
| --fui-indigo-30 | #2638BA |
|
|
3087
|
+
| --fui-indigo-40 | #324CE1 |
|
|
3088
|
+
| --fui-indigo-50 | #5771EF |
|
|
3089
|
+
| --fui-indigo-60 | #8098F9 |
|
|
3090
|
+
| --fui-indigo-70 | #97ADFB |
|
|
3091
|
+
| --fui-indigo-80 | #ADC0FD |
|
|
3092
|
+
| --fui-indigo-90 | #C5D4FE |
|
|
3093
|
+
| --fui-indigo-100 | #DDE6FF |
|
|
3094
|
+
| --fui-indigo-110 | #F5F8FF |
|
|
3095
|
+
|
|
3096
|
+
### Purple
|
|
3097
|
+
|
|
3098
|
+
| Token | Value |
|
|
3099
|
+
|-------|-------|
|
|
3100
|
+
| --fui-purple-10 | #FAFAFF |
|
|
3101
|
+
| --fui-purple-20 | #DAD9FF |
|
|
3102
|
+
| --fui-purple-30 | #BEB8FE |
|
|
3103
|
+
| --fui-purple-40 | #A598FC |
|
|
3104
|
+
| --fui-purple-50 | #8E79FA |
|
|
3105
|
+
| --fui-purple-60 | #7A5AF8 |
|
|
3106
|
+
| --fui-purple-70 | #5D33F0 |
|
|
3107
|
+
| --fui-purple-80 | #4717DF |
|
|
3108
|
+
| --fui-purple-90 | #3F17AF |
|
|
3109
|
+
| --fui-purple-100 | #341682 |
|
|
3110
|
+
| --fui-purple-110 | #271258 |
|
|
3111
|
+
| --fui-purple-10 | #271258 |
|
|
3112
|
+
| --fui-purple-20 | #37178B |
|
|
3113
|
+
| --fui-purple-30 | #4219C2 |
|
|
3114
|
+
| --fui-purple-40 | #5229EA |
|
|
3115
|
+
| --fui-purple-50 | #7458F4 |
|
|
3116
|
+
| --fui-purple-60 | #9B8AFB |
|
|
3117
|
+
| --fui-purple-70 | #ABA0FC |
|
|
3118
|
+
| --fui-purple-80 | #BCB6FE |
|
|
3119
|
+
| --fui-purple-90 | #CFCCFE |
|
|
3120
|
+
| --fui-purple-100 | #E4E3FF |
|
|
3121
|
+
| --fui-purple-110 | #FAFAFF |
|
|
3122
|
+
|
|
3123
|
+
### Fuchsia
|
|
3124
|
+
|
|
3125
|
+
| Token | Value |
|
|
3126
|
+
|-------|-------|
|
|
3127
|
+
| --fui-fuchsia-10 | #FEFAFF |
|
|
3128
|
+
| --fui-fuchsia-20 | #F6D3FE |
|
|
3129
|
+
| --fui-fuchsia-30 | #EEAEFD |
|
|
3130
|
+
| --fui-fuchsia-40 | #E68AFA |
|
|
3131
|
+
| --fui-fuchsia-50 | #DD66F6 |
|
|
3132
|
+
| --fui-fuchsia-60 | #D444F1 |
|
|
3133
|
+
| --fui-fuchsia-70 | #CB21E9 |
|
|
3134
|
+
| --fui-fuchsia-80 | #AE19C5 |
|
|
3135
|
+
| --fui-fuchsia-90 | #8C189B |
|
|
3136
|
+
| --fui-fuchsia-100 | #691573 |
|
|
3137
|
+
| --fui-fuchsia-110 | #47104C |
|
|
3138
|
+
| --fui-fuchsia-10 | #47104C |
|
|
3139
|
+
| --fui-fuchsia-20 | #74167E |
|
|
3140
|
+
| --fui-fuchsia-30 | #A118B3 |
|
|
3141
|
+
| --fui-fuchsia-40 | #CC1BE8 |
|
|
3142
|
+
| --fui-fuchsia-50 | #D948F3 |
|
|
3143
|
+
| --fui-fuchsia-60 | #E478FA |
|
|
3144
|
+
| --fui-fuchsia-70 | #E991FC |
|
|
3145
|
+
| --fui-fuchsia-80 | #EEABFD |
|
|
3146
|
+
| --fui-fuchsia-90 | #F3C5FE |
|
|
3147
|
+
| --fui-fuchsia-100 | #F9DFFF |
|
|
3148
|
+
| --fui-fuchsia-110 | #FEFAFF |
|
|
3149
|
+
|
|
3150
|
+
### Pink
|
|
3151
|
+
|
|
3152
|
+
| Token | Value |
|
|
3153
|
+
|-------|-------|
|
|
3154
|
+
| --fui-pink-10 | #FEF6FB |
|
|
3155
|
+
| --fui-pink-20 | #FAD3EC |
|
|
3156
|
+
| --fui-pink-30 | #F7B0DF |
|
|
3157
|
+
| --fui-pink-40 | #F48DD2 |
|
|
3158
|
+
| --fui-pink-50 | #F16AC6 |
|
|
3159
|
+
| --fui-pink-60 | #EE46BC |
|
|
3160
|
+
| --fui-pink-70 | #E721A6 |
|
|
3161
|
+
| --fui-pink-80 | #C41886 |
|
|
3162
|
+
| --fui-pink-90 | #9B1566 |
|
|
3163
|
+
| --fui-pink-100 | #731249 |
|
|
3164
|
+
| --fui-pink-110 | #4C0D2F |
|
|
3165
|
+
| --fui-pink-10 | #4C0D2F |
|
|
3166
|
+
| --fui-pink-20 | #7C124E |
|
|
3167
|
+
| --fui-pink-30 | #AF166F |
|
|
3168
|
+
| --fui-pink-40 | #E31893 |
|
|
3169
|
+
| --fui-pink-50 | #EF41AE |
|
|
3170
|
+
| --fui-pink-60 | #F670C7 |
|
|
3171
|
+
| --fui-pink-70 | #F78CD1 |
|
|
3172
|
+
| --fui-pink-80 | #F8A7DB |
|
|
3173
|
+
| --fui-pink-90 | #F9C2E5 |
|
|
3174
|
+
| --fui-pink-100 | #FBDCF0 |
|
|
3175
|
+
| --fui-pink-110 | #FEF6FB |
|
|
3176
|
+
|
|
3177
|
+
### Rose
|
|
3178
|
+
|
|
3179
|
+
| Token | Value |
|
|
3180
|
+
|-------|-------|
|
|
3181
|
+
| --fui-rose-10 | #FFF5F6 |
|
|
3182
|
+
| --fui-rose-20 | #FFCFD5 |
|
|
3183
|
+
| --fui-rose-30 | #FDA9B6 |
|
|
3184
|
+
| --fui-rose-40 | #FC859A |
|
|
3185
|
+
| --fui-rose-50 | #F96080 |
|
|
3186
|
+
| --fui-rose-60 | #F63D68 |
|
|
3187
|
+
| --fui-rose-70 | #F0184F |
|
|
3188
|
+
| --fui-rose-80 | #CD1046 |
|
|
3189
|
+
| --fui-rose-90 | #A2103D |
|
|
3190
|
+
| --fui-rose-100 | #790E32 |
|
|
3191
|
+
| --fui-rose-110 | #510B24 |
|
|
3192
|
+
| --fui-rose-10 | #510B24 |
|
|
3193
|
+
| --fui-rose-20 | #840E35 |
|
|
3194
|
+
| --fui-rose-30 | #B91043 |
|
|
3195
|
+
| --fui-rose-40 | #F10E4C |
|
|
3196
|
+
| --fui-rose-50 | #F83E6B |
|
|
3197
|
+
| --fui-rose-60 | #FD6F8E |
|
|
3198
|
+
| --fui-rose-70 | #FE8AA0 |
|
|
3199
|
+
| --fui-rose-80 | #FEA4B4 |
|
|
3200
|
+
| --fui-rose-90 | #FFBFC8 |
|
|
3201
|
+
| --fui-rose-100 | #FFDADE |
|
|
3202
|
+
| --fui-rose-110 | #FFF5F6 |
|
|
3203
|
+
|
|
3204
|
+
### Orange
|
|
3205
|
+
|
|
3206
|
+
| Token | Value |
|
|
3207
|
+
|-------|-------|
|
|
3208
|
+
| --fui-orange-dark-10 | #FFF9F5 |
|
|
3209
|
+
| --fui-orange-dark-20 | #FFDAC5 |
|
|
3210
|
+
| --fui-orange-dark-30 | #FFB995 |
|
|
3211
|
+
| --fui-orange-dark-40 | #FF9565 |
|
|
3212
|
+
| --fui-orange-dark-50 | #FF6E35 |
|
|
3213
|
+
| --fui-orange-dark-60 | #FF4405 |
|
|
3214
|
+
| --fui-orange-dark-70 | #DE3605 |
|
|
3215
|
+
| --fui-orange-dark-80 | #BA2C08 |
|
|
3216
|
+
| --fui-orange-dark-90 | #97220A |
|
|
3217
|
+
| --fui-orange-dark-100 | #751A0B |
|
|
3218
|
+
| --fui-orange-dark-110 | #55130A |
|
|
3219
|
+
| --fui-orange-10 | #FEFAF5 |
|
|
3220
|
+
| --fui-orange-20 | #FAE3CB |
|
|
3221
|
+
| --fui-orange-30 | #F7CAA1 |
|
|
3222
|
+
| --fui-orange-40 | #F4AC77 |
|
|
3223
|
+
| --fui-orange-50 | #F18C4B |
|
|
3224
|
+
| --fui-orange-60 | #EF6820 |
|
|
3225
|
+
| --fui-orange-70 | #D85314 |
|
|
3226
|
+
| --fui-orange-80 | #B54315 |
|
|
3227
|
+
| --fui-orange-90 | #923515 |
|
|
3228
|
+
| --fui-orange-100 | #722913 |
|
|
3229
|
+
| --fui-orange-110 | #521D10 |
|
|
3230
|
+
| --fui-orange-dark-10 | #55130A |
|
|
3231
|
+
| --fui-orange-dark-20 | #7D1D0B |
|
|
3232
|
+
| --fui-orange-dark-30 | #A6280B |
|
|
3233
|
+
| --fui-orange-dark-40 | #D13509 |
|
|
3234
|
+
| --fui-orange-dark-50 | #FA460A |
|
|
3235
|
+
| --fui-orange-dark-60 | #FF692E |
|
|
3236
|
+
| --fui-orange-dark-70 | #FF8A56 |
|
|
3237
|
+
| --fui-orange-dark-80 | #FFA87E |
|
|
3238
|
+
| --fui-orange-dark-90 | #FFC5A5 |
|
|
3239
|
+
| --fui-orange-dark-100 | #FFE0CD |
|
|
3240
|
+
| --fui-orange-dark-110 | #FFF9F5 |
|
|
3241
|
+
| --fui-orange-10 | #521D10 |
|
|
3242
|
+
| --fui-orange-20 | #792C14 |
|
|
3243
|
+
| --fui-orange-30 | #A13C16 |
|
|
3244
|
+
| --fui-orange-40 | #CB4E17 |
|
|
3245
|
+
| --fui-orange-50 | #EB6721 |
|
|
3246
|
+
| --fui-orange-60 | #F38744 |
|
|
3247
|
+
| --fui-orange-70 | #F4A368 |
|
|
3248
|
+
| --fui-orange-80 | #F6BC8C |
|
|
3249
|
+
| --fui-orange-90 | #F8D3B0 |
|
|
3250
|
+
| --fui-orange-100 | #FBE8D3 |
|
|
3251
|
+
| --fui-orange-110 | #FEFAF5 |
|
|
3252
|
+
|
|
3253
|
+
### Yellow
|
|
3254
|
+
|
|
3255
|
+
| Token | Value |
|
|
3256
|
+
|-------|-------|
|
|
3257
|
+
| --fui-yellow-10 | #FEFDF0 |
|
|
3258
|
+
| --fui-yellow-20 | #FBF5C0 |
|
|
3259
|
+
| --fui-yellow-30 | #F9E990 |
|
|
3260
|
+
| --fui-yellow-40 | #F8D95F |
|
|
3261
|
+
| --fui-yellow-50 | #F7C62E |
|
|
3262
|
+
| --fui-yellow-60 | #EAAA08 |
|
|
3263
|
+
| --fui-yellow-70 | #C9840A |
|
|
3264
|
+
| --fui-yellow-80 | #A9640B |
|
|
3265
|
+
| --fui-yellow-90 | #89490B |
|
|
3266
|
+
| --fui-yellow-100 | #6B320B |
|
|
3267
|
+
| --fui-yellow-110 | #4D2009 |
|
|
3268
|
+
| --fui-yellow-10 | #4D2009 |
|
|
3269
|
+
| --fui-yellow-20 | #70360B |
|
|
3270
|
+
| --fui-yellow-30 | #95510B |
|
|
3271
|
+
| --fui-yellow-40 | #BA730B |
|
|
3272
|
+
| --fui-yellow-50 | #E19C09 |
|
|
3273
|
+
| --fui-yellow-60 | #FAC515 |
|
|
3274
|
+
| --fui-yellow-70 | #F9D542 |
|
|
3275
|
+
| --fui-yellow-80 | #F9E26F |
|
|
3276
|
+
| --fui-yellow-90 | #FAED9B |
|
|
3277
|
+
| --fui-yellow-100 | #FCF6C6 |
|
|
3278
|
+
| --fui-yellow-110 | #FEFDF0 |
|
|
3279
|
+
|
|
3280
|
+
### Alpha
|
|
3281
|
+
|
|
3282
|
+
| Token | Value |
|
|
3283
|
+
|-------|-------|
|
|
3284
|
+
| --fui-alpha-0 | #1A1A1A00 |
|
|
3285
|
+
| --fui-alpha-20 | #1A1A1A0F |
|
|
3286
|
+
| --fui-alpha-30 | #1A1A1A1A |
|
|
3287
|
+
| --fui-alpha-40 | #1A1A1A33 |
|
|
3288
|
+
| --fui-alpha-50 | #1A1A1A4D |
|
|
3289
|
+
| --fui-alpha-60 | #1A1A1A66 |
|
|
3290
|
+
| --fui-alpha-70 | #1A1A1A80 |
|
|
3291
|
+
| --fui-alpha-80 | #1A1A1A99 |
|
|
3292
|
+
| --fui-alpha-90 | #1A1A1AB3 |
|
|
3293
|
+
| --fui-alpha-100 | #1A1A1AFF |
|
|
3294
|
+
| --fui-alpha-0 | #FFFFFF00 |
|
|
3295
|
+
| --fui-alpha-20 | #FFFFFF0F |
|
|
3296
|
+
| --fui-alpha-30 | #FFFFFF1A |
|
|
3297
|
+
| --fui-alpha-40 | #FFFFFF33 |
|
|
3298
|
+
| --fui-alpha-50 | #FFFFFF4D |
|
|
3299
|
+
| --fui-alpha-60 | #FFFFFF66 |
|
|
3300
|
+
| --fui-alpha-70 | #FFFFFF80 |
|
|
3301
|
+
| --fui-alpha-80 | #FFFFFF99 |
|
|
3302
|
+
| --fui-alpha-90 | #FFFFFFB3 |
|
|
3303
|
+
| --fui-alpha-100 | #FFFFFFFF |
|
|
3304
|
+
|
|
3305
|
+
### Shadow
|
|
3306
|
+
|
|
3307
|
+
| Token | Value |
|
|
3308
|
+
|-------|-------|
|
|
3309
|
+
| --fui-shadow-xs | 0 1px 2px rgba(0, 0, 0, 0.05) |
|
|
3310
|
+
| --fui-shadow-sm | 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04) |
|
|
3311
|
+
| --fui-shadow-md | 0 4px 6px rgba(0, 0, 0, 0.07), 0 2px 4px rgba(0, 0, 0, 0.05) |
|
|
3312
|
+
| --fui-shadow-lg | 0 10px 15px rgba(0, 0, 0, 0.08), 0 4px 6px rgba(0, 0, 0, 0.05) |
|
|
3313
|
+
| --fui-shadow-xl | 0 20px 25px rgba(0, 0, 0, 0.1), 0 10px 10px rgba(0, 0, 0, 0.04) |
|
|
3314
|
+
| --fui-shadow-2xl | 0 25px 50px rgba(0, 0, 0, 0.15) |
|
|
3315
|
+
| --fui-shadow-inner | inset 0 2px 4px rgba(0, 0, 0, 0.05) |
|
|
3316
|
+
| --fui-shadow-xs | 0 1px 2px rgba(0, 0, 0, 0.4) |
|
|
3317
|
+
| --fui-shadow-sm | 0 1px 3px rgba(0, 0, 0, 0.5), 0 1px 2px rgba(0, 0, 0, 0.3) |
|
|
3318
|
+
| --fui-shadow-md | 0 4px 6px rgba(0, 0, 0, 0.5), 0 2px 4px rgba(0, 0, 0, 0.3) |
|
|
3319
|
+
| --fui-shadow-lg | 0 10px 15px rgba(0, 0, 0, 0.55), 0 4px 6px rgba(0, 0, 0, 0.35) |
|
|
3320
|
+
| --fui-shadow-xl | 0 20px 25px rgba(0, 0, 0, 0.6), 0 10px 10px rgba(0, 0, 0, 0.35) |
|
|
3321
|
+
| --fui-shadow-2xl | 0 25px 50px rgba(0, 0, 0, 0.7) |
|
|
3322
|
+
| --fui-shadow-inner | inset 0 2px 4px rgba(0, 0, 0, 0.3) |
|
|
3323
|
+
|
|
3324
|
+
### Bg
|
|
3325
|
+
|
|
3326
|
+
| Token | Value |
|
|
3327
|
+
|-------|-------|
|
|
3328
|
+
| --fui-bg-default | var(--fui-neutral-10) |
|
|
3329
|
+
| --fui-bg-subtle | var(--fui-neutral-20) |
|
|
3330
|
+
| --fui-bg-muted | var(--fui-neutral-30) |
|
|
3331
|
+
| --fui-bg-inverse | var(--fui-neutral-110) |
|
|
3332
|
+
| --fui-bg-primary | var(--fui-primary-10) |
|
|
3333
|
+
| --fui-bg-error | var(--fui-error-20) |
|
|
3334
|
+
| --fui-bg-success | var(--fui-success-20) |
|
|
3335
|
+
| --fui-bg-warning | var(--fui-warning-20) |
|
|
3336
|
+
| --fui-bg-info | var(--fui-info-20) |
|
|
3337
|
+
| --fui-bg-disable | var(--fui-neutral-40) |
|
|
3338
|
+
| --fui-bg-default | var(--fui-neutral-10) |
|
|
3339
|
+
| --fui-bg-subtle | var(--fui-neutral-20) |
|
|
3340
|
+
| --fui-bg-muted | var(--fui-neutral-30) |
|
|
3341
|
+
| --fui-bg-inverse | var(--fui-neutral-110) |
|
|
3342
|
+
| --fui-bg-primary | var(--fui-primary-10) |
|
|
3343
|
+
| --fui-bg-error | var(--fui-error-20) |
|
|
3344
|
+
| --fui-bg-success | var(--fui-success-20) |
|
|
3345
|
+
| --fui-bg-warning | var(--fui-warning-20) |
|
|
3346
|
+
| --fui-bg-info | var(--fui-info-20) |
|
|
3347
|
+
| --fui-bg-disable | var(--fui-neutral-40) |
|
|
3348
|
+
|
|
3349
|
+
### Fill
|
|
3350
|
+
|
|
3351
|
+
| Token | Value |
|
|
3352
|
+
|-------|-------|
|
|
3353
|
+
| --fui-fill-error | var(--fui-error-60) |
|
|
3354
|
+
| --fui-fill-success | var(--fui-success-60) |
|
|
3355
|
+
| --fui-fill-warning | var(--fui-warning-60) |
|
|
3356
|
+
| --fui-fill-info | var(--fui-info-60) |
|
|
3357
|
+
| --fui-fill-error-hover | var(--fui-error-70) |
|
|
3358
|
+
| --fui-fill-success-hover | var(--fui-success-70) |
|
|
3359
|
+
| --fui-fill-warning-hover | var(--fui-warning-70) |
|
|
3360
|
+
| --fui-fill-info-hover | var(--fui-info-70) |
|
|
3361
|
+
| --fui-fill-error | var(--fui-error-60) |
|
|
3362
|
+
| --fui-fill-success | var(--fui-success-60) |
|
|
3363
|
+
| --fui-fill-warning | var(--fui-warning-60) |
|
|
3364
|
+
| --fui-fill-info | var(--fui-info-60) |
|
|
3365
|
+
| --fui-fill-error-hover | var(--fui-error-70) |
|
|
3366
|
+
| --fui-fill-success-hover | var(--fui-success-70) |
|
|
3367
|
+
| --fui-fill-warning-hover | var(--fui-warning-70) |
|
|
3368
|
+
| --fui-fill-info-hover | var(--fui-info-70) |
|
|
3369
|
+
|
|
3370
|
+
### State
|
|
3371
|
+
|
|
3372
|
+
| Token | Value |
|
|
3373
|
+
|-------|-------|
|
|
3374
|
+
| --fui-state-focus-ring | var(--fui-primary-50) |
|
|
3375
|
+
| --fui-state-selected-bg | var(--fui-primary-20) |
|
|
3376
|
+
| --fui-state-selected-fg | var(--fui-primary-80) |
|
|
3377
|
+
| --fui-state-overlay-hover | rgba(17, 21, 27, 0.06) |
|
|
3378
|
+
| --fui-state-overlay-pressed | rgba(17, 21, 27, 0.12) |
|
|
3379
|
+
| --fui-state-focus-ring-width | 2px |
|
|
3380
|
+
| --fui-state-focus-ring-offset | 2px |
|
|
3381
|
+
| --fui-state-disabled-opacity | 0.5 |
|
|
3382
|
+
| --fui-state-focus-ring | var(--fui-primary-50) |
|
|
3383
|
+
| --fui-state-selected-bg | var(--fui-primary-20) |
|
|
3384
|
+
| --fui-state-selected-fg | var(--fui-primary-80) |
|
|
3385
|
+
| --fui-state-overlay-hover | rgba(244, 247, 251, 0.08) |
|
|
3386
|
+
| --fui-state-overlay-pressed | rgba(244, 247, 251, 0.16) |
|
|
3387
|
+
| --fui-state-focus-ring-width | 2px |
|
|
3388
|
+
| --fui-state-focus-ring-offset | 2px |
|
|
3389
|
+
| --fui-state-disabled-opacity | 0.5 |
|
|
3390
|
+
|
|
3391
|
+
### Field
|
|
3392
|
+
|
|
3393
|
+
| Token | Value |
|
|
3394
|
+
|-------|-------|
|
|
3395
|
+
| --fui-field-bg | var(--fui-neutral-10) |
|
|
3396
|
+
| --fui-field-bg-disabled | var(--fui-neutral-20) |
|
|
3397
|
+
| --fui-field-border | var(--fui-neutral-40) |
|
|
3398
|
+
| --fui-field-border-hover | var(--fui-neutral-60) |
|
|
3399
|
+
| --fui-field-border-focus | var(--fui-primary-50) |
|
|
3400
|
+
| --fui-field-border-error | var(--fui-error-60) |
|
|
3401
|
+
| --fui-field-placeholder | var(--fui-neutral-70) |
|
|
3402
|
+
| --fui-field-bg | var(--fui-neutral-10) |
|
|
3403
|
+
| --fui-field-bg-disabled | var(--fui-neutral-20) |
|
|
3404
|
+
| --fui-field-border | var(--fui-neutral-40) |
|
|
3405
|
+
| --fui-field-border-hover | var(--fui-neutral-60) |
|
|
3406
|
+
| --fui-field-border-focus | var(--fui-primary-60) |
|
|
3407
|
+
| --fui-field-border-error | var(--fui-error-60) |
|
|
3408
|
+
| --fui-field-placeholder | var(--fui-neutral-70) |
|
|
1534
3409
|
|
|
1535
3410
|
### Card
|
|
1536
3411
|
|
|
1537
3412
|
| Token | Value |
|
|
1538
3413
|
|-------|-------|
|
|
1539
|
-
| --fui-card-padding | var(--fui-spacing-
|
|
1540
|
-
| --fui-card-shadow |
|
|
1541
|
-
| --fui-card-shadow-hover |
|
|
1542
|
-
| --fui-card-border-radius | var(--fui-
|
|
3414
|
+
| --fui-card-padding | var(--fui-spacing-7) |
|
|
3415
|
+
| --fui-card-shadow | var(--fui-shadow-sm) |
|
|
3416
|
+
| --fui-card-shadow-hover | var(--fui-shadow-lg) |
|
|
3417
|
+
| --fui-card-border-radius | var(--fui-radius-xl) |
|
|
3418
|
+
| --fui-card-padding | var(--fui-spacing-9) |
|
|
3419
|
+
| --fui-card-shadow | var(--fui-shadow-sm) |
|
|
3420
|
+
| --fui-card-shadow-hover | var(--fui-shadow-lg) |
|
|
3421
|
+
| --fui-card-border-radius | var(--fui-radius-md) |
|