From f2f3e2a22d1cfa408c9cdab8c34e1d8f8929d641 Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Wed, 31 May 2023 09:36:50 +0200 Subject: [PATCH] Added window chrome comp. to AdminX Design System refs. https://github.com/TryGhost/Team/issues/3328 --- .../global/DesktopChrome.stories.tsx | 70 +++++++++++++++++++ .../src/admin-x-ds/global/DesktopChrome.tsx | 55 +++++++++++++++ .../src/admin-x-ds/global/PreviewModal.tsx | 2 +- 3 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 ghost/admin-x-settings/src/admin-x-ds/global/DesktopChrome.stories.tsx create mode 100644 ghost/admin-x-settings/src/admin-x-ds/global/DesktopChrome.tsx diff --git a/ghost/admin-x-settings/src/admin-x-ds/global/DesktopChrome.stories.tsx b/ghost/admin-x-settings/src/admin-x-ds/global/DesktopChrome.stories.tsx new file mode 100644 index 0000000000..27489f5595 --- /dev/null +++ b/ghost/admin-x-settings/src/admin-x-ds/global/DesktopChrome.stories.tsx @@ -0,0 +1,70 @@ +import type {Meta, StoryObj} from '@storybook/react'; + +import DesktopChrome from './DesktopChrome'; + +const meta = { + title: 'Global / Chrome / Desktop', + component: DesktopChrome, + tags: ['autodocs'] +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + children: ( +
+ Window contents +
+ ) + } +}; + +export const Small: Story = { + args: { + children: ( +
+ Window contents +
+ ), + size: 'sm' + } +}; + +export const WithBorder: Story = { + args: { + children: ( +
+ Window contents +
+ ), + border: true + } +}; + +export const NoTrafficLights: Story = { + args: { + children: ( +
+ Window contents +
+ ), + trafficLights: false + } +}; + +export const WithHeaderContents: Story = { + args: { + children: ( +
+ Window contents +
+ ), + header: ( +
+ Window header +
+ ) + } +}; \ No newline at end of file diff --git a/ghost/admin-x-settings/src/admin-x-ds/global/DesktopChrome.tsx b/ghost/admin-x-settings/src/admin-x-ds/global/DesktopChrome.tsx new file mode 100644 index 0000000000..fff95831ac --- /dev/null +++ b/ghost/admin-x-settings/src/admin-x-ds/global/DesktopChrome.tsx @@ -0,0 +1,55 @@ +import React from 'react'; + +export type DesktopChromeSize = 'sm' | 'md'; + +interface DesktopChromeProps { + size?: DesktopChromeSize; + trafficLights?: boolean; + children?: React.ReactNode; + chromeClasses?: string; + headerClasses?: string; + contentClasses?: string; + header?: React.ReactNode; + headerCenter?: boolean; + border?: boolean; +} + +const DesktopChrome: React.FC = ({ + size = 'md', + trafficLights = true, + children, + chromeClasses = '', + headerClasses = '', + contentClasses = '', + header, + headerCenter = true, + border = false +}) => { + let containerSize = size === 'sm' ? 'h-6 p-2' : 'h-10 p-3'; + const trafficLightSize = size === 'sm' ? 'w-[6px] h-[6px]' : 'w-[10px] h-[10px]'; + const trafficLightContainerStyle = size === 'sm' ? 'gap-[5px] w-[36px] ' : 'gap-2 w-[56px] '; + + if (headerCenter) { + containerSize += size === 'sm' ? ' pr-[48px]' : ' pr-[68px]'; + } + + return ( +
+
+ {trafficLights && +
+
+
+
+
+ } + {header && header} +
+
+ {children} +
+
+ ); +}; + +export default DesktopChrome; \ No newline at end of file diff --git a/ghost/admin-x-settings/src/admin-x-ds/global/PreviewModal.tsx b/ghost/admin-x-settings/src/admin-x-ds/global/PreviewModal.tsx index f0c733d524..6cb8fffa70 100644 --- a/ghost/admin-x-settings/src/admin-x-ds/global/PreviewModal.tsx +++ b/ghost/admin-x-settings/src/admin-x-ds/global/PreviewModal.tsx @@ -61,7 +61,7 @@ const PreviewModal: React.FC = ({ title='' >
-
+
{preview}