diff --git a/apps/admin-x-design-system/.storybook/preview.tsx b/apps/admin-x-design-system/.storybook/preview.tsx index f844e552ce..1aa732fd80 100644 --- a/apps/admin-x-design-system/.storybook/preview.tsx +++ b/apps/admin-x-design-system/.storybook/preview.tsx @@ -7,6 +7,46 @@ import type { Preview } from "@storybook/react"; import DesignSystemProvider from '../src/providers/DesignSystemProvider'; import adminxTheme from './adminx-theme'; +// import { MINIMAL_VIEWPORTS } from '@storybook/addon-viewport'; + +const customViewports = { + sm: { + name: 'sm', + styles: { + width: '480px', + height: '801px', + }, + }, + md: { + name: 'md', + styles: { + width: '640px', + height: '801px', + }, + }, + lg: { + name: 'lg', + styles: { + width: '1024px', + height: '801px', + }, + }, + xl: { + name: 'xl', + styles: { + width: '1320px', + height: '801px', + }, + }, + tablet: { + name: 'tablet', + styles: { + width: '860px', + height: '801px', + }, + }, +}; + const preview: Preview = { parameters: { actions: { argTypesRegex: "^on[A-Z].*" }, @@ -25,6 +65,11 @@ const preview: Preview = { docs: { theme: adminxTheme, }, + viewport: { + viewports: { + ...customViewports, + }, + }, }, decorators: [ (Story, context) => { diff --git a/apps/admin-x-design-system/src/global/Button.tsx b/apps/admin-x-design-system/src/global/Button.tsx index 8460476d86..6a413e71b8 100644 --- a/apps/admin-x-design-system/src/global/Button.tsx +++ b/apps/admin-x-design-system/src/global/Button.tsx @@ -1,4 +1,4 @@ -import Icon from './Icon'; +import Icon, {IconSize} from './Icon'; import React, {HTMLProps} from 'react'; import clsx from 'clsx'; import {LoadingIndicator, LoadingIndicatorColor, LoadingIndicatorSize} from './LoadingIndicator'; @@ -11,6 +11,7 @@ export interface ButtonProps extends Omit, 'label' label?: React.ReactNode; hideLabel?: boolean; icon?: string; + iconSize?: IconSize; iconColorClass?: string; key?: string; color?: ButtonColor; @@ -24,6 +25,7 @@ export interface ButtonProps extends Omit, 'label' loading?: boolean; loadingIndicatorSize?: LoadingIndicatorSize; loadingIndicatorColor?: LoadingIndicatorColor; + outlineOnMobile?: boolean; onClick?: (e?:React.MouseEvent) => void; } @@ -32,6 +34,7 @@ const Button: React.FC = ({ label = '', hideLabel = false, icon = '', + iconSize, iconColorClass, color = 'clear', fullWidth, @@ -43,6 +46,7 @@ const Button: React.FC = ({ tag = 'button', loading = false, loadingIndicatorColor, + outlineOnMobile = false, onClick, ...props }) => { @@ -108,7 +112,8 @@ const Button: React.FC = ({ break; default: className = clsx( - link ? ' text-black hover:text-grey-800 dark:text-white' : ` text-black dark:text-white dark:hover:bg-grey-900 ${!disabled && 'hover:bg-grey-200'}`, + link ? ' text-black hover:text-grey-800 dark:text-white' : `text-black dark:text-white dark:hover:bg-grey-900 ${!disabled && 'hover:bg-grey-200'}`, + (outlineOnMobile && !link) && 'border border-grey-300 hover:border-transparent md:border-transparent', className ); loadingIndicatorColor = 'dark'; @@ -128,8 +133,10 @@ const Button: React.FC = ({ labelClasses += (label && hideLabel) ? 'sr-only' : ''; labelClasses += loading ? 'invisible' : ''; + iconSize = iconSize || ((size === 'sm') || (label && icon) ? 'sm' : 'md'); + const buttonChildren = <> - {icon && } + {icon && } {label} {loading &&
Loading...
} ; diff --git a/apps/admin-x-design-system/src/global/ButtonGroup.tsx b/apps/admin-x-design-system/src/global/ButtonGroup.tsx index 89e25ebc51..d35c7e94cf 100644 --- a/apps/admin-x-design-system/src/global/ButtonGroup.tsx +++ b/apps/admin-x-design-system/src/global/ButtonGroup.tsx @@ -10,10 +10,11 @@ export interface ButtonGroupProps { link?: boolean; linkWithPadding?: boolean; clearBg?: boolean; + outlineOnMobile?: boolean; className?: string; } -const ButtonGroup: React.FC = ({size = 'md', buttons, link, linkWithPadding, clearBg = true, className}) => { +const ButtonGroup: React.FC = ({size = 'md', buttons, link, linkWithPadding, clearBg = true, outlineOnMobile, className}) => { let groupColorClasses = clsx( 'flex items-center justify-start rounded', link ? 'gap-4' : 'gap-5', @@ -24,6 +25,7 @@ const ButtonGroup: React.FC = ({size = 'md', buttons, link, li groupColorClasses = clsx( 'transition-all hover:bg-grey-200 dark:hover:bg-grey-900', size === 'sm' ? 'h-7 px-3' : 'h-[34px] px-4', + outlineOnMobile && 'border border-grey-300 hover:border-transparent md:border-transparent', groupColorClasses ); } diff --git a/apps/admin-x-design-system/src/global/layout/AppMenu.tsx b/apps/admin-x-design-system/src/global/layout/AppMenu.tsx index a6ce8d929a..01864596aa 100644 --- a/apps/admin-x-design-system/src/global/layout/AppMenu.tsx +++ b/apps/admin-x-design-system/src/global/layout/AppMenu.tsx @@ -3,7 +3,7 @@ import Button from '../Button'; const PageMenu: React.FC = () => { return ( -