54 lines
1.2 KiB
TypeScript
54 lines
1.2 KiB
TypeScript
export type CategoryId = "server" | "private" | "work" | "tools" | "ai";
|
|
|
|
export type TileSize = "1x1" | "2x1" | "2x2";
|
|
|
|
export type OpenBehavior = "workspace" | "external" | "popup";
|
|
|
|
export interface ShortcutTile {
|
|
id: string;
|
|
title: string;
|
|
description: string;
|
|
url: string;
|
|
icon: string;
|
|
size?: TileSize;
|
|
badge?: string;
|
|
accentColor?: string;
|
|
/**
|
|
* "workspace" = ouvre dans un onglet intégré à Home (iframe)
|
|
* "popup" = ouvre une fenêtre Chromium dédiée sans barre d'adresse (idéal pour Google Docs/Drive qui bloquent les iframes)
|
|
* "external" = ouvre un onglet navigateur classique
|
|
*/
|
|
openBehavior?: OpenBehavior;
|
|
}
|
|
|
|
export interface WorkspaceTab {
|
|
id: string;
|
|
label: string;
|
|
icon?: string;
|
|
tiles: ShortcutTile[];
|
|
}
|
|
|
|
export interface EnvironmentCategory {
|
|
id: CategoryId | string;
|
|
name: string;
|
|
subtitle: string;
|
|
icon: string;
|
|
tabs: WorkspaceTab[];
|
|
}
|
|
|
|
export interface OpenWindowTab {
|
|
id: string;
|
|
tileId: string;
|
|
title: string;
|
|
url: string;
|
|
icon: string;
|
|
accentColor?: string;
|
|
}
|
|
|
|
export interface DashboardData {
|
|
version: string;
|
|
categories: EnvironmentCategory[];
|
|
dockTileIds?: string[];
|
|
quickNote?: string;
|
|
}
|