diff --git a/app/components/Header.js b/app/components/Header.js index ae3fc91..2b58831 100644 --- a/app/components/Header.js +++ b/app/components/Header.js @@ -1,5 +1,6 @@ import Logo from "./Logo"; -import NavigationItem from "./NavigationItem"; +import MenuBar from "./MenuBar"; +import MenuBarItem from "./MenuBarItem"; import Button from "./Button"; import AvatarContainer from "./AvatarContainer"; import Avatar from "./Avatar"; @@ -7,50 +8,111 @@ import Avatar from "./Avatar"; export default function Header() { return (
-
- {/* Logo */} +
-
+
+
+ +
- {/* Navigation */}
- +
+ + + Use cases + + + Learn + + + About + + + Log in + + +
- +
+ + + Use cases + + + Learn + + + About + + +
+ +
+ + Log in + + +
+ +
+ +
diff --git a/app/components/Logo.js b/app/components/Logo.js index f4eee5a..a0f8a77 100644 --- a/app/components/Logo.js +++ b/app/components/Logo.js @@ -12,9 +12,16 @@ export default function Logo({ size = "default", showText = true }) { containerHeight: "h-[20.85px]", gap: "gap-[2.11px]", textSize: "text-[11.57px]", - lineHeight: "leading-[14px]", + lineHeight: "leading-[14.24px]", iconSize: "w-[14.24px] h-[14.24px]", }, + headerMd: { + containerHeight: "h-[17.91px]", + gap: "gap-[6.51px]", + textSize: "text-[17.89px]", + lineHeight: "leading-[22.02px]", + iconSize: "w-[22.02px] h-[22.02px]", + }, headerLg: { containerHeight: "h-[36px]", gap: "gap-[7px]", diff --git a/app/components/MenuBar.js b/app/components/MenuBar.js new file mode 100644 index 0000000..3490009 --- /dev/null +++ b/app/components/MenuBar.js @@ -0,0 +1,9 @@ +export default function MenuBar({ children, className = "", ...props }) { + const baseStyles = `flex items-center px-[var(--spacing-scale-004)] py-[var(--spacing-scale-004)] gap-[var(--spacing-scale-001)] ${className}`; + + return ( + + ); +} diff --git a/app/components/MenuBarItem.js b/app/components/MenuBarItem.js new file mode 100644 index 0000000..c5ee277 --- /dev/null +++ b/app/components/MenuBarItem.js @@ -0,0 +1,51 @@ +export default function MenuBarItem({ + href = "#", + children, + variant = "default", + size = "default", + className = "", + disabled = false, + ...props +}) { + const variantStyles = { + default: + "bg-transparent text-[var(--color-content-default-brand-primary)] border border-transparent hover:bg-[var(--color-surface-default-tertiary)] hover:text-[var(--color-content-default-brand-primary)] active:bg-transparent active:text-[var(--color-content-default-brand-primary)] active:border-[var(--color-content-default-brand-primary)] disabled:bg-[var(--color-surface-default-tertiary)] disabled:text-[var(--color-content-default-tertiary)] disabled:border-[var(--color-content-default-tertiary)] disabled:opacity-50 disabled:cursor-not-allowed", + }; + + const sizeStyles = { + default: + "px-[var(--spacing-measures-spacing-016)] py-[var(--spacing-measures-spacing-016)] gap-[var(--spacing-scale-004)]", + xsmall: + "px-[var(--spacing-scale-004)] py-[var(--spacing-scale-002)] gap-[var(--spacing-scale-004)]", + }; + + const textStyles = { + default: + "font-['Inter'] text-[10px] leading-[12px] font-medium tracking-[0%]", + xsmall: + "font-['Inter'] text-[10px] leading-[12px] font-medium tracking-[0%]", + }; + + const baseStyles = `inline-flex items-center ${sizeStyles[size]} rounded-[var(--radius-measures-radius-full)] ${textStyles[size]} transition-all duration-200 cursor-pointer`; + + let finalVariant = variant; + if (disabled) { + finalVariant = "default"; + } + + const combinedStyles = `${baseStyles} ${variantStyles[finalVariant]} ${className}`; + + if (disabled) { + return ( + + {children} + + ); + } + + return ( + + {children} + + ); +}