Skip to content

Commit d74dafc

Browse files
authored
refactor(ui): move header component to ui package (#250)
* refactor(ui): move header component to ui package * chore(common): formatting
1 parent 7561580 commit d74dafc

File tree

4 files changed

+51
-28
lines changed

4 files changed

+51
-28
lines changed

.changeset/move-header-to-ui.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@openzeppelin/ui-builder-ui': minor
3+
---
4+
5+
Move Header component to UI package
Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import { Menu } from 'lucide-react';
2-
31
import { WalletConnectionHeader } from '@openzeppelin/ui-builder-react-core';
2+
import { Header as UIHeader } from '@openzeppelin/ui-builder-ui';
43

54
interface HeaderProps {
65
title?: string;
@@ -13,31 +12,10 @@ interface HeaderProps {
1312
*/
1413
export const Header = ({ title, onOpenSidebar }: HeaderProps) => {
1514
return (
16-
<header className="border-b border-[#F5F5F5] bg-background">
17-
<div className="flex h-16 items-center px-3 sm:px-4 md:px-5 min-w-0">
18-
{/* Mobile menu button */}
19-
<button
20-
type="button"
21-
aria-label="Open menu"
22-
onClick={onOpenSidebar}
23-
className="mr-2 sm:mr-3 inline-flex items-center justify-center rounded-md p-2 text-primary hover:bg-muted focus:outline-none focus:ring-2 focus:ring-primary xl:hidden"
24-
>
25-
<Menu className="size-5" />
26-
</button>
27-
{/* Left side - Title (conditional) */}
28-
{title && (
29-
<div className="flex items-center min-w-0">
30-
<h1 className="truncate max-w-[50vw] text-base font-semibold text-foreground">
31-
{title}
32-
</h1>
33-
</div>
34-
)}
35-
36-
{/* Right side - Wallet Connection */}
37-
<div className="ml-auto flex items-center">
38-
<WalletConnectionHeader />
39-
</div>
40-
</div>
41-
</header>
15+
<UIHeader
16+
title={title}
17+
onOpenSidebar={onOpenSidebar}
18+
rightContent={<WalletConnectionHeader />}
19+
/>
4220
);
4321
};
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { Menu } from 'lucide-react';
2+
import React from 'react';
3+
4+
export interface HeaderProps {
5+
title?: string;
6+
/** Open the mobile sidebar */
7+
onOpenSidebar?: () => void;
8+
/** Content to display on the right side of the header */
9+
rightContent?: React.ReactNode;
10+
}
11+
12+
export const Header = ({ title, onOpenSidebar, rightContent }: HeaderProps): React.ReactElement => {
13+
return (
14+
<header className="border-b border-[#F5F5F5] bg-background">
15+
<div className="flex h-16 items-center px-3 sm:px-4 md:px-5 min-w-0">
16+
{/* Mobile menu button */}
17+
<button
18+
type="button"
19+
aria-label="Open menu"
20+
onClick={onOpenSidebar}
21+
className="mr-2 sm:mr-3 inline-flex items-center justify-center rounded-md p-2 text-primary hover:bg-muted focus:outline-none focus:ring-2 focus:ring-primary xl:hidden"
22+
>
23+
<Menu className="size-5" />
24+
</button>
25+
{/* Left side - Title (conditional) */}
26+
{title && (
27+
<div className="flex items-center min-w-0">
28+
<h1 className="truncate max-w-[50vw] text-base font-semibold text-foreground">
29+
{title}
30+
</h1>
31+
</div>
32+
)}
33+
34+
{/* Right side - Wallet Connection or other content */}
35+
<div className="ml-auto flex items-center">{rightContent}</div>
36+
</div>
37+
</header>
38+
);
39+
};

packages/ui/src/components/ui/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export * from './empty-state';
1111
export * from './external-link';
1212
export * from './footer';
1313
export * from './form';
14+
export * from './header';
1415
export * from './input';
1516
export * from './label';
1617
export * from './loading-button';

0 commit comments

Comments
 (0)