Skip to content

Commit acf367d

Browse files
Copilothotlong
andcommitted
fix: address code review - validate stored width, extract constants, dedupe label resolver
- sidebar.tsx: Validate localStorage width against min/max bounds, handle NaN - sidebar.tsx: Extract SIDEBAR_DEFAULT_WIDTH_PX and SIDEBAR_CLICK_THRESHOLD_PX constants - header-bar.tsx: Use shared resolveI18nLabel from @object-ui/react instead of local duplicate - breadcrumb.tsx: Use shared resolveI18nLabel from @object-ui/react instead of local duplicate Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
1 parent 0486f28 commit acf367d

File tree

3 files changed

+15
-22
lines changed

3 files changed

+15
-22
lines changed

packages/components/src/renderers/data-display/breadcrumb.tsx

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,7 @@ import { ComponentRegistry } from '@object-ui/core';
1010
import type { BreadcrumbSchema } from '@object-ui/types';
1111
import { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator } from '../../ui/breadcrumb';
1212
import { renderChildren } from '../../lib/utils';
13-
14-
/** Resolve a label that may be a plain string or an I18nLabel object */
15-
function resolveItemLabel(label: string | { key?: string; defaultValue?: string } | undefined): string {
16-
if (!label) return '';
17-
if (typeof label === 'string') return label;
18-
return label.defaultValue || label.key || '';
19-
}
13+
import { resolveI18nLabel } from '@object-ui/react';
2014

2115
ComponentRegistry.register('breadcrumb',
2216
({ schema, ...props }: { schema: BreadcrumbSchema; [key: string]: any }) => {
@@ -38,9 +32,9 @@ ComponentRegistry.register('breadcrumb',
3832
<div key={idx} className="flex items-center">
3933
<BreadcrumbItem>
4034
{idx === (schema.items?.length || 0) - 1 ? (
41-
<BreadcrumbPage>{resolveItemLabel(item.label)}</BreadcrumbPage>
35+
<BreadcrumbPage>{resolveI18nLabel(item.label) ?? ''}</BreadcrumbPage>
4236
) : (
43-
<BreadcrumbLink href={item.href}>{resolveItemLabel(item.label)}</BreadcrumbLink>
37+
<BreadcrumbLink href={item.href}>{resolveI18nLabel(item.label) ?? ''}</BreadcrumbLink>
4438
)}
4539
</BreadcrumbItem>
4640
{idx < (schema.items?.length || 0) - 1 && <BreadcrumbSeparator />}

packages/components/src/renderers/navigation/header-bar.tsx

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import React from 'react';
1010
import { ComponentRegistry } from '@object-ui/core';
1111
import type { HeaderBarSchema } from '@object-ui/types';
12+
import { resolveI18nLabel } from '@object-ui/react';
1213
import {
1314
SidebarTrigger,
1415
Separator,
@@ -20,13 +21,6 @@ import {
2021
BreadcrumbPage
2122
} from '../../ui';
2223

23-
/** Resolve a label that may be a plain string or an I18nLabel object */
24-
function resolveCrumbLabel(label: string | { key?: string; defaultValue?: string } | undefined): string {
25-
if (!label) return '';
26-
if (typeof label === 'string') return label;
27-
return label.defaultValue || label.key || '';
28-
}
29-
3024
ComponentRegistry.register('header-bar',
3125
({ schema }: { schema: HeaderBarSchema }) => (
3226
<header className="flex h-14 sm:h-16 shrink-0 items-center gap-2 border-b px-3 sm:px-4">
@@ -38,9 +32,9 @@ ComponentRegistry.register('header-bar',
3832
<React.Fragment key={idx}>
3933
<BreadcrumbItem>
4034
{idx === schema.crumbs.length - 1 ? (
41-
<BreadcrumbPage>{resolveCrumbLabel(crumb.label)}</BreadcrumbPage>
35+
<BreadcrumbPage>{resolveI18nLabel(crumb.label) ?? ''}</BreadcrumbPage>
4236
) : (
43-
<BreadcrumbLink href={crumb.href || '#'}>{resolveCrumbLabel(crumb.label)}</BreadcrumbLink>
37+
<BreadcrumbLink href={crumb.href || '#'}>{resolveI18nLabel(crumb.label) ?? ''}</BreadcrumbLink>
4438
)}
4539
</BreadcrumbItem>
4640
{idx < schema.crumbs.length - 1 && <BreadcrumbSeparator />}

packages/components/src/ui/sidebar.tsx

Lines changed: 9 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)