diff --git a/libs/web/tracker/presenters/src/lib/pages/settings.page.ts b/libs/web/tracker/presenters/src/lib/pages/settings.page.ts index 332ea78..8462b83 100644 --- a/libs/web/tracker/presenters/src/lib/pages/settings.page.ts +++ b/libs/web/tracker/presenters/src/lib/pages/settings.page.ts @@ -17,7 +17,12 @@ import { untracked, } from '@angular/core'; import { NgTemplateOutlet } from '@angular/common'; -import { PiCheckboxComponent, PiIconComponent, PiNoteComponent } from '@pi/ui'; +import { + PiCheckboxComponent, + PiIconComponent, + PiNoteComponent, + PiSlideToggleComponent, +} from '@pi/ui'; import { GitIntegrationComponent } from '../ui/git-integration'; import { WebhooksComponent } from '../ui/webhooks'; import { TransferComponent } from '../ui/transfer'; @@ -151,6 +156,7 @@ function idFrom(name: string): string { NgTemplateOutlet, PiIconComponent, PiNoteComponent, + PiSlideToggleComponent, ], template: `
@@ -209,17 +215,15 @@ function idFrom(name: string): string { }

- + +
- + +
@if (facade.canManage()) { @@ -464,20 +464,14 @@ function idFrom(name: string): string { medias. El propietario y los admins sí pueden cerrarlo.

- +
+ + +
@@ -1108,59 +1102,12 @@ function idFrom(name: string): string { font-size: 0.8125rem; } } - .ts-switch { + .ts-toggle { display: inline-flex; align-items: center; gap: 0.625rem; font-size: 0.875rem; font-weight: 600; - cursor: pointer; - input { - position: absolute; - opacity: 0; - width: 1px; - height: 1px; - } - input:focus-visible + .ts-switch__track { - outline: 2px solid var(--ts-brand); - outline-offset: 2px; - } - input:disabled ~ * { - opacity: 0.6; - cursor: default; - } - } - .ts-switch__track { - position: relative; - width: 2.5rem; - height: 1.375rem; - border-radius: 999px; - background: var(--ts-line-strong); - transition: background-color 0.15s ease; - &::after { - content: ''; - position: absolute; - top: 3px; - left: 3px; - width: 1rem; - height: 1rem; - border-radius: 50%; - background: var(--ts-surface); - box-shadow: var(--ts-shadow); - transition: transform 0.15s ease; - } - } - .ts-switch input:checked + .ts-switch__track { - background: var(--ts-brand); - &::after { - transform: translateX(1.125rem); - } - } - .ts-danger { - border: 1px solid color-mix(in srgb, var(--ts-c-red) 45%, transparent); - h3 { - color: var(--ts-c-red); - } } .ts-danger__confirm { display: flex; @@ -1453,12 +1400,6 @@ function idFrom(name: string): string { display: grid; place-items: center; } - input[type='checkbox'] { - width: 1rem; - height: 1rem; - accent-color: var(--ts-brand); - cursor: pointer; - } .ts-type-icon { display: inline-grid; place-items: center; diff --git a/libs/web/tracker/presenters/src/lib/ui/client-share.ts b/libs/web/tracker/presenters/src/lib/ui/client-share.ts index e290e5a..8c77cec 100644 --- a/libs/web/tracker/presenters/src/lib/ui/client-share.ts +++ b/libs/web/tracker/presenters/src/lib/ui/client-share.ts @@ -7,7 +7,7 @@ import { input, untracked, } from '@angular/core'; -import { PiCheckboxComponent } from '@pi/ui'; +import { PiCheckboxComponent, PiSlideToggleComponent } from '@pi/ui'; import { ToastService } from '@task-stream/web/shared/ui'; import { provideSharingFacade, @@ -37,7 +37,7 @@ const DEFAULT_BLOCKS: SharedBlock[] = ['flow', 'sprint', 'releases']; @Component({ selector: 'ts-client-share', changeDetection: ChangeDetectionStrategy.OnPush, - imports: [PiCheckboxComponent], + imports: [PiCheckboxComponent, PiSlideToggleComponent], providers: [provideSharingFacade()], host: { class: 'ts-panel', role: 'region', 'aria-labelledby': 'share-title' }, template: ` @@ -49,17 +49,17 @@ const DEFAULT_BLOCKS: SharedBlock[] = ['flow', 'sprint', 'releases']; enseña personas ni tickets sueltos (salvo las épicas).

- + + @if (sharing.share(); as share) { @@ -186,53 +186,12 @@ const DEFAULT_BLOCKS: SharedBlock[] = ['flow', 'sprint', 'releases']; color: var(--ts-c-red); font-size: 0.875rem; } - .ts-switch { + .ts-toggle { display: inline-flex; align-items: center; gap: 0.625rem; font-size: 0.875rem; font-weight: 600; - cursor: pointer; - input { - position: absolute; - opacity: 0; - width: 1px; - height: 1px; - } - input:focus-visible + .ts-switch__track { - outline: 2px solid var(--ts-brand); - outline-offset: 2px; - } - input:disabled ~ * { - opacity: 0.6; - cursor: default; - } - } - .ts-switch__track { - position: relative; - width: 2.5rem; - height: 1.375rem; - border-radius: 999px; - background: var(--ts-line-strong); - transition: background-color 0.15s ease; - &::after { - content: ''; - position: absolute; - top: 3px; - left: 3px; - width: 1rem; - height: 1rem; - border-radius: 50%; - background: var(--ts-surface); - box-shadow: var(--ts-shadow); - transition: transform 0.15s ease; - } - } - .ts-switch input:checked + .ts-switch__track { - background: var(--ts-brand); - &::after { - transform: translateX(1.125rem); - } } `, })