awa-ui 0.5.2

Web UI and JSON API for the Awa job queue
Documentation
@import "tailwindcss";
@import "tw-animate-css";
@import './styles/typography.css';

/* Uncomment if you code-block */
/* @import './shiki.css'; */

@plugin 'tailwindcss-react-aria-components';
/*
If you want to use the typography plugin (prose), uncomment the line below.
*/
/*@plugin '@tailwindcss/typography';*/
@variant dark (&:is(.dark *));

@theme inline {
  --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
  "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  --font-mono: "Geist Mono", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
  "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";

  --font-sans--font-feature-settings: "cv02", "cv03", "cv04", "cv05", "cv11";
  --font-mono--font-feature-settings: "ss02", "zero";

  --color-border: var(--border);
  --color-input: var(--input);

  --color-ring: var(--ring);

  --color-bg: var(--bg);
  --color-fg: var(--fg);

  --color-primary: var(--primary);
  --color-primary-fg: var(--primary-fg);
  --color-primary-subtle: var(--primary-subtle);
  --color-primary-subtle-fg: var(--primary-subtle-fg);

  --color-secondary: var(--secondary);
  --color-secondary-fg: var(--secondary-fg);

  --color-accent: var(--accent);
  --color-accent-fg: var(--accent-fg);

  --color-success: var(--success);
  --color-success-fg: var(--success-fg);
  --color-success-subtle: var(--success-subtle);
  --color-success-subtle-fg: var(--success-subtle-fg);

  --color-danger: var(--danger);
  --color-danger-fg: var(--danger-fg);
  --color-danger-subtle: var(--danger-subtle);
  --color-danger-subtle-fg: var(--danger-subtle-fg);

  --color-warning: var(--warning);
  --color-warning-fg: var(--warning-fg);
  --color-warning-subtle: var(--warning-subtle);
  --color-warning-subtle-fg: var(--warning-subtle-fg);

  --color-info: var(--info);
  --color-info-fg: var(--info-fg);
  --color-info-subtle: var(--info-subtle);
  --color-info-subtle-fg: var(--info-subtle-fg);

  --color-muted: var(--muted);
  --color-muted-fg: var(--muted-fg);

  --color-overlay: var(--overlay);
  --color-overlay-fg: var(--overlay-fg);

  --color-navbar: var(--navbar);
  --color-navbar-fg: var(--navbar-fg);

  --color-sidebar: var(--sidebar);
  --color-sidebar-fg: var(--sidebar-fg);

  --color-chart-1: var(--chart-1);
  --color-chart-2: var(--chart-2);
  --color-chart-3: var(--chart-3);
  --color-chart-4: var(--chart-4);
  --color-chart-5: var(--chart-5);

  --animate-marquee: marquee var(--duration) infinite linear;
  --animate-marquee-vertical: marquee-vertical var(--duration) linear infinite;

  @keyframes marquee {
    from {
      transform: translateX(0);
    }
    to {
      transform: translateX(calc(-100% - var(--gap)));
    }
  }

  @keyframes marquee-vertical {
    from {
      transform: translateY(0);
    }
    to {
      transform: translateY(calc(-100% - var(--gap)));
    }
  }
}


:root {
  --bg: var(--color-white);
  --fg: var(--color-zinc-950);

  /* Pounamu (greenstone) primary */
  --primary: oklch(0.40 0.10 155);
  --primary-fg: oklch(1 0 0);

  --primary-subtle: oklch(0.50 0.10 155 / 0.15);
  --primary-subtle-fg: oklch(0.35 0.10 155);

  --secondary: var(--color-zinc-100);
  --secondary-fg: var(--color-zinc-950);

  --overlay: var(--color-white);
  --overlay-fg: var(--color-zinc-950);

  --accent: oklch(0.92 0.004 286.32);
  --accent-fg: oklch(0.141 0.005 285.823);

  --muted: var(--color-zinc-100);
  --muted-fg: var(--color-zinc-600);

  --success: var(--color-emerald-600);
  --success-fg: var(--color-white);
  --success-subtle: theme('color-emerald-500/15%');
  --success-subtle-fg: var(--color-emerald-700);

  --info: var(--color-sky-500);
  --info-fg: var(--color-white);
  --info-subtle: theme('color-sky-500/15%');
  --info-subtle-fg: var(--color-sky-700);

  --warning: var(--color-amber-400);
  --warning-fg: var(--color-amber-950);
  --warning-subtle: theme('color-amber-400/20%');
  --warning-subtle-fg: var(--color-amber-700);

  --danger: var(--color-red-600);
  --danger-fg: var(--color-red-50);
  --danger-subtle: theme('color-red-500/15%');
  --danger-subtle-fg: var(--color-red-700);

  --border: var(--color-zinc-300);
  --input: var(--color-zinc-300);
  --ring: var(--primary);

  --navbar: oklch(0.988 0 0);
  --navbar-fg: var(--color-zinc-950);

  --sidebar: oklch(0.985 0 0);
  --sidebar-fg: oklch(0.141 0.005 285.823);

  --sidebar-primary: oklch(0.623 0.214 259.815 / 0.15);
  --sidebar-primary-fg: oklch(0.488 0.243 264.376);
  --sidebar-accent: oklch(0.92 0.004 286.32);
  --sidebar-accent-fg: oklch(0.141 0.005 285.823);
  --sidebar-border: oklch(0.901 0.006 286.286);
  --sidebar-ring: oklch(0.546 0.245 262.881);

  --chart-1: oklch(0.546 0.245 262.881);
  --chart-2: oklch(0.623 0.214 259.815);
  --chart-3: oklch(0.707 0.165 254.624);
  --chart-4: oklch(0.809 0.105 251.813);
  --chart-5: oklch(0.882 0.059 254.128);

  --radius-lg: 0.5rem;
  --radius-xs: calc(var(--radius-lg) * 0.25);
  --radius-sm: calc(var(--radius-lg) * 0.5);
  --radius-md: calc(var(--radius-lg) * 0.75);
  --radius-xl: calc(var(--radius-lg) * 1.5);
  --radius-2xl: calc(var(--radius-lg) * 2);
  --radius-3xl: calc(var(--radius-lg) * 3);
  --radius-4xl: calc(var(--radius-lg) * 4);

  ::selection {
    background-color: var(--color-primary-subtle);
    color: var(--color-primary-subtle-fg);
  }
}

.dark {
  --bg: var(--color-zinc-950);
  --fg: var(--color-zinc-50);

  /* Pounamu (greenstone) primary - dark mode */
  --primary: oklch(0.50 0.10 155);
  --primary-fg: oklch(1 0 0);

  --primary-subtle: oklch(0.50 0.10 155 / 0.1);
  --primary-subtle-fg: oklch(0.60 0.10 155);

  --secondary: var(--color-zinc-800);
  --secondary-fg: var(--color-zinc-50);

  --accent: oklch(0.32 0.013 285.805);
  --accent-fg: oklch(0.985 0 0);

  --muted: var(--color-zinc-900);
  --muted-fg: var(--color-zinc-400);

  --overlay: oklch(0.234 0.006 286.033);
  --overlay-fg: var(--color-zinc-50);

  --success: var(--color-emerald-600);
  --success-fg: var(--color-white);
  --success-subtle: theme('color-emerald-500/10%');
  --success-subtle-fg: var(--color-emerald-400);

  --info: var(--color-sky-500);
  --info-fg: var(--color-white);
  --info-subtle: theme('color-sky-500/10%');
  --info-subtle-fg: var(--color-sky-300);

  --warning: var(--color-amber-400);
  --warning-fg: var(--color-amber-950);
  --warning-subtle: theme('color-amber-400/10%');
  --warning-subtle-fg: var(--color-amber-400);

  --danger: var(--color-red-600);
  --danger-fg: var(--color-red-50);
  --danger-subtle: theme('color-red-500/10%');
  --danger-subtle-fg: var(--color-red-400);

  --border: oklch(0.30 0.013 285.805);
  --input: oklch(0.310 0.013 285.805);

  --navbar: oklch(0.17 0.006 285.885);
  --navbar-fg: var(--color-zinc-50);

  --sidebar: oklch(0.180 0.006 285.885);
  --sidebar-fg: oklch(0.985 0 0);
  --sidebar-primary: oklch(0.623 0.214 259.815 / 0.1);
  --sidebar-primary-fg: oklch(0.707 0.165 254.624);
  --sidebar-accent: oklch(0.274 0.006 286.033);
  --sidebar-accent-fg: oklch(0.985 0 0);
  --sidebar-border: oklch(0.274 0.006 286.033);
  --sidebar-ring: oklch(0.546 0.245 262.881);

  --chart-1: oklch(0.488 0.243 264.376);
  --chart-2: oklch(0.623 0.214 259.815);
  --chart-3: oklch(0.707 0.165 254.624);
  --chart-4: oklch(0.809 0.105 251.813);
  --chart-5: oklch(0.882 0.059 254.128);
}

@layer base {
  *,
  ::after,
  ::before,
  ::backdrop,
  ::file-selector-button {
    border-color: var(--color-border, currentColor);
  }

  * {
    text-rendering: optimizeLegibility;

    scrollbar-width: thin;
    scrollbar-color: var(--color-border) transparent;
  }

  html {
    font-variation-settings: normal;
    scroll-behavior: smooth;
    height: 100%;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    -webkit-tap-highlight-color: transparent;
  }

  body {
    background-color: var(--color-bg);
    color: var(--color-fg);
  }
}

@utility touch-hitbox {
  position: relative;
  &::before {
    content: "";
    position: absolute;
    display: block;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 100%;
    height: 100%;
    min-height: 44px;
    min-width: 44px;
    z-index: 9999;
  }
}

.scrollbar-hidden {
  -ms-overflow-style: none; /* Internet Explorer and Edge */
  scrollbar-width: none; /* Firefox */
  &::-webkit-scrollbar {
    display: none; /* Safari and Chrome */
  }
}

.react-aria-DropIndicator[data-drop-target] {
  outline: 1px solid var(--primary);
  transform: translateZ(0);
}