diff --git a/index.html b/index.html index fa7f658..6b20ed6 100644 --- a/index.html +++ b/index.html @@ -3,8 +3,9 @@ + - EventHub Admin + CalenTIQ Admin
diff --git a/public/brand/mark-white.svg b/public/brand/mark-white.svg new file mode 100644 index 0000000..2270bfc --- /dev/null +++ b/public/brand/mark-white.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/brand/mark.svg b/public/brand/mark.svg new file mode 100644 index 0000000..699253f --- /dev/null +++ b/public/brand/mark.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..5712ba8 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/favicon.svg b/public/favicon.svg index 6893eb1..699253f 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1 +1,15 @@ - \ No newline at end of file + + + + + + + + + + + + + + + diff --git a/src/components/BrandWordmark.tsx b/src/components/BrandWordmark.tsx new file mode 100644 index 0000000..69c96a1 --- /dev/null +++ b/src/components/BrandWordmark.tsx @@ -0,0 +1,75 @@ +import React from 'react'; +import { cn } from '@/lib/utils'; + +type Size = 'sm' | 'md' | 'lg'; + +type Props = { + size?: Size; + className?: string; + /** Show Time Arc mark next to wordmark (default true). */ + withMark?: boolean; + /** Append muted "Admin" after the brand (sidebar / login). */ + withAdmin?: boolean; +}; + +const sizeMap: Record = { + sm: { mark: 'h-5 w-5', text: 'text-sm', admin: 'text-[11px]' }, + md: { mark: 'h-7 w-7', text: 'text-2xl', admin: 'text-sm' }, + lg: { mark: 'h-10 w-10', text: 'text-4xl', admin: 'text-base' }, +}; + +/** + * Public brand lockup: Time Arc + CalenTIQ (Admin). + * Uses currentColor so the mark follows theme foreground. + */ +const BrandWordmark: React.FC = ({ + size = 'md', + className, + withMark = true, + withAdmin = false, +}) => { + const s = sizeMap[size]; + return ( +
+ {withMark && ( + + + + + + + + + + + + + + + + )} +

+ CalenTIQ + {withAdmin && ( + Admin + )} +

+
+ ); +}; + +export default BrandWordmark; diff --git a/src/layouts/ControlCenterLayout.tsx b/src/layouts/ControlCenterLayout.tsx index fb0ce5c..8504fb7 100644 --- a/src/layouts/ControlCenterLayout.tsx +++ b/src/layouts/ControlCenterLayout.tsx @@ -38,6 +38,7 @@ import { } from '@/config/adminAccess'; import { notify } from '@/lib/notify'; import { cn } from '@/lib/utils'; +import BrandWordmark from '@/components/BrandWordmark'; import { testid } from '@/lib/testid'; import { getTableDensity, toggleTableDensity, type TableDensity } from '@/lib/density'; import { Button } from '@/components/ui/button'; @@ -251,11 +252,13 @@ const ControlCenterLayout: React.FC = () => { collapsed ? 'w-16' : 'w-60' )} > -
+
{!collapsed && ( - - {import.meta.env.VITE_APP_TITLE || t('common.appTitle')} - + )}