Skip to content

Commit

Permalink
[Storybook] Update styles to be more accurate to prod (#1945)
Browse files Browse the repository at this point in the history
## Summary:
Perseus Storybook in its current state does not accurately
reflect how these component look in prod.

A couple things are added here to fix this:
1. Stories are wrapped with the `framework-perseus` class.
2. Webapp styles are imported
  - `box-sizing: border-box` in particular affects all the
    spacing (margins and padding)

Issue: none

## Test plan:
- Go to http://localhost:6006/?path=/docs/perseus-components-number-input--docs
- Confirm that the inputs have rounded bordersa, and the
  "mini", "small", and "normal" stories show different sizes.
- Go to http://localhost:6006/?path=/story/perseuseditor-widgets-interactive-graph--interactive-graph-ray
- Scroll to the start coordinates panels
- Use the dev tools to confirm that the width is 308px
  (previously 336px)

## Screenshots:

| Before | After |
| --- | --- |
| <img width="299" alt="Screenshot 2024-12-03 at 6 03 03 PM" src="https://github.com/user-attachments/assets/ebe941b1-142a-4760-ad8e-397eabdb85a3">| <img width="286" alt="Screenshot 2024-12-03 at 6 02 37 PM" src="https://github.com/user-attachments/assets/382467fb-0bb3-4c59-b5b5-9f8a4698727f"> | 
| <img width="387" alt="Screenshot 2024-12-03 at 6 02 56 PM" src="https://github.com/user-attachments/assets/a3465089-548f-49af-842c-c2d87770c240"> | <img width="363" alt="Screenshot 2024-12-03 at 6 02 47 PM" src="https://github.com/user-attachments/assets/7ecba6c5-5468-400b-8150-4a733b870e0c"> |

Author: nishasy

Reviewers: jeremywiebe, nishasy, mark-fitzgerald, benchristel

Required Reviewers:

Approved By: mark-fitzgerald, jeremywiebe

Checks: ✅ Check builds for changes in size (ubuntu-latest, 20.x), ✅ Publish npm snapshot (ubuntu-latest, 20.x), ✅ Cypress (ubuntu-latest, 20.x), ✅ Lint, Typecheck, Format, and Test (ubuntu-latest, 20.x), ✅ Publish Storybook to Chromatic (ubuntu-latest, 20.x), ✅ Check for .changeset entries for all changed files (ubuntu-latest, 20.x), ✅ gerald

Pull Request URL: #1945
  • Loading branch information
nishasy authored Dec 5, 2024
1 parent f355127 commit e69ca31
Show file tree
Hide file tree
Showing 5 changed files with 190 additions and 1 deletion.
5 changes: 5 additions & 0 deletions .changeset/shiny-sloths-obey.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@khanacademy/perseus": patch
---

Add global styles to reflect prod styling
12 changes: 11 additions & 1 deletion .storybook/preview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,17 @@ const preview: Preview = {
(Story) => (
<RenderStateRoot>
<DependenciesContext.Provider value={storybookDependenciesV2}>
<Story />
{/* Most of our components have an expectation to be
rendered inside of a .framework-perseus container.
We want to make sure we can include it here, since it
can also affect the styling.
Inclue box-sizing-border-box-reset to reflect
the global styles from prod.
*/}
<div className="framework-perseus box-sizing-border-box-reset">
<Story />
</div>
</DependenciesContext.Provider>
</RenderStateRoot>
),
Expand Down
42 changes: 42 additions & 0 deletions packages/perseus/src/styles/global.less
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/**
* This file contains styles that are used in prod that ultimately
* get passed onto Perseus components. This file is imported in the
* .storybook/preview.js file so that the components can have the same
* styles as prod when viewed within Storybook.
*/

// Variables
@offBlack: #21242c;
@wonderBlocksFontFamily: "Lato", "Noto Sans", "Helvetica", "Corbel", sans-serif;

// Layers
@layer reset, shared, legacy;

@layer reset {
// A CSS reset. Needed for every page.
@import (inline) "./reset.css";
}

@layer shared {
html,
body {
height: 100%;
}

body {
font-family: @wonderBlocksFontFamily, "Helvetica", "Corbel", sans-serif;
font-size: 14px;
margin: 0;
color: @offBlack;
line-height: 1.4;
min-width: 0;
}

.box-sizing-border-box-reset {
box-sizing: border-box;
}

.box-sizing-border-box-reset * {
box-sizing: inherit;
}
}
1 change: 1 addition & 0 deletions packages/perseus/src/styles/perseus-renderer.less
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

@import "./variables.less";
@import "./util.less";
@import "./global.less";

@import "./styles.less";

Expand Down
131 changes: 131 additions & 0 deletions packages/perseus/src/styles/reset.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/

html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
display: block;
}
body {
line-height: 1;
}
ol,
ul {
list-style: none;
}
blockquote,
q {
quotes: none;
}
blockquote:before,
blockquote:after,
q:before,
q:after {
content: "";
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}

/* End Reset */

0 comments on commit e69ca31

Please sign in to comment.