@yamada-ui/react 2.1.4-dev-20260323012739 → 2.1.4-dev-20260323171738
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/dist/cjs/components/autocomplete/use-autocomplete.cjs +6 -7
- package/dist/cjs/components/autocomplete/use-autocomplete.cjs.map +1 -1
- package/dist/cjs/components/menu/menu.style.cjs +1 -1
- package/dist/cjs/components/menu/menu.style.cjs.map +1 -1
- package/dist/cjs/theme/semantic-tokens/colors.cjs +1 -1
- package/dist/cjs/theme/semantic-tokens/colors.cjs.map +1 -1
- package/dist/esm/components/autocomplete/use-autocomplete.js +6 -7
- package/dist/esm/components/autocomplete/use-autocomplete.js.map +1 -1
- package/dist/esm/components/menu/menu.style.js +1 -1
- package/dist/esm/components/menu/menu.style.js.map +1 -1
- package/dist/esm/theme/semantic-tokens/colors.js +1 -1
- package/dist/esm/theme/semantic-tokens/colors.js.map +1 -1
- package/dist/types/components/accordion/accordion.d.ts +4 -2
- package/dist/types/components/accordion/accordion.style.d.ts +1 -1
- package/dist/types/components/accordion/use-accordion.d.ts +11 -11
- package/dist/types/components/airy/airy.d.ts +3 -2
- package/dist/types/components/alert/alert.d.ts +5 -2
- package/dist/types/components/alert/alert.style.d.ts +1 -1
- package/dist/types/components/alpha-slider/alpha-slider.d.ts +3 -2
- package/dist/types/components/aspect-ratio/aspect-ratio.d.ts +2 -2
- package/dist/types/components/autocomplete/autocomplete.d.ts +4 -2
- package/dist/types/components/autocomplete/autocomplete.style.d.ts +1 -1
- package/dist/types/components/autocomplete/use-autocomplete.d.ts +9 -8
- package/dist/types/components/avatar/avatar.d.ts +5 -5
- package/dist/types/components/avatar/use-avatar-group.d.ts +2 -2
- package/dist/types/components/badge/badge.d.ts +2 -2
- package/dist/types/components/bleed/bleed.d.ts +2 -2
- package/dist/types/components/blockquote/blockquote.d.ts +2 -2
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +2 -2
- package/dist/types/components/breadcrumb/breadcrumb.style.d.ts +1 -1
- package/dist/types/components/breadcrumb/use-breadcrumb.d.ts +2 -2
- package/dist/types/components/button/button-group.d.ts +1 -0
- package/dist/types/components/button/button.d.ts +3 -2
- package/dist/types/components/button/icon-button.d.ts +2 -2
- package/dist/types/components/calendar/calendar.d.ts +3 -2
- package/dist/types/components/calendar/calendar.style.d.ts +2 -2
- package/dist/types/components/calendar/use-calendar.d.ts +9 -8
- package/dist/types/components/card/card.d.ts +2 -2
- package/dist/types/components/carousel/carousel.d.ts +3 -2
- package/dist/types/components/carousel/carousel.style.d.ts +2 -2
- package/dist/types/components/carousel/use-carousel.d.ts +3 -3
- package/dist/types/components/center/center.d.ts +2 -2
- package/dist/types/components/chart/area-chart.d.ts +2 -2
- package/dist/types/components/chart/bar-chart.d.ts +2 -2
- package/dist/types/components/chart/chart.d.ts +5 -5
- package/dist/types/components/chart/composed-chart.d.ts +2 -2
- package/dist/types/components/chart/line-chart.d.ts +2 -2
- package/dist/types/components/chart/pie-chart.d.ts +2 -2
- package/dist/types/components/chart/radar-chart.d.ts +2 -2
- package/dist/types/components/chart/radial-chart.d.ts +2 -2
- package/dist/types/components/chart/use-chart.d.ts +2 -2
- package/dist/types/components/checkbox/checkbox-group.d.ts +2 -0
- package/dist/types/components/checkbox/checkbox.d.ts +5 -4
- package/dist/types/components/checkbox/use-checkbox-group.d.ts +3 -2
- package/dist/types/components/checkbox/use-checkbox.d.ts +1 -0
- package/dist/types/components/checkbox-card/checkbox-card-group.d.ts +3 -0
- package/dist/types/components/checkbox-card/checkbox-card.d.ts +7 -5
- package/dist/types/components/checkbox-card/checkbox-card.style.d.ts +1 -1
- package/dist/types/components/circle-progress/circle-progress.d.ts +3 -2
- package/dist/types/components/close-button/close-button.d.ts +3 -2
- package/dist/types/components/code/code.d.ts +2 -2
- package/dist/types/components/collapse/collapse.d.ts +3 -2
- package/dist/types/components/color-picker/color-picker.d.ts +6 -2
- package/dist/types/components/color-picker/color-picker.style.d.ts +1 -1
- package/dist/types/components/color-picker/use-color-picker.d.ts +5 -2
- package/dist/types/components/color-selector/color-selector.d.ts +6 -2
- package/dist/types/components/color-selector/color-selector.style.d.ts +2 -2
- package/dist/types/components/color-selector/use-color-selector.d.ts +5 -3
- package/dist/types/components/color-swatch/color-swatch.d.ts +2 -2
- package/dist/types/components/container/container.d.ts +2 -2
- package/dist/types/components/data-list/data-list.d.ts +2 -2
- package/dist/types/components/data-list/data-list.style.d.ts +1 -1
- package/dist/types/components/date-picker/date-picker.d.ts +5 -2
- package/dist/types/components/date-picker/use-date-picker.d.ts +7 -4
- package/dist/types/components/drawer/drawer.d.ts +5 -2
- package/dist/types/components/drawer/drawer.style.d.ts +2 -2
- package/dist/types/components/drawer/use-drawer.d.ts +2 -0
- package/dist/types/components/dropzone/dropzone.d.ts +8 -5
- package/dist/types/components/dropzone/dropzone.style.d.ts +1 -1
- package/dist/types/components/dropzone/use-dropzone.d.ts +1 -0
- package/dist/types/components/editable/editable.d.ts +5 -4
- package/dist/types/components/editable/use-editable.d.ts +3 -2
- package/dist/types/components/em/em.d.ts +2 -2
- package/dist/types/components/empty-state/empty-state.d.ts +2 -2
- package/dist/types/components/empty-state/empty-state.style.d.ts +2 -2
- package/dist/types/components/fade/fade.d.ts +3 -2
- package/dist/types/components/fade-scale/fade-scale.d.ts +1 -0
- package/dist/types/components/field/field.d.ts +3 -3
- package/dist/types/components/field/field.style.d.ts +2 -2
- package/dist/types/components/field/use-field-props.d.ts +4 -4
- package/dist/types/components/fieldset/fieldset.d.ts +4 -3
- package/dist/types/components/fieldset/fieldset.style.d.ts +1 -1
- package/dist/types/components/file-button/file-button.d.ts +4 -2
- package/dist/types/components/file-button/use-file-button.d.ts +20 -18
- package/dist/types/components/file-input/file-input.d.ts +4 -2
- package/dist/types/components/file-input/file-input.style.d.ts +1 -1
- package/dist/types/components/file-input/use-file-input.d.ts +16 -15
- package/dist/types/components/flex/flex.d.ts +2 -2
- package/dist/types/components/flip/flip.d.ts +5 -4
- package/dist/types/components/flip/flip.style.d.ts +1 -1
- package/dist/types/components/float/float.d.ts +2 -2
- package/dist/types/components/form/form.d.ts +4 -3
- package/dist/types/components/form/form.style.d.ts +1 -1
- package/dist/types/components/format/format-byte.d.ts +4 -4
- package/dist/types/components/format/format-date-time.d.ts +4 -4
- package/dist/types/components/format/format-number.d.ts +2 -2
- package/dist/types/components/format/use-format-byte.d.ts +1 -0
- package/dist/types/components/format/use-format-date-time.d.ts +1 -0
- package/dist/types/components/format/use-format-number.d.ts +1 -0
- package/dist/types/components/grid/grid-item.d.ts +2 -2
- package/dist/types/components/grid/grid.d.ts +2 -2
- package/dist/types/components/group/group.d.ts +3 -2
- package/dist/types/components/group/use-group.d.ts +2 -2
- package/dist/types/components/heading/heading.d.ts +2 -2
- package/dist/types/components/highlight/highlight.d.ts +2 -0
- package/dist/types/components/hue-slider/hue-slider.d.ts +4 -3
- package/dist/types/components/icon/icon.d.ts +5 -5
- package/dist/types/components/image/image.d.ts +2 -2
- package/dist/types/components/indicator/indicator.d.ts +5 -4
- package/dist/types/components/infinite-scroll-area/infinite-scroll-area.d.ts +2 -2
- package/dist/types/components/infinite-scroll-area/infinite-scroll-area.style.d.ts +2 -2
- package/dist/types/components/input/input-addon.d.ts +2 -2
- package/dist/types/components/input/input-element.d.ts +2 -2
- package/dist/types/components/input/input-group.d.ts +2 -0
- package/dist/types/components/input/input.d.ts +3 -2
- package/dist/types/components/kbd/kbd.d.ts +2 -2
- package/dist/types/components/link/link.d.ts +2 -2
- package/dist/types/components/link-box/link-box.d.ts +2 -2
- package/dist/types/components/list/list.d.ts +2 -2
- package/dist/types/components/list/list.style.d.ts +2 -2
- package/dist/types/components/loading/loading-provider.d.ts +2 -2
- package/dist/types/components/loading/loading.d.ts +4 -3
- package/dist/types/components/loading/use-loading-component.d.ts +1 -0
- package/dist/types/components/mark/mark.d.ts +2 -2
- package/dist/types/components/menu/menu.d.ts +3 -2
- package/dist/types/components/menu/menu.style.d.ts +2 -2
- package/dist/types/components/menu/use-menu.d.ts +11 -11
- package/dist/types/components/modal/modal.d.ts +6 -2
- package/dist/types/components/modal/modal.style.d.ts +2 -2
- package/dist/types/components/native-accordion/native-accordion.d.ts +2 -2
- package/dist/types/components/native-accordion/native-accordion.style.d.ts +2 -2
- package/dist/types/components/native-accordion/use-native-accordion.d.ts +2 -2
- package/dist/types/components/native-popover/native-popover.d.ts +2 -2
- package/dist/types/components/native-select/native-select.d.ts +4 -2
- package/dist/types/components/native-select/use-native-select.d.ts +1 -0
- package/dist/types/components/native-table/native-table.d.ts +4 -4
- package/dist/types/components/notice/notice.style.d.ts +1 -1
- package/dist/types/components/notice/use-notice.d.ts +3 -0
- package/dist/types/components/number-input/number-input.d.ts +3 -2
- package/dist/types/components/number-input/number-input.style.d.ts +1 -1
- package/dist/types/components/number-input/use-number-input.d.ts +1 -0
- package/dist/types/components/pagination/pagination.d.ts +3 -2
- package/dist/types/components/pagination/pagination.style.d.ts +1 -1
- package/dist/types/components/pagination/use-pagination.d.ts +2 -2
- package/dist/types/components/password-input/password-input.d.ts +3 -2
- package/dist/types/components/password-input/strength-meter.d.ts +2 -2
- package/dist/types/components/password-input/use-password-input.d.ts +3 -2
- package/dist/types/components/picture/picture.d.ts +1 -0
- package/dist/types/components/pin-input/pin-input.d.ts +4 -2
- package/dist/types/components/pin-input/use-pin-input.d.ts +8 -7
- package/dist/types/components/popover/popover.d.ts +3 -2
- package/dist/types/components/progress/progress.d.ts +4 -4
- package/dist/types/components/progress/use-progress.d.ts +706 -706
- package/dist/types/components/qr-code/qr-code.d.ts +2 -2
- package/dist/types/components/radio/radio-group.d.ts +2 -0
- package/dist/types/components/radio/radio.d.ts +5 -4
- package/dist/types/components/radio/use-radio-group.d.ts +3 -2
- package/dist/types/components/radio/use-radio.d.ts +1 -0
- package/dist/types/components/radio-card/radio-card-group.d.ts +3 -0
- package/dist/types/components/radio-card/radio-card.d.ts +7 -5
- package/dist/types/components/radio-card/radio-card.style.d.ts +1 -1
- package/dist/types/components/rating/rating.style.d.ts +2 -2
- package/dist/types/components/rating/use-rating.d.ts +8 -7
- package/dist/types/components/reorder/reorder.d.ts +3 -2
- package/dist/types/components/reorder/reorder.style.d.ts +1 -1
- package/dist/types/components/reorder/use-reorder.d.ts +3 -3
- package/dist/types/components/resizable/resizable.d.ts +2 -2
- package/dist/types/components/resizable/resizable.style.d.ts +2 -2
- package/dist/types/components/resizable/use-resizable.d.ts +2 -2
- package/dist/types/components/ripple/ripple.d.ts +3 -2
- package/dist/types/components/ripple/use-ripple.d.ts +2 -2
- package/dist/types/components/rotate/rotate.d.ts +3 -2
- package/dist/types/components/saturation-slider/saturation-slider.d.ts +2 -2
- package/dist/types/components/saturation-slider/use-saturation-slider.d.ts +3 -2
- package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
- package/dist/types/components/segmented-control/segmented-control.d.ts +3 -2
- package/dist/types/components/segmented-control/segmented-control.style.d.ts +2 -2
- package/dist/types/components/segmented-control/use-segmented-control.d.ts +10 -9
- package/dist/types/components/select/select.d.ts +4 -2
- package/dist/types/components/select/use-select.d.ts +6 -4
- package/dist/types/components/separator/separator.d.ts +2 -2
- package/dist/types/components/simple-grid/simple-grid.d.ts +3 -2
- package/dist/types/components/skeleton/skeleton.d.ts +2 -2
- package/dist/types/components/slide/slide.d.ts +3 -2
- package/dist/types/components/slide-fade/slide-fade.d.ts +3 -2
- package/dist/types/components/slider/slider.d.ts +2 -2
- package/dist/types/components/slider/use-slider.d.ts +3 -2
- package/dist/types/components/snacks/snacks.d.ts +2 -0
- package/dist/types/components/snacks/use-snacks.d.ts +1 -0
- package/dist/types/components/stack/h-stack.d.ts +2 -2
- package/dist/types/components/stack/stack.d.ts +2 -2
- package/dist/types/components/stack/v-stack.d.ts +2 -2
- package/dist/types/components/stack/z-stack.d.ts +2 -2
- package/dist/types/components/stat/stat.d.ts +2 -2
- package/dist/types/components/stat/stat.style.d.ts +2 -2
- package/dist/types/components/status/status.d.ts +2 -2
- package/dist/types/components/steps/steps.d.ts +2 -2
- package/dist/types/components/steps/steps.style.d.ts +1 -1
- package/dist/types/components/steps/use-steps.d.ts +10 -10
- package/dist/types/components/switch/switch.d.ts +2 -2
- package/dist/types/components/switch/use-switch.d.ts +1 -0
- package/dist/types/components/table/table.d.ts +4 -2
- package/dist/types/components/tabs/tabs.d.ts +2 -2
- package/dist/types/components/tabs/use-tabs.d.ts +16 -16
- package/dist/types/components/tag/tag.d.ts +2 -2
- package/dist/types/components/tag/tag.style.d.ts +1 -1
- package/dist/types/components/text/text.d.ts +2 -2
- package/dist/types/components/textarea/textarea.d.ts +4 -2
- package/dist/types/components/textarea/use-autosize.d.ts +2 -2
- package/dist/types/components/timeline/timeline.d.ts +5 -5
- package/dist/types/components/timeline/timeline.style.d.ts +2 -2
- package/dist/types/components/tip/tip.d.ts +2 -0
- package/dist/types/components/toggle/toggle-group.d.ts +1 -1
- package/dist/types/components/toggle/toggle.d.ts +7 -5
- package/dist/types/components/toggle/use-toggle-group.d.ts +2 -2
- package/dist/types/components/toggle/use-toggle.d.ts +3 -2
- package/dist/types/components/tooltip/tooltip.d.ts +4 -2
- package/dist/types/components/visually-hidden/visually-hidden.d.ts +2 -2
- package/dist/types/components/wrap/wrap.d.ts +3 -2
- package/dist/types/core/components/create-component.d.ts +7 -9
- package/dist/types/core/components/index.types.d.ts +0 -1
- package/dist/types/core/components/use-component-style.d.ts +0 -2
- package/dist/types/core/components/utils.d.ts +0 -1
- package/dist/types/core/constant.d.ts +0 -1
- package/dist/types/core/css/calc.d.ts +0 -1
- package/dist/types/core/css/config.d.ts +0 -1
- package/dist/types/core/css/css.d.ts +0 -1
- package/dist/types/core/css/index.types.d.ts +0 -1
- package/dist/types/core/css/styles.d.ts +0 -1
- package/dist/types/core/css/token.d.ts +0 -1
- package/dist/types/core/css/use-css.d.ts +0 -1
- package/dist/types/core/css/utils.d.ts +0 -2
- package/dist/types/core/generated-theme-tokens.types.d.ts +0 -1
- package/dist/types/core/index.d.ts +0 -2
- package/dist/types/core/system/color-mode-provider.d.ts +2 -2
- package/dist/types/core/system/config.d.ts +0 -1
- package/dist/types/core/system/create-system.d.ts +0 -1
- package/dist/types/core/system/factory.d.ts +0 -1
- package/dist/types/core/system/index.types.d.ts +0 -1
- package/dist/types/core/system/storage-script.d.ts +3 -3
- package/dist/types/core/system/styled.d.ts +2 -3
- package/dist/types/core/system/system-provider.d.ts +2 -2
- package/dist/types/core/system/var.d.ts +0 -2
- package/dist/types/hooks/use-async-callback/index.d.ts +1 -0
- package/dist/types/hooks/use-breakpoint/use-breakpoint-state.d.ts +2 -2
- package/dist/types/hooks/use-clickable/index.d.ts +7 -7
- package/dist/types/hooks/use-clipboard/index.d.ts +2 -2
- package/dist/types/hooks/use-combobox/index.d.ts +13 -12
- package/dist/types/hooks/use-counter/index.d.ts +2 -2
- package/dist/types/hooks/use-descendants/index.d.ts +2 -2
- package/dist/types/hooks/use-hover/index.d.ts +2 -2
- package/dist/types/hooks/use-popper/index.d.ts +2 -2
- package/dist/types/hooks/use-resize-observer/index.d.ts +3 -3
- package/dist/types/index.d.ts +103 -0
- package/dist/types/providers/i18n-provider/i18n-provider.d.ts +3 -3
- package/dist/types/providers/ui-provider/ui-provider.d.ts +5 -4
- package/dist/types/theme/index.d.ts +1 -1
- package/dist/types/theme/semantic-tokens/index.d.ts +1 -1
- package/dist/types/utils/children.d.ts +2 -2
- package/package.json +2 -2
|
@@ -24,30 +24,29 @@ const defaultRender = ({ count, focused, index, label, max, separator }) => {
|
|
|
24
24
|
});
|
|
25
25
|
};
|
|
26
26
|
const getInputValue = (item) => (0, require_utils_index.utils_exports.isString)(item?.label) ? item.label : item?.query ?? "";
|
|
27
|
-
const defaultFilter = (inputValue, items,
|
|
27
|
+
const defaultFilter = (inputValue, items, match$1) => {
|
|
28
28
|
if (!inputValue.length) return items;
|
|
29
29
|
return items.map((item) => {
|
|
30
30
|
if ("items" in item) {
|
|
31
31
|
const items$1 = item.items.filter((item$1) => {
|
|
32
|
-
if ("query" in item$1) return
|
|
33
|
-
else if ((0, require_utils_index.utils_exports.isString)(item$1.label)) return
|
|
32
|
+
if ("query" in item$1) return (0, require_utils_index.utils_exports.isString)(item$1.query) && match$1(item$1.query, inputValue);
|
|
33
|
+
else if ((0, require_utils_index.utils_exports.isString)(item$1.label)) return (0, require_utils_index.utils_exports.isString)(item$1.label) && match$1(item$1.label, inputValue);
|
|
34
34
|
});
|
|
35
35
|
if (items$1.length) return {
|
|
36
36
|
...item,
|
|
37
37
|
items: items$1
|
|
38
38
|
};
|
|
39
39
|
} else if ("query" in item) {
|
|
40
|
-
if (
|
|
40
|
+
if ((0, require_utils_index.utils_exports.isString)(item.query) && match$1(item.query, inputValue)) return item;
|
|
41
41
|
} else if ((0, require_utils_index.utils_exports.isString)(item.label)) {
|
|
42
|
-
if (
|
|
42
|
+
if ((0, require_utils_index.utils_exports.isString)(item.label) && match$1(item.label, inputValue)) return item;
|
|
43
43
|
}
|
|
44
44
|
}).filter(Boolean);
|
|
45
45
|
};
|
|
46
|
-
const defaultMatcher = (input, target) => target?.toLowerCase().includes(input.toLowerCase()) ?? false;
|
|
47
46
|
const [AutocompleteContext, useAutocompleteContext] = require_context.createContext({ name: "AutocompleteContext" });
|
|
48
47
|
const useAutocomplete = (props = {}) => {
|
|
49
48
|
const { t } = require_i18n_provider.useI18n("autocomplete");
|
|
50
|
-
const { props: { id, ref, name, allowCustomValue = false, closeOnChange = false, multiple = false, closeOnSelect = !multiple, defaultInputValue, defaultValue = multiple ? [] : "", disabled, emptyMessage = t("No results found"), filter = defaultFilter, focusOnClear = true, inputValue: inputValueProp, items = [], matcher =
|
|
49
|
+
const { props: { id, ref, name, allowCustomValue = false, closeOnChange = false, multiple = false, closeOnSelect = !multiple, defaultInputValue, defaultValue = multiple ? [] : "", disabled, emptyMessage = t("No results found"), filter = defaultFilter, focusOnClear = true, inputValue: inputValueProp, items = [], matcher = require_utils_index.utils_exports.match, max, openOnChange = true, openOnClick = true, openOnFocus = true, placeholder, readOnly, render = defaultRender, required, separator = ",", value: valueProp, onChange: onChangeProp, onInputChange: onInputChangeProp, ...rest }, ariaProps, dataProps, eventProps } = require_use_field_props.useFieldProps(props);
|
|
51
50
|
const fieldRef = (0, react.useRef)(null);
|
|
52
51
|
const contentRef = (0, react.useRef)(null);
|
|
53
52
|
const inputRef = (0, react.useRef)(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-autocomplete.cjs","names":["defaultRender: AutocompleteItemRender","defaultFilter: AutocompleteFilter","items","item","defaultMatcher: AutocompleteMatcher","createContext","useI18n","useFieldProps","valueMap: { [key: string]: ComboboxItemWithValue }","valueMap","useControllableState","useCombobox","value","onClear","inputValue","isComposing","getRootProps: PropGetter","props","getFieldProps: PropGetter","mergeRefs","ref","getInputProps: PropGetter<\"input\">","visuallyHiddenAttributes","getContentProps: PropGetter","getIconProps: PropGetter","runKeyAction","useComboboxItem"],"sources":["../../../../src/components/autocomplete/use-autocomplete.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from \"react\"\nimport type { HTMLProps, HTMLRefAttributes, PropGetter } from \"../../core\"\nimport type {\n ComboboxItem,\n ComboboxItemWithValue,\n UseComboboxItemProps,\n UseComboboxProps,\n} from \"../../hooks/use-combobox\"\nimport type { Dict } from \"../../utils\"\nimport type { FieldProps } from \"../field\"\nimport {\n cloneElement,\n isValidElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport { useCombobox, useComboboxItem } from \"../../hooks/use-combobox\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n cast,\n contains,\n createContext,\n dataAttr,\n handlerAll,\n isArray,\n isComposing,\n isNumber,\n isString,\n isUndefined,\n mergeRefs,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport { useFieldProps } from \"../field\"\n\ninterface AutocompleteRenderProps extends ComboboxItemWithValue {\n count: number\n focused: boolean\n index: number\n separator: string\n onClear: () => void\n max?: number\n}\n\nexport interface AutocompleteItemRender {\n (props: AutocompleteRenderProps): ReactNode\n}\n\nconst defaultRender: AutocompleteItemRender = ({\n count,\n focused,\n index,\n label,\n max,\n separator,\n}) => {\n const last = count - 1 === index\n\n return (\n <span style={{ marginInlineEnd: \"var(--gap)\" }}>\n {label}\n {((!isNumber(max) || count < max) && focused) || !last ? separator : null}\n </span>\n )\n}\n\nconst getInputValue = (item?: ComboboxItemWithValue) =>\n isString(item?.label) ? item.label : (item?.query ?? \"\")\n\nexport interface AutocompleteFilter {\n (\n inputValue: string,\n items: ComboboxItem[],\n matcher: AutocompleteMatcher,\n ): ComboboxItem[]\n}\n\nconst defaultFilter: AutocompleteFilter = (inputValue, items, matcher) => {\n if (!inputValue.length) return items\n\n return items\n .map((item) => {\n if (\"items\" in item) {\n const items = item.items.filter((item) => {\n if (\"query\" in item) {\n return matcher(inputValue, item.query)\n } else if (isString(item.label)) {\n return matcher(inputValue, item.label)\n }\n })\n\n if (items.length) return { ...item, items }\n } else if (\"query\" in item) {\n if (matcher(inputValue, item.query)) return item\n } else if (isString(item.label)) {\n if (matcher(inputValue, item.label)) return item\n }\n })\n .filter(Boolean) as ComboboxItem[]\n}\n\nexport interface AutocompleteMatcher {\n (input: string, target?: string): boolean\n}\n\nconst defaultMatcher: AutocompleteMatcher = (input, target) =>\n target?.toLowerCase().includes(input.toLowerCase()) ?? false\n\ninterface AutocompleteContext extends Pick<\n UseAutocompleteReturn,\n \"max\" | \"value\"\n> {}\n\nconst [AutocompleteContext, useAutocompleteContext] =\n createContext<AutocompleteContext>({\n name: \"AutocompleteContext\",\n })\n\nexport { AutocompleteContext, useAutocompleteContext }\n\nexport interface UseAutocompleteProps<Multiple extends boolean = false>\n extends\n Omit<HTMLProps, \"defaultValue\" | \"onChange\" | \"ref\" | \"value\">,\n Omit<\n UseComboboxProps,\n \"defaultValue\" | \"initialFocusValue\" | \"onChange\" | \"ref\" | \"value\"\n >,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * If `true`, the autocomplete will allow custom value.\n *\n * @default false\n */\n allowCustomValue?: boolean\n /**\n * If `true`, the autocomplete will be closed when the input value changes.\n *\n * @default false\n */\n closeOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * The initial value of the input.\n */\n defaultInputValue?: string\n /**\n * The initial value of the autocomplete.\n */\n defaultValue?: Multiple extends true ? string[] : string\n /**\n * The message displayed when the search yields no hits.\n *\n * @default 'No results found'\n */\n emptyMessage?: ReactNode\n /**\n * The function to filter the items.\n */\n filter?: AutocompleteFilter\n /**\n * If `true`, the input will be focused when the clear icon is clicked.\n *\n * @default true\n */\n focusOnClear?: boolean\n /**\n * The `id` attribute of the input element.\n */\n id?: string\n /**\n * The value of the input.\n */\n inputValue?: string\n /**\n * If provided, generate options based on items.\n *\n * @default []\n */\n items?: ComboboxItem[]\n /**\n * The function to match the items.\n */\n matcher?: AutocompleteMatcher\n /**\n * The maximum selectable value.\n */\n max?: number\n /**\n * If `true`, the autocomplete will be multiple.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * The `name` attribute of the input element.\n */\n name?: string\n /**\n * If `true`, the autocomplete will be opened when the input value changes.\n *\n * @default true\n */\n openOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * If `true`, the autocomplete will be opened when the input is focused.\n *\n * @default true\n */\n openOnFocus?: boolean\n /**\n * The placeholder for autocomplete.\n */\n placeholder?: string\n /**\n * The visual separator between each value.\n *\n * @default ','\n */\n separator?: string\n /**\n * The value of the autocomplete.\n */\n value?: Multiple extends true ? string[] : string\n /**\n * The callback invoked when value state changes.\n */\n onChange?: (value: Multiple extends true ? string[] : string) => void\n /**\n * The callback invoked when input value state changes.\n */\n onInputChange?: (value: string) => void\n /**\n * The function to render the selected items.\n */\n render?: (props: AutocompleteRenderProps) => ReactNode\n}\n\nexport const useAutocomplete = <Multiple extends boolean = false>(\n props: UseAutocompleteProps<Multiple> = {},\n) => {\n type MaybeValue = Multiple extends true ? string[] : string\n\n const { t } = useI18n(\"autocomplete\")\n const {\n props: {\n id,\n ref,\n name,\n allowCustomValue = false,\n closeOnChange = false,\n multiple = false,\n closeOnSelect = !multiple,\n defaultInputValue,\n defaultValue = (multiple ? [] : \"\") as MaybeValue,\n disabled,\n emptyMessage = t(\"No results found\"),\n filter = defaultFilter,\n focusOnClear = true,\n inputValue: inputValueProp,\n items = [],\n matcher = defaultMatcher,\n max,\n openOnChange = true,\n openOnClick = true,\n openOnFocus = true,\n placeholder,\n readOnly,\n render = defaultRender,\n required,\n separator = \",\",\n value: valueProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n ...rest\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const fieldRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const focusByClickRef = useRef<boolean>(false)\n const valueMap = useMemo<{ [key: string]: ComboboxItemWithValue }>(() => {\n const valueMap: { [key: string]: ComboboxItemWithValue } = {}\n\n items.forEach((item) => {\n if (\"items\" in item) {\n item.items.forEach((item) => {\n item.value ??= isString(item.label) ? item.label : undefined\n\n if (!isUndefined(item.value)) valueMap[item.value] = item\n })\n } else {\n item.value ??= isString(item.label) ? item.label : undefined\n\n if (!isUndefined(item.value)) valueMap[item.value] = item\n }\n })\n\n return valueMap\n }, [items])\n const [focused, setFocused] = useState(false)\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [inputValue, setInputValue] = useControllableState({\n defaultValue:\n defaultInputValue ??\n getInputValue(isArray(value) ? undefined : valueMap[value as string]),\n value: inputValueProp,\n onChange: onInputChangeProp,\n })\n const onChange = useCallback(\n (selectedValue: string) => {\n setValue((prev) => {\n if (isArray(prev)) {\n if (prev.includes(selectedValue)) {\n return prev.filter(\n (prevValue) => prevValue !== selectedValue,\n ) as MaybeValue\n } else if (!isNumber(max) || prev.length < max) {\n return [...prev, selectedValue] as MaybeValue\n } else {\n return prev\n }\n } else {\n return selectedValue as MaybeValue\n }\n })\n\n if (isArray(value)) {\n setInputValue(\"\")\n } else {\n const item = valueMap[selectedValue]\n\n setInputValue(getInputValue(item))\n }\n },\n [max, setInputValue, setValue, value, valueMap],\n )\n const {\n activeDescendant,\n descendants,\n interactive,\n open,\n getContentProps: getComboboxContentProps,\n getSeparatorProps,\n getTriggerProps,\n popoverProps,\n onActiveDescendant,\n onClose,\n onOpen,\n onOpenWithActiveDescendant,\n onSelect,\n } = useCombobox({\n closeOnSelect,\n disabled,\n initialFocusValue: isArray(value) ? value[0] : value,\n openOnClick: false,\n openOnEnter: false,\n openOnSpace: false,\n readOnly,\n selectFocusRef: inputRef,\n selectOnSpace: false,\n onChange,\n ...ariaProps,\n ...dataProps,\n ...eventProps,\n ...rest,\n })\n const filteredItems = useMemo<ComboboxItem[]>(() => {\n if (!items.length) return []\n\n return filter(inputValue, items, matcher)\n }, [filter, inputValue, items, matcher])\n const resolvedItems = useMemo<ComboboxItem[]>(() => {\n return filteredItems.length\n ? filteredItems\n : [{ \"data-empty\": \"\", label: emptyMessage }]\n }, [filteredItems, emptyMessage])\n const empty = useMemo(\n () => !resolvedItems.filter(({ hidden }) => !hidden).length,\n [resolvedItems],\n )\n const children = useMemo<ReactNode>(() => {\n if (!isArray(value)) return null\n\n const count = value.length\n\n return value.map((value, index) => {\n const item = valueMap[value] ?? { label: value, value }\n\n const onClear = (ev?: MouseEvent<HTMLElement>) => {\n ev?.preventDefault()\n ev?.stopPropagation()\n\n if (item.value) onChange(item.value)\n }\n\n const component = render({\n count,\n focused,\n index,\n max,\n separator,\n onClear,\n ...item,\n })\n\n if (isValidElement<Dict>(component)) {\n return cloneElement(component, { ...component.props, key: index })\n } else {\n return component\n }\n })\n }, [focused, max, onChange, render, separator, value, valueMap])\n const hasValues = isArray(value) && !!value.length\n\n const onInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (isArray(value) && value.length === max) return\n\n if (runIfFn(closeOnChange, ev)) {\n onClose()\n } else if (runIfFn(openOnChange, ev)) {\n onOpen()\n }\n\n activeDescendant.current = null\n\n const inputValue = ev.target.value\n\n setInputValue(inputValue)\n\n if (inputValue.length || isArray(value)) return\n\n setValue(\"\" as MaybeValue)\n },\n [\n activeDescendant,\n closeOnChange,\n max,\n onClose,\n onOpen,\n openOnChange,\n setInputValue,\n setValue,\n value,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || isComposing(ev)) return\n\n const inputValue = cast<HTMLInputElement>(ev.target).value\n\n runKeyAction(\n ev,\n {\n Backspace: (ev) => {\n if (!isArray(value)) return\n if (inputValue.length) return\n\n ev.preventDefault()\n\n setValue((prev) => prev.slice(0, -1) as MaybeValue)\n },\n Enter: (ev) => {\n if (!open || !inputValue.length || activeDescendant.current) return\n\n const item = filteredItems[0]\n\n if (!item) {\n if (!allowCustomValue || !isArray(value)) return\n\n ev.preventDefault()\n\n onSelect(inputValue)\n } else {\n ev.preventDefault()\n\n if (\"items\" in item) {\n onSelect(item.items[0]?.value)\n } else {\n onSelect(item.value)\n }\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n activeDescendant,\n allowCustomValue,\n disabled,\n filteredItems,\n onSelect,\n open,\n setValue,\n value,\n ],\n )\n\n const onClick = useCallback(() => {\n if (!interactive) return\n\n focusByClickRef.current = true\n\n inputRef.current?.focus()\n\n if (openOnClick) onOpenWithActiveDescendant(descendants.enabledFirstValue)\n }, [descendants, interactive, onOpenWithActiveDescendant, openOnClick])\n\n const onMouseDown = useCallback(\n (ev: MouseEvent<HTMLInputElement>) => {\n if (!openOnFocus) return\n\n ev.preventDefault()\n ev.stopPropagation()\n },\n [openOnFocus],\n )\n\n const onFocus = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n setFocused(true)\n\n if (openOnFocus && !focusByClickRef.current)\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n\n focusByClickRef.current = false\n },\n [openOnFocus, onOpenWithActiveDescendant, descendants.enabledFirstValue],\n )\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n if (\n contains(fieldRef.current, ev.relatedTarget) ||\n contains(contentRef.current, ev.relatedTarget)\n ) {\n ev.preventDefault()\n } else {\n setFocused(false)\n\n if (isArray(value)) {\n setInputValue(\"\")\n } else {\n if (allowCustomValue) {\n if (inputValue) setValue(inputValue as MaybeValue)\n } else {\n const item = valueMap[value as string]\n\n setInputValue(getInputValue(item))\n }\n }\n }\n },\n [allowCustomValue, inputValue, setInputValue, setValue, value, valueMap],\n )\n\n const onClear = useCallback(() => {\n if (!interactive) return\n\n setValue((prev) => (isArray(prev) ? [] : \"\") as MaybeValue)\n setInputValue(\"\")\n\n if (focusOnClear) inputRef.current?.focus()\n }, [focusOnClear, interactive, setInputValue, setValue])\n\n useUpdateEffect(() => {\n if (isArray(valueProp)) return\n\n setInputValue(\n getInputValue(valueProp ? valueMap[valueProp as string] : undefined),\n )\n }, [valueProp])\n\n const getRootProps: PropGetter = useCallback(\n (props) => ({\n ...dataProps,\n ...props,\n }),\n [dataProps],\n )\n\n const getFieldProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getTriggerProps({\n ref: mergeRefs(ref, fieldRef),\n tabIndex: -1,\n ...props,\n onClick: handlerAll(props.onClick, onClick),\n }),\n\n [getTriggerProps, onClick],\n )\n\n const getInputProps: PropGetter<\"input\"> = useCallback(\n (props = {}) => ({\n id,\n ref: mergeRefs(props.ref, ref, inputRef),\n name,\n style: {\n ...(!focused && isArray(value) && !!value.length\n ? visuallyHiddenAttributes.style\n : {}),\n ...props.style,\n },\n \"data-max\": dataAttr(\n isArray(value) && isNumber(max) && value.length >= max,\n ),\n autoCapitalize: \"off\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n disabled,\n placeholder: hasValues ? undefined : placeholder,\n readOnly,\n required,\n spellCheck: false,\n value: inputValue,\n ...dataProps,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onInputChange),\n onFocus: handlerAll(props.onFocus, onFocus),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }),\n [\n dataProps,\n disabled,\n focused,\n hasValues,\n id,\n inputValue,\n max,\n name,\n onBlur,\n onFocus,\n onInputChange,\n onKeyDown,\n onMouseDown,\n placeholder,\n readOnly,\n ref,\n required,\n value,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getComboboxContentProps({\n ref: mergeRefs(ref, contentRef),\n hidden: empty,\n ...props,\n }),\n [empty, getComboboxContentProps],\n )\n\n const getIconProps: PropGetter = useCallback(\n (props) => ({ ...dataProps, ...props }),\n [dataProps],\n )\n\n const getClearIconProps: PropGetter = useCallback(\n (props = {}) =>\n getIconProps({\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-label\": t(\"Clear value\"),\n role: \"button\",\n tabIndex: interactive ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClear),\n onKeyDown: handlerAll(props.onKeyDown, (ev) =>\n runKeyAction(ev, { Enter: onClear, Space: onClear }),\n ),\n }),\n [getIconProps, interactive, onClear, t],\n )\n\n return {\n children,\n descendants,\n inputValue,\n interactive,\n items: resolvedItems,\n max,\n open,\n setInputValue,\n setValue,\n value,\n valueMap,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n getSeparatorProps,\n popoverProps,\n onActiveDescendant,\n onChange,\n onClose,\n onInputChange,\n onOpen,\n onSelect,\n }\n}\n\nexport type UseAutocompleteReturn = ReturnType<typeof useAutocomplete>\n\nexport interface UseAutocompleteOptionProps extends UseComboboxItemProps {}\n\nexport const useAutocompleteOption = ({\n children,\n closeOnSelect,\n disabled,\n hidden,\n value,\n ...rest\n}: UseAutocompleteOptionProps = {}) => {\n const { max, value: selectedValue } = useAutocompleteContext()\n\n value ??= isString(children) ? children : undefined\n\n const selected = isArray(selectedValue)\n ? !isUndefined(value) && selectedValue.includes(value)\n : selectedValue === value\n const completed =\n isNumber(max) && isArray(selectedValue) && selectedValue.length >= max\n const { getIndicatorProps, getItemProps } = useComboboxItem({\n children,\n closeOnSelect,\n disabled: disabled || hidden || (completed && !selected),\n hidden,\n selected,\n value,\n ...rest,\n })\n\n const getOptionProps: PropGetter = useCallback(\n (props = {}) => getItemProps(props),\n [getItemProps],\n )\n\n return { getIndicatorProps, getOptionProps }\n}\n\nexport type UseAutocompleteOptionReturn = ReturnType<\n typeof useAutocompleteOption\n>\n"],"mappings":";;;;;;;;;;;;;;;;;;AA8DA,MAAMA,iBAAyC,EAC7C,OACA,SACA,OACA,OACA,KACA,gBACI;CACJ,MAAM,OAAO,QAAQ,MAAM;AAE3B,QACE,4CAAC;EAAK,OAAO,EAAE,iBAAiB,cAAc;aAC3C,QACE,iDAAU,IAAI,IAAI,QAAQ,QAAQ,WAAY,CAAC,OAAO,YAAY;GAChE;;AAIX,MAAM,iBAAiB,yDACZ,MAAM,MAAM,GAAG,KAAK,QAAS,MAAM,SAAS;AAUvD,MAAMC,iBAAqC,YAAY,OAAO,YAAY;AACxE,KAAI,CAAC,WAAW,OAAQ,QAAO;AAE/B,QAAO,MACJ,KAAK,SAAS;AACb,MAAI,WAAW,MAAM;GACnB,MAAMC,UAAQ,KAAK,MAAM,QAAQ,WAAS;AACxC,QAAI,WAAWC,OACb,QAAO,QAAQ,YAAYA,OAAK,MAAM;6DACpBA,OAAK,MAAM,CAC7B,QAAO,QAAQ,YAAYA,OAAK,MAAM;KAExC;AAEF,OAAID,QAAM,OAAQ,QAAO;IAAE,GAAG;IAAM;IAAO;aAClC,WAAW,MACpB;OAAI,QAAQ,YAAY,KAAK,MAAM,CAAE,QAAO;6DAC1B,KAAK,MAAM,EAC7B;OAAI,QAAQ,YAAY,KAAK,MAAM,CAAE,QAAO;;GAE9C,CACD,OAAO,QAAQ;;AAOpB,MAAME,kBAAuC,OAAO,WAClD,QAAQ,aAAa,CAAC,SAAS,MAAM,aAAa,CAAC,IAAI;AAOzD,MAAM,CAAC,qBAAqB,0BAC1BC,8BAAmC,EACjC,MAAM,uBACP,CAAC;AAyHJ,MAAa,mBACX,QAAwC,EAAE,KACvC;CAGH,MAAM,EAAE,MAAMC,8BAAQ,eAAe;CACrC,MAAM,EACJ,OAAO,EACL,IACA,KACA,MACA,mBAAmB,OACnB,gBAAgB,OAChB,WAAW,OACX,gBAAgB,CAAC,UACjB,mBACA,eAAgB,WAAW,EAAE,GAAG,IAChC,UACA,eAAe,EAAE,mBAAmB,EACpC,SAAS,eACT,eAAe,MACf,YAAY,gBACZ,QAAQ,EAAE,EACV,UAAU,gBACV,KACA,eAAe,MACf,cAAc,MACd,cAAc,MACd,aACA,UACA,SAAS,eACT,UACA,YAAY,KACZ,OAAO,WACP,UAAU,cACV,eAAe,mBACf,GAAG,QAEL,WACA,WACA,eACEC,sCAAc,MAAM;CACxB,MAAM,6BAAkC,KAAK;CAC7C,MAAM,+BAAoC,KAAK;CAC/C,MAAM,6BAAoC,KAAK;CAC/C,MAAM,oCAAkC,MAAM;CAC9C,MAAM,oCAAmE;EACvE,MAAMC,aAAqD,EAAE;AAE7D,QAAM,SAAS,SAAS;AACtB,OAAI,WAAW,KACb,MAAK,MAAM,SAAS,WAAS;AAC3B,WAAK,0DAAmBL,OAAK,MAAM,GAAGA,OAAK,QAAQ;AAEnD,QAAI,oDAAaA,OAAK,MAAM,CAAE,YAASA,OAAK,SAASA;KACrD;QACG;AACL,SAAK,0DAAmB,KAAK,MAAM,GAAG,KAAK,QAAQ;AAEnD,QAAI,oDAAa,KAAK,MAAM,CAAE,YAAS,KAAK,SAAS;;IAEvD;AAEF,SAAOM;IACN,CAAC,MAAM,CAAC;CACX,MAAM,CAAC,SAAS,kCAAuB,MAAM;CAC7C,MAAM,CAAC,OAAO,YAAYC,gEAAqB;EAC7C;EACA,OAAO;EACP,UAAU;EACX,CAAC;CACF,MAAM,CAAC,YAAY,iBAAiBA,gEAAqB;EACvD,cACE,qBACA,6DAAsB,MAAM,GAAG,SAAY,SAAS,OAAiB;EACvE,OAAO;EACP,UAAU;EACX,CAAC;CACF,MAAM,mCACH,kBAA0B;AACzB,YAAU,SAAS;AACjB,sDAAY,KAAK,CACf,KAAI,KAAK,SAAS,cAAc,CAC9B,QAAO,KAAK,QACT,cAAc,cAAc,cAC9B;YACQ,iDAAU,IAAI,IAAI,KAAK,SAAS,IACzC,QAAO,CAAC,GAAG,MAAM,cAAc;OAE/B,QAAO;OAGT,QAAO;IAET;AAEF,qDAAY,MAAM,CAChB,eAAc,GAAG;OACZ;GACL,MAAM,OAAO,SAAS;AAEtB,iBAAc,cAAc,KAAK,CAAC;;IAGtC;EAAC;EAAK;EAAe;EAAU;EAAO;EAAS,CAChD;CACD,MAAM,EACJ,kBACA,aACA,aACA,MACA,iBAAiB,yBACjB,mBACA,iBACA,cACA,oBACA,SACA,QACA,4BACA,aACEC,6CAAY;EACd;EACA;EACA,kEAA2B,MAAM,GAAG,MAAM,KAAK;EAC/C,aAAa;EACb,aAAa;EACb,aAAa;EACb;EACA,gBAAgB;EAChB,eAAe;EACf;EACA,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACJ,CAAC;CACF,MAAM,yCAA8C;AAClD,MAAI,CAAC,MAAM,OAAQ,QAAO,EAAE;AAE5B,SAAO,OAAO,YAAY,OAAO,QAAQ;IACxC;EAAC;EAAQ;EAAY;EAAO;EAAQ,CAAC;CACxC,MAAM,yCAA8C;AAClD,SAAO,cAAc,SACjB,gBACA,CAAC;GAAE,cAAc;GAAI,OAAO;GAAc,CAAC;IAC9C,CAAC,eAAe,aAAa,CAAC;CACjC,MAAM,iCACE,CAAC,cAAc,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,QACrD,CAAC,cAAc,CAChB;CACD,MAAM,oCAAoC;AACxC,MAAI,gDAAS,MAAM,CAAE,QAAO;EAE5B,MAAM,QAAQ,MAAM;AAEpB,SAAO,MAAM,KAAK,SAAO,UAAU;GACjC,MAAM,OAAO,SAASC,YAAU;IAAE,OAAOA;IAAO;IAAO;GAEvD,MAAMC,aAAW,OAAiC;AAChD,QAAI,gBAAgB;AACpB,QAAI,iBAAiB;AAErB,QAAI,KAAK,MAAO,UAAS,KAAK,MAAM;;GAGtC,MAAM,YAAY,OAAO;IACvB;IACA;IACA;IACA;IACA;IACA;IACA,GAAG;IACJ,CAAC;AAEF,iCAAyB,UAAU,CACjC,gCAAoB,WAAW;IAAE,GAAG,UAAU;IAAO,KAAK;IAAO,CAAC;OAElE,QAAO;IAET;IACD;EAAC;EAAS;EAAK;EAAU;EAAQ;EAAW;EAAO;EAAS,CAAC;CAChE,MAAM,2DAAoB,MAAM,IAAI,CAAC,CAAC,MAAM;CAE5C,MAAM,wCACH,OAAsC;AACrC,qDAAY,MAAM,IAAI,MAAM,WAAW,IAAK;AAE5C,qDAAY,eAAe,GAAG,CAC5B,UAAS;0DACQ,cAAc,GAAG,CAClC,SAAQ;AAGV,mBAAiB,UAAU;EAE3B,MAAMC,eAAa,GAAG,OAAO;AAE7B,gBAAcA,aAAW;AAEzB,MAAIA,aAAW,yDAAkB,MAAM,CAAE;AAEzC,WAAS,GAAiB;IAE5B;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAM,oCACH,OAAwC;AACvC,MAAI,YAAYC,wBAAY,GAAG,CAAE;EAEjC,MAAMD,2DAAoC,GAAG,OAAO,CAAC;AAErD,2BACE,IACA;GACE,YAAY,SAAO;AACjB,QAAI,gDAAS,MAAM,CAAE;AACrB,QAAIA,aAAW,OAAQ;AAEvB,SAAG,gBAAgB;AAEnB,cAAU,SAAS,KAAK,MAAM,GAAG,GAAG,CAAe;;GAErD,QAAQ,SAAO;AACb,QAAI,CAAC,QAAQ,CAACA,aAAW,UAAU,iBAAiB,QAAS;IAE7D,MAAM,OAAO,cAAc;AAE3B,QAAI,CAAC,MAAM;AACT,SAAI,CAAC,oBAAoB,gDAAS,MAAM,CAAE;AAE1C,UAAG,gBAAgB;AAEnB,cAASA,aAAW;WACf;AACL,UAAG,gBAAgB;AAEnB,SAAI,WAAW,KACb,UAAS,KAAK,MAAM,IAAI,MAAM;SAE9B,UAAS,KAAK,MAAM;;;GAI3B,EACD,EAAE,gBAAgB,OAAO,CAC1B;IAEH;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAM,uCAA4B;AAChC,MAAI,CAAC,YAAa;AAElB,kBAAgB,UAAU;AAE1B,WAAS,SAAS,OAAO;AAEzB,MAAI,YAAa,4BAA2B,YAAY,kBAAkB;IACzE;EAAC;EAAa;EAAa;EAA4B;EAAY,CAAC;CAEvE,MAAM,sCACH,OAAqC;AACpC,MAAI,CAAC,YAAa;AAElB,KAAG,gBAAgB;AACnB,KAAG,iBAAiB;IAEtB,CAAC,YAAY,CACd;CAED,MAAM,kCACH,OAAqC;AACpC,KAAG,gBAAgB;AACnB,KAAG,iBAAiB;AAEpB,aAAW,KAAK;AAEhB,MAAI,eAAe,CAAC,gBAAgB,QAClC,4BAA2B,YAAY,kBAAkB;AAE3D,kBAAgB,UAAU;IAE5B;EAAC;EAAa;EAA4B,YAAY;EAAkB,CACzE;CAED,MAAM,iCACH,OAAqC;AACpC,sDACW,SAAS,SAAS,GAAG,cAAc,oDACnC,WAAW,SAAS,GAAG,cAAc,CAE9C,IAAG,gBAAgB;OACd;AACL,cAAW,MAAM;AAEjB,sDAAY,MAAM,CAChB,eAAc,GAAG;YAEb,kBACF;QAAI,WAAY,UAAS,WAAyB;UAC7C;IACL,MAAM,OAAO,SAAS;AAEtB,kBAAc,cAAc,KAAK,CAAC;;;IAK1C;EAAC;EAAkB;EAAY;EAAe;EAAU;EAAO;EAAS,CACzE;CAED,MAAM,uCAA4B;AAChC,MAAI,CAAC,YAAa;AAElB,YAAU,wDAAkB,KAAK,GAAG,EAAE,GAAG,GAAkB;AAC3D,gBAAc,GAAG;AAEjB,MAAI,aAAc,UAAS,SAAS,OAAO;IAC1C;EAAC;EAAc;EAAa;EAAe;EAAS,CAAC;AAExD,sCAAsB;AACpB,qDAAY,UAAU,CAAE;AAExB,gBACE,cAAc,YAAY,SAAS,aAAuB,OAAU,CACrE;IACA,CAAC,UAAU,CAAC;CAEf,MAAME,uCACH,aAAW;EACV,GAAG;EACH,GAAGC;EACJ,GACD,CAAC,UAAU,CACZ;CAED,MAAMC,wCACH,EAAE,YAAK,GAAGD,YAAU,EAAE,KACrB,gBAAgB;EACd,KAAKE,sBAAUC,OAAK,SAAS;EAC7B,UAAU;EACV,GAAGH;EACH,2DAAoBA,QAAM,SAAS,QAAQ;EAC5C,CAAC,EAEJ,CAAC,iBAAiB,QAAQ,CAC3B;CAED,MAAMI,wCACH,UAAQ,EAAE,MAAM;EACf;EACA,KAAKF,sBAAUF,QAAM,KAAK,KAAK,SAAS;EACxC;EACA,OAAO;GACL,GAAI,CAAC,0DAAmB,MAAM,IAAI,CAAC,CAAC,MAAM,SACtCK,qCAAyB,QACzB,EAAE;GACN,GAAGL,QAAM;GACV;EACD,2GACU,MAAM,oDAAa,IAAI,IAAI,MAAM,UAAU,IACpD;EACD,gBAAgB;EAChB,cAAc;EACd,aAAa;EACb;EACA,aAAa,YAAY,SAAY;EACrC;EACA;EACA,YAAY;EACZ,OAAO;EACP,GAAG;EACH,GAAGA;EACH,0DAAmBA,QAAM,QAAQ,OAAO;EACxC,4DAAqBA,QAAM,UAAU,cAAc;EACnD,2DAAoBA,QAAM,SAAS,QAAQ;EAC3C,6DAAsBA,QAAM,WAAW,UAAU;EACjD,+DAAwBA,QAAM,aAAa,YAAY;EACxD,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAMM,0CACH,EAAE,YAAK,GAAGN,YAAU,EAAE,KACrB,wBAAwB;EACtB,KAAKE,sBAAUC,OAAK,WAAW;EAC/B,QAAQ;EACR,GAAGH;EACJ,CAAC,EACJ,CAAC,OAAO,wBAAwB,CACjC;CAED,MAAMO,uCACH,aAAW;EAAE,GAAG;EAAW,GAAGP;EAAO,GACtC,CAAC,UAAU,CACZ;AAkBD,QAAO;EACL;EACA;EACA;EACA;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA,2CA3BC,UAAQ,EAAE,KACT,aAAa;GACX,iEAA0B,CAAC,YAAY;GACvC,cAAc,EAAE,cAAc;GAC9B,MAAM;GACN,UAAU,cAAc,IAAI;GAC5B,GAAGA;GACH,2DAAoBA,QAAM,SAAS,QAAQ;GAC3C,6DAAsBA,QAAM,YAAY,OACtCQ,yBAAa,IAAI;IAAE,OAAO;IAAS,OAAO;IAAS,CAAC,CACrD;GACF,CAAC,EACJ;GAAC;GAAc;GAAa;GAAS;GAAE,CACxC;EAeC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;;AAOH,MAAa,yBAAyB,EACpC,UACA,eACA,UACA,QACA,OACA,GAAG,SAC2B,EAAE,KAAK;CACrC,MAAM,EAAE,KAAK,OAAO,kBAAkB,wBAAwB;AAE9D,2DAAmB,SAAS,GAAG,WAAW;CAE1C,MAAM,0DAAmB,cAAc,GACnC,oDAAa,MAAM,IAAI,cAAc,SAAS,MAAM,GACpD,kBAAkB;CACtB,MAAM,4DACK,IAAI,mDAAY,cAAc,IAAI,cAAc,UAAU;CACrE,MAAM,EAAE,mBAAmB,iBAAiBC,iDAAgB;EAC1D;EACA;EACA,UAAU,YAAY,UAAW,aAAa,CAAC;EAC/C;EACA;EACA;EACA,GAAG;EACJ,CAAC;AAOF,QAAO;EAAE;EAAmB,wCAJzB,QAAQ,EAAE,KAAK,aAAa,MAAM,EACnC,CAAC,aAAa,CACf;EAE2C"}
|
|
1
|
+
{"version":3,"file":"use-autocomplete.cjs","names":["defaultRender: AutocompleteItemRender","defaultFilter: AutocompleteFilter","items","item","match","createContext","useI18n","useFieldProps","valueMap: { [key: string]: ComboboxItemWithValue }","valueMap","useControllableState","useCombobox","value","onClear","inputValue","isComposing","getRootProps: PropGetter","props","getFieldProps: PropGetter","mergeRefs","ref","getInputProps: PropGetter<\"input\">","visuallyHiddenAttributes","getContentProps: PropGetter","getIconProps: PropGetter","runKeyAction","useComboboxItem"],"sources":["../../../../src/components/autocomplete/use-autocomplete.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from \"react\"\nimport type { HTMLProps, HTMLRefAttributes, PropGetter } from \"../../core\"\nimport type {\n ComboboxItem,\n ComboboxItemWithValue,\n UseComboboxItemProps,\n UseComboboxProps,\n} from \"../../hooks/use-combobox\"\nimport type { Dict } from \"../../utils\"\nimport type { FieldProps } from \"../field\"\nimport {\n cloneElement,\n isValidElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport { useCombobox, useComboboxItem } from \"../../hooks/use-combobox\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n cast,\n contains,\n createContext,\n dataAttr,\n handlerAll,\n isArray,\n isComposing,\n isNumber,\n isString,\n isUndefined,\n match,\n mergeRefs,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport { useFieldProps } from \"../field\"\n\ninterface AutocompleteRenderProps extends ComboboxItemWithValue {\n count: number\n focused: boolean\n index: number\n separator: string\n onClear: () => void\n max?: number\n}\n\nexport interface AutocompleteItemRender {\n (props: AutocompleteRenderProps): ReactNode\n}\n\nconst defaultRender: AutocompleteItemRender = ({\n count,\n focused,\n index,\n label,\n max,\n separator,\n}) => {\n const last = count - 1 === index\n\n return (\n <span style={{ marginInlineEnd: \"var(--gap)\" }}>\n {label}\n {((!isNumber(max) || count < max) && focused) || !last ? separator : null}\n </span>\n )\n}\n\nconst getInputValue = (item?: ComboboxItemWithValue) =>\n isString(item?.label) ? item.label : (item?.query ?? \"\")\n\nexport interface AutocompleteFilter {\n (\n inputValue: string,\n items: ComboboxItem[],\n matcher: AutocompleteMatcher,\n ): ComboboxItem[]\n}\n\nconst defaultFilter: AutocompleteFilter = (inputValue, items, match) => {\n if (!inputValue.length) return items\n\n return items\n .map((item) => {\n if (\"items\" in item) {\n const items = item.items.filter((item) => {\n if (\"query\" in item) {\n return isString(item.query) && match(item.query, inputValue)\n } else if (isString(item.label)) {\n return isString(item.label) && match(item.label, inputValue)\n }\n })\n\n if (items.length) return { ...item, items }\n } else if (\"query\" in item) {\n if (isString(item.query) && match(item.query, inputValue)) return item\n } else if (isString(item.label)) {\n if (isString(item.label) && match(item.label, inputValue)) return item\n }\n })\n .filter(Boolean) as ComboboxItem[]\n}\n\nexport type AutocompleteMatcher = typeof match\n\ninterface AutocompleteContext extends Pick<\n UseAutocompleteReturn,\n \"max\" | \"value\"\n> {}\n\nconst [AutocompleteContext, useAutocompleteContext] =\n createContext<AutocompleteContext>({\n name: \"AutocompleteContext\",\n })\n\nexport { AutocompleteContext, useAutocompleteContext }\n\nexport interface UseAutocompleteProps<Multiple extends boolean = false>\n extends\n Omit<HTMLProps, \"defaultValue\" | \"onChange\" | \"ref\" | \"value\">,\n Omit<\n UseComboboxProps,\n \"defaultValue\" | \"initialFocusValue\" | \"onChange\" | \"ref\" | \"value\"\n >,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * If `true`, the autocomplete will allow custom value.\n *\n * @default false\n */\n allowCustomValue?: boolean\n /**\n * If `true`, the autocomplete will be closed when the input value changes.\n *\n * @default false\n */\n closeOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * The initial value of the input.\n */\n defaultInputValue?: string\n /**\n * The initial value of the autocomplete.\n */\n defaultValue?: Multiple extends true ? string[] : string\n /**\n * The message displayed when the search yields no hits.\n *\n * @default 'No results found'\n */\n emptyMessage?: ReactNode\n /**\n * The function to filter the items.\n */\n filter?: AutocompleteFilter\n /**\n * If `true`, the input will be focused when the clear icon is clicked.\n *\n * @default true\n */\n focusOnClear?: boolean\n /**\n * The `id` attribute of the input element.\n */\n id?: string\n /**\n * The value of the input.\n */\n inputValue?: string\n /**\n * If provided, generate options based on items.\n *\n * @default []\n */\n items?: ComboboxItem[]\n /**\n * The function to match the items.\n */\n matcher?: AutocompleteMatcher\n /**\n * The maximum selectable value.\n */\n max?: number\n /**\n * If `true`, the autocomplete will be multiple.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * The `name` attribute of the input element.\n */\n name?: string\n /**\n * If `true`, the autocomplete will be opened when the input value changes.\n *\n * @default true\n */\n openOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * If `true`, the autocomplete will be opened when the input is focused.\n *\n * @default true\n */\n openOnFocus?: boolean\n /**\n * The placeholder for autocomplete.\n */\n placeholder?: string\n /**\n * The visual separator between each value.\n *\n * @default ','\n */\n separator?: string\n /**\n * The value of the autocomplete.\n */\n value?: Multiple extends true ? string[] : string\n /**\n * The callback invoked when value state changes.\n */\n onChange?: (value: Multiple extends true ? string[] : string) => void\n /**\n * The callback invoked when input value state changes.\n */\n onInputChange?: (value: string) => void\n /**\n * The function to render the selected items.\n */\n render?: (props: AutocompleteRenderProps) => ReactNode\n}\n\nexport const useAutocomplete = <Multiple extends boolean = false>(\n props: UseAutocompleteProps<Multiple> = {},\n) => {\n type MaybeValue = Multiple extends true ? string[] : string\n\n const { t } = useI18n(\"autocomplete\")\n const {\n props: {\n id,\n ref,\n name,\n allowCustomValue = false,\n closeOnChange = false,\n multiple = false,\n closeOnSelect = !multiple,\n defaultInputValue,\n defaultValue = (multiple ? [] : \"\") as MaybeValue,\n disabled,\n emptyMessage = t(\"No results found\"),\n filter = defaultFilter,\n focusOnClear = true,\n inputValue: inputValueProp,\n items = [],\n matcher = match,\n max,\n openOnChange = true,\n openOnClick = true,\n openOnFocus = true,\n placeholder,\n readOnly,\n render = defaultRender,\n required,\n separator = \",\",\n value: valueProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n ...rest\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const fieldRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const focusByClickRef = useRef<boolean>(false)\n const valueMap = useMemo<{ [key: string]: ComboboxItemWithValue }>(() => {\n const valueMap: { [key: string]: ComboboxItemWithValue } = {}\n\n items.forEach((item) => {\n if (\"items\" in item) {\n item.items.forEach((item) => {\n item.value ??= isString(item.label) ? item.label : undefined\n\n if (!isUndefined(item.value)) valueMap[item.value] = item\n })\n } else {\n item.value ??= isString(item.label) ? item.label : undefined\n\n if (!isUndefined(item.value)) valueMap[item.value] = item\n }\n })\n\n return valueMap\n }, [items])\n const [focused, setFocused] = useState(false)\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [inputValue, setInputValue] = useControllableState({\n defaultValue:\n defaultInputValue ??\n getInputValue(isArray(value) ? undefined : valueMap[value as string]),\n value: inputValueProp,\n onChange: onInputChangeProp,\n })\n const onChange = useCallback(\n (selectedValue: string) => {\n setValue((prev) => {\n if (isArray(prev)) {\n if (prev.includes(selectedValue)) {\n return prev.filter(\n (prevValue) => prevValue !== selectedValue,\n ) as MaybeValue\n } else if (!isNumber(max) || prev.length < max) {\n return [...prev, selectedValue] as MaybeValue\n } else {\n return prev\n }\n } else {\n return selectedValue as MaybeValue\n }\n })\n\n if (isArray(value)) {\n setInputValue(\"\")\n } else {\n const item = valueMap[selectedValue]\n\n setInputValue(getInputValue(item))\n }\n },\n [max, setInputValue, setValue, value, valueMap],\n )\n const {\n activeDescendant,\n descendants,\n interactive,\n open,\n getContentProps: getComboboxContentProps,\n getSeparatorProps,\n getTriggerProps,\n popoverProps,\n onActiveDescendant,\n onClose,\n onOpen,\n onOpenWithActiveDescendant,\n onSelect,\n } = useCombobox({\n closeOnSelect,\n disabled,\n initialFocusValue: isArray(value) ? value[0] : value,\n openOnClick: false,\n openOnEnter: false,\n openOnSpace: false,\n readOnly,\n selectFocusRef: inputRef,\n selectOnSpace: false,\n onChange,\n ...ariaProps,\n ...dataProps,\n ...eventProps,\n ...rest,\n })\n const filteredItems = useMemo<ComboboxItem[]>(() => {\n if (!items.length) return []\n\n return filter(inputValue, items, matcher)\n }, [filter, inputValue, items, matcher])\n const resolvedItems = useMemo<ComboboxItem[]>(() => {\n return filteredItems.length\n ? filteredItems\n : [{ \"data-empty\": \"\", label: emptyMessage }]\n }, [filteredItems, emptyMessage])\n const empty = useMemo(\n () => !resolvedItems.filter(({ hidden }) => !hidden).length,\n [resolvedItems],\n )\n const children = useMemo<ReactNode>(() => {\n if (!isArray(value)) return null\n\n const count = value.length\n\n return value.map((value, index) => {\n const item = valueMap[value] ?? { label: value, value }\n\n const onClear = (ev?: MouseEvent<HTMLElement>) => {\n ev?.preventDefault()\n ev?.stopPropagation()\n\n if (item.value) onChange(item.value)\n }\n\n const component = render({\n count,\n focused,\n index,\n max,\n separator,\n onClear,\n ...item,\n })\n\n if (isValidElement<Dict>(component)) {\n return cloneElement(component, { ...component.props, key: index })\n } else {\n return component\n }\n })\n }, [focused, max, onChange, render, separator, value, valueMap])\n const hasValues = isArray(value) && !!value.length\n\n const onInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (isArray(value) && value.length === max) return\n\n if (runIfFn(closeOnChange, ev)) {\n onClose()\n } else if (runIfFn(openOnChange, ev)) {\n onOpen()\n }\n\n activeDescendant.current = null\n\n const inputValue = ev.target.value\n\n setInputValue(inputValue)\n\n if (inputValue.length || isArray(value)) return\n\n setValue(\"\" as MaybeValue)\n },\n [\n activeDescendant,\n closeOnChange,\n max,\n onClose,\n onOpen,\n openOnChange,\n setInputValue,\n setValue,\n value,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || isComposing(ev)) return\n\n const inputValue = cast<HTMLInputElement>(ev.target).value\n\n runKeyAction(\n ev,\n {\n Backspace: (ev) => {\n if (!isArray(value)) return\n if (inputValue.length) return\n\n ev.preventDefault()\n\n setValue((prev) => prev.slice(0, -1) as MaybeValue)\n },\n Enter: (ev) => {\n if (!open || !inputValue.length || activeDescendant.current) return\n\n const item = filteredItems[0]\n\n if (!item) {\n if (!allowCustomValue || !isArray(value)) return\n\n ev.preventDefault()\n\n onSelect(inputValue)\n } else {\n ev.preventDefault()\n\n if (\"items\" in item) {\n onSelect(item.items[0]?.value)\n } else {\n onSelect(item.value)\n }\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n activeDescendant,\n allowCustomValue,\n disabled,\n filteredItems,\n onSelect,\n open,\n setValue,\n value,\n ],\n )\n\n const onClick = useCallback(() => {\n if (!interactive) return\n\n focusByClickRef.current = true\n\n inputRef.current?.focus()\n\n if (openOnClick) onOpenWithActiveDescendant(descendants.enabledFirstValue)\n }, [descendants, interactive, onOpenWithActiveDescendant, openOnClick])\n\n const onMouseDown = useCallback(\n (ev: MouseEvent<HTMLInputElement>) => {\n if (!openOnFocus) return\n\n ev.preventDefault()\n ev.stopPropagation()\n },\n [openOnFocus],\n )\n\n const onFocus = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n setFocused(true)\n\n if (openOnFocus && !focusByClickRef.current)\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n\n focusByClickRef.current = false\n },\n [openOnFocus, onOpenWithActiveDescendant, descendants.enabledFirstValue],\n )\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n if (\n contains(fieldRef.current, ev.relatedTarget) ||\n contains(contentRef.current, ev.relatedTarget)\n ) {\n ev.preventDefault()\n } else {\n setFocused(false)\n\n if (isArray(value)) {\n setInputValue(\"\")\n } else {\n if (allowCustomValue) {\n if (inputValue) setValue(inputValue as MaybeValue)\n } else {\n const item = valueMap[value as string]\n\n setInputValue(getInputValue(item))\n }\n }\n }\n },\n [allowCustomValue, inputValue, setInputValue, setValue, value, valueMap],\n )\n\n const onClear = useCallback(() => {\n if (!interactive) return\n\n setValue((prev) => (isArray(prev) ? [] : \"\") as MaybeValue)\n setInputValue(\"\")\n\n if (focusOnClear) inputRef.current?.focus()\n }, [focusOnClear, interactive, setInputValue, setValue])\n\n useUpdateEffect(() => {\n if (isArray(valueProp)) return\n\n setInputValue(\n getInputValue(valueProp ? valueMap[valueProp as string] : undefined),\n )\n }, [valueProp])\n\n const getRootProps: PropGetter = useCallback(\n (props) => ({\n ...dataProps,\n ...props,\n }),\n [dataProps],\n )\n\n const getFieldProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getTriggerProps({\n ref: mergeRefs(ref, fieldRef),\n tabIndex: -1,\n ...props,\n onClick: handlerAll(props.onClick, onClick),\n }),\n\n [getTriggerProps, onClick],\n )\n\n const getInputProps: PropGetter<\"input\"> = useCallback(\n (props = {}) => ({\n id,\n ref: mergeRefs(props.ref, ref, inputRef),\n name,\n style: {\n ...(!focused && isArray(value) && !!value.length\n ? visuallyHiddenAttributes.style\n : {}),\n ...props.style,\n },\n \"data-max\": dataAttr(\n isArray(value) && isNumber(max) && value.length >= max,\n ),\n autoCapitalize: \"off\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n disabled,\n placeholder: hasValues ? undefined : placeholder,\n readOnly,\n required,\n spellCheck: false,\n value: inputValue,\n ...dataProps,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onInputChange),\n onFocus: handlerAll(props.onFocus, onFocus),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }),\n [\n dataProps,\n disabled,\n focused,\n hasValues,\n id,\n inputValue,\n max,\n name,\n onBlur,\n onFocus,\n onInputChange,\n onKeyDown,\n onMouseDown,\n placeholder,\n readOnly,\n ref,\n required,\n value,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getComboboxContentProps({\n ref: mergeRefs(ref, contentRef),\n hidden: empty,\n ...props,\n }),\n [empty, getComboboxContentProps],\n )\n\n const getIconProps: PropGetter = useCallback(\n (props) => ({ ...dataProps, ...props }),\n [dataProps],\n )\n\n const getClearIconProps: PropGetter = useCallback(\n (props = {}) =>\n getIconProps({\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-label\": t(\"Clear value\"),\n role: \"button\",\n tabIndex: interactive ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClear),\n onKeyDown: handlerAll(props.onKeyDown, (ev) =>\n runKeyAction(ev, { Enter: onClear, Space: onClear }),\n ),\n }),\n [getIconProps, interactive, onClear, t],\n )\n\n return {\n children,\n descendants,\n inputValue,\n interactive,\n items: resolvedItems,\n max,\n open,\n setInputValue,\n setValue,\n value,\n valueMap,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n getSeparatorProps,\n popoverProps,\n onActiveDescendant,\n onChange,\n onClose,\n onInputChange,\n onOpen,\n onSelect,\n }\n}\n\nexport type UseAutocompleteReturn = ReturnType<typeof useAutocomplete>\n\nexport interface UseAutocompleteOptionProps extends UseComboboxItemProps {}\n\nexport const useAutocompleteOption = ({\n children,\n closeOnSelect,\n disabled,\n hidden,\n value,\n ...rest\n}: UseAutocompleteOptionProps = {}) => {\n const { max, value: selectedValue } = useAutocompleteContext()\n\n value ??= isString(children) ? children : undefined\n\n const selected = isArray(selectedValue)\n ? !isUndefined(value) && selectedValue.includes(value)\n : selectedValue === value\n const completed =\n isNumber(max) && isArray(selectedValue) && selectedValue.length >= max\n const { getIndicatorProps, getItemProps } = useComboboxItem({\n children,\n closeOnSelect,\n disabled: disabled || hidden || (completed && !selected),\n hidden,\n selected,\n value,\n ...rest,\n })\n\n const getOptionProps: PropGetter = useCallback(\n (props = {}) => getItemProps(props),\n [getItemProps],\n )\n\n return { getIndicatorProps, getOptionProps }\n}\n\nexport type UseAutocompleteOptionReturn = ReturnType<\n typeof useAutocompleteOption\n>\n"],"mappings":"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"}
|
|
@@ -66,7 +66,7 @@ const menuStyle = require_config.defineComponentSlotStyle({
|
|
|
66
66
|
focusVisibleRing: "none",
|
|
67
67
|
minH: "{item-height}",
|
|
68
68
|
userSelect: "none",
|
|
69
|
-
_activedescendant: { bg:
|
|
69
|
+
_activedescendant: { bg: "bg.subtle" },
|
|
70
70
|
_disabled: { layerStyle: "disabled" }
|
|
71
71
|
},
|
|
72
72
|
label: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.style.cjs","names":["defineComponentSlotStyle","popoverStyle"],"sources":["../../../../src/components/menu/menu.style.ts"],"sourcesContent":["import { defineComponentSlotStyle } from \"../../core\"\nimport { popoverStyle } from \"../popover\"\n\nexport const menuStyle = defineComponentSlotStyle({\n base: {\n command: {\n textStyle: \"mono\",\n color: \"fg.muted\",\n ms: \"auto\",\n },\n content: {\n \"&:has([data-footer])\": {\n scrollPaddingBottom: \"calc({space} + {footer-height} + {border-width})\",\n },\n \"&:has([data-header])\": {\n scrollPaddingTop: \"calc({space} + {header-height} + {border-width})\",\n },\n \"--border-width\": \"1px\",\n \"--footer-height\": \"{item-height}\",\n \"--header-height\": \"{item-height}\",\n gap: \"0\",\n overflow: \"auto\",\n p: \"{space}\",\n scrollPaddingBottom: \"{space}\",\n scrollPaddingTop: \"{space}\",\n },\n footer: {\n alignItems: \"center\",\n bg: popoverStyle.base?.content?.bg,\n borderTopWidth: \"{border-width}\",\n bottom: \"calc({space} * -1)\",\n display: \"flex\",\n left: \"0\",\n mb: \"calc({space} * -1)\",\n minH: \"{footer-height}\",\n mt: \"{space}\",\n mx: \"calc({space} * -1)\",\n position: \"sticky\",\n right: \"0\",\n },\n group: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n header: {\n alignItems: \"center\",\n bg: popoverStyle.base?.content?.bg,\n borderBottomWidth: \"{border-width}\",\n display: \"flex\",\n left: \"0\",\n mb: \"{space}\",\n minH: \"{header-height}\",\n mt: \"calc({space} * -1)\",\n mx: \"calc({space} * -1)\",\n position: \"sticky\",\n right: \"0\",\n top: \"calc({space} * -1)\",\n },\n indicator: {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n item: {\n alignItems: \"center\",\n display: \"flex\",\n focusVisibleRing: \"none\",\n minH: \"{item-height}\",\n userSelect: \"none\",\n _activedescendant: { bg:
|
|
1
|
+
{"version":3,"file":"menu.style.cjs","names":["defineComponentSlotStyle","popoverStyle"],"sources":["../../../../src/components/menu/menu.style.ts"],"sourcesContent":["import { defineComponentSlotStyle } from \"../../core\"\nimport { popoverStyle } from \"../popover\"\n\nexport const menuStyle = defineComponentSlotStyle({\n base: {\n command: {\n textStyle: \"mono\",\n color: \"fg.muted\",\n ms: \"auto\",\n },\n content: {\n \"&:has([data-footer])\": {\n scrollPaddingBottom: \"calc({space} + {footer-height} + {border-width})\",\n },\n \"&:has([data-header])\": {\n scrollPaddingTop: \"calc({space} + {header-height} + {border-width})\",\n },\n \"--border-width\": \"1px\",\n \"--footer-height\": \"{item-height}\",\n \"--header-height\": \"{item-height}\",\n gap: \"0\",\n overflow: \"auto\",\n p: \"{space}\",\n scrollPaddingBottom: \"{space}\",\n scrollPaddingTop: \"{space}\",\n },\n footer: {\n alignItems: \"center\",\n bg: popoverStyle.base?.content?.bg,\n borderTopWidth: \"{border-width}\",\n bottom: \"calc({space} * -1)\",\n display: \"flex\",\n left: \"0\",\n mb: \"calc({space} * -1)\",\n minH: \"{footer-height}\",\n mt: \"{space}\",\n mx: \"calc({space} * -1)\",\n position: \"sticky\",\n right: \"0\",\n },\n group: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n header: {\n alignItems: \"center\",\n bg: popoverStyle.base?.content?.bg,\n borderBottomWidth: \"{border-width}\",\n display: \"flex\",\n left: \"0\",\n mb: \"{space}\",\n minH: \"{header-height}\",\n mt: \"calc({space} * -1)\",\n mx: \"calc({space} * -1)\",\n position: \"sticky\",\n right: \"0\",\n top: \"calc({space} * -1)\",\n },\n indicator: {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n item: {\n alignItems: \"center\",\n display: \"flex\",\n focusVisibleRing: \"none\",\n minH: \"{item-height}\",\n userSelect: \"none\",\n _activedescendant: { bg: \"bg.subtle\" },\n _disabled: { layerStyle: \"disabled\" },\n },\n label: {\n alignItems: \"center\",\n display: \"flex\",\n fontWeight: \"medium\",\n minH: \"{item-height}\",\n },\n separator: {\n \"& + hr\": { display: \"none\" },\n \"&:last-child, &:first-child\": { display: \"none\" },\n borderBottomWidth: \"{border-width}\",\n mx: \"calc({space} * -1)\",\n my: \"{space}\",\n },\n },\n\n sizes: {\n sm: {\n command: { fontSize: \"2xs\" },\n content: {\n \"--item-height\": \"spaces.7\",\n \"--space\": \"spaces.1\",\n fontSize: \"xs\",\n minW: \"3xs\",\n },\n footer: { px: \"1.5\" },\n header: { px: \"1.5\" },\n indicator: { fontSize: \"sm\" },\n item: { gap: \"1.5\", px: \"1.5\", rounded: \"l1\" },\n label: { px: \"1.5\" },\n },\n md: {\n command: { fontSize: \"xs\" },\n content: {\n \"--item-height\": \"spaces.8\",\n \"--space\": \"spaces.1\",\n fontSize: \"sm\",\n minW: \"2xs\",\n },\n footer: { px: \"2\" },\n header: { px: \"2\" },\n indicator: { fontSize: \"md\" },\n item: { gap: \"2\", px: \"2\", rounded: \"l1\" },\n label: { px: \"2\" },\n },\n lg: {\n command: { fontSize: \"sm\" },\n content: {\n \"--item-height\": \"spaces.9\",\n \"--space\": \"spaces.1\",\n fontSize: \"md\",\n minW: \"2xs\",\n },\n footer: { px: \"2\" },\n header: { px: \"2\" },\n indicator: { fontSize: \"lg\" },\n item: { gap: \"2\", px: \"2\", rounded: \"l1\" },\n label: { px: \"2\" },\n },\n },\n\n defaultProps: {\n size: \"md\",\n },\n})\n\nexport type MenuStyle = typeof menuStyle\n"],"mappings":";;;;;;AAGA,MAAa,YAAYA,wCAAyB;CAChD,MAAM;EACJ,SAAS;GACP,WAAW;GACX,OAAO;GACP,IAAI;GACL;EACD,SAAS;GACP,wBAAwB,EACtB,qBAAqB,oDACtB;GACD,wBAAwB,EACtB,kBAAkB,oDACnB;GACD,kBAAkB;GAClB,mBAAmB;GACnB,mBAAmB;GACnB,KAAK;GACL,UAAU;GACV,GAAG;GACH,qBAAqB;GACrB,kBAAkB;GACnB;EACD,QAAQ;GACN,YAAY;GACZ,IAAIC,mCAAa,MAAM,SAAS;GAChC,gBAAgB;GAChB,QAAQ;GACR,SAAS;GACT,MAAM;GACN,IAAI;GACJ,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,UAAU;GACV,OAAO;GACR;EACD,OAAO;GACL,SAAS;GACT,eAAe;GAChB;EACD,QAAQ;GACN,YAAY;GACZ,IAAIA,mCAAa,MAAM,SAAS;GAChC,mBAAmB;GACnB,SAAS;GACT,MAAM;GACN,IAAI;GACJ,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,UAAU;GACV,OAAO;GACP,KAAK;GACN;EACD,WAAW;GACT,YAAY;GACZ,SAAS;GACT,gBAAgB;GACjB;EACD,MAAM;GACJ,YAAY;GACZ,SAAS;GACT,kBAAkB;GAClB,MAAM;GACN,YAAY;GACZ,mBAAmB,EAAE,IAAI,aAAa;GACtC,WAAW,EAAE,YAAY,YAAY;GACtC;EACD,OAAO;GACL,YAAY;GACZ,SAAS;GACT,YAAY;GACZ,MAAM;GACP;EACD,WAAW;GACT,UAAU,EAAE,SAAS,QAAQ;GAC7B,+BAA+B,EAAE,SAAS,QAAQ;GAClD,mBAAmB;GACnB,IAAI;GACJ,IAAI;GACL;EACF;CAED,OAAO;EACL,IAAI;GACF,SAAS,EAAE,UAAU,OAAO;GAC5B,SAAS;IACP,iBAAiB;IACjB,WAAW;IACX,UAAU;IACV,MAAM;IACP;GACD,QAAQ,EAAE,IAAI,OAAO;GACrB,QAAQ,EAAE,IAAI,OAAO;GACrB,WAAW,EAAE,UAAU,MAAM;GAC7B,MAAM;IAAE,KAAK;IAAO,IAAI;IAAO,SAAS;IAAM;GAC9C,OAAO,EAAE,IAAI,OAAO;GACrB;EACD,IAAI;GACF,SAAS,EAAE,UAAU,MAAM;GAC3B,SAAS;IACP,iBAAiB;IACjB,WAAW;IACX,UAAU;IACV,MAAM;IACP;GACD,QAAQ,EAAE,IAAI,KAAK;GACnB,QAAQ,EAAE,IAAI,KAAK;GACnB,WAAW,EAAE,UAAU,MAAM;GAC7B,MAAM;IAAE,KAAK;IAAK,IAAI;IAAK,SAAS;IAAM;GAC1C,OAAO,EAAE,IAAI,KAAK;GACnB;EACD,IAAI;GACF,SAAS,EAAE,UAAU,MAAM;GAC3B,SAAS;IACP,iBAAiB;IACjB,WAAW;IACX,UAAU;IACV,MAAM;IACP;GACD,QAAQ,EAAE,IAAI,KAAK;GACnB,QAAQ,EAAE,IAAI,KAAK;GACnB,WAAW,EAAE,UAAU,MAAM;GAC7B,MAAM;IAAE,KAAK;IAAK,IAAI;IAAK,SAAS;IAAM;GAC1C,OAAO,EAAE,IAAI,KAAK;GACnB;EACF;CAED,cAAc,EACZ,MAAM,MACP;CACF,CAAC"}
|
|
@@ -16,7 +16,7 @@ const colors = require_config.defineSemanticTokens.colors({
|
|
|
16
16
|
muted: ["black.100", "white.200"],
|
|
17
17
|
overlay: "blackAlpha.600",
|
|
18
18
|
panel: ["black.bg", "white.bg"],
|
|
19
|
-
subtle: ["black.50", "white.
|
|
19
|
+
subtle: ["black.50", "white.200/50"],
|
|
20
20
|
success: ["success.50", "success.950"],
|
|
21
21
|
warning: ["warning.50", "warning.950"]
|
|
22
22
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.cjs","names":["defineSemanticTokens"],"sources":["../../../../src/theme/semantic-tokens/colors.ts"],"sourcesContent":["import { defineSemanticTokens } from \"../../core\"\n\nexport const colors = defineSemanticTokens.colors({\n current: \"currentColor\",\n transparent: \"transparent\",\n\n bg: {\n base: [\"white\", \"black\"],\n contrast: [\"black\", \"white\"],\n emphasized: [\"black.200\", \"white.300\"],\n error: [\"error.50\", \"error.950\"],\n float: [\"white\", \"white.bg\"],\n ghost: [\"black.50\", \"white.50\"],\n info: [\"info.50\", \"info.950\"],\n muted: [\"black.100\", \"white.200\"],\n overlay: \"blackAlpha.600\",\n panel: [\"black.bg\", \"white.bg\"],\n subtle: [\"black.50\", \"white.100\"],\n success: [\"success.50\", \"success.950\"],\n warning: [\"warning.50\", \"warning.950\"],\n },\n border: {\n base: [\"black.100\", \"white.200/70\"],\n contrast: [\"black\", \"white\"],\n emphasized: [\"black.200\", \"white.300/70\"],\n error: [\"error.500\", \"error.400\"],\n info: [\"info.500\", \"info.400\"],\n muted: [\"black.100\", \"white.200/70\"],\n subtle: [\"black.50\", \"white.100/70\"],\n success: [\"success.500\", \"success.400\"],\n warning: [\"warning.500\", \"warning.400\"],\n },\n fg: {\n base: [\"#171717\", \"#ededed\"],\n contrast: [\"#fafafa\", \"#000000\"],\n emphasized: [\"gray.600\", \"gray.300\"],\n error: [\"error.500\", \"error.500\"],\n info: [\"info.500\", \"info.500\"],\n muted: [\"gray.500\", \"gray.400\"],\n subtle: [\"gray.400\", \"gray.500\"],\n success: [\"success.500\", \"success.500\"],\n warning: [\"warning.500\", \"warning.500\"],\n },\n\n black: {\n base: \"#0a0b0b\",\n bg: \"#f8f8f8\",\n contrast: \"white\",\n emphasized: \"black.200\",\n fg: \"black.800\",\n ghost: \"black.100/50\",\n muted: \"black.100\",\n outline: \"black.900\",\n solid: \"black\",\n subtle: \"black.50\",\n },\n white: {\n base: \"#ffffff\",\n bg: \"#161616\",\n contrast: \"black\",\n emphasized: \"white.400/50\",\n fg: \"white.900\",\n ghost: \"white.200/50\",\n muted: \"white.300/50\",\n outline: \"white.800\",\n solid: \"white\",\n subtle: \"white.200/50\",\n },\n\n gray: {\n base: \"gray.500\",\n bg: [\"black.bg\", \"white.bg\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"black.200\", \"white.400/50\"],\n fg: [\"black.800\", \"white.900\"],\n ghost: [\"black.100/50\", \"white.200/50\"],\n muted: [\"black.100\", \"white.300/50\"],\n outline: [\"black.900\", \"white.800\"],\n solid: [\"gray.500\", \"gray.800\"],\n subtle: [\"black.50\", \"white.200/50\"],\n },\n\n cyan: {\n base: \"cyan.500\",\n bg: [\"cyan.50/40\", \"cyan.400/10\"],\n contrast: [\"black\", \"black\"],\n emphasized: [\"cyan.200\", \"cyan.700\"],\n fg: [\"cyan.800\", \"cyan.100\"],\n ghost: [\"cyan.50\", \"cyan.800/50\"],\n muted: [\"cyan.100\", \"cyan.800\"],\n outline: [\"cyan.600\", \"cyan.500\"],\n solid: [\"cyan.400\", \"cyan.500\"],\n subtle: [\"cyan.50\", \"cyan.800/50\"],\n },\n emerald: {\n base: \"emerald.500\",\n bg: [\"emerald.50/40\", \"emerald.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"emerald.200\", \"emerald.700\"],\n fg: [\"emerald.700\", \"emerald.100\"],\n ghost: [\"emerald.50\", \"emerald.800/50\"],\n muted: [\"emerald.100\", \"emerald.800\"],\n outline: [\"emerald.600\", \"emerald.500\"],\n solid: [\"emerald.500\", \"emerald.600\"],\n subtle: [\"emerald.50\", \"emerald.800/50\"],\n },\n teal: {\n base: \"teal.500\",\n bg: [\"teal.50/40\", \"teal.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"teal.200\", \"teal.700\"],\n fg: [\"teal.700\", \"teal.100\"],\n ghost: [\"teal.50\", \"teal.800/50\"],\n muted: [\"teal.100\", \"teal.800\"],\n outline: [\"teal.600\", \"teal.500\"],\n solid: [\"teal.500\", \"teal.600\"],\n subtle: [\"teal.50\", \"teal.800/50\"],\n },\n\n green: {\n base: \"green.500\",\n bg: [\"green.50/40\", \"green.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"green.200\", \"green.700\"],\n fg: [\"green.700\", \"green.100\"],\n ghost: [\"green.50\", \"green.900\"],\n muted: [\"green.100\", \"green.800\"],\n outline: [\"green.600\", \"green.500\"],\n solid: [\"green.500\", \"green.600\"],\n subtle: [\"green.50\", \"green.900\"],\n },\n lime: {\n base: \"lime.500\",\n bg: [\"lime.50/40\", \"lime.400/10\"],\n contrast: [\"black\", \"black\"],\n emphasized: [\"lime.200\", \"lime.700\"],\n fg: [\"lime.800\", \"lime.100\"],\n ghost: [\"lime.50\", \"lime.900\"],\n muted: [\"lime.100\", \"lime.800\"],\n outline: [\"lime.600\", \"lime.500\"],\n solid: [\"lime.400\", \"lime.500\"],\n subtle: [\"lime.50\", \"lime.900\"],\n },\n sky: {\n base: \"sky.500\",\n bg: [\"sky.50/40\", \"sky.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"sky.200\", \"sky.700\"],\n fg: [\"sky.700\", \"sky.100\"],\n ghost: [\"sky.50\", \"sky.900\"],\n muted: [\"sky.100\", \"sky.800\"],\n outline: [\"sky.600\", \"sky.500\"],\n solid: [\"sky.500\", \"sky.600\"],\n subtle: [\"sky.50\", \"sky.900\"],\n },\n\n amber: {\n base: \"amber.500\",\n bg: [\"amber.50/40\", \"amber.400/10\"],\n contrast: [\"black\", \"black\"],\n emphasized: [\"amber.200\", \"amber.700\"],\n fg: [\"amber.800\", \"amber.100\"],\n ghost: [\"amber.50\", \"amber.950/50\"],\n muted: [\"amber.100\", \"amber.800\"],\n outline: [\"amber.600\", \"amber.500\"],\n solid: [\"amber.400\", \"amber.500\"],\n subtle: [\"amber.50\", \"amber.950\"],\n },\n blue: {\n base: \"blue.500\",\n bg: [\"blue.50/40\", \"blue.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"blue.200\", \"blue.700\"],\n fg: [\"blue.700\", \"blue.100\"],\n ghost: [\"blue.50\", \"blue.950/50\"],\n muted: [\"blue.100\", \"blue.800\"],\n outline: [\"blue.600\", \"blue.500\"],\n solid: [\"blue.500\", \"blue.600\"],\n subtle: [\"blue.50\", \"blue.950\"],\n },\n flashy: {\n base: \"flashy.500\",\n bg: [\"flashy.50/40\", \"flashy.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"flashy.200\", \"flashy.700\"],\n fg: [\"flashy.700\", \"flashy.100\"],\n ghost: [\"flashy.50\", \"flashy.950/50\"],\n muted: [\"flashy.100\", \"flashy.800\"],\n outline: [\"flashy.600\", \"flashy.500\"],\n solid: [\"flashy.500\", \"flashy.600\"],\n subtle: [\"flashy.50\", \"flashy.950\"],\n },\n fuchsia: {\n base: \"fuchsia.500\",\n bg: [\"fuchsia.50/40\", \"fuchsia.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"fuchsia.200\", \"fuchsia.700\"],\n fg: [\"fuchsia.700\", \"fuchsia.100\"],\n ghost: [\"fuchsia.50\", \"fuchsia.950/50\"],\n muted: [\"fuchsia.100\", \"fuchsia.800\"],\n outline: [\"fuchsia.600\", \"fuchsia.500\"],\n solid: [\"fuchsia.500\", \"fuchsia.600\"],\n subtle: [\"fuchsia.50\", \"fuchsia.950\"],\n },\n indigo: {\n base: \"indigo.500\",\n bg: [\"indigo.50/40\", \"indigo.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"indigo.200\", \"indigo.700\"],\n fg: [\"indigo.700\", \"indigo.100\"],\n ghost: [\"indigo.50\", \"indigo.950/50\"],\n muted: [\"indigo.100\", \"indigo.800\"],\n outline: [\"indigo.600\", \"indigo.500\"],\n solid: [\"indigo.500\", \"indigo.600\"],\n subtle: [\"indigo.50\", \"indigo.950\"],\n },\n orange: {\n base: \"orange.500\",\n bg: [\"orange.50/40\", \"orange.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"orange.200\", \"orange.700\"],\n fg: [\"orange.700\", \"orange.100\"],\n ghost: [\"orange.50\", \"orange.950/50\"],\n muted: [\"orange.100\", \"orange.800\"],\n outline: [\"orange.600\", \"orange.500\"],\n solid: [\"orange.500\", \"orange.600\"],\n subtle: [\"orange.50\", \"orange.950\"],\n },\n pink: {\n base: \"pink.500\",\n bg: [\"pink.50/40\", \"pink.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"pink.200\", \"pink.700\"],\n fg: [\"pink.700\", \"pink.100\"],\n ghost: [\"pink.50\", \"pink.950/50\"],\n muted: [\"pink.100\", \"pink.800\"],\n outline: [\"pink.600\", \"pink.500\"],\n solid: [\"pink.500\", \"pink.600\"],\n subtle: [\"pink.50\", \"pink.950\"],\n },\n purple: {\n base: \"purple.500\",\n bg: [\"purple.50/40\", \"purple.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"purple.200\", \"purple.700\"],\n fg: [\"purple.700\", \"purple.100\"],\n ghost: [\"purple.50\", \"purple.950/50\"],\n muted: [\"purple.100\", \"purple.800\"],\n outline: [\"purple.600\", \"purple.500\"],\n solid: [\"purple.500\", \"purple.600\"],\n subtle: [\"purple.50\", \"purple.950\"],\n },\n red: {\n base: \"red.500\",\n bg: [\"red.50/40\", \"red.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"red.200\", \"red.700\"],\n fg: [\"red.700\", \"red.100\"],\n ghost: [\"red.50\", \"red.950/50\"],\n muted: [\"red.100\", \"red.800\"],\n outline: [\"red.600\", \"red.500\"],\n solid: [\"red.500\", \"red.600\"],\n subtle: [\"red.50\", \"red.950\"],\n },\n rose: {\n base: \"rose.500\",\n bg: [\"rose.50/40\", \"rose.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"rose.200\", \"rose.700\"],\n fg: [\"rose.700\", \"rose.100\"],\n ghost: [\"rose.50\", \"rose.950/50\"],\n muted: [\"rose.100\", \"rose.800\"],\n outline: [\"rose.600\", \"rose.500\"],\n solid: [\"rose.500\", \"rose.600\"],\n subtle: [\"rose.50\", \"rose.950\"],\n },\n violet: {\n base: \"violet.500\",\n bg: [\"violet.50/40\", \"violet.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"violet.200\", \"violet.700\"],\n fg: [\"violet.700\", \"violet.100\"],\n ghost: [\"violet.50\", \"violet.950/50\"],\n muted: [\"violet.100\", \"violet.800\"],\n outline: [\"violet.600\", \"violet.500\"],\n solid: [\"violet.500\", \"violet.600\"],\n subtle: [\"violet.50\", \"violet.950\"],\n },\n yellow: {\n base: \"yellow.500\",\n bg: [\"yellow.50/40\", \"yellow.400/10\"],\n contrast: [\"black\", \"black\"],\n emphasized: [\"yellow.200\", \"yellow.700\"],\n fg: [\"yellow.800\", \"yellow.100\"],\n ghost: [\"yellow.50\", \"yellow.950/50\"],\n muted: [\"yellow.100\", \"yellow.800\"],\n outline: [\"yellow.600\", \"yellow.500\"],\n solid: [\"yellow.400\", \"yellow.500\"],\n subtle: [\"yellow.50\", \"yellow.950\"],\n },\n})\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"colors.cjs","names":["defineSemanticTokens"],"sources":["../../../../src/theme/semantic-tokens/colors.ts"],"sourcesContent":["import { defineSemanticTokens } from \"../../core\"\n\nexport const colors = defineSemanticTokens.colors({\n current: \"currentColor\",\n transparent: \"transparent\",\n\n bg: {\n base: [\"white\", \"black\"],\n contrast: [\"black\", \"white\"],\n emphasized: [\"black.200\", \"white.300\"],\n error: [\"error.50\", \"error.950\"],\n float: [\"white\", \"white.bg\"],\n ghost: [\"black.50\", \"white.50\"],\n info: [\"info.50\", \"info.950\"],\n muted: [\"black.100\", \"white.200\"],\n overlay: \"blackAlpha.600\",\n panel: [\"black.bg\", \"white.bg\"],\n subtle: [\"black.50\", \"white.200/50\"],\n success: [\"success.50\", \"success.950\"],\n warning: [\"warning.50\", \"warning.950\"],\n },\n border: {\n base: [\"black.100\", \"white.200/70\"],\n contrast: [\"black\", \"white\"],\n emphasized: [\"black.200\", \"white.300/70\"],\n error: [\"error.500\", \"error.400\"],\n info: [\"info.500\", \"info.400\"],\n muted: [\"black.100\", \"white.200/70\"],\n subtle: [\"black.50\", \"white.100/70\"],\n success: [\"success.500\", \"success.400\"],\n warning: [\"warning.500\", \"warning.400\"],\n },\n fg: {\n base: [\"#171717\", \"#ededed\"],\n contrast: [\"#fafafa\", \"#000000\"],\n emphasized: [\"gray.600\", \"gray.300\"],\n error: [\"error.500\", \"error.500\"],\n info: [\"info.500\", \"info.500\"],\n muted: [\"gray.500\", \"gray.400\"],\n subtle: [\"gray.400\", \"gray.500\"],\n success: [\"success.500\", \"success.500\"],\n warning: [\"warning.500\", \"warning.500\"],\n },\n\n black: {\n base: \"#0a0b0b\",\n bg: \"#f8f8f8\",\n contrast: \"white\",\n emphasized: \"black.200\",\n fg: \"black.800\",\n ghost: \"black.100/50\",\n muted: \"black.100\",\n outline: \"black.900\",\n solid: \"black\",\n subtle: \"black.50\",\n },\n white: {\n base: \"#ffffff\",\n bg: \"#161616\",\n contrast: \"black\",\n emphasized: \"white.400/50\",\n fg: \"white.900\",\n ghost: \"white.200/50\",\n muted: \"white.300/50\",\n outline: \"white.800\",\n solid: \"white\",\n subtle: \"white.200/50\",\n },\n\n gray: {\n base: \"gray.500\",\n bg: [\"black.bg\", \"white.bg\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"black.200\", \"white.400/50\"],\n fg: [\"black.800\", \"white.900\"],\n ghost: [\"black.100/50\", \"white.200/50\"],\n muted: [\"black.100\", \"white.300/50\"],\n outline: [\"black.900\", \"white.800\"],\n solid: [\"gray.500\", \"gray.800\"],\n subtle: [\"black.50\", \"white.200/50\"],\n },\n\n cyan: {\n base: \"cyan.500\",\n bg: [\"cyan.50/40\", \"cyan.400/10\"],\n contrast: [\"black\", \"black\"],\n emphasized: [\"cyan.200\", \"cyan.700\"],\n fg: [\"cyan.800\", \"cyan.100\"],\n ghost: [\"cyan.50\", \"cyan.800/50\"],\n muted: [\"cyan.100\", \"cyan.800\"],\n outline: [\"cyan.600\", \"cyan.500\"],\n solid: [\"cyan.400\", \"cyan.500\"],\n subtle: [\"cyan.50\", \"cyan.800/50\"],\n },\n emerald: {\n base: \"emerald.500\",\n bg: [\"emerald.50/40\", \"emerald.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"emerald.200\", \"emerald.700\"],\n fg: [\"emerald.700\", \"emerald.100\"],\n ghost: [\"emerald.50\", \"emerald.800/50\"],\n muted: [\"emerald.100\", \"emerald.800\"],\n outline: [\"emerald.600\", \"emerald.500\"],\n solid: [\"emerald.500\", \"emerald.600\"],\n subtle: [\"emerald.50\", \"emerald.800/50\"],\n },\n teal: {\n base: \"teal.500\",\n bg: [\"teal.50/40\", \"teal.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"teal.200\", \"teal.700\"],\n fg: [\"teal.700\", \"teal.100\"],\n ghost: [\"teal.50\", \"teal.800/50\"],\n muted: [\"teal.100\", \"teal.800\"],\n outline: [\"teal.600\", \"teal.500\"],\n solid: [\"teal.500\", \"teal.600\"],\n subtle: [\"teal.50\", \"teal.800/50\"],\n },\n\n green: {\n base: \"green.500\",\n bg: [\"green.50/40\", \"green.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"green.200\", \"green.700\"],\n fg: [\"green.700\", \"green.100\"],\n ghost: [\"green.50\", \"green.900\"],\n muted: [\"green.100\", \"green.800\"],\n outline: [\"green.600\", \"green.500\"],\n solid: [\"green.500\", \"green.600\"],\n subtle: [\"green.50\", \"green.900\"],\n },\n lime: {\n base: \"lime.500\",\n bg: [\"lime.50/40\", \"lime.400/10\"],\n contrast: [\"black\", \"black\"],\n emphasized: [\"lime.200\", \"lime.700\"],\n fg: [\"lime.800\", \"lime.100\"],\n ghost: [\"lime.50\", \"lime.900\"],\n muted: [\"lime.100\", \"lime.800\"],\n outline: [\"lime.600\", \"lime.500\"],\n solid: [\"lime.400\", \"lime.500\"],\n subtle: [\"lime.50\", \"lime.900\"],\n },\n sky: {\n base: \"sky.500\",\n bg: [\"sky.50/40\", \"sky.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"sky.200\", \"sky.700\"],\n fg: [\"sky.700\", \"sky.100\"],\n ghost: [\"sky.50\", \"sky.900\"],\n muted: [\"sky.100\", \"sky.800\"],\n outline: [\"sky.600\", \"sky.500\"],\n solid: [\"sky.500\", \"sky.600\"],\n subtle: [\"sky.50\", \"sky.900\"],\n },\n\n amber: {\n base: \"amber.500\",\n bg: [\"amber.50/40\", \"amber.400/10\"],\n contrast: [\"black\", \"black\"],\n emphasized: [\"amber.200\", \"amber.700\"],\n fg: [\"amber.800\", \"amber.100\"],\n ghost: [\"amber.50\", \"amber.950/50\"],\n muted: [\"amber.100\", \"amber.800\"],\n outline: [\"amber.600\", \"amber.500\"],\n solid: [\"amber.400\", \"amber.500\"],\n subtle: [\"amber.50\", \"amber.950\"],\n },\n blue: {\n base: \"blue.500\",\n bg: [\"blue.50/40\", \"blue.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"blue.200\", \"blue.700\"],\n fg: [\"blue.700\", \"blue.100\"],\n ghost: [\"blue.50\", \"blue.950/50\"],\n muted: [\"blue.100\", \"blue.800\"],\n outline: [\"blue.600\", \"blue.500\"],\n solid: [\"blue.500\", \"blue.600\"],\n subtle: [\"blue.50\", \"blue.950\"],\n },\n flashy: {\n base: \"flashy.500\",\n bg: [\"flashy.50/40\", \"flashy.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"flashy.200\", \"flashy.700\"],\n fg: [\"flashy.700\", \"flashy.100\"],\n ghost: [\"flashy.50\", \"flashy.950/50\"],\n muted: [\"flashy.100\", \"flashy.800\"],\n outline: [\"flashy.600\", \"flashy.500\"],\n solid: [\"flashy.500\", \"flashy.600\"],\n subtle: [\"flashy.50\", \"flashy.950\"],\n },\n fuchsia: {\n base: \"fuchsia.500\",\n bg: [\"fuchsia.50/40\", \"fuchsia.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"fuchsia.200\", \"fuchsia.700\"],\n fg: [\"fuchsia.700\", \"fuchsia.100\"],\n ghost: [\"fuchsia.50\", \"fuchsia.950/50\"],\n muted: [\"fuchsia.100\", \"fuchsia.800\"],\n outline: [\"fuchsia.600\", \"fuchsia.500\"],\n solid: [\"fuchsia.500\", \"fuchsia.600\"],\n subtle: [\"fuchsia.50\", \"fuchsia.950\"],\n },\n indigo: {\n base: \"indigo.500\",\n bg: [\"indigo.50/40\", \"indigo.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"indigo.200\", \"indigo.700\"],\n fg: [\"indigo.700\", \"indigo.100\"],\n ghost: [\"indigo.50\", \"indigo.950/50\"],\n muted: [\"indigo.100\", \"indigo.800\"],\n outline: [\"indigo.600\", \"indigo.500\"],\n solid: [\"indigo.500\", \"indigo.600\"],\n subtle: [\"indigo.50\", \"indigo.950\"],\n },\n orange: {\n base: \"orange.500\",\n bg: [\"orange.50/40\", \"orange.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"orange.200\", \"orange.700\"],\n fg: [\"orange.700\", \"orange.100\"],\n ghost: [\"orange.50\", \"orange.950/50\"],\n muted: [\"orange.100\", \"orange.800\"],\n outline: [\"orange.600\", \"orange.500\"],\n solid: [\"orange.500\", \"orange.600\"],\n subtle: [\"orange.50\", \"orange.950\"],\n },\n pink: {\n base: \"pink.500\",\n bg: [\"pink.50/40\", \"pink.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"pink.200\", \"pink.700\"],\n fg: [\"pink.700\", \"pink.100\"],\n ghost: [\"pink.50\", \"pink.950/50\"],\n muted: [\"pink.100\", \"pink.800\"],\n outline: [\"pink.600\", \"pink.500\"],\n solid: [\"pink.500\", \"pink.600\"],\n subtle: [\"pink.50\", \"pink.950\"],\n },\n purple: {\n base: \"purple.500\",\n bg: [\"purple.50/40\", \"purple.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"purple.200\", \"purple.700\"],\n fg: [\"purple.700\", \"purple.100\"],\n ghost: [\"purple.50\", \"purple.950/50\"],\n muted: [\"purple.100\", \"purple.800\"],\n outline: [\"purple.600\", \"purple.500\"],\n solid: [\"purple.500\", \"purple.600\"],\n subtle: [\"purple.50\", \"purple.950\"],\n },\n red: {\n base: \"red.500\",\n bg: [\"red.50/40\", \"red.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"red.200\", \"red.700\"],\n fg: [\"red.700\", \"red.100\"],\n ghost: [\"red.50\", \"red.950/50\"],\n muted: [\"red.100\", \"red.800\"],\n outline: [\"red.600\", \"red.500\"],\n solid: [\"red.500\", \"red.600\"],\n subtle: [\"red.50\", \"red.950\"],\n },\n rose: {\n base: \"rose.500\",\n bg: [\"rose.50/40\", \"rose.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"rose.200\", \"rose.700\"],\n fg: [\"rose.700\", \"rose.100\"],\n ghost: [\"rose.50\", \"rose.950/50\"],\n muted: [\"rose.100\", \"rose.800\"],\n outline: [\"rose.600\", \"rose.500\"],\n solid: [\"rose.500\", \"rose.600\"],\n subtle: [\"rose.50\", \"rose.950\"],\n },\n violet: {\n base: \"violet.500\",\n bg: [\"violet.50/40\", \"violet.400/10\"],\n contrast: [\"white\", \"white\"],\n emphasized: [\"violet.200\", \"violet.700\"],\n fg: [\"violet.700\", \"violet.100\"],\n ghost: [\"violet.50\", \"violet.950/50\"],\n muted: [\"violet.100\", \"violet.800\"],\n outline: [\"violet.600\", \"violet.500\"],\n solid: [\"violet.500\", \"violet.600\"],\n subtle: [\"violet.50\", \"violet.950\"],\n },\n yellow: {\n base: \"yellow.500\",\n bg: [\"yellow.50/40\", \"yellow.400/10\"],\n contrast: [\"black\", \"black\"],\n emphasized: [\"yellow.200\", \"yellow.700\"],\n fg: [\"yellow.800\", \"yellow.100\"],\n ghost: [\"yellow.50\", \"yellow.950/50\"],\n muted: [\"yellow.100\", \"yellow.800\"],\n outline: [\"yellow.600\", \"yellow.500\"],\n solid: [\"yellow.400\", \"yellow.500\"],\n subtle: [\"yellow.50\", \"yellow.950\"],\n },\n})\n"],"mappings":"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"}
|
|
@@ -23,30 +23,29 @@ const defaultRender = ({ count, focused, index, label, max, separator }) => {
|
|
|
23
23
|
});
|
|
24
24
|
};
|
|
25
25
|
const getInputValue = (item) => (0, utils_exports.isString)(item?.label) ? item.label : item?.query ?? "";
|
|
26
|
-
const defaultFilter = (inputValue, items,
|
|
26
|
+
const defaultFilter = (inputValue, items, match$1) => {
|
|
27
27
|
if (!inputValue.length) return items;
|
|
28
28
|
return items.map((item) => {
|
|
29
29
|
if ("items" in item) {
|
|
30
30
|
const items$1 = item.items.filter((item$1) => {
|
|
31
|
-
if ("query" in item$1) return
|
|
32
|
-
else if ((0, utils_exports.isString)(item$1.label)) return
|
|
31
|
+
if ("query" in item$1) return (0, utils_exports.isString)(item$1.query) && match$1(item$1.query, inputValue);
|
|
32
|
+
else if ((0, utils_exports.isString)(item$1.label)) return (0, utils_exports.isString)(item$1.label) && match$1(item$1.label, inputValue);
|
|
33
33
|
});
|
|
34
34
|
if (items$1.length) return {
|
|
35
35
|
...item,
|
|
36
36
|
items: items$1
|
|
37
37
|
};
|
|
38
38
|
} else if ("query" in item) {
|
|
39
|
-
if (
|
|
39
|
+
if ((0, utils_exports.isString)(item.query) && match$1(item.query, inputValue)) return item;
|
|
40
40
|
} else if ((0, utils_exports.isString)(item.label)) {
|
|
41
|
-
if (
|
|
41
|
+
if ((0, utils_exports.isString)(item.label) && match$1(item.label, inputValue)) return item;
|
|
42
42
|
}
|
|
43
43
|
}).filter(Boolean);
|
|
44
44
|
};
|
|
45
|
-
const defaultMatcher = (input, target) => target?.toLowerCase().includes(input.toLowerCase()) ?? false;
|
|
46
45
|
const [AutocompleteContext, useAutocompleteContext] = createContext$1({ name: "AutocompleteContext" });
|
|
47
46
|
const useAutocomplete = (props = {}) => {
|
|
48
47
|
const { t } = useI18n("autocomplete");
|
|
49
|
-
const { props: { id, ref, name, allowCustomValue = false, closeOnChange = false, multiple = false, closeOnSelect = !multiple, defaultInputValue, defaultValue = multiple ? [] : "", disabled, emptyMessage = t("No results found"), filter = defaultFilter, focusOnClear = true, inputValue: inputValueProp, items = [], matcher =
|
|
48
|
+
const { props: { id, ref, name, allowCustomValue = false, closeOnChange = false, multiple = false, closeOnSelect = !multiple, defaultInputValue, defaultValue = multiple ? [] : "", disabled, emptyMessage = t("No results found"), filter = defaultFilter, focusOnClear = true, inputValue: inputValueProp, items = [], matcher = utils_exports.match, max, openOnChange = true, openOnClick = true, openOnFocus = true, placeholder, readOnly, render = defaultRender, required, separator = ",", value: valueProp, onChange: onChangeProp, onInputChange: onInputChangeProp, ...rest }, ariaProps, dataProps, eventProps } = useFieldProps(props);
|
|
50
49
|
const fieldRef = useRef(null);
|
|
51
50
|
const contentRef = useRef(null);
|
|
52
51
|
const inputRef = useRef(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-autocomplete.js","names":["defaultRender: AutocompleteItemRender","defaultFilter: AutocompleteFilter","items","item","defaultMatcher: AutocompleteMatcher","createContext","valueMap: { [key: string]: ComboboxItemWithValue }","valueMap","value","onClear","inputValue","getRootProps: PropGetter","props","getFieldProps: PropGetter","ref","getInputProps: PropGetter<\"input\">","getContentProps: PropGetter","getIconProps: PropGetter"],"sources":["../../../../src/components/autocomplete/use-autocomplete.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from \"react\"\nimport type { HTMLProps, HTMLRefAttributes, PropGetter } from \"../../core\"\nimport type {\n ComboboxItem,\n ComboboxItemWithValue,\n UseComboboxItemProps,\n UseComboboxProps,\n} from \"../../hooks/use-combobox\"\nimport type { Dict } from \"../../utils\"\nimport type { FieldProps } from \"../field\"\nimport {\n cloneElement,\n isValidElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport { useCombobox, useComboboxItem } from \"../../hooks/use-combobox\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n cast,\n contains,\n createContext,\n dataAttr,\n handlerAll,\n isArray,\n isComposing,\n isNumber,\n isString,\n isUndefined,\n mergeRefs,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport { useFieldProps } from \"../field\"\n\ninterface AutocompleteRenderProps extends ComboboxItemWithValue {\n count: number\n focused: boolean\n index: number\n separator: string\n onClear: () => void\n max?: number\n}\n\nexport interface AutocompleteItemRender {\n (props: AutocompleteRenderProps): ReactNode\n}\n\nconst defaultRender: AutocompleteItemRender = ({\n count,\n focused,\n index,\n label,\n max,\n separator,\n}) => {\n const last = count - 1 === index\n\n return (\n <span style={{ marginInlineEnd: \"var(--gap)\" }}>\n {label}\n {((!isNumber(max) || count < max) && focused) || !last ? separator : null}\n </span>\n )\n}\n\nconst getInputValue = (item?: ComboboxItemWithValue) =>\n isString(item?.label) ? item.label : (item?.query ?? \"\")\n\nexport interface AutocompleteFilter {\n (\n inputValue: string,\n items: ComboboxItem[],\n matcher: AutocompleteMatcher,\n ): ComboboxItem[]\n}\n\nconst defaultFilter: AutocompleteFilter = (inputValue, items, matcher) => {\n if (!inputValue.length) return items\n\n return items\n .map((item) => {\n if (\"items\" in item) {\n const items = item.items.filter((item) => {\n if (\"query\" in item) {\n return matcher(inputValue, item.query)\n } else if (isString(item.label)) {\n return matcher(inputValue, item.label)\n }\n })\n\n if (items.length) return { ...item, items }\n } else if (\"query\" in item) {\n if (matcher(inputValue, item.query)) return item\n } else if (isString(item.label)) {\n if (matcher(inputValue, item.label)) return item\n }\n })\n .filter(Boolean) as ComboboxItem[]\n}\n\nexport interface AutocompleteMatcher {\n (input: string, target?: string): boolean\n}\n\nconst defaultMatcher: AutocompleteMatcher = (input, target) =>\n target?.toLowerCase().includes(input.toLowerCase()) ?? false\n\ninterface AutocompleteContext extends Pick<\n UseAutocompleteReturn,\n \"max\" | \"value\"\n> {}\n\nconst [AutocompleteContext, useAutocompleteContext] =\n createContext<AutocompleteContext>({\n name: \"AutocompleteContext\",\n })\n\nexport { AutocompleteContext, useAutocompleteContext }\n\nexport interface UseAutocompleteProps<Multiple extends boolean = false>\n extends\n Omit<HTMLProps, \"defaultValue\" | \"onChange\" | \"ref\" | \"value\">,\n Omit<\n UseComboboxProps,\n \"defaultValue\" | \"initialFocusValue\" | \"onChange\" | \"ref\" | \"value\"\n >,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * If `true`, the autocomplete will allow custom value.\n *\n * @default false\n */\n allowCustomValue?: boolean\n /**\n * If `true`, the autocomplete will be closed when the input value changes.\n *\n * @default false\n */\n closeOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * The initial value of the input.\n */\n defaultInputValue?: string\n /**\n * The initial value of the autocomplete.\n */\n defaultValue?: Multiple extends true ? string[] : string\n /**\n * The message displayed when the search yields no hits.\n *\n * @default 'No results found'\n */\n emptyMessage?: ReactNode\n /**\n * The function to filter the items.\n */\n filter?: AutocompleteFilter\n /**\n * If `true`, the input will be focused when the clear icon is clicked.\n *\n * @default true\n */\n focusOnClear?: boolean\n /**\n * The `id` attribute of the input element.\n */\n id?: string\n /**\n * The value of the input.\n */\n inputValue?: string\n /**\n * If provided, generate options based on items.\n *\n * @default []\n */\n items?: ComboboxItem[]\n /**\n * The function to match the items.\n */\n matcher?: AutocompleteMatcher\n /**\n * The maximum selectable value.\n */\n max?: number\n /**\n * If `true`, the autocomplete will be multiple.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * The `name` attribute of the input element.\n */\n name?: string\n /**\n * If `true`, the autocomplete will be opened when the input value changes.\n *\n * @default true\n */\n openOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * If `true`, the autocomplete will be opened when the input is focused.\n *\n * @default true\n */\n openOnFocus?: boolean\n /**\n * The placeholder for autocomplete.\n */\n placeholder?: string\n /**\n * The visual separator between each value.\n *\n * @default ','\n */\n separator?: string\n /**\n * The value of the autocomplete.\n */\n value?: Multiple extends true ? string[] : string\n /**\n * The callback invoked when value state changes.\n */\n onChange?: (value: Multiple extends true ? string[] : string) => void\n /**\n * The callback invoked when input value state changes.\n */\n onInputChange?: (value: string) => void\n /**\n * The function to render the selected items.\n */\n render?: (props: AutocompleteRenderProps) => ReactNode\n}\n\nexport const useAutocomplete = <Multiple extends boolean = false>(\n props: UseAutocompleteProps<Multiple> = {},\n) => {\n type MaybeValue = Multiple extends true ? string[] : string\n\n const { t } = useI18n(\"autocomplete\")\n const {\n props: {\n id,\n ref,\n name,\n allowCustomValue = false,\n closeOnChange = false,\n multiple = false,\n closeOnSelect = !multiple,\n defaultInputValue,\n defaultValue = (multiple ? [] : \"\") as MaybeValue,\n disabled,\n emptyMessage = t(\"No results found\"),\n filter = defaultFilter,\n focusOnClear = true,\n inputValue: inputValueProp,\n items = [],\n matcher = defaultMatcher,\n max,\n openOnChange = true,\n openOnClick = true,\n openOnFocus = true,\n placeholder,\n readOnly,\n render = defaultRender,\n required,\n separator = \",\",\n value: valueProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n ...rest\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const fieldRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const focusByClickRef = useRef<boolean>(false)\n const valueMap = useMemo<{ [key: string]: ComboboxItemWithValue }>(() => {\n const valueMap: { [key: string]: ComboboxItemWithValue } = {}\n\n items.forEach((item) => {\n if (\"items\" in item) {\n item.items.forEach((item) => {\n item.value ??= isString(item.label) ? item.label : undefined\n\n if (!isUndefined(item.value)) valueMap[item.value] = item\n })\n } else {\n item.value ??= isString(item.label) ? item.label : undefined\n\n if (!isUndefined(item.value)) valueMap[item.value] = item\n }\n })\n\n return valueMap\n }, [items])\n const [focused, setFocused] = useState(false)\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [inputValue, setInputValue] = useControllableState({\n defaultValue:\n defaultInputValue ??\n getInputValue(isArray(value) ? undefined : valueMap[value as string]),\n value: inputValueProp,\n onChange: onInputChangeProp,\n })\n const onChange = useCallback(\n (selectedValue: string) => {\n setValue((prev) => {\n if (isArray(prev)) {\n if (prev.includes(selectedValue)) {\n return prev.filter(\n (prevValue) => prevValue !== selectedValue,\n ) as MaybeValue\n } else if (!isNumber(max) || prev.length < max) {\n return [...prev, selectedValue] as MaybeValue\n } else {\n return prev\n }\n } else {\n return selectedValue as MaybeValue\n }\n })\n\n if (isArray(value)) {\n setInputValue(\"\")\n } else {\n const item = valueMap[selectedValue]\n\n setInputValue(getInputValue(item))\n }\n },\n [max, setInputValue, setValue, value, valueMap],\n )\n const {\n activeDescendant,\n descendants,\n interactive,\n open,\n getContentProps: getComboboxContentProps,\n getSeparatorProps,\n getTriggerProps,\n popoverProps,\n onActiveDescendant,\n onClose,\n onOpen,\n onOpenWithActiveDescendant,\n onSelect,\n } = useCombobox({\n closeOnSelect,\n disabled,\n initialFocusValue: isArray(value) ? value[0] : value,\n openOnClick: false,\n openOnEnter: false,\n openOnSpace: false,\n readOnly,\n selectFocusRef: inputRef,\n selectOnSpace: false,\n onChange,\n ...ariaProps,\n ...dataProps,\n ...eventProps,\n ...rest,\n })\n const filteredItems = useMemo<ComboboxItem[]>(() => {\n if (!items.length) return []\n\n return filter(inputValue, items, matcher)\n }, [filter, inputValue, items, matcher])\n const resolvedItems = useMemo<ComboboxItem[]>(() => {\n return filteredItems.length\n ? filteredItems\n : [{ \"data-empty\": \"\", label: emptyMessage }]\n }, [filteredItems, emptyMessage])\n const empty = useMemo(\n () => !resolvedItems.filter(({ hidden }) => !hidden).length,\n [resolvedItems],\n )\n const children = useMemo<ReactNode>(() => {\n if (!isArray(value)) return null\n\n const count = value.length\n\n return value.map((value, index) => {\n const item = valueMap[value] ?? { label: value, value }\n\n const onClear = (ev?: MouseEvent<HTMLElement>) => {\n ev?.preventDefault()\n ev?.stopPropagation()\n\n if (item.value) onChange(item.value)\n }\n\n const component = render({\n count,\n focused,\n index,\n max,\n separator,\n onClear,\n ...item,\n })\n\n if (isValidElement<Dict>(component)) {\n return cloneElement(component, { ...component.props, key: index })\n } else {\n return component\n }\n })\n }, [focused, max, onChange, render, separator, value, valueMap])\n const hasValues = isArray(value) && !!value.length\n\n const onInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (isArray(value) && value.length === max) return\n\n if (runIfFn(closeOnChange, ev)) {\n onClose()\n } else if (runIfFn(openOnChange, ev)) {\n onOpen()\n }\n\n activeDescendant.current = null\n\n const inputValue = ev.target.value\n\n setInputValue(inputValue)\n\n if (inputValue.length || isArray(value)) return\n\n setValue(\"\" as MaybeValue)\n },\n [\n activeDescendant,\n closeOnChange,\n max,\n onClose,\n onOpen,\n openOnChange,\n setInputValue,\n setValue,\n value,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || isComposing(ev)) return\n\n const inputValue = cast<HTMLInputElement>(ev.target).value\n\n runKeyAction(\n ev,\n {\n Backspace: (ev) => {\n if (!isArray(value)) return\n if (inputValue.length) return\n\n ev.preventDefault()\n\n setValue((prev) => prev.slice(0, -1) as MaybeValue)\n },\n Enter: (ev) => {\n if (!open || !inputValue.length || activeDescendant.current) return\n\n const item = filteredItems[0]\n\n if (!item) {\n if (!allowCustomValue || !isArray(value)) return\n\n ev.preventDefault()\n\n onSelect(inputValue)\n } else {\n ev.preventDefault()\n\n if (\"items\" in item) {\n onSelect(item.items[0]?.value)\n } else {\n onSelect(item.value)\n }\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n activeDescendant,\n allowCustomValue,\n disabled,\n filteredItems,\n onSelect,\n open,\n setValue,\n value,\n ],\n )\n\n const onClick = useCallback(() => {\n if (!interactive) return\n\n focusByClickRef.current = true\n\n inputRef.current?.focus()\n\n if (openOnClick) onOpenWithActiveDescendant(descendants.enabledFirstValue)\n }, [descendants, interactive, onOpenWithActiveDescendant, openOnClick])\n\n const onMouseDown = useCallback(\n (ev: MouseEvent<HTMLInputElement>) => {\n if (!openOnFocus) return\n\n ev.preventDefault()\n ev.stopPropagation()\n },\n [openOnFocus],\n )\n\n const onFocus = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n setFocused(true)\n\n if (openOnFocus && !focusByClickRef.current)\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n\n focusByClickRef.current = false\n },\n [openOnFocus, onOpenWithActiveDescendant, descendants.enabledFirstValue],\n )\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n if (\n contains(fieldRef.current, ev.relatedTarget) ||\n contains(contentRef.current, ev.relatedTarget)\n ) {\n ev.preventDefault()\n } else {\n setFocused(false)\n\n if (isArray(value)) {\n setInputValue(\"\")\n } else {\n if (allowCustomValue) {\n if (inputValue) setValue(inputValue as MaybeValue)\n } else {\n const item = valueMap[value as string]\n\n setInputValue(getInputValue(item))\n }\n }\n }\n },\n [allowCustomValue, inputValue, setInputValue, setValue, value, valueMap],\n )\n\n const onClear = useCallback(() => {\n if (!interactive) return\n\n setValue((prev) => (isArray(prev) ? [] : \"\") as MaybeValue)\n setInputValue(\"\")\n\n if (focusOnClear) inputRef.current?.focus()\n }, [focusOnClear, interactive, setInputValue, setValue])\n\n useUpdateEffect(() => {\n if (isArray(valueProp)) return\n\n setInputValue(\n getInputValue(valueProp ? valueMap[valueProp as string] : undefined),\n )\n }, [valueProp])\n\n const getRootProps: PropGetter = useCallback(\n (props) => ({\n ...dataProps,\n ...props,\n }),\n [dataProps],\n )\n\n const getFieldProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getTriggerProps({\n ref: mergeRefs(ref, fieldRef),\n tabIndex: -1,\n ...props,\n onClick: handlerAll(props.onClick, onClick),\n }),\n\n [getTriggerProps, onClick],\n )\n\n const getInputProps: PropGetter<\"input\"> = useCallback(\n (props = {}) => ({\n id,\n ref: mergeRefs(props.ref, ref, inputRef),\n name,\n style: {\n ...(!focused && isArray(value) && !!value.length\n ? visuallyHiddenAttributes.style\n : {}),\n ...props.style,\n },\n \"data-max\": dataAttr(\n isArray(value) && isNumber(max) && value.length >= max,\n ),\n autoCapitalize: \"off\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n disabled,\n placeholder: hasValues ? undefined : placeholder,\n readOnly,\n required,\n spellCheck: false,\n value: inputValue,\n ...dataProps,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onInputChange),\n onFocus: handlerAll(props.onFocus, onFocus),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }),\n [\n dataProps,\n disabled,\n focused,\n hasValues,\n id,\n inputValue,\n max,\n name,\n onBlur,\n onFocus,\n onInputChange,\n onKeyDown,\n onMouseDown,\n placeholder,\n readOnly,\n ref,\n required,\n value,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getComboboxContentProps({\n ref: mergeRefs(ref, contentRef),\n hidden: empty,\n ...props,\n }),\n [empty, getComboboxContentProps],\n )\n\n const getIconProps: PropGetter = useCallback(\n (props) => ({ ...dataProps, ...props }),\n [dataProps],\n )\n\n const getClearIconProps: PropGetter = useCallback(\n (props = {}) =>\n getIconProps({\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-label\": t(\"Clear value\"),\n role: \"button\",\n tabIndex: interactive ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClear),\n onKeyDown: handlerAll(props.onKeyDown, (ev) =>\n runKeyAction(ev, { Enter: onClear, Space: onClear }),\n ),\n }),\n [getIconProps, interactive, onClear, t],\n )\n\n return {\n children,\n descendants,\n inputValue,\n interactive,\n items: resolvedItems,\n max,\n open,\n setInputValue,\n setValue,\n value,\n valueMap,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n getSeparatorProps,\n popoverProps,\n onActiveDescendant,\n onChange,\n onClose,\n onInputChange,\n onOpen,\n onSelect,\n }\n}\n\nexport type UseAutocompleteReturn = ReturnType<typeof useAutocomplete>\n\nexport interface UseAutocompleteOptionProps extends UseComboboxItemProps {}\n\nexport const useAutocompleteOption = ({\n children,\n closeOnSelect,\n disabled,\n hidden,\n value,\n ...rest\n}: UseAutocompleteOptionProps = {}) => {\n const { max, value: selectedValue } = useAutocompleteContext()\n\n value ??= isString(children) ? children : undefined\n\n const selected = isArray(selectedValue)\n ? !isUndefined(value) && selectedValue.includes(value)\n : selectedValue === value\n const completed =\n isNumber(max) && isArray(selectedValue) && selectedValue.length >= max\n const { getIndicatorProps, getItemProps } = useComboboxItem({\n children,\n closeOnSelect,\n disabled: disabled || hidden || (completed && !selected),\n hidden,\n selected,\n value,\n ...rest,\n })\n\n const getOptionProps: PropGetter = useCallback(\n (props = {}) => getItemProps(props),\n [getItemProps],\n )\n\n return { getIndicatorProps, getOptionProps }\n}\n\nexport type UseAutocompleteOptionReturn = ReturnType<\n typeof useAutocompleteOption\n>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-autocomplete.js","names":["defaultRender: AutocompleteItemRender","defaultFilter: AutocompleteFilter","items","item","match","createContext","valueMap: { [key: string]: ComboboxItemWithValue }","valueMap","value","onClear","inputValue","getRootProps: PropGetter","props","getFieldProps: PropGetter","ref","getInputProps: PropGetter<\"input\">","getContentProps: PropGetter","getIconProps: PropGetter"],"sources":["../../../../src/components/autocomplete/use-autocomplete.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from \"react\"\nimport type { HTMLProps, HTMLRefAttributes, PropGetter } from \"../../core\"\nimport type {\n ComboboxItem,\n ComboboxItemWithValue,\n UseComboboxItemProps,\n UseComboboxProps,\n} from \"../../hooks/use-combobox\"\nimport type { Dict } from \"../../utils\"\nimport type { FieldProps } from \"../field\"\nimport {\n cloneElement,\n isValidElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport { useCombobox, useComboboxItem } from \"../../hooks/use-combobox\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n cast,\n contains,\n createContext,\n dataAttr,\n handlerAll,\n isArray,\n isComposing,\n isNumber,\n isString,\n isUndefined,\n match,\n mergeRefs,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport { useFieldProps } from \"../field\"\n\ninterface AutocompleteRenderProps extends ComboboxItemWithValue {\n count: number\n focused: boolean\n index: number\n separator: string\n onClear: () => void\n max?: number\n}\n\nexport interface AutocompleteItemRender {\n (props: AutocompleteRenderProps): ReactNode\n}\n\nconst defaultRender: AutocompleteItemRender = ({\n count,\n focused,\n index,\n label,\n max,\n separator,\n}) => {\n const last = count - 1 === index\n\n return (\n <span style={{ marginInlineEnd: \"var(--gap)\" }}>\n {label}\n {((!isNumber(max) || count < max) && focused) || !last ? separator : null}\n </span>\n )\n}\n\nconst getInputValue = (item?: ComboboxItemWithValue) =>\n isString(item?.label) ? item.label : (item?.query ?? \"\")\n\nexport interface AutocompleteFilter {\n (\n inputValue: string,\n items: ComboboxItem[],\n matcher: AutocompleteMatcher,\n ): ComboboxItem[]\n}\n\nconst defaultFilter: AutocompleteFilter = (inputValue, items, match) => {\n if (!inputValue.length) return items\n\n return items\n .map((item) => {\n if (\"items\" in item) {\n const items = item.items.filter((item) => {\n if (\"query\" in item) {\n return isString(item.query) && match(item.query, inputValue)\n } else if (isString(item.label)) {\n return isString(item.label) && match(item.label, inputValue)\n }\n })\n\n if (items.length) return { ...item, items }\n } else if (\"query\" in item) {\n if (isString(item.query) && match(item.query, inputValue)) return item\n } else if (isString(item.label)) {\n if (isString(item.label) && match(item.label, inputValue)) return item\n }\n })\n .filter(Boolean) as ComboboxItem[]\n}\n\nexport type AutocompleteMatcher = typeof match\n\ninterface AutocompleteContext extends Pick<\n UseAutocompleteReturn,\n \"max\" | \"value\"\n> {}\n\nconst [AutocompleteContext, useAutocompleteContext] =\n createContext<AutocompleteContext>({\n name: \"AutocompleteContext\",\n })\n\nexport { AutocompleteContext, useAutocompleteContext }\n\nexport interface UseAutocompleteProps<Multiple extends boolean = false>\n extends\n Omit<HTMLProps, \"defaultValue\" | \"onChange\" | \"ref\" | \"value\">,\n Omit<\n UseComboboxProps,\n \"defaultValue\" | \"initialFocusValue\" | \"onChange\" | \"ref\" | \"value\"\n >,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * If `true`, the autocomplete will allow custom value.\n *\n * @default false\n */\n allowCustomValue?: boolean\n /**\n * If `true`, the autocomplete will be closed when the input value changes.\n *\n * @default false\n */\n closeOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * The initial value of the input.\n */\n defaultInputValue?: string\n /**\n * The initial value of the autocomplete.\n */\n defaultValue?: Multiple extends true ? string[] : string\n /**\n * The message displayed when the search yields no hits.\n *\n * @default 'No results found'\n */\n emptyMessage?: ReactNode\n /**\n * The function to filter the items.\n */\n filter?: AutocompleteFilter\n /**\n * If `true`, the input will be focused when the clear icon is clicked.\n *\n * @default true\n */\n focusOnClear?: boolean\n /**\n * The `id` attribute of the input element.\n */\n id?: string\n /**\n * The value of the input.\n */\n inputValue?: string\n /**\n * If provided, generate options based on items.\n *\n * @default []\n */\n items?: ComboboxItem[]\n /**\n * The function to match the items.\n */\n matcher?: AutocompleteMatcher\n /**\n * The maximum selectable value.\n */\n max?: number\n /**\n * If `true`, the autocomplete will be multiple.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * The `name` attribute of the input element.\n */\n name?: string\n /**\n * If `true`, the autocomplete will be opened when the input value changes.\n *\n * @default true\n */\n openOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * If `true`, the autocomplete will be opened when the input is focused.\n *\n * @default true\n */\n openOnFocus?: boolean\n /**\n * The placeholder for autocomplete.\n */\n placeholder?: string\n /**\n * The visual separator between each value.\n *\n * @default ','\n */\n separator?: string\n /**\n * The value of the autocomplete.\n */\n value?: Multiple extends true ? string[] : string\n /**\n * The callback invoked when value state changes.\n */\n onChange?: (value: Multiple extends true ? string[] : string) => void\n /**\n * The callback invoked when input value state changes.\n */\n onInputChange?: (value: string) => void\n /**\n * The function to render the selected items.\n */\n render?: (props: AutocompleteRenderProps) => ReactNode\n}\n\nexport const useAutocomplete = <Multiple extends boolean = false>(\n props: UseAutocompleteProps<Multiple> = {},\n) => {\n type MaybeValue = Multiple extends true ? string[] : string\n\n const { t } = useI18n(\"autocomplete\")\n const {\n props: {\n id,\n ref,\n name,\n allowCustomValue = false,\n closeOnChange = false,\n multiple = false,\n closeOnSelect = !multiple,\n defaultInputValue,\n defaultValue = (multiple ? [] : \"\") as MaybeValue,\n disabled,\n emptyMessage = t(\"No results found\"),\n filter = defaultFilter,\n focusOnClear = true,\n inputValue: inputValueProp,\n items = [],\n matcher = match,\n max,\n openOnChange = true,\n openOnClick = true,\n openOnFocus = true,\n placeholder,\n readOnly,\n render = defaultRender,\n required,\n separator = \",\",\n value: valueProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n ...rest\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const fieldRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const focusByClickRef = useRef<boolean>(false)\n const valueMap = useMemo<{ [key: string]: ComboboxItemWithValue }>(() => {\n const valueMap: { [key: string]: ComboboxItemWithValue } = {}\n\n items.forEach((item) => {\n if (\"items\" in item) {\n item.items.forEach((item) => {\n item.value ??= isString(item.label) ? item.label : undefined\n\n if (!isUndefined(item.value)) valueMap[item.value] = item\n })\n } else {\n item.value ??= isString(item.label) ? item.label : undefined\n\n if (!isUndefined(item.value)) valueMap[item.value] = item\n }\n })\n\n return valueMap\n }, [items])\n const [focused, setFocused] = useState(false)\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [inputValue, setInputValue] = useControllableState({\n defaultValue:\n defaultInputValue ??\n getInputValue(isArray(value) ? undefined : valueMap[value as string]),\n value: inputValueProp,\n onChange: onInputChangeProp,\n })\n const onChange = useCallback(\n (selectedValue: string) => {\n setValue((prev) => {\n if (isArray(prev)) {\n if (prev.includes(selectedValue)) {\n return prev.filter(\n (prevValue) => prevValue !== selectedValue,\n ) as MaybeValue\n } else if (!isNumber(max) || prev.length < max) {\n return [...prev, selectedValue] as MaybeValue\n } else {\n return prev\n }\n } else {\n return selectedValue as MaybeValue\n }\n })\n\n if (isArray(value)) {\n setInputValue(\"\")\n } else {\n const item = valueMap[selectedValue]\n\n setInputValue(getInputValue(item))\n }\n },\n [max, setInputValue, setValue, value, valueMap],\n )\n const {\n activeDescendant,\n descendants,\n interactive,\n open,\n getContentProps: getComboboxContentProps,\n getSeparatorProps,\n getTriggerProps,\n popoverProps,\n onActiveDescendant,\n onClose,\n onOpen,\n onOpenWithActiveDescendant,\n onSelect,\n } = useCombobox({\n closeOnSelect,\n disabled,\n initialFocusValue: isArray(value) ? value[0] : value,\n openOnClick: false,\n openOnEnter: false,\n openOnSpace: false,\n readOnly,\n selectFocusRef: inputRef,\n selectOnSpace: false,\n onChange,\n ...ariaProps,\n ...dataProps,\n ...eventProps,\n ...rest,\n })\n const filteredItems = useMemo<ComboboxItem[]>(() => {\n if (!items.length) return []\n\n return filter(inputValue, items, matcher)\n }, [filter, inputValue, items, matcher])\n const resolvedItems = useMemo<ComboboxItem[]>(() => {\n return filteredItems.length\n ? filteredItems\n : [{ \"data-empty\": \"\", label: emptyMessage }]\n }, [filteredItems, emptyMessage])\n const empty = useMemo(\n () => !resolvedItems.filter(({ hidden }) => !hidden).length,\n [resolvedItems],\n )\n const children = useMemo<ReactNode>(() => {\n if (!isArray(value)) return null\n\n const count = value.length\n\n return value.map((value, index) => {\n const item = valueMap[value] ?? { label: value, value }\n\n const onClear = (ev?: MouseEvent<HTMLElement>) => {\n ev?.preventDefault()\n ev?.stopPropagation()\n\n if (item.value) onChange(item.value)\n }\n\n const component = render({\n count,\n focused,\n index,\n max,\n separator,\n onClear,\n ...item,\n })\n\n if (isValidElement<Dict>(component)) {\n return cloneElement(component, { ...component.props, key: index })\n } else {\n return component\n }\n })\n }, [focused, max, onChange, render, separator, value, valueMap])\n const hasValues = isArray(value) && !!value.length\n\n const onInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (isArray(value) && value.length === max) return\n\n if (runIfFn(closeOnChange, ev)) {\n onClose()\n } else if (runIfFn(openOnChange, ev)) {\n onOpen()\n }\n\n activeDescendant.current = null\n\n const inputValue = ev.target.value\n\n setInputValue(inputValue)\n\n if (inputValue.length || isArray(value)) return\n\n setValue(\"\" as MaybeValue)\n },\n [\n activeDescendant,\n closeOnChange,\n max,\n onClose,\n onOpen,\n openOnChange,\n setInputValue,\n setValue,\n value,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || isComposing(ev)) return\n\n const inputValue = cast<HTMLInputElement>(ev.target).value\n\n runKeyAction(\n ev,\n {\n Backspace: (ev) => {\n if (!isArray(value)) return\n if (inputValue.length) return\n\n ev.preventDefault()\n\n setValue((prev) => prev.slice(0, -1) as MaybeValue)\n },\n Enter: (ev) => {\n if (!open || !inputValue.length || activeDescendant.current) return\n\n const item = filteredItems[0]\n\n if (!item) {\n if (!allowCustomValue || !isArray(value)) return\n\n ev.preventDefault()\n\n onSelect(inputValue)\n } else {\n ev.preventDefault()\n\n if (\"items\" in item) {\n onSelect(item.items[0]?.value)\n } else {\n onSelect(item.value)\n }\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n activeDescendant,\n allowCustomValue,\n disabled,\n filteredItems,\n onSelect,\n open,\n setValue,\n value,\n ],\n )\n\n const onClick = useCallback(() => {\n if (!interactive) return\n\n focusByClickRef.current = true\n\n inputRef.current?.focus()\n\n if (openOnClick) onOpenWithActiveDescendant(descendants.enabledFirstValue)\n }, [descendants, interactive, onOpenWithActiveDescendant, openOnClick])\n\n const onMouseDown = useCallback(\n (ev: MouseEvent<HTMLInputElement>) => {\n if (!openOnFocus) return\n\n ev.preventDefault()\n ev.stopPropagation()\n },\n [openOnFocus],\n )\n\n const onFocus = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n setFocused(true)\n\n if (openOnFocus && !focusByClickRef.current)\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n\n focusByClickRef.current = false\n },\n [openOnFocus, onOpenWithActiveDescendant, descendants.enabledFirstValue],\n )\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n if (\n contains(fieldRef.current, ev.relatedTarget) ||\n contains(contentRef.current, ev.relatedTarget)\n ) {\n ev.preventDefault()\n } else {\n setFocused(false)\n\n if (isArray(value)) {\n setInputValue(\"\")\n } else {\n if (allowCustomValue) {\n if (inputValue) setValue(inputValue as MaybeValue)\n } else {\n const item = valueMap[value as string]\n\n setInputValue(getInputValue(item))\n }\n }\n }\n },\n [allowCustomValue, inputValue, setInputValue, setValue, value, valueMap],\n )\n\n const onClear = useCallback(() => {\n if (!interactive) return\n\n setValue((prev) => (isArray(prev) ? [] : \"\") as MaybeValue)\n setInputValue(\"\")\n\n if (focusOnClear) inputRef.current?.focus()\n }, [focusOnClear, interactive, setInputValue, setValue])\n\n useUpdateEffect(() => {\n if (isArray(valueProp)) return\n\n setInputValue(\n getInputValue(valueProp ? valueMap[valueProp as string] : undefined),\n )\n }, [valueProp])\n\n const getRootProps: PropGetter = useCallback(\n (props) => ({\n ...dataProps,\n ...props,\n }),\n [dataProps],\n )\n\n const getFieldProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getTriggerProps({\n ref: mergeRefs(ref, fieldRef),\n tabIndex: -1,\n ...props,\n onClick: handlerAll(props.onClick, onClick),\n }),\n\n [getTriggerProps, onClick],\n )\n\n const getInputProps: PropGetter<\"input\"> = useCallback(\n (props = {}) => ({\n id,\n ref: mergeRefs(props.ref, ref, inputRef),\n name,\n style: {\n ...(!focused && isArray(value) && !!value.length\n ? visuallyHiddenAttributes.style\n : {}),\n ...props.style,\n },\n \"data-max\": dataAttr(\n isArray(value) && isNumber(max) && value.length >= max,\n ),\n autoCapitalize: \"off\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n disabled,\n placeholder: hasValues ? undefined : placeholder,\n readOnly,\n required,\n spellCheck: false,\n value: inputValue,\n ...dataProps,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onInputChange),\n onFocus: handlerAll(props.onFocus, onFocus),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }),\n [\n dataProps,\n disabled,\n focused,\n hasValues,\n id,\n inputValue,\n max,\n name,\n onBlur,\n onFocus,\n onInputChange,\n onKeyDown,\n onMouseDown,\n placeholder,\n readOnly,\n ref,\n required,\n value,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getComboboxContentProps({\n ref: mergeRefs(ref, contentRef),\n hidden: empty,\n ...props,\n }),\n [empty, getComboboxContentProps],\n )\n\n const getIconProps: PropGetter = useCallback(\n (props) => ({ ...dataProps, ...props }),\n [dataProps],\n )\n\n const getClearIconProps: PropGetter = useCallback(\n (props = {}) =>\n getIconProps({\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-label\": t(\"Clear value\"),\n role: \"button\",\n tabIndex: interactive ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClear),\n onKeyDown: handlerAll(props.onKeyDown, (ev) =>\n runKeyAction(ev, { Enter: onClear, Space: onClear }),\n ),\n }),\n [getIconProps, interactive, onClear, t],\n )\n\n return {\n children,\n descendants,\n inputValue,\n interactive,\n items: resolvedItems,\n max,\n open,\n setInputValue,\n setValue,\n value,\n valueMap,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n getSeparatorProps,\n popoverProps,\n onActiveDescendant,\n onChange,\n onClose,\n onInputChange,\n onOpen,\n onSelect,\n }\n}\n\nexport type UseAutocompleteReturn = ReturnType<typeof useAutocomplete>\n\nexport interface UseAutocompleteOptionProps extends UseComboboxItemProps {}\n\nexport const useAutocompleteOption = ({\n children,\n closeOnSelect,\n disabled,\n hidden,\n value,\n ...rest\n}: UseAutocompleteOptionProps = {}) => {\n const { max, value: selectedValue } = useAutocompleteContext()\n\n value ??= isString(children) ? children : undefined\n\n const selected = isArray(selectedValue)\n ? !isUndefined(value) && selectedValue.includes(value)\n : selectedValue === value\n const completed =\n isNumber(max) && isArray(selectedValue) && selectedValue.length >= max\n const { getIndicatorProps, getItemProps } = useComboboxItem({\n children,\n closeOnSelect,\n disabled: disabled || hidden || (completed && !selected),\n hidden,\n selected,\n value,\n ...rest,\n })\n\n const getOptionProps: PropGetter = useCallback(\n (props = {}) => getItemProps(props),\n [getItemProps],\n )\n\n return { getIndicatorProps, getOptionProps }\n}\n\nexport type UseAutocompleteOptionReturn = ReturnType<\n typeof useAutocompleteOption\n>\n"],"mappings":"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"}
|
|
@@ -66,7 +66,7 @@ const menuStyle = defineComponentSlotStyle({
|
|
|
66
66
|
focusVisibleRing: "none",
|
|
67
67
|
minH: "{item-height}",
|
|
68
68
|
userSelect: "none",
|
|
69
|
-
_activedescendant: { bg:
|
|
69
|
+
_activedescendant: { bg: "bg.subtle" },
|
|
70
70
|
_disabled: { layerStyle: "disabled" }
|
|
71
71
|
},
|
|
72
72
|
label: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.style.js","names":[],"sources":["../../../../src/components/menu/menu.style.ts"],"sourcesContent":["import { defineComponentSlotStyle } from \"../../core\"\nimport { popoverStyle } from \"../popover\"\n\nexport const menuStyle = defineComponentSlotStyle({\n base: {\n command: {\n textStyle: \"mono\",\n color: \"fg.muted\",\n ms: \"auto\",\n },\n content: {\n \"&:has([data-footer])\": {\n scrollPaddingBottom: \"calc({space} + {footer-height} + {border-width})\",\n },\n \"&:has([data-header])\": {\n scrollPaddingTop: \"calc({space} + {header-height} + {border-width})\",\n },\n \"--border-width\": \"1px\",\n \"--footer-height\": \"{item-height}\",\n \"--header-height\": \"{item-height}\",\n gap: \"0\",\n overflow: \"auto\",\n p: \"{space}\",\n scrollPaddingBottom: \"{space}\",\n scrollPaddingTop: \"{space}\",\n },\n footer: {\n alignItems: \"center\",\n bg: popoverStyle.base?.content?.bg,\n borderTopWidth: \"{border-width}\",\n bottom: \"calc({space} * -1)\",\n display: \"flex\",\n left: \"0\",\n mb: \"calc({space} * -1)\",\n minH: \"{footer-height}\",\n mt: \"{space}\",\n mx: \"calc({space} * -1)\",\n position: \"sticky\",\n right: \"0\",\n },\n group: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n header: {\n alignItems: \"center\",\n bg: popoverStyle.base?.content?.bg,\n borderBottomWidth: \"{border-width}\",\n display: \"flex\",\n left: \"0\",\n mb: \"{space}\",\n minH: \"{header-height}\",\n mt: \"calc({space} * -1)\",\n mx: \"calc({space} * -1)\",\n position: \"sticky\",\n right: \"0\",\n top: \"calc({space} * -1)\",\n },\n indicator: {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n item: {\n alignItems: \"center\",\n display: \"flex\",\n focusVisibleRing: \"none\",\n minH: \"{item-height}\",\n userSelect: \"none\",\n _activedescendant: { bg:
|
|
1
|
+
{"version":3,"file":"menu.style.js","names":[],"sources":["../../../../src/components/menu/menu.style.ts"],"sourcesContent":["import { defineComponentSlotStyle } from \"../../core\"\nimport { popoverStyle } from \"../popover\"\n\nexport const menuStyle = defineComponentSlotStyle({\n base: {\n command: {\n textStyle: \"mono\",\n color: \"fg.muted\",\n ms: \"auto\",\n },\n content: {\n \"&:has([data-footer])\": {\n scrollPaddingBottom: \"calc({space} + {footer-height} + {border-width})\",\n },\n \"&:has([data-header])\": {\n scrollPaddingTop: \"calc({space} + {header-height} + {border-width})\",\n },\n \"--border-width\": \"1px\",\n \"--footer-height\": \"{item-height}\",\n \"--header-height\": \"{item-height}\",\n gap: \"0\",\n overflow: \"auto\",\n p: \"{space}\",\n scrollPaddingBottom: \"{space}\",\n scrollPaddingTop: \"{space}\",\n },\n footer: {\n alignItems: \"center\",\n bg: popoverStyle.base?.content?.bg,\n borderTopWidth: \"{border-width}\",\n bottom: \"calc({space} * -1)\",\n display: \"flex\",\n left: \"0\",\n mb: \"calc({space} * -1)\",\n minH: \"{footer-height}\",\n mt: \"{space}\",\n mx: \"calc({space} * -1)\",\n position: \"sticky\",\n right: \"0\",\n },\n group: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n header: {\n alignItems: \"center\",\n bg: popoverStyle.base?.content?.bg,\n borderBottomWidth: \"{border-width}\",\n display: \"flex\",\n left: \"0\",\n mb: \"{space}\",\n minH: \"{header-height}\",\n mt: \"calc({space} * -1)\",\n mx: \"calc({space} * -1)\",\n position: \"sticky\",\n right: \"0\",\n top: \"calc({space} * -1)\",\n },\n indicator: {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n item: {\n alignItems: \"center\",\n display: \"flex\",\n focusVisibleRing: \"none\",\n minH: \"{item-height}\",\n userSelect: \"none\",\n _activedescendant: { bg: \"bg.subtle\" },\n _disabled: { layerStyle: \"disabled\" },\n },\n label: {\n alignItems: \"center\",\n display: \"flex\",\n fontWeight: \"medium\",\n minH: \"{item-height}\",\n },\n separator: {\n \"& + hr\": { display: \"none\" },\n \"&:last-child, &:first-child\": { display: \"none\" },\n borderBottomWidth: \"{border-width}\",\n mx: \"calc({space} * -1)\",\n my: \"{space}\",\n },\n },\n\n sizes: {\n sm: {\n command: { fontSize: \"2xs\" },\n content: {\n \"--item-height\": \"spaces.7\",\n \"--space\": \"spaces.1\",\n fontSize: \"xs\",\n minW: \"3xs\",\n },\n footer: { px: \"1.5\" },\n header: { px: \"1.5\" },\n indicator: { fontSize: \"sm\" },\n item: { gap: \"1.5\", px: \"1.5\", rounded: \"l1\" },\n label: { px: \"1.5\" },\n },\n md: {\n command: { fontSize: \"xs\" },\n content: {\n \"--item-height\": \"spaces.8\",\n \"--space\": \"spaces.1\",\n fontSize: \"sm\",\n minW: \"2xs\",\n },\n footer: { px: \"2\" },\n header: { px: \"2\" },\n indicator: { fontSize: \"md\" },\n item: { gap: \"2\", px: \"2\", rounded: \"l1\" },\n label: { px: \"2\" },\n },\n lg: {\n command: { fontSize: \"sm\" },\n content: {\n \"--item-height\": \"spaces.9\",\n \"--space\": \"spaces.1\",\n fontSize: \"md\",\n minW: \"2xs\",\n },\n footer: { px: \"2\" },\n header: { px: \"2\" },\n indicator: { fontSize: \"lg\" },\n item: { gap: \"2\", px: \"2\", rounded: \"l1\" },\n label: { px: \"2\" },\n },\n },\n\n defaultProps: {\n size: \"md\",\n },\n})\n\nexport type MenuStyle = typeof menuStyle\n"],"mappings":";;;;;;AAGA,MAAa,YAAY,yBAAyB;CAChD,MAAM;EACJ,SAAS;GACP,WAAW;GACX,OAAO;GACP,IAAI;GACL;EACD,SAAS;GACP,wBAAwB,EACtB,qBAAqB,oDACtB;GACD,wBAAwB,EACtB,kBAAkB,oDACnB;GACD,kBAAkB;GAClB,mBAAmB;GACnB,mBAAmB;GACnB,KAAK;GACL,UAAU;GACV,GAAG;GACH,qBAAqB;GACrB,kBAAkB;GACnB;EACD,QAAQ;GACN,YAAY;GACZ,IAAI,aAAa,MAAM,SAAS;GAChC,gBAAgB;GAChB,QAAQ;GACR,SAAS;GACT,MAAM;GACN,IAAI;GACJ,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,UAAU;GACV,OAAO;GACR;EACD,OAAO;GACL,SAAS;GACT,eAAe;GAChB;EACD,QAAQ;GACN,YAAY;GACZ,IAAI,aAAa,MAAM,SAAS;GAChC,mBAAmB;GACnB,SAAS;GACT,MAAM;GACN,IAAI;GACJ,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,UAAU;GACV,OAAO;GACP,KAAK;GACN;EACD,WAAW;GACT,YAAY;GACZ,SAAS;GACT,gBAAgB;GACjB;EACD,MAAM;GACJ,YAAY;GACZ,SAAS;GACT,kBAAkB;GAClB,MAAM;GACN,YAAY;GACZ,mBAAmB,EAAE,IAAI,aAAa;GACtC,WAAW,EAAE,YAAY,YAAY;GACtC;EACD,OAAO;GACL,YAAY;GACZ,SAAS;GACT,YAAY;GACZ,MAAM;GACP;EACD,WAAW;GACT,UAAU,EAAE,SAAS,QAAQ;GAC7B,+BAA+B,EAAE,SAAS,QAAQ;GAClD,mBAAmB;GACnB,IAAI;GACJ,IAAI;GACL;EACF;CAED,OAAO;EACL,IAAI;GACF,SAAS,EAAE,UAAU,OAAO;GAC5B,SAAS;IACP,iBAAiB;IACjB,WAAW;IACX,UAAU;IACV,MAAM;IACP;GACD,QAAQ,EAAE,IAAI,OAAO;GACrB,QAAQ,EAAE,IAAI,OAAO;GACrB,WAAW,EAAE,UAAU,MAAM;GAC7B,MAAM;IAAE,KAAK;IAAO,IAAI;IAAO,SAAS;IAAM;GAC9C,OAAO,EAAE,IAAI,OAAO;GACrB;EACD,IAAI;GACF,SAAS,EAAE,UAAU,MAAM;GAC3B,SAAS;IACP,iBAAiB;IACjB,WAAW;IACX,UAAU;IACV,MAAM;IACP;GACD,QAAQ,EAAE,IAAI,KAAK;GACnB,QAAQ,EAAE,IAAI,KAAK;GACnB,WAAW,EAAE,UAAU,MAAM;GAC7B,MAAM;IAAE,KAAK;IAAK,IAAI;IAAK,SAAS;IAAM;GAC1C,OAAO,EAAE,IAAI,KAAK;GACnB;EACD,IAAI;GACF,SAAS,EAAE,UAAU,MAAM;GAC3B,SAAS;IACP,iBAAiB;IACjB,WAAW;IACX,UAAU;IACV,MAAM;IACP;GACD,QAAQ,EAAE,IAAI,KAAK;GACnB,QAAQ,EAAE,IAAI,KAAK;GACnB,WAAW,EAAE,UAAU,MAAM;GAC7B,MAAM;IAAE,KAAK;IAAK,IAAI;IAAK,SAAS;IAAM;GAC1C,OAAO,EAAE,IAAI,KAAK;GACnB;EACF;CAED,cAAc,EACZ,MAAM,MACP;CACF,CAAC"}
|
|
@@ -16,7 +16,7 @@ const colors = defineSemanticTokens.colors({
|
|
|
16
16
|
muted: ["black.100", "white.200"],
|
|
17
17
|
overlay: "blackAlpha.600",
|
|
18
18
|
panel: ["black.bg", "white.bg"],
|
|
19
|
-
subtle: ["black.50", "white.
|
|
19
|
+
subtle: ["black.50", "white.200/50"],
|
|
20
20
|
success: ["success.50", "success.950"],
|
|
21
21
|
warning: ["warning.50", "warning.950"]
|
|
22
22
|
},
|