@rotki/ui-library 3.1.7 → 3.2.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/components/accordions/accordion/RuiAccordion.js.map +1 -1
- package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/accordions/accordion/accordion-styles.d.ts +1 -0
- package/dist/components/accordions/accordion/accordion-styles.js +7 -0
- package/dist/components/accordions/accordion/accordion-styles.js.map +1 -0
- package/dist/components/alerts/RuiAlert.js.map +1 -1
- package/dist/components/alerts/RuiAlert.vue_vue_type_script_setup_true_lang.js +1 -65
- package/dist/components/alerts/RuiAlert.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/alerts/alert-styles.d.ts +145 -0
- package/dist/components/alerts/alert-styles.js +70 -0
- package/dist/components/alerts/alert-styles.js.map +1 -0
- package/dist/components/avatars/RuiAvatar.js.map +1 -1
- package/dist/components/avatars/RuiAvatar.vue_vue_type_script_setup_true_lang.js +1 -38
- package/dist/components/avatars/RuiAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/avatars/RuiAvatarGroup.js.map +1 -1
- package/dist/components/avatars/RuiAvatarGroup.vue_vue_type_script_setup_true_lang.js +1 -13
- package/dist/components/avatars/RuiAvatarGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/avatars/avatar-group-styles.d.ts +49 -0
- package/dist/components/avatars/avatar-group-styles.js +18 -0
- package/dist/components/avatars/avatar-group-styles.js.map +1 -0
- package/dist/components/avatars/avatar-styles.d.ts +181 -0
- package/dist/components/avatars/avatar-styles.js +43 -0
- package/dist/components/avatars/avatar-styles.js.map +1 -0
- package/dist/components/buttons/button-group/RuiButtonGroup.js.map +1 -1
- package/dist/components/buttons/button-group/RuiButtonGroup.vue_vue_type_script_setup_true_lang.js +2 -138
- package/dist/components/buttons/button-group/RuiButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/buttons/button-group/button-group-styles.d.ts +142 -0
- package/dist/components/buttons/button-group/button-group-styles.js +143 -0
- package/dist/components/buttons/button-group/button-group-styles.js.map +1 -0
- package/dist/components/calendar/RuiCalendar.js.map +1 -1
- package/dist/components/calendar/RuiCalendar.vue_vue_type_script_setup_true_lang.js +1 -8
- package/dist/components/calendar/RuiCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/calendar/RuiCalendarGrid.js.map +1 -1
- package/dist/components/calendar/RuiCalendarGrid.vue_vue_type_script_setup_true_lang.js +2 -22
- package/dist/components/calendar/RuiCalendarGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/calendar/RuiCalendarMenu.js.map +1 -1
- package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js +3 -14
- package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/calendar/calendar-grid-styles.d.ts +43 -0
- package/dist/components/calendar/calendar-grid-styles.js +26 -0
- package/dist/components/calendar/calendar-grid-styles.js.map +1 -0
- package/dist/components/calendar/calendar-menu-styles.d.ts +34 -0
- package/dist/components/calendar/calendar-menu-styles.js +17 -0
- package/dist/components/calendar/calendar-menu-styles.js.map +1 -0
- package/dist/components/calendar/calendar-styles.d.ts +16 -0
- package/dist/components/calendar/calendar-styles.js +13 -0
- package/dist/components/calendar/calendar-styles.js.map +1 -0
- package/dist/components/cards/RuiCard.js.map +1 -1
- package/dist/components/cards/RuiCard.vue_vue_type_script_setup_true_lang.js +3 -58
- package/dist/components/cards/RuiCard.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/cards/RuiCardHeader.js.map +1 -1
- package/dist/components/cards/RuiCardHeader.vue_vue_type_script_setup_true_lang.js +2 -20
- package/dist/components/cards/RuiCardHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/cards/card-header-styles.d.ts +46 -0
- package/dist/components/cards/card-header-styles.js +24 -0
- package/dist/components/cards/card-header-styles.js.map +1 -0
- package/dist/components/cards/card-styles.d.ts +175 -0
- package/dist/components/cards/card-styles.js +62 -0
- package/dist/components/cards/card-styles.js.map +1 -0
- package/dist/components/chips/RuiChip.js.map +1 -1
- package/dist/components/chips/RuiChip.vue_vue_type_script_setup_true_lang.js +2 -241
- package/dist/components/chips/RuiChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chips/chip-styles.d.ts +223 -0
- package/dist/components/chips/chip-styles.js +246 -0
- package/dist/components/chips/chip-styles.js.map +1 -0
- package/dist/components/color-picker/RuiColorBoard.js.map +1 -1
- package/dist/components/color-picker/RuiColorBoard.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/color-picker/RuiColorBoard.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/color-picker/RuiColorHue.js.map +1 -1
- package/dist/components/color-picker/RuiColorHue.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/color-picker/RuiColorHue.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/color-picker/RuiColorPicker.js.map +1 -1
- package/dist/components/color-picker/RuiColorPicker.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/color-picker/RuiColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/color-picker/color-board-styles.d.ts +1 -0
- package/dist/components/color-picker/color-board-styles.js +7 -0
- package/dist/components/color-picker/color-board-styles.js.map +1 -0
- package/dist/components/color-picker/color-hue-styles.d.ts +1 -0
- package/dist/components/color-picker/color-hue-styles.js +7 -0
- package/dist/components/color-picker/color-hue-styles.js.map +1 -0
- package/dist/components/color-picker/color-picker-styles.d.ts +1 -0
- package/dist/components/color-picker/color-picker-styles.js +7 -0
- package/dist/components/color-picker/color-picker-styles.js.map +1 -0
- package/dist/components/forms/field-label/RuiFieldLabel.js.map +1 -1
- package/dist/components/forms/field-label/RuiFieldLabel.vue_vue_type_script_setup_true_lang.js +1 -11
- package/dist/components/forms/field-label/RuiFieldLabel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/forms/field-label/field-label-styles.d.ts +43 -0
- package/dist/components/forms/field-label/field-label-styles.js +16 -0
- package/dist/components/forms/field-label/field-label-styles.js.map +1 -0
- package/dist/components/forms/select/RuiSimpleSelect.js.map +1 -1
- package/dist/components/forms/select/RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js +2 -11
- package/dist/components/forms/select/RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/forms/select/simple-select-styles.d.ts +2 -0
- package/dist/components/forms/select/simple-select-styles.js +15 -0
- package/dist/components/forms/select/simple-select-styles.js.map +1 -0
- package/dist/components/forms/switch/RuiSwitch.js.map +1 -1
- package/dist/components/forms/switch/RuiSwitch.vue_vue_type_script_setup_true_lang.js +1 -126
- package/dist/components/forms/switch/RuiSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/forms/switch/switch-styles.d.ts +151 -0
- package/dist/components/forms/switch/switch-styles.js +131 -0
- package/dist/components/forms/switch/switch-styles.js.map +1 -0
- package/dist/components/icons/RuiIcon.js.map +1 -1
- package/dist/components/icons/RuiIcon.vue_vue_type_script_setup_true_lang.js +2 -28
- package/dist/components/icons/RuiIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/icons/icon-styles.d.ts +44 -0
- package/dist/components/icons/icon-styles.js +33 -0
- package/dist/components/icons/icon-styles.js.map +1 -0
- package/dist/components/loaders/RuiSkeletonBase.js.map +1 -1
- package/dist/components/loaders/RuiSkeletonBase.vue_vue_type_script_setup_true_lang.js +2 -12
- package/dist/components/loaders/RuiSkeletonBase.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/loaders/RuiSkeletonLoader.js.map +1 -1
- package/dist/components/loaders/RuiSkeletonLoader.vue_vue_type_script_setup_true_lang.js +3 -13
- package/dist/components/loaders/RuiSkeletonLoader.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/loaders/skeleton-base-styles.d.ts +25 -0
- package/dist/components/loaders/skeleton-base-styles.js +16 -0
- package/dist/components/loaders/skeleton-base-styles.js.map +1 -0
- package/dist/components/loaders/skeleton-loader-styles.d.ts +37 -0
- package/dist/components/loaders/skeleton-loader-styles.js +18 -0
- package/dist/components/loaders/skeleton-loader-styles.js.map +1 -0
- package/dist/components/overlays/badge/RuiBadge.js.map +1 -1
- package/dist/components/overlays/badge/RuiBadge.vue_vue_type_script_setup_true_lang.js +1 -83
- package/dist/components/overlays/badge/RuiBadge.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/overlays/badge/badge-styles.d.ts +193 -0
- package/dist/components/overlays/badge/badge-styles.js +88 -0
- package/dist/components/overlays/badge/badge-styles.js.map +1 -0
- package/dist/components/overlays/dialog/RuiDialog.js.map +1 -1
- package/dist/components/overlays/dialog/RuiDialog.vue_vue_type_script_setup_true_lang.js +3 -14
- package/dist/components/overlays/dialog/RuiDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/overlays/dialog/dialog-styles.d.ts +40 -0
- package/dist/components/overlays/dialog/dialog-styles.js +18 -0
- package/dist/components/overlays/dialog/dialog-styles.js.map +1 -0
- package/dist/components/overlays/menu/RuiMenu.js.map +1 -1
- package/dist/components/overlays/menu/RuiMenu.vue.d.ts +9 -0
- package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js +113 -58
- package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/overlays/menu/menu-styles.d.ts +58 -0
- package/dist/components/overlays/menu/menu-styles.js +25 -0
- package/dist/components/overlays/menu/menu-styles.js.map +1 -0
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.js.map +1 -1
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js +4 -69
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/overlays/navigation-drawer/navigation-drawer-styles.d.ts +76 -0
- package/dist/components/overlays/navigation-drawer/navigation-drawer-styles.js +72 -0
- package/dist/components/overlays/navigation-drawer/navigation-drawer-styles.js.map +1 -0
- package/dist/components/overlays/notification/RuiNotification.js.map +1 -1
- package/dist/components/overlays/notification/RuiNotification.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/overlays/notification/RuiNotification.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/overlays/notification/notification-styles.d.ts +1 -0
- package/dist/components/overlays/notification/notification-styles.js +7 -0
- package/dist/components/overlays/notification/notification-styles.js.map +1 -0
- package/dist/components/overlays/tooltip/RuiTooltip.js.map +1 -1
- package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +4 -2
- package/dist/components/overlays/tooltip/RuiTooltip.vue_vue_type_script_setup_true_lang.js +42 -25
- package/dist/components/overlays/tooltip/RuiTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/overlays/tooltip/tooltip-styles.d.ts +2 -0
- package/dist/components/overlays/tooltip/tooltip-styles.js +3 -1
- package/dist/components/overlays/tooltip/tooltip-styles.js.map +1 -1
- package/dist/components/progress/RuiProgress.js.map +1 -1
- package/dist/components/progress/RuiProgress.vue_vue_type_script_setup_true_lang.js +1 -133
- package/dist/components/progress/RuiProgress.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/progress/progress-styles.d.ts +181 -0
- package/dist/components/progress/progress-styles.js +139 -0
- package/dist/components/progress/progress-styles.js.map +1 -0
- package/dist/components/steppers/RuiFooterStepper.js.map +1 -1
- package/dist/components/steppers/RuiFooterStepper.vue_vue_type_script_setup_true_lang.js +3 -13
- package/dist/components/steppers/RuiFooterStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/steppers/RuiStepper.js.map +1 -1
- package/dist/components/steppers/RuiStepper.vue_vue_type_script_setup_true_lang.js +4 -94
- package/dist/components/steppers/RuiStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/steppers/RuiStepperIcon.js.map +1 -1
- package/dist/components/steppers/RuiStepperIcon.vue_vue_type_script_setup_true_lang.js +2 -34
- package/dist/components/steppers/RuiStepperIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/steppers/footer-stepper-styles.d.ts +28 -0
- package/dist/components/steppers/footer-stepper-styles.js +16 -0
- package/dist/components/steppers/footer-stepper-styles.js.map +1 -0
- package/dist/components/steppers/stepper-icon-styles.d.ts +60 -0
- package/dist/components/steppers/stepper-icon-styles.js +39 -0
- package/dist/components/steppers/stepper-icon-styles.js.map +1 -0
- package/dist/components/steppers/stepper-styles.d.ts +202 -0
- package/dist/components/steppers/stepper-styles.js +98 -0
- package/dist/components/steppers/stepper-styles.js.map +1 -0
- package/dist/components/tables/RuiTable.js.map +1 -1
- package/dist/components/tables/RuiTable.vue_vue_type_script_setup_true_lang.js +1 -32
- package/dist/components/tables/RuiTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tables/RuiTableEmptyState.js.map +1 -1
- package/dist/components/tables/RuiTableEmptyState.vue_vue_type_script_setup_true_lang.js +1 -15
- package/dist/components/tables/RuiTableEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tables/RuiTableErrorState.js.map +1 -1
- package/dist/components/tables/RuiTableErrorState.vue_vue_type_script_setup_true_lang.js +2 -5
- package/dist/components/tables/RuiTableErrorState.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tables/RuiTableHead.js.map +1 -1
- package/dist/components/tables/RuiTableHead.vue_vue_type_script_setup_true_lang.js +1 -34
- package/dist/components/tables/RuiTableHead.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tables/RuiTableLoadingState.js.map +1 -1
- package/dist/components/tables/RuiTableLoadingState.vue_vue_type_script_setup_true_lang.js +1 -8
- package/dist/components/tables/RuiTableLoadingState.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tables/RuiTablePagination.js.map +1 -1
- package/dist/components/tables/RuiTablePagination.vue_vue_type_script_setup_true_lang.js +1 -30
- package/dist/components/tables/RuiTablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tables/table-empty-state-styles.d.ts +43 -0
- package/dist/components/tables/table-empty-state-styles.js +20 -0
- package/dist/components/tables/table-empty-state-styles.js.map +1 -0
- package/dist/components/tables/table-error-state-styles.d.ts +36 -0
- package/dist/components/tables/table-error-state-styles.js +15 -0
- package/dist/components/tables/table-error-state-styles.js.map +1 -0
- package/dist/components/tables/table-head-styles.d.ts +91 -0
- package/dist/components/tables/table-head-styles.js +39 -0
- package/dist/components/tables/table-head-styles.js.map +1 -0
- package/dist/components/tables/table-loading-state-styles.d.ts +34 -0
- package/dist/components/tables/table-loading-state-styles.js +13 -0
- package/dist/components/tables/table-loading-state-styles.js.map +1 -0
- package/dist/components/tables/table-pagination-styles.d.ts +82 -0
- package/dist/components/tables/table-pagination-styles.js +35 -0
- package/dist/components/tables/table-pagination-styles.js.map +1 -0
- package/dist/components/tables/table-styles.d.ts +62 -0
- package/dist/components/tables/table-styles.js +37 -0
- package/dist/components/tables/table-styles.js.map +1 -0
- package/dist/components/tabs/tab/RuiTab.js.map +1 -1
- package/dist/components/tabs/tab/RuiTab.vue_vue_type_script_setup_true_lang.js +3 -84
- package/dist/components/tabs/tab/RuiTab.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tabs/tab/tab-styles.d.ts +153 -0
- package/dist/components/tabs/tab/tab-styles.js +89 -0
- package/dist/components/tabs/tab/tab-styles.js.map +1 -0
- package/dist/components/tabs/tabs/RuiTabs.js.map +1 -1
- package/dist/components/tabs/tabs/RuiTabs.vue_vue_type_script_setup_true_lang.js +2 -137
- package/dist/components/tabs/tabs/RuiTabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tabs/tabs/tabs-styles.d.ts +168 -0
- package/dist/components/tabs/tabs/tabs-styles.js +142 -0
- package/dist/components/tabs/tabs/tabs-styles.js.map +1 -0
- package/dist/composables/floating.d.ts +3 -1
- package/dist/composables/floating.js +8 -9
- package/dist/composables/floating.js.map +1 -1
- package/dist/icons/icons_1.d.ts +1 -1
- package/dist/icons/icons_1.js +10 -9
- package/dist/icons/icons_1.js.map +1 -1
- package/dist/icons/icons_2.d.ts +1 -1
- package/dist/icons/icons_2.js +9 -11
- package/dist/icons/icons_2.js.map +1 -1
- package/dist/icons/icons_3.d.ts +1 -1
- package/dist/icons/icons_3.js +11 -5
- package/dist/icons/icons_3.js.map +1 -1
- package/dist/icons/icons_4.d.ts +1 -1
- package/dist/icons/icons_4.js +5 -10
- package/dist/icons/icons_4.js.map +1 -1
- package/dist/icons/icons_5.d.ts +1 -0
- package/dist/icons/icons_5.js +10 -1
- package/dist/icons/icons_5.js.map +1 -1
- package/dist/icons/index.d.ts +1 -1
- package/dist/icons/index.js +7 -6
- package/dist/icons/index.js.map +1 -1
- package/dist/index.js +6 -6
- package/dist/utils/form-text-detail.d.ts +2 -0
- package/dist/utils/form-text-detail.js +5 -1
- package/dist/utils/form-text-detail.js.map +1 -1
- package/dist/web-types.json +11 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiAccordion.js","names":["_sfc_main"],"sources":["../../../../src/components/accordions/accordion/RuiAccordion.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { VueClassValue } from '@/types/class-value';\nimport Icon from '@/components/icons/RuiIcon.vue';\nimport { useClipWhileResizing } from '@/composables/clip-while-resizing';\nimport { cn
|
|
1
|
+
{"version":3,"file":"RuiAccordion.js","names":["_sfc_main"],"sources":["../../../../src/components/accordions/accordion/RuiAccordion.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { VueClassValue } from '@/types/class-value';\nimport Icon from '@/components/icons/RuiIcon.vue';\nimport { useClipWhileResizing } from '@/composables/clip-while-resizing';\nimport { cn } from '@/utils/tv';\nimport { accordionStyles } from './accordion-styles';\n\nexport interface RuiAccordionClassNames {\n root?: VueClassValue;\n header?: VueClassValue;\n content?: VueClassValue;\n}\n\nexport interface AccordionProps {\n open?: boolean;\n eager?: boolean;\n headerGrow?: boolean;\n classNames?: RuiAccordionClassNames;\n}\n\ndefineOptions({\n name: 'RuiAccordion',\n inheritAttrs: false,\n});\n\nconst {\n open = false,\n eager = false,\n headerGrow = false,\n classNames,\n} = defineProps<AccordionProps>();\n\nconst emit = defineEmits<{\n click: [];\n}>();\n\ndefineSlots<{\n header?: (props: { open: boolean }) => any;\n default?: () => any;\n}>();\n\nconst inner = useTemplateRef<HTMLDivElement>('inner');\nconst content = useTemplateRef<HTMLDivElement>('content');\n\nconst triggerId = useId();\nconst contentId = useId();\nconst { height: innerHeight } = useElementSize(inner);\n\nconst contentHeight = computed<string>(() => (open ? `${get(innerHeight)}px` : '0px'));\n\nconst resizing = useClipWhileResizing(content, contentHeight);\n\n// a closed `eager` panel keeps its content at height 0, so it clips; an open one only while it resizes, so sticky content works\nconst clipped = computed<boolean>(() => !open || get(resizing));\n\nfunction toggle(): void {\n emit('click');\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n toggle();\n }\n}\n</script>\n\n<template>\n <div\n :class=\"accordionStyles({ class: cn(classNames?.root ?? $attrs.class) })\"\n :data-state=\"open ? 'open' : 'closed'\"\n data-accordion\n v-bind=\"{ ...$attrs, class: undefined }\"\n >\n <!-- rounded only while focused: a permanent radius bent any border an app draws on the header -->\n <div\n v-if=\"$slots.header\"\n :id=\"triggerId\"\n class=\"group flex gap-2 items-center cursor-pointer outline-hidden focus-visible:focus-ring focus-visible:rounded-rui-control\"\n :class=\"[classNames?.header, { 'w-full': headerGrow }]\"\n role=\"button\"\n tabindex=\"0\"\n :aria-expanded=\"open\"\n :aria-controls=\"contentId\"\n data-accordion-trigger\n @click=\"toggle()\"\n @keydown=\"onKeydown($event)\"\n >\n <div :class=\"{ grow: headerGrow }\">\n <slot\n name=\"header\"\n :open=\"open\"\n />\n </div>\n <Icon\n class=\"shrink-0 text-rui-text-secondary transition-[rotate,color] duration-200 ease-out group-hover:text-rui-text motion-reduce:transition-none\"\n :class=\"{ '-rotate-180': open }\"\n name=\"lu-chevron-down\"\n :size=\"16\"\n />\n </div>\n <div\n v-if=\"open || eager\"\n :id=\"contentId\"\n ref=\"content\"\n class=\"grow transition-[height] duration-200 ease-out w-full motion-reduce:transition-none\"\n :class=\"[{ 'overflow-hidden': clipped }, classNames?.content]\"\n :data-clipped=\"clipped || undefined\"\n :style=\"{ height: contentHeight }\"\n role=\"region\"\n :aria-labelledby=\"triggerId\"\n data-accordion-content\n >\n <div ref=\"inner\">\n <slot name=\"default\" />\n </div>\n </div>\n </div>\n</template>\n"],"mappings":""}
|
package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { get } from "../../../vendor/@vueuse/shared/dist/index.js";
|
|
2
2
|
import { useElementSize } from "../../../vendor/@vueuse/core/dist/index.js";
|
|
3
|
-
import { cn
|
|
3
|
+
import { cn } from "../../../utils/tv.js";
|
|
4
4
|
import RuiIcon_default from "../../icons/RuiIcon.js";
|
|
5
5
|
import { useClipWhileResizing } from "../../../composables/clip-while-resizing.js";
|
|
6
|
+
import { accordionStyles } from "./accordion-styles.js";
|
|
6
7
|
import { computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeProps, normalizeClass, normalizeStyle, openBlock, renderSlot, unref, useId, useTemplateRef } from "vue";
|
|
7
8
|
//#region src/components/accordions/accordion/RuiAccordion.vue?vue&type=script&setup=true&lang.ts
|
|
8
9
|
var _hoisted_1 = ["data-state"];
|
|
@@ -55,10 +56,9 @@ var RuiAccordion_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
|
|
|
55
56
|
toggle();
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
|
-
const rootStyle = tv({ base: "flex flex-col items-start" });
|
|
59
59
|
return (_ctx, _cache) => {
|
|
60
60
|
return openBlock(), createElementBlock("div", mergeProps({
|
|
61
|
-
class: unref(
|
|
61
|
+
class: unref(accordionStyles)({ class: unref(cn)(__props.classNames?.root ?? _ctx.$attrs.class) }),
|
|
62
62
|
"data-state": __props.open ? "open" : "closed",
|
|
63
63
|
"data-accordion": ""
|
|
64
64
|
}, {
|
package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiAccordion.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots","_openBlock","_createElementBlock","_mergeProps","_unref","_normalizeClass","_createElementVNode","_renderSlot","_createVNode","Icon","_createCommentVNode","_normalizeStyle"],"sources":["../../../../src/components/accordions/accordion/RuiAccordion.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { VueClassValue } from '@/types/class-value';\nimport Icon from '@/components/icons/RuiIcon.vue';\nimport { useClipWhileResizing } from '@/composables/clip-while-resizing';\nimport { cn
|
|
1
|
+
{"version":3,"file":"RuiAccordion.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots","_openBlock","_createElementBlock","_mergeProps","_unref","_normalizeClass","_createElementVNode","_renderSlot","_createVNode","Icon","_createCommentVNode","_normalizeStyle"],"sources":["../../../../src/components/accordions/accordion/RuiAccordion.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { VueClassValue } from '@/types/class-value';\nimport Icon from '@/components/icons/RuiIcon.vue';\nimport { useClipWhileResizing } from '@/composables/clip-while-resizing';\nimport { cn } from '@/utils/tv';\nimport { accordionStyles } from './accordion-styles';\n\nexport interface RuiAccordionClassNames {\n root?: VueClassValue;\n header?: VueClassValue;\n content?: VueClassValue;\n}\n\nexport interface AccordionProps {\n open?: boolean;\n eager?: boolean;\n headerGrow?: boolean;\n classNames?: RuiAccordionClassNames;\n}\n\ndefineOptions({\n name: 'RuiAccordion',\n inheritAttrs: false,\n});\n\nconst {\n open = false,\n eager = false,\n headerGrow = false,\n classNames,\n} = defineProps<AccordionProps>();\n\nconst emit = defineEmits<{\n click: [];\n}>();\n\ndefineSlots<{\n header?: (props: { open: boolean }) => any;\n default?: () => any;\n}>();\n\nconst inner = useTemplateRef<HTMLDivElement>('inner');\nconst content = useTemplateRef<HTMLDivElement>('content');\n\nconst triggerId = useId();\nconst contentId = useId();\nconst { height: innerHeight } = useElementSize(inner);\n\nconst contentHeight = computed<string>(() => (open ? `${get(innerHeight)}px` : '0px'));\n\nconst resizing = useClipWhileResizing(content, contentHeight);\n\n// a closed `eager` panel keeps its content at height 0, so it clips; an open one only while it resizes, so sticky content works\nconst clipped = computed<boolean>(() => !open || get(resizing));\n\nfunction toggle(): void {\n emit('click');\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n toggle();\n }\n}\n</script>\n\n<template>\n <div\n :class=\"accordionStyles({ class: cn(classNames?.root ?? $attrs.class) })\"\n :data-state=\"open ? 'open' : 'closed'\"\n data-accordion\n v-bind=\"{ ...$attrs, class: undefined }\"\n >\n <!-- rounded only while focused: a permanent radius bent any border an app draws on the header -->\n <div\n v-if=\"$slots.header\"\n :id=\"triggerId\"\n class=\"group flex gap-2 items-center cursor-pointer outline-hidden focus-visible:focus-ring focus-visible:rounded-rui-control\"\n :class=\"[classNames?.header, { 'w-full': headerGrow }]\"\n role=\"button\"\n tabindex=\"0\"\n :aria-expanded=\"open\"\n :aria-controls=\"contentId\"\n data-accordion-trigger\n @click=\"toggle()\"\n @keydown=\"onKeydown($event)\"\n >\n <div :class=\"{ grow: headerGrow }\">\n <slot\n name=\"header\"\n :open=\"open\"\n />\n </div>\n <Icon\n class=\"shrink-0 text-rui-text-secondary transition-[rotate,color] duration-200 ease-out group-hover:text-rui-text motion-reduce:transition-none\"\n :class=\"{ '-rotate-180': open }\"\n name=\"lu-chevron-down\"\n :size=\"16\"\n />\n </div>\n <div\n v-if=\"open || eager\"\n :id=\"contentId\"\n ref=\"content\"\n class=\"grow transition-[height] duration-200 ease-out w-full motion-reduce:transition-none\"\n :class=\"[{ 'overflow-hidden': clipped }, classNames?.content]\"\n :data-clipped=\"clipped || undefined\"\n :style=\"{ height: contentHeight }\"\n role=\"region\"\n :aria-labelledby=\"triggerId\"\n data-accordion-content\n >\n <div ref=\"inner\">\n <slot name=\"default\" />\n </div>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCA,MAAM,OAAO;EASb,MAAM,QAAQ,eAA+B,OAAO;EACpD,MAAM,UAAU,eAA+B,SAAS;EAExD,MAAM,YAAY,MAAM;EACxB,MAAM,YAAY,MAAM;EACxB,MAAM,EAAE,QAAQ,gBAAgB,eAAe,KAAK;EAEpD,MAAM,gBAAgB,eAAwB,QAAA,OAAO,GAAG,IAAI,WAAW,EAAE,MAAM,KAAM;EAErF,MAAM,WAAW,qBAAqB,SAAS,aAAa;EAG5D,MAAM,UAAU,eAAwB,CAAC,QAAA,QAAQ,IAAI,QAAQ,CAAC;EAE9D,SAAS,SAAe;GACtB,KAAK,OAAO;EACd;EAEA,SAAS,UAAU,OAA4B;GAC7C,IAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,KAAK;IAC9C,MAAM,eAAe;IACrB,OAAO;GACT;EACF;;GAIE,OAAAE,UAAA,GAAAC,mBAiDM,OAjDNC,WAiDM;IAhDH,OAAOC,MAAA,eAAA,CAAe,CAAA,EAAA,OAAUA,MAAA,EAAA,CAAE,CAAC,QAAA,YAAY,QAAQL,KAAAA,OAAO,KAAK,EAAA,CAAA;IACnE,cAAY,QAAA,OAAI,SAAA;IACjB,kBAAA;GACaA,GAAAA;IAAAA,GAAAA,KAAAA;IAAM,OAAS,KAAA;GAAS,CAAA,GAAA,CAI7BC,KAAAA,OAAO,UADfC,UAAA,GAAAC,mBAyBM,OAAA;;IAvBH,IAAIE,MAAA,SAAA;IACL,OAAKC,eAAA,CAAC,0HAAwH,CACrH,QAAA,YAAY,QAAM,EAAA,UAAc,QAAA,WAAU,CAAA,CAAA,CAAA;IACnD,MAAK;IACL,UAAS;IACR,iBAAe,QAAA;IACf,iBAAeD,MAAA,SAAA;IAChB,0BAAA;IACC,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAM;IACb,WAAO,OAAA,OAAA,OAAA,MAAA,WAAE,UAAU,MAAM;GAE1BE,GAAAA,CAAAA,mBAKM,OAAA,EALA,OAAKD,eAAA,EAAA,MAAU,QAAA,WAAU,CAAA,EAAA,GAAA,CAC7BE,WAGE,KAAA,QAAA,UAAA,EADC,MAAM,QAAA,KAAI,CAAA,CAAA,GAAA,CAAA,GAGfC,YAKEC,iBAAA;IAJA,OAAKJ,eAAA,CAAC,4IAA0I,EAAA,eACvH,QAAA,KAAI,CAAA,CAAA;IAC7B,MAAK;IACJ,MAAM;GAIH,GAAA,MAAA,GAAA,CAAA,OAAA,CAAA,CAAA,GAAA,IAAA,UAAA,KAAA,mBAAA,IAAA,IAAA,GAAA,QAAA,QAAQ,QAAA,SADhBJ,UAAA,GAAAC,mBAeM,OAAA;;IAbH,IAAIE,MAAA,SAAA;IACD,SAAA;IAAJ,KAAI;IACJ,OAAKC,eAAA,CAAC,uFAAqF,CAAA,EAAA,mBAC7DD,MAAA,OAAA,EAAO,GAAI,QAAA,YAAY,OAAO,CAAA,CAAA;IAC3D,gBAAcA,MAAA,OAAA,KAAW,KAAA;IACzB,OAAKO,eAAA,EAAA,QAAYP,MAAA,aAAA,EAAa,CAAA;IAC/B,MAAK;IACJ,mBAAiBA,MAAA,SAAA;IAClB,0BAAA;GAEAE,GAAAA,CAAAA,mBAEM,OAAA;IAFG,SAAA;IAAJ,KAAI;GACPC,GAAAA,CAAAA,WAAuB,KAAA,QAAA,SAAA,CAAA,GAAA,GAAA,CAAA,GAAA,IAAA,UAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,IAAA,UAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const accordionStyles: import("tailwind-variants").TVReturnType<{} | {} | {}, undefined, "flex flex-col items-start", {} | {}, undefined, import("tailwind-variants").TVReturnTypeLike<unknown, undefined>>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { tv } from "../../../utils/tv.js";
|
|
2
|
+
//#region src/components/accordions/accordion/accordion-styles.ts
|
|
3
|
+
var accordionStyles = tv({ base: "flex flex-col items-start" });
|
|
4
|
+
//#endregion
|
|
5
|
+
export { accordionStyles };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=accordion-styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion-styles.js","names":[],"sources":["../../../../src/components/accordions/accordion/accordion-styles.ts"],"sourcesContent":["import { tv } from '@/utils/tv';\n\nexport const accordionStyles = tv({ base: 'flex flex-col items-start' });\n"],"mappings":";;AAEA,IAAa,kBAAkB,GAAG,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiAlert.js","names":["_sfc_main"],"sources":["../../../src/components/alerts/RuiAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport {
|
|
1
|
+
{"version":3,"file":"RuiAlert.js","names":["_sfc_main"],"sources":["../../../src/components/alerts/RuiAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { alertStyles } from './alert-styles';\n\nexport interface Props {\n title?: string;\n description?: string;\n type?: ContextColorsType;\n icon?: RuiIcons;\n variant?: 'default' | 'filled' | 'outlined';\n actionText?: string;\n closeable?: boolean;\n}\n\ndefineOptions({\n name: 'RuiAlert',\n inheritAttrs: false,\n});\n\nconst {\n title = '',\n description = '',\n type = 'primary',\n icon = undefined,\n variant = 'default',\n actionText = '',\n closeable = false,\n} = defineProps<Props>();\n\nconst emit = defineEmits<{\n action: [];\n close: [];\n}>();\n\nconst slots = defineSlots<{\n title?: () => any;\n default?: () => any;\n}>();\n\nconst ui = computed<ReturnType<typeof alertStyles>>(() => alertStyles({ variant, type, titled: !!slots.title || !!title }));\n\nconst usedIcon = computed<RuiIcons | undefined>(() => {\n if (icon)\n return icon;\n\n const iconMap: Record<ContextColorsType, RuiIcons | undefined> = {\n primary: undefined,\n secondary: undefined,\n warning: 'lu-triangle-alert',\n info: 'lu-info',\n error: 'lu-circle-alert',\n success: 'lu-circle-check',\n };\n\n return iconMap[type];\n});\n</script>\n\n<template>\n <div\n :class=\"ui.root()\"\n v-bind=\"$attrs\"\n :data-variant=\"variant\"\n :data-type=\"type\"\n >\n <div :class=\"ui.content()\">\n <div\n v-if=\"usedIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon\n :name=\"usedIcon\"\n size=\"20\"\n />\n </div>\n <div :class=\"ui.texts()\">\n <div\n v-if=\"$slots.title || title\"\n :class=\"{\n 'font-medium': !!title,\n }\"\n >\n <slot name=\"title\">\n {{ title }}\n </slot>\n </div>\n\n <div\n v-if=\"$slots.default || description\"\n class=\"text-body-2\"\n >\n <slot>\n {{ description }}\n </slot>\n </div>\n </div>\n </div>\n <div v-if=\"actionText\">\n <RuiButton\n variant=\"text\"\n size=\"sm\"\n :color=\"variant === 'filled' ? undefined : type\"\n :class=\"ui.action()\"\n data-id=\"alert-action\"\n @click=\"emit('action')\"\n >\n {{ actionText }}\n </RuiButton>\n </div>\n <div v-if=\"closeable\">\n <RuiButton\n :color=\"variant === 'filled' ? undefined : type\"\n size=\"sm\"\n icon\n variant=\"text\"\n :class=\"ui.close()\"\n data-id=\"alert-close\"\n @click=\"emit('close')\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"20\"\n />\n </RuiButton>\n </div>\n </div>\n</template>\n"],"mappings":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { tv } from "../../utils/tv.js";
|
|
2
1
|
import RuiIcon_default from "../icons/RuiIcon.js";
|
|
3
2
|
import RuiButton_default from "../buttons/button/RuiButton.js";
|
|
3
|
+
import { alertStyles } from "./alert-styles.js";
|
|
4
4
|
import { computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, renderSlot, toDisplayString, unref, useSlots, withCtx } from "vue";
|
|
5
5
|
//#region src/components/alerts/RuiAlert.vue?vue&type=script&setup=true&lang.ts
|
|
6
6
|
var _hoisted_1 = ["data-variant", "data-type"];
|
|
@@ -30,70 +30,6 @@ var RuiAlert_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
30
30
|
setup(__props, { emit: __emit }) {
|
|
31
31
|
const emit = __emit;
|
|
32
32
|
const slots = useSlots();
|
|
33
|
-
const alertStyles = tv({
|
|
34
|
-
slots: {
|
|
35
|
-
root: "px-4 py-2.5 rounded-rui-panel flex between:ml-4 between:mr-0",
|
|
36
|
-
content: "flex between:ml-3 between:mr-0 py-1 grow",
|
|
37
|
-
icon: "flex shrink-0 items-center",
|
|
38
|
-
texts: "between:mt-1 between:mb-0 grow",
|
|
39
|
-
action: "",
|
|
40
|
-
close: ""
|
|
41
|
-
},
|
|
42
|
-
variants: {
|
|
43
|
-
titled: {
|
|
44
|
-
true: { icon: "h-6" },
|
|
45
|
-
false: { icon: "h-5" }
|
|
46
|
-
},
|
|
47
|
-
variant: {
|
|
48
|
-
default: {},
|
|
49
|
-
filled: {
|
|
50
|
-
icon: "text-rui-dark-text!",
|
|
51
|
-
texts: "text-rui-dark-text!",
|
|
52
|
-
action: "text-rui-dark-text!",
|
|
53
|
-
close: "text-rui-dark-text!"
|
|
54
|
-
},
|
|
55
|
-
outlined: { root: "border -m-px bg-transparent" }
|
|
56
|
-
},
|
|
57
|
-
type: {
|
|
58
|
-
primary: { root: "[--rui-alert:var(--rui-primary-main)]" },
|
|
59
|
-
secondary: { root: "[--rui-alert:var(--rui-secondary-main)]" },
|
|
60
|
-
error: { root: "[--rui-alert:var(--rui-error-main)] [--rui-alert-fill:var(--rui-error-darker)]" },
|
|
61
|
-
warning: { root: "[--rui-alert:var(--rui-warning-main)] [--rui-alert-fill:var(--rui-warning-darker)]" },
|
|
62
|
-
info: { root: "[--rui-alert:var(--rui-info-main)] [--rui-alert-fill:var(--rui-info-darker)]" },
|
|
63
|
-
success: { root: "[--rui-alert:var(--rui-success-main)] [--rui-alert-fill:var(--rui-success-darker)]" }
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
compoundVariants: [
|
|
67
|
-
{
|
|
68
|
-
variant: "default",
|
|
69
|
-
class: { root: "border -m-px bg-[color-mix(in_srgb,rgb(var(--rui-alert))_8%,transparent)] dark:bg-[color-mix(in_srgb,rgb(var(--rui-alert))_12%,transparent)] border-[color-mix(in_srgb,rgb(var(--rui-alert))_25%,transparent)]" }
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
variant: "filled",
|
|
73
|
-
class: { root: "bg-[rgb(var(--rui-alert))] dark:bg-[rgb(var(--rui-alert-fill,var(--rui-alert)))]" }
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
variant: "outlined",
|
|
77
|
-
class: {
|
|
78
|
-
root: "border-[rgb(var(--rui-alert))]",
|
|
79
|
-
icon: "text-[rgb(var(--rui-alert))]"
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
],
|
|
83
|
-
compoundSlots: [{
|
|
84
|
-
slots: [
|
|
85
|
-
"texts",
|
|
86
|
-
"action",
|
|
87
|
-
"close"
|
|
88
|
-
],
|
|
89
|
-
variant: ["default", "outlined"],
|
|
90
|
-
class: "text-[color-mix(in_srgb,black_60%,rgb(var(--rui-alert)))] dark:text-[color-mix(in_srgb,white_60%,rgb(var(--rui-alert)))]"
|
|
91
|
-
}, {
|
|
92
|
-
slots: ["icon"],
|
|
93
|
-
variant: "default",
|
|
94
|
-
class: "text-[color-mix(in_srgb,black_60%,rgb(var(--rui-alert)))] dark:text-[color-mix(in_srgb,white_60%,rgb(var(--rui-alert)))]"
|
|
95
|
-
}]
|
|
96
|
-
});
|
|
97
33
|
const ui = computed(() => alertStyles({
|
|
98
34
|
variant: __props.variant,
|
|
99
35
|
type: __props.type,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiAlert.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots","_useSlots","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","_normalizeClass","_createVNode","RuiIcon","_createCommentVNode","_renderSlot","_createTextVNode","_toDisplayString","RuiButton","_withCtx"],"sources":["../../../src/components/alerts/RuiAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport {
|
|
1
|
+
{"version":3,"file":"RuiAlert.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots","_useSlots","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","_normalizeClass","_createVNode","RuiIcon","_createCommentVNode","_renderSlot","_createTextVNode","_toDisplayString","RuiButton","_withCtx"],"sources":["../../../src/components/alerts/RuiAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { alertStyles } from './alert-styles';\n\nexport interface Props {\n title?: string;\n description?: string;\n type?: ContextColorsType;\n icon?: RuiIcons;\n variant?: 'default' | 'filled' | 'outlined';\n actionText?: string;\n closeable?: boolean;\n}\n\ndefineOptions({\n name: 'RuiAlert',\n inheritAttrs: false,\n});\n\nconst {\n title = '',\n description = '',\n type = 'primary',\n icon = undefined,\n variant = 'default',\n actionText = '',\n closeable = false,\n} = defineProps<Props>();\n\nconst emit = defineEmits<{\n action: [];\n close: [];\n}>();\n\nconst slots = defineSlots<{\n title?: () => any;\n default?: () => any;\n}>();\n\nconst ui = computed<ReturnType<typeof alertStyles>>(() => alertStyles({ variant, type, titled: !!slots.title || !!title }));\n\nconst usedIcon = computed<RuiIcons | undefined>(() => {\n if (icon)\n return icon;\n\n const iconMap: Record<ContextColorsType, RuiIcons | undefined> = {\n primary: undefined,\n secondary: undefined,\n warning: 'lu-triangle-alert',\n info: 'lu-info',\n error: 'lu-circle-alert',\n success: 'lu-circle-check',\n };\n\n return iconMap[type];\n});\n</script>\n\n<template>\n <div\n :class=\"ui.root()\"\n v-bind=\"$attrs\"\n :data-variant=\"variant\"\n :data-type=\"type\"\n >\n <div :class=\"ui.content()\">\n <div\n v-if=\"usedIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon\n :name=\"usedIcon\"\n size=\"20\"\n />\n </div>\n <div :class=\"ui.texts()\">\n <div\n v-if=\"$slots.title || title\"\n :class=\"{\n 'font-medium': !!title,\n }\"\n >\n <slot name=\"title\">\n {{ title }}\n </slot>\n </div>\n\n <div\n v-if=\"$slots.default || description\"\n class=\"text-body-2\"\n >\n <slot>\n {{ description }}\n </slot>\n </div>\n </div>\n </div>\n <div v-if=\"actionText\">\n <RuiButton\n variant=\"text\"\n size=\"sm\"\n :color=\"variant === 'filled' ? undefined : type\"\n :class=\"ui.action()\"\n data-id=\"alert-action\"\n @click=\"emit('action')\"\n >\n {{ actionText }}\n </RuiButton>\n </div>\n <div v-if=\"closeable\">\n <RuiButton\n :color=\"variant === 'filled' ? undefined : type\"\n size=\"sm\"\n icon\n variant=\"text\"\n :class=\"ui.close()\"\n data-id=\"alert-close\"\n @click=\"emit('close')\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"20\"\n />\n </RuiButton>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCA,MAAM,OAAO;EAKb,MAAM,QAAQE,SAAA;EAKd,MAAM,KAAK,eAA+C,YAAY;GAAE,SAAM,QAAA;GAAG,MAAG,QAAA;GAAG,QAAQ,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,QAAA;EAAM,CAAC,CAAC;EAE1H,MAAM,WAAW,eAAqC;GACpD,IAAI,QAAA,MACF,OAAO,QAAA;GAWT,OAAO;IARL,SAAS,KAAA;IACT,WAAW,KAAA;IACX,SAAS;IACT,MAAM;IACN,OAAO;IACP,SAAS;GAGJ,EAAQ,QAAA;EACjB,CAAC;;GAIC,OAAAC,UAAA,GAAAC,mBAkEM,OAlENC,WAkEM,EAjEH,OAAOC,MAAA,EAAA,CAAE,CAAC,KAAI,EACPN,GAAAA,KAAAA,QAAM;IACb,gBAAc,QAAA;IACd,aAAW,QAAA;;IAEZO,mBA+BM,OAAA,EA/BA,OAAKC,eAAEF,MAAA,EAAA,CAAE,CAAC,QAAO,CAAA,EAAA,GAAA,CAEbA,MAAA,QAAA,KADRH,UAAA,GAAAC,mBAQM,OAAA;;KANH,OAAKI,eAAEF,MAAA,EAAA,CAAE,CAAC,KAAI,CAAA;IAEfG,GAAAA,CAAAA,YAGEC,iBAAA;KAFC,MAAMJ,MAAA,QAAA;KACP,MAAK;IAGTC,GAAAA,MAAAA,GAAAA,CAAAA,MAAAA,CAAAA,CAAAA,GAAAA,CAAAA,KAAAA,mBAAAA,IAAAA,IAAAA,GAAAA,mBAoBM,OAAA,EApBA,OAAKC,eAAEF,MAAA,EAAA,CAAE,CAAC,MAAK,CAAA,EAAA,GAAA,CAEXL,KAAAA,OAAO,SAAS,QAAA,SADxBE,UAAA,GAAAC,mBASM,OAAA;;KAPH,OAAKI,eAAA,EAAiC,eAAA,CAAA,CAAA,QAAA,MAAA,CAAA;IAIvCI,GAAAA,CAAAA,WAEO,KAAA,QAAA,SAAA,CAAA,SAAA,CADFC,gBAAAC,gBAAA,QAAA,KAAK,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,GAKJb,KAAAA,OAAO,WAAW,QAAA,eAD1BE,UAAA,GAAAC,mBAOM,OAPN,YAOM,CAHJQ,WAEO,KAAA,QAAA,WAAA,CAAA,SAAA,CADFC,gBAAAC,gBAAA,QAAA,WAAW,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA;IAKX,QAAA,cAAXX,UAAA,GAAAC,mBAWM,OAAA,YAAA,CAVJK,YASYM,mBAAA;KARV,SAAQ;KACR,MAAK;KACJ,OAAO,QAAA,YAAO,WAAgB,KAAA,IAAY,QAAA;KAC1C,OAAKP,eAAEF,MAAA,EAAA,CAAE,CAAC,OAAM,CAAA;KACjB,WAAQ;KACP,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,QAAA;;KAEZ,SAAAU,cAAgB,CAAbH,gBAAAC,gBAAA,QAAA,UAAU,GAAA,CAAA,CAAA,CAAA;;;IAGN,QAAA,aAAXX,UAAA,GAAAC,mBAeM,OAAA,YAAA,CAdJK,YAaYM,mBAAA;KAZT,OAAO,QAAA,YAAO,WAAgB,KAAA,IAAY,QAAA;KAC3C,MAAK;KACL,MAAA;KACA,SAAQ;KACP,OAAKP,eAAEF,MAAA,EAAA,CAAE,CAAC,MAAK,CAAA;KAChB,WAAQ;KACP,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,OAAA;;KAEZ,SAAAU,cAGE,CAHFP,YAGEC,iBAAA;MAFA,MAAK;MACL,MAAK"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
export declare const alertStyles: import("tailwind-variants").TVReturnType<{
|
|
2
|
+
titled: {
|
|
3
|
+
true: {
|
|
4
|
+
icon: string;
|
|
5
|
+
};
|
|
6
|
+
false: {
|
|
7
|
+
icon: string;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
variant: {
|
|
11
|
+
default: {};
|
|
12
|
+
filled: {
|
|
13
|
+
icon: string;
|
|
14
|
+
texts: string;
|
|
15
|
+
action: string;
|
|
16
|
+
close: string;
|
|
17
|
+
};
|
|
18
|
+
outlined: {
|
|
19
|
+
root: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
type: {
|
|
23
|
+
primary: {
|
|
24
|
+
root: string;
|
|
25
|
+
};
|
|
26
|
+
secondary: {
|
|
27
|
+
root: string;
|
|
28
|
+
};
|
|
29
|
+
error: {
|
|
30
|
+
root: string;
|
|
31
|
+
};
|
|
32
|
+
warning: {
|
|
33
|
+
root: string;
|
|
34
|
+
};
|
|
35
|
+
info: {
|
|
36
|
+
root: string;
|
|
37
|
+
};
|
|
38
|
+
success: {
|
|
39
|
+
root: string;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
}, {
|
|
43
|
+
root: string;
|
|
44
|
+
content: string;
|
|
45
|
+
icon: string;
|
|
46
|
+
texts: string;
|
|
47
|
+
action: string;
|
|
48
|
+
close: string;
|
|
49
|
+
}, undefined, {
|
|
50
|
+
titled: {
|
|
51
|
+
true: {
|
|
52
|
+
icon: string;
|
|
53
|
+
};
|
|
54
|
+
false: {
|
|
55
|
+
icon: string;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
variant: {
|
|
59
|
+
default: {};
|
|
60
|
+
filled: {
|
|
61
|
+
icon: string;
|
|
62
|
+
texts: string;
|
|
63
|
+
action: string;
|
|
64
|
+
close: string;
|
|
65
|
+
};
|
|
66
|
+
outlined: {
|
|
67
|
+
root: string;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
type: {
|
|
71
|
+
primary: {
|
|
72
|
+
root: string;
|
|
73
|
+
};
|
|
74
|
+
secondary: {
|
|
75
|
+
root: string;
|
|
76
|
+
};
|
|
77
|
+
error: {
|
|
78
|
+
root: string;
|
|
79
|
+
};
|
|
80
|
+
warning: {
|
|
81
|
+
root: string;
|
|
82
|
+
};
|
|
83
|
+
info: {
|
|
84
|
+
root: string;
|
|
85
|
+
};
|
|
86
|
+
success: {
|
|
87
|
+
root: string;
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
}, {
|
|
91
|
+
root: string;
|
|
92
|
+
content: string;
|
|
93
|
+
icon: string;
|
|
94
|
+
texts: string;
|
|
95
|
+
action: string;
|
|
96
|
+
close: string;
|
|
97
|
+
}, import("tailwind-variants").TVReturnTypeLike<{
|
|
98
|
+
titled: {
|
|
99
|
+
true: {
|
|
100
|
+
icon: string;
|
|
101
|
+
};
|
|
102
|
+
false: {
|
|
103
|
+
icon: string;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
variant: {
|
|
107
|
+
default: {};
|
|
108
|
+
filled: {
|
|
109
|
+
icon: string;
|
|
110
|
+
texts: string;
|
|
111
|
+
action: string;
|
|
112
|
+
close: string;
|
|
113
|
+
};
|
|
114
|
+
outlined: {
|
|
115
|
+
root: string;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
type: {
|
|
119
|
+
primary: {
|
|
120
|
+
root: string;
|
|
121
|
+
};
|
|
122
|
+
secondary: {
|
|
123
|
+
root: string;
|
|
124
|
+
};
|
|
125
|
+
error: {
|
|
126
|
+
root: string;
|
|
127
|
+
};
|
|
128
|
+
warning: {
|
|
129
|
+
root: string;
|
|
130
|
+
};
|
|
131
|
+
info: {
|
|
132
|
+
root: string;
|
|
133
|
+
};
|
|
134
|
+
success: {
|
|
135
|
+
root: string;
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
}, {
|
|
139
|
+
root: string;
|
|
140
|
+
content: string;
|
|
141
|
+
icon: string;
|
|
142
|
+
texts: string;
|
|
143
|
+
action: string;
|
|
144
|
+
close: string;
|
|
145
|
+
}>>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { tv } from "../../utils/tv.js";
|
|
2
|
+
//#region src/components/alerts/alert-styles.ts
|
|
3
|
+
var alertStyles = tv({
|
|
4
|
+
slots: {
|
|
5
|
+
root: "px-4 py-2.5 rounded-rui-panel flex between:ml-4 between:mr-0",
|
|
6
|
+
content: "flex between:ml-3 between:mr-0 py-1 grow",
|
|
7
|
+
icon: "flex shrink-0 items-center",
|
|
8
|
+
texts: "between:mt-1 between:mb-0 grow",
|
|
9
|
+
action: "",
|
|
10
|
+
close: ""
|
|
11
|
+
},
|
|
12
|
+
variants: {
|
|
13
|
+
titled: {
|
|
14
|
+
true: { icon: "h-6" },
|
|
15
|
+
false: { icon: "h-5" }
|
|
16
|
+
},
|
|
17
|
+
variant: {
|
|
18
|
+
default: {},
|
|
19
|
+
filled: {
|
|
20
|
+
icon: "text-rui-dark-text!",
|
|
21
|
+
texts: "text-rui-dark-text!",
|
|
22
|
+
action: "text-rui-dark-text!",
|
|
23
|
+
close: "text-rui-dark-text!"
|
|
24
|
+
},
|
|
25
|
+
outlined: { root: "border -m-px bg-transparent" }
|
|
26
|
+
},
|
|
27
|
+
type: {
|
|
28
|
+
primary: { root: "[--rui-alert:var(--rui-primary-main)]" },
|
|
29
|
+
secondary: { root: "[--rui-alert:var(--rui-secondary-main)]" },
|
|
30
|
+
error: { root: "[--rui-alert:var(--rui-error-main)] [--rui-alert-fill:var(--rui-error-darker)]" },
|
|
31
|
+
warning: { root: "[--rui-alert:var(--rui-warning-main)] [--rui-alert-fill:var(--rui-warning-darker)]" },
|
|
32
|
+
info: { root: "[--rui-alert:var(--rui-info-main)] [--rui-alert-fill:var(--rui-info-darker)]" },
|
|
33
|
+
success: { root: "[--rui-alert:var(--rui-success-main)] [--rui-alert-fill:var(--rui-success-darker)]" }
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
compoundVariants: [
|
|
37
|
+
{
|
|
38
|
+
variant: "default",
|
|
39
|
+
class: { root: "border -m-px bg-[color-mix(in_srgb,rgb(var(--rui-alert))_8%,transparent)] dark:bg-[color-mix(in_srgb,rgb(var(--rui-alert))_12%,transparent)] border-[color-mix(in_srgb,rgb(var(--rui-alert))_25%,transparent)]" }
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
variant: "filled",
|
|
43
|
+
class: { root: "bg-[rgb(var(--rui-alert))] dark:bg-[rgb(var(--rui-alert-fill,var(--rui-alert)))]" }
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
variant: "outlined",
|
|
47
|
+
class: {
|
|
48
|
+
root: "border-[rgb(var(--rui-alert))]",
|
|
49
|
+
icon: "text-[rgb(var(--rui-alert))]"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
compoundSlots: [{
|
|
54
|
+
slots: [
|
|
55
|
+
"texts",
|
|
56
|
+
"action",
|
|
57
|
+
"close"
|
|
58
|
+
],
|
|
59
|
+
variant: ["default", "outlined"],
|
|
60
|
+
class: "text-[color-mix(in_srgb,black_60%,rgb(var(--rui-alert)))] dark:text-[color-mix(in_srgb,white_60%,rgb(var(--rui-alert)))]"
|
|
61
|
+
}, {
|
|
62
|
+
slots: ["icon"],
|
|
63
|
+
variant: "default",
|
|
64
|
+
class: "text-[color-mix(in_srgb,black_60%,rgb(var(--rui-alert)))] dark:text-[color-mix(in_srgb,white_60%,rgb(var(--rui-alert)))]"
|
|
65
|
+
}]
|
|
66
|
+
});
|
|
67
|
+
//#endregion
|
|
68
|
+
export { alertStyles };
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=alert-styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-styles.js","names":[],"sources":["../../../src/components/alerts/alert-styles.ts"],"sourcesContent":["import { tv } from '@/utils/tv';\n\nexport const alertStyles = tv({\n slots: {\n root: 'px-4 py-2.5 rounded-rui-panel flex between:ml-4 between:mr-0',\n content: 'flex between:ml-3 between:mr-0 py-1 grow',\n // as tall as the first line of text and centered in it, so the icon lines up however the text wraps\n icon: 'flex shrink-0 items-center',\n texts: 'between:mt-1 between:mb-0 grow',\n action: '',\n close: '',\n },\n variants: {\n // the first line is the title's (24px) when there is one, else the description's (text-sm, 20px)\n titled: {\n true: { icon: 'h-6' },\n false: { icon: 'h-5' },\n },\n variant: {\n default: {},\n filled: {\n icon: 'text-rui-dark-text!',\n texts: 'text-rui-dark-text!',\n action: 'text-rui-dark-text!',\n close: 'text-rui-dark-text!',\n },\n outlined: { root: 'border -m-px bg-transparent' },\n },\n /*\n * Each type names its color once, as `--rui-alert`, and the variants mix from it. Tints and\n * shades used to be paused CSS animations behind an `@supports (color-mix())` check that never\n * matched (not a valid condition); mixing directly gives the same colors without them.\n */\n type: {\n primary: { root: '[--rui-alert:var(--rui-primary-main)]' },\n secondary: { root: '[--rui-alert:var(--rui-secondary-main)]' },\n // a status color's dark `main` is a text tone, so a filled alert takes the deep `darker` there\n error: { root: '[--rui-alert:var(--rui-error-main)] [--rui-alert-fill:var(--rui-error-darker)]' },\n warning: { root: '[--rui-alert:var(--rui-warning-main)] [--rui-alert-fill:var(--rui-warning-darker)]' },\n info: { root: '[--rui-alert:var(--rui-info-main)] [--rui-alert-fill:var(--rui-info-darker)]' },\n success: { root: '[--rui-alert:var(--rui-success-main)] [--rui-alert-fill:var(--rui-success-darker)]' },\n },\n },\n compoundVariants: [\n // A tint of the type's color with a hairline of it, which reads on any surface in either theme\n {\n variant: 'default',\n class: { root: 'border -m-px bg-[color-mix(in_srgb,rgb(var(--rui-alert))_8%,transparent)] dark:bg-[color-mix(in_srgb,rgb(var(--rui-alert))_12%,transparent)] border-[color-mix(in_srgb,rgb(var(--rui-alert))_25%,transparent)]' },\n },\n { variant: 'filled', class: { root: 'bg-[rgb(var(--rui-alert))] dark:bg-[rgb(var(--rui-alert-fill,var(--rui-alert)))]' } },\n // without a tint behind it, the outlined alert carries its type in the icon too\n { variant: 'outlined', class: { root: 'border-[rgb(var(--rui-alert))]', icon: 'text-[rgb(var(--rui-alert))]' } },\n ],\n compoundSlots: [\n {\n slots: ['texts', 'action', 'close'],\n variant: ['default', 'outlined'],\n class: 'text-[color-mix(in_srgb,black_60%,rgb(var(--rui-alert)))] dark:text-[color-mix(in_srgb,white_60%,rgb(var(--rui-alert)))]',\n },\n {\n slots: ['icon'],\n variant: 'default',\n class: 'text-[color-mix(in_srgb,black_60%,rgb(var(--rui-alert)))] dark:text-[color-mix(in_srgb,white_60%,rgb(var(--rui-alert)))]',\n },\n ],\n});\n"],"mappings":";;AAEA,IAAa,cAAc,GAAG;CAC5B,OAAO;EACL,MAAM;EACN,SAAS;EAET,MAAM;EACN,OAAO;EACP,QAAQ;EACR,OAAO;CACT;CACA,UAAU;EAER,QAAQ;GACN,MAAM,EAAE,MAAM,MAAM;GACpB,OAAO,EAAE,MAAM,MAAM;EACvB;EACA,SAAS;GACP,SAAS,CAAC;GACV,QAAQ;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;GACT;GACA,UAAU,EAAE,MAAM,8BAA8B;EAClD;EAMA,MAAM;GACJ,SAAS,EAAE,MAAM,wCAAwC;GACzD,WAAW,EAAE,MAAM,0CAA0C;GAE7D,OAAO,EAAE,MAAM,iFAAiF;GAChG,SAAS,EAAE,MAAM,qFAAqF;GACtG,MAAM,EAAE,MAAM,+EAA+E;GAC7F,SAAS,EAAE,MAAM,qFAAqF;EACxG;CACF;CACA,kBAAkB;EAEhB;GACE,SAAS;GACT,OAAO,EAAE,MAAM,iNAAiN;EAClO;EACA;GAAE,SAAS;GAAU,OAAO,EAAE,MAAM,mFAAmF;EAAE;EAEzH;GAAE,SAAS;GAAY,OAAO;IAAE,MAAM;IAAkC,MAAM;GAA+B;EAAE;CACjH;CACA,eAAe,CACb;EACE,OAAO;GAAC;GAAS;GAAU;EAAO;EAClC,SAAS,CAAC,WAAW,UAAU;EAC/B,OAAO;CACT,GACA;EACE,OAAO,CAAC,MAAM;EACd,SAAS;EACT,OAAO;CACT,CACF;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiAvatar.js","names":["_sfc_main"],"sources":["../../../src/components/avatars/RuiAvatar.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport { get, set } from '@vueuse/shared';\nimport {\n type AvatarSize,\n type AvatarVariant,\n computeAvatarText,\n computeInitials,\n resolveAvatarIconPx,\n resolveAvatarSizePx,\n resolveAvatarTextSize,\n} from '@/components/avatars/avatar-props';\nimport { useAvatarGroup } from '@/components/avatars/use-avatar-group';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport {
|
|
1
|
+
{"version":3,"file":"RuiAvatar.js","names":["_sfc_main"],"sources":["../../../src/components/avatars/RuiAvatar.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport { get, set } from '@vueuse/shared';\nimport {\n type AvatarSize,\n type AvatarVariant,\n computeAvatarText,\n computeInitials,\n resolveAvatarIconPx,\n resolveAvatarSizePx,\n resolveAvatarTextSize,\n} from '@/components/avatars/avatar-props';\nimport { useAvatarGroup } from '@/components/avatars/use-avatar-group';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { avatarStyles } from './avatar-styles';\n\nexport interface Props {\n src?: string | null;\n alt?: string;\n text?: string | null;\n icon?: RuiIcons | null;\n size?: AvatarSize | number;\n variant?: AvatarVariant;\n color?: 'default' | ContextColorsType;\n loading?: 'lazy' | 'eager';\n}\n\ndefineOptions({\n name: 'RuiAvatar',\n});\n\nconst {\n src = null,\n alt = '',\n text = null,\n icon = null,\n size,\n variant,\n color = 'default',\n loading = 'lazy',\n} = defineProps<Props>();\n\nconst emit = defineEmits<{\n load: [event: Event];\n error: [event: Event];\n}>();\n\nconst slots = defineSlots<{\n default?: () => any;\n}>();\n\nconst group = useAvatarGroup();\n\nconst resolvedSize = computed<AvatarSize | number>(() => {\n if (size !== undefined)\n return size;\n if (group)\n return get(group).size;\n return 'md';\n});\n\nconst resolvedVariant = computed<AvatarVariant>(() => {\n if (variant !== undefined)\n return variant;\n if (group)\n return get(group).variant;\n return 'circular';\n});\n\n// A numeric size borrows the text scale of the nearest token below it\nconst textSize = computed<AvatarSize>(() => resolveAvatarTextSize(get(resolvedSize)));\n\nconst sizePx = computed<number>(() => resolveAvatarSizePx(get(resolvedSize)));\nconst iconPx = computed<number>(() => resolveAvatarIconPx(get(resolvedSize)));\n\nconst errored = ref<boolean>(false);\n\nwatch(() => src, () => {\n set(errored, false);\n});\n\nconst initials = computed<string>(() => {\n const explicit = computeAvatarText(text);\n if (explicit)\n return explicit;\n return computeInitials(alt);\n});\n\ntype DisplayMode = 'image' | 'slot' | 'initials' | 'icon' | 'empty';\n\nconst displayMode = computed<DisplayMode>(() => {\n if (src && !get(errored))\n return 'image';\n if (slots.default)\n return 'slot';\n if (icon)\n return 'icon';\n if (get(initials))\n return 'initials';\n return 'empty';\n});\n\nconst decorative = computed<boolean>(() => alt === '' && !text);\n\nconst ariaLabel = computed<string | undefined>(() => {\n if (get(displayMode) === 'image')\n return undefined;\n if (get(decorative))\n return undefined;\n return text ?? alt ?? undefined;\n});\n\nconst rootStyle = computed<Record<string, string>>(() => {\n const px = `${get(sizePx)}px`;\n return { width: px, height: px };\n});\n\nconst ui = computed<ReturnType<typeof avatarStyles>>(() => avatarStyles({\n variant: get(resolvedVariant),\n color,\n size: get(textSize),\n}));\n\nfunction onLoad(event: Event): void {\n set(errored, false);\n emit('load', event);\n}\n\nfunction onError(event: Event): void {\n set(errored, true);\n emit('error', event);\n}\n</script>\n\n<template>\n <span\n :class=\"ui.root()\"\n :style=\"rootStyle\"\n :role=\"ariaLabel ? 'img' : undefined\"\n :aria-label=\"ariaLabel\"\n :aria-hidden=\"displayMode !== 'image' && decorative ? 'true' : undefined\"\n :data-id=\"$attrs['data-id'] ?? 'avatar-root'\"\n :data-size=\"typeof resolvedSize === 'string' ? resolvedSize : undefined\"\n :data-variant=\"resolvedVariant\"\n :data-color=\"color\"\n >\n <img\n v-if=\"displayMode === 'image' && src\"\n :class=\"ui.image()\"\n :src=\"src\"\n :alt=\"alt\"\n :loading=\"loading\"\n :width=\"sizePx\"\n :height=\"sizePx\"\n data-id=\"avatar-image\"\n @load=\"onLoad($event)\"\n @error=\"onError($event)\"\n />\n <span\n v-else\n :class=\"ui.fallback()\"\n data-id=\"avatar-fallback\"\n aria-hidden=\"true\"\n >\n <slot v-if=\"displayMode === 'slot'\" />\n <span\n v-else-if=\"displayMode === 'initials'\"\n :class=\"ui.initials()\"\n data-id=\"avatar-initials\"\n >\n {{ initials }}\n </span>\n <RuiIcon\n v-else-if=\"displayMode === 'icon' && icon\"\n :name=\"icon\"\n :size=\"iconPx\"\n data-id=\"avatar-icon\"\n />\n <span v-else> </span>\n </span>\n </span>\n</template>\n"],"mappings":""}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { get, set } from "../../vendor/@vueuse/shared/dist/index.js";
|
|
2
|
-
import { tv } from "../../utils/tv.js";
|
|
3
2
|
import RuiIcon_default from "../icons/RuiIcon.js";
|
|
4
3
|
import { computeAvatarText, computeInitials, resolveAvatarIconPx, resolveAvatarSizePx, resolveAvatarTextSize } from "./avatar-props.js";
|
|
5
4
|
import { useAvatarGroup } from "./use-avatar-group.js";
|
|
5
|
+
import { avatarStyles } from "./avatar-styles.js";
|
|
6
6
|
import { computed, createBlock, createElementBlock, defineComponent, normalizeClass, normalizeStyle, openBlock, ref, renderSlot, toDisplayString, unref, useSlots, watch } from "vue";
|
|
7
7
|
//#region src/components/avatars/RuiAvatar.vue?vue&type=script&setup=true&lang.ts
|
|
8
8
|
var _hoisted_1 = [
|
|
@@ -82,43 +82,6 @@ var RuiAvatar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
82
82
|
height: px
|
|
83
83
|
};
|
|
84
84
|
});
|
|
85
|
-
const avatarStyles = tv({
|
|
86
|
-
slots: {
|
|
87
|
-
root: "relative inline-flex items-center justify-center shrink-0 overflow-hidden select-none font-medium align-middle",
|
|
88
|
-
image: "w-full h-full object-cover",
|
|
89
|
-
fallback: "w-full h-full flex items-center justify-center",
|
|
90
|
-
initials: "uppercase leading-none"
|
|
91
|
-
},
|
|
92
|
-
variants: {
|
|
93
|
-
variant: {
|
|
94
|
-
circular: { root: "rounded-full" },
|
|
95
|
-
rounded: { root: "rounded-rui-control" },
|
|
96
|
-
square: { root: "rounded-none" }
|
|
97
|
-
},
|
|
98
|
-
color: {
|
|
99
|
-
default: { root: "bg-rui-neutral-200 text-rui-text dark:bg-rui-neutral-700" },
|
|
100
|
-
primary: { root: "bg-rui-primary-fill text-rui-primary-foreground" },
|
|
101
|
-
secondary: { root: "bg-rui-secondary-fill text-rui-secondary-foreground" },
|
|
102
|
-
error: { root: "bg-rui-error-fill text-rui-error-foreground" },
|
|
103
|
-
warning: { root: "bg-rui-warning-fill text-rui-warning-foreground" },
|
|
104
|
-
info: { root: "bg-rui-info-fill text-rui-info-foreground" },
|
|
105
|
-
success: { root: "bg-rui-success-fill text-rui-success-foreground" }
|
|
106
|
-
},
|
|
107
|
-
size: {
|
|
108
|
-
"xs": { root: "text-[0.625rem]" },
|
|
109
|
-
"sm": { root: "text-[0.6875rem]" },
|
|
110
|
-
"md": { root: "text-sm" },
|
|
111
|
-
"lg": { root: "text-base" },
|
|
112
|
-
"xl": { root: "text-lg" },
|
|
113
|
-
"2xl": { root: "text-xl" }
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
defaultVariants: {
|
|
117
|
-
variant: "circular",
|
|
118
|
-
color: "default",
|
|
119
|
-
size: "md"
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
85
|
const ui = computed(() => avatarStyles({
|
|
123
86
|
variant: get(resolvedVariant),
|
|
124
87
|
color: __props.color,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiAvatar.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_useSlots","_openBlock","_createElementBlock","_normalizeClass","_unref","_normalizeStyle","_renderSlot","_toDisplayString","_createBlock","RuiIcon"],"sources":["../../../src/components/avatars/RuiAvatar.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport { get, set } from '@vueuse/shared';\nimport {\n type AvatarSize,\n type AvatarVariant,\n computeAvatarText,\n computeInitials,\n resolveAvatarIconPx,\n resolveAvatarSizePx,\n resolveAvatarTextSize,\n} from '@/components/avatars/avatar-props';\nimport { useAvatarGroup } from '@/components/avatars/use-avatar-group';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport {
|
|
1
|
+
{"version":3,"file":"RuiAvatar.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_useSlots","_openBlock","_createElementBlock","_normalizeClass","_unref","_normalizeStyle","_renderSlot","_toDisplayString","_createBlock","RuiIcon"],"sources":["../../../src/components/avatars/RuiAvatar.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport { get, set } from '@vueuse/shared';\nimport {\n type AvatarSize,\n type AvatarVariant,\n computeAvatarText,\n computeInitials,\n resolveAvatarIconPx,\n resolveAvatarSizePx,\n resolveAvatarTextSize,\n} from '@/components/avatars/avatar-props';\nimport { useAvatarGroup } from '@/components/avatars/use-avatar-group';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { avatarStyles } from './avatar-styles';\n\nexport interface Props {\n src?: string | null;\n alt?: string;\n text?: string | null;\n icon?: RuiIcons | null;\n size?: AvatarSize | number;\n variant?: AvatarVariant;\n color?: 'default' | ContextColorsType;\n loading?: 'lazy' | 'eager';\n}\n\ndefineOptions({\n name: 'RuiAvatar',\n});\n\nconst {\n src = null,\n alt = '',\n text = null,\n icon = null,\n size,\n variant,\n color = 'default',\n loading = 'lazy',\n} = defineProps<Props>();\n\nconst emit = defineEmits<{\n load: [event: Event];\n error: [event: Event];\n}>();\n\nconst slots = defineSlots<{\n default?: () => any;\n}>();\n\nconst group = useAvatarGroup();\n\nconst resolvedSize = computed<AvatarSize | number>(() => {\n if (size !== undefined)\n return size;\n if (group)\n return get(group).size;\n return 'md';\n});\n\nconst resolvedVariant = computed<AvatarVariant>(() => {\n if (variant !== undefined)\n return variant;\n if (group)\n return get(group).variant;\n return 'circular';\n});\n\n// A numeric size borrows the text scale of the nearest token below it\nconst textSize = computed<AvatarSize>(() => resolveAvatarTextSize(get(resolvedSize)));\n\nconst sizePx = computed<number>(() => resolveAvatarSizePx(get(resolvedSize)));\nconst iconPx = computed<number>(() => resolveAvatarIconPx(get(resolvedSize)));\n\nconst errored = ref<boolean>(false);\n\nwatch(() => src, () => {\n set(errored, false);\n});\n\nconst initials = computed<string>(() => {\n const explicit = computeAvatarText(text);\n if (explicit)\n return explicit;\n return computeInitials(alt);\n});\n\ntype DisplayMode = 'image' | 'slot' | 'initials' | 'icon' | 'empty';\n\nconst displayMode = computed<DisplayMode>(() => {\n if (src && !get(errored))\n return 'image';\n if (slots.default)\n return 'slot';\n if (icon)\n return 'icon';\n if (get(initials))\n return 'initials';\n return 'empty';\n});\n\nconst decorative = computed<boolean>(() => alt === '' && !text);\n\nconst ariaLabel = computed<string | undefined>(() => {\n if (get(displayMode) === 'image')\n return undefined;\n if (get(decorative))\n return undefined;\n return text ?? alt ?? undefined;\n});\n\nconst rootStyle = computed<Record<string, string>>(() => {\n const px = `${get(sizePx)}px`;\n return { width: px, height: px };\n});\n\nconst ui = computed<ReturnType<typeof avatarStyles>>(() => avatarStyles({\n variant: get(resolvedVariant),\n color,\n size: get(textSize),\n}));\n\nfunction onLoad(event: Event): void {\n set(errored, false);\n emit('load', event);\n}\n\nfunction onError(event: Event): void {\n set(errored, true);\n emit('error', event);\n}\n</script>\n\n<template>\n <span\n :class=\"ui.root()\"\n :style=\"rootStyle\"\n :role=\"ariaLabel ? 'img' : undefined\"\n :aria-label=\"ariaLabel\"\n :aria-hidden=\"displayMode !== 'image' && decorative ? 'true' : undefined\"\n :data-id=\"$attrs['data-id'] ?? 'avatar-root'\"\n :data-size=\"typeof resolvedSize === 'string' ? resolvedSize : undefined\"\n :data-variant=\"resolvedVariant\"\n :data-color=\"color\"\n >\n <img\n v-if=\"displayMode === 'image' && src\"\n :class=\"ui.image()\"\n :src=\"src\"\n :alt=\"alt\"\n :loading=\"loading\"\n :width=\"sizePx\"\n :height=\"sizePx\"\n data-id=\"avatar-image\"\n @load=\"onLoad($event)\"\n @error=\"onError($event)\"\n />\n <span\n v-else\n :class=\"ui.fallback()\"\n data-id=\"avatar-fallback\"\n aria-hidden=\"true\"\n >\n <slot v-if=\"displayMode === 'slot'\" />\n <span\n v-else-if=\"displayMode === 'initials'\"\n :class=\"ui.initials()\"\n data-id=\"avatar-initials\"\n >\n {{ initials }}\n </span>\n <RuiIcon\n v-else-if=\"displayMode === 'icon' && icon\"\n :name=\"icon\"\n :size=\"iconPx\"\n data-id=\"avatar-icon\"\n />\n <span v-else> </span>\n </span>\n </span>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,OAAO;EAKb,MAAM,QAAQC,SAAA;EAId,MAAM,QAAQ,eAAe;EAE7B,MAAM,eAAe,eAAoC;GACvD,IAAI,QAAA,SAAS,KAAA,GACX,OAAO,QAAA;GACT,IAAI,OACF,OAAO,IAAI,KAAK,CAAC,CAAC;GACpB,OAAO;EACT,CAAC;EAED,MAAM,kBAAkB,eAA8B;GACpD,IAAI,QAAA,YAAY,KAAA,GACd,OAAO,QAAA;GACT,IAAI,OACF,OAAO,IAAI,KAAK,CAAC,CAAC;GACpB,OAAO;EACT,CAAC;EAGD,MAAM,WAAW,eAA2B,sBAAsB,IAAI,YAAY,CAAC,CAAC;EAEpF,MAAM,SAAS,eAAuB,oBAAoB,IAAI,YAAY,CAAC,CAAC;EAC5E,MAAM,SAAS,eAAuB,oBAAoB,IAAI,YAAY,CAAC,CAAC;EAE5E,MAAM,UAAU,IAAa,KAAK;EAElC,YAAY,QAAA,WAAW;GACrB,IAAI,SAAS,KAAK;EACpB,CAAC;EAED,MAAM,WAAW,eAAuB;GACtC,MAAM,WAAW,kBAAkB,QAAA,IAAI;GACvC,IAAI,UACF,OAAO;GACT,OAAO,gBAAgB,QAAA,GAAG;EAC5B,CAAC;EAID,MAAM,cAAc,eAA4B;GAC9C,IAAI,QAAA,OAAO,CAAC,IAAI,OAAO,GACrB,OAAO;GACT,IAAI,MAAM,SACR,OAAO;GACT,IAAI,QAAA,MACF,OAAO;GACT,IAAI,IAAI,QAAQ,GACd,OAAO;GACT,OAAO;EACT,CAAC;EAED,MAAM,aAAa,eAAwB,QAAA,QAAQ,MAAM,CAAC,QAAA,IAAI;EAE9D,MAAM,YAAY,eAAmC;GACnD,IAAI,IAAI,WAAW,MAAM,SACvB,OAAO,KAAA;GACT,IAAI,IAAI,UAAU,GAChB,OAAO,KAAA;GACT,OAAO,QAAA,QAAQ,QAAA,OAAO,KAAA;EACxB,CAAC;EAED,MAAM,YAAY,eAAuC;GACvD,MAAM,KAAK,GAAG,IAAI,MAAM,EAAE;GAC1B,OAAO;IAAE,OAAO;IAAI,QAAQ;GAAG;EACjC,CAAC;EAED,MAAM,KAAK,eAAgD,aAAa;GACtE,SAAS,IAAI,eAAe;GAC5B,OAAI,QAAA;GACJ,MAAM,IAAI,QAAQ;EACpB,CAAC,CAAC;EAEF,SAAS,OAAO,OAAoB;GAClC,IAAI,SAAS,KAAK;GAClB,KAAK,QAAQ,KAAK;EACpB;EAEA,SAAS,QAAQ,OAAoB;GACnC,IAAI,SAAS,IAAI;GACjB,KAAK,SAAS,KAAK;EACrB;;GAIE,OAAAC,UAAA,GAAAC,mBA6CO,QAAA;IA5CJ,OAAKC,eAAEC,MAAA,EAAA,CAAE,CAAC,KAAI,CAAA;IACd,OAAKC,eAAED,MAAA,SAAA,CAAS;IAChB,MAAMA,MAAA,SAAA,IAAS,QAAW,KAAA;IAC1B,cAAYA,MAAA,SAAA;IACZ,eAAaA,MAAA,WAAA,MAAW,WAAgBA,MAAA,UAAA,IAAU,SAAY,KAAA;IAC9D,WAASL,KAAAA,OAAM,cAAA;IACf,aAAS,OAASK,MAAA,YAAA,MAAY,WAAgBA,MAAA,YAAA,IAAe,KAAA;IAC7D,gBAAcA,MAAA,eAAA;IACd,cAAY,QAAA;GAGLA,GAAAA,CAAAA,MAAA,WAAA,MAAW,WAAgB,QAAA,OADnCH,UAAA,GAAAC,mBAWE,OAAA;;IATC,OAAKC,eAAEC,MAAA,EAAA,CAAE,CAAC,MAAK,CAAA;IACf,KAAK,QAAA;IACL,KAAK,QAAA;IACL,SAAS,QAAA;IACT,OAAOA,MAAA,MAAA;IACP,QAAQA,MAAA,MAAA;IACT,WAAQ;IACP,QAAI,OAAA,OAAA,OAAA,MAAA,WAAE,OAAO,MAAM;IACnB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,QAAQ,MAAM;GAExBH,GAAAA,MAAAA,IAAAA,UAAAA,MAAAA,UAAA,GAAAC,mBAqBO,QAAA;;IAnBJ,OAAKC,eAAEC,MAAA,EAAA,CAAE,CAAC,SAAQ,CAAA;IACnB,WAAQ;IACR,eAAY;GAEAA,GAAAA,CAAAA,MAAA,WAAA,MAAW,SAAvBE,WAAsC,KAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,IAEzBF,MAAA,WAAA,MAAW,cADxBH,UAAA,GAAAC,mBAMO,QAAA;;IAJJ,OAAKC,eAAEC,MAAA,EAAA,CAAE,CAAC,SAAQ,CAAA;IACnB,WAAQ;GAEL,GAAAG,gBAAAH,MAAA,QAAA,CAAQ,GAAA,CAAA,KAGAA,MAAA,WAAA,MAAW,UAAe,QAAA,QADvCH,UAAA,GAAAO,YAKEC,iBAAA;;IAHC,MAAM,QAAA;IACN,MAAML,MAAA,MAAA;IACP,WAAQ;GAEVH,GAAAA,MAAAA,GAAAA,CAAAA,QAAAA,MAAAA,CAAAA,MAAAA,UAAA,GAAAC,mBAA0B,QAAA,YAAb,MAAM,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,UAAA"}
|