diff --git a/www/docs/components/badge.mdx b/www/docs/components/badge.mdx index 266749c..385e4ab 100644 --- a/www/docs/components/badge.mdx +++ b/www/docs/components/badge.mdx @@ -23,9 +23,9 @@ import '@sipe-team/badge/styles.css'; Wrap the text you want to label. The badge sizes itself to its content. 사이프`} + code={`Sipe`} > - 사이프 + Sipe ## Examples diff --git a/www/docusaurus.config.ts b/www/docusaurus.config.ts index fc5c4fe..a34f6b8 100644 --- a/www/docusaurus.config.ts +++ b/www/docusaurus.config.ts @@ -13,6 +13,14 @@ const r = (p: string) => path.resolve(__dirname, '..', 'packages', p); // components that read `vars` resolve against it. Built once for the whole site, not per component. const tokensCss = r('tokens/dist/styles.css'); +const sideCodeTheme = { + ...prismThemes.vsDark, + plain: { + ...prismThemes.vsDark.plain, + backgroundColor: 'var(--side-color-background-subtle)', + }, +}; + const pretendardCss = require.resolve('pretendard/dist/web/static/pretendard-dynamic-subset.css'); export default { @@ -112,8 +120,11 @@ export default { copyright: `All rights reserved ⓒ SIPE ${new Date().getFullYear()}`, }, prism: { - theme: prismThemes.vsDark, - darkTheme: prismThemes.vsDark, + // Docusaurus applies `plain.backgroundColor` as an inline style on the code block + // container, which outranks `--ifm-pre-background`. Feeding the token through the theme + // keeps the code surface on the design system instead of vsDark's hardcoded #1e1e1e. + theme: sideCodeTheme, + darkTheme: sideCodeTheme, }, } satisfies Preset.ThemeConfig, } satisfies Config; diff --git a/www/src/HomepageFeatures/index.module.css b/www/src/HomepageFeatures/index.module.css index 9138763..8821546 100644 --- a/www/src/HomepageFeatures/index.module.css +++ b/www/src/HomepageFeatures/index.module.css @@ -5,6 +5,13 @@ width: 100%; } +/* Infima's grid columns carry horizontal padding but no vertical spacing, so the cards sit flush + against each other once they wrap into a single column. Matches the 32px the columns already + put between cards side by side; inert while they fit on one row. */ +.features :global(.row) { + row-gap: var(--side-spacing-layout-sm); +} + .card { height: 100%; padding: var(--side-spacing-component-xl); diff --git a/www/src/custom.css b/www/src/custom.css index 3267cf4..1a9f48e 100644 --- a/www/src/custom.css +++ b/www/src/custom.css @@ -2,7 +2,10 @@ html[data-theme="light"], html[data-theme="dark"] { --side-chrome-padding-horizontal: clamp(1rem, 2vw, 2rem); - --ifm-navbar-padding-horizontal: var(--side-chrome-padding-horizontal); + + /* Aligns the navbar logo with the sidebar entries below it, which sit at a fixed 20px. A + viewport-scaled value would drift away from that edge as the window resizes. */ + --ifm-navbar-padding-horizontal: 20px; --ifm-color-gray-0: var(--color-white); --ifm-color-gray-100: var(--color-gray-50); @@ -55,7 +58,13 @@ html[data-theme="dark"] { --ifm-color-danger-contrast-background: var(--side-color-status-danger-background); --ifm-color-danger-contrast-foreground: var(--side-color-status-danger-foreground); - --ifm-background-color: var(--side-color-background-base); + /* `--side-color-background-default` is declared by the theme bridge but resolves to nothing: + the bridge points at `--color-background-default` while tokens.json defines the value as + `color.background.base`. Until that contract mismatch is fixed in @sipe-team/tokens, fall + back to the value layer directly — otherwise the page and navbar have no background at all + and content shows through the sticky navbar. The fallback drops out on its own once the + semantic token resolves. */ + --ifm-background-color: var(--side-color-background-default, var(--color-background-base)); --ifm-background-surface-color: var(--side-color-background-muted); --ifm-color-content: var(--side-color-foreground-default); --ifm-color-content-secondary: var(--side-color-foreground-subtle); @@ -76,13 +85,13 @@ html[data-theme="dark"] { --ifm-link-color: var(--side-color-accent-default); --ifm-link-hover-color: var(--side-color-accent-hover); --ifm-menu-color-active: var(--side-color-accent-default); - --ifm-menu-color-background-active: var(--side-color-background-subtle); + --ifm-menu-color-background-active: var(--side-color-background-muted); --ifm-tabs-color-active: var(--side-color-accent-default); --ifm-tabs-color-active-border: var(--side-color-accent-default); --ifm-breadcrumb-color-active: var(--side-color-foreground-default); --ifm-pagination-nav-color-hover: var(--side-color-accent-default); - --ifm-navbar-background-color: var(--side-color-background-base); + --ifm-navbar-background-color: var(--side-color-background-default, var(--color-background-base)); --ifm-navbar-link-hover-color: var(--side-color-accent-default); --ifm-navbar-search-input-background-color: var(--side-color-background-subtle); --ifm-navbar-search-input-color: var(--side-color-foreground-default); @@ -101,7 +110,7 @@ html[data-theme="dark"] { --ifm-scrollbar-thumb-background-color: var(--side-color-border-default); --ifm-scrollbar-thumb-hover-background-color: var(--side-color-border-strong); - --ifm-button-color: var(--side-color-background-base); + --ifm-button-color: var(--side-color-background-default, var(--color-background-base)); --ifm-global-radius: var(--side-radius-component-lg); --ifm-card-border-radius: var(--side-radius-component-xl); @@ -132,11 +141,53 @@ html[data-theme="dark"] { height: 1.25rem; } +/* The navbar shares the page background and casts no shadow, so without this the sidebar's + vertical rule starts in mid-air where the two should meet. */ +.navbar { + border-bottom: 1px solid var(--side-color-border-default); +} + :focus-visible { outline: 2px solid var(--side-color-border-focus); outline-offset: 2px; } +/* Code blocks carry `--ifm-code-border-radius`, which is sized for inline code. Blocks are + surfaces and should match cards and previews instead. Qualified by tag because the theme's + own CSS module class has equal specificity and would otherwise win on load order. */ +div.theme-code-block { + border-radius: var(--side-radius-component-lg); +} + +/* The sidebar shares the body font size, which flattens the hierarchy between navigation and + content. Step it down and mark the active entry with weight and an accent rule. */ +.menu__link { + font-size: var(--side-font-size-100); +} + +.menu__link--active { + position: relative; + font-weight: var(--side-font-weight-semi-bold); +} + +.menu__link--active::before { + content: ""; + position: absolute; + inset-block: 0; + inset-inline-start: 0; + width: 2px; + background-color: var(--side-color-accent-default); +} + +/* Inline code in the table of contents renders as a filled box, which competes with the entries + around it. Strip the surface and keep only the monospace cue. */ +.table-of-contents code { + background-color: transparent; + border: none; + padding: 0; + font-size: inherit; +} + .footer .container { max-width: none; padding-left: var(--side-chrome-padding-horizontal); diff --git a/www/src/pages/index.tsx b/www/src/pages/index.tsx index df775a0..c998ead 100644 --- a/www/src/pages/index.tsx +++ b/www/src/pages/index.tsx @@ -28,7 +28,7 @@ function HomepageHeader() { Side -

Sipe 제품을 만드는 사람들을 위한 디자인 시스템

+

The design system for Sipe products

);