|
- 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'
- }
|