fix(web): notices, day numbers and «Responder» as tall as they are
@pi/ui gives every button a fixed height, side padding and a minimum width. Three of ours, laid out by their own component, took it: - a notice in the bell's panel stayed 40 px tall, so a two-line one ran over the next; - a day number in the calendar became a 40 px pill that ran into the sprint bands under it (today's, coloured, showed it); - «Responder» under a comment became a grey pill sitting on its line. They keep their own box now, and «Responder» is a text link. The home page shows my projects first, right under the greeting: what most visits come to open. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -110,6 +110,50 @@ const REFRESH_MS = 60_000;
|
||||
/>
|
||||
}
|
||||
|
||||
<!-- My projects first: what most visits come to open. -->
|
||||
<section class="ts-home-projects" aria-labelledby="projects-title">
|
||||
@if (facade.projects().length) {
|
||||
<div class="ts-section-header">
|
||||
<h2 id="projects-title">
|
||||
Proyectos
|
||||
<span class="ts-mono ts-muted">{{
|
||||
pad(facade.projects().length)
|
||||
}}</span>
|
||||
</h2>
|
||||
</div>
|
||||
} @else {
|
||||
<h2 id="projects-title" class="visually-hidden">Proyectos</h2>
|
||||
}
|
||||
@if (facade.loading() && !facade.projects().length) {
|
||||
<div class="ts-projects">
|
||||
@for (i of [1, 2, 3]; track i) {
|
||||
<pi-skeleton shape="block" height="12rem" />
|
||||
}
|
||||
</div>
|
||||
} @else if (!facade.projects().length) {
|
||||
<pi-empty-state
|
||||
icon="kanban"
|
||||
title="Aún no tienes proyectos"
|
||||
description="Crea uno o pide que te añadan a un proyecto existente."
|
||||
>
|
||||
<pi-action-button
|
||||
color="primary"
|
||||
text="Crear el primero"
|
||||
(execute)="openCreate()"
|
||||
/>
|
||||
</pi-empty-state>
|
||||
} @else {
|
||||
<div class="ts-projects">
|
||||
@for (project of facade.sorted(); track project.id) {
|
||||
<ts-project-card
|
||||
[project]="project"
|
||||
[stats]="statsOf().get(project.id) ?? null"
|
||||
/>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</section>
|
||||
|
||||
@if (facade.projects().length) {
|
||||
@if (myHome.home(); as h) {
|
||||
<ts-home-kpis
|
||||
@@ -145,43 +189,6 @@ const REFRESH_MS = 60_000;
|
||||
<ts-resume />
|
||||
</div>
|
||||
</div>
|
||||
<div class="ts-section-header">
|
||||
<h2>
|
||||
Proyectos
|
||||
<span class="ts-mono ts-muted">{{
|
||||
pad(facade.projects().length)
|
||||
}}</span>
|
||||
</h2>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (facade.loading() && !facade.projects().length) {
|
||||
<div class="ts-projects">
|
||||
@for (i of [1, 2, 3]; track i) {
|
||||
<pi-skeleton shape="block" height="12rem" />
|
||||
}
|
||||
</div>
|
||||
} @else if (!facade.projects().length) {
|
||||
<pi-empty-state
|
||||
icon="kanban"
|
||||
title="Aún no tienes proyectos"
|
||||
description="Crea uno o pide que te añadan a un proyecto existente."
|
||||
>
|
||||
<pi-action-button
|
||||
color="primary"
|
||||
text="Crear el primero"
|
||||
(execute)="openCreate()"
|
||||
/>
|
||||
</pi-empty-state>
|
||||
} @else {
|
||||
<div class="ts-projects">
|
||||
@for (project of facade.sorted(); track project.id) {
|
||||
<ts-project-card
|
||||
[project]="project"
|
||||
[stats]="statsOf().get(project.id) ?? null"
|
||||
/>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
<ng-template #createForm>
|
||||
@@ -260,6 +267,9 @@ const REFRESH_MS = 60_000;
|
||||
color: var(--ts-muted);
|
||||
font-size: 0.8125rem;
|
||||
}
|
||||
.ts-home-projects {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
ts-first-steps,
|
||||
ts-home-kpis,
|
||||
ts-week-agenda,
|
||||
|
||||
Reference in New Issue
Block a user