@rotki/ui-library 2.20.2 → 2.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/__test__/options.d.ts +7 -0
  2. package/dist/components/calendar/RuiCalendarMenu.js.map +1 -1
  3. package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js +3 -1
  4. package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  5. package/dist/components/date-time-picker/RuiDateTimePicker.js.map +1 -1
  6. package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js +3 -1
  7. package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  8. package/dist/components/forms/auto-complete/RuiAutoComplete.js.map +1 -1
  9. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +12 -1
  10. package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js +137 -51
  11. package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  12. package/dist/components/forms/file-upload/RuiFileUpload.js +7 -0
  13. package/dist/components/forms/file-upload/RuiFileUpload.js.map +1 -0
  14. package/dist/components/forms/file-upload/RuiFileUpload.vue.d.ts +61 -0
  15. package/dist/components/forms/file-upload/RuiFileUpload.vue_vue_type_script_setup_true_lang.js +269 -0
  16. package/dist/components/forms/file-upload/RuiFileUpload.vue_vue_type_script_setup_true_lang.js.map +1 -0
  17. package/dist/components/forms/select/RuiMenuSelect.js.map +1 -1
  18. package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js +7 -1
  19. package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  20. package/dist/components/index.d.ts +3 -2
  21. package/dist/components/index.js +2 -1
  22. package/dist/components/overlays/menu/RuiMenu.js.map +1 -1
  23. package/dist/components/overlays/menu/RuiMenu.vue.d.ts +6 -0
  24. package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js +3 -2
  25. package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  26. package/dist/composables/dropdown-menu.d.ts +12 -1
  27. package/dist/composables/dropdown-menu.js +46 -7
  28. package/dist/composables/dropdown-menu.js.map +1 -1
  29. package/dist/index.js +2 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/library-icons.json +2 -0
  32. package/dist/style.css +48 -0
  33. package/dist/utils/helpers.d.ts +4 -0
  34. package/dist/utils/helpers.js +21 -1
  35. package/dist/utils/helpers.js.map +1 -1
  36. package/dist/web-types.json +262 -1
  37. package/package.json +1 -1
@@ -59,7 +59,8 @@ var RuiMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
59
59
  disableAutoFocus: {
60
60
  type: Boolean,
61
61
  default: false
62
- }
62
+ },
63
+ anchorEl: {}
63
64
  }, {
64
65
  "modelValue": {
65
66
  type: Boolean,
@@ -72,7 +73,7 @@ var RuiMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
72
73
  const modelValue = useModel(__props, "modelValue");
73
74
  const click = ref(false);
74
75
  const menuContent = useTemplateRef("menuContent");
75
- const { reference: activator, popover: menu, open, visible, currentPlacement, leavePending, onLeavePending, onOpen, onClose, onLeaveComplete, updatePosition } = useFloating(() => __props.popper ? toFloatingOptions(__props.popper) : __props.options ?? {}, () => __props.disabled, () => __props.openDelay, () => __props.closeDelay);
76
+ const { reference: activator, popover: menu, open, visible, currentPlacement, leavePending, onLeavePending, onOpen, onClose, onLeaveComplete, updatePosition } = useFloating(() => __props.popper ? toFloatingOptions(__props.popper) : __props.options ?? {}, () => __props.disabled, () => __props.openDelay, () => __props.closeDelay, () => __props.anchorEl);
76
77
  const { width } = useElementSize(activator);
77
78
  const { hasError, hasSuccess } = useFormTextDetail(() => __props.errorMessages, () => __props.successMessages);
78
79
  const menuStyles = tv({
@@ -1 +1 @@
1
- {"version":3,"file":"RuiMenu.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../src/components/overlays/menu/RuiMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { VueClassValue } from '@/types/class-value';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport { type FloatingOptions, useFloating } from '@/composables/floating';\nimport { type PopperOptions, toFloatingOptions } from '@/composables/popper';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { cn, tv } from '@/utils/tv';\n\ninterface BaseMenuAttrs { onMouseover?: () => void; onMouseleave?: () => void }\n\ninterface MenuAttrs extends BaseMenuAttrs { onClick?: () => void }\n\nexport interface RuiMenuClassNames {\n root?: VueClassValue;\n wrapper?: VueClassValue;\n menu?: VueClassValue;\n}\n\nexport interface MenuProps {\n openOnHover?: boolean;\n fullWidth?: boolean;\n disabled?: boolean;\n openDelay?: number;\n closeDelay?: number;\n options?: FloatingOptions;\n /** @deprecated Use `options` instead */\n popper?: PopperOptions;\n classNames?: RuiMenuClassNames;\n /** @deprecated Use `classNames.wrapper` instead */\n wrapperClass?: string | object | string[];\n /** @deprecated Use `classNames.menu` instead */\n menuClass?: string | object | string[];\n closeOnContentClick?: boolean;\n persistOnActivatorClick?: boolean;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n showDetails?: boolean;\n dense?: boolean;\n persistent?: boolean;\n disableAutoFocus?: boolean;\n}\n\ndefineOptions({\n name: 'RuiMenu',\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst {\n openOnHover = false,\n disabled = false,\n fullWidth = false,\n openDelay = 0,\n closeDelay = 0,\n options,\n popper,\n classNames,\n wrapperClass = '',\n menuClass = '',\n closeOnContentClick = false,\n persistOnActivatorClick = false,\n hint,\n errorMessages = [],\n successMessages = [],\n showDetails = false,\n dense = false,\n persistent = false,\n disableAutoFocus = false,\n} = defineProps<MenuProps>();\n\ndefineSlots<{\n activator?: (props: {\n attrs: { onMouseover?: () => void; onMouseleave?: () => void; onClick?: () => void };\n open: boolean;\n disabled: boolean;\n hasError: boolean;\n hasSuccess: boolean;\n }) => any;\n default?: (props: { width: number }) => any;\n}>();\n\nconst click = ref<boolean>(false);\nconst menuContent = useTemplateRef<HTMLElement>('menuContent');\n\nconst FOCUSABLE_ELEMENTS_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\nconst {\n reference: activator,\n popover: menu,\n open,\n visible,\n currentPlacement,\n leavePending,\n onLeavePending,\n onOpen,\n onClose,\n onLeaveComplete,\n updatePosition,\n} = useFloating(\n () => popper ? toFloatingOptions(popper) : (options ?? {}),\n () => disabled,\n () => openDelay,\n () => closeDelay,\n);\n\nconst { width } = useElementSize(activator);\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst menuStyles = tv({\n slots: {\n wrapper: 'relative inline-flex max-w-full',\n popover: 'w-max z-[9999]',\n content: 'rounded overflow-hidden shadow-8 bg-white dark:bg-[#2E2E2E] text-rui-text focus:outline-none py-2',\n details: 'pt-1',\n },\n variants: {\n fullWidth: {\n true: { wrapper: 'w-full' },\n },\n dense: {\n true: { details: 'px-2' },\n false: { details: 'px-4' },\n },\n },\n defaultVariants: { fullWidth: false, dense: false },\n});\n\nconst ui = computed<ReturnType<typeof menuStyles>>(() => menuStyles({\n fullWidth,\n dense,\n}));\n\n// NOTE: both computed functions must return the *same* object shape from\n// every branch — otherwise vue-tsc infers the slot's `attrs` type as a\n// discriminated union where each key is either \"all defined\" or \"all\n// undefined\", which breaks consumer code that types its own `attrs`\n// handler with individually-optional keys.\nconst baseMenuAttrs = computed<BaseMenuAttrs>(() => {\n const clickVal = get(click);\n return {\n onMouseover: disabled\n ? undefined\n : () => {\n if (openOnHover)\n onOpen();\n },\n onMouseleave: disabled\n ? undefined\n : () => {\n if (openOnHover && !clickVal)\n onClose();\n },\n };\n});\n\nconst menuAttrs = computed<MenuAttrs>(() => ({\n ...get(baseMenuAttrs),\n onClick: disabled ? undefined : checkClick,\n}));\n\nfunction focusOnContent() {\n const content = get(menuContent);\n if (!content)\n return;\n\n // Focus on the menu container itself\n content.focus();\n}\n\nfunction focusMenu(): void {\n if (disableAutoFocus)\n return;\n\n nextTick(() => focusOnContent());\n}\n\nfunction focusOnActivator() {\n const activatorEl = get(activator);\n if (!activatorEl) {\n return;\n }\n const focusableEl = activatorEl.querySelector<HTMLElement>(FOCUSABLE_ELEMENTS_SELECTOR);\n if (focusableEl) {\n focusableEl.focus();\n }\n}\n\nfunction onLeave(event?: KeyboardEvent): void {\n if (!get(open))\n return;\n onClose();\n set(click, false);\n event?.stopPropagation();\n\n // Return focus to activator when menu closes\n if (disableAutoFocus) {\n return;\n }\n\n nextTick(() => focusOnActivator());\n}\n\nfunction checkClick(): void {\n if (get(open) && get(click)) {\n if (!persistOnActivatorClick)\n onLeave();\n }\n else {\n onOpen();\n set(click, true);\n }\n}\n\nwatch(modelValue, (value) => {\n if (get(open) === value)\n return;\n\n if (value) {\n onOpen();\n set(click, true);\n }\n else {\n onLeave();\n }\n});\n\nwatch(open, (open) => {\n set(modelValue, open);\n if (open) {\n focusMenu();\n }\n});\n\nonClickOutside(menu, () => {\n if (get(open) && !persistent)\n onLeave();\n}, { ignore: [activator] });\n</script>\n\n<template>\n <div\n :class=\"classNames?.root\"\n @keydown.esc.stop=\"onLeave()\"\n >\n <div\n ref=\"activator\"\n :class=\"ui.wrapper({ class: cn(classNames?.wrapper) ?? cn(wrapperClass as VueClassValue) })\"\n :data-menu-disabled=\"disabled\"\n aria-haspopup=\"true\"\n :aria-expanded=\"open\"\n >\n <slot\n name=\"activator\"\n v-bind=\"{ attrs: menuAttrs, open, disabled, hasError, hasSuccess }\"\n />\n </div>\n <Teleport\n v-if=\"!disabled\"\n to=\"body\"\n >\n <div\n v-if=\"visible\"\n ref=\"menu\"\n :class=\"ui.popover({ class: cn(classNames?.menu) ?? cn(menuClass as VueClassValue) })\"\n role=\"menu\"\n :data-placement=\"currentPlacement\"\n @click=\"closeOnContentClick ? onLeave() : undefined\"\n @keydown.esc.stop=\"onLeave()\"\n >\n <TransitionGroup\n enter-active-class=\"transition ease-out duration-200\"\n enter-from-class=\"opacity-0 translate-y-1\"\n enter-to-class=\"opacity-100 translate-y-0\"\n leave-active-class=\"transition ease-in duration-150\"\n leave-from-class=\"opacity-100 translate-y-0\"\n leave-to-class=\"opacity-0 translate-y-1\"\n @before-enter=\"updatePosition()\"\n @after-leave=\"leavePending ? onLeaveComplete() : undefined\"\n @before-leave=\"onLeavePending()\"\n >\n <div\n v-if=\"open\"\n ref=\"menuContent\"\n key=\"menu\"\n data-id=\"content\"\n :class=\"ui.content()\"\n tabindex=\"-1\"\n v-bind=\"baseMenuAttrs\"\n >\n <slot v-bind=\"{ width }\" />\n </div>\n </TransitionGroup>\n </div>\n </Teleport>\n <RuiFormTextDetail\n v-if=\"showDetails\"\n :class=\"ui.details()\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RuiMenu.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../src/components/overlays/menu/RuiMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { VueClassValue } from '@/types/class-value';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport { type FloatingOptions, useFloating } from '@/composables/floating';\nimport { type PopperOptions, toFloatingOptions } from '@/composables/popper';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { cn, tv } from '@/utils/tv';\n\ninterface BaseMenuAttrs { onMouseover?: () => void; onMouseleave?: () => void }\n\ninterface MenuAttrs extends BaseMenuAttrs { onClick?: () => void }\n\nexport interface RuiMenuClassNames {\n root?: VueClassValue;\n wrapper?: VueClassValue;\n menu?: VueClassValue;\n}\n\nexport interface MenuProps {\n openOnHover?: boolean;\n fullWidth?: boolean;\n disabled?: boolean;\n openDelay?: number;\n closeDelay?: number;\n options?: FloatingOptions;\n /** @deprecated Use `options` instead */\n popper?: PopperOptions;\n classNames?: RuiMenuClassNames;\n /** @deprecated Use `classNames.wrapper` instead */\n wrapperClass?: string | object | string[];\n /** @deprecated Use `classNames.menu` instead */\n menuClass?: string | object | string[];\n closeOnContentClick?: boolean;\n persistOnActivatorClick?: boolean;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n showDetails?: boolean;\n dense?: boolean;\n persistent?: boolean;\n disableAutoFocus?: boolean;\n /**\n * Optional external element to anchor the menu to, instead of the\n * activator slot's wrapper. When set, the menu's position is computed\n * against this element.\n */\n anchorEl?: HTMLElement;\n}\n\ndefineOptions({\n name: 'RuiMenu',\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst {\n openOnHover = false,\n disabled = false,\n fullWidth = false,\n openDelay = 0,\n closeDelay = 0,\n options,\n popper,\n classNames,\n wrapperClass = '',\n menuClass = '',\n closeOnContentClick = false,\n persistOnActivatorClick = false,\n hint,\n errorMessages = [],\n successMessages = [],\n showDetails = false,\n dense = false,\n persistent = false,\n disableAutoFocus = false,\n anchorEl,\n} = defineProps<MenuProps>();\n\ndefineSlots<{\n activator?: (props: {\n attrs: { onMouseover?: () => void; onMouseleave?: () => void; onClick?: () => void };\n open: boolean;\n disabled: boolean;\n hasError: boolean;\n hasSuccess: boolean;\n }) => any;\n default?: (props: { width: number }) => any;\n}>();\n\nconst click = ref<boolean>(false);\nconst menuContent = useTemplateRef<HTMLElement>('menuContent');\n\nconst FOCUSABLE_ELEMENTS_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\nconst {\n reference: activator,\n popover: menu,\n open,\n visible,\n currentPlacement,\n leavePending,\n onLeavePending,\n onOpen,\n onClose,\n onLeaveComplete,\n updatePosition,\n} = useFloating(\n () => popper ? toFloatingOptions(popper) : (options ?? {}),\n () => disabled,\n () => openDelay,\n () => closeDelay,\n () => anchorEl,\n);\n\nconst { width } = useElementSize(activator);\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst menuStyles = tv({\n slots: {\n wrapper: 'relative inline-flex max-w-full',\n popover: 'w-max z-[9999]',\n content: 'rounded overflow-hidden shadow-8 bg-white dark:bg-[#2E2E2E] text-rui-text focus:outline-none py-2',\n details: 'pt-1',\n },\n variants: {\n fullWidth: {\n true: { wrapper: 'w-full' },\n },\n dense: {\n true: { details: 'px-2' },\n false: { details: 'px-4' },\n },\n },\n defaultVariants: { fullWidth: false, dense: false },\n});\n\nconst ui = computed<ReturnType<typeof menuStyles>>(() => menuStyles({\n fullWidth,\n dense,\n}));\n\n// NOTE: both computed functions must return the *same* object shape from\n// every branch — otherwise vue-tsc infers the slot's `attrs` type as a\n// discriminated union where each key is either \"all defined\" or \"all\n// undefined\", which breaks consumer code that types its own `attrs`\n// handler with individually-optional keys.\nconst baseMenuAttrs = computed<BaseMenuAttrs>(() => {\n const clickVal = get(click);\n return {\n onMouseover: disabled\n ? undefined\n : () => {\n if (openOnHover)\n onOpen();\n },\n onMouseleave: disabled\n ? undefined\n : () => {\n if (openOnHover && !clickVal)\n onClose();\n },\n };\n});\n\nconst menuAttrs = computed<MenuAttrs>(() => ({\n ...get(baseMenuAttrs),\n onClick: disabled ? undefined : checkClick,\n}));\n\nfunction focusOnContent() {\n const content = get(menuContent);\n if (!content)\n return;\n\n // Focus on the menu container itself\n content.focus();\n}\n\nfunction focusMenu(): void {\n if (disableAutoFocus)\n return;\n\n nextTick(() => focusOnContent());\n}\n\nfunction focusOnActivator() {\n const activatorEl = get(activator);\n if (!activatorEl) {\n return;\n }\n const focusableEl = activatorEl.querySelector<HTMLElement>(FOCUSABLE_ELEMENTS_SELECTOR);\n if (focusableEl) {\n focusableEl.focus();\n }\n}\n\nfunction onLeave(event?: KeyboardEvent): void {\n if (!get(open))\n return;\n onClose();\n set(click, false);\n event?.stopPropagation();\n\n // Return focus to activator when menu closes\n if (disableAutoFocus) {\n return;\n }\n\n nextTick(() => focusOnActivator());\n}\n\nfunction checkClick(): void {\n if (get(open) && get(click)) {\n if (!persistOnActivatorClick)\n onLeave();\n }\n else {\n onOpen();\n set(click, true);\n }\n}\n\nwatch(modelValue, (value) => {\n if (get(open) === value)\n return;\n\n if (value) {\n onOpen();\n set(click, true);\n }\n else {\n onLeave();\n }\n});\n\nwatch(open, (open) => {\n set(modelValue, open);\n if (open) {\n focusMenu();\n }\n});\n\nonClickOutside(menu, () => {\n if (get(open) && !persistent)\n onLeave();\n}, { ignore: [activator] });\n</script>\n\n<template>\n <div\n :class=\"classNames?.root\"\n @keydown.esc.stop=\"onLeave()\"\n >\n <div\n ref=\"activator\"\n :class=\"ui.wrapper({ class: cn(classNames?.wrapper) ?? cn(wrapperClass as VueClassValue) })\"\n :data-menu-disabled=\"disabled\"\n aria-haspopup=\"true\"\n :aria-expanded=\"open\"\n >\n <slot\n name=\"activator\"\n v-bind=\"{ attrs: menuAttrs, open, disabled, hasError, hasSuccess }\"\n />\n </div>\n <Teleport\n v-if=\"!disabled\"\n to=\"body\"\n >\n <div\n v-if=\"visible\"\n ref=\"menu\"\n :class=\"ui.popover({ class: cn(classNames?.menu) ?? cn(menuClass as VueClassValue) })\"\n role=\"menu\"\n :data-placement=\"currentPlacement\"\n @click=\"closeOnContentClick ? onLeave() : undefined\"\n @keydown.esc.stop=\"onLeave()\"\n >\n <TransitionGroup\n enter-active-class=\"transition ease-out duration-200\"\n enter-from-class=\"opacity-0 translate-y-1\"\n enter-to-class=\"opacity-100 translate-y-0\"\n leave-active-class=\"transition ease-in duration-150\"\n leave-from-class=\"opacity-100 translate-y-0\"\n leave-to-class=\"opacity-0 translate-y-1\"\n @before-enter=\"updatePosition()\"\n @after-leave=\"leavePending ? onLeaveComplete() : undefined\"\n @before-leave=\"onLeavePending()\"\n >\n <div\n v-if=\"open\"\n ref=\"menuContent\"\n key=\"menu\"\n data-id=\"content\"\n :class=\"ui.content()\"\n tabindex=\"-1\"\n v-bind=\"baseMenuAttrs\"\n >\n <slot v-bind=\"{ width }\" />\n </div>\n </TransitionGroup>\n </div>\n </Teleport>\n <RuiFormTextDetail\n v-if=\"showDetails\"\n :class=\"ui.details()\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n"],"mappings":"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"}
@@ -6,6 +6,12 @@ export interface DropdownItemAttr<TValue, TItem> {
6
6
  keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;
7
7
  textAttr?: keyof TItem | ((item: TItem) => string);
8
8
  }
9
+ export type GroupBy<TItem> = keyof TItem | ((item: TItem) => string);
10
+ export type ItemDisabled<TItem> = keyof TItem | ((item: TItem) => boolean);
11
+ export interface DropdownOptionGroup<TItem> {
12
+ group: string;
13
+ items: TItem[];
14
+ }
9
15
  export interface DropdownOptions<TValue, TItem> {
10
16
  options: MaybeRefOrGetter<TItem[]>;
11
17
  dense?: MaybeRefOrGetter<boolean>;
@@ -24,12 +30,14 @@ export interface DropdownOptions<TValue, TItem> {
24
30
  isOpen?: Ref<boolean>;
25
31
  getText?: (item: TItem) => string | undefined;
26
32
  getIdentifier?: (item: TItem) => any;
33
+ groupBy?: MaybeRefOrGetter<GroupBy<TItem> | undefined>;
34
+ itemDisabled?: MaybeRefOrGetter<ItemDisabled<TItem> | undefined>;
27
35
  }
28
36
  export declare function useDropdownOptionProperty<TValue, TItem>({ keyAttr, textAttr, }: DropdownItemAttr<TValue, TItem>): {
29
37
  getIdentifier: (item: TItem) => TItem | TItem[KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>];
30
38
  getText: (item: TItem) => string | undefined;
31
39
  };
32
- export declare function useDropdownMenu<TValue, TItem>({ appendWidth, autoSelectFirst, dense, disabled, getIdentifier: externalGetIdentifier, getText: externalGetText, hideSelected, isOpen: externalIsOpen, itemHeight, keyAttr, menuRef: _menuRef, options: allOptions, overscan, prependWidth, setValue, textAttr, value, }: DropdownOptions<TValue, TItem>): {
40
+ export declare function useDropdownMenu<TValue, TItem>({ appendWidth, autoSelectFirst, dense, disabled, getIdentifier: externalGetIdentifier, getText: externalGetText, hideSelected, isOpen: externalIsOpen, itemHeight, keyAttr, menuRef: _menuRef, options: allOptions, overscan, prependWidth, setValue, textAttr, value, groupBy, itemDisabled, }: DropdownOptions<TValue, TItem>): {
33
41
  applyHighlighted: () => void;
34
42
  containerProps: {
35
43
  ref: Ref<HTMLElement | null>;
@@ -38,8 +46,11 @@ export declare function useDropdownMenu<TValue, TItem>({ appendWidth, autoSelect
38
46
  };
39
47
  getIdentifier: (item: TItem) => any;
40
48
  getText: (item: TItem) => string | undefined;
49
+ groupedOptions: globalThis.ComputedRef<DropdownOptionGroup<TItem>[]>;
41
50
  highlightedIndex: Ref<number, number>;
42
51
  isActiveItem: (item: TItem) => boolean;
52
+ isGrouped: globalThis.ComputedRef<boolean>;
53
+ isItemDisabled: (item: TItem) => boolean;
43
54
  isOpen: Ref<boolean, boolean>;
44
55
  itemIndexInValue: (item: TItem) => number;
45
56
  menuWidth: globalThis.ComputedRef<string>;
@@ -22,7 +22,7 @@ function toSelectedArray(val) {
22
22
  if (val !== null && val !== void 0) return [val];
23
23
  return [];
24
24
  }
25
- function useDropdownMenu({ appendWidth, autoSelectFirst, dense, disabled = false, getIdentifier: externalGetIdentifier, getText: externalGetText, hideSelected, isOpen: externalIsOpen, itemHeight = 48, keyAttr, menuRef: _menuRef, options: allOptions, overscan = 5, prependWidth, setValue, textAttr, value }) {
25
+ function useDropdownMenu({ appendWidth, autoSelectFirst, dense, disabled = false, getIdentifier: externalGetIdentifier, getText: externalGetText, hideSelected, isOpen: externalIsOpen, itemHeight = 48, keyAttr, menuRef: _menuRef, options: allOptions, overscan = 5, prependWidth, setValue, textAttr, value, groupBy, itemDisabled }) {
26
26
  const { getIdentifier: defaultGetIdentifier, getText: defaultGetText } = useDropdownOptionProperty({
27
27
  keyAttr,
28
28
  textAttr
@@ -43,6 +43,33 @@ function useDropdownMenu({ appendWidth, autoSelectFirst, dense, disabled = false
43
43
  if (!hideSelected) return options;
44
44
  return options.filter((item) => !isActiveItem(item));
45
45
  });
46
+ function getGroupKey(item) {
47
+ const group = toValue(groupBy);
48
+ if (!group) return "";
49
+ if (typeof group === "function") return group(item);
50
+ return String(item[group] ?? "");
51
+ }
52
+ function isItemDisabled(item) {
53
+ const itemDisabledValue = toValue(itemDisabled);
54
+ if (!itemDisabledValue) return false;
55
+ if (typeof itemDisabledValue === "function") return itemDisabledValue(item);
56
+ return Boolean(item[itemDisabledValue]);
57
+ }
58
+ const isGrouped = computed(() => toValue(groupBy) !== void 0);
59
+ const groupedOptions = computed(() => {
60
+ if (!get$1(isGrouped)) return [];
61
+ const buckets = /* @__PURE__ */ new Map();
62
+ for (const item of get$1(options)) {
63
+ const key = getGroupKey(item);
64
+ const list = buckets.get(key);
65
+ if (list) list.push(item);
66
+ else buckets.set(key, [item]);
67
+ }
68
+ return Array.from(buckets.entries()).map(([group, items]) => ({
69
+ group,
70
+ items
71
+ }));
72
+ });
46
73
  const { containerProps, list, scrollTo, wrapperProps } = useVirtualList(options, {
47
74
  itemHeight,
48
75
  overscan
@@ -147,27 +174,39 @@ function useDropdownMenu({ appendWidth, autoSelectFirst, dense, disabled = false
147
174
  return;
148
175
  }
149
176
  set$1(userNavigated, true);
177
+ const items = get$1(options);
178
+ const total = items.length;
179
+ if (total === 0) return;
180
+ const move = up ? -1 : 1;
150
181
  let position = get$1(highlightedIndex);
151
- position += up ? -1 : 1;
152
- const total = get$1(options).length;
153
- if (position >= total) set$1(highlightedIndex, 0);
154
- else if (position < 0) set$1(highlightedIndex, total - 1);
155
- else set$1(highlightedIndex, position);
182
+ for (let step = 0; step < total; step++) {
183
+ position += move;
184
+ if (position >= total) position = 0;
185
+ else if (position < 0) position = total - 1;
186
+ const candidate = items[position];
187
+ if (candidate !== void 0 && !isItemDisabled(candidate)) {
188
+ set$1(highlightedIndex, position);
189
+ return;
190
+ }
191
+ }
156
192
  };
157
193
  const applyHighlighted = () => {
158
194
  if (!setValue || !get$1(isOpen)) return;
159
195
  const highlightedIndexVal = get$1(highlightedIndex);
160
196
  if (highlightedIndexVal === -1) return;
161
197
  const entry = get$1(options)[highlightedIndexVal];
162
- if (entry !== void 0) setValue(entry);
198
+ if (entry !== void 0 && !isItemDisabled(entry)) setValue(entry);
163
199
  };
164
200
  return {
165
201
  applyHighlighted,
166
202
  containerProps,
167
203
  getIdentifier,
168
204
  getText,
205
+ groupedOptions,
169
206
  highlightedIndex,
170
207
  isActiveItem,
208
+ isGrouped,
209
+ isItemDisabled,
171
210
  isOpen,
172
211
  itemIndexInValue,
173
212
  menuWidth,
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-menu.js","names":[],"sources":["../../src/composables/dropdown-menu.ts"],"sourcesContent":["import type { MaybeRefOrGetter, Ref, TemplateRef } from 'vue';\n\nexport type KeyOfType<T, V> = T extends string | number | boolean | symbol | null | undefined\n ? never\n : V extends object\n ? keyof T\n : keyof {\n [P in keyof T as T[P] extends V ? P : V extends T[P] ? P : never]: any;\n };\n\nexport interface DropdownItemAttr<TValue, TItem> {\n keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;\n textAttr?: keyof TItem | ((item: TItem) => string);\n}\n\nexport interface DropdownOptions<TValue, TItem> {\n options: MaybeRefOrGetter<TItem[]>;\n dense?: MaybeRefOrGetter<boolean>;\n disabled?: MaybeRefOrGetter<boolean>;\n value: Ref<TItem | TItem[] | undefined>;\n menuRef: Ref<HTMLElement> | TemplateRef<HTMLElement>;\n keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;\n textAttr?: keyof TItem | ((item: TItem) => string);\n appendWidth?: number;\n prependWidth?: number;\n itemHeight?: number;\n overscan?: number;\n autoSelectFirst?: boolean;\n setValue?: (val: TItem) => void;\n hideSelected?: boolean;\n isOpen?: Ref<boolean>;\n getText?: (item: TItem) => string | undefined;\n getIdentifier?: (item: TItem) => any;\n}\n\nexport function useDropdownOptionProperty<TValue, TItem>({\n keyAttr,\n textAttr,\n}: DropdownItemAttr<TValue, TItem>) {\n function getText(item: TItem): string | undefined {\n if (textAttr) {\n if (typeof textAttr === 'function')\n return textAttr(item);\n else return item[textAttr]?.toString();\n }\n\n return item?.toString();\n }\n\n function getIdentifier(\n item: TItem,\n ): TItem | TItem[KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>] {\n if (keyAttr)\n return item[keyAttr];\n\n return item;\n }\n\n return {\n getIdentifier,\n getText,\n };\n}\n\nfunction toSelectedArray<TItem>(val: TItem | TItem[] | undefined): TItem[] {\n if (Array.isArray(val))\n return val;\n if (val !== null && val !== undefined)\n return [val];\n return [];\n}\n\nexport function useDropdownMenu<TValue, TItem>({\n appendWidth,\n autoSelectFirst,\n dense,\n disabled = false,\n getIdentifier: externalGetIdentifier,\n getText: externalGetText,\n hideSelected,\n isOpen: externalIsOpen,\n itemHeight = 48,\n keyAttr,\n menuRef: _menuRef,\n options: allOptions,\n overscan = 5,\n prependWidth,\n setValue,\n textAttr,\n value,\n}: DropdownOptions<TValue, TItem>) {\n const { getIdentifier: defaultGetIdentifier, getText: defaultGetText } = useDropdownOptionProperty({\n keyAttr,\n textAttr,\n });\n\n const getIdentifier = externalGetIdentifier ?? defaultGetIdentifier;\n const getText = externalGetText ?? defaultGetText;\n\n const activeIdentifiers = computed<Set<any>>(() => {\n const val = get(value);\n const selected: TItem[] = toSelectedArray(val);\n const identifiers = new Set<any>();\n for (const item of selected) {\n identifiers.add(getIdentifier(item));\n }\n return identifiers;\n });\n\n function isActiveItem(item: TItem): boolean {\n return get(activeIdentifiers).has(getIdentifier(item));\n }\n\n const options = computed<TItem[]>(() => {\n const options = toValue(allOptions);\n if (!hideSelected)\n return options;\n\n return options.filter(item => !isActiveItem(item));\n });\n\n const { containerProps, list, scrollTo, wrapperProps } = useVirtualList<TItem>(options, {\n itemHeight,\n overscan,\n });\n\n const renderedData = useArrayMap(list, ({ data, index: _index }) => ({ _index, item: data }));\n\n const isOpen = externalIsOpen ?? shallowRef<boolean>(false);\n\n const valueKey = computed(() => {\n const selected = get(value);\n if (!keyAttr || !selected)\n return selected;\n return Array.isArray(selected) ? selected.map(item => item[keyAttr]) : selected[keyAttr];\n });\n\n const highlightedIndex: Ref<number> = ref(get(autoSelectFirst) ? 0 : -1);\n const userNavigated = shallowRef<boolean>(false);\n\n const optionWidthBounds = computed<{ min: number; max: number }>(() => {\n let min = 0;\n let max = 0;\n for (const option of get(options)) {\n const length = getText(option)?.toString()?.length ?? 0;\n if (min === 0 && max === 0) {\n min = length;\n max = length;\n }\n else if (length < min) {\n min = length;\n }\n else if (length > max) {\n max = length;\n }\n }\n return { min, max };\n });\n\n const menuWidth = computed<string>(() => {\n const { min, max } = get(optionWidthBounds);\n const maxWidth = 30;\n const paddingX = 1.5;\n const fontMultiplier = toValue(dense) ? 12 : 13;\n const difference = max - min;\n\n function computeValue(width: number): string {\n const additionalWidths =\n (prependWidth ? prependWidth + 0.5 : 0) + (appendWidth ? appendWidth + 0.5 : 0);\n return `${Math.min((width * fontMultiplier) / 16 + paddingX + additionalWidths, maxWidth)}rem`;\n }\n\n if (difference <= 5)\n return computeValue(max);\n\n return computeValue(min + difference / 2);\n });\n\n function toggle(state: boolean = false): void {\n set(isOpen, state);\n }\n\n function itemIndexInValue(item: TItem): number {\n const val = get(value);\n const selected: TItem[] = toSelectedArray(val);\n\n if (selected.length === 0)\n return -1;\n\n const itemId = getIdentifier(item);\n return selected.findIndex(selectedItem => getIdentifier(selectedItem) === itemId);\n }\n\n function scrollHighlightedIntoView(): void {\n get(_menuRef)\n ?.querySelector<HTMLElement>('[data-highlighted=\"true\"]')\n ?.scrollIntoView({ block: 'nearest' });\n }\n\n async function adjustScrollByHighlightedIndex(): Promise<void> {\n const index = get(highlightedIndex);\n if (index === -1)\n return;\n\n await nextTick();\n if (get(_menuRef)?.querySelector('[data-highlighted=\"true\"]')) {\n scrollHighlightedIntoView();\n return;\n }\n\n // Highlighted item is outside the virtual list's rendered window —\n // kick the virtual scroll to render it, then nudge it fully into view.\n scrollTo(index);\n await nextTick();\n scrollHighlightedIntoView();\n }\n\n async function updateOpen(open: boolean): Promise<void> {\n if (!open)\n return;\n\n const val = get(value);\n\n // Set highlighted index to active item\n if ((Array.isArray(val) && val.length > 0) || (val !== null && val !== undefined)) {\n const index = get(options).findIndex(isActiveItem);\n if (index > -1)\n set(highlightedIndex, index);\n }\n\n await adjustScrollByHighlightedIndex();\n }\n\n watch([isOpen, () => toValue(disabled)], async ([open, _]) => {\n await updateOpen(open);\n });\n\n watch(highlightedIndex, async () => {\n await adjustScrollByHighlightedIndex();\n });\n\n watch(options, async () => {\n set(userNavigated, false);\n if (get(highlightedIndex) !== -1) {\n if (get(autoSelectFirst)) {\n set(highlightedIndex, 0);\n await adjustScrollByHighlightedIndex();\n }\n else {\n set(highlightedIndex, -1);\n scrollTo(0);\n }\n }\n else {\n scrollTo(0);\n }\n });\n\n watch(isOpen, (open) => {\n if (!open)\n set(userNavigated, false);\n });\n\n const moveHighlight = (up: boolean): void => {\n if (!get(isOpen)) {\n toggle(true);\n return;\n }\n\n set(userNavigated, true);\n\n let position = get(highlightedIndex);\n const move = up ? -1 : 1;\n\n position += move;\n\n const total = get(options).length;\n\n if (position >= total)\n set(highlightedIndex, 0);\n else if (position < 0)\n set(highlightedIndex, total - 1);\n else set(highlightedIndex, position);\n };\n\n const applyHighlighted = (): void => {\n if (!setValue || !get(isOpen))\n return;\n\n const highlightedIndexVal = get(highlightedIndex);\n if (highlightedIndexVal === -1)\n return;\n\n const entry = get(options)[highlightedIndexVal];\n if (entry !== undefined)\n setValue(entry);\n };\n\n return {\n applyHighlighted,\n containerProps,\n getIdentifier,\n getText,\n highlightedIndex,\n isActiveItem,\n isOpen,\n itemIndexInValue,\n menuWidth,\n moveHighlight,\n optionsWithSelectedHidden: options,\n renderedData,\n toggle,\n userNavigated,\n valueKey,\n wrapperProps,\n };\n}\n"],"mappings":";;;;AAmCA,SAAgB,0BAAyC,EACvD,SACA,YACkC;CAClC,SAAS,QAAQ,MAAiC;AAChD,MAAI,SACF,KAAI,OAAO,aAAa,WACtB,QAAO,SAAS,KAAK;MAClB,QAAO,KAAK,WAAW,UAAU;AAGxC,SAAO,MAAM,UAAU;;CAGzB,SAAS,cACP,MAC6E;AAC7E,MAAI,QACF,QAAO,KAAK;AAEd,SAAO;;AAGT,QAAO;EACL;EACA;EACD;;AAGH,SAAS,gBAAuB,KAA2C;AACzE,KAAI,MAAM,QAAQ,IAAI,CACpB,QAAO;AACT,KAAI,QAAQ,QAAQ,QAAQ,KAAA,EAC1B,QAAO,CAAC,IAAI;AACd,QAAO,EAAE;;AAGX,SAAgB,gBAA+B,EAC7C,aACA,iBACA,OACA,WAAW,OACX,eAAe,uBACf,SAAS,iBACT,cACA,QAAQ,gBACR,aAAa,IACb,SACA,SAAS,UACT,SAAS,YACT,WAAW,GACX,cACA,UACA,UACA,SACiC;CACjC,MAAM,EAAE,eAAe,sBAAsB,SAAS,mBAAmB,0BAA0B;EACjG;EACA;EACD,CAAC;CAEF,MAAM,gBAAgB,yBAAyB;CAC/C,MAAM,UAAU,mBAAmB;CAEnC,MAAM,oBAAoB,eAAyB;EAEjD,MAAM,WAAoB,gBADd,MAAI,MAAM,CACwB;EAC9C,MAAM,8BAAc,IAAI,KAAU;AAClC,OAAK,MAAM,QAAQ,SACjB,aAAY,IAAI,cAAc,KAAK,CAAC;AAEtC,SAAO;GACP;CAEF,SAAS,aAAa,MAAsB;AAC1C,SAAO,MAAI,kBAAkB,CAAC,IAAI,cAAc,KAAK,CAAC;;CAGxD,MAAM,UAAU,eAAwB;EACtC,MAAM,UAAU,QAAQ,WAAW;AACnC,MAAI,CAAC,aACH,QAAO;AAET,SAAO,QAAQ,QAAO,SAAQ,CAAC,aAAa,KAAK,CAAC;GAClD;CAEF,MAAM,EAAE,gBAAgB,MAAM,UAAU,iBAAiB,eAAsB,SAAS;EACtF;EACA;EACD,CAAC;CAEF,MAAM,eAAe,YAAY,OAAO,EAAE,MAAM,OAAO,cAAc;EAAE;EAAQ,MAAM;EAAM,EAAE;CAE7F,MAAM,SAAS,kBAAkB,WAAoB,MAAM;CAE3D,MAAM,WAAW,eAAe;EAC9B,MAAM,WAAW,MAAI,MAAM;AAC3B,MAAI,CAAC,WAAW,CAAC,SACf,QAAO;AACT,SAAO,MAAM,QAAQ,SAAS,GAAG,SAAS,KAAI,SAAQ,KAAK,SAAS,GAAG,SAAS;GAChF;CAEF,MAAM,mBAAgC,IAAI,MAAI,gBAAgB,GAAG,IAAI,GAAG;CACxE,MAAM,gBAAgB,WAAoB,MAAM;CAEhD,MAAM,oBAAoB,eAA6C;EACrE,IAAI,MAAM;EACV,IAAI,MAAM;AACV,OAAK,MAAM,UAAU,MAAI,QAAQ,EAAE;GACjC,MAAM,SAAS,QAAQ,OAAO,EAAE,UAAU,EAAE,UAAU;AACtD,OAAI,QAAQ,KAAK,QAAQ,GAAG;AAC1B,UAAM;AACN,UAAM;cAEC,SAAS,IAChB,OAAM;YAEC,SAAS,IAChB,OAAM;;AAGV,SAAO;GAAE;GAAK;GAAK;GACnB;CAEF,MAAM,YAAY,eAAuB;EACvC,MAAM,EAAE,KAAK,QAAQ,MAAI,kBAAkB;EAC3C,MAAM,WAAW;EACjB,MAAM,WAAW;EACjB,MAAM,iBAAiB,QAAQ,MAAM,GAAG,KAAK;EAC7C,MAAM,aAAa,MAAM;EAEzB,SAAS,aAAa,OAAuB;GAC3C,MAAM,oBACH,eAAe,eAAe,KAAM,MAAM,cAAc,cAAc,KAAM;AAC/E,UAAO,GAAG,KAAK,IAAK,QAAQ,iBAAkB,KAAK,WAAW,kBAAkB,SAAS,CAAC;;AAG5F,MAAI,cAAc,EAChB,QAAO,aAAa,IAAI;AAE1B,SAAO,aAAa,MAAM,aAAa,EAAE;GACzC;CAEF,SAAS,OAAO,QAAiB,OAAa;AAC5C,QAAI,QAAQ,MAAM;;CAGpB,SAAS,iBAAiB,MAAqB;EAE7C,MAAM,WAAoB,gBADd,MAAI,MAAM,CACwB;AAE9C,MAAI,SAAS,WAAW,EACtB,QAAO;EAET,MAAM,SAAS,cAAc,KAAK;AAClC,SAAO,SAAS,WAAU,iBAAgB,cAAc,aAAa,KAAK,OAAO;;CAGnF,SAAS,4BAAkC;AACzC,QAAI,SAAS,EACT,cAA2B,8BAA4B,EACvD,eAAe,EAAE,OAAO,WAAW,CAAC;;CAG1C,eAAe,iCAAgD;EAC7D,MAAM,QAAQ,MAAI,iBAAiB;AACnC,MAAI,UAAU,GACZ;AAEF,QAAM,UAAU;AAChB,MAAI,MAAI,SAAS,EAAE,cAAc,8BAA4B,EAAE;AAC7D,8BAA2B;AAC3B;;AAKF,WAAS,MAAM;AACf,QAAM,UAAU;AAChB,6BAA2B;;CAG7B,eAAe,WAAW,MAA8B;AACtD,MAAI,CAAC,KACH;EAEF,MAAM,MAAM,MAAI,MAAM;AAGtB,MAAK,MAAM,QAAQ,IAAI,IAAI,IAAI,SAAS,KAAO,QAAQ,QAAQ,QAAQ,KAAA,GAAY;GACjF,MAAM,QAAQ,MAAI,QAAQ,CAAC,UAAU,aAAa;AAClD,OAAI,QAAQ,GACV,OAAI,kBAAkB,MAAM;;AAGhC,QAAM,gCAAgC;;AAGxC,OAAM,CAAC,cAAc,QAAQ,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,OAAO;AAC5D,QAAM,WAAW,KAAK;GACtB;AAEF,OAAM,kBAAkB,YAAY;AAClC,QAAM,gCAAgC;GACtC;AAEF,OAAM,SAAS,YAAY;AACzB,QAAI,eAAe,MAAM;AACzB,MAAI,MAAI,iBAAiB,KAAK,GAC5B,KAAI,MAAI,gBAAgB,EAAE;AACxB,SAAI,kBAAkB,EAAE;AACxB,SAAM,gCAAgC;SAEnC;AACH,SAAI,kBAAkB,GAAG;AACzB,YAAS,EAAE;;MAIb,UAAS,EAAE;GAEb;AAEF,OAAM,SAAS,SAAS;AACtB,MAAI,CAAC,KACH,OAAI,eAAe,MAAM;GAC3B;CAEF,MAAM,iBAAiB,OAAsB;AAC3C,MAAI,CAAC,MAAI,OAAO,EAAE;AAChB,UAAO,KAAK;AACZ;;AAGF,QAAI,eAAe,KAAK;EAExB,IAAI,WAAW,MAAI,iBAAiB;AAGpC,cAFa,KAAK,KAAK;EAIvB,MAAM,QAAQ,MAAI,QAAQ,CAAC;AAE3B,MAAI,YAAY,MACd,OAAI,kBAAkB,EAAE;WACjB,WAAW,EAClB,OAAI,kBAAkB,QAAQ,EAAE;MAC7B,OAAI,kBAAkB,SAAS;;CAGtC,MAAM,yBAA+B;AACnC,MAAI,CAAC,YAAY,CAAC,MAAI,OAAO,CAC3B;EAEF,MAAM,sBAAsB,MAAI,iBAAiB;AACjD,MAAI,wBAAwB,GAC1B;EAEF,MAAM,QAAQ,MAAI,QAAQ,CAAC;AAC3B,MAAI,UAAU,KAAA,EACZ,UAAS,MAAM;;AAGnB,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,2BAA2B;EAC3B;EACA;EACA;EACA;EACA;EACD"}
1
+ {"version":3,"file":"dropdown-menu.js","names":[],"sources":["../../src/composables/dropdown-menu.ts"],"sourcesContent":["import type { MaybeRefOrGetter, Ref, TemplateRef } from 'vue';\n\nexport type KeyOfType<T, V> = T extends string | number | boolean | symbol | null | undefined\n ? never\n : V extends object\n ? keyof T\n : keyof {\n [P in keyof T as T[P] extends V ? P : V extends T[P] ? P : never]: any;\n };\n\nexport interface DropdownItemAttr<TValue, TItem> {\n keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;\n textAttr?: keyof TItem | ((item: TItem) => string);\n}\n\nexport type GroupBy<TItem> = keyof TItem | ((item: TItem) => string);\n\nexport type ItemDisabled<TItem> = keyof TItem | ((item: TItem) => boolean);\n\nexport interface DropdownOptionGroup<TItem> {\n group: string;\n items: TItem[];\n}\n\nexport interface DropdownOptions<TValue, TItem> {\n options: MaybeRefOrGetter<TItem[]>;\n dense?: MaybeRefOrGetter<boolean>;\n disabled?: MaybeRefOrGetter<boolean>;\n value: Ref<TItem | TItem[] | undefined>;\n menuRef: Ref<HTMLElement> | TemplateRef<HTMLElement>;\n keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;\n textAttr?: keyof TItem | ((item: TItem) => string);\n appendWidth?: number;\n prependWidth?: number;\n itemHeight?: number;\n overscan?: number;\n autoSelectFirst?: boolean;\n setValue?: (val: TItem) => void;\n hideSelected?: boolean;\n isOpen?: Ref<boolean>;\n getText?: (item: TItem) => string | undefined;\n getIdentifier?: (item: TItem) => any;\n groupBy?: MaybeRefOrGetter<GroupBy<TItem> | undefined>;\n itemDisabled?: MaybeRefOrGetter<ItemDisabled<TItem> | undefined>;\n}\n\nexport function useDropdownOptionProperty<TValue, TItem>({\n keyAttr,\n textAttr,\n}: DropdownItemAttr<TValue, TItem>) {\n function getText(item: TItem): string | undefined {\n if (textAttr) {\n if (typeof textAttr === 'function')\n return textAttr(item);\n else return item[textAttr]?.toString();\n }\n\n return item?.toString();\n }\n\n function getIdentifier(\n item: TItem,\n ): TItem | TItem[KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>] {\n if (keyAttr)\n return item[keyAttr];\n\n return item;\n }\n\n return {\n getIdentifier,\n getText,\n };\n}\n\nfunction toSelectedArray<TItem>(val: TItem | TItem[] | undefined): TItem[] {\n if (Array.isArray(val))\n return val;\n if (val !== null && val !== undefined)\n return [val];\n return [];\n}\n\nexport function useDropdownMenu<TValue, TItem>({\n appendWidth,\n autoSelectFirst,\n dense,\n disabled = false,\n getIdentifier: externalGetIdentifier,\n getText: externalGetText,\n hideSelected,\n isOpen: externalIsOpen,\n itemHeight = 48,\n keyAttr,\n menuRef: _menuRef,\n options: allOptions,\n overscan = 5,\n prependWidth,\n setValue,\n textAttr,\n value,\n groupBy,\n itemDisabled,\n}: DropdownOptions<TValue, TItem>) {\n const { getIdentifier: defaultGetIdentifier, getText: defaultGetText } = useDropdownOptionProperty({\n keyAttr,\n textAttr,\n });\n\n const getIdentifier = externalGetIdentifier ?? defaultGetIdentifier;\n const getText = externalGetText ?? defaultGetText;\n\n const activeIdentifiers = computed<Set<any>>(() => {\n const val = get(value);\n const selected: TItem[] = toSelectedArray(val);\n const identifiers = new Set<any>();\n for (const item of selected) {\n identifiers.add(getIdentifier(item));\n }\n return identifiers;\n });\n\n function isActiveItem(item: TItem): boolean {\n return get(activeIdentifiers).has(getIdentifier(item));\n }\n\n const options = computed<TItem[]>(() => {\n const options = toValue(allOptions);\n if (!hideSelected)\n return options;\n\n return options.filter(item => !isActiveItem(item));\n });\n\n function getGroupKey(item: TItem): string {\n const group = toValue(groupBy);\n if (!group)\n return '';\n\n if (typeof group === 'function')\n return group(item);\n\n return String(item[group] ?? '');\n }\n\n function isItemDisabled(item: TItem): boolean {\n const itemDisabledValue = toValue(itemDisabled);\n if (!itemDisabledValue)\n return false;\n\n if (typeof itemDisabledValue === 'function')\n return itemDisabledValue(item);\n\n return Boolean(item[itemDisabledValue]);\n }\n\n const isGrouped = computed<boolean>(() => toValue(groupBy) !== undefined);\n\n const groupedOptions = computed<DropdownOptionGroup<TItem>[]>(() => {\n if (!get(isGrouped))\n return [];\n\n const buckets = new Map<string, TItem[]>();\n for (const item of get(options)) {\n const key = getGroupKey(item);\n const list = buckets.get(key);\n if (list)\n list.push(item);\n else\n buckets.set(key, [item]);\n }\n\n return Array.from(buckets.entries()).map(([group, items]) => ({ group, items }));\n });\n\n const { containerProps, list, scrollTo, wrapperProps } = useVirtualList<TItem>(options, {\n itemHeight,\n overscan,\n });\n\n const renderedData = useArrayMap(list, ({ data, index: _index }) => ({ _index, item: data }));\n\n const isOpen = externalIsOpen ?? shallowRef<boolean>(false);\n\n const valueKey = computed(() => {\n const selected = get(value);\n if (!keyAttr || !selected)\n return selected;\n return Array.isArray(selected) ? selected.map(item => item[keyAttr]) : selected[keyAttr];\n });\n\n const highlightedIndex: Ref<number> = ref(get(autoSelectFirst) ? 0 : -1);\n const userNavigated = shallowRef<boolean>(false);\n\n const optionWidthBounds = computed<{ min: number; max: number }>(() => {\n let min = 0;\n let max = 0;\n for (const option of get(options)) {\n const length = getText(option)?.toString()?.length ?? 0;\n if (min === 0 && max === 0) {\n min = length;\n max = length;\n }\n else if (length < min) {\n min = length;\n }\n else if (length > max) {\n max = length;\n }\n }\n return { min, max };\n });\n\n const menuWidth = computed<string>(() => {\n const { min, max } = get(optionWidthBounds);\n const maxWidth = 30;\n const paddingX = 1.5;\n const fontMultiplier = toValue(dense) ? 12 : 13;\n const difference = max - min;\n\n function computeValue(width: number): string {\n const additionalWidths =\n (prependWidth ? prependWidth + 0.5 : 0) + (appendWidth ? appendWidth + 0.5 : 0);\n return `${Math.min((width * fontMultiplier) / 16 + paddingX + additionalWidths, maxWidth)}rem`;\n }\n\n if (difference <= 5)\n return computeValue(max);\n\n return computeValue(min + difference / 2);\n });\n\n function toggle(state: boolean = false): void {\n set(isOpen, state);\n }\n\n function itemIndexInValue(item: TItem): number {\n const val = get(value);\n const selected: TItem[] = toSelectedArray(val);\n\n if (selected.length === 0)\n return -1;\n\n const itemId = getIdentifier(item);\n return selected.findIndex(selectedItem => getIdentifier(selectedItem) === itemId);\n }\n\n function scrollHighlightedIntoView(): void {\n get(_menuRef)\n ?.querySelector<HTMLElement>('[data-highlighted=\"true\"]')\n ?.scrollIntoView({ block: 'nearest' });\n }\n\n async function adjustScrollByHighlightedIndex(): Promise<void> {\n const index = get(highlightedIndex);\n if (index === -1)\n return;\n\n await nextTick();\n if (get(_menuRef)?.querySelector('[data-highlighted=\"true\"]')) {\n scrollHighlightedIntoView();\n return;\n }\n\n // Highlighted item is outside the virtual list's rendered window —\n // kick the virtual scroll to render it, then nudge it fully into view.\n scrollTo(index);\n await nextTick();\n scrollHighlightedIntoView();\n }\n\n async function updateOpen(open: boolean): Promise<void> {\n if (!open)\n return;\n\n const val = get(value);\n\n // Set highlighted index to active item\n if ((Array.isArray(val) && val.length > 0) || (val !== null && val !== undefined)) {\n const index = get(options).findIndex(isActiveItem);\n if (index > -1)\n set(highlightedIndex, index);\n }\n\n await adjustScrollByHighlightedIndex();\n }\n\n watch([isOpen, () => toValue(disabled)], async ([open, _]) => {\n await updateOpen(open);\n });\n\n watch(highlightedIndex, async () => {\n await adjustScrollByHighlightedIndex();\n });\n\n watch(options, async () => {\n set(userNavigated, false);\n if (get(highlightedIndex) !== -1) {\n if (get(autoSelectFirst)) {\n set(highlightedIndex, 0);\n await adjustScrollByHighlightedIndex();\n }\n else {\n set(highlightedIndex, -1);\n scrollTo(0);\n }\n }\n else {\n scrollTo(0);\n }\n });\n\n watch(isOpen, (open) => {\n if (!open)\n set(userNavigated, false);\n });\n\n const moveHighlight = (up: boolean): void => {\n if (!get(isOpen)) {\n toggle(true);\n return;\n }\n\n set(userNavigated, true);\n\n const items = get(options);\n const total = items.length;\n if (total === 0)\n return;\n\n const move = up ? -1 : 1;\n let position = get(highlightedIndex);\n\n for (let step = 0; step < total; step++) {\n position += move;\n if (position >= total)\n position = 0;\n else if (position < 0)\n position = total - 1;\n\n const candidate = items[position];\n if (candidate !== undefined && !isItemDisabled(candidate)) {\n set(highlightedIndex, position);\n return;\n }\n }\n };\n\n const applyHighlighted = (): void => {\n if (!setValue || !get(isOpen))\n return;\n\n const highlightedIndexVal = get(highlightedIndex);\n if (highlightedIndexVal === -1)\n return;\n\n const entry = get(options)[highlightedIndexVal];\n if (entry !== undefined && !isItemDisabled(entry))\n setValue(entry);\n };\n\n return {\n applyHighlighted,\n containerProps,\n getIdentifier,\n getText,\n groupedOptions,\n highlightedIndex,\n isActiveItem,\n isGrouped,\n isItemDisabled,\n isOpen,\n itemIndexInValue,\n menuWidth,\n moveHighlight,\n optionsWithSelectedHidden: options,\n renderedData,\n toggle,\n userNavigated,\n valueKey,\n wrapperProps,\n };\n}\n"],"mappings":";;;;AA8CA,SAAgB,0BAAyC,EACvD,SACA,YACkC;CAClC,SAAS,QAAQ,MAAiC;AAChD,MAAI,SACF,KAAI,OAAO,aAAa,WACtB,QAAO,SAAS,KAAK;MAClB,QAAO,KAAK,WAAW,UAAU;AAGxC,SAAO,MAAM,UAAU;;CAGzB,SAAS,cACP,MAC6E;AAC7E,MAAI,QACF,QAAO,KAAK;AAEd,SAAO;;AAGT,QAAO;EACL;EACA;EACD;;AAGH,SAAS,gBAAuB,KAA2C;AACzE,KAAI,MAAM,QAAQ,IAAI,CACpB,QAAO;AACT,KAAI,QAAQ,QAAQ,QAAQ,KAAA,EAC1B,QAAO,CAAC,IAAI;AACd,QAAO,EAAE;;AAGX,SAAgB,gBAA+B,EAC7C,aACA,iBACA,OACA,WAAW,OACX,eAAe,uBACf,SAAS,iBACT,cACA,QAAQ,gBACR,aAAa,IACb,SACA,SAAS,UACT,SAAS,YACT,WAAW,GACX,cACA,UACA,UACA,OACA,SACA,gBACiC;CACjC,MAAM,EAAE,eAAe,sBAAsB,SAAS,mBAAmB,0BAA0B;EACjG;EACA;EACD,CAAC;CAEF,MAAM,gBAAgB,yBAAyB;CAC/C,MAAM,UAAU,mBAAmB;CAEnC,MAAM,oBAAoB,eAAyB;EAEjD,MAAM,WAAoB,gBADd,MAAI,MAAM,CACwB;EAC9C,MAAM,8BAAc,IAAI,KAAU;AAClC,OAAK,MAAM,QAAQ,SACjB,aAAY,IAAI,cAAc,KAAK,CAAC;AAEtC,SAAO;GACP;CAEF,SAAS,aAAa,MAAsB;AAC1C,SAAO,MAAI,kBAAkB,CAAC,IAAI,cAAc,KAAK,CAAC;;CAGxD,MAAM,UAAU,eAAwB;EACtC,MAAM,UAAU,QAAQ,WAAW;AACnC,MAAI,CAAC,aACH,QAAO;AAET,SAAO,QAAQ,QAAO,SAAQ,CAAC,aAAa,KAAK,CAAC;GAClD;CAEF,SAAS,YAAY,MAAqB;EACxC,MAAM,QAAQ,QAAQ,QAAQ;AAC9B,MAAI,CAAC,MACH,QAAO;AAET,MAAI,OAAO,UAAU,WACnB,QAAO,MAAM,KAAK;AAEpB,SAAO,OAAO,KAAK,UAAU,GAAG;;CAGlC,SAAS,eAAe,MAAsB;EAC5C,MAAM,oBAAoB,QAAQ,aAAa;AAC/C,MAAI,CAAC,kBACH,QAAO;AAET,MAAI,OAAO,sBAAsB,WAC/B,QAAO,kBAAkB,KAAK;AAEhC,SAAO,QAAQ,KAAK,mBAAmB;;CAGzC,MAAM,YAAY,eAAwB,QAAQ,QAAQ,KAAK,KAAA,EAAU;CAEzE,MAAM,iBAAiB,eAA6C;AAClE,MAAI,CAAC,MAAI,UAAU,CACjB,QAAO,EAAE;EAEX,MAAM,0BAAU,IAAI,KAAsB;AAC1C,OAAK,MAAM,QAAQ,MAAI,QAAQ,EAAE;GAC/B,MAAM,MAAM,YAAY,KAAK;GAC7B,MAAM,OAAO,QAAQ,IAAI,IAAI;AAC7B,OAAI,KACF,MAAK,KAAK,KAAK;OAEf,SAAQ,IAAI,KAAK,CAAC,KAAK,CAAC;;AAG5B,SAAO,MAAM,KAAK,QAAQ,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY;GAAE;GAAO;GAAO,EAAE;GAChF;CAEF,MAAM,EAAE,gBAAgB,MAAM,UAAU,iBAAiB,eAAsB,SAAS;EACtF;EACA;EACD,CAAC;CAEF,MAAM,eAAe,YAAY,OAAO,EAAE,MAAM,OAAO,cAAc;EAAE;EAAQ,MAAM;EAAM,EAAE;CAE7F,MAAM,SAAS,kBAAkB,WAAoB,MAAM;CAE3D,MAAM,WAAW,eAAe;EAC9B,MAAM,WAAW,MAAI,MAAM;AAC3B,MAAI,CAAC,WAAW,CAAC,SACf,QAAO;AACT,SAAO,MAAM,QAAQ,SAAS,GAAG,SAAS,KAAI,SAAQ,KAAK,SAAS,GAAG,SAAS;GAChF;CAEF,MAAM,mBAAgC,IAAI,MAAI,gBAAgB,GAAG,IAAI,GAAG;CACxE,MAAM,gBAAgB,WAAoB,MAAM;CAEhD,MAAM,oBAAoB,eAA6C;EACrE,IAAI,MAAM;EACV,IAAI,MAAM;AACV,OAAK,MAAM,UAAU,MAAI,QAAQ,EAAE;GACjC,MAAM,SAAS,QAAQ,OAAO,EAAE,UAAU,EAAE,UAAU;AACtD,OAAI,QAAQ,KAAK,QAAQ,GAAG;AAC1B,UAAM;AACN,UAAM;cAEC,SAAS,IAChB,OAAM;YAEC,SAAS,IAChB,OAAM;;AAGV,SAAO;GAAE;GAAK;GAAK;GACnB;CAEF,MAAM,YAAY,eAAuB;EACvC,MAAM,EAAE,KAAK,QAAQ,MAAI,kBAAkB;EAC3C,MAAM,WAAW;EACjB,MAAM,WAAW;EACjB,MAAM,iBAAiB,QAAQ,MAAM,GAAG,KAAK;EAC7C,MAAM,aAAa,MAAM;EAEzB,SAAS,aAAa,OAAuB;GAC3C,MAAM,oBACH,eAAe,eAAe,KAAM,MAAM,cAAc,cAAc,KAAM;AAC/E,UAAO,GAAG,KAAK,IAAK,QAAQ,iBAAkB,KAAK,WAAW,kBAAkB,SAAS,CAAC;;AAG5F,MAAI,cAAc,EAChB,QAAO,aAAa,IAAI;AAE1B,SAAO,aAAa,MAAM,aAAa,EAAE;GACzC;CAEF,SAAS,OAAO,QAAiB,OAAa;AAC5C,QAAI,QAAQ,MAAM;;CAGpB,SAAS,iBAAiB,MAAqB;EAE7C,MAAM,WAAoB,gBADd,MAAI,MAAM,CACwB;AAE9C,MAAI,SAAS,WAAW,EACtB,QAAO;EAET,MAAM,SAAS,cAAc,KAAK;AAClC,SAAO,SAAS,WAAU,iBAAgB,cAAc,aAAa,KAAK,OAAO;;CAGnF,SAAS,4BAAkC;AACzC,QAAI,SAAS,EACT,cAA2B,8BAA4B,EACvD,eAAe,EAAE,OAAO,WAAW,CAAC;;CAG1C,eAAe,iCAAgD;EAC7D,MAAM,QAAQ,MAAI,iBAAiB;AACnC,MAAI,UAAU,GACZ;AAEF,QAAM,UAAU;AAChB,MAAI,MAAI,SAAS,EAAE,cAAc,8BAA4B,EAAE;AAC7D,8BAA2B;AAC3B;;AAKF,WAAS,MAAM;AACf,QAAM,UAAU;AAChB,6BAA2B;;CAG7B,eAAe,WAAW,MAA8B;AACtD,MAAI,CAAC,KACH;EAEF,MAAM,MAAM,MAAI,MAAM;AAGtB,MAAK,MAAM,QAAQ,IAAI,IAAI,IAAI,SAAS,KAAO,QAAQ,QAAQ,QAAQ,KAAA,GAAY;GACjF,MAAM,QAAQ,MAAI,QAAQ,CAAC,UAAU,aAAa;AAClD,OAAI,QAAQ,GACV,OAAI,kBAAkB,MAAM;;AAGhC,QAAM,gCAAgC;;AAGxC,OAAM,CAAC,cAAc,QAAQ,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,OAAO;AAC5D,QAAM,WAAW,KAAK;GACtB;AAEF,OAAM,kBAAkB,YAAY;AAClC,QAAM,gCAAgC;GACtC;AAEF,OAAM,SAAS,YAAY;AACzB,QAAI,eAAe,MAAM;AACzB,MAAI,MAAI,iBAAiB,KAAK,GAC5B,KAAI,MAAI,gBAAgB,EAAE;AACxB,SAAI,kBAAkB,EAAE;AACxB,SAAM,gCAAgC;SAEnC;AACH,SAAI,kBAAkB,GAAG;AACzB,YAAS,EAAE;;MAIb,UAAS,EAAE;GAEb;AAEF,OAAM,SAAS,SAAS;AACtB,MAAI,CAAC,KACH,OAAI,eAAe,MAAM;GAC3B;CAEF,MAAM,iBAAiB,OAAsB;AAC3C,MAAI,CAAC,MAAI,OAAO,EAAE;AAChB,UAAO,KAAK;AACZ;;AAGF,QAAI,eAAe,KAAK;EAExB,MAAM,QAAQ,MAAI,QAAQ;EAC1B,MAAM,QAAQ,MAAM;AACpB,MAAI,UAAU,EACZ;EAEF,MAAM,OAAO,KAAK,KAAK;EACvB,IAAI,WAAW,MAAI,iBAAiB;AAEpC,OAAK,IAAI,OAAO,GAAG,OAAO,OAAO,QAAQ;AACvC,eAAY;AACZ,OAAI,YAAY,MACd,YAAW;YACJ,WAAW,EAClB,YAAW,QAAQ;GAErB,MAAM,YAAY,MAAM;AACxB,OAAI,cAAc,KAAA,KAAa,CAAC,eAAe,UAAU,EAAE;AACzD,UAAI,kBAAkB,SAAS;AAC/B;;;;CAKN,MAAM,yBAA+B;AACnC,MAAI,CAAC,YAAY,CAAC,MAAI,OAAO,CAC3B;EAEF,MAAM,sBAAsB,MAAI,iBAAiB;AACjD,MAAI,wBAAwB,GAC1B;EAEF,MAAM,QAAQ,MAAI,QAAQ,CAAC;AAC3B,MAAI,UAAU,KAAA,KAAa,CAAC,eAAe,MAAM,CAC/C,UAAS,MAAM;;AAGnB,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,2BAA2B;EAC3B;EACA;EACA;EACA;EACA;EACD"}
package/dist/index.js CHANGED
@@ -37,6 +37,7 @@ import RuiDateTimePicker_default from "./components/date-time-picker/RuiDateTime
37
37
  import RuiDivider_default from "./components/divider/RuiDivider.js";
38
38
  import RuiCheckboxGroup_default from "./components/forms/checkbox/checkbox-group/RuiCheckboxGroup.js";
39
39
  import RuiCheckbox_default from "./components/forms/checkbox/RuiCheckbox.js";
40
+ import RuiFileUpload_default from "./components/forms/file-upload/RuiFileUpload.js";
40
41
  import RuiRadioGroup_default from "./components/forms/radio-button/radio-group/RuiRadioGroup.js";
41
42
  import RuiRadio_default from "./components/forms/radio-button/radio/RuiRadio.js";
42
43
  import RuiRevealableTextField_default from "./components/forms/revealable-text-field/RuiRevealableTextField.js";
@@ -95,6 +96,6 @@ function createRuiI8nPlugin(i18nInstance) {
95
96
  } };
96
97
  }
97
98
  //#endregion
98
- export { LuAArrowDown, LuAArrowUp, LuALargeSmall, LuAccessibility, LuActivatePremium, LuActivity, LuAirVent, LuAirplay, LuAlarmClock, LuAlarmClockCheck, LuAlarmClockMinus, LuAlarmClockOff, LuAlarmClockPlus, LuAlarmSmoke, LuAlbum, LuAlignCenterHorizontal, LuAlignCenterVertical, LuAlignEndHorizontal, LuAlignEndVertical, LuAlignHorizontalDistributeCenter, LuAlignHorizontalDistributeEnd, LuAlignHorizontalDistributeStart, LuAlignHorizontalJustifyCenter, LuAlignHorizontalJustifyEnd, LuAlignHorizontalJustifyStart, LuAlignHorizontalSpaceAround, LuAlignHorizontalSpaceBetween, LuAlignStartHorizontal, LuAlignStartVertical, LuAlignVerticalDistributeCenter, LuAlignVerticalDistributeEnd, LuAlignVerticalDistributeStart, LuAlignVerticalJustifyCenter, LuAlignVerticalJustifyEnd, LuAlignVerticalJustifyStart, LuAlignVerticalSpaceAround, LuAlignVerticalSpaceBetween, LuAmbulance, LuAmpersand, LuAmpersands, LuAmphora, LuAnchor, LuAngry, LuAnnoyed, LuAntenna, LuAnvil, LuAperture, LuAppWindow, LuAppWindowMac, LuApple, LuArchive, LuArchiveRestore, LuArchiveX, LuArmchair, LuArrowBigDown, LuArrowBigDownDash, LuArrowBigLeft, LuArrowBigLeftDash, LuArrowBigRight, LuArrowBigRightDash, LuArrowBigUp, LuArrowBigUpDash, LuArrowDown, LuArrowDown01, LuArrowDown10, LuArrowDownAZ, LuArrowDownFromLine, LuArrowDownLeft, LuArrowDownNarrowWide, LuArrowDownRight, LuArrowDownToDot, LuArrowDownToLine, LuArrowDownUp, LuArrowDownWideNarrow, LuArrowDownZA, LuArrowLeft, LuArrowLeftFromLine, LuArrowLeftRight, LuArrowLeftToLine, LuArrowRight, LuArrowRightFromLine, LuArrowRightLeft, LuArrowRightToLine, LuArrowUp, LuArrowUp01, LuArrowUp10, LuArrowUpAZ, LuArrowUpDown, LuArrowUpFromDot, LuArrowUpFromLine, LuArrowUpLeft, LuArrowUpNarrowWide, LuArrowUpRight, LuArrowUpToLine, LuArrowUpWideNarrow, LuArrowUpZA, LuArrowsUpFromLine, LuAsterisk, LuAtSign, LuAtom, LuAudioLines, LuAudioWaveform, LuAward, LuAxe, LuAxis3d, LuBaby, LuBackpack, LuBadge, LuBadgeAlert, LuBadgeCent, LuBadgeCheck, LuBadgeDollarSign, LuBadgeEuro, LuBadgeIndianRupee, LuBadgeInfo, LuBadgeJapaneseYen, LuBadgeMinus, LuBadgePercent, LuBadgePlus, LuBadgePoundSterling, LuBadgeQuestionMark, LuBadgeRussianRuble, LuBadgeSwissFranc, LuBadgeTurkishLira, LuBadgeX, LuBaggageClaim, LuBalances, LuBalloon, LuBan, LuBanana, LuBandage, LuBanknote, LuBanknoteArrowDown, LuBanknoteArrowUp, LuBanknoteX, LuBarcode, LuBarrel, LuBaseline, LuBath, LuBattery, LuBatteryCharging, LuBatteryFull, LuBatteryLow, LuBatteryMedium, LuBatteryPlus, LuBatteryWarning, LuBeaker, LuBean, LuBeanOff, LuBed, LuBedDouble, LuBedSingle, LuBeef, LuBeer, LuBeerOff, LuBell, LuBellDot, LuBellElectric, LuBellMinus, LuBellOff, LuBellPlus, LuBellRing, LuBetweenHorizontalEnd, LuBetweenHorizontalStart, LuBetweenVerticalEnd, LuBetweenVerticalStart, LuBicepsFlexed, LuBike, LuBinary, LuBinoculars, LuBiohazard, LuBird, LuBirdhouse, LuBitcoin, LuBitcoinAccounts, LuBlend, LuBlinds, LuBlockchain, LuBlocks, LuBluetooth, LuBluetoothConnected, LuBluetoothOff, LuBluetoothSearching, LuBold, LuBolt, LuBomb, LuBone, LuBook, LuBookA, LuBookAlert, LuBookAudio, LuBookCheck, LuBookCopy, LuBookDashed, LuBookDown, LuBookHeadphones, LuBookHeart, LuBookImage, LuBookKey, LuBookLock, LuBookMarked, LuBookMinus, LuBookOpen, LuBookOpenCheck, LuBookOpenText, LuBookPlus, LuBookSearch, LuBookText, LuBookType, LuBookUp, LuBookUp2, LuBookUser, LuBookX, LuBookmark, LuBookmarkCheck, LuBookmarkMinus, LuBookmarkPlus, LuBookmarkX, LuBoomBox, LuBot, LuBotMessageSquare, LuBotOff, LuBottleWine, LuBowArrow, LuBox, LuBoxes, LuBraces, LuBrackets, LuBrain, LuBrainCircuit, LuBrainCog, LuBrickWall, LuBrickWallFire, LuBrickWallShield, LuBriefcase, LuBriefcaseBusiness, LuBriefcaseConveyorBelt, LuBriefcaseMedical, LuBringToFront, LuBrush, LuBrushCleaning, LuBubbles, LuBug, LuBugOff, LuBugPlay, LuBuilding, LuBuilding2, LuBus, LuBusFront, LuCable, LuCableCar, LuCake, LuCakeSlice, LuCalculator, LuCalendar, LuCalendar1, LuCalendarArrowDown, LuCalendarArrowUp, LuCalendarCheck, LuCalendarCheck2, LuCalendarClock, LuCalendarCog, LuCalendarDays, LuCalendarFold, LuCalendarHeart, LuCalendarMinus, LuCalendarMinus2, LuCalendarOff, LuCalendarPlus, LuCalendarPlus2, LuCalendarRange, LuCalendarSearch, LuCalendarSync, LuCalendarX, LuCalendarX2, LuCalendars, LuCamera, LuCameraOff, LuCandy, LuCandyCane, LuCandyOff, LuCannabis, LuCannabisOff, LuCaptions, LuCaptionsOff, LuCar, LuCarFront, LuCarTaxiFront, LuCaravan, LuCardSim, LuCarrot, LuCaseLower, LuCaseSensitive, LuCaseUpper, LuCassetteTape, LuCast, LuCastle, LuCat, LuCctv, LuChartArea, LuChartBar, LuChartBarBig, LuChartBarDecreasing, LuChartBarIncreasing, LuChartBarStacked, LuChartCandlestick, LuChartColumn, LuChartColumnBig, LuChartColumnDecreasing, LuChartColumnIncreasing, LuChartColumnStacked, LuChartGantt, LuChartLine, LuChartNetwork, LuChartNoAxesColumn, LuChartNoAxesColumnDecreasing, LuChartNoAxesColumnIncreasing, LuChartNoAxesCombined, LuChartNoAxesGantt, LuChartPie, LuChartScatter, LuChartSpline, LuCheck, LuCheckCheck, LuCheckLine, LuCheckboxBlank, LuCheckboxBlankCircle, LuCheckboxBlankCircleFill, LuCheckboxFill, LuCheckboxIndeterminateFill, LuChefHat, LuCherry, LuChessBishop, LuChessKing, LuChessKnight, LuChessPawn, LuChessQueen, LuChessRook, LuChevronDown, LuChevronFirst, LuChevronLast, LuChevronLeft, LuChevronRight, LuChevronUp, LuChevronsDown, LuChevronsDownUp, LuChevronsLeft, LuChevronsLeftRight, LuChevronsLeftRightEllipsis, LuChevronsRight, LuChevronsRightLeft, LuChevronsUp, LuChevronsUpDown, LuChromium, LuChurch, LuCigarette, LuCigaretteOff, LuCircle, LuCircleAlert, LuCircleArrowDown, LuCircleArrowLeft, LuCircleArrowOutDownLeft, LuCircleArrowOutDownRight, LuCircleArrowOutUpLeft, LuCircleArrowOutUpRight, LuCircleArrowRight, LuCircleArrowUp, LuCircleCheck, LuCircleCheckBig, LuCircleChevronDown, LuCircleChevronLeft, LuCircleChevronRight, LuCircleChevronUp, LuCircleDashed, LuCircleDivide, LuCircleDollarSign, LuCircleDot, LuCircleDotDashed, LuCircleEllipsis, LuCircleEqual, LuCircleFadingArrowUp, LuCircleFadingPlus, LuCircleGauge, LuCircleMinus, LuCircleOff, LuCircleParking, LuCircleParkingOff, LuCirclePause, LuCirclePercent, LuCirclePile, LuCirclePlay, LuCirclePlus, LuCirclePoundSterling, LuCirclePower, LuCircleQuestionMark, LuCircleSlash, LuCircleSlash2, LuCircleSmall, LuCircleStar, LuCircleStop, LuCircleUser, LuCircleUserRound, LuCircleX, LuCircuitBoard, LuCitrus, LuClapperboard, LuClipboard, LuClipboardCheck, LuClipboardClock, LuClipboardCopy, LuClipboardList, LuClipboardMinus, LuClipboardPaste, LuClipboardPen, LuClipboardPenLine, LuClipboardPlus, LuClipboardType, LuClipboardX, LuClock, LuClock1, LuClock10, LuClock11, LuClock12, LuClock2, LuClock3, LuClock4, LuClock5, LuClock6, LuClock7, LuClock8, LuClock9, LuClockAlert, LuClockArrowDown, LuClockArrowUp, LuClockCheck, LuClockFading, LuClockPlus, LuClosedCaption, LuCloud, LuCloudAlert, LuCloudBackup, LuCloudCheck, LuCloudCog, LuCloudDownload, LuCloudDownload2Fill, LuCloudDownloadFill, LuCloudDrizzle, LuCloudFill, LuCloudFog, LuCloudHail, LuCloudLightning, LuCloudMoon, LuCloudMoonRain, LuCloudOff, LuCloudOffFill, LuCloudRain, LuCloudRainWind, LuCloudSnow, LuCloudSun, LuCloudSunRain, LuCloudSync, LuCloudSyncFill, LuCloudUpload, LuCloudUpload2Fill, LuCloudUploadFill, LuCloudy, LuClover, LuClub, LuCode, LuCodeXml, LuCodepen, LuCodesandbox, LuCoffee, LuCog, LuCoins, LuCoinsExchange, LuColumns2, LuColumns3, LuColumns3Cog, LuColumns4, LuCombine, LuCommand, LuCompass, LuComponent, LuComputer, LuConciergeBell, LuCone, LuConstruction, LuContact, LuContactRound, LuContainer, LuContrast, LuCookie, LuCookingPot, LuCopy, LuCopyCheck, LuCopyMinus, LuCopyPlus, LuCopySlash, LuCopyX, LuCopyleft, LuCopyright, LuCornerDownLeft, LuCornerDownRight, LuCornerLeftDown, LuCornerLeftUp, LuCornerRightDown, LuCornerRightUp, LuCornerUpLeft, LuCornerUpRight, LuCpu, LuCreativeCommons, LuCreditCard, LuCroissant, LuCrop, LuCross, LuCrosshair, LuCrown, LuCuboid, LuCupSoda, LuCurrency, LuCustomAssets, LuCylinder, LuDam, LuDatabase, LuDatabaseBackup, LuDatabaseSearch, LuDatabaseZap, LuDecimalsArrowLeft, LuDecimalsArrowRight, LuDelete, LuDeposits, LuDessert, LuDiameter, LuDiamond, LuDiamondMinus, LuDiamondPercent, LuDiamondPlus, LuDice1, LuDice2, LuDice3, LuDice4, LuDice5, LuDice6, LuDices, LuDiff, LuDisc, LuDisc2, LuDisc3, LuDiscAlbum, LuDiscord, LuDivide, LuDna, LuDnaOff, LuDock, LuDog, LuDollarSign, LuDonateFill, LuDonut, LuDoorClosed, LuDoorClosedLocked, LuDoorOpen, LuDot, LuDownload, LuDraftingCompass, LuDrama, LuDribbble, LuDrill, LuDrone, LuDroplet, LuDropletFill, LuDropletHalfFill, LuDropletOff, LuDropletTrendingDown, LuDroplets, LuDrum, LuDrumstick, LuDumbbell, LuEar, LuEarOff, LuEarth, LuEarthLock, LuEclipse, LuEgg, LuEggFried, LuEggOff, LuEllipse, LuEllipsis, LuEllipsisVertical, LuEqual, LuEqualApproximately, LuEqualNot, LuEraser, LuEthernetPort, LuEuro, LuEvCharger, LuEvmAccounts, LuExpand, LuExport, LuExternalLink, LuEye, LuEyeClosed, LuEyeOff, LuEyeSemiOff, LuFacebook, LuFactory, LuFan, LuFastForward, LuFeather, LuFence, LuFerrisWheel, LuFigma, LuFile, LuFileArchive, LuFileAxis3d, LuFileBadge, LuFileBox, LuFileBraces, LuFileBracesCorner, LuFileChartColumn, LuFileChartColumnIncreasing, LuFileChartLine, LuFileChartPie, LuFileCheck, LuFileCheckCorner, LuFileClock, LuFileCode, LuFileCodeCorner, LuFileCog, LuFileDiff, LuFileDigit, LuFileDown, LuFileExclamationPoint, LuFileHeadphone, LuFileHeart, LuFileImage, LuFileInput, LuFileKey, LuFileLock, LuFileMinus, LuFileMinusCorner, LuFileMusic, LuFileOutput, LuFilePen, LuFilePenLine, LuFilePlay, LuFilePlus, LuFilePlusCorner, LuFileQuestionMark, LuFileScan, LuFileSearch, LuFileSearchCorner, LuFileSignal, LuFileSliders, LuFileSpreadsheet, LuFileStack, LuFileSymlink, LuFileTerminal, LuFileText, LuFileType, LuFileTypeCorner, LuFileUp, LuFileUser, LuFileVideoCamera, LuFileVolume, LuFileX, LuFileXCorner, LuFiles, LuFilm, LuFingerprintPattern, LuFireExtinguisher, LuFish, LuFishOff, LuFishSymbol, LuFishingHook, LuFishingRod, LuFlag, LuFlagOff, LuFlagTriangleLeft, LuFlagTriangleRight, LuFlame, LuFlameKindling, LuFlashlight, LuFlashlightOff, LuFlaskConical, LuFlaskConicalOff, LuFlaskRound, LuFlipHorizontal2, LuFlipVertical2, LuFlower, LuFlower2, LuFocus, LuFoldHorizontal, LuFoldVertical, LuFolder, LuFolderArchive, LuFolderCheck, LuFolderClock, LuFolderClosed, LuFolderCode, LuFolderCog, LuFolderDot, LuFolderDown, LuFolderGit, LuFolderGit2, LuFolderHeart, LuFolderInput, LuFolderKanban, LuFolderKey, LuFolderLock, LuFolderMinus, LuFolderOpen, LuFolderOpenDot, LuFolderOutput, LuFolderPen, LuFolderPlus, LuFolderRoot, LuFolderSearch, LuFolderSearch2, LuFolderShrink1, LuFolderShrink2, LuFolderSymlink, LuFolderSync, LuFolderTree, LuFolderUp, LuFolderX, LuFolders, LuFootprints, LuForklift, LuForm, LuForward, LuFrame, LuFramer, LuFrown, LuFuel, LuFullscreen, LuFunnel, LuFunnelPlus, LuFunnelX, LuGalleryHorizontal, LuGalleryHorizontalEnd, LuGalleryThumbnails, LuGalleryVertical, LuGalleryVerticalEnd, LuGamepad, LuGamepad2, LuGamepadDirectional, LuGauge, LuGavel, LuGem, LuGeorgianLari, LuGhost, LuGift, LuGitBranch, LuGitBranchMinus, LuGitBranchPlus, LuGitCommitHorizontal, LuGitCommitVertical, LuGitCompare, LuGitCompareArrows, LuGitFork, LuGitGraph, LuGitMerge, LuGitMergeConflict, LuGitPullRequest, LuGitPullRequestArrow, LuGitPullRequestClosed, LuGitPullRequestCreate, LuGitPullRequestCreateArrow, LuGitPullRequestDraft, LuGithub, LuGitlab, LuGlassWater, LuGlasses, LuGlobe, LuGlobeLock, LuGlobeOff, LuGlobeX, LuGoal, LuGpu, LuGraduationCap, LuGrape, LuGrid2x2, LuGrid2x2Check, LuGrid2x2Plus, LuGrid2x2X, LuGrid3x2, LuGrid3x3, LuGrip, LuGripHorizontal, LuGripVertical, LuGroup, LuGuitar, LuHam, LuHamburger, LuHammer, LuHand, LuHandCoins, LuHandFist, LuHandGrab, LuHandHeart, LuHandHelping, LuHandMetal, LuHandPlatter, LuHandbag, LuHandshake, LuHardDrive, LuHardDriveDownload, LuHardDriveUpload, LuHardHat, LuHash, LuHatGlasses, LuHaze, LuHd, LuHdmiPort, LuHeading, LuHeading1, LuHeading2, LuHeading3, LuHeading4, LuHeading5, LuHeading6, LuHeadphoneOff, LuHeadphones, LuHeadset, LuHeart, LuHeartCrack, LuHeartHandshake, LuHeartMinus, LuHeartOff, LuHeartPlus, LuHeartPulse, LuHeater, LuHelicopter, LuHexagon, LuHighlighter, LuHistoricPrices, LuHistory, LuHistoryEventsFill, LuHop, LuHopOff, LuHospital, LuHotel, LuHourglass, LuHouse, LuHouseHeart, LuHousePlug, LuHousePlus, LuHouseWifi, LuIceCreamBowl, LuIceCreamCone, LuIdCard, LuIdCardLanyard, LuImage, LuImageDown, LuImageMinus, LuImageOff, LuImagePlay, LuImagePlus, LuImageUp, LuImageUpscale, LuImages, LuImport, LuInbox, LuIndianRupee, LuInfinity, LuInfo, LuInspectionPanel, LuInstagram, LuItalic, LuIterationCcw, LuIterationCw, LuJapaneseYen, LuJoystick, LuKanban, LuKayak, LuKey, LuKeyRound, LuKeySquare, LuKeyboard, LuKeyboardMusic, LuKeyboardOff, LuLamp, LuLampCeiling, LuLampDesk, LuLampFloor, LuLampWallDown, LuLampWallUp, LuLandPlot, LuLandmark, LuLanguages, LuLaptop, LuLaptopMinimal, LuLaptopMinimalCheck, LuLasso, LuLassoSelect, LuLatestPrices, LuLaugh, LuLayers, LuLayers2, LuLayersIn, LuLayersOut, LuLayersPlus, LuLayoutDashboard, LuLayoutGrid, LuLayoutList, LuLayoutPanelLeft, LuLayoutPanelTop, LuLayoutTemplate, LuLeaf, LuLeafyGreen, LuLectern, LuLensConcave, LuLensConvex, LuLiabilities, LuLibrary, LuLibraryBig, LuLifeBuoy, LuLigature, LuLightbulb, LuLightbulbOff, LuLineDotRightHorizontal, LuLineSquiggle, LuLink, LuLink2, LuLink2Off, LuLinkedin, LuList, LuListCheck, LuListChecks, LuListChevronsDownUp, LuListChevronsUpDown, LuListCollapse, LuListEnd, LuListFilter, LuListFilterPlus, LuListIndentDecrease, LuListIndentIncrease, LuListMinus, LuListMusic, LuListOrdered, LuListPlus, LuListRestart, LuListStart, LuListTodo, LuListTree, LuListVideo, LuListX, LuLoader, LuLoaderCircle, LuLoaderPinwheel, LuLocate, LuLocateFixed, LuLocateOff, LuLock, LuLockKeyhole, LuLockKeyholeOpen, LuLockOpen, LuLogIn, LuLogOut, LuLogs, LuLollipop, LuLuggage, LuMagnet, LuMail, LuMailCheck, LuMailMinus, LuMailOpen, LuMailPlus, LuMailQuestionMark, LuMailSearch, LuMailWarning, LuMailX, LuMailbox, LuMails, LuManageAssets, LuManagePrices, LuManualBalances, LuMap, LuMapMinus, LuMapPin, LuMapPinCheck, LuMapPinCheckInside, LuMapPinHouse, LuMapPinMinus, LuMapPinMinusInside, LuMapPinOff, LuMapPinPen, LuMapPinPlus, LuMapPinPlusInside, LuMapPinX, LuMapPinXInside, LuMapPinned, LuMapPlus, LuMars, LuMarsStroke, LuMartini, LuMaximize, LuMaximize2, LuMedal, LuMegaphone, LuMegaphoneOff, LuMeh, LuMemoryStick, LuMenu, LuMerge, LuMessageCircle, LuMessageCircleCheck, LuMessageCircleCode, LuMessageCircleDashed, LuMessageCircleHeart, LuMessageCircleMore, LuMessageCircleOff, LuMessageCirclePlus, LuMessageCircleQuestionMark, LuMessageCircleReply, LuMessageCircleWarning, LuMessageCircleX, LuMessageSquare, LuMessageSquareCheck, LuMessageSquareCode, LuMessageSquareDashed, LuMessageSquareDiff, LuMessageSquareDot, LuMessageSquareHeart, LuMessageSquareLock, LuMessageSquareMore, LuMessageSquareOff, LuMessageSquarePlus, LuMessageSquareQuote, LuMessageSquareReply, LuMessageSquareShare, LuMessageSquareText, LuMessageSquareWarning, LuMessageSquareX, LuMessagesSquare, LuMetronome, LuMic, LuMicOff, LuMicVocal, LuMicrochip, LuMicroscope, LuMicrowave, LuMilestone, LuMilk, LuMilkOff, LuMinimize, LuMinimize2, LuMinus, LuMirrorRectangular, LuMirrorRound, LuMonitor, LuMonitorCheck, LuMonitorCloud, LuMonitorCog, LuMonitorDot, LuMonitorDown, LuMonitorOff, LuMonitorPause, LuMonitorPlay, LuMonitorSmartphone, LuMonitorSpeaker, LuMonitorStop, LuMonitorUp, LuMonitorX, LuMoon, LuMoonStar, LuMoreAssets, LuMotorbike, LuMountain, LuMountainSnow, LuMouse, LuMouseLeft, LuMouseOff, LuMousePointer, LuMousePointer2, LuMousePointer2Off, LuMousePointerBan, LuMousePointerClick, LuMouseRight, LuMove, LuMove3d, LuMoveDiagonal, LuMoveDiagonal2, LuMoveDown, LuMoveDownLeft, LuMoveDownRight, LuMoveHorizontal, LuMoveLeft, LuMoveRight, LuMoveUp, LuMoveUpLeft, LuMoveUpRight, LuMoveVertical, LuMusic, LuMusic2, LuMusic3, LuMusic4, LuNavigation, LuNavigation2, LuNavigation2Off, LuNavigationOff, LuNetwork, LuNewspaper, LuNfc, LuNonBinary, LuNotebook, LuNotebookPen, LuNotebookTabs, LuNotebookText, LuNotepadText, LuNotepadTextDashed, LuNut, LuNutOff, LuOctagon, LuOctagonAlert, LuOctagonMinus, LuOctagonPause, LuOctagonX, LuOmega, LuOnchain, LuOption, LuOrbit, LuOrigami, LuOsApple, LuOsWindows, LuPackage, LuPackage2, LuPackageCheck, LuPackageMinus, LuPackageOpen, LuPackagePlus, LuPackageSearch, LuPackageX, LuPaintBucket, LuPaintRoller, LuPaintbrush, LuPaintbrushVertical, LuPalette, LuPanda, LuPanelBottom, LuPanelBottomClose, LuPanelBottomDashed, LuPanelBottomOpen, LuPanelLeft, LuPanelLeftClose, LuPanelLeftDashed, LuPanelLeftOpen, LuPanelLeftRightDashed, LuPanelRight, LuPanelRightClose, LuPanelRightDashed, LuPanelRightOpen, LuPanelTop, LuPanelTopBottomDashed, LuPanelTopClose, LuPanelTopDashed, LuPanelTopOpen, LuPanelsLeftBottom, LuPanelsRightBottom, LuPanelsTopLeft, LuPaperclip, LuParentheses, LuParkingMeter, LuPartyPopper, LuPause, LuPawPrint, LuPaypal, LuPcCase, LuPen, LuPenLine, LuPenOff, LuPenTool, LuPencil, LuPencilLine, LuPencilOff, LuPencilRuler, LuPentagon, LuPercent, LuPersonStanding, LuPhilippinePeso, LuPhone, LuPhoneCall, LuPhoneForwarded, LuPhoneIncoming, LuPhoneMissed, LuPhoneOff, LuPhoneOutgoing, LuPi, LuPiano, LuPickaxe, LuPictureInPicture, LuPictureInPicture2, LuPiggyBank, LuPilcrow, LuPilcrowLeft, LuPilcrowRight, LuPill, LuPillBottle, LuPin, LuPinOff, LuPipette, LuPizza, LuPlane, LuPlaneLanding, LuPlaneTakeoff, LuPlay, LuPlug, LuPlug2, LuPlugZap, LuPlus, LuPocket, LuPocketKnife, LuPodcast, LuPointer, LuPointerOff, LuPopcorn, LuPopsicle, LuPoundSterling, LuPower, LuPowerOff, LuPresentation, LuPrinter, LuPrinterCheck, LuPrinterX, LuProjector, LuProportions, LuPuzzle, LuPyramid, LuQrCode, LuQuote, LuRabbit, LuRadar, LuRadiation, LuRadical, LuRadio, LuRadioButtonFill, LuRadioReceiver, LuRadioTower, LuRadius, LuRailSymbol, LuRainbow, LuRat, LuRatio, LuReceipt, LuReceiptCent, LuReceiptEuro, LuReceiptIndianRupee, LuReceiptJapaneseYen, LuReceiptPoundSterling, LuReceiptRussianRuble, LuReceiptSwissFranc, LuReceiptText, LuReceiptTurkishLira, LuReceiveDonationFill, LuRectangleCircle, LuRectangleEllipsis, LuRectangleGoggles, LuRectangleHorizontal, LuRectangleVertical, LuRecycle, LuReddit, LuRedo, LuRedo2, LuRedoDot, LuRefreshCcw, LuRefreshCcwDot, LuRefreshCw, LuRefreshCwOff, LuRefrigerator, LuRefund, LuRegex, LuRemoveFormatting, LuRepeat, LuRepeat1, LuRepeat2, LuReplace, LuReplaceAll, LuReply, LuReplyAll, LuRewind, LuRibbon, LuRocket, LuRockingChair, LuRollerCoaster, LuRose, LuRotate3d, LuRotateCcw, LuRotateCcwKey, LuRotateCcwSquare, LuRotateCw, LuRotateCwSquare, LuRoute, LuRouteOff, LuRouter, LuRows2, LuRows3, LuRows4, LuRss, LuRuler, LuRulerDimensionLine, LuRussianRuble, LuSailboat, LuSalad, LuSandwich, LuSatellite, LuSatelliteDish, LuSaudiRiyal, LuSave, LuSaveAll, LuSaveOff, LuScale, LuScale3d, LuScaling, LuScan, LuScanBarcode, LuScanEye, LuScanFace, LuScanHeart, LuScanLine, LuScanQrCode, LuScanSearch, LuScanText, LuSchool, LuScissors, LuScissorsLineDashed, LuScooter, LuScreenShare, LuScreenShareOff, LuScroll, LuScrollText, LuSearch, LuSearchAlert, LuSearchCheck, LuSearchCode, LuSearchSlash, LuSearchX, LuSection, LuSend, LuSendHorizontal, LuSendToBack, LuSeparatorHorizontal, LuSeparatorVertical, LuServer, LuServerCog, LuServerCrash, LuServerOff, LuSettings, LuSettings2, LuShapes, LuShare, LuShare2, LuSheet, LuShell, LuShelvingUnit, LuShield, LuShieldAlert, LuShieldBan, LuShieldCheck, LuShieldEllipsis, LuShieldHalf, LuShieldMinus, LuShieldOff, LuShieldPlus, LuShieldQuestionMark, LuShieldUser, LuShieldX, LuShip, LuShipWheel, LuShirt, LuShoppingBag, LuShoppingBasket, LuShoppingCart, LuShovel, LuShowerHead, LuShredder, LuShrimp, LuShrink, LuShrub, LuShuffle, LuSigma, LuSignal, LuSignalHigh, LuSignalLow, LuSignalMedium, LuSignalZero, LuSignature, LuSignpost, LuSignpostBig, LuSiren, LuSkipBack, LuSkipForward, LuSkull, LuSlack, LuSlash, LuSlashDivider, LuSlice, LuSlidersHorizontal, LuSlidersVertical, LuSmartphone, LuSmartphoneCharging, LuSmartphoneNfc, LuSmile, LuSmilePlus, LuSnail, LuSnowflake, LuSoapDispenserDroplet, LuSofa, LuSolanaAccountsFill, LuSolarPanel, LuSoup, LuSpace, LuSpade, LuSparkle, LuSparkles, LuSpeaker, LuSpeech, LuSpellCheck, LuSpellCheck2, LuSpline, LuSplinePointer, LuSplit, LuSpool, LuSpotlight, LuSprayCan, LuSprout, LuSquare, LuSquareActivity, LuSquareArrowDown, LuSquareArrowDownLeft, LuSquareArrowDownRight, LuSquareArrowLeft, LuSquareArrowOutDownLeft, LuSquareArrowOutDownRight, LuSquareArrowOutUpLeft, LuSquareArrowOutUpRight, LuSquareArrowRight, LuSquareArrowRightEnter, LuSquareArrowRightExit, LuSquareArrowUp, LuSquareArrowUpLeft, LuSquareArrowUpRight, LuSquareAsterisk, LuSquareBottomDashedScissors, LuSquareCenterlineDashedHorizontal, LuSquareCenterlineDashedVertical, LuSquareChartGantt, LuSquareCheck, LuSquareCheckBig, LuSquareChevronDown, LuSquareChevronLeft, LuSquareChevronRight, LuSquareChevronUp, LuSquareCode, LuSquareDashed, LuSquareDashedBottom, LuSquareDashedBottomCode, LuSquareDashedKanban, LuSquareDashedMousePointer, LuSquareDashedTopSolid, LuSquareDivide, LuSquareDot, LuSquareEqual, LuSquareFunction, LuSquareKanban, LuSquareLibrary, LuSquareM, LuSquareMenu, LuSquareMinus, LuSquareMousePointer, LuSquareParking, LuSquareParkingOff, LuSquarePause, LuSquarePen, LuSquarePercent, LuSquarePi, LuSquarePilcrow, LuSquarePlay, LuSquarePlus, LuSquarePower, LuSquareRadical, LuSquareRoundCorner, LuSquareScissors, LuSquareSigma, LuSquareSlash, LuSquareSplitHorizontal, LuSquareSplitVertical, LuSquareSquare, LuSquareStack, LuSquareStar, LuSquareStop, LuSquareTerminal, LuSquareUser, LuSquareUserRound, LuSquareX, LuSquaresExclude, LuSquaresIntersect, LuSquaresSubtract, LuSquaresUnite, LuSquircle, LuSquircleDashed, LuSquirrel, LuStamp, LuStar, LuStarHalf, LuStarOff, LuStepBack, LuStepForward, LuStethoscope, LuSticker, LuStickyNote, LuStone, LuStore, LuStretchHorizontal, LuStretchVertical, LuStrikethrough, LuSubscript, LuSubstrateAccounts, LuSun, LuSunDim, LuSunMedium, LuSunMoon, LuSunSnow, LuSunrise, LuSunset, LuSuperscript, LuSwatchBook, LuSwissFranc, LuSwitchCamera, LuSword, LuSwords, LuSyringe, LuTable, LuTable2, LuTableCellsMerge, LuTableCellsSplit, LuTableColumnsSplit, LuTableOfContents, LuTableProperties, LuTableRowsSplit, LuTablet, LuTabletSmartphone, LuTablets, LuTag, LuTagManager, LuTags, LuTally1, LuTally2, LuTally3, LuTally4, LuTally5, LuTangent, LuTarget, LuTelescope, LuTent, LuTentTree, LuTerminal, LuTestTube, LuTestTubeDiagonal, LuTestTubes, LuTextAlignCenter, LuTextAlignEnd, LuTextAlignJustify, LuTextAlignStart, LuTextCursor, LuTextCursorInput, LuTextInitial, LuTextQuote, LuTextSearch, LuTextSelect, LuTextWrap, LuTheater, LuThermometer, LuThermometerSnowflake, LuThermometerSun, LuThumbsDown, LuThumbsUp, LuTicket, LuTicketCheck, LuTicketMinus, LuTicketPercent, LuTicketPlus, LuTicketSlash, LuTicketX, LuTickets, LuTicketsPlane, LuTimer, LuTimerOff, LuTimerReset, LuToggleLeft, LuToggleRight, LuToilet, LuToolCase, LuToolbox, LuTornado, LuTorus, LuTouchpad, LuTouchpadOff, LuTowelRack, LuTowerControl, LuToyBrick, LuTractor, LuTrafficCone, LuTrainFront, LuTrainFrontTunnel, LuTrainTrack, LuTramFront, LuTransgender, LuTrash, LuTrash2, LuTreeDeciduous, LuTreePalm, LuTreePine, LuTrees, LuTrello, LuTrendingDown, LuTrendingUp, LuTrendingUpDown, LuTriangle, LuTriangleAlert, LuTriangleDashed, LuTriangleRight, LuTrophy, LuTruck, LuTruckElectric, LuTurkishLira, LuTurntable, LuTurtle, LuTv, LuTvMinimal, LuTvMinimalPlay, LuTwitch, LuTwitter, LuType, LuTypeOutline, LuUmbrella, LuUmbrellaOff, LuUnderline, LuUndo, LuUndo2, LuUndoDot, LuUnfoldHorizontal, LuUnfoldVertical, LuUngroup, LuUniversity, LuUnlink, LuUnlink2, LuUnplug, LuUpload, LuUsb, LuUser, LuUserCheck, LuUserCog, LuUserKey, LuUserLock, LuUserMinus, LuUserPen, LuUserPlus, LuUserRound, LuUserRoundCheck, LuUserRoundCog, LuUserRoundKey, LuUserRoundMinus, LuUserRoundPen, LuUserRoundPlus, LuUserRoundSearch, LuUserRoundX, LuUserSearch, LuUserStar, LuUserX, LuUsers, LuUsersRound, LuUtensils, LuUtensilsCrossed, LuUtilityPole, LuVan, LuVariable, LuVault, LuVectorSquare, LuVegan, LuVenetianMask, LuVenus, LuVenusAndMars, LuVibrate, LuVibrateOff, LuVideo, LuVideoOff, LuVideotape, LuView, LuVoicemail, LuVolleyball, LuVolume, LuVolume1, LuVolume2, LuVolumeOff, LuVolumeX, LuVote, LuWallet, LuWalletCards, LuWalletMinimal, LuWallpaper, LuWand, LuWandSparkles, LuWarehouse, LuWashingMachine, LuWatch, LuWaves, LuWavesArrowDown, LuWavesArrowUp, LuWavesLadder, LuWaypoints, LuWebcam, LuWebhook, LuWebhookOff, LuWeight, LuWeightTilde, LuWheat, LuWheatOff, LuWholeWord, LuWifi, LuWifiCog, LuWifiHigh, LuWifiLow, LuWifiOff, LuWifiPen, LuWifiSync, LuWifiZero, LuWind, LuWindArrowDown, LuWine, LuWineOff, LuWorkflow, LuWorm, LuWrench, LuX, LuXLineTop, LuXTwitter, LuYoutube, LuZap, LuZapOff, LuZodiacAquarius, LuZodiacAries, LuZodiacCancer, LuZodiacCapricorn, LuZodiacGemini, LuZodiacLeo, LuZodiacLibra, LuZodiacOphiuchus, LuZodiacPisces, LuZodiacSagittarius, LuZodiacScorpio, LuZodiacTaurus, LuZodiacVirgo, LuZoomIn, LuZoomOut, RuiAccordion_default as RuiAccordion, RuiAccordions_default as RuiAccordions, RuiAlert_default as RuiAlert, RuiAutoComplete_default as RuiAutoComplete, RuiAvatar_default as RuiAvatar, RuiAvatarGroup_default as RuiAvatarGroup, RuiBadge_default as RuiBadge, RuiBottomSheet_default as RuiBottomSheet, RuiButton_default as RuiButton, RuiButtonGroup_default as RuiButtonGroup, RuiCalendar_default as RuiCalendar, RuiCard_default as RuiCard, RuiCardHeader_default as RuiCardHeader, RuiCheckbox_default as RuiCheckbox, RuiCheckboxGroup_default as RuiCheckboxGroup, RuiChip_default as RuiChip, RuiColorPicker_default as RuiColorPicker, RuiDataTable_default as RuiDataTable, RuiDateTimePicker_default as RuiDateTimePicker, RuiDialog_default as RuiDialog, RuiDivider_default as RuiDivider, RuiFooterStepper_default as RuiFooterStepper, RuiIcon_default as RuiIcon, RuiIcons, RuiLogo_default as RuiLogo, RuiMenu_default as RuiMenu, RuiMenuSelect_default as RuiMenuSelect, RuiNavigationDrawer_default as RuiNavigationDrawer, RuiNotification_default as RuiNotification, RuiProgress_default as RuiProgress, RuiRadio_default as RuiRadio, RuiRadioGroup_default as RuiRadioGroup, RuiRevealableTextField_default as RuiRevealableTextField, RuiSimpleSelect_default as RuiSimpleSelect, RuiSkeletonLoader_default as RuiSkeletonLoader, RuiSlider_default as RuiSlider, RuiStepper_default as RuiStepper, RuiSwitch_default as RuiSwitch, RuiTab_default as RuiTab, RuiTabItem_default as RuiTabItem, RuiTabItems_default as RuiTabItems, RuiTablePagination_default as RuiTablePagination, RuiExpandButton_default as RuiTableRowExpander, RuiTabs_default as RuiTabs, RuiTextArea_default as RuiTextArea, RuiTextField_default as RuiTextField, RuiTimePicker_default as RuiTimePicker, RuiTimezoneSelect_default as RuiTimezoneSelect, RuiTooltip_default as RuiTooltip, StepperState, ThemeMode, cn, contextColors, createBlockie, createRui, createRuiI8nPlugin, isRuiIcon, translationKeys, tv, useBreakpoint, useIcons, useRotkiTheme };
99
+ export { LuAArrowDown, LuAArrowUp, LuALargeSmall, LuAccessibility, LuActivatePremium, LuActivity, LuAirVent, LuAirplay, LuAlarmClock, LuAlarmClockCheck, LuAlarmClockMinus, LuAlarmClockOff, LuAlarmClockPlus, LuAlarmSmoke, LuAlbum, LuAlignCenterHorizontal, LuAlignCenterVertical, LuAlignEndHorizontal, LuAlignEndVertical, LuAlignHorizontalDistributeCenter, LuAlignHorizontalDistributeEnd, LuAlignHorizontalDistributeStart, LuAlignHorizontalJustifyCenter, LuAlignHorizontalJustifyEnd, LuAlignHorizontalJustifyStart, LuAlignHorizontalSpaceAround, LuAlignHorizontalSpaceBetween, LuAlignStartHorizontal, LuAlignStartVertical, LuAlignVerticalDistributeCenter, LuAlignVerticalDistributeEnd, LuAlignVerticalDistributeStart, LuAlignVerticalJustifyCenter, LuAlignVerticalJustifyEnd, LuAlignVerticalJustifyStart, LuAlignVerticalSpaceAround, LuAlignVerticalSpaceBetween, LuAmbulance, LuAmpersand, LuAmpersands, LuAmphora, LuAnchor, LuAngry, LuAnnoyed, LuAntenna, LuAnvil, LuAperture, LuAppWindow, LuAppWindowMac, LuApple, LuArchive, LuArchiveRestore, LuArchiveX, LuArmchair, LuArrowBigDown, LuArrowBigDownDash, LuArrowBigLeft, LuArrowBigLeftDash, LuArrowBigRight, LuArrowBigRightDash, LuArrowBigUp, LuArrowBigUpDash, LuArrowDown, LuArrowDown01, LuArrowDown10, LuArrowDownAZ, LuArrowDownFromLine, LuArrowDownLeft, LuArrowDownNarrowWide, LuArrowDownRight, LuArrowDownToDot, LuArrowDownToLine, LuArrowDownUp, LuArrowDownWideNarrow, LuArrowDownZA, LuArrowLeft, LuArrowLeftFromLine, LuArrowLeftRight, LuArrowLeftToLine, LuArrowRight, LuArrowRightFromLine, LuArrowRightLeft, LuArrowRightToLine, LuArrowUp, LuArrowUp01, LuArrowUp10, LuArrowUpAZ, LuArrowUpDown, LuArrowUpFromDot, LuArrowUpFromLine, LuArrowUpLeft, LuArrowUpNarrowWide, LuArrowUpRight, LuArrowUpToLine, LuArrowUpWideNarrow, LuArrowUpZA, LuArrowsUpFromLine, LuAsterisk, LuAtSign, LuAtom, LuAudioLines, LuAudioWaveform, LuAward, LuAxe, LuAxis3d, LuBaby, LuBackpack, LuBadge, LuBadgeAlert, LuBadgeCent, LuBadgeCheck, LuBadgeDollarSign, LuBadgeEuro, LuBadgeIndianRupee, LuBadgeInfo, LuBadgeJapaneseYen, LuBadgeMinus, LuBadgePercent, LuBadgePlus, LuBadgePoundSterling, LuBadgeQuestionMark, LuBadgeRussianRuble, LuBadgeSwissFranc, LuBadgeTurkishLira, LuBadgeX, LuBaggageClaim, LuBalances, LuBalloon, LuBan, LuBanana, LuBandage, LuBanknote, LuBanknoteArrowDown, LuBanknoteArrowUp, LuBanknoteX, LuBarcode, LuBarrel, LuBaseline, LuBath, LuBattery, LuBatteryCharging, LuBatteryFull, LuBatteryLow, LuBatteryMedium, LuBatteryPlus, LuBatteryWarning, LuBeaker, LuBean, LuBeanOff, LuBed, LuBedDouble, LuBedSingle, LuBeef, LuBeer, LuBeerOff, LuBell, LuBellDot, LuBellElectric, LuBellMinus, LuBellOff, LuBellPlus, LuBellRing, LuBetweenHorizontalEnd, LuBetweenHorizontalStart, LuBetweenVerticalEnd, LuBetweenVerticalStart, LuBicepsFlexed, LuBike, LuBinary, LuBinoculars, LuBiohazard, LuBird, LuBirdhouse, LuBitcoin, LuBitcoinAccounts, LuBlend, LuBlinds, LuBlockchain, LuBlocks, LuBluetooth, LuBluetoothConnected, LuBluetoothOff, LuBluetoothSearching, LuBold, LuBolt, LuBomb, LuBone, LuBook, LuBookA, LuBookAlert, LuBookAudio, LuBookCheck, LuBookCopy, LuBookDashed, LuBookDown, LuBookHeadphones, LuBookHeart, LuBookImage, LuBookKey, LuBookLock, LuBookMarked, LuBookMinus, LuBookOpen, LuBookOpenCheck, LuBookOpenText, LuBookPlus, LuBookSearch, LuBookText, LuBookType, LuBookUp, LuBookUp2, LuBookUser, LuBookX, LuBookmark, LuBookmarkCheck, LuBookmarkMinus, LuBookmarkPlus, LuBookmarkX, LuBoomBox, LuBot, LuBotMessageSquare, LuBotOff, LuBottleWine, LuBowArrow, LuBox, LuBoxes, LuBraces, LuBrackets, LuBrain, LuBrainCircuit, LuBrainCog, LuBrickWall, LuBrickWallFire, LuBrickWallShield, LuBriefcase, LuBriefcaseBusiness, LuBriefcaseConveyorBelt, LuBriefcaseMedical, LuBringToFront, LuBrush, LuBrushCleaning, LuBubbles, LuBug, LuBugOff, LuBugPlay, LuBuilding, LuBuilding2, LuBus, LuBusFront, LuCable, LuCableCar, LuCake, LuCakeSlice, LuCalculator, LuCalendar, LuCalendar1, LuCalendarArrowDown, LuCalendarArrowUp, LuCalendarCheck, LuCalendarCheck2, LuCalendarClock, LuCalendarCog, LuCalendarDays, LuCalendarFold, LuCalendarHeart, LuCalendarMinus, LuCalendarMinus2, LuCalendarOff, LuCalendarPlus, LuCalendarPlus2, LuCalendarRange, LuCalendarSearch, LuCalendarSync, LuCalendarX, LuCalendarX2, LuCalendars, LuCamera, LuCameraOff, LuCandy, LuCandyCane, LuCandyOff, LuCannabis, LuCannabisOff, LuCaptions, LuCaptionsOff, LuCar, LuCarFront, LuCarTaxiFront, LuCaravan, LuCardSim, LuCarrot, LuCaseLower, LuCaseSensitive, LuCaseUpper, LuCassetteTape, LuCast, LuCastle, LuCat, LuCctv, LuChartArea, LuChartBar, LuChartBarBig, LuChartBarDecreasing, LuChartBarIncreasing, LuChartBarStacked, LuChartCandlestick, LuChartColumn, LuChartColumnBig, LuChartColumnDecreasing, LuChartColumnIncreasing, LuChartColumnStacked, LuChartGantt, LuChartLine, LuChartNetwork, LuChartNoAxesColumn, LuChartNoAxesColumnDecreasing, LuChartNoAxesColumnIncreasing, LuChartNoAxesCombined, LuChartNoAxesGantt, LuChartPie, LuChartScatter, LuChartSpline, LuCheck, LuCheckCheck, LuCheckLine, LuCheckboxBlank, LuCheckboxBlankCircle, LuCheckboxBlankCircleFill, LuCheckboxFill, LuCheckboxIndeterminateFill, LuChefHat, LuCherry, LuChessBishop, LuChessKing, LuChessKnight, LuChessPawn, LuChessQueen, LuChessRook, LuChevronDown, LuChevronFirst, LuChevronLast, LuChevronLeft, LuChevronRight, LuChevronUp, LuChevronsDown, LuChevronsDownUp, LuChevronsLeft, LuChevronsLeftRight, LuChevronsLeftRightEllipsis, LuChevronsRight, LuChevronsRightLeft, LuChevronsUp, LuChevronsUpDown, LuChromium, LuChurch, LuCigarette, LuCigaretteOff, LuCircle, LuCircleAlert, LuCircleArrowDown, LuCircleArrowLeft, LuCircleArrowOutDownLeft, LuCircleArrowOutDownRight, LuCircleArrowOutUpLeft, LuCircleArrowOutUpRight, LuCircleArrowRight, LuCircleArrowUp, LuCircleCheck, LuCircleCheckBig, LuCircleChevronDown, LuCircleChevronLeft, LuCircleChevronRight, LuCircleChevronUp, LuCircleDashed, LuCircleDivide, LuCircleDollarSign, LuCircleDot, LuCircleDotDashed, LuCircleEllipsis, LuCircleEqual, LuCircleFadingArrowUp, LuCircleFadingPlus, LuCircleGauge, LuCircleMinus, LuCircleOff, LuCircleParking, LuCircleParkingOff, LuCirclePause, LuCirclePercent, LuCirclePile, LuCirclePlay, LuCirclePlus, LuCirclePoundSterling, LuCirclePower, LuCircleQuestionMark, LuCircleSlash, LuCircleSlash2, LuCircleSmall, LuCircleStar, LuCircleStop, LuCircleUser, LuCircleUserRound, LuCircleX, LuCircuitBoard, LuCitrus, LuClapperboard, LuClipboard, LuClipboardCheck, LuClipboardClock, LuClipboardCopy, LuClipboardList, LuClipboardMinus, LuClipboardPaste, LuClipboardPen, LuClipboardPenLine, LuClipboardPlus, LuClipboardType, LuClipboardX, LuClock, LuClock1, LuClock10, LuClock11, LuClock12, LuClock2, LuClock3, LuClock4, LuClock5, LuClock6, LuClock7, LuClock8, LuClock9, LuClockAlert, LuClockArrowDown, LuClockArrowUp, LuClockCheck, LuClockFading, LuClockPlus, LuClosedCaption, LuCloud, LuCloudAlert, LuCloudBackup, LuCloudCheck, LuCloudCog, LuCloudDownload, LuCloudDownload2Fill, LuCloudDownloadFill, LuCloudDrizzle, LuCloudFill, LuCloudFog, LuCloudHail, LuCloudLightning, LuCloudMoon, LuCloudMoonRain, LuCloudOff, LuCloudOffFill, LuCloudRain, LuCloudRainWind, LuCloudSnow, LuCloudSun, LuCloudSunRain, LuCloudSync, LuCloudSyncFill, LuCloudUpload, LuCloudUpload2Fill, LuCloudUploadFill, LuCloudy, LuClover, LuClub, LuCode, LuCodeXml, LuCodepen, LuCodesandbox, LuCoffee, LuCog, LuCoins, LuCoinsExchange, LuColumns2, LuColumns3, LuColumns3Cog, LuColumns4, LuCombine, LuCommand, LuCompass, LuComponent, LuComputer, LuConciergeBell, LuCone, LuConstruction, LuContact, LuContactRound, LuContainer, LuContrast, LuCookie, LuCookingPot, LuCopy, LuCopyCheck, LuCopyMinus, LuCopyPlus, LuCopySlash, LuCopyX, LuCopyleft, LuCopyright, LuCornerDownLeft, LuCornerDownRight, LuCornerLeftDown, LuCornerLeftUp, LuCornerRightDown, LuCornerRightUp, LuCornerUpLeft, LuCornerUpRight, LuCpu, LuCreativeCommons, LuCreditCard, LuCroissant, LuCrop, LuCross, LuCrosshair, LuCrown, LuCuboid, LuCupSoda, LuCurrency, LuCustomAssets, LuCylinder, LuDam, LuDatabase, LuDatabaseBackup, LuDatabaseSearch, LuDatabaseZap, LuDecimalsArrowLeft, LuDecimalsArrowRight, LuDelete, LuDeposits, LuDessert, LuDiameter, LuDiamond, LuDiamondMinus, LuDiamondPercent, LuDiamondPlus, LuDice1, LuDice2, LuDice3, LuDice4, LuDice5, LuDice6, LuDices, LuDiff, LuDisc, LuDisc2, LuDisc3, LuDiscAlbum, LuDiscord, LuDivide, LuDna, LuDnaOff, LuDock, LuDog, LuDollarSign, LuDonateFill, LuDonut, LuDoorClosed, LuDoorClosedLocked, LuDoorOpen, LuDot, LuDownload, LuDraftingCompass, LuDrama, LuDribbble, LuDrill, LuDrone, LuDroplet, LuDropletFill, LuDropletHalfFill, LuDropletOff, LuDropletTrendingDown, LuDroplets, LuDrum, LuDrumstick, LuDumbbell, LuEar, LuEarOff, LuEarth, LuEarthLock, LuEclipse, LuEgg, LuEggFried, LuEggOff, LuEllipse, LuEllipsis, LuEllipsisVertical, LuEqual, LuEqualApproximately, LuEqualNot, LuEraser, LuEthernetPort, LuEuro, LuEvCharger, LuEvmAccounts, LuExpand, LuExport, LuExternalLink, LuEye, LuEyeClosed, LuEyeOff, LuEyeSemiOff, LuFacebook, LuFactory, LuFan, LuFastForward, LuFeather, LuFence, LuFerrisWheel, LuFigma, LuFile, LuFileArchive, LuFileAxis3d, LuFileBadge, LuFileBox, LuFileBraces, LuFileBracesCorner, LuFileChartColumn, LuFileChartColumnIncreasing, LuFileChartLine, LuFileChartPie, LuFileCheck, LuFileCheckCorner, LuFileClock, LuFileCode, LuFileCodeCorner, LuFileCog, LuFileDiff, LuFileDigit, LuFileDown, LuFileExclamationPoint, LuFileHeadphone, LuFileHeart, LuFileImage, LuFileInput, LuFileKey, LuFileLock, LuFileMinus, LuFileMinusCorner, LuFileMusic, LuFileOutput, LuFilePen, LuFilePenLine, LuFilePlay, LuFilePlus, LuFilePlusCorner, LuFileQuestionMark, LuFileScan, LuFileSearch, LuFileSearchCorner, LuFileSignal, LuFileSliders, LuFileSpreadsheet, LuFileStack, LuFileSymlink, LuFileTerminal, LuFileText, LuFileType, LuFileTypeCorner, LuFileUp, LuFileUser, LuFileVideoCamera, LuFileVolume, LuFileX, LuFileXCorner, LuFiles, LuFilm, LuFingerprintPattern, LuFireExtinguisher, LuFish, LuFishOff, LuFishSymbol, LuFishingHook, LuFishingRod, LuFlag, LuFlagOff, LuFlagTriangleLeft, LuFlagTriangleRight, LuFlame, LuFlameKindling, LuFlashlight, LuFlashlightOff, LuFlaskConical, LuFlaskConicalOff, LuFlaskRound, LuFlipHorizontal2, LuFlipVertical2, LuFlower, LuFlower2, LuFocus, LuFoldHorizontal, LuFoldVertical, LuFolder, LuFolderArchive, LuFolderCheck, LuFolderClock, LuFolderClosed, LuFolderCode, LuFolderCog, LuFolderDot, LuFolderDown, LuFolderGit, LuFolderGit2, LuFolderHeart, LuFolderInput, LuFolderKanban, LuFolderKey, LuFolderLock, LuFolderMinus, LuFolderOpen, LuFolderOpenDot, LuFolderOutput, LuFolderPen, LuFolderPlus, LuFolderRoot, LuFolderSearch, LuFolderSearch2, LuFolderShrink1, LuFolderShrink2, LuFolderSymlink, LuFolderSync, LuFolderTree, LuFolderUp, LuFolderX, LuFolders, LuFootprints, LuForklift, LuForm, LuForward, LuFrame, LuFramer, LuFrown, LuFuel, LuFullscreen, LuFunnel, LuFunnelPlus, LuFunnelX, LuGalleryHorizontal, LuGalleryHorizontalEnd, LuGalleryThumbnails, LuGalleryVertical, LuGalleryVerticalEnd, LuGamepad, LuGamepad2, LuGamepadDirectional, LuGauge, LuGavel, LuGem, LuGeorgianLari, LuGhost, LuGift, LuGitBranch, LuGitBranchMinus, LuGitBranchPlus, LuGitCommitHorizontal, LuGitCommitVertical, LuGitCompare, LuGitCompareArrows, LuGitFork, LuGitGraph, LuGitMerge, LuGitMergeConflict, LuGitPullRequest, LuGitPullRequestArrow, LuGitPullRequestClosed, LuGitPullRequestCreate, LuGitPullRequestCreateArrow, LuGitPullRequestDraft, LuGithub, LuGitlab, LuGlassWater, LuGlasses, LuGlobe, LuGlobeLock, LuGlobeOff, LuGlobeX, LuGoal, LuGpu, LuGraduationCap, LuGrape, LuGrid2x2, LuGrid2x2Check, LuGrid2x2Plus, LuGrid2x2X, LuGrid3x2, LuGrid3x3, LuGrip, LuGripHorizontal, LuGripVertical, LuGroup, LuGuitar, LuHam, LuHamburger, LuHammer, LuHand, LuHandCoins, LuHandFist, LuHandGrab, LuHandHeart, LuHandHelping, LuHandMetal, LuHandPlatter, LuHandbag, LuHandshake, LuHardDrive, LuHardDriveDownload, LuHardDriveUpload, LuHardHat, LuHash, LuHatGlasses, LuHaze, LuHd, LuHdmiPort, LuHeading, LuHeading1, LuHeading2, LuHeading3, LuHeading4, LuHeading5, LuHeading6, LuHeadphoneOff, LuHeadphones, LuHeadset, LuHeart, LuHeartCrack, LuHeartHandshake, LuHeartMinus, LuHeartOff, LuHeartPlus, LuHeartPulse, LuHeater, LuHelicopter, LuHexagon, LuHighlighter, LuHistoricPrices, LuHistory, LuHistoryEventsFill, LuHop, LuHopOff, LuHospital, LuHotel, LuHourglass, LuHouse, LuHouseHeart, LuHousePlug, LuHousePlus, LuHouseWifi, LuIceCreamBowl, LuIceCreamCone, LuIdCard, LuIdCardLanyard, LuImage, LuImageDown, LuImageMinus, LuImageOff, LuImagePlay, LuImagePlus, LuImageUp, LuImageUpscale, LuImages, LuImport, LuInbox, LuIndianRupee, LuInfinity, LuInfo, LuInspectionPanel, LuInstagram, LuItalic, LuIterationCcw, LuIterationCw, LuJapaneseYen, LuJoystick, LuKanban, LuKayak, LuKey, LuKeyRound, LuKeySquare, LuKeyboard, LuKeyboardMusic, LuKeyboardOff, LuLamp, LuLampCeiling, LuLampDesk, LuLampFloor, LuLampWallDown, LuLampWallUp, LuLandPlot, LuLandmark, LuLanguages, LuLaptop, LuLaptopMinimal, LuLaptopMinimalCheck, LuLasso, LuLassoSelect, LuLatestPrices, LuLaugh, LuLayers, LuLayers2, LuLayersIn, LuLayersOut, LuLayersPlus, LuLayoutDashboard, LuLayoutGrid, LuLayoutList, LuLayoutPanelLeft, LuLayoutPanelTop, LuLayoutTemplate, LuLeaf, LuLeafyGreen, LuLectern, LuLensConcave, LuLensConvex, LuLiabilities, LuLibrary, LuLibraryBig, LuLifeBuoy, LuLigature, LuLightbulb, LuLightbulbOff, LuLineDotRightHorizontal, LuLineSquiggle, LuLink, LuLink2, LuLink2Off, LuLinkedin, LuList, LuListCheck, LuListChecks, LuListChevronsDownUp, LuListChevronsUpDown, LuListCollapse, LuListEnd, LuListFilter, LuListFilterPlus, LuListIndentDecrease, LuListIndentIncrease, LuListMinus, LuListMusic, LuListOrdered, LuListPlus, LuListRestart, LuListStart, LuListTodo, LuListTree, LuListVideo, LuListX, LuLoader, LuLoaderCircle, LuLoaderPinwheel, LuLocate, LuLocateFixed, LuLocateOff, LuLock, LuLockKeyhole, LuLockKeyholeOpen, LuLockOpen, LuLogIn, LuLogOut, LuLogs, LuLollipop, LuLuggage, LuMagnet, LuMail, LuMailCheck, LuMailMinus, LuMailOpen, LuMailPlus, LuMailQuestionMark, LuMailSearch, LuMailWarning, LuMailX, LuMailbox, LuMails, LuManageAssets, LuManagePrices, LuManualBalances, LuMap, LuMapMinus, LuMapPin, LuMapPinCheck, LuMapPinCheckInside, LuMapPinHouse, LuMapPinMinus, LuMapPinMinusInside, LuMapPinOff, LuMapPinPen, LuMapPinPlus, LuMapPinPlusInside, LuMapPinX, LuMapPinXInside, LuMapPinned, LuMapPlus, LuMars, LuMarsStroke, LuMartini, LuMaximize, LuMaximize2, LuMedal, LuMegaphone, LuMegaphoneOff, LuMeh, LuMemoryStick, LuMenu, LuMerge, LuMessageCircle, LuMessageCircleCheck, LuMessageCircleCode, LuMessageCircleDashed, LuMessageCircleHeart, LuMessageCircleMore, LuMessageCircleOff, LuMessageCirclePlus, LuMessageCircleQuestionMark, LuMessageCircleReply, LuMessageCircleWarning, LuMessageCircleX, LuMessageSquare, LuMessageSquareCheck, LuMessageSquareCode, LuMessageSquareDashed, LuMessageSquareDiff, LuMessageSquareDot, LuMessageSquareHeart, LuMessageSquareLock, LuMessageSquareMore, LuMessageSquareOff, LuMessageSquarePlus, LuMessageSquareQuote, LuMessageSquareReply, LuMessageSquareShare, LuMessageSquareText, LuMessageSquareWarning, LuMessageSquareX, LuMessagesSquare, LuMetronome, LuMic, LuMicOff, LuMicVocal, LuMicrochip, LuMicroscope, LuMicrowave, LuMilestone, LuMilk, LuMilkOff, LuMinimize, LuMinimize2, LuMinus, LuMirrorRectangular, LuMirrorRound, LuMonitor, LuMonitorCheck, LuMonitorCloud, LuMonitorCog, LuMonitorDot, LuMonitorDown, LuMonitorOff, LuMonitorPause, LuMonitorPlay, LuMonitorSmartphone, LuMonitorSpeaker, LuMonitorStop, LuMonitorUp, LuMonitorX, LuMoon, LuMoonStar, LuMoreAssets, LuMotorbike, LuMountain, LuMountainSnow, LuMouse, LuMouseLeft, LuMouseOff, LuMousePointer, LuMousePointer2, LuMousePointer2Off, LuMousePointerBan, LuMousePointerClick, LuMouseRight, LuMove, LuMove3d, LuMoveDiagonal, LuMoveDiagonal2, LuMoveDown, LuMoveDownLeft, LuMoveDownRight, LuMoveHorizontal, LuMoveLeft, LuMoveRight, LuMoveUp, LuMoveUpLeft, LuMoveUpRight, LuMoveVertical, LuMusic, LuMusic2, LuMusic3, LuMusic4, LuNavigation, LuNavigation2, LuNavigation2Off, LuNavigationOff, LuNetwork, LuNewspaper, LuNfc, LuNonBinary, LuNotebook, LuNotebookPen, LuNotebookTabs, LuNotebookText, LuNotepadText, LuNotepadTextDashed, LuNut, LuNutOff, LuOctagon, LuOctagonAlert, LuOctagonMinus, LuOctagonPause, LuOctagonX, LuOmega, LuOnchain, LuOption, LuOrbit, LuOrigami, LuOsApple, LuOsWindows, LuPackage, LuPackage2, LuPackageCheck, LuPackageMinus, LuPackageOpen, LuPackagePlus, LuPackageSearch, LuPackageX, LuPaintBucket, LuPaintRoller, LuPaintbrush, LuPaintbrushVertical, LuPalette, LuPanda, LuPanelBottom, LuPanelBottomClose, LuPanelBottomDashed, LuPanelBottomOpen, LuPanelLeft, LuPanelLeftClose, LuPanelLeftDashed, LuPanelLeftOpen, LuPanelLeftRightDashed, LuPanelRight, LuPanelRightClose, LuPanelRightDashed, LuPanelRightOpen, LuPanelTop, LuPanelTopBottomDashed, LuPanelTopClose, LuPanelTopDashed, LuPanelTopOpen, LuPanelsLeftBottom, LuPanelsRightBottom, LuPanelsTopLeft, LuPaperclip, LuParentheses, LuParkingMeter, LuPartyPopper, LuPause, LuPawPrint, LuPaypal, LuPcCase, LuPen, LuPenLine, LuPenOff, LuPenTool, LuPencil, LuPencilLine, LuPencilOff, LuPencilRuler, LuPentagon, LuPercent, LuPersonStanding, LuPhilippinePeso, LuPhone, LuPhoneCall, LuPhoneForwarded, LuPhoneIncoming, LuPhoneMissed, LuPhoneOff, LuPhoneOutgoing, LuPi, LuPiano, LuPickaxe, LuPictureInPicture, LuPictureInPicture2, LuPiggyBank, LuPilcrow, LuPilcrowLeft, LuPilcrowRight, LuPill, LuPillBottle, LuPin, LuPinOff, LuPipette, LuPizza, LuPlane, LuPlaneLanding, LuPlaneTakeoff, LuPlay, LuPlug, LuPlug2, LuPlugZap, LuPlus, LuPocket, LuPocketKnife, LuPodcast, LuPointer, LuPointerOff, LuPopcorn, LuPopsicle, LuPoundSterling, LuPower, LuPowerOff, LuPresentation, LuPrinter, LuPrinterCheck, LuPrinterX, LuProjector, LuProportions, LuPuzzle, LuPyramid, LuQrCode, LuQuote, LuRabbit, LuRadar, LuRadiation, LuRadical, LuRadio, LuRadioButtonFill, LuRadioReceiver, LuRadioTower, LuRadius, LuRailSymbol, LuRainbow, LuRat, LuRatio, LuReceipt, LuReceiptCent, LuReceiptEuro, LuReceiptIndianRupee, LuReceiptJapaneseYen, LuReceiptPoundSterling, LuReceiptRussianRuble, LuReceiptSwissFranc, LuReceiptText, LuReceiptTurkishLira, LuReceiveDonationFill, LuRectangleCircle, LuRectangleEllipsis, LuRectangleGoggles, LuRectangleHorizontal, LuRectangleVertical, LuRecycle, LuReddit, LuRedo, LuRedo2, LuRedoDot, LuRefreshCcw, LuRefreshCcwDot, LuRefreshCw, LuRefreshCwOff, LuRefrigerator, LuRefund, LuRegex, LuRemoveFormatting, LuRepeat, LuRepeat1, LuRepeat2, LuReplace, LuReplaceAll, LuReply, LuReplyAll, LuRewind, LuRibbon, LuRocket, LuRockingChair, LuRollerCoaster, LuRose, LuRotate3d, LuRotateCcw, LuRotateCcwKey, LuRotateCcwSquare, LuRotateCw, LuRotateCwSquare, LuRoute, LuRouteOff, LuRouter, LuRows2, LuRows3, LuRows4, LuRss, LuRuler, LuRulerDimensionLine, LuRussianRuble, LuSailboat, LuSalad, LuSandwich, LuSatellite, LuSatelliteDish, LuSaudiRiyal, LuSave, LuSaveAll, LuSaveOff, LuScale, LuScale3d, LuScaling, LuScan, LuScanBarcode, LuScanEye, LuScanFace, LuScanHeart, LuScanLine, LuScanQrCode, LuScanSearch, LuScanText, LuSchool, LuScissors, LuScissorsLineDashed, LuScooter, LuScreenShare, LuScreenShareOff, LuScroll, LuScrollText, LuSearch, LuSearchAlert, LuSearchCheck, LuSearchCode, LuSearchSlash, LuSearchX, LuSection, LuSend, LuSendHorizontal, LuSendToBack, LuSeparatorHorizontal, LuSeparatorVertical, LuServer, LuServerCog, LuServerCrash, LuServerOff, LuSettings, LuSettings2, LuShapes, LuShare, LuShare2, LuSheet, LuShell, LuShelvingUnit, LuShield, LuShieldAlert, LuShieldBan, LuShieldCheck, LuShieldEllipsis, LuShieldHalf, LuShieldMinus, LuShieldOff, LuShieldPlus, LuShieldQuestionMark, LuShieldUser, LuShieldX, LuShip, LuShipWheel, LuShirt, LuShoppingBag, LuShoppingBasket, LuShoppingCart, LuShovel, LuShowerHead, LuShredder, LuShrimp, LuShrink, LuShrub, LuShuffle, LuSigma, LuSignal, LuSignalHigh, LuSignalLow, LuSignalMedium, LuSignalZero, LuSignature, LuSignpost, LuSignpostBig, LuSiren, LuSkipBack, LuSkipForward, LuSkull, LuSlack, LuSlash, LuSlashDivider, LuSlice, LuSlidersHorizontal, LuSlidersVertical, LuSmartphone, LuSmartphoneCharging, LuSmartphoneNfc, LuSmile, LuSmilePlus, LuSnail, LuSnowflake, LuSoapDispenserDroplet, LuSofa, LuSolanaAccountsFill, LuSolarPanel, LuSoup, LuSpace, LuSpade, LuSparkle, LuSparkles, LuSpeaker, LuSpeech, LuSpellCheck, LuSpellCheck2, LuSpline, LuSplinePointer, LuSplit, LuSpool, LuSpotlight, LuSprayCan, LuSprout, LuSquare, LuSquareActivity, LuSquareArrowDown, LuSquareArrowDownLeft, LuSquareArrowDownRight, LuSquareArrowLeft, LuSquareArrowOutDownLeft, LuSquareArrowOutDownRight, LuSquareArrowOutUpLeft, LuSquareArrowOutUpRight, LuSquareArrowRight, LuSquareArrowRightEnter, LuSquareArrowRightExit, LuSquareArrowUp, LuSquareArrowUpLeft, LuSquareArrowUpRight, LuSquareAsterisk, LuSquareBottomDashedScissors, LuSquareCenterlineDashedHorizontal, LuSquareCenterlineDashedVertical, LuSquareChartGantt, LuSquareCheck, LuSquareCheckBig, LuSquareChevronDown, LuSquareChevronLeft, LuSquareChevronRight, LuSquareChevronUp, LuSquareCode, LuSquareDashed, LuSquareDashedBottom, LuSquareDashedBottomCode, LuSquareDashedKanban, LuSquareDashedMousePointer, LuSquareDashedTopSolid, LuSquareDivide, LuSquareDot, LuSquareEqual, LuSquareFunction, LuSquareKanban, LuSquareLibrary, LuSquareM, LuSquareMenu, LuSquareMinus, LuSquareMousePointer, LuSquareParking, LuSquareParkingOff, LuSquarePause, LuSquarePen, LuSquarePercent, LuSquarePi, LuSquarePilcrow, LuSquarePlay, LuSquarePlus, LuSquarePower, LuSquareRadical, LuSquareRoundCorner, LuSquareScissors, LuSquareSigma, LuSquareSlash, LuSquareSplitHorizontal, LuSquareSplitVertical, LuSquareSquare, LuSquareStack, LuSquareStar, LuSquareStop, LuSquareTerminal, LuSquareUser, LuSquareUserRound, LuSquareX, LuSquaresExclude, LuSquaresIntersect, LuSquaresSubtract, LuSquaresUnite, LuSquircle, LuSquircleDashed, LuSquirrel, LuStamp, LuStar, LuStarHalf, LuStarOff, LuStepBack, LuStepForward, LuStethoscope, LuSticker, LuStickyNote, LuStone, LuStore, LuStretchHorizontal, LuStretchVertical, LuStrikethrough, LuSubscript, LuSubstrateAccounts, LuSun, LuSunDim, LuSunMedium, LuSunMoon, LuSunSnow, LuSunrise, LuSunset, LuSuperscript, LuSwatchBook, LuSwissFranc, LuSwitchCamera, LuSword, LuSwords, LuSyringe, LuTable, LuTable2, LuTableCellsMerge, LuTableCellsSplit, LuTableColumnsSplit, LuTableOfContents, LuTableProperties, LuTableRowsSplit, LuTablet, LuTabletSmartphone, LuTablets, LuTag, LuTagManager, LuTags, LuTally1, LuTally2, LuTally3, LuTally4, LuTally5, LuTangent, LuTarget, LuTelescope, LuTent, LuTentTree, LuTerminal, LuTestTube, LuTestTubeDiagonal, LuTestTubes, LuTextAlignCenter, LuTextAlignEnd, LuTextAlignJustify, LuTextAlignStart, LuTextCursor, LuTextCursorInput, LuTextInitial, LuTextQuote, LuTextSearch, LuTextSelect, LuTextWrap, LuTheater, LuThermometer, LuThermometerSnowflake, LuThermometerSun, LuThumbsDown, LuThumbsUp, LuTicket, LuTicketCheck, LuTicketMinus, LuTicketPercent, LuTicketPlus, LuTicketSlash, LuTicketX, LuTickets, LuTicketsPlane, LuTimer, LuTimerOff, LuTimerReset, LuToggleLeft, LuToggleRight, LuToilet, LuToolCase, LuToolbox, LuTornado, LuTorus, LuTouchpad, LuTouchpadOff, LuTowelRack, LuTowerControl, LuToyBrick, LuTractor, LuTrafficCone, LuTrainFront, LuTrainFrontTunnel, LuTrainTrack, LuTramFront, LuTransgender, LuTrash, LuTrash2, LuTreeDeciduous, LuTreePalm, LuTreePine, LuTrees, LuTrello, LuTrendingDown, LuTrendingUp, LuTrendingUpDown, LuTriangle, LuTriangleAlert, LuTriangleDashed, LuTriangleRight, LuTrophy, LuTruck, LuTruckElectric, LuTurkishLira, LuTurntable, LuTurtle, LuTv, LuTvMinimal, LuTvMinimalPlay, LuTwitch, LuTwitter, LuType, LuTypeOutline, LuUmbrella, LuUmbrellaOff, LuUnderline, LuUndo, LuUndo2, LuUndoDot, LuUnfoldHorizontal, LuUnfoldVertical, LuUngroup, LuUniversity, LuUnlink, LuUnlink2, LuUnplug, LuUpload, LuUsb, LuUser, LuUserCheck, LuUserCog, LuUserKey, LuUserLock, LuUserMinus, LuUserPen, LuUserPlus, LuUserRound, LuUserRoundCheck, LuUserRoundCog, LuUserRoundKey, LuUserRoundMinus, LuUserRoundPen, LuUserRoundPlus, LuUserRoundSearch, LuUserRoundX, LuUserSearch, LuUserStar, LuUserX, LuUsers, LuUsersRound, LuUtensils, LuUtensilsCrossed, LuUtilityPole, LuVan, LuVariable, LuVault, LuVectorSquare, LuVegan, LuVenetianMask, LuVenus, LuVenusAndMars, LuVibrate, LuVibrateOff, LuVideo, LuVideoOff, LuVideotape, LuView, LuVoicemail, LuVolleyball, LuVolume, LuVolume1, LuVolume2, LuVolumeOff, LuVolumeX, LuVote, LuWallet, LuWalletCards, LuWalletMinimal, LuWallpaper, LuWand, LuWandSparkles, LuWarehouse, LuWashingMachine, LuWatch, LuWaves, LuWavesArrowDown, LuWavesArrowUp, LuWavesLadder, LuWaypoints, LuWebcam, LuWebhook, LuWebhookOff, LuWeight, LuWeightTilde, LuWheat, LuWheatOff, LuWholeWord, LuWifi, LuWifiCog, LuWifiHigh, LuWifiLow, LuWifiOff, LuWifiPen, LuWifiSync, LuWifiZero, LuWind, LuWindArrowDown, LuWine, LuWineOff, LuWorkflow, LuWorm, LuWrench, LuX, LuXLineTop, LuXTwitter, LuYoutube, LuZap, LuZapOff, LuZodiacAquarius, LuZodiacAries, LuZodiacCancer, LuZodiacCapricorn, LuZodiacGemini, LuZodiacLeo, LuZodiacLibra, LuZodiacOphiuchus, LuZodiacPisces, LuZodiacSagittarius, LuZodiacScorpio, LuZodiacTaurus, LuZodiacVirgo, LuZoomIn, LuZoomOut, RuiAccordion_default as RuiAccordion, RuiAccordions_default as RuiAccordions, RuiAlert_default as RuiAlert, RuiAutoComplete_default as RuiAutoComplete, RuiAvatar_default as RuiAvatar, RuiAvatarGroup_default as RuiAvatarGroup, RuiBadge_default as RuiBadge, RuiBottomSheet_default as RuiBottomSheet, RuiButton_default as RuiButton, RuiButtonGroup_default as RuiButtonGroup, RuiCalendar_default as RuiCalendar, RuiCard_default as RuiCard, RuiCardHeader_default as RuiCardHeader, RuiCheckbox_default as RuiCheckbox, RuiCheckboxGroup_default as RuiCheckboxGroup, RuiChip_default as RuiChip, RuiColorPicker_default as RuiColorPicker, RuiDataTable_default as RuiDataTable, RuiDateTimePicker_default as RuiDateTimePicker, RuiDialog_default as RuiDialog, RuiDivider_default as RuiDivider, RuiFileUpload_default as RuiFileUpload, RuiFooterStepper_default as RuiFooterStepper, RuiIcon_default as RuiIcon, RuiIcons, RuiLogo_default as RuiLogo, RuiMenu_default as RuiMenu, RuiMenuSelect_default as RuiMenuSelect, RuiNavigationDrawer_default as RuiNavigationDrawer, RuiNotification_default as RuiNotification, RuiProgress_default as RuiProgress, RuiRadio_default as RuiRadio, RuiRadioGroup_default as RuiRadioGroup, RuiRevealableTextField_default as RuiRevealableTextField, RuiSimpleSelect_default as RuiSimpleSelect, RuiSkeletonLoader_default as RuiSkeletonLoader, RuiSlider_default as RuiSlider, RuiStepper_default as RuiStepper, RuiSwitch_default as RuiSwitch, RuiTab_default as RuiTab, RuiTabItem_default as RuiTabItem, RuiTabItems_default as RuiTabItems, RuiTablePagination_default as RuiTablePagination, RuiExpandButton_default as RuiTableRowExpander, RuiTabs_default as RuiTabs, RuiTextArea_default as RuiTextArea, RuiTextField_default as RuiTextField, RuiTimePicker_default as RuiTimePicker, RuiTimezoneSelect_default as RuiTimezoneSelect, RuiTooltip_default as RuiTooltip, StepperState, ThemeMode, cn, contextColors, createBlockie, createRui, createRuiI8nPlugin, isRuiIcon, translationKeys, tv, useBreakpoint, useIcons, useRotkiTheme };
99
100
 
100
101
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { App } from 'vue';\nimport type { InitThemeOptions } from '@/types/theme';\nimport {\n createTableDefaults,\n type TableOptions,\n TableSymbol,\n} from '@/composables/defaults/table';\nimport { createIconDefaults, IconsSymbol } from '@/composables/icons';\nimport { useRotkiTheme } from '@/composables/theme';\nimport { RUI_I18N_INJECTION_KEY } from '@/composables/use-rui-i18n';\nimport { StepperState } from '@/types/stepper';\nimport '@/style.css';\n\nexport * from '@/components';\n\nexport * from '@/composables';\n\nexport { contextColors, type ContextColorsType } from '@/consts/colors';\n\nexport { translationKeys } from '@/i18n/keys';\n\nexport * from '@/icons';\n\nexport { StepperState };\n\nexport type { VueClassValue } from '@/types/class-value';\n\nexport {\n type InitThemeOptions,\n type ThemeConfig,\n type ThemeContent,\n type ThemeData,\n ThemeMode,\n} from '@/types/theme';\n\nexport { createBlockie } from '@/utils/blockie';\n\nexport { cn, tv } from '@/utils/tv';\n\nexport type { VariantProps } from 'tailwind-variants';\n\nexport interface RuiOptions {\n theme?: InitThemeOptions;\n defaults?: {\n table?: Partial<TableOptions>;\n };\n}\n\nexport function createRui(options: RuiOptions = {}) {\n const { theme, defaults: defaultOptions } = options;\n\n const defaults = Object.freeze({\n icons: createIconDefaults({\n registeredIcons: theme?.icons,\n }),\n table: createTableDefaults(defaultOptions?.table),\n });\n\n const install = (app: App) => {\n useRotkiTheme().init({ ...theme });\n\n app.provide(TableSymbol, defaults.table);\n app.provide(IconsSymbol, defaults.icons);\n };\n\n return {\n defaults,\n install,\n };\n}\n\nexport function createRuiI8nPlugin(i18nInstance: any) {\n if (!i18nInstance || typeof i18nInstance !== 'object') {\n throw new Error('i18nInstance must be an object');\n }\n\n if (!i18nInstance.global || typeof i18nInstance.global !== 'object') {\n throw new Error('i18nInstance must have a global property');\n }\n\n if (!i18nInstance.global.t || typeof i18nInstance.global.t !== 'function') {\n throw new Error('i18nInstance.global.t must be a function');\n }\n\n if (!i18nInstance.global.te || typeof i18nInstance.global.te !== 'function') {\n throw new Error('i18nInstance.global.te must be a function');\n }\n\n return {\n install: (app: App) => {\n app.provide(RUI_I18N_INJECTION_KEY, {\n t: i18nInstance.global.t.bind(i18nInstance.global),\n te: i18nInstance.global.te.bind(i18nInstance.global),\n });\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,SAAgB,UAAU,UAAsB,EAAE,EAAE;CAClD,MAAM,EAAE,OAAO,UAAU,mBAAmB;CAE5C,MAAM,WAAW,OAAO,OAAO;EAC7B,OAAO,mBAAmB,EACxB,iBAAiB,OAAO,OACzB,CAAC;EACF,OAAO,oBAAoB,gBAAgB,MAAM;EAClD,CAAC;CAEF,MAAM,WAAW,QAAa;AAC5B,iBAAe,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC;AAElC,MAAI,QAAQ,aAAa,SAAS,MAAM;AACxC,MAAI,QAAQ,aAAa,SAAS,MAAM;;AAG1C,QAAO;EACL;EACA;EACD;;AAGH,SAAgB,mBAAmB,cAAmB;AACpD,KAAI,CAAC,gBAAgB,OAAO,iBAAiB,SAC3C,OAAM,IAAI,MAAM,iCAAiC;AAGnD,KAAI,CAAC,aAAa,UAAU,OAAO,aAAa,WAAW,SACzD,OAAM,IAAI,MAAM,2CAA2C;AAG7D,KAAI,CAAC,aAAa,OAAO,KAAK,OAAO,aAAa,OAAO,MAAM,WAC7D,OAAM,IAAI,MAAM,2CAA2C;AAG7D,KAAI,CAAC,aAAa,OAAO,MAAM,OAAO,aAAa,OAAO,OAAO,WAC/D,OAAM,IAAI,MAAM,4CAA4C;AAG9D,QAAO,EACL,UAAU,QAAa;AACrB,MAAI,QAAQ,wBAAwB;GAClC,GAAG,aAAa,OAAO,EAAE,KAAK,aAAa,OAAO;GAClD,IAAI,aAAa,OAAO,GAAG,KAAK,aAAa,OAAO;GACrD,CAAC;IAEL"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { App } from 'vue';\nimport type { InitThemeOptions } from '@/types/theme';\nimport {\n createTableDefaults,\n type TableOptions,\n TableSymbol,\n} from '@/composables/defaults/table';\nimport { createIconDefaults, IconsSymbol } from '@/composables/icons';\nimport { useRotkiTheme } from '@/composables/theme';\nimport { RUI_I18N_INJECTION_KEY } from '@/composables/use-rui-i18n';\nimport { StepperState } from '@/types/stepper';\nimport '@/style.css';\n\nexport * from '@/components';\n\nexport * from '@/composables';\n\nexport { contextColors, type ContextColorsType } from '@/consts/colors';\n\nexport { translationKeys } from '@/i18n/keys';\n\nexport * from '@/icons';\n\nexport { StepperState };\n\nexport type { VueClassValue } from '@/types/class-value';\n\nexport {\n type InitThemeOptions,\n type ThemeConfig,\n type ThemeContent,\n type ThemeData,\n ThemeMode,\n} from '@/types/theme';\n\nexport { createBlockie } from '@/utils/blockie';\n\nexport { cn, tv } from '@/utils/tv';\n\nexport type { VariantProps } from 'tailwind-variants';\n\nexport interface RuiOptions {\n theme?: InitThemeOptions;\n defaults?: {\n table?: Partial<TableOptions>;\n };\n}\n\nexport function createRui(options: RuiOptions = {}) {\n const { theme, defaults: defaultOptions } = options;\n\n const defaults = Object.freeze({\n icons: createIconDefaults({\n registeredIcons: theme?.icons,\n }),\n table: createTableDefaults(defaultOptions?.table),\n });\n\n const install = (app: App) => {\n useRotkiTheme().init({ ...theme });\n\n app.provide(TableSymbol, defaults.table);\n app.provide(IconsSymbol, defaults.icons);\n };\n\n return {\n defaults,\n install,\n };\n}\n\nexport function createRuiI8nPlugin(i18nInstance: any) {\n if (!i18nInstance || typeof i18nInstance !== 'object') {\n throw new Error('i18nInstance must be an object');\n }\n\n if (!i18nInstance.global || typeof i18nInstance.global !== 'object') {\n throw new Error('i18nInstance must have a global property');\n }\n\n if (!i18nInstance.global.t || typeof i18nInstance.global.t !== 'function') {\n throw new Error('i18nInstance.global.t must be a function');\n }\n\n if (!i18nInstance.global.te || typeof i18nInstance.global.te !== 'function') {\n throw new Error('i18nInstance.global.te must be a function');\n }\n\n return {\n install: (app: App) => {\n app.provide(RUI_I18N_INJECTION_KEY, {\n t: i18nInstance.global.t.bind(i18nInstance.global),\n te: i18nInstance.global.te.bind(i18nInstance.global),\n });\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,SAAgB,UAAU,UAAsB,EAAE,EAAE;CAClD,MAAM,EAAE,OAAO,UAAU,mBAAmB;CAE5C,MAAM,WAAW,OAAO,OAAO;EAC7B,OAAO,mBAAmB,EACxB,iBAAiB,OAAO,OACzB,CAAC;EACF,OAAO,oBAAoB,gBAAgB,MAAM;EAClD,CAAC;CAEF,MAAM,WAAW,QAAa;AAC5B,iBAAe,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC;AAElC,MAAI,QAAQ,aAAa,SAAS,MAAM;AACxC,MAAI,QAAQ,aAAa,SAAS,MAAM;;AAG1C,QAAO;EACL;EACA;EACD;;AAGH,SAAgB,mBAAmB,cAAmB;AACpD,KAAI,CAAC,gBAAgB,OAAO,iBAAiB,SAC3C,OAAM,IAAI,MAAM,iCAAiC;AAGnD,KAAI,CAAC,aAAa,UAAU,OAAO,aAAa,WAAW,SACzD,OAAM,IAAI,MAAM,2CAA2C;AAG7D,KAAI,CAAC,aAAa,OAAO,KAAK,OAAO,aAAa,OAAO,MAAM,WAC7D,OAAM,IAAI,MAAM,2CAA2C;AAG7D,KAAI,CAAC,aAAa,OAAO,MAAM,OAAO,aAAa,OAAO,OAAO,WAC/D,OAAM,IAAI,MAAM,4CAA4C;AAG9D,QAAO,EACL,UAAU,QAAa;AACrB,MAAI,QAAQ,wBAAwB;GAClC,GAAG,aAAa,OAAO,EAAE,KAAK,aAAa,OAAO;GAClD,IAAI,aAAa,OAAO,GAAG,KAAK,aAAa,OAAO;GACrD,CAAC;IAEL"}
@@ -23,6 +23,8 @@
23
23
  "lu-copy",
24
24
  "lu-eye",
25
25
  "lu-eye-off",
26
+ "lu-file",
27
+ "lu-file-up",
26
28
  "lu-info",
27
29
  "lu-radio-button-fill",
28
30
  "lu-search",
package/dist/style.css CHANGED
@@ -1138,6 +1138,10 @@ html[data-theme="dark"], html.dark {
1138
1138
  margin-top: 0px !important;
1139
1139
  }
1140
1140
 
1141
+ .-mb-2 {
1142
+ margin-bottom: -0.5rem;
1143
+ }
1144
+
1141
1145
  .-ml-\[0\.5625rem\] {
1142
1146
  margin-left: -0.5625rem;
1143
1147
  }
@@ -2375,6 +2379,10 @@ html[data-theme="dark"], html.dark {
2375
2379
  border-top-width: 1px;
2376
2380
  }
2377
2381
 
2382
+ .\!border-solid {
2383
+ border-style: solid !important;
2384
+ }
2385
+
2378
2386
  .border-dashed {
2379
2387
  border-style: dashed;
2380
2388
  }
@@ -2745,6 +2753,10 @@ html[data-theme="dark"], html.dark {
2745
2753
  background-color: rgba(var(--rui-error-main), 0.2);
2746
2754
  }
2747
2755
 
2756
+ .bg-rui-error\/\[0\.08\] {
2757
+ background-color: rgba(var(--rui-error-main), 0.08);
2758
+ }
2759
+
2748
2760
  .bg-rui-grey-100 {
2749
2761
  --tw-bg-opacity: 1;
2750
2762
  background-color: rgba(var(--rui-grey-100), var(--tw-bg-opacity, 1));
@@ -2813,6 +2825,10 @@ html[data-theme="dark"], html.dark {
2813
2825
  background-color: rgba(var(--rui-primary-main), 0.08);
2814
2826
  }
2815
2827
 
2828
+ .bg-rui-primary\/\[0\.12\] {
2829
+ background-color: rgba(var(--rui-primary-main), 0.12);
2830
+ }
2831
+
2816
2832
  .bg-rui-secondary {
2817
2833
  --tw-bg-opacity: 1;
2818
2834
  background-color: rgba(var(--rui-secondary-main), var(--tw-bg-opacity, 1));
@@ -2853,6 +2869,14 @@ html[data-theme="dark"], html.dark {
2853
2869
  background-color: rgba(var(--rui-success-main), 0.2);
2854
2870
  }
2855
2871
 
2872
+ .bg-rui-success\/\[0\.08\] {
2873
+ background-color: rgba(var(--rui-success-main), 0.08);
2874
+ }
2875
+
2876
+ .bg-rui-success\/\[0\.12\] {
2877
+ background-color: rgba(var(--rui-success-main), 0.12);
2878
+ }
2879
+
2856
2880
  .bg-rui-warning {
2857
2881
  --tw-bg-opacity: 1;
2858
2882
  background-color: rgba(var(--rui-warning-main), var(--tw-bg-opacity, 1));
@@ -3123,6 +3147,10 @@ html[data-theme="dark"], html.dark {
3123
3147
  padding-right: 0px;
3124
3148
  }
3125
3149
 
3150
+ .pr-1 {
3151
+ padding-right: 0.25rem;
3152
+ }
3153
+
3126
3154
  .pr-2 {
3127
3155
  padding-right: 0.5rem;
3128
3156
  }
@@ -3139,6 +3167,10 @@ html[data-theme="dark"], html.dark {
3139
3167
  padding-right: 2rem;
3140
3168
  }
3141
3169
 
3170
+ .pr-\[var\(--rui-scrollbar-gutter\2c 15px\)\] {
3171
+ padding-right: var(--rui-scrollbar-gutter,15px);
3172
+ }
3173
+
3142
3174
  .ps-8 {
3143
3175
  padding-inline-start: 2rem;
3144
3176
  }
@@ -3383,6 +3415,10 @@ html[data-theme="dark"], html.dark {
3383
3415
  line-height: 1.25;
3384
3416
  }
3385
3417
 
3418
+ .tracking-wide {
3419
+ letter-spacing: 0.025em;
3420
+ }
3421
+
3386
3422
  .\!text-rui-dark-text {
3387
3423
  color: var(--rui-dark-text-primary) !important;
3388
3424
  }
@@ -3512,6 +3548,10 @@ html[data-theme="dark"], html.dark {
3512
3548
  opacity: 0.5;
3513
3549
  }
3514
3550
 
3551
+ .opacity-60 {
3552
+ opacity: 0.6;
3553
+ }
3554
+
3515
3555
  .opacity-65 {
3516
3556
  opacity: 0.65;
3517
3557
  }
@@ -4617,6 +4657,10 @@ body {
4617
4657
  background-color: rgba(var(--rui-primary-main), 0.04);
4618
4658
  }
4619
4659
 
4660
+ .hover\:bg-rui-primary\/\[0\.16\]:hover {
4661
+ background-color: rgba(var(--rui-primary-main), 0.16);
4662
+ }
4663
+
4620
4664
  .hover\:bg-rui-secondary-darker:hover {
4621
4665
  --tw-bg-opacity: 1;
4622
4666
  background-color: rgba(var(--rui-secondary-darker), var(--tw-bg-opacity, 1));
@@ -4878,6 +4922,10 @@ body {
4878
4922
  color: var(--rui-text-disabled);
4879
4923
  }
4880
4924
 
4925
+ .disabled\:no-underline:disabled {
4926
+ text-decoration-line: none;
4927
+ }
4928
+
4881
4929
  .disabled\:outline-rui-text-disabled:disabled {
4882
4930
  outline-color: var(--rui-text-disabled);
4883
4931
  }
@@ -36,4 +36,8 @@ export declare function transformCase<T extends object>(item: T, to: 'camelCase'
36
36
  */
37
37
  export declare function getTextToken(string: unknown): string;
38
38
  export declare function transformPropsUnit(value?: string | number): string | undefined;
39
+ /**
40
+ * Formats a byte count into a human-readable string (e.g. "1.2 MB").
41
+ */
42
+ export declare function formatFileSize(bytes: number): string;
39
43
  export {};
@@ -69,7 +69,27 @@ function transformPropsUnit(value) {
69
69
  if (value === void 0 || typeof value === "string" && isNaN(Number(value))) return value;
70
70
  return `${value}px`;
71
71
  }
72
+ /**
73
+ * Formats a byte count into a human-readable string (e.g. "1.2 MB").
74
+ */
75
+ function formatFileSize(bytes) {
76
+ if (!Number.isFinite(bytes) || bytes < 0) return "0 B";
77
+ if (bytes < 1024) return `${bytes} B`;
78
+ const units = [
79
+ "KB",
80
+ "MB",
81
+ "GB",
82
+ "TB"
83
+ ];
84
+ let value = bytes / 1024;
85
+ let unitIndex = 0;
86
+ while (value >= 1024 && unitIndex < units.length - 1) {
87
+ value /= 1024;
88
+ unitIndex++;
89
+ }
90
+ return `${value.toFixed(value >= 10 ? 0 : 1)} ${units[unitIndex]}`;
91
+ }
72
92
  //#endregion
73
- export { formatInteger, getNonRootAttrs, getRootAttrs, getTextToken, transformCase, transformPropsUnit };
93
+ export { formatFileSize, formatInteger, getNonRootAttrs, getRootAttrs, getTextToken, transformCase, transformPropsUnit };
74
94
 
75
95
  //# sourceMappingURL=helpers.js.map