diff --git a/app/Actions/Projects/BuildProjectBoardPayload.php b/app/Actions/Projects/BuildProjectBoardPayload.php index 1afb503..4c08b65 100644 --- a/app/Actions/Projects/BuildProjectBoardPayload.php +++ b/app/Actions/Projects/BuildProjectBoardPayload.php @@ -29,6 +29,7 @@ class BuildProjectBoardPayload 'ticketStatuses', 'tickets' => fn ($query) => $query ->with([ + 'assignee', 'ticketPriority', 'ticketStatus.allowedTargetStatuses.boardColumn', 'ticketStatus.boardColumn', diff --git a/resources/css/app.css b/resources/css/app.css index c24c18d..9543c5b 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -37,8 +37,8 @@ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --radius-sm: 0.125rem; - --radius-md: 0.375rem; + --radius-sm: 0.25rem; + --radius-md: 0.25rem; --radius-lg: 0.5rem; --radius-xl: 0.75rem; @@ -51,11 +51,11 @@ --text-headline-lg: 1.5rem; --text-headline-lg--line-height: 2rem; --text-headline-lg--font-weight: 600; - --text-headline-lg--letter-spacing: 0; + --text-headline-lg--letter-spacing: -0.025em; --text-headline-md: 1.125rem; --text-headline-md--line-height: 1.5rem; --text-headline-md--font-weight: 600; - --text-headline-md--letter-spacing: 0; + --text-headline-md--letter-spacing: -0.015em; --text-headline-lg-mobile: 1.25rem; --text-headline-lg-mobile--line-height: 1.75rem; --text-headline-lg-mobile--font-weight: 600; @@ -275,50 +275,50 @@ } .dark { - --background: #0f172a; - --foreground: #eff1f3; - --card: #111827; - --card-foreground: #eff1f3; - --popover: #111827; - --popover-foreground: #eff1f3; - --primary: #4ae176; + --background: #0b1326; + --foreground: #e5eaf5; + --card: #131b2e; + --card-foreground: #e5eaf5; + --popover: #171f33; + --popover-foreground: #e5eaf5; + --primary: #4be277; --primary-foreground: #002109; - --secondary: #1f2937; - --secondary-foreground: #eff1f3; - --muted: #1e293b; - --muted-foreground: #cbd5e1; - --accent: #1e293b; - --accent-foreground: #eff1f3; - --destructive: #f87171; - --destructive-foreground: #ffffff; - --border: #334155; - --input: #334155; - --ring: #4ae176; - --chart-1: #4ae176; + --secondary: #222a3d; + --secondary-foreground: #e5eaf5; + --muted: #171f33; + --muted-foreground: #aeb8cd; + --accent: #222a3d; + --accent-foreground: #f3f6fc; + --destructive: #ffb4ab; + --destructive-foreground: #690005; + --border: #3b4358; + --input: #4a5268; + --ring: #4be277; + --chart-1: #4be277; --chart-2: #60a5fa; --chart-3: #fbbf24; --chart-4: #f87171; --chart-5: #b7c8e1; - --surface: #0f172a; - --surface-dim: #020617; - --surface-bright: #111827; - --surface-container-lowest: #111827; - --surface-container-low: #1e293b; - --surface-container: #263445; - --surface-container-high: #334155; - --surface-container-highest: #475569; - --surface-variant: #334155; - --surface-tint: #4ae176; - --on-surface: #eff1f3; - --on-surface-variant: #cbd5e1; - --on-background: #eff1f3; - --outline: #94a3b8; - --outline-variant: #334155; - --primary-container: #14532d; + --surface: #0b1326; + --surface-dim: #060e20; + --surface-bright: #2d3449; + --surface-container-lowest: #060e20; + --surface-container-low: #131b2e; + --surface-container: #171f33; + --surface-container-high: #222a3d; + --surface-container-highest: #2d3449; + --surface-variant: #2d3449; + --surface-tint: #4be277; + --on-surface: #e5eaf5; + --on-surface-variant: #aeb8cd; + --on-background: #e5eaf5; + --outline: #8993aa; + --outline-variant: #3b4358; + --primary-container: #136c35; --on-primary: #002109; --on-primary-container: #bbf7d0; --primary-fixed: #6bff8f; - --primary-fixed-dim: #4ae176; + --primary-fixed-dim: #4be277; --on-primary-fixed: #002109; --on-primary-fixed-variant: #005321; --secondary-container: #1e3a5f; @@ -343,15 +343,15 @@ --inverse-surface: #eff1f3; --inverse-on-surface: #191c1e; --inverse-primary: #006e2f; - --sidebar-background: #111827; - --sidebar-foreground: #eff1f3; - --sidebar-primary: #4ae176; + --sidebar-background: #060e20; + --sidebar-foreground: #e5eaf5; + --sidebar-primary: #4be277; --sidebar-primary-foreground: #002109; - --sidebar-accent: #1e293b; - --sidebar-accent-foreground: #eff1f3; - --sidebar-border: #334155; - --sidebar-ring: #4ae176; - --sidebar: #111827; + --sidebar-accent: #171f33; + --sidebar-accent-foreground: #f3f6fc; + --sidebar-border: #2d3449; + --sidebar-ring: #4be277; + --sidebar: #060e20; } @layer base { @@ -359,6 +359,74 @@ @apply border-border outline-ring/50; } body { - @apply bg-background text-foreground; + @apply min-h-screen bg-background text-foreground antialiased; + letter-spacing: -0.006em; + } + + ::selection { + background: color-mix(in srgb, var(--primary) 24%, transparent); + color: var(--foreground); + } + + textarea, + select { + @apply border-input bg-surface-container-lowest text-foreground rounded-md border px-3 py-2 text-sm shadow-xs outline-none transition-[border-color,box-shadow,background-color]; + background-color: var(--surface-container-lowest) !important; + } + + textarea:focus-visible, + select:focus-visible { + @apply border-ring ring-ring/25 ring-3; + } + + textarea:disabled, + select:disabled { + @apply cursor-not-allowed opacity-55; + } + + table { + @apply w-full border-separate border-spacing-0; + } + + thead { + @apply bg-surface-container-low text-on-surface-variant; + } + + tbody tr { + @apply transition-colors hover:bg-primary/3; + } + + th { + @apply text-label-uppercase font-bold tracking-[0.08em]; + } +} + +@layer components { + .app-page { + @apply mx-auto flex w-full max-w-[96rem] flex-1 flex-col gap-6 px-4 py-5 sm:px-6 sm:py-7 lg:px-8; + } + + .app-page-narrow { + @apply mx-auto flex w-full max-w-5xl flex-1 flex-col gap-6 px-4 py-5 sm:px-6 sm:py-7 lg:px-8; + } + + .page-actions { + @apply flex flex-wrap items-center gap-2; + } + + .status-success { + @apply border-primary/25 bg-primary/8 text-on-primary-container rounded-lg border px-4 py-3 text-sm dark:text-primary-fixed; + } + + .empty-state { + @apply border-outline-variant bg-surface-container-low text-on-surface-variant rounded-lg border border-dashed px-5 py-8 text-center text-sm; + } + + .table-shell { + @apply border-outline-variant bg-surface-container-lowest overflow-hidden rounded-xl border; + } + + .eyebrow { + @apply text-label-uppercase text-primary font-bold uppercase tracking-[0.12em]; } } diff --git a/resources/js/app.ts b/resources/js/app.ts index c098682..e4a6cf4 100644 --- a/resources/js/app.ts +++ b/resources/js/app.ts @@ -20,7 +20,7 @@ createInertiaApp({ .mount(el); }, progress: { - color: '#4B5563', + color: '#22c55e', }, }); diff --git a/resources/js/components/AppContent.vue b/resources/js/components/AppContent.vue index 314002e..1598df3 100644 --- a/resources/js/components/AppContent.vue +++ b/resources/js/components/AppContent.vue @@ -1,14 +1,9 @@