diff --git a/canon-docs/src/app/(playground)/playground/styles.module.css b/canon-docs/src/app/(playground)/playground/styles.module.css index 8fdd79a1dd..026e8a1bd4 100644 --- a/canon-docs/src/app/(playground)/playground/styles.module.css +++ b/canon-docs/src/app/(playground)/playground/styles.module.css @@ -30,7 +30,7 @@ .breakpointContent { height: 100%; border-radius: 4px; - border: 1px solid var(--canon-border); - background-color: var(--canon-bg); + border: 1px solid var(--border); + background-color: var(--bg); padding: 16px; } diff --git a/canon-docs/src/app/layout.tsx b/canon-docs/src/app/layout.tsx index 99b5f22739..b32622e4ae 100644 --- a/canon-docs/src/app/layout.tsx +++ b/canon-docs/src/app/layout.tsx @@ -3,12 +3,11 @@ import { Sidebar } from '../components/Sidebar'; import { Toolbar } from '@/components/Toolbar'; import { Providers } from './providers'; import { CustomTheme } from '@/components/CustomTheme'; -import styles from './page.module.css'; +import styles from '../css/page.module.css'; -import './globals.css'; +import '../css/globals.css'; import '/public/core.css'; import '/public/components.css'; -import '/public/backstage.css'; export const metadata: Metadata = { title: 'Canon', diff --git a/canon-docs/src/app/providers.tsx b/canon-docs/src/app/providers.tsx index 81a18136e8..508d40b7df 100644 --- a/canon-docs/src/app/providers.tsx +++ b/canon-docs/src/app/providers.tsx @@ -1,7 +1,7 @@ 'use client'; import { ReactNode } from 'react'; -import { CanonProvider } from '../../../packages/canon/src/contexts/canon'; +import { CanonProvider } from '@backstage/canon'; import { PlaygroundProvider } from '@/utils/playground-context'; export const Providers = ({ children }: { children: ReactNode }) => { diff --git a/canon-docs/src/components/CodeBlock/client.tsx b/canon-docs/src/components/CodeBlock/client.tsx index 27f5bc1a02..d170bafabf 100644 --- a/canon-docs/src/components/CodeBlock/client.tsx +++ b/canon-docs/src/components/CodeBlock/client.tsx @@ -1,7 +1,7 @@ 'use client'; import { CodeBlockProps } from '.'; -import { Text } from '../../../../packages/canon'; +import { Text } from '@backstage/canon'; import styles from './styles.module.css'; export const CodeBlockClient = ({ diff --git a/canon-docs/src/components/CodeBlock/styles.module.css b/canon-docs/src/components/CodeBlock/styles.module.css index 966b3ff72b..8b17c11b86 100644 --- a/canon-docs/src/components/CodeBlock/styles.module.css +++ b/canon-docs/src/components/CodeBlock/styles.module.css @@ -1,6 +1,6 @@ .codeBlock { border-radius: 4px; - border: 1px solid var(--canon-border); + border: 1px solid var(--border); position: relative; background: transparent; overflow-x: auto; @@ -15,10 +15,10 @@ } .title { - border-bottom: 1px solid var(--canon-border); + border-bottom: 1px solid var(--border); padding: 12px 20px; font-size: 0.875rem; - color: var(--canon-fg-text-secondary); + color: var(--secondary); } .code { diff --git a/canon-docs/src/components/CustomTheme/customTheme.tsx b/canon-docs/src/components/CustomTheme/customTheme.tsx index 6f76267725..2c282d9c81 100644 --- a/canon-docs/src/components/CustomTheme/customTheme.tsx +++ b/canon-docs/src/components/CustomTheme/customTheme.tsx @@ -5,8 +5,8 @@ import CodeMirror from '@uiw/react-codemirror'; import { sass } from '@codemirror/lang-sass'; import styles from './styles.module.css'; import { usePlayground } from '@/utils/playground-context'; -import { AnimatePresence, motion } from 'framer-motion'; -import { Icon } from '../../../../packages/canon'; +import { AnimatePresence, motion } from 'motion/react'; +import { Icon } from '@backstage/canon'; import { createTheme } from '@uiw/codemirror-themes'; import { tags as t } from '@lezer/highlight'; diff --git a/canon-docs/src/components/CustomTheme/styles.module.css b/canon-docs/src/components/CustomTheme/styles.module.css index ac7d7f36f1..34c5d41d5d 100644 --- a/canon-docs/src/components/CustomTheme/styles.module.css +++ b/canon-docs/src/components/CustomTheme/styles.module.css @@ -4,9 +4,9 @@ right: 16px; width: 240px; height: 47px; - background-color: var(--canon-bg-elevated); + background-color: var(--panel); border-radius: 0.375rem; - border: 1px solid var(--canon-border); + border: 1px solid var(--border); display: flex; flex-direction: column; overflow: hidden; @@ -31,13 +31,15 @@ .header { height: 46px; flex-shrink: 0; - border-bottom: 1px solid var(--canon-border); - background-color: var(--canon-bg-elevated); + border-bottom: 1px solid var(--border); + background-color: var(--panel); display: flex; justify-content: space-between; align-items: center; padding: 0 12px 0 16px; - transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out; + transition: + background-color 0.2s ease-in-out, + border-color 0.2s ease-in-out; } .headerLeft { @@ -65,8 +67,8 @@ height: 28px; padding: 0 8px; color: #fff; - background-color: var(--canon-bg); - color: var(--canon-fg-text-primary); + background-color: var(--bg); + color: var(--primary); transition: background-color 0.2s ease-in-out; border-radius: 0.25rem; cursor: pointer; diff --git a/canon-docs/src/components/HeadlessBanners/BaseUI.tsx b/canon-docs/src/components/HeadlessBanners/BaseUI.tsx index 8401cafd78..d931562b8c 100644 --- a/canon-docs/src/components/HeadlessBanners/BaseUI.tsx +++ b/canon-docs/src/components/HeadlessBanners/BaseUI.tsx @@ -1,6 +1,6 @@ 'use client'; -import { Icon, Text } from '../../../../packages/canon'; +import { Icon, Text } from '@backstage/canon'; import styles from './styles.module.css'; interface BaseUIProps { diff --git a/canon-docs/src/components/HeadlessBanners/styles.module.css b/canon-docs/src/components/HeadlessBanners/styles.module.css index 4817ab569f..31d08aedb4 100644 --- a/canon-docs/src/components/HeadlessBanners/styles.module.css +++ b/canon-docs/src/components/HeadlessBanners/styles.module.css @@ -1,9 +1,9 @@ .container { display: flex; - background-color: var(--canon-bg-elevated); + background-color: var(--panel); padding: var(--canon-space-6); border-radius: var(--canon-radius-2); - border: 1px solid var(--canon-border); + border: 1px solid var(--border); margin-bottom: var(--canon-space-6); gap: var(--canon-space-6); transition: background-color 0.2s ease-in-out; @@ -29,14 +29,14 @@ align-items: center; justify-content: center; cursor: pointer; - background-color: var(--canon-bg); - border: 1px solid var(--canon-border); + background-color: var(--bg); + border: 1px solid var(--border); border-radius: var(--canon-radius-2); padding: 0 var(--canon-space-3); height: 28px; border-radius: 100px; margin-top: var(--canon-space-3); font-size: var(--canon-font-size-3); - color: var(--canon-fg-text-primary); + color: var(--primary); gap: var(--canon-space-2); } diff --git a/canon-docs/src/components/IconLibrary/IconLibrary.tsx b/canon-docs/src/components/IconLibrary/IconLibrary.tsx index be666fc896..1f6618f38d 100644 --- a/canon-docs/src/components/IconLibrary/IconLibrary.tsx +++ b/canon-docs/src/components/IconLibrary/IconLibrary.tsx @@ -15,8 +15,8 @@ */ 'use client'; -import { Text, Icon, icons } from '../../../../packages/canon'; -import type { IconNames } from '../../../../packages/canon'; +import { Text, Icon, icons } from '@backstage/canon'; +import type { IconNames } from '@backstage/canon'; import styles from './styles.module.css'; export const IconLibrary = () => { diff --git a/canon-docs/src/components/IconLibrary/styles.module.css b/canon-docs/src/components/IconLibrary/styles.module.css index 8cef221620..8c9a96e5db 100644 --- a/canon-docs/src/components/IconLibrary/styles.module.css +++ b/canon-docs/src/components/IconLibrary/styles.module.css @@ -19,10 +19,10 @@ height: 80px; border: 1px solid #d3d3d3; border-radius: 0.5rem; - background-color: var(--canon-bg); + background-color: var(--bg); transition: background-color 0.2s ease-in-out; &:hover { - background-color: var(--canon-bg-elevated); + background-color: var(--panel); } } diff --git a/canon-docs/src/components/PropsTable/PropsTable.tsx b/canon-docs/src/components/PropsTable/PropsTable.tsx index 69bff9ffe6..f0a6229d51 100644 --- a/canon-docs/src/components/PropsTable/PropsTable.tsx +++ b/canon-docs/src/components/PropsTable/PropsTable.tsx @@ -2,7 +2,7 @@ import * as Table from '../Table'; import { Chip } from '../Chip'; -import { icons } from '../../../../packages/canon'; +import { icons } from '@backstage/canon'; // Define a more specific type for the data object type PropData = { diff --git a/canon-docs/src/components/Sidebar/Sidebar.module.css b/canon-docs/src/components/Sidebar/Sidebar.module.css index feb9f8bea3..bf04748b02 100644 --- a/canon-docs/src/components/Sidebar/Sidebar.module.css +++ b/canon-docs/src/components/Sidebar/Sidebar.module.css @@ -6,27 +6,41 @@ .sidebar { display: block; position: fixed; - top: 0; - left: 0; + top: 16px; + left: 16px; + border-radius: 8px; width: 300px; - height: 100vh; - color: var(--canon-fg-text-primary); - background-color: var(--canon-bg-elevated); - border-right: 1px solid var(--canon-border); - padding-left: 20px; - padding-right: 20px; - transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + height: calc(100vh - 32px); + box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.025); + color: var(--primary); + background-color: var(--panel); + transition: + background-color 0.2s ease-in-out, + color 0.2s ease-in-out; overflow: hidden; } } +.root { + height: 100%; +} + +.viewport { + overflow: scroll; + height: 100%; +} + +.content { + padding: 0 20px 20px; +} + .logoContainer { padding-left: 6px; padding-top: 32px; } .logo path { - fill: var(--canon-fg-text-primary); + fill: var(--primary); } .menu { @@ -43,10 +57,11 @@ } .sectionTitle { - font-family: var(--docs-font); font-size: var(--canon-font-size-3); font-weight: var(--canon-font-weight-bold); padding: 12px 0; + color: var(--primary); + margin-top: 24px; } .line { @@ -63,23 +78,57 @@ transition: background-color 0.2s ease-in-out; &:hover { - background-color: var(--canon-bg); + background-color: var(--bg); } } .line.active { - background-color: var(--canon-bg); + background-color: var(--bg); +} + +.line.active .lineTitle { + color: var(--primary); } .lineTitle { - font-family: var(--docs-font); font-size: var(--canon-font-size-3); font-weight: var(--canon-font-weight-regular); - color: var(--canon-fg-text-primary); + color: var(--secondary); } .lineStatus { - font-family: var(--docs-font); font-size: var(--canon-font-size-3); - color: var(--canon-fg-text-secondary); + color: var(--secondary); +} + +.scrollbar { + display: flex; + justify-content: center; + background-color: rgba(0, 0, 0, 0.1); + width: 0.25rem; + border-radius: 0.375rem; + margin: 0.5rem; + opacity: 0; + transition: opacity 150ms 300ms; + right: -20px; + + &[data-hovering], + &[data-scrolling] { + opacity: 1; + transition-duration: 75ms; + transition-delay: 0ms; + } + + &::before { + content: ''; + position: absolute; + width: 1.25rem; + height: 100%; + } +} + +.thumb { + width: 100%; + border-radius: inherit; + background-color: rgba(0, 0, 0, 0.2); } diff --git a/canon-docs/src/components/Sidebar/docs.tsx b/canon-docs/src/components/Sidebar/docs.tsx index f207036cfa..da501b151a 100644 --- a/canon-docs/src/components/Sidebar/docs.tsx +++ b/canon-docs/src/components/Sidebar/docs.tsx @@ -2,8 +2,7 @@ import Link from 'next/link'; import { components, overview, layoutComponents, theme } from '@/utils/data'; -import { Box } from '../../../../packages/canon'; -import { motion } from 'framer-motion'; +import { motion } from 'motion/react'; import styles from './Sidebar.module.css'; import { usePathname } from 'next/navigation'; import { Fragment } from 'react'; @@ -53,9 +52,8 @@ export const Docs = () => { {data.map(section => { return ( - -
{section.title}
-
+
{section.title}
+ {section.content.map(item => { const isActive = pathname === `${section.url}/${item.slug}`; diff --git a/canon-docs/src/components/Sidebar/index.tsx b/canon-docs/src/components/Sidebar/index.tsx index 455ab4be9b..ad6df68b97 100644 --- a/canon-docs/src/components/Sidebar/index.tsx +++ b/canon-docs/src/components/Sidebar/index.tsx @@ -2,28 +2,38 @@ import styles from './Sidebar.module.css'; import { Docs } from './docs'; import { Playground } from './playground'; import Link from 'next/link'; +import { ScrollArea } from '@base-ui-components/react/scroll-area'; export const Sidebar = () => { return (
-
- - - - - - -
-
- - -
+ + +
+
+ + + + + + +
+
+ + +
+
+
+ + + +
); }; diff --git a/canon-docs/src/components/Sidebar/playground.tsx b/canon-docs/src/components/Sidebar/playground.tsx index 59502f6314..9e36238978 100644 --- a/canon-docs/src/components/Sidebar/playground.tsx +++ b/canon-docs/src/components/Sidebar/playground.tsx @@ -1,10 +1,8 @@ 'use client'; import { components } from '@/utils/data'; -import { Box } from '../../../../packages/canon/src/components/Box'; -import { Checkbox } from '../../../../packages/canon/src/components/Checkbox'; -import { Text } from '../../../../packages/canon/src/components/Text'; -import { motion } from 'framer-motion'; +import { Box, Checkbox, Text } from '@backstage/canon'; +import { motion } from 'motion/react'; import styles from './Sidebar.module.css'; import { usePathname } from 'next/navigation'; import { screenSizes } from '@/utils/data'; @@ -54,7 +52,7 @@ export const Playground = () => { transition={{ duration: 0.2 }} style={{ position: 'absolute' }} > - + Components @@ -68,7 +66,7 @@ export const Playground = () => { /> ))} - + Screen sizes diff --git a/canon-docs/src/components/Snippet/styles.module.css b/canon-docs/src/components/Snippet/styles.module.css index dc892e099c..f04b304afa 100644 --- a/canon-docs/src/components/Snippet/styles.module.css +++ b/canon-docs/src/components/Snippet/styles.module.css @@ -6,8 +6,8 @@ .preview { border-radius: 4px; - box-shadow: inset 0 0 0 1px var(--canon-border); - background-color: var(--canon-bg); + box-shadow: inset 0 0 0 1px var(--border); + background-color: var(--bg); transition: all 0.2s ease-in-out; padding: 1px; position: relative; @@ -38,7 +38,7 @@ [data-theme='dark'] .previewContent { background-image: radial-gradient( - rgba(255, 255, 255, 0.1) 1px, + rgba(255, 255, 255, 0.14) 1px, transparent 0 ); } diff --git a/canon-docs/src/components/Table/styles.module.css b/canon-docs/src/components/Table/styles.module.css index 9b67b25025..b05ee2c039 100644 --- a/canon-docs/src/components/Table/styles.module.css +++ b/canon-docs/src/components/Table/styles.module.css @@ -15,7 +15,7 @@ */ .wrapper { - border: 1px solid var(--canon-border); + border: 1px solid var(--border); border-radius: 4px; overflow: hidden; margin-bottom: 1rem; @@ -33,7 +33,7 @@ padding: 12px 16px !important; border: none !important; text-align: left; - background-color: var(--canon-bg-elevated) !important; + background-color: var(--panel) !important; font-size: 16px; transition: background-color 0.2s ease-in-out; @@ -43,14 +43,14 @@ } .tableHeaderCell { - border-bottom: 1px solid var(--canon-border) !important; + border-bottom: 1px solid var(--border) !important; font-weight: 500; font-size: 14px; } .tableRow { border: none; - border-bottom: 1px solid var(--canon-border); + border-bottom: 1px solid var(--border); &:last-child { border-bottom: none; } @@ -59,7 +59,7 @@ .tableChip { display: inline-block; font-size: 14px !important; - border: 1px solid var(--canon-border); + border: 1px solid var(--border); border-radius: 6px; padding: 0px 6px; height: 24px; diff --git a/canon-docs/src/components/Tabs/parts.tsx b/canon-docs/src/components/Tabs/parts.tsx index cdf9ddd63c..752c5c8064 100644 --- a/canon-docs/src/components/Tabs/parts.tsx +++ b/canon-docs/src/components/Tabs/parts.tsx @@ -1,7 +1,7 @@ 'use client'; import { Tabs as TabsPrimitive } from '@base-ui-components/react/tabs'; -import { Text } from '../../../../packages/canon'; +import { Text } from '@backstage/canon'; import styles from './styles.module.css'; export const Root = ({ @@ -33,9 +33,7 @@ export const Tab = (props: React.ComponentProps) => ( weight="bold" {...rest} style={{ - color: state.selected - ? 'var(--canon-fg-text-primary)' - : 'var(--canon-fg-text-secondary)', + color: state.selected ? 'var(--primary)' : 'var(--secondary)', }} > {children} diff --git a/canon-docs/src/components/Tabs/styles.module.css b/canon-docs/src/components/Tabs/styles.module.css index 137bc7470d..82e744b8b2 100644 --- a/canon-docs/src/components/Tabs/styles.module.css +++ b/canon-docs/src/components/Tabs/styles.module.css @@ -5,7 +5,7 @@ .list { display: flex; gap: var(--canon-space-6); - border-bottom: 1px solid var(--canon-border); + border-bottom: 1px solid var(--border); position: relative; margin-bottom: var(--canon-space-6); } @@ -22,6 +22,6 @@ left: var(--active-tab-left); width: var(--active-tab-width); height: 1px; - background-color: var(--canon-fg-text-primary); + background-color: var(--primary); transition: all 0.2s ease-in-out; } diff --git a/canon-docs/src/components/Toolbar/nav.module.css b/canon-docs/src/components/Toolbar/nav.module.css index 526d7bf918..608c64d008 100644 --- a/canon-docs/src/components/Toolbar/nav.module.css +++ b/canon-docs/src/components/Toolbar/nav.module.css @@ -12,8 +12,10 @@ .tabsTheme { width: 142px; border-radius: 0.375rem; - background-color: var(--canon-bg); - transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + background-color: var(--bg); + transition: + background-color 0.2s ease-in-out, + color 0.2s ease-in-out; } .list { @@ -26,22 +28,21 @@ .tab { all: unset; height: 60px; - font-family: var(--docs-font); - color: var(--canon-fg-text-secondary); + color: var(--secondary); font-size: var(--canon-font-size-3); font-weight: var(--canon-font-weight-bold); cursor: pointer; transition: color 0.2s ease-in-out; &:hover { - color: var(--canon-fg-text-primary); + color: var(--primary); } &[data-selected] { - color: var(--canon-fg-text-primary); + color: var(--primary); & p { - color: var(--canon-fg-text-primary); + color: var(--primary); } } @@ -53,14 +54,14 @@ position: absolute; inset: 0.25rem 0; border-radius: 0.25rem; - outline: 2px solid var(--canon-bg-elevated); + outline: 2px solid var(--panel); outline-offset: -1px; } } } .tab p { - color: var(--canon-fg-text-secondary) !important; + color: var(--secondary) !important; } .indicator { @@ -72,7 +73,7 @@ width: var(--active-tab-width); height: 1px; border-radius: 0.25rem; - background-color: var(--canon-fg-text-primary); + background-color: var(--primary); transition-property: translate, width, background-color; transition-duration: 200ms; transition-timing-function: ease-in-out; diff --git a/canon-docs/src/components/Toolbar/styles.module.css b/canon-docs/src/components/Toolbar/styles.module.css index 3b0378a03e..ff85129441 100644 --- a/canon-docs/src/components/Toolbar/styles.module.css +++ b/canon-docs/src/components/Toolbar/styles.module.css @@ -1,17 +1,18 @@ .toolbar { position: sticky; - top: 0; + top: 16px; left: 0; right: 0; + border-radius: 8px; z-index: 10; - background-color: var(--canon-bg-elevated); - border-bottom: 1px solid var(--canon-border); + background-color: var(--panel); height: 60px; display: flex; align-items: center; justify-content: space-between; padding: 0 var(--canon-space-6); transition: background-color 0.2s ease-in-out; + box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.025); } .actions { diff --git a/canon-docs/src/components/Toolbar/theme-name.module.css b/canon-docs/src/components/Toolbar/theme-name.module.css index 0ae2675e31..4e5ce7a595 100644 --- a/canon-docs/src/components/Toolbar/theme-name.module.css +++ b/canon-docs/src/components/Toolbar/theme-name.module.css @@ -17,7 +17,7 @@ color: var(--color-gray-900); cursor: pointer; user-select: none; - background-color: var(--canon-bg); + background-color: var(--bg); transition: background-color 0.2s ease-in-out; &:focus-visible { @@ -43,12 +43,14 @@ box-sizing: border-box; padding-block: 0.25rem; border-radius: 0.375rem; - background-color: var(--canon-bg-elevated); + background-color: var(--panel); color: var(--color-gray-900); - border: 1px solid var(--canon-border); + border: 1px solid var(--border); padding-inline: 0.25rem; transform-origin: var(--transform-origin); - transition: transform 150ms, opacity 150ms; + transition: + transform 150ms, + opacity 150ms; &[data-starting-style], &[data-ending-style] { @@ -64,7 +66,8 @@ @media (prefers-color-scheme: light) { outline: 1px solid var(--color-gray-200); - box-shadow: 0px 10px 15px -3px var(--color-gray-200), + box-shadow: + 0px 10px 15px -3px var(--color-gray-200), 0px 4px 6px -4px var(--color-gray-200); } @@ -104,7 +107,7 @@ z-index: 0; position: relative; color: var(--color-gray-50); - background-color: var(--canon-bg); + background-color: var(--bg); } &[data-highlighted]::before { diff --git a/canon-docs/src/components/Toolbar/theme.module.css b/canon-docs/src/components/Toolbar/theme.module.css index ac3701541f..993ea8ba81 100644 --- a/canon-docs/src/components/Toolbar/theme.module.css +++ b/canon-docs/src/components/Toolbar/theme.module.css @@ -1,15 +1,19 @@ .tabs { border-radius: 0.375rem; width: 100%; - background-color: var(--canon-bg); - transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + background-color: var(--bg); + transition: + background-color 0.2s ease-in-out, + color 0.2s ease-in-out; } .tabsTheme { width: 100px; border-radius: 0.375rem; - background-color: var(--canon-bg); - transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + background-color: var(--bg); + transition: + background-color 0.2s ease-in-out, + color 0.2s ease-in-out; } .list { @@ -29,23 +33,23 @@ outline: 0; background: none; appearance: none; - color: var(--canon-fg-text-secondary); + color: var(--secondary); user-select: none; height: 2rem; flex: 1; cursor: pointer; &[data-selected] { - color: var(--canon-fg-text-primary); + color: var(--primary); & p { - color: var(--canon-fg-text-primary); + color: var(--primary); } } @media (hover: hover) { &:hover { - color: var(--canon-fg-text-primary); + color: var(--primary); } } @@ -57,14 +61,14 @@ position: absolute; inset: 0.25rem 0; border-radius: 0.25rem; - outline: 2px solid var(--canon-bg-elevated); + outline: 2px solid var(--panel); outline-offset: -1px; } } } .tab p { - color: var(--canon-fg-text-secondary) !important; + color: var(--secondary) !important; } .indicator { @@ -76,7 +80,7 @@ width: var(--active-tab-width); height: 1.5rem; border-radius: 0.25rem; - background-color: var(--canon-bg-elevated); + background-color: var(--panel); transition-property: translate, width, background-color; transition-duration: 200ms; transition-timing-function: ease-in-out; diff --git a/canon-docs/src/app/globals.css b/canon-docs/src/css/globals.css similarity index 60% rename from canon-docs/src/app/globals.css rename to canon-docs/src/css/globals.css index 343f23a38f..02b1b2c5ba 100644 --- a/canon-docs/src/app/globals.css +++ b/canon-docs/src/css/globals.css @@ -1,13 +1,33 @@ +:root { + --bg: #f8f8f8; + --panel: #fff; + --primary: #000; + --secondary: #757575; + --font-regular: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, + 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', + 'Segoe UI Symbol', 'Noto Color Emoji'; + --font-mono: ui-monospace, 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', + 'Courier New', monospace; + --font-weight-regular: 400; + --font-weight-bold: 600; + --border: rgba(0, 0, 0, 0.1); +} + +[data-theme='dark'] { + --bg: #000; + --panel: #222222; + --primary: #fff; + --secondary: #9e9e9e; + --border: rgba(255, 255, 255, 0.1); +} + body { display: flex; flex-direction: row; - background-color: var(--canon-bg); - color: var(--canon-fg-text-primary); + background-color: var(--bg); + color: var(--primary); + font-family: var(--font-regular); transition: background-color 0.2s ease-in-out; - - --docs-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, - 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', - 'Segoe UI Symbol', 'Noto Color Emoji'; } iframe { @@ -22,7 +42,7 @@ iframe { .shiki, .shiki span { background-color: transparent !important; - font-family: var(--canon-font-monospace); + font-family: var(--font-mono); font-size: 0.875rem; line-height: 1.7; } @@ -41,9 +61,11 @@ iframe { } .ͼ2 .cm-gutters { - background-color: var(--canon-bg); - border-right: 1px solid var(--canon-border); - transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out; + background-color: var(--bg); + border-right: 1px solid var(--border); + transition: + background-color 0.2s ease-in-out, + border-color 0.2s ease-in-out; } .ͼ1 .cm-lineNumbers .cm-gutterElement { diff --git a/canon-docs/src/css/mdx.module.css b/canon-docs/src/css/mdx.module.css new file mode 100644 index 0000000000..9fb977214d --- /dev/null +++ b/canon-docs/src/css/mdx.module.css @@ -0,0 +1,32 @@ +.h1 { + font-size: 2.5rem; + margin-top: 4rem; + margin-bottom: 1.5rem; + color: var(--primary); +} + +.h2 { + font-size: 1.5rem; + margin-top: 3rem; + margin-bottom: 1.5rem; + color: var(--primary); +} + +.h3 { + font-size: 1.25rem; + margin-top: 2rem; + margin-bottom: 0.5rem; + color: var(--primary); +} + +.p { + font-size: 1rem; + line-height: 1.5; + margin-top: 0; + margin-bottom: 1rem; + color: var(--secondary); +} + +.p:first-of-type { + margin-bottom: 2rem; +} diff --git a/canon-docs/src/app/page.module.css b/canon-docs/src/css/page.module.css similarity index 88% rename from canon-docs/src/app/page.module.css rename to canon-docs/src/css/page.module.css index bc28185d48..3a0bb492d8 100644 --- a/canon-docs/src/app/page.module.css +++ b/canon-docs/src/css/page.module.css @@ -4,11 +4,12 @@ .container { width: 100%; + padding: 0 16px; } @media (min-width: 768px) { .container { - padding-left: 300px; + padding-left: 332px; } } @@ -17,7 +18,7 @@ } .page p { - color: var(--canon-fg-text-primary); + color: var(--primary); font-size: 1rem; line-height: 1.5rem; margin-top: 0; diff --git a/canon-docs/src/mdx-components.tsx b/canon-docs/src/mdx-components.tsx index 5eb16edbfe..8ef40f3924 100644 --- a/canon-docs/src/mdx-components.tsx +++ b/canon-docs/src/mdx-components.tsx @@ -2,66 +2,22 @@ import React, { ReactNode } from 'react'; import type { MDXComponents } from 'mdx/types'; import Image, { ImageProps } from 'next/image'; import { CodeBlock } from '@/components/CodeBlock'; -import { Box } from '../../packages/canon/src/components/Box'; +import styles from './css/mdx.module.css'; export function useMDXComponents(components: MDXComponents): MDXComponents { return { h1: ({ children }) => ( - -

- {children as ReactNode} -

-
+

{children as ReactNode}

), h2: ({ children }) => ( - -

- {children as ReactNode} -

-
+

{children as ReactNode}

), h3: ({ children }) => ( -

- {children as ReactNode} -

- ), - p: ({ children }) => ( -

- {children as ReactNode} -

+

{children as ReactNode}

), + p: ({ children }) =>

{children as ReactNode}

, a: ({ children, href }) => ( - + {children as ReactNode} ), @@ -78,12 +34,12 @@ export function useMDXComponents(components: MDXComponents): MDXComponents { code: ({ children }) => ( diff --git a/canon-docs/src/snippets/box.tsx b/canon-docs/src/snippets/box.tsx index 2a99ebee7d..9d4e000bd7 100644 --- a/canon-docs/src/snippets/box.tsx +++ b/canon-docs/src/snippets/box.tsx @@ -1,6 +1,6 @@ 'use client'; -import { Box } from '../../../packages/canon'; +import { Box } from '@backstage/canon'; export const BoxPreview = () => { return ( diff --git a/canon-docs/src/snippets/button.tsx b/canon-docs/src/snippets/button.tsx index 2ae2ab0be9..b19616a4b9 100644 --- a/canon-docs/src/snippets/button.tsx +++ b/canon-docs/src/snippets/button.tsx @@ -1,6 +1,6 @@ 'use client'; -import { Button, Flex, ButtonProps, Text } from '../../../packages/canon'; +import { Button, Flex, ButtonProps, Text } from '@backstage/canon'; export const ButtonPreview = () => { return ( diff --git a/canon-docs/src/snippets/checkbox.tsx b/canon-docs/src/snippets/checkbox.tsx index fe2a5b0219..2f86929107 100644 --- a/canon-docs/src/snippets/checkbox.tsx +++ b/canon-docs/src/snippets/checkbox.tsx @@ -1,6 +1,6 @@ 'use client'; -import { Checkbox, Flex, Text } from '../../../packages/canon'; +import { Checkbox, Flex, Text } from '@backstage/canon'; export const CheckboxPreview = () => { return ; diff --git a/canon-docs/src/snippets/container.tsx b/canon-docs/src/snippets/container.tsx index 40ffc69c8c..bc356c18f2 100644 --- a/canon-docs/src/snippets/container.tsx +++ b/canon-docs/src/snippets/container.tsx @@ -1,10 +1,9 @@ 'use client'; -import { Box, Container } from '../../../packages/canon'; +import { Box, Container } from '@backstage/canon'; const DecorativeBox = () => ( { return ( diff --git a/canon-docs/src/snippets/flex.tsx b/canon-docs/src/snippets/flex.tsx index 8bfab8878e..4d45d67d86 100644 --- a/canon-docs/src/snippets/flex.tsx +++ b/canon-docs/src/snippets/flex.tsx @@ -1,6 +1,6 @@ 'use client'; -import { Flex } from '../../../packages/canon'; +import { Flex } from '@backstage/canon'; const DecorativeBox = () => { return ( diff --git a/canon-docs/src/snippets/grid.tsx b/canon-docs/src/snippets/grid.tsx index 161747cbf6..4e4668583e 100644 --- a/canon-docs/src/snippets/grid.tsx +++ b/canon-docs/src/snippets/grid.tsx @@ -1,10 +1,9 @@ 'use client'; -import { Box, Grid } from '../../../packages/canon'; +import { Box, Grid } from '@backstage/canon'; const FakeBox = () => ( { return Look mum, no hands!; diff --git a/canon-docs/src/snippets/icon.tsx b/canon-docs/src/snippets/icon.tsx index 126dbaf686..532bf63b12 100644 --- a/canon-docs/src/snippets/icon.tsx +++ b/canon-docs/src/snippets/icon.tsx @@ -1,6 +1,6 @@ 'use client'; -import { Icon } from '../../../packages/canon'; +import { Icon } from '@backstage/canon'; export const IconPreview = () => { return ; diff --git a/canon-docs/src/snippets/inline.tsx b/canon-docs/src/snippets/inline.tsx index 73b619e3af..501ca4c786 100644 --- a/canon-docs/src/snippets/inline.tsx +++ b/canon-docs/src/snippets/inline.tsx @@ -1,6 +1,6 @@ 'use client'; -import { Box, Inline } from '../../../packages/canon'; +import { Box, Flex } from '@backstage/canon'; const fakeBlockList = [ { width: 45, height: 60 }, @@ -24,7 +24,6 @@ const FakeBox = ({ height?: number; }) => ( { return ( - + {fakeBlockList.map((block, index) => ( ))} - + ); }; diff --git a/canon-docs/src/snippets/input.tsx b/canon-docs/src/snippets/input.tsx index 69d0b62b7f..d1bc3ef364 100644 --- a/canon-docs/src/snippets/input.tsx +++ b/canon-docs/src/snippets/input.tsx @@ -1,6 +1,6 @@ 'use client'; -import { Input, Grid } from '../../../packages/canon'; +import { Input, Grid } from '@backstage/canon'; export const InputPreview = () => { return ( diff --git a/canon-docs/src/snippets/text.tsx b/canon-docs/src/snippets/text.tsx index 4d39cbf6dd..211e6fb877 100644 --- a/canon-docs/src/snippets/text.tsx +++ b/canon-docs/src/snippets/text.tsx @@ -1,6 +1,6 @@ 'use client'; -import { Flex, Text } from '../../../packages/canon'; +import { Flex, Text } from '@backstage/canon'; export const TextPreview = () => { return (