mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-25 02:00:10 +02:00
* Remove bootstrap-5 folder and move tokens to foundations * Remove unused `BsStyle` and `BsSize` * Fix the size prop of the reference search modal GitOrigin-RevId: 566ee519c50a39dd80bda475af40383ef8154a2c
235 lines
5.6 KiB
Plaintext
235 lines
5.6 KiB
Plaintext
import { Meta, ColorItem, ColorPalette, Title, Typeset } from '@storybook/blocks';
|
|
import colors from '../../stylesheets/foundations/tokens/colors.json';
|
|
import typography from '../../stylesheets/foundations/tokens/typography.json';
|
|
import borderRadius from '../../stylesheets/foundations/tokens/borderRadius.json';
|
|
import spacing from '../../stylesheets/foundations/tokens/spacing.json';
|
|
|
|
<Meta title="Storybook Guideline / Foundations" />
|
|
|
|
# Foundations
|
|
|
|
Foundations in UX design are the basic rules and core elements, like colors, fonts, and spacing, that ensure consistency across the design.
|
|
<p>
|
|
These palettes are generated from our token files. The tokens were exported from Figma and split into separate files to categorise: <a href="https://github.com/overleaf/internal/tree/main/services/web/frontend/stylesheets/bootstrap-5/foundations/tokens" target="_blank" rel="noopener noreferrer">Token files on GitHub</a>
|
|
</p>
|
|
|
|
**Table of Contents**
|
|
- [Primitive colors](#primitive-colors)
|
|
- [Background colors](#background-colors)
|
|
- [Content colors](#content-colors)
|
|
- [Border colors](#border-colors)
|
|
- [Link colors](#link-colors)
|
|
- [Special colors](#special-colors)
|
|
- [Font weight](#font-weight)
|
|
- [Font size](#font-size)
|
|
- [Border radius](#border-radius)
|
|
- [Spacing](#spacing)
|
|
|
|
# Colors
|
|
<br/>
|
|
|
|
## Primitive colors
|
|
|
|
<ColorPalette>
|
|
{Object.entries(colors.PrimitiveColor).map(([name, color]) => (
|
|
<ColorItem
|
|
key={name}
|
|
title={name}
|
|
colors={[color.$value]}
|
|
/>
|
|
))}
|
|
</ColorPalette>
|
|
|
|
## Background colors
|
|
|
|
Colors used for page and component backgrounds.
|
|
|
|
<ColorPalette>
|
|
{Object.entries(colors)
|
|
.filter(([name]) => name.startsWith('bg-'))
|
|
.map(([name, colors]) => (
|
|
<ColorItem
|
|
key={name}
|
|
title={name}
|
|
subtitle={colors.$primitive}
|
|
colors={[colors.$value]}
|
|
/>
|
|
))}
|
|
</ColorPalette>
|
|
|
|
## Content colors
|
|
|
|
Colors used for text and icons.
|
|
|
|
<ColorPalette>
|
|
{Object.entries(colors)
|
|
.filter(([name]) => name.startsWith('content-'))
|
|
.map(([name, colors]) => (
|
|
<ColorItem
|
|
key={name}
|
|
title={name}
|
|
subtitle={colors.$primitive}
|
|
colors={[colors.$value]}
|
|
/>
|
|
))}
|
|
</ColorPalette>
|
|
|
|
## Border colors
|
|
|
|
Colors used for borders and dividers.
|
|
|
|
<ColorPalette>
|
|
{Object.entries(colors)
|
|
.filter(([name]) => name.startsWith('border-'))
|
|
.map(([name, colors]) => (
|
|
<ColorItem
|
|
key={name}
|
|
title={name}
|
|
subtitle={colors.$primitive}
|
|
colors={[colors.$value]}
|
|
/>
|
|
))}
|
|
</ColorPalette>
|
|
|
|
## Link colors
|
|
|
|
Colors used for hyperlink states.
|
|
|
|
<ColorPalette>
|
|
{Object.entries(colors)
|
|
.filter(([name]) => name.startsWith('link-'))
|
|
.map(([name, colors]) => (
|
|
<ColorItem
|
|
key={name}
|
|
title={name}
|
|
subtitle={colors.$primitive}
|
|
colors={[colors.$value]}
|
|
/>
|
|
))}
|
|
</ColorPalette>
|
|
|
|
## Special colors
|
|
|
|
Colors used for specific UI elements like color pickers.
|
|
|
|
<ColorPalette>
|
|
{Object.entries(colors)
|
|
.filter(([name]) => name.startsWith('special-'))
|
|
.map(([name, colors]) => (
|
|
<ColorItem
|
|
key={name}
|
|
title={name}
|
|
subtitle={colors.$primitive}
|
|
colors={[colors.$value]}
|
|
/>
|
|
))}
|
|
</ColorPalette>
|
|
|
|
# Typography
|
|
<br/>
|
|
|
|
## Font weight
|
|
<br/>
|
|
|
|
{Object.entries(typography.Fontweight).map(([name, typography]) => (
|
|
<div key={name}>
|
|
<strong>{name}</strong>
|
|
<Typeset
|
|
fontSizes={[14]}
|
|
fontWeight={typography.$value}
|
|
sampleText="The quick brown fox jumps over the lazy dog"
|
|
/>
|
|
</div>
|
|
))}
|
|
|
|
## Font size
|
|
<br/>
|
|
|
|
{Object.entries(typography['Fontsize']).map(([name, typography]) => {
|
|
const mixins = typography.$mixin ? [].concat(typography.$mixin) : [];
|
|
|
|
return (
|
|
<div key={name} style={{ marginBottom: '2rem' }}>
|
|
<strong>
|
|
{name}
|
|
{mixins.map(mixin => (
|
|
<span key={mixin}> / @mixin {mixin}</span>
|
|
))}
|
|
</strong>
|
|
<Typeset
|
|
fontSizes={[`${typography.$value}px`]}
|
|
fontWeight={500}
|
|
sampleText="The quick brown fox jumps over the lazy dog"
|
|
/>
|
|
</div>
|
|
);
|
|
})}
|
|
|
|
## Border radius
|
|
<br/>
|
|
|
|
<table style={{ width: '100%' }}>
|
|
<thead>
|
|
<tr>
|
|
<th>Variable name</th>
|
|
<th>Value</th>
|
|
<th style={{ textAlign: 'center' }}>Example</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{Object.entries(borderRadius['BorderRadius']).map(([name, borderRadius]) => (
|
|
<tr key={name}>
|
|
<td>
|
|
<strong>{name}</strong>
|
|
</td>
|
|
<td style={{ textAlign: 'center' }}>{borderRadius.$value}px</td>
|
|
<td style={{ textAlign: 'center', padding: '0.5rem' }}>
|
|
<div
|
|
style={{
|
|
width: '80px',
|
|
height: '80px',
|
|
borderRadius: `${borderRadius.$value}px`,
|
|
backgroundColor: '#098842',
|
|
display: 'inline-block',
|
|
}}
|
|
/>
|
|
</td>
|
|
</tr>
|
|
))}
|
|
</tbody>
|
|
</table>
|
|
|
|
## Spacing
|
|
<br/>
|
|
|
|
<table style={{ width: '100%' }}>
|
|
<thead>
|
|
<tr>
|
|
<th>Variable Name</th>
|
|
<th>Value</th>
|
|
<th style={{ textAlign: 'left', paddingLeft: '1rem' }}>Example</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{Object.entries(spacing.Spacing)
|
|
.filter(([, spacing]) => spacing.$value > 0)
|
|
.map(([name, spacing]) => (
|
|
<tr key={name}>
|
|
<td>
|
|
<strong>{name}</strong>
|
|
</td>
|
|
<td style={{ textAlign: 'center' }}>{spacing.$value}px</td>
|
|
<td style={{ padding: '0.5rem 1rem', verticalAlign: 'middle' }}>
|
|
<div
|
|
style={{
|
|
height: `${spacing.$value}px`,
|
|
width: '100%',
|
|
backgroundColor: '#098842',
|
|
}}
|
|
/>
|
|
</td>
|
|
</tr>
|
|
))}
|
|
</tbody>
|
|
</table>
|