UNPKG

sigma-ui

Version:
24 lines 4.04 kB
{ "name": "popover", "dependencies": [], "registryDependencies": [], "files": [ { "name": "Popover.vue", "content": "<script setup lang=\"ts\">\nimport { PopoverRoot, useForwardPropsEmits } from 'reka-ui';\nimport type { PopoverRootEmits, PopoverRootProps } from 'reka-ui';\n\nconst props = defineProps<PopoverRootProps>();\nconst emits = defineEmits<PopoverRootEmits>();\n\nconst forwarded = useForwardPropsEmits(props, emits);\n</script>\n\n<template>\n <PopoverRoot v-bind=\"forwarded\">\n <slot />\n </PopoverRoot>\n</template>\n" }, { "name": "PopoverContent.vue", "content": "<script setup lang=\"ts\">\nimport {\n PopoverContent,\n type PopoverContentEmits,\n type PopoverContentProps,\n PopoverPortal,\n useForwardPropsEmits,\n} from 'reka-ui';\n\ndefineOptions({\n inheritAttrs: false,\n});\n\nconst props = withDefaults(\n defineProps<PopoverContentProps>(),\n {\n align: 'center',\n sideOffset: 4,\n },\n);\nconst emits = defineEmits<PopoverContentEmits>();\n\nconst forwarded = useForwardPropsEmits(props, emits);\n</script>\n\n<template>\n <PopoverPortal>\n <PopoverContent\n v-bind=\"{ ...forwarded, ...$attrs }\"\n class=\"sigma-ui-popover-content\"\n :class=\"$attrs.class\"\n >\n <slot />\n </PopoverContent>\n </PopoverPortal>\n</template>\n\n<style>\n.sigma-ui-popover-content {\n z-index: 50;\n width: 18rem;\n padding: 1rem;\n border: 1px solid hsl(var(--border));\n border-radius: var(--radius);\n backdrop-filter: blur(var(--backdrop-filter-blur));\n background-color: hsl(var(--popover));\n box-shadow: 0 4px 6px -1px rgb(0 0 0 / 10%), 0 2px 4px -2px rgb(0 0 0 / 10%);\n color: hsl(var(--popover-foreground));\n outline: none;\n transform-origin: var(--reka-popover-content-transform-origin);\n}\n\n.sigma-ui-popover-content[data-state=\"open\"][data-side=\"bottom\"] {\n animation: slide-from-top 150ms ease-out;\n}\n\n.sigma-ui-popover-content[data-state=\"open\"][data-side=\"top\"] {\n animation: slide-from-bottom 150ms ease-out;\n}\n\n.sigma-ui-popover-content[data-state=\"open\"][data-side=\"left\"] {\n animation: slide-from-right 150ms ease-out;\n}\n\n.sigma-ui-popover-content[data-state=\"open\"][data-side=\"right\"] {\n animation: slide-from-left 150ms ease-out;\n}\n\n.sigma-ui-popover-content[data-state=\"closed\"] {\n animation: popover-out 150ms ease-in;\n}\n\n@keyframes popover-out {\n from {\n filter: blur(0);\n opacity: 1;\n transform: scaleY(1);\n }\n\n to {\n filter: blur(4px);\n opacity: 0;\n transform: scaleY(0.98);\n }\n}\n\n@keyframes slide-from-top {\n from {\n filter: blur(4px);\n transform: translateY(-1rem) scaleY(0.98);\n }\n\n to {\n filter: blur(0);\n transform: translateY(0) scaleY(1);\n }\n}\n\n@keyframes slide-from-bottom {\n from {\n filter: blur(4px);\n transform: translateY(1rem) scaleY(0.98);\n }\n\n to {\n filter: blur(0);\n transform: translateY(0) scaleY(1);\n }\n}\n\n@keyframes slide-from-left {\n from {\n filter: blur(4px);\n transform: translateX(-1rem) scaleY(0.98);\n }\n\n to {\n filter: blur(0);\n transform: translateX(0) scaleY(1);\n }\n}\n\n@keyframes slide-from-right {\n from {\n filter: blur(4px);\n transform: translateX(1rem) scaleY(0.98);\n }\n\n to {\n filter: blur(0);\n transform: translateX(0) scaleY(1);\n }\n}\n</style>\n" }, { "name": "PopoverTrigger.vue", "content": "<script setup lang=\"ts\">\nimport { PopoverTrigger, type PopoverTriggerProps } from 'reka-ui';\n\nconst props = defineProps<PopoverTriggerProps>();\n</script>\n\n<template>\n <PopoverTrigger v-bind=\"props\">\n <slot />\n </PopoverTrigger>\n</template>\n" }, { "name": "index.ts", "content": "export { default as Popover } from './Popover.vue';\nexport { default as PopoverTrigger } from './PopoverTrigger.vue';\nexport { default as PopoverContent } from './PopoverContent.vue';\n" } ], "type": "components:ui" }