{
  "name": "dialog",
  "dependencies": [],
  "registryDependencies": [],
  "files": [
    {
      "name": "Dialog.vue",
      "content": "<script setup lang=\"ts\">\nimport { DialogRoot, type DialogRootEmits, type DialogRootProps, useForwardPropsEmits } from 'radix-vue';\n\nconst props = defineProps<DialogRootProps>();\nconst emits = defineEmits<DialogRootEmits>();\n\nconst forwarded = useForwardPropsEmits(props, emits);\n</script>\n\n<template>\n  <DialogRoot v-bind=\"forwarded\">\n    <slot />\n  </DialogRoot>\n</template>\n"
    },
    {
      "name": "DialogClose.vue",
      "content": "<script setup lang=\"ts\">\nimport { DialogClose, type DialogCloseProps } from 'radix-vue';\n\nconst props = defineProps<DialogCloseProps>();\n</script>\n\n<template>\n  <DialogClose v-bind=\"props\">\n    <slot />\n  </DialogClose>\n</template>\n"
    },
    {
      "name": "DialogContent.vue",
      "content": "<script setup lang=\"ts\">\nimport {\n  DialogClose,\n  DialogContent,\n  type DialogContentEmits,\n  type DialogContentProps,\n  DialogOverlay,\n  DialogPortal,\n  useForwardPropsEmits,\n} from 'radix-vue';\nimport { XIcon } from 'lucide-vue-next';\n\nconst props = defineProps<DialogContentProps>();\nconst emits = defineEmits<DialogContentEmits>();\n\nconst forwarded = useForwardPropsEmits(props, emits);\n</script>\n\n<template>\n  <DialogPortal>\n    <DialogOverlay class=\"sigma-ui-dialog-overlay\" />\n    <DialogContent\n      v-bind=\"forwarded\"\n      class=\"sigma-ui-dialog-content\"\n      :class=\"[$attrs.class]\"\n    >\n      <slot />\n\n      <DialogClose class=\"sigma-ui-dialog-close\">\n        <XIcon class=\"sigma-ui-dialog-close__icon\" />\n        <span class=\"sigma-ui-dialog-close__label\">Close</span>\n      </DialogClose>\n    </DialogContent>\n  </DialogPortal>\n</template>\n\n<style>\n.sigma-ui-dialog-overlay {\n  position: fixed;\n  inset: 0;\n  z-index: 50;\n  background-color: rgb(0 0 0 / 0.8);\n  animation: fade-in 0.2s ease-out;\n}\n\n.sigma-ui-dialog-overlay[data-state=\"open\"] {\n  animation: fade-in 0.2s ease-out;\n}\n\n.sigma-ui-dialog-overlay[data-state=\"closed\"] {\n  animation: fade-out 0.2s ease-in;\n}\n\n.sigma-ui-dialog-content {\n  position: fixed;\n  left: 50%;\n  top: 50%;\n  z-index: 50;\n  display: grid;\n  width: 100%;\n  max-width: 32rem;\n  transform: translate(-50%, -50%);\n  gap: 1rem;\n  border: 1px solid hsl(var(--border));\n  background-color: hsl(var(--background));\n  padding: 1.5rem;\n  box-shadow: var(--shadow-lg);\n  transition-duration: 200ms;\n}\n\n.sigma-ui-dialog-content[data-state=\"open\"] {\n  animation: dialog-show 0.2s ease-out;\n}\n\n.sigma-ui-dialog-content[data-state=\"closed\"] {\n  animation: dialog-hide 0.2s ease-in;\n}\n\n.sigma-ui-dialog-close {\n  position: absolute;\n  right: 1rem;\n  top: 1rem;\n  border-radius: var(--radius-sm);\n  opacity: 0.7;\n  transition-property: opacity;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n  transition-duration: 150ms;\n}\n\n.sigma-ui-dialog-close:hover {\n  opacity: 1;\n}\n\n.sigma-ui-dialog-close:focus {\n  outline: none;\n  ring: 2px solid hsl(var(--ring));\n  ring-offset: 2px;\n  ring-offset-background: hsl(var(--background));\n}\n\n.sigma-ui-dialog-close[data-state=\"open\"] {\n  background-color: hsl(var(--accent));\n  color: hsl(var(--muted-foreground));\n}\n\n.sigma-ui-dialog-close:disabled {\n  pointer-events: none;\n}\n\n.sigma-ui-dialog-close__icon {\n  width: 1rem;\n  height: 1rem;\n}\n\n.sigma-ui-dialog-close__label {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border-width: 0;\n}\n\n@keyframes fade-in {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n}\n\n@keyframes fade-out {\n  from {\n    opacity: 1;\n  }\n  to {\n    opacity: 0;\n  }\n}\n\n@keyframes dialog-show {\n  from {\n    opacity: 0;\n    transform: translate(-50%, -48%) scale(0.95);\n  }\n  to {\n    opacity: 1;\n    transform: translate(-50%, -50%) scale(1);\n  }\n}\n\n@keyframes dialog-hide {\n  from {\n    opacity: 1;\n    transform: translate(-50%, -50%) scale(1);\n  }\n  to {\n    opacity: 0;\n    transform: translate(-50%, -48%) scale(0.95);\n  }\n}\n\n@media (min-width: 640px) {\n  .sigma-ui-dialog-content {\n    border-radius: var(--radius-lg);\n  }\n}\n</style>\n"
    },
    {
      "name": "DialogDescription.vue",
      "content": "<script setup lang=\"ts\">\nimport { DialogDescription, type DialogDescriptionProps, useForwardProps } from 'radix-vue';\n\nconst props = defineProps<DialogDescriptionProps>();\n\nconst forwardedProps = useForwardProps(props);\n</script>\n\n<template>\n  <DialogDescription\n    v-bind=\"forwardedProps\"\n    class=\"sigma-ui-dialog-description\"\n  >\n    <slot />\n  </DialogDescription>\n</template>\n\n<style>\n.sigma-ui-dialog-description {\n  font-size: 0.875rem;\n  color: hsl(var(--muted-foreground));\n}\n</style>\n"
    },
    {
      "name": "DialogFooter.vue",
      "content": "<script setup lang=\"ts\">\n</script>\n\n<template>\n  <div\n    class=\"sigma-ui-dialog-footer\"\n    :class=\"[$attrs.class]\"\n  >\n    <slot />\n  </div>\n</template>\n\n<style>\n.sigma-ui-dialog-footer {\n  display: flex;\n  flex-direction: column-reverse;\n}\n\n@media (min-width: 640px) {\n  .sigma-ui-dialog-footer {\n    flex-direction: row;\n    justify-content: flex-end;\n    gap: 0.5rem;\n  }\n}\n</style>\n"
    },
    {
      "name": "DialogHeader.vue",
      "content": "<script setup lang=\"ts\">\n\n;\n</script>\n\n<template>\n  <div\n    class=\"sigma-ui-dialog-header\"\n    :class=\"[$attrs.class]\"\n  >\n    <slot />\n  </div>\n</template>\n\n<style>\n.sigma-ui-dialog-header {\n  display: flex;\n  flex-direction: column;\n  gap: 0.375rem;\n  text-align: center;\n}\n\n@media (min-width: 640px) {\n  .sigma-ui-dialog-header {\n    text-align: left;\n  }\n}\n</style>\n"
    },
    {
      "name": "DialogScrollContent.vue",
      "content": "<script setup lang=\"ts\">\nimport {\n  DialogClose,\n  DialogContent,\n  type DialogContentEmits,\n  type DialogContentProps,\n  DialogOverlay,\n  DialogPortal,\n  useForwardPropsEmits,\n} from 'radix-vue';\nimport { XIcon } from 'lucide-vue-next';\n\nconst props = defineProps<DialogContentProps>();\nconst emits = defineEmits<DialogContentEmits>();\n\nconst forwarded = useForwardPropsEmits(props, emits);\n</script>\n\n<template>\n  <DialogPortal>\n    <DialogOverlay\n      class=\"sigma-ui-dialog-scroll-overlay\"\n    >\n      <DialogContent\n        class=\"sigma-ui-dialog-scroll-content\"\n        :class=\"[$attrs.class]\"\n        v-bind=\"forwarded\"\n        @pointer-down-outside=\"(event) => {\n          const originalEvent = event.detail.originalEvent;\n          const target = originalEvent.target as HTMLElement;\n          if (originalEvent.offsetX > target.clientWidth || originalEvent.offsetY > target.clientHeight) {\n            event.preventDefault();\n          }\n        }\"\n      >\n        <slot />\n\n        <DialogClose class=\"sigma-ui-dialog-scroll-close\">\n          <XIcon class=\"sigma-ui-dialog-scroll-close__icon\" />\n          <span class=\"sigma-ui-dialog-scroll-close__label\">Close</span>\n        </DialogClose>\n      </DialogContent>\n    </DialogOverlay>\n  </DialogPortal>\n</template>\n\n<style>\n.sigma-ui-dialog-scroll-overlay {\n  position: fixed;\n  inset: 0;\n  z-index: 50;\n  display: grid;\n  place-items: center;\n  overflow-y: auto;\n  background-color: rgb(0 0 0 / 0.8);\n  animation: fade-in 0.2s ease-out;\n}\n\n.sigma-ui-dialog-scroll-overlay[data-state=\"open\"] {\n  animation: fade-in 0.2s ease-out;\n}\n\n.sigma-ui-dialog-scroll-overlay[data-state=\"closed\"] {\n  animation: fade-out 0.2s ease-in;\n}\n\n.sigma-ui-dialog-scroll-content {\n  position: relative;\n  z-index: 50;\n  display: grid;\n  width: 100%;\n  max-width: 32rem;\n  margin: 2rem 0;\n  gap: 1rem;\n  border: 1px solid hsl(var(--border));\n  background-color: hsl(var(--background));\n  padding: 1.5rem;\n  box-shadow: var(--shadow-lg);\n  transition-duration: 200ms;\n}\n\n.sigma-ui-dialog-scroll-close {\n  position: absolute;\n  top: 0.75rem;\n  right: 0.75rem;\n  padding: 0.125rem;\n  border-radius: var(--radius-md);\n  transition-property: background-color;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n  transition-duration: 150ms;\n}\n\n.sigma-ui-dialog-scroll-close:hover {\n  background-color: hsl(var(--secondary));\n}\n\n.sigma-ui-dialog-scroll-close__icon {\n  width: 1rem;\n  height: 1rem;\n}\n\n.sigma-ui-dialog-scroll-close__label {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border-width: 0;\n}\n\n@media (min-width: 640px) {\n  .sigma-ui-dialog-scroll-content {\n    border-radius: var(--radius-lg);\n  }\n}\n\n@media (min-width: 768px) {\n  .sigma-ui-dialog-scroll-content {\n    width: 100%;\n  }\n}\n\n@keyframes fade-in {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n}\n\n@keyframes fade-out {\n  from {\n    opacity: 1;\n  }\n  to {\n    opacity: 0;\n  }\n}\n</style>\n"
    },
    {
      "name": "DialogTitle.vue",
      "content": "<script setup lang=\"ts\">\nimport { DialogTitle, type DialogTitleProps, useForwardProps } from 'radix-vue';\n\nconst props = defineProps<DialogTitleProps>();\n\nconst forwardedProps = useForwardProps(props);\n</script>\n\n<template>\n  <DialogTitle\n    v-bind=\"forwardedProps\"\n    class=\"sigma-ui-dialog-title\"\n  >\n    <slot />\n  </DialogTitle>\n</template>\n\n<style>\n.sigma-ui-dialog-title {\n  font-size: 1.125rem;\n  font-weight: 600;\n  line-height: 1;\n  letter-spacing: -0.025em;\n}\n</style>\n"
    },
    {
      "name": "DialogTrigger.vue",
      "content": "<script setup lang=\"ts\">\nimport { DialogTrigger, type DialogTriggerProps } from 'radix-vue';\n\nconst props = defineProps<DialogTriggerProps>();\n</script>\n\n<template>\n  <DialogTrigger v-bind=\"props\">\n    <slot />\n  </DialogTrigger>\n</template>\n"
    },
    {
      "name": "index.ts",
      "content": "export { default as Dialog } from './Dialog.vue';\nexport { default as DialogClose } from './DialogClose.vue';\nexport { default as DialogTrigger } from './DialogTrigger.vue';\nexport { default as DialogHeader } from './DialogHeader.vue';\nexport { default as DialogTitle } from './DialogTitle.vue';\nexport { default as DialogDescription } from './DialogDescription.vue';\nexport { default as DialogContent } from './DialogContent.vue';\nexport { default as DialogScrollContent } from './DialogScrollContent.vue';\nexport { default as DialogFooter } from './DialogFooter.vue';\n"
    }
  ],
  "type": "components:ui"
}