chore: update TypeScript build info cache

This commit is contained in:
2025-10-01 08:20:34 -04:00
parent fe4c968367
commit 89c8315820
140 changed files with 4635 additions and 81773 deletions
@@ -0,0 +1,36 @@
/* Styles for Note Preview Card */
:host {
display: block;
animation: fadeIn 0.15s ease-out;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(-4px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.preview-card {
max-height: 400px;
width: 400px;
}
.line-clamp-5 {
display: -webkit-box;
-webkit-line-clamp: 5;
line-clamp: 5;
-webkit-box-orient: vertical;
overflow: hidden;
}
@media (max-width: 640px) {
.preview-card {
width: calc(100vw - 2rem);
max-width: 400px;
}
}
@@ -0,0 +1,95 @@
import { Component, ChangeDetectionStrategy, input, output, HostListener } from '@angular/core';
import { CommonModule } from '@angular/common';
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
export interface PreviewData {
title: string;
excerpt: string;
noteId: string;
}
@Component({
selector: 'app-note-preview-card',
standalone: true,
imports: [CommonModule],
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
<div
class="preview-card bg-white dark:bg-gray-800 rounded-2xl shadow-xl border border-gray-200 dark:border-gray-700 p-4 max-w-md overflow-hidden"
(mouseenter)="mouseEnter.emit()"
(mouseleave)="mouseLeave.emit()">
<h2 class="font-bold text-lg mb-2 text-gray-900 dark:text-gray-100 truncate">
{{ previewData().title }}
</h2>
<div
class="prose prose-sm dark:prose-invert max-w-none line-clamp-5 text-gray-700 dark:text-gray-300"
[innerHTML]="sanitizedExcerpt()">
</div>
<div class="mt-3 flex justify-end">
<button
(click)="openNote.emit()"
class="text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300 transition-colors p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700"
aria-label="Ouvrir la note">
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" />
</svg>
</button>
</div>
</div>
`,
styles: [`
:host {
display: block;
animation: fadeIn 0.15s ease-out;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(-4px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.preview-card {
max-height: 400px;
width: 400px;
}
.line-clamp-5 {
display: -webkit-box;
-webkit-line-clamp: 5;
-webkit-box-orient: vertical;
overflow: hidden;
}
@media (max-width: 640px) {
.preview-card {
width: calc(100vw - 2rem);
max-width: 400px;
}
}
`]
})
export class NotePreviewCardComponent {
previewData = input.required<PreviewData>();
openNote = output<void>();
mouseEnter = output<void>();
mouseLeave = output<void>();
sanitizedExcerpt(): string {
// Retourne le HTML directement - Angular le sanitize automatiquement
return this.previewData().excerpt || '';
}
@HostListener('document:keydown.escape')
onEscapeKey(): void {
this.mouseLeave.emit();
}
}