Merge pull request #28533 from backstage/canon-fix-docs

Canon - fix docs styling
This commit is contained in:
Charles de Dreuille
2025-01-16 17:39:29 +00:00
committed by GitHub
8 changed files with 30 additions and 6313 deletions
+5
View File
@@ -2,3 +2,8 @@
/.next/
/dist/
next-env.d.ts
# css
/public/core.css
/public/components.css
/public/backstage.css
+4 -5
View File
@@ -3,10 +3,10 @@
"version": "0.1.0",
"private": true,
"scripts": {
"build": "next build",
"build": "npm run build:css && next build",
"build:css": "node scripts/build-css.js",
"lint": "next lint",
"start": "concurrently \"next dev\" \"yarn watch-css\"",
"watch-css": "node scripts/watch-css.js"
"start": "next dev"
},
"dependencies": {
"@codemirror/lang-sass": "^6.0.2",
@@ -15,7 +15,6 @@
"@mdx-js/react": "^3.1.0",
"@next/mdx": "^15.1.4",
"@storybook/react": "^8.4.7",
"@types/mdx": "^2.0.13",
"@uiw/codemirror-themes": "^4.23.7",
"@uiw/react-codemirror": "^4.23.7",
"next": "14.2.23",
@@ -26,10 +25,10 @@
"storybook": "^8.4.7"
},
"devDependencies": {
"@types/mdx": "^2.0.13",
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"concurrently": "^9.1.2",
"eslint": "^8",
"eslint-config-next": "14.2.23",
"lightningcss": "^1.28.2",
-71
View File
@@ -1,71 +0,0 @@
[data-theme-name="legacy"][data-theme="light"], [data-theme-name="legacy"][data-theme="dark"] {
--canon-font-regular: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
& .cn-button {
text-transform: uppercase;
box-shadow: none;
background-color: #1f5493;
border-radius: 4px;
padding: 6px 16px;
font-size: .875rem;
font-weight: 400;
line-height: 1.75;
transition: background-color .25s cubic-bezier(.4, 0, .2, 1), box-shadow .25s cubic-bezier(.4, 0, .2, 1), border .25s cubic-bezier(.4, 0, .2, 1);
&:hover {
box-shadow: none;
}
&.cn-button-primary {
color: #fff;
background-color: #153a66;
box-shadow: 0 3px 1px -2px #0003, 0 2px 2px #00000024, 0 1px 5px #0000001f;
&:hover {
box-shadow: 0 2px 4px -1px #0003, 0 4px 5px #00000024, 0 1px 10px #0000001f;
}
}
&.cn-button-secondary {
color: #1f5493;
background-color: #0000;
border: 1px solid #1f549380;
&:hover {
background-color: #1f54930a;
border: 1px solid #1f5493;
}
}
&.cn-button-tertiary {
color: #1f5493;
background-color: #0000;
border: none;
}
}
}
[data-theme-name="legacy"][data-theme="light"] {
--canon-accent: #2e77d0;
--canon-background: #f8f8f8;
--canon-surface-1: #fff;
--canon-surface-2: #f4f4f4;
--canon-text-primary: #000;
--canon-text-primary-on-accent: #fff;
--canon-text-secondary: #646464;
}
[data-theme-name="legacy"][data-theme="dark"] {
--canon-accent: #fff;
--canon-background: #000;
--canon-surface-1: #121212;
--canon-surface-2: #1a1a1a;
--canon-border-base: #fff3;
--canon-border-warning: #f50000;
--canon-border-error: #f87503;
--canon-border-selected: #25d262;
--canon-error: #f50000;
--canon-text-primary: #fff;
--canon-text-primary-on-accent: #000;
--canon-text-secondary: #b3b3b3;
}
-355
View File
@@ -1,355 +0,0 @@
.cn-button {
all: unset;
user-select: none;
font-family: var(--canon-font-regular);
font-weight: var(--canon-font-weight-bold);
font-size: var(--canon-font-size-body);
cursor: pointer;
border-radius: 8px;
justify-content: center;
align-items: center;
padding: 0;
transition: all .15s;
display: inline-flex;
}
.cn-button-primary {
background-color: var(--canon-accent);
color: var(--canon-text-primary-on-accent);
&:hover {
box-shadow: inset 0 0 0 1px var(--canon-border-focus);
color: var(--canon-text-primary);
background-color: #0000;
}
}
.cn-button-secondary {
box-shadow: inset 0 0 0 1px var(--canon-border-base);
color: var(--canon-text-primary);
background-color: #0000;
&:hover {
box-shadow: inset 0 0 0 1px var(--canon-border-hover);
}
}
.cn-button-tertiary {
color: var(--canon-text-primary);
background-color: #0000;
&:hover {
color: var(--canon-text-secondary);
}
}
.cn-button-small {
height: 32px;
padding-left: 6px;
padding-right: 6px;
}
.cn-button-medium {
height: 40px;
padding-left: 8px;
padding-right: 8px;
}
.cn-button-content {
align-items: center;
gap: var(--canon-space-3);
font-weight: var(--canon-font-weight-bold);
display: flex;
}
.cn-button-content-icon-both {
flex: 1;
}
.canon-stack {
flex-direction: column;
display: flex;
}
.canon-inline {
flex-wrap: wrap;
display: flex;
}
.canon-grid {
display: grid;
}
.canon-container {
max-width: var(--canon-container-max-width);
padding: 0 var(--canon-container-padding);
margin: 0 auto;
}
.icon-12 {
width: 12px;
height: 12px;
}
.icon-16 {
width: 16px;
height: 16px;
}
.icon-24 {
width: 24px;
height: 24px;
}
.checkbox-label {
justify-content: center;
align-items: center;
gap: var(--canon-space-3);
font-size: var(--canon-font-size-xs);
font-family: var(--canon-font-regular);
color: var(--canon-text-primary);
user-select: none;
flex-direction: row;
display: flex;
&:hover {
& .checkbox {
box-shadow: inset 0 0 0 1px var(--canon-border-hover);
}
}
}
.checkbox {
all: unset;
width: 1rem;
height: 1rem;
box-shadow: inset 0 0 0 1px var(--canon-border-base);
cursor: pointer;
border-radius: 2px;
justify-content: center;
align-items: center;
transition: all .2s ease-in-out;
display: flex;
&[data-checked] {
background-color: var(--canon-accent);
}
}
.checkbox-indicator {
color: var(--canon-text-primary-on-accent);
justify-content: center;
align-items: center;
display: flex;
}
.table {
background-color: var(--canon-surface-1);
border-radius: var(--canon-border-radius-xs);
width: 100%;
padding-bottom: var(--canon-space-0_5);
padding-top: var(--canon-space-0_5);
font-size: var(--canon-font-size-body);
position: relative;
overflow: auto;
& table {
caption-side: bottom;
width: 100%;
font-size: var(--canon-font-size-sm);
border-collapse: collapse;
}
}
.table-head {
text-align: left;
padding: var(--canon-space-3);
}
.table-body {
& tr:last-child {
border-bottom: none;
}
}
.table-row {
transition: color .2s ease-in-out;
&:hover td {
background-color: var(--canon-surface-3);
}
& .table-cell:first-child {
border-top-left-radius: var(--canon-border-radius-xs);
border-bottom-left-radius: var(--canon-border-radius-xs);
box-shadow: inset 4px 2px 0 0 var(--canon-surface-1), inset 4px -2px 0 0 var(--canon-surface-1);
padding-left: var(--canon-space-3);
}
& .table-cell:last-child {
border-top-right-radius: var(--canon-border-radius-xs);
border-bottom-right-radius: var(--canon-border-radius-xs);
box-shadow: inset -4px 2px 0 0 var(--canon-surface-1), inset -4px -2px 0 0 var(--canon-surface-1);
padding-right: var(--canon-space-3);
}
}
.table-cell {
padding: var(--canon-space-3);
background-color: var(--canon-surface-2);
box-shadow: inset 0px 2px 0 0 var(--canon-surface-1), inset 0px -2px 0 0 var(--canon-surface-1);
}
.text {
font-family: var(--canon-font-regular);
color: var(--canon-text-primary);
margin: 0;
padding: 0;
&.text-body {
font-size: var(--canon-font-size-body);
line-height: 140%;
}
&.text-subtitle {
font-size: var(--canon-font-size-subtitle);
line-height: 140%;
}
&.text-caption {
font-size: var(--canon-font-size-caption);
line-height: 140%;
}
&.text-label {
font-size: var(--canon-font-size-label);
line-height: 140%;
}
&.text-regular {
font-weight: var(--canon-font-weight-regular);
}
&.text-bold {
font-weight: var(--canon-font-weight-bold);
}
}
.text {
font-family: var(--canon-font-regular);
color: var(--canon-text-primary);
margin: 0;
padding: 0;
&.text-display {
font-size: var(--canon-font-size-display);
line-height: 100%;
font-weight: var(--canon-font-weight-bold);
}
&.text-title1 {
font-size: var(--canon-font-size-title1);
line-height: 100%;
font-weight: var(--canon-font-weight-bold);
}
&.text-title2 {
font-size: var(--canon-font-size-title2);
line-height: 100%;
font-weight: var(--canon-font-weight-bold);
}
&.text-title3 {
font-size: var(--canon-font-size-title3);
line-height: 100%;
font-weight: var(--canon-font-weight-bold);
}
&.text-title4 {
font-size: var(--canon-font-size-title4);
line-height: 100%;
font-weight: var(--canon-font-weight-bold);
}
&.text-title5 {
font-size: var(--canon-font-size-title5);
line-height: 100%;
font-weight: var(--canon-font-weight-bold);
}
}
.canon-Input {
border-radius: var(--canon-border-radius-sm);
border: 1px solid var(--canon-border-base);
padding: 0 var(--canon-space-4);
background-color: var(--canon-surface-1);
font-size: var(--canon-font-size-body);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-text-primary);
width: 100%;
transition: border-color .2s ease-in-out, outline-color .2s ease-in-out;
}
.canon-Input::placeholder {
color: var(--canon-text-secondary);
}
.canon-Input:hover {
border-color: var(--canon-border-hover);
}
.canon-Input:focus-visible {
outline-color: var(--canon-border-selected);
border-color: var(--canon-border-selected);
outline-width: 0;
}
.canon-Input[data-invalid] {
border-color: var(--canon-error);
}
.canon-Input--size-sm {
height: 2rem;
}
.canon-Input--size-md {
height: 2.5rem;
}
.canon-FieldRoot {
font-family: var(--canon-font-regular);
flex-direction: column;
width: 100%;
display: flex;
}
.canon-FieldLabel {
font-size: var(--canon-font-size-caption);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-text-primary);
margin-bottom: var(--canon-spacing-3xs);
}
.canon-FieldDescription {
font-size: var(--canon-font-size-caption);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-text-secondary);
padding-top: var(--canon-spacing-3xs);
margin: 0;
}
.canon-FieldError {
font-size: var(--canon-font-size-caption);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-error);
padding-top: var(--canon-spacing-3xs);
margin: 0;
}
.canon-FieldValidity {
font-size: var(--canon-font-size-caption);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-text-secondary);
padding-top: var(--canon-spacing-3xs);
margin: 0;
}
File diff suppressed because it is too large Load Diff
@@ -1,6 +1,5 @@
const fs = require('fs');
const path = require('path');
const chokidar = require('chokidar');
const { bundle } = require('lightningcss');
const source = '../../packages/canon/src/css';
@@ -21,7 +20,7 @@ const bundleAndCopyFile = async (source, destination) => {
try {
const result = await bundle({
filename: source,
minify: false,
minify: true,
});
fs.writeFileSync(destination, result.code);
@@ -31,25 +30,16 @@ const bundleAndCopyFile = async (source, destination) => {
}
};
// Watch the source file for changes
chokidar.watch(source1).on('change', () => {
console.log('Detected change in core.css, bundling and copying...');
bundleAndCopyFile(source1, destination1);
});
// Watch the components.css file for changes
chokidar.watch(source2).on('change', () => {
console.log('Detected change in components.css, bundling and copying...');
bundleAndCopyFile(source2, destination2);
});
// Watch the backstage.css file for changes
chokidar.watch(source3).on('change', () => {
console.log('Detected change in backstage.css, bundling and copying...');
bundleAndCopyFile(source3, destination3);
});
// Initial bundle and copy
bundleAndCopyFile(source1, destination1);
bundleAndCopyFile(source2, destination2);
bundleAndCopyFile(source3, destination3);
Promise.all([
bundleAndCopyFile(source1, destination1),
bundleAndCopyFile(source2, destination2),
bundleAndCopyFile(source3, destination3),
])
.then(() => {
// Add an empty line after all operations are complete - It looks better in the terminal :)
console.log('');
})
.catch(err => {
console.error('Error in processing files:', err);
});
+4 -125
View File
@@ -1507,7 +1507,6 @@ __metadata:
"@types/react-dom": ^18
"@uiw/codemirror-themes": ^4.23.7
"@uiw/react-codemirror": ^4.23.7
concurrently: ^9.1.2
eslint: ^8
eslint-config-next: 14.2.23
lightningcss: ^1.28.2
@@ -1528,7 +1527,7 @@ __metadata:
languageName: node
linkType: hard
"chalk@npm:^4.0.0, chalk@npm:^4.1.2":
"chalk@npm:^4.0.0":
version: 4.1.2
resolution: "chalk@npm:4.1.2"
dependencies:
@@ -1573,17 +1572,6 @@ __metadata:
languageName: node
linkType: hard
"cliui@npm:^8.0.1":
version: 8.0.1
resolution: "cliui@npm:8.0.1"
dependencies:
string-width: ^4.2.0
strip-ansi: ^6.0.1
wrap-ansi: ^7.0.0
checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56
languageName: node
linkType: hard
"codemirror@npm:^6.0.0":
version: 6.0.1
resolution: "codemirror@npm:6.0.1"
@@ -1636,24 +1624,6 @@ __metadata:
languageName: node
linkType: hard
"concurrently@npm:^9.1.2":
version: 9.1.2
resolution: "concurrently@npm:9.1.2"
dependencies:
chalk: ^4.1.2
lodash: ^4.17.21
rxjs: ^7.8.1
shell-quote: ^1.8.1
supports-color: ^8.1.1
tree-kill: ^1.2.2
yargs: ^17.7.2
bin:
conc: dist/bin/concurrently.js
concurrently: dist/bin/concurrently.js
checksum: 9e25e8ee6272ada26739aff1fb43e96ac458fafca82f45b8360bdd9115d60bbc679d282dfc52001b861b6e9f32b3063aed975691d8dec9e62807a9679763a1d8
languageName: node
linkType: hard
"crelt@npm:^1.0.5":
version: 1.0.6
resolution: "crelt@npm:1.0.6"
@@ -2136,13 +2106,6 @@ __metadata:
languageName: node
linkType: hard
"escalade@npm:^3.1.1":
version: 3.2.0
resolution: "escalade@npm:3.2.0"
checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e
languageName: node
linkType: hard
"escape-string-regexp@npm:^4.0.0":
version: 4.0.0
resolution: "escape-string-regexp@npm:4.0.0"
@@ -2656,13 +2619,6 @@ __metadata:
languageName: node
linkType: hard
"get-caller-file@npm:^2.0.5":
version: 2.0.5
resolution: "get-caller-file@npm:2.0.5"
checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9
languageName: node
linkType: hard
"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7":
version: 1.2.7
resolution: "get-intrinsic@npm:1.2.7"
@@ -3580,13 +3536,6 @@ __metadata:
languageName: node
linkType: hard
"lodash@npm:^4.17.21":
version: 4.17.21
resolution: "lodash@npm:4.17.21"
checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7
languageName: node
linkType: hard
"longest-streak@npm:^3.0.0":
version: 3.1.0
resolution: "longest-streak@npm:3.1.0"
@@ -4740,13 +4689,6 @@ __metadata:
languageName: node
linkType: hard
"require-directory@npm:^2.1.1":
version: 2.1.1
resolution: "require-directory@npm:2.1.1"
checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80
languageName: node
linkType: hard
"resolve-from@npm:^4.0.0":
version: 4.0.0
resolution: "resolve-from@npm:4.0.0"
@@ -4840,15 +4782,6 @@ __metadata:
languageName: node
linkType: hard
"rxjs@npm:^7.8.1":
version: 7.8.1
resolution: "rxjs@npm:7.8.1"
dependencies:
tslib: ^2.1.0
checksum: de4b53db1063e618ec2eca0f7965d9137cabe98cf6be9272efe6c86b47c17b987383df8574861bcced18ebd590764125a901d5506082be84a8b8e364bf05f119
languageName: node
linkType: hard
"safe-array-concat@npm:^1.1.3":
version: 1.1.3
resolution: "safe-array-concat@npm:1.1.3"
@@ -4963,13 +4896,6 @@ __metadata:
languageName: node
linkType: hard
"shell-quote@npm:^1.8.1":
version: 1.8.2
resolution: "shell-quote@npm:1.8.2"
checksum: 1e97b62ced1c4c5135015978ebf273bed1f425a68cf84163e83fbb0f34b3ff9471e656720dab2b7cbb4ae0f58998e686d17d166c28dfb3662acd009e8bd7faed
languageName: node
linkType: hard
"shiki@npm:^1.26.1":
version: 1.26.1
resolution: "shiki@npm:1.26.1"
@@ -5101,7 +5027,7 @@ __metadata:
languageName: node
linkType: hard
"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3":
"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0":
version: 4.2.3
resolution: "string-width@npm:4.2.3"
dependencies:
@@ -5286,15 +5212,6 @@ __metadata:
languageName: node
linkType: hard
"supports-color@npm:^8.1.1":
version: 8.1.1
resolution: "supports-color@npm:8.1.1"
dependencies:
has-flag: ^4.0.0
checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406
languageName: node
linkType: hard
"supports-preserve-symlinks-flag@npm:^1.0.0":
version: 1.0.0
resolution: "supports-preserve-symlinks-flag@npm:1.0.0"
@@ -5332,15 +5249,6 @@ __metadata:
languageName: node
linkType: hard
"tree-kill@npm:^1.2.2":
version: 1.2.2
resolution: "tree-kill@npm:1.2.2"
bin:
tree-kill: cli.js
checksum: 49117f5f410d19c84b0464d29afb9642c863bc5ba40fcb9a245d474c6d5cc64d1b177a6e6713129eb346b40aebb9d4631d967517f9fbe8251c35b21b13cd96c7
languageName: node
linkType: hard
"trim-lines@npm:^3.0.0":
version: 3.0.1
resolution: "trim-lines@npm:3.0.1"
@@ -5376,7 +5284,7 @@ __metadata:
languageName: node
linkType: hard
"tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.4.0":
"tslib@npm:^2.0.1, tslib@npm:^2.4.0":
version: 2.8.1
resolution: "tslib@npm:2.8.1"
checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a
@@ -5697,7 +5605,7 @@ __metadata:
languageName: node
linkType: hard
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0":
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
version: 7.0.0
resolution: "wrap-ansi@npm:7.0.0"
dependencies:
@@ -5741,35 +5649,6 @@ __metadata:
languageName: node
linkType: hard
"y18n@npm:^5.0.5":
version: 5.0.8
resolution: "y18n@npm:5.0.8"
checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30
languageName: node
linkType: hard
"yargs-parser@npm:^21.1.1":
version: 21.1.1
resolution: "yargs-parser@npm:21.1.1"
checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c
languageName: node
linkType: hard
"yargs@npm:^17.7.2":
version: 17.7.2
resolution: "yargs@npm:17.7.2"
dependencies:
cliui: ^8.0.1
escalade: ^3.1.1
get-caller-file: ^2.0.5
require-directory: ^2.1.1
string-width: ^4.2.3
y18n: ^5.0.5
yargs-parser: ^21.1.1
checksum: 73b572e863aa4a8cbef323dd911d79d193b772defd5a51aab0aca2d446655216f5002c42c5306033968193bdbf892a7a4c110b0d77954a7fdf563e653967b56a
languageName: node
linkType: hard
"yocto-queue@npm:^0.1.0":
version: 0.1.0
resolution: "yocto-queue@npm:0.1.0"
@@ -2,7 +2,7 @@
[data-theme-name='legacy'][data-theme='dark'] {
--canon-font-regular: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;
.cn-button {
.canon-Button {
border-radius: 60px;
font-weight: 400;
text-transform: uppercase;
@@ -20,7 +20,7 @@
box-shadow: none;
}
&.cn-button-primary {
&.canon-Button--variant-primary {
color: #fff;
background-color: rgb(21, 58, 102);
box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2),
@@ -33,7 +33,7 @@
}
}
&.cn-button-secondary {
&.canon-Button--variant-secondary {
background-color: transparent;
border: 1px solid rgba(31, 84, 147, 0.5);
color: #1f5493;
@@ -44,7 +44,7 @@
}
}
&.cn-button-tertiary {
&.canon-Button--variant-tertiary {
background-color: transparent;
border: none;
color: #1f5493;