singlestage 0.4.1

A UI component library for Leptos based on Basecoat UI and shadcn/ui
Documentation
@layer components {
  .singlestage-dialog {
    @apply inset-y-0
    opacity-0
    text-foreground
    transition-all
    transition-discrete;

    &:is([open], :popover-open) {
      @apply opacity-100;

      &::backdrop {
        @apply opacity-100;
      }

      > article {
        @apply scale-100;
      }

      @starting-style {
        @apply opacity-0;

        &::backdrop {
          @apply opacity-0;
        }

        > article {
          @apply scale-95;
        }
      }
    }

    &::backdrop {
      @apply bg-black/50
      opacity-0
      transition-all
      transition-discrete;
    }

    > article {
      @apply -translate-x-1/2
      -translate-y-1/2
      bg-background
      border
      fixed
      flex
      flex-col
      gap-4
      left-[50%]
      max-h-[calc(100%_-_2rem)]
      max-w-[calc(100%_-_2rem)]
      p-6
      rounded-lg
      shadow-lg
      sm:max-w-lg
      top-[50%]
      w-full
      z-50;

      @apply scale-95
      transition-all;

      > header {
        @apply flex
        flex-col
        gap-2
        sm:text-left
        text-center;

        > h2 {
          @apply font-semibold
          leading-none
          text-lg;
        }

        > p {
          @apply text-muted-foreground
          text-sm;
        }
      }

      > section {
        @apply -mx-6
        flex-1
        px-6;
      }

      > footer {
        > form {
          @apply flex
          flex-col-reverse
          gap-2
          sm:flex-row
          sm:justify-end;
        }
      }

      > form[method="dialog"] {
        @apply absolute
        right-4
        top-4;

        > button {
          @apply [&_svg:not([class*='size-'])]:size-4
          [&_svg]:pointer-events-none
          [&_svg]:shrink-0
          data-[state=open]:bg-accent
          data-[state=open]:text-muted-foreground
          disabled:pointer-events-none
          focus:outline-hidden
          focus:ring-2
          focus:ring-offset-2
          focus:ring-ring
          hover:opacity-100
          opacity-70
          ring-offset-background
          rounded-xs
          transition-opacity;
        }
      }
    }
  }
}