UNPKG

gvf3n4ygn-test

Version:
20 lines 3.1 kB
{ "name": "radio-group", "dependencies": [], "registryDependencies": [], "files": [ { "name": "RadioGroup.vue", "content": "<script setup lang=\"ts\">\nimport { RadioGroupRoot, type RadioGroupRootEmits, type RadioGroupRootProps, useForwardPropsEmits } from 'radix-vue';\n\nconst props = defineProps<RadioGroupRootProps>();\nconst emits = defineEmits<RadioGroupRootEmits>();\n\nconst forwarded = useForwardPropsEmits(props, emits);\n</script>\n\n<template>\n <RadioGroupRoot\n class=\"sigma-ui-radio-group\"\n v-bind=\"forwarded\"\n >\n <slot />\n </RadioGroupRoot>\n</template>\n\n<style>\n.sigma-ui-radio-group {\n display: grid;\n gap: 0.5rem;\n}\n</style>\n" }, { "name": "RadioGroupItem.vue", "content": "<script setup lang=\"ts\">\nimport {\n RadioGroupIndicator,\n RadioGroupItem,\n type RadioGroupItemProps,\n useForwardProps,\n} from 'radix-vue';\nimport { CircleIcon } from 'lucide-vue-next';\n\nconst props = defineProps<RadioGroupItemProps>();\n\nconst forwardedProps = useForwardProps(props);\n</script>\n\n<template>\n <RadioGroupItem\n v-bind=\"forwardedProps\"\n class=\"sigma-ui-radio-group-item\"\n >\n <RadioGroupIndicator\n class=\"sigma-ui-radio-group-item__indicator\"\n >\n <CircleIcon class=\"sigma-ui-radio-group-item__icon\" />\n </RadioGroupIndicator>\n </RadioGroupItem>\n</template>\n\n<style>\n.sigma-ui-radio-group-item {\n aspect-ratio: 1;\n height: 1rem;\n width: 1rem;\n border-radius: var(--radius-full);\n border: 1px solid hsl(var(--primary));\n color: hsl(var(--primary));\n background-color: transparent;\n transition: all 150ms ease-out;\n}\n\n.sigma-ui-radio-group-item:focus {\n outline: none;\n}\n\n.sigma-ui-radio-group-item:focus-visible {\n box-shadow: 0 0 0 2px hsl(var(--background)),\n 0 0 0 4px hsl(var(--ring));\n}\n\n.sigma-ui-radio-group-item:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.sigma-ui-radio-group-item__indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sigma-ui-radio-group-item__icon {\n height: 0.625rem;\n width: 0.625rem;\n fill: currentColor;\n color: currentColor;\n}\n\n.sigma-ui-radio-group-item[data-state=\"checked\"] .sigma-ui-radio-group-item__icon {\n animation: radioCheck 150ms ease-out;\n}\n\n.sigma-ui-radio-group-item[data-state=\"unchecked\"] .sigma-ui-radio-group-item__icon {\n animation: radioUncheck 150ms ease-in;\n}\n\n@keyframes radioCheck {\n from {\n opacity: 0;\n transform: scale(0.8);\n filter: blur(4px);\n }\n to {\n opacity: 1;\n transform: scale(1);\n filter: blur(0);\n }\n}\n\n@keyframes radioUncheck {\n from {\n opacity: 1;\n transform: scale(1);\n filter: blur(0);\n }\n to {\n opacity: 0;\n transform: scale(0.8);\n filter: blur(4px);\n }\n}\n</style>\n" }, { "name": "index.ts", "content": "export { default as RadioGroup } from './RadioGroup.vue';\nexport { default as RadioGroupItem } from './RadioGroupItem.vue';\n" } ], "type": "components:ui" }