From e4a544fd0fa5bd0eda4a790ccd547a8ef0165b42 Mon Sep 17 00:00:00 2001 From: TheoryOfNekomata Date: Mon, 11 Sep 2023 10:55:34 +0800 Subject: [PATCH] Update components Expose classname for extending components. --- packages/base/package.json | 2 +- packages/base/src/common.ts | 4 +- packages/base/src/plugin-tailwind.ts | 2 +- packages/react/package.json | 2 +- packages/react/src/layouts/Basic/index.tsx | 10 ++++- .../react/src/layouts/LeftSidebar/index.tsx | 21 +++++++-- .../src/layouts/LeftSidebarWithMenu/index.tsx | 45 ++++++++++++++++--- .../src/layouts/RightSidebarStatic/index.tsx | 21 +++++++-- .../src/widgets/LeftSidebarBase/index.tsx | 2 + .../widgets/LeftSidebarWithMenuBase/index.tsx | 8 +++- .../src/widgets/RightSidebarBase/index.tsx | 9 +++- packages/react/src/widgets/TopBar/index.tsx | 2 + 12 files changed, 106 insertions(+), 22 deletions(-) diff --git a/packages/base/package.json b/packages/base/package.json index a440883..69618de 100644 --- a/packages/base/package.json +++ b/packages/base/package.json @@ -1,6 +1,6 @@ { "name": "@tesseract-design/viewfinder-base", - "version": "0.0.0", + "version": "0.0.1", "files": [ "dist", "src" diff --git a/packages/base/src/common.ts b/packages/base/src/common.ts index 40d4fad..5845fdf 100644 --- a/packages/base/src/common.ts +++ b/packages/base/src/common.ts @@ -1 +1,3 @@ -export type Span = 'narrow' | 'normal' | 'wide'; +export const AVAILABLE_SPANS = ['narrow', 'normal', 'wide'] as const; + +export type Span = typeof AVAILABLE_SPANS[number]; diff --git a/packages/base/src/plugin-tailwind.ts b/packages/base/src/plugin-tailwind.ts index 2b188b7..566e21b 100644 --- a/packages/base/src/plugin-tailwind.ts +++ b/packages/base/src/plugin-tailwind.ts @@ -9,7 +9,7 @@ export interface ViewfinderPluginOptions { colorSidebarMenu?: string; } -export const plugin = tailwindPlugin.withOptions( +export const plugin = tailwindPlugin.withOptions( ({ baseWidth = 360 as const, topbarHeight = '4rem' as const, diff --git a/packages/react/package.json b/packages/react/package.json index f4511ba..6e668b9 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@tesseract-design/viewfinder-react", - "version": "0.0.0", + "version": "0.0.1", "files": [ "dist", "src" diff --git a/packages/react/src/layouts/Basic/index.tsx b/packages/react/src/layouts/Basic/index.tsx index 6ee8857..d9bb3bf 100644 --- a/packages/react/src/layouts/Basic/index.tsx +++ b/packages/react/src/layouts/Basic/index.tsx @@ -9,6 +9,7 @@ export interface RootProps extends React.HTMLProps { export const Root = React.forwardRef(({ children, topBarWidget, + className, ...etcProps }, ref) => ( <> @@ -16,7 +17,10 @@ export const Root = React.forwardRef(({
{children} @@ -33,14 +37,18 @@ export type ContentContainerProps = Omit, 'span' export const ContentContainer = React.forwardRef(({ children, span = 'normal', + className, + ...etcProps }, ref) => { return (
diff --git a/packages/react/src/layouts/LeftSidebar/index.tsx b/packages/react/src/layouts/LeftSidebar/index.tsx index a9af48f..69fb367 100644 --- a/packages/react/src/layouts/LeftSidebar/index.tsx +++ b/packages/react/src/layouts/LeftSidebar/index.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import clsx from 'clsx'; export interface RootProps extends React.HTMLProps { sidebarBaseWidget?: React.ReactNode; @@ -9,6 +10,7 @@ export const Root = React.forwardRef(({ children, topBarWidget, sidebarBaseWidget, + className, ...etcProps }, ref) => ( <> @@ -18,7 +20,10 @@ export const Root = React.forwardRef(({ {...etcProps} ref={ref} data-viewfinder="main" - className="box-border md:pl-[calc(50%-(var(--base-width)*0.5))]" + className={clsx( + 'box-border md:pl-[calc(50%-(var(--base-width)*0.5))]', + className, + )} > {children}
@@ -29,9 +34,15 @@ export interface ContentContainerProps extends React.HTMLProps { export const MainContentContainer = React.forwardRef(({ children, + className, + ...etcProps }, ref) => (
{children} @@ -44,11 +55,15 @@ export interface SidebarMainContainerProps extends React.HTMLProps(({ children, + className, ...etcProps }, ref) => (
{children} diff --git a/packages/react/src/layouts/LeftSidebarWithMenu/index.tsx b/packages/react/src/layouts/LeftSidebarWithMenu/index.tsx index d26dee6..5ba154f 100644 --- a/packages/react/src/layouts/LeftSidebarWithMenu/index.tsx +++ b/packages/react/src/layouts/LeftSidebarWithMenu/index.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import clsx from 'clsx'; export interface RootProps extends React.HTMLProps { sidebarBaseWidget?: React.ReactNode; @@ -9,6 +10,7 @@ export const Root = React.forwardRef(({ children, topBarWidget, sidebarBaseWidget, + className, ...etcProps }, ref) => ( <> @@ -18,7 +20,10 @@ export const Root = React.forwardRef(({ {...etcProps} ref={ref} data-viewfinder="main" - className="box-border pb-menu md:pb-0 md:pl-[calc(50%-(var(--base-width)*0.5))]" + className={clsx( + 'box-border pb-menu md:pb-0 md:pl-[calc(50%-(var(--base-width)*0.5))]', + className, + )} > {children}
@@ -29,9 +34,15 @@ export interface ContentContainerProps extends React.HTMLProps { export const MainContentContainer = React.forwardRef(({ children, + className, + ...etcProps }, ref) => (
{children} @@ -44,11 +55,15 @@ export interface SidebarMainContainerProps extends React.HTMLProps(({ children, + className, ...etcProps }, ref) => (
{children} @@ -61,11 +76,15 @@ export interface SidebarMenuItemIconProps extends React.HTMLProps(({ children, + className, ...etcProps }, ref) => ( {children} @@ -76,11 +95,15 @@ SidebarMenuItemIcon.displayName = 'SidebarMenuItemIcon'; export const SidebarMenuContainer = React.forwardRef(({ children, + className, ...etcProps }, ref) => ( {children} @@ -92,11 +115,15 @@ SidebarMenuContainer.displayName = 'SidebarMenuContainer'; export const MoreSidebarMenuItemIcon = React.forwardRef(({ children, + className, ...etcProps }, ref) => ( {children} @@ -107,11 +134,15 @@ MoreSidebarMenuItemIcon.displayName = 'MoreSidebarMenuItemIcon'; export const MoreSidebarMenuContainer = React.forwardRef(({ children, + className, ...etcProps }, ref) => ( {children} diff --git a/packages/react/src/layouts/RightSidebarStatic/index.tsx b/packages/react/src/layouts/RightSidebarStatic/index.tsx index 3ee2e30..60c47f0 100644 --- a/packages/react/src/layouts/RightSidebarStatic/index.tsx +++ b/packages/react/src/layouts/RightSidebarStatic/index.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import clsx from 'clsx'; export interface RootProps extends React.HTMLProps { sidebarBaseWidget?: React.ReactNode; @@ -9,6 +10,7 @@ export const Root = React.forwardRef(({ children, topBarWidget, sidebarBaseWidget, + className, ...etcProps }, ref) => ( <> @@ -17,7 +19,10 @@ export const Root = React.forwardRef(({ {...etcProps} ref={ref} data-viewfinder="main" - className="box-border md:pr-[calc(50%-(var(--base-width)*0.5))]" + className={clsx( + 'box-border md:pr-[calc(50%-(var(--base-width)*0.5))]', + className, + )} > {children}
@@ -32,9 +37,15 @@ export interface ContentContainerProps extends React.HTMLProps { export const MainContentContainer = React.forwardRef(({ children, + className, + ...etcProps }, ref) => (
{children} @@ -47,11 +58,15 @@ export interface SidebarMainContainerProps extends React.HTMLProps(({ children, + className, ...etcProps }, ref) => (
{children} diff --git a/packages/react/src/widgets/LeftSidebarBase/index.tsx b/packages/react/src/widgets/LeftSidebarBase/index.tsx index fc67413..47558c1 100644 --- a/packages/react/src/widgets/LeftSidebarBase/index.tsx +++ b/packages/react/src/widgets/LeftSidebarBase/index.tsx @@ -6,6 +6,7 @@ export interface LeftSidebarBaseProps extends React.HTMLProps {} export const LeftSidebarBase = React.forwardRef(({ children, open = false, + className, ...etcProps }, ref) => { return ( @@ -13,6 +14,7 @@ export const LeftSidebarBase = React.forwardRef { const primarySidebarMenuItems = sidebarMenuItems.filter(s => !s.secondary) @@ -58,8 +59,11 @@ export const LeftSidebarWithMenuBase = React.forwardRef
{} export const RightSidebarStaticBase = React.forwardRef(({ children, + className, ...etcProps }, ref) => (
(({ menuLink, userLink, children, + className, ...etcProps }, ref) => { return (