| @@ -0,0 +1,93 @@ | |||
| export const semanticStatusColors = { | |||
| success: '#2E7D32', | |||
| warning: '#B45309', | |||
| error: '#B91C1C', | |||
| info: '#2563EB', | |||
| overdue: '#7F1D1D', | |||
| secondary: '#0F766E', | |||
| } as const | |||
| export const workspaceThemeTokens = { | |||
| colorPrimary: '#1F4E79', | |||
| colorSuccess: semanticStatusColors.success, | |||
| colorWarning: semanticStatusColors.warning, | |||
| colorError: semanticStatusColors.error, | |||
| colorInfo: semanticStatusColors.info, | |||
| colorBgBase: '#F7F9FC', | |||
| colorText: '#111827', | |||
| colorTextSecondary: '#4B5563', | |||
| colorBorder: '#D0D7E2', | |||
| borderRadius: 4, | |||
| fontFamily: 'Public Sans, Segoe UI, Arial, sans-serif', | |||
| fontSize: 14, | |||
| controlHeight: 28, | |||
| } as const | |||
| export const workspaceDensityProfile = { | |||
| compact: true, | |||
| controlHeight: workspaceThemeTokens.controlHeight, | |||
| baseUnit: 8, | |||
| } as const | |||
| export type WorkspaceViewportMode = | |||
| | 'read-reduced' | |||
| | 'compact-tri-pane' | |||
| | 'full-tri-pane' | |||
| export type WorkspaceStatus = | |||
| | 'onTrack' | |||
| | 'atRisk' | |||
| | 'blocked' | |||
| | 'inProgress' | |||
| | 'overdue' | |||
| export const statusDefinitions: Record< | |||
| WorkspaceStatus, | |||
| { color: string; label: string; iconLabel: string } | |||
| > = { | |||
| onTrack: { | |||
| color: semanticStatusColors.success, | |||
| label: 'On track', | |||
| iconLabel: 'Success status', | |||
| }, | |||
| atRisk: { | |||
| color: semanticStatusColors.warning, | |||
| label: 'At risk', | |||
| iconLabel: 'Warning status', | |||
| }, | |||
| blocked: { | |||
| color: semanticStatusColors.error, | |||
| label: 'Blocked', | |||
| iconLabel: 'Blocked status', | |||
| }, | |||
| inProgress: { | |||
| color: semanticStatusColors.info, | |||
| label: 'In progress', | |||
| iconLabel: 'Progress status', | |||
| }, | |||
| overdue: { | |||
| color: semanticStatusColors.overdue, | |||
| label: 'Overdue', | |||
| iconLabel: 'Critical overdue status', | |||
| }, | |||
| } | |||
| export function getWorkspaceViewportMode(width: number): WorkspaceViewportMode { | |||
| if (width < 1280) { | |||
| return 'read-reduced' | |||
| } | |||
| if (width < 1600) { | |||
| return 'compact-tri-pane' | |||
| } | |||
| return 'full-tri-pane' | |||
| } | |||
| export function isEditingAvailable(width: number) { | |||
| return getWorkspaceViewportMode(width) !== 'read-reduced' | |||
| } | |||
| export function isRightPanelCollapsible(width: number) { | |||
| return getWorkspaceViewportMode(width) === 'compact-tri-pane' | |||
| } | |||
Powered by TurnKey Linux.