@grantcodes/ui 2.15.7 → 2.16.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/CHANGELOG.md +60 -0
- package/custom-elements.json +476 -346
- package/package.json +23 -23
- package/src/components/accordion/accordion-item.component.js +17 -19
- package/src/components/accordion/accordion-item.css +40 -44
- package/src/components/accordion/accordion.component.js +7 -7
- package/src/components/accordion/accordion.css +5 -5
- package/src/components/accordion/accordion.js +6 -6
- package/src/components/accordion/accordion.react.js +6 -6
- package/src/components/accordion/accordion.stories.js +10 -10
- package/src/components/accordion/accordion.test.js +100 -100
- package/src/components/accordion/index.js +6 -6
- package/src/components/app-bar/app-bar.component.js +86 -92
- package/src/components/app-bar/app-bar.css +187 -203
- package/src/components/app-bar/app-bar.js +3 -3
- package/src/components/app-bar/app-bar.react.js +9 -9
- package/src/components/app-bar/app-bar.stories.js +20 -20
- package/src/components/app-bar/app-bar.test.js +190 -237
- package/src/components/app-bar/index.js +1 -1
- package/src/components/app-bar/nav-link.component.js +7 -9
- package/src/components/app-bar/nav-link.css +23 -28
- package/src/components/app-bar/nav-link.js +3 -3
- package/src/components/app-bar/nav-link.react.js +6 -6
- package/src/components/avatar/avatar.component.js +79 -68
- package/src/components/avatar/avatar.css +18 -18
- package/src/components/avatar/avatar.js +3 -3
- package/src/components/avatar/avatar.react.js +6 -6
- package/src/components/avatar/avatar.stories.js +24 -23
- package/src/components/avatar/avatar.test.js +128 -84
- package/src/components/avatar/index.js +1 -1
- package/src/components/badge/badge.component.js +23 -23
- package/src/components/badge/badge.css +39 -52
- package/src/components/badge/badge.js +3 -3
- package/src/components/badge/badge.react.js +6 -6
- package/src/components/badge/badge.stories.js +23 -23
- package/src/components/badge/badge.test.js +53 -68
- package/src/components/badge/index.js +1 -1
- package/src/components/breadcrumb/breadcrumb.component.js +95 -96
- package/src/components/breadcrumb/breadcrumb.css +42 -44
- package/src/components/breadcrumb/breadcrumb.js +6 -9
- package/src/components/breadcrumb/breadcrumb.react.js +9 -12
- package/src/components/breadcrumb/breadcrumb.stories.js +5 -5
- package/src/components/breadcrumb/breadcrumb.test.js +139 -151
- package/src/components/breadcrumb/index.js +1 -1
- package/src/components/button/button.component.js +101 -103
- package/src/components/button/button.css +90 -94
- package/src/components/button/button.js +3 -3
- package/src/components/button/button.react.js +6 -6
- package/src/components/button/button.stories.js +25 -25
- package/src/components/button/button.test.js +324 -344
- package/src/components/button/index.js +1 -1
- package/src/components/button-group/button-group.component.js +18 -18
- package/src/components/button-group/button-group.css +16 -16
- package/src/components/button-group/button-group.js +3 -3
- package/src/components/button-group/button-group.react.js +6 -6
- package/src/components/button-group/button-group.stories.js +23 -23
- package/src/components/button-group/button-group.test.js +54 -54
- package/src/components/button-group/index.js +1 -1
- package/src/components/card/card.component.js +31 -33
- package/src/components/card/card.css +85 -85
- package/src/components/card/card.js +4 -4
- package/src/components/card/card.react.js +6 -6
- package/src/components/card/card.stories.js +27 -26
- package/src/components/card/card.test.js +56 -56
- package/src/components/card/index.js +1 -1
- package/src/components/code-preview/code-preview.component.js +47 -48
- package/src/components/code-preview/code-preview.css +11 -11
- package/src/components/code-preview/code-preview.js +3 -3
- package/src/components/code-preview/code-preview.react.js +6 -6
- package/src/components/code-preview/code-preview.stories.js +29 -29
- package/src/components/code-preview/code-preview.test.js +112 -135
- package/src/components/code-preview/index.js +1 -1
- package/src/components/container/container.component.js +27 -27
- package/src/components/container/container.css +22 -22
- package/src/components/container/container.js +3 -3
- package/src/components/container/container.react.js +6 -6
- package/src/components/container/container.stories.js +44 -44
- package/src/components/container/container.test.js +54 -66
- package/src/components/container/index.js +1 -1
- package/src/components/countdown/countdown.component.js +160 -162
- package/src/components/countdown/countdown.css +50 -34
- package/src/components/countdown/countdown.js +3 -3
- package/src/components/countdown/countdown.react.js +6 -6
- package/src/components/countdown/countdown.stories.js +34 -34
- package/src/components/countdown/index.js +1 -1
- package/src/components/cta/cta.component.js +77 -81
- package/src/components/cta/cta.css +24 -24
- package/src/components/cta/cta.js +3 -3
- package/src/components/cta/cta.react.js +6 -6
- package/src/components/cta/cta.stories.js +32 -32
- package/src/components/cta/index.js +1 -1
- package/src/components/dialog/dialog.component.js +95 -58
- package/src/components/dialog/dialog.css +45 -50
- package/src/components/dialog/dialog.js +3 -3
- package/src/components/dialog/dialog.react.js +6 -6
- package/src/components/dialog/dialog.stories.js +38 -29
- package/src/components/dialog/dialog.test.js +188 -102
- package/src/components/dialog/index.js +1 -1
- package/src/components/dropdown/dropdown.component.js +220 -201
- package/src/components/dropdown/dropdown.css +60 -84
- package/src/components/dropdown/dropdown.js +6 -9
- package/src/components/dropdown/dropdown.react.js +15 -15
- package/src/components/dropdown/dropdown.stories.js +10 -10
- package/src/components/dropdown/dropdown.test.js +211 -157
- package/src/components/dropdown/index.js +1 -1
- package/src/components/dropzone/dropzone.component.js +126 -129
- package/src/components/dropzone/dropzone.css +35 -37
- package/src/components/dropzone/dropzone.js +3 -3
- package/src/components/dropzone/dropzone.react.js +6 -6
- package/src/components/dropzone/dropzone.stories.js +28 -28
- package/src/components/dropzone/dropzone.test.js +91 -99
- package/src/components/dropzone/index.js +1 -1
- package/src/components/feature-list/feature-list.component.js +78 -86
- package/src/components/feature-list/feature-list.css +37 -37
- package/src/components/feature-list/feature-list.js +3 -3
- package/src/components/feature-list/feature-list.react.js +6 -6
- package/src/components/feature-list/feature-list.stories.js +86 -90
- package/src/components/feature-list/index.js +1 -1
- package/src/components/footer/footer-column.component.js +7 -7
- package/src/components/footer/footer-column.css +22 -22
- package/src/components/footer/footer.component.js +19 -19
- package/src/components/footer/footer.css +38 -38
- package/src/components/footer/footer.js +8 -8
- package/src/components/footer/footer.react.js +9 -9
- package/src/components/footer/footer.stories.js +9 -9
- package/src/components/footer/footer.test.js +101 -111
- package/src/components/footer/index.js +2 -2
- package/src/components/form-field/form-field.component.js +167 -125
- package/src/components/form-field/form-field.css +24 -24
- package/src/components/form-field/form-field.js +3 -3
- package/src/components/form-field/form-field.react.js +6 -6
- package/src/components/form-field/form-field.stories.js +53 -44
- package/src/components/form-field/form-field.test.js +280 -134
- package/src/components/form-field/index.js +1 -1
- package/src/components/gallery/gallery-image.component.js +30 -30
- package/src/components/gallery/gallery-image.js +3 -3
- package/src/components/gallery/gallery-image.react.js +6 -6
- package/src/components/gallery/gallery.component.js +24 -17
- package/src/components/gallery/gallery.css +79 -72
- package/src/components/gallery/gallery.js +3 -3
- package/src/components/gallery/gallery.react.js +6 -6
- package/src/components/gallery/gallery.stories.js +69 -68
- package/src/components/gallery/gallery.test.js +95 -88
- package/src/components/gallery/index.js +2 -2
- package/src/components/hero/hero.component.js +53 -57
- package/src/components/hero/hero.css +27 -27
- package/src/components/hero/hero.js +3 -3
- package/src/components/hero/hero.react.js +6 -6
- package/src/components/hero/hero.stories.js +39 -39
- package/src/components/hero/index.js +1 -1
- package/src/components/icon/icon.component.js +10 -10
- package/src/components/icon/icon.css +13 -13
- package/src/components/icon/icon.js +4 -4
- package/src/components/icon/icon.react.js +6 -6
- package/src/components/icon/icon.stories.js +8 -9
- package/src/components/icon/icon.test.js +54 -55
- package/src/components/icon/index.js +1 -1
- package/src/components/loading/index.js +1 -1
- package/src/components/loading/loading.component.js +41 -14
- package/src/components/loading/loading.css +47 -30
- package/src/components/loading/loading.js +4 -4
- package/src/components/loading/loading.react.js +6 -6
- package/src/components/loading/loading.stories.js +19 -18
- package/src/components/loading/loading.test.js +77 -54
- package/src/components/logo-cloud/index.js +1 -1
- package/src/components/logo-cloud/logo-cloud.component.js +39 -43
- package/src/components/logo-cloud/logo-cloud.css +31 -31
- package/src/components/logo-cloud/logo-cloud.js +3 -3
- package/src/components/logo-cloud/logo-cloud.react.js +6 -6
- package/src/components/logo-cloud/logo-cloud.stories.js +80 -80
- package/src/components/map/index.js +1 -1
- package/src/components/map/map.component.js +103 -107
- package/src/components/map/map.css +22 -22
- package/src/components/map/map.js +3 -3
- package/src/components/map/map.react.js +6 -6
- package/src/components/map/map.stories.js +38 -38
- package/src/components/media-text/index.js +1 -1
- package/src/components/media-text/media-text.component.js +76 -70
- package/src/components/media-text/media-text.css +32 -32
- package/src/components/media-text/media-text.js +3 -3
- package/src/components/media-text/media-text.react.js +6 -6
- package/src/components/media-text/media-text.stories.js +45 -45
- package/src/components/media-text/media-text.test.js +72 -0
- package/src/components/newsletter/index.js +1 -1
- package/src/components/newsletter/newsletter.component.js +56 -64
- package/src/components/newsletter/newsletter.css +48 -48
- package/src/components/newsletter/newsletter.js +3 -3
- package/src/components/newsletter/newsletter.react.js +6 -6
- package/src/components/newsletter/newsletter.stories.js +35 -35
- package/src/components/notice/index.js +1 -1
- package/src/components/notice/notice.component.js +66 -55
- package/src/components/notice/notice.css +37 -38
- package/src/components/notice/notice.js +3 -3
- package/src/components/notice/notice.react.js +6 -6
- package/src/components/notice/notice.stories.js +54 -53
- package/src/components/notice/notice.test.js +210 -156
- package/src/components/pagination/index.js +1 -1
- package/src/components/pagination/pagination.component.js +44 -44
- package/src/components/pagination/pagination.css +6 -6
- package/src/components/pagination/pagination.js +4 -4
- package/src/components/pagination/pagination.react.js +6 -6
- package/src/components/pagination/pagination.stories.js +20 -18
- package/src/components/pagination/pagination.test.js +95 -102
- package/src/components/person/index.js +1 -1
- package/src/components/person/person.component.js +29 -29
- package/src/components/person/person.css +17 -17
- package/src/components/person/person.js +4 -4
- package/src/components/person/person.react.js +6 -6
- package/src/components/person/person.stories.js +34 -33
- package/src/components/person/person.test.js +55 -68
- package/src/components/pricing/index.js +1 -1
- package/src/components/pricing/pricing.component.js +58 -70
- package/src/components/pricing/pricing.css +65 -65
- package/src/components/pricing/pricing.js +3 -3
- package/src/components/pricing/pricing.react.js +6 -6
- package/src/components/pricing/pricing.stories.js +96 -96
- package/src/components/sidebar/index.js +1 -1
- package/src/components/sidebar/sidebar.component.js +157 -130
- package/src/components/sidebar/sidebar.css +118 -115
- package/src/components/sidebar/sidebar.js +4 -4
- package/src/components/sidebar/sidebar.react.js +10 -10
- package/src/components/sidebar/sidebar.stories.js +10 -10
- package/src/components/sidebar/sidebar.test.js +250 -230
- package/src/components/stats/index.js +1 -1
- package/src/components/stats/stats.component.js +42 -50
- package/src/components/stats/stats.css +29 -29
- package/src/components/stats/stats.js +3 -3
- package/src/components/stats/stats.react.js +6 -6
- package/src/components/stats/stats.stories.js +40 -40
- package/src/components/tabs/index.js +2 -2
- package/src/components/tabs/internal/tabs-button.component.js +16 -27
- package/src/components/tabs/internal/tabs-button.js +3 -3
- package/src/components/tabs/internal/tabs-button.react.js +6 -6
- package/src/components/tabs/internal/tabs-item.component.js +30 -30
- package/src/components/tabs/tab.component.js +9 -11
- package/src/components/tabs/tab.js +3 -3
- package/src/components/tabs/tab.react.js +6 -6
- package/src/components/tabs/tabs.component.js +107 -109
- package/src/components/tabs/tabs.css +50 -59
- package/src/components/tabs/tabs.js +4 -4
- package/src/components/tabs/tabs.react.js +6 -6
- package/src/components/tabs/tabs.stories.js +23 -22
- package/src/components/tabs/tabs.test.js +201 -147
- package/src/components/testimonials/index.js +1 -1
- package/src/components/testimonials/testimonials.component.js +47 -51
- package/src/components/testimonials/testimonials.css +31 -31
- package/src/components/testimonials/testimonials.js +3 -3
- package/src/components/testimonials/testimonials.react.js +6 -6
- package/src/components/testimonials/testimonials.stories.js +49 -51
- package/src/components/toast/index.js +1 -1
- package/src/components/toast/toast.component.js +217 -148
- package/src/components/toast/toast.css +101 -99
- package/src/components/toast/toast.js +6 -9
- package/src/components/toast/toast.react.js +12 -12
- package/src/components/toast/toast.stories.js +75 -49
- package/src/components/toast/toast.test.js +260 -221
- package/src/components/tooltip/index.js +1 -1
- package/src/components/tooltip/tooltip.component.js +56 -49
- package/src/components/tooltip/tooltip.css +61 -50
- package/src/components/tooltip/tooltip.js +4 -4
- package/src/components/tooltip/tooltip.react.js +6 -6
- package/src/components/tooltip/tooltip.stories.js +24 -23
- package/src/components/tooltip/tooltip.test.js +143 -155
- package/src/constructor.test.js +31 -0
- package/src/css/base.css +1 -0
- package/src/css/colors.stories.js +120 -122
- package/src/css/elements/a.css +28 -28
- package/src/css/elements/forms/button.css +1 -1
- package/src/css/elements/forms/input.css +80 -80
- package/src/css/elements/forms/label.css +3 -3
- package/src/css/elements/media/image.css +2 -2
- package/src/css/elements.stories.js +48 -49
- package/src/css/helpers.css +8 -8
- package/src/css/layers.stories.js +5 -5
- package/src/css/reset.css +102 -102
- package/src/css/themes/todomap.css +1 -1
- package/src/css/tokens.stories.js +50 -53
- package/src/css/typography.css +30 -32
- package/src/css/typography.stories.js +92 -92
- package/src/css/util/focus-ring.css +12 -20
- package/src/css/view-transitions.css +16 -0
- package/src/exports.test.js +89 -105
- package/src/icons.js +1 -1
- package/src/lib/generate-id.js +1 -1
- package/src/lib/slot-presence-controller.js +48 -0
- package/src/lib/styles/all.css +38 -37
- package/src/lib/styles/focus-ring.css +12 -20
- package/src/lib/view-transition.js +42 -0
- package/src/lib/view-transition.test.js +105 -0
- package/src/main.js +29 -29
- package/src/pages/agency.stories.js +59 -59
- package/src/pages/blog-post.stories.js +48 -48
- package/src/pages/saas-landing.stories.js +180 -180
- package/src/react.js +44 -44
- package/src/react.test.js +42 -51
- package/src/test-utils/assert-helpers.js +39 -58
- package/src/test-utils/events.js +32 -34
- package/src/test-utils/fixture.js +31 -31
- package/src/test-utils/index.js +3 -3
- package/src/types.d.ts +3 -3
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { html } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
import '../components/app-bar/app-bar.js';
|
|
3
|
+
import '../components/app-bar/nav-link.js';
|
|
4
|
+
import '../components/button/button.js';
|
|
5
|
+
import '../components/hero/hero.js';
|
|
6
|
+
import '../components/media-text/media-text.js';
|
|
7
|
+
import '../components/feature-list/feature-list.js';
|
|
8
|
+
import '../components/cta/cta.js';
|
|
9
|
+
import '../components/testimonials/testimonials.js';
|
|
10
|
+
import '../components/footer/footer.js';
|
|
11
11
|
|
|
12
12
|
const meta = {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
title: 'Pages/Agency',
|
|
14
|
+
parameters: {
|
|
15
|
+
layout: 'fullscreen',
|
|
16
|
+
},
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
export default meta;
|
|
@@ -49,7 +49,7 @@ const footerContent = html`
|
|
|
49
49
|
* the studio's offering, with a CTA section and testimonials from clients.
|
|
50
50
|
*/
|
|
51
51
|
export const Default = {
|
|
52
|
-
|
|
52
|
+
render: () => html`
|
|
53
53
|
<grantcodes-app-bar>
|
|
54
54
|
<a slot="logo" href="/" style="font-weight: 700; font-size: 1.25rem; text-decoration: none; color: inherit;">
|
|
55
55
|
Studio North
|
|
@@ -76,78 +76,78 @@ export const Default = {
|
|
|
76
76
|
title="What we do"
|
|
77
77
|
columns="3"
|
|
78
78
|
items=${JSON.stringify([
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
79
|
+
{
|
|
80
|
+
title: 'Product design',
|
|
81
|
+
description:
|
|
82
|
+
'UX research, interaction design, and visual design from concept to delivery.',
|
|
83
|
+
icon: 'pen-tool',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
title: 'Web development',
|
|
87
|
+
description:
|
|
88
|
+
'Fast, accessible front-ends built with modern tooling and a focus on longevity.',
|
|
89
|
+
icon: 'code',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
title: 'Brand identity',
|
|
93
|
+
description:
|
|
94
|
+
'Naming, logo, and visual language for startups that want to stand out from day one.',
|
|
95
|
+
icon: 'layers',
|
|
96
|
+
},
|
|
97
|
+
])}
|
|
98
98
|
></grantcodes-feature-list>
|
|
99
99
|
|
|
100
100
|
<grantcodes-media-text
|
|
101
101
|
title="We start by understanding the problem, not the brief"
|
|
102
102
|
text="Before we open Figma, we spend time with your users, your data, and your team. Good design solves real problems — that only happens when we deeply understand the context. Our discovery phase isn't a box-ticking exercise; it's where the real work starts."
|
|
103
|
-
media=${JSON.stringify({ src:
|
|
104
|
-
cta=${JSON.stringify({ label:
|
|
103
|
+
media=${JSON.stringify({ src: 'https://placehold.co/640x480?text=Discovery+Workshop', alt: 'A team working through a discovery workshop on a whiteboard', kind: 'image' })}
|
|
104
|
+
cta=${JSON.stringify({ label: 'Our process', href: '/process' })}
|
|
105
105
|
></grantcodes-media-text>
|
|
106
106
|
|
|
107
107
|
<grantcodes-media-text
|
|
108
108
|
title="Design and engineering working side by side"
|
|
109
109
|
text="We don't throw designs over a wall. Our designers and engineers work in the same room (or the same Slack channel) from day one. That means fewer surprises, faster iteration, and a product that actually looks like the designs."
|
|
110
|
-
media=${JSON.stringify({ src:
|
|
111
|
-
cta=${JSON.stringify({ label:
|
|
110
|
+
media=${JSON.stringify({ src: 'https://placehold.co/640x480?text=Design+%26+Eng', alt: 'Designers and engineers collaborating on a project', kind: 'image' })}
|
|
111
|
+
cta=${JSON.stringify({ label: 'How we work', href: '/about' })}
|
|
112
112
|
reverse
|
|
113
113
|
></grantcodes-media-text>
|
|
114
114
|
|
|
115
115
|
<grantcodes-media-text
|
|
116
116
|
title="We ship, then we stick around"
|
|
117
117
|
text="Launch is not the finish line. We offer ongoing retainers for teams who want a trusted design and engineering partner after go-live — whether that's iterating on feedback, scaling the product, or training your internal team."
|
|
118
|
-
media=${JSON.stringify({ src:
|
|
119
|
-
cta=${JSON.stringify({ label:
|
|
118
|
+
media=${JSON.stringify({ src: 'https://placehold.co/640x480?text=Ongoing+Support', alt: 'A chart showing continuous product iteration over time', kind: 'image' })}
|
|
119
|
+
cta=${JSON.stringify({ label: 'Engagement options', href: '/services' })}
|
|
120
120
|
></grantcodes-media-text>
|
|
121
121
|
|
|
122
122
|
<grantcodes-testimonials
|
|
123
123
|
title="From our clients"
|
|
124
124
|
layout="list"
|
|
125
125
|
items=${JSON.stringify([
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
126
|
+
{
|
|
127
|
+
quote:
|
|
128
|
+
'Studio North turned a very messy brief into a product that exceeded what we imagined. They pushed back in the right places and delivered something genuinely special.',
|
|
129
|
+
name: 'Leo Hartmann',
|
|
130
|
+
role: 'Founder',
|
|
131
|
+
company: 'Archvault',
|
|
132
|
+
avatar: 'https://i.pravatar.cc/80?img=53',
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
quote:
|
|
136
|
+
'Their process is tight. We always knew what was happening, what was coming next, and why. That clarity is rare in agency relationships.',
|
|
137
|
+
name: 'Chloe Bergstrom',
|
|
138
|
+
role: 'VP Product',
|
|
139
|
+
company: 'Meridian Health',
|
|
140
|
+
avatar: 'https://i.pravatar.cc/80?img=25',
|
|
141
|
+
},
|
|
142
|
+
])}
|
|
143
143
|
></grantcodes-testimonials>
|
|
144
144
|
|
|
145
145
|
<grantcodes-cta
|
|
146
146
|
eyebrow="Let's talk"
|
|
147
147
|
title="Have a project in mind?"
|
|
148
148
|
text="We take on a small number of projects each quarter so we can give each one the attention it deserves. If you're building something meaningful, we'd love to hear about it."
|
|
149
|
-
primary-action=${JSON.stringify({ label:
|
|
150
|
-
secondary-action=${JSON.stringify({ label:
|
|
149
|
+
primary-action=${JSON.stringify({ label: 'Start a conversation', href: '/contact' })}
|
|
150
|
+
secondary-action=${JSON.stringify({ label: 'See case studies', href: '/work' })}
|
|
151
151
|
align="center"
|
|
152
152
|
></grantcodes-cta>
|
|
153
153
|
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import { html } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
import '../components/app-bar/app-bar.js';
|
|
3
|
+
import '../components/app-bar/nav-link.js';
|
|
4
|
+
import '../components/button/button.js';
|
|
5
|
+
import '../components/breadcrumb/breadcrumb.js';
|
|
6
|
+
import '../components/container/container.js';
|
|
7
|
+
import '../components/badge/badge.js';
|
|
8
|
+
import '../components/person/person.js';
|
|
9
|
+
import '../components/card/card.js';
|
|
10
|
+
import '../components/cta/cta.js';
|
|
11
|
+
import '../components/footer/footer.js';
|
|
12
12
|
|
|
13
13
|
const meta = {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
title: 'Pages/Blog Post',
|
|
15
|
+
parameters: {
|
|
16
|
+
layout: 'fullscreen',
|
|
17
|
+
},
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
export default meta;
|
|
21
21
|
|
|
22
22
|
const relatedPosts = [
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
23
|
+
{
|
|
24
|
+
category: 'Engineering',
|
|
25
|
+
title: 'How we cut our build times by 60% with better caching',
|
|
26
|
+
excerpt:
|
|
27
|
+
'A deep dive into the caching strategies we adopted across our CI pipeline and how they compound over time.',
|
|
28
|
+
author: { name: 'Priya Nair', avatar: 'https://i.pravatar.cc/80?img=32' },
|
|
29
|
+
date: 'Feb 28, 2025',
|
|
30
|
+
href: '/blog/build-cache',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
category: 'Design',
|
|
34
|
+
title: 'Writing design tokens that scale across themes',
|
|
35
|
+
excerpt:
|
|
36
|
+
"Tokens are only as good as the naming conventions behind them. Here's what we learned from three rewrites.",
|
|
37
|
+
author: { name: 'Leo Hartmann', avatar: 'https://i.pravatar.cc/80?img=53' },
|
|
38
|
+
date: 'Feb 14, 2025',
|
|
39
|
+
href: '/blog/design-tokens',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
category: 'Culture',
|
|
43
|
+
title: "Small teams ship better software — here's why",
|
|
44
|
+
excerpt:
|
|
45
|
+
'Coordination cost grows faster than headcount. We explore the research and what it means for how we hire.',
|
|
46
|
+
author: {
|
|
47
|
+
name: 'Chloe Bergstrom',
|
|
48
|
+
avatar: 'https://i.pravatar.cc/80?img=25',
|
|
49
|
+
},
|
|
50
|
+
date: 'Jan 30, 2025',
|
|
51
|
+
href: '/blog/small-teams',
|
|
52
|
+
},
|
|
53
53
|
];
|
|
54
54
|
|
|
55
55
|
const footerContent = html`
|
|
@@ -84,7 +84,7 @@ const footerContent = html`
|
|
|
84
84
|
* cards for related posts at the bottom.
|
|
85
85
|
*/
|
|
86
86
|
export const Default = {
|
|
87
|
-
|
|
87
|
+
render: () => html`
|
|
88
88
|
<grantcodes-app-bar sticky>
|
|
89
89
|
<a
|
|
90
90
|
slot="logo"
|
|
@@ -264,7 +264,7 @@ export const Default = {
|
|
|
264
264
|
<h2>More from the blog</h2>
|
|
265
265
|
<div style="display: grid; grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr)); gap: var(--g-spacing-lg);">
|
|
266
266
|
${relatedPosts.map(
|
|
267
|
-
|
|
267
|
+
(post) => html`
|
|
268
268
|
<grantcodes-card>
|
|
269
269
|
<div
|
|
270
270
|
slot="header"
|
|
@@ -301,7 +301,7 @@ export const Default = {
|
|
|
301
301
|
</div>
|
|
302
302
|
</grantcodes-card>
|
|
303
303
|
`,
|
|
304
|
-
|
|
304
|
+
)}
|
|
305
305
|
</div>
|
|
306
306
|
</grantcodes-container>
|
|
307
307
|
</div>
|