@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.
- package/dist/__test__/options.d.ts +7 -0
- package/dist/components/calendar/RuiCalendarMenu.js.map +1 -1
- package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js +3 -1
- package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/date-time-picker/RuiDateTimePicker.js.map +1 -1
- package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js +3 -1
- package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/forms/auto-complete/RuiAutoComplete.js.map +1 -1
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +12 -1
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js +137 -51
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/forms/file-upload/RuiFileUpload.js +7 -0
- package/dist/components/forms/file-upload/RuiFileUpload.js.map +1 -0
- package/dist/components/forms/file-upload/RuiFileUpload.vue.d.ts +61 -0
- package/dist/components/forms/file-upload/RuiFileUpload.vue_vue_type_script_setup_true_lang.js +269 -0
- package/dist/components/forms/file-upload/RuiFileUpload.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/forms/select/RuiMenuSelect.js.map +1 -1
- package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js +7 -1
- package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/index.d.ts +3 -2
- package/dist/components/index.js +2 -1
- package/dist/components/overlays/menu/RuiMenu.js.map +1 -1
- package/dist/components/overlays/menu/RuiMenu.vue.d.ts +6 -0
- package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/composables/dropdown-menu.d.ts +12 -1
- package/dist/composables/dropdown-menu.js +46 -7
- package/dist/composables/dropdown-menu.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/library-icons.json +2 -0
- package/dist/style.css +48 -0
- package/dist/utils/helpers.d.ts +4 -0
- package/dist/utils/helpers.js +21 -1
- package/dist/utils/helpers.js.map +1 -1
- package/dist/web-types.json +262 -1
- 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":";;;;;;;;;;;AA4FA,IAAM,8BACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAxCF,MAAM,aAAa,SAAoB,SAAA,aAAoB;EAoC3D,MAAM,QAAQ,IAAa,MAAM;EACjC,MAAM,cAAc,eAA4B,cAAc;EAK9D,MAAM,EACJ,WAAW,WACX,SAAS,MACT,MACA,SACA,kBACA,cACA,gBACA,QACA,SACA,iBACA,mBACE,kBACI,QAAA,SAAS,kBAAkB,QAAA,OAAO,GAAI,QAAA,WAAW,EAAE,QACnD,QAAA,gBACA,QAAA,iBACA,QAAA,kBACA,QAAA,SACP;EAED,MAAM,EAAE,UAAU,eAAe,UAAU;EAE3C,MAAM,EAAE,UAAU,eAAe,wBACzB,QAAA,qBACA,QAAA,gBACP;EAED,MAAM,aAAa,GAAG;GACpB,OAAO;IACL,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACV;GACD,UAAU;IACR,WAAW,EACT,MAAM,EAAE,SAAS,UAAU,EAC5B;IACD,OAAO;KACL,MAAM,EAAE,SAAS,QAAQ;KACzB,OAAO,EAAE,SAAS,QAAA;;IAErB;GACD,iBAAiB;IAAE,WAAW;IAAO,OAAO;;GAC7C,CAAC;EAEF,MAAM,KAAK,eAA8C,WAAW;GAClE,WAAQ,QAAA;GACR,OAAI,QAAA;GACL,CAAC,CAAC;EAOH,MAAM,gBAAgB,eAA8B;GAClD,MAAM,WAAW,MAAI,MAAM;AAC3B,UAAO;IACL,aAAa,QAAA,WACT,KAAA,UACM;AACJ,SAAI,QAAA,YACF,SAAQ;;IAEhB,cAAc,QAAA,WACV,KAAA,UACM;AACJ,SAAI,QAAA,eAAe,CAAC,SAClB,UAAS;;IAElB;IACD;EAEF,MAAM,YAAY,gBAA2B;GAC3C,GAAG,MAAI,cAAc;GACrB,SAAS,QAAA,WAAW,KAAA,IAAY;GACjC,EAAE;EAEH,SAAS,iBAAiB;GACxB,MAAM,UAAU,MAAI,YAAY;AAChC,OAAI,CAAC,QACH;AAGF,WAAQ,OAAO;;EAGjB,SAAS,YAAkB;AACzB,OAAI,QAAA,iBACF;AAEF,kBAAe,gBAAgB,CAAC;;EAGlC,SAAS,mBAAmB;GAC1B,MAAM,cAAc,MAAI,UAAU;AAClC,OAAI,CAAC,YACH;GAEF,MAAM,cAAc,YAAY,cAA2B,4BAA4B;AACvF,OAAI,YACF,aAAY,OAAO;;EAIvB,SAAS,QAAQ,OAA6B;AAC5C,OAAI,CAAC,MAAI,KAAK,CACZ;AACF,YAAS;AACT,SAAI,OAAO,MAAM;AACjB,UAAO,iBAAiB;AAGxB,OAAI,QAAA,iBACF;AAGF,kBAAe,kBAAkB,CAAC;;EAGpC,SAAS,aAAmB;AAC1B,OAAI,MAAI,KAAK,IAAI,MAAI,MAAM;QACrB,CAAC,QAAA,wBACH,UAAS;UAER;AACH,YAAQ;AACR,UAAI,OAAO,KAAK;;;AAIpB,QAAM,aAAa,UAAU;AAC3B,OAAI,MAAI,KAAK,KAAK,MAChB;AAEF,OAAI,OAAO;AACT,YAAQ;AACR,UAAI,OAAO,KAAK;SAGhB,UAAS;IAEX;AAEF,QAAM,OAAO,SAAS;AACpB,SAAI,YAAY,KAAK;AACrB,OAAI,KACF,YAAW;IAEb;AAEF,iBAAe,YAAY;AACzB,OAAI,MAAI,KAAK,IAAI,CAAC,QAAA,WAChB,UAAS;KACV,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;;uBAIzB,mBA6DM,OAAA;IA5DH,OAAK,eAAE,QAAA,YAAY,KAAI;IACvB,WAAO,OAAA,OAAA,OAAA,KAAA,SAAA,eAAA,WAAW,SAAO,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,MAAA,CAAA;;IAE1B,mBAWM,OAAA;cAVA;KAAJ,KAAI;KACH,OAAK,eAAE,MAAA,GAAE,CAAC,QAAO,EAAA,OAAU,MAAA,GAAE,CAAC,QAAA,YAAY,QAAO,IAAK,MAAA,GAAE,CAAC,QAAA,aAAY,EAAA,CAAA,CAAA;KACrE,sBAAoB,QAAA;KACrB,iBAAc;KACb,iBAAe,MAAA,KAAA;QAEhB,WAGE,KAAA,QAAA,aAAA,eAAA,mBAAA;KAAA,OADiB,MAAA,UAAS;KAAA,MAAE,MAAA,KAAI;KAAA,UAAE,QAAA;KAAQ,UAAE,MAAA,SAAQ;KAAA,YAAE,MAAA,WAAA;KAAU,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,WAAA;KAI3D,QAAA,YAAA,WAAA,EADT,YAqCW,UAAA;;KAnCT,IAAG;QAGK,MAAA,QAAO,IAAA,WAAA,EADf,mBAgCM,OAAA;;cA9BA;KAAJ,KAAI;KACH,OAAK,eAAE,MAAA,GAAE,CAAC,QAAO,EAAA,OAAU,MAAA,GAAE,CAAC,QAAA,YAAY,KAAI,IAAK,MAAA,GAAE,CAAC,QAAA,UAAS,EAAA,CAAA,CAAA;KAChE,MAAK;KACJ,kBAAgB,MAAA,iBAAgB;KAChC,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,QAAA,sBAAsB,SAAO,GAAK,KAAA;KACzC,WAAO,OAAA,OAAA,OAAA,KAAA,SAAA,eAAA,WAAW,SAAO,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,MAAA,CAAA;QAE1B,YAsBkB,iBAAA;KArBhB,sBAAmB;KACnB,oBAAiB;KACjB,kBAAe;KACf,sBAAmB;KACnB,oBAAiB;KACjB,kBAAe;KACd,eAAY,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,eAAc,EAAA;KAC5B,cAAW,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,aAAY,GAAG,MAAA,gBAAe,EAAA,GAAK,KAAA;KAChD,eAAY,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,eAAc,EAAA;;4BAYvB,CATE,MAAA,KAAI,IAAA,WAAA,EADZ,mBAUM,OAVN,WAUM;eARA;MAAJ,KAAI;MACJ,KAAI;MACJ,WAAQ;MACP,OAAO,MAAA,GAAE,CAAC,SAAO;MAClB,UAAS;QACD,MAAA,cAAa,CAAA,EAAA,CAErB,WAA2B,KAAA,QAAA,WAAA,eAAA,mBAAA,EAAA,OAAX,MAAA,MAAK,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,GAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,CAAA;;;IAMrB,QAAA,eAAA,WAAA,EADR,YAME,2BAAA;;KAJC,OAAK,eAAE,MAAA,GAAE,CAAC,SAAO,CAAA;KACjB,kBAAgB,QAAA;KAChB,oBAAkB,QAAA;KAClB,MAAM,QAAA"}
|
|
@@ -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
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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":"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"}
|
|
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":"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"}
|
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":"
|
|
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"}
|
package/dist/library-icons.json
CHANGED
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
|
}
|
package/dist/utils/helpers.d.ts
CHANGED
|
@@ -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 {};
|
package/dist/utils/helpers.js
CHANGED
|
@@ -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
|