@codeforamerica/marcomms-design-system 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/styles.css +1 -1
- package/package.json +2 -1
- package/src/components/accordion.js +141 -0
- package/src/components/accordion.stories.js +56 -0
- package/src/components/avatar.js +62 -0
- package/src/components/avatar.stories.js +27 -0
- package/src/components/banner.js +152 -0
- package/src/components/banner.stories.js +115 -0
- package/src/components/bar.js +102 -0
- package/src/components/bar.stories.js +22 -0
- package/src/components/blob.js +119 -0
- package/src/components/blob.stories.js +64 -0
- package/src/components/box.js +55 -0
- package/src/components/box.stories.js +24 -0
- package/src/components/breadcrumbs.js +80 -0
- package/src/components/breadcrumbs.stories.js +27 -0
- package/src/components/button.js +167 -0
- package/src/components/button.scss +162 -0
- package/src/components/button.stories.js +49 -0
- package/src/components/callout.js +62 -0
- package/src/components/callout.stories.js +20 -0
- package/src/components/card.js +403 -0
- package/src/components/card.stories.js +170 -0
- package/src/components/carousel.js +182 -0
- package/src/components/carousel.stories.js +61 -0
- package/src/components/cta.js +99 -0
- package/src/components/cta.stories.js +22 -0
- package/src/components/details.scss +71 -0
- package/src/components/details.stories.js +27 -0
- package/src/components/flexible-layout.js +126 -0
- package/src/components/flexible-layout.stories.js +48 -0
- package/src/components/form-elements.scss +305 -0
- package/src/components/form-elements.stories.js +134 -0
- package/src/components/icon.js +41 -0
- package/src/components/icon.scss +31 -0
- package/src/components/icon.stories.js +16 -0
- package/src/components/label.js +63 -0
- package/src/components/label.stories.js +29 -0
- package/src/components/link-list.scss +80 -0
- package/src/components/link-list.stories.js +52 -0
- package/src/components/loader.scss +24 -0
- package/src/components/loader.stories.js +12 -0
- package/src/components/logo-card.js +93 -0
- package/src/components/logo-card.stories.js +48 -0
- package/src/components/nav.js +99 -0
- package/src/components/nav.stories.js +40 -0
- package/src/components/page-nav.js +171 -0
- package/src/components/page-nav.stories.js +112 -0
- package/src/components/pager.js +98 -0
- package/src/components/pager.stories.js +30 -0
- package/src/components/pagination.js +116 -0
- package/src/components/pagination.stories.js +30 -0
- package/src/components/person-card.js +240 -0
- package/src/components/person-card.stories.js +58 -0
- package/src/components/pill.js +33 -0
- package/src/components/pill.stories.js +23 -0
- package/src/components/promo.js +83 -0
- package/src/components/promo.stories.js +37 -0
- package/src/components/pullquote.js +42 -0
- package/src/components/pullquote.stories.js +16 -0
- package/src/components/quote.js +84 -0
- package/src/components/quote.stories.js +23 -0
- package/src/components/reveal.js +83 -0
- package/src/components/reveal.stories.js +40 -0
- package/src/components/slide.js +121 -0
- package/src/components/slide.stories.js +53 -0
- package/src/components/social-icon.js +233 -0
- package/src/components/social-icon.stories.js +36 -0
- package/src/components/stat.js +92 -0
- package/src/components/stat.stories.js +28 -0
- package/src/components/tab-list.js +114 -0
- package/src/components/tab-list.stories.js +18 -0
- package/src/components/tab.js +95 -0
- package/src/components/tab.stories.js +29 -0
- package/src/components/tile.js +150 -0
- package/src/components/tile.stories.js +41 -0
- package/src/components/transcript.js +44 -0
- package/src/components/transcript.stories.js +167 -0
- package/src/core/base.scss +86 -0
- package/src/core/colors.mdx +100 -0
- package/src/core/grid.mdx +14 -0
- package/src/core/grid.scss +295 -0
- package/src/core/helpers.scss +111 -0
- package/src/core/layout.scss +79 -0
- package/src/core/reset.scss +53 -0
- package/src/core/tokens.scss +251 -0
- package/src/core/typography.mdx +66 -0
- package/src/core/typography.scss +426 -0
- package/src/shared/common.js +15 -0
- package/src/shared/layout.js +14 -0
- package/src/shared/typography.js +111 -0
- package/src/styles.scss +15 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { LitElement, html, css, nothing } from "lit";
|
|
2
|
+
import { commonStyles } from "../shared/common.js";
|
|
3
|
+
import { typographyStyles } from "../shared/typography.js";
|
|
4
|
+
import "./blob";
|
|
5
|
+
import "./icon";
|
|
6
|
+
|
|
7
|
+
class Tile extends LitElement {
|
|
8
|
+
static properties = {
|
|
9
|
+
title: { type: String },
|
|
10
|
+
description: { type: String },
|
|
11
|
+
actionLabel: { type: String },
|
|
12
|
+
linkUrl: { type: String },
|
|
13
|
+
linkTarget: { type: String },
|
|
14
|
+
imageUrl: { type: String },
|
|
15
|
+
imageThumbnailUrl: { type: String },
|
|
16
|
+
imageAltText: { type: String },
|
|
17
|
+
};
|
|
18
|
+
static styles = [
|
|
19
|
+
commonStyles,
|
|
20
|
+
typographyStyles,
|
|
21
|
+
css`
|
|
22
|
+
:host {
|
|
23
|
+
--bg-color: var(--white);
|
|
24
|
+
--title-color: var(--purple-60);
|
|
25
|
+
--text-color: var(--black);
|
|
26
|
+
--action-label-color: var(--purple-80);
|
|
27
|
+
--action-label-hover-highlight: var(--purple-20);
|
|
28
|
+
--blob-color: var(--purple-20);
|
|
29
|
+
|
|
30
|
+
align-items: stretch;
|
|
31
|
+
display: flex;
|
|
32
|
+
text-align: center;
|
|
33
|
+
width: 100%;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.tile {
|
|
37
|
+
background-color: var(--bg-color);
|
|
38
|
+
border-radius: var(--spacing-component-2);
|
|
39
|
+
border: var(--hairline) solid var(--black-20);
|
|
40
|
+
color: var(--text-color);
|
|
41
|
+
display: flex;
|
|
42
|
+
flex-direction: column;
|
|
43
|
+
max-width: var(--column-span-6);
|
|
44
|
+
padding: var(--spacing-component-4);
|
|
45
|
+
text-decoration: none;
|
|
46
|
+
transition:
|
|
47
|
+
box-shadow 0.5s ease-in-out,
|
|
48
|
+
border-color 0.5s ease-in-out;
|
|
49
|
+
width: 100%;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
a.tile:hover {
|
|
53
|
+
box-shadow: var(--shadow-medium);
|
|
54
|
+
border-color: rgba(0, 0, 0, 0);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
picture {
|
|
58
|
+
display: grid;
|
|
59
|
+
place-items: center;
|
|
60
|
+
padding-block-end: var(--spacing-layout-1);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
picture > * {
|
|
64
|
+
height: var(--spacing-layout-4);
|
|
65
|
+
grid-area: 1 / 1;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
cfa-blob {
|
|
69
|
+
transition: scale 0.5s ease-in-out;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
a.tile:hover cfa-blob {
|
|
73
|
+
scale: 1.2;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
img {
|
|
77
|
+
object-fit: contain;
|
|
78
|
+
z-index: 2;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.title {
|
|
82
|
+
color: var(--title-color);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.label {
|
|
86
|
+
color: var(--action-label-color);
|
|
87
|
+
display: inline-block;
|
|
88
|
+
margin-block-start: auto;
|
|
89
|
+
padding-block-start: var(--spacing-layout-half);
|
|
90
|
+
}
|
|
91
|
+
`,
|
|
92
|
+
];
|
|
93
|
+
tileContentTemplate() {
|
|
94
|
+
return html`
|
|
95
|
+
${this.imageUrl
|
|
96
|
+
? html`
|
|
97
|
+
<picture>
|
|
98
|
+
<cfa-blob></cfa-blob>
|
|
99
|
+
<img
|
|
100
|
+
src="${this.imageUrl}"
|
|
101
|
+
alt="${this.imageAltText}"
|
|
102
|
+
load="lazy"
|
|
103
|
+
/>
|
|
104
|
+
</picture>
|
|
105
|
+
`
|
|
106
|
+
: nothing}
|
|
107
|
+
|
|
108
|
+
<div class="title h3">${this.title}</div>
|
|
109
|
+
|
|
110
|
+
<!-- Description -->
|
|
111
|
+
${this.description
|
|
112
|
+
? html` <p class="small">${this.description}</p> `
|
|
113
|
+
: nothing}
|
|
114
|
+
|
|
115
|
+
<!-- Action label -->
|
|
116
|
+
${this.actionLabel
|
|
117
|
+
? html`
|
|
118
|
+
<div class="label small strong">
|
|
119
|
+
${this.actionLabel} <cfa-icon>arrow_forward</cfa-icon>
|
|
120
|
+
</div>
|
|
121
|
+
`
|
|
122
|
+
: nothing}
|
|
123
|
+
`;
|
|
124
|
+
}
|
|
125
|
+
render() {
|
|
126
|
+
return html`
|
|
127
|
+
<style>
|
|
128
|
+
cfa-blob {
|
|
129
|
+
--color: var(--blob-color);
|
|
130
|
+
}
|
|
131
|
+
</style>
|
|
132
|
+
${this.linkUrl
|
|
133
|
+
? html`
|
|
134
|
+
<a
|
|
135
|
+
href="${this.linkUrl}"
|
|
136
|
+
target="${this.linkTarget}"
|
|
137
|
+
rel="${this.linkTarget == "_blank" ? "noopener" : nothing}"
|
|
138
|
+
class="tile"
|
|
139
|
+
>
|
|
140
|
+
${this.tileContentTemplate()}
|
|
141
|
+
</a>
|
|
142
|
+
`
|
|
143
|
+
: html` <div class="tile">${this.tileContentTemplate()}</div> `}
|
|
144
|
+
`;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
if (!customElements.get("cfa-tile")) {
|
|
149
|
+
customElements.define("cfa-tile", Tile);
|
|
150
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { html } from "lit-html";
|
|
2
|
+
import "./tile.js";
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
title: "Molecules/Tile",
|
|
6
|
+
argTypes: {},
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
const Template = ({
|
|
10
|
+
title,
|
|
11
|
+
description,
|
|
12
|
+
imageUrl,
|
|
13
|
+
imageAltText,
|
|
14
|
+
linkUrl,
|
|
15
|
+
linkTarget,
|
|
16
|
+
actionLabel,
|
|
17
|
+
}) => html`
|
|
18
|
+
<cfa-tile
|
|
19
|
+
title="${title}"
|
|
20
|
+
description="${description}"
|
|
21
|
+
imageUrl="${imageUrl}"
|
|
22
|
+
imageAltText="${imageAltText}"
|
|
23
|
+
linkUrl="${linkUrl}"
|
|
24
|
+
linkTarget="${linkTarget}"
|
|
25
|
+
actionLabel="${actionLabel}"
|
|
26
|
+
>
|
|
27
|
+
</cfa-tile>
|
|
28
|
+
`;
|
|
29
|
+
|
|
30
|
+
export const Default = Template.bind({});
|
|
31
|
+
Default.args = {
|
|
32
|
+
title: "Build equitable systems",
|
|
33
|
+
description:
|
|
34
|
+
"Government services should lead to outcomes that are just and equitable",
|
|
35
|
+
imageUrl: "https://files.codeforamerica.org/2021/05/28124726/equity.svg",
|
|
36
|
+
imageAltText:
|
|
37
|
+
"Icon representing equity, with three people of different heights and the two shorter people standing on a box to be the same height as the tallest person",
|
|
38
|
+
linkUrl: "#",
|
|
39
|
+
linkTarget: "_blank",
|
|
40
|
+
actionLabel: "Learn more",
|
|
41
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { LitElement, html, css } from "lit";
|
|
2
|
+
import { commonStyles } from "../shared/common.js";
|
|
3
|
+
import { typographyStyles } from "../shared/typography.js";
|
|
4
|
+
|
|
5
|
+
class Transcript extends LitElement {
|
|
6
|
+
static styles = [
|
|
7
|
+
commonStyles,
|
|
8
|
+
typographyStyles,
|
|
9
|
+
css`
|
|
10
|
+
:host {
|
|
11
|
+
--label-color: var(--purple-60);
|
|
12
|
+
|
|
13
|
+
display: block;
|
|
14
|
+
max-width: var(--column-span-8);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.label {
|
|
18
|
+
--text-color: var(--label-color);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.text {
|
|
22
|
+
background-color: var(--white);
|
|
23
|
+
border: var(--hairline) solid var(--black-20);
|
|
24
|
+
color: var(--black);
|
|
25
|
+
height: calc(12 * var(--spacing-layout-1));
|
|
26
|
+
overflow: auto;
|
|
27
|
+
padding: var(--spacing-component-3);
|
|
28
|
+
}
|
|
29
|
+
`,
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
render() {
|
|
33
|
+
return html`
|
|
34
|
+
<div class="label eyebrow-with-line">Transcript</div>
|
|
35
|
+
<div class="text">
|
|
36
|
+
<slot />
|
|
37
|
+
</div>
|
|
38
|
+
`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (!customElements.get("cfa-transcript")) {
|
|
43
|
+
customElements.define("cfa-transcript", Transcript);
|
|
44
|
+
}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { html } from "lit-html";
|
|
2
|
+
import "./transcript";
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
title: "Molecules/Transcript",
|
|
6
|
+
argTypes: {},
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
const Template = () => html`
|
|
10
|
+
<cfa-transcript>
|
|
11
|
+
<p>00:00</p>
|
|
12
|
+
<p>
|
|
13
|
+
My dad’s first lesson to me was, “Look people in the eye, mi hija, make
|
|
14
|
+
sure people see you and you see them.” He has been a proud janitor, farm
|
|
15
|
+
worker, shoe shiner, home builder and small business owner. He has seen
|
|
16
|
+
the world from so many different lenses and has lots of stories to tell.
|
|
17
|
+
But there’s one I’ve never been able to get out of my head. A story when
|
|
18
|
+
my dad was a young kid.
|
|
19
|
+
</p>
|
|
20
|
+
<p>00:27</p>
|
|
21
|
+
<p>
|
|
22
|
+
He and my tio Milo knew exactly when the trucks would come in. Under the
|
|
23
|
+
freeway, just as the sun set, they jumped the fence to get into the dump.
|
|
24
|
+
And as they waited for the trucks, they’d make bets on who would find the
|
|
25
|
+
best food. An uneaten apple they could clean, a perfect banana, sometimes
|
|
26
|
+
a candy bar or a wrapped sandwich. And then they’d grab whatever they
|
|
27
|
+
could find, and save the very best to bring home to their even younger
|
|
28
|
+
brothers and sisters.
|
|
29
|
+
</p>
|
|
30
|
+
<p>01:00</p>
|
|
31
|
+
<p>
|
|
32
|
+
I hate that story. But I share it because we can’t solve what we can’t
|
|
33
|
+
see.
|
|
34
|
+
</p>
|
|
35
|
+
<p>01:10</p>
|
|
36
|
+
<p>
|
|
37
|
+
In 1936, this image of the migrant mother captured the living conditions
|
|
38
|
+
in the West, showing lawmakers what people were going through. After it
|
|
39
|
+
published, the United States government sent 20,000 pounds of food, and
|
|
40
|
+
that image solidified support for the very first safety-net programs in
|
|
41
|
+
America. Yet still today, more than 37 million Americans are still living
|
|
42
|
+
in poverty. One in six kids.
|
|
43
|
+
</p>
|
|
44
|
+
<p>01:37</p>
|
|
45
|
+
<p>
|
|
46
|
+
As a student of economics and a career public servant, I know we’ve been
|
|
47
|
+
at this for a long time. But it’s my work today that has given me the hope
|
|
48
|
+
that we can finally end poverty as we know it. And here’s why. Right now,
|
|
49
|
+
there are 80 public benefit programs all across the country, intended to
|
|
50
|
+
provide critical anti-poverty resources. Yet an estimated 60 billion
|
|
51
|
+
dollars in benefits go unclaimed every year. Sixty billion. I believe, in
|
|
52
|
+
large part, due to complicated, outdated systems that weren’t designed to
|
|
53
|
+
see the people they serve.
|
|
54
|
+
</p>
|
|
55
|
+
<p>02:13</p>
|
|
56
|
+
<p>
|
|
57
|
+
I want you to imagine for a moment that you lost your job, and you don’t
|
|
58
|
+
know how you’re going to put food on the table. But you hear about this
|
|
59
|
+
government program that can help. And you begin the process of applying.
|
|
60
|
+
The first thing you realize is you can’t do it on the only online
|
|
61
|
+
connection you have, your phone, because the only way to apply online is
|
|
62
|
+
through a desktop computer. So you head to the community library, you go
|
|
63
|
+
through screen after screen, answering close to 200 questions, wading
|
|
64
|
+
through confusing instructions. It feels a little bit like a game of
|
|
65
|
+
gotcha, except your benefits are at risk. Now, if you’re from a place like
|
|
66
|
+
my hometown, a small rural farming town, there isn’t an easily accessible
|
|
67
|
+
public venue with desktop computers. So you have to find a ride to the
|
|
68
|
+
nearest social services office, maybe 30 miles away. When you get there,
|
|
69
|
+
you have to walk through metal detectors with two security guards, past a
|
|
70
|
+
long table of scattered paper forms into the main waiting room. It’s loud,
|
|
71
|
+
and there’s a long line leading to that service counter. When you get to
|
|
72
|
+
the front of it, you’re met with a thick, clouded sheet of bulletproof
|
|
73
|
+
glass separating you from someone who could finally help.
|
|
74
|
+
</p>
|
|
75
|
+
<p>03:31</p>
|
|
76
|
+
<p>
|
|
77
|
+
That has been the system in America for many communities like mine. So
|
|
78
|
+
it’s no wonder that 14 million Americans aren’t enrolled in child and food
|
|
79
|
+
nutrition programs, or that six million are missing health care benefits.
|
|
80
|
+
Technology has changed almost every aspect of our lives. It’s made things
|
|
81
|
+
faster, more efficient, automatic. We need to do the same for people
|
|
82
|
+
seeking benefits.
|
|
83
|
+
</p>
|
|
84
|
+
<p>03:56</p>
|
|
85
|
+
<p>
|
|
86
|
+
I work for an organization called Code for America. We deploy
|
|
87
|
+
human-centered technology, the kind that respects you from the start,
|
|
88
|
+
meets you where you are, provides an easy, positive experience. And our
|
|
89
|
+
research has shown there are four factors we need to overcome. First, we
|
|
90
|
+
know that far more people have access to the internet on their phone than
|
|
91
|
+
a desktop computer. So applications should be online and mobile-friendly.
|
|
92
|
+
Second, lots of people are falling off because the process is complicated.
|
|
93
|
+
So applications need to be simple and easy to use. Third, we know that
|
|
94
|
+
people who are eligible for one program, like food assistance, are pretty
|
|
95
|
+
likely to be eligible for another, like health care. So let’s combine
|
|
96
|
+
processes where we can. And finally, we know there are unseen heroes in
|
|
97
|
+
government — caseworkers, social workers — on the front lines, navigating
|
|
98
|
+
old systems. We can equip them with the data and tools to streamline their
|
|
99
|
+
efforts.
|
|
100
|
+
</p>
|
|
101
|
+
<p>04:56</p>
|
|
102
|
+
<p>
|
|
103
|
+
Here’s what California’s food assistance used to look like. 183 questions,
|
|
104
|
+
51 pages of screens available only by desktop computer. We took that
|
|
105
|
+
application and redesigned it. This is GetCalFresh, a mobile-first
|
|
106
|
+
application available 24 hours a day in multiple languages, with chat
|
|
107
|
+
support.
|
|
108
|
+
</p>
|
|
109
|
+
<p>05:17</p>
|
|
110
|
+
<p>(Applause)</p>
|
|
111
|
+
<p>05:23</p>
|
|
112
|
+
<p>
|
|
113
|
+
California’s food assistance application went from one of the most complex
|
|
114
|
+
in the nation to being recognized as one of the easiest application
|
|
115
|
+
experiences of any state. For 10 years we had been working with multiple
|
|
116
|
+
states on projects just like that, showing the importance and potential of
|
|
117
|
+
digital delivery of benefits. And that’s when the pandemic hit. And these
|
|
118
|
+
images in West Valley, Utah; San Antonio, Texas; Pittsburgh, Pennsylvania.
|
|
119
|
+
Parking lots filled with families waiting for food. America could finally
|
|
120
|
+
see what we had been seeing for a decade. The growing number of people in
|
|
121
|
+
poverty and communities left out as a result of failing systems. Our phone
|
|
122
|
+
started ringing. From Washington to Maryland, we helped states distribute
|
|
123
|
+
600 million dollars in benefits to kids in school lunch programs.
|
|
124
|
+
Louisiana used our best practices tools in notifying people. They
|
|
125
|
+
proactively sent out more than 40 million texts to residents on how to
|
|
126
|
+
access critical services. And in Minnesota, we developed an all-in-one
|
|
127
|
+
application for nine different safety-net benefits. That can be completed
|
|
128
|
+
in less than 14 minutes.
|
|
129
|
+
</p>
|
|
130
|
+
<p>06:41</p>
|
|
131
|
+
<p>(Applause)</p>
|
|
132
|
+
<p>06:47</p>
|
|
133
|
+
<p>
|
|
134
|
+
Nearly 200,000 people immediately applied in the first six months. And for
|
|
135
|
+
the first time ever, Minnesota’s system integrated to reach all sovereign
|
|
136
|
+
tribal nation members.
|
|
137
|
+
</p>
|
|
138
|
+
<p>06:58</p>
|
|
139
|
+
<p>(Applause)</p>
|
|
140
|
+
<p>07:02</p>
|
|
141
|
+
<p>
|
|
142
|
+
That’s what is possible, and this is the moment to keep going, redesigning
|
|
143
|
+
our safety net for a new time and a new age. And we can do it all across
|
|
144
|
+
the country, as governments reset.
|
|
145
|
+
</p>
|
|
146
|
+
<p>07:12</p>
|
|
147
|
+
<p>
|
|
148
|
+
Over the next seven years, we will partner to redesign systems to unlock
|
|
149
|
+
30 billion dollars in benefits for 13 million eligible people in at least
|
|
150
|
+
15 states. We will bring data scientists and engineers, technologists and
|
|
151
|
+
researchers together, sitting side by side with government teams. And our
|
|
152
|
+
Safety Net Innovation Lab will improve upon and share best practices so
|
|
153
|
+
that every government can benefit. Because at the heart of our audacious
|
|
154
|
+
goal is to show the world what’s possible when we use the best tools we
|
|
155
|
+
have today: human-centered technology and government. So that families
|
|
156
|
+
aren’t waiting in parking lots for resources. Or kids, growing up like my
|
|
157
|
+
dad, aren’t searching for food by whatever means possible. Then, then we
|
|
158
|
+
will see the true potential of every kid. And that’s the calling of this
|
|
159
|
+
moment to redesign our systems to see people, all people.
|
|
160
|
+
</p>
|
|
161
|
+
<p>08:23</p>
|
|
162
|
+
<p>Thank you.</p>
|
|
163
|
+
</cfa-transcript>
|
|
164
|
+
`;
|
|
165
|
+
|
|
166
|
+
export const Default = Template.bind({});
|
|
167
|
+
Default.args = {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Base
|
|
2
|
+
|
|
3
|
+
html {
|
|
4
|
+
color: var(--text-color);
|
|
5
|
+
font-family: var(--font-family-base);
|
|
6
|
+
font-size: var(--font-size-base);
|
|
7
|
+
font-weight: var(--font-weight-regular);
|
|
8
|
+
image-rendering: -webkit-optimize-contrast;
|
|
9
|
+
letter-spacing: var(--letter-spacing-base);
|
|
10
|
+
line-height: var(--line-height-base);
|
|
11
|
+
scroll-behavior: smooth;
|
|
12
|
+
scroll-padding-top: var(--spacing-layout-3);
|
|
13
|
+
text-underline-offset: var(--text-underline-offset);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
body {
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: column;
|
|
19
|
+
min-height: 1vh;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
body > main {
|
|
23
|
+
flex-grow: 1;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
a {
|
|
27
|
+
color: var(--link-color);
|
|
28
|
+
text-decoration: underline;
|
|
29
|
+
text-decoration-thickness: var(--hairline);
|
|
30
|
+
|
|
31
|
+
&:hover {
|
|
32
|
+
color: var(--link-hover-color);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
*:focus-visible,
|
|
37
|
+
*:target {
|
|
38
|
+
outline: var(--focus-outline);
|
|
39
|
+
position: relative;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Color modes
|
|
43
|
+
|
|
44
|
+
[data-color-mode="dark"] {
|
|
45
|
+
--link-color: var(--white);
|
|
46
|
+
--link-hover-color: var(--white);
|
|
47
|
+
|
|
48
|
+
color: var(--white);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
[data-color-mode="light"] {
|
|
52
|
+
--link-color: var(--link-color);
|
|
53
|
+
--link-hover-color: var(--link-hover-color);
|
|
54
|
+
|
|
55
|
+
color: var(--text-color);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Fonts
|
|
59
|
+
|
|
60
|
+
@font-face {
|
|
61
|
+
font-family: 'Source Sans 3';
|
|
62
|
+
font-style: normal;
|
|
63
|
+
src: url('../static/fonts/SourceSans3.woff2') format('woff2');
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@font-face {
|
|
67
|
+
font-family: 'Source Sans 3';
|
|
68
|
+
font-style: italic;
|
|
69
|
+
src: url('../static/fonts/SourceSans3-Italic.woff2') format('woff2');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@font-face {
|
|
73
|
+
font-family: 'Source Serif 4';
|
|
74
|
+
font-style: normal;
|
|
75
|
+
src: url('../static/fonts/SourceSerif4.woff2') format('woff2');
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
@font-face {
|
|
79
|
+
font-family: 'Source Serif 4';
|
|
80
|
+
font-style: italic;
|
|
81
|
+
src: url('../static/fonts/SourceSerif4-Italic.woff2') format('woff2');
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Outlines
|
|
85
|
+
|
|
86
|
+
$highlight-outline: var(--medium) solid var(--yellow-40);
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Meta, ColorPalette, ColorItem } from '@storybook/blocks';
|
|
2
|
+
|
|
3
|
+
<Meta title="Colors" />
|
|
4
|
+
|
|
5
|
+
<ColorPalette>
|
|
6
|
+
<ColorItem
|
|
7
|
+
title="Grayscale"
|
|
8
|
+
subtitle=""
|
|
9
|
+
colors={{
|
|
10
|
+
"white": "#fff",
|
|
11
|
+
"gray-20": "#ececec",
|
|
12
|
+
"gray-40": "#b4b4b4",
|
|
13
|
+
"gray-60": "#555555",
|
|
14
|
+
"gray-80": "#292929",
|
|
15
|
+
"black": "#000",
|
|
16
|
+
}}
|
|
17
|
+
/>
|
|
18
|
+
<ColorItem
|
|
19
|
+
title="Transparent Black"
|
|
20
|
+
subtitle=""
|
|
21
|
+
colors={{
|
|
22
|
+
"black-10": "rgba(0,0,0,0.1)",
|
|
23
|
+
"black-20": "rgba(0,0,0,0.2)",
|
|
24
|
+
"black-40": "rgba(0,0,0,0.4)",
|
|
25
|
+
"black-60": "rgba(0,0,0,0.6)",
|
|
26
|
+
"black-80": "rgba(0,0,0,0.8)",
|
|
27
|
+
}}
|
|
28
|
+
/>
|
|
29
|
+
<ColorItem
|
|
30
|
+
title="Transparent White"
|
|
31
|
+
subtitle=""
|
|
32
|
+
colors={{
|
|
33
|
+
"white-20": "rgba(255,255,255,0.2)",
|
|
34
|
+
"white-40": "rgba(255,255,255,0.4)",
|
|
35
|
+
"white-60": "rgba(255,255,255,0.6)",
|
|
36
|
+
"white-80": "rgba(255,255,255,0.8)",
|
|
37
|
+
}}
|
|
38
|
+
/>
|
|
39
|
+
<ColorItem
|
|
40
|
+
title="Purple"
|
|
41
|
+
subtitle="Our primary brand color"
|
|
42
|
+
colors={{
|
|
43
|
+
"purple-10": "#f4f4fb",
|
|
44
|
+
"purple-20": "#dbdaf1",
|
|
45
|
+
"purple-40": "#ada9ff",
|
|
46
|
+
"purple-60": "#4b49b2",
|
|
47
|
+
"purple-80": "#2b1a78",
|
|
48
|
+
}}
|
|
49
|
+
/>
|
|
50
|
+
<ColorItem
|
|
51
|
+
title="Red"
|
|
52
|
+
subtitle=""
|
|
53
|
+
colors={{
|
|
54
|
+
"red-20": "#fbdadc",
|
|
55
|
+
"red-40": "#ff999f",
|
|
56
|
+
"red-60": "#af121d",
|
|
57
|
+
"red-80": "#5c0a0f",
|
|
58
|
+
}}
|
|
59
|
+
/>
|
|
60
|
+
<ColorItem
|
|
61
|
+
title="Blue"
|
|
62
|
+
subtitle=""
|
|
63
|
+
colors={{
|
|
64
|
+
"blue-20": "#e6ebf9",
|
|
65
|
+
"blue-40": "#b3c7ff",
|
|
66
|
+
"blue-60": "#7595f0",
|
|
67
|
+
"blue-80": "#172c68",
|
|
68
|
+
}}
|
|
69
|
+
/>
|
|
70
|
+
<ColorItem
|
|
71
|
+
title="Yellow"
|
|
72
|
+
subtitle=""
|
|
73
|
+
colors={{
|
|
74
|
+
"yellow-20": "#ffebcc",
|
|
75
|
+
"yellow-40": "#ffd699",
|
|
76
|
+
"yellow-60": "#f2aa40",
|
|
77
|
+
"yellow-80": "#663d00",
|
|
78
|
+
}}
|
|
79
|
+
/>
|
|
80
|
+
<ColorItem
|
|
81
|
+
title="Green"
|
|
82
|
+
subtitle=""
|
|
83
|
+
colors={{
|
|
84
|
+
"green-20": "#d6f5ed",
|
|
85
|
+
"green-40": "#adf0e0",
|
|
86
|
+
"green-60": "#39aa8e",
|
|
87
|
+
"green-80": "#004239",
|
|
88
|
+
}}
|
|
89
|
+
/>
|
|
90
|
+
<ColorItem
|
|
91
|
+
title="Sand"
|
|
92
|
+
subtitle=""
|
|
93
|
+
colors={{
|
|
94
|
+
"sand-20": "#f5f0ed",
|
|
95
|
+
"sand-40": "#f8d5bf",
|
|
96
|
+
"sand-60": "#c19f8b",
|
|
97
|
+
"sand-80": "#3d3129",
|
|
98
|
+
}}
|
|
99
|
+
/>
|
|
100
|
+
</ColorPalette>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Meta } from '@storybook/blocks';
|
|
2
|
+
|
|
3
|
+
<Meta title="Grid" />
|
|
4
|
+
|
|
5
|
+
<div class="container-fluid wrapper">
|
|
6
|
+
<div class="row">
|
|
7
|
+
<div class="col-xs-12 col-md-6">
|
|
8
|
+
Hello
|
|
9
|
+
</div>
|
|
10
|
+
<div class="col-xs-12 col-md-6">
|
|
11
|
+
Hello
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|