@rettangoli/sites 1.0.0-rc10 → 1.0.0-rc12
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/README.md +15 -2
- package/package.json +3 -2
- package/sites/README.md +84 -0
- package/sites/partials/footer.yaml +30 -0
- package/sites/partials/landing-cta.yaml +18 -0
- package/sites/partials/landing-features-section.yaml +53 -0
- package/sites/partials/landing-hero.yaml +20 -0
- package/sites/partials/navbar.yaml +1 -1
- package/sites/partials/top-navbar.yaml +83 -0
- package/sites/schemas/data-contract.schema.yaml +729 -0
- package/sites/templates/base.yaml +4 -4
- package/sites/templates/blog-article-list.yaml +61 -0
- package/sites/templates/blog-article.yaml +38 -0
- package/sites/templates/docs.yaml +6 -6
- package/sites/templates/landing-features.yaml +47 -0
- package/sites/themes/theme-rtgl-themes.css +306 -0
- package/src/builtinTemplateFunctions.js +34 -3
- package/templates/default/README.md +22 -1
- package/templates/default/static/css/theme.css +226 -9
- package/templates/default/templates/base.yaml +2 -2
- package/templates/default/templates/post.yaml +2 -2
package/README.md
CHANGED
|
@@ -140,7 +140,8 @@ Binding order:
|
|
|
140
140
|
|
|
141
141
|
- Base template: `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/templates/base.yaml`
|
|
142
142
|
- Docs template: `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/templates/docs.yaml`
|
|
143
|
-
-
|
|
143
|
+
- Landing/blog templates: `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/templates/{landing-features,blog-article-list,blog-article}.yaml`
|
|
144
|
+
- Generic partials: `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/{seo,navbar,mobile-nav,docs-sidebar,top-navbar,footer}.yaml`
|
|
144
145
|
- Legacy docs partial (compat, flat path): `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/docs-mobile-nav.yaml`
|
|
145
146
|
|
|
146
147
|
See `sites/README.md` for full alias examples and required data contract.
|
|
@@ -189,12 +190,14 @@ Available in YAML templates/pages without extra setup:
|
|
|
189
190
|
- `formatDate(value, format = "YYYYMMDDHHmmss", useUtc = true)`
|
|
190
191
|
- `now(format = "YYYYMMDDHHmmss", useUtc = true)`
|
|
191
192
|
- `sort(list, key, order = "asc")`
|
|
193
|
+
- `chunk(list, size = 1, pad = false, fillValue = null)`
|
|
192
194
|
- `md(content)`
|
|
193
195
|
- `toQueryString(object)`
|
|
194
196
|
|
|
195
|
-
`formatDate` tokens: `YYYY`, `MM`, `DD`, `HH`, `mm`, `ss`.
|
|
197
|
+
`formatDate` tokens: `YYYY`, `MMM`, `MM`, `DD`, `D`, `HH`, `mm`, `ss`.
|
|
196
198
|
`decodeURI`/`decodeURIComponent` return the original input when decoding fails.
|
|
197
199
|
`sort` supports `order` as `asc` or `desc` (default: `asc`), accepts dot-path keys (for example `data.date`), and returns a new array.
|
|
200
|
+
`chunk` splits arrays into rows of `size`; with `pad = true`, the last row is padded with `fillValue`.
|
|
198
201
|
`md` returns raw rendered HTML from Markdown for template insertion.
|
|
199
202
|
|
|
200
203
|
## Screenshots
|
|
@@ -207,6 +210,16 @@ Use VT against your generated site:
|
|
|
207
210
|
2. Add `vt` config in `rettangoli.config.yaml`.
|
|
208
211
|
3. Run `rtgl vt generate`, `rtgl vt report`, and `rtgl vt accept`.
|
|
209
212
|
|
|
213
|
+
Docker runtime (recommended for stable Playwright/browser versions):
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
IMAGE="han4wluc/rtgl:playwright-v1.57.0-rtgl-v1.0.0-rc27"
|
|
217
|
+
docker pull "$IMAGE"
|
|
218
|
+
docker run --rm -v "$PWD:/workspace" -w /workspace "$IMAGE" rtgl vt screenshot
|
|
219
|
+
docker run --rm -v "$PWD:/workspace" -w /workspace "$IMAGE" rtgl vt report
|
|
220
|
+
docker run --rm -v "$PWD:/workspace" -w /workspace "$IMAGE" rtgl vt accept
|
|
221
|
+
```
|
|
222
|
+
|
|
210
223
|
Example:
|
|
211
224
|
|
|
212
225
|
```yaml
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rettangoli/sites",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-rc12",
|
|
4
4
|
"description": "Generate static sites using Markdown and YAML for docs, blogs, and marketing sites.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Luciano Hanyon Wu",
|
|
@@ -32,7 +32,8 @@
|
|
|
32
32
|
"vitest": "^4.0.15"
|
|
33
33
|
},
|
|
34
34
|
"scripts": {
|
|
35
|
-
"test": "vitest run --reporter=verbose"
|
|
35
|
+
"test": "vitest run --reporter=verbose",
|
|
36
|
+
"watch:theme-lab": "bunx rtgl sites watch --root-dir ./vt/theme-lab/site --output-path _site --reload-mode full"
|
|
36
37
|
},
|
|
37
38
|
"type": "module",
|
|
38
39
|
"license": "MIT",
|
package/sites/README.md
CHANGED
|
@@ -9,6 +9,12 @@ These files are distribution assets, not `@rettangoli/sites` runtime source code
|
|
|
9
9
|
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/templates/base.yaml`
|
|
10
10
|
- Docs layout template:
|
|
11
11
|
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/templates/docs.yaml`
|
|
12
|
+
- Landing page with features template:
|
|
13
|
+
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/templates/landing-features.yaml`
|
|
14
|
+
- Blog article list template:
|
|
15
|
+
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/templates/blog-article-list.yaml`
|
|
16
|
+
- Blog article template:
|
|
17
|
+
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/templates/blog-article.yaml`
|
|
12
18
|
|
|
13
19
|
## Published Partials
|
|
14
20
|
|
|
@@ -17,6 +23,31 @@ These files are distribution assets, not `@rettangoli/sites` runtime source code
|
|
|
17
23
|
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/mobile-nav.yaml`
|
|
18
24
|
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/docs-sidebar.yaml`
|
|
19
25
|
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/docs-mobile-nav.yaml` (legacy compat partial, flat path)
|
|
26
|
+
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/top-navbar.yaml`
|
|
27
|
+
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/landing-hero.yaml`
|
|
28
|
+
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/landing-features-section.yaml`
|
|
29
|
+
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/landing-cta.yaml`
|
|
30
|
+
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/footer.yaml`
|
|
31
|
+
|
|
32
|
+
## Published Theme Bundle
|
|
33
|
+
|
|
34
|
+
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/themes/theme-rtgl-themes.css`
|
|
35
|
+
|
|
36
|
+
Apply one class to `body` or `html`, for example:
|
|
37
|
+
- `slate-light`, `slate-dark`
|
|
38
|
+
- `mono-light`, `mono-dark`
|
|
39
|
+
- `catppuccin-latte`, `catppuccin-frappe`, `catppuccin-macchiato`, `catppuccin-mocha`
|
|
40
|
+
- `github-light`, `github-dark`, `nord-light`, `nord-dark`
|
|
41
|
+
|
|
42
|
+
## Published Theme Bundle
|
|
43
|
+
|
|
44
|
+
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/themes/theme-rtgl-themes.css`
|
|
45
|
+
|
|
46
|
+
Apply one class to `body` or `html`, for example:
|
|
47
|
+
- `slate-light`, `slate-dark`
|
|
48
|
+
- `mono-light`, `mono-dark`
|
|
49
|
+
- `catppuccin-latte`, `catppuccin-frappe`, `catppuccin-macchiato`, `catppuccin-mocha`
|
|
50
|
+
- `github-light`, `github-dark`, `nord-light`, `nord-dark`
|
|
20
51
|
|
|
21
52
|
## Recommended Alias Map
|
|
22
53
|
|
|
@@ -25,13 +56,36 @@ imports:
|
|
|
25
56
|
templates:
|
|
26
57
|
base: https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/templates/base.yaml
|
|
27
58
|
docs: https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/templates/docs.yaml
|
|
59
|
+
landing-features: https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/templates/landing-features.yaml
|
|
60
|
+
blog-article-list: https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/templates/blog-article-list.yaml
|
|
61
|
+
blog-article: https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/templates/blog-article.yaml
|
|
28
62
|
partials:
|
|
29
63
|
seo: https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/seo.yaml
|
|
30
64
|
navbar: https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/navbar.yaml
|
|
31
65
|
mobile-nav: https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/mobile-nav.yaml
|
|
32
66
|
docs-sidebar: https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/docs-sidebar.yaml
|
|
67
|
+
top-navbar: https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/top-navbar.yaml
|
|
68
|
+
landing-hero: https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/landing-hero.yaml
|
|
69
|
+
landing-features-section: https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/landing-features-section.yaml
|
|
70
|
+
landing-cta: https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/landing-cta.yaml
|
|
71
|
+
footer: https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/partials/footer.yaml
|
|
33
72
|
```
|
|
34
73
|
|
|
74
|
+
## JSON Schemas For Template/Partial Data
|
|
75
|
+
|
|
76
|
+
Canonical schema file in this repo:
|
|
77
|
+
|
|
78
|
+
- `sites/schemas/data-contract.schema.yaml`
|
|
79
|
+
|
|
80
|
+
Published URL format:
|
|
81
|
+
|
|
82
|
+
- `https://cdn.jsdelivr.net/npm/@rettangoli/sites@<version>/sites/schemas/data-contract.schema.yaml`
|
|
83
|
+
|
|
84
|
+
Use `$defs` for individual contracts:
|
|
85
|
+
|
|
86
|
+
- Templates: `template.base`, `template.docs`, `template.landingFeatures`, `template.blogArticleList`, `template.blogArticle`
|
|
87
|
+
- Partials: `partial.seo`, `partial.navbar`, `partial.mobileNav`, `partial.docsSidebar`, `partial.docsMobileNav`, `partial.topNavbar`, `partial.landingHero`, `partial.landingFeaturesSection`, `partial.landingCta`, `partial.footer`
|
|
88
|
+
|
|
35
89
|
## Frontmatter Examples
|
|
36
90
|
|
|
37
91
|
Docs page:
|
|
@@ -55,6 +109,17 @@ title: Home
|
|
|
55
109
|
---
|
|
56
110
|
```
|
|
57
111
|
|
|
112
|
+
Landing page:
|
|
113
|
+
|
|
114
|
+
```yaml
|
|
115
|
+
---
|
|
116
|
+
template: landing-features
|
|
117
|
+
title: Product Landing
|
|
118
|
+
_bind:
|
|
119
|
+
seo: seo
|
|
120
|
+
---
|
|
121
|
+
```
|
|
122
|
+
|
|
58
123
|
## Docs Template Data Contract
|
|
59
124
|
|
|
60
125
|
The `docs` template expects:
|
|
@@ -65,3 +130,22 @@ The `docs` template expects:
|
|
|
65
130
|
- `title`
|
|
66
131
|
|
|
67
132
|
Use `_bind.docs` to map `docs` from a global data file (for example `data/docs.yaml`).
|
|
133
|
+
|
|
134
|
+
## Shared Data Contract
|
|
135
|
+
|
|
136
|
+
Templates and partials that include a top bar/footer expect:
|
|
137
|
+
|
|
138
|
+
- `site.navbar.brand` with `label` and `href`
|
|
139
|
+
- `site.navbar.items[]` with `label`, `href`, optional `target`
|
|
140
|
+
- `site.navbar.ctas[]` with `label`, `href`, optional `variant`, optional `target`
|
|
141
|
+
- `site.navbar.github.href` (optional)
|
|
142
|
+
- `site.footer.brand` with `label` and `tagline`
|
|
143
|
+
- `site.footer.columns[]` with `title` and `links[]`
|
|
144
|
+
- `site.footer.legalLinks[]` with `label`, `href`, optional `target`
|
|
145
|
+
- `site.footer.copyright`
|
|
146
|
+
|
|
147
|
+
Template-specific data:
|
|
148
|
+
|
|
149
|
+
- `landing-features` uses `landing.title`, `landing.subtitle`, optional `landing.actions[]`, optional `landing.image.{src,alt}`, `landing.featuresTitle`, `landing.featuresSubtitle`, `landing.features[]` (each with `title`, optional `subtitle`, optional `image.{src,alt}`, optional `imageRight`, optional `bullets[]`), and optional `landing.cta` (`title`, optional `subtitle`, optional `svg`, optional `cta.{label,href,variant,newTab}`)
|
|
150
|
+
- `blog-article-list` uses `description` and `posts[]` (`title`, `date`, `excerpt`, `author`, `readingTime`, `href`, optional `imageSrc` and `imageAlt`)
|
|
151
|
+
- `blog-article` uses `category`, `readingTime`, `description`, `author`, `date`, and optional `updatedAt`
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
- rtgl-view w=f h=80:
|
|
2
|
+
- rtgl-view w=f bwt=xs bc=bo ah=c mb=lg:
|
|
3
|
+
- rtgl-view w="1160" xl-w="1024" lg-w=f ph=lg pv=xl g=lg:
|
|
4
|
+
- rtgl-view md-d=v d=h wrap g=xl w=f av=s:
|
|
5
|
+
- rtgl-view w="1fg" md-w=f g=sm:
|
|
6
|
+
- rtgl-text s=lg fw=bold: ${brand.label}
|
|
7
|
+
- rtgl-text c=mu-fg: ${brand.tagline}
|
|
8
|
+
- rtgl-view w="1fg" md-w=f md-d=v d=h wrap g=xl ah=e:
|
|
9
|
+
- $for column in columns:
|
|
10
|
+
- rtgl-view w="1fg" md-w=f md-g=xl g=lg:
|
|
11
|
+
- rtgl-text s=sm c=mu-fg: ${column.title}
|
|
12
|
+
- $for link in column.links:
|
|
13
|
+
- $if link.target:
|
|
14
|
+
- rtgl-view href="${link.href}" target="${link.target}" d=h av=c cur=p:
|
|
15
|
+
- rtgl-text s=sm h-c=fg h-cur=p: ${link.label}
|
|
16
|
+
$else:
|
|
17
|
+
- rtgl-view href="${link.href}" d=h av=c cur=p:
|
|
18
|
+
- rtgl-text s=sm h-c=fg h-cur=p: ${link.label}
|
|
19
|
+
- rtgl-view md-d=v d=h wrap md-g=lg g=md md-av=s av=c w=f:
|
|
20
|
+
- rtgl-view md-w=f ah=s:
|
|
21
|
+
- rtgl-text s=sm c=mu-fg: ${copyright}
|
|
22
|
+
- rtgl-view w=1fg md-hide:
|
|
23
|
+
- rtgl-view md-d=v d=h wrap md-g=lg g=md md-ah=s ah=e md-w=f:
|
|
24
|
+
- $for link in legalLinks:
|
|
25
|
+
- $if link.target:
|
|
26
|
+
- rtgl-view href="${link.href}" target="${link.target}" d=h av=c ah=s md-w=f cur=p:
|
|
27
|
+
- rtgl-text s=sm c=mu-fg h-c=fg h-cur=p: ${link.label}
|
|
28
|
+
$else:
|
|
29
|
+
- rtgl-view href="${link.href}" d=h av=c ah=s md-w=f cur=p:
|
|
30
|
+
- rtgl-text s=sm c=mu-fg h-c=fg h-cur=p: ${link.label}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
- 'rtgl-view w="f" pv="xl" style="padding-top: 128px; padding-bottom: 128px"':
|
|
2
|
+
- rtgl-view ah="c" p="xl" br="md" bw="sm" w="f":
|
|
3
|
+
- $if svg:
|
|
4
|
+
- rtgl-svg svg="${svg}" wh="48" c="pr" mb="md":
|
|
5
|
+
- rtgl-text s="h2" mb="md" c="pr" ta="c": ${title}
|
|
6
|
+
- $if subtitle:
|
|
7
|
+
- rtgl-text s="lg" c="pr" mb="lg" ta="c": ${subtitle}
|
|
8
|
+
- $if cta:
|
|
9
|
+
- $if cta.newTab:
|
|
10
|
+
- $if cta.variant:
|
|
11
|
+
- rtgl-button v="${cta.variant}" href="${cta.href}" new-tab: ${cta.label}
|
|
12
|
+
$else:
|
|
13
|
+
- rtgl-button href="${cta.href}" new-tab: ${cta.label}
|
|
14
|
+
$else:
|
|
15
|
+
- $if cta.variant:
|
|
16
|
+
- rtgl-button v="${cta.variant}" href="${cta.href}": ${cta.label}
|
|
17
|
+
$else:
|
|
18
|
+
- rtgl-button href="${cta.href}": ${cta.label}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
- rtgl-view w=f g=xl pv=xl:
|
|
2
|
+
- rtgl-view w=f g=lg ah=c pv=xl:
|
|
3
|
+
- rtgl-text s=h2 ta=c w=f mb=md: ${title}
|
|
4
|
+
- $if subtitle:
|
|
5
|
+
- rtgl-text s=lg c=mu-fg ta=c w=f mt=sm mb=xl: ${subtitle}
|
|
6
|
+
|
|
7
|
+
- $if items:
|
|
8
|
+
- rtgl-view w=f g=xl pt=xl:
|
|
9
|
+
- $for feature in items:
|
|
10
|
+
- $if feature.imageRight:
|
|
11
|
+
- rtgl-view d=h md-d=v g=xl w=f av=c pv=xl:
|
|
12
|
+
- rtgl-view w=1fg md-w=f g=lg:
|
|
13
|
+
- rtgl-text s=h3 mb=sm: ${feature.title}
|
|
14
|
+
- $if feature.subtitle:
|
|
15
|
+
- rtgl-text s=lg c=mu-fg mb=lg: ${feature.subtitle}
|
|
16
|
+
- $if feature.bullets:
|
|
17
|
+
- rtgl-view g=md mt=sm:
|
|
18
|
+
- $for bullet in feature.bullets:
|
|
19
|
+
- rtgl-view d=h g=md av=s:
|
|
20
|
+
- rtgl-text c=mu-fg: •
|
|
21
|
+
- rtgl-text c=mu-fg w=1fg: ${bullet}
|
|
22
|
+
- rtgl-view w=1fg md-w=f:
|
|
23
|
+
- $if feature.image:
|
|
24
|
+
- $if feature.image.src:
|
|
25
|
+
- rtgl-image w=f h=360 md-h=280 of=cov br=md src="${feature.image.src}" alt="${feature.image.alt}":
|
|
26
|
+
$else:
|
|
27
|
+
- rtgl-view w=f h=360 md-h=280 bw=xs bc=bo bgc=se br=md ah=c av=c:
|
|
28
|
+
- rtgl-text c=se-fg: Feature image
|
|
29
|
+
$else:
|
|
30
|
+
- rtgl-view w=f h=360 md-h=280 bw=xs bc=bo bgc=se br=md ah=c av=c:
|
|
31
|
+
- rtgl-text c=se-fg: Feature image
|
|
32
|
+
$else:
|
|
33
|
+
- rtgl-view d=h md-d=v g=xl w=f av=c pv=xl:
|
|
34
|
+
- rtgl-view w=1fg md-w=f:
|
|
35
|
+
- $if feature.image:
|
|
36
|
+
- $if feature.image.src:
|
|
37
|
+
- rtgl-image w=f h=360 md-h=280 of=cov br=md src="${feature.image.src}" alt="${feature.image.alt}":
|
|
38
|
+
$else:
|
|
39
|
+
- rtgl-view w=f h=360 md-h=280 bw=xs bc=bo bgc=se br=md ah=c av=c:
|
|
40
|
+
- rtgl-text c=se-fg: Feature image
|
|
41
|
+
$else:
|
|
42
|
+
- rtgl-view w=f h=360 md-h=280 bw=xs bc=bo bgc=se br=md ah=c av=c:
|
|
43
|
+
- rtgl-text c=se-fg: Feature image
|
|
44
|
+
- rtgl-view w=1fg md-w=f g=lg:
|
|
45
|
+
- rtgl-text s=h3 mb=sm: ${feature.title}
|
|
46
|
+
- $if feature.subtitle:
|
|
47
|
+
- rtgl-text s=lg c=mu-fg mb=lg: ${feature.subtitle}
|
|
48
|
+
- $if feature.bullets:
|
|
49
|
+
- rtgl-view g=md mt=sm:
|
|
50
|
+
- $for bullet in feature.bullets:
|
|
51
|
+
- rtgl-view d=h g=md av=s:
|
|
52
|
+
- rtgl-text c=mu-fg: •
|
|
53
|
+
- rtgl-text c=mu-fg w=1fg: ${bullet}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
- rtgl-view w=f g=xl pt=xl:
|
|
2
|
+
- rtgl-view w=f g=lg ah=c pv=xl:
|
|
3
|
+
- rtgl-text s=h1 ta=c w=f mb=sm: ${title}
|
|
4
|
+
- $if subtitle:
|
|
5
|
+
- rtgl-text s=lg c=mu-fg ta=c w=f mt=sm mb=lg: ${subtitle}
|
|
6
|
+
- $if actions:
|
|
7
|
+
- rtgl-view d=h wrap g=md w=f ah=c av=c mt=lg mb=xl:
|
|
8
|
+
- $for action in actions:
|
|
9
|
+
- $if action.variant:
|
|
10
|
+
- rtgl-button v="${action.variant}" href="${action.href}": ${action.label}
|
|
11
|
+
$else:
|
|
12
|
+
- rtgl-button href="${action.href}": ${action.label}
|
|
13
|
+
|
|
14
|
+
- $if image:
|
|
15
|
+
- $if image.src:
|
|
16
|
+
- rtgl-image w=f h=520 lg-h=420 md-h=280 of=cov br=md mb=xl src="${image.src}" alt="${image.alt}":
|
|
17
|
+
$else:
|
|
18
|
+
- rtgl-view w=f h=520 lg-h=420 md-h=280 bw=xs bc=bo bgc=se br=md mb=xl ah=c av=c:
|
|
19
|
+
- rtgl-text c=se-fg: Hero image
|
|
20
|
+
- rtgl-view h=xl:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
- 'rtgl-view data-mobile-autohide="true" bwb=xs w=f ah=c pos=fix bgc=bg':
|
|
2
|
-
- rtgl-view md-w=
|
|
2
|
+
- rtgl-view md-w=f lg-w="768" w="1024" d=h av=c h=64 ph=lg:
|
|
3
3
|
- rtgl-text: ${title}
|
|
4
4
|
- rtgl-view w=1fg:
|
|
5
5
|
- rtgl-view d=h av=c:
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
- 'rtgl-view data-mobile-autohide="true" md-hide bwb=xs w=f ah=c pos=fix z=1000 bgc=bg style="top:0;left:0"':
|
|
2
|
+
- rtgl-view w="1160" xl-w="1024" lg-w=f d=h av=c h=64 ph=lg g=lg:
|
|
3
|
+
- rtgl-view d=h wrap g=lg av=c:
|
|
4
|
+
- rtgl-view href="${brand.href}" cur=p:
|
|
5
|
+
- rtgl-text s=lg fw=bold: ${brand.label}
|
|
6
|
+
- rtgl-view d=h wrap g=sm av=c:
|
|
7
|
+
- $for item in items:
|
|
8
|
+
- $if item.target:
|
|
9
|
+
- rtgl-button v=lk href="${item.href}" new-tab rel="noopener noreferrer": ${item.label}
|
|
10
|
+
$else:
|
|
11
|
+
- rtgl-button v=lk href="${item.href}": ${item.label}
|
|
12
|
+
- rtgl-view w=1fg:
|
|
13
|
+
- rtgl-view d=h g=lg av=c:
|
|
14
|
+
- $if github:
|
|
15
|
+
- $if github.href:
|
|
16
|
+
- rtgl-view href="${github.href}" new-tab cur=p:
|
|
17
|
+
- rtgl-svg.svg-icon wh=20 svg=github:
|
|
18
|
+
- $if ctas:
|
|
19
|
+
- rtgl-view d=h g=lg av=c:
|
|
20
|
+
- $for cta in ctas:
|
|
21
|
+
- $if cta:
|
|
22
|
+
- $if cta.label:
|
|
23
|
+
- $if cta.href:
|
|
24
|
+
- $if cta.target:
|
|
25
|
+
- $if cta.variant:
|
|
26
|
+
- rtgl-button v="${cta.variant}" href="${cta.href}" new-tab rel="noopener noreferrer": ${cta.label}
|
|
27
|
+
$else:
|
|
28
|
+
- rtgl-button v=se href="${cta.href}" new-tab rel="noopener noreferrer": ${cta.label}
|
|
29
|
+
$else:
|
|
30
|
+
- $if cta.variant:
|
|
31
|
+
- rtgl-button v="${cta.variant}" href="${cta.href}": ${cta.label}
|
|
32
|
+
$else:
|
|
33
|
+
- rtgl-button v=se href="${cta.href}": ${cta.label}
|
|
34
|
+
$else:
|
|
35
|
+
- $if cta:
|
|
36
|
+
- $if cta.label:
|
|
37
|
+
- $if cta.href:
|
|
38
|
+
- rtgl-button v=se href="${cta.href}": ${cta.label}
|
|
39
|
+
|
|
40
|
+
- 'rtgl-view data-mobile-autohide="true" hide md-show pos=fix w=f h=56 bgc=bg av=c ph=lg d=h bwb=xs z=1000 style="top:0;left:0"':
|
|
41
|
+
- rtgl-view href="${brand.href}" cur=p:
|
|
42
|
+
- rtgl-text s=md fw=bold: ${brand.label}
|
|
43
|
+
- rtgl-view w=1fg:
|
|
44
|
+
- 'rtgl-view id="mobile-menu-btn" data-testid="mobile-menu-btn" cur=pointer aria-label="Open navigation menu" aria-controls="mobile-nav-overlay" aria-expanded="false" data-open-label="Open navigation menu" data-close-label="Close navigation menu"':
|
|
45
|
+
- rtgl-svg id="mobile-menu-icon" data-testid="mobile-menu-icon" wh=24 svg=menu cur=pointer:
|
|
46
|
+
|
|
47
|
+
- 'rtgl-view id="mobile-nav-overlay" pos=fix w=f bgc=bg z=999 d=v hidden style="top:56px;left:0;height:calc(100vh - 56px)"':
|
|
48
|
+
- rtgl-view sv w=f h=f ph=lg pv=lg g=lg:
|
|
49
|
+
- $if items:
|
|
50
|
+
- rtgl-view d=v g=sm w=f:
|
|
51
|
+
- $for item in items:
|
|
52
|
+
- $if item.target:
|
|
53
|
+
- 'rtgl-view data-mobile-nav-close="true" href="${item.href}" new-tab rel="noopener noreferrer" cur=p p=sm':
|
|
54
|
+
- rtgl-text s=lg: ${item.label}
|
|
55
|
+
$else:
|
|
56
|
+
- 'rtgl-view data-mobile-nav-close="true" href="${item.href}" cur=p p=sm':
|
|
57
|
+
- rtgl-text s=lg: ${item.label}
|
|
58
|
+
- $if github:
|
|
59
|
+
- $if github.href:
|
|
60
|
+
- 'rtgl-view data-mobile-nav-close="true" href="${github.href}" new-tab rel="noopener noreferrer" cur=p d=h av=c g=sm p=sm':
|
|
61
|
+
- rtgl-svg.svg-icon wh=20 svg=github:
|
|
62
|
+
- rtgl-text s=md: GitHub
|
|
63
|
+
- $if ctas:
|
|
64
|
+
- rtgl-view d=v g=lg w=f:
|
|
65
|
+
- $for cta in ctas:
|
|
66
|
+
- $if cta:
|
|
67
|
+
- $if cta.label:
|
|
68
|
+
- $if cta.href:
|
|
69
|
+
- $if cta.target:
|
|
70
|
+
- $if cta.variant:
|
|
71
|
+
- 'rtgl-button data-mobile-nav-close="true" v="${cta.variant}" href="${cta.href}" new-tab rel="noopener noreferrer" w=f': ${cta.label}
|
|
72
|
+
$else:
|
|
73
|
+
- 'rtgl-button data-mobile-nav-close="true" v=se href="${cta.href}" new-tab rel="noopener noreferrer" w=f': ${cta.label}
|
|
74
|
+
$else:
|
|
75
|
+
- $if cta.variant:
|
|
76
|
+
- 'rtgl-button data-mobile-nav-close="true" v="${cta.variant}" href="${cta.href}" w=f': ${cta.label}
|
|
77
|
+
$else:
|
|
78
|
+
- 'rtgl-button data-mobile-nav-close="true" v=se href="${cta.href}" w=f': ${cta.label}
|
|
79
|
+
$else:
|
|
80
|
+
- $if cta:
|
|
81
|
+
- $if cta.label:
|
|
82
|
+
- $if cta.href:
|
|
83
|
+
- 'rtgl-button data-mobile-nav-close="true" v=se href="${cta.href}" w=f': ${cta.label}
|