UNPKG

sigma-ui

Version:
16 lines 2.13 kB
{ "name": "slider", "dependencies": [], "registryDependencies": [], "files": [ { "name": "Slider.vue", "content": "<script setup lang=\"ts\">\nimport type { SliderRootEmits, SliderRootProps } from 'reka-ui';\nimport { SliderRange, SliderRoot, SliderThumb, SliderTrack, useForwardPropsEmits } from 'reka-ui';\n\nconst props = defineProps<SliderRootProps>();\nconst emits = defineEmits<SliderRootEmits>();\n\nconst forwarded = useForwardPropsEmits(props, emits);\n</script>\n\n<template>\n <SliderRoot\n class=\"sigma-ui-slider\"\n v-bind=\"forwarded\"\n >\n <SliderTrack class=\"sigma-ui-slider__track\">\n <SliderRange class=\"sigma-ui-slider__range\" />\n </SliderTrack>\n <SliderThumb\n v-for=\"(_, key) in modelValue\"\n :key=\"key\"\n class=\"sigma-ui-slider__thumb\"\n />\n </SliderRoot>\n</template>\n\n<style>\n.sigma-ui-slider {\n position: relative;\n display: flex;\n width: 100%;\n min-width: 50px;\n align-items: center;\n touch-action: none;\n user-select: none;\n}\n\n.sigma-ui-slider__track {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 0.5rem;\n flex-grow: 1;\n border-radius: var(--radius-full);\n background-color: hsl(var(--secondary));\n}\n\n.sigma-ui-slider__range {\n position: absolute;\n height: 100%;\n background-color: hsl(var(--primary));\n}\n\n.sigma-ui-slider__thumb {\n display: block;\n width: 1.25rem;\n height: 1.25rem;\n border: 2px solid hsl(var(--primary));\n border-radius: var(--radius-full);\n background-color: hsl(var(--background));\n transition-duration: 150ms;\n transition-property: color, background-color, border-color;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.sigma-ui-slider__thumb:focus-visible {\n box-shadow: 0 0 0 2px hsl(var(--ring)), 0 0 0 4px hsl(var(--background));\n outline: none;\n}\n\n.sigma-ui-slider__thumb:disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n</style>\n" }, { "name": "index.ts", "content": "export { default as Slider } from './Slider.vue';\n" } ], "type": "components:ui" }