diff --git a/apps/todo/apps/web/src/app.html b/apps/todo/apps/web/src/app.html index e09d2346a..95ab7a7bb 100644 --- a/apps/todo/apps/web/src/app.html +++ b/apps/todo/apps/web/src/app.html @@ -8,7 +8,7 @@ - + diff --git a/apps/todo/apps/web/src/lib/components/skeletons/KanbanBoardSkeleton.svelte b/apps/todo/apps/web/src/lib/components/skeletons/KanbanBoardSkeleton.svelte index 3f6ab58c9..a6f59419a 100644 --- a/apps/todo/apps/web/src/lib/components/skeletons/KanbanBoardSkeleton.svelte +++ b/apps/todo/apps/web/src/lib/components/skeletons/KanbanBoardSkeleton.svelte @@ -1,6 +1,6 @@
- +
- - - + +
+ +
+ + + +
+
- +
{#each Array(taskCount) as _, i} -
- -
- - +
+ + + + + +
+ + {#if i === 0} +
+ + +
+ {/if}
{/each}
- +
- +
@@ -46,54 +61,89 @@ .column-skeleton { width: 300px; min-width: 300px; - background: hsl(var(--card)); - border: 1px solid hsl(var(--border)); - border-radius: 1rem; - padding: 1rem; + max-width: 340px; + min-height: 250px; + background: rgba(255, 255, 255, 0.5); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border: 1px solid rgba(0, 0, 0, 0.08); + border-radius: 1.5rem; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05); display: flex; flex-direction: column; - gap: 0.75rem; } + :global(.dark) .column-skeleton { + background: rgba(255, 255, 255, 0.08); + border: 1px solid rgba(255, 255, 255, 0.1); + } + + /* Header: matches KanbanColumnHeader px-3.5 py-3 */ .column-header { display: flex; align-items: center; justify-content: space-between; - padding: 0.25rem 0; + padding: 0.75rem 0.875rem; } .header-left { display: flex; align-items: center; - gap: 0.5rem; - height: 24px; + gap: 0.625rem; } + .color-dot-wrapper { + position: relative; + } + + /* Tasks container: matches px-3 pb-3 */ .tasks { display: flex; flex-direction: column; - gap: 0.5rem; - min-height: 100px; + gap: 0.625rem; + padding: 0 0.75rem; + flex: 1; + min-height: 80px; } + /* Task card: pill-shaped glassmorphism card */ .task-card { - padding: 0.75rem; - background: hsl(var(--background)); - border: 1px solid hsl(var(--border)); - border-radius: 0.5rem; + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.625rem 1rem; + border-radius: 9999px; + background: rgba(255, 255, 255, 0.85); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: + 0 4px 6px -1px rgba(0, 0, 0, 0.1), + 0 2px 4px -1px rgba(0, 0, 0, 0.06); + } + + :global(.dark) .task-card { + background: rgba(255, 255, 255, 0.12); + border: 1px solid rgba(255, 255, 255, 0.15); + } + + .task-content { + flex: 1; display: flex; flex-direction: column; - gap: 0.5rem; + gap: 0.25rem; + min-width: 0; } .task-meta { display: flex; align-items: center; - justify-content: space-between; + gap: 0.375rem; } + /* Quick add: matches px-3 pb-3 pt-2 */ .add-task { margin-top: auto; - padding-top: 0.5rem; + padding: 0.5rem 0.75rem 0.75rem; } diff --git a/apps/todo/apps/web/src/lib/components/skeletons/TaskItemSkeleton.svelte b/apps/todo/apps/web/src/lib/components/skeletons/TaskItemSkeleton.svelte index 9a2a08148..147ade84e 100644 --- a/apps/todo/apps/web/src/lib/components/skeletons/TaskItemSkeleton.svelte +++ b/apps/todo/apps/web/src/lib/components/skeletons/TaskItemSkeleton.svelte @@ -1,80 +1,67 @@
-
- -
- -
- - -
-
- + +
+
- {#if showSubtasks} -
- {#each Array(2) as _} -
- - -
- {/each} + + + + + + + +
+ +
+ +
- {/if} +
+ + +
diff --git a/apps/todo/apps/web/src/lib/components/skeletons/TaskListSkeleton.svelte b/apps/todo/apps/web/src/lib/components/skeletons/TaskListSkeleton.svelte index cd3f1cc18..0bc3cf6c4 100644 --- a/apps/todo/apps/web/src/lib/components/skeletons/TaskListSkeleton.svelte +++ b/apps/todo/apps/web/src/lib/components/skeletons/TaskListSkeleton.svelte @@ -1,6 +1,6 @@
- {#each Array(sections) as _, sectionIndex} -
- -
-
- - - -
- -
+
+ + - -
- {#each Array(tasksPerSection) as _, taskIndex} -
- +
+
+ {#each Array(sections) as _, sectionIndex} +
+ + + + +
+ {#each Array(tasksPerSection) as _, taskIndex} +
+ +
+ {/each} +
{/each}
- {/each} +
diff --git a/apps/todo/apps/web/vite.config.ts b/apps/todo/apps/web/vite.config.ts index 0e4bac7ff..ec04bfba3 100644 --- a/apps/todo/apps/web/vite.config.ts +++ b/apps/todo/apps/web/vite.config.ts @@ -16,6 +16,7 @@ export default defineConfig({ shortName: 'Todo', description: 'Aufgaben und Projekte verwalten mit Kanban-Board, Subtasks und mehr', themeColor: '#8b5cf6', + devEnabled: false, shortcuts: [ { name: 'Neue Aufgabe', diff --git a/packages/shared-ui/src/navigation/PillTabGroup.svelte b/packages/shared-ui/src/navigation/PillTabGroup.svelte index 87f80f8fb..4b48c61cd 100644 --- a/packages/shared-ui/src/navigation/PillTabGroup.svelte +++ b/packages/shared-ui/src/navigation/PillTabGroup.svelte @@ -1,5 +1,42 @@