@igne-agency/react-web-ui 0.3.1 → 0.4.0
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/README.md +32 -1
- package/dist/components/accordion/accordion.css +24 -19
- package/dist/components/accordion/accordion.d.ts +19 -3
- package/dist/components/accordion/accordion.js +86 -32
- package/dist/components/accordion/accordion.module.js +8 -8
- package/dist/components/active-filters/active-filter-describers.d.ts +1 -1
- package/dist/components/active-filters/active-filter-describers.js +1 -1
- package/dist/components/active-filters/active-filters.d.ts +35 -2
- package/dist/components/active-filters/active-filters.js +57 -52
- package/dist/components/active-filters/index.js +2 -2
- package/dist/components/attachment-tile/attachment-preview.d.ts +11 -9
- package/dist/components/attachment-tile/attachment-preview.js +102 -68
- package/dist/components/attachment-tile/attachment-tile.css +22 -13
- package/dist/components/attachment-tile/attachment-tile.d.ts +51 -6
- package/dist/components/attachment-tile/attachment-tile.js +209 -85
- package/dist/components/attachment-tile/attachment-tile.module.js +10 -10
- package/dist/components/attachment-tile/index.d.ts +1 -1
- package/dist/components/attachment-tile/index.js +2 -2
- package/dist/components/avatar/avatar.d.ts +5 -5
- package/dist/components/avatar/avatar.js +64 -37
- package/dist/components/avatar-group/avatar-group.js +2 -2
- package/dist/components/badge/badge.js +1 -1
- package/dist/components/breadcrumbs/breadcrumbs.d.ts +22 -7
- package/dist/components/breadcrumbs/breadcrumbs.js +189 -170
- package/dist/components/button/button.d.ts +2 -3
- package/dist/components/button/button.js +58 -77
- package/dist/components/button/close-button.d.ts +4 -2
- package/dist/components/button/close-button.js +9 -9
- package/dist/components/checkbox-field/checkbox-field.d.ts +17 -3
- package/dist/components/checkbox-field/checkbox-field.js +108 -131
- package/dist/components/checkbox-field/checkbox.css +26 -34
- package/dist/components/checkbox-field/checkbox.d.ts +51 -8
- package/dist/components/checkbox-field/checkbox.js +221 -57
- package/dist/components/checkbox-field/checkbox.module.js +6 -8
- package/dist/components/checkbox-field/index.d.ts +0 -1
- package/dist/components/checkbox-field/index.js +1 -2
- package/dist/components/checkbox-field/tsf-checkbox-field.d.ts +2 -2
- package/dist/components/checkbox-group-field/checkbox-group-field.d.ts +4 -1
- package/dist/components/checkbox-group-field/checkbox-group-field.js +54 -50
- package/dist/components/checkbox-group-field/checkbox-group.d.ts +7 -2
- package/dist/components/checkbox-group-field/checkbox-group.js +8 -3
- package/dist/components/collapsible/collapsible.css +23 -18
- package/dist/components/collapsible/collapsible.d.ts +18 -3
- package/dist/components/collapsible/collapsible.js +85 -32
- package/dist/components/collapsible/collapsible.module.js +7 -7
- package/dist/components/combobox-field/combobox-field.d.ts +9 -1
- package/dist/components/combobox-field/combobox-field.js +195 -175
- package/dist/components/combobox-field/combobox-items.d.ts +2 -2
- package/dist/components/combobox-field/combobox-items.js +4 -4
- package/dist/components/combobox-field/combobox.css +99 -96
- package/dist/components/combobox-field/combobox.d.ts +94 -15
- package/dist/components/combobox-field/combobox.js +484 -159
- package/dist/components/combobox-field/combobox.module.js +21 -21
- package/dist/components/combobox-field/index.d.ts +0 -1
- package/dist/components/combobox-field/selection.d.ts +4 -1
- package/dist/components/combobox-field/value-state-view.css +7 -3
- package/dist/components/combobox-field/value-state-view.d.ts +4 -2
- package/dist/components/combobox-field/value-state-view.js +15 -15
- package/dist/components/combobox-field/value-state-view.module.js +6 -4
- package/dist/components/composer/composer-attachments.d.ts +11 -3
- package/dist/components/composer/composer-attachments.js +61 -47
- package/dist/components/composer/composer-editor.d.ts +2 -1
- package/dist/components/composer/composer-editor.js +79 -71
- package/dist/components/composer/composer-mentions.js +2 -2
- package/dist/components/composer/composer.d.ts +42 -21
- package/dist/components/composer/composer.js +201 -58
- package/dist/components/composer/mention-text.js +3 -3
- package/dist/components/confirm-dialog/confirm-dialog.d.ts +8 -7
- package/dist/components/confirm-dialog/confirm-dialog.js +10 -9
- package/dist/components/conversation/conversation.context.d.ts +0 -5
- package/dist/components/conversation/conversation.d.ts +63 -29
- package/dist/components/conversation/conversation.js +193 -82
- package/dist/components/conversation/index.d.ts +1 -1
- package/dist/components/date-field/date-field.d.ts +10 -4
- package/dist/components/date-field/date-field.js +57 -43
- package/dist/components/date-field/date-input.d.ts +20 -3
- package/dist/components/date-field/date-input.js +28 -13
- package/dist/components/date-field/index.d.ts +1 -1
- package/dist/components/date-field/tsf-date-field.d.ts +1 -1
- package/dist/components/date-field/tsf-date-field.js +1 -1
- package/dist/components/date-range-field/date-range-field.d.ts +8 -4
- package/dist/components/date-range-field/date-range-field.js +57 -45
- package/dist/components/date-range-field/date-range-input.d.ts +20 -3
- package/dist/components/date-range-field/date-range-input.js +27 -12
- package/dist/components/date-range-field/tsf-date-range-field.d.ts +1 -1
- package/dist/components/date-range-field/tsf-date-range-field.js +1 -1
- package/dist/components/detail-list/detail-list.d.ts +28 -27
- package/dist/components/detail-list/detail-list.js +177 -121
- package/dist/components/dialog/dialog.d.ts +47 -27
- package/dist/components/dialog/dialog.js +101 -38
- package/dist/components/divider/divider.js +1 -1
- package/dist/components/drawer/drawer.d.ts +48 -30
- package/dist/components/drawer/drawer.js +113 -41
- package/dist/components/email-field/email-field.d.ts +5 -3
- package/dist/components/email-field/email-field.js +1 -3
- package/dist/components/email-field/tsf-email-field.d.ts +3 -2
- package/dist/components/empty-message/empty-message.d.ts +3 -3
- package/dist/components/empty-message/empty-message.js +3 -3
- package/dist/components/error-boundary/error-boundary.d.ts +5 -2
- package/dist/components/error-boundary/error-boundary.js +2 -3
- package/dist/components/error-message/error-message.d.ts +1 -1
- package/dist/components/error-message/error-message.js +1 -1
- package/dist/components/error-text/error-text.js +3 -3
- package/dist/components/field/field.d.ts +5 -5
- package/dist/components/field/field.js +9 -9
- package/dist/components/field/index.js +2 -2
- package/dist/components/field/input-parts.js +1 -1
- package/dist/components/field-placeholder/field-placeholder.d.ts +4 -1
- package/dist/components/field-placeholder/field-placeholder.js +41 -26
- package/dist/components/fieldset/field-group.js +1 -1
- package/dist/components/fieldset/fieldset-root.js +1 -1
- package/dist/components/fieldset/fieldset.js +1 -1
- package/dist/components/file-field/file-field.css +19 -15
- package/dist/components/file-field/file-field.d.ts +10 -1
- package/dist/components/file-field/file-field.js +130 -109
- package/dist/components/file-field/file-field.module.js +6 -4
- package/dist/components/file-field/file-input.d.ts +32 -9
- package/dist/components/file-field/file-input.js +94 -74
- package/dist/components/filter-bar/filter-bar.d.ts +79 -51
- package/dist/components/filter-bar/filter-bar.js +552 -216
- package/dist/components/form/form.d.ts +4 -6
- package/dist/components/form/form.js +6 -8
- package/dist/components/icon/icon.d.ts +5 -10
- package/dist/components/icon/icon.js +4 -6
- package/dist/components/link/link.js +1 -1
- package/dist/components/link-button/link-button.d.ts +1 -2
- package/dist/components/link-button/link-button.js +12 -22
- package/dist/components/loading-message/loading-message.d.ts +2 -2
- package/dist/components/loading-message/loading-message.js +1 -1
- package/dist/components/locale-provider/locale-provider.js +1 -1
- package/dist/components/menu/menu.d.ts +40 -22
- package/dist/components/menu/menu.js +100 -40
- package/dist/components/nav/nav-context.d.ts +0 -1
- package/dist/components/nav/nav-context.js +1 -2
- package/dist/components/nav/nav-item-view.d.ts +7 -7
- package/dist/components/nav/nav-item-view.js +27 -51
- package/dist/components/nav/nav.css +72 -60
- package/dist/components/nav/nav.d.ts +15 -8
- package/dist/components/nav/nav.js +105 -52
- package/dist/components/nav/nav.module.js +14 -14
- package/dist/components/number-field/number-field.d.ts +7 -1
- package/dist/components/number-field/number-field.js +98 -82
- package/dist/components/number-field/number-input.d.ts +53 -4
- package/dist/components/number-field/number-input.js +68 -21
- package/dist/components/number-field/tsf-number-field.d.ts +1 -1
- package/dist/components/number-field/tsf-number-field.js +1 -1
- package/dist/components/otp-field/otp-input.d.ts +25 -0
- package/dist/components/otp-field/otp-input.js +26 -1
- package/dist/components/pagination/pagination.d.ts +82 -23
- package/dist/components/pagination/pagination.js +656 -229
- package/dist/components/password-field/password-field.d.ts +7 -1
- package/dist/components/password-field/password-field.js +117 -126
- package/dist/components/password-field/password-strength.js +1 -1
- package/dist/components/password-field/tsf-password-field.d.ts +1 -1
- package/dist/components/password-field/tsf-password-field.js +1 -1
- package/dist/components/photo-field/photo-field.d.ts +17 -3
- package/dist/components/photo-field/photo-field.js +168 -89
- package/dist/components/photo-field/photo-input-context.d.ts +25 -0
- package/dist/components/photo-field/photo-input-context.js +14 -0
- package/dist/components/photo-field/photo-input.d.ts +58 -23
- package/dist/components/photo-field/photo-input.js +459 -261
- package/dist/components/popover/popover.d.ts +55 -23
- package/dist/components/popover/popover.js +205 -61
- package/dist/components/radio-group-field/radio-group.js +1 -1
- package/dist/components/search-field/search-field.d.ts +7 -5
- package/dist/components/search-field/search-field.js +4 -6
- package/dist/components/search-field/tsf-search-field.d.ts +1 -1
- package/dist/components/search-field/tsf-search-field.js +1 -1
- package/dist/components/segmented-control-field/segmented-control.js +1 -1
- package/dist/components/select-field/select-field.d.ts +7 -1
- package/dist/components/select-field/select-field.js +151 -139
- package/dist/components/select-field/select.d.ts +28 -6
- package/dist/components/select-field/select.js +234 -149
- package/dist/components/skeleton/skeleton.js +1 -1
- package/dist/components/spinner/spinner.css +47 -1
- package/dist/components/spinner/spinner.js +28 -11
- package/dist/components/spinner/spinner.module.js +18 -3
- package/dist/components/stale/stale.d.ts +17 -21
- package/dist/components/stale/stale.js +307 -129
- package/dist/components/status-message/status-message.css +22 -21
- package/dist/components/status-message/status-message.d.ts +10 -5
- package/dist/components/status-message/status-message.js +20 -24
- package/dist/components/status-message/status-message.module.js +6 -6
- package/dist/components/status-message/status-preset.d.ts +4 -5
- package/dist/components/status-message/status-preset.js +3 -3
- package/dist/components/switch-field/switch.js +1 -1
- package/dist/components/tabs/tabs.d.ts +51 -28
- package/dist/components/tabs/tabs.js +219 -144
- package/dist/components/tag/tag.css +23 -21
- package/dist/components/tag/tag.d.ts +17 -15
- package/dist/components/tag/tag.js +140 -65
- package/dist/components/tag/tag.module.js +3 -3
- package/dist/components/tag-group/tag-group.css +30 -27
- package/dist/components/tag-group/tag-group.d.ts +10 -4
- package/dist/components/tag-group/tag-group.js +47 -35
- package/dist/components/tag-group/tag-group.module.js +4 -4
- package/dist/components/text-field/text-field.d.ts +14 -3
- package/dist/components/text-field/text-field.js +154 -133
- package/dist/components/text-field/text-input.d.ts +89 -3
- package/dist/components/text-field/text-input.js +184 -70
- package/dist/components/textarea-field/textarea.js +1 -1
- package/dist/components/time-field/time-input.d.ts +6 -0
- package/dist/components/time-field/time-input.js +6 -0
- package/dist/components/time-zone-provider/time-zone-provider.js +1 -1
- package/dist/components/toast/index.js +2 -2
- package/dist/components/toast/toast-provider.css +38 -34
- package/dist/components/toast/toast-provider.d.ts +65 -3
- package/dist/components/toast/toast-provider.js +313 -148
- package/dist/components/toast/toast-provider.module.js +11 -17
- package/dist/components/toast/toast.d.ts +5 -1
- package/dist/components/toast/toast.js +2 -1
- package/dist/components/toggle-group-field/toggle-group.js +1 -1
- package/dist/components/tooltip/tooltip.d.ts +6 -6
- package/dist/components/tooltip/tooltip.js +7 -7
- package/dist/data-table/data-table-content.d.ts +18 -10
- package/dist/data-table/data-table-content.js +145 -290
- package/dist/data-table/data-table-context.d.ts +4 -2
- package/dist/data-table/data-table-context.js +1 -1
- package/dist/data-table/data-table-parts.d.ts +99 -0
- package/dist/data-table/data-table-parts.js +1182 -0
- package/dist/data-table/data-table-selection.d.ts +7 -3
- package/dist/data-table/data-table-selection.js +62 -37
- package/dist/data-table/data-table.css +100 -95
- package/dist/data-table/data-table.d.ts +49 -25
- package/dist/data-table/data-table.js +95 -83
- package/dist/data-table/data-table.module.js +34 -34
- package/dist/data-table/index.d.ts +2 -1
- package/dist/data-table/index.js +2 -1
- package/dist/data-view/use-data-view.d.ts +2 -2
- package/dist/data-view/use-data-view.js +2 -2
- package/dist/index.js +7 -8
- package/dist/lib/calendar/calendar-navigation.d.ts +9 -2
- package/dist/lib/calendar/calendar-navigation.js +72 -73
- package/dist/lib/calendar/calendar-year.d.ts +4 -3
- package/dist/lib/calendar/calendar-year.js +137 -156
- package/dist/lib/calendar/temporal.d.ts +18 -12
- package/dist/lib/calendar/temporal.js +191 -147
- package/dist/lib/table-storage.d.ts +2 -2
- package/dist/lib/table-storage.js +2 -2
- package/dist/lib/unsaved-changes/leave-guard.js +1 -1
- package/dist/terrazzo/index.d.ts +16 -0
- package/dist/terrazzo/index.js +94 -2
- package/dist/tokens.css +71 -69
- package/package.json +3 -2
- package/tokens/ref.tokens.json +0 -30
- package/tokens/sys.tokens.json +0 -7
- package/dist/assets/spinner.js +0 -28
- package/dist/components/checkbox-field/checkbox-glyph.d.ts +0 -12
- package/dist/components/checkbox-field/checkbox-glyph.js +0 -38
- package/dist/components/combobox-field/combobox-popup-body.d.ts +0 -34
- package/dist/components/combobox-field/combobox-popup-body.js +0 -142
- package/dist/components/conversation/conversation.context.js +0 -4
- package/dist/vendor/@material-design-icons/svg/outlined/add.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/arrow_downward.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/arrow_forward.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/arrow_upward.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/attach_file.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/block.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/calendar_today.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/check.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/check_circle.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/chevron_left.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/chevron_right.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/close.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/content_copy.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/date_range.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/description.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/download.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/error.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/error_outline.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/expand_less.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/expand_more.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/filter_alt.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/filter_alt_off.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/first_page.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/info.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/keyboard_arrow_down.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/last_page.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/mail.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/more_horiz.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/photo_camera.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/remove.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/restart_alt.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/restore.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/search.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/unfold_more.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/upload_file.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/visibility.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/visibility_off.js +0 -12
- package/dist/vendor/@material-design-icons/svg/outlined/warning_amber.js +0 -12
package/README.md
CHANGED
|
@@ -100,10 +100,39 @@ export default defineConfig({
|
|
|
100
100
|
});
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
-
The resolver needs a `theme` modifier with `light` and `dark` contexts. Like the kit's own `tokens.css`, the file the preset writes opens with the kit's layer order and keeps every rule in `kit.base`, so an unlayered override in the app still wins. The preset names every token by its path with dots as hyphens (`sys.color.primary` becomes `--sys-color-primary`), and writes a shadow tagged `$extensions["nl.igne.css"].property: "filter"` as `drop-shadow()` filters.
|
|
103
|
+
The resolver needs a `theme` modifier with `light` and `dark` contexts. Like the kit's own `tokens.css`, the file the preset writes opens with the kit's layer order and keeps every rule in `kit.base`, so an unlayered override in the app still wins. The preset names every token by its path with dots as hyphens (`sys.color.primary` becomes `--sys-color-primary`), and writes a shadow tagged `$extensions["nl.igne.css"].property: "filter"` as `drop-shadow()` filters. Typography tokens name no family, so the preset narrows Terrazzo's `core/valid-typography` rule to `fontSize`, `fontWeight` and `lineHeight`.
|
|
104
|
+
|
|
105
|
+
### Typeface
|
|
106
|
+
|
|
107
|
+
The kit names no typeface and loads no font. Every type role reads its family from one of two custom properties: `--sys-font-family-heading` for headings and `--sys-font-family-body` for everything else. The body family defaults to `system-ui, sans-serif`, and the heading family follows the body family. To use a typeface, load it the way the app loads any font, then name it on `:root` in unlayered CSS:
|
|
108
|
+
|
|
109
|
+
```css
|
|
110
|
+
:root {
|
|
111
|
+
--sys-font-family-body: "Inter", system-ui, sans-serif;
|
|
112
|
+
--sys-font-family-heading:
|
|
113
|
+
"Satoshi", system-ui, sans-serif;
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
This works the same over the kit's `tokens.css` and over a theme the preset builds.
|
|
104
118
|
|
|
105
119
|
The kit owns no breakpoints and no gutters; those are the app's layout.
|
|
106
120
|
|
|
121
|
+
## Icons
|
|
122
|
+
|
|
123
|
+
The kit renders no icons and depends on no icon set. Wherever a component shows one, it leaves a slot the app fills from its own set: a part's children, or, on a ready-made component, a prop named for the icon's job (`icon`, `closeIcon`, `expandIcon`). The slot sizes the glyph to its text and colours it, so an SVG drawn at `1em` in `currentColor` fits as is. A slot is required only where the icon is all the control shows, such as a close button's cross; anywhere else, left out, nothing renders.
|
|
124
|
+
|
|
125
|
+
```tsx
|
|
126
|
+
import ExpandMoreIcon from "@material-design-icons/svg/outlined/expand_more.svg?react";
|
|
127
|
+
import { Select } from "@igne-agency/react-web-ui/select-field";
|
|
128
|
+
|
|
129
|
+
<Select.Icon>
|
|
130
|
+
<ExpandMoreIcon />
|
|
131
|
+
</Select.Icon>;
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
`Icon`, from `./icon`, sizes and labels any SVG component: `label=""` hides a glyph that stands beside its word, and a label names one that stands alone.
|
|
135
|
+
|
|
107
136
|
## Providers
|
|
108
137
|
|
|
109
138
|
The kit has no catch-all provider. Wrap the app in the ones it uses:
|
|
@@ -113,6 +142,7 @@ import { LocaleProvider } from "@igne-agency/react-web-ui/locale-provider";
|
|
|
113
142
|
import { TimeZoneProvider } from "@igne-agency/react-web-ui/time-zone-provider";
|
|
114
143
|
import { ToastProvider } from "@igne-agency/react-web-ui/toast";
|
|
115
144
|
import { Tooltip } from "@igne-agency/react-web-ui/tooltip";
|
|
145
|
+
import CloseIcon from "./icons/close.svg?react";
|
|
116
146
|
|
|
117
147
|
export const Providers = ({
|
|
118
148
|
children,
|
|
@@ -122,6 +152,7 @@ export const Providers = ({
|
|
|
122
152
|
<Tooltip.Provider>
|
|
123
153
|
<ToastProvider
|
|
124
154
|
closeLabel="Close"
|
|
155
|
+
closeIcon={<CloseIcon />}
|
|
125
156
|
viewportLabel="Notifications">
|
|
126
157
|
{children}
|
|
127
158
|
</ToastProvider>
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
@layer kit.reset, kit.base, kit.components;
|
|
2
2
|
@layer kit.components {
|
|
3
|
-
.
|
|
3
|
+
._root_1qlrq_3 {
|
|
4
4
|
display: flex;
|
|
5
5
|
flex-direction: column;
|
|
6
6
|
gap: var(--accordion-gap, var(--sys-unit-2));
|
|
7
7
|
}
|
|
8
|
-
.
|
|
8
|
+
._item_1qlrq_8 {
|
|
9
9
|
display: flex;
|
|
10
10
|
flex-direction: column;
|
|
11
11
|
}
|
|
12
|
-
.
|
|
12
|
+
._trigger_1qlrq_12 {
|
|
13
13
|
display: flex;
|
|
14
14
|
align-items: center;
|
|
15
15
|
justify-content: space-between;
|
|
@@ -25,18 +25,18 @@
|
|
|
25
25
|
text-align: start;
|
|
26
26
|
cursor: pointer;
|
|
27
27
|
}
|
|
28
|
-
.
|
|
28
|
+
._trigger_1qlrq_12 {
|
|
29
29
|
outline: 0 solid var(--sys-color-focus-ring);
|
|
30
30
|
outline-offset: var(--sys-focus-ring-offset);
|
|
31
31
|
}
|
|
32
|
-
.
|
|
32
|
+
._trigger_1qlrq_12:focus-visible {
|
|
33
33
|
outline-width: var(--sys-focus-ring-width);
|
|
34
34
|
}
|
|
35
|
-
.
|
|
35
|
+
._trigger_1qlrq_12 {
|
|
36
36
|
position: relative;
|
|
37
37
|
isolation: isolate;
|
|
38
38
|
}
|
|
39
|
-
.
|
|
39
|
+
._trigger_1qlrq_12::after {
|
|
40
40
|
content: "";
|
|
41
41
|
position: absolute;
|
|
42
42
|
z-index: -1;
|
|
@@ -47,47 +47,52 @@
|
|
|
47
47
|
pointer-events: none;
|
|
48
48
|
}
|
|
49
49
|
@media not (prefers-reduced-motion) {
|
|
50
|
-
.
|
|
50
|
+
._trigger_1qlrq_12::after {
|
|
51
51
|
transition: opacity var(--sys-motion-instant) var(--sys-motion-standard);
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
.
|
|
54
|
+
._trigger_1qlrq_12:hover:not(:disabled, [data-disabled])::after {
|
|
55
55
|
opacity: var(--sys-state-hover);
|
|
56
56
|
}
|
|
57
|
-
.
|
|
57
|
+
._trigger_1qlrq_12:active:not(:disabled, [data-disabled])::after {
|
|
58
58
|
opacity: var(--sys-state-pressed);
|
|
59
59
|
}
|
|
60
|
-
.
|
|
60
|
+
._trigger_1qlrq_12[data-disabled] {
|
|
61
61
|
color: var(--sys-color-disabled-fg);
|
|
62
62
|
cursor: not-allowed;
|
|
63
63
|
}
|
|
64
|
-
.
|
|
64
|
+
._indicator_1qlrq_64 {
|
|
65
65
|
flex-shrink: 0;
|
|
66
66
|
}
|
|
67
67
|
@media not (prefers-reduced-motion) {
|
|
68
|
-
.
|
|
68
|
+
._indicator_1qlrq_64 {
|
|
69
69
|
transition: rotate var(--sys-motion-short) var(--sys-motion-standard);
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
[data-panel-open] > .
|
|
72
|
+
[data-panel-open] > ._indicator_1qlrq_64 {
|
|
73
73
|
rotate: 180deg;
|
|
74
74
|
}
|
|
75
|
-
.
|
|
75
|
+
._indicator_1qlrq_64 {
|
|
76
|
+
display: inline-flex;
|
|
77
|
+
color: var(--accordion-indicator-fg, currentcolor);
|
|
78
|
+
font-size: var(--accordion-indicator-size, 1.5em);
|
|
79
|
+
}
|
|
80
|
+
._panel_1qlrq_80 {
|
|
76
81
|
overflow: hidden;
|
|
77
82
|
}
|
|
78
|
-
.
|
|
83
|
+
._panel_1qlrq_80[hidden]:not([hidden=until-found]) {
|
|
79
84
|
display: none;
|
|
80
85
|
}
|
|
81
86
|
@media not (prefers-reduced-motion) {
|
|
82
|
-
.
|
|
87
|
+
._panel_1qlrq_80 {
|
|
83
88
|
block-size: var(--accordion-panel-height);
|
|
84
89
|
transition: block-size var(--sys-motion-short) var(--sys-motion-standard);
|
|
85
90
|
}
|
|
86
|
-
.
|
|
91
|
+
._panel_1qlrq_80[data-starting-style], ._panel_1qlrq_80[data-ending-style] {
|
|
87
92
|
block-size: 0;
|
|
88
93
|
}
|
|
89
94
|
}
|
|
90
|
-
.
|
|
95
|
+
._content_1qlrq_95 {
|
|
91
96
|
padding: var(--accordion-pad-y, var(--sys-unit-4)) var(--accordion-pad-x, var(--sys-unit-6));
|
|
92
97
|
}
|
|
93
98
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Accordion as BaseAccordion } from "@base-ui/react/accordion";
|
|
2
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
2
3
|
import type { ReactNode } from "react";
|
|
3
4
|
export type AccordionRootProps = Omit<BaseAccordion.Root.Props<string>, "className"> & Readonly<{
|
|
4
5
|
className?: string;
|
|
@@ -10,21 +11,33 @@ export type AccordionItemProps = Omit<BaseAccordion.Item.Props, "className" | "v
|
|
|
10
11
|
}>;
|
|
11
12
|
export type AccordionTriggerProps = Omit<BaseAccordion.Trigger.Props, "className" | "children"> & Readonly<{
|
|
12
13
|
className?: string;
|
|
13
|
-
/**
|
|
14
|
+
/** The label naming what the item's panel holds, then an `Accordion.Indicator`. */
|
|
14
15
|
children: ReactNode;
|
|
15
16
|
}>;
|
|
17
|
+
export type AccordionIndicatorProps = useRender.ComponentProps<"span">;
|
|
16
18
|
export type AccordionPanelProps = Omit<BaseAccordion.Panel.Props, "className"> & Readonly<{
|
|
17
19
|
className?: string;
|
|
18
20
|
}>;
|
|
21
|
+
/** The stack of items. */
|
|
19
22
|
declare const Root: ({ className, ...props }: AccordionRootProps) => ReactNode;
|
|
23
|
+
/** One item: its header and its panel. */
|
|
20
24
|
declare const Item: ({ className, ...props }: AccordionItemProps) => ReactNode;
|
|
21
|
-
|
|
25
|
+
/** The button that folds the item's panel open and shut, inside its `Header`. */
|
|
26
|
+
declare const Trigger: ({ className, ...props }: AccordionTriggerProps) => ReactNode;
|
|
27
|
+
/**
|
|
28
|
+
* The trigger's open-state glyph, such as the app's chevron, turned over while
|
|
29
|
+
* the panel is open. Put it last in the `Trigger`; without children it renders
|
|
30
|
+
* nothing.
|
|
31
|
+
*/
|
|
32
|
+
declare const Indicator: ({ render, className, children, ref, ...props }: AccordionIndicatorProps) => ReactNode;
|
|
33
|
+
/** What the item holds, folding along its height. */
|
|
22
34
|
declare const Panel: ({ className, children, ...props }: AccordionPanelProps) => ReactNode;
|
|
23
35
|
type AccordionNamespace = Readonly<{
|
|
24
36
|
Root: typeof Root;
|
|
25
37
|
Item: typeof Item;
|
|
26
38
|
Header: typeof BaseAccordion.Header;
|
|
27
39
|
Trigger: typeof Trigger;
|
|
40
|
+
Indicator: typeof Indicator;
|
|
28
41
|
Panel: typeof Panel;
|
|
29
42
|
}>;
|
|
30
43
|
/**
|
|
@@ -36,7 +49,10 @@ type AccordionNamespace = Readonly<{
|
|
|
36
49
|
* <Accordion.Root>
|
|
37
50
|
* <Accordion.Item value="fees">
|
|
38
51
|
* <Accordion.Header>
|
|
39
|
-
* <Accordion.Trigger>
|
|
52
|
+
* <Accordion.Trigger>
|
|
53
|
+
* Fees
|
|
54
|
+
* <Accordion.Indicator><ChevronIcon /></Accordion.Indicator>
|
|
55
|
+
* </Accordion.Trigger>
|
|
40
56
|
* </Accordion.Header>
|
|
41
57
|
* <Accordion.Panel>{fees}</Accordion.Panel>
|
|
42
58
|
* </Accordion.Item>
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import SvgExpandMore from "../../vendor/@material-design-icons/svg/outlined/expand_more.js";
|
|
2
|
-
import { Icon } from "../icon/icon.js";
|
|
3
1
|
import accordion_module_default from "./accordion.module.js";
|
|
4
2
|
import { c } from "react/compiler-runtime";
|
|
5
3
|
import { Accordion } from "@base-ui/react/accordion";
|
|
6
|
-
import {
|
|
4
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
7
5
|
import { clsx } from "clsx";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
7
|
// src/components/accordion/accordion.tsx
|
|
8
|
+
/** The stack of items. */
|
|
9
9
|
var Root = (t0) => {
|
|
10
10
|
const $ = c(8);
|
|
11
11
|
let className;
|
|
@@ -37,6 +37,7 @@ var Root = (t0) => {
|
|
|
37
37
|
} else t2 = $[7];
|
|
38
38
|
return t2;
|
|
39
39
|
};
|
|
40
|
+
/** One item: its header and its panel. */
|
|
40
41
|
var Item = (t0) => {
|
|
41
42
|
const $ = c(8);
|
|
42
43
|
let className;
|
|
@@ -68,52 +69,101 @@ var Item = (t0) => {
|
|
|
68
69
|
} else t2 = $[7];
|
|
69
70
|
return t2;
|
|
70
71
|
};
|
|
72
|
+
/** The button that folds the item's panel open and shut, inside its `Header`. */
|
|
71
73
|
var Trigger = (t0) => {
|
|
72
|
-
const $ = c(
|
|
74
|
+
const $ = c(8);
|
|
75
|
+
let className;
|
|
76
|
+
let props;
|
|
77
|
+
if ($[0] !== t0) {
|
|
78
|
+
({className, ...props} = t0);
|
|
79
|
+
$[0] = t0;
|
|
80
|
+
$[1] = className;
|
|
81
|
+
$[2] = props;
|
|
82
|
+
} else {
|
|
83
|
+
className = $[1];
|
|
84
|
+
props = $[2];
|
|
85
|
+
}
|
|
86
|
+
let t1;
|
|
87
|
+
if ($[3] !== className) {
|
|
88
|
+
t1 = clsx(accordion_module_default.trigger, className);
|
|
89
|
+
$[3] = className;
|
|
90
|
+
$[4] = t1;
|
|
91
|
+
} else t1 = $[4];
|
|
92
|
+
let t2;
|
|
93
|
+
if ($[5] !== props || $[6] !== t1) {
|
|
94
|
+
t2 = /* @__PURE__ */ jsx(Accordion.Trigger, {
|
|
95
|
+
className: t1,
|
|
96
|
+
...props
|
|
97
|
+
});
|
|
98
|
+
$[5] = props;
|
|
99
|
+
$[6] = t1;
|
|
100
|
+
$[7] = t2;
|
|
101
|
+
} else t2 = $[7];
|
|
102
|
+
return t2;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* The trigger's open-state glyph, such as the app's chevron, turned over while
|
|
106
|
+
* the panel is open. Put it last in the `Trigger`; without children it renders
|
|
107
|
+
* nothing.
|
|
108
|
+
*/
|
|
109
|
+
var Indicator = (t0) => {
|
|
110
|
+
const $ = c(16);
|
|
73
111
|
let children;
|
|
74
112
|
let className;
|
|
75
113
|
let props;
|
|
114
|
+
let ref;
|
|
115
|
+
let render;
|
|
76
116
|
if ($[0] !== t0) {
|
|
77
|
-
({className, children, ...props} = t0);
|
|
117
|
+
({render, className, children, ref, ...props} = t0);
|
|
78
118
|
$[0] = t0;
|
|
79
119
|
$[1] = children;
|
|
80
120
|
$[2] = className;
|
|
81
121
|
$[3] = props;
|
|
122
|
+
$[4] = ref;
|
|
123
|
+
$[5] = render;
|
|
82
124
|
} else {
|
|
83
125
|
children = $[1];
|
|
84
126
|
className = $[2];
|
|
85
127
|
props = $[3];
|
|
128
|
+
ref = $[4];
|
|
129
|
+
render = $[5];
|
|
86
130
|
}
|
|
87
131
|
let t1;
|
|
88
|
-
if ($[
|
|
89
|
-
t1 = clsx(accordion_module_default.
|
|
90
|
-
$[
|
|
91
|
-
$[
|
|
92
|
-
} else t1 = $[
|
|
132
|
+
if ($[6] !== className) {
|
|
133
|
+
t1 = clsx(accordion_module_default.indicator, className);
|
|
134
|
+
$[6] = className;
|
|
135
|
+
$[7] = t1;
|
|
136
|
+
} else t1 = $[7];
|
|
93
137
|
let t2;
|
|
94
|
-
if ($[
|
|
95
|
-
t2 =
|
|
96
|
-
|
|
97
|
-
label: "",
|
|
98
|
-
size: 1.5,
|
|
99
|
-
className: accordion_module_default.chevron
|
|
100
|
-
});
|
|
101
|
-
$[6] = t2;
|
|
102
|
-
} else t2 = $[6];
|
|
103
|
-
let t3;
|
|
104
|
-
if ($[7] !== children || $[8] !== props || $[9] !== t1) {
|
|
105
|
-
t3 = /* @__PURE__ */ jsxs(Accordion.Trigger, {
|
|
106
|
-
className: t1,
|
|
138
|
+
if ($[8] !== children || $[9] !== props || $[10] !== t1) {
|
|
139
|
+
t2 = {
|
|
140
|
+
"aria-hidden": true,
|
|
107
141
|
...props,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
$[8] =
|
|
112
|
-
$[9] =
|
|
113
|
-
$[10] =
|
|
114
|
-
|
|
115
|
-
|
|
142
|
+
className: t1,
|
|
143
|
+
children
|
|
144
|
+
};
|
|
145
|
+
$[8] = children;
|
|
146
|
+
$[9] = props;
|
|
147
|
+
$[10] = t1;
|
|
148
|
+
$[11] = t2;
|
|
149
|
+
} else t2 = $[11];
|
|
150
|
+
let t3;
|
|
151
|
+
if ($[12] !== ref || $[13] !== render || $[14] !== t2) {
|
|
152
|
+
t3 = {
|
|
153
|
+
defaultTagName: "span",
|
|
154
|
+
render,
|
|
155
|
+
ref,
|
|
156
|
+
props: t2
|
|
157
|
+
};
|
|
158
|
+
$[12] = ref;
|
|
159
|
+
$[13] = render;
|
|
160
|
+
$[14] = t2;
|
|
161
|
+
$[15] = t3;
|
|
162
|
+
} else t3 = $[15];
|
|
163
|
+
const element = useRender(t3);
|
|
164
|
+
return children === void 0 || children === null ? null : element;
|
|
116
165
|
};
|
|
166
|
+
/** What the item holds, folding along its height. */
|
|
117
167
|
var Panel = (t0) => {
|
|
118
168
|
const $ = c(12);
|
|
119
169
|
let children;
|
|
@@ -168,7 +218,10 @@ var Panel = (t0) => {
|
|
|
168
218
|
* <Accordion.Root>
|
|
169
219
|
* <Accordion.Item value="fees">
|
|
170
220
|
* <Accordion.Header>
|
|
171
|
-
* <Accordion.Trigger>
|
|
221
|
+
* <Accordion.Trigger>
|
|
222
|
+
* Fees
|
|
223
|
+
* <Accordion.Indicator><ChevronIcon /></Accordion.Indicator>
|
|
224
|
+
* </Accordion.Trigger>
|
|
172
225
|
* </Accordion.Header>
|
|
173
226
|
* <Accordion.Panel>{fees}</Accordion.Panel>
|
|
174
227
|
* </Accordion.Item>
|
|
@@ -179,6 +232,7 @@ var Accordion$1 = {
|
|
|
179
232
|
Item,
|
|
180
233
|
Header: Accordion.Header,
|
|
181
234
|
Trigger,
|
|
235
|
+
Indicator,
|
|
182
236
|
Panel
|
|
183
237
|
};
|
|
184
238
|
export { Accordion$1 as Accordion };
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import './accordion.css';// src/components/accordion/accordion.module.scss
|
|
2
|
-
var root = "
|
|
3
|
-
var item = "
|
|
4
|
-
var trigger = "
|
|
5
|
-
var
|
|
6
|
-
var panel = "
|
|
7
|
-
var content = "
|
|
2
|
+
var root = "_root_1qlrq_3";
|
|
3
|
+
var item = "_item_1qlrq_8";
|
|
4
|
+
var trigger = "_trigger_1qlrq_12";
|
|
5
|
+
var indicator = "_indicator_1qlrq_64";
|
|
6
|
+
var panel = "_panel_1qlrq_80";
|
|
7
|
+
var content = "_content_1qlrq_95";
|
|
8
8
|
var accordion_module_default = {
|
|
9
9
|
root,
|
|
10
10
|
item,
|
|
11
11
|
trigger,
|
|
12
|
-
|
|
12
|
+
indicator,
|
|
13
13
|
panel,
|
|
14
14
|
content
|
|
15
15
|
};
|
|
16
|
-
export {
|
|
16
|
+
export { content, accordion_module_default as default, indicator, item, panel, root, trigger };
|
|
@@ -29,7 +29,7 @@ export type ActiveFilterDescribers<TFilters> = Readonly<{
|
|
|
29
29
|
* multi-value filter. `render` maps one value to its display text.
|
|
30
30
|
*
|
|
31
31
|
* @example
|
|
32
|
-
* // statuses?:
|
|
32
|
+
* // statuses?: InvoiceStatus[]
|
|
33
33
|
* describeList({
|
|
34
34
|
* label: "Status",
|
|
35
35
|
* render: (status) => statusLabels[status](),
|
|
@@ -1,6 +1,35 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
|
+
import type { Key } from "react-aria-components";
|
|
3
|
+
import type { Tone, ToneVariant } from "../../lib/tone.ts";
|
|
2
4
|
import { type FilterView } from "../filter-bar/use-filter-view.ts";
|
|
3
5
|
import type { ActiveFilterDescribers } from "./active-filter-describers.ts";
|
|
6
|
+
/** One chip for a committed filter, ready for a `TagGroup.Tag`. */
|
|
7
|
+
export type ActiveFilterChip = Readonly<{
|
|
8
|
+
/** The chip's key in the `TagGroup`. */
|
|
9
|
+
id: string;
|
|
10
|
+
content: ReactNode;
|
|
11
|
+
textValue?: string;
|
|
12
|
+
tone?: Tone;
|
|
13
|
+
variant: ToneVariant;
|
|
14
|
+
/** Clears what the chip stands for. */
|
|
15
|
+
onRemove: () => void;
|
|
16
|
+
}>;
|
|
17
|
+
/** The chips for the committed filters, and the `TagGroup.Root` `onRemove` that clears them. */
|
|
18
|
+
export type ActiveFilterChips = Readonly<{
|
|
19
|
+
chips: readonly ActiveFilterChip[];
|
|
20
|
+
/** Clears the filters behind the removed keys; pass it to `TagGroup.Root`. */
|
|
21
|
+
onRemove: (keys: Set<Key>) => void;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Builds one or more chips per described, non-empty committed filter, for a
|
|
25
|
+
* caller that renders its own `TagGroup`.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* const { chips, onRemove } = useActiveFilterChips(filters, {
|
|
29
|
+
* status: describeValue({ label: "Status" }),
|
|
30
|
+
* });
|
|
31
|
+
*/
|
|
32
|
+
export declare const useActiveFilterChips: <TFilters extends object>(filters: FilterView<TFilters>, describe: ActiveFilterDescribers<TFilters>) => ActiveFilterChips;
|
|
4
33
|
export type ActiveFiltersProps<TFilters extends object> = Readonly<{
|
|
5
34
|
filters: FilterView<TFilters>;
|
|
6
35
|
/** Maps a filter key + value to one or more chip descriptors. */
|
|
@@ -9,12 +38,15 @@ export type ActiveFiltersProps<TFilters extends object> = Readonly<{
|
|
|
9
38
|
label: string;
|
|
10
39
|
/** Each chip's remove button's name and tooltip, such as "Remove". */
|
|
11
40
|
removeLabel: string;
|
|
41
|
+
/** The glyph on each chip's remove button, such as a cross. */
|
|
42
|
+
removeIcon: ReactNode;
|
|
12
43
|
className?: string;
|
|
13
44
|
}>;
|
|
14
45
|
/**
|
|
15
46
|
* A roving-focus row of removable chips for the committed filters, on the
|
|
16
47
|
* kit's `TagGroup`. Renders one or more chips per described, non-empty
|
|
17
|
-
* committed field, and nothing when none are active.
|
|
48
|
+
* committed field, and nothing when none are active. Compose `TagGroup` over
|
|
49
|
+
* `useActiveFilterChips` where a chip needs more than this.
|
|
18
50
|
*
|
|
19
51
|
* @example
|
|
20
52
|
* <ActiveFilters
|
|
@@ -22,6 +54,7 @@ export type ActiveFiltersProps<TFilters extends object> = Readonly<{
|
|
|
22
54
|
* describe={{ status: describeValue({ label: "Status" }) }}
|
|
23
55
|
* label="Active filters"
|
|
24
56
|
* removeLabel="Remove"
|
|
57
|
+
* removeIcon={<CloseIcon />}
|
|
25
58
|
* />
|
|
26
59
|
*/
|
|
27
|
-
export declare const ActiveFilters: <TFilters extends object>({ filters, describe, label, removeLabel, className, }: ActiveFiltersProps<TFilters>) => ReactNode;
|
|
60
|
+
export declare const ActiveFilters: <TFilters extends object>({ filters, describe, label, removeLabel, removeIcon, className, }: ActiveFiltersProps<TFilters>) => ReactNode;
|
|
@@ -3,8 +3,17 @@ import { TagGroup } from "../tag-group/tag-group.js";
|
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
// src/components/active-filters/active-filters.tsx
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Builds one or more chips per described, non-empty committed filter, for a
|
|
8
|
+
* caller that renders its own `TagGroup`.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const { chips, onRemove } = useActiveFilterChips(filters, {
|
|
12
|
+
* status: describeValue({ label: "Status" }),
|
|
13
|
+
* });
|
|
14
|
+
*/
|
|
15
|
+
var useActiveFilterChips = (filters, describe) => {
|
|
16
|
+
const chips = Object.keys(describe).filter((key) => key in describe).flatMap((key) => {
|
|
8
17
|
const value = filters.committed[key];
|
|
9
18
|
if (!isActiveFilterValue(value)) return [];
|
|
10
19
|
const described = describe[key]?.(value);
|
|
@@ -20,11 +29,18 @@ var buildChips = (filters, describe) => {
|
|
|
20
29
|
})
|
|
21
30
|
}));
|
|
22
31
|
});
|
|
32
|
+
return {
|
|
33
|
+
chips,
|
|
34
|
+
onRemove: (removed) => {
|
|
35
|
+
for (const chip of chips) if (removed.has(chip.id)) chip.onRemove();
|
|
36
|
+
}
|
|
37
|
+
};
|
|
23
38
|
};
|
|
24
39
|
/**
|
|
25
40
|
* A roving-focus row of removable chips for the committed filters, on the
|
|
26
41
|
* kit's `TagGroup`. Renders one or more chips per described, non-empty
|
|
27
|
-
* committed field, and nothing when none are active.
|
|
42
|
+
* committed field, and nothing when none are active. Compose `TagGroup` over
|
|
43
|
+
* `useActiveFilterChips` where a chip needs more than this.
|
|
28
44
|
*
|
|
29
45
|
* @example
|
|
30
46
|
* <ActiveFilters
|
|
@@ -32,65 +48,54 @@ var buildChips = (filters, describe) => {
|
|
|
32
48
|
* describe={{ status: describeValue({ label: "Status" }) }}
|
|
33
49
|
* label="Active filters"
|
|
34
50
|
* removeLabel="Remove"
|
|
51
|
+
* removeIcon={<CloseIcon />}
|
|
35
52
|
* />
|
|
36
53
|
*/
|
|
37
54
|
var ActiveFilters = (t0) => {
|
|
38
|
-
const $ = c(
|
|
39
|
-
const { filters, describe, label, removeLabel, className } = t0;
|
|
55
|
+
const $ = c(11);
|
|
56
|
+
const { filters, describe, label, removeLabel, removeIcon, className } = t0;
|
|
57
|
+
const { chips, onRemove } = useActiveFilterChips(filters, describe);
|
|
58
|
+
if (chips.length === 0) return null;
|
|
40
59
|
let t1;
|
|
41
|
-
if ($[0] !==
|
|
42
|
-
t1 =
|
|
43
|
-
|
|
44
|
-
|
|
60
|
+
if ($[0] !== removeIcon || $[1] !== removeLabel) {
|
|
61
|
+
t1 = (chip) => /* @__PURE__ */ jsxs(TagGroup.Tag, {
|
|
62
|
+
id: chip.id,
|
|
63
|
+
textValue: chip.textValue,
|
|
64
|
+
tone: chip.tone,
|
|
65
|
+
variant: chip.variant,
|
|
66
|
+
children: [chip.content, /* @__PURE__ */ jsx(TagGroup.Remove, {
|
|
67
|
+
label: removeLabel,
|
|
68
|
+
children: removeIcon
|
|
69
|
+
})]
|
|
70
|
+
});
|
|
71
|
+
$[0] = removeIcon;
|
|
72
|
+
$[1] = removeLabel;
|
|
45
73
|
$[2] = t1;
|
|
46
74
|
} else t1 = $[2];
|
|
47
|
-
const chips = t1;
|
|
48
|
-
if (chips.length === 0) return null;
|
|
49
75
|
let t2;
|
|
50
|
-
if ($[3] !== chips) {
|
|
51
|
-
t2 = (
|
|
52
|
-
for (const chip of chips) if (keys.has(chip.id)) chip.onRemove();
|
|
53
|
-
};
|
|
54
|
-
$[3] = chips;
|
|
55
|
-
$[4] = t2;
|
|
56
|
-
} else t2 = $[4];
|
|
57
|
-
const handleRemove = t2;
|
|
58
|
-
let t3;
|
|
59
|
-
if ($[5] !== removeLabel) {
|
|
60
|
-
t3 = (chip_0) => /* @__PURE__ */ jsxs(TagGroup.Tag, {
|
|
61
|
-
id: chip_0.id,
|
|
62
|
-
textValue: chip_0.textValue,
|
|
63
|
-
tone: chip_0.tone,
|
|
64
|
-
variant: chip_0.variant,
|
|
65
|
-
children: [chip_0.content, /* @__PURE__ */ jsx(TagGroup.Remove, { label: removeLabel })]
|
|
66
|
-
});
|
|
67
|
-
$[5] = removeLabel;
|
|
68
|
-
$[6] = t3;
|
|
69
|
-
} else t3 = $[6];
|
|
70
|
-
let t4;
|
|
71
|
-
if ($[7] !== chips || $[8] !== t3) {
|
|
72
|
-
t4 = /* @__PURE__ */ jsx(TagGroup.List, {
|
|
76
|
+
if ($[3] !== chips || $[4] !== t1) {
|
|
77
|
+
t2 = /* @__PURE__ */ jsx(TagGroup.List, {
|
|
73
78
|
items: chips,
|
|
74
|
-
children:
|
|
79
|
+
children: t1
|
|
75
80
|
});
|
|
76
|
-
$[
|
|
77
|
-
$[
|
|
78
|
-
$[
|
|
79
|
-
} else
|
|
80
|
-
let
|
|
81
|
-
if ($[
|
|
82
|
-
|
|
81
|
+
$[3] = chips;
|
|
82
|
+
$[4] = t1;
|
|
83
|
+
$[5] = t2;
|
|
84
|
+
} else t2 = $[5];
|
|
85
|
+
let t3;
|
|
86
|
+
if ($[6] !== className || $[7] !== label || $[8] !== onRemove || $[9] !== t2) {
|
|
87
|
+
t3 = /* @__PURE__ */ jsx(TagGroup.Root, {
|
|
83
88
|
"aria-label": label,
|
|
84
|
-
onRemove
|
|
89
|
+
onRemove,
|
|
85
90
|
className,
|
|
86
|
-
children:
|
|
91
|
+
children: t2
|
|
87
92
|
});
|
|
88
|
-
$[
|
|
89
|
-
$[
|
|
90
|
-
$[
|
|
91
|
-
$[
|
|
92
|
-
$[
|
|
93
|
-
} else
|
|
94
|
-
return
|
|
93
|
+
$[6] = className;
|
|
94
|
+
$[7] = label;
|
|
95
|
+
$[8] = onRemove;
|
|
96
|
+
$[9] = t2;
|
|
97
|
+
$[10] = t3;
|
|
98
|
+
} else t3 = $[10];
|
|
99
|
+
return t3;
|
|
95
100
|
};
|
|
96
|
-
export { ActiveFilters };
|
|
101
|
+
export { ActiveFilters, useActiveFilterChips };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { describeFlag, describeList, describeValue } from "./active-filter-describers.js";
|
|
2
|
-
import { ActiveFilters } from "./active-filters.js";
|
|
3
|
-
export { ActiveFilters, describeFlag, describeList, describeValue };
|
|
2
|
+
import { ActiveFilters, useActiveFilterChips } from "./active-filters.js";
|
|
3
|
+
export { ActiveFilters, describeFlag, describeList, describeValue, useActiveFilterChips };
|