open-nomad/ui/app/styles/storybook.scss

190 lines
3.1 KiB
SCSS
Raw Normal View History

UI: Migrate to Storybook (#6507) I originally planned to add component documentation, but as this dragged on and I found that JSDoc-to-Markdown sometimes needed hand-tuning, I decided to skip it and focus on replicating what was already present in Freestyle. Adding documentation is a finite task that can be revisited in the future. My goal was to migrate everything from Freestyle with as few changes as possible. Some adaptations that I found necessary: • the DelayedArray and DelayedTruth utilities that delay component rendering until slightly after initial render because without them: ◦ charts were rendering with zero width ◦ the JSON viewer was rendering with empty content • Storybook in Ember renders components in a routerless/controllerless context by default, so some component stories needed changes: ◦ table pagination/sorting stories access to query params, which necessitates some reaching into Ember internals to start routing and dynamically generate a Storybook route/controller to render components into ◦ some stories have a faux controller as part of their Storybook context that hosts setInterval-linked dynamic computed properties • some jiggery-pokery with anchor tags ◦ inert href='#' had to become href='javascript:; ◦ links that are actually meant to navigate need target='_parent' so they don’t navigate inside the Storybook iframe Maybe some of these could be addressed by fixes in ember-cli-storybook but I’m wary of digging around in there any more than I already have, as I’ve lost a lot of time to Storybook confusion and frustrations already 😞 The STORYBOOK=true environment variable tweaks some environment settings to get things working as expected in the Storybook context. I chose to: • use angle bracket invocation within stories rather than have to migrate them soon after having moved to Storybook • keep Freestyle around for now for its palette and typeface components
2020-01-21 21:46:32 +00:00
#storybook {
.mock-content {
display: flex;
2018-06-30 06:36:40 +00:00
min-height: 250px;
height: 100%;
.mock-image,
.mock-copy {
2018-06-30 18:31:17 +00:00
min-height: 100%;
width: 100%;
margin: 1em;
}
.mock-image {
background: linear-gradient(
to top right,
transparent 0%,
transparent 49%,
$grey-blue 49%,
$grey-blue 51%,
transparent 51%,
transparent 100%
),
linear-gradient(
to bottom right,
transparent 0%,
transparent 49%,
$grey-blue 49%,
$grey-blue 51%,
transparent 51%,
transparent 100%
);
}
.mock-copy {
background: repeating-linear-gradient(
to bottom,
$grey-blue,
$grey-blue 5px,
transparent 5px,
transparent 14px
);
}
2018-06-30 06:36:40 +00:00
.mock-vague {
background: lighten($grey-blue, 15%);
width: 100%;
height: 100%;
}
}
2018-07-03 00:19:39 +00:00
.mock-spacing {
padding: 2em;
}
UI: Migrate to Storybook (#6507) I originally planned to add component documentation, but as this dragged on and I found that JSDoc-to-Markdown sometimes needed hand-tuning, I decided to skip it and focus on replicating what was already present in Freestyle. Adding documentation is a finite task that can be revisited in the future. My goal was to migrate everything from Freestyle with as few changes as possible. Some adaptations that I found necessary: • the DelayedArray and DelayedTruth utilities that delay component rendering until slightly after initial render because without them: ◦ charts were rendering with zero width ◦ the JSON viewer was rendering with empty content • Storybook in Ember renders components in a routerless/controllerless context by default, so some component stories needed changes: ◦ table pagination/sorting stories access to query params, which necessitates some reaching into Ember internals to start routing and dynamically generate a Storybook route/controller to render components into ◦ some stories have a faux controller as part of their Storybook context that hosts setInterval-linked dynamic computed properties • some jiggery-pokery with anchor tags ◦ inert href='#' had to become href='javascript:; ◦ links that are actually meant to navigate need target='_parent' so they don’t navigate inside the Storybook iframe Maybe some of these could be addressed by fixes in ember-cli-storybook but I’m wary of digging around in there any more than I already have, as I’ve lost a lot of time to Storybook confusion and frustrations already 😞 The STORYBOOK=true environment variable tweaks some environment settings to get things working as expected in the Storybook context. I chose to: • use angle bracket invocation within stories rather than have to migrate them soon after having moved to Storybook • keep Freestyle around for now for its palette and typeface components
2020-01-21 21:46:32 +00:00
.annotation {
font-size: 0.9rem;
}
.palette {
.title {
font-size: 1.4rem;
font-weight: $weight-bold;
padding-bottom: 2px;
padding-top: 10px;
}
.description {
2020-05-09 00:29:37 +00:00
font-size: 0.8rem;
padding-bottom: 5px;
}
.item {
border: solid 1px $grey-blue;
display: inline-block;
margin: 0 5px 5px 0;
.color {
height: 90px;
width: 160px;
}
.info {
background-color: white;
border-top: solid 1px $grey-blue;
padding: 5px;
}
.hex {
font-size: 12px;
font-weight: $weight-bold;
margin-bottom: 0;
}
.name {
color: $ui-gray-500;
font-size: 11px;
margin-top: 0;
}
}
}
.typeface {
.hero,
.sample {
font-family: inherit;
}
.hero {
font-size: 140px;
line-height: 1.05;
}
.sample {
font-size: 15px;
margin: 0;
}
}
2020-05-09 00:29:37 +00:00
.multiples {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
&.with-spacing {
> * {
margin-right: 1em;
margin-bottom: 1em;
}
}
&.is-left-aligned {
justify-content: flex-start;
}
2020-05-09 00:29:37 +00:00
}
.chart-container {
2020-05-09 00:56:35 +00:00
width: 200px;
2020-05-09 00:29:37 +00:00
padding: 15px;
border: 1px solid $ui-gray-200;
display: inline-block;
&.is-small {
2020-05-09 00:56:35 +00:00
width: 150px;
2020-05-09 00:29:37 +00:00
}
&.is-large {
2020-05-09 00:56:35 +00:00
width: 250px;
2020-05-09 00:29:37 +00:00
}
&.is-xlarge {
width: 300px;
}
}
.tile-list {
display: flex;
flex-wrap: wrap;
.icon-tile {
width: 240px;
padding: 10px;
margin: 10px;
border: 1px solid $grey-lighter;
border-radius: $radius;
svg {
margin: auto;
width: 30px;
height: 30;
fill: $grey;
color: $grey;
}
}
}
.mock-hover-region {
width: 200px;
height: 100px;
position: relative;
border-radius: $radius;
margin: 1em 0;
padding: 1em;
border: 1px solid $grey-blue;
background: $white-ter;
color: $grey;
font-weight: $weight-bold;
}
}